From 4f9289af83d85fd636c286fb3f6e7de0a37daea8 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 00:44:50 +0100 Subject: [PATCH 01/88] New solution storing interface --- flixopt/flow_system.py | 42 ++++++++++++++++++++++-- flixopt/optimization.py | 3 ++ flixopt/structure.py | 73 +++++++++++++++++++++++++++++++++++++++-- 3 files changed, 113 insertions(+), 5 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 9015de3e4..cf1b7dfec 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -202,6 +202,9 @@ def __init__( self._network_app = None self._flows_cache: ElementContainer[Flow] | None = None + # Solution dataset - populated after optimization or loaded from file + self.solution: xr.Dataset | None = None + # Use properties to validate and store scenario dimension settings self.scenario_independent_sizes = scenario_independent_sizes self.scenario_independent_flow_rates = scenario_independent_flow_rates @@ -529,6 +532,9 @@ def to_dataset(self) -> xr.Dataset: Convert the FlowSystem to an xarray Dataset. Ensures FlowSystem is connected before serialization. + If a solution is present, it will be included in the dataset with variable names + prefixed by 'solution|' to avoid conflicts with FlowSystem configuration variables. + Returns: xr.Dataset: Dataset containing all DataArrays with structure in attributes """ @@ -536,7 +542,18 @@ def to_dataset(self) -> xr.Dataset: logger.warning('FlowSystem is not connected_and_transformed. Connecting and transforming data now.') self.connect_and_transform() - return super().to_dataset() + ds = super().to_dataset() + + # Include solution data if present + if self.solution is not None: + # Add solution variables with 'solution|' prefix to avoid conflicts + solution_vars = {f'solution|{name}': var for name, var in self.solution.data_vars.items()} + ds = ds.assign(solution_vars) + ds.attrs['has_solution'] = True + else: + ds.attrs['has_solution'] = False + + return ds @classmethod def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: @@ -544,6 +561,9 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: Create a FlowSystem from an xarray Dataset. Handles FlowSystem-specific reconstruction logic. + If the dataset contains solution data (variables prefixed with 'solution|'), + the solution will be restored to the FlowSystem. + Args: ds: Dataset containing the FlowSystem data @@ -553,8 +573,20 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: # Get the reference structure from attrs reference_structure = dict(ds.attrs) - # Create arrays dictionary from dataset variables - arrays_dict = {name: array for name, array in ds.data_vars.items()} + # Separate solution variables from config variables + solution_prefix = 'solution|' + solution_vars = {} + config_vars = {} + for name, array in ds.data_vars.items(): + if name.startswith(solution_prefix): + # Remove prefix for solution dataset + original_name = name[len(solution_prefix) :] + solution_vars[original_name] = array + else: + config_vars[name] = array + + # Create arrays dictionary from config variables only + arrays_dict = config_vars # Create FlowSystem instance with constructor parameters flow_system = cls( @@ -595,6 +627,10 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: logger.critical(f'Restoring effect {effect_label} failed.') flow_system._add_effects(effect) + # Restore solution if present + if reference_structure.get('has_solution', False) and solution_vars: + flow_system.solution = xr.Dataset(solution_vars) + return flow_system def to_netcdf(self, path: str | pathlib.Path, compression: int = 0): diff --git a/flixopt/optimization.py b/flixopt/optimization.py index 529975df7..4a04f3491 100644 --- a/flixopt/optimization.py +++ b/flixopt/optimization.py @@ -260,6 +260,9 @@ def solve( f'{" Main Results ":#^80}\n' + fx_io.format_yaml_string(self.main_results, compact_numeric_lists=True), ) + # Store solution on FlowSystem for direct Element access + self.flow_system.solution = self.model.solution + self.results = Results.from_optimization(self) return self diff --git a/flixopt/structure.py b/flixopt/structure.py index 62067e2ba..62d7bda50 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -108,6 +108,16 @@ def do_modeling(self): # Add scenario equality constraints after all elements are modeled self._add_scenario_equality_constraints() + # Populate _variable_names and _constraint_names on each Element + self._populate_element_variable_names() + + def _populate_element_variable_names(self): + """Populate _variable_names and _constraint_names on each Element from its submodel.""" + for element in self.flow_system.values(): + if element.submodel is not None: + element._variable_names = list(element.submodel.variables) + element._constraint_names = list(element.submodel.constraints) + def _add_scenario_equality_for_parameter_type( self, parameter_type: Literal['flow_rate', 'size'], @@ -723,7 +733,21 @@ def _resolve_reference_structure(cls, structure, arrays_dict: dict[str, xr.DataA resolved_nested_data = cls._resolve_reference_structure(nested_data, arrays_dict) try: - return nested_class(**resolved_nested_data) + # Get valid constructor parameters for this class + init_params = set(inspect.signature(nested_class.__init__).parameters.keys()) + + # Separate constructor args from extra attributes + constructor_args = {k: v for k, v in resolved_nested_data.items() if k in init_params} + extra_attrs = {k: v for k, v in resolved_nested_data.items() if k not in init_params} + + # Create instance with constructor args + instance = nested_class(**constructor_args) + + # Set extra attributes (like _variable_names, _constraint_names) + for attr_name, attr_value in extra_attrs.items(): + setattr(instance, attr_name, attr_value) + + return instance except Exception as e: raise ValueError(f'Failed to create instance of {class_name}: {e}') from e else: @@ -961,16 +985,27 @@ class Element(Interface): submodel: ElementModel | None - def __init__(self, label: str, meta_data: dict | None = None): + def __init__( + self, + label: str, + meta_data: dict | None = None, + _variable_names: list[str] | None = None, + _constraint_names: list[str] | None = None, + ): """ Args: label: The label of the element meta_data: used to store more information about the Element. Is not used internally, but saved in the results. Only use python native types. + _variable_names: Internal. Variable names for this element (populated after modeling). + _constraint_names: Internal. Constraint names for this element (populated after modeling). """ self.label = Element._valid_label(label) self.meta_data = meta_data if meta_data is not None else {} self.submodel = None self._flow_system: FlowSystem | None = None + # Variable/constraint names - populated after modeling, serialized for results + self._variable_names: list[str] = _variable_names if _variable_names is not None else [] + self._constraint_names: list[str] = _constraint_names if _constraint_names is not None else [] def _plausibility_checks(self) -> None: """This function is used to do some basic plausibility checks for each Element during initialization. @@ -984,6 +1019,40 @@ def create_model(self, model: FlowSystemModel) -> ElementModel: def label_full(self) -> str: return self.label + @property + def solution(self) -> xr.Dataset: + """Solution data for this element's variables. + + Returns a view into FlowSystem.solution containing only this element's variables. + + Raises: + ValueError: If no solution is available (optimization not run or not solved). + """ + if self._flow_system is None: + raise ValueError(f'Element "{self.label}" is not linked to a FlowSystem.') + if self._flow_system.solution is None: + raise ValueError(f'No solution available for "{self.label}". Run optimization first or load results.') + if not self._variable_names: + raise ValueError(f'No variable names available for "{self.label}". Element may not have been modeled yet.') + return self._flow_system.solution[self._variable_names] + + def _create_reference_structure(self) -> tuple[dict, dict[str, xr.DataArray]]: + """ + Override to include _variable_names and _constraint_names in serialization. + + These attributes are defined in Element but may not be in subclass constructors, + so we need to add them explicitly. + """ + reference_structure, all_extracted_arrays = super()._create_reference_structure() + + # Always include variable/constraint names for solution access after loading + if self._variable_names: + reference_structure['_variable_names'] = self._variable_names + if self._constraint_names: + reference_structure['_constraint_names'] = self._constraint_names + + return reference_structure, all_extracted_arrays + def __repr__(self) -> str: """Return string representation.""" return fx_io.build_repr_from_init(self, excluded_params={'self', 'label', 'kwargs'}, skip_default_size=True) From 9e38e73aa8d629ec6925d5b2bcddb37b25b70d54 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 01:10:07 +0100 Subject: [PATCH 02/88] Fix time index in io --- flixopt/flow_system.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index cf1b7dfec..c3a6e3327 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -534,6 +534,8 @@ def to_dataset(self) -> xr.Dataset: If a solution is present, it will be included in the dataset with variable names prefixed by 'solution|' to avoid conflicts with FlowSystem configuration variables. + Solution time coordinates are renamed to 'solution_time' to preserve them + independently of the FlowSystem's time coordinates. Returns: xr.Dataset: Dataset containing all DataArrays with structure in attributes @@ -546,9 +548,17 @@ def to_dataset(self) -> xr.Dataset: # Include solution data if present if self.solution is not None: + # Rename 'time' to 'solution_time' in solution variables to preserve full solution + # (linopy solution may have extra timesteps, e.g., for final charge states) + solution_renamed = ( + self.solution.rename({'time': 'solution_time'}) if 'time' in self.solution.dims else self.solution + ) # Add solution variables with 'solution|' prefix to avoid conflicts - solution_vars = {f'solution|{name}': var for name, var in self.solution.data_vars.items()} + solution_vars = {f'solution|{name}': var for name, var in solution_renamed.data_vars.items()} ds = ds.assign(solution_vars) + # Also add the solution_time coordinate if it exists + if 'solution_time' in solution_renamed.coords: + ds = ds.assign_coords(solution_time=solution_renamed.coords['solution_time']) ds.attrs['has_solution'] = True else: ds.attrs['has_solution'] = False @@ -562,7 +572,8 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: Handles FlowSystem-specific reconstruction logic. If the dataset contains solution data (variables prefixed with 'solution|'), - the solution will be restored to the FlowSystem. + the solution will be restored to the FlowSystem. Solution time coordinates + are renamed back from 'solution_time' to 'time'. Args: ds: Dataset containing the FlowSystem data @@ -629,7 +640,11 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: # Restore solution if present if reference_structure.get('has_solution', False) and solution_vars: - flow_system.solution = xr.Dataset(solution_vars) + solution_ds = xr.Dataset(solution_vars) + # Rename 'solution_time' back to 'time' if present + if 'solution_time' in solution_ds.dims: + solution_ds = solution_ds.rename({'solution_time': 'time'}) + flow_system.solution = solution_ds return flow_system From 0d167ff546be0adda88f8b2e03468ab76fd27237 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 01:10:29 +0100 Subject: [PATCH 03/88] Add iio tests for new solution and FlowSystem IO --- tests/test_solution_persistence.py | 440 +++++++++++++++++++++++++++++ 1 file changed, 440 insertions(+) create mode 100644 tests/test_solution_persistence.py diff --git a/tests/test_solution_persistence.py b/tests/test_solution_persistence.py new file mode 100644 index 000000000..042d29351 --- /dev/null +++ b/tests/test_solution_persistence.py @@ -0,0 +1,440 @@ +"""Tests for the new solution persistence API. + +This module tests the direct solution storage on FlowSystem and Element classes: +- FlowSystem.solution: xr.Dataset containing all solution variables +- Element.solution: subset of FlowSystem.solution for that element's variables +- Element._variable_names: list of variable names for each element +- Serialization/deserialization of solution with FlowSystem +""" + +import uuid + +import pytest +import xarray as xr + +import flixopt as fx + +from .conftest import ( + assert_almost_equal_numeric, + flow_system_base, + flow_system_long, + flow_system_segments_of_flows_2, + simple_flow_system, + simple_flow_system_scenarios, +) + + +@pytest.fixture( + params=[ + flow_system_base, + simple_flow_system_scenarios, + flow_system_segments_of_flows_2, + simple_flow_system, + flow_system_long, + ] +) +def flow_system(request): + fs = request.getfixturevalue(request.param.__name__) + if isinstance(fs, fx.FlowSystem): + return fs + else: + return fs[0] + + +class TestSolutionOnFlowSystem: + """Tests for FlowSystem.solution attribute.""" + + def test_solution_none_before_solve(self, simple_flow_system): + """FlowSystem.solution should be None before optimization.""" + assert simple_flow_system.solution is None + + def test_solution_set_after_solve(self, simple_flow_system, highs_solver): + """FlowSystem.solution should be set after solve().""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + assert simple_flow_system.solution is not None + assert isinstance(simple_flow_system.solution, xr.Dataset) + + def test_solution_contains_all_variables(self, simple_flow_system, highs_solver): + """FlowSystem.solution should contain all model variables.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Solution should have variables + assert len(simple_flow_system.solution.data_vars) > 0 + + # Check that known variables are present (from the simple flow system) + solution_vars = set(simple_flow_system.solution.data_vars.keys()) + # Should have flow rates, costs, etc. + assert any('flow_rate' in v for v in solution_vars) + assert any('costs' in v for v in solution_vars) + + def test_solution_matches_results(self, simple_flow_system, highs_solver): + """FlowSystem.solution should match results.solution.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # The solution on flow_system should be the same as from results + fs_solution = simple_flow_system.solution + results_solution = calc.results.solution + + # Check they have the same variables + assert set(fs_solution.data_vars.keys()) == set(results_solution.data_vars.keys()) + + # Check values match + for var_name in fs_solution.data_vars: + xr.testing.assert_equal(fs_solution[var_name], results_solution[var_name]) + + +class TestSolutionOnElement: + """Tests for Element.solution property.""" + + def test_element_solution_raises_before_linked(self, simple_flow_system): + """Element.solution should raise if element not linked to FlowSystem.""" + # Create an unlinked element + bus = fx.Bus('TestBus') + with pytest.raises(ValueError, match='not linked to a FlowSystem'): + _ = bus.solution + + def test_element_solution_raises_before_solve(self, simple_flow_system): + """Element.solution should raise if no solution available.""" + boiler = simple_flow_system.components['Boiler'] + with pytest.raises(ValueError, match='No solution available'): + _ = boiler.solution + + def test_element_solution_raises_before_modeling(self, simple_flow_system, highs_solver): + """Element.solution should work after modeling and solve.""" + # We need to add a new element after modeling to test this edge case + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Create a new element not in the flow system - this is a special case + # The actual elements in the flow system should work fine + boiler = simple_flow_system.components['Boiler'] + # This should work since boiler was modeled + solution = boiler.solution + assert isinstance(solution, xr.Dataset) + + def test_element_solution_contains_element_variables(self, simple_flow_system, highs_solver): + """Element.solution should contain only that element's variables.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + boiler = simple_flow_system.components['Boiler'] + boiler_solution = boiler.solution + + # All variables in element solution should start with element's label + for var_name in boiler_solution.data_vars: + assert var_name.startswith(boiler.label_full), f'{var_name} does not start with {boiler.label_full}' + + def test_different_elements_have_different_solutions(self, simple_flow_system, highs_solver): + """Different elements should have different solution subsets.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + boiler = simple_flow_system.components['Boiler'] + chp = simple_flow_system.components['CHP_unit'] + + boiler_vars = set(boiler.solution.data_vars.keys()) + chp_vars = set(chp.solution.data_vars.keys()) + + # They should have different variables + assert boiler_vars != chp_vars + # And they shouldn't overlap + assert len(boiler_vars & chp_vars) == 0 + + +class TestVariableNamesPopulation: + """Tests for Element._variable_names population after modeling.""" + + def test_variable_names_empty_before_modeling(self, simple_flow_system): + """Element._variable_names should be empty before modeling.""" + boiler = simple_flow_system.components['Boiler'] + assert boiler._variable_names == [] + + def test_variable_names_populated_after_modeling(self, simple_flow_system, highs_solver): + """Element._variable_names should be populated after modeling.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + + boiler = simple_flow_system.components['Boiler'] + assert len(boiler._variable_names) > 0 + + def test_constraint_names_populated_after_modeling(self, simple_flow_system, highs_solver): + """Element._constraint_names should be populated after modeling.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + + boiler = simple_flow_system.components['Boiler'] + # Boiler should have some constraints + assert len(boiler._constraint_names) >= 0 # Some elements might have no constraints + + def test_all_elements_have_variable_names(self, simple_flow_system, highs_solver): + """All elements with submodels should have _variable_names populated.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + + for element in simple_flow_system.values(): + if element.submodel is not None: + # Element was modeled, should have variable names + assert isinstance(element._variable_names, list) + + +class TestSolutionPersistence: + """Tests for solution serialization/deserialization with FlowSystem.""" + + @pytest.mark.slow + def test_solution_persisted_in_dataset(self, flow_system, highs_solver, request): + """Solution should be included when saving FlowSystem to dataset.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'persist-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Save to dataset + ds = flow_system.to_dataset() + + # Check solution variables are in the dataset with 'solution|' prefix + solution_vars = [v for v in ds.data_vars if v.startswith('solution|')] + assert len(solution_vars) > 0, 'No solution variables in dataset' + + # Check has_solution attribute + assert ds.attrs.get('has_solution', False) is True + + @pytest.mark.slow + def test_solution_restored_from_dataset(self, flow_system, highs_solver, request): + """Solution should be restored when loading FlowSystem from dataset.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'restore-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Save and restore + ds = flow_system.to_dataset() + restored_fs = fx.FlowSystem.from_dataset(ds) + + # Check solution is restored + assert restored_fs.solution is not None + assert isinstance(restored_fs.solution, xr.Dataset) + + # Check same number of variables + assert len(restored_fs.solution.data_vars) == len(flow_system.solution.data_vars) + + @pytest.mark.slow + def test_solution_values_match_after_restore(self, flow_system, highs_solver, request): + """Solution values should match after save/restore cycle.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'values-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + original_solution = flow_system.solution.copy(deep=True) + + # Save and restore + ds = flow_system.to_dataset() + restored_fs = fx.FlowSystem.from_dataset(ds) + + # Check values match exactly + for var_name in original_solution.data_vars: + xr.testing.assert_equal( + original_solution[var_name], + restored_fs.solution[var_name], + ) + + @pytest.mark.slow + def test_element_solution_works_after_restore(self, flow_system, highs_solver, request): + """Element.solution should work on restored FlowSystem.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'element-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Get an element and its solution + element_label = list(flow_system.components.keys())[0] + original_element = flow_system.components[element_label] + original_element_solution = original_element.solution.copy(deep=True) + + # Save and restore + ds = flow_system.to_dataset() + restored_fs = fx.FlowSystem.from_dataset(ds) + + # Get the same element from restored flow system + restored_element = restored_fs.components[element_label] + + # Element.solution should work + restored_element_solution = restored_element.solution + + # Values should match exactly + for var_name in original_element_solution.data_vars: + xr.testing.assert_equal( + original_element_solution[var_name], + restored_element_solution[var_name], + ) + + @pytest.mark.slow + def test_variable_names_persisted(self, flow_system, highs_solver, request): + """Element._variable_names should be persisted and restored.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'varnames-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Get original variable names + element_label = list(flow_system.components.keys())[0] + original_element = flow_system.components[element_label] + original_var_names = original_element._variable_names.copy() + + # Save and restore + ds = flow_system.to_dataset() + restored_fs = fx.FlowSystem.from_dataset(ds) + + # Get restored element + restored_element = restored_fs.components[element_label] + + # Variable names should match + assert restored_element._variable_names == original_var_names + + +class TestFlowSystemFileIO: + """Tests for file-based persistence of FlowSystem with solution.""" + + @pytest.mark.slow + def test_netcdf_roundtrip_with_solution(self, flow_system, highs_solver, tmp_path, request): + """FlowSystem with solution should survive netCDF roundtrip.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'netcdf-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + original_solution = flow_system.solution.copy(deep=True) + + # Save to netCDF + filepath = tmp_path / 'flow_system_with_solution.nc4' + flow_system.to_netcdf(filepath) + + # Load from netCDF + restored_fs = fx.FlowSystem.from_netcdf(filepath) + + # Check solution is restored + assert restored_fs.solution is not None + + # Check values match exactly + for var_name in original_solution.data_vars: + xr.testing.assert_equal( + original_solution[var_name], + restored_fs.solution[var_name], + ) + + @pytest.mark.slow + def test_loaded_flow_system_can_be_reoptimized(self, flow_system, highs_solver, tmp_path, request): + """Loaded FlowSystem should be able to run new optimization.""" + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + + calc = fx.Optimization(f'reopt-{worker_id}-{unique_id}', flow_system=flow_system) + calc.do_modeling() + calc.solve(highs_solver) + original_objective = calc.results.model.objective.value + + # Save and load + filepath = tmp_path / 'flow_system_for_reopt.nc4' + flow_system.to_netcdf(filepath) + restored_fs = fx.FlowSystem.from_netcdf(filepath) + + # Run new optimization + calc2 = fx.Optimization(f'reopt2-{worker_id}-{unique_id}', flow_system=restored_fs) + calc2.do_modeling() + calc2.solve(highs_solver) + + # Should get same objective value + assert_almost_equal_numeric( + original_objective, + calc2.results.model.objective.value, + 'Objective mismatch after reload', + ) + + +class TestNoSolutionPersistence: + """Tests for FlowSystem without solution (before optimization).""" + + def test_flow_system_without_solution_saves(self, simple_flow_system): + """FlowSystem without solution should save successfully.""" + ds = simple_flow_system.to_dataset() + assert ds.attrs.get('has_solution', True) is False + + def test_flow_system_without_solution_loads(self, simple_flow_system): + """FlowSystem without solution should load successfully.""" + ds = simple_flow_system.to_dataset() + restored_fs = fx.FlowSystem.from_dataset(ds) + + assert restored_fs.solution is None + + def test_loaded_flow_system_without_solution_can_optimize(self, simple_flow_system, highs_solver): + """Loaded FlowSystem (no prior solution) should optimize successfully.""" + ds = simple_flow_system.to_dataset() + restored_fs = fx.FlowSystem.from_dataset(ds) + + calc = fx.Optimization('test', flow_system=restored_fs) + calc.do_modeling() + calc.solve(highs_solver) + + # Should have solution now + assert restored_fs.solution is not None + + +class TestEdgeCases: + """Edge cases and error handling.""" + + def test_empty_variable_names_handled(self, simple_flow_system, highs_solver): + """Elements with no variables should be handled gracefully.""" + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + + # Buses typically have no variables of their own in some configurations + for bus in simple_flow_system.buses.values(): + # Should not raise, even if empty + if bus._variable_names: + _ = bus.solution + # If no variable names, solution access would raise - that's expected + + def test_solution_cleared_on_new_optimization(self, simple_flow_system, highs_solver): + """New optimization should update solution, not accumulate.""" + calc1 = fx.Optimization('test1', flow_system=simple_flow_system) + calc1.do_modeling() + calc1.solve(highs_solver) + + first_solution_vars = set(simple_flow_system.solution.data_vars.keys()) + + # Re-optimize (same system) + calc2 = fx.Optimization('test2', flow_system=simple_flow_system) + calc2.do_modeling() + calc2.solve(highs_solver) + + second_solution_vars = set(simple_flow_system.solution.data_vars.keys()) + + # Should have same variables (not accumulated) + assert first_solution_vars == second_solution_vars + + +if __name__ == '__main__': + pytest.main(['-v', '--disable-warnings', __file__]) From 07a32c8316f7a6d35a2ffb771b0edcfcaa952968 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 01:44:05 +0100 Subject: [PATCH 04/88] Add now optimize() method --- flixopt/flow_system.py | 102 ++++++++++++++++++++++ tests/test_solution_persistence.py | 132 +++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index c3a6e3327..886a7762f 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -32,6 +32,7 @@ import pyvis + from .solvers import _Solver from .types import Effect_TPS, Numeric_S, Numeric_TPS, NumericOrBool logger = logging.getLogger('flixopt') @@ -828,6 +829,107 @@ def create_model(self, normalize_weights: bool = True) -> FlowSystemModel: self.model = FlowSystemModel(self, normalize_weights) return self.model + def build_model(self, normalize_weights: bool = True) -> FlowSystem: + """ + Build the optimization model for this FlowSystem. + + This method prepares the FlowSystem for optimization by: + 1. Connecting and transforming all elements (if not already done) + 2. Creating the FlowSystemModel with all variables and constraints + + After calling this method, `self.model` will be available for inspection + before solving. + + Args: + normalize_weights: Whether to normalize scenario/period weights to sum to 1. + + Returns: + Self, for method chaining. + + Examples: + >>> flow_system.build_model() + >>> print(flow_system.model.variables) # Inspect variables before solving + >>> flow_system.solve(solver) + """ + self.connect_and_transform() + self.create_model(normalize_weights) + self.model.do_modeling() + return self + + def solve(self, solver: _Solver) -> FlowSystem: + """ + Solve the optimization model and populate the solution. + + This method solves the previously built model using the specified solver. + After solving, `self.solution` will contain the optimization results, + and each element's `.solution` property will provide access to its + specific variables. + + Args: + solver: The solver to use (e.g., HighsSolver, GurobiSolver). + + Returns: + Self, for method chaining. + + Raises: + RuntimeError: If the model has not been built yet (call build_model first). + RuntimeError: If the model is infeasible. + + Examples: + >>> flow_system.build_model() + >>> flow_system.solve(HighsSolver()) + >>> print(flow_system.solution) + """ + if self.model is None: + raise RuntimeError('Model has not been built. Call build_model() first.') + + self.model.solve( + solver_name=solver.name, + **solver.options, + ) + + if self.model.status == 'warning': + raise RuntimeError(f'Model was infeasible. Status: {self.model.status}. Check your constraints and bounds.') + + # Store solution on FlowSystem for direct Element access + self.solution = self.model.solution + + logger.info(f'Optimization solved successfully. Objective: {self.model.objective.value:.4f}') + + return self + + def optimize(self, solver: _Solver, normalize_weights: bool = True) -> FlowSystem: + """ + Build and solve the optimization model in one step. + + This is a convenience method that combines `build_model()` and `solve()`. + Use this for simple optimization workflows. For more control (e.g., inspecting + the model before solving, or adding custom constraints), use `build_model()` + and `solve()` separately. + + Args: + solver: The solver to use (e.g., HighsSolver, GurobiSolver). + normalize_weights: Whether to normalize scenario/period weights to sum to 1. + + Returns: + Self, for method chaining. + + Examples: + Simple optimization: + + >>> flow_system.optimize(HighsSolver()) + >>> print(flow_system.solution['Boiler(Q_th)|flow_rate']) + + Access element solutions directly: + + >>> flow_system.optimize(solver) + >>> boiler = flow_system.components['Boiler'] + >>> print(boiler.solution) + """ + self.build_model(normalize_weights) + self.solve(solver) + return self + def plot_network( self, path: bool | str | pathlib.Path = 'flow_system.html', diff --git a/tests/test_solution_persistence.py b/tests/test_solution_persistence.py index 042d29351..79a2a52d9 100644 --- a/tests/test_solution_persistence.py +++ b/tests/test_solution_persistence.py @@ -436,5 +436,137 @@ def test_solution_cleared_on_new_optimization(self, simple_flow_system, highs_so assert first_solution_vars == second_solution_vars +class TestFlowSystemDirectMethods: + """Tests for FlowSystem.build_model(), solve(), and optimize() methods.""" + + def test_build_model_creates_model(self, simple_flow_system): + """build_model() should create and populate the model.""" + assert simple_flow_system.model is None + + result = simple_flow_system.build_model() + + # Should return self for method chaining + assert result is simple_flow_system + # Model should be created + assert simple_flow_system.model is not None + # Model should have variables + assert len(simple_flow_system.model.variables) > 0 + + def test_build_model_with_normalize_weights_false(self, simple_flow_system): + """build_model() should respect normalize_weights parameter.""" + simple_flow_system.build_model(normalize_weights=False) + + # Model should be created + assert simple_flow_system.model is not None + + def test_solve_without_build_model_raises(self, simple_flow_system, highs_solver): + """solve() should raise if model not built.""" + with pytest.raises(RuntimeError, match='Model has not been built'): + simple_flow_system.solve(highs_solver) + + def test_solve_after_build_model(self, simple_flow_system, highs_solver): + """solve() should work after build_model().""" + simple_flow_system.build_model() + + result = simple_flow_system.solve(highs_solver) + + # Should return self for method chaining + assert result is simple_flow_system + # Solution should be populated + assert simple_flow_system.solution is not None + assert isinstance(simple_flow_system.solution, xr.Dataset) + + def test_solve_populates_element_variable_names(self, simple_flow_system, highs_solver): + """solve() should have element variable names available.""" + simple_flow_system.build_model() + simple_flow_system.solve(highs_solver) + + # Elements should have variable names populated + boiler = simple_flow_system.components['Boiler'] + assert len(boiler._variable_names) > 0 + + def test_optimize_convenience_method(self, simple_flow_system, highs_solver): + """optimize() should build and solve in one step.""" + assert simple_flow_system.model is None + assert simple_flow_system.solution is None + + result = simple_flow_system.optimize(highs_solver) + + # Should return self for method chaining + assert result is simple_flow_system + # Model should be created + assert simple_flow_system.model is not None + # Solution should be populated + assert simple_flow_system.solution is not None + + def test_optimize_method_chaining(self, simple_flow_system, highs_solver): + """optimize() should support method chaining to access solution.""" + solution = simple_flow_system.optimize(highs_solver).solution + + assert solution is not None + assert isinstance(solution, xr.Dataset) + assert len(solution.data_vars) > 0 + + def test_optimize_with_normalize_weights_false(self, simple_flow_system, highs_solver): + """optimize() should respect normalize_weights parameter.""" + simple_flow_system.optimize(highs_solver, normalize_weights=False) + + assert simple_flow_system.solution is not None + + def test_model_accessible_after_build(self, simple_flow_system): + """Model should be inspectable after build_model().""" + simple_flow_system.build_model() + + # User should be able to inspect model variables + model = simple_flow_system.model + assert hasattr(model, 'variables') + assert hasattr(model, 'constraints') + + # Variables should exist + assert len(model.variables) > 0 + + def test_element_solution_after_optimize(self, simple_flow_system, highs_solver): + """Element.solution should work after optimize().""" + simple_flow_system.optimize(highs_solver) + + boiler = simple_flow_system.components['Boiler'] + boiler_solution = boiler.solution + + assert isinstance(boiler_solution, xr.Dataset) + # All variables should belong to boiler + for var_name in boiler_solution.data_vars: + assert var_name.startswith(boiler.label_full) + + def test_direct_methods_match_optimization_class(self, simple_flow_system, highs_solver): + """Direct methods should produce same results as Optimization class.""" + # Use Optimization class first + calc = fx.Optimization('test', flow_system=simple_flow_system) + calc.do_modeling() + calc.solve(highs_solver) + optimization_solution = simple_flow_system.solution.copy(deep=True) + + # Reset for direct methods test + simple_flow_system.model = None + simple_flow_system.solution = None + for element in simple_flow_system.values(): + element._variable_names = [] + element._constraint_names = [] + element.submodel = None + + # Use direct methods + simple_flow_system.optimize(highs_solver) + + # Solutions should match + assert set(optimization_solution.data_vars.keys()) == set(simple_flow_system.solution.data_vars.keys()) + + # Values should be very close (same optimization) + for var_name in optimization_solution.data_vars: + xr.testing.assert_allclose( + optimization_solution[var_name], + simple_flow_system.solution[var_name], + rtol=1e-5, + ) + + if __name__ == '__main__': pytest.main(['-v', '--disable-warnings', __file__]) From 3d61e4aff1d5fb354f6e0db0f0351232b8d5dded Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 02:16:05 +0100 Subject: [PATCH 05/88] Add now optimize() accessor --- flixopt/flow_system.py | 29 ++++++----- flixopt/optimize_accessor.py | 94 ++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 15 deletions(-) create mode 100644 flixopt/optimize_accessor.py diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 886a7762f..516916dff 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -24,6 +24,7 @@ ) from .effects import Effect, EffectCollection from .elements import Bus, Component, Flow +from .optimize_accessor import OptimizeAccessor from .structure import CompositeContainerMixin, Element, ElementContainer, FlowSystemModel, Interface if TYPE_CHECKING: @@ -898,24 +899,19 @@ def solve(self, solver: _Solver) -> FlowSystem: return self - def optimize(self, solver: _Solver, normalize_weights: bool = True) -> FlowSystem: + @property + def optimize(self) -> OptimizeAccessor: """ - Build and solve the optimization model in one step. - - This is a convenience method that combines `build_model()` and `solve()`. - Use this for simple optimization workflows. For more control (e.g., inspecting - the model before solving, or adding custom constraints), use `build_model()` - and `solve()` separately. + Access optimization methods for this FlowSystem. - Args: - solver: The solver to use (e.g., HighsSolver, GurobiSolver). - normalize_weights: Whether to normalize scenario/period weights to sum to 1. + This property returns an OptimizeAccessor that can be called directly + for standard optimization, or used to access specialized optimization modes. Returns: - Self, for method chaining. + An OptimizeAccessor instance. Examples: - Simple optimization: + Standard optimization (call directly): >>> flow_system.optimize(HighsSolver()) >>> print(flow_system.solution['Boiler(Q_th)|flow_rate']) @@ -925,10 +921,13 @@ def optimize(self, solver: _Solver, normalize_weights: bool = True) -> FlowSyste >>> flow_system.optimize(solver) >>> boiler = flow_system.components['Boiler'] >>> print(boiler.solution) + + Future specialized modes: + + >>> flow_system.optimize.clustered(solver, aggregation=params) + >>> flow_system.optimize.mga(solver, alternatives=5) """ - self.build_model(normalize_weights) - self.solve(solver) - return self + return OptimizeAccessor(self) def plot_network( self, diff --git a/flixopt/optimize_accessor.py b/flixopt/optimize_accessor.py new file mode 100644 index 000000000..bcaaf99f6 --- /dev/null +++ b/flixopt/optimize_accessor.py @@ -0,0 +1,94 @@ +""" +Optimization accessor for FlowSystem. + +This module provides the OptimizeAccessor class that enables the +`flow_system.optimize(...)` pattern with extensible optimization methods. +""" + +from __future__ import annotations + +import logging +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from .flow_system import FlowSystem + from .solvers import _Solver + +logger = logging.getLogger('flixopt') + + +class OptimizeAccessor: + """ + Accessor for optimization methods on FlowSystem. + + This class provides the optimization API for FlowSystem, accessible via + `flow_system.optimize`. It supports both direct calling (standard optimization) + and method access for specialized optimization modes. + + Examples: + Standard optimization (via __call__): + + >>> flow_system.optimize(solver) + >>> print(flow_system.solution) + + Future specialized modes: + + >>> flow_system.optimize.clustered(solver, aggregation=params) + >>> flow_system.optimize.mga(solver, alternatives=5) + """ + + def __init__(self, flow_system: FlowSystem) -> None: + """ + Initialize the accessor with a reference to the FlowSystem. + + Args: + flow_system: The FlowSystem to optimize. + """ + self._fs = flow_system + + def __call__(self, solver: _Solver, normalize_weights: bool = True) -> FlowSystem: + """ + Build and solve the optimization model in one step. + + This is a convenience method that combines `build_model()` and `solve()`. + Use this for simple optimization workflows. For more control (e.g., inspecting + the model before solving, or adding custom constraints), use `build_model()` + and `solve()` separately. + + Args: + solver: The solver to use (e.g., HighsSolver, GurobiSolver). + normalize_weights: Whether to normalize scenario/period weights to sum to 1. + + Returns: + The FlowSystem, for method chaining. + + Examples: + Simple optimization: + + >>> flow_system.optimize(HighsSolver()) + >>> print(flow_system.solution['Boiler(Q_th)|flow_rate']) + + Access element solutions directly: + + >>> flow_system.optimize(solver) + >>> boiler = flow_system.components['Boiler'] + >>> print(boiler.solution) + + Method chaining: + + >>> solution = flow_system.optimize(solver).solution + """ + self._fs.build_model(normalize_weights) + self._fs.solve(solver) + return self._fs + + # Future methods can be added here: + # + # def clustered(self, solver: _Solver, aggregation: AggregationParameters, + # normalize_weights: bool = True) -> FlowSystem: + # """Clustered optimization with time aggregation.""" + # ... + # + # def mga(self, solver: _Solver, alternatives: int = 5) -> FlowSystem: + # """Modeling to Generate Alternatives.""" + # ... From 8208efccf4d310272658866ef6ba27478ddd86f7 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 02:51:33 +0100 Subject: [PATCH 06/88] Add main results and sumamr and document infeasibilities --- flixopt/config.py | 4 ++ flixopt/flow_system.py | 132 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) diff --git a/flixopt/config.py b/flixopt/config.py index f090430b0..2cd09078d 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -171,6 +171,7 @@ def format(self, record): 'time_limit_seconds': 300, 'log_to_console': True, 'log_main_results': True, + 'document_infeasibility': True, } ), } @@ -526,6 +527,7 @@ class Solving: time_limit_seconds: Default time limit in seconds for solver runs. log_to_console: Whether solver should output to console. log_main_results: Whether to log main results after solving. + document_infeasibility: Whether to save model documentation on infeasibility. Examples: ```python @@ -540,6 +542,7 @@ class Solving: time_limit_seconds: int = _DEFAULTS['solving']['time_limit_seconds'] log_to_console: bool = _DEFAULTS['solving']['log_to_console'] log_main_results: bool = _DEFAULTS['solving']['log_main_results'] + document_infeasibility: bool = _DEFAULTS['solving']['document_infeasibility'] class Plotting: """Plotting configuration. @@ -622,6 +625,7 @@ def to_dict(cls) -> dict: 'time_limit_seconds': cls.Solving.time_limit_seconds, 'log_to_console': cls.Solving.log_to_console, 'log_main_results': cls.Solving.log_main_results, + 'document_infeasibility': cls.Solving.document_infeasibility, }, 'plotting': { 'default_show': cls.Plotting.default_show, diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 516916dff..e6a234692 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -890,6 +890,8 @@ def solve(self, solver: _Solver) -> FlowSystem: ) if self.model.status == 'warning': + if CONFIG.Solving.document_infeasibility: + self._document_infeasibility() raise RuntimeError(f'Model was infeasible. Status: {self.model.status}. Check your constraints and bounds.') # Store solution on FlowSystem for direct Element access @@ -899,6 +901,27 @@ def solve(self, solver: _Solver) -> FlowSystem: return self + def _document_infeasibility(self) -> None: + """Save model documentation and FlowSystem to help debug infeasibility.""" + import tempfile + from pathlib import Path + + # Create a temporary directory for infeasibility docs + infeas_dir = Path(tempfile.gettempdir()) / 'flixopt_infeasibility' + infeas_dir.mkdir(parents=True, exist_ok=True) + + # Save model documentation + model_doc_path = infeas_dir / 'model_documentation.yaml' + fx_io.document_linopy_model(self.model, model_doc_path) + + # Save FlowSystem + fs_path = infeas_dir / 'flow_system.nc4' + self.to_netcdf(fs_path) + + logger.error( + f'Model infeasibility documentation saved to:\n Model docs: {model_doc_path}\n FlowSystem: {fs_path}' + ) + @property def optimize(self) -> OptimizeAccessor: """ @@ -929,6 +952,115 @@ def optimize(self) -> OptimizeAccessor: """ return OptimizeAccessor(self) + @property + def main_results(self) -> dict[str, Any]: + """ + Get main results summary after optimization. + + Returns a dictionary containing: + - Objective value + - Penalty breakdown (temporal, periodic, total) + - Effects summary with temporal, periodic, and total values + - Investment decisions (invested vs not invested) + - Buses with excess (if any) + + Returns: + Dictionary with main optimization results. + + Raises: + RuntimeError: If the model has not been solved yet. + + Examples: + >>> flow_system.optimize(solver) + >>> print(flow_system.main_results) + """ + from .effects import PENALTY_EFFECT_LABEL + from .features import InvestmentModel + + if self.model is None or self.solution is None: + raise RuntimeError('FlowSystem has not been solved yet. Call optimize() or solve() first.') + + main_results = { + 'Objective': self.model.objective.value, + 'Penalty': { + 'temporal': self.effects.penalty_effect.submodel.temporal.total.solution.values, + 'periodic': self.effects.penalty_effect.submodel.periodic.total.solution.values, + 'total': self.effects.penalty_effect.submodel.total.solution.values, + }, + 'Effects': { + f'{effect.label} [{effect.unit}]': { + 'temporal': effect.submodel.temporal.total.solution.values, + 'periodic': effect.submodel.periodic.total.solution.values, + 'total': effect.submodel.total.solution.values, + } + for effect in sorted(self.effects.values(), key=lambda e: e.label_full.upper()) + if effect.label_full != PENALTY_EFFECT_LABEL + }, + 'Sizes': { + 'Invested': { + model.label_of_element: model.size.solution + for component in self.components.values() + for model in component.submodel.all_submodels + if isinstance(model, InvestmentModel) + and model.size.solution.max().item() >= CONFIG.Modeling.epsilon + }, + 'Not invested': { + model.label_of_element: model.size.solution + for component in self.components.values() + for model in component.submodel.all_submodels + if isinstance(model, InvestmentModel) and model.size.solution.max().item() < CONFIG.Modeling.epsilon + }, + }, + 'Buses with imbalance': [ + { + bus.label_full: { + 'virtual_supply': (bus.submodel.virtual_supply.solution * self.hours_per_timestep).sum('time'), + 'virtual_demand': (bus.submodel.virtual_demand.solution * self.hours_per_timestep).sum('time'), + } + } + for bus in self.buses.values() + if bus.allows_imbalance + and ( + bus.submodel.virtual_supply.solution.sum().item() > 1e-3 + or bus.submodel.virtual_demand.solution.sum().item() > 1e-3 + ) + ], + } + + return fx_io.round_nested_floats(main_results) + + @property + def summary(self) -> dict[str, Any]: + """ + Get a summary of the FlowSystem and optimization. + + Returns a dictionary containing: + - Number of timesteps + - Number of constraints and variables (if modeled) + - Main results (if solved) + - Config settings + + Returns: + Dictionary with FlowSystem summary. + + Raises: + RuntimeError: If the model has not been solved yet. + + Examples: + >>> flow_system.optimize(solver) + >>> print(flow_system.summary) + """ + if self.model is None or self.solution is None: + raise RuntimeError('FlowSystem has not been solved yet. Call optimize() or solve() first.') + + return { + 'Number of timesteps': len(self.timesteps), + 'Constraints': self.model.constraints.ncons, + 'Variables': self.model.variables.nvars, + 'Main Results': self.main_results, + 'Config': CONFIG.to_dict(), + } + def plot_network( self, path: bool | str | pathlib.Path = 'flow_system.html', From aba8aee75e2123bc5dd73dc1820cd6cdf4ef3fc1 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 02:52:05 +0100 Subject: [PATCH 07/88] Remove main results and summary --- flixopt/flow_system.py | 109 ----------------------------------------- 1 file changed, 109 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index e6a234692..036e122b4 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -952,115 +952,6 @@ def optimize(self) -> OptimizeAccessor: """ return OptimizeAccessor(self) - @property - def main_results(self) -> dict[str, Any]: - """ - Get main results summary after optimization. - - Returns a dictionary containing: - - Objective value - - Penalty breakdown (temporal, periodic, total) - - Effects summary with temporal, periodic, and total values - - Investment decisions (invested vs not invested) - - Buses with excess (if any) - - Returns: - Dictionary with main optimization results. - - Raises: - RuntimeError: If the model has not been solved yet. - - Examples: - >>> flow_system.optimize(solver) - >>> print(flow_system.main_results) - """ - from .effects import PENALTY_EFFECT_LABEL - from .features import InvestmentModel - - if self.model is None or self.solution is None: - raise RuntimeError('FlowSystem has not been solved yet. Call optimize() or solve() first.') - - main_results = { - 'Objective': self.model.objective.value, - 'Penalty': { - 'temporal': self.effects.penalty_effect.submodel.temporal.total.solution.values, - 'periodic': self.effects.penalty_effect.submodel.periodic.total.solution.values, - 'total': self.effects.penalty_effect.submodel.total.solution.values, - }, - 'Effects': { - f'{effect.label} [{effect.unit}]': { - 'temporal': effect.submodel.temporal.total.solution.values, - 'periodic': effect.submodel.periodic.total.solution.values, - 'total': effect.submodel.total.solution.values, - } - for effect in sorted(self.effects.values(), key=lambda e: e.label_full.upper()) - if effect.label_full != PENALTY_EFFECT_LABEL - }, - 'Sizes': { - 'Invested': { - model.label_of_element: model.size.solution - for component in self.components.values() - for model in component.submodel.all_submodels - if isinstance(model, InvestmentModel) - and model.size.solution.max().item() >= CONFIG.Modeling.epsilon - }, - 'Not invested': { - model.label_of_element: model.size.solution - for component in self.components.values() - for model in component.submodel.all_submodels - if isinstance(model, InvestmentModel) and model.size.solution.max().item() < CONFIG.Modeling.epsilon - }, - }, - 'Buses with imbalance': [ - { - bus.label_full: { - 'virtual_supply': (bus.submodel.virtual_supply.solution * self.hours_per_timestep).sum('time'), - 'virtual_demand': (bus.submodel.virtual_demand.solution * self.hours_per_timestep).sum('time'), - } - } - for bus in self.buses.values() - if bus.allows_imbalance - and ( - bus.submodel.virtual_supply.solution.sum().item() > 1e-3 - or bus.submodel.virtual_demand.solution.sum().item() > 1e-3 - ) - ], - } - - return fx_io.round_nested_floats(main_results) - - @property - def summary(self) -> dict[str, Any]: - """ - Get a summary of the FlowSystem and optimization. - - Returns a dictionary containing: - - Number of timesteps - - Number of constraints and variables (if modeled) - - Main results (if solved) - - Config settings - - Returns: - Dictionary with FlowSystem summary. - - Raises: - RuntimeError: If the model has not been solved yet. - - Examples: - >>> flow_system.optimize(solver) - >>> print(flow_system.summary) - """ - if self.model is None or self.solution is None: - raise RuntimeError('FlowSystem has not been solved yet. Call optimize() or solve() first.') - - return { - 'Number of timesteps': len(self.timesteps), - 'Constraints': self.model.constraints.ncons, - 'Variables': self.model.variables.nvars, - 'Main Results': self.main_results, - 'Config': CONFIG.to_dict(), - } - def plot_network( self, path: bool | str | pathlib.Path = 'flow_system.html', From 48c9f6b74d40a3674b6a0570db7b588333ac7947 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:03:21 +0100 Subject: [PATCH 08/88] Remove main results and summary and imprive infeasible extraction --- flixopt/config.py | 8 ++++---- flixopt/flow_system.py | 37 +++++++++++++------------------------ 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/flixopt/config.py b/flixopt/config.py index 2cd09078d..f0a7a069d 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -171,7 +171,7 @@ def format(self, record): 'time_limit_seconds': 300, 'log_to_console': True, 'log_main_results': True, - 'document_infeasibility': True, + 'compute_infeasibilities': True, } ), } @@ -527,7 +527,7 @@ class Solving: time_limit_seconds: Default time limit in seconds for solver runs. log_to_console: Whether solver should output to console. log_main_results: Whether to log main results after solving. - document_infeasibility: Whether to save model documentation on infeasibility. + compute_infeasibilities: Whether to save model documentation on infeasibility. Examples: ```python @@ -542,7 +542,7 @@ class Solving: time_limit_seconds: int = _DEFAULTS['solving']['time_limit_seconds'] log_to_console: bool = _DEFAULTS['solving']['log_to_console'] log_main_results: bool = _DEFAULTS['solving']['log_main_results'] - document_infeasibility: bool = _DEFAULTS['solving']['document_infeasibility'] + compute_infeasibilities: bool = _DEFAULTS['solving']['compute_infeasibilities'] class Plotting: """Plotting configuration. @@ -625,7 +625,7 @@ def to_dict(cls) -> dict: 'time_limit_seconds': cls.Solving.time_limit_seconds, 'log_to_console': cls.Solving.log_to_console, 'log_main_results': cls.Solving.log_main_results, - 'document_infeasibility': cls.Solving.document_infeasibility, + 'compute_infeasibilities': cls.Solving.compute_infeasibilities, }, 'plotting': { 'default_show': cls.Plotting.default_show, diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 036e122b4..756da15db 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -889,9 +889,19 @@ def solve(self, solver: _Solver) -> FlowSystem: **solver.options, ) - if self.model.status == 'warning': - if CONFIG.Solving.document_infeasibility: - self._document_infeasibility() + if self.model.termination_condition == 'infeasible': + if CONFIG.Solving.compute_infeasibilities: + import io + from contextlib import redirect_stdout + + f = io.StringIO() + + # Redirect stdout to our buffer + with redirect_stdout(f): + self.model.print_infeasibilities() + + infeasibilities = f.getvalue() + logger.error('Sucessfully extracted infeasibilities: \n%s', infeasibilities) raise RuntimeError(f'Model was infeasible. Status: {self.model.status}. Check your constraints and bounds.') # Store solution on FlowSystem for direct Element access @@ -901,27 +911,6 @@ def solve(self, solver: _Solver) -> FlowSystem: return self - def _document_infeasibility(self) -> None: - """Save model documentation and FlowSystem to help debug infeasibility.""" - import tempfile - from pathlib import Path - - # Create a temporary directory for infeasibility docs - infeas_dir = Path(tempfile.gettempdir()) / 'flixopt_infeasibility' - infeas_dir.mkdir(parents=True, exist_ok=True) - - # Save model documentation - model_doc_path = infeas_dir / 'model_documentation.yaml' - fx_io.document_linopy_model(self.model, model_doc_path) - - # Save FlowSystem - fs_path = infeas_dir / 'flow_system.nc4' - self.to_netcdf(fs_path) - - logger.error( - f'Model infeasibility documentation saved to:\n Model docs: {model_doc_path}\n FlowSystem: {fs_path}' - ) - @property def optimize(self) -> OptimizeAccessor: """ From 4cc0dbbf0b714235a64bc4184a851ffc8395917e Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:39:24 +0100 Subject: [PATCH 09/88] Add transform accessor for clustering and future transformations --- flixopt/flow_system.py | 133 +++++++++++++++++++++++ flixopt/transform_accessor.py | 198 ++++++++++++++++++++++++++++++++++ 2 files changed, 331 insertions(+) create mode 100644 flixopt/transform_accessor.py diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 756da15db..27cb39f46 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -26,6 +26,7 @@ from .elements import Bus, Component, Flow from .optimize_accessor import OptimizeAccessor from .structure import CompositeContainerMixin, Element, ElementContainer, FlowSystemModel, Interface +from .transform_accessor import TransformAccessor if TYPE_CHECKING: import pathlib @@ -207,6 +208,9 @@ def __init__( # Solution dataset - populated after optimization or loaded from file self.solution: xr.Dataset | None = None + # Clustering info - populated by transform.cluster() + self._clustering_info: dict | None = None + # Use properties to validate and store scenario dimension settings self.scenario_independent_sizes = scenario_independent_sizes self.scenario_independent_flow_rates = scenario_independent_flow_rates @@ -837,6 +841,7 @@ def build_model(self, normalize_weights: bool = True) -> FlowSystem: This method prepares the FlowSystem for optimization by: 1. Connecting and transforming all elements (if not already done) 2. Creating the FlowSystemModel with all variables and constraints + 3. Adding clustering constraints (if this is a clustered FlowSystem) After calling this method, `self.model` will be available for inspection before solving. @@ -855,8 +860,27 @@ def build_model(self, normalize_weights: bool = True) -> FlowSystem: self.connect_and_transform() self.create_model(normalize_weights) self.model.do_modeling() + + # Add clustering constraints if this is a clustered FlowSystem + if self._clustering_info is not None: + self._add_clustering_constraints() + return self + def _add_clustering_constraints(self) -> None: + """Add clustering constraints to the model.""" + from .clustering import ClusteringModel + + info = self._clustering_info + clustering_model = ClusteringModel( + model=self.model, + clustering_parameters=info['parameters'], + flow_system=self, + clustering_data=info['clustering'], + components_to_clusterize=info['components_to_clusterize'], + ) + clustering_model.do_modeling() + def solve(self, solver: _Solver) -> FlowSystem: """ Solve the optimization model and populate the solution. @@ -911,6 +935,94 @@ def solve(self, solver: _Solver) -> FlowSystem: return self + def map_solution_to(self, target: FlowSystem) -> FlowSystem: + """ + Map the solution from this FlowSystem to another FlowSystem. + + This method is used to transfer solutions from a transformed FlowSystem + (e.g., clustered) back to the original FlowSystem with full time resolution. + The target FlowSystem will have its `.solution` populated with the mapped values. + + For clustered FlowSystems, this disaggregates the solution by expanding + the clustered periods back to the original timesteps. + + Args: + target: The FlowSystem to map the solution to (typically the original + FlowSystem before transformation). + + Returns: + The target FlowSystem with its solution populated. + + Raises: + RuntimeError: If this FlowSystem has no solution (not yet solved). + RuntimeError: If this is not a transformed FlowSystem (no mapping info). + + Examples: + Clustered optimization with solution mapping: + + >>> clustered_fs = flow_system.transform.cluster(params) + >>> clustered_fs.optimize(solver) + >>> clustered_fs.map_solution_to(flow_system) + >>> print(flow_system.solution) # Full resolution solution + """ + if self.solution is None: + raise RuntimeError('No solution to map. Solve the model first.') + + if self._clustering_info is None: + raise RuntimeError('Cannot map solution: this is not a transformed FlowSystem.') + + # Map clustered solution to original timesteps + target.solution = self._disaggregate_solution(target) + return target + + def _disaggregate_solution(self, target: FlowSystem) -> xr.Dataset: + """Disaggregate clustered solution to original timesteps.""" + import numpy as np + + clustering = self._clustering_info['clustering'] + tsam_obj = clustering.tsam + + # Get the mapping from original timesteps to clustered timesteps + period_length = len(tsam_obj.stepIdx) + cluster_order = tsam_obj.clusterOrder + + # Build index mapping: for each original timestep, find the corresponding + # clustered timestep (the representative period's timestep) + original_to_clustered = [] + for period_idx, cluster_id in enumerate(cluster_order): + # Find the first period that belongs to this cluster (the representative) + representative_period = None + for p_idx, c_id in enumerate(cluster_order): + if c_id == cluster_id: + representative_period = p_idx + break + + # Map each timestep in this period to the representative period's timestep + for step_in_period in range(period_length): + original_idx = period_idx * period_length + step_in_period + if original_idx < len(target.timesteps): + clustered_idx = representative_period * period_length + step_in_period + original_to_clustered.append(clustered_idx) + + original_to_clustered = np.array(original_to_clustered) + + # Disaggregate each variable in the solution + disaggregated = {} + for var_name, var_data in self.solution.data_vars.items(): + if 'time' in var_data.dims: + # Expand using the index mapping + disaggregated_data = var_data.isel(time=original_to_clustered) + # Assign the target's time coordinates + disaggregated_data = disaggregated_data.assign_coords( + time=target.timesteps[: len(original_to_clustered)] + ) + disaggregated[var_name] = disaggregated_data + else: + # Non-time variables are copied as-is + disaggregated[var_name] = var_data + + return xr.Dataset(disaggregated, attrs=self.solution.attrs) + @property def optimize(self) -> OptimizeAccessor: """ @@ -941,6 +1053,27 @@ def optimize(self) -> OptimizeAccessor: """ return OptimizeAccessor(self) + @property + def transform(self) -> TransformAccessor: + """ + Access transformation methods for this FlowSystem. + + This property returns a TransformAccessor that provides methods to create + transformed versions of this FlowSystem (e.g., clustered for time aggregation). + + Returns: + A TransformAccessor instance. + + Examples: + Clustered optimization: + + >>> params = ClusteringParameters(hours_per_period=24, nr_of_periods=8) + >>> clustered_fs = flow_system.transform.cluster(params) + >>> clustered_fs.optimize(solver) + >>> clustered_fs.map_solution_to(flow_system) + """ + return TransformAccessor(self) + def plot_network( self, path: bool | str | pathlib.Path = 'flow_system.html', diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py new file mode 100644 index 000000000..0c8071385 --- /dev/null +++ b/flixopt/transform_accessor.py @@ -0,0 +1,198 @@ +""" +Transform accessor for FlowSystem. + +This module provides the TransformAccessor class that enables +transformations on FlowSystem like clustering and MGA. +""" + +from __future__ import annotations + +import logging +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from .clustering import ClusteringParameters + from .flow_system import FlowSystem + +logger = logging.getLogger('flixopt') + + +class TransformAccessor: + """ + Accessor for transformation methods on FlowSystem. + + This class provides transformations that create new FlowSystem instances + with modified structure or data, accessible via `flow_system.transform`. + + Examples: + Clustered optimization: + + >>> clustered_fs = flow_system.transform.cluster(params) + >>> clustered_fs.optimize(solver) + >>> clustered_fs.map_solution_to(flow_system) + + Future MGA: + + >>> mga_fs = flow_system.transform.mga(alternatives=5) + >>> mga_fs.optimize(solver) + >>> mga_fs.map_solution_to(flow_system) + """ + + def __init__(self, flow_system: FlowSystem) -> None: + """ + Initialize the accessor with a reference to the FlowSystem. + + Args: + flow_system: The FlowSystem to transform. + """ + self._fs = flow_system + + def cluster( + self, + parameters: ClusteringParameters, + components_to_clusterize: list | None = None, + ) -> FlowSystem: + """ + Create a clustered FlowSystem for time series aggregation. + + This method creates a new FlowSystem that can be optimized with + clustered time series data. The clustering reduces computational + complexity by identifying representative time periods. + + The returned FlowSystem: + - Has aggregated time series data (if `aggregate_data_and_fix_non_binary_vars=True`) + - Will have clustering constraints added during `build_model()` + - Can map its solution back to the original FlowSystem + + Args: + parameters: Clustering parameters specifying period duration, + number of periods, and aggregation settings. + components_to_clusterize: List of components to apply clustering to. + If None, all components are clustered. + + Returns: + A new FlowSystem configured for clustered optimization. + + Raises: + ValueError: If timestep sizes are inconsistent. + ValueError: If hours_per_period is not a multiple of timestep size. + + Examples: + Basic clustered optimization: + + >>> from flixopt import ClusteringParameters + >>> params = ClusteringParameters( + ... hours_per_period=24, + ... nr_of_periods=8, + ... fix_storage_flows=True, + ... aggregate_data_and_fix_non_binary_vars=True, + ... ) + >>> clustered_fs = flow_system.transform.cluster(params) + >>> clustered_fs.optimize(solver) + >>> clustered_fs.map_solution_to(flow_system) + + With model modifications: + + >>> clustered_fs = flow_system.transform.cluster(params) + >>> clustered_fs.build_model() + >>> clustered_fs.model.add_constraints(...) + >>> clustered_fs.solve(solver) + >>> clustered_fs.map_solution_to(flow_system) + """ + import numpy as np + + from .clustering import Clustering + from .core import DataConverter, TimeSeriesData, drop_constant_arrays + + # Validation + dt_min = float(self._fs.hours_per_timestep.min().item()) + dt_max = float(self._fs.hours_per_timestep.max().item()) + if not dt_min == dt_max: + raise ValueError( + f'Clustering failed due to inconsistent time step sizes: ' + f'delta_t varies from {dt_min} to {dt_max} hours.' + ) + ratio = parameters.hours_per_period / dt_max + if not np.isclose(ratio, round(ratio), atol=1e-9): + raise ValueError( + f'The selected hours_per_period={parameters.hours_per_period} does not match the time ' + f'step size of {dt_max} hours. It must be an integer multiple of {dt_max} hours.' + ) + + logger.info(f'{"":#^80}') + logger.info(f'{" Clustering TimeSeries Data ":#^80}') + + # Get dataset representation + ds = self._fs.to_dataset() + temporaly_changing_ds = drop_constant_arrays(ds, dim='time') + + # Perform clustering + clustering = Clustering( + original_data=temporaly_changing_ds.to_dataframe(), + hours_per_time_step=float(dt_min), + hours_per_period=parameters.hours_per_period, + nr_of_periods=parameters.nr_of_periods, + weights=self._calculate_clustering_weights(temporaly_changing_ds), + time_series_for_high_peaks=parameters.labels_for_high_peaks, + time_series_for_low_peaks=parameters.labels_for_low_peaks, + ) + clustering.cluster() + + # Create new FlowSystem (with aggregated data if requested) + if parameters.aggregate_data_and_fix_non_binary_vars: + ds = self._fs.to_dataset() + for name, series in clustering.aggregated_data.items(): + da = DataConverter.to_dataarray(series, self._fs.coords).rename(name).assign_attrs(ds[name].attrs) + if TimeSeriesData.is_timeseries_data(da): + da = TimeSeriesData.from_dataarray(da) + ds[name] = da + + from .flow_system import FlowSystem + + clustered_fs = FlowSystem.from_dataset(ds) + else: + # Copy without data modification + clustered_fs = self._fs.copy() + + # Store clustering info for later use + clustered_fs._clustering_info = { + 'parameters': parameters, + 'clustering': clustering, + 'components_to_clusterize': components_to_clusterize, + 'original_fs': self._fs, + } + + return clustered_fs + + @staticmethod + def _calculate_clustering_weights(ds) -> dict[str, float]: + """Calculate weights for clustering based on dataset attributes.""" + from collections import Counter + + import numpy as np + + groups = [da.attrs.get('clustering_group') for da in ds.data_vars.values() if 'clustering_group' in da.attrs] + group_counts = Counter(groups) + + # Calculate weight for each group (1/count) + group_weights = {group: 1 / count for group, count in group_counts.items()} + + weights = {} + for name, da in ds.data_vars.items(): + clustering_group = da.attrs.get('clustering_group') + group_weight = group_weights.get(clustering_group) + if group_weight is not None: + weights[name] = group_weight + else: + weights[name] = da.attrs.get('clustering_weight', 1) + + if np.all(np.isclose(list(weights.values()), 1, atol=1e-6)): + logger.info('All Clustering weights were set to 1') + + return weights + + # Future methods can be added here: + # + # def mga(self, alternatives: int = 5) -> FlowSystem: + # """Create a FlowSystem configured for Modeling to Generate Alternatives.""" + # ... From 402686a693a449fe6caaa4e62704182660ea95ac Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:52:57 +0100 Subject: [PATCH 10/88] Reverts ome not needed stuff --- flixopt/flow_system.py | 90 +---------------------------------- flixopt/transform_accessor.py | 8 ++-- 2 files changed, 4 insertions(+), 94 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 27cb39f46..9906fd27a 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -935,94 +935,6 @@ def solve(self, solver: _Solver) -> FlowSystem: return self - def map_solution_to(self, target: FlowSystem) -> FlowSystem: - """ - Map the solution from this FlowSystem to another FlowSystem. - - This method is used to transfer solutions from a transformed FlowSystem - (e.g., clustered) back to the original FlowSystem with full time resolution. - The target FlowSystem will have its `.solution` populated with the mapped values. - - For clustered FlowSystems, this disaggregates the solution by expanding - the clustered periods back to the original timesteps. - - Args: - target: The FlowSystem to map the solution to (typically the original - FlowSystem before transformation). - - Returns: - The target FlowSystem with its solution populated. - - Raises: - RuntimeError: If this FlowSystem has no solution (not yet solved). - RuntimeError: If this is not a transformed FlowSystem (no mapping info). - - Examples: - Clustered optimization with solution mapping: - - >>> clustered_fs = flow_system.transform.cluster(params) - >>> clustered_fs.optimize(solver) - >>> clustered_fs.map_solution_to(flow_system) - >>> print(flow_system.solution) # Full resolution solution - """ - if self.solution is None: - raise RuntimeError('No solution to map. Solve the model first.') - - if self._clustering_info is None: - raise RuntimeError('Cannot map solution: this is not a transformed FlowSystem.') - - # Map clustered solution to original timesteps - target.solution = self._disaggregate_solution(target) - return target - - def _disaggregate_solution(self, target: FlowSystem) -> xr.Dataset: - """Disaggregate clustered solution to original timesteps.""" - import numpy as np - - clustering = self._clustering_info['clustering'] - tsam_obj = clustering.tsam - - # Get the mapping from original timesteps to clustered timesteps - period_length = len(tsam_obj.stepIdx) - cluster_order = tsam_obj.clusterOrder - - # Build index mapping: for each original timestep, find the corresponding - # clustered timestep (the representative period's timestep) - original_to_clustered = [] - for period_idx, cluster_id in enumerate(cluster_order): - # Find the first period that belongs to this cluster (the representative) - representative_period = None - for p_idx, c_id in enumerate(cluster_order): - if c_id == cluster_id: - representative_period = p_idx - break - - # Map each timestep in this period to the representative period's timestep - for step_in_period in range(period_length): - original_idx = period_idx * period_length + step_in_period - if original_idx < len(target.timesteps): - clustered_idx = representative_period * period_length + step_in_period - original_to_clustered.append(clustered_idx) - - original_to_clustered = np.array(original_to_clustered) - - # Disaggregate each variable in the solution - disaggregated = {} - for var_name, var_data in self.solution.data_vars.items(): - if 'time' in var_data.dims: - # Expand using the index mapping - disaggregated_data = var_data.isel(time=original_to_clustered) - # Assign the target's time coordinates - disaggregated_data = disaggregated_data.assign_coords( - time=target.timesteps[: len(original_to_clustered)] - ) - disaggregated[var_name] = disaggregated_data - else: - # Non-time variables are copied as-is - disaggregated[var_name] = var_data - - return xr.Dataset(disaggregated, attrs=self.solution.attrs) - @property def optimize(self) -> OptimizeAccessor: """ @@ -1070,7 +982,7 @@ def transform(self) -> TransformAccessor: >>> params = ClusteringParameters(hours_per_period=24, nr_of_periods=8) >>> clustered_fs = flow_system.transform.cluster(params) >>> clustered_fs.optimize(solver) - >>> clustered_fs.map_solution_to(flow_system) + >>> print(clustered_fs.solution) """ return TransformAccessor(self) diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index 0c8071385..90c98157a 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -29,13 +29,12 @@ class TransformAccessor: >>> clustered_fs = flow_system.transform.cluster(params) >>> clustered_fs.optimize(solver) - >>> clustered_fs.map_solution_to(flow_system) + >>> print(clustered_fs.solution) Future MGA: >>> mga_fs = flow_system.transform.mga(alternatives=5) >>> mga_fs.optimize(solver) - >>> mga_fs.map_solution_to(flow_system) """ def __init__(self, flow_system: FlowSystem) -> None: @@ -60,9 +59,9 @@ def cluster( complexity by identifying representative time periods. The returned FlowSystem: + - Has the same timesteps as the original (clustering works via constraints, not reduction) - Has aggregated time series data (if `aggregate_data_and_fix_non_binary_vars=True`) - Will have clustering constraints added during `build_model()` - - Can map its solution back to the original FlowSystem Args: parameters: Clustering parameters specifying period duration, @@ -89,7 +88,7 @@ def cluster( ... ) >>> clustered_fs = flow_system.transform.cluster(params) >>> clustered_fs.optimize(solver) - >>> clustered_fs.map_solution_to(flow_system) + >>> print(clustered_fs.solution) With model modifications: @@ -97,7 +96,6 @@ def cluster( >>> clustered_fs.build_model() >>> clustered_fs.model.add_constraints(...) >>> clustered_fs.solve(solver) - >>> clustered_fs.map_solution_to(flow_system) """ import numpy as np From ddaaea13a3d649890c35a628d263ca2e7aae17c0 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 11:01:35 +0100 Subject: [PATCH 11/88] Update the docs and deprecate old classes --- docs/home/quick-start.md | 28 ++++++--- docs/user-guide/optimization/index.md | 87 ++++++++++++--------------- docs/user-guide/results/index.md | 35 ++++++++++- flixopt/optimization.py | 25 +++++++- flixopt/results.py | 13 ++++ 5 files changed, 130 insertions(+), 58 deletions(-) diff --git a/docs/home/quick-start.md b/docs/home/quick-start.md index b0bdef7da..4b80a7066 100644 --- a/docs/home/quick-start.md +++ b/docs/home/quick-start.md @@ -91,16 +91,28 @@ flow_system.add_elements(solar, demand, battery, electricity_bus) ### 5. Run Optimization ```python -# Create and run optimization -optimization = fx.Optimization('solar_battery_optimization', flow_system) -optimization.solve(fx.solvers.HighsSolver()) +# Run optimization directly on the flow system +flow_system.optimize(fx.solvers.HighsSolver()) ``` -### 6. Save Results +### 6. Access Results ```python -# This includes the modeled FlowSystem. SO you can restore both results and inputs -optimization.results.to_file() +# Access results directly from the flow system +print(flow_system.solution) + +# Or access component-specific results +print(flow_system.components['battery'].solution) +``` + +### 7. Save Results (Optional) + +```python +# Save the flow system (includes inputs and solution) +flow_system.to_netcdf('results/solar_battery.nc') + +# Load it back later +loaded_fs = fx.FlowSystem.from_netcdf('results/solar_battery.nc') ``` ## What's Next? @@ -120,8 +132,8 @@ Most flixOpt projects follow this pattern: 2. **Create flow system** - Initialize with time series and effects 3. **Add buses** - Define connection points 4. **Add components** - Create generators, storage, converters, loads -5. **Run optimization** - Solve the optimization -6. **Save Results** - For later analysis. Or only extract needed data +5. **Run optimization** - Call `flow_system.optimize(solver)` +6. **Access Results** - Via `flow_system.solution` or component `.solution` attributes ## Tips diff --git a/docs/user-guide/optimization/index.md b/docs/user-guide/optimization/index.md index 7010acfc5..0762d505a 100644 --- a/docs/user-guide/optimization/index.md +++ b/docs/user-guide/optimization/index.md @@ -2,19 +2,32 @@ This section covers how to run optimizations in flixOpt, including different optimization modes and solver configuration. -## Optimization Modes +## Standard Optimization -flixOpt provides three optimization modes to handle different problem sizes and requirements: +The recommended way to run an optimization is directly on the `FlowSystem`: -### Optimization (Full) +```python +import flixopt as fx + +# Simple one-liner +flow_system.optimize(fx.solvers.HighsSolver()) + +# Access results directly +print(flow_system.solution['Boiler(Q_th)|flow_rate']) +print(flow_system.components['Boiler'].solution) +``` -[`Optimization`][flixopt.optimization.Optimization] solves the entire problem at once. +For more control over the optimization process, you can split model building and solving: ```python -import flixopt as fx +# Build the model first +flow_system.build_model() + +# Optionally inspect or modify the model +print(flow_system.model.constraints) -optimization = fx.Optimization('my_model', flow_system) -optimization.solve(fx.solvers.HighsSolver()) +# Then solve +flow_system.solve(fx.solvers.HighsSolver()) ``` **Best for:** @@ -23,48 +36,27 @@ optimization.solve(fx.solvers.HighsSolver()) - When you need the globally optimal solution - Problems without time-coupling simplifications -### SegmentedOptimization +## Clustered Optimization -[`SegmentedOptimization`][flixopt.optimization.SegmentedOptimization] splits the time horizon into segments and solves them sequentially. +For large problems, use time series clustering to reduce computational complexity: ```python -optimization = fx.SegmentedOptimization( - 'segmented_model', - flow_system, - segment_length=24, # Hours per segment - overlap_length=4 # Hours of overlap between segments +# Define clustering parameters +params = fx.ClusteringParameters( + hours_per_period=24, # Hours per typical period + nr_of_periods=8, # Number of typical periods + fix_storage_flows=True, + aggregate_data_and_fix_non_binary_vars=True, ) -optimization.solve(fx.solvers.HighsSolver()) -``` - -**Best for:** - -- Large problems that don't fit in memory -- Long time horizons (weeks, months) -- Problems where decisions are mostly local in time - -**Trade-offs:** - -- Faster solve times -- May miss globally optimal solutions -- Overlap helps maintain solution quality at segment boundaries -### ClusteredOptimization +# Create clustered FlowSystem +clustered_fs = flow_system.transform.cluster(params) -[`ClusteredOptimization`][flixopt.optimization.ClusteredOptimization] uses time series aggregation to reduce problem size by identifying representative periods. +# Optimize the clustered system +clustered_fs.optimize(fx.solvers.HighsSolver()) -```python -clustering_params = fx.ClusteringParameters( - n_periods=8, # Number of typical periods - hours_per_period=24 # Hours per typical period -) - -optimization = fx.ClusteredOptimization( - 'clustered_model', - flow_system, - clustering_params -) -optimization.solve(fx.solvers.HighsSolver()) +# Access results - same structure as original +print(clustered_fs.solution) ``` **Best for:** @@ -83,9 +75,8 @@ optimization.solve(fx.solvers.HighsSolver()) | Mode | Problem Size | Solve Time | Solution Quality | |------|-------------|------------|------------------| -| `Optimization` | Small-Medium | Slow | Optimal | -| `SegmentedOptimization` | Large | Medium | Near-optimal | -| `ClusteredOptimization` | Very Large | Fast | Approximate | +| Standard | Small-Medium | Slow | Optimal | +| Clustered | Very Large | Fast | Approximate | ## Solver Configuration @@ -104,10 +95,10 @@ optimization.solve(fx.solvers.HighsSolver()) ```python # Basic usage with defaults -optimization.solve(fx.solvers.HighsSolver()) +flow_system.optimize(fx.solvers.HighsSolver()) # With custom options -optimization.solve( +flow_system.optimize( fx.solvers.GurobiSolver( time_limit_seconds=3600, mip_gap=0.01, @@ -166,7 +157,7 @@ If your model has no feasible solution: 2. **Use Gurobi for infeasibility analysis** - When using GurobiSolver and the model is infeasible, flixOpt automatically extracts and logs the Irreducible Inconsistent Subsystem (IIS): ```python # Gurobi provides detailed infeasibility analysis - optimization.solve(fx.solvers.GurobiSolver()) + flow_system.optimize(fx.solvers.GurobiSolver()) # If infeasible, check the model documentation file for IIS details ``` The infeasible constraints are saved to the model documentation file in the results folder. diff --git a/docs/user-guide/results/index.md b/docs/user-guide/results/index.md index 92656010d..c0a9464ed 100644 --- a/docs/user-guide/results/index.md +++ b/docs/user-guide/results/index.md @@ -10,9 +10,42 @@ Learn how to work with optimization results: - Exporting to various formats - Comparing scenarios and periods +## Accessing Results + +After running an optimization, access results directly from the FlowSystem: + +```python +# Run optimization +flow_system.optimize(fx.solvers.HighsSolver()) + +# Access the full solution dataset +solution = flow_system.solution +print(solution['Boiler(Q_th)|flow_rate']) + +# Access component-specific solutions +boiler = flow_system.components['Boiler'] +print(boiler.solution) + +# Access flow solutions +flow = flow_system.flows['Boiler(Q_th)'] +print(flow.solution) +``` + +## Saving and Loading + +Save the FlowSystem (including solution) for later analysis: + +```python +# Save to NetCDF +flow_system.to_netcdf('results/my_system.nc') + +# Load later +loaded_fs = fx.FlowSystem.from_netcdf('results/my_system.nc') +print(loaded_fs.solution) +``` + ## Getting Started For now, see: - **[Examples](../../examples/index.md)** - Result analysis patterns in working code -- **[API Reference](../../api-reference/results.md)** - Results class documentation diff --git a/flixopt/optimization.py b/flixopt/optimization.py index 4a04f3491..9060f6be8 100644 --- a/flixopt/optimization.py +++ b/flixopt/optimization.py @@ -15,6 +15,7 @@ import pathlib import sys import timeit +import warnings from collections import Counter from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable @@ -170,6 +171,13 @@ def __init__( folder: pathlib.Path | None = None, normalize_weights: bool = True, ): + warnings.warn( + 'Optimization is deprecated and will be removed in v6. ' + 'Use FlowSystem.optimize(solver) or FlowSystem.build_model() + FlowSystem.solve(solver) instead. ' + 'Access results via FlowSystem.solution.', + DeprecationWarning, + stacklevel=2, + ) _initialize_optimization_common( self, name=name, @@ -383,11 +391,20 @@ def __init__( folder: pathlib.Path | None = None, normalize_weights: bool = True, ): + warnings.warn( + 'ClusteredOptimization is deprecated and will be removed in v6. ' + 'Use FlowSystem.transform.cluster(params) followed by FlowSystem.optimize(solver) instead. ' + 'Example: clustered_fs = flow_system.transform.cluster(params); clustered_fs.optimize(solver)', + DeprecationWarning, + stacklevel=2, + ) if flow_system.scenarios is not None: raise ValueError('Clustering is not supported for scenarios yet. Please use Optimization instead.') if flow_system.periods is not None: raise ValueError('Clustering is not supported for periods yet. Please use Optimization instead.') - super().__init__( + # Skip parent deprecation warning by calling common init directly + _initialize_optimization_common( + self, name=name, flow_system=flow_system, folder=folder, @@ -621,6 +638,12 @@ def __init__( nr_of_previous_values: int = 1, folder: pathlib.Path | None = None, ): + warnings.warn( + 'SegmentedOptimization is deprecated and will be removed in v6. ' + 'A replacement API for segmented optimization will be provided in a future release.', + DeprecationWarning, + stacklevel=2, + ) _initialize_optimization_common( self, name=name, diff --git a/flixopt/results.py b/flixopt/results.py index f3d0c19a9..0decf370d 100644 --- a/flixopt/results.py +++ b/flixopt/results.py @@ -222,6 +222,13 @@ def __init__( folder: Results storage folder. model: Linopy optimization model. """ + warnings.warn( + 'Results is deprecated and will be removed in v6. ' + 'Access results directly via FlowSystem.solution after optimization, or use the ' + '.plot accessor on FlowSystem and its components (e.g., flow_system.plot.heatmap(...)).', + DeprecationWarning, + stacklevel=2, + ) self.solution = solution self.flow_system_data = flow_system_data @@ -2033,6 +2040,12 @@ def __init__( name: str, folder: pathlib.Path | None = None, ): + warnings.warn( + 'SegmentedResults is deprecated and will be removed in v6. ' + 'A replacement API for segmented optimization will be provided in a future release.', + DeprecationWarning, + stacklevel=2, + ) self.segment_results = segment_results self.all_timesteps = all_timesteps self.timesteps_per_segment = timesteps_per_segment From f34bbb9c60f87e26a79cab7bc9168b561d548ccf Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 11:03:21 +0100 Subject: [PATCH 12/88] Update deprectations --- flixopt/optimization.py | 8 ++++---- flixopt/results.py | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flixopt/optimization.py b/flixopt/optimization.py index 9060f6be8..0bc224702 100644 --- a/flixopt/optimization.py +++ b/flixopt/optimization.py @@ -25,7 +25,7 @@ from . import io as fx_io from .clustering import Clustering, ClusteringModel, ClusteringParameters from .components import Storage -from .config import CONFIG, SUCCESS_LEVEL +from .config import CONFIG, DEPRECATION_REMOVAL_VERSION, SUCCESS_LEVEL from .core import DataConverter, TimeSeriesData, drop_constant_arrays from .effects import PENALTY_EFFECT_LABEL from .features import InvestmentModel @@ -172,7 +172,7 @@ def __init__( normalize_weights: bool = True, ): warnings.warn( - 'Optimization is deprecated and will be removed in v6. ' + f'Optimization is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' 'Use FlowSystem.optimize(solver) or FlowSystem.build_model() + FlowSystem.solve(solver) instead. ' 'Access results via FlowSystem.solution.', DeprecationWarning, @@ -392,7 +392,7 @@ def __init__( normalize_weights: bool = True, ): warnings.warn( - 'ClusteredOptimization is deprecated and will be removed in v6. ' + f'ClusteredOptimization is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' 'Use FlowSystem.transform.cluster(params) followed by FlowSystem.optimize(solver) instead. ' 'Example: clustered_fs = flow_system.transform.cluster(params); clustered_fs.optimize(solver)', DeprecationWarning, @@ -639,7 +639,7 @@ def __init__( folder: pathlib.Path | None = None, ): warnings.warn( - 'SegmentedOptimization is deprecated and will be removed in v6. ' + f'SegmentedOptimization is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' 'A replacement API for segmented optimization will be provided in a future release.', DeprecationWarning, stacklevel=2, diff --git a/flixopt/results.py b/flixopt/results.py index 0decf370d..99944b98c 100644 --- a/flixopt/results.py +++ b/flixopt/results.py @@ -15,7 +15,7 @@ from . import io as fx_io from . import plotting from .color_processing import process_colors -from .config import CONFIG, SUCCESS_LEVEL +from .config import CONFIG, DEPRECATION_REMOVAL_VERSION, SUCCESS_LEVEL from .flow_system import FlowSystem from .structure import CompositeContainerMixin, ResultsContainer @@ -223,7 +223,7 @@ def __init__( model: Linopy optimization model. """ warnings.warn( - 'Results is deprecated and will be removed in v6. ' + f'Results is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' 'Access results directly via FlowSystem.solution after optimization, or use the ' '.plot accessor on FlowSystem and its components (e.g., flow_system.plot.heatmap(...)).', DeprecationWarning, @@ -2041,7 +2041,7 @@ def __init__( folder: pathlib.Path | None = None, ): warnings.warn( - 'SegmentedResults is deprecated and will be removed in v6. ' + f'SegmentedResults is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' 'A replacement API for segmented optimization will be provided in a future release.', DeprecationWarning, stacklevel=2, From 2bc9fb74cbb2950f535c4314ca97681d0839c512 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 12:07:45 +0100 Subject: [PATCH 13/88] Fix time index inconsistencies --- flixopt/structure.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/flixopt/structure.py b/flixopt/structure.py index 62d7bda50..e415ac6dc 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -188,7 +188,13 @@ def solution(self): for flow in sorted(self.flow_system.flows.values(), key=lambda flow: flow.label_full.upper()) }, } - return solution.reindex(time=self.flow_system.timesteps_extra) + # Always reindex solution to timesteps_extra for consistent behavior. + # Storage charge_state requires the extra timestep for the final state. + # Other variables will have NaN for the extra timestep, which is semantically + # correct (they have no value at that timestep). + if 'time' in solution.coords: + solution = solution.reindex(time=self.flow_system.timesteps_extra) + return solution @property def hours_per_step(self): From da68fc17b6ffa038a317b01f5967c4a1a2d3ca98 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:57:01 +0100 Subject: [PATCH 14/88] Update tests --- flixopt/structure.py | 19 +- pyproject.toml | 1 + tests/conftest.py | 7 +- tests/deprecated/__init__.py | 5 + tests/deprecated/conftest.py | 16 ++ tests/deprecated/test_optimization.py | 115 +++++++++++ tests/deprecated/test_results_io.py | 75 ++++++++ .../test_results_overwrite.py} | 8 +- tests/test_component.py | 11 +- tests/test_effect.py | 2 + tests/test_flow_system_resample.py | 2 + tests/test_functional.py | 24 +-- tests/test_integration.py | 182 +++++------------- tests/test_io.py | 42 +--- tests/test_scenarios.py | 133 ++++++------- tests/test_solution_persistence.py | 170 +++++----------- 16 files changed, 409 insertions(+), 403 deletions(-) create mode 100644 tests/deprecated/__init__.py create mode 100644 tests/deprecated/conftest.py create mode 100644 tests/deprecated/test_optimization.py create mode 100644 tests/deprecated/test_results_io.py rename tests/{test_overwrite_protection.py => deprecated/test_results_overwrite.py} (91%) diff --git a/flixopt/structure.py b/flixopt/structure.py index e415ac6dc..728c6f0af 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -188,12 +188,19 @@ def solution(self): for flow in sorted(self.flow_system.flows.values(), key=lambda flow: flow.label_full.upper()) }, } - # Always reindex solution to timesteps_extra for consistent behavior. - # Storage charge_state requires the extra timestep for the final state. - # Other variables will have NaN for the extra timestep, which is semantically - # correct (they have no value at that timestep). - if 'time' in solution.coords: - solution = solution.reindex(time=self.flow_system.timesteps_extra) + # Handle extra timestep from storage charge_state variables. + # Storage charge_state uses extra_timestep=True which causes linopy/xarray to + # merge all time coordinates to include the extra timestep with NaN for other vars. + # We extract the final charge state as separate variables and reindex to regular timesteps. + if 'time' in solution.coords and len(solution.coords['time']) > len(self.flow_system.timesteps): + # Find charge_state variables and extract final state + for var_name in list(solution.data_vars): + if var_name.endswith('|charge_state') and 'time' in solution[var_name].dims: + # Extract final charge state as separate variable + final_state = solution[var_name].isel(time=-1) + solution[f'{var_name}|final'] = final_state + # Reindex all variables to regular timesteps + solution = solution.reindex(time=self.flow_system.timesteps) return solution @property diff --git a/pyproject.toml b/pyproject.toml index 206283767..5b9800fb6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -187,6 +187,7 @@ keep-runtime-typing = false # Allow pyupgrade to drop runtime typing; prefer po markers = [ "slow: marks tests as slow", "examples: marks example tests (run only on releases)", + "deprecated_api: marks tests using deprecated Optimization/Results API (remove in v6.0.0)", ] addopts = '-m "not examples"' # Skip examples by default diff --git a/tests/conftest.py b/tests/conftest.py index 11d35f536..9d76097ee 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -724,11 +724,10 @@ def create_linopy_model(flow_system: fx.FlowSystem) -> FlowSystemModel: flow_system: The FlowSystem to build the model from. Returns: - FlowSystemModel: The built model from Optimization.do_modeling(). + FlowSystemModel: The built model from FlowSystem.build_model(). """ - optimization = fx.Optimization('GenericName', flow_system) - optimization.do_modeling() - return optimization.model + flow_system.build_model() + return flow_system.model def assert_conequal(actual: linopy.Constraint, desired: linopy.Constraint): diff --git a/tests/deprecated/__init__.py b/tests/deprecated/__init__.py new file mode 100644 index 000000000..7a05453a2 --- /dev/null +++ b/tests/deprecated/__init__.py @@ -0,0 +1,5 @@ +"""Tests for deprecated Optimization/Results API. + +This folder contains tests for the deprecated API that will be removed in v6.0.0. +Delete this entire folder when the deprecation cycle ends. +""" diff --git a/tests/deprecated/conftest.py b/tests/deprecated/conftest.py new file mode 100644 index 000000000..4ba1d13be --- /dev/null +++ b/tests/deprecated/conftest.py @@ -0,0 +1,16 @@ +"""Fixtures and configuration for deprecated API tests. + +This folder contains tests for the deprecated Optimization/Results API. +Delete this entire folder when deprecation cycle ends in v6.0.0. +""" + +import pytest + + +def pytest_collection_modifyitems(items): + """Apply markers to all tests in this folder.""" + for item in items: + # Only apply to tests in this folder + if 'deprecated' in str(item.fspath): + item.add_marker(pytest.mark.deprecated_api) + item.add_marker(pytest.mark.filterwarnings('ignore::DeprecationWarning')) diff --git a/tests/deprecated/test_optimization.py b/tests/deprecated/test_optimization.py new file mode 100644 index 000000000..3e797a3c4 --- /dev/null +++ b/tests/deprecated/test_optimization.py @@ -0,0 +1,115 @@ +"""Tests for deprecated Optimization classes. + +This module tests the deprecated Optimization, SegmentedOptimization, and +ClusteredOptimization classes. These tests will be removed in v6.0.0. + +For new tests, use FlowSystem.optimize(solver) instead. +""" + +import pytest + +import flixopt as fx + +from ..conftest import ( + assert_almost_equal_numeric, + create_optimization_and_solve, +) + + +class TestResultsPersistence: + """Test deprecated Results.to_file() and Results.from_file() API.""" + + def test_results_persistence(self, simple_flow_system, highs_solver): + """ + Test saving and loading results (tests deprecated Results API) + """ + # Save results to file + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') + + optimization.results.to_file(overwrite=True) + + # Load results from file + results = fx.results.Results.from_file(optimization.folder, optimization.name) + + # Verify key variables from loaded results + assert_almost_equal_numeric( + results.solution['costs'].values, + 81.88394666666667, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric(results.solution['CO2'].values, 255.09184, 'CO2 doesnt match expected value') + + +@pytest.mark.slow +class TestModelingTypes: + """Tests for deprecated Optimization classes (Optimization, SegmentedOptimization, ClusteredOptimization).""" + + @pytest.fixture(params=['full', 'segmented', 'aggregated']) + def modeling_calculation(self, request, flow_system_long, highs_solver): + """ + Fixture to run optimizations with different modeling types + """ + # Extract flow system and data from the fixture + flow_system = flow_system_long[0] + thermal_load_ts = flow_system_long[1]['thermal_load_ts'] + electrical_load_ts = flow_system_long[1]['electrical_load_ts'] + + # Create calculation based on modeling type + modeling_type = request.param + if modeling_type == 'full': + calc = fx.Optimization('fullModel', flow_system) + calc.do_modeling() + calc.solve(highs_solver) + elif modeling_type == 'segmented': + calc = fx.SegmentedOptimization('segModel', flow_system, timesteps_per_segment=96, overlap_timesteps=1) + calc.do_modeling_and_solve(highs_solver) + elif modeling_type == 'aggregated': + calc = fx.ClusteredOptimization( + 'aggModel', + flow_system, + fx.ClusteringParameters( + hours_per_period=6, + nr_of_periods=4, + fix_storage_flows=False, + aggregate_data_and_fix_non_binary_vars=True, + percentage_of_period_freedom=0, + penalty_of_period_freedom=0, + time_series_for_low_peaks=[electrical_load_ts, thermal_load_ts], + time_series_for_high_peaks=[thermal_load_ts], + ), + ) + calc.do_modeling() + calc.solve(highs_solver) + + return calc, modeling_type + + def test_modeling_types_costs(self, modeling_calculation): + """ + Test total costs for different modeling types + """ + calc, modeling_type = modeling_calculation + + expected_costs = { + 'full': 343613, + 'segmented': 343613, # Approximate value + 'aggregated': 342967.0, + } + + if modeling_type in ['full', 'aggregated']: + assert_almost_equal_numeric( + calc.results.model['costs'].solution.item(), + expected_costs[modeling_type], + f'costs do not match for {modeling_type} modeling type', + ) + else: + assert_almost_equal_numeric( + calc.results.solution_without_overlap('costs(temporal)|per_timestep').sum(), + expected_costs[modeling_type], + f'costs do not match for {modeling_type} modeling type', + ) + + def test_segmented_io(self, modeling_calculation): + calc, modeling_type = modeling_calculation + if modeling_type == 'segmented': + calc.results.to_file(overwrite=True) + _ = fx.results.SegmentedResults.from_file(calc.folder, calc.name) diff --git a/tests/deprecated/test_results_io.py b/tests/deprecated/test_results_io.py new file mode 100644 index 000000000..4cb536d15 --- /dev/null +++ b/tests/deprecated/test_results_io.py @@ -0,0 +1,75 @@ +"""Tests for deprecated Results I/O functionality. + +This module tests the deprecated Results.to_file() and Results.from_file() API. +These tests will be removed in v6.0.0. + +For new tests, use FlowSystem.solution.to_netcdf() instead. +""" + +import uuid + +import pytest + +import flixopt as fx +from flixopt.io import ResultsPaths + +from ..conftest import ( + assert_almost_equal_numeric, + flow_system_base, + flow_system_long, + flow_system_segments_of_flows_2, + simple_flow_system, + simple_flow_system_scenarios, +) + + +@pytest.fixture( + params=[ + flow_system_base, + simple_flow_system_scenarios, + flow_system_segments_of_flows_2, + simple_flow_system, + flow_system_long, + ] +) +def flow_system(request): + fs = request.getfixturevalue(request.param.__name__) + if isinstance(fs, fx.FlowSystem): + return fs + else: + return fs[0] + + +@pytest.mark.slow +def test_flow_system_file_io(flow_system, highs_solver, request): + """Test saving and loading flow system via deprecated Optimization/Results API.""" + # Use UUID to ensure unique names across parallel test workers + unique_id = uuid.uuid4().hex[:12] + worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') + test_id = f'{worker_id}-{unique_id}' + + calculation_0 = fx.Optimization(f'IO-{test_id}', flow_system=flow_system) + calculation_0.do_modeling() + calculation_0.solve(highs_solver) + calculation_0.flow_system.plot_network() + + calculation_0.results.to_file() + paths = ResultsPaths(calculation_0.folder, calculation_0.name) + flow_system_1 = fx.FlowSystem.from_netcdf(paths.flow_system) + + calculation_1 = fx.Optimization(f'Loaded_IO-{test_id}', flow_system=flow_system_1) + calculation_1.do_modeling() + calculation_1.solve(highs_solver) + calculation_1.flow_system.plot_network() + + assert_almost_equal_numeric( + calculation_0.results.model.objective.value, + calculation_1.results.model.objective.value, + 'objective of loaded flow_system doesnt match the original', + ) + + assert_almost_equal_numeric( + calculation_0.results.solution['costs'].values, + calculation_1.results.solution['costs'].values, + 'costs doesnt match expected value', + ) diff --git a/tests/test_overwrite_protection.py b/tests/deprecated/test_results_overwrite.py similarity index 91% rename from tests/test_overwrite_protection.py rename to tests/deprecated/test_results_overwrite.py index 4651f1a68..a43fd96d4 100644 --- a/tests/test_overwrite_protection.py +++ b/tests/deprecated/test_results_overwrite.py @@ -1,4 +1,10 @@ -"""Tests for Results.to_file() overwrite protection.""" +"""Tests for deprecated Results.to_file() overwrite protection. + +This module tests the deprecated Results.to_file() overwrite behavior. +These tests will be removed in v6.0.0. + +For new tests, use FlowSystem.solution.to_netcdf() instead. +""" import pathlib import tempfile diff --git a/tests/test_component.py b/tests/test_component.py index 41d39b12a..8cde784c9 100644 --- a/tests/test_component.py +++ b/tests/test_component.py @@ -10,7 +10,6 @@ assert_sets_equal, assert_var_equal, create_linopy_model, - create_optimization_and_solve, ) @@ -442,7 +441,7 @@ def test_transmission_basic(self, basic_flow_system, highs_solver): flow_system.add_elements(transmission, boiler) - _ = create_optimization_and_solve(flow_system, highs_solver, 'test_transmission_basic') + flow_system.optimize(highs_solver) # Assertions assert_almost_equal_numeric( @@ -506,7 +505,7 @@ def test_transmission_balanced(self, basic_flow_system, highs_solver): flow_system.add_elements(transmission, boiler, boiler2, last2) - optimization = create_optimization_and_solve(flow_system, highs_solver, 'test_transmission_advanced') + flow_system.optimize(highs_solver) # Assertions assert_almost_equal_numeric( @@ -516,7 +515,7 @@ def test_transmission_balanced(self, basic_flow_system, highs_solver): ) assert_almost_equal_numeric( - optimization.results.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, + flow_system.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, transmission.out1.submodel.flow_rate.solution.values, 'Flow rate of Rohr__Rohr1b is not correct', ) @@ -587,7 +586,7 @@ def test_transmission_unbalanced(self, basic_flow_system, highs_solver): flow_system.add_elements(transmission, boiler, boiler2, last2) - optimization = create_optimization_and_solve(flow_system, highs_solver, 'test_transmission_advanced') + flow_system.optimize(highs_solver) # Assertions assert_almost_equal_numeric( @@ -597,7 +596,7 @@ def test_transmission_unbalanced(self, basic_flow_system, highs_solver): ) assert_almost_equal_numeric( - optimization.results.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, + flow_system.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, transmission.out1.submodel.flow_rate.solution.values, 'Flow rate of Rohr__Rohr1b is not correct', ) diff --git a/tests/test_effect.py b/tests/test_effect.py index 33ce59f9e..10ae59bcc 100644 --- a/tests/test_effect.py +++ b/tests/test_effect.py @@ -1,4 +1,5 @@ import numpy as np +import pytest import xarray as xr import flixopt as fx @@ -224,6 +225,7 @@ def test_shares(self, basic_flow_system_linopy_coords, coords_config): class TestEffectResults: + @pytest.mark.filterwarnings('ignore::DeprecationWarning') def test_shares(self, basic_flow_system_linopy_coords, coords_config): flow_system, coords_config = basic_flow_system_linopy_coords, coords_config effect1 = fx.Effect('Effect1', '€', 'Testing Effect', share_from_temporal={'costs': 0.5}) diff --git a/tests/test_flow_system_resample.py b/tests/test_flow_system_resample.py index 9ddf4d5e4..076de4a2e 100644 --- a/tests/test_flow_system_resample.py +++ b/tests/test_flow_system_resample.py @@ -186,6 +186,7 @@ def test_invest_resample(complex_fs): # === Modeling Integration === +@pytest.mark.filterwarnings('ignore::DeprecationWarning') @pytest.mark.parametrize('with_dim', [None, 'periods', 'scenarios']) def test_modeling(with_dim): """Test resampled FlowSystem can be modeled.""" @@ -213,6 +214,7 @@ def test_modeling(with_dim): assert len(calc.model.variables) > 0 +@pytest.mark.filterwarnings('ignore::DeprecationWarning') def test_model_structure_preserved(): """Test model structure (var/constraint types) preserved.""" ts = pd.date_range('2023-01-01', periods=48, freq='h') diff --git a/tests/test_functional.py b/tests/test_functional.py index f351deef5..34d16819c 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -93,11 +93,10 @@ def flow_system_minimal(timesteps) -> fx.FlowSystem: return flow_system -def solve_and_load(flow_system: fx.FlowSystem, solver) -> fx.results.Results: - optimization = fx.Optimization('Calculation', flow_system) - optimization.do_modeling() - optimization.solve(solver) - return optimization.results +def solve_and_load(flow_system: fx.FlowSystem, solver) -> fx.FlowSystem: + """Optimize the flow system and return it with the solution.""" + flow_system.optimize(solver) + return flow_system @pytest.fixture @@ -106,30 +105,31 @@ def time_steps_fixture(request): def test_solve_and_load(solver_fixture, time_steps_fixture): - results = solve_and_load(flow_system_minimal(time_steps_fixture), solver_fixture) - assert results is not None + flow_system = solve_and_load(flow_system_minimal(time_steps_fixture), solver_fixture) + assert flow_system.solution is not None def test_minimal_model(solver_fixture, time_steps_fixture): - results = solve_and_load(flow_system_minimal(time_steps_fixture), solver_fixture) - assert_allclose(results.model.variables['costs'].solution.values, 80, rtol=1e-5, atol=1e-10) + flow_system = solve_and_load(flow_system_minimal(time_steps_fixture), solver_fixture) + + assert_allclose(flow_system.solution['costs'].values, 80, rtol=1e-5, atol=1e-10) assert_allclose( - results.model.variables['Boiler(Q_th)|flow_rate'].solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [-0.0, 10.0, 20.0, -0.0, 10.0], rtol=1e-5, atol=1e-10, ) assert_allclose( - results.model.variables['costs(temporal)|per_timestep'].solution.values, + flow_system.solution['costs(temporal)|per_timestep'].values, [-0.0, 20.0, 40.0, -0.0, 20.0], rtol=1e-5, atol=1e-10, ) assert_allclose( - results.model.variables['Gastarif(Gas)->costs(temporal)'].solution.values, + flow_system.solution['Gastarif(Gas)->costs(temporal)'].values, [-0.0, 20.0, 40.0, -0.0, 20.0], rtol=1e-5, atol=1e-10, diff --git a/tests/test_integration.py b/tests/test_integration.py index 35b2fa641..1717fe7dd 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,10 +1,7 @@ import pytest -import flixopt as fx - from .conftest import ( assert_almost_equal_numeric, - create_optimization_and_solve, ) @@ -13,9 +10,9 @@ def test_simple_flow_system(self, simple_flow_system, highs_solver): """ Test the effects of the simple energy system model """ - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_simple_flow_system') + simple_flow_system.optimize(highs_solver) - effects = optimization.flow_system.effects + effects = simple_flow_system.effects # Cost assertions assert_almost_equal_numeric( @@ -31,8 +28,8 @@ def test_model_components(self, simple_flow_system, highs_solver): """ Test the component flows of the simple energy system model """ - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') - comps = optimization.flow_system.components + simple_flow_system.optimize(highs_solver) + comps = simple_flow_system.components # Boiler assertions assert_almost_equal_numeric( @@ -48,40 +45,20 @@ def test_model_components(self, simple_flow_system, highs_solver): 'Q_th doesnt match expected value', ) - def test_results_persistence(self, simple_flow_system, highs_solver): - """ - Test saving and loading results - """ - # Save results to file - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') - - optimization.results.to_file() - - # Load results from file - results = fx.results.Results.from_file(optimization.folder, optimization.name) - - # Verify key variables from loaded results - assert_almost_equal_numeric( - results.solution['costs'].values, - 81.88394666666667, - 'costs doesnt match expected value', - ) - assert_almost_equal_numeric(results.solution['CO2'].values, 255.09184, 'CO2 doesnt match expected value') - class TestComplex: def test_basic_flow_system(self, flow_system_base, highs_solver): - optimization = create_optimization_and_solve(flow_system_base, highs_solver, 'test_basic_flow_system') + flow_system_base.optimize(highs_solver) - # Assertions + # Assertions using flow_system.solution (the new API) assert_almost_equal_numeric( - optimization.results.model['costs'].solution.item(), + flow_system_base.solution['costs'].item(), -11597.873624489237, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['costs(temporal)|per_timestep'].solution.values, + flow_system_base.solution['costs(temporal)|per_timestep'].values, [ -2.38500000e03, -2.21681333e03, @@ -97,66 +74,66 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): ) assert_almost_equal_numeric( - sum(optimization.results.model['CO2(temporal)->costs(temporal)'].solution.values), + flow_system_base.solution['CO2(temporal)->costs(temporal)'].sum().item(), 258.63729669618675, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Kessel(Q_th)->costs(temporal)'].solution.values), + flow_system_base.solution['Kessel(Q_th)->costs(temporal)'].sum().item(), 0.01, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Kessel->costs(temporal)'].solution.values), + flow_system_base.solution['Kessel->costs(temporal)'].sum().item(), -0.0, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Gastarif(Q_Gas)->costs(temporal)'].solution.values), + flow_system_base.solution['Gastarif(Q_Gas)->costs(temporal)'].sum().item(), 39.09153113079115, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Einspeisung(P_el)->costs(temporal)'].solution.values), + flow_system_base.solution['Einspeisung(P_el)->costs(temporal)'].sum().item(), -14196.61245231646, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['KWK->costs(temporal)'].solution.values), + flow_system_base.solution['KWK->costs(temporal)'].sum().item(), 0.0, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Kessel(Q_th)->costs(periodic)'].solution.values, + flow_system_base.solution['Kessel(Q_th)->costs(periodic)'].values, 1000 + 500, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Speicher->costs(periodic)'].solution.values, + flow_system_base.solution['Speicher->costs(periodic)'].values, 800 + 1, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['CO2(temporal)'].solution.values, + flow_system_base.solution['CO2(temporal)'].values, 1293.1864834809337, 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['CO2(periodic)'].solution.values, + flow_system_base.solution['CO2(periodic)'].values, 0.9999999999999994, 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Kessel(Q_th)|flow_rate'].solution.values, + flow_system_base.solution['Kessel(Q_th)|flow_rate'].values, [0, 0, 0, 45, 0, 0, 0, 0, 0], 'Kessel doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['KWK(Q_th)|flow_rate'].solution.values, + flow_system_base.solution['KWK(Q_th)|flow_rate'].values, [ 7.50000000e01, 6.97111111e01, @@ -171,7 +148,7 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): 'KWK Q_th doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['KWK(P_el)|flow_rate'].solution.values, + flow_system_base.solution['KWK(P_el)|flow_rate'].values, [ 6.00000000e01, 5.57688889e01, @@ -187,139 +164,70 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): ) assert_almost_equal_numeric( - optimization.results.model['Speicher|netto_discharge'].solution.values, + flow_system_base.solution['Speicher|netto_discharge'].values, [-45.0, -69.71111111, 15.0, -10.0, 36.06697198, -55.0, 20.0, 20.0, 20.0], 'Speicher nettoFlow doesnt match expected value', ) + # charge_state now has len(timesteps) values, with final state in separate variable assert_almost_equal_numeric( - optimization.results.model['Speicher|charge_state'].solution.values, - [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565, 10.0], - 'Speicher nettoFlow doesnt match expected value', + flow_system_base.solution['Speicher|charge_state'].values, + [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565], + 'Speicher charge_state doesnt match expected value', + ) + assert_almost_equal_numeric( + flow_system_base.solution['Speicher|charge_state|final'].values, + 10.0, + 'Speicher final charge_state doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Speicher|PiecewiseEffects|costs'].solution.values, + flow_system_base.solution['Speicher|PiecewiseEffects|costs'].values, 800, 'Speicher|PiecewiseEffects|costs doesnt match expected value', ) def test_piecewise_conversion(self, flow_system_piecewise_conversion, highs_solver): - optimization = create_optimization_and_solve( - flow_system_piecewise_conversion, highs_solver, 'test_piecewise_conversion' - ) - - effects = optimization.flow_system.effects - comps = optimization.flow_system.components + flow_system_piecewise_conversion.optimize(highs_solver) - # Compare expected values with actual values + # Compare expected values with actual values using new API assert_almost_equal_numeric( - effects['costs'].submodel.total.solution.item(), -10710.997365760755, 'costs doesnt match expected value' + flow_system_piecewise_conversion.solution['costs'].item(), + -10710.997365760755, + 'costs doesnt match expected value', ) assert_almost_equal_numeric( - effects['CO2'].submodel.total.solution.item(), 1278.7939026086956, 'CO2 doesnt match expected value' + flow_system_piecewise_conversion.solution['CO2'].item(), + 1278.7939026086956, + 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - comps['Kessel'].thermal_flow.submodel.flow_rate.solution.values, + flow_system_piecewise_conversion.solution['Kessel(Q_th)|flow_rate'].values, [0, 0, 0, 45, 0, 0, 0, 0, 0], 'Kessel doesnt match expected value', ) - kwk_flows = {flow.label: flow for flow in comps['KWK'].inputs + comps['KWK'].outputs} assert_almost_equal_numeric( - kwk_flows['Q_th'].submodel.flow_rate.solution.values, + flow_system_piecewise_conversion.solution['KWK(Q_th)|flow_rate'].values, [45.0, 45.0, 64.5962087, 100.0, 61.3136, 45.0, 45.0, 12.86469565, 0.0], 'KWK Q_th doesnt match expected value', ) assert_almost_equal_numeric( - kwk_flows['P_el'].submodel.flow_rate.solution.values, + flow_system_piecewise_conversion.solution['KWK(P_el)|flow_rate'].values, [40.0, 40.0, 47.12589407, 60.0, 45.93221818, 40.0, 40.0, 10.91784108, -0.0], 'KWK P_el doesnt match expected value', ) assert_almost_equal_numeric( - comps['Speicher'].submodel.netto_discharge.solution.values, + flow_system_piecewise_conversion.solution['Speicher|netto_discharge'].values, [-15.0, -45.0, 25.4037913, -35.0, 48.6864, -25.0, -25.0, 7.13530435, 20.0], 'Speicher nettoFlow doesnt match expected value', ) assert_almost_equal_numeric( - comps['Speicher'].submodel.variables['Speicher|PiecewiseEffects|costs'].solution.values, + flow_system_piecewise_conversion.solution['Speicher|PiecewiseEffects|costs'].values, 454.74666666666667, 'Speicher investcosts_segmented_costs doesnt match expected value', ) -@pytest.mark.slow -class TestModelingTypes: - @pytest.fixture(params=['full', 'segmented', 'aggregated']) - def modeling_calculation(self, request, flow_system_long, highs_solver): - """ - Fixture to run optimizations with different modeling types - """ - # Extract flow system and data from the fixture - flow_system = flow_system_long[0] - thermal_load_ts = flow_system_long[1]['thermal_load_ts'] - electrical_load_ts = flow_system_long[1]['electrical_load_ts'] - - # Create calculation based on modeling type - modeling_type = request.param - if modeling_type == 'full': - calc = fx.Optimization('fullModel', flow_system) - calc.do_modeling() - calc.solve(highs_solver) - elif modeling_type == 'segmented': - calc = fx.SegmentedOptimization('segModel', flow_system, timesteps_per_segment=96, overlap_timesteps=1) - calc.do_modeling_and_solve(highs_solver) - elif modeling_type == 'aggregated': - calc = fx.ClusteredOptimization( - 'aggModel', - flow_system, - fx.ClusteringParameters( - hours_per_period=6, - nr_of_periods=4, - fix_storage_flows=False, - aggregate_data_and_fix_non_binary_vars=True, - percentage_of_period_freedom=0, - penalty_of_period_freedom=0, - time_series_for_low_peaks=[electrical_load_ts, thermal_load_ts], - time_series_for_high_peaks=[thermal_load_ts], - ), - ) - calc.do_modeling() - calc.solve(highs_solver) - - return calc, modeling_type - - def test_modeling_types_costs(self, modeling_calculation): - """ - Test total costs for different modeling types - """ - calc, modeling_type = modeling_calculation - - expected_costs = { - 'full': 343613, - 'segmented': 343613, # Approximate value - 'aggregated': 342967.0, - } - - if modeling_type in ['full', 'aggregated']: - assert_almost_equal_numeric( - calc.results.model['costs'].solution.item(), - expected_costs[modeling_type], - f'costs do not match for {modeling_type} modeling type', - ) - else: - assert_almost_equal_numeric( - calc.results.solution_without_overlap('costs(temporal)|per_timestep').sum(), - expected_costs[modeling_type], - f'costs do not match for {modeling_type} modeling type', - ) - - def test_segmented_io(self, modeling_calculation): - calc, modeling_type = modeling_calculation - if modeling_type == 'segmented': - calc.results.to_file() - _ = fx.results.SegmentedResults.from_file(calc.folder, calc.name) - - if __name__ == '__main__': pytest.main(['-v']) diff --git a/tests/test_io.py b/tests/test_io.py index 9f54799b8..9a00549d7 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -1,12 +1,14 @@ -import uuid +"""Tests for I/O functionality. + +Tests for deprecated Results.to_file() and Results.from_file() API +have been moved to tests/deprecated/test_results_io.py. +""" import pytest import flixopt as fx -from flixopt.io import ResultsPaths from .conftest import ( - assert_almost_equal_numeric, flow_system_base, flow_system_long, flow_system_segments_of_flows_2, @@ -32,40 +34,6 @@ def flow_system(request): return fs[0] -@pytest.mark.slow -def test_flow_system_file_io(flow_system, highs_solver, request): - # Use UUID to ensure unique names across parallel test workers - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - test_id = f'{worker_id}-{unique_id}' - - calculation_0 = fx.Optimization(f'IO-{test_id}', flow_system=flow_system) - calculation_0.do_modeling() - calculation_0.solve(highs_solver) - calculation_0.flow_system.plot_network() - - calculation_0.results.to_file() - paths = ResultsPaths(calculation_0.folder, calculation_0.name) - flow_system_1 = fx.FlowSystem.from_netcdf(paths.flow_system) - - calculation_1 = fx.Optimization(f'Loaded_IO-{test_id}', flow_system=flow_system_1) - calculation_1.do_modeling() - calculation_1.solve(highs_solver) - calculation_1.flow_system.plot_network() - - assert_almost_equal_numeric( - calculation_0.results.model.objective.value, - calculation_1.results.model.objective.value, - 'objective of loaded flow_system doesnt match the original', - ) - - assert_almost_equal_numeric( - calculation_0.results.solution['costs'].values, - calculation_1.results.solution['costs'].values, - 'costs doesnt match expected value', - ) - - def test_flow_system_io(flow_system): flow_system.to_json('fs.json') diff --git a/tests/test_scenarios.py b/tests/test_scenarios.py index a5eb3d6a2..366429831 100644 --- a/tests/test_scenarios.py +++ b/tests/test_scenarios.py @@ -1,5 +1,3 @@ -import tempfile - import numpy as np import pandas as pd import pytest @@ -11,7 +9,7 @@ from flixopt.elements import Bus, Flow from flixopt.flow_system import FlowSystem -from .conftest import create_linopy_model, create_optimization_and_solve +from .conftest import create_linopy_model @pytest.fixture @@ -296,47 +294,39 @@ def test_full_scenario_optimization(flow_system_piecewise_conversion_scenarios): scenarios = flow_system_piecewise_conversion_scenarios.scenarios weights = np.linspace(0.5, 1, len(scenarios)) / np.sum(np.linspace(0.5, 1, len(scenarios))) flow_system_piecewise_conversion_scenarios.scenario_weights = weights - calc = create_optimization_and_solve( - flow_system_piecewise_conversion_scenarios, - solver=fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60), - name='test_full_scenario', - ) - calc.results.to_file() - res = fx.results.Results.from_file('results', 'test_full_scenario') - fx.FlowSystem.from_dataset(res.flow_system_data) - _ = create_optimization_and_solve( - flow_system_piecewise_conversion_scenarios, - solver=fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60), - name='test_full_scenario_2', - ) + # Optimize using new API + flow_system_piecewise_conversion_scenarios.optimize(fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60)) + + # Verify solution exists and has scenario dimension + assert flow_system_piecewise_conversion_scenarios.solution is not None + assert 'scenario' in flow_system_piecewise_conversion_scenarios.solution.dims @pytest.mark.skip(reason='This test is taking too long with highs and is too big for gurobipy free') -def test_io_persistence(flow_system_piecewise_conversion_scenarios): +def test_io_persistence(flow_system_piecewise_conversion_scenarios, tmp_path): """Test a full optimization with scenarios and verify results.""" scenarios = flow_system_piecewise_conversion_scenarios.scenarios weights = np.linspace(0.5, 1, len(scenarios)) / np.sum(np.linspace(0.5, 1, len(scenarios))) flow_system_piecewise_conversion_scenarios.scenario_weights = weights - calc = create_optimization_and_solve( - flow_system_piecewise_conversion_scenarios, - solver=fx.solvers.HighsSolver(mip_gap=0.001, time_limit_seconds=60), - name='test_io_persistence', - ) - calc.results.to_file() - res = fx.results.Results.from_file('results', 'test_io_persistence') - flow_system_2 = fx.FlowSystem.from_dataset(res.flow_system_data) - calc_2 = create_optimization_and_solve( - flow_system_2, - solver=fx.solvers.HighsSolver(mip_gap=0.001, time_limit_seconds=60), - name='test_io_persistence_2', - ) + # Optimize using new API + flow_system_piecewise_conversion_scenarios.optimize(fx.solvers.HighsSolver(mip_gap=0.001, time_limit_seconds=60)) + original_objective = flow_system_piecewise_conversion_scenarios.solution['objective'].item() + + # Save and restore + filepath = tmp_path / 'flow_system_scenarios.nc4' + flow_system_piecewise_conversion_scenarios.to_netcdf(filepath) + flow_system_2 = fx.FlowSystem.from_netcdf(filepath) - np.testing.assert_allclose(calc.results.objective, calc_2.results.objective, rtol=0.001) + # Re-optimize restored flow system + flow_system_2.optimize(fx.solvers.HighsSolver(mip_gap=0.001, time_limit_seconds=60)) + + np.testing.assert_allclose(original_objective, flow_system_2.solution['objective'].item(), rtol=0.001) def test_scenarios_selection(flow_system_piecewise_conversion_scenarios): + """Test scenario selection/subsetting functionality.""" flow_system_full = flow_system_piecewise_conversion_scenarios scenarios = flow_system_full.scenarios scenario_weights = np.linspace(0.5, 1, len(scenarios)) / np.sum(np.linspace(0.5, 1, len(scenarios))) @@ -347,22 +337,22 @@ def test_scenarios_selection(flow_system_piecewise_conversion_scenarios): np.testing.assert_allclose(flow_system.scenario_weights.values, flow_system_full.scenario_weights[0:2]) - calc = fx.Optimization(flow_system=flow_system, name='test_scenarios_selection', normalize_weights=False) - calc.do_modeling() - calc.solve(fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60)) - - calc.results.to_file() + # Optimize using new API with normalize_weights=False + flow_system.optimize( + fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60), + normalize_weights=False, + ) # Penalty has same structure as other effects: 'Penalty' is the total, 'Penalty(temporal)' and 'Penalty(periodic)' are components np.testing.assert_allclose( - calc.results.objective, + flow_system.solution['objective'].item(), ( - (calc.results.solution['costs'] * flow_system.scenario_weights).sum() - + (calc.results.solution['Penalty'] * flow_system.scenario_weights).sum() + (flow_system.solution['costs'] * flow_system.scenario_weights).sum() + + (flow_system.solution['Penalty'] * flow_system.scenario_weights).sum() ).item(), ) ## Account for rounding errors - assert calc.results.solution.indexes['scenario'].equals(flow_system_full.scenarios[0:2]) + assert flow_system.solution.indexes['scenario'].equals(flow_system_full.scenarios[0:2]) def test_sizes_per_scenario_default(): @@ -496,11 +486,10 @@ def test_size_equality_constraints(): fs.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) - calc = fx.Optimization('test', fs) - calc.do_modeling() + fs.build_model() # Check that size equality constraint exists - constraint_names = [str(c) for c in calc.model.constraints] + constraint_names = [str(c) for c in fs.model.constraints] size_constraints = [c for c in constraint_names if 'scenario_independent' in c and 'size' in c] assert len(size_constraints) > 0, 'Size equality constraint should exist' @@ -536,11 +525,10 @@ def test_flow_rate_equality_constraints(): fs.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) - calc = fx.Optimization('test', fs) - calc.do_modeling() + fs.build_model() # Check that flow_rate equality constraint exists - constraint_names = [str(c) for c in calc.model.constraints] + constraint_names = [str(c) for c in fs.model.constraints] flow_rate_constraints = [c for c in constraint_names if 'scenario_independent' in c and 'flow_rate' in c] assert len(flow_rate_constraints) > 0, 'Flow rate equality constraint should exist' @@ -578,10 +566,9 @@ def test_selective_scenario_independence(): fs.add_elements(bus, source, sink, fx.Effect('cost', 'Total cost', '€', is_objective=True)) - calc = fx.Optimization('test', fs) - calc.do_modeling() + fs.build_model() - constraint_names = [str(c) for c in calc.model.constraints] + constraint_names = [str(c) for c in fs.model.constraints] # Solar SHOULD have size constraints (it's in the list, so equalized) solar_size_constraints = [c for c in constraint_names if 'solar(out)|size' in c and 'scenario_independent' in c] @@ -646,10 +633,8 @@ def test_scenario_parameters_io_persistence(): assert fs_loaded.scenario_independent_flow_rates == fs_original.scenario_independent_flow_rates -def test_scenario_parameters_io_with_calculation(): +def test_scenario_parameters_io_with_calculation(tmp_path): """Test that scenario parameters persist through full calculation IO.""" - import shutil - timesteps = pd.date_range('2023-01-01', periods=24, freq='h') scenarios = pd.Index(['base', 'high'], name='scenario') @@ -680,39 +665,29 @@ def test_scenario_parameters_io_with_calculation(): fs.add_elements(bus, source, sink, fx.Effect('cost', 'Total cost', '€', is_objective=True)) - # Create temp directory for results - temp_dir = tempfile.mkdtemp() + # Solve using new API + fs.optimize(fx.solvers.HighsSolver(mip_gap=0.01, time_limit_seconds=60)) + original_model = fs.model - try: - # Solve and save - calc = fx.Optimization('test_io', fs, folder=temp_dir) - calc.do_modeling() - calc.solve(fx.solvers.HighsSolver(mip_gap=0.01, time_limit_seconds=60)) - calc.results.to_file() + # Save and restore + filepath = tmp_path / 'flow_system_scenarios.nc4' + fs.to_netcdf(filepath) + fs_loaded = fx.FlowSystem.from_netcdf(filepath) - # Load results - results = fx.results.Results.from_file(temp_dir, 'test_io') - fs_loaded = fx.FlowSystem.from_dataset(results.flow_system_data) - - # Verify parameters persisted - assert fs_loaded.scenario_independent_sizes == fs.scenario_independent_sizes - assert fs_loaded.scenario_independent_flow_rates == fs.scenario_independent_flow_rates - - # Verify constraints are recreated correctly - calc2 = fx.Optimization('test_io_2', fs_loaded, folder=temp_dir) - calc2.do_modeling() + # Verify parameters persisted + assert fs_loaded.scenario_independent_sizes == fs.scenario_independent_sizes + assert fs_loaded.scenario_independent_flow_rates == fs.scenario_independent_flow_rates - constraint_names1 = [str(c) for c in calc.model.constraints] - constraint_names2 = [str(c) for c in calc2.model.constraints] + # Verify constraints are recreated correctly when building model + fs_loaded.build_model() - size_constraints1 = [c for c in constraint_names1 if 'scenario_independent' in c and 'size' in c] - size_constraints2 = [c for c in constraint_names2 if 'scenario_independent' in c and 'size' in c] + constraint_names1 = [str(c) for c in original_model.constraints] + constraint_names2 = [str(c) for c in fs_loaded.model.constraints] - assert len(size_constraints1) == len(size_constraints2) + size_constraints1 = [c for c in constraint_names1 if 'scenario_independent' in c and 'size' in c] + size_constraints2 = [c for c in constraint_names2 if 'scenario_independent' in c and 'size' in c] - finally: - # Clean up - shutil.rmtree(temp_dir) + assert len(size_constraints1) == len(size_constraints2) def test_weights_io_persistence(): diff --git a/tests/test_solution_persistence.py b/tests/test_solution_persistence.py index 79a2a52d9..2bb101df5 100644 --- a/tests/test_solution_persistence.py +++ b/tests/test_solution_persistence.py @@ -7,8 +7,6 @@ - Serialization/deserialization of solution with FlowSystem """ -import uuid - import pytest import xarray as xr @@ -50,18 +48,14 @@ def test_solution_none_before_solve(self, simple_flow_system): def test_solution_set_after_solve(self, simple_flow_system, highs_solver): """FlowSystem.solution should be set after solve().""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) + simple_flow_system.optimize(highs_solver) assert simple_flow_system.solution is not None assert isinstance(simple_flow_system.solution, xr.Dataset) def test_solution_contains_all_variables(self, simple_flow_system, highs_solver): """FlowSystem.solution should contain all model variables.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) + simple_flow_system.optimize(highs_solver) # Solution should have variables assert len(simple_flow_system.solution.data_vars) > 0 @@ -72,23 +66,6 @@ def test_solution_contains_all_variables(self, simple_flow_system, highs_solver) assert any('flow_rate' in v for v in solution_vars) assert any('costs' in v for v in solution_vars) - def test_solution_matches_results(self, simple_flow_system, highs_solver): - """FlowSystem.solution should match results.solution.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) - - # The solution on flow_system should be the same as from results - fs_solution = simple_flow_system.solution - results_solution = calc.results.solution - - # Check they have the same variables - assert set(fs_solution.data_vars.keys()) == set(results_solution.data_vars.keys()) - - # Check values match - for var_name in fs_solution.data_vars: - xr.testing.assert_equal(fs_solution[var_name], results_solution[var_name]) - class TestSolutionOnElement: """Tests for Element.solution property.""" @@ -108,10 +85,7 @@ def test_element_solution_raises_before_solve(self, simple_flow_system): def test_element_solution_raises_before_modeling(self, simple_flow_system, highs_solver): """Element.solution should work after modeling and solve.""" - # We need to add a new element after modeling to test this edge case - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) + simple_flow_system.optimize(highs_solver) # Create a new element not in the flow system - this is a special case # The actual elements in the flow system should work fine @@ -122,9 +96,7 @@ def test_element_solution_raises_before_modeling(self, simple_flow_system, highs def test_element_solution_contains_element_variables(self, simple_flow_system, highs_solver): """Element.solution should contain only that element's variables.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) + simple_flow_system.optimize(highs_solver) boiler = simple_flow_system.components['Boiler'] boiler_solution = boiler.solution @@ -135,9 +107,7 @@ def test_element_solution_contains_element_variables(self, simple_flow_system, h def test_different_elements_have_different_solutions(self, simple_flow_system, highs_solver): """Different elements should have different solution subsets.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) + simple_flow_system.optimize(highs_solver) boiler = simple_flow_system.components['Boiler'] chp = simple_flow_system.components['CHP_unit'] @@ -161,16 +131,14 @@ def test_variable_names_empty_before_modeling(self, simple_flow_system): def test_variable_names_populated_after_modeling(self, simple_flow_system, highs_solver): """Element._variable_names should be populated after modeling.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() + simple_flow_system.build_model() boiler = simple_flow_system.components['Boiler'] assert len(boiler._variable_names) > 0 def test_constraint_names_populated_after_modeling(self, simple_flow_system, highs_solver): """Element._constraint_names should be populated after modeling.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() + simple_flow_system.build_model() boiler = simple_flow_system.components['Boiler'] # Boiler should have some constraints @@ -178,8 +146,7 @@ def test_constraint_names_populated_after_modeling(self, simple_flow_system, hig def test_all_elements_have_variable_names(self, simple_flow_system, highs_solver): """All elements with submodels should have _variable_names populated.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() + simple_flow_system.build_model() for element in simple_flow_system.values(): if element.submodel is not None: @@ -191,14 +158,9 @@ class TestSolutionPersistence: """Tests for solution serialization/deserialization with FlowSystem.""" @pytest.mark.slow - def test_solution_persisted_in_dataset(self, flow_system, highs_solver, request): + def test_solution_persisted_in_dataset(self, flow_system, highs_solver): """Solution should be included when saving FlowSystem to dataset.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'persist-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) + flow_system.optimize(highs_solver) # Save to dataset ds = flow_system.to_dataset() @@ -211,14 +173,9 @@ def test_solution_persisted_in_dataset(self, flow_system, highs_solver, request) assert ds.attrs.get('has_solution', False) is True @pytest.mark.slow - def test_solution_restored_from_dataset(self, flow_system, highs_solver, request): + def test_solution_restored_from_dataset(self, flow_system, highs_solver): """Solution should be restored when loading FlowSystem from dataset.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'restore-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) + flow_system.optimize(highs_solver) # Save and restore ds = flow_system.to_dataset() @@ -232,14 +189,9 @@ def test_solution_restored_from_dataset(self, flow_system, highs_solver, request assert len(restored_fs.solution.data_vars) == len(flow_system.solution.data_vars) @pytest.mark.slow - def test_solution_values_match_after_restore(self, flow_system, highs_solver, request): + def test_solution_values_match_after_restore(self, flow_system, highs_solver): """Solution values should match after save/restore cycle.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'values-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) + flow_system.optimize(highs_solver) original_solution = flow_system.solution.copy(deep=True) @@ -255,14 +207,9 @@ def test_solution_values_match_after_restore(self, flow_system, highs_solver, re ) @pytest.mark.slow - def test_element_solution_works_after_restore(self, flow_system, highs_solver, request): + def test_element_solution_works_after_restore(self, flow_system, highs_solver): """Element.solution should work on restored FlowSystem.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'element-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) + flow_system.optimize(highs_solver) # Get an element and its solution element_label = list(flow_system.components.keys())[0] @@ -287,14 +234,9 @@ def test_element_solution_works_after_restore(self, flow_system, highs_solver, r ) @pytest.mark.slow - def test_variable_names_persisted(self, flow_system, highs_solver, request): + def test_variable_names_persisted(self, flow_system, highs_solver): """Element._variable_names should be persisted and restored.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'varnames-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) + flow_system.optimize(highs_solver) # Get original variable names element_label = list(flow_system.components.keys())[0] @@ -316,14 +258,9 @@ class TestFlowSystemFileIO: """Tests for file-based persistence of FlowSystem with solution.""" @pytest.mark.slow - def test_netcdf_roundtrip_with_solution(self, flow_system, highs_solver, tmp_path, request): + def test_netcdf_roundtrip_with_solution(self, flow_system, highs_solver, tmp_path): """FlowSystem with solution should survive netCDF roundtrip.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'netcdf-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) + flow_system.optimize(highs_solver) original_solution = flow_system.solution.copy(deep=True) @@ -345,15 +282,10 @@ def test_netcdf_roundtrip_with_solution(self, flow_system, highs_solver, tmp_pat ) @pytest.mark.slow - def test_loaded_flow_system_can_be_reoptimized(self, flow_system, highs_solver, tmp_path, request): + def test_loaded_flow_system_can_be_reoptimized(self, flow_system, highs_solver, tmp_path): """Loaded FlowSystem should be able to run new optimization.""" - unique_id = uuid.uuid4().hex[:12] - worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') - - calc = fx.Optimization(f'reopt-{worker_id}-{unique_id}', flow_system=flow_system) - calc.do_modeling() - calc.solve(highs_solver) - original_objective = calc.results.model.objective.value + flow_system.optimize(highs_solver) + original_objective = flow_system.solution['objective'].item() # Save and load filepath = tmp_path / 'flow_system_for_reopt.nc4' @@ -361,14 +293,12 @@ def test_loaded_flow_system_can_be_reoptimized(self, flow_system, highs_solver, restored_fs = fx.FlowSystem.from_netcdf(filepath) # Run new optimization - calc2 = fx.Optimization(f'reopt2-{worker_id}-{unique_id}', flow_system=restored_fs) - calc2.do_modeling() - calc2.solve(highs_solver) + restored_fs.optimize(highs_solver) # Should get same objective value assert_almost_equal_numeric( original_objective, - calc2.results.model.objective.value, + restored_fs.solution['objective'].item(), 'Objective mismatch after reload', ) @@ -393,9 +323,7 @@ def test_loaded_flow_system_without_solution_can_optimize(self, simple_flow_syst ds = simple_flow_system.to_dataset() restored_fs = fx.FlowSystem.from_dataset(ds) - calc = fx.Optimization('test', flow_system=restored_fs) - calc.do_modeling() - calc.solve(highs_solver) + restored_fs.optimize(highs_solver) # Should have solution now assert restored_fs.solution is not None @@ -406,9 +334,7 @@ class TestEdgeCases: def test_empty_variable_names_handled(self, simple_flow_system, highs_solver): """Elements with no variables should be handled gracefully.""" - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) + simple_flow_system.optimize(highs_solver) # Buses typically have no variables of their own in some configurations for bus in simple_flow_system.buses.values(): @@ -419,16 +345,20 @@ def test_empty_variable_names_handled(self, simple_flow_system, highs_solver): def test_solution_cleared_on_new_optimization(self, simple_flow_system, highs_solver): """New optimization should update solution, not accumulate.""" - calc1 = fx.Optimization('test1', flow_system=simple_flow_system) - calc1.do_modeling() - calc1.solve(highs_solver) + simple_flow_system.optimize(highs_solver) first_solution_vars = set(simple_flow_system.solution.data_vars.keys()) - # Re-optimize (same system) - calc2 = fx.Optimization('test2', flow_system=simple_flow_system) - calc2.do_modeling() - calc2.solve(highs_solver) + # Reset for re-optimization + simple_flow_system.model = None + simple_flow_system.solution = None + for element in simple_flow_system.values(): + element._variable_names = [] + element._constraint_names = [] + element.submodel = None + + # Re-optimize + simple_flow_system.optimize(highs_solver) second_solution_vars = set(simple_flow_system.solution.data_vars.keys()) @@ -537,15 +467,13 @@ def test_element_solution_after_optimize(self, simple_flow_system, highs_solver) for var_name in boiler_solution.data_vars: assert var_name.startswith(boiler.label_full) - def test_direct_methods_match_optimization_class(self, simple_flow_system, highs_solver): - """Direct methods should produce same results as Optimization class.""" - # Use Optimization class first - calc = fx.Optimization('test', flow_system=simple_flow_system) - calc.do_modeling() - calc.solve(highs_solver) - optimization_solution = simple_flow_system.solution.copy(deep=True) + def test_repeated_optimization_produces_consistent_results(self, simple_flow_system, highs_solver): + """Repeated optimization should produce consistent results.""" + # First optimization + simple_flow_system.optimize(highs_solver) + first_solution = simple_flow_system.solution.copy(deep=True) - # Reset for direct methods test + # Reset for re-optimization simple_flow_system.model = None simple_flow_system.solution = None for element in simple_flow_system.values(): @@ -553,16 +481,16 @@ def test_direct_methods_match_optimization_class(self, simple_flow_system, highs element._constraint_names = [] element.submodel = None - # Use direct methods + # Second optimization simple_flow_system.optimize(highs_solver) # Solutions should match - assert set(optimization_solution.data_vars.keys()) == set(simple_flow_system.solution.data_vars.keys()) + assert set(first_solution.data_vars.keys()) == set(simple_flow_system.solution.data_vars.keys()) - # Values should be very close (same optimization) - for var_name in optimization_solution.data_vars: + # Values should be very close (same optimization problem) + for var_name in first_solution.data_vars: xr.testing.assert_allclose( - optimization_solution[var_name], + first_solution[var_name], simple_flow_system.solution[var_name], rtol=1e-5, ) From 5df8a644e55983d78780790d6e152a31679f240f Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:48:50 +0100 Subject: [PATCH 15/88] Update tests --- tests/deprecated/test_optimization.py | 115 --------------------- tests/deprecated/test_results_io.py | 7 +- tests/deprecated/test_results_overwrite.py | 8 +- 3 files changed, 7 insertions(+), 123 deletions(-) delete mode 100644 tests/deprecated/test_optimization.py diff --git a/tests/deprecated/test_optimization.py b/tests/deprecated/test_optimization.py deleted file mode 100644 index 3e797a3c4..000000000 --- a/tests/deprecated/test_optimization.py +++ /dev/null @@ -1,115 +0,0 @@ -"""Tests for deprecated Optimization classes. - -This module tests the deprecated Optimization, SegmentedOptimization, and -ClusteredOptimization classes. These tests will be removed in v6.0.0. - -For new tests, use FlowSystem.optimize(solver) instead. -""" - -import pytest - -import flixopt as fx - -from ..conftest import ( - assert_almost_equal_numeric, - create_optimization_and_solve, -) - - -class TestResultsPersistence: - """Test deprecated Results.to_file() and Results.from_file() API.""" - - def test_results_persistence(self, simple_flow_system, highs_solver): - """ - Test saving and loading results (tests deprecated Results API) - """ - # Save results to file - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') - - optimization.results.to_file(overwrite=True) - - # Load results from file - results = fx.results.Results.from_file(optimization.folder, optimization.name) - - # Verify key variables from loaded results - assert_almost_equal_numeric( - results.solution['costs'].values, - 81.88394666666667, - 'costs doesnt match expected value', - ) - assert_almost_equal_numeric(results.solution['CO2'].values, 255.09184, 'CO2 doesnt match expected value') - - -@pytest.mark.slow -class TestModelingTypes: - """Tests for deprecated Optimization classes (Optimization, SegmentedOptimization, ClusteredOptimization).""" - - @pytest.fixture(params=['full', 'segmented', 'aggregated']) - def modeling_calculation(self, request, flow_system_long, highs_solver): - """ - Fixture to run optimizations with different modeling types - """ - # Extract flow system and data from the fixture - flow_system = flow_system_long[0] - thermal_load_ts = flow_system_long[1]['thermal_load_ts'] - electrical_load_ts = flow_system_long[1]['electrical_load_ts'] - - # Create calculation based on modeling type - modeling_type = request.param - if modeling_type == 'full': - calc = fx.Optimization('fullModel', flow_system) - calc.do_modeling() - calc.solve(highs_solver) - elif modeling_type == 'segmented': - calc = fx.SegmentedOptimization('segModel', flow_system, timesteps_per_segment=96, overlap_timesteps=1) - calc.do_modeling_and_solve(highs_solver) - elif modeling_type == 'aggregated': - calc = fx.ClusteredOptimization( - 'aggModel', - flow_system, - fx.ClusteringParameters( - hours_per_period=6, - nr_of_periods=4, - fix_storage_flows=False, - aggregate_data_and_fix_non_binary_vars=True, - percentage_of_period_freedom=0, - penalty_of_period_freedom=0, - time_series_for_low_peaks=[electrical_load_ts, thermal_load_ts], - time_series_for_high_peaks=[thermal_load_ts], - ), - ) - calc.do_modeling() - calc.solve(highs_solver) - - return calc, modeling_type - - def test_modeling_types_costs(self, modeling_calculation): - """ - Test total costs for different modeling types - """ - calc, modeling_type = modeling_calculation - - expected_costs = { - 'full': 343613, - 'segmented': 343613, # Approximate value - 'aggregated': 342967.0, - } - - if modeling_type in ['full', 'aggregated']: - assert_almost_equal_numeric( - calc.results.model['costs'].solution.item(), - expected_costs[modeling_type], - f'costs do not match for {modeling_type} modeling type', - ) - else: - assert_almost_equal_numeric( - calc.results.solution_without_overlap('costs(temporal)|per_timestep').sum(), - expected_costs[modeling_type], - f'costs do not match for {modeling_type} modeling type', - ) - - def test_segmented_io(self, modeling_calculation): - calc, modeling_type = modeling_calculation - if modeling_type == 'segmented': - calc.results.to_file(overwrite=True) - _ = fx.results.SegmentedResults.from_file(calc.folder, calc.name) diff --git a/tests/deprecated/test_results_io.py b/tests/deprecated/test_results_io.py index 4cb536d15..a42ca542b 100644 --- a/tests/deprecated/test_results_io.py +++ b/tests/deprecated/test_results_io.py @@ -1,7 +1,7 @@ -"""Tests for deprecated Results I/O functionality. +"""Tests for deprecated Results I/O functionality - ported from feature/v5. -This module tests the deprecated Results.to_file() and Results.from_file() API. -These tests will be removed in v6.0.0. +This module contains the original test_flow_system_file_io test from feature/v5 +that uses the deprecated Optimization/Results API. This test will be removed in v6.0.0. For new tests, use FlowSystem.solution.to_netcdf() instead. """ @@ -42,7 +42,6 @@ def flow_system(request): @pytest.mark.slow def test_flow_system_file_io(flow_system, highs_solver, request): - """Test saving and loading flow system via deprecated Optimization/Results API.""" # Use UUID to ensure unique names across parallel test workers unique_id = uuid.uuid4().hex[:12] worker_id = getattr(request.config, 'workerinput', {}).get('workerid', 'main') diff --git a/tests/deprecated/test_results_overwrite.py b/tests/deprecated/test_results_overwrite.py index a43fd96d4..731368e78 100644 --- a/tests/deprecated/test_results_overwrite.py +++ b/tests/deprecated/test_results_overwrite.py @@ -1,9 +1,9 @@ -"""Tests for deprecated Results.to_file() overwrite protection. +"""Tests for deprecated Results.to_file() overwrite protection - ported from feature/v5. -This module tests the deprecated Results.to_file() overwrite behavior. -These tests will be removed in v6.0.0. +This module contains the original overwrite protection tests from feature/v5 +that use the deprecated Optimization/Results API. These tests will be removed in v6.0.0. -For new tests, use FlowSystem.solution.to_netcdf() instead. +For new tests, use FlowSystem.to_netcdf() instead. """ import pathlib From 9fe1ad4d85a56477d2b0fea877f0ea8259e3b7f3 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:53:13 +0100 Subject: [PATCH 16/88] Update tests --- tests/deprecated/test_integration.py | 333 +++++++++++++++++++++++++++ 1 file changed, 333 insertions(+) create mode 100644 tests/deprecated/test_integration.py diff --git a/tests/deprecated/test_integration.py b/tests/deprecated/test_integration.py new file mode 100644 index 000000000..2f083b4fb --- /dev/null +++ b/tests/deprecated/test_integration.py @@ -0,0 +1,333 @@ +"""Tests for deprecated Optimization/Results API - ported from feature/v5. + +This module contains the original integration tests from feature/v5 that use the +deprecated Optimization class. These tests will be removed in v6.0.0. + +For new tests, use FlowSystem.optimize(solver) instead. +""" + +import pytest + +import flixopt as fx + +from ..conftest import ( + assert_almost_equal_numeric, + create_optimization_and_solve, +) + + +class TestFlowSystem: + def test_simple_flow_system(self, simple_flow_system, highs_solver): + """ + Test the effects of the simple energy system model + """ + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_simple_flow_system') + + effects = optimization.flow_system.effects + + # Cost assertions + assert_almost_equal_numeric( + effects['costs'].submodel.total.solution.item(), 81.88394666666667, 'costs doesnt match expected value' + ) + + # CO2 assertions + assert_almost_equal_numeric( + effects['CO2'].submodel.total.solution.item(), 255.09184, 'CO2 doesnt match expected value' + ) + + def test_model_components(self, simple_flow_system, highs_solver): + """ + Test the component flows of the simple energy system model + """ + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') + comps = optimization.flow_system.components + + # Boiler assertions + assert_almost_equal_numeric( + comps['Boiler'].thermal_flow.submodel.flow_rate.solution.values, + [0, 0, 0, 28.4864, 35, 0, 0, 0, 0], + 'Q_th doesnt match expected value', + ) + + # CHP unit assertions + assert_almost_equal_numeric( + comps['CHP_unit'].thermal_flow.submodel.flow_rate.solution.values, + [30.0, 26.66666667, 75.0, 75.0, 75.0, 20.0, 20.0, 20.0, 20.0], + 'Q_th doesnt match expected value', + ) + + def test_results_persistence(self, simple_flow_system, highs_solver): + """ + Test saving and loading results + """ + # Save results to file + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') + + optimization.results.to_file(overwrite=True) + + # Load results from file + results = fx.results.Results.from_file(optimization.folder, optimization.name) + + # Verify key variables from loaded results + assert_almost_equal_numeric( + results.solution['costs'].values, + 81.88394666666667, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric(results.solution['CO2'].values, 255.09184, 'CO2 doesnt match expected value') + + +class TestComplex: + def test_basic_flow_system(self, flow_system_base, highs_solver): + optimization = create_optimization_and_solve(flow_system_base, highs_solver, 'test_basic_flow_system') + + # Assertions + assert_almost_equal_numeric( + optimization.results.model['costs'].solution.item(), + -11597.873624489237, + 'costs doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['costs(temporal)|per_timestep'].solution.values, + [ + -2.38500000e03, + -2.21681333e03, + -2.38500000e03, + -2.17599000e03, + -2.35107029e03, + -2.38500000e03, + 0.00000000e00, + -1.68897826e-10, + -2.16914486e-12, + ], + 'costs doesnt match expected value', + ) + + assert_almost_equal_numeric( + sum(optimization.results.model['CO2(temporal)->costs(temporal)'].solution.values), + 258.63729669618675, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric( + sum(optimization.results.model['Kessel(Q_th)->costs(temporal)'].solution.values), + 0.01, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric( + sum(optimization.results.model['Kessel->costs(temporal)'].solution.values), + -0.0, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric( + sum(optimization.results.model['Gastarif(Q_Gas)->costs(temporal)'].solution.values), + 39.09153113079115, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric( + sum(optimization.results.model['Einspeisung(P_el)->costs(temporal)'].solution.values), + -14196.61245231646, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric( + sum(optimization.results.model['KWK->costs(temporal)'].solution.values), + 0.0, + 'costs doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['Kessel(Q_th)->costs(periodic)'].solution.values, + 1000 + 500, + 'costs doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['Speicher->costs(periodic)'].solution.values, + 800 + 1, + 'costs doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['CO2(temporal)'].solution.values, + 1293.1864834809337, + 'CO2 doesnt match expected value', + ) + assert_almost_equal_numeric( + optimization.results.model['CO2(periodic)'].solution.values, + 0.9999999999999994, + 'CO2 doesnt match expected value', + ) + assert_almost_equal_numeric( + optimization.results.model['Kessel(Q_th)|flow_rate'].solution.values, + [0, 0, 0, 45, 0, 0, 0, 0, 0], + 'Kessel doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['KWK(Q_th)|flow_rate'].solution.values, + [ + 7.50000000e01, + 6.97111111e01, + 7.50000000e01, + 7.50000000e01, + 7.39330280e01, + 7.50000000e01, + 0.00000000e00, + 3.12638804e-14, + 3.83693077e-14, + ], + 'KWK Q_th doesnt match expected value', + ) + assert_almost_equal_numeric( + optimization.results.model['KWK(P_el)|flow_rate'].solution.values, + [ + 6.00000000e01, + 5.57688889e01, + 6.00000000e01, + 6.00000000e01, + 5.91464224e01, + 6.00000000e01, + 0.00000000e00, + 2.50111043e-14, + 3.06954462e-14, + ], + 'KWK P_el doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['Speicher|netto_discharge'].solution.values, + [-45.0, -69.71111111, 15.0, -10.0, 36.06697198, -55.0, 20.0, 20.0, 20.0], + 'Speicher nettoFlow doesnt match expected value', + ) + assert_almost_equal_numeric( + optimization.results.model['Speicher|charge_state'].solution.values, + [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565, 10.0], + 'Speicher nettoFlow doesnt match expected value', + ) + + assert_almost_equal_numeric( + optimization.results.model['Speicher|PiecewiseEffects|costs'].solution.values, + 800, + 'Speicher|PiecewiseEffects|costs doesnt match expected value', + ) + + def test_piecewise_conversion(self, flow_system_piecewise_conversion, highs_solver): + optimization = create_optimization_and_solve( + flow_system_piecewise_conversion, highs_solver, 'test_piecewise_conversion' + ) + + effects = optimization.flow_system.effects + comps = optimization.flow_system.components + + # Compare expected values with actual values + assert_almost_equal_numeric( + effects['costs'].submodel.total.solution.item(), -10710.997365760755, 'costs doesnt match expected value' + ) + assert_almost_equal_numeric( + effects['CO2'].submodel.total.solution.item(), 1278.7939026086956, 'CO2 doesnt match expected value' + ) + assert_almost_equal_numeric( + comps['Kessel'].thermal_flow.submodel.flow_rate.solution.values, + [0, 0, 0, 45, 0, 0, 0, 0, 0], + 'Kessel doesnt match expected value', + ) + kwk_flows = {flow.label: flow for flow in comps['KWK'].inputs + comps['KWK'].outputs} + assert_almost_equal_numeric( + kwk_flows['Q_th'].submodel.flow_rate.solution.values, + [45.0, 45.0, 64.5962087, 100.0, 61.3136, 45.0, 45.0, 12.86469565, 0.0], + 'KWK Q_th doesnt match expected value', + ) + assert_almost_equal_numeric( + kwk_flows['P_el'].submodel.flow_rate.solution.values, + [40.0, 40.0, 47.12589407, 60.0, 45.93221818, 40.0, 40.0, 10.91784108, -0.0], + 'KWK P_el doesnt match expected value', + ) + + assert_almost_equal_numeric( + comps['Speicher'].submodel.netto_discharge.solution.values, + [-15.0, -45.0, 25.4037913, -35.0, 48.6864, -25.0, -25.0, 7.13530435, 20.0], + 'Speicher nettoFlow doesnt match expected value', + ) + + assert_almost_equal_numeric( + comps['Speicher'].submodel.variables['Speicher|PiecewiseEffects|costs'].solution.values, + 454.74666666666667, + 'Speicher investcosts_segmented_costs doesnt match expected value', + ) + + +@pytest.mark.slow +class TestModelingTypes: + @pytest.fixture(params=['full', 'segmented', 'aggregated']) + def modeling_calculation(self, request, flow_system_long, highs_solver): + """ + Fixture to run optimizations with different modeling types + """ + # Extract flow system and data from the fixture + flow_system = flow_system_long[0] + thermal_load_ts = flow_system_long[1]['thermal_load_ts'] + electrical_load_ts = flow_system_long[1]['electrical_load_ts'] + + # Create calculation based on modeling type + modeling_type = request.param + if modeling_type == 'full': + calc = fx.Optimization('fullModel', flow_system) + calc.do_modeling() + calc.solve(highs_solver) + elif modeling_type == 'segmented': + calc = fx.SegmentedOptimization('segModel', flow_system, timesteps_per_segment=96, overlap_timesteps=1) + calc.do_modeling_and_solve(highs_solver) + elif modeling_type == 'aggregated': + calc = fx.ClusteredOptimization( + 'aggModel', + flow_system, + fx.ClusteringParameters( + hours_per_period=6, + nr_of_periods=4, + fix_storage_flows=False, + aggregate_data_and_fix_non_binary_vars=True, + percentage_of_period_freedom=0, + penalty_of_period_freedom=0, + time_series_for_low_peaks=[electrical_load_ts, thermal_load_ts], + time_series_for_high_peaks=[thermal_load_ts], + ), + ) + calc.do_modeling() + calc.solve(highs_solver) + + return calc, modeling_type + + def test_modeling_types_costs(self, modeling_calculation): + """ + Test total costs for different modeling types + """ + calc, modeling_type = modeling_calculation + + expected_costs = { + 'full': 343613, + 'segmented': 343613, # Approximate value + 'aggregated': 342967.0, + } + + if modeling_type in ['full', 'aggregated']: + assert_almost_equal_numeric( + calc.results.model['costs'].solution.item(), + expected_costs[modeling_type], + f'costs do not match for {modeling_type} modeling type', + ) + else: + assert_almost_equal_numeric( + calc.results.solution_without_overlap('costs(temporal)|per_timestep').sum(), + expected_costs[modeling_type], + f'costs do not match for {modeling_type} modeling type', + ) + + def test_segmented_io(self, modeling_calculation): + calc, modeling_type = modeling_calculation + if modeling_type == 'segmented': + calc.results.to_file(overwrite=True) + _ = fx.results.SegmentedResults.from_file(calc.folder, calc.name) + + +if __name__ == '__main__': + pytest.main(['-v']) From c3db99e39f629d0e59ea8ebf967030633e8c25f0 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:54:26 +0100 Subject: [PATCH 17/88] Copy over old tests --- tests/deprecated/conftest.py | 856 ++++++++++- tests/deprecated/test_bus.py | 105 ++ tests/deprecated/test_component.py | 617 ++++++++ tests/deprecated/test_config.py | 282 ++++ tests/deprecated/test_cycle_detection.py | 200 +++ tests/deprecated/test_dataconverter.py | 1262 ++++++++++++++++ tests/deprecated/test_effect.py | 369 +++++ .../test_effects_shares_summation.py | 225 +++ tests/deprecated/test_examples.py | 94 ++ tests/deprecated/test_flow.py | 1338 +++++++++++++++++ tests/deprecated/test_flow_system_resample.py | 295 ++++ tests/deprecated/test_functional.py | 737 +++++++++ tests/deprecated/test_heatmap_reshape.py | 91 ++ tests/deprecated/test_integration.py | 192 +-- tests/deprecated/test_io.py | 193 +++ tests/deprecated/test_linear_converter.py | 501 ++++++ tests/deprecated/test_network_app.py | 24 + tests/deprecated/test_on_hours_computation.py | 99 ++ tests/deprecated/test_plotting_api.py | 138 ++ tests/deprecated/test_resample_equivalence.py | 310 ++++ tests/deprecated/test_results_plots.py | 97 ++ tests/deprecated/test_scenarios.py | 769 ++++++++++ tests/deprecated/test_storage.py | 489 ++++++ tests/deprecated/test_timeseries.py | 0 24 files changed, 9126 insertions(+), 157 deletions(-) create mode 100644 tests/deprecated/test_bus.py create mode 100644 tests/deprecated/test_component.py create mode 100644 tests/deprecated/test_config.py create mode 100644 tests/deprecated/test_cycle_detection.py create mode 100644 tests/deprecated/test_dataconverter.py create mode 100644 tests/deprecated/test_effect.py create mode 100644 tests/deprecated/test_effects_shares_summation.py create mode 100644 tests/deprecated/test_examples.py create mode 100644 tests/deprecated/test_flow.py create mode 100644 tests/deprecated/test_flow_system_resample.py create mode 100644 tests/deprecated/test_functional.py create mode 100644 tests/deprecated/test_heatmap_reshape.py create mode 100644 tests/deprecated/test_io.py create mode 100644 tests/deprecated/test_linear_converter.py create mode 100644 tests/deprecated/test_network_app.py create mode 100644 tests/deprecated/test_on_hours_computation.py create mode 100644 tests/deprecated/test_plotting_api.py create mode 100644 tests/deprecated/test_resample_equivalence.py create mode 100644 tests/deprecated/test_results_plots.py create mode 100644 tests/deprecated/test_scenarios.py create mode 100644 tests/deprecated/test_storage.py create mode 100644 tests/deprecated/test_timeseries.py diff --git a/tests/deprecated/conftest.py b/tests/deprecated/conftest.py index 4ba1d13be..9d76097ee 100644 --- a/tests/deprecated/conftest.py +++ b/tests/deprecated/conftest.py @@ -1,16 +1,850 @@ -"""Fixtures and configuration for deprecated API tests. - -This folder contains tests for the deprecated Optimization/Results API. -Delete this entire folder when deprecation cycle ends in v6.0.0. """ +The conftest.py file is used by pytest to define shared fixtures, hooks, and configuration +that apply to multiple test files without needing explicit imports. +It helps avoid redundancy and centralizes reusable test logic. +""" + +import os +from collections.abc import Iterable +import linopy.testing +import numpy as np +import pandas as pd import pytest +import xarray as xr + +import flixopt as fx +from flixopt.structure import FlowSystemModel + +# ============================================================================ +# SOLVER FIXTURES +# ============================================================================ + + +@pytest.fixture() +def highs_solver(): + return fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=300) + + +@pytest.fixture() +def gurobi_solver(): + pytest.importorskip('gurobipy', reason='Gurobi not available in this environment') + return fx.solvers.GurobiSolver(mip_gap=0, time_limit_seconds=300) + + +@pytest.fixture(params=[highs_solver, gurobi_solver], ids=['highs', 'gurobi']) +def solver_fixture(request): + return request.getfixturevalue(request.param.__name__) + + +# ================================= +# COORDINATE CONFIGURATION FIXTURES +# ================================= + + +@pytest.fixture( + params=[ + { + 'timesteps': pd.date_range('2020-01-01', periods=10, freq='h', name='time'), + 'periods': None, + 'scenarios': None, + }, + { + 'timesteps': pd.date_range('2020-01-01', periods=10, freq='h', name='time'), + 'periods': None, + 'scenarios': pd.Index(['A', 'B'], name='scenario'), + }, + { + 'timesteps': pd.date_range('2020-01-01', periods=10, freq='h', name='time'), + 'periods': pd.Index([2020, 2030, 2040], name='period'), + 'scenarios': None, + }, + { + 'timesteps': pd.date_range('2020-01-01', periods=10, freq='h', name='time'), + 'periods': pd.Index([2020, 2030, 2040], name='period'), + 'scenarios': pd.Index(['A', 'B'], name='scenario'), + }, + ], + ids=['time_only', 'time+scenarios', 'time+periods', 'time+periods+scenarios'], +) +def coords_config(request): + """Coordinate configurations for parametrized testing.""" + return request.param + + +# ============================================================================ +# HIERARCHICAL ELEMENT LIBRARY +# ============================================================================ + + +class Buses: + """Standard buses used across flow systems""" + + @staticmethod + def electricity(): + return fx.Bus('Strom') + + @staticmethod + def heat(): + return fx.Bus('Fernwärme') + + @staticmethod + def gas(): + return fx.Bus('Gas') + + @staticmethod + def coal(): + return fx.Bus('Kohle') + + @staticmethod + def defaults(): + """Get all standard buses at once""" + return [Buses.electricity(), Buses.heat(), Buses.gas()] + + +class Effects: + """Standard effects used across flow systems""" + + @staticmethod + def costs(): + return fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True) + + @staticmethod + def costs_with_co2_share(): + return fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True, share_from_temporal={'CO2': 0.2}) + + @staticmethod + def co2(): + return fx.Effect('CO2', 'kg', 'CO2_e-Emissionen') + + @staticmethod + def primary_energy(): + return fx.Effect('PE', 'kWh_PE', 'Primärenergie') + + +class Converters: + """Energy conversion components""" + + class Boilers: + @staticmethod + def simple(): + """Simple boiler from simple_flow_system""" + return fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=50, + relative_minimum=5 / 50, + relative_maximum=1, + status_parameters=fx.StatusParameters(), + ), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + @staticmethod + def complex(): + """Complex boiler with investment parameters from flow_system_complex""" + return fx.linear_converters.Boiler( + 'Kessel', + thermal_efficiency=0.5, + status_parameters=fx.StatusParameters(effects_per_active_hour={'costs': 0, 'CO2': 1000}), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + load_factor_max=1.0, + load_factor_min=0.1, + relative_minimum=5 / 50, + relative_maximum=1, + previous_flow_rate=50, + size=fx.InvestParameters( + effects_of_investment=1000, + fixed_size=50, + mandatory=True, + effects_of_investment_per_size={'costs': 10, 'PE': 2}, + ), + status_parameters=fx.StatusParameters( + active_hours_min=0, + active_hours_max=1000, + max_uptime=10, + min_uptime=1, + max_downtime=10, + effects_per_startup=0.01, + startup_limit=1000, + ), + flow_hours_max=1e6, + ), + fuel_flow=fx.Flow('Q_fu', bus='Gas', size=200, relative_minimum=0, relative_maximum=1), + ) + + class CHPs: + @staticmethod + def simple(): + """Simple CHP from simple_flow_system""" + return fx.linear_converters.CHP( + 'CHP_unit', + thermal_efficiency=0.5, + electrical_efficiency=0.4, + electrical_flow=fx.Flow( + 'P_el', bus='Strom', size=60, relative_minimum=5 / 60, status_parameters=fx.StatusParameters() + ), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + @staticmethod + def base(): + """CHP from flow_system_base""" + return fx.linear_converters.CHP( + 'KWK', + thermal_efficiency=0.5, + electrical_efficiency=0.4, + status_parameters=fx.StatusParameters(effects_per_startup=0.01), + electrical_flow=fx.Flow('P_el', bus='Strom', size=60, relative_minimum=5 / 60, previous_flow_rate=10), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=1e3), + fuel_flow=fx.Flow('Q_fu', bus='Gas', size=1e3), + ) + + class LinearConverters: + @staticmethod + def piecewise(): + """Piecewise converter from flow_system_piecewise_conversion""" + return fx.LinearConverter( + 'KWK', + inputs=[fx.Flow('Q_fu', bus='Gas')], + outputs=[ + fx.Flow('P_el', bus='Strom', size=60, relative_maximum=55, previous_flow_rate=10), + fx.Flow('Q_th', bus='Fernwärme'), + ], + piecewise_conversion=fx.PiecewiseConversion( + { + 'P_el': fx.Piecewise([fx.Piece(5, 30), fx.Piece(40, 60)]), + 'Q_th': fx.Piecewise([fx.Piece(6, 35), fx.Piece(45, 100)]), + 'Q_fu': fx.Piecewise([fx.Piece(12, 70), fx.Piece(90, 200)]), + } + ), + status_parameters=fx.StatusParameters(effects_per_startup=0.01), + ) + + @staticmethod + def segments(timesteps_length): + """Segments converter with time-varying piecewise conversion""" + return fx.LinearConverter( + 'KWK', + inputs=[fx.Flow('Q_fu', bus='Gas')], + outputs=[ + fx.Flow('P_el', bus='Strom', size=60, relative_maximum=55, previous_flow_rate=10), + fx.Flow('Q_th', bus='Fernwärme'), + ], + piecewise_conversion=fx.PiecewiseConversion( + { + 'P_el': fx.Piecewise( + [ + fx.Piece(np.linspace(5, 6, timesteps_length), 30), + fx.Piece(40, np.linspace(60, 70, timesteps_length)), + ] + ), + 'Q_th': fx.Piecewise([fx.Piece(6, 35), fx.Piece(45, 100)]), + 'Q_fu': fx.Piecewise([fx.Piece(12, 70), fx.Piece(90, 200)]), + } + ), + status_parameters=fx.StatusParameters(effects_per_startup=0.01), + ) + + +class Storage: + """Energy storage components""" + + @staticmethod + def simple(timesteps_length=9): + """Simple storage from simple_flow_system""" + # Create pattern [80.0, 70.0, 80.0] and repeat/slice to match timesteps_length + pattern = [80.0, 70.0, 80.0, 80, 80, 80, 80, 80, 80] + charge_state_values = (pattern * ((timesteps_length // len(pattern)) + 1))[:timesteps_length] + + return fx.Storage( + 'Speicher', + charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1e4), + discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1e4), + capacity_in_flow_hours=fx.InvestParameters(effects_of_investment=20, fixed_size=30, mandatory=True), + initial_charge_state=0, + relative_maximum_charge_state=1 / 100 * np.array(charge_state_values), + relative_maximum_final_charge_state=0.8, + eta_charge=0.9, + eta_discharge=1, + relative_loss_per_hour=0.08, + prevent_simultaneous_charge_and_discharge=True, + ) + + @staticmethod + def complex(): + """Complex storage with piecewise investment from flow_system_complex""" + invest_speicher = fx.InvestParameters( + effects_of_investment=0, + piecewise_effects_of_investment=fx.PiecewiseEffects( + piecewise_origin=fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), + piecewise_shares={ + 'costs': fx.Piecewise([fx.Piece(50, 250), fx.Piece(250, 800)]), + 'PE': fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), + }, + ), + mandatory=True, + effects_of_investment_per_size={'costs': 0.01, 'CO2': 0.01}, + minimum_size=0, + maximum_size=1000, + ) + return fx.Storage( + 'Speicher', + charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1e4), + discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1e4), + capacity_in_flow_hours=invest_speicher, + initial_charge_state=0, + maximal_final_charge_state=10, + eta_charge=0.9, + eta_discharge=1, + relative_loss_per_hour=0.08, + prevent_simultaneous_charge_and_discharge=True, + ) + + +class LoadProfiles: + """Standard load and price profiles""" + + @staticmethod + def thermal_simple(timesteps_length=9): + # Create pattern and repeat/slice to match timesteps_length + pattern = [30.0, 0.0, 90.0, 110, 110, 20, 20, 20, 20] + values = (pattern * ((timesteps_length // len(pattern)) + 1))[:timesteps_length] + return np.array(values) + + @staticmethod + def thermal_complex(): + return np.array([30, 0, 90, 110, 110, 20, 20, 20, 20]) + + @staticmethod + def electrical_simple(timesteps_length=9): + # Create array of 80.0 repeated to match timesteps_length + return np.array([80.0 / 1000] * timesteps_length) + + @staticmethod + def electrical_scenario(): + return np.array([0.08, 0.1, 0.15]) + + @staticmethod + def electrical_complex(timesteps_length=9): + # Create array of 40 repeated to match timesteps_length + return np.array([40] * timesteps_length) + + @staticmethod + def random_thermal(length=10, seed=42): + np.random.seed(seed) + return np.array([np.random.random() for _ in range(length)]) * 180 + + @staticmethod + def random_electrical(length=10, seed=42): + np.random.seed(seed) + return (np.array([np.random.random() for _ in range(length)]) + 0.5) / 1.5 * 50 + + +class Sinks: + """Energy sinks (loads)""" + + @staticmethod + def heat_load(thermal_profile): + """Create thermal heat load sink""" + return fx.Sink( + 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=thermal_profile)] + ) + + @staticmethod + def electricity_feed_in(electrical_price_profile): + """Create electricity feed-in sink""" + return fx.Sink( + 'Einspeisung', inputs=[fx.Flow('P_el', bus='Strom', effects_per_flow_hour=-1 * electrical_price_profile)] + ) + + @staticmethod + def electricity_load(electrical_profile): + """Create electrical load sink (for flow_system_long)""" + return fx.Sink( + 'Stromlast', inputs=[fx.Flow('P_el_Last', bus='Strom', size=1, fixed_relative_profile=electrical_profile)] + ) + + +class Sources: + """Energy sources""" + + @staticmethod + def gas_with_costs_and_co2(): + """Standard gas tariff with CO2 emissions""" + source = Sources.gas_with_costs() + source.outputs[0].effects_per_flow_hour = {'costs': 0.04, 'CO2': 0.3} + return source + + @staticmethod + def gas_with_costs(): + """Simple gas tariff without CO2""" + return fx.Source( + 'Gastarif', outputs=[fx.Flow(label='Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={'costs': 0.04})] + ) + + +# ============================================================================ +# RECREATED FIXTURES USING HIERARCHICAL LIBRARY +# ============================================================================ + + +@pytest.fixture +def simple_flow_system() -> fx.FlowSystem: + """ + Create a simple energy system for testing + """ + base_timesteps = pd.date_range('2020-01-01', periods=9, freq='h', name='time') + timesteps_length = len(base_timesteps) + base_thermal_load = LoadProfiles.thermal_simple(timesteps_length) + base_electrical_price = LoadProfiles.electrical_simple(timesteps_length) + + # Define effects + costs = Effects.costs_with_co2_share() + co2 = Effects.co2() + co2.maximum_per_hour = 1000 + + # Create components + boiler = Converters.Boilers.simple() + chp = Converters.CHPs.simple() + storage = Storage.simple(timesteps_length) + heat_load = Sinks.heat_load(base_thermal_load) + gas_tariff = Sources.gas_with_costs_and_co2() + electricity_feed_in = Sinks.electricity_feed_in(base_electrical_price) + + # Create flow system + flow_system = fx.FlowSystem(base_timesteps) + flow_system.add_elements(*Buses.defaults()) + flow_system.add_elements(storage, costs, co2, boiler, heat_load, gas_tariff, electricity_feed_in, chp) + + return flow_system + + +@pytest.fixture +def simple_flow_system_scenarios() -> fx.FlowSystem: + """ + Create a simple energy system for testing + """ + base_timesteps = pd.date_range('2020-01-01', periods=9, freq='h', name='time') + timesteps_length = len(base_timesteps) + base_thermal_load = LoadProfiles.thermal_simple(timesteps_length) + base_electrical_price = LoadProfiles.electrical_scenario() + + # Define effects + costs = Effects.costs_with_co2_share() + co2 = Effects.co2() + co2.maximum_per_hour = 1000 + + # Create components + boiler = Converters.Boilers.simple() + chp = Converters.CHPs.simple() + storage = Storage.simple(timesteps_length) + heat_load = Sinks.heat_load(base_thermal_load) + gas_tariff = Sources.gas_with_costs_and_co2() + electricity_feed_in = Sinks.electricity_feed_in(base_electrical_price) + + # Create flow system + flow_system = fx.FlowSystem( + base_timesteps, scenarios=pd.Index(['A', 'B', 'C']), scenario_weights=np.array([0.5, 0.25, 0.25]) + ) + flow_system.add_elements(*Buses.defaults()) + flow_system.add_elements(storage, costs, co2, boiler, heat_load, gas_tariff, electricity_feed_in, chp) + + return flow_system + + +@pytest.fixture +def basic_flow_system() -> fx.FlowSystem: + """Create basic elements for component testing""" + flow_system = fx.FlowSystem(pd.date_range('2020-01-01', periods=10, freq='h', name='time')) + + thermal_load = LoadProfiles.random_thermal(10) + p_el = LoadProfiles.random_electrical(10) + + costs = Effects.costs() + heat_load = Sinks.heat_load(thermal_load) + gas_source = Sources.gas_with_costs() + electricity_sink = Sinks.electricity_feed_in(p_el) + + flow_system.add_elements(*Buses.defaults()) + flow_system.add_elements(costs, heat_load, gas_source, electricity_sink) + + return flow_system + + +@pytest.fixture +def flow_system_complex() -> fx.FlowSystem: + """ + Helper method to create a base model with configurable parameters + """ + thermal_load = LoadProfiles.thermal_complex() + electrical_load = LoadProfiles.electrical_complex() + flow_system = fx.FlowSystem(pd.date_range('2020-01-01', periods=9, freq='h', name='time')) + + # Define the components and flow_system + costs = Effects.costs() + co2 = Effects.co2() + costs.share_from_temporal = {'CO2': 0.2} + pe = Effects.primary_energy() + pe.maximum_total = 3.5e3 + + heat_load = Sinks.heat_load(thermal_load) + gas_tariff = Sources.gas_with_costs_and_co2() + electricity_feed_in = Sinks.electricity_feed_in(electrical_load) + + flow_system.add_elements(*Buses.defaults()) + flow_system.add_elements(costs, co2, pe, heat_load, gas_tariff, electricity_feed_in) + + boiler = Converters.Boilers.complex() + speicher = Storage.complex() + + flow_system.add_elements(boiler, speicher) + + return flow_system + + +@pytest.fixture +def flow_system_base(flow_system_complex) -> fx.FlowSystem: + """ + Helper method to create a base model with configurable parameters + """ + flow_system = flow_system_complex + chp = Converters.CHPs.base() + flow_system.add_elements(chp) + return flow_system + + +@pytest.fixture +def flow_system_piecewise_conversion(flow_system_complex) -> fx.FlowSystem: + flow_system = flow_system_complex + converter = Converters.LinearConverters.piecewise() + flow_system.add_elements(converter) + return flow_system + + +@pytest.fixture +def flow_system_segments_of_flows_2(flow_system_complex) -> fx.FlowSystem: + """ + Use segments/Piecewise with numeric data + """ + flow_system = flow_system_complex + converter = Converters.LinearConverters.segments(len(flow_system.timesteps)) + flow_system.add_elements(converter) + return flow_system + + +@pytest.fixture +def flow_system_long(): + """ + Special fixture with CSV data loading - kept separate for backward compatibility + Uses library components where possible, but has special elements inline + """ + # Load data + filename = os.path.join(os.path.dirname(__file__), 'ressources', 'Zeitreihen2020.csv') + ts_raw = pd.read_csv(filename, index_col=0).sort_index() + data = ts_raw['2020-01-01 00:00:00':'2020-12-31 23:45:00']['2020-01-01':'2020-01-03 23:45:00'] + + # Extract data columns + electrical_load = data['P_Netz/MW'].values + thermal_load = data['Q_Netz/MW'].values + p_el = data['Strompr.€/MWh'].values + gas_price = data['Gaspr.€/MWh'].values + + thermal_load_ts, electrical_load_ts = ( + fx.TimeSeriesData(thermal_load), + fx.TimeSeriesData(electrical_load, clustering_weight=0.7), + ) + p_feed_in, p_sell = ( + fx.TimeSeriesData(-(p_el - 0.5), clustering_group='p_el'), + fx.TimeSeriesData(p_el + 0.5, clustering_group='p_el'), + ) + + flow_system = fx.FlowSystem(pd.DatetimeIndex(data.index)) + flow_system.add_elements( + *Buses.defaults(), + Buses.coal(), + Effects.costs(), + Effects.co2(), + Effects.primary_energy(), + fx.Sink( + 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=thermal_load_ts)] + ), + fx.Sink( + 'Stromlast', inputs=[fx.Flow('P_el_Last', bus='Strom', size=1, fixed_relative_profile=electrical_load_ts)] + ), + fx.Source( + 'Kohletarif', + outputs=[fx.Flow('Q_Kohle', bus='Kohle', size=1000, effects_per_flow_hour={'costs': 4.6, 'CO2': 0.3})], + ), + fx.Source( + 'Gastarif', + outputs=[fx.Flow('Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={'costs': gas_price, 'CO2': 0.3})], + ), + fx.Sink('Einspeisung', inputs=[fx.Flow('P_el', bus='Strom', size=1000, effects_per_flow_hour=p_feed_in)]), + fx.Source( + 'Stromtarif', + outputs=[fx.Flow('P_el', bus='Strom', size=1000, effects_per_flow_hour={'costs': p_sell, 'CO2': 0.3})], + ), + ) + + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Kessel', + thermal_efficiency=0.85, + thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow( + label='Q_fu', + bus='Gas', + size=95, + relative_minimum=12 / 95, + previous_flow_rate=0, + status_parameters=fx.StatusParameters(effects_per_startup=1000), + ), + ), + fx.linear_converters.CHP( + 'BHKW2', + thermal_efficiency=0.58, + electrical_efficiency=0.22, + status_parameters=fx.StatusParameters(effects_per_startup=24000), + electrical_flow=fx.Flow('P_el', bus='Strom'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow('Q_fu', bus='Kohle', size=288, relative_minimum=87 / 288), + ), + fx.Storage( + 'Speicher', + charging=fx.Flow('Q_th_load', size=137, bus='Fernwärme'), + discharging=fx.Flow('Q_th_unload', size=158, bus='Fernwärme'), + capacity_in_flow_hours=684, + initial_charge_state=137, + minimal_final_charge_state=137, + maximal_final_charge_state=158, + eta_charge=1, + eta_discharge=1, + relative_loss_per_hour=0.001, + prevent_simultaneous_charge_and_discharge=True, + ), + ) + + # Return all the necessary data + return flow_system, { + 'thermal_load_ts': thermal_load_ts, + 'electrical_load_ts': electrical_load_ts, + } + + +@pytest.fixture(params=['h', '3h'], ids=['hourly', '3-hourly']) +def timesteps_linopy(request): + return pd.date_range('2020-01-01', periods=10, freq=request.param, name='time') + + +@pytest.fixture +def basic_flow_system_linopy(timesteps_linopy) -> fx.FlowSystem: + """Create basic elements for component testing""" + flow_system = fx.FlowSystem(timesteps_linopy) + + n = len(flow_system.timesteps) + thermal_load = LoadProfiles.random_thermal(n) + p_el = LoadProfiles.random_electrical(n) + + costs = Effects.costs() + heat_load = Sinks.heat_load(thermal_load) + gas_source = Sources.gas_with_costs() + electricity_sink = Sinks.electricity_feed_in(p_el) + + flow_system.add_elements(*Buses.defaults()) + flow_system.add_elements(costs, heat_load, gas_source, electricity_sink) + + return flow_system + + +@pytest.fixture +def basic_flow_system_linopy_coords(coords_config) -> fx.FlowSystem: + """Create basic elements for component testing with coordinate parametrization.""" + flow_system = fx.FlowSystem(**coords_config) + + thermal_load = LoadProfiles.random_thermal(10) + p_el = LoadProfiles.random_electrical(10) + + costs = Effects.costs() + heat_load = Sinks.heat_load(thermal_load) + gas_source = Sources.gas_with_costs() + electricity_sink = Sinks.electricity_feed_in(p_el) + + flow_system.add_elements(*Buses.defaults()) + flow_system.add_elements(costs, heat_load, gas_source, electricity_sink) + + return flow_system + + +# ============================================================================ +# UTILITY FUNCTIONS (kept for backward compatibility) +# ============================================================================ + + +# Custom assertion function +def assert_almost_equal_numeric( + actual, desired, err_msg, relative_error_range_in_percent=0.011, absolute_tolerance=1e-7 +): + """ + Custom assertion function for comparing numeric values with relative and absolute tolerances + """ + relative_tol = relative_error_range_in_percent / 100 + + if isinstance(desired, (int, float)): + delta = abs(relative_tol * desired) if desired != 0 else absolute_tolerance + assert np.isclose(actual, desired, atol=delta), err_msg + else: + np.testing.assert_allclose(actual, desired, rtol=relative_tol, atol=absolute_tolerance, err_msg=err_msg) + + +def create_optimization_and_solve( + flow_system: fx.FlowSystem, solver, name: str, allow_infeasible: bool = False +) -> fx.Optimization: + optimization = fx.Optimization(name, flow_system) + optimization.do_modeling() + try: + optimization.solve(solver) + except RuntimeError: + if not allow_infeasible: + raise + return optimization + + +def create_linopy_model(flow_system: fx.FlowSystem) -> FlowSystemModel: + """ + Create a FlowSystemModel from a FlowSystem by performing the modeling phase. + + Args: + flow_system: The FlowSystem to build the model from. + + Returns: + FlowSystemModel: The built model from FlowSystem.build_model(). + """ + flow_system.build_model() + return flow_system.model + + +def assert_conequal(actual: linopy.Constraint, desired: linopy.Constraint): + """Assert that two constraints are equal with detailed error messages.""" + + try: + linopy.testing.assert_linequal(actual.lhs, desired.lhs) + except AssertionError as e: + raise AssertionError(f"{actual.name} left-hand sides don't match:\n{e}") from e + + try: + xr.testing.assert_equal(actual.sign, desired.sign) + except AssertionError as e: + raise AssertionError(f"{actual.name} signs don't match:\n{e}") from e + + try: + xr.testing.assert_equal(actual.rhs, desired.rhs) + except AssertionError as e: + raise AssertionError(f"{actual.name} right-hand sides don't match:\n{e}") from e + + +def assert_var_equal(actual: linopy.Variable, desired: linopy.Variable): + """Assert that two variables are equal with detailed error messages.""" + name = actual.name + try: + xr.testing.assert_equal(actual.lower, desired.lower) + except AssertionError as e: + raise AssertionError( + f"{name} lower bounds don't match:\nActual: {actual.lower}\nExpected: {desired.lower}" + ) from e + + try: + xr.testing.assert_equal(actual.upper, desired.upper) + except AssertionError as e: + raise AssertionError( + f"{name} upper bounds don't match:\nActual: {actual.upper}\nExpected: {desired.upper}" + ) from e + + if actual.type != desired.type: + raise AssertionError(f"{name} types don't match: {actual.type} != {desired.type}") + + if actual.size != desired.size: + raise AssertionError(f"{name} sizes don't match: {actual.size} != {desired.size}") + + if actual.shape != desired.shape: + raise AssertionError(f"{name} shapes don't match: {actual.shape} != {desired.shape}") + + try: + xr.testing.assert_equal(actual.coords, desired.coords) + except AssertionError as e: + raise AssertionError( + f"{name} coordinates don't match:\nActual: {actual.coords}\nExpected: {desired.coords}" + ) from e + + if actual.coord_dims != desired.coord_dims: + raise AssertionError(f"{name} coordinate dimensions don't match: {actual.coord_dims} != {desired.coord_dims}") + + +def assert_sets_equal(set1: Iterable, set2: Iterable, msg=''): + """Assert two sets are equal with custom error message.""" + set1, set2 = set(set1), set(set2) + + extra = set1 - set2 + missing = set2 - set1 + + if extra or missing: + parts = [] + if extra: + parts.append(f'Extra: {sorted(extra, key=repr)}') + if missing: + parts.append(f'Missing: {sorted(missing, key=repr)}') + + error_msg = ', '.join(parts) + if msg: + error_msg = f'{msg}: {error_msg}' + + raise AssertionError(error_msg) + + +# ============================================================================ +# PLOTTING CLEANUP FIXTURES +# ============================================================================ + + +@pytest.fixture(autouse=True) +def cleanup_figures(): + """ + Cleanup matplotlib figures after each test. + + This fixture runs automatically after every test to: + - Close all matplotlib figures to prevent memory leaks + """ + yield + # Close all matplotlib figures + import matplotlib.pyplot as plt + + plt.close('all') + + +@pytest.fixture(scope='session', autouse=True) +def set_test_environment(): + """ + Configure plotting for test environment. + + This fixture runs once per test session to: + - Set matplotlib to use non-interactive 'Agg' backend + - Set plotly to use non-interactive 'json' renderer + - Prevent GUI windows from opening during tests + """ + import matplotlib + + matplotlib.use('Agg') # Use non-interactive backend + + import plotly.io as pio + + pio.renderers.default = 'json' # Use non-interactive renderer + fx.CONFIG.Plotting.default_show = False -def pytest_collection_modifyitems(items): - """Apply markers to all tests in this folder.""" - for item in items: - # Only apply to tests in this folder - if 'deprecated' in str(item.fspath): - item.add_marker(pytest.mark.deprecated_api) - item.add_marker(pytest.mark.filterwarnings('ignore::DeprecationWarning')) + yield diff --git a/tests/deprecated/test_bus.py b/tests/deprecated/test_bus.py new file mode 100644 index 000000000..cc49a2073 --- /dev/null +++ b/tests/deprecated/test_bus.py @@ -0,0 +1,105 @@ +import flixopt as fx + +from .conftest import assert_conequal, assert_var_equal, create_linopy_model + + +class TestBusModel: + """Test the FlowModel class.""" + + def test_bus(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + bus = fx.Bus('TestBus', imbalance_penalty_per_flow_hour=None) + flow_system.add_elements( + bus, + fx.Sink('WärmelastTest', inputs=[fx.Flow('Q_th_Last', 'TestBus')]), + fx.Source('GastarifTest', outputs=[fx.Flow('Q_Gas', 'TestBus')]), + ) + model = create_linopy_model(flow_system) + + assert set(bus.submodel.variables) == {'WärmelastTest(Q_th_Last)|flow_rate', 'GastarifTest(Q_Gas)|flow_rate'} + assert set(bus.submodel.constraints) == {'TestBus|balance'} + + assert_conequal( + model.constraints['TestBus|balance'], + model.variables['GastarifTest(Q_Gas)|flow_rate'] == model.variables['WärmelastTest(Q_th_Last)|flow_rate'], + ) + + def test_bus_penalty(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + bus = fx.Bus('TestBus', imbalance_penalty_per_flow_hour=1e5) + flow_system.add_elements( + bus, + fx.Sink('WärmelastTest', inputs=[fx.Flow('Q_th_Last', 'TestBus')]), + fx.Source('GastarifTest', outputs=[fx.Flow('Q_Gas', 'TestBus')]), + ) + model = create_linopy_model(flow_system) + + assert set(bus.submodel.variables) == { + 'TestBus|virtual_supply', + 'TestBus|virtual_demand', + 'WärmelastTest(Q_th_Last)|flow_rate', + 'GastarifTest(Q_Gas)|flow_rate', + } + assert set(bus.submodel.constraints) == {'TestBus|balance'} + + assert_var_equal( + model.variables['TestBus|virtual_supply'], model.add_variables(lower=0, coords=model.get_coords()) + ) + assert_var_equal( + model.variables['TestBus|virtual_demand'], model.add_variables(lower=0, coords=model.get_coords()) + ) + + assert_conequal( + model.constraints['TestBus|balance'], + model.variables['GastarifTest(Q_Gas)|flow_rate'] + - model.variables['WärmelastTest(Q_th_Last)|flow_rate'] + + model.variables['TestBus|virtual_supply'] + - model.variables['TestBus|virtual_demand'] + == 0, + ) + + # Penalty is now added as shares to the Penalty effect's temporal model + # Check that the penalty shares exist + assert 'TestBus->Penalty(temporal)' in model.constraints + assert 'TestBus->Penalty(temporal)' in model.variables + + # The penalty share should equal the imbalance (virtual_supply + virtual_demand) times the penalty cost + # Let's verify the total penalty contribution by checking the effect's temporal model + penalty_effect = flow_system.effects.penalty_effect + assert penalty_effect.submodel is not None + assert 'TestBus' in penalty_effect.submodel.temporal.shares + + assert_conequal( + model.constraints['TestBus->Penalty(temporal)'], + model.variables['TestBus->Penalty(temporal)'] + == model.variables['TestBus|virtual_supply'] * 1e5 * model.hours_per_step + + model.variables['TestBus|virtual_demand'] * 1e5 * model.hours_per_step, + ) + + def test_bus_with_coords(self, basic_flow_system_linopy_coords, coords_config): + """Test bus behavior across different coordinate configurations.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + bus = fx.Bus('TestBus', imbalance_penalty_per_flow_hour=None) + flow_system.add_elements( + bus, + fx.Sink('WärmelastTest', inputs=[fx.Flow('Q_th_Last', 'TestBus')]), + fx.Source('GastarifTest', outputs=[fx.Flow('Q_Gas', 'TestBus')]), + ) + model = create_linopy_model(flow_system) + + # Same core assertions as your existing test + assert set(bus.submodel.variables) == {'WärmelastTest(Q_th_Last)|flow_rate', 'GastarifTest(Q_Gas)|flow_rate'} + assert set(bus.submodel.constraints) == {'TestBus|balance'} + + assert_conequal( + model.constraints['TestBus|balance'], + model.variables['GastarifTest(Q_Gas)|flow_rate'] == model.variables['WärmelastTest(Q_th_Last)|flow_rate'], + ) + + # Just verify coordinate dimensions are correct + gas_var = model.variables['GastarifTest(Q_Gas)|flow_rate'] + if flow_system.scenarios is not None: + assert 'scenario' in gas_var.dims + assert 'time' in gas_var.dims diff --git a/tests/deprecated/test_component.py b/tests/deprecated/test_component.py new file mode 100644 index 000000000..8cde784c9 --- /dev/null +++ b/tests/deprecated/test_component.py @@ -0,0 +1,617 @@ +import numpy as np +import pytest + +import flixopt as fx +import flixopt.elements + +from .conftest import ( + assert_almost_equal_numeric, + assert_conequal, + assert_sets_equal, + assert_var_equal, + create_linopy_model, +) + + +class TestComponentModel: + def test_flow_label_check(self): + """Test that flow model constraints are correctly generated.""" + inputs = [ + fx.Flow('Q_th_Last', 'Fernwärme', relative_minimum=np.ones(10) * 0.1), + fx.Flow('Q_Gas', 'Fernwärme', relative_minimum=np.ones(10) * 0.1), + ] + outputs = [ + fx.Flow('Q_th_Last', 'Gas', relative_minimum=np.ones(10) * 0.01), + fx.Flow('Q_Gas', 'Gas', relative_minimum=np.ones(10) * 0.01), + ] + with pytest.raises(ValueError, match='Flow names must be unique!'): + _ = flixopt.elements.Component('TestComponent', inputs=inputs, outputs=outputs) + + def test_component(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + inputs = [ + fx.Flow('In1', 'Fernwärme', relative_minimum=np.ones(10) * 0.1), + fx.Flow('In2', 'Fernwärme', relative_minimum=np.ones(10) * 0.1), + ] + outputs = [ + fx.Flow('Out1', 'Gas', relative_minimum=np.ones(10) * 0.01), + fx.Flow('Out2', 'Gas', relative_minimum=np.ones(10) * 0.01), + ] + comp = flixopt.elements.Component('TestComponent', inputs=inputs, outputs=outputs) + flow_system.add_elements(comp) + _ = create_linopy_model(flow_system) + + assert_sets_equal( + set(comp.submodel.variables), + { + 'TestComponent(In1)|flow_rate', + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In2)|flow_rate', + 'TestComponent(In2)|total_flow_hours', + 'TestComponent(Out1)|flow_rate', + 'TestComponent(Out1)|total_flow_hours', + 'TestComponent(Out2)|flow_rate', + 'TestComponent(Out2)|total_flow_hours', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(comp.submodel.constraints), + { + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In2)|total_flow_hours', + 'TestComponent(Out1)|total_flow_hours', + 'TestComponent(Out2)|total_flow_hours', + }, + msg='Incorrect constraints', + ) + + def test_on_with_multiple_flows(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + ub_out2 = np.linspace(1, 1.5, 10).round(2) + inputs = [ + fx.Flow('In1', 'Fernwärme', relative_minimum=np.ones(10) * 0.1, size=100), + ] + outputs = [ + fx.Flow('Out1', 'Gas', relative_minimum=np.ones(10) * 0.2, size=200), + fx.Flow('Out2', 'Gas', relative_minimum=np.ones(10) * 0.3, relative_maximum=ub_out2, size=300), + ] + comp = flixopt.elements.Component( + 'TestComponent', inputs=inputs, outputs=outputs, status_parameters=fx.StatusParameters() + ) + flow_system.add_elements(comp) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(comp.submodel.variables), + { + 'TestComponent(In1)|flow_rate', + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In1)|status', + 'TestComponent(In1)|active_hours', + 'TestComponent(Out1)|flow_rate', + 'TestComponent(Out1)|total_flow_hours', + 'TestComponent(Out1)|status', + 'TestComponent(Out1)|active_hours', + 'TestComponent(Out2)|flow_rate', + 'TestComponent(Out2)|total_flow_hours', + 'TestComponent(Out2)|status', + 'TestComponent(Out2)|active_hours', + 'TestComponent|status', + 'TestComponent|active_hours', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(comp.submodel.constraints), + { + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In1)|flow_rate|lb', + 'TestComponent(In1)|flow_rate|ub', + 'TestComponent(In1)|active_hours', + 'TestComponent(Out1)|total_flow_hours', + 'TestComponent(Out1)|flow_rate|lb', + 'TestComponent(Out1)|flow_rate|ub', + 'TestComponent(Out1)|active_hours', + 'TestComponent(Out2)|total_flow_hours', + 'TestComponent(Out2)|flow_rate|lb', + 'TestComponent(Out2)|flow_rate|ub', + 'TestComponent(Out2)|active_hours', + 'TestComponent|status|lb', + 'TestComponent|status|ub', + 'TestComponent|active_hours', + }, + msg='Incorrect constraints', + ) + + upper_bound_flow_rate = outputs[1].relative_maximum + + assert upper_bound_flow_rate.dims == tuple(model.get_coords()) + + assert_var_equal( + model['TestComponent(Out2)|flow_rate'], + model.add_variables(lower=0, upper=300 * upper_bound_flow_rate, coords=model.get_coords()), + ) + assert_var_equal(model['TestComponent|status'], model.add_variables(binary=True, coords=model.get_coords())) + assert_var_equal( + model['TestComponent(Out2)|status'], model.add_variables(binary=True, coords=model.get_coords()) + ) + + assert_conequal( + model.constraints['TestComponent(Out2)|flow_rate|lb'], + model.variables['TestComponent(Out2)|flow_rate'] + >= model.variables['TestComponent(Out2)|status'] * 0.3 * 300, + ) + assert_conequal( + model.constraints['TestComponent(Out2)|flow_rate|ub'], + model.variables['TestComponent(Out2)|flow_rate'] + <= model.variables['TestComponent(Out2)|status'] * 300 * upper_bound_flow_rate, + ) + + assert_conequal( + model.constraints['TestComponent|status|lb'], + model.variables['TestComponent|status'] + >= ( + model.variables['TestComponent(In1)|status'] + + model.variables['TestComponent(Out1)|status'] + + model.variables['TestComponent(Out2)|status'] + ) + / (3 + 1e-5), + ) + assert_conequal( + model.constraints['TestComponent|status|ub'], + model.variables['TestComponent|status'] + <= ( + model.variables['TestComponent(In1)|status'] + + model.variables['TestComponent(Out1)|status'] + + model.variables['TestComponent(Out2)|status'] + ) + + 1e-5, + ) + + def test_on_with_single_flow(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + inputs = [ + fx.Flow('In1', 'Fernwärme', relative_minimum=np.ones(10) * 0.1, size=100), + ] + outputs = [] + comp = flixopt.elements.Component( + 'TestComponent', inputs=inputs, outputs=outputs, status_parameters=fx.StatusParameters() + ) + flow_system.add_elements(comp) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(comp.submodel.variables), + { + 'TestComponent(In1)|flow_rate', + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In1)|status', + 'TestComponent(In1)|active_hours', + 'TestComponent|status', + 'TestComponent|active_hours', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(comp.submodel.constraints), + { + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In1)|flow_rate|lb', + 'TestComponent(In1)|flow_rate|ub', + 'TestComponent(In1)|active_hours', + 'TestComponent|status', + 'TestComponent|active_hours', + }, + msg='Incorrect constraints', + ) + + assert_var_equal( + model['TestComponent(In1)|flow_rate'], model.add_variables(lower=0, upper=100, coords=model.get_coords()) + ) + assert_var_equal(model['TestComponent|status'], model.add_variables(binary=True, coords=model.get_coords())) + assert_var_equal( + model['TestComponent(In1)|status'], model.add_variables(binary=True, coords=model.get_coords()) + ) + + assert_conequal( + model.constraints['TestComponent(In1)|flow_rate|lb'], + model.variables['TestComponent(In1)|flow_rate'] >= model.variables['TestComponent(In1)|status'] * 0.1 * 100, + ) + assert_conequal( + model.constraints['TestComponent(In1)|flow_rate|ub'], + model.variables['TestComponent(In1)|flow_rate'] <= model.variables['TestComponent(In1)|status'] * 100, + ) + + assert_conequal( + model.constraints['TestComponent|status'], + model.variables['TestComponent|status'] == model.variables['TestComponent(In1)|status'], + ) + + def test_previous_states_with_multiple_flows(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + ub_out2 = np.linspace(1, 1.5, 10).round(2) + inputs = [ + fx.Flow( + 'In1', + 'Fernwärme', + relative_minimum=np.ones(10) * 0.1, + size=100, + previous_flow_rate=np.array([0, 0, 1e-6, 1e-5, 1e-4, 3, 4]), + ), + ] + outputs = [ + fx.Flow('Out1', 'Gas', relative_minimum=np.ones(10) * 0.2, size=200, previous_flow_rate=[3, 4, 5]), + fx.Flow( + 'Out2', + 'Gas', + relative_minimum=np.ones(10) * 0.3, + relative_maximum=ub_out2, + size=300, + previous_flow_rate=20, + ), + ] + comp = flixopt.elements.Component( + 'TestComponent', inputs=inputs, outputs=outputs, status_parameters=fx.StatusParameters() + ) + flow_system.add_elements(comp) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(comp.submodel.variables), + { + 'TestComponent(In1)|flow_rate', + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In1)|status', + 'TestComponent(In1)|active_hours', + 'TestComponent(Out1)|flow_rate', + 'TestComponent(Out1)|total_flow_hours', + 'TestComponent(Out1)|status', + 'TestComponent(Out1)|active_hours', + 'TestComponent(Out2)|flow_rate', + 'TestComponent(Out2)|total_flow_hours', + 'TestComponent(Out2)|status', + 'TestComponent(Out2)|active_hours', + 'TestComponent|status', + 'TestComponent|active_hours', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(comp.submodel.constraints), + { + 'TestComponent(In1)|total_flow_hours', + 'TestComponent(In1)|flow_rate|lb', + 'TestComponent(In1)|flow_rate|ub', + 'TestComponent(In1)|active_hours', + 'TestComponent(Out1)|total_flow_hours', + 'TestComponent(Out1)|flow_rate|lb', + 'TestComponent(Out1)|flow_rate|ub', + 'TestComponent(Out1)|active_hours', + 'TestComponent(Out2)|total_flow_hours', + 'TestComponent(Out2)|flow_rate|lb', + 'TestComponent(Out2)|flow_rate|ub', + 'TestComponent(Out2)|active_hours', + 'TestComponent|status|lb', + 'TestComponent|status|ub', + 'TestComponent|active_hours', + }, + msg='Incorrect constraints', + ) + + upper_bound_flow_rate = outputs[1].relative_maximum + + assert upper_bound_flow_rate.dims == tuple(model.get_coords()) + + assert_var_equal( + model['TestComponent(Out2)|flow_rate'], + model.add_variables(lower=0, upper=300 * upper_bound_flow_rate, coords=model.get_coords()), + ) + assert_var_equal(model['TestComponent|status'], model.add_variables(binary=True, coords=model.get_coords())) + assert_var_equal( + model['TestComponent(Out2)|status'], model.add_variables(binary=True, coords=model.get_coords()) + ) + + assert_conequal( + model.constraints['TestComponent(Out2)|flow_rate|lb'], + model.variables['TestComponent(Out2)|flow_rate'] + >= model.variables['TestComponent(Out2)|status'] * 0.3 * 300, + ) + assert_conequal( + model.constraints['TestComponent(Out2)|flow_rate|ub'], + model.variables['TestComponent(Out2)|flow_rate'] + <= model.variables['TestComponent(Out2)|status'] * 300 * upper_bound_flow_rate, + ) + + assert_conequal( + model.constraints['TestComponent|status|lb'], + model.variables['TestComponent|status'] + >= ( + model.variables['TestComponent(In1)|status'] + + model.variables['TestComponent(Out1)|status'] + + model.variables['TestComponent(Out2)|status'] + ) + / (3 + 1e-5), + ) + assert_conequal( + model.constraints['TestComponent|status|ub'], + model.variables['TestComponent|status'] + <= ( + model.variables['TestComponent(In1)|status'] + + model.variables['TestComponent(Out1)|status'] + + model.variables['TestComponent(Out2)|status'] + ) + + 1e-5, + ) + + @pytest.mark.parametrize( + 'in1_previous_flow_rate, out1_previous_flow_rate, out2_previous_flow_rate, previous_on_hours', + [ + (None, None, None, 0), + (np.array([0, 1e-6, 1e-4, 5]), None, None, 2), + (np.array([0, 5, 0, 5]), None, None, 1), + (np.array([0, 5, 0, 0]), 3, 0, 1), + (np.array([0, 0, 2, 0, 4, 5]), [3, 4, 5], None, 4), + ], + ) + def test_previous_states_with_multiple_flows_parameterized( + self, + basic_flow_system_linopy_coords, + coords_config, + in1_previous_flow_rate, + out1_previous_flow_rate, + out2_previous_flow_rate, + previous_on_hours, + ): + """Test that flow model constraints are correctly generated with different previous flow rates and constraint factors.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + ub_out2 = np.linspace(1, 1.5, 10).round(2) + inputs = [ + fx.Flow( + 'In1', + 'Fernwärme', + relative_minimum=np.ones(10) * 0.1, + size=100, + previous_flow_rate=in1_previous_flow_rate, + status_parameters=fx.StatusParameters(min_uptime=3), + ), + ] + outputs = [ + fx.Flow( + 'Out1', 'Gas', relative_minimum=np.ones(10) * 0.2, size=200, previous_flow_rate=out1_previous_flow_rate + ), + fx.Flow( + 'Out2', + 'Gas', + relative_minimum=np.ones(10) * 0.3, + relative_maximum=ub_out2, + size=300, + previous_flow_rate=out2_previous_flow_rate, + ), + ] + comp = flixopt.elements.Component( + 'TestComponent', + inputs=inputs, + outputs=outputs, + status_parameters=fx.StatusParameters(min_uptime=3), + ) + flow_system.add_elements(comp) + create_linopy_model(flow_system) + + assert_conequal( + comp.submodel.constraints['TestComponent|uptime|initial'], + comp.submodel.variables['TestComponent|uptime'].isel(time=0) + == comp.submodel.variables['TestComponent|status'].isel(time=0) * (previous_on_hours + 1), + ) + + +class TestTransmissionModel: + def test_transmission_basic(self, basic_flow_system, highs_solver): + """Test basic transmission functionality""" + flow_system = basic_flow_system + flow_system.add_elements(fx.Bus('Wärme lokal')) + + boiler = fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + thermal_flow=fx.Flow('Q_th', bus='Wärme lokal'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + transmission = fx.Transmission( + 'Rohr', + relative_losses=0.2, + absolute_losses=20, + in1=fx.Flow( + 'Rohr1', 'Wärme lokal', size=fx.InvestParameters(effects_of_investment_per_size=5, maximum_size=1e6) + ), + out1=fx.Flow('Rohr2', 'Fernwärme', size=1000), + ) + + flow_system.add_elements(transmission, boiler) + + flow_system.optimize(highs_solver) + + # Assertions + assert_almost_equal_numeric( + transmission.in1.submodel.status.status.solution.values, + np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), + 'Status does not work properly', + ) + + assert_almost_equal_numeric( + transmission.in1.submodel.flow_rate.solution.values * 0.8 - 20, + transmission.out1.submodel.flow_rate.solution.values, + 'Losses are not computed correctly', + ) + + def test_transmission_balanced(self, basic_flow_system, highs_solver): + """Test advanced transmission functionality""" + flow_system = basic_flow_system + flow_system.add_elements(fx.Bus('Wärme lokal')) + + boiler = fx.linear_converters.Boiler( + 'Boiler_Standard', + thermal_efficiency=0.9, + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', relative_maximum=np.array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1])), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + boiler2 = fx.linear_converters.Boiler( + 'Boiler_backup', + thermal_efficiency=0.4, + thermal_flow=fx.Flow('Q_th', bus='Wärme lokal'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + last2 = fx.Sink( + 'Wärmelast2', + inputs=[ + fx.Flow( + 'Q_th_Last', + bus='Wärme lokal', + size=1, + fixed_relative_profile=flow_system.components['Wärmelast'].inputs[0].fixed_relative_profile + * np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]), + ) + ], + ) + + transmission = fx.Transmission( + 'Rohr', + relative_losses=0.2, + absolute_losses=20, + in1=fx.Flow( + 'Rohr1a', + bus='Wärme lokal', + size=fx.InvestParameters(effects_of_investment_per_size=5, maximum_size=1000), + ), + out1=fx.Flow('Rohr1b', 'Fernwärme', size=1000), + in2=fx.Flow('Rohr2a', 'Fernwärme', size=fx.InvestParameters()), + out2=fx.Flow('Rohr2b', bus='Wärme lokal', size=1000), + balanced=True, + ) + + flow_system.add_elements(transmission, boiler, boiler2, last2) + + flow_system.optimize(highs_solver) + + # Assertions + assert_almost_equal_numeric( + transmission.in1.submodel.status.status.solution.values, + np.array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0]), + 'Status does not work properly', + ) + + assert_almost_equal_numeric( + flow_system.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, + transmission.out1.submodel.flow_rate.solution.values, + 'Flow rate of Rohr__Rohr1b is not correct', + ) + + assert_almost_equal_numeric( + transmission.in1.submodel.flow_rate.solution.values * 0.8 + - np.array([20 if val > 0.1 else 0 for val in transmission.in1.submodel.flow_rate.solution.values]), + transmission.out1.submodel.flow_rate.solution.values, + 'Losses are not computed correctly', + ) + + assert_almost_equal_numeric( + transmission.in1.submodel._investment.size.solution.item(), + transmission.in2.submodel._investment.size.solution.item(), + 'The Investments are not equated correctly', + ) + + def test_transmission_unbalanced(self, basic_flow_system, highs_solver): + """Test advanced transmission functionality""" + flow_system = basic_flow_system + flow_system.add_elements(fx.Bus('Wärme lokal')) + + boiler = fx.linear_converters.Boiler( + 'Boiler_Standard', + thermal_efficiency=0.9, + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', relative_maximum=np.array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1])), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + boiler2 = fx.linear_converters.Boiler( + 'Boiler_backup', + thermal_efficiency=0.4, + thermal_flow=fx.Flow('Q_th', bus='Wärme lokal'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + last2 = fx.Sink( + 'Wärmelast2', + inputs=[ + fx.Flow( + 'Q_th_Last', + bus='Wärme lokal', + size=1, + fixed_relative_profile=flow_system.components['Wärmelast'].inputs[0].fixed_relative_profile + * np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1]), + ) + ], + ) + + transmission = fx.Transmission( + 'Rohr', + relative_losses=0.2, + absolute_losses=20, + in1=fx.Flow( + 'Rohr1a', + bus='Wärme lokal', + size=fx.InvestParameters(effects_of_investment_per_size=50, maximum_size=1000), + ), + out1=fx.Flow('Rohr1b', 'Fernwärme', size=1000), + in2=fx.Flow( + 'Rohr2a', + 'Fernwärme', + size=fx.InvestParameters(effects_of_investment_per_size=100, minimum_size=10, mandatory=True), + ), + out2=fx.Flow('Rohr2b', bus='Wärme lokal', size=1000), + balanced=False, + ) + + flow_system.add_elements(transmission, boiler, boiler2, last2) + + flow_system.optimize(highs_solver) + + # Assertions + assert_almost_equal_numeric( + transmission.in1.submodel.status.status.solution.values, + np.array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0]), + 'Status does not work properly', + ) + + assert_almost_equal_numeric( + flow_system.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, + transmission.out1.submodel.flow_rate.solution.values, + 'Flow rate of Rohr__Rohr1b is not correct', + ) + + assert_almost_equal_numeric( + transmission.in1.submodel.flow_rate.solution.values * 0.8 + - np.array([20 if val > 0.1 else 0 for val in transmission.in1.submodel.flow_rate.solution.values]), + transmission.out1.submodel.flow_rate.solution.values, + 'Losses are not computed correctly', + ) + + assert transmission.in1.submodel._investment.size.solution.item() > 11 + + assert_almost_equal_numeric( + transmission.in2.submodel._investment.size.solution.item(), + 10, + 'Sizing does not work properly', + ) diff --git a/tests/deprecated/test_config.py b/tests/deprecated/test_config.py new file mode 100644 index 000000000..94d626af2 --- /dev/null +++ b/tests/deprecated/test_config.py @@ -0,0 +1,282 @@ +"""Tests for the config module.""" + +import logging +import sys + +import pytest + +from flixopt.config import CONFIG, SUCCESS_LEVEL, MultilineFormatter + +logger = logging.getLogger('flixopt') + + +@pytest.mark.xdist_group(name='config_tests') +class TestConfigModule: + """Test the CONFIG class and logging setup.""" + + def setup_method(self): + """Reset CONFIG to defaults before each test.""" + CONFIG.reset() + + def teardown_method(self): + """Clean up after each test.""" + CONFIG.reset() + + def test_config_defaults(self): + """Test that CONFIG has correct default values.""" + assert CONFIG.Modeling.big == 10_000_000 + assert CONFIG.Modeling.epsilon == 1e-5 + assert CONFIG.Solving.mip_gap == 0.01 + assert CONFIG.Solving.time_limit_seconds == 300 + assert CONFIG.config_name == 'flixopt' + + def test_silent_by_default(self, capfd): + """Test that flixopt is silent by default.""" + logger.info('should not appear') + captured = capfd.readouterr() + assert 'should not appear' not in captured.out + + def test_enable_console_logging(self, capfd): + """Test enabling console logging.""" + CONFIG.Logging.enable_console('INFO') + logger.info('test message') + captured = capfd.readouterr() + assert 'test message' in captured.out + + def test_enable_file_logging(self, tmp_path): + """Test enabling file logging.""" + log_file = tmp_path / 'test.log' + CONFIG.Logging.enable_file('INFO', str(log_file)) + logger.info('test file message') + + assert log_file.exists() + assert 'test file message' in log_file.read_text() + + def test_console_and_file_together(self, tmp_path, capfd): + """Test logging to both console and file.""" + log_file = tmp_path / 'test.log' + CONFIG.Logging.enable_console('INFO') + CONFIG.Logging.enable_file('INFO', str(log_file)) + + logger.info('test both') + + # Check both outputs + assert 'test both' in capfd.readouterr().out + assert 'test both' in log_file.read_text() + + def test_disable_logging(self, capfd): + """Test disabling logging.""" + CONFIG.Logging.enable_console('INFO') + CONFIG.Logging.disable() + + logger.info('should not appear') + assert 'should not appear' not in capfd.readouterr().out + + def test_custom_success_level(self, capfd): + """Test custom SUCCESS log level.""" + CONFIG.Logging.enable_console('INFO') + logger.log(SUCCESS_LEVEL, 'success message') + assert 'success message' in capfd.readouterr().out + + def test_success_level_as_minimum(self, capfd): + """Test setting SUCCESS as minimum log level.""" + CONFIG.Logging.enable_console('SUCCESS') + + # INFO should not appear (level 20 < 25) + logger.info('info message') + assert 'info message' not in capfd.readouterr().out + + # SUCCESS should appear (level 25) + logger.log(SUCCESS_LEVEL, 'success message') + assert 'success message' in capfd.readouterr().out + + # WARNING should appear (level 30 > 25) + logger.warning('warning message') + assert 'warning message' in capfd.readouterr().out + + def test_success_level_numeric(self, capfd): + """Test setting SUCCESS level using numeric value.""" + CONFIG.Logging.enable_console(25) + logger.log(25, 'success with numeric level') + assert 'success with numeric level' in capfd.readouterr().out + + def test_success_level_constant(self, capfd): + """Test using SUCCESS_LEVEL constant.""" + CONFIG.Logging.enable_console(SUCCESS_LEVEL) + logger.log(SUCCESS_LEVEL, 'success with constant') + assert 'success with constant' in capfd.readouterr().out + assert SUCCESS_LEVEL == 25 + + def test_success_file_logging(self, tmp_path): + """Test SUCCESS level with file logging.""" + log_file = tmp_path / 'test_success.log' + CONFIG.Logging.enable_file('SUCCESS', str(log_file)) + + # INFO should not be logged + logger.info('info not logged') + + # SUCCESS should be logged + logger.log(SUCCESS_LEVEL, 'success logged to file') + + content = log_file.read_text() + assert 'info not logged' not in content + assert 'success logged to file' in content + + def test_success_color_customization(self, capfd): + """Test customizing SUCCESS level color.""" + CONFIG.Logging.enable_console('SUCCESS') + + # Customize SUCCESS color + CONFIG.Logging.set_colors( + { + 'SUCCESS': 'bold_green,bg_black', + 'WARNING': 'yellow', + } + ) + + logger.log(SUCCESS_LEVEL, 'colored success') + output = capfd.readouterr().out + assert 'colored success' in output + + def test_multiline_formatting(self): + """Test that multi-line messages get box borders.""" + formatter = MultilineFormatter() + record = logging.LogRecord('test', logging.INFO, '', 1, 'Line 1\nLine 2\nLine 3', (), None) + formatted = formatter.format(record) + assert '┌─' in formatted + assert '└─' in formatted + + def test_console_stderr(self, capfd): + """Test logging to stderr.""" + CONFIG.Logging.enable_console('INFO', stream=sys.stderr) + logger.info('stderr test') + assert 'stderr test' in capfd.readouterr().err + + def test_non_colored_output(self, capfd): + """Test non-colored console output.""" + CONFIG.Logging.enable_console('INFO', colored=False) + logger.info('plain text') + assert 'plain text' in capfd.readouterr().out + + def test_preset_exploring(self, capfd): + """Test exploring preset.""" + CONFIG.exploring() + logger.info('exploring') + assert 'exploring' in capfd.readouterr().out + assert CONFIG.Solving.log_to_console is True + + def test_preset_debug(self, capfd): + """Test debug preset.""" + CONFIG.debug() + logger.debug('debug') + assert 'debug' in capfd.readouterr().out + + def test_preset_production(self, tmp_path): + """Test production preset.""" + log_file = tmp_path / 'prod.log' + CONFIG.production(str(log_file)) + logger.info('production') + + assert log_file.exists() + assert 'production' in log_file.read_text() + assert CONFIG.Plotting.default_show is False + + def test_preset_silent(self, capfd): + """Test silent preset.""" + CONFIG.silent() + logger.info('should not appear') + assert 'should not appear' not in capfd.readouterr().out + + def test_config_reset(self): + """Test that reset() restores defaults and disables logging.""" + CONFIG.Modeling.big = 99999999 + CONFIG.Logging.enable_console('DEBUG') + + CONFIG.reset() + + assert CONFIG.Modeling.big == 10_000_000 + assert len(logger.handlers) == 0 + + def test_config_to_dict(self): + """Test converting CONFIG to dictionary.""" + config_dict = CONFIG.to_dict() + assert config_dict['modeling']['big'] == 10_000_000 + assert config_dict['solving']['mip_gap'] == 0.01 + + def test_attribute_modification(self): + """Test modifying config attributes.""" + CONFIG.Modeling.big = 12345678 + CONFIG.Solving.mip_gap = 0.001 + + assert CONFIG.Modeling.big == 12345678 + assert CONFIG.Solving.mip_gap == 0.001 + + def test_exception_logging(self, capfd): + """Test that exceptions are properly logged with tracebacks.""" + CONFIG.Logging.enable_console('INFO') + + try: + raise ValueError('Test exception') + except ValueError: + logger.exception('An error occurred') + + captured = capfd.readouterr().out + assert 'An error occurred' in captured + assert 'ValueError' in captured + assert 'Test exception' in captured + assert 'Traceback' in captured + + def test_exception_logging_non_colored(self, capfd): + """Test that exceptions are properly logged with tracebacks in non-colored mode.""" + CONFIG.Logging.enable_console('INFO', colored=False) + + try: + raise ValueError('Test exception non-colored') + except ValueError: + logger.exception('An error occurred') + + captured = capfd.readouterr().out + assert 'An error occurred' in captured + assert 'ValueError: Test exception non-colored' in captured + assert 'Traceback' in captured + + def test_enable_file_preserves_custom_handlers(self, tmp_path, capfd): + """Test that enable_file preserves custom non-file handlers.""" + # Add a custom console handler first + CONFIG.Logging.enable_console('INFO') + logger.info('console test') + assert 'console test' in capfd.readouterr().out + + # Now add file logging - should keep the console handler + log_file = tmp_path / 'test.log' + CONFIG.Logging.enable_file('INFO', str(log_file)) + + logger.info('both outputs') + + # Check console still works + console_output = capfd.readouterr().out + assert 'both outputs' in console_output + + # Check file was created and has the message + assert log_file.exists() + assert 'both outputs' in log_file.read_text() + + def test_enable_file_removes_duplicate_file_handlers(self, tmp_path): + """Test that enable_file removes existing file handlers to avoid duplicates.""" + log_file = tmp_path / 'test.log' + + # Enable file logging twice + CONFIG.Logging.enable_file('INFO', str(log_file)) + CONFIG.Logging.enable_file('INFO', str(log_file)) + + logger.info('duplicate test') + + # Count file handlers - should only be 1 + from logging.handlers import RotatingFileHandler + + file_handlers = [h for h in logger.handlers if isinstance(h, (logging.FileHandler, RotatingFileHandler))] + assert len(file_handlers) == 1 + + # Message should appear only once in the file + log_content = log_file.read_text() + assert log_content.count('duplicate test') == 1 diff --git a/tests/deprecated/test_cycle_detection.py b/tests/deprecated/test_cycle_detection.py new file mode 100644 index 000000000..753a9a3e5 --- /dev/null +++ b/tests/deprecated/test_cycle_detection.py @@ -0,0 +1,200 @@ +import pytest + +from flixopt.effects import detect_cycles + + +def test_empty_graph(): + """Test that an empty graph has no cycles.""" + assert detect_cycles({}) == [] + + +def test_single_node(): + """Test that a graph with a single node and no edges has no cycles.""" + assert detect_cycles({'A': []}) == [] + + +def test_self_loop(): + """Test that a graph with a self-loop has a cycle.""" + cycles = detect_cycles({'A': ['A']}) + assert len(cycles) == 1 + assert cycles[0] == ['A', 'A'] + + +def test_simple_cycle(): + """Test that a simple cycle is detected.""" + graph = {'A': ['B'], 'B': ['C'], 'C': ['A']} + cycles = detect_cycles(graph) + assert len(cycles) == 1 + assert cycles[0] == ['A', 'B', 'C', 'A'] or cycles[0] == ['B', 'C', 'A', 'B'] or cycles[0] == ['C', 'A', 'B', 'C'] + + +def test_no_cycles(): + """Test that a directed acyclic graph has no cycles.""" + graph = {'A': ['B', 'C'], 'B': ['D', 'E'], 'C': ['F'], 'D': [], 'E': [], 'F': []} + assert detect_cycles(graph) == [] + + +def test_multiple_cycles(): + """Test that a graph with multiple cycles is detected.""" + graph = {'A': ['B', 'D'], 'B': ['C'], 'C': ['A'], 'D': ['E'], 'E': ['D']} + cycles = detect_cycles(graph) + assert len(cycles) == 2 + + # Check that both cycles are detected (order might vary) + cycle_strings = [','.join(cycle) for cycle in cycles] + assert ( + any('A,B,C,A' in s for s in cycle_strings) + or any('B,C,A,B' in s for s in cycle_strings) + or any('C,A,B,C' in s for s in cycle_strings) + ) + assert any('D,E,D' in s for s in cycle_strings) or any('E,D,E' in s for s in cycle_strings) + + +def test_hidden_cycle(): + """Test that a cycle hidden deep in the graph is detected.""" + graph = { + 'A': ['B', 'C'], + 'B': ['D'], + 'C': ['E'], + 'D': ['F'], + 'E': ['G'], + 'F': ['H'], + 'G': ['I'], + 'H': ['J'], + 'I': ['K'], + 'J': ['L'], + 'K': ['M'], + 'L': ['N'], + 'M': ['N'], + 'N': ['O'], + 'O': ['P'], + 'P': ['Q'], + 'Q': ['O'], # Hidden cycle O->P->Q->O + } + cycles = detect_cycles(graph) + assert len(cycles) == 1 + + # Check that the O-P-Q cycle is detected + cycle = cycles[0] + assert 'O' in cycle and 'P' in cycle and 'Q' in cycle + + # Check that they appear in the correct order + o_index = cycle.index('O') + p_index = cycle.index('P') + q_index = cycle.index('Q') + + # Check the cycle order is correct (allowing for different starting points) + cycle_len = len(cycle) + assert ( + (p_index == (o_index + 1) % cycle_len and q_index == (p_index + 1) % cycle_len) + or (q_index == (o_index + 1) % cycle_len and p_index == (q_index + 1) % cycle_len) + or (o_index == (p_index + 1) % cycle_len and q_index == (o_index + 1) % cycle_len) + ) + + +def test_disconnected_graph(): + """Test with a disconnected graph.""" + graph = {'A': ['B'], 'B': ['C'], 'C': [], 'D': ['E'], 'E': ['F'], 'F': []} + assert detect_cycles(graph) == [] + + +def test_disconnected_graph_with_cycle(): + """Test with a disconnected graph containing a cycle in one component.""" + graph = { + 'A': ['B'], + 'B': ['C'], + 'C': [], + 'D': ['E'], + 'E': ['F'], + 'F': ['D'], # Cycle in D->E->F->D + } + cycles = detect_cycles(graph) + assert len(cycles) == 1 + + # Check that the D-E-F cycle is detected + cycle = cycles[0] + assert 'D' in cycle and 'E' in cycle and 'F' in cycle + + # Check if they appear in the correct order + d_index = cycle.index('D') + e_index = cycle.index('E') + f_index = cycle.index('F') + + # Check the cycle order is correct (allowing for different starting points) + cycle_len = len(cycle) + assert ( + (e_index == (d_index + 1) % cycle_len and f_index == (e_index + 1) % cycle_len) + or (f_index == (d_index + 1) % cycle_len and e_index == (f_index + 1) % cycle_len) + or (d_index == (e_index + 1) % cycle_len and f_index == (d_index + 1) % cycle_len) + ) + + +def test_complex_dag(): + """Test with a complex directed acyclic graph.""" + graph = { + 'A': ['B', 'C', 'D'], + 'B': ['E', 'F'], + 'C': ['E', 'G'], + 'D': ['G', 'H'], + 'E': ['I', 'J'], + 'F': ['J', 'K'], + 'G': ['K', 'L'], + 'H': ['L', 'M'], + 'I': ['N'], + 'J': ['N', 'O'], + 'K': ['O', 'P'], + 'L': ['P', 'Q'], + 'M': ['Q'], + 'N': ['R'], + 'O': ['R', 'S'], + 'P': ['S'], + 'Q': ['S'], + 'R': [], + 'S': [], + } + assert detect_cycles(graph) == [] + + +def test_missing_node_in_connections(): + """Test behavior when a node referenced in edges doesn't have its own key.""" + graph = { + 'A': ['B', 'C'], + 'B': ['D'], + # C and D don't have their own entries + } + assert detect_cycles(graph) == [] + + +def test_non_string_keys(): + """Test with non-string keys to ensure the algorithm is generic.""" + graph = {1: [2, 3], 2: [4], 3: [4], 4: []} + assert detect_cycles(graph) == [] + + graph_with_cycle = {1: [2], 2: [3], 3: [1]} + cycles = detect_cycles(graph_with_cycle) + assert len(cycles) == 1 + assert cycles[0] == [1, 2, 3, 1] or cycles[0] == [2, 3, 1, 2] or cycles[0] == [3, 1, 2, 3] + + +def test_complex_network_with_many_nodes(): + """Test with a large network to check performance and correctness.""" + graph = {} + # Create a large DAG + for i in range(100): + # Connect each node to the next few nodes + graph[i] = [j for j in range(i + 1, min(i + 5, 100))] + + # No cycles in this arrangement + assert detect_cycles(graph) == [] + + # Add a single back edge to create a cycle + graph[99] = [0] # This creates a cycle + cycles = detect_cycles(graph) + assert len(cycles) >= 1 + # The cycle might include many nodes, but must contain both 0 and 99 + any_cycle_has_both = any(0 in cycle and 99 in cycle for cycle in cycles) + assert any_cycle_has_both + + +if __name__ == '__main__': + pytest.main(['-v']) diff --git a/tests/deprecated/test_dataconverter.py b/tests/deprecated/test_dataconverter.py new file mode 100644 index 000000000..a5774fd6b --- /dev/null +++ b/tests/deprecated/test_dataconverter.py @@ -0,0 +1,1262 @@ +import numpy as np +import pandas as pd +import pytest +import xarray as xr + +from flixopt.core import ( # Adjust this import to match your project structure + ConversionError, + DataConverter, + TimeSeriesData, +) + + +@pytest.fixture +def time_coords(): + return pd.date_range('2024-01-01', periods=5, freq='D', name='time') + + +@pytest.fixture +def scenario_coords(): + return pd.Index(['baseline', 'high', 'low'], name='scenario') + + +@pytest.fixture +def region_coords(): + return pd.Index(['north', 'south', 'east'], name='region') + + +@pytest.fixture +def standard_coords(): + """Standard coordinates with unique lengths for easy testing.""" + return { + 'time': pd.date_range('2024-01-01', periods=5, freq='D', name='time'), # length 5 + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['north', 'south'], name='region'), # length 2 + } + + +class TestScalarConversion: + """Test scalar data conversions with different coordinate configurations.""" + + def test_scalar_no_coords(self): + """Scalar without coordinates should create 0D DataArray.""" + result = DataConverter.to_dataarray(42) + assert result.shape == () + assert result.dims == () + assert result.item() == 42 + + def test_scalar_single_coord(self, time_coords): + """Scalar with single coordinate should broadcast.""" + result = DataConverter.to_dataarray(42, coords={'time': time_coords}) + assert result.shape == (5,) + assert result.dims == ('time',) + assert np.all(result.values == 42) + + def test_scalar_multiple_coords(self, time_coords, scenario_coords): + """Scalar with multiple coordinates should broadcast to all.""" + result = DataConverter.to_dataarray(42, coords={'time': time_coords, 'scenario': scenario_coords}) + assert result.shape == (5, 3) + assert result.dims == ('time', 'scenario') + assert np.all(result.values == 42) + + def test_numpy_scalars(self, time_coords): + """Test numpy scalar types.""" + for scalar in [np.int32(42), np.int64(42), np.float32(42.5), np.float64(42.5)]: + result = DataConverter.to_dataarray(scalar, coords={'time': time_coords}) + assert result.shape == (5,) + assert np.all(result.values == scalar.item()) + + def test_scalar_many_dimensions(self, standard_coords): + """Scalar should broadcast to any number of dimensions.""" + coords = {**standard_coords, 'technology': pd.Index(['solar', 'wind'], name='technology')} + + result = DataConverter.to_dataarray(42, coords=coords) + assert result.shape == (5, 3, 2, 2) + assert result.dims == ('time', 'scenario', 'region', 'technology') + assert np.all(result.values == 42) + + +class TestOneDimensionalArrayConversion: + """Test 1D numpy array and pandas Series conversions.""" + + def test_1d_array_no_coords(self): + """1D array without coords should fail unless single element.""" + # Multi-element fails + with pytest.raises(ConversionError): + DataConverter.to_dataarray(np.array([1, 2, 3])) + + # Single element succeeds + result = DataConverter.to_dataarray(np.array([42])) + assert result.shape == () + assert result.item() == 42 + + def test_1d_array_matching_coord(self, time_coords): + """1D array matching coordinate length should work.""" + arr = np.array([10, 20, 30, 40, 50]) + result = DataConverter.to_dataarray(arr, coords={'time': time_coords}) + assert result.shape == (5,) + assert result.dims == ('time',) + assert np.array_equal(result.values, arr) + + def test_1d_array_mismatched_coord(self, time_coords): + """1D array not matching coordinate length should fail.""" + arr = np.array([10, 20, 30]) # Length 3, time_coords has length 5 + with pytest.raises(ConversionError): + DataConverter.to_dataarray(arr, coords={'time': time_coords}) + + def test_1d_array_broadcast_to_multiple_coords(self, time_coords, scenario_coords): + """1D array should broadcast to matching dimension.""" + # Array matching time dimension + time_arr = np.array([10, 20, 30, 40, 50]) + result = DataConverter.to_dataarray(time_arr, coords={'time': time_coords, 'scenario': scenario_coords}) + assert result.shape == (5, 3) + assert result.dims == ('time', 'scenario') + + # Each scenario should have the same time values + for scenario in scenario_coords: + assert np.array_equal(result.sel(scenario=scenario).values, time_arr) + + # Array matching scenario dimension + scenario_arr = np.array([100, 200, 300]) + result = DataConverter.to_dataarray(scenario_arr, coords={'time': time_coords, 'scenario': scenario_coords}) + assert result.shape == (5, 3) + assert result.dims == ('time', 'scenario') + + # Each time should have the same scenario values + for time in time_coords: + assert np.array_equal(result.sel(time=time).values, scenario_arr) + + def test_1d_array_ambiguous_length(self): + """Array length matching multiple dimensions should fail.""" + # Both dimensions have length 3 + coords_3x3 = { + 'time': pd.date_range('2024-01-01', periods=3, freq='D', name='time'), + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), + } + arr = np.array([1, 2, 3]) + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr, coords=coords_3x3) + + def test_1d_array_broadcast_to_many_dimensions(self, standard_coords): + """1D array should broadcast to many dimensions.""" + # Array matching time dimension + time_arr = np.array([10, 20, 30, 40, 50]) + result = DataConverter.to_dataarray(time_arr, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + + # Check broadcasting - all scenarios and regions should have same time values + for scenario in standard_coords['scenario']: + for region in standard_coords['region']: + assert np.array_equal(result.sel(scenario=scenario, region=region).values, time_arr) + + +class TestSeriesConversion: + """Test pandas Series conversions.""" + + def test_series_no_coords(self): + """Series without coords should fail unless single element.""" + # Multi-element fails + series = pd.Series([1, 2, 3]) + with pytest.raises(ConversionError): + DataConverter.to_dataarray(series) + + # Single element succeeds + single_series = pd.Series([42]) + result = DataConverter.to_dataarray(single_series) + assert result.shape == () + assert result.item() == 42 + + def test_series_matching_index(self, time_coords, scenario_coords): + """Series with matching index should work.""" + # Time-indexed series + time_series = pd.Series([10, 20, 30, 40, 50], index=time_coords) + result = DataConverter.to_dataarray(time_series, coords={'time': time_coords}) + assert result.shape == (5,) + assert result.dims == ('time',) + assert np.array_equal(result.values, time_series.values) + + # Scenario-indexed series + scenario_series = pd.Series([100, 200, 300], index=scenario_coords) + result = DataConverter.to_dataarray(scenario_series, coords={'scenario': scenario_coords}) + assert result.shape == (3,) + assert result.dims == ('scenario',) + assert np.array_equal(result.values, scenario_series.values) + + def test_series_mismatched_index(self, time_coords): + """Series with non-matching index should fail.""" + wrong_times = pd.date_range('2025-01-01', periods=5, freq='D', name='time') + series = pd.Series([10, 20, 30, 40, 50], index=wrong_times) + + with pytest.raises(ConversionError): + DataConverter.to_dataarray(series, coords={'time': time_coords}) + + def test_series_broadcast_to_multiple_coords(self, time_coords, scenario_coords): + """Series should broadcast to non-matching dimensions.""" + # Time series broadcast to scenarios + time_series = pd.Series([10, 20, 30, 40, 50], index=time_coords) + result = DataConverter.to_dataarray(time_series, coords={'time': time_coords, 'scenario': scenario_coords}) + assert result.shape == (5, 3) + + for scenario in scenario_coords: + assert np.array_equal(result.sel(scenario=scenario).values, time_series.values) + + def test_series_wrong_dimension(self, time_coords, region_coords): + """Series indexed by dimension not in coords should fail.""" + wrong_series = pd.Series([1, 2, 3], index=region_coords) + + with pytest.raises(ConversionError): + DataConverter.to_dataarray(wrong_series, coords={'time': time_coords}) + + def test_series_broadcast_to_many_dimensions(self, standard_coords): + """Series should broadcast to many dimensions.""" + time_series = pd.Series([100, 200, 300, 400, 500], index=standard_coords['time']) + result = DataConverter.to_dataarray(time_series, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + + # Check that all non-time dimensions have the same time series values + for scenario in standard_coords['scenario']: + for region in standard_coords['region']: + assert np.array_equal(result.sel(scenario=scenario, region=region).values, time_series.values) + + +class TestDataFrameConversion: + """Test pandas DataFrame conversions.""" + + def test_single_column_dataframe(self, time_coords): + """Single-column DataFrame should work like Series.""" + df = pd.DataFrame({'value': [10, 20, 30, 40, 50]}, index=time_coords) + result = DataConverter.to_dataarray(df, coords={'time': time_coords}) + + assert result.shape == (5,) + assert result.dims == ('time',) + assert np.array_equal(result.values, df['value'].values) + + def test_multi_column_dataframe_accepted(self, time_coords, scenario_coords): + """Multi-column DataFrame should now be accepted and converted via numpy array path.""" + df = pd.DataFrame( + {'value1': [10, 20, 30, 40, 50], 'value2': [15, 25, 35, 45, 55], 'value3': [12, 22, 32, 42, 52]}, + index=time_coords, + ) + + # Should work by converting to numpy array (5x3) and matching to time x scenario + result = DataConverter.to_dataarray(df, coords={'time': time_coords, 'scenario': scenario_coords}) + + assert result.shape == (5, 3) + assert result.dims == ('time', 'scenario') + assert np.array_equal(result.values, df.to_numpy()) + + def test_empty_dataframe_rejected(self, time_coords): + """Empty DataFrame should be rejected.""" + df = pd.DataFrame(index=time_coords) # No columns + + with pytest.raises(ConversionError, match='DataFrame must have at least one column'): + DataConverter.to_dataarray(df, coords={'time': time_coords}) + + def test_dataframe_broadcast(self, time_coords, scenario_coords): + """Single-column DataFrame should broadcast like Series.""" + df = pd.DataFrame({'power': [10, 20, 30, 40, 50]}, index=time_coords) + result = DataConverter.to_dataarray(df, coords={'time': time_coords, 'scenario': scenario_coords}) + + assert result.shape == (5, 3) + for scenario in scenario_coords: + assert np.array_equal(result.sel(scenario=scenario).values, df['power'].values) + + +class TestMultiDimensionalArrayConversion: + """Test multi-dimensional numpy array conversions.""" + + def test_2d_array_unique_dimensions(self, standard_coords): + """2D array with unique dimension lengths should work.""" + # 5x3 array should map to time x scenario + data_2d = np.random.rand(5, 3) + result = DataConverter.to_dataarray( + data_2d, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + + assert result.shape == (5, 3) + assert result.dims == ('time', 'scenario') + assert np.array_equal(result.values, data_2d) + + # 3x5 array should map to scenario x time + data_2d_flipped = np.random.rand(3, 5) + result_flipped = DataConverter.to_dataarray( + data_2d_flipped, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + + assert result_flipped.shape == (5, 3) + assert result_flipped.dims == ('time', 'scenario') + assert np.array_equal(result_flipped.values.transpose(), data_2d_flipped) + + def test_2d_array_broadcast_to_3d(self, standard_coords): + """2D array should broadcast to additional dimensions when using partial matching.""" + # With improved integration, 2D array (5x3) should match time×scenario and broadcast to region + data_2d = np.random.rand(5, 3) + result = DataConverter.to_dataarray(data_2d, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + + # Check that all regions have the same time x scenario data + for region in standard_coords['region']: + assert np.array_equal(result.sel(region=region).values, data_2d) + + def test_3d_array_unique_dimensions(self, standard_coords): + """3D array with unique dimension lengths should work.""" + # 5x3x2 array should map to time x scenario x region + data_3d = np.random.rand(5, 3, 2) + result = DataConverter.to_dataarray(data_3d, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + assert np.array_equal(result.values, data_3d) + + def test_3d_array_different_permutation(self, standard_coords): + """3D array with different dimension order should work.""" + # 2x5x3 array should map to region x time x scenario + data_3d = np.random.rand(2, 5, 3) + result = DataConverter.to_dataarray(data_3d, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + assert np.array_equal(result.transpose('region', 'time', 'scenario').values, data_3d) + + def test_4d_array_unique_dimensions(self): + """4D array with unique dimension lengths should work.""" + coords = { + 'time': pd.date_range('2024-01-01', periods=2, freq='D', name='time'), # length 2 + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['north', 'south', 'east', 'west'], name='region'), # length 4 + 'technology': pd.Index(['solar', 'wind', 'gas', 'coal', 'hydro'], name='technology'), # length 5 + } + + # 3x5x2x4 array should map to scenario x technology x time x region + data_4d = np.random.rand(3, 5, 2, 4) + result = DataConverter.to_dataarray(data_4d, coords=coords) + + assert result.shape == (2, 3, 4, 5) + assert result.dims == ('time', 'scenario', 'region', 'technology') + assert np.array_equal(result.transpose('scenario', 'technology', 'time', 'region').values, data_4d) + + def test_2d_array_ambiguous_dimensions_error(self): + """2D array with ambiguous dimension lengths should fail.""" + # Both dimensions have length 3 + coords_ambiguous = { + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['north', 'south', 'east'], name='region'), # length 3 + } + + data_2d = np.random.rand(3, 3) + with pytest.raises(ConversionError, match='matches multiple dimension combinations'): + DataConverter.to_dataarray(data_2d, coords=coords_ambiguous) + + def test_multid_array_no_coords(self): + """Multi-D arrays without coords should fail unless scalar.""" + # Multi-element fails + data_2d = np.random.rand(2, 3) + with pytest.raises(ConversionError, match='Cannot convert multi-element array without target dimensions'): + DataConverter.to_dataarray(data_2d) + + # Single element succeeds + single_element = np.array([[42]]) + result = DataConverter.to_dataarray(single_element) + assert result.shape == () + assert result.item() == 42 + + def test_array_no_matching_dimensions_error(self, standard_coords): + """Array with no matching dimension lengths should fail.""" + # 7x8 array - no dimension has length 7 or 8 + data_2d = np.random.rand(7, 8) + coords_2d = { + 'time': standard_coords['time'], # length 5 + 'scenario': standard_coords['scenario'], # length 3 + } + + with pytest.raises(ConversionError, match='cannot be mapped to any combination'): + DataConverter.to_dataarray(data_2d, coords=coords_2d) + + def test_multid_array_special_values(self, standard_coords): + """Multi-D arrays should preserve special values.""" + # Create 2D array with special values + data_2d = np.array( + [[1.0, np.nan, 3.0], [np.inf, 5.0, -np.inf], [7.0, 8.0, 9.0], [10.0, np.nan, 12.0], [13.0, 14.0, np.inf]] + ) + + result = DataConverter.to_dataarray( + data_2d, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + + assert result.shape == (5, 3) + assert np.array_equal(np.isnan(result.values), np.isnan(data_2d)) + assert np.array_equal(np.isinf(result.values), np.isinf(data_2d)) + + def test_multid_array_dtype_preservation(self, standard_coords): + """Multi-D arrays should preserve data types.""" + # Integer array + int_data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15]], dtype=np.int32) + + result_int = DataConverter.to_dataarray( + int_data, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + + assert result_int.dtype == np.int32 + assert np.array_equal(result_int.values, int_data) + + # Boolean array + bool_data = np.array( + [[True, False, True], [False, True, False], [True, True, False], [False, False, True], [True, False, True]] + ) + + result_bool = DataConverter.to_dataarray( + bool_data, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + + assert result_bool.dtype == bool + assert np.array_equal(result_bool.values, bool_data) + + +class TestDataArrayConversion: + """Test xarray DataArray conversions.""" + + def test_compatible_dataarray(self, time_coords): + """Compatible DataArray should pass through.""" + original = xr.DataArray([10, 20, 30, 40, 50], coords={'time': time_coords}, dims='time') + result = DataConverter.to_dataarray(original, coords={'time': time_coords}) + + assert result.shape == (5,) + assert result.dims == ('time',) + assert np.array_equal(result.values, original.values) + + # Should be a copy + result[0] = 999 + assert original[0].item() == 10 + + def test_incompatible_dataarray_coords(self, time_coords): + """DataArray with wrong coordinates should fail.""" + wrong_times = pd.date_range('2025-01-01', periods=5, freq='D', name='time') + original = xr.DataArray([10, 20, 30, 40, 50], coords={'time': wrong_times}, dims='time') + + with pytest.raises(ConversionError): + DataConverter.to_dataarray(original, coords={'time': time_coords}) + + def test_incompatible_dataarray_dims(self, time_coords): + """DataArray with wrong dimensions should fail.""" + original = xr.DataArray([10, 20, 30, 40, 50], coords={'wrong_dim': range(5)}, dims='wrong_dim') + + with pytest.raises(ConversionError): + DataConverter.to_dataarray(original, coords={'time': time_coords}) + + def test_dataarray_broadcast(self, time_coords, scenario_coords): + """DataArray should broadcast to additional dimensions.""" + # 1D time DataArray to 2D time+scenario + original = xr.DataArray([10, 20, 30, 40, 50], coords={'time': time_coords}, dims='time') + result = DataConverter.to_dataarray(original, coords={'time': time_coords, 'scenario': scenario_coords}) + + assert result.shape == (5, 3) + assert result.dims == ('time', 'scenario') + + for scenario in scenario_coords: + assert np.array_equal(result.sel(scenario=scenario).values, original.values) + + def test_scalar_dataarray_broadcast(self, time_coords, scenario_coords): + """Scalar DataArray should broadcast to all dimensions.""" + scalar_da = xr.DataArray(42) + result = DataConverter.to_dataarray(scalar_da, coords={'time': time_coords, 'scenario': scenario_coords}) + + assert result.shape == (5, 3) + assert np.all(result.values == 42) + + def test_2d_dataarray_broadcast_to_more_dimensions(self, standard_coords): + """DataArray should broadcast to additional dimensions.""" + # Start with 2D DataArray + original = xr.DataArray( + [[10, 20, 30], [40, 50, 60], [70, 80, 90], [100, 110, 120], [130, 140, 150]], + coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']}, + dims=('time', 'scenario'), + ) + + # Broadcast to 3D + result = DataConverter.to_dataarray(original, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + + # Check that all regions have the same time+scenario values + for region in standard_coords['region']: + assert np.array_equal(result.sel(region=region).values, original.values) + + +class TestTimeSeriesDataConversion: + """Test TimeSeriesData conversions.""" + + def test_timeseries_data_basic(self, time_coords): + """TimeSeriesData should work like DataArray.""" + data_array = xr.DataArray([10, 20, 30, 40, 50], coords={'time': time_coords}, dims='time') + ts_data = TimeSeriesData(data_array, clustering_group='test') + + result = DataConverter.to_dataarray(ts_data, coords={'time': time_coords}) + + assert result.shape == (5,) + assert result.dims == ('time',) + assert np.array_equal(result.values, [10, 20, 30, 40, 50]) + + def test_timeseries_data_broadcast(self, time_coords, scenario_coords): + """TimeSeriesData should broadcast to additional dimensions.""" + data_array = xr.DataArray([10, 20, 30, 40, 50], coords={'time': time_coords}, dims='time') + ts_data = TimeSeriesData(data_array) + + result = DataConverter.to_dataarray(ts_data, coords={'time': time_coords, 'scenario': scenario_coords}) + + assert result.shape == (5, 3) + for scenario in scenario_coords: + assert np.array_equal(result.sel(scenario=scenario).values, [10, 20, 30, 40, 50]) + + +class TestAsDataArrayAlias: + """Test that to_dataarray works as an alias for to_dataarray.""" + + def test_to_dataarray_is_alias(self, time_coords, scenario_coords): + """to_dataarray should work identically to to_dataarray.""" + # Test with scalar + result_to = DataConverter.to_dataarray(42, coords={'time': time_coords}) + result_as = DataConverter.to_dataarray(42, coords={'time': time_coords}) + assert np.array_equal(result_to.values, result_as.values) + assert result_to.dims == result_as.dims + assert result_to.shape == result_as.shape + + # Test with array + arr = np.array([10, 20, 30, 40, 50]) + result_to_arr = DataConverter.to_dataarray(arr, coords={'time': time_coords}) + result_as_arr = DataConverter.to_dataarray(arr, coords={'time': time_coords}) + assert np.array_equal(result_to_arr.values, result_as_arr.values) + assert result_to_arr.dims == result_as_arr.dims + + # Test with Series + series = pd.Series([100, 200, 300, 400, 500], index=time_coords) + result_to_series = DataConverter.to_dataarray(series, coords={'time': time_coords, 'scenario': scenario_coords}) + result_as_series = DataConverter.to_dataarray(series, coords={'time': time_coords, 'scenario': scenario_coords}) + assert np.array_equal(result_to_series.values, result_as_series.values) + assert result_to_series.dims == result_as_series.dims + + +class TestCustomDimensions: + """Test with custom dimension names beyond time/scenario.""" + + def test_custom_single_dimension(self, region_coords): + """Test with custom dimension name.""" + result = DataConverter.to_dataarray(42, coords={'region': region_coords}) + assert result.shape == (3,) + assert result.dims == ('region',) + assert np.all(result.values == 42) + + def test_custom_multiple_dimensions(self): + """Test with multiple custom dimensions.""" + products = pd.Index(['A', 'B'], name='product') + technologies = pd.Index(['solar', 'wind', 'gas'], name='technology') + + # Array matching technology dimension + arr = np.array([100, 150, 80]) + result = DataConverter.to_dataarray(arr, coords={'product': products, 'technology': technologies}) + + assert result.shape == (2, 3) + assert result.dims == ('product', 'technology') + + # Should broadcast across products + for product in products: + assert np.array_equal(result.sel(product=product).values, arr) + + def test_mixed_dimension_types(self): + """Test mixing time dimension with custom dimensions.""" + time_coords = pd.date_range('2024-01-01', periods=3, freq='D', name='time') + regions = pd.Index(['north', 'south'], name='region') + + # Time series should broadcast to regions + time_series = pd.Series([10, 20, 30], index=time_coords) + result = DataConverter.to_dataarray(time_series, coords={'time': time_coords, 'region': regions}) + + assert result.shape == (3, 2) + assert result.dims == ('time', 'region') + + def test_custom_dimensions_complex(self): + """Test complex scenario with custom dimensions.""" + coords = { + 'product': pd.Index(['A', 'B'], name='product'), + 'factory': pd.Index(['F1', 'F2', 'F3'], name='factory'), + 'quarter': pd.Index(['Q1', 'Q2', 'Q3', 'Q4'], name='quarter'), + } + + # Array matching factory dimension + factory_arr = np.array([100, 200, 300]) + result = DataConverter.to_dataarray(factory_arr, coords=coords) + + assert result.shape == (2, 3, 4) + assert result.dims == ('product', 'factory', 'quarter') + + # Check broadcasting + for product in coords['product']: + for quarter in coords['quarter']: + slice_data = result.sel(product=product, quarter=quarter) + assert np.array_equal(slice_data.values, factory_arr) + + +class TestValidation: + """Test coordinate validation.""" + + def test_empty_coords(self): + """Empty coordinates should work for scalars.""" + result = DataConverter.to_dataarray(42, coords={}) + assert result.shape == () + assert result.item() == 42 + + def test_invalid_coord_type(self): + """Non-pandas Index coordinates should fail.""" + with pytest.raises(ConversionError): + DataConverter.to_dataarray(42, coords={'time': [1, 2, 3]}) + + def test_empty_coord_index(self): + """Empty coordinate index should fail.""" + empty_index = pd.Index([], name='time') + with pytest.raises(ConversionError): + DataConverter.to_dataarray(42, coords={'time': empty_index}) + + def test_time_coord_validation(self): + """Time coordinates must be DatetimeIndex.""" + # Non-datetime index with name 'time' should fail + wrong_time = pd.Index([1, 2, 3], name='time') + with pytest.raises(ConversionError, match='DatetimeIndex'): + DataConverter.to_dataarray(42, coords={'time': wrong_time}) + + def test_coord_naming(self, time_coords): + """Coordinates should be auto-renamed to match dimension.""" + # Unnamed time index should be renamed + unnamed_time = time_coords.rename(None) + result = DataConverter.to_dataarray(42, coords={'time': unnamed_time}) + assert result.coords['time'].name == 'time' + + +class TestErrorHandling: + """Test error handling and edge cases.""" + + def test_unsupported_data_types(self, time_coords): + """Unsupported data types should fail with clear messages.""" + unsupported = ['string', object(), None, {'dict': 'value'}, [1, 2, 3]] + + for data in unsupported: + with pytest.raises(ConversionError): + DataConverter.to_dataarray(data, coords={'time': time_coords}) + + def test_dimension_mismatch_messages(self, time_coords, scenario_coords): + """Error messages should be informative.""" + # Array with wrong length + wrong_arr = np.array([1, 2]) # Length 2, but no dimension has length 2 + with pytest.raises(ConversionError, match='does not match any target dimension lengths'): + DataConverter.to_dataarray(wrong_arr, coords={'time': time_coords, 'scenario': scenario_coords}) + + def test_multidimensional_array_dimension_count_mismatch(self, standard_coords): + """Array with wrong number of dimensions should fail with clear error.""" + # 4D array with 3D coordinates + data_4d = np.random.rand(5, 3, 2, 4) + with pytest.raises(ConversionError, match='cannot be mapped to any combination'): + DataConverter.to_dataarray(data_4d, coords=standard_coords) + + def test_error_message_quality(self, standard_coords): + """Error messages should include helpful information.""" + # Wrong shape array + data_2d = np.random.rand(7, 8) + coords_2d = { + 'time': standard_coords['time'], # length 5 + 'scenario': standard_coords['scenario'], # length 3 + } + + try: + DataConverter.to_dataarray(data_2d, coords=coords_2d) + raise AssertionError('Should have raised ConversionError') + except ConversionError as e: + error_msg = str(e) + assert 'Array shape (7, 8)' in error_msg + assert 'target coordinate lengths:' in error_msg + + +class TestDataIntegrity: + """Test data copying and integrity.""" + + def test_array_copy_independence(self, time_coords): + """Converted arrays should be independent copies.""" + original_arr = np.array([10, 20, 30, 40, 50]) + result = DataConverter.to_dataarray(original_arr, coords={'time': time_coords}) + + # Modify result + result[0] = 999 + + # Original should be unchanged + assert original_arr[0] == 10 + + def test_series_copy_independence(self, time_coords): + """Converted Series should be independent copies.""" + original_series = pd.Series([10, 20, 30, 40, 50], index=time_coords) + result = DataConverter.to_dataarray(original_series, coords={'time': time_coords}) + + # Modify result + result[0] = 999 + + # Original should be unchanged + assert original_series.iloc[0] == 10 + + def test_dataframe_copy_independence(self, time_coords): + """Converted DataFrames should be independent copies.""" + original_df = pd.DataFrame({'value': [10, 20, 30, 40, 50]}, index=time_coords) + result = DataConverter.to_dataarray(original_df, coords={'time': time_coords}) + + # Modify result + result[0] = 999 + + # Original should be unchanged + assert original_df.loc[time_coords[0], 'value'] == 10 + + def test_multid_array_copy_independence(self, standard_coords): + """Multi-D arrays should be independent copies.""" + original_data = np.random.rand(5, 3) + result = DataConverter.to_dataarray( + original_data, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + + # Modify result + result[0, 0] = 999 + + # Original should be unchanged + assert original_data[0, 0] != 999 + + +class TestBooleanValues: + """Test handling of boolean values and arrays.""" + + def test_scalar_boolean_to_dataarray(self, time_coords): + """Scalar boolean values should work with to_dataarray.""" + result_true = DataConverter.to_dataarray(True, coords={'time': time_coords}) + assert result_true.shape == (5,) + assert result_true.dtype == bool + assert np.all(result_true.values) + + result_false = DataConverter.to_dataarray(False, coords={'time': time_coords}) + assert result_false.shape == (5,) + assert result_false.dtype == bool + assert not np.any(result_false.values) + + def test_numpy_boolean_scalar(self, time_coords): + """Numpy boolean scalars should work.""" + result_np_true = DataConverter.to_dataarray(np.bool_(True), coords={'time': time_coords}) + assert result_np_true.shape == (5,) + assert result_np_true.dtype == bool + assert np.all(result_np_true.values) + + result_np_false = DataConverter.to_dataarray(np.bool_(False), coords={'time': time_coords}) + assert result_np_false.shape == (5,) + assert result_np_false.dtype == bool + assert not np.any(result_np_false.values) + + def test_boolean_array_to_dataarray(self, time_coords): + """Boolean arrays should work with to_dataarray.""" + bool_arr = np.array([True, False, True, False, True]) + result = DataConverter.to_dataarray(bool_arr, coords={'time': time_coords}) + assert result.shape == (5,) + assert result.dims == ('time',) + assert result.dtype == bool + assert np.array_equal(result.values, bool_arr) + + def test_boolean_no_coords(self): + """Boolean scalar without coordinates should create 0D DataArray.""" + result = DataConverter.to_dataarray(True) + assert result.shape == () + assert result.dims == () + assert result.item() + + result_as = DataConverter.to_dataarray(False) + assert result_as.shape == () + assert result_as.dims == () + assert not result_as.item() + + def test_boolean_multidimensional_broadcast(self, standard_coords): + """Boolean values should broadcast to multiple dimensions.""" + result = DataConverter.to_dataarray(True, coords=standard_coords) + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + assert result.dtype == bool + assert np.all(result.values) + + result_as = DataConverter.to_dataarray(False, coords=standard_coords) + assert result_as.shape == (5, 3, 2) + assert result_as.dims == ('time', 'scenario', 'region') + assert result_as.dtype == bool + assert not np.any(result_as.values) + + def test_boolean_series(self, time_coords): + """Boolean Series should work.""" + bool_series = pd.Series([True, False, True, False, True], index=time_coords) + result = DataConverter.to_dataarray(bool_series, coords={'time': time_coords}) + assert result.shape == (5,) + assert result.dtype == bool + assert np.array_equal(result.values, bool_series.values) + + result_as = DataConverter.to_dataarray(bool_series, coords={'time': time_coords}) + assert result_as.shape == (5,) + assert result_as.dtype == bool + assert np.array_equal(result_as.values, bool_series.values) + + def test_boolean_dataframe(self, time_coords): + """Boolean DataFrame should work.""" + bool_df = pd.DataFrame({'values': [True, False, True, False, True]}, index=time_coords) + result = DataConverter.to_dataarray(bool_df, coords={'time': time_coords}) + assert result.shape == (5,) + assert result.dtype == bool + assert np.array_equal(result.values, bool_df['values'].values) + + result_as = DataConverter.to_dataarray(bool_df, coords={'time': time_coords}) + assert result_as.shape == (5,) + assert result_as.dtype == bool + assert np.array_equal(result_as.values, bool_df['values'].values) + + def test_multidimensional_boolean_array(self, standard_coords): + """Multi-dimensional boolean arrays should work.""" + bool_data = np.array( + [[True, False, True], [False, True, False], [True, True, False], [False, False, True], [True, False, True]] + ) + result = DataConverter.to_dataarray( + bool_data, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + assert result.shape == (5, 3) + assert result.dtype == bool + assert np.array_equal(result.values, bool_data) + + result_as = DataConverter.to_dataarray( + bool_data, coords={'time': standard_coords['time'], 'scenario': standard_coords['scenario']} + ) + assert result_as.shape == (5, 3) + assert result_as.dtype == bool + assert np.array_equal(result_as.values, bool_data) + + +class TestSpecialValues: + """Test handling of special numeric values.""" + + def test_nan_values(self, time_coords): + """NaN values should be preserved.""" + arr_with_nan = np.array([1, np.nan, 3, np.nan, 5]) + result = DataConverter.to_dataarray(arr_with_nan, coords={'time': time_coords}) + + assert np.array_equal(np.isnan(result.values), np.isnan(arr_with_nan)) + assert np.array_equal(result.values[~np.isnan(result.values)], arr_with_nan[~np.isnan(arr_with_nan)]) + + def test_infinite_values(self, time_coords): + """Infinite values should be preserved.""" + arr_with_inf = np.array([1, np.inf, 3, -np.inf, 5]) + result = DataConverter.to_dataarray(arr_with_inf, coords={'time': time_coords}) + + assert np.array_equal(result.values, arr_with_inf) + + def test_boolean_values(self, time_coords): + """Boolean values should be preserved.""" + bool_arr = np.array([True, False, True, False, True]) + result = DataConverter.to_dataarray(bool_arr, coords={'time': time_coords}) + + assert result.dtype == bool + assert np.array_equal(result.values, bool_arr) + + def test_mixed_numeric_types(self, time_coords): + """Mixed integer/float should become float.""" + mixed_arr = np.array([1, 2.5, 3, 4.5, 5]) + result = DataConverter.to_dataarray(mixed_arr, coords={'time': time_coords}) + + assert np.issubdtype(result.dtype, np.floating) + assert np.array_equal(result.values, mixed_arr) + + def test_special_values_in_multid_arrays(self, standard_coords): + """Special values should be preserved in multi-D arrays and broadcasting.""" + # Array with NaN and inf + special_arr = np.array([1, np.nan, np.inf, -np.inf, 5]) + result = DataConverter.to_dataarray(special_arr, coords=standard_coords) + + assert result.shape == (5, 3, 2) + + # Check that special values are preserved in all broadcasts + for scenario in standard_coords['scenario']: + for region in standard_coords['region']: + slice_data = result.sel(scenario=scenario, region=region) + assert np.array_equal(np.isnan(slice_data.values), np.isnan(special_arr)) + assert np.array_equal(np.isinf(slice_data.values), np.isinf(special_arr)) + + +class TestAdvancedBroadcasting: + """Test advanced broadcasting scenarios and edge cases.""" + + def test_partial_dimension_matching_with_broadcasting(self, standard_coords): + """Test that partial dimension matching works with the improved integration.""" + # 1D array matching one dimension should broadcast to all target dimensions + time_arr = np.array([10, 20, 30, 40, 50]) # matches time (length 5) + result = DataConverter.to_dataarray(time_arr, coords=standard_coords) + + assert result.shape == (5, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + + # Verify broadcasting + for scenario in standard_coords['scenario']: + for region in standard_coords['region']: + assert np.array_equal(result.sel(scenario=scenario, region=region).values, time_arr) + + def test_complex_multid_scenario(self): + """Complex real-world scenario with multi-D array and broadcasting.""" + # Energy system data: time x technology, broadcast to regions + coords = { + 'time': pd.date_range('2024-01-01', periods=24, freq='h', name='time'), # 24 hours + 'technology': pd.Index(['solar', 'wind', 'gas', 'coal'], name='technology'), # 4 technologies + 'region': pd.Index(['north', 'south', 'east'], name='region'), # 3 regions + } + + # Capacity factors: 24 x 4 (will broadcast to 24 x 4 x 3) + capacity_factors = np.random.rand(24, 4) + + result = DataConverter.to_dataarray(capacity_factors, coords=coords) + + assert result.shape == (24, 4, 3) + assert result.dims == ('time', 'technology', 'region') + assert isinstance(result.indexes['time'], pd.DatetimeIndex) + + # Verify broadcasting: all regions should have same time×technology data + for region in coords['region']: + assert np.array_equal(result.sel(region=region).values, capacity_factors) + + def test_ambiguous_length_handling(self): + """Test handling of ambiguous length scenarios across different data types.""" + # All dimensions have length 3 + coords_3x3x3 = { + 'time': pd.date_range('2024-01-01', periods=3, freq='D', name='time'), + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), + } + + # 1D array - should fail + arr_1d = np.array([1, 2, 3]) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_1d, coords=coords_3x3x3) + + # 2D array - should fail + arr_2d = np.random.rand(3, 3) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_2d, coords=coords_3x3x3) + + # 3D array - should fail + arr_3d = np.random.rand(3, 3, 3) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_3d, coords=coords_3x3x3) + + def test_mixed_broadcasting_scenarios(self): + """Test various broadcasting scenarios with different input types.""" + coords = { + 'time': pd.date_range('2024-01-01', periods=4, freq='D', name='time'), # length 4 + 'scenario': pd.Index(['A', 'B'], name='scenario'), # length 2 + 'region': pd.Index(['north', 'south', 'east'], name='region'), # length 3 + 'product': pd.Index(['X', 'Y', 'Z', 'W', 'V'], name='product'), # length 5 + } + + # Scalar to 4D + scalar_result = DataConverter.to_dataarray(42, coords=coords) + assert scalar_result.shape == (4, 2, 3, 5) + assert np.all(scalar_result.values == 42) + + # 1D array (length 4, matches time) to 4D + arr_1d = np.array([10, 20, 30, 40]) + arr_result = DataConverter.to_dataarray(arr_1d, coords=coords) + assert arr_result.shape == (4, 2, 3, 5) + # Verify broadcasting + for scenario in coords['scenario']: + for region in coords['region']: + for product in coords['product']: + assert np.array_equal( + arr_result.sel(scenario=scenario, region=region, product=product).values, arr_1d + ) + + # 2D array (4x2, matches time×scenario) to 4D + arr_2d = np.random.rand(4, 2) + arr_2d_result = DataConverter.to_dataarray(arr_2d, coords=coords) + assert arr_2d_result.shape == (4, 2, 3, 5) + # Verify broadcasting + for region in coords['region']: + for product in coords['product']: + assert np.array_equal(arr_2d_result.sel(region=region, product=product).values, arr_2d) + + +class TestAmbiguousDimensionLengthHandling: + """Test that DataConverter correctly raises errors when multiple dimensions have the same length.""" + + def test_1d_array_ambiguous_dimensions_simple(self): + """Test 1D array with two dimensions of same length should fail.""" + # Both dimensions have length 3 + coords_ambiguous = { + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['north', 'south', 'east'], name='region'), # length 3 + } + + arr_1d = np.array([1, 2, 3]) # length 3 - matches both dimensions + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_1d, coords=coords_ambiguous) + + def test_1d_array_ambiguous_dimensions_complex(self): + """Test 1D array with multiple dimensions of same length.""" + # Three dimensions have length 4 + coords_4x4x4 = { + 'time': pd.date_range('2024-01-01', periods=4, freq='D', name='time'), # length 4 + 'scenario': pd.Index(['A', 'B', 'C', 'D'], name='scenario'), # length 4 + 'region': pd.Index(['north', 'south', 'east', 'west'], name='region'), # length 4 + 'product': pd.Index(['X', 'Y'], name='product'), # length 2 - unique + } + + # Array matching the ambiguous length + arr_1d = np.array([10, 20, 30, 40]) # length 4 - matches time, scenario, region + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_1d, coords=coords_4x4x4) + + # Array matching the unique length should work + arr_1d_unique = np.array([100, 200]) # length 2 - matches only product + result = DataConverter.to_dataarray(arr_1d_unique, coords=coords_4x4x4) + assert result.shape == (4, 4, 4, 2) # broadcast to all dimensions + assert result.dims == ('time', 'scenario', 'region', 'product') + + def test_2d_array_ambiguous_dimensions_both_same(self): + """Test 2D array where both dimensions have the same ambiguous length.""" + # All dimensions have length 3 + coords_3x3x3 = { + 'time': pd.date_range('2024-01-01', periods=3, freq='D', name='time'), # length 3 + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), # length 3 + } + + # 3x3 array - could be any combination of the three dimensions + arr_2d = np.random.rand(3, 3) + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_2d, coords=coords_3x3x3) + + def test_2d_array_one_dimension_ambiguous(self): + """Test 2D array where only one dimension length is ambiguous.""" + coords_mixed = { + 'time': pd.date_range('2024-01-01', periods=5, freq='D', name='time'), # length 5 - unique + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), # length 3 - same as scenario + 'product': pd.Index(['P1', 'P2'], name='product'), # length 2 - unique + } + + # 5x3 array - first dimension clearly maps to time (unique length 5) + # but second dimension could be scenario or region (both length 3) + arr_5x3 = np.random.rand(5, 3) + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_5x3, coords=coords_mixed) + + # 5x2 array should work - dimensions are unambiguous + arr_5x2 = np.random.rand(5, 2) + result = DataConverter.to_dataarray( + arr_5x2, coords={'time': coords_mixed['time'], 'product': coords_mixed['product']} + ) + assert result.shape == (5, 2) + assert result.dims == ('time', 'product') + + def test_3d_array_all_dimensions_ambiguous(self): + """Test 3D array where all dimension lengths are ambiguous.""" + # All dimensions have length 2 + coords_2x2x2x2 = { + 'scenario': pd.Index(['A', 'B'], name='scenario'), # length 2 + 'region': pd.Index(['north', 'south'], name='region'), # length 2 + 'technology': pd.Index(['solar', 'wind'], name='technology'), # length 2 + 'product': pd.Index(['X', 'Y'], name='product'), # length 2 + } + + # 2x2x2 array - could be any combination of 3 dimensions from the 4 available + arr_3d = np.random.rand(2, 2, 2) + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_3d, coords=coords_2x2x2x2) + + def test_3d_array_partial_ambiguity(self): + """Test 3D array with partial dimension ambiguity.""" + coords_partial = { + 'time': pd.date_range('2024-01-01', periods=4, freq='D', name='time'), # length 4 - unique + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), # length 3 - same as scenario + 'technology': pd.Index(['solar', 'wind'], name='technology'), # length 2 - unique + } + + # 4x3x2 array - first and third dimensions are unique, middle is ambiguous + # This should still fail because middle dimension (length 3) could be scenario or region + arr_4x3x2 = np.random.rand(4, 3, 2) + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_4x3x2, coords=coords_partial) + + def test_pandas_series_ambiguous_dimensions(self): + """Test pandas Series with ambiguous dimension lengths.""" + coords_ambiguous = { + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['north', 'south', 'east'], name='region'), # length 3 + } + + # Series with length 3 but index that doesn't match either coordinate exactly + generic_series = pd.Series([10, 20, 30], index=[0, 1, 2]) + + # Should fail because length matches multiple dimensions and index doesn't match any + with pytest.raises(ConversionError, match='Series index does not match any target dimension coordinates'): + DataConverter.to_dataarray(generic_series, coords=coords_ambiguous) + + # Series with index that matches one of the ambiguous coordinates should work + scenario_series = pd.Series([10, 20, 30], index=coords_ambiguous['scenario']) + result = DataConverter.to_dataarray(scenario_series, coords=coords_ambiguous) + assert result.shape == (3, 3) # should broadcast to both dimensions + assert result.dims == ('scenario', 'region') + + def test_edge_case_many_same_lengths(self): + """Test edge case with many dimensions having the same length.""" + # Five dimensions all have length 2 + coords_many = { + 'dim1': pd.Index(['A', 'B'], name='dim1'), + 'dim2': pd.Index(['X', 'Y'], name='dim2'), + 'dim3': pd.Index(['P', 'Q'], name='dim3'), + 'dim4': pd.Index(['M', 'N'], name='dim4'), + 'dim5': pd.Index(['U', 'V'], name='dim5'), + } + + # 1D array + arr_1d = np.array([1, 2]) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_1d, coords=coords_many) + + # 2D array + arr_2d = np.random.rand(2, 2) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_2d, coords=coords_many) + + # 3D array + arr_3d = np.random.rand(2, 2, 2) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_3d, coords=coords_many) + + def test_mixed_lengths_with_duplicates(self): + """Test mixed scenario with some duplicate and some unique lengths.""" + coords_mixed = { + 'time': pd.date_range('2024-01-01', periods=8, freq='D', name='time'), # length 8 - unique + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), # length 3 - same as scenario + 'technology': pd.Index(['solar'], name='technology'), # length 1 - unique + 'product': pd.Index(['P1', 'P2', 'P3', 'P4', 'P5'], name='product'), # length 5 - unique + } + + # Arrays with unique lengths should work + arr_8 = np.arange(8) + result_8 = DataConverter.to_dataarray(arr_8, coords=coords_mixed) + assert result_8.dims == ('time', 'scenario', 'region', 'technology', 'product') + + arr_1 = np.array([42]) + result_1 = DataConverter.to_dataarray(arr_1, coords={'technology': coords_mixed['technology']}) + assert result_1.shape == (1,) + + arr_5 = np.arange(5) + result_5 = DataConverter.to_dataarray(arr_5, coords={'product': coords_mixed['product']}) + assert result_5.shape == (5,) + + # Arrays with ambiguous length should fail + arr_3 = np.array([1, 2, 3]) # matches both scenario and region + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_3, coords=coords_mixed) + + def test_dataframe_with_ambiguous_dimensions(self): + """Test DataFrame handling with ambiguous dimensions.""" + coords_ambiguous = { + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), # length 3 + } + + # Multi-column DataFrame with ambiguous dimensions + df = pd.DataFrame({'col1': [1, 2, 3], 'col2': [4, 5, 6], 'col3': [7, 8, 9]}) # 3x3 DataFrame + + # Should fail due to ambiguous dimensions + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(df, coords=coords_ambiguous) + + def test_error_message_quality_for_ambiguous_dimensions(self): + """Test that error messages for ambiguous dimensions are helpful.""" + coords_ambiguous = { + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), + 'region': pd.Index(['north', 'south', 'east'], name='region'), + 'technology': pd.Index(['solar', 'wind', 'gas'], name='technology'), + } + + # 1D array case + arr_1d = np.array([1, 2, 3]) + try: + DataConverter.to_dataarray(arr_1d, coords=coords_ambiguous) + raise AssertionError('Should have raised ConversionError') + except ConversionError as e: + error_msg = str(e) + assert 'matches multiple dimension' in error_msg + assert 'scenario' in error_msg + assert 'region' in error_msg + assert 'technology' in error_msg + + # 2D array case + arr_2d = np.random.rand(3, 3) + try: + DataConverter.to_dataarray(arr_2d, coords=coords_ambiguous) + raise AssertionError('Should have raised ConversionError') + except ConversionError as e: + error_msg = str(e) + assert 'matches multiple dimension combinations' in error_msg + assert '(3, 3)' in error_msg + + def test_ambiguous_with_broadcasting_target(self): + """Test ambiguous dimensions when target includes broadcasting.""" + coords_ambiguous_plus = { + 'time': pd.date_range('2024-01-01', periods=5, freq='D', name='time'), # length 5 + 'scenario': pd.Index(['A', 'B', 'C'], name='scenario'), # length 3 + 'region': pd.Index(['X', 'Y', 'Z'], name='region'), # length 3 - same as scenario + 'technology': pd.Index(['solar', 'wind'], name='technology'), # length 2 + } + + # 1D array with ambiguous length, but targeting broadcast scenario + arr_3 = np.array([10, 20, 30]) # length 3, matches scenario and region + + # Should fail even though it would broadcast to other dimensions + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_3, coords=coords_ambiguous_plus) + + # 2D array with one ambiguous dimension + arr_5x3 = np.random.rand(5, 3) # 5 is unique (time), 3 is ambiguous (scenario/region) + + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(arr_5x3, coords=coords_ambiguous_plus) + + def test_time_dimension_ambiguity(self): + """Test ambiguity specifically involving time dimension.""" + # Create scenario where time has same length as another dimension + coords_time_ambiguous = { + 'time': pd.date_range('2024-01-01', periods=3, freq='D', name='time'), # length 3 + 'scenario': pd.Index(['base', 'high', 'low'], name='scenario'), # length 3 - same as time + 'region': pd.Index(['north', 'south'], name='region'), # length 2 - unique + } + + # Time-indexed series should work even with ambiguous lengths (index matching takes precedence) + time_series = pd.Series([100, 200, 300], index=coords_time_ambiguous['time']) + result = DataConverter.to_dataarray(time_series, coords=coords_time_ambiguous) + assert result.shape == (3, 3, 2) + assert result.dims == ('time', 'scenario', 'region') + + # But generic array with length 3 should still fail + generic_array = np.array([100, 200, 300]) + with pytest.raises(ConversionError, match='matches multiple dimension'): + DataConverter.to_dataarray(generic_array, coords=coords_time_ambiguous) + + +if __name__ == '__main__': + pytest.main() diff --git a/tests/deprecated/test_effect.py b/tests/deprecated/test_effect.py new file mode 100644 index 000000000..10ae59bcc --- /dev/null +++ b/tests/deprecated/test_effect.py @@ -0,0 +1,369 @@ +import numpy as np +import pytest +import xarray as xr + +import flixopt as fx + +from .conftest import ( + assert_conequal, + assert_sets_equal, + assert_var_equal, + create_linopy_model, + create_optimization_and_solve, +) + + +class TestEffectModel: + """Test the FlowModel class.""" + + def test_minimal(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + effect = fx.Effect('Effect1', '€', 'Testing Effect') + + flow_system.add_elements(effect) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(effect.submodel.variables), + { + 'Effect1(periodic)', + 'Effect1(temporal)', + 'Effect1(temporal)|per_timestep', + 'Effect1', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(effect.submodel.constraints), + { + 'Effect1(periodic)', + 'Effect1(temporal)', + 'Effect1(temporal)|per_timestep', + 'Effect1', + }, + msg='Incorrect constraints', + ) + + assert_var_equal( + model.variables['Effect1'], model.add_variables(coords=model.get_coords(['period', 'scenario'])) + ) + assert_var_equal( + model.variables['Effect1(periodic)'], model.add_variables(coords=model.get_coords(['period', 'scenario'])) + ) + assert_var_equal( + model.variables['Effect1(temporal)'], + model.add_variables(coords=model.get_coords(['period', 'scenario'])), + ) + assert_var_equal( + model.variables['Effect1(temporal)|per_timestep'], model.add_variables(coords=model.get_coords()) + ) + + assert_conequal( + model.constraints['Effect1'], + model.variables['Effect1'] == model.variables['Effect1(temporal)'] + model.variables['Effect1(periodic)'], + ) + # In minimal/bounds tests with no contributing components, periodic totals should be zero + assert_conequal(model.constraints['Effect1(periodic)'], model.variables['Effect1(periodic)'] == 0) + assert_conequal( + model.constraints['Effect1(temporal)'], + model.variables['Effect1(temporal)'] == model.variables['Effect1(temporal)|per_timestep'].sum('time'), + ) + assert_conequal( + model.constraints['Effect1(temporal)|per_timestep'], + model.variables['Effect1(temporal)|per_timestep'] == 0, + ) + + def test_bounds(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + effect = fx.Effect( + 'Effect1', + '€', + 'Testing Effect', + minimum_temporal=1.0, + maximum_temporal=1.1, + minimum_periodic=2.0, + maximum_periodic=2.1, + minimum_total=3.0, + maximum_total=3.1, + minimum_per_hour=4.0, + maximum_per_hour=4.1, + ) + + flow_system.add_elements(effect) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(effect.submodel.variables), + { + 'Effect1(periodic)', + 'Effect1(temporal)', + 'Effect1(temporal)|per_timestep', + 'Effect1', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(effect.submodel.constraints), + { + 'Effect1(periodic)', + 'Effect1(temporal)', + 'Effect1(temporal)|per_timestep', + 'Effect1', + }, + msg='Incorrect constraints', + ) + + assert_var_equal( + model.variables['Effect1'], + model.add_variables(lower=3.0, upper=3.1, coords=model.get_coords(['period', 'scenario'])), + ) + assert_var_equal( + model.variables['Effect1(periodic)'], + model.add_variables(lower=2.0, upper=2.1, coords=model.get_coords(['period', 'scenario'])), + ) + assert_var_equal( + model.variables['Effect1(temporal)'], + model.add_variables(lower=1.0, upper=1.1, coords=model.get_coords(['period', 'scenario'])), + ) + assert_var_equal( + model.variables['Effect1(temporal)|per_timestep'], + model.add_variables( + lower=4.0 * model.hours_per_step, + upper=4.1 * model.hours_per_step, + coords=model.get_coords(['time', 'period', 'scenario']), + ), + ) + + assert_conequal( + model.constraints['Effect1'], + model.variables['Effect1'] == model.variables['Effect1(temporal)'] + model.variables['Effect1(periodic)'], + ) + # In minimal/bounds tests with no contributing components, periodic totals should be zero + assert_conequal(model.constraints['Effect1(periodic)'], model.variables['Effect1(periodic)'] == 0) + assert_conequal( + model.constraints['Effect1(temporal)'], + model.variables['Effect1(temporal)'] == model.variables['Effect1(temporal)|per_timestep'].sum('time'), + ) + assert_conequal( + model.constraints['Effect1(temporal)|per_timestep'], + model.variables['Effect1(temporal)|per_timestep'] == 0, + ) + + def test_shares(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + effect1 = fx.Effect( + 'Effect1', + '€', + 'Testing Effect', + ) + effect2 = fx.Effect( + 'Effect2', + '€', + 'Testing Effect', + share_from_temporal={'Effect1': 1.1}, + share_from_periodic={'Effect1': 2.1}, + ) + effect3 = fx.Effect( + 'Effect3', + '€', + 'Testing Effect', + share_from_temporal={'Effect1': 1.2}, + share_from_periodic={'Effect1': 2.2}, + ) + flow_system.add_elements(effect1, effect2, effect3) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(effect2.submodel.variables), + { + 'Effect2(periodic)', + 'Effect2(temporal)', + 'Effect2(temporal)|per_timestep', + 'Effect2', + 'Effect1(periodic)->Effect2(periodic)', + 'Effect1(temporal)->Effect2(temporal)', + }, + msg='Incorrect variables for effect2', + ) + + assert_sets_equal( + set(effect2.submodel.constraints), + { + 'Effect2(periodic)', + 'Effect2(temporal)', + 'Effect2(temporal)|per_timestep', + 'Effect2', + 'Effect1(periodic)->Effect2(periodic)', + 'Effect1(temporal)->Effect2(temporal)', + }, + msg='Incorrect constraints for effect2', + ) + + assert_conequal( + model.constraints['Effect2(periodic)'], + model.variables['Effect2(periodic)'] == model.variables['Effect1(periodic)->Effect2(periodic)'], + ) + + assert_conequal( + model.constraints['Effect2(temporal)|per_timestep'], + model.variables['Effect2(temporal)|per_timestep'] + == model.variables['Effect1(temporal)->Effect2(temporal)'], + ) + + assert_conequal( + model.constraints['Effect1(temporal)->Effect2(temporal)'], + model.variables['Effect1(temporal)->Effect2(temporal)'] + == model.variables['Effect1(temporal)|per_timestep'] * 1.1, + ) + + assert_conequal( + model.constraints['Effect1(periodic)->Effect2(periodic)'], + model.variables['Effect1(periodic)->Effect2(periodic)'] == model.variables['Effect1(periodic)'] * 2.1, + ) + + +class TestEffectResults: + @pytest.mark.filterwarnings('ignore::DeprecationWarning') + def test_shares(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + effect1 = fx.Effect('Effect1', '€', 'Testing Effect', share_from_temporal={'costs': 0.5}) + effect2 = fx.Effect( + 'Effect2', + '€', + 'Testing Effect', + share_from_temporal={'Effect1': 1.1}, + share_from_periodic={'Effect1': 2.1}, + ) + effect3 = fx.Effect( + 'Effect3', + '€', + 'Testing Effect', + share_from_temporal={'Effect1': 1.2, 'Effect2': 5}, + share_from_periodic={'Effect1': 2.2}, + ) + flow_system.add_elements( + effect1, + effect2, + effect3, + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=fx.InvestParameters(effects_of_investment_per_size=10, minimum_size=20, mandatory=True), + ), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ), + ) + + results = create_optimization_and_solve(flow_system, fx.solvers.HighsSolver(0.01, 60), 'Sim1').results + + effect_share_factors = { + 'temporal': { + ('costs', 'Effect1'): 0.5, + ('costs', 'Effect2'): 0.5 * 1.1, + ('costs', 'Effect3'): 0.5 * 1.1 * 5 + 0.5 * 1.2, # This is where the issue lies + ('Effect1', 'Effect2'): 1.1, + ('Effect1', 'Effect3'): 1.2 + 1.1 * 5, + ('Effect2', 'Effect3'): 5, + }, + 'periodic': { + ('Effect1', 'Effect2'): 2.1, + ('Effect1', 'Effect3'): 2.2, + }, + } + for key, value in effect_share_factors['temporal'].items(): + np.testing.assert_allclose(results.effect_share_factors['temporal'][key].values, value) + + for key, value in effect_share_factors['periodic'].items(): + np.testing.assert_allclose(results.effect_share_factors['periodic'][key].values, value) + + xr.testing.assert_allclose( + results.effects_per_component['temporal'].sum('component').sel(effect='costs', drop=True), + results.solution['costs(temporal)|per_timestep'].fillna(0), + ) + + xr.testing.assert_allclose( + results.effects_per_component['temporal'].sum('component').sel(effect='Effect1', drop=True), + results.solution['Effect1(temporal)|per_timestep'].fillna(0), + ) + + xr.testing.assert_allclose( + results.effects_per_component['temporal'].sum('component').sel(effect='Effect2', drop=True), + results.solution['Effect2(temporal)|per_timestep'].fillna(0), + ) + + xr.testing.assert_allclose( + results.effects_per_component['temporal'].sum('component').sel(effect='Effect3', drop=True), + results.solution['Effect3(temporal)|per_timestep'].fillna(0), + ) + + # periodic mode checks + xr.testing.assert_allclose( + results.effects_per_component['periodic'].sum('component').sel(effect='costs', drop=True), + results.solution['costs(periodic)'], + ) + + xr.testing.assert_allclose( + results.effects_per_component['periodic'].sum('component').sel(effect='Effect1', drop=True), + results.solution['Effect1(periodic)'], + ) + + xr.testing.assert_allclose( + results.effects_per_component['periodic'].sum('component').sel(effect='Effect2', drop=True), + results.solution['Effect2(periodic)'], + ) + + xr.testing.assert_allclose( + results.effects_per_component['periodic'].sum('component').sel(effect='Effect3', drop=True), + results.solution['Effect3(periodic)'], + ) + + # Total mode checks + xr.testing.assert_allclose( + results.effects_per_component['total'].sum('component').sel(effect='costs', drop=True), + results.solution['costs'], + ) + + xr.testing.assert_allclose( + results.effects_per_component['total'].sum('component').sel(effect='Effect1', drop=True), + results.solution['Effect1'], + ) + + xr.testing.assert_allclose( + results.effects_per_component['total'].sum('component').sel(effect='Effect2', drop=True), + results.solution['Effect2'], + ) + + xr.testing.assert_allclose( + results.effects_per_component['total'].sum('component').sel(effect='Effect3', drop=True), + results.solution['Effect3'], + ) + + +class TestPenaltyAsObjective: + """Test that Penalty cannot be set as the objective effect.""" + + def test_penalty_cannot_be_created_as_objective(self): + """Test that creating a Penalty effect with is_objective=True raises ValueError.""" + import pytest + + with pytest.raises(ValueError, match='Penalty.*cannot be set as the objective'): + fx.Effect('Penalty', '€', 'Test Penalty', is_objective=True) + + def test_penalty_cannot_be_set_as_objective_via_setter(self): + """Test that setting Penalty as objective via setter raises ValueError.""" + import pandas as pd + import pytest + + # Create a fresh flow system without pre-existing objective + flow_system = fx.FlowSystem(timesteps=pd.date_range('2020-01-01', periods=10, freq='h')) + penalty_effect = fx.Effect('Penalty', '€', 'Test Penalty', is_objective=False) + + flow_system.add_elements(penalty_effect) + + with pytest.raises(ValueError, match='Penalty.*cannot be set as the objective'): + flow_system.effects.objective_effect = penalty_effect diff --git a/tests/deprecated/test_effects_shares_summation.py b/tests/deprecated/test_effects_shares_summation.py new file mode 100644 index 000000000..312934732 --- /dev/null +++ b/tests/deprecated/test_effects_shares_summation.py @@ -0,0 +1,225 @@ +import pytest +import xarray as xr + +from flixopt.effects import calculate_all_conversion_paths + + +def test_direct_conversions(): + """Test direct conversions with simple scalar values.""" + conversion_dict = {'A': {'B': xr.DataArray(2.0)}, 'B': {'C': xr.DataArray(3.0)}} + + result = calculate_all_conversion_paths(conversion_dict) + + # Check direct conversions + assert ('A', 'B') in result + assert ('B', 'C') in result + assert result[('A', 'B')].item() == 2.0 + assert result[('B', 'C')].item() == 3.0 + + # Check indirect conversion + assert ('A', 'C') in result + assert result[('A', 'C')].item() == 6.0 # 2.0 * 3.0 + + +def test_multiple_paths(): + """Test multiple paths between nodes that should be summed.""" + conversion_dict = { + 'A': {'B': xr.DataArray(2.0), 'C': xr.DataArray(3.0)}, + 'B': {'D': xr.DataArray(4.0)}, + 'C': {'D': xr.DataArray(5.0)}, + } + + result = calculate_all_conversion_paths(conversion_dict) + + # A to D should sum two paths: A->B->D (2*4=8) and A->C->D (3*5=15) + assert ('A', 'D') in result + assert result[('A', 'D')].item() == 8.0 + 15.0 + + +def test_xarray_conversions(): + """Test with xarray DataArrays that have dimensions.""" + # Create DataArrays with a time dimension + time_points = [1, 2, 3] + a_to_b = xr.DataArray([2.0, 2.1, 2.2], dims='time', coords={'time': time_points}) + b_to_c = xr.DataArray([3.0, 3.1, 3.2], dims='time', coords={'time': time_points}) + + conversion_dict = {'A': {'B': a_to_b}, 'B': {'C': b_to_c}} + + result = calculate_all_conversion_paths(conversion_dict) + + # Check indirect conversion preserves dimensions + assert ('A', 'C') in result + assert result[('A', 'C')].dims == ('time',) + + # Check values at each time point + for i, t in enumerate(time_points): + expected = a_to_b.values[i] * b_to_c.values[i] + assert pytest.approx(result[('A', 'C')].sel(time=t).item()) == expected + + +def test_long_paths(): + """Test with longer paths (more than one intermediate node).""" + conversion_dict = { + 'A': {'B': xr.DataArray(2.0)}, + 'B': {'C': xr.DataArray(3.0)}, + 'C': {'D': xr.DataArray(4.0)}, + 'D': {'E': xr.DataArray(5.0)}, + } + + result = calculate_all_conversion_paths(conversion_dict) + + # Check the full path A->B->C->D->E + assert ('A', 'E') in result + expected = 2.0 * 3.0 * 4.0 * 5.0 # 120.0 + assert result[('A', 'E')].item() == expected + + +def test_diamond_paths(): + """Test with a diamond shape graph with multiple paths to the same destination.""" + conversion_dict = { + 'A': {'B': xr.DataArray(2.0), 'C': xr.DataArray(3.0)}, + 'B': {'D': xr.DataArray(4.0)}, + 'C': {'D': xr.DataArray(5.0)}, + 'D': {'E': xr.DataArray(6.0)}, + } + + result = calculate_all_conversion_paths(conversion_dict) + + # A to E should go through both paths: + # A->B->D->E (2*4*6=48) and A->C->D->E (3*5*6=90) + assert ('A', 'E') in result + expected = 48.0 + 90.0 # 138.0 + assert result[('A', 'E')].item() == expected + + +def test_effect_shares_example(): + """Test the specific example from the effects share factors test.""" + # Create the conversion dictionary based on test example + conversion_dict = { + 'costs': {'Effect1': xr.DataArray(0.5)}, + 'Effect1': {'Effect2': xr.DataArray(1.1), 'Effect3': xr.DataArray(1.2)}, + 'Effect2': {'Effect3': xr.DataArray(5.0)}, + } + + result = calculate_all_conversion_paths(conversion_dict) + + # Test direct paths + assert result[('costs', 'Effect1')].item() == 0.5 + assert result[('Effect1', 'Effect2')].item() == 1.1 + assert result[('Effect2', 'Effect3')].item() == 5.0 + + # Test indirect paths + # costs -> Effect2 = costs -> Effect1 -> Effect2 = 0.5 * 1.1 + assert result[('costs', 'Effect2')].item() == 0.5 * 1.1 + + # costs -> Effect3 has two paths: + # 1. costs -> Effect1 -> Effect3 = 0.5 * 1.2 = 0.6 + # 2. costs -> Effect1 -> Effect2 -> Effect3 = 0.5 * 1.1 * 5 = 2.75 + # Total = 0.6 + 2.75 = 3.35 + assert result[('costs', 'Effect3')].item() == 0.5 * 1.2 + 0.5 * 1.1 * 5 + + # Effect1 -> Effect3 has two paths: + # 1. Effect1 -> Effect2 -> Effect3 = 1.1 * 5.0 = 5.5 + # 2. Effect1 -> Effect3 = 1.2 + # Total = 0.6 + 2.75 = 3.35 + assert result[('Effect1', 'Effect3')].item() == 1.2 + 1.1 * 5.0 + + +def test_empty_conversion_dict(): + """Test with an empty conversion dictionary.""" + result = calculate_all_conversion_paths({}) + assert len(result) == 0 + + +def test_no_indirect_paths(): + """Test with a dictionary that has no indirect paths.""" + conversion_dict = {'A': {'B': xr.DataArray(2.0)}, 'C': {'D': xr.DataArray(3.0)}} + + result = calculate_all_conversion_paths(conversion_dict) + + # Only direct paths should exist + assert len(result) == 2 + assert ('A', 'B') in result + assert ('C', 'D') in result + assert result[('A', 'B')].item() == 2.0 + assert result[('C', 'D')].item() == 3.0 + + +def test_complex_network(): + """Test with a complex network of many nodes and multiple paths, without circular references.""" + # Create a directed acyclic graph with many nodes + # Structure resembles a layered network with multiple paths + conversion_dict = { + 'A': {'B': xr.DataArray(1.5), 'C': xr.DataArray(2.0), 'D': xr.DataArray(0.5)}, + 'B': {'E': xr.DataArray(3.0), 'F': xr.DataArray(1.2)}, + 'C': {'E': xr.DataArray(0.8), 'G': xr.DataArray(2.5)}, + 'D': {'G': xr.DataArray(1.8), 'H': xr.DataArray(3.2)}, + 'E': {'I': xr.DataArray(0.7), 'J': xr.DataArray(1.4)}, + 'F': {'J': xr.DataArray(2.2), 'K': xr.DataArray(0.9)}, + 'G': {'K': xr.DataArray(1.6), 'L': xr.DataArray(2.8)}, + 'H': {'L': xr.DataArray(0.4), 'M': xr.DataArray(1.1)}, + 'I': {'N': xr.DataArray(2.3)}, + 'J': {'N': xr.DataArray(1.9), 'O': xr.DataArray(0.6)}, + 'K': {'O': xr.DataArray(3.5), 'P': xr.DataArray(1.3)}, + 'L': {'P': xr.DataArray(2.7), 'Q': xr.DataArray(0.8)}, + 'M': {'Q': xr.DataArray(2.1)}, + 'N': {'R': xr.DataArray(1.7)}, + 'O': {'R': xr.DataArray(2.9), 'S': xr.DataArray(1.0)}, + 'P': {'S': xr.DataArray(2.4)}, + 'Q': {'S': xr.DataArray(1.5)}, + } + + result = calculate_all_conversion_paths(conversion_dict) + + # Check some direct paths + assert result[('A', 'B')].item() == 1.5 + assert result[('D', 'H')].item() == 3.2 + assert result[('G', 'L')].item() == 2.8 + + # Check some two-step paths + assert result[('A', 'E')].item() == 1.5 * 3.0 + 2.0 * 0.8 # A->B->E + A->C->E + assert result[('B', 'J')].item() == 3.0 * 1.4 + 1.2 * 2.2 # B->E->J + B->F->J + + # Check some three-step paths + # A->B->E->I + # A->C->E->I + expected_a_to_i = 1.5 * 3.0 * 0.7 + 2.0 * 0.8 * 0.7 + assert pytest.approx(result[('A', 'I')].item()) == expected_a_to_i + + # Check some four-step paths + # A->B->E->I->N + # A->C->E->I->N + expected_a_to_n = 1.5 * 3.0 * 0.7 * 2.3 + 2.0 * 0.8 * 0.7 * 2.3 + expected_a_to_n += 1.5 * 3.0 * 1.4 * 1.9 + 2.0 * 0.8 * 1.4 * 1.9 # A->B->E->J->N + A->C->E->J->N + expected_a_to_n += 1.5 * 1.2 * 2.2 * 1.9 # A->B->F->J->N + assert pytest.approx(result[('A', 'N')].item()) == expected_a_to_n + + # Check a very long path from A to S + # This should include: + # A->B->E->J->O->S + # A->B->F->K->O->S + # A->C->E->J->O->S + # A->C->G->K->O->S + # A->D->G->K->O->S + # A->D->H->L->P->S + # A->D->H->M->Q->S + # And many more + assert ('A', 'S') in result + + # There are many paths to R from A - check their existence + assert ('A', 'R') in result + + # Check that there's no direct path from A to R + # But there should be indirect paths + assert ('A', 'R') in result + assert 'A' not in conversion_dict.get('R', {}) + + # Count the number of paths calculated to verify algorithm explored all connections + # In a DAG with 19 nodes (A through S), the maximum number of pairs is 19*18 = 342 + # But we won't have all possible connections due to the structure + # Just verify we have a reasonable number + assert len(result) > 50 + + +if __name__ == '__main__': + pytest.main() diff --git a/tests/deprecated/test_examples.py b/tests/deprecated/test_examples.py new file mode 100644 index 000000000..020670552 --- /dev/null +++ b/tests/deprecated/test_examples.py @@ -0,0 +1,94 @@ +import os +import subprocess +import sys +from contextlib import contextmanager +from pathlib import Path + +import pytest + +# Path to the examples directory +EXAMPLES_DIR = Path(__file__).parent.parent / 'examples' + +# Examples that have dependencies and must run in sequence +DEPENDENT_EXAMPLES = ( + '02_Complex/complex_example.py', + '02_Complex/complex_example_results.py', +) + + +@contextmanager +def working_directory(path): + """Context manager for changing the working directory.""" + original_cwd = os.getcwd() + try: + os.chdir(path) + yield + finally: + os.chdir(original_cwd) + + +@pytest.mark.parametrize( + 'example_script', + sorted( + [p for p in EXAMPLES_DIR.rglob('*.py') if str(p.relative_to(EXAMPLES_DIR)) not in DEPENDENT_EXAMPLES], + key=lambda path: (str(path.parent), path.name), + ), + ids=lambda path: str(path.relative_to(EXAMPLES_DIR)).replace(os.sep, '/'), +) +@pytest.mark.examples +def test_independent_examples(example_script): + """ + Test independent example scripts. + Ensures they run without errors. + Changes the current working directory to the directory of the example script. + Runs them alphabetically. + This imitates behaviour of running the script directly. + """ + with working_directory(example_script.parent): + timeout = 800 + # Set environment variable to disable interactive plotting + env = os.environ.copy() + env['FLIXOPT_CI'] = 'true' + try: + result = subprocess.run( + [sys.executable, example_script.name], + capture_output=True, + text=True, + timeout=timeout, + env=env, + ) + except subprocess.TimeoutExpired: + pytest.fail(f'Script {example_script} timed out after {timeout} seconds') + + assert result.returncode == 0, ( + f'Script {example_script} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' + ) + + +@pytest.mark.examples +def test_dependent_examples(): + """Test examples that must run in order (complex_example.py generates data for complex_example_results.py).""" + for script_path in DEPENDENT_EXAMPLES: + script_full_path = EXAMPLES_DIR / script_path + + with working_directory(script_full_path.parent): + timeout = 600 + # Set environment variable to disable interactive plotting + env = os.environ.copy() + env['FLIXOPT_CI'] = 'true' + try: + result = subprocess.run( + [sys.executable, script_full_path.name], + capture_output=True, + text=True, + timeout=timeout, + env=env, + ) + except subprocess.TimeoutExpired: + pytest.fail(f'Script {script_path} timed out after {timeout} seconds') + + assert result.returncode == 0, f'{script_path} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' + + +if __name__ == '__main__': + pytest.main(['-v', '--disable-warnings', '-m', 'examples']) diff --git a/tests/deprecated/test_flow.py b/tests/deprecated/test_flow.py new file mode 100644 index 000000000..0a1a03341 --- /dev/null +++ b/tests/deprecated/test_flow.py @@ -0,0 +1,1338 @@ +import numpy as np +import pytest +import xarray as xr + +import flixopt as fx + +from .conftest import assert_conequal, assert_sets_equal, assert_var_equal, create_linopy_model + + +class TestFlowModel: + """Test the FlowModel class.""" + + def test_flow_minimal(self, basic_flow_system_linopy_coords, coords_config): + """Test that flow model constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow('Wärme', bus='Fernwärme', size=100) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + + model = create_linopy_model(flow_system) + + assert_conequal( + model.constraints['Sink(Wärme)|total_flow_hours'], + flow.submodel.variables['Sink(Wärme)|total_flow_hours'] + == (flow.submodel.variables['Sink(Wärme)|flow_rate'] * model.hours_per_step).sum('time'), + ) + assert_var_equal(flow.submodel.flow_rate, model.add_variables(lower=0, upper=100, coords=model.get_coords())) + assert_var_equal( + flow.submodel.total_flow_hours, + model.add_variables(lower=0, coords=model.get_coords(['period', 'scenario'])), + ) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate'}, + msg='Incorrect variables', + ) + assert_sets_equal(set(flow.submodel.constraints), {'Sink(Wärme)|total_flow_hours'}, msg='Incorrect constraints') + + def test_flow(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + relative_minimum=np.linspace(0, 0.5, timesteps.size), + relative_maximum=np.linspace(0.5, 1, timesteps.size), + flow_hours_max=1000, + flow_hours_min=10, + load_factor_min=0.1, + load_factor_max=0.9, + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + # total_flow_hours + assert_conequal( + model.constraints['Sink(Wärme)|total_flow_hours'], + flow.submodel.variables['Sink(Wärme)|total_flow_hours'] + == (flow.submodel.variables['Sink(Wärme)|flow_rate'] * model.hours_per_step).sum('time'), + ) + + assert_var_equal( + flow.submodel.total_flow_hours, + model.add_variables(lower=10, upper=1000, coords=model.get_coords(['period', 'scenario'])), + ) + + assert flow.relative_minimum.dims == tuple(model.get_coords()) + assert flow.relative_maximum.dims == tuple(model.get_coords()) + + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=flow.relative_minimum * 100, + upper=flow.relative_maximum * 100, + coords=model.get_coords(), + ), + ) + + assert_conequal( + model.constraints['Sink(Wärme)|load_factor_min'], + flow.submodel.variables['Sink(Wärme)|total_flow_hours'] >= model.hours_per_step.sum('time') * 0.1 * 100, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|load_factor_max'], + flow.submodel.variables['Sink(Wärme)|total_flow_hours'] <= model.hours_per_step.sum('time') * 0.9 * 100, + ) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate'}, + msg='Incorrect variables', + ) + assert_sets_equal( + set(flow.submodel.constraints), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|load_factor_max', 'Sink(Wärme)|load_factor_min'}, + msg='Incorrect constraints', + ) + + def test_effects_per_flow_hour(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + costs_per_flow_hour = xr.DataArray(np.linspace(1, 2, timesteps.size), coords=(timesteps,)) + co2_per_flow_hour = xr.DataArray(np.linspace(4, 5, timesteps.size), coords=(timesteps,)) + + flow = fx.Flow( + 'Wärme', bus='Fernwärme', effects_per_flow_hour={'costs': costs_per_flow_hour, 'CO2': co2_per_flow_hour} + ) + flow_system.add_elements(fx.Sink('Sink', inputs=[flow]), fx.Effect('CO2', 't', '')) + model = create_linopy_model(flow_system) + costs, co2 = flow_system.effects['costs'], flow_system.effects['CO2'] + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate'}, + msg='Incorrect variables', + ) + assert_sets_equal(set(flow.submodel.constraints), {'Sink(Wärme)|total_flow_hours'}, msg='Incorrect constraints') + + assert 'Sink(Wärme)->costs(temporal)' in set(costs.submodel.constraints) + assert 'Sink(Wärme)->CO2(temporal)' in set(co2.submodel.constraints) + + assert_conequal( + model.constraints['Sink(Wärme)->costs(temporal)'], + model.variables['Sink(Wärme)->costs(temporal)'] + == flow.submodel.variables['Sink(Wärme)|flow_rate'] * model.hours_per_step * costs_per_flow_hour, + ) + + assert_conequal( + model.constraints['Sink(Wärme)->CO2(temporal)'], + model.variables['Sink(Wärme)->CO2(temporal)'] + == flow.submodel.variables['Sink(Wärme)|flow_rate'] * model.hours_per_step * co2_per_flow_hour, + ) + + +class TestFlowInvestModel: + """Test the FlowModel class.""" + + def test_flow_invest(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(minimum_size=20, maximum_size=100, mandatory=True), + relative_minimum=np.linspace(0.1, 0.5, timesteps.size), + relative_maximum=np.linspace(0.5, 1, timesteps.size), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate', + 'Sink(Wärme)|size', + }, + msg='Incorrect variables', + ) + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate|ub', + 'Sink(Wärme)|flow_rate|lb', + }, + msg='Incorrect constraints', + ) + + # size + assert_var_equal( + model['Sink(Wärme)|size'], + model.add_variables(lower=20, upper=100, coords=model.get_coords(['period', 'scenario'])), + ) + + assert flow.relative_minimum.dims == tuple(model.get_coords()) + assert flow.relative_maximum.dims == tuple(model.get_coords()) + + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=flow.relative_minimum * 20, + upper=flow.relative_maximum * 100, + coords=model.get_coords(), + ), + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_minimum, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + <= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_maximum, + ) + + def test_flow_invest_optional(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(minimum_size=20, maximum_size=100, mandatory=False), + relative_minimum=np.linspace(0.1, 0.5, timesteps.size), + relative_maximum=np.linspace(0.5, 1, timesteps.size), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate', 'Sink(Wärme)|size', 'Sink(Wärme)|invested'}, + msg='Incorrect variables', + ) + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|size|lb', + 'Sink(Wärme)|size|ub', + 'Sink(Wärme)|flow_rate|lb', + 'Sink(Wärme)|flow_rate|ub', + }, + msg='Incorrect constraints', + ) + + assert_var_equal( + model['Sink(Wärme)|size'], + model.add_variables(lower=0, upper=100, coords=model.get_coords(['period', 'scenario'])), + ) + + assert_var_equal( + model['Sink(Wärme)|invested'], + model.add_variables(binary=True, coords=model.get_coords(['period', 'scenario'])), + ) + + assert flow.relative_minimum.dims == tuple(model.get_coords()) + assert flow.relative_maximum.dims == tuple(model.get_coords()) + + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=0, # Optional investment + upper=flow.relative_maximum * 100, + coords=model.get_coords(), + ), + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_minimum, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + <= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_maximum, + ) + + # Is invested + assert_conequal( + model.constraints['Sink(Wärme)|size|ub'], + flow.submodel.variables['Sink(Wärme)|size'] <= flow.submodel.variables['Sink(Wärme)|invested'] * 100, + ) + assert_conequal( + model.constraints['Sink(Wärme)|size|lb'], + flow.submodel.variables['Sink(Wärme)|size'] >= flow.submodel.variables['Sink(Wärme)|invested'] * 20, + ) + + def test_flow_invest_optional_wo_min_size(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(maximum_size=100, mandatory=False), + relative_minimum=np.linspace(0.1, 0.5, timesteps.size), + relative_maximum=np.linspace(0.5, 1, timesteps.size), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate', 'Sink(Wärme)|size', 'Sink(Wärme)|invested'}, + msg='Incorrect variables', + ) + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|size|ub', + 'Sink(Wärme)|size|lb', + 'Sink(Wärme)|flow_rate|lb', + 'Sink(Wärme)|flow_rate|ub', + }, + msg='Incorrect constraints', + ) + + assert_var_equal( + model['Sink(Wärme)|size'], + model.add_variables(lower=0, upper=100, coords=model.get_coords(['period', 'scenario'])), + ) + + assert_var_equal( + model['Sink(Wärme)|invested'], + model.add_variables(binary=True, coords=model.get_coords(['period', 'scenario'])), + ) + + assert flow.relative_minimum.dims == tuple(model.get_coords()) + assert flow.relative_maximum.dims == tuple(model.get_coords()) + + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=0, # Optional investment + upper=flow.relative_maximum * 100, + coords=model.get_coords(), + ), + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_minimum, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + <= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_maximum, + ) + + # Is invested + assert_conequal( + model.constraints['Sink(Wärme)|size|ub'], + flow.submodel.variables['Sink(Wärme)|size'] <= flow.submodel.variables['Sink(Wärme)|invested'] * 100, + ) + assert_conequal( + model.constraints['Sink(Wärme)|size|lb'], + flow.submodel.variables['Sink(Wärme)|size'] >= flow.submodel.variables['Sink(Wärme)|invested'] * 1e-5, + ) + + def test_flow_invest_wo_min_size_non_optional(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(maximum_size=100, mandatory=True), + relative_minimum=np.linspace(0.1, 0.5, timesteps.size), + relative_maximum=np.linspace(0.5, 1, timesteps.size), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate', 'Sink(Wärme)|size'}, + msg='Incorrect variables', + ) + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate|lb', + 'Sink(Wärme)|flow_rate|ub', + }, + msg='Incorrect constraints', + ) + + assert_var_equal( + model['Sink(Wärme)|size'], + model.add_variables(lower=1e-5, upper=100, coords=model.get_coords(['period', 'scenario'])), + ) + + assert flow.relative_minimum.dims == tuple(model.get_coords()) + assert flow.relative_maximum.dims == tuple(model.get_coords()) + + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=flow.relative_minimum * 1e-5, + upper=flow.relative_maximum * 100, + coords=model.get_coords(), + ), + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_minimum, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + <= flow.submodel.variables['Sink(Wärme)|size'] * flow.relative_maximum, + ) + + def test_flow_invest_fixed_size(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with fixed size investment.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(fixed_size=75, mandatory=True), + relative_minimum=0.2, + relative_maximum=0.9, + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate', 'Sink(Wärme)|size'}, + msg='Incorrect variables', + ) + + # Check that size is fixed to 75 + assert_var_equal( + flow.submodel.variables['Sink(Wärme)|size'], + model.add_variables(lower=75, upper=75, coords=model.get_coords(['period', 'scenario'])), + ) + + # Check flow rate bounds + assert_var_equal( + flow.submodel.flow_rate, model.add_variables(lower=0.2 * 75, upper=0.9 * 75, coords=model.get_coords()) + ) + + def test_flow_invest_with_effects(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with investment effects.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create effects + co2 = fx.Effect(label='CO2', unit='ton', description='CO2 emissions') + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters( + minimum_size=20, + maximum_size=100, + mandatory=False, + effects_of_investment={'costs': 1000, 'CO2': 5}, # Fixed investment effects + effects_of_investment_per_size={'costs': 500, 'CO2': 0.1}, # Specific investment effects + ), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow]), co2) + model = create_linopy_model(flow_system) + + # Check investment effects + assert 'Sink(Wärme)->costs(periodic)' in model.variables + assert 'Sink(Wärme)->CO2(periodic)' in model.variables + + # Check fix effects (applied only when invested=1) + assert_conequal( + model.constraints['Sink(Wärme)->costs(periodic)'], + model.variables['Sink(Wärme)->costs(periodic)'] + == flow.submodel.variables['Sink(Wärme)|invested'] * 1000 + + flow.submodel.variables['Sink(Wärme)|size'] * 500, + ) + + assert_conequal( + model.constraints['Sink(Wärme)->CO2(periodic)'], + model.variables['Sink(Wärme)->CO2(periodic)'] + == flow.submodel.variables['Sink(Wärme)|invested'] * 5 + flow.submodel.variables['Sink(Wärme)|size'] * 0.1, + ) + + def test_flow_invest_divest_effects(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with divestment effects.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters( + minimum_size=20, + maximum_size=100, + mandatory=False, + effects_of_retirement={'costs': 500}, # Cost incurred when NOT investing + ), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + # Check divestment effects + assert 'Sink(Wärme)->costs(periodic)' in model.constraints + + assert_conequal( + model.constraints['Sink(Wärme)->costs(periodic)'], + model.variables['Sink(Wärme)->costs(periodic)'] + (model.variables['Sink(Wärme)|invested'] - 1) * 500 == 0, + ) + + +class TestFlowOnModel: + """Test the FlowModel class.""" + + def test_flow_on(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + relative_minimum=0.2, + relative_maximum=0.8, + status_parameters=fx.StatusParameters(), + ) + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + {'Sink(Wärme)|total_flow_hours', 'Sink(Wärme)|flow_rate', 'Sink(Wärme)|status', 'Sink(Wärme)|active_hours'}, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|active_hours', + 'Sink(Wärme)|flow_rate|lb', + 'Sink(Wärme)|flow_rate|ub', + }, + msg='Incorrect constraints', + ) + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=0, + upper=0.8 * 100, + coords=model.get_coords(), + ), + ) + + # Status + assert_var_equal( + flow.submodel.status.status, + model.add_variables(binary=True, coords=model.get_coords()), + ) + # Upper bound is total hours when active_hours_max is not specified + total_hours = model.hours_per_step.sum('time') + assert_var_equal( + model.variables['Sink(Wärme)|active_hours'], + model.add_variables(lower=0, upper=total_hours, coords=model.get_coords(['period', 'scenario'])), + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|status'] * 0.2 * 100, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + <= flow.submodel.variables['Sink(Wärme)|status'] * 0.8 * 100, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|active_hours'], + flow.submodel.variables['Sink(Wärme)|active_hours'] + == (flow.submodel.variables['Sink(Wärme)|status'] * model.hours_per_step).sum('time'), + ) + + def test_effects_per_active_hour(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + costs_per_running_hour = np.linspace(1, 2, timesteps.size) + co2_per_running_hour = np.linspace(4, 5, timesteps.size) + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + status_parameters=fx.StatusParameters( + effects_per_active_hour={'costs': costs_per_running_hour, 'CO2': co2_per_running_hour} + ), + ) + flow_system.add_elements(fx.Sink('Sink', inputs=[flow]), fx.Effect('CO2', 't', '')) + model = create_linopy_model(flow_system) + costs, co2 = flow_system.effects['costs'], flow_system.effects['CO2'] + + assert_sets_equal( + set(flow.submodel.variables), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate', + 'Sink(Wärme)|status', + 'Sink(Wärme)|active_hours', + }, + msg='Incorrect variables', + ) + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate|lb', + 'Sink(Wärme)|flow_rate|ub', + 'Sink(Wärme)|active_hours', + }, + msg='Incorrect constraints', + ) + + assert 'Sink(Wärme)->costs(temporal)' in set(costs.submodel.constraints) + assert 'Sink(Wärme)->CO2(temporal)' in set(co2.submodel.constraints) + + costs_per_running_hour = flow.status_parameters.effects_per_active_hour['costs'] + co2_per_running_hour = flow.status_parameters.effects_per_active_hour['CO2'] + + assert costs_per_running_hour.dims == tuple(model.get_coords()) + assert co2_per_running_hour.dims == tuple(model.get_coords()) + + assert_conequal( + model.constraints['Sink(Wärme)->costs(temporal)'], + model.variables['Sink(Wärme)->costs(temporal)'] + == flow.submodel.variables['Sink(Wärme)|status'] * model.hours_per_step * costs_per_running_hour, + ) + + assert_conequal( + model.constraints['Sink(Wärme)->CO2(temporal)'], + model.variables['Sink(Wärme)->CO2(temporal)'] + == flow.submodel.variables['Sink(Wärme)|status'] * model.hours_per_step * co2_per_running_hour, + ) + + def test_consecutive_on_hours(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with minimum and maximum consecutive on hours.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters( + min_uptime=2, # Must run for at least 2 hours when turned on + max_uptime=8, # Can't run more than 8 consecutive hours + ), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert {'Sink(Wärme)|uptime', 'Sink(Wärme)|status'}.issubset(set(flow.submodel.variables)) + + assert_sets_equal( + { + 'Sink(Wärme)|uptime|ub', + 'Sink(Wärme)|uptime|forward', + 'Sink(Wärme)|uptime|backward', + 'Sink(Wärme)|uptime|initial', + 'Sink(Wärme)|uptime|lb', + } + & set(flow.submodel.constraints), + { + 'Sink(Wärme)|uptime|ub', + 'Sink(Wärme)|uptime|forward', + 'Sink(Wärme)|uptime|backward', + 'Sink(Wärme)|uptime|initial', + 'Sink(Wärme)|uptime|lb', + }, + msg='Missing uptime constraints', + ) + + assert_var_equal( + model.variables['Sink(Wärme)|uptime'], + model.add_variables(lower=0, upper=8, coords=model.get_coords()), + ) + + mega = model.hours_per_step.sum('time') + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|ub'], + model.variables['Sink(Wärme)|uptime'] <= model.variables['Sink(Wärme)|status'] * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|forward'], + model.variables['Sink(Wärme)|uptime'].isel(time=slice(1, None)) + <= model.variables['Sink(Wärme)|uptime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)), + ) + + # eq: duration(t) >= duration(t - 1) + dt(t) + (On(t) - 1) * BIG + assert_conequal( + model.constraints['Sink(Wärme)|uptime|backward'], + model.variables['Sink(Wärme)|uptime'].isel(time=slice(1, None)) + >= model.variables['Sink(Wärme)|uptime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)) + + (model.variables['Sink(Wärme)|status'].isel(time=slice(1, None)) - 1) * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|initial'], + model.variables['Sink(Wärme)|uptime'].isel(time=0) + == model.variables['Sink(Wärme)|status'].isel(time=0) * model.hours_per_step.isel(time=0), + ) + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|lb'], + model.variables['Sink(Wärme)|uptime'] + >= ( + model.variables['Sink(Wärme)|status'].isel(time=slice(None, -1)) + - model.variables['Sink(Wärme)|status'].isel(time=slice(1, None)) + ) + * 2, + ) + + def test_consecutive_on_hours_previous(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with minimum and maximum uptime.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters( + min_uptime=2, # Must run for at least 2 hours when active + max_uptime=8, # Can't run more than 8 consecutive hours + ), + previous_flow_rate=np.array([10, 20, 30, 0, 20, 20, 30]), # Previously active for 3 steps + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert {'Sink(Wärme)|uptime', 'Sink(Wärme)|status'}.issubset(set(flow.submodel.variables)) + + assert_sets_equal( + { + 'Sink(Wärme)|uptime|lb', + 'Sink(Wärme)|uptime|forward', + 'Sink(Wärme)|uptime|backward', + 'Sink(Wärme)|uptime|initial', + } + & set(flow.submodel.constraints), + { + 'Sink(Wärme)|uptime|lb', + 'Sink(Wärme)|uptime|forward', + 'Sink(Wärme)|uptime|backward', + 'Sink(Wärme)|uptime|initial', + }, + msg='Missing uptime constraints for previous states', + ) + + assert_var_equal( + model.variables['Sink(Wärme)|uptime'], + model.add_variables(lower=0, upper=8, coords=model.get_coords()), + ) + + mega = model.hours_per_step.sum('time') + model.hours_per_step.isel(time=0) * 3 + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|ub'], + model.variables['Sink(Wärme)|uptime'] <= model.variables['Sink(Wärme)|status'] * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|forward'], + model.variables['Sink(Wärme)|uptime'].isel(time=slice(1, None)) + <= model.variables['Sink(Wärme)|uptime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)), + ) + + # eq: duration(t) >= duration(t - 1) + dt(t) + (On(t) - 1) * BIG + assert_conequal( + model.constraints['Sink(Wärme)|uptime|backward'], + model.variables['Sink(Wärme)|uptime'].isel(time=slice(1, None)) + >= model.variables['Sink(Wärme)|uptime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)) + + (model.variables['Sink(Wärme)|status'].isel(time=slice(1, None)) - 1) * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|initial'], + model.variables['Sink(Wärme)|uptime'].isel(time=0) + == model.variables['Sink(Wärme)|status'].isel(time=0) * (model.hours_per_step.isel(time=0) * (1 + 3)), + ) + + assert_conequal( + model.constraints['Sink(Wärme)|uptime|lb'], + model.variables['Sink(Wärme)|uptime'] + >= ( + model.variables['Sink(Wärme)|status'].isel(time=slice(None, -1)) + - model.variables['Sink(Wärme)|status'].isel(time=slice(1, None)) + ) + * 2, + ) + + def test_consecutive_off_hours(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with minimum and maximum consecutive inactive hours.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters( + min_downtime=4, # Must stay inactive for at least 4 hours when shut down + max_downtime=12, # Can't be inactive for more than 12 consecutive hours + ), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert {'Sink(Wärme)|downtime', 'Sink(Wärme)|inactive'}.issubset(set(flow.submodel.variables)) + + assert_sets_equal( + { + 'Sink(Wärme)|downtime|ub', + 'Sink(Wärme)|downtime|forward', + 'Sink(Wärme)|downtime|backward', + 'Sink(Wärme)|downtime|initial', + 'Sink(Wärme)|downtime|lb', + } + & set(flow.submodel.constraints), + { + 'Sink(Wärme)|downtime|ub', + 'Sink(Wärme)|downtime|forward', + 'Sink(Wärme)|downtime|backward', + 'Sink(Wärme)|downtime|initial', + 'Sink(Wärme)|downtime|lb', + }, + msg='Missing consecutive inactive hours constraints', + ) + + assert_var_equal( + model.variables['Sink(Wärme)|downtime'], + model.add_variables(lower=0, upper=12, coords=model.get_coords()), + ) + + mega = model.hours_per_step.sum('time') + model.hours_per_step.isel(time=0) * 1 # previously inactive for 1h + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|ub'], + model.variables['Sink(Wärme)|downtime'] <= model.variables['Sink(Wärme)|inactive'] * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|forward'], + model.variables['Sink(Wärme)|downtime'].isel(time=slice(1, None)) + <= model.variables['Sink(Wärme)|downtime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)), + ) + + # eq: duration(t) >= duration(t - 1) + dt(t) + (On(t) - 1) * BIG + assert_conequal( + model.constraints['Sink(Wärme)|downtime|backward'], + model.variables['Sink(Wärme)|downtime'].isel(time=slice(1, None)) + >= model.variables['Sink(Wärme)|downtime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)) + + (model.variables['Sink(Wärme)|inactive'].isel(time=slice(1, None)) - 1) * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|initial'], + model.variables['Sink(Wärme)|downtime'].isel(time=0) + == model.variables['Sink(Wärme)|inactive'].isel(time=0) * (model.hours_per_step.isel(time=0) * (1 + 1)), + ) + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|lb'], + model.variables['Sink(Wärme)|downtime'] + >= ( + model.variables['Sink(Wärme)|inactive'].isel(time=slice(None, -1)) + - model.variables['Sink(Wärme)|inactive'].isel(time=slice(1, None)) + ) + * 4, + ) + + def test_consecutive_off_hours_previous(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with minimum and maximum consecutive inactive hours.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters( + min_downtime=4, # Must stay inactive for at least 4 hours when shut down + max_downtime=12, # Can't be inactive for more than 12 consecutive hours + ), + previous_flow_rate=np.array([10, 20, 30, 0, 20, 0, 0]), # Previously inactive for 2 steps + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert {'Sink(Wärme)|downtime', 'Sink(Wärme)|inactive'}.issubset(set(flow.submodel.variables)) + + assert_sets_equal( + { + 'Sink(Wärme)|downtime|ub', + 'Sink(Wärme)|downtime|forward', + 'Sink(Wärme)|downtime|backward', + 'Sink(Wärme)|downtime|initial', + 'Sink(Wärme)|downtime|lb', + } + & set(flow.submodel.constraints), + { + 'Sink(Wärme)|downtime|ub', + 'Sink(Wärme)|downtime|forward', + 'Sink(Wärme)|downtime|backward', + 'Sink(Wärme)|downtime|initial', + 'Sink(Wärme)|downtime|lb', + }, + msg='Missing consecutive inactive hours constraints for previous states', + ) + + assert_var_equal( + model.variables['Sink(Wärme)|downtime'], + model.add_variables(lower=0, upper=12, coords=model.get_coords()), + ) + + mega = model.hours_per_step.sum('time') + model.hours_per_step.isel(time=0) * 2 + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|ub'], + model.variables['Sink(Wärme)|downtime'] <= model.variables['Sink(Wärme)|inactive'] * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|forward'], + model.variables['Sink(Wärme)|downtime'].isel(time=slice(1, None)) + <= model.variables['Sink(Wärme)|downtime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)), + ) + + # eq: duration(t) >= duration(t - 1) + dt(t) + (On(t) - 1) * BIG + assert_conequal( + model.constraints['Sink(Wärme)|downtime|backward'], + model.variables['Sink(Wärme)|downtime'].isel(time=slice(1, None)) + >= model.variables['Sink(Wärme)|downtime'].isel(time=slice(None, -1)) + + model.hours_per_step.isel(time=slice(None, -1)) + + (model.variables['Sink(Wärme)|inactive'].isel(time=slice(1, None)) - 1) * mega, + ) + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|initial'], + model.variables['Sink(Wärme)|downtime'].isel(time=0) + == model.variables['Sink(Wärme)|inactive'].isel(time=0) * (model.hours_per_step.isel(time=0) * (1 + 2)), + ) + + assert_conequal( + model.constraints['Sink(Wärme)|downtime|lb'], + model.variables['Sink(Wärme)|downtime'] + >= ( + model.variables['Sink(Wärme)|inactive'].isel(time=slice(None, -1)) + - model.variables['Sink(Wärme)|inactive'].isel(time=slice(1, None)) + ) + * 4, + ) + + def test_switch_on_constraints(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with constraints on the number of startups.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters( + startup_limit=5, # Maximum 5 startups + effects_per_startup={'costs': 100}, # 100 EUR startup cost + ), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + # Check that variables exist + assert {'Sink(Wärme)|startup', 'Sink(Wärme)|shutdown', 'Sink(Wärme)|startup_count'}.issubset( + set(flow.submodel.variables) + ) + + # Check that constraints exist + assert_sets_equal( + { + 'Sink(Wärme)|switch|transition', + 'Sink(Wärme)|switch|initial', + 'Sink(Wärme)|switch|mutex', + 'Sink(Wärme)|startup_count', + } + & set(flow.submodel.constraints), + { + 'Sink(Wärme)|switch|transition', + 'Sink(Wärme)|switch|initial', + 'Sink(Wärme)|switch|mutex', + 'Sink(Wärme)|startup_count', + }, + msg='Missing switch constraints', + ) + + # Check startup_count variable bounds + assert_var_equal( + flow.submodel.variables['Sink(Wärme)|startup_count'], + model.add_variables(lower=0, upper=5, coords=model.get_coords(['period', 'scenario'])), + ) + + # Verify startup_count constraint (limits number of startups) + assert_conequal( + model.constraints['Sink(Wärme)|startup_count'], + flow.submodel.variables['Sink(Wärme)|startup_count'] + == flow.submodel.variables['Sink(Wärme)|startup'].sum('time'), + ) + + # Check that startup cost effect constraint exists + assert 'Sink(Wärme)->costs(temporal)' in model.constraints + + # Verify the startup cost effect constraint + assert_conequal( + model.constraints['Sink(Wärme)->costs(temporal)'], + model.variables['Sink(Wärme)->costs(temporal)'] == flow.submodel.variables['Sink(Wärme)|startup'] * 100, + ) + + def test_on_hours_limits(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with limits on total active hours.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters( + active_hours_min=20, # Minimum 20 hours of operation + active_hours_max=100, # Maximum 100 hours of operation + ), + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + # Check that variables exist + assert {'Sink(Wärme)|status', 'Sink(Wärme)|active_hours'}.issubset(set(flow.submodel.variables)) + + # Check that constraints exist + assert 'Sink(Wärme)|active_hours' in model.constraints + + # Check active_hours variable bounds + assert_var_equal( + flow.submodel.variables['Sink(Wärme)|active_hours'], + model.add_variables(lower=20, upper=100, coords=model.get_coords(['period', 'scenario'])), + ) + + # Check active_hours constraint + assert_conequal( + model.constraints['Sink(Wärme)|active_hours'], + flow.submodel.variables['Sink(Wärme)|active_hours'] + == (flow.submodel.variables['Sink(Wärme)|status'] * model.hours_per_step).sum('time'), + ) + + +class TestFlowOnInvestModel: + """Test the FlowModel class.""" + + def test_flow_on_invest_optional(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(minimum_size=20, maximum_size=200, mandatory=False), + relative_minimum=0.2, + relative_maximum=0.8, + status_parameters=fx.StatusParameters(), + ) + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate', + 'Sink(Wärme)|invested', + 'Sink(Wärme)|size', + 'Sink(Wärme)|status', + 'Sink(Wärme)|active_hours', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|active_hours', + 'Sink(Wärme)|flow_rate|lb1', + 'Sink(Wärme)|flow_rate|ub1', + 'Sink(Wärme)|size|lb', + 'Sink(Wärme)|size|ub', + 'Sink(Wärme)|flow_rate|lb2', + 'Sink(Wärme)|flow_rate|ub2', + }, + msg='Incorrect constraints', + ) + + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=0, + upper=0.8 * 200, + coords=model.get_coords(), + ), + ) + + # Status + assert_var_equal( + flow.submodel.status.status, + model.add_variables(binary=True, coords=model.get_coords()), + ) + # Upper bound is total hours when active_hours_max is not specified + total_hours = model.hours_per_step.sum('time') + assert_var_equal( + model.variables['Sink(Wärme)|active_hours'], + model.add_variables(lower=0, upper=total_hours, coords=model.get_coords(['period', 'scenario'])), + ) + assert_conequal( + model.constraints['Sink(Wärme)|size|lb'], + flow.submodel.variables['Sink(Wärme)|size'] >= flow.submodel.variables['Sink(Wärme)|invested'] * 20, + ) + assert_conequal( + model.constraints['Sink(Wärme)|size|ub'], + flow.submodel.variables['Sink(Wärme)|size'] <= flow.submodel.variables['Sink(Wärme)|invested'] * 200, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb1'], + flow.submodel.variables['Sink(Wärme)|status'] * 0.2 * 20 + <= flow.submodel.variables['Sink(Wärme)|flow_rate'], + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub1'], + flow.submodel.variables['Sink(Wärme)|status'] * 0.8 * 200 + >= flow.submodel.variables['Sink(Wärme)|flow_rate'], + ) + assert_conequal( + model.constraints['Sink(Wärme)|active_hours'], + flow.submodel.variables['Sink(Wärme)|active_hours'] + == (flow.submodel.variables['Sink(Wärme)|status'] * model.hours_per_step).sum('time'), + ) + + # Investment + assert_var_equal( + model['Sink(Wärme)|size'], + model.add_variables(lower=0, upper=200, coords=model.get_coords(['period', 'scenario'])), + ) + + mega = 0.2 * 200 # Relative minimum * maximum size + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb2'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|status'] * mega + + flow.submodel.variables['Sink(Wärme)|size'] * 0.2 + - mega, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub2'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] <= flow.submodel.variables['Sink(Wärme)|size'] * 0.8, + ) + + def test_flow_on_invest_non_optional(self, basic_flow_system_linopy_coords, coords_config): + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(minimum_size=20, maximum_size=200, mandatory=True), + relative_minimum=0.2, + relative_maximum=0.8, + status_parameters=fx.StatusParameters(), + ) + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_sets_equal( + set(flow.submodel.variables), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|flow_rate', + 'Sink(Wärme)|size', + 'Sink(Wärme)|status', + 'Sink(Wärme)|active_hours', + }, + msg='Incorrect variables', + ) + + assert_sets_equal( + set(flow.submodel.constraints), + { + 'Sink(Wärme)|total_flow_hours', + 'Sink(Wärme)|active_hours', + 'Sink(Wärme)|flow_rate|lb1', + 'Sink(Wärme)|flow_rate|ub1', + 'Sink(Wärme)|flow_rate|lb2', + 'Sink(Wärme)|flow_rate|ub2', + }, + msg='Incorrect constraints', + ) + + # flow_rate + assert_var_equal( + flow.submodel.flow_rate, + model.add_variables( + lower=0, + upper=0.8 * 200, + coords=model.get_coords(), + ), + ) + + # Status + assert_var_equal( + flow.submodel.status.status, + model.add_variables(binary=True, coords=model.get_coords()), + ) + # Upper bound is total hours when active_hours_max is not specified + total_hours = model.hours_per_step.sum('time') + assert_var_equal( + model.variables['Sink(Wärme)|active_hours'], + model.add_variables(lower=0, upper=total_hours, coords=model.get_coords(['period', 'scenario'])), + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb1'], + flow.submodel.variables['Sink(Wärme)|status'] * 0.2 * 20 + <= flow.submodel.variables['Sink(Wärme)|flow_rate'], + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub1'], + flow.submodel.variables['Sink(Wärme)|status'] * 0.8 * 200 + >= flow.submodel.variables['Sink(Wärme)|flow_rate'], + ) + assert_conequal( + model.constraints['Sink(Wärme)|active_hours'], + flow.submodel.variables['Sink(Wärme)|active_hours'] + == (flow.submodel.variables['Sink(Wärme)|status'] * model.hours_per_step).sum('time'), + ) + + # Investment + assert_var_equal( + model['Sink(Wärme)|size'], + model.add_variables(lower=20, upper=200, coords=model.get_coords(['period', 'scenario'])), + ) + + mega = 0.2 * 200 # Relative minimum * maximum size + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|lb2'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + >= flow.submodel.variables['Sink(Wärme)|status'] * mega + + flow.submodel.variables['Sink(Wärme)|size'] * 0.2 + - mega, + ) + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|ub2'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] <= flow.submodel.variables['Sink(Wärme)|size'] * 0.8, + ) + + +class TestFlowWithFixedProfile: + """Test Flow with fixed relative profile.""" + + def test_fixed_relative_profile(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with a fixed relative profile.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + # Create a time-varying profile (e.g., for a load or renewable generation) + profile = np.sin(np.linspace(0, 2 * np.pi, len(timesteps))) * 0.5 + 0.5 # Values between 0 and 1 + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=100, + fixed_relative_profile=profile, + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_var_equal( + flow.submodel.variables['Sink(Wärme)|flow_rate'], + model.add_variables( + lower=flow.fixed_relative_profile * 100, + upper=flow.fixed_relative_profile * 100, + coords=model.get_coords(), + ), + ) + + def test_fixed_profile_with_investment(self, basic_flow_system_linopy_coords, coords_config): + """Test flow with fixed profile and investment.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + # Create a fixed profile + profile = np.sin(np.linspace(0, 2 * np.pi, len(timesteps))) * 0.5 + 0.5 + + flow = fx.Flow( + 'Wärme', + bus='Fernwärme', + size=fx.InvestParameters(minimum_size=50, maximum_size=200, mandatory=False), + fixed_relative_profile=profile, + ) + + flow_system.add_elements(fx.Sink('Sink', inputs=[flow])) + model = create_linopy_model(flow_system) + + assert_var_equal( + flow.submodel.variables['Sink(Wärme)|flow_rate'], + model.add_variables(lower=0, upper=flow.fixed_relative_profile * 200, coords=model.get_coords()), + ) + + # The constraint should link flow_rate to size * profile + assert_conequal( + model.constraints['Sink(Wärme)|flow_rate|fixed'], + flow.submodel.variables['Sink(Wärme)|flow_rate'] + == flow.submodel.variables['Sink(Wärme)|size'] * flow.fixed_relative_profile, + ) + + +if __name__ == '__main__': + pytest.main() diff --git a/tests/deprecated/test_flow_system_resample.py b/tests/deprecated/test_flow_system_resample.py new file mode 100644 index 000000000..076de4a2e --- /dev/null +++ b/tests/deprecated/test_flow_system_resample.py @@ -0,0 +1,295 @@ +"""Integration tests for FlowSystem.resample() - verifies correct data resampling and structure preservation.""" + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_allclose + +import flixopt as fx + + +@pytest.fixture +def simple_fs(): + """Simple FlowSystem with basic components.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + fs = fx.FlowSystem(timesteps) + fs.add_elements( + fx.Bus('heat'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True) + ) + fs.add_elements( + fx.Sink( + label='demand', + inputs=[fx.Flow(label='in', bus='heat', fixed_relative_profile=np.linspace(10, 20, 24), size=1)], + ), + fx.Source( + label='source', outputs=[fx.Flow(label='out', bus='heat', size=50, effects_per_flow_hour={'costs': 0.05})] + ), + ) + return fs + + +@pytest.fixture +def complex_fs(): + """FlowSystem with complex elements (storage, piecewise, invest).""" + timesteps = pd.date_range('2023-01-01', periods=48, freq='h') + fs = fx.FlowSystem(timesteps) + + fs.add_elements( + fx.Bus('heat'), + fx.Bus('elec'), + fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True), + ) + + # Storage + fs.add_elements( + fx.Storage( + label='battery', + charging=fx.Flow('charge', bus='elec', size=10), + discharging=fx.Flow('discharge', bus='elec', size=10), + capacity_in_flow_hours=fx.InvestParameters(fixed_size=100), + ) + ) + + # Piecewise converter + converter = fx.linear_converters.Boiler( + 'boiler', thermal_efficiency=0.9, fuel_flow=fx.Flow('gas', bus='elec'), thermal_flow=fx.Flow('heat', bus='heat') + ) + converter.thermal_flow.size = 100 + fs.add_elements(converter) + + # Component with investment + fs.add_elements( + fx.Source( + label='pv', + outputs=[ + fx.Flow( + 'gen', + bus='elec', + size=fx.InvestParameters(maximum_size=1000, effects_of_investment_per_size={'costs': 100}), + ) + ], + ) + ) + + return fs + + +# === Basic Functionality === + + +@pytest.mark.parametrize('freq,method', [('2h', 'mean'), ('4h', 'sum'), ('6h', 'first')]) +def test_basic_resample(simple_fs, freq, method): + """Test basic resampling preserves structure.""" + fs_r = simple_fs.resample(freq, method=method) + assert len(fs_r.components) == len(simple_fs.components) + assert len(fs_r.buses) == len(simple_fs.buses) + assert len(fs_r.timesteps) < len(simple_fs.timesteps) + + +@pytest.mark.parametrize( + 'method,expected', + [ + ('mean', [15.0, 35.0]), + ('sum', [30.0, 70.0]), + ('first', [10.0, 30.0]), + ('last', [20.0, 40.0]), + ], +) +def test_resample_methods(method, expected): + """Test different resampling methods.""" + ts = pd.date_range('2023-01-01', periods=4, freq='h') + fs = fx.FlowSystem(ts) + fs.add_elements(fx.Bus('b'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True)) + fs.add_elements( + fx.Sink( + label='s', + inputs=[fx.Flow(label='in', bus='b', fixed_relative_profile=np.array([10.0, 20.0, 30.0, 40.0]), size=1)], + ) + ) + + fs_r = fs.resample('2h', method=method) + assert_allclose(fs_r.flows['s(in)'].fixed_relative_profile.values, expected, rtol=1e-10) + + +def test_structure_preserved(simple_fs): + """Test all structural elements preserved.""" + fs_r = simple_fs.resample('2h', method='mean') + assert set(simple_fs.components.keys()) == set(fs_r.components.keys()) + assert set(simple_fs.buses.keys()) == set(fs_r.buses.keys()) + assert set(simple_fs.effects.keys()) == set(fs_r.effects.keys()) + + # Flow connections preserved + for label in simple_fs.flows.keys(): + assert simple_fs.flows[label].bus == fs_r.flows[label].bus + assert simple_fs.flows[label].component == fs_r.flows[label].component + + +def test_time_metadata_updated(simple_fs): + """Test time metadata correctly updated.""" + fs_r = simple_fs.resample('3h', method='mean') + assert len(fs_r.timesteps) == 8 + assert_allclose(fs_r.hours_per_timestep.values, 3.0) + assert fs_r.hours_of_last_timestep == 3.0 + + +# === Advanced Dimensions === + + +@pytest.mark.parametrize( + 'dim_name,dim_value', + [ + ('periods', pd.Index([2023, 2024], name='period')), + ('scenarios', pd.Index(['base', 'high'], name='scenario')), + ], +) +def test_with_dimensions(simple_fs, dim_name, dim_value): + """Test resampling preserves period/scenario dimensions.""" + fs = fx.FlowSystem(simple_fs.timesteps, **{dim_name: dim_value}) + fs.add_elements(fx.Bus('h'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True)) + fs.add_elements( + fx.Sink(label='d', inputs=[fx.Flow(label='in', bus='h', fixed_relative_profile=np.ones(24), size=1)]) + ) + + fs_r = fs.resample('2h', method='mean') + assert getattr(fs_r, dim_name) is not None + pd.testing.assert_index_equal(getattr(fs_r, dim_name), dim_value) + + +# === Complex Elements === + + +def test_storage_resample(complex_fs): + """Test storage component resampling.""" + fs_r = complex_fs.resample('4h', method='mean') + assert 'battery' in fs_r.components + storage = fs_r.components['battery'] + assert storage.charging.label == 'charge' + assert storage.discharging.label == 'discharge' + + +def test_converter_resample(complex_fs): + """Test converter component resampling.""" + fs_r = complex_fs.resample('4h', method='mean') + assert 'boiler' in fs_r.components + boiler = fs_r.components['boiler'] + assert hasattr(boiler, 'thermal_efficiency') + + +def test_invest_resample(complex_fs): + """Test investment parameters preserved.""" + fs_r = complex_fs.resample('4h', method='mean') + pv_flow = fs_r.flows['pv(gen)'] + assert isinstance(pv_flow.size, fx.InvestParameters) + assert pv_flow.size.maximum_size == 1000 + + +# === Modeling Integration === + + +@pytest.mark.filterwarnings('ignore::DeprecationWarning') +@pytest.mark.parametrize('with_dim', [None, 'periods', 'scenarios']) +def test_modeling(with_dim): + """Test resampled FlowSystem can be modeled.""" + ts = pd.date_range('2023-01-01', periods=48, freq='h') + kwargs = {} + if with_dim == 'periods': + kwargs['periods'] = pd.Index([2023, 2024], name='period') + elif with_dim == 'scenarios': + kwargs['scenarios'] = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem(ts, **kwargs) + fs.add_elements(fx.Bus('h'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True)) + fs.add_elements( + fx.Sink( + label='d', inputs=[fx.Flow(label='in', bus='h', fixed_relative_profile=np.linspace(10, 30, 48), size=1)] + ), + fx.Source(label='s', outputs=[fx.Flow(label='out', bus='h', size=100, effects_per_flow_hour={'costs': 0.05})]), + ) + + fs_r = fs.resample('4h', method='mean') + calc = fx.Optimization('test', fs_r) + calc.do_modeling() + + assert calc.model is not None + assert len(calc.model.variables) > 0 + + +@pytest.mark.filterwarnings('ignore::DeprecationWarning') +def test_model_structure_preserved(): + """Test model structure (var/constraint types) preserved.""" + ts = pd.date_range('2023-01-01', periods=48, freq='h') + fs = fx.FlowSystem(ts) + fs.add_elements(fx.Bus('h'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True)) + fs.add_elements( + fx.Sink( + label='d', inputs=[fx.Flow(label='in', bus='h', fixed_relative_profile=np.linspace(10, 30, 48), size=1)] + ), + fx.Source(label='s', outputs=[fx.Flow(label='out', bus='h', size=100, effects_per_flow_hour={'costs': 0.05})]), + ) + + calc_orig = fx.Optimization('orig', fs) + calc_orig.do_modeling() + + fs_r = fs.resample('4h', method='mean') + calc_r = fx.Optimization('resamp', fs_r) + calc_r.do_modeling() + + # Same number of variable/constraint types + assert len(calc_orig.model.variables) == len(calc_r.model.variables) + assert len(calc_orig.model.constraints) == len(calc_r.model.constraints) + + # Same names + assert set(calc_orig.model.variables.labels.data_vars.keys()) == set(calc_r.model.variables.labels.data_vars.keys()) + assert set(calc_orig.model.constraints.labels.data_vars.keys()) == set( + calc_r.model.constraints.labels.data_vars.keys() + ) + + +# === Advanced Features === + + +def test_dataset_roundtrip(simple_fs): + """Test dataset serialization.""" + fs_r = simple_fs.resample('2h', method='mean') + assert fx.FlowSystem.from_dataset(fs_r.to_dataset()) == fs_r + + +def test_dataset_chaining(simple_fs): + """Test power user pattern.""" + ds = simple_fs.to_dataset() + ds = fx.FlowSystem._dataset_sel(ds, time='2023-01-01') + ds = fx.FlowSystem._dataset_resample(ds, freq='2h', method='mean') + fs_result = fx.FlowSystem.from_dataset(ds) + + fs_simple = simple_fs.sel(time='2023-01-01').resample('2h', method='mean') + assert fs_result == fs_simple + + +@pytest.mark.parametrize('freq,exp_len', [('2h', 84), ('6h', 28), ('1D', 7)]) +def test_frequencies(freq, exp_len): + """Test various frequencies.""" + ts = pd.date_range('2023-01-01', periods=168, freq='h') + fs = fx.FlowSystem(ts) + fs.add_elements(fx.Bus('b'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True)) + fs.add_elements( + fx.Sink(label='s', inputs=[fx.Flow(label='in', bus='b', fixed_relative_profile=np.ones(168), size=1)]) + ) + + assert len(fs.resample(freq, method='mean').timesteps) == exp_len + + +def test_irregular_timesteps(): + """Test irregular timesteps.""" + ts = pd.DatetimeIndex(['2023-01-01 00:00', '2023-01-01 01:00', '2023-01-01 03:00'], name='time') + fs = fx.FlowSystem(ts) + fs.add_elements(fx.Bus('b'), fx.Effect('costs', unit='€', description='costs', is_objective=True, is_standard=True)) + fs.add_elements( + fx.Sink(label='s', inputs=[fx.Flow(label='in', bus='b', fixed_relative_profile=np.ones(3), size=1)]) + ) + + fs_r = fs.resample('1h', method='mean') + assert len(fs_r.timesteps) > 0 + + +if __name__ == '__main__': + pytest.main(['-v', __file__]) diff --git a/tests/deprecated/test_functional.py b/tests/deprecated/test_functional.py new file mode 100644 index 000000000..34d16819c --- /dev/null +++ b/tests/deprecated/test_functional.py @@ -0,0 +1,737 @@ +""" +Unit tests for the flixopt framework. + +This module defines a set of unit tests for testing the functionality of the `flixopt` framework. +The tests focus on verifying the correct behavior of flow systems, including component modeling, +investment optimization, and operational constraints like status behavior. + +### Approach: +1. **Setup**: Each test initializes a flow system with a set of predefined elements and parameters. +2. **Model Creation**: Test-specific flow systems are constructed using `create_model` with datetime arrays. +3. **Solution**: The models are solved using the `solve_and_load` method, which performs modeling, solves the optimization problem, and loads the results. +4. **Validation**: Results are validated using assertions, primarily `assert_allclose`, to ensure model outputs match expected values with a specified tolerance. + +Tests group related cases by their functional focus: +- Minimal modeling setup (`TestMinimal` class) +- Investment behavior (`TestInvestment` class) +- Status operational constraints (functions: `test_startup_shutdown`, `test_consecutive_uptime_downtime`, etc.) +""" + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_allclose + +import flixopt as fx + +np.random.seed(45) + + +class Data: + """ + Generates time series data for testing. + + Attributes: + length (int): The desired length of the data. + thermal_demand (np.ndarray): Thermal demand time series data. + electricity_demand (np.ndarray): Electricity demand time series data. + """ + + def __init__(self, length: int): + """ + Initialize the data generator with a specified length. + + Args: + length (int): Length of the time series data to generate. + """ + self.length = length + + self.thermal_demand = np.arange(0, 30, 10) + self.electricity_demand = np.arange(1, 10.1, 1) + + self.thermal_demand = self._adjust_length(self.thermal_demand, length) + self.electricity_demand = self._adjust_length(self.electricity_demand, length) + + def _adjust_length(self, array, new_length: int): + if len(array) >= new_length: + return array[:new_length] + else: + repeats = (new_length + len(array) - 1) // len(array) # Calculate how many times to repeat + extended_array = np.tile(array, repeats) # Repeat the array + return extended_array[:new_length] # Truncate to exact length + + +def flow_system_base(timesteps: pd.DatetimeIndex) -> fx.FlowSystem: + data = Data(len(timesteps)) + + flow_system = fx.FlowSystem(timesteps) + flow_system.add_elements( + fx.Bus('Fernwärme', imbalance_penalty_per_flow_hour=None), + fx.Bus('Gas', imbalance_penalty_per_flow_hour=None), + ) + flow_system.add_elements(fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True)) + flow_system.add_elements( + fx.Sink( + label='Wärmelast', + inputs=[fx.Flow(label='Wärme', bus='Fernwärme', fixed_relative_profile=data.thermal_demand, size=1)], + ), + fx.Source(label='Gastarif', outputs=[fx.Flow(label='Gas', bus='Gas', effects_per_flow_hour=1)]), + ) + return flow_system + + +def flow_system_minimal(timesteps) -> fx.FlowSystem: + flow_system = flow_system_base(timesteps) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + ) + ) + return flow_system + + +def solve_and_load(flow_system: fx.FlowSystem, solver) -> fx.FlowSystem: + """Optimize the flow system and return it with the solution.""" + flow_system.optimize(solver) + return flow_system + + +@pytest.fixture +def time_steps_fixture(request): + return pd.date_range('2020-01-01', periods=5, freq='h') + + +def test_solve_and_load(solver_fixture, time_steps_fixture): + flow_system = solve_and_load(flow_system_minimal(time_steps_fixture), solver_fixture) + assert flow_system.solution is not None + + +def test_minimal_model(solver_fixture, time_steps_fixture): + flow_system = solve_and_load(flow_system_minimal(time_steps_fixture), solver_fixture) + + assert_allclose(flow_system.solution['costs'].values, 80, rtol=1e-5, atol=1e-10) + + assert_allclose( + flow_system.solution['Boiler(Q_th)|flow_rate'].values, + [-0.0, 10.0, 20.0, -0.0, 10.0], + rtol=1e-5, + atol=1e-10, + ) + + assert_allclose( + flow_system.solution['costs(temporal)|per_timestep'].values, + [-0.0, 20.0, 40.0, -0.0, 20.0], + rtol=1e-5, + atol=1e-10, + ) + + assert_allclose( + flow_system.solution['Gastarif(Gas)->costs(temporal)'].values, + [-0.0, 20.0, 40.0, -0.0, 20.0], + rtol=1e-5, + atol=1e-10, + ) + + +def test_fixed_size(solver_fixture, time_steps_fixture): + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=fx.InvestParameters(fixed_size=1000, effects_of_investment=10, effects_of_investment_per_size=1), + ), + ) + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80 + 1000 * 1 + 10, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.size.solution.item(), + 1000, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__Investment_size" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.invested.solution.item(), + 1, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__invested" does not have the right value', + ) + + +def test_optimize_size(solver_fixture, time_steps_fixture): + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=fx.InvestParameters(effects_of_investment=10, effects_of_investment_per_size=1), + ), + ) + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80 + 20 * 1 + 10, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.size.solution.item(), + 20, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__Investment_size" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.invested.solution.item(), + 1, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__IsInvested" does not have the right value', + ) + + +def test_size_bounds(solver_fixture, time_steps_fixture): + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=fx.InvestParameters(minimum_size=40, effects_of_investment=10, effects_of_investment_per_size=1), + ), + ) + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80 + 40 * 1 + 10, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.size.solution.item(), + 40, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__Investment_size" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.invested.solution.item(), + 1, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__IsInvested" does not have the right value', + ) + + +def test_optional_invest(solver_fixture, time_steps_fixture): + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=fx.InvestParameters( + mandatory=False, minimum_size=40, effects_of_investment=10, effects_of_investment_per_size=1 + ), + ), + ), + fx.linear_converters.Boiler( + 'Boiler_optional', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=fx.InvestParameters( + mandatory=False, minimum_size=50, effects_of_investment=10, effects_of_investment_per_size=1 + ), + ), + ), + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + boiler_optional = flow_system['Boiler_optional'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80 + 40 * 1 + 10, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.size.solution.item(), + 40, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__Investment_size" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.investment.invested.solution.item(), + 1, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__IsInvested" does not have the right value', + ) + + assert_allclose( + boiler_optional.thermal_flow.submodel.investment.size.solution.item(), + 0, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__Investment_size" does not have the right value', + ) + assert_allclose( + boiler_optional.thermal_flow.submodel.investment.invested.solution.item(), + 0, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__IsInvested" does not have the right value', + ) + + +def test_on(solver_fixture, time_steps_fixture): + """Tests if the On Variable is correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=100, status_parameters=fx.StatusParameters()), + ) + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.status.status.solution.values, + [0, 1, 1, 0, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [0, 10, 20, 0, 10], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +def test_off(solver_fixture, time_steps_fixture): + """Tests if the Off Variable is correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters(max_downtime=100), + ), + ) + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.status.status.solution.values, + [0, 1, 1, 0, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.status.inactive.solution.values, + 1 - boiler.thermal_flow.submodel.status.status.solution.values, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__off" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [0, 10, 20, 0, 10], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +def test_startup_shutdown(solver_fixture, time_steps_fixture): + """Tests if the startup/shutdown Variable is correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters(force_startup_tracking=True), + ), + ) + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 80, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.status.status.solution.values, + [0, 1, 1, 0, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.status.startup.solution.values, + [0, 1, 0, 0, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__switch_on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.status.shutdown.solution.values, + [0, 0, 0, 1, 0], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__switch_on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [0, 10, 20, 0, 10], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +def test_on_total_max(solver_fixture, time_steps_fixture): + """Tests if the On Total Max Variable is correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters(active_hours_max=1), + ), + ), + fx.linear_converters.Boiler( + 'Boiler_backup', + thermal_efficiency=0.2, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=100), + ), + ) + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 140, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.status.status.solution.values, + [0, 0, 1, 0, 0], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [0, 0, 20, 0, 0], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +def test_on_total_bounds(solver_fixture, time_steps_fixture): + """Tests if the On Hours min and max are correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters(active_hours_max=2), + ), + ), + fx.linear_converters.Boiler( + 'Boiler_backup', + thermal_efficiency=0.2, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters(active_hours_min=3), + ), + ), + ) + flow_system['Wärmelast'].inputs[0].fixed_relative_profile = np.array( + [0, 10, 20, 0, 12] + ) # Else its non deterministic + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + boiler_backup = flow_system['Boiler_backup'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 114, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.status.status.solution.values, + [0, 0, 1, 0, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [0, 0, 20, 0, 12 - 1e-5], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + assert_allclose( + sum(boiler_backup.thermal_flow.submodel.status.status.solution.values), + 3, + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler_backup__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler_backup.thermal_flow.submodel.flow_rate.solution.values, + [0, 10, 1.0e-05, 0, 1.0e-05], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +def test_consecutive_uptime_downtime(solver_fixture, time_steps_fixture): + """Tests if the consecutive uptime/downtime are correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + status_parameters=fx.StatusParameters(max_uptime=2, min_uptime=2), + ), + ), + fx.linear_converters.Boiler( + 'Boiler_backup', + thermal_efficiency=0.2, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=100), + ), + ) + flow_system['Wärmelast'].inputs[0].fixed_relative_profile = np.array([5, 10, 20, 18, 12]) + # Else its non deterministic + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + boiler_backup = flow_system['Boiler_backup'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 190, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.status.status.solution.values, + [1, 1, 0, 1, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [5, 10, 0, 18, 12], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + assert_allclose( + boiler_backup.thermal_flow.submodel.flow_rate.solution.values, + [0, 0, 20, 0, 0], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +def test_consecutive_off(solver_fixture, time_steps_fixture): + """Tests if the consecutive on hours are correctly created and calculated in a Flow""" + flow_system = flow_system_base(time_steps_fixture) + flow_system.add_elements( + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + ), + fx.linear_converters.Boiler( + 'Boiler_backup', + thermal_efficiency=0.2, + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + size=100, + previous_flow_rate=np.array([20]), # Otherwise its Off before the start + status_parameters=fx.StatusParameters(max_downtime=2, min_downtime=2), + ), + ), + ) + flow_system['Wärmelast'].inputs[0].fixed_relative_profile = np.array( + [5, 0, 20, 18, 12] + ) # Else its non deterministic + + solve_and_load(flow_system, solver_fixture) + boiler = flow_system['Boiler'] + boiler_backup = flow_system['Boiler_backup'] + costs = flow_system.effects['costs'] + assert_allclose( + costs.submodel.total.solution.item(), + 110, + rtol=1e-5, + atol=1e-10, + err_msg='The total costs does not have the right value', + ) + + assert_allclose( + boiler_backup.thermal_flow.submodel.status.status.solution.values, + [0, 0, 1, 0, 0], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler_backup__Q_th__on" does not have the right value', + ) + assert_allclose( + boiler_backup.thermal_flow.submodel.status.inactive.solution.values, + [1, 1, 0, 1, 1], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler_backup__Q_th__off" does not have the right value', + ) + assert_allclose( + boiler_backup.thermal_flow.submodel.flow_rate.solution.values, + [0, 0, 1e-5, 0, 0], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler_backup__Q_th__flow_rate" does not have the right value', + ) + + assert_allclose( + boiler.thermal_flow.submodel.flow_rate.solution.values, + [5, 0, 20 - 1e-5, 18, 12], + rtol=1e-5, + atol=1e-10, + err_msg='"Boiler__Q_th__flow_rate" does not have the right value', + ) + + +if __name__ == '__main__': + pytest.main(['-v', '--disable-warnings']) diff --git a/tests/deprecated/test_heatmap_reshape.py b/tests/deprecated/test_heatmap_reshape.py new file mode 100644 index 000000000..092adff4e --- /dev/null +++ b/tests/deprecated/test_heatmap_reshape.py @@ -0,0 +1,91 @@ +"""Test reshape_data_for_heatmap() for common use cases.""" + +import numpy as np +import pandas as pd +import pytest +import xarray as xr + +from flixopt.plotting import reshape_data_for_heatmap + +# Set random seed for reproducible tests +np.random.seed(42) + + +@pytest.fixture +def hourly_week_data(): + """Typical use case: hourly data for a week.""" + time = pd.date_range('2024-01-01', periods=168, freq='h') + data = np.random.rand(168) * 100 + return xr.DataArray(data, dims=['time'], coords={'time': time}, name='power') + + +def test_daily_hourly_pattern(): + """Most common use case: reshape hourly data into days × hours for daily patterns.""" + time = pd.date_range('2024-01-01', periods=72, freq='h') + data = np.random.rand(72) * 100 + da = xr.DataArray(data, dims=['time'], coords={'time': time}) + + result = reshape_data_for_heatmap(da, reshape_time=('D', 'h')) + + assert 'timeframe' in result.dims and 'timestep' in result.dims + assert result.sizes['timeframe'] == 3 # 3 days + assert result.sizes['timestep'] == 24 # 24 hours + + +def test_weekly_daily_pattern(hourly_week_data): + """Common use case: reshape hourly data into weeks × days.""" + result = reshape_data_for_heatmap(hourly_week_data, reshape_time=('W', 'D')) + + assert 'timeframe' in result.dims and 'timestep' in result.dims + # 168 hours = 7 days = 1 week + assert result.sizes['timeframe'] == 1 # 1 week + assert result.sizes['timestep'] == 7 # 7 days + + +def test_with_irregular_data(): + """Real-world use case: data with missing timestamps needs filling.""" + time = pd.date_range('2024-01-01', periods=100, freq='15min') + data = np.random.rand(100) + # Randomly drop 30% to simulate real data gaps + keep = np.sort(np.random.choice(100, 70, replace=False)) # Must be sorted + da = xr.DataArray(data[keep], dims=['time'], coords={'time': time[keep]}) + + result = reshape_data_for_heatmap(da, reshape_time=('h', 'min'), fill='ffill') + + assert 'timeframe' in result.dims and 'timestep' in result.dims + # 100 * 15min = 1500min = 25h; reshaped to hours × minutes + assert result.sizes['timeframe'] == 25 # 25 hours + assert result.sizes['timestep'] == 60 # 60 minutes per hour + # Should handle irregular data without errors + + +def test_multidimensional_scenarios(): + """Use case: data with scenarios/periods that need to be preserved.""" + time = pd.date_range('2024-01-01', periods=48, freq='h') + scenarios = ['base', 'high'] + data = np.random.rand(48, 2) * 100 + + da = xr.DataArray(data, dims=['time', 'scenario'], coords={'time': time, 'scenario': scenarios}, name='demand') + + result = reshape_data_for_heatmap(da, reshape_time=('D', 'h')) + + # Should preserve scenario dimension + assert 'scenario' in result.dims + assert result.sizes['scenario'] == 2 + # 48 hours = 2 days × 24 hours + assert result.sizes['timeframe'] == 2 # 2 days + assert result.sizes['timestep'] == 24 # 24 hours + + +def test_no_reshape_returns_unchanged(): + """Use case: when reshape_time=None, return data as-is.""" + time = pd.date_range('2024-01-01', periods=24, freq='h') + da = xr.DataArray(np.random.rand(24), dims=['time'], coords={'time': time}) + + result = reshape_data_for_heatmap(da, reshape_time=None) + + xr.testing.assert_equal(result, da) + + +if __name__ == '__main__': + pytest.main([__file__, '-v']) diff --git a/tests/deprecated/test_integration.py b/tests/deprecated/test_integration.py index 2f083b4fb..1717fe7dd 100644 --- a/tests/deprecated/test_integration.py +++ b/tests/deprecated/test_integration.py @@ -1,18 +1,7 @@ -"""Tests for deprecated Optimization/Results API - ported from feature/v5. - -This module contains the original integration tests from feature/v5 that use the -deprecated Optimization class. These tests will be removed in v6.0.0. - -For new tests, use FlowSystem.optimize(solver) instead. -""" - import pytest -import flixopt as fx - -from ..conftest import ( +from .conftest import ( assert_almost_equal_numeric, - create_optimization_and_solve, ) @@ -21,9 +10,9 @@ def test_simple_flow_system(self, simple_flow_system, highs_solver): """ Test the effects of the simple energy system model """ - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_simple_flow_system') + simple_flow_system.optimize(highs_solver) - effects = optimization.flow_system.effects + effects = simple_flow_system.effects # Cost assertions assert_almost_equal_numeric( @@ -39,8 +28,8 @@ def test_model_components(self, simple_flow_system, highs_solver): """ Test the component flows of the simple energy system model """ - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') - comps = optimization.flow_system.components + simple_flow_system.optimize(highs_solver) + comps = simple_flow_system.components # Boiler assertions assert_almost_equal_numeric( @@ -56,40 +45,20 @@ def test_model_components(self, simple_flow_system, highs_solver): 'Q_th doesnt match expected value', ) - def test_results_persistence(self, simple_flow_system, highs_solver): - """ - Test saving and loading results - """ - # Save results to file - optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') - - optimization.results.to_file(overwrite=True) - - # Load results from file - results = fx.results.Results.from_file(optimization.folder, optimization.name) - - # Verify key variables from loaded results - assert_almost_equal_numeric( - results.solution['costs'].values, - 81.88394666666667, - 'costs doesnt match expected value', - ) - assert_almost_equal_numeric(results.solution['CO2'].values, 255.09184, 'CO2 doesnt match expected value') - class TestComplex: def test_basic_flow_system(self, flow_system_base, highs_solver): - optimization = create_optimization_and_solve(flow_system_base, highs_solver, 'test_basic_flow_system') + flow_system_base.optimize(highs_solver) - # Assertions + # Assertions using flow_system.solution (the new API) assert_almost_equal_numeric( - optimization.results.model['costs'].solution.item(), + flow_system_base.solution['costs'].item(), -11597.873624489237, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['costs(temporal)|per_timestep'].solution.values, + flow_system_base.solution['costs(temporal)|per_timestep'].values, [ -2.38500000e03, -2.21681333e03, @@ -105,66 +74,66 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): ) assert_almost_equal_numeric( - sum(optimization.results.model['CO2(temporal)->costs(temporal)'].solution.values), + flow_system_base.solution['CO2(temporal)->costs(temporal)'].sum().item(), 258.63729669618675, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Kessel(Q_th)->costs(temporal)'].solution.values), + flow_system_base.solution['Kessel(Q_th)->costs(temporal)'].sum().item(), 0.01, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Kessel->costs(temporal)'].solution.values), + flow_system_base.solution['Kessel->costs(temporal)'].sum().item(), -0.0, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Gastarif(Q_Gas)->costs(temporal)'].solution.values), + flow_system_base.solution['Gastarif(Q_Gas)->costs(temporal)'].sum().item(), 39.09153113079115, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['Einspeisung(P_el)->costs(temporal)'].solution.values), + flow_system_base.solution['Einspeisung(P_el)->costs(temporal)'].sum().item(), -14196.61245231646, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - sum(optimization.results.model['KWK->costs(temporal)'].solution.values), + flow_system_base.solution['KWK->costs(temporal)'].sum().item(), 0.0, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Kessel(Q_th)->costs(periodic)'].solution.values, + flow_system_base.solution['Kessel(Q_th)->costs(periodic)'].values, 1000 + 500, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Speicher->costs(periodic)'].solution.values, + flow_system_base.solution['Speicher->costs(periodic)'].values, 800 + 1, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['CO2(temporal)'].solution.values, + flow_system_base.solution['CO2(temporal)'].values, 1293.1864834809337, 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['CO2(periodic)'].solution.values, + flow_system_base.solution['CO2(periodic)'].values, 0.9999999999999994, 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Kessel(Q_th)|flow_rate'].solution.values, + flow_system_base.solution['Kessel(Q_th)|flow_rate'].values, [0, 0, 0, 45, 0, 0, 0, 0, 0], 'Kessel doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['KWK(Q_th)|flow_rate'].solution.values, + flow_system_base.solution['KWK(Q_th)|flow_rate'].values, [ 7.50000000e01, 6.97111111e01, @@ -179,7 +148,7 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): 'KWK Q_th doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['KWK(P_el)|flow_rate'].solution.values, + flow_system_base.solution['KWK(P_el)|flow_rate'].values, [ 6.00000000e01, 5.57688889e01, @@ -195,139 +164,70 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): ) assert_almost_equal_numeric( - optimization.results.model['Speicher|netto_discharge'].solution.values, + flow_system_base.solution['Speicher|netto_discharge'].values, [-45.0, -69.71111111, 15.0, -10.0, 36.06697198, -55.0, 20.0, 20.0, 20.0], 'Speicher nettoFlow doesnt match expected value', ) + # charge_state now has len(timesteps) values, with final state in separate variable assert_almost_equal_numeric( - optimization.results.model['Speicher|charge_state'].solution.values, - [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565, 10.0], - 'Speicher nettoFlow doesnt match expected value', + flow_system_base.solution['Speicher|charge_state'].values, + [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565], + 'Speicher charge_state doesnt match expected value', + ) + assert_almost_equal_numeric( + flow_system_base.solution['Speicher|charge_state|final'].values, + 10.0, + 'Speicher final charge_state doesnt match expected value', ) assert_almost_equal_numeric( - optimization.results.model['Speicher|PiecewiseEffects|costs'].solution.values, + flow_system_base.solution['Speicher|PiecewiseEffects|costs'].values, 800, 'Speicher|PiecewiseEffects|costs doesnt match expected value', ) def test_piecewise_conversion(self, flow_system_piecewise_conversion, highs_solver): - optimization = create_optimization_and_solve( - flow_system_piecewise_conversion, highs_solver, 'test_piecewise_conversion' - ) - - effects = optimization.flow_system.effects - comps = optimization.flow_system.components + flow_system_piecewise_conversion.optimize(highs_solver) - # Compare expected values with actual values + # Compare expected values with actual values using new API assert_almost_equal_numeric( - effects['costs'].submodel.total.solution.item(), -10710.997365760755, 'costs doesnt match expected value' + flow_system_piecewise_conversion.solution['costs'].item(), + -10710.997365760755, + 'costs doesnt match expected value', ) assert_almost_equal_numeric( - effects['CO2'].submodel.total.solution.item(), 1278.7939026086956, 'CO2 doesnt match expected value' + flow_system_piecewise_conversion.solution['CO2'].item(), + 1278.7939026086956, + 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - comps['Kessel'].thermal_flow.submodel.flow_rate.solution.values, + flow_system_piecewise_conversion.solution['Kessel(Q_th)|flow_rate'].values, [0, 0, 0, 45, 0, 0, 0, 0, 0], 'Kessel doesnt match expected value', ) - kwk_flows = {flow.label: flow for flow in comps['KWK'].inputs + comps['KWK'].outputs} assert_almost_equal_numeric( - kwk_flows['Q_th'].submodel.flow_rate.solution.values, + flow_system_piecewise_conversion.solution['KWK(Q_th)|flow_rate'].values, [45.0, 45.0, 64.5962087, 100.0, 61.3136, 45.0, 45.0, 12.86469565, 0.0], 'KWK Q_th doesnt match expected value', ) assert_almost_equal_numeric( - kwk_flows['P_el'].submodel.flow_rate.solution.values, + flow_system_piecewise_conversion.solution['KWK(P_el)|flow_rate'].values, [40.0, 40.0, 47.12589407, 60.0, 45.93221818, 40.0, 40.0, 10.91784108, -0.0], 'KWK P_el doesnt match expected value', ) assert_almost_equal_numeric( - comps['Speicher'].submodel.netto_discharge.solution.values, + flow_system_piecewise_conversion.solution['Speicher|netto_discharge'].values, [-15.0, -45.0, 25.4037913, -35.0, 48.6864, -25.0, -25.0, 7.13530435, 20.0], 'Speicher nettoFlow doesnt match expected value', ) assert_almost_equal_numeric( - comps['Speicher'].submodel.variables['Speicher|PiecewiseEffects|costs'].solution.values, + flow_system_piecewise_conversion.solution['Speicher|PiecewiseEffects|costs'].values, 454.74666666666667, 'Speicher investcosts_segmented_costs doesnt match expected value', ) -@pytest.mark.slow -class TestModelingTypes: - @pytest.fixture(params=['full', 'segmented', 'aggregated']) - def modeling_calculation(self, request, flow_system_long, highs_solver): - """ - Fixture to run optimizations with different modeling types - """ - # Extract flow system and data from the fixture - flow_system = flow_system_long[0] - thermal_load_ts = flow_system_long[1]['thermal_load_ts'] - electrical_load_ts = flow_system_long[1]['electrical_load_ts'] - - # Create calculation based on modeling type - modeling_type = request.param - if modeling_type == 'full': - calc = fx.Optimization('fullModel', flow_system) - calc.do_modeling() - calc.solve(highs_solver) - elif modeling_type == 'segmented': - calc = fx.SegmentedOptimization('segModel', flow_system, timesteps_per_segment=96, overlap_timesteps=1) - calc.do_modeling_and_solve(highs_solver) - elif modeling_type == 'aggregated': - calc = fx.ClusteredOptimization( - 'aggModel', - flow_system, - fx.ClusteringParameters( - hours_per_period=6, - nr_of_periods=4, - fix_storage_flows=False, - aggregate_data_and_fix_non_binary_vars=True, - percentage_of_period_freedom=0, - penalty_of_period_freedom=0, - time_series_for_low_peaks=[electrical_load_ts, thermal_load_ts], - time_series_for_high_peaks=[thermal_load_ts], - ), - ) - calc.do_modeling() - calc.solve(highs_solver) - - return calc, modeling_type - - def test_modeling_types_costs(self, modeling_calculation): - """ - Test total costs for different modeling types - """ - calc, modeling_type = modeling_calculation - - expected_costs = { - 'full': 343613, - 'segmented': 343613, # Approximate value - 'aggregated': 342967.0, - } - - if modeling_type in ['full', 'aggregated']: - assert_almost_equal_numeric( - calc.results.model['costs'].solution.item(), - expected_costs[modeling_type], - f'costs do not match for {modeling_type} modeling type', - ) - else: - assert_almost_equal_numeric( - calc.results.solution_without_overlap('costs(temporal)|per_timestep').sum(), - expected_costs[modeling_type], - f'costs do not match for {modeling_type} modeling type', - ) - - def test_segmented_io(self, modeling_calculation): - calc, modeling_type = modeling_calculation - if modeling_type == 'segmented': - calc.results.to_file(overwrite=True) - _ = fx.results.SegmentedResults.from_file(calc.folder, calc.name) - - if __name__ == '__main__': pytest.main(['-v']) diff --git a/tests/deprecated/test_io.py b/tests/deprecated/test_io.py new file mode 100644 index 000000000..9a00549d7 --- /dev/null +++ b/tests/deprecated/test_io.py @@ -0,0 +1,193 @@ +"""Tests for I/O functionality. + +Tests for deprecated Results.to_file() and Results.from_file() API +have been moved to tests/deprecated/test_results_io.py. +""" + +import pytest + +import flixopt as fx + +from .conftest import ( + flow_system_base, + flow_system_long, + flow_system_segments_of_flows_2, + simple_flow_system, + simple_flow_system_scenarios, +) + + +@pytest.fixture( + params=[ + flow_system_base, + simple_flow_system_scenarios, + flow_system_segments_of_flows_2, + simple_flow_system, + flow_system_long, + ] +) +def flow_system(request): + fs = request.getfixturevalue(request.param.__name__) + if isinstance(fs, fx.FlowSystem): + return fs + else: + return fs[0] + + +def test_flow_system_io(flow_system): + flow_system.to_json('fs.json') + + ds = flow_system.to_dataset() + new_fs = fx.FlowSystem.from_dataset(ds) + + assert flow_system == new_fs + + print(flow_system) + flow_system.__repr__() + flow_system.__str__() + + +def test_suppress_output_file_descriptors(tmp_path): + """Test that suppress_output() redirects file descriptors to /dev/null.""" + import os + + from flixopt.io import suppress_output + + # Create temporary files to capture output + test_file = tmp_path / 'test_output.txt' + + # Test that FD 1 (stdout) is redirected during suppression + with open(test_file, 'w') as f: + original_stdout_fd = os.dup(1) # Save original stdout FD + try: + # Redirect FD 1 to our test file + os.dup2(f.fileno(), 1) + os.write(1, b'before suppression\n') + + with suppress_output(): + # Inside suppress_output, writes should go to /dev/null, not our file + os.write(1, b'during suppression\n') + + # After suppress_output, writes should go to our file again + os.write(1, b'after suppression\n') + finally: + # Restore original stdout + os.dup2(original_stdout_fd, 1) + os.close(original_stdout_fd) + + # Read the file and verify content + content = test_file.read_text() + assert 'before suppression' in content + assert 'during suppression' not in content # This should NOT be in the file + assert 'after suppression' in content + + +def test_suppress_output_python_level(): + """Test that Python-level stdout/stderr continue to work after suppress_output().""" + import io + import sys + + from flixopt.io import suppress_output + + # Create a StringIO to capture Python-level output + captured_output = io.StringIO() + + # After suppress_output exits, Python streams should be functional + with suppress_output(): + pass # Just enter and exit the context + + # Redirect sys.stdout to our StringIO + old_stdout = sys.stdout + try: + sys.stdout = captured_output + print('test message') + finally: + sys.stdout = old_stdout + + # Verify Python-level stdout works + assert 'test message' in captured_output.getvalue() + + +def test_suppress_output_exception_handling(): + """Test that suppress_output() properly restores streams even on exception.""" + import sys + + from flixopt.io import suppress_output + + # Save original file descriptors + original_stdout_fd = sys.stdout.fileno() + original_stderr_fd = sys.stderr.fileno() + + try: + with suppress_output(): + raise ValueError('Test exception') + except ValueError: + pass + + # Verify streams are restored after exception + assert sys.stdout.fileno() == original_stdout_fd + assert sys.stderr.fileno() == original_stderr_fd + + # Verify we can still write to stdout/stderr + sys.stdout.write('test after exception\n') + sys.stdout.flush() + + +def test_suppress_output_c_level(): + """Test that suppress_output() suppresses C-level output (file descriptor level).""" + import os + import sys + + from flixopt.io import suppress_output + + # This test verifies that even low-level C writes are suppressed + # by writing directly to file descriptor 1 (stdout) + with suppress_output(): + # Try to write directly to FD 1 (stdout) - should be suppressed + os.write(1, b'C-level stdout write\n') + # Try to write directly to FD 2 (stderr) - should be suppressed + os.write(2, b'C-level stderr write\n') + + # After exiting context, ensure streams work + sys.stdout.write('After C-level test\n') + sys.stdout.flush() + + +def test_tqdm_cleanup_on_exception(): + """Test that tqdm progress bar is properly cleaned up even when exceptions occur. + + This test verifies the pattern used in SegmentedCalculation where a try/finally + block ensures progress_bar.close() is called even if an exception occurs. + """ + from tqdm import tqdm + + # Create a progress bar (disabled to avoid output during tests) + items = enumerate(range(5)) + progress_bar = tqdm(items, total=5, desc='Test progress', disable=True) + + # Track whether cleanup was called + cleanup_called = False + exception_raised = False + + try: + try: + for idx, _ in progress_bar: + if idx == 2: + raise ValueError('Test exception') + finally: + # This should always execute, even with exception + progress_bar.close() + cleanup_called = True + except ValueError: + exception_raised = True + + # Verify both that the exception was raised AND cleanup happened + assert exception_raised, 'Test exception should have been raised' + assert cleanup_called, 'Cleanup should have been called even with exception' + + # Verify that close() is idempotent - calling it again should not raise + progress_bar.close() # Should not raise even if already closed + + +if __name__ == '__main__': + pytest.main(['-v', '--disable-warnings']) diff --git a/tests/deprecated/test_linear_converter.py b/tests/deprecated/test_linear_converter.py new file mode 100644 index 000000000..57b911d64 --- /dev/null +++ b/tests/deprecated/test_linear_converter.py @@ -0,0 +1,501 @@ +import numpy as np +import pytest +import xarray as xr + +import flixopt as fx + +from .conftest import assert_conequal, assert_var_equal, create_linopy_model + + +class TestLinearConverterModel: + """Test the LinearConverterModel class.""" + + def test_basic_linear_converter(self, basic_flow_system_linopy_coords, coords_config): + """Test basic initialization and modeling of a LinearConverter.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create input and output flows + input_flow = fx.Flow('input', bus='input_bus', size=100) + output_flow = fx.Flow('output', bus='output_bus', size=100) + + # Create a simple linear converter with constant conversion factor + converter = fx.LinearConverter( + label='Converter', + inputs=[input_flow], + outputs=[output_flow], + conversion_factors=[{input_flow.label: 0.8, output_flow.label: 1.0}], + ) + + # Add to flow system + flow_system.add_elements(fx.Bus('input_bus'), fx.Bus('output_bus'), converter) + + # Create model + model = create_linopy_model(flow_system) + + # Check variables and constraints + assert 'Converter(input)|flow_rate' in model.variables + assert 'Converter(output)|flow_rate' in model.variables + assert 'Converter|conversion_0' in model.constraints + + # Check conversion constraint (input * 0.8 == output * 1.0) + assert_conequal( + model.constraints['Converter|conversion_0'], + input_flow.submodel.flow_rate * 0.8 == output_flow.submodel.flow_rate * 1.0, + ) + + def test_linear_converter_time_varying(self, basic_flow_system_linopy_coords, coords_config): + """Test a LinearConverter with time-varying conversion factors.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + # Create time-varying efficiency (e.g., temperature-dependent) + varying_efficiency = np.linspace(0.7, 0.9, len(timesteps)) + efficiency_series = xr.DataArray(varying_efficiency, coords=(timesteps,)) + + # Create input and output flows + input_flow = fx.Flow('input', bus='input_bus', size=100) + output_flow = fx.Flow('output', bus='output_bus', size=100) + + # Create a linear converter with time-varying conversion factor + converter = fx.LinearConverter( + label='Converter', + inputs=[input_flow], + outputs=[output_flow], + conversion_factors=[{input_flow.label: efficiency_series, output_flow.label: 1.0}], + ) + + # Add to flow system + flow_system.add_elements(fx.Bus('input_bus'), fx.Bus('output_bus'), converter) + + # Create model + model = create_linopy_model(flow_system) + + # Check variables and constraints + assert 'Converter(input)|flow_rate' in model.variables + assert 'Converter(output)|flow_rate' in model.variables + assert 'Converter|conversion_0' in model.constraints + + # Check conversion constraint (input * efficiency_series == output * 1.0) + assert_conequal( + model.constraints['Converter|conversion_0'], + input_flow.submodel.flow_rate * efficiency_series == output_flow.submodel.flow_rate * 1.0, + ) + + def test_linear_converter_multiple_factors(self, basic_flow_system_linopy_coords, coords_config): + """Test a LinearConverter with multiple conversion factors.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create flows + input_flow1 = fx.Flow('input1', bus='input_bus1', size=100) + input_flow2 = fx.Flow('input2', bus='input_bus2', size=100) + output_flow1 = fx.Flow('output1', bus='output_bus1', size=100) + output_flow2 = fx.Flow('output2', bus='output_bus2', size=100) + + # Create a linear converter with multiple inputs/outputs and conversion factors + converter = fx.LinearConverter( + label='Converter', + inputs=[input_flow1, input_flow2], + outputs=[output_flow1, output_flow2], + conversion_factors=[ + {input_flow1.label: 0.8, output_flow1.label: 1.0}, # input1 -> output1 + {input_flow2.label: 0.5, output_flow2.label: 1.0}, # input2 -> output2 + {input_flow1.label: 0.2, output_flow2.label: 0.3}, # input1 contributes to output2 + ], + ) + + # Add to flow system + flow_system.add_elements( + fx.Bus('input_bus1'), fx.Bus('input_bus2'), fx.Bus('output_bus1'), fx.Bus('output_bus2'), converter + ) + + # Create model + model = create_linopy_model(flow_system) + + # Check constraints for each conversion factor + assert 'Converter|conversion_0' in model.constraints + assert 'Converter|conversion_1' in model.constraints + assert 'Converter|conversion_2' in model.constraints + + # Check conversion constraint 1 (input1 * 0.8 == output1 * 1.0) + assert_conequal( + model.constraints['Converter|conversion_0'], + input_flow1.submodel.flow_rate * 0.8 == output_flow1.submodel.flow_rate * 1.0, + ) + + # Check conversion constraint 2 (input2 * 0.5 == output2 * 1.0) + assert_conequal( + model.constraints['Converter|conversion_1'], + input_flow2.submodel.flow_rate * 0.5 == output_flow2.submodel.flow_rate * 1.0, + ) + + # Check conversion constraint 3 (input1 * 0.2 == output2 * 0.3) + assert_conequal( + model.constraints['Converter|conversion_2'], + input_flow1.submodel.flow_rate * 0.2 == output_flow2.submodel.flow_rate * 0.3, + ) + + def test_linear_converter_with_status(self, basic_flow_system_linopy_coords, coords_config): + """Test a LinearConverter with StatusParameters.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create input and output flows + input_flow = fx.Flow('input', bus='input_bus', size=100) + output_flow = fx.Flow('output', bus='output_bus', size=100) + + # Create StatusParameters + status_params = fx.StatusParameters( + active_hours_min=10, active_hours_max=40, effects_per_active_hour={'costs': 5} + ) + + # Create a linear converter with StatusParameters + converter = fx.LinearConverter( + label='Converter', + inputs=[input_flow], + outputs=[output_flow], + conversion_factors=[{input_flow.label: 0.8, output_flow.label: 1.0}], + status_parameters=status_params, + ) + + # Add to flow system + flow_system.add_elements( + fx.Bus('input_bus'), + fx.Bus('output_bus'), + converter, + ) + + # Create model + model = create_linopy_model(flow_system) + + # Verify Status variables and constraints + assert 'Converter|status' in model.variables + assert 'Converter|active_hours' in model.variables + + # Check active_hours constraint + assert_conequal( + model.constraints['Converter|active_hours'], + model.variables['Converter|active_hours'] + == (model.variables['Converter|status'] * model.hours_per_step).sum('time'), + ) + + # Check conversion constraint + assert_conequal( + model.constraints['Converter|conversion_0'], + input_flow.submodel.flow_rate * 0.8 == output_flow.submodel.flow_rate * 1.0, + ) + + # Check status effects + assert 'Converter->costs(temporal)' in model.constraints + assert_conequal( + model.constraints['Converter->costs(temporal)'], + model.variables['Converter->costs(temporal)'] + == model.variables['Converter|status'] * model.hours_per_step * 5, + ) + + def test_linear_converter_multidimensional(self, basic_flow_system_linopy_coords, coords_config): + """Test LinearConverter with multiple inputs, outputs, and connections between them.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create a more complex setup with multiple flows + input_flow1 = fx.Flow('fuel', bus='fuel_bus', size=100) + input_flow2 = fx.Flow('electricity', bus='electricity_bus', size=50) + output_flow1 = fx.Flow('heat', bus='heat_bus', size=70) + output_flow2 = fx.Flow('cooling', bus='cooling_bus', size=30) + + # Create a CHP-like converter with more complex connections + converter = fx.LinearConverter( + label='MultiConverter', + inputs=[input_flow1, input_flow2], + outputs=[output_flow1, output_flow2], + conversion_factors=[ + # Fuel to heat (primary) + {input_flow1.label: 0.7, output_flow1.label: 1.0}, + # Electricity to cooling + {input_flow2.label: 0.3, output_flow2.label: 1.0}, + # Fuel also contributes to cooling + {input_flow1.label: 0.1, output_flow2.label: 0.5}, + ], + ) + + # Add to flow system + flow_system.add_elements( + fx.Bus('fuel_bus'), fx.Bus('electricity_bus'), fx.Bus('heat_bus'), fx.Bus('cooling_bus'), converter + ) + + # Create model + model = create_linopy_model(flow_system) + + # Check all expected constraints + assert 'MultiConverter|conversion_0' in model.constraints + assert 'MultiConverter|conversion_1' in model.constraints + assert 'MultiConverter|conversion_2' in model.constraints + + # Check the conversion equations + assert_conequal( + model.constraints['MultiConverter|conversion_0'], + input_flow1.submodel.flow_rate * 0.7 == output_flow1.submodel.flow_rate * 1.0, + ) + + assert_conequal( + model.constraints['MultiConverter|conversion_1'], + input_flow2.submodel.flow_rate * 0.3 == output_flow2.submodel.flow_rate * 1.0, + ) + + assert_conequal( + model.constraints['MultiConverter|conversion_2'], + input_flow1.submodel.flow_rate * 0.1 == output_flow2.submodel.flow_rate * 0.5, + ) + + def test_edge_case_time_varying_conversion(self, basic_flow_system_linopy_coords, coords_config): + """Test edge case with extreme time-varying conversion factors.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + timesteps = flow_system.timesteps + + # Create fluctuating conversion efficiency (e.g., for a heat pump) + # Values range from very low (0.1) to very high (5.0) + fluctuating_cop = np.concatenate( + [ + np.linspace(0.1, 1.0, len(timesteps) // 3), + np.linspace(1.0, 5.0, len(timesteps) // 3), + np.linspace(5.0, 0.1, len(timesteps) // 3 + len(timesteps) % 3), + ] + ) + + # Create input and output flows + input_flow = fx.Flow('electricity', bus='electricity_bus', size=100) + output_flow = fx.Flow('heat', bus='heat_bus', size=500) # Higher maximum to allow for COP of 5 + + conversion_factors = [{input_flow.label: fluctuating_cop, output_flow.label: np.ones(len(timesteps))}] + + # Create the converter + converter = fx.LinearConverter( + label='VariableConverter', inputs=[input_flow], outputs=[output_flow], conversion_factors=conversion_factors + ) + + # Add to flow system + flow_system.add_elements(fx.Bus('electricity_bus'), fx.Bus('heat_bus'), converter) + + # Create model + model = create_linopy_model(flow_system) + + # Check that the correct constraint was created + assert 'VariableConverter|conversion_0' in model.constraints + + factor = converter.conversion_factors[0]['electricity'] + + assert factor.dims == tuple(model.get_coords()) + + # Verify the constraint has the time-varying coefficient + assert_conequal( + model.constraints['VariableConverter|conversion_0'], + input_flow.submodel.flow_rate * factor == output_flow.submodel.flow_rate * 1.0, + ) + + def test_piecewise_conversion(self, basic_flow_system_linopy_coords, coords_config): + """Test a LinearConverter with PiecewiseConversion.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create input and output flows + input_flow = fx.Flow('input', bus='input_bus', size=100) + output_flow = fx.Flow('output', bus='output_bus', size=100) + + # Create pieces for piecewise conversion + # For input flow: two pieces from 0-50 and 50-100 + input_pieces = [fx.Piece(start=0, end=50), fx.Piece(start=50, end=100)] + + # For output flow: two pieces from 0-30 and 30-90 + output_pieces = [fx.Piece(start=0, end=30), fx.Piece(start=30, end=90)] + + # Create piecewise conversion + piecewise_conversion = fx.PiecewiseConversion( + {input_flow.label: fx.Piecewise(input_pieces), output_flow.label: fx.Piecewise(output_pieces)} + ) + + # Create a linear converter with piecewise conversion + converter = fx.LinearConverter( + label='Converter', inputs=[input_flow], outputs=[output_flow], piecewise_conversion=piecewise_conversion + ) + + # Add to flow system + flow_system.add_elements(fx.Bus('input_bus'), fx.Bus('output_bus'), converter) + + # Create model with the piecewise conversion + model = create_linopy_model(flow_system) + + # Verify that PiecewiseModel was created and added as a submodel + assert converter.submodel.piecewise_conversion is not None + + # Get the PiecewiseModel instance + piecewise_model = converter.submodel.piecewise_conversion + + # Check that we have the expected pieces (2 in this case) + assert len(piecewise_model.pieces) == 2 + + # Verify that variables were created for each piece + for i, _ in enumerate(piecewise_model.pieces): + # Each piece should have lambda0, lambda1, and inside_piece variables + assert f'Converter|Piece_{i}|lambda0' in model.variables + assert f'Converter|Piece_{i}|lambda1' in model.variables + assert f'Converter|Piece_{i}|inside_piece' in model.variables + lambda0 = model.variables[f'Converter|Piece_{i}|lambda0'] + lambda1 = model.variables[f'Converter|Piece_{i}|lambda1'] + inside_piece = model.variables[f'Converter|Piece_{i}|inside_piece'] + + assert_var_equal(inside_piece, model.add_variables(binary=True, coords=model.get_coords())) + assert_var_equal(lambda0, model.add_variables(lower=0, upper=1, coords=model.get_coords())) + assert_var_equal(lambda1, model.add_variables(lower=0, upper=1, coords=model.get_coords())) + + # Check that the inside_piece constraint exists + assert f'Converter|Piece_{i}|inside_piece' in model.constraints + # Check the relationship between inside_piece and lambdas + assert_conequal(model.constraints[f'Converter|Piece_{i}|inside_piece'], inside_piece == lambda0 + lambda1) + + assert_conequal( + model.constraints['Converter|Converter(input)|flow_rate|lambda'], + model.variables['Converter(input)|flow_rate'] + == model.variables['Converter|Piece_0|lambda0'] * 0 + + model.variables['Converter|Piece_0|lambda1'] * 50 + + model.variables['Converter|Piece_1|lambda0'] * 50 + + model.variables['Converter|Piece_1|lambda1'] * 100, + ) + + assert_conequal( + model.constraints['Converter|Converter(output)|flow_rate|lambda'], + model.variables['Converter(output)|flow_rate'] + == model.variables['Converter|Piece_0|lambda0'] * 0 + + model.variables['Converter|Piece_0|lambda1'] * 30 + + model.variables['Converter|Piece_1|lambda0'] * 30 + + model.variables['Converter|Piece_1|lambda1'] * 90, + ) + + # Check that we enforce the constraint that only one segment can be active + assert 'Converter|Converter(input)|flow_rate|single_segment' in model.constraints + + # The constraint should enforce that the sum of inside_piece variables is limited + # If there's no status parameter, the right-hand side should be 1 + assert_conequal( + model.constraints['Converter|Converter(input)|flow_rate|single_segment'], + sum([model.variables[f'Converter|Piece_{i}|inside_piece'] for i in range(len(piecewise_model.pieces))]) + <= 1, + ) + + def test_piecewise_conversion_with_status(self, basic_flow_system_linopy_coords, coords_config): + """Test a LinearConverter with PiecewiseConversion and StatusParameters.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create input and output flows + input_flow = fx.Flow('input', bus='input_bus', size=100) + output_flow = fx.Flow('output', bus='output_bus', size=100) + + # Create pieces for piecewise conversion + input_pieces = [fx.Piece(start=0, end=50), fx.Piece(start=50, end=100)] + + output_pieces = [fx.Piece(start=0, end=30), fx.Piece(start=30, end=90)] + + # Create piecewise conversion + piecewise_conversion = fx.PiecewiseConversion( + {input_flow.label: fx.Piecewise(input_pieces), output_flow.label: fx.Piecewise(output_pieces)} + ) + + # Create StatusParameters + status_params = fx.StatusParameters( + active_hours_min=10, active_hours_max=40, effects_per_active_hour={'costs': 5} + ) + + # Create a linear converter with piecewise conversion and status parameters + converter = fx.LinearConverter( + label='Converter', + inputs=[input_flow], + outputs=[output_flow], + piecewise_conversion=piecewise_conversion, + status_parameters=status_params, + ) + + # Add to flow system + flow_system.add_elements( + fx.Bus('input_bus'), + fx.Bus('output_bus'), + converter, + ) + + # Create model with the piecewise conversion + model = create_linopy_model(flow_system) + + # Verify that PiecewiseModel was created and added as a submodel + assert converter.submodel.piecewise_conversion is not None + + # Get the PiecewiseModel instance + piecewise_model = converter.submodel.piecewise_conversion + + # Check that we have the expected pieces (2 in this case) + assert len(piecewise_model.pieces) == 2 + + # Verify that the status variable was used as the zero_point for the piecewise model + # When using StatusParameters, the zero_point should be the status variable + assert 'Converter|status' in model.variables + assert piecewise_model.zero_point is not None # Should be a variable + + # Verify that variables were created for each piece + for i, _ in enumerate(piecewise_model.pieces): + # Each piece should have lambda0, lambda1, and inside_piece variables + assert f'Converter|Piece_{i}|lambda0' in model.variables + assert f'Converter|Piece_{i}|lambda1' in model.variables + assert f'Converter|Piece_{i}|inside_piece' in model.variables + lambda0 = model.variables[f'Converter|Piece_{i}|lambda0'] + lambda1 = model.variables[f'Converter|Piece_{i}|lambda1'] + inside_piece = model.variables[f'Converter|Piece_{i}|inside_piece'] + + assert_var_equal(inside_piece, model.add_variables(binary=True, coords=model.get_coords())) + assert_var_equal(lambda0, model.add_variables(lower=0, upper=1, coords=model.get_coords())) + assert_var_equal(lambda1, model.add_variables(lower=0, upper=1, coords=model.get_coords())) + + # Check that the inside_piece constraint exists + assert f'Converter|Piece_{i}|inside_piece' in model.constraints + # Check the relationship between inside_piece and lambdas + assert_conequal(model.constraints[f'Converter|Piece_{i}|inside_piece'], inside_piece == lambda0 + lambda1) + + assert_conequal( + model.constraints['Converter|Converter(input)|flow_rate|lambda'], + model.variables['Converter(input)|flow_rate'] + == model.variables['Converter|Piece_0|lambda0'] * 0 + + model.variables['Converter|Piece_0|lambda1'] * 50 + + model.variables['Converter|Piece_1|lambda0'] * 50 + + model.variables['Converter|Piece_1|lambda1'] * 100, + ) + + assert_conequal( + model.constraints['Converter|Converter(output)|flow_rate|lambda'], + model.variables['Converter(output)|flow_rate'] + == model.variables['Converter|Piece_0|lambda0'] * 0 + + model.variables['Converter|Piece_0|lambda1'] * 30 + + model.variables['Converter|Piece_1|lambda0'] * 30 + + model.variables['Converter|Piece_1|lambda1'] * 90, + ) + + # Check that we enforce the constraint that only one segment can be active + assert 'Converter|Converter(input)|flow_rate|single_segment' in model.constraints + + # The constraint should enforce that the sum of inside_piece variables is limited + assert_conequal( + model.constraints['Converter|Converter(input)|flow_rate|single_segment'], + sum([model.variables[f'Converter|Piece_{i}|inside_piece'] for i in range(len(piecewise_model.pieces))]) + <= model.variables['Converter|status'], + ) + + # Also check that the Status model is working correctly + assert 'Converter|active_hours' in model.constraints + assert_conequal( + model.constraints['Converter|active_hours'], + model['Converter|active_hours'] == (model['Converter|status'] * model.hours_per_step).sum('time'), + ) + + # Verify that the costs effect is applied + assert 'Converter->costs(temporal)' in model.constraints + assert_conequal( + model.constraints['Converter->costs(temporal)'], + model.variables['Converter->costs(temporal)'] + == model.variables['Converter|status'] * model.hours_per_step * 5, + ) + + +if __name__ == '__main__': + pytest.main() diff --git a/tests/deprecated/test_network_app.py b/tests/deprecated/test_network_app.py new file mode 100644 index 000000000..f3f250797 --- /dev/null +++ b/tests/deprecated/test_network_app.py @@ -0,0 +1,24 @@ +import pytest + +import flixopt as fx + +from .conftest import ( + flow_system_long, + flow_system_segments_of_flows_2, + simple_flow_system, +) + + +@pytest.fixture(params=[simple_flow_system, flow_system_segments_of_flows_2, flow_system_long]) +def flow_system(request): + fs = request.getfixturevalue(request.param.__name__) + if isinstance(fs, fx.FlowSystem): + return fs + else: + return fs[0] + + +def test_network_app(flow_system): + """Test that flow model constraints are correctly generated.""" + flow_system.start_network_app() + flow_system.stop_network_app() diff --git a/tests/deprecated/test_on_hours_computation.py b/tests/deprecated/test_on_hours_computation.py new file mode 100644 index 000000000..578fd7792 --- /dev/null +++ b/tests/deprecated/test_on_hours_computation.py @@ -0,0 +1,99 @@ +import numpy as np +import pytest +import xarray as xr + +from flixopt.modeling import ModelingUtilities + + +class TestComputeConsecutiveDuration: + """Tests for the compute_consecutive_hours_in_state static method.""" + + @pytest.mark.parametrize( + 'binary_values, hours_per_timestep, expected', + [ + # Case 1: Single timestep DataArrays + (xr.DataArray([1], dims=['time']), 5, 5), + (xr.DataArray([0], dims=['time']), 3, 0), + # Case 2: Array binary, scalar hours + (xr.DataArray([0, 0, 1, 1, 1, 0], dims=['time']), 2, 0), + (xr.DataArray([0, 1, 1, 0, 1, 1], dims=['time']), 1, 2), + (xr.DataArray([1, 1, 1], dims=['time']), 2, 6), + # Case 3: Edge cases + (xr.DataArray([1], dims=['time']), 4, 4), + (xr.DataArray([0], dims=['time']), 3, 0), + # Case 4: More complex patterns + (xr.DataArray([1, 0, 0, 1, 1, 1], dims=['time']), 2, 6), # 3 consecutive at end * 2 hours + (xr.DataArray([0, 1, 1, 1, 0, 0], dims=['time']), 1, 0), # ends with 0 + ], + ) + def test_compute_duration(self, binary_values, hours_per_timestep, expected): + """Test compute_consecutive_hours_in_state with various inputs.""" + result = ModelingUtilities.compute_consecutive_hours_in_state(binary_values, hours_per_timestep) + assert np.isclose(result, expected) + + @pytest.mark.parametrize( + 'binary_values, hours_per_timestep', + [ + # Case: hours_per_timestep must be scalar + (xr.DataArray([1, 1, 1, 1, 1], dims=['time']), np.array([1, 2])), + ], + ) + def test_compute_duration_raises_error(self, binary_values, hours_per_timestep): + """Test error conditions.""" + with pytest.raises(TypeError): + ModelingUtilities.compute_consecutive_hours_in_state(binary_values, hours_per_timestep) + + +class TestComputePreviousOnStates: + """Tests for the compute_previous_states static method.""" + + @pytest.mark.parametrize( + 'previous_values, expected', + [ + # Case 1: Single value DataArrays + (xr.DataArray([0], dims=['time']), xr.DataArray([0], dims=['time'])), + (xr.DataArray([1], dims=['time']), xr.DataArray([1], dims=['time'])), + (xr.DataArray([0.001], dims=['time']), xr.DataArray([1], dims=['time'])), # Using default epsilon + (xr.DataArray([1e-4], dims=['time']), xr.DataArray([1], dims=['time'])), + (xr.DataArray([1e-8], dims=['time']), xr.DataArray([0], dims=['time'])), + # Case 1: Multiple timestep DataArrays + (xr.DataArray([0, 5, 0], dims=['time']), xr.DataArray([0, 1, 0], dims=['time'])), + (xr.DataArray([0.1, 0, 0.3], dims=['time']), xr.DataArray([1, 0, 1], dims=['time'])), + (xr.DataArray([0, 0, 0], dims=['time']), xr.DataArray([0, 0, 0], dims=['time'])), + (xr.DataArray([0.1, 0, 0.2], dims=['time']), xr.DataArray([1, 0, 1], dims=['time'])), + ], + ) + def test_compute_previous_on_states(self, previous_values, expected): + """Test compute_previous_states with various inputs.""" + result = ModelingUtilities.compute_previous_states(previous_values) + xr.testing.assert_equal(result, expected) + + @pytest.mark.parametrize( + 'previous_values, epsilon, expected', + [ + # Testing with different epsilon values + (xr.DataArray([1e-6, 1e-4, 1e-2], dims=['time']), 1e-3, xr.DataArray([0, 0, 1], dims=['time'])), + (xr.DataArray([1e-6, 1e-4, 1e-2], dims=['time']), 1e-5, xr.DataArray([0, 1, 1], dims=['time'])), + (xr.DataArray([1e-6, 1e-4, 1e-2], dims=['time']), 1e-1, xr.DataArray([0, 0, 0], dims=['time'])), + # Mixed case with custom epsilon + (xr.DataArray([0.05, 0.005, 0.0005], dims=['time']), 0.01, xr.DataArray([1, 0, 0], dims=['time'])), + ], + ) + def test_compute_previous_on_states_with_epsilon(self, previous_values, epsilon, expected): + """Test compute_previous_states with custom epsilon values.""" + result = ModelingUtilities.compute_previous_states(previous_values, epsilon) + xr.testing.assert_equal(result, expected) + + @pytest.mark.parametrize( + 'previous_values, expected_shape', + [ + # Check that output shapes match expected dimensions + (xr.DataArray([0, 1, 0, 1], dims=['time']), (4,)), + (xr.DataArray([0, 1], dims=['time']), (2,)), + (xr.DataArray([1, 0], dims=['time']), (2,)), + ], + ) + def test_output_shapes(self, previous_values, expected_shape): + """Test that output array has the correct shape.""" + result = ModelingUtilities.compute_previous_states(previous_values) + assert result.shape == expected_shape diff --git a/tests/deprecated/test_plotting_api.py b/tests/deprecated/test_plotting_api.py new file mode 100644 index 000000000..141623cae --- /dev/null +++ b/tests/deprecated/test_plotting_api.py @@ -0,0 +1,138 @@ +"""Smoke tests for plotting API robustness improvements.""" + +import numpy as np +import pandas as pd +import pytest +import xarray as xr + +from flixopt import plotting + + +@pytest.fixture +def sample_dataset(): + """Create a sample xarray Dataset for testing.""" + rng = np.random.default_rng(0) + time = np.arange(10) + data = xr.Dataset( + { + 'var1': (['time'], rng.random(10)), + 'var2': (['time'], rng.random(10)), + 'var3': (['time'], rng.random(10)), + }, + coords={'time': time}, + ) + return data + + +@pytest.fixture +def sample_dataframe(): + """Create a sample pandas DataFrame for testing.""" + rng = np.random.default_rng(1) + time = np.arange(10) + df = pd.DataFrame({'var1': rng.random(10), 'var2': rng.random(10), 'var3': rng.random(10)}, index=time) + df.index.name = 'time' + return df + + +def test_kwargs_passthrough_plotly(sample_dataset): + """Test that px_kwargs are passed through and figure can be customized after creation.""" + # Test that px_kwargs are passed through + fig = plotting.with_plotly( + sample_dataset, + mode='line', + range_y=[0, 100], + ) + assert list(fig.layout.yaxis.range) == [0, 100] + + # Test that figure can be customized after creation + fig.update_traces(line={'width': 5}) + fig.update_layout(width=1200, height=600) + assert fig.layout.width == 1200 + assert fig.layout.height == 600 + assert all(getattr(t, 'line', None) and t.line.width == 5 for t in fig.data) + + +def test_dataframe_support_plotly(sample_dataframe): + """Test that DataFrames are accepted by plotting functions.""" + fig = plotting.with_plotly(sample_dataframe, mode='line') + assert fig is not None + + +def test_data_validation_non_numeric(): + """Test that validation catches non-numeric data.""" + data = xr.Dataset({'var1': (['time'], ['a', 'b', 'c'])}, coords={'time': [0, 1, 2]}) + + with pytest.raises(TypeError, match='non-?numeric'): + plotting.with_plotly(data) + + +def test_ensure_dataset_invalid_type(): + """Test that invalid types raise error via the public API.""" + with pytest.raises(TypeError, match='xr\\.Dataset|pd\\.DataFrame'): + plotting.with_plotly([1, 2, 3], mode='line') + + +@pytest.mark.parametrize( + 'engine,mode,data_type', + [ + *[ + (e, m, dt) + for e in ['plotly', 'matplotlib'] + for m in ['stacked_bar', 'line', 'area', 'grouped_bar'] + for dt in ['dataset', 'dataframe', 'series'] + if not (e == 'matplotlib' and m in ['area', 'grouped_bar']) + ], + ], +) +def test_all_data_types_and_modes(engine, mode, data_type): + """Test that Dataset, DataFrame, and Series work with all plotting modes.""" + time = pd.date_range('2020-01-01', periods=5, freq='h') + + data = { + 'dataset': xr.Dataset( + {'A': (['time'], [1, 2, 3, 4, 5]), 'B': (['time'], [5, 4, 3, 2, 1])}, coords={'time': time} + ), + 'dataframe': pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 4, 3, 2, 1]}, index=time), + 'series': pd.Series([1, 2, 3, 4, 5], index=time, name='A'), + }[data_type] + + if engine == 'plotly': + fig = plotting.with_plotly(data, mode=mode) + assert fig is not None and len(fig.data) > 0 + else: + fig, ax = plotting.with_matplotlib(data, mode=mode) + assert fig is not None and ax is not None + + +@pytest.mark.parametrize( + 'engine,data_type', [(e, dt) for e in ['plotly', 'matplotlib'] for dt in ['dataset', 'dataframe', 'series']] +) +def test_pie_plots(engine, data_type): + """Test pie charts with all data types, including automatic summing.""" + time = pd.date_range('2020-01-01', periods=5, freq='h') + + # Single-value data + single_data = { + 'dataset': xr.Dataset({'A': xr.DataArray(10), 'B': xr.DataArray(20), 'C': xr.DataArray(30)}), + 'dataframe': pd.DataFrame({'A': [10], 'B': [20], 'C': [30]}), + 'series': pd.Series({'A': 10, 'B': 20, 'C': 30}), + }[data_type] + + # Multi-dimensional data (for summing test) + multi_data = { + 'dataset': xr.Dataset( + {'A': (['time'], [1, 2, 3, 4, 5]), 'B': (['time'], [5, 5, 5, 5, 5])}, coords={'time': time} + ), + 'dataframe': pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': [5, 5, 5, 5, 5]}, index=time), + 'series': pd.Series([1, 2, 3, 4, 5], index=time, name='A'), + }[data_type] + + for data in [single_data, multi_data]: + if engine == 'plotly': + fig = plotting.dual_pie_with_plotly(data, data) + assert fig is not None and len(fig.data) >= 2 + if data is multi_data and data_type != 'series': + assert sum(fig.data[0].values) == pytest.approx(40) + else: + fig, axes = plotting.dual_pie_with_matplotlib(data, data) + assert fig is not None and len(axes) == 2 diff --git a/tests/deprecated/test_resample_equivalence.py b/tests/deprecated/test_resample_equivalence.py new file mode 100644 index 000000000..19144b6a1 --- /dev/null +++ b/tests/deprecated/test_resample_equivalence.py @@ -0,0 +1,310 @@ +""" +Tests to ensure the dimension grouping optimization in _resample_by_dimension_groups +is equivalent to naive Dataset resampling. + +These tests verify that the optimization (grouping variables by dimensions before +resampling) produces identical results to simply calling Dataset.resample() directly. +""" + +import numpy as np +import pandas as pd +import pytest +import xarray as xr + +import flixopt as fx + + +def naive_dataset_resample(dataset: xr.Dataset, freq: str, method: str) -> xr.Dataset: + """ + Naive resampling: simply call Dataset.resample().method() directly. + + This is the straightforward approach without dimension grouping optimization. + """ + return getattr(dataset.resample(time=freq), method)() + + +def create_dataset_with_mixed_dimensions(n_timesteps=48, seed=42): + """ + Create a dataset with variables having different dimension structures. + + This mimics realistic data with: + - Variables with only time dimension + - Variables with time + one other dimension + - Variables with time + multiple dimensions + """ + np.random.seed(seed) + timesteps = pd.date_range('2020-01-01', periods=n_timesteps, freq='h') + + ds = xr.Dataset( + coords={ + 'time': timesteps, + 'component': ['comp1', 'comp2'], + 'bus': ['bus1', 'bus2'], + 'scenario': ['base', 'alt'], + } + ) + + # Variable with only time dimension + ds['total_demand'] = xr.DataArray( + np.random.randn(n_timesteps), + dims=['time'], + coords={'time': ds.time}, + ) + + # Variable with time + component + ds['component_flow'] = xr.DataArray( + np.random.randn(n_timesteps, 2), + dims=['time', 'component'], + coords={'time': ds.time, 'component': ds.component}, + ) + + # Variable with time + bus + ds['bus_balance'] = xr.DataArray( + np.random.randn(n_timesteps, 2), + dims=['time', 'bus'], + coords={'time': ds.time, 'bus': ds.bus}, + ) + + # Variable with time + component + bus + ds['flow_on_bus'] = xr.DataArray( + np.random.randn(n_timesteps, 2, 2), + dims=['time', 'component', 'bus'], + coords={'time': ds.time, 'component': ds.component, 'bus': ds.bus}, + ) + + # Variable with time + scenario + ds['scenario_demand'] = xr.DataArray( + np.random.randn(n_timesteps, 2), + dims=['time', 'scenario'], + coords={'time': ds.time, 'scenario': ds.scenario}, + ) + + # Variable with time + component + scenario + ds['component_scenario_flow'] = xr.DataArray( + np.random.randn(n_timesteps, 2, 2), + dims=['time', 'component', 'scenario'], + coords={'time': ds.time, 'component': ds.component, 'scenario': ds.scenario}, + ) + + return ds + + +@pytest.mark.parametrize('method', ['mean', 'sum', 'max', 'min', 'first', 'last']) +@pytest.mark.parametrize('freq', ['2h', '4h', '1D']) +def test_resample_equivalence_mixed_dimensions(method, freq): + """ + Test that _resample_by_dimension_groups produces same results as naive resampling. + + Uses a dataset with variables having different dimension structures. + """ + ds = create_dataset_with_mixed_dimensions(n_timesteps=100) + + # Method 1: Optimized approach (with dimension grouping) + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, freq, method) + + # Method 2: Naive approach (direct Dataset resampling) + result_naive = naive_dataset_resample(ds, freq, method) + + # Compare results + xr.testing.assert_allclose(result_optimized, result_naive) + + +@pytest.mark.parametrize('method', ['mean', 'sum', 'max', 'min', 'first', 'last', 'std', 'var', 'median']) +def test_resample_equivalence_single_dimension(method): + """ + Test with variables having only time dimension. + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + + ds = xr.Dataset(coords={'time': timesteps}) + ds['var1'] = xr.DataArray(np.random.randn(48), dims=['time'], coords={'time': ds.time}) + ds['var2'] = xr.DataArray(np.random.randn(48) * 10, dims=['time'], coords={'time': ds.time}) + ds['var3'] = xr.DataArray(np.random.randn(48) / 5, dims=['time'], coords={'time': ds.time}) + + # Optimized approach + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '2h', method) + + # Naive approach + result_naive = naive_dataset_resample(ds, '2h', method) + + # Compare results + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_empty_dataset(): + """ + Test with an empty dataset (edge case). + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + ds = xr.Dataset(coords={'time': timesteps}) + + # Both should handle empty dataset gracefully + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '2h', 'mean') + result_naive = naive_dataset_resample(ds, '2h', 'mean') + + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_single_variable(): + """ + Test with a single variable. + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + ds = xr.Dataset(coords={'time': timesteps}) + ds['single_var'] = xr.DataArray(np.random.randn(48), dims=['time'], coords={'time': ds.time}) + + # Test multiple methods + for method in ['mean', 'sum', 'max', 'min']: + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '3h', method) + result_naive = naive_dataset_resample(ds, '3h', method) + + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_with_nans(): + """ + Test with NaN values to ensure they're handled consistently. + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + + ds = xr.Dataset(coords={'time': timesteps, 'component': ['a', 'b']}) + + # Create variable with some NaN values + data = np.random.randn(48, 2) + data[5:10, 0] = np.nan + data[20:25, 1] = np.nan + + ds['var_with_nans'] = xr.DataArray( + data, dims=['time', 'component'], coords={'time': ds.time, 'component': ds.component} + ) + + # Test with methods that handle NaNs + for method in ['mean', 'sum', 'max', 'min', 'first', 'last']: + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '2h', method) + result_naive = naive_dataset_resample(ds, '2h', method) + + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_different_dimension_orders(): + """ + Test that dimension order doesn't affect the equivalence. + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + + ds = xr.Dataset( + coords={ + 'time': timesteps, + 'x': ['x1', 'x2'], + 'y': ['y1', 'y2'], + } + ) + + # Variable with time first + ds['var_time_first'] = xr.DataArray( + np.random.randn(48, 2, 2), + dims=['time', 'x', 'y'], + coords={'time': ds.time, 'x': ds.x, 'y': ds.y}, + ) + + # Variable with time in middle + ds['var_time_middle'] = xr.DataArray( + np.random.randn(2, 48, 2), + dims=['x', 'time', 'y'], + coords={'x': ds.x, 'time': ds.time, 'y': ds.y}, + ) + + # Variable with time last + ds['var_time_last'] = xr.DataArray( + np.random.randn(2, 2, 48), + dims=['x', 'y', 'time'], + coords={'x': ds.x, 'y': ds.y, 'time': ds.time}, + ) + + for method in ['mean', 'sum', 'max', 'min']: + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '2h', method) + result_naive = naive_dataset_resample(ds, '2h', method) + + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_multiple_variables_same_dims(): + """ + Test with multiple variables sharing the same dimensions. + + This is the key optimization case - variables with same dims should be + grouped and resampled together. + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + + ds = xr.Dataset(coords={'time': timesteps, 'location': ['A', 'B', 'C']}) + + # Multiple variables with same dimensions (time, location) + for i in range(3): + ds[f'var_{i}'] = xr.DataArray( + np.random.randn(48, 3), + dims=['time', 'location'], + coords={'time': ds.time, 'location': ds.location}, + ) + + for method in ['mean', 'sum', 'max', 'min']: + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '2h', method) + result_naive = naive_dataset_resample(ds, '2h', method) + + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_large_dataset(): + """ + Test with a larger, more realistic dataset. + """ + timesteps = pd.date_range('2020-01-01', periods=168, freq='h') # One week + + ds = xr.Dataset( + coords={ + 'time': timesteps, + 'component': [f'comp_{i}' for i in range(5)], + 'bus': [f'bus_{i}' for i in range(3)], + } + ) + + # Various variable types + ds['simple_var'] = xr.DataArray(np.random.randn(168), dims=['time'], coords={'time': ds.time}) + ds['component_var'] = xr.DataArray( + np.random.randn(168, 5), dims=['time', 'component'], coords={'time': ds.time, 'component': ds.component} + ) + ds['bus_var'] = xr.DataArray(np.random.randn(168, 3), dims=['time', 'bus'], coords={'time': ds.time, 'bus': ds.bus}) + ds['complex_var'] = xr.DataArray( + np.random.randn(168, 5, 3), + dims=['time', 'component', 'bus'], + coords={'time': ds.time, 'component': ds.component, 'bus': ds.bus}, + ) + + # Test with a subset of methods (to keep test time reasonable) + for method in ['mean', 'sum', 'first']: + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '1D', method) + result_naive = naive_dataset_resample(ds, '1D', method) + + xr.testing.assert_allclose(result_optimized, result_naive) + + +def test_resample_equivalence_with_kwargs(): + """ + Test that kwargs are properly forwarded to resample(). + + Verifies that additional arguments like label and closed are correctly + passed through the optimization path. + """ + timesteps = pd.date_range('2020-01-01', periods=48, freq='h') + ds = xr.Dataset(coords={'time': timesteps}) + ds['var'] = xr.DataArray(np.random.randn(48), dims=['time'], coords={'time': ds.time}) + + kwargs = {'label': 'right', 'closed': 'right'} + result_optimized = fx.FlowSystem._resample_by_dimension_groups(ds, '2h', 'mean', **kwargs) + result_naive = ds.resample(time='2h', **kwargs).mean() + + xr.testing.assert_allclose(result_optimized, result_naive) + + +if __name__ == '__main__': + pytest.main(['-v', __file__]) diff --git a/tests/deprecated/test_results_plots.py b/tests/deprecated/test_results_plots.py new file mode 100644 index 000000000..f68f5ec07 --- /dev/null +++ b/tests/deprecated/test_results_plots.py @@ -0,0 +1,97 @@ +import matplotlib.pyplot as plt +import pytest + +import flixopt as fx + +from .conftest import create_optimization_and_solve, simple_flow_system + + +@pytest.fixture(params=[True, False]) +def show(request): + return request.param + + +@pytest.fixture(params=[simple_flow_system]) +def flow_system(request): + return request.getfixturevalue(request.param.__name__) + + +@pytest.fixture(params=[True, False]) +def save(request): + return request.param + + +@pytest.fixture(params=['plotly', 'matplotlib']) +def plotting_engine(request): + return request.param + + +@pytest.fixture( + params=[ + 'turbo', # Test string colormap + ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'], # Test color list + { + 'Boiler(Q_th)|flow_rate': '#ff0000', + 'Heat Demand(Q_th)|flow_rate': '#00ff00', + 'Speicher(Q_th_load)|flow_rate': '#0000ff', + }, # Test color dict + ] +) +def color_spec(request): + return request.param + + +@pytest.mark.slow +def test_results_plots(flow_system, plotting_engine, show, save, color_spec): + optimization = create_optimization_and_solve(flow_system, fx.solvers.HighsSolver(0.01, 30), 'test_results_plots') + results = optimization.results + + results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=color_spec) + + # Matplotlib doesn't support faceting/animation, so disable them for matplotlib engine + heatmap_kwargs = { + 'reshape_time': ('D', 'h'), + 'colors': 'turbo', # Note: heatmap only accepts string colormap + 'save': save, + 'show': show, + 'engine': plotting_engine, + } + if plotting_engine == 'matplotlib': + heatmap_kwargs['facet_by'] = None + heatmap_kwargs['animate_by'] = None + + results.plot_heatmap('Speicher(Q_th_load)|flow_rate', **heatmap_kwargs) + + results['Speicher'].plot_node_balance_pie(engine=plotting_engine, save=save, show=show, colors=color_spec) + + # Matplotlib doesn't support faceting/animation for plot_charge_state, and 'area' mode + charge_state_kwargs = {'engine': plotting_engine} + if plotting_engine == 'matplotlib': + charge_state_kwargs['facet_by'] = None + charge_state_kwargs['animate_by'] = None + charge_state_kwargs['mode'] = 'stacked_bar' # 'area' not supported by matplotlib + results['Speicher'].plot_charge_state(**charge_state_kwargs) + + plt.close('all') + + +@pytest.mark.slow +def test_color_handling_edge_cases(flow_system, plotting_engine, show, save): + """Test edge cases for color handling""" + optimization = create_optimization_and_solve(flow_system, fx.solvers.HighsSolver(0.01, 30), 'test_color_edge_cases') + results = optimization.results + + # Test with empty color list (should fall back to default) + results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=[]) + + # Test with invalid colormap name (should use default and log warning) + results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors='nonexistent_colormap') + + # Test with insufficient colors for elements (should cycle colors) + results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=['#ff0000', '#00ff00']) + + # Test with color dict missing some elements (should use default for missing) + partial_color_dict = {'Boiler(Q_th)|flow_rate': '#ff0000'} # Missing other elements + results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=partial_color_dict) + + plt.close('all') diff --git a/tests/deprecated/test_scenarios.py b/tests/deprecated/test_scenarios.py new file mode 100644 index 000000000..366429831 --- /dev/null +++ b/tests/deprecated/test_scenarios.py @@ -0,0 +1,769 @@ +import numpy as np +import pandas as pd +import pytest +import xarray as xr +from linopy.testing import assert_linequal + +import flixopt as fx +from flixopt import Effect, InvestParameters, Sink, Source, Storage +from flixopt.elements import Bus, Flow +from flixopt.flow_system import FlowSystem + +from .conftest import create_linopy_model + + +@pytest.fixture +def test_system(): + """Create a basic test system with scenarios.""" + # Create a two-day time index with hourly resolution + timesteps = pd.date_range('2023-01-01', periods=48, freq='h', name='time') + + # Create two scenarios + scenarios = pd.Index(['Scenario A', 'Scenario B'], name='scenario') + + # Create scenario weights + scenario_weights = np.array([0.7, 0.3]) + + # Create a flow system with scenarios + flow_system = FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_weights=scenario_weights, + ) + + # Create demand profiles that differ between scenarios + # Scenario A: Higher demand in first day, lower in second day + # Scenario B: Lower demand in first day, higher in second day + demand_profile_a = np.concatenate( + [ + np.sin(np.linspace(0, 2 * np.pi, 24)) * 5 + 10, # Day 1, max ~15 + np.sin(np.linspace(0, 2 * np.pi, 24)) * 2 + 5, # Day 2, max ~7 + ] + ) + + demand_profile_b = np.concatenate( + [ + np.sin(np.linspace(0, 2 * np.pi, 24)) * 2 + 5, # Day 1, max ~7 + np.sin(np.linspace(0, 2 * np.pi, 24)) * 5 + 10, # Day 2, max ~15 + ] + ) + + # Stack the profiles into a 2D array (time, scenario) + demand_profiles = np.column_stack([demand_profile_a, demand_profile_b]) + + # Create the necessary model elements + # Create buses + electricity_bus = Bus('Electricity') + + # Create a demand sink with scenario-dependent profiles + demand = Flow(label='Demand', bus=electricity_bus.label_full, fixed_relative_profile=demand_profiles) + demand_sink = Sink('Demand', inputs=[demand]) + + # Create a power source with investment option + power_gen = Flow( + label='Generation', + bus=electricity_bus.label_full, + size=InvestParameters( + minimum_size=0, + maximum_size=20, + effects_of_investment_per_size={'costs': 100}, # €/kW + ), + effects_per_flow_hour={'costs': 20}, # €/MWh + ) + generator = Source('Generator', outputs=[power_gen]) + + # Create a storage for electricity + storage_charge = Flow(label='Charge', bus=electricity_bus.label_full, size=10) + storage_discharge = Flow(label='Discharge', bus=electricity_bus.label_full, size=10) + storage = Storage( + label='Battery', + charging=storage_charge, + discharging=storage_discharge, + capacity_in_flow_hours=InvestParameters( + minimum_size=0, + maximum_size=50, + effects_of_investment_per_size={'costs': 50}, # €/kWh + ), + eta_charge=0.95, + eta_discharge=0.95, + initial_charge_state='equals_final', + ) + + # Create effects and objective + cost_effect = Effect(label='costs', unit='€', description='Total costs', is_standard=True, is_objective=True) + + # Add all elements to the flow system + flow_system.add_elements(electricity_bus, generator, demand_sink, storage, cost_effect) + + # Return the created system and its components + return { + 'flow_system': flow_system, + 'timesteps': timesteps, + 'scenarios': scenarios, + 'electricity_bus': electricity_bus, + 'demand': demand, + 'demand_sink': demand_sink, + 'generator': generator, + 'power_gen': power_gen, + 'storage': storage, + 'storage_charge': storage_charge, + 'storage_discharge': storage_discharge, + 'cost_effect': cost_effect, + } + + +@pytest.fixture +def flow_system_complex_scenarios() -> fx.FlowSystem: + """ + Helper method to create a base model with configurable parameters + """ + thermal_load = np.array([30, 0, 90, 110, 110, 20, 20, 20, 20]) + electrical_load = np.array([40, 40, 40, 40, 40, 40, 40, 40, 40]) + flow_system = fx.FlowSystem( + pd.date_range('2020-01-01', periods=9, freq='h', name='time'), + scenarios=pd.Index(['A', 'B', 'C'], name='scenario'), + ) + # Define the components and flow_system + flow_system.add_elements( + fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True, share_from_temporal={'CO2': 0.2}), + fx.Effect('CO2', 'kg', 'CO2_e-Emissionen'), + fx.Effect('PE', 'kWh_PE', 'Primärenergie', maximum_total=3.5e3), + fx.Bus('Strom'), + fx.Bus('Fernwärme'), + fx.Bus('Gas'), + fx.Sink('Wärmelast', inputs=[fx.Flow('Q_th_Last', 'Fernwärme', size=1, fixed_relative_profile=thermal_load)]), + fx.Source( + 'Gastarif', outputs=[fx.Flow('Q_Gas', 'Gas', size=1000, effects_per_flow_hour={'costs': 0.04, 'CO2': 0.3})] + ), + fx.Sink('Einspeisung', inputs=[fx.Flow('P_el', 'Strom', effects_per_flow_hour=-1 * electrical_load)]), + ) + + boiler = fx.linear_converters.Boiler( + 'Kessel', + thermal_efficiency=0.5, + status_parameters=fx.StatusParameters(effects_per_active_hour={'costs': 0, 'CO2': 1000}), + thermal_flow=fx.Flow( + 'Q_th', + bus='Fernwärme', + load_factor_max=1.0, + load_factor_min=0.1, + relative_minimum=5 / 50, + relative_maximum=1, + previous_flow_rate=50, + size=fx.InvestParameters( + effects_of_investment=1000, + fixed_size=50, + mandatory=True, + effects_of_investment_per_size={'costs': 10, 'PE': 2}, + ), + status_parameters=fx.StatusParameters( + active_hours_min=0, + active_hours_max=1000, + max_uptime=10, + min_uptime=1, + max_downtime=10, + effects_per_startup=0.01, + startup_limit=1000, + ), + flow_hours_max=1e6, + ), + fuel_flow=fx.Flow('Q_fu', bus='Gas', size=200, relative_minimum=0, relative_maximum=1), + ) + + invest_speicher = fx.InvestParameters( + effects_of_investment=0, + piecewise_effects_of_investment=fx.PiecewiseEffects( + piecewise_origin=fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), + piecewise_shares={ + 'costs': fx.Piecewise([fx.Piece(50, 250), fx.Piece(250, 800)]), + 'PE': fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), + }, + ), + mandatory=True, + effects_of_investment_per_size={'costs': 0.01, 'CO2': 0.01}, + minimum_size=0, + maximum_size=1000, + ) + speicher = fx.Storage( + 'Speicher', + charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1e4), + discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1e4), + capacity_in_flow_hours=invest_speicher, + initial_charge_state=0, + maximal_final_charge_state=10, + eta_charge=0.9, + eta_discharge=1, + relative_loss_per_hour=0.08, + prevent_simultaneous_charge_and_discharge=True, + ) + + flow_system.add_elements(boiler, speicher) + + return flow_system + + +@pytest.fixture +def flow_system_piecewise_conversion_scenarios(flow_system_complex_scenarios) -> fx.FlowSystem: + """ + Use segments/Piecewise with numeric data + """ + flow_system = flow_system_complex_scenarios + + flow_system.add_elements( + fx.LinearConverter( + 'KWK', + inputs=[fx.Flow('Q_fu', bus='Gas')], + outputs=[ + fx.Flow('P_el', bus='Strom', size=60, relative_maximum=55, previous_flow_rate=10), + fx.Flow('Q_th', bus='Fernwärme'), + ], + piecewise_conversion=fx.PiecewiseConversion( + { + 'P_el': fx.Piecewise( + [ + fx.Piece(np.linspace(5, 6, len(flow_system.timesteps)), 30), + fx.Piece(40, np.linspace(60, 70, len(flow_system.timesteps))), + ] + ), + 'Q_th': fx.Piecewise([fx.Piece(6, 35), fx.Piece(45, 100)]), + 'Q_fu': fx.Piecewise([fx.Piece(12, 70), fx.Piece(90, 200)]), + } + ), + status_parameters=fx.StatusParameters(effects_per_startup=0.01), + ) + ) + + return flow_system + + +def test_weights(flow_system_piecewise_conversion_scenarios): + """Test that scenario weights are correctly used in the model.""" + scenarios = flow_system_piecewise_conversion_scenarios.scenarios + scenario_weights = np.linspace(0.5, 1, len(scenarios)) + scenario_weights_da = xr.DataArray( + scenario_weights, + dims=['scenario'], + coords={'scenario': scenarios}, + ) + flow_system_piecewise_conversion_scenarios.scenario_weights = scenario_weights_da + model = create_linopy_model(flow_system_piecewise_conversion_scenarios) + normalized_weights = scenario_weights / sum(scenario_weights) + np.testing.assert_allclose(model.objective_weights.values, normalized_weights) + # Penalty is now an effect with temporal and periodic components + penalty_total = flow_system_piecewise_conversion_scenarios.effects.penalty_effect.submodel.total + assert_linequal( + model.objective.expression, + (model.variables['costs'] * normalized_weights).sum() + (penalty_total * normalized_weights).sum(), + ) + assert np.isclose(model.objective_weights.sum().item(), 1) + + +def test_weights_io(flow_system_piecewise_conversion_scenarios): + """Test that scenario weights are correctly used in the model.""" + scenarios = flow_system_piecewise_conversion_scenarios.scenarios + scenario_weights = np.linspace(0.5, 1, len(scenarios)) + scenario_weights_da = xr.DataArray( + scenario_weights, + dims=['scenario'], + coords={'scenario': scenarios}, + ) + normalized_scenario_weights_da = scenario_weights_da / scenario_weights_da.sum() + flow_system_piecewise_conversion_scenarios.scenario_weights = scenario_weights_da + + model = create_linopy_model(flow_system_piecewise_conversion_scenarios) + np.testing.assert_allclose(model.objective_weights.values, normalized_scenario_weights_da) + # Penalty is now an effect with temporal and periodic components + penalty_total = flow_system_piecewise_conversion_scenarios.effects.penalty_effect.submodel.total + assert_linequal( + model.objective.expression, + (model.variables['costs'] * normalized_scenario_weights_da).sum() + + (penalty_total * normalized_scenario_weights_da).sum(), + ) + assert np.isclose(model.objective_weights.sum().item(), 1.0) + + +def test_scenario_dimensions_in_variables(flow_system_piecewise_conversion_scenarios): + """Test that all time variables are correctly broadcasted to scenario dimensions.""" + model = create_linopy_model(flow_system_piecewise_conversion_scenarios) + for var in model.variables: + assert model.variables[var].dims in [('time', 'scenario'), ('scenario',), ()] + + +def test_full_scenario_optimization(flow_system_piecewise_conversion_scenarios): + """Test a full optimization with scenarios and verify results.""" + scenarios = flow_system_piecewise_conversion_scenarios.scenarios + weights = np.linspace(0.5, 1, len(scenarios)) / np.sum(np.linspace(0.5, 1, len(scenarios))) + flow_system_piecewise_conversion_scenarios.scenario_weights = weights + + # Optimize using new API + flow_system_piecewise_conversion_scenarios.optimize(fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60)) + + # Verify solution exists and has scenario dimension + assert flow_system_piecewise_conversion_scenarios.solution is not None + assert 'scenario' in flow_system_piecewise_conversion_scenarios.solution.dims + + +@pytest.mark.skip(reason='This test is taking too long with highs and is too big for gurobipy free') +def test_io_persistence(flow_system_piecewise_conversion_scenarios, tmp_path): + """Test a full optimization with scenarios and verify results.""" + scenarios = flow_system_piecewise_conversion_scenarios.scenarios + weights = np.linspace(0.5, 1, len(scenarios)) / np.sum(np.linspace(0.5, 1, len(scenarios))) + flow_system_piecewise_conversion_scenarios.scenario_weights = weights + + # Optimize using new API + flow_system_piecewise_conversion_scenarios.optimize(fx.solvers.HighsSolver(mip_gap=0.001, time_limit_seconds=60)) + original_objective = flow_system_piecewise_conversion_scenarios.solution['objective'].item() + + # Save and restore + filepath = tmp_path / 'flow_system_scenarios.nc4' + flow_system_piecewise_conversion_scenarios.to_netcdf(filepath) + flow_system_2 = fx.FlowSystem.from_netcdf(filepath) + + # Re-optimize restored flow system + flow_system_2.optimize(fx.solvers.HighsSolver(mip_gap=0.001, time_limit_seconds=60)) + + np.testing.assert_allclose(original_objective, flow_system_2.solution['objective'].item(), rtol=0.001) + + +def test_scenarios_selection(flow_system_piecewise_conversion_scenarios): + """Test scenario selection/subsetting functionality.""" + flow_system_full = flow_system_piecewise_conversion_scenarios + scenarios = flow_system_full.scenarios + scenario_weights = np.linspace(0.5, 1, len(scenarios)) / np.sum(np.linspace(0.5, 1, len(scenarios))) + flow_system_full.scenario_weights = scenario_weights + flow_system = flow_system_full.sel(scenario=scenarios[0:2]) + + assert flow_system.scenarios.equals(flow_system_full.scenarios[0:2]) + + np.testing.assert_allclose(flow_system.scenario_weights.values, flow_system_full.scenario_weights[0:2]) + + # Optimize using new API with normalize_weights=False + flow_system.optimize( + fx.solvers.GurobiSolver(mip_gap=0.01, time_limit_seconds=60), + normalize_weights=False, + ) + + # Penalty has same structure as other effects: 'Penalty' is the total, 'Penalty(temporal)' and 'Penalty(periodic)' are components + np.testing.assert_allclose( + flow_system.solution['objective'].item(), + ( + (flow_system.solution['costs'] * flow_system.scenario_weights).sum() + + (flow_system.solution['Penalty'] * flow_system.scenario_weights).sum() + ).item(), + ) ## Account for rounding errors + + assert flow_system.solution.indexes['scenario'].equals(flow_system_full.scenarios[0:2]) + + +def test_sizes_per_scenario_default(): + """Test that scenario_independent_sizes defaults to True (sizes equalized) and flow_rates to False (vary).""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios) + + assert fs.scenario_independent_sizes is True + assert fs.scenario_independent_flow_rates is False + + +def test_sizes_per_scenario_bool(): + """Test scenario_independent_sizes with boolean values.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + # Test False (vary per scenario) + fs1 = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios, scenario_independent_sizes=False) + assert fs1.scenario_independent_sizes is False + + # Test True (equalized across scenarios) + fs2 = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios, scenario_independent_sizes=True) + assert fs2.scenario_independent_sizes is True + + +def test_sizes_per_scenario_list(): + """Test scenario_independent_sizes with list of element labels.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_independent_sizes=['solar->grid', 'battery->grid'], + ) + + assert fs.scenario_independent_sizes == ['solar->grid', 'battery->grid'] + + +def test_flow_rates_per_scenario_default(): + """Test that scenario_independent_flow_rates defaults to False (flow rates vary by scenario).""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios) + + assert fs.scenario_independent_flow_rates is False + + +def test_flow_rates_per_scenario_bool(): + """Test scenario_independent_flow_rates with boolean values.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + # Test False (vary per scenario) + fs1 = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios, scenario_independent_flow_rates=False) + assert fs1.scenario_independent_flow_rates is False + + # Test True (equalized across scenarios) + fs2 = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios, scenario_independent_flow_rates=True) + assert fs2.scenario_independent_flow_rates is True + + +def test_scenario_parameters_property_setters(): + """Test that scenario parameters can be changed via property setters.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios) + + # Change scenario_independent_sizes + fs.scenario_independent_sizes = True + assert fs.scenario_independent_sizes is True + + fs.scenario_independent_sizes = ['component1', 'component2'] + assert fs.scenario_independent_sizes == ['component1', 'component2'] + + # Change scenario_independent_flow_rates + fs.scenario_independent_flow_rates = True + assert fs.scenario_independent_flow_rates is True + + fs.scenario_independent_flow_rates = ['flow1', 'flow2'] + assert fs.scenario_independent_flow_rates == ['flow1', 'flow2'] + + +def test_scenario_parameters_validation(): + """Test that scenario parameters are validated correctly.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem(timesteps=timesteps, scenarios=scenarios) + + # Test invalid type + with pytest.raises(TypeError, match='must be bool or list'): + fs.scenario_independent_sizes = 'invalid' + + # Test invalid list content + with pytest.raises(ValueError, match='must contain only strings'): + fs.scenario_independent_sizes = [1, 2, 3] + + +def test_size_equality_constraints(): + """Test that size equality constraints are created when scenario_independent_sizes=True.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_independent_sizes=True, # Sizes should be equalized + scenario_independent_flow_rates=False, # Flow rates can vary + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=fx.InvestParameters( + minimum_size=10, + maximum_size=100, + effects_of_investment_per_size={'cost': 100}, + ), + ) + ], + ) + + fs.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + fs.build_model() + + # Check that size equality constraint exists + constraint_names = [str(c) for c in fs.model.constraints] + size_constraints = [c for c in constraint_names if 'scenario_independent' in c and 'size' in c] + + assert len(size_constraints) > 0, 'Size equality constraint should exist' + + +def test_flow_rate_equality_constraints(): + """Test that flow_rate equality constraints are created when scenario_independent_flow_rates=True.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_independent_sizes=False, # Sizes can vary + scenario_independent_flow_rates=True, # Flow rates should be equalized + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=fx.InvestParameters( + minimum_size=10, + maximum_size=100, + effects_of_investment_per_size={'cost': 100}, + ), + ) + ], + ) + + fs.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + fs.build_model() + + # Check that flow_rate equality constraint exists + constraint_names = [str(c) for c in fs.model.constraints] + flow_rate_constraints = [c for c in constraint_names if 'scenario_independent' in c and 'flow_rate' in c] + + assert len(flow_rate_constraints) > 0, 'Flow rate equality constraint should exist' + + +def test_selective_scenario_independence(): + """Test selective scenario independence with specific element lists.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_independent_sizes=['solar(out)'], # Only solar size is equalized + scenario_independent_flow_rates=['demand(in)'], # Only demand flow_rate is equalized + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=fx.InvestParameters( + minimum_size=10, maximum_size=100, effects_of_investment_per_size={'cost': 100} + ), + ) + ], + ) + sink = fx.Sink( + label='demand', + inputs=[fx.Flow(label='in', bus='grid', size=50)], + ) + + fs.add_elements(bus, source, sink, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + fs.build_model() + + constraint_names = [str(c) for c in fs.model.constraints] + + # Solar SHOULD have size constraints (it's in the list, so equalized) + solar_size_constraints = [c for c in constraint_names if 'solar(out)|size' in c and 'scenario_independent' in c] + assert len(solar_size_constraints) > 0 + + # Solar should NOT have flow_rate constraints (not in the list, so varies per scenario) + solar_flow_constraints = [ + c for c in constraint_names if 'solar(out)|flow_rate' in c and 'scenario_independent' in c + ] + assert len(solar_flow_constraints) == 0 + + # Demand should NOT have size constraints (no InvestParameters, size is fixed) + demand_size_constraints = [c for c in constraint_names if 'demand(in)|size' in c and 'scenario_independent' in c] + assert len(demand_size_constraints) == 0 + + # Demand SHOULD have flow_rate constraints (it's in the list, so equalized) + demand_flow_constraints = [ + c for c in constraint_names if 'demand(in)|flow_rate' in c and 'scenario_independent' in c + ] + assert len(demand_flow_constraints) > 0 + + +def test_scenario_parameters_io_persistence(): + """Test that scenario_independent_sizes and scenario_independent_flow_rates persist through IO operations.""" + + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + # Create FlowSystem with custom scenario parameters + fs_original = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_independent_sizes=['solar(out)'], + scenario_independent_flow_rates=True, + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=fx.InvestParameters( + minimum_size=10, maximum_size=100, effects_of_investment_per_size={'cost': 100} + ), + ) + ], + ) + + fs_original.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + # Save to dataset + fs_original.connect_and_transform() + ds = fs_original.to_dataset() + + # Load from dataset + fs_loaded = fx.FlowSystem.from_dataset(ds) + + # Verify parameters persisted + assert fs_loaded.scenario_independent_sizes == fs_original.scenario_independent_sizes + assert fs_loaded.scenario_independent_flow_rates == fs_original.scenario_independent_flow_rates + + +def test_scenario_parameters_io_with_calculation(tmp_path): + """Test that scenario parameters persist through full calculation IO.""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'high'], name='scenario') + + fs = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_independent_sizes=True, + scenario_independent_flow_rates=['demand(in)'], + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=fx.InvestParameters( + minimum_size=10, maximum_size=100, effects_of_investment_per_size={'cost': 100} + ), + ) + ], + ) + sink = fx.Sink( + label='demand', + inputs=[fx.Flow(label='in', bus='grid', size=50)], + ) + + fs.add_elements(bus, source, sink, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + # Solve using new API + fs.optimize(fx.solvers.HighsSolver(mip_gap=0.01, time_limit_seconds=60)) + original_model = fs.model + + # Save and restore + filepath = tmp_path / 'flow_system_scenarios.nc4' + fs.to_netcdf(filepath) + fs_loaded = fx.FlowSystem.from_netcdf(filepath) + + # Verify parameters persisted + assert fs_loaded.scenario_independent_sizes == fs.scenario_independent_sizes + assert fs_loaded.scenario_independent_flow_rates == fs.scenario_independent_flow_rates + + # Verify constraints are recreated correctly when building model + fs_loaded.build_model() + + constraint_names1 = [str(c) for c in original_model.constraints] + constraint_names2 = [str(c) for c in fs_loaded.model.constraints] + + size_constraints1 = [c for c in constraint_names1 if 'scenario_independent' in c and 'size' in c] + size_constraints2 = [c for c in constraint_names2 if 'scenario_independent' in c and 'size' in c] + + assert len(size_constraints1) == len(size_constraints2) + + +def test_weights_io_persistence(): + """Test that weights persist through IO operations (to_dataset/from_dataset).""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'mid', 'high'], name='scenario') + custom_scenario_weights = np.array([0.3, 0.5, 0.2]) + + # Create FlowSystem with custom scenario weights + fs_original = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_weights=custom_scenario_weights, + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=fx.InvestParameters( + minimum_size=10, maximum_size=100, effects_of_investment_per_size={'cost': 100} + ), + ) + ], + ) + + fs_original.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + # Save to dataset + fs_original.connect_and_transform() + ds = fs_original.to_dataset() + + # Load from dataset + fs_loaded = fx.FlowSystem.from_dataset(ds) + + # Verify weights persisted correctly + np.testing.assert_allclose(fs_loaded.scenario_weights.values, fs_original.scenario_weights.values) + assert fs_loaded.scenario_weights.dims == fs_original.scenario_weights.dims + + +def test_weights_selection(): + """Test that weights are correctly sliced when using FlowSystem.sel().""" + timesteps = pd.date_range('2023-01-01', periods=24, freq='h') + scenarios = pd.Index(['base', 'mid', 'high'], name='scenario') + custom_scenario_weights = np.array([0.3, 0.5, 0.2]) + + # Create FlowSystem with custom scenario weights + fs_full = fx.FlowSystem( + timesteps=timesteps, + scenarios=scenarios, + scenario_weights=custom_scenario_weights, + ) + + bus = fx.Bus('grid') + source = fx.Source( + label='solar', + outputs=[ + fx.Flow( + label='out', + bus='grid', + size=10, + ) + ], + ) + + fs_full.add_elements(bus, source, fx.Effect('cost', 'Total cost', '€', is_objective=True)) + + # Select a subset of scenarios + fs_subset = fs_full.sel(scenario=['base', 'high']) + + # Verify weights are correctly sliced + assert fs_subset.scenarios.equals(pd.Index(['base', 'high'], name='scenario')) + np.testing.assert_allclose(fs_subset.scenario_weights.values, custom_scenario_weights[[0, 2]]) + + # Verify weights are 1D with just scenario dimension (no period dimension) + assert fs_subset.scenario_weights.dims == ('scenario',) diff --git a/tests/deprecated/test_storage.py b/tests/deprecated/test_storage.py new file mode 100644 index 000000000..a5d2c7a19 --- /dev/null +++ b/tests/deprecated/test_storage.py @@ -0,0 +1,489 @@ +import numpy as np +import pytest + +import flixopt as fx + +from .conftest import assert_conequal, assert_var_equal, create_linopy_model + + +class TestStorageModel: + """Test that storage model variables and constraints are correctly generated.""" + + def test_basic_storage(self, basic_flow_system_linopy_coords, coords_config): + """Test that basic storage model variables and constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create a simple storage + storage = fx.Storage( + 'TestStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=30, # 30 kWh storage capacity + initial_charge_state=0, # Start empty + prevent_simultaneous_charge_and_discharge=True, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check that all expected variables exist - linopy model variables are accessed by indexing + expected_variables = { + 'TestStorage(Q_th_in)|flow_rate', + 'TestStorage(Q_th_in)|total_flow_hours', + 'TestStorage(Q_th_out)|flow_rate', + 'TestStorage(Q_th_out)|total_flow_hours', + 'TestStorage|charge_state', + 'TestStorage|netto_discharge', + } + for var_name in expected_variables: + assert var_name in model.variables, f'Missing variable: {var_name}' + + # Check that all expected constraints exist - linopy model constraints are accessed by indexing + expected_constraints = { + 'TestStorage(Q_th_in)|total_flow_hours', + 'TestStorage(Q_th_out)|total_flow_hours', + 'TestStorage|netto_discharge', + 'TestStorage|charge_state', + 'TestStorage|initial_charge_state', + } + for con_name in expected_constraints: + assert con_name in model.constraints, f'Missing constraint: {con_name}' + + # Check variable properties + assert_var_equal( + model['TestStorage(Q_th_in)|flow_rate'], model.add_variables(lower=0, upper=20, coords=model.get_coords()) + ) + assert_var_equal( + model['TestStorage(Q_th_out)|flow_rate'], model.add_variables(lower=0, upper=20, coords=model.get_coords()) + ) + assert_var_equal( + model['TestStorage|charge_state'], + model.add_variables(lower=0, upper=30, coords=model.get_coords(extra_timestep=True)), + ) + + # Check constraint formulations + assert_conequal( + model.constraints['TestStorage|netto_discharge'], + model.variables['TestStorage|netto_discharge'] + == model.variables['TestStorage(Q_th_out)|flow_rate'] - model.variables['TestStorage(Q_th_in)|flow_rate'], + ) + + charge_state = model.variables['TestStorage|charge_state'] + assert_conequal( + model.constraints['TestStorage|charge_state'], + charge_state.isel(time=slice(1, None)) + == charge_state.isel(time=slice(None, -1)) + + model.variables['TestStorage(Q_th_in)|flow_rate'] * model.hours_per_step + - model.variables['TestStorage(Q_th_out)|flow_rate'] * model.hours_per_step, + ) + # Check initial charge state constraint + assert_conequal( + model.constraints['TestStorage|initial_charge_state'], + model.variables['TestStorage|charge_state'].isel(time=0) == 0, + ) + + def test_lossy_storage(self, basic_flow_system_linopy_coords, coords_config): + """Test that basic storage model variables and constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create a simple storage + storage = fx.Storage( + 'TestStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=30, # 30 kWh storage capacity + initial_charge_state=0, # Start empty + eta_charge=0.9, # Charging efficiency + eta_discharge=0.8, # Discharging efficiency + relative_loss_per_hour=0.05, # 5% loss per hour + prevent_simultaneous_charge_and_discharge=True, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check that all expected variables exist - linopy model variables are accessed by indexing + expected_variables = { + 'TestStorage(Q_th_in)|flow_rate', + 'TestStorage(Q_th_in)|total_flow_hours', + 'TestStorage(Q_th_out)|flow_rate', + 'TestStorage(Q_th_out)|total_flow_hours', + 'TestStorage|charge_state', + 'TestStorage|netto_discharge', + } + for var_name in expected_variables: + assert var_name in model.variables, f'Missing variable: {var_name}' + + # Check that all expected constraints exist - linopy model constraints are accessed by indexing + expected_constraints = { + 'TestStorage(Q_th_in)|total_flow_hours', + 'TestStorage(Q_th_out)|total_flow_hours', + 'TestStorage|netto_discharge', + 'TestStorage|charge_state', + 'TestStorage|initial_charge_state', + } + for con_name in expected_constraints: + assert con_name in model.constraints, f'Missing constraint: {con_name}' + + # Check variable properties + assert_var_equal( + model['TestStorage(Q_th_in)|flow_rate'], model.add_variables(lower=0, upper=20, coords=model.get_coords()) + ) + assert_var_equal( + model['TestStorage(Q_th_out)|flow_rate'], model.add_variables(lower=0, upper=20, coords=model.get_coords()) + ) + assert_var_equal( + model['TestStorage|charge_state'], + model.add_variables(lower=0, upper=30, coords=model.get_coords(extra_timestep=True)), + ) + + # Check constraint formulations + assert_conequal( + model.constraints['TestStorage|netto_discharge'], + model.variables['TestStorage|netto_discharge'] + == model.variables['TestStorage(Q_th_out)|flow_rate'] - model.variables['TestStorage(Q_th_in)|flow_rate'], + ) + + charge_state = model.variables['TestStorage|charge_state'] + rel_loss = 0.05 + hours_per_step = model.hours_per_step + charge_rate = model.variables['TestStorage(Q_th_in)|flow_rate'] + discharge_rate = model.variables['TestStorage(Q_th_out)|flow_rate'] + eff_charge = 0.9 + eff_discharge = 0.8 + + assert_conequal( + model.constraints['TestStorage|charge_state'], + charge_state.isel(time=slice(1, None)) + == charge_state.isel(time=slice(None, -1)) * (1 - rel_loss) ** hours_per_step + + charge_rate * eff_charge * hours_per_step + - discharge_rate / eff_discharge * hours_per_step, + ) + + # Check initial charge state constraint + assert_conequal( + model.constraints['TestStorage|initial_charge_state'], + model.variables['TestStorage|charge_state'].isel(time=0) == 0, + ) + + def test_charge_state_bounds(self, basic_flow_system_linopy_coords, coords_config): + """Test that basic storage model variables and constraints are correctly generated.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create a simple storage + storage = fx.Storage( + 'TestStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=30, # 30 kWh storage capacity + initial_charge_state=3, + prevent_simultaneous_charge_and_discharge=True, + relative_maximum_charge_state=np.array([0.14, 0.22, 0.3, 0.38, 0.46, 0.54, 0.62, 0.7, 0.78, 0.86]), + relative_minimum_charge_state=np.array([0.07, 0.11, 0.15, 0.19, 0.23, 0.27, 0.31, 0.35, 0.39, 0.43]), + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check that all expected variables exist - linopy model variables are accessed by indexing + expected_variables = { + 'TestStorage(Q_th_in)|flow_rate', + 'TestStorage(Q_th_in)|total_flow_hours', + 'TestStorage(Q_th_out)|flow_rate', + 'TestStorage(Q_th_out)|total_flow_hours', + 'TestStorage|charge_state', + 'TestStorage|netto_discharge', + } + for var_name in expected_variables: + assert var_name in model.variables, f'Missing variable: {var_name}' + + # Check that all expected constraints exist - linopy model constraints are accessed by indexing + expected_constraints = { + 'TestStorage(Q_th_in)|total_flow_hours', + 'TestStorage(Q_th_out)|total_flow_hours', + 'TestStorage|netto_discharge', + 'TestStorage|charge_state', + 'TestStorage|initial_charge_state', + } + for con_name in expected_constraints: + assert con_name in model.constraints, f'Missing constraint: {con_name}' + + # Check variable properties + assert_var_equal( + model['TestStorage(Q_th_in)|flow_rate'], model.add_variables(lower=0, upper=20, coords=model.get_coords()) + ) + assert_var_equal( + model['TestStorage(Q_th_out)|flow_rate'], model.add_variables(lower=0, upper=20, coords=model.get_coords()) + ) + assert_var_equal( + model['TestStorage|charge_state'], + model.add_variables( + lower=storage.relative_minimum_charge_state.reindex( + time=model.get_coords(extra_timestep=True)['time'] + ).ffill('time') + * 30, + upper=storage.relative_maximum_charge_state.reindex( + time=model.get_coords(extra_timestep=True)['time'] + ).ffill('time') + * 30, + coords=model.get_coords(extra_timestep=True), + ), + ) + + # Check constraint formulations + assert_conequal( + model.constraints['TestStorage|netto_discharge'], + model.variables['TestStorage|netto_discharge'] + == model.variables['TestStorage(Q_th_out)|flow_rate'] - model.variables['TestStorage(Q_th_in)|flow_rate'], + ) + + charge_state = model.variables['TestStorage|charge_state'] + assert_conequal( + model.constraints['TestStorage|charge_state'], + charge_state.isel(time=slice(1, None)) + == charge_state.isel(time=slice(None, -1)) + + model.variables['TestStorage(Q_th_in)|flow_rate'] * model.hours_per_step + - model.variables['TestStorage(Q_th_out)|flow_rate'] * model.hours_per_step, + ) + # Check initial charge state constraint + assert_conequal( + model.constraints['TestStorage|initial_charge_state'], + model.variables['TestStorage|charge_state'].isel(time=0) == 3, + ) + + def test_storage_with_investment(self, basic_flow_system_linopy_coords, coords_config): + """Test storage with investment parameters.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create storage with investment parameters + storage = fx.Storage( + 'InvestStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=fx.InvestParameters( + effects_of_investment=100, + effects_of_investment_per_size=10, + minimum_size=20, + maximum_size=100, + mandatory=False, + ), + initial_charge_state=0, + eta_charge=0.9, + eta_discharge=0.9, + relative_loss_per_hour=0.05, + prevent_simultaneous_charge_and_discharge=True, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check investment variables exist + for var_name in { + 'InvestStorage|charge_state', + 'InvestStorage|size', + 'InvestStorage|invested', + }: + assert var_name in model.variables, f'Missing investment variable: {var_name}' + + # Check investment constraints exist + for con_name in {'InvestStorage|size|ub', 'InvestStorage|size|lb'}: + assert con_name in model.constraints, f'Missing investment constraint: {con_name}' + + # Check variable properties + assert_var_equal( + model['InvestStorage|size'], + model.add_variables(lower=0, upper=100, coords=model.get_coords(['period', 'scenario'])), + ) + assert_var_equal( + model['InvestStorage|invested'], + model.add_variables(binary=True, coords=model.get_coords(['period', 'scenario'])), + ) + assert_conequal( + model.constraints['InvestStorage|size|ub'], + model.variables['InvestStorage|size'] <= model.variables['InvestStorage|invested'] * 100, + ) + assert_conequal( + model.constraints['InvestStorage|size|lb'], + model.variables['InvestStorage|size'] >= model.variables['InvestStorage|invested'] * 20, + ) + + def test_storage_with_final_state_constraints(self, basic_flow_system_linopy_coords, coords_config): + """Test storage with final state constraints.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create storage with final state constraints + storage = fx.Storage( + 'FinalStateStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=30, + initial_charge_state=10, # Start with 10 kWh + minimal_final_charge_state=15, # End with at least 15 kWh + maximal_final_charge_state=25, # End with at most 25 kWh + eta_charge=0.9, + eta_discharge=0.9, + relative_loss_per_hour=0.05, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check final state constraints exist + expected_constraints = { + 'FinalStateStorage|final_charge_min', + 'FinalStateStorage|final_charge_max', + } + + for con_name in expected_constraints: + assert con_name in model.constraints, f'Missing final state constraint: {con_name}' + + assert_conequal( + model.constraints['FinalStateStorage|initial_charge_state'], + model.variables['FinalStateStorage|charge_state'].isel(time=0) == 10, + ) + + # Check final state constraint formulations + assert_conequal( + model.constraints['FinalStateStorage|final_charge_min'], + model.variables['FinalStateStorage|charge_state'].isel(time=-1) >= 15, + ) + assert_conequal( + model.constraints['FinalStateStorage|final_charge_max'], + model.variables['FinalStateStorage|charge_state'].isel(time=-1) <= 25, + ) + + def test_storage_cyclic_initialization(self, basic_flow_system_linopy_coords, coords_config): + """Test storage with cyclic initialization.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create storage with cyclic initialization + storage = fx.Storage( + 'CyclicStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=30, + initial_charge_state='equals_final', # Cyclic initialization + eta_charge=0.9, + eta_discharge=0.9, + relative_loss_per_hour=0.05, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check cyclic constraint exists + assert 'CyclicStorage|initial_charge_state' in model.constraints, 'Missing cyclic initialization constraint' + + # Check cyclic constraint formulation + assert_conequal( + model.constraints['CyclicStorage|initial_charge_state'], + model.variables['CyclicStorage|charge_state'].isel(time=0) + == model.variables['CyclicStorage|charge_state'].isel(time=-1), + ) + + @pytest.mark.parametrize( + 'prevent_simultaneous', + [True, False], + ) + def test_simultaneous_charge_discharge(self, basic_flow_system_linopy_coords, coords_config, prevent_simultaneous): + """Test prevent_simultaneous_charge_and_discharge parameter.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create storage with or without simultaneous charge/discharge prevention + storage = fx.Storage( + 'SimultaneousStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=30, + initial_charge_state=0, + eta_charge=0.9, + eta_discharge=0.9, + relative_loss_per_hour=0.05, + prevent_simultaneous_charge_and_discharge=prevent_simultaneous, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Binary variables should exist when preventing simultaneous operation + if prevent_simultaneous: + binary_vars = { + 'SimultaneousStorage(Q_th_in)|status', + 'SimultaneousStorage(Q_th_out)|status', + } + for var_name in binary_vars: + assert var_name in model.variables, f'Missing binary variable: {var_name}' + + # Check for constraints that enforce either charging or discharging + constraint_name = 'SimultaneousStorage|prevent_simultaneous_use' + assert constraint_name in model.constraints, 'Missing constraint to prevent simultaneous operation' + + assert_conequal( + model.constraints['SimultaneousStorage|prevent_simultaneous_use'], + model.variables['SimultaneousStorage(Q_th_in)|status'] + + model.variables['SimultaneousStorage(Q_th_out)|status'] + <= 1, + ) + + @pytest.mark.parametrize( + 'mandatory,minimum_size,expected_vars,expected_constraints', + [ + (False, None, {'InvestStorage|invested'}, {'InvestStorage|size|lb'}), + (False, 20, {'InvestStorage|invested'}, {'InvestStorage|size|lb'}), + (True, None, set(), set()), + (True, 20, set(), set()), + ], + ) + def test_investment_parameters( + self, + basic_flow_system_linopy_coords, + coords_config, + mandatory, + minimum_size, + expected_vars, + expected_constraints, + ): + """Test different investment parameter combinations.""" + flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + + # Create investment parameters + invest_params = { + 'effects_of_investment': 100, + 'effects_of_investment_per_size': 10, + 'mandatory': mandatory, + } + if minimum_size is not None: + invest_params['minimum_size'] = minimum_size + + # Create storage with specified investment parameters + storage = fx.Storage( + 'InvestStorage', + charging=fx.Flow('Q_th_in', bus='Fernwärme', size=20), + discharging=fx.Flow('Q_th_out', bus='Fernwärme', size=20), + capacity_in_flow_hours=fx.InvestParameters(**invest_params), + initial_charge_state=0, + eta_charge=0.9, + eta_discharge=0.9, + relative_loss_per_hour=0.05, + ) + + flow_system.add_elements(storage) + model = create_linopy_model(flow_system) + + # Check that expected variables exist + for var_name in expected_vars: + if not mandatory: # Optional investment (mandatory=False) + assert var_name in model.variables, f'Expected variable {var_name} not found' + + # Check that expected constraints exist + for constraint_name in expected_constraints: + if not mandatory: # Optional investment (mandatory=False) + assert constraint_name in model.constraints, f'Expected constraint {constraint_name} not found' + + # If mandatory is True, invested should be fixed to 1 + if mandatory: + # Check that the invested variable exists and is fixed to 1 + if 'InvestStorage|invested' in model.variables: + var = model.variables['InvestStorage|invested'] + # Check if the lower and upper bounds are both 1 + assert var.upper == 1 and var.lower == 1, 'invested variable should be fixed to 1 when mandatory=True' diff --git a/tests/deprecated/test_timeseries.py b/tests/deprecated/test_timeseries.py new file mode 100644 index 000000000..e69de29bb From 1a98005f02c4d9d2823105acfa871810b86e9131 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:06:09 +0100 Subject: [PATCH 18/88] Copy over old tests --- tests/deprecated/conftest.py | 22 +++ tests/deprecated/test_integration.py | 192 ++++++++++++++++++++------- 2 files changed, 168 insertions(+), 46 deletions(-) diff --git a/tests/deprecated/conftest.py b/tests/deprecated/conftest.py index 9d76097ee..0224909c3 100644 --- a/tests/deprecated/conftest.py +++ b/tests/deprecated/conftest.py @@ -2,6 +2,9 @@ The conftest.py file is used by pytest to define shared fixtures, hooks, and configuration that apply to multiple test files without needing explicit imports. It helps avoid redundancy and centralizes reusable test logic. + +This folder contains tests for the deprecated Optimization/Results API. +Delete this entire folder when the deprecation cycle ends in v6.0.0. """ import os @@ -848,3 +851,22 @@ def set_test_environment(): fx.CONFIG.Plotting.default_show = False yield + + +# ============================================================================ +# DEPRECATED API MARKERS +# ============================================================================ + + +def pytest_collection_modifyitems(items): + """Auto-apply markers to all tests in the deprecated folder. + + This hook adds: + - deprecated_api marker for filtering + - filterwarnings to ignore DeprecationWarning from flixopt + """ + for item in items: + # Only apply to tests in this folder + if 'deprecated' in str(item.fspath): + item.add_marker(pytest.mark.deprecated_api) + item.add_marker(pytest.mark.filterwarnings('ignore::DeprecationWarning:flixopt')) diff --git a/tests/deprecated/test_integration.py b/tests/deprecated/test_integration.py index 1717fe7dd..2f083b4fb 100644 --- a/tests/deprecated/test_integration.py +++ b/tests/deprecated/test_integration.py @@ -1,7 +1,18 @@ +"""Tests for deprecated Optimization/Results API - ported from feature/v5. + +This module contains the original integration tests from feature/v5 that use the +deprecated Optimization class. These tests will be removed in v6.0.0. + +For new tests, use FlowSystem.optimize(solver) instead. +""" + import pytest -from .conftest import ( +import flixopt as fx + +from ..conftest import ( assert_almost_equal_numeric, + create_optimization_and_solve, ) @@ -10,9 +21,9 @@ def test_simple_flow_system(self, simple_flow_system, highs_solver): """ Test the effects of the simple energy system model """ - simple_flow_system.optimize(highs_solver) + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_simple_flow_system') - effects = simple_flow_system.effects + effects = optimization.flow_system.effects # Cost assertions assert_almost_equal_numeric( @@ -28,8 +39,8 @@ def test_model_components(self, simple_flow_system, highs_solver): """ Test the component flows of the simple energy system model """ - simple_flow_system.optimize(highs_solver) - comps = simple_flow_system.components + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') + comps = optimization.flow_system.components # Boiler assertions assert_almost_equal_numeric( @@ -45,20 +56,40 @@ def test_model_components(self, simple_flow_system, highs_solver): 'Q_th doesnt match expected value', ) + def test_results_persistence(self, simple_flow_system, highs_solver): + """ + Test saving and loading results + """ + # Save results to file + optimization = create_optimization_and_solve(simple_flow_system, highs_solver, 'test_model_components') + + optimization.results.to_file(overwrite=True) + + # Load results from file + results = fx.results.Results.from_file(optimization.folder, optimization.name) + + # Verify key variables from loaded results + assert_almost_equal_numeric( + results.solution['costs'].values, + 81.88394666666667, + 'costs doesnt match expected value', + ) + assert_almost_equal_numeric(results.solution['CO2'].values, 255.09184, 'CO2 doesnt match expected value') + class TestComplex: def test_basic_flow_system(self, flow_system_base, highs_solver): - flow_system_base.optimize(highs_solver) + optimization = create_optimization_and_solve(flow_system_base, highs_solver, 'test_basic_flow_system') - # Assertions using flow_system.solution (the new API) + # Assertions assert_almost_equal_numeric( - flow_system_base.solution['costs'].item(), + optimization.results.model['costs'].solution.item(), -11597.873624489237, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['costs(temporal)|per_timestep'].values, + optimization.results.model['costs(temporal)|per_timestep'].solution.values, [ -2.38500000e03, -2.21681333e03, @@ -74,66 +105,66 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): ) assert_almost_equal_numeric( - flow_system_base.solution['CO2(temporal)->costs(temporal)'].sum().item(), + sum(optimization.results.model['CO2(temporal)->costs(temporal)'].solution.values), 258.63729669618675, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Kessel(Q_th)->costs(temporal)'].sum().item(), + sum(optimization.results.model['Kessel(Q_th)->costs(temporal)'].solution.values), 0.01, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Kessel->costs(temporal)'].sum().item(), + sum(optimization.results.model['Kessel->costs(temporal)'].solution.values), -0.0, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Gastarif(Q_Gas)->costs(temporal)'].sum().item(), + sum(optimization.results.model['Gastarif(Q_Gas)->costs(temporal)'].solution.values), 39.09153113079115, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Einspeisung(P_el)->costs(temporal)'].sum().item(), + sum(optimization.results.model['Einspeisung(P_el)->costs(temporal)'].solution.values), -14196.61245231646, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['KWK->costs(temporal)'].sum().item(), + sum(optimization.results.model['KWK->costs(temporal)'].solution.values), 0.0, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Kessel(Q_th)->costs(periodic)'].values, + optimization.results.model['Kessel(Q_th)->costs(periodic)'].solution.values, 1000 + 500, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Speicher->costs(periodic)'].values, + optimization.results.model['Speicher->costs(periodic)'].solution.values, 800 + 1, 'costs doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['CO2(temporal)'].values, + optimization.results.model['CO2(temporal)'].solution.values, 1293.1864834809337, 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['CO2(periodic)'].values, + optimization.results.model['CO2(periodic)'].solution.values, 0.9999999999999994, 'CO2 doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Kessel(Q_th)|flow_rate'].values, + optimization.results.model['Kessel(Q_th)|flow_rate'].solution.values, [0, 0, 0, 45, 0, 0, 0, 0, 0], 'Kessel doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['KWK(Q_th)|flow_rate'].values, + optimization.results.model['KWK(Q_th)|flow_rate'].solution.values, [ 7.50000000e01, 6.97111111e01, @@ -148,7 +179,7 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): 'KWK Q_th doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['KWK(P_el)|flow_rate'].values, + optimization.results.model['KWK(P_el)|flow_rate'].solution.values, [ 6.00000000e01, 5.57688889e01, @@ -164,70 +195,139 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): ) assert_almost_equal_numeric( - flow_system_base.solution['Speicher|netto_discharge'].values, + optimization.results.model['Speicher|netto_discharge'].solution.values, [-45.0, -69.71111111, 15.0, -10.0, 36.06697198, -55.0, 20.0, 20.0, 20.0], 'Speicher nettoFlow doesnt match expected value', ) - # charge_state now has len(timesteps) values, with final state in separate variable - assert_almost_equal_numeric( - flow_system_base.solution['Speicher|charge_state'].values, - [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565], - 'Speicher charge_state doesnt match expected value', - ) assert_almost_equal_numeric( - flow_system_base.solution['Speicher|charge_state|final'].values, - 10.0, - 'Speicher final charge_state doesnt match expected value', + optimization.results.model['Speicher|charge_state'].solution.values, + [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565, 10.0], + 'Speicher nettoFlow doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_base.solution['Speicher|PiecewiseEffects|costs'].values, + optimization.results.model['Speicher|PiecewiseEffects|costs'].solution.values, 800, 'Speicher|PiecewiseEffects|costs doesnt match expected value', ) def test_piecewise_conversion(self, flow_system_piecewise_conversion, highs_solver): - flow_system_piecewise_conversion.optimize(highs_solver) + optimization = create_optimization_and_solve( + flow_system_piecewise_conversion, highs_solver, 'test_piecewise_conversion' + ) + + effects = optimization.flow_system.effects + comps = optimization.flow_system.components - # Compare expected values with actual values using new API + # Compare expected values with actual values assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['costs'].item(), - -10710.997365760755, - 'costs doesnt match expected value', + effects['costs'].submodel.total.solution.item(), -10710.997365760755, 'costs doesnt match expected value' ) assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['CO2'].item(), - 1278.7939026086956, - 'CO2 doesnt match expected value', + effects['CO2'].submodel.total.solution.item(), 1278.7939026086956, 'CO2 doesnt match expected value' ) assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['Kessel(Q_th)|flow_rate'].values, + comps['Kessel'].thermal_flow.submodel.flow_rate.solution.values, [0, 0, 0, 45, 0, 0, 0, 0, 0], 'Kessel doesnt match expected value', ) + kwk_flows = {flow.label: flow for flow in comps['KWK'].inputs + comps['KWK'].outputs} assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['KWK(Q_th)|flow_rate'].values, + kwk_flows['Q_th'].submodel.flow_rate.solution.values, [45.0, 45.0, 64.5962087, 100.0, 61.3136, 45.0, 45.0, 12.86469565, 0.0], 'KWK Q_th doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['KWK(P_el)|flow_rate'].values, + kwk_flows['P_el'].submodel.flow_rate.solution.values, [40.0, 40.0, 47.12589407, 60.0, 45.93221818, 40.0, 40.0, 10.91784108, -0.0], 'KWK P_el doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['Speicher|netto_discharge'].values, + comps['Speicher'].submodel.netto_discharge.solution.values, [-15.0, -45.0, 25.4037913, -35.0, 48.6864, -25.0, -25.0, 7.13530435, 20.0], 'Speicher nettoFlow doesnt match expected value', ) assert_almost_equal_numeric( - flow_system_piecewise_conversion.solution['Speicher|PiecewiseEffects|costs'].values, + comps['Speicher'].submodel.variables['Speicher|PiecewiseEffects|costs'].solution.values, 454.74666666666667, 'Speicher investcosts_segmented_costs doesnt match expected value', ) +@pytest.mark.slow +class TestModelingTypes: + @pytest.fixture(params=['full', 'segmented', 'aggregated']) + def modeling_calculation(self, request, flow_system_long, highs_solver): + """ + Fixture to run optimizations with different modeling types + """ + # Extract flow system and data from the fixture + flow_system = flow_system_long[0] + thermal_load_ts = flow_system_long[1]['thermal_load_ts'] + electrical_load_ts = flow_system_long[1]['electrical_load_ts'] + + # Create calculation based on modeling type + modeling_type = request.param + if modeling_type == 'full': + calc = fx.Optimization('fullModel', flow_system) + calc.do_modeling() + calc.solve(highs_solver) + elif modeling_type == 'segmented': + calc = fx.SegmentedOptimization('segModel', flow_system, timesteps_per_segment=96, overlap_timesteps=1) + calc.do_modeling_and_solve(highs_solver) + elif modeling_type == 'aggregated': + calc = fx.ClusteredOptimization( + 'aggModel', + flow_system, + fx.ClusteringParameters( + hours_per_period=6, + nr_of_periods=4, + fix_storage_flows=False, + aggregate_data_and_fix_non_binary_vars=True, + percentage_of_period_freedom=0, + penalty_of_period_freedom=0, + time_series_for_low_peaks=[electrical_load_ts, thermal_load_ts], + time_series_for_high_peaks=[thermal_load_ts], + ), + ) + calc.do_modeling() + calc.solve(highs_solver) + + return calc, modeling_type + + def test_modeling_types_costs(self, modeling_calculation): + """ + Test total costs for different modeling types + """ + calc, modeling_type = modeling_calculation + + expected_costs = { + 'full': 343613, + 'segmented': 343613, # Approximate value + 'aggregated': 342967.0, + } + + if modeling_type in ['full', 'aggregated']: + assert_almost_equal_numeric( + calc.results.model['costs'].solution.item(), + expected_costs[modeling_type], + f'costs do not match for {modeling_type} modeling type', + ) + else: + assert_almost_equal_numeric( + calc.results.solution_without_overlap('costs(temporal)|per_timestep').sum(), + expected_costs[modeling_type], + f'costs do not match for {modeling_type} modeling type', + ) + + def test_segmented_io(self, modeling_calculation): + calc, modeling_type = modeling_calculation + if modeling_type == 'segmented': + calc.results.to_file(overwrite=True) + _ = fx.results.SegmentedResults.from_file(calc.folder, calc.name) + + if __name__ == '__main__': pytest.main(['-v']) From 1c314084e10dca0677950d8301fc62d0923e25f8 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:15:41 +0100 Subject: [PATCH 19/88] Copy over old tests --- tests/deprecated/conftest.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/deprecated/conftest.py b/tests/deprecated/conftest.py index 0224909c3..e24dcaa72 100644 --- a/tests/deprecated/conftest.py +++ b/tests/deprecated/conftest.py @@ -548,8 +548,8 @@ def flow_system_long(): Special fixture with CSV data loading - kept separate for backward compatibility Uses library components where possible, but has special elements inline """ - # Load data - filename = os.path.join(os.path.dirname(__file__), 'ressources', 'Zeitreihen2020.csv') + # Load data - use parent folder's ressources + filename = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'ressources', 'Zeitreihen2020.csv') ts_raw = pd.read_csv(filename, index_col=0).sort_index() data = ts_raw['2020-01-01 00:00:00':'2020-12-31 23:45:00']['2020-01-01':'2020-01-03 23:45:00'] @@ -863,10 +863,10 @@ def pytest_collection_modifyitems(items): This hook adds: - deprecated_api marker for filtering - - filterwarnings to ignore DeprecationWarning from flixopt + - filterwarnings to ignore DeprecationWarning """ for item in items: # Only apply to tests in this folder if 'deprecated' in str(item.fspath): item.add_marker(pytest.mark.deprecated_api) - item.add_marker(pytest.mark.filterwarnings('ignore::DeprecationWarning:flixopt')) + item.add_marker(pytest.mark.filterwarnings('ignore::DeprecationWarning')) From 708d6f225c5a3415e2df1841a944b088b4f8a015 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:35:10 +0100 Subject: [PATCH 20/88] Update tests of new API --- tests/test_component.py | 44 +++++++-------- tests/test_functional.py | 114 +++++++++++++++----------------------- tests/test_integration.py | 17 +++--- 3 files changed, 73 insertions(+), 102 deletions(-) diff --git a/tests/test_component.py b/tests/test_component.py index 8cde784c9..519d36358 100644 --- a/tests/test_component.py +++ b/tests/test_component.py @@ -443,16 +443,16 @@ def test_transmission_basic(self, basic_flow_system, highs_solver): flow_system.optimize(highs_solver) - # Assertions + # Assertions using new API (flow_system.solution) assert_almost_equal_numeric( - transmission.in1.submodel.status.status.solution.values, + flow_system.solution['Rohr(Rohr1)|status'].values, np.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), 'Status does not work properly', ) assert_almost_equal_numeric( - transmission.in1.submodel.flow_rate.solution.values * 0.8 - 20, - transmission.out1.submodel.flow_rate.solution.values, + flow_system.solution['Rohr(Rohr1)|flow_rate'].values * 0.8 - 20, + flow_system.solution['Rohr(Rohr2)|flow_rate'].values, 'Losses are not computed correctly', ) @@ -507,29 +507,29 @@ def test_transmission_balanced(self, basic_flow_system, highs_solver): flow_system.optimize(highs_solver) - # Assertions + # Assertions using new API (flow_system.solution) assert_almost_equal_numeric( - transmission.in1.submodel.status.status.solution.values, + flow_system.solution['Rohr(Rohr1a)|status'].values, np.array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0]), 'Status does not work properly', ) assert_almost_equal_numeric( - flow_system.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, - transmission.out1.submodel.flow_rate.solution.values, + flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, + flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, 'Flow rate of Rohr__Rohr1b is not correct', ) + in1_flow = flow_system.solution['Rohr(Rohr1a)|flow_rate'].values assert_almost_equal_numeric( - transmission.in1.submodel.flow_rate.solution.values * 0.8 - - np.array([20 if val > 0.1 else 0 for val in transmission.in1.submodel.flow_rate.solution.values]), - transmission.out1.submodel.flow_rate.solution.values, + in1_flow * 0.8 - np.array([20 if val > 0.1 else 0 for val in in1_flow]), + flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, 'Losses are not computed correctly', ) assert_almost_equal_numeric( - transmission.in1.submodel._investment.size.solution.item(), - transmission.in2.submodel._investment.size.solution.item(), + flow_system.solution['Rohr(Rohr1a)|size'].item(), + flow_system.solution['Rohr(Rohr2a)|size'].item(), 'The Investments are not equated correctly', ) @@ -588,30 +588,30 @@ def test_transmission_unbalanced(self, basic_flow_system, highs_solver): flow_system.optimize(highs_solver) - # Assertions + # Assertions using new API (flow_system.solution) assert_almost_equal_numeric( - transmission.in1.submodel.status.status.solution.values, + flow_system.solution['Rohr(Rohr1a)|status'].values, np.array([1, 1, 1, 0, 0, 0, 0, 0, 0, 0]), 'Status does not work properly', ) assert_almost_equal_numeric( - flow_system.model.variables['Rohr(Rohr1b)|flow_rate'].solution.values, - transmission.out1.submodel.flow_rate.solution.values, + flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, + flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, 'Flow rate of Rohr__Rohr1b is not correct', ) + in1_flow = flow_system.solution['Rohr(Rohr1a)|flow_rate'].values assert_almost_equal_numeric( - transmission.in1.submodel.flow_rate.solution.values * 0.8 - - np.array([20 if val > 0.1 else 0 for val in transmission.in1.submodel.flow_rate.solution.values]), - transmission.out1.submodel.flow_rate.solution.values, + in1_flow * 0.8 - np.array([20 if val > 0.1 else 0 for val in in1_flow]), + flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, 'Losses are not computed correctly', ) - assert transmission.in1.submodel._investment.size.solution.item() > 11 + assert flow_system.solution['Rohr(Rohr1a)|size'].item() > 11 assert_almost_equal_numeric( - transmission.in2.submodel._investment.size.solution.item(), + flow_system.solution['Rohr(Rohr2a)|size'].item(), 10, 'Sizing does not work properly', ) diff --git a/tests/test_functional.py b/tests/test_functional.py index 34d16819c..24322a6e0 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -152,24 +152,22 @@ def test_fixed_size(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80 + 1000 * 1 + 10, rtol=1e-5, atol=1e-10, err_msg='The total costs does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.size.solution.item(), + flow_system.solution['Boiler(Q_th)|size'].item(), 1000, rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__Investment_size" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.invested.solution.item(), + flow_system.solution['Boiler(Q_th)|invested'].item(), 1, rtol=1e-5, atol=1e-10, @@ -193,24 +191,22 @@ def test_optimize_size(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80 + 20 * 1 + 10, rtol=1e-5, atol=1e-10, err_msg='The total costs does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.size.solution.item(), + flow_system.solution['Boiler(Q_th)|size'].item(), 20, rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__Investment_size" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.invested.solution.item(), + flow_system.solution['Boiler(Q_th)|invested'].item(), 1, rtol=1e-5, atol=1e-10, @@ -234,24 +230,22 @@ def test_size_bounds(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80 + 40 * 1 + 10, rtol=1e-5, atol=1e-10, err_msg='The total costs does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.size.solution.item(), + flow_system.solution['Boiler(Q_th)|size'].item(), 40, rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__Investment_size" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.invested.solution.item(), + flow_system.solution['Boiler(Q_th)|invested'].item(), 1, rtol=1e-5, atol=1e-10, @@ -289,25 +283,22 @@ def test_optional_invest(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - boiler_optional = flow_system['Boiler_optional'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80 + 40 * 1 + 10, rtol=1e-5, atol=1e-10, err_msg='The total costs does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.size.solution.item(), + flow_system.solution['Boiler(Q_th)|size'].item(), 40, rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__Investment_size" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.investment.invested.solution.item(), + flow_system.solution['Boiler(Q_th)|invested'].item(), 1, rtol=1e-5, atol=1e-10, @@ -315,14 +306,14 @@ def test_optional_invest(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler_optional.thermal_flow.submodel.investment.size.solution.item(), + flow_system.solution['Boiler_optional(Q_th)|size'].item(), 0, rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__Investment_size" does not have the right value', ) assert_allclose( - boiler_optional.thermal_flow.submodel.investment.invested.solution.item(), + flow_system.solution['Boiler_optional(Q_th)|invested'].item(), 0, rtol=1e-5, atol=1e-10, @@ -343,10 +334,8 @@ def test_on(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80, rtol=1e-5, atol=1e-10, @@ -354,14 +343,14 @@ def test_on(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|status'].values, [0, 1, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [0, 10, 20, 0, 10], rtol=1e-5, atol=1e-10, @@ -387,10 +376,8 @@ def test_off(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80, rtol=1e-5, atol=1e-10, @@ -398,21 +385,21 @@ def test_off(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|status'].values, [0, 1, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.status.inactive.solution.values, - 1 - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|inactive'].values, + 1 - flow_system.solution['Boiler(Q_th)|status'].values, rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__off" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [0, 10, 20, 0, 10], rtol=1e-5, atol=1e-10, @@ -438,10 +425,8 @@ def test_startup_shutdown(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 80, rtol=1e-5, atol=1e-10, @@ -449,28 +434,28 @@ def test_startup_shutdown(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|status'].values, [0, 1, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.status.startup.solution.values, + flow_system.solution['Boiler(Q_th)|startup'].values, [0, 1, 0, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__switch_on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.status.shutdown.solution.values, + flow_system.solution['Boiler(Q_th)|shutdown'].values, [0, 0, 0, 1, 0], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__switch_on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [0, 10, 20, 0, 10], rtol=1e-5, atol=1e-10, @@ -502,10 +487,8 @@ def test_on_total_max(solver_fixture, time_steps_fixture): ) solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 140, rtol=1e-5, atol=1e-10, @@ -513,14 +496,14 @@ def test_on_total_max(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|status'].values, [0, 0, 1, 0, 0], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [0, 0, 20, 0, 0], rtol=1e-5, atol=1e-10, @@ -560,11 +543,8 @@ def test_on_total_bounds(solver_fixture, time_steps_fixture): ) # Else its non deterministic solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - boiler_backup = flow_system['Boiler_backup'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 114, rtol=1e-5, atol=1e-10, @@ -572,14 +552,14 @@ def test_on_total_bounds(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|status'].values, [0, 0, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [0, 0, 20, 0, 12 - 1e-5], rtol=1e-5, atol=1e-10, @@ -587,14 +567,14 @@ def test_on_total_bounds(solver_fixture, time_steps_fixture): ) assert_allclose( - sum(boiler_backup.thermal_flow.submodel.status.status.solution.values), + sum(flow_system.solution['Boiler_backup(Q_th)|status'].values), 3, rtol=1e-5, atol=1e-10, err_msg='"Boiler_backup__Q_th__on" does not have the right value', ) assert_allclose( - boiler_backup.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values, [0, 10, 1.0e-05, 0, 1.0e-05], rtol=1e-5, atol=1e-10, @@ -628,11 +608,8 @@ def test_consecutive_uptime_downtime(solver_fixture, time_steps_fixture): # Else its non deterministic solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - boiler_backup = flow_system['Boiler_backup'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 190, rtol=1e-5, atol=1e-10, @@ -640,14 +617,14 @@ def test_consecutive_uptime_downtime(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler(Q_th)|status'].values, [1, 1, 0, 1, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [5, 10, 0, 18, 12], rtol=1e-5, atol=1e-10, @@ -655,7 +632,7 @@ def test_consecutive_uptime_downtime(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler_backup.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values, [0, 0, 20, 0, 0], rtol=1e-5, atol=1e-10, @@ -691,11 +668,8 @@ def test_consecutive_off(solver_fixture, time_steps_fixture): ) # Else its non deterministic solve_and_load(flow_system, solver_fixture) - boiler = flow_system['Boiler'] - boiler_backup = flow_system['Boiler_backup'] - costs = flow_system.effects['costs'] assert_allclose( - costs.submodel.total.solution.item(), + flow_system.solution['costs'].item(), 110, rtol=1e-5, atol=1e-10, @@ -703,21 +677,21 @@ def test_consecutive_off(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler_backup.thermal_flow.submodel.status.status.solution.values, + flow_system.solution['Boiler_backup(Q_th)|status'].values, [0, 0, 1, 0, 0], rtol=1e-5, atol=1e-10, err_msg='"Boiler_backup__Q_th__on" does not have the right value', ) assert_allclose( - boiler_backup.thermal_flow.submodel.status.inactive.solution.values, + flow_system.solution['Boiler_backup(Q_th)|inactive'].values, [1, 1, 0, 1, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler_backup__Q_th__off" does not have the right value', ) assert_allclose( - boiler_backup.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values, [0, 0, 1e-5, 0, 0], rtol=1e-5, atol=1e-10, @@ -725,7 +699,7 @@ def test_consecutive_off(solver_fixture, time_steps_fixture): ) assert_allclose( - boiler.thermal_flow.submodel.flow_rate.solution.values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values, [5, 0, 20 - 1e-5, 18, 12], rtol=1e-5, atol=1e-10, diff --git a/tests/test_integration.py b/tests/test_integration.py index 1717fe7dd..92a20841a 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -12,16 +12,14 @@ def test_simple_flow_system(self, simple_flow_system, highs_solver): """ simple_flow_system.optimize(highs_solver) - effects = simple_flow_system.effects - - # Cost assertions + # Cost assertions using new API (flow_system.solution) assert_almost_equal_numeric( - effects['costs'].submodel.total.solution.item(), 81.88394666666667, 'costs doesnt match expected value' + simple_flow_system.solution['costs'].item(), 81.88394666666667, 'costs doesnt match expected value' ) # CO2 assertions assert_almost_equal_numeric( - effects['CO2'].submodel.total.solution.item(), 255.09184, 'CO2 doesnt match expected value' + simple_flow_system.solution['CO2'].item(), 255.09184, 'CO2 doesnt match expected value' ) def test_model_components(self, simple_flow_system, highs_solver): @@ -29,18 +27,17 @@ def test_model_components(self, simple_flow_system, highs_solver): Test the component flows of the simple energy system model """ simple_flow_system.optimize(highs_solver) - comps = simple_flow_system.components - # Boiler assertions + # Boiler assertions using new API assert_almost_equal_numeric( - comps['Boiler'].thermal_flow.submodel.flow_rate.solution.values, + simple_flow_system.solution['Boiler(Q_th)|flow_rate'].values, [0, 0, 0, 28.4864, 35, 0, 0, 0, 0], 'Q_th doesnt match expected value', ) - # CHP unit assertions + # CHP unit assertions using new API assert_almost_equal_numeric( - comps['CHP_unit'].thermal_flow.submodel.flow_rate.solution.values, + simple_flow_system.solution['CHP_unit(Q_th)|flow_rate'].values, [30.0, 26.66666667, 75.0, 75.0, 75.0, 20.0, 20.0, 20.0, 20.0], 'Q_th doesnt match expected value', ) From f7a42c20127ec860d0ef79627f810713288a6f51 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:17:49 +0100 Subject: [PATCH 21/88] Removed test reuslts ploty --- tests/test_results_plots.py | 97 ------------------------------------- 1 file changed, 97 deletions(-) delete mode 100644 tests/test_results_plots.py diff --git a/tests/test_results_plots.py b/tests/test_results_plots.py deleted file mode 100644 index f68f5ec07..000000000 --- a/tests/test_results_plots.py +++ /dev/null @@ -1,97 +0,0 @@ -import matplotlib.pyplot as plt -import pytest - -import flixopt as fx - -from .conftest import create_optimization_and_solve, simple_flow_system - - -@pytest.fixture(params=[True, False]) -def show(request): - return request.param - - -@pytest.fixture(params=[simple_flow_system]) -def flow_system(request): - return request.getfixturevalue(request.param.__name__) - - -@pytest.fixture(params=[True, False]) -def save(request): - return request.param - - -@pytest.fixture(params=['plotly', 'matplotlib']) -def plotting_engine(request): - return request.param - - -@pytest.fixture( - params=[ - 'turbo', # Test string colormap - ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'], # Test color list - { - 'Boiler(Q_th)|flow_rate': '#ff0000', - 'Heat Demand(Q_th)|flow_rate': '#00ff00', - 'Speicher(Q_th_load)|flow_rate': '#0000ff', - }, # Test color dict - ] -) -def color_spec(request): - return request.param - - -@pytest.mark.slow -def test_results_plots(flow_system, plotting_engine, show, save, color_spec): - optimization = create_optimization_and_solve(flow_system, fx.solvers.HighsSolver(0.01, 30), 'test_results_plots') - results = optimization.results - - results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=color_spec) - - # Matplotlib doesn't support faceting/animation, so disable them for matplotlib engine - heatmap_kwargs = { - 'reshape_time': ('D', 'h'), - 'colors': 'turbo', # Note: heatmap only accepts string colormap - 'save': save, - 'show': show, - 'engine': plotting_engine, - } - if plotting_engine == 'matplotlib': - heatmap_kwargs['facet_by'] = None - heatmap_kwargs['animate_by'] = None - - results.plot_heatmap('Speicher(Q_th_load)|flow_rate', **heatmap_kwargs) - - results['Speicher'].plot_node_balance_pie(engine=plotting_engine, save=save, show=show, colors=color_spec) - - # Matplotlib doesn't support faceting/animation for plot_charge_state, and 'area' mode - charge_state_kwargs = {'engine': plotting_engine} - if plotting_engine == 'matplotlib': - charge_state_kwargs['facet_by'] = None - charge_state_kwargs['animate_by'] = None - charge_state_kwargs['mode'] = 'stacked_bar' # 'area' not supported by matplotlib - results['Speicher'].plot_charge_state(**charge_state_kwargs) - - plt.close('all') - - -@pytest.mark.slow -def test_color_handling_edge_cases(flow_system, plotting_engine, show, save): - """Test edge cases for color handling""" - optimization = create_optimization_and_solve(flow_system, fx.solvers.HighsSolver(0.01, 30), 'test_color_edge_cases') - results = optimization.results - - # Test with empty color list (should fall back to default) - results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=[]) - - # Test with invalid colormap name (should use default and log warning) - results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors='nonexistent_colormap') - - # Test with insufficient colors for elements (should cycle colors) - results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=['#ff0000', '#00ff00']) - - # Test with color dict missing some elements (should use default for missing) - partial_color_dict = {'Boiler(Q_th)|flow_rate': '#ff0000'} # Missing other elements - results['Boiler'].plot_node_balance(engine=plotting_engine, save=save, show=show, colors=partial_color_dict) - - plt.close('all') From 5985363fe2dba875e4beb7ea6c21fd4418d80b9a Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:18:21 +0100 Subject: [PATCH 22/88] Add migration guide for v6 --- docs/user-guide/migration-guide-v6.md | 341 ++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 342 insertions(+) create mode 100644 docs/user-guide/migration-guide-v6.md diff --git a/docs/user-guide/migration-guide-v6.md b/docs/user-guide/migration-guide-v6.md new file mode 100644 index 000000000..92f82c06c --- /dev/null +++ b/docs/user-guide/migration-guide-v6.md @@ -0,0 +1,341 @@ +# Migration Guide: v5.x → v6.0.0 + +!!! tip "Quick Start" + ```bash + pip install --upgrade flixopt + ``` + The new API is simpler and more intuitive. Review this guide to update your code. + +--- + +## Overview + +v6.0.0 introduces a streamlined API for optimization and results access. The key changes are: + +| Aspect | Old API (v5.x) | New API (v6.0.0) | +|--------|----------------|------------------| +| **Optimization** | `fx.Optimization` class | `FlowSystem.optimize()` method | +| **Results access** | `element.submodel.variable.solution` | `flow_system.solution['variable_name']` | +| **Results storage** | `Results` class | `xarray.Dataset` on `flow_system.solution` | + +--- + +## 💥 Breaking Changes in v6.0.0 + +### Optimization API + +The `Optimization` class is removed. Use `FlowSystem.optimize()` directly. + +=== "v5.x (Old)" + ```python + import flixopt as fx + + # Create flow system + flow_system = fx.FlowSystem(timesteps) + flow_system.add_elements(...) + + # Create Optimization object + optimization = fx.Optimization('my_model', flow_system) + optimization.do_modeling() + optimization.solve(fx.solvers.HighsSolver()) + + # Access results via Optimization object + results = optimization.results + costs = results.model['costs'].solution.item() + ``` + +=== "v6.0.0 (New)" + ```python + import flixopt as fx + + # Create flow system + flow_system = fx.FlowSystem(timesteps) + flow_system.add_elements(...) + + # Optimize directly on FlowSystem + flow_system.optimize(fx.solvers.HighsSolver()) + + # Access results via flow_system.solution + costs = flow_system.solution['costs'].item() + ``` + +!!! note "Two-step alternative" + If you need access to the model before solving: + ```python + flow_system.build_model() # Creates flow_system.model + flow_system.solve(fx.solvers.HighsSolver()) + ``` + +--- + +### Results Access + +Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset`. + +#### Effect Values + +=== "v5.x (Old)" + ```python + # Via element reference + costs = flow_system.effects['costs'] + total_costs = costs.submodel.total.solution.item() + + # Or via results object + total_costs = optimization.results.model['costs'].solution.item() + ``` + +=== "v6.0.0 (New)" + ```python + # Direct access via solution Dataset + total_costs = flow_system.solution['costs'].item() + + # Temporal and periodic components + temporal_costs = flow_system.solution['costs(temporal)'].values + periodic_costs = flow_system.solution['costs(periodic)'].values + per_timestep = flow_system.solution['costs(temporal)|per_timestep'].values + ``` + +#### Flow Rates + +=== "v5.x (Old)" + ```python + boiler = flow_system.components['Boiler'] + flow_rate = boiler.thermal_flow.submodel.flow_rate.solution.values + ``` + +=== "v6.0.0 (New)" + ```python + flow_rate = flow_system.solution['Boiler(Q_th)|flow_rate'].values + ``` + +#### Investment Variables + +=== "v5.x (Old)" + ```python + boiler = flow_system.components['Boiler'] + size = boiler.thermal_flow.submodel.investment.size.solution.item() + invested = boiler.thermal_flow.submodel.investment.invested.solution.item() + ``` + +=== "v6.0.0 (New)" + ```python + size = flow_system.solution['Boiler(Q_th)|size'].item() + invested = flow_system.solution['Boiler(Q_th)|invested'].item() + ``` + +#### Status Variables + +=== "v5.x (Old)" + ```python + boiler = flow_system.components['Boiler'] + status = boiler.thermal_flow.submodel.status.status.solution.values + startup = boiler.thermal_flow.submodel.status.startup.solution.values + shutdown = boiler.thermal_flow.submodel.status.shutdown.solution.values + ``` + +=== "v6.0.0 (New)" + ```python + status = flow_system.solution['Boiler(Q_th)|status'].values + startup = flow_system.solution['Boiler(Q_th)|startup'].values + shutdown = flow_system.solution['Boiler(Q_th)|shutdown'].values + ``` + +#### Storage Variables + +=== "v5.x (Old)" + ```python + storage = flow_system.components['Speicher'] + charge_state = storage.submodel.charge_state.solution.values + netto_discharge = storage.submodel.netto_discharge.solution.values + ``` + +=== "v6.0.0 (New)" + ```python + charge_state = flow_system.solution['Speicher|charge_state'].values + netto_discharge = flow_system.solution['Speicher|netto_discharge'].values + final_charge = flow_system.solution['Speicher|charge_state|final'].item() + ``` + +--- + +## Variable Naming Convention + +The new API uses a consistent naming pattern: + +``` +ComponentLabel(FlowLabel)|variable_name +``` + +### Pattern Reference + +| Variable Type | Pattern | Example | +|--------------|---------|---------| +| **Flow rate** | `Component(Flow)\|flow_rate` | `Boiler(Q_th)\|flow_rate` | +| **Size** | `Component(Flow)\|size` | `Boiler(Q_th)\|size` | +| **Invested** | `Component(Flow)\|invested` | `Boiler(Q_th)\|invested` | +| **Status** | `Component(Flow)\|status` | `Boiler(Q_th)\|status` | +| **Startup** | `Component(Flow)\|startup` | `Boiler(Q_th)\|startup` | +| **Shutdown** | `Component(Flow)\|shutdown` | `Boiler(Q_th)\|shutdown` | +| **Inactive** | `Component(Flow)\|inactive` | `Boiler(Q_th)\|inactive` | +| **Active hours** | `Component(Flow)\|active_hours` | `Boiler(Q_th)\|active_hours` | +| **Total flow** | `Component(Flow)\|total_flow_hours` | `Boiler(Q_th)\|total_flow_hours` | +| **Storage charge** | `Storage\|charge_state` | `Speicher\|charge_state` | +| **Storage final** | `Storage\|charge_state\|final` | `Speicher\|charge_state\|final` | +| **Netto discharge** | `Storage\|netto_discharge` | `Speicher\|netto_discharge` | + +### Effects Pattern + +| Variable Type | Pattern | Example | +|--------------|---------|---------| +| **Total** | `effect_label` | `costs` | +| **Temporal** | `effect_label(temporal)` | `costs(temporal)` | +| **Periodic** | `effect_label(periodic)` | `costs(periodic)` | +| **Per timestep** | `effect_label(temporal)\|per_timestep` | `costs(temporal)\|per_timestep` | +| **Contribution** | `Component(Flow)->effect(temporal)` | `Gastarif(Q_Gas)->costs(temporal)` | + +--- + +## Discovering Variable Names + +Use these methods to find available variable names: + +```python +# List all variables in the solution +print(list(flow_system.solution.data_vars)) + +# Filter for specific patterns +costs_vars = [v for v in flow_system.solution.data_vars if 'costs' in v] +boiler_vars = [v for v in flow_system.solution.data_vars if 'Boiler' in v] +``` + +--- + +## Results I/O + +### Saving Results + +=== "v5.x (Old)" + ```python + optimization.results.to_file(folder='results', name='my_model') + ``` + +=== "v6.0.0 (New)" + ```python + # Save entire FlowSystem with solution + flow_system.to_netcdf('results/my_model.nc4') + + # Or save just the solution Dataset + flow_system.solution.to_netcdf('results/solution.nc4') + ``` + +### Loading Results + +=== "v5.x (Old)" + ```python + results = fx.results.Results.from_file('results', 'my_model') + ``` + +=== "v6.0.0 (New)" + ```python + import xarray as xr + + # Load FlowSystem with solution + flow_system = fx.FlowSystem.from_netcdf('results/my_model.nc4') + + # Or load just the solution + solution = xr.open_dataset('results/solution.nc4') + ``` + +--- + +## Working with xarray Dataset + +The `flow_system.solution` is an `xarray.Dataset`, giving you powerful data manipulation: + +```python +# Access a single variable +costs = flow_system.solution['costs'] + +# Get values as numpy array +values = flow_system.solution['Boiler(Q_th)|flow_rate'].values + +# Get scalar value +total = flow_system.solution['costs'].item() + +# Sum over time dimension +total_flow = flow_system.solution['Boiler(Q_th)|flow_rate'].sum(dim='time') + +# Select by time +subset = flow_system.solution.sel(time=slice('2020-01-01', '2020-01-02')) + +# Convert to DataFrame +df = flow_system.solution.to_dataframe() +``` + +--- + +## Segmented & Clustered Optimization + +The new API also applies to advanced optimization modes: + +=== "v5.x (Old)" + ```python + calc = fx.SegmentedOptimization('model', flow_system, + timesteps_per_segment=96) + calc.do_modeling_and_solve(solver) + results = calc.results + ``` + +=== "v6.0.0 (New)" + ```python + # Use transform accessor for segmented optimization + flow_system.transform.segment(timesteps_per_segment=96) + flow_system.optimize(solver) + # Results in flow_system.solution + ``` + +--- + +## 🔧 Quick Reference + +### Common Conversions + +| Old Pattern | New Pattern | +|-------------|-------------| +| `optimization.results.model['costs'].solution.item()` | `flow_system.solution['costs'].item()` | +| `comp.flow.submodel.flow_rate.solution.values` | `flow_system.solution['Comp(Flow)\|flow_rate'].values` | +| `comp.flow.submodel.investment.size.solution.item()` | `flow_system.solution['Comp(Flow)\|size'].item()` | +| `comp.flow.submodel.status.status.solution.values` | `flow_system.solution['Comp(Flow)\|status'].values` | +| `storage.submodel.charge_state.solution.values` | `flow_system.solution['Storage\|charge_state'].values` | +| `effects['CO2'].submodel.total.solution.item()` | `flow_system.solution['CO2'].item()` | + +--- + +## ✅ Migration Checklist + +| Task | Description | +|------|-------------| +| **Replace Optimization class** | Use `flow_system.optimize(solver)` instead | +| **Update results access** | Use `flow_system.solution['var_name']` pattern | +| **Update I/O code** | Use `to_netcdf()` / `from_netcdf()` | +| **Test thoroughly** | Verify results match v5.x outputs | +| **Remove deprecated imports** | Remove `fx.Optimization`, `fx.Results` | + +--- + +## Deprecation Timeline + +| Version | Status | +|---------|--------| +| v5.x | `Optimization` class deprecated with warning | +| v6.0.0 | `Optimization` class removed | + +!!! warning "Update before v6.0.0" + The `Optimization` and `Results` classes will be removed in v6.0.0. + Update your code to the new API now to avoid breaking changes. + +--- + +:material-book: [Docs](https://flixopt.github.io/flixopt/) • :material-github: [Issues](https://github.com/flixOpt/flixopt/issues) + +!!! success "Welcome to the new flixopt API! 🎉" diff --git a/mkdocs.yml b/mkdocs.yml index 8fb6765ae..58abb684f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -42,6 +42,7 @@ nav: - Troubleshooting: user-guide/troubleshooting.md - Community: user-guide/support.md - Migration & Updates: + - Migration Guide v6: user-guide/migration-guide-v6.md - Migration Guide v3: user-guide/migration-guide-v3.md - Release Notes: changelog.md - Roadmap: roadmap.md From 11d26f7abd82f0415e8fd9a585a47aff0cbdfbf7 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 18:56:16 +0100 Subject: [PATCH 23/88] Add plotting and statistics tests --- tests/test_solution_and_plotting.py | 599 ++++++++++++++++++++++++++++ 1 file changed, 599 insertions(+) create mode 100644 tests/test_solution_and_plotting.py diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py new file mode 100644 index 000000000..090f54588 --- /dev/null +++ b/tests/test_solution_and_plotting.py @@ -0,0 +1,599 @@ +"""Tests for the new solution access API and plotting functionality. + +This module tests: +- flow_system.solution access (xarray Dataset) +- element.solution access (filtered view) +- plotting module functions with realistic optimization data +- heatmap time reshaping +- network visualization +""" + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import pytest +import xarray as xr + +import flixopt as fx +from flixopt import plotting + +# ============================================================================ +# SOLUTION ACCESS TESTS +# ============================================================================ + + +class TestFlowSystemSolution: + """Tests for flow_system.solution API.""" + + def test_solution_is_xarray_dataset(self, simple_flow_system, highs_solver): + """Verify solution is an xarray Dataset.""" + simple_flow_system.optimize(highs_solver) + assert isinstance(simple_flow_system.solution, xr.Dataset) + + def test_solution_has_time_dimension(self, simple_flow_system, highs_solver): + """Verify solution has time dimension.""" + simple_flow_system.optimize(highs_solver) + assert 'time' in simple_flow_system.solution.dims + + def test_solution_contains_effect_totals(self, simple_flow_system, highs_solver): + """Verify solution contains effect totals (costs, CO2).""" + simple_flow_system.optimize(highs_solver) + solution = simple_flow_system.solution + + # Check that effects are present + assert 'costs' in solution + assert 'CO2' in solution + + # Verify they are scalar values + assert solution['costs'].dims == () + assert solution['CO2'].dims == () + + def test_solution_contains_temporal_effects(self, simple_flow_system, highs_solver): + """Verify solution contains temporal effect components.""" + simple_flow_system.optimize(highs_solver) + solution = simple_flow_system.solution + + # Check temporal components + assert 'costs(temporal)' in solution + assert 'costs(temporal)|per_timestep' in solution + + def test_solution_contains_flow_rates(self, simple_flow_system, highs_solver): + """Verify solution contains flow rate variables.""" + simple_flow_system.optimize(highs_solver) + solution = simple_flow_system.solution + + # Check flow rates for known components + flow_rate_vars = [v for v in solution.data_vars if '|flow_rate' in v] + assert len(flow_rate_vars) > 0 + + # Verify flow rates have time dimension + for var in flow_rate_vars: + assert 'time' in solution[var].dims + + def test_solution_contains_storage_variables(self, simple_flow_system, highs_solver): + """Verify solution contains storage-specific variables.""" + simple_flow_system.optimize(highs_solver) + solution = simple_flow_system.solution + + # Check storage charge state + assert 'Speicher|charge_state' in solution + assert 'Speicher|charge_state|final' in solution + + def test_solution_item_returns_scalar(self, simple_flow_system, highs_solver): + """Verify .item() returns Python scalar for 0-d arrays.""" + simple_flow_system.optimize(highs_solver) + + costs = simple_flow_system.solution['costs'].item() + assert isinstance(costs, (int, float)) + + def test_solution_values_returns_numpy_array(self, simple_flow_system, highs_solver): + """Verify .values returns numpy array for multi-dimensional data.""" + simple_flow_system.optimize(highs_solver) + + # Find a flow rate variable + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + flow_rate = simple_flow_system.solution[flow_vars[0]].values + assert isinstance(flow_rate, np.ndarray) + + def test_solution_sum_over_time(self, simple_flow_system, highs_solver): + """Verify xarray operations work on solution data.""" + simple_flow_system.optimize(highs_solver) + + # Sum flow rate over time + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + total_flow = simple_flow_system.solution[flow_vars[0]].sum(dim='time') + assert total_flow.dims == () + + def test_solution_to_dataframe(self, simple_flow_system, highs_solver): + """Verify solution can be converted to DataFrame.""" + simple_flow_system.optimize(highs_solver) + + df = simple_flow_system.solution.to_dataframe() + assert isinstance(df, pd.DataFrame) + + def test_solution_none_before_optimization(self, simple_flow_system): + """Verify solution is None before optimization.""" + assert simple_flow_system.solution is None + + +class TestElementSolution: + """Tests for element.solution API (filtered view of flow_system.solution).""" + + def test_element_solution_is_filtered_dataset(self, simple_flow_system, highs_solver): + """Verify element.solution returns filtered Dataset.""" + simple_flow_system.optimize(highs_solver) + + boiler = simple_flow_system.components['Boiler'] + element_solution = boiler.solution + + assert isinstance(element_solution, xr.Dataset) + + def test_element_solution_contains_only_element_variables(self, simple_flow_system, highs_solver): + """Verify element.solution only contains variables for that element.""" + simple_flow_system.optimize(highs_solver) + + boiler = simple_flow_system.components['Boiler'] + element_solution = boiler.solution + + # All variables should start with 'Boiler' + for var in element_solution.data_vars: + assert 'Boiler' in var, f"Variable {var} should contain 'Boiler'" + + def test_storage_element_solution(self, simple_flow_system, highs_solver): + """Verify storage element solution contains charge state.""" + simple_flow_system.optimize(highs_solver) + + storage = simple_flow_system.components['Speicher'] + element_solution = storage.solution + + # Should contain charge state variables + charge_vars = [v for v in element_solution.data_vars if 'charge_state' in v] + assert len(charge_vars) > 0 + + def test_element_solution_raises_for_unlinked_element(self): + """Verify accessing solution for unlinked element raises error.""" + boiler = fx.linear_converters.Boiler( + 'TestBoiler', + thermal_efficiency=0.9, + thermal_flow=fx.Flow('Q_th', bus='Heat'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + with pytest.raises(ValueError, match='not linked to a FlowSystem'): + _ = boiler.solution + + +# ============================================================================ +# PLOTTING WITH OPTIMIZED DATA TESTS +# ============================================================================ + + +class TestPlottingWithOptimizedData: + """Tests for plotting functions using actual optimization results.""" + + def test_plot_flow_rates_with_plotly(self, simple_flow_system, highs_solver): + """Test plotting flow rates with Plotly.""" + simple_flow_system.optimize(highs_solver) + + # Extract flow rate data + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + flow_data = simple_flow_system.solution[flow_vars[:3]] # Take first 3 + + fig = plotting.with_plotly(flow_data, mode='stacked_bar') + assert fig is not None + assert len(fig.data) > 0 + + def test_plot_flow_rates_with_matplotlib(self, simple_flow_system, highs_solver): + """Test plotting flow rates with Matplotlib.""" + simple_flow_system.optimize(highs_solver) + + # Extract flow rate data + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + flow_data = simple_flow_system.solution[flow_vars[:3]] + + fig, ax = plotting.with_matplotlib(flow_data, mode='stacked_bar') + assert fig is not None + assert ax is not None + plt.close(fig) + + def test_plot_line_mode(self, simple_flow_system, highs_solver): + """Test line plotting mode.""" + simple_flow_system.optimize(highs_solver) + + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + flow_data = simple_flow_system.solution[flow_vars[:3]] + + fig = plotting.with_plotly(flow_data, mode='line') + assert fig is not None + + fig2, ax2 = plotting.with_matplotlib(flow_data, mode='line') + assert fig2 is not None + plt.close(fig2) + + def test_plot_area_mode(self, simple_flow_system, highs_solver): + """Test area plotting mode (Plotly only).""" + simple_flow_system.optimize(highs_solver) + + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + flow_data = simple_flow_system.solution[flow_vars[:3]] + + fig = plotting.with_plotly(flow_data, mode='area') + assert fig is not None + + def test_plot_with_custom_colors(self, simple_flow_system, highs_solver): + """Test plotting with custom colors.""" + simple_flow_system.optimize(highs_solver) + + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v][:2] + flow_data = simple_flow_system.solution[flow_vars] + + # Test with color list + fig1 = plotting.with_plotly(flow_data, mode='line', colors=['red', 'blue']) + assert fig1 is not None + + # Test with color dict + color_dict = {flow_vars[0]: '#ff0000', flow_vars[1]: '#0000ff'} + fig2 = plotting.with_plotly(flow_data, mode='line', colors=color_dict) + assert fig2 is not None + + # Test with colorscale name + fig3 = plotting.with_plotly(flow_data, mode='line', colors='turbo') + assert fig3 is not None + + def test_plot_with_title_and_labels(self, simple_flow_system, highs_solver): + """Test plotting with custom title and axis labels.""" + simple_flow_system.optimize(highs_solver) + + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v] + flow_data = simple_flow_system.solution[flow_vars[:2]] + + fig = plotting.with_plotly(flow_data, mode='line', title='Energy Flows', xlabel='Time (h)', ylabel='Power (kW)') + assert fig.layout.title.text == 'Energy Flows' + + def test_plot_scalar_effects(self, simple_flow_system, highs_solver): + """Test plotting scalar effect values.""" + simple_flow_system.optimize(highs_solver) + + # Create dataset with scalar values + effects_data = xr.Dataset( + { + 'costs': simple_flow_system.solution['costs'], + 'CO2': simple_flow_system.solution['CO2'], + } + ) + + # This should handle scalar data gracefully + fig, ax = plotting.with_matplotlib(effects_data, mode='stacked_bar') + assert fig is not None + plt.close(fig) + + +class TestDualPiePlots: + """Tests for dual pie chart functionality.""" + + def test_dual_pie_with_effects(self, simple_flow_system, highs_solver): + """Test dual pie chart with effect contributions.""" + simple_flow_system.optimize(highs_solver) + + # Get temporal costs per timestep (summed to scalar for pie) + temporal_vars = [v for v in simple_flow_system.solution.data_vars if '->costs(temporal)' in v] + + if len(temporal_vars) >= 2: + # Sum over time to get total contributions + left_data = xr.Dataset({v: simple_flow_system.solution[v].sum() for v in temporal_vars[:2]}) + right_data = xr.Dataset({v: simple_flow_system.solution[v].sum() for v in temporal_vars[:2]}) + + fig = plotting.dual_pie_with_plotly(left_data, right_data) + assert fig is not None + + def test_dual_pie_with_matplotlib(self, simple_flow_system, highs_solver): + """Test dual pie chart with matplotlib backend.""" + simple_flow_system.optimize(highs_solver) + + # Simple scalar data + left_data = xr.Dataset({'A': xr.DataArray(30), 'B': xr.DataArray(70)}) + right_data = xr.Dataset({'A': xr.DataArray(50), 'B': xr.DataArray(50)}) + + fig, axes = plotting.dual_pie_with_matplotlib(left_data, right_data) + assert fig is not None + assert len(axes) == 2 + plt.close(fig) + + +# ============================================================================ +# HEATMAP TESTS +# ============================================================================ + + +class TestHeatmapReshaping: + """Tests for heatmap time reshaping functionality.""" + + @pytest.fixture + def long_time_data(self): + """Create data with longer time series for heatmap testing.""" + time = pd.date_range('2020-01-01', periods=72, freq='h') # 3 days + rng = np.random.default_rng(42) + data = xr.DataArray(rng.random(72) * 100, coords={'time': time}, dims=['time'], name='power') + return data + + def test_reshape_auto_mode(self, long_time_data): + """Test automatic time reshaping.""" + reshaped = plotting.reshape_data_for_heatmap(long_time_data, reshape_time='auto') + + # Should have timestep and timeframe dimensions + assert 'timestep' in reshaped.dims or 'timeframe' in reshaped.dims or reshaped.dims == long_time_data.dims + + def test_reshape_explicit_daily_hourly(self, long_time_data): + """Test explicit daily-hourly reshaping.""" + reshaped = plotting.reshape_data_for_heatmap(long_time_data, reshape_time=('D', 'h')) + + # Should have timeframe (days) and timestep (hours) dimensions + if 'timestep' in reshaped.dims: + assert 'timeframe' in reshaped.dims + # With 72 hours (3 days), we should have 3 timeframes and up to 24 timesteps + assert reshaped.sizes['timeframe'] == 3 + + def test_reshape_none_preserves_data(self, long_time_data): + """Test that reshape_time=None preserves original structure.""" + reshaped = plotting.reshape_data_for_heatmap(long_time_data, reshape_time=None) + assert 'time' in reshaped.dims + xr.testing.assert_equal(reshaped, long_time_data) + + def test_heatmap_with_plotly(self, long_time_data): + """Test heatmap plotting with Plotly.""" + # Convert to Dataset for plotting + data = long_time_data.to_dataset(name='power') + + fig = plotting.heatmap_with_plotly(data['power'], reshape_time=('D', 'h')) + assert fig is not None + + def test_heatmap_with_matplotlib(self, long_time_data): + """Test heatmap plotting with Matplotlib.""" + fig, ax = plotting.heatmap_with_matplotlib(long_time_data, reshape_time=('D', 'h')) + assert fig is not None + assert ax is not None + plt.close(fig) + + +# ============================================================================ +# NETWORK VISUALIZATION TESTS +# ============================================================================ + + +class TestNetworkVisualization: + """Tests for network visualization functionality.""" + + def test_plot_network_returns_network(self, simple_flow_system): + """Test that plot_network returns a Network object.""" + # Only test if pyvis is available + network = simple_flow_system.plot_network(path=False, show=False) + assert network is not None + + def test_plot_network_creates_html(self, simple_flow_system, tmp_path): + """Test that plot_network creates HTML file.""" + html_path = tmp_path / 'network.html' + simple_flow_system.plot_network(path=str(html_path), show=False) + assert html_path.exists() + + def test_network_contains_all_buses(self, simple_flow_system): + """Test that network contains all buses.""" + network = simple_flow_system.plot_network(path=False, show=False) + + # Get node labels + node_labels = [node['label'] for node in network.nodes] + + # Check that buses are in network + for bus_label in simple_flow_system.buses.keys(): + assert bus_label in node_labels + + +# ============================================================================ +# VARIABLE NAMING CONVENTION TESTS +# ============================================================================ + + +class TestVariableNamingConvention: + """Tests verifying the new variable naming convention.""" + + def test_flow_rate_naming_pattern(self, simple_flow_system, highs_solver): + """Test Component(Flow)|flow_rate naming pattern.""" + simple_flow_system.optimize(highs_solver) + + # Check Boiler flow rate follows pattern + assert 'Boiler(Q_th)|flow_rate' in simple_flow_system.solution + + def test_status_variable_naming(self, simple_flow_system, highs_solver): + """Test status variable naming pattern.""" + simple_flow_system.optimize(highs_solver) + + # Components with status should have status variables + status_vars = [v for v in simple_flow_system.solution.data_vars if '|status' in v] + # At least one component should have status + assert len(status_vars) >= 0 # May be 0 if no status tracking + + def test_storage_naming_pattern(self, simple_flow_system, highs_solver): + """Test Storage|variable naming pattern.""" + simple_flow_system.optimize(highs_solver) + + # Storage charge state follows pattern + assert 'Speicher|charge_state' in simple_flow_system.solution + assert 'Speicher|netto_discharge' in simple_flow_system.solution + + def test_effect_naming_patterns(self, simple_flow_system, highs_solver): + """Test effect naming patterns.""" + simple_flow_system.optimize(highs_solver) + + # Total effect + assert 'costs' in simple_flow_system.solution + + # Temporal component + assert 'costs(temporal)' in simple_flow_system.solution + + # Per timestep + assert 'costs(temporal)|per_timestep' in simple_flow_system.solution + + def test_list_all_variables(self, simple_flow_system, highs_solver): + """Test that all variables can be listed.""" + simple_flow_system.optimize(highs_solver) + + variables = list(simple_flow_system.solution.data_vars) + assert len(variables) > 0 + + # Print for debugging + print(f'Solution contains {len(variables)} variables') + + +# ============================================================================ +# EDGE CASES AND ERROR HANDLING +# ============================================================================ + + +class TestPlottingEdgeCases: + """Tests for edge cases in plotting.""" + + def test_empty_dataset_logs_error(self, caplog): + """Test that empty dataset logs an error and returns empty figure.""" + import logging + + empty_data = xr.Dataset() + with caplog.at_level(logging.ERROR): + fig = plotting.with_plotly(empty_data) + # Should log an error about empty dataset + assert 'empty' in caplog.text.lower() or len(fig.data) == 0 + + def test_non_numeric_data_raises_error(self): + """Test that non-numeric data raises appropriate error.""" + string_data = xr.Dataset({'var': (['time'], ['a', 'b', 'c'])}, coords={'time': [0, 1, 2]}) + with pytest.raises(TypeError, match='non-numeric'): + plotting.with_plotly(string_data) + + def test_single_value_plotting(self): + """Test plotting with single data point.""" + single_data = xr.Dataset({'var': (['time'], [42.0])}, coords={'time': [0]}) + + fig = plotting.with_plotly(single_data, mode='stacked_bar') + assert fig is not None + + def test_all_zero_data_plotting(self): + """Test plotting with all zero values.""" + zero_data = xr.Dataset( + {'var1': (['time'], [0.0, 0.0, 0.0]), 'var2': (['time'], [0.0, 0.0, 0.0])}, coords={'time': [0, 1, 2]} + ) + + fig = plotting.with_plotly(zero_data, mode='stacked_bar') + assert fig is not None + + def test_nan_values_handled(self): + """Test that NaN values are handled gracefully.""" + nan_data = xr.Dataset({'var': (['time'], [1.0, np.nan, 3.0, np.nan, 5.0])}, coords={'time': [0, 1, 2, 3, 4]}) + + # Should not raise, just warn + fig = plotting.with_plotly(nan_data, mode='line') + assert fig is not None + + def test_negative_values_in_stacked_bar(self): + """Test handling of negative values in stacked bar charts.""" + mixed_data = xr.Dataset( + {'positive': (['time'], [1.0, 2.0, 3.0]), 'negative': (['time'], [-1.0, -2.0, -3.0])}, + coords={'time': [0, 1, 2]}, + ) + + fig = plotting.with_plotly(mixed_data, mode='stacked_bar') + assert fig is not None + + fig2, ax2 = plotting.with_matplotlib(mixed_data, mode='stacked_bar') + assert fig2 is not None + plt.close(fig2) + + +# ============================================================================ +# COLOR PROCESSING TESTS +# ============================================================================ + + +class TestColorProcessing: + """Tests for color processing functionality.""" + + def test_colorscale_name(self): + """Test processing colorscale by name.""" + from flixopt.color_processing import process_colors + + colors = process_colors('turbo', ['A', 'B', 'C']) + assert isinstance(colors, dict) + assert 'A' in colors + assert 'B' in colors + assert 'C' in colors + + def test_color_list(self): + """Test processing explicit color list.""" + from flixopt.color_processing import process_colors + + color_list = ['#ff0000', '#00ff00', '#0000ff'] + colors = process_colors(color_list, ['A', 'B', 'C']) + assert colors['A'] == '#ff0000' + assert colors['B'] == '#00ff00' + assert colors['C'] == '#0000ff' + + def test_color_dict(self): + """Test processing color dictionary.""" + from flixopt.color_processing import process_colors + + color_dict = {'A': 'red', 'B': 'blue'} + colors = process_colors(color_dict, ['A', 'B', 'C']) + assert colors['A'] == 'red' + assert colors['B'] == 'blue' + # C should get a default color + assert 'C' in colors + + def test_insufficient_colors_cycles(self): + """Test that insufficient colors cycle properly.""" + from flixopt.color_processing import process_colors + + # Only 2 colors for 5 labels + colors = process_colors(['red', 'blue'], ['A', 'B', 'C', 'D', 'E']) + assert len(colors) == 5 + # Should cycle + assert colors['A'] == 'red' + assert colors['B'] == 'blue' + assert colors['C'] == 'red' # Cycles back + + +# ============================================================================ +# EXPORT FUNCTIONALITY TESTS +# ============================================================================ + + +class TestExportFunctionality: + """Tests for figure export functionality.""" + + def test_export_plotly_to_html(self, simple_flow_system, highs_solver, tmp_path): + """Test exporting Plotly figure to HTML.""" + simple_flow_system.optimize(highs_solver) + + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v][:2] + flow_data = simple_flow_system.solution[flow_vars] + + fig = plotting.with_plotly(flow_data, mode='line') + + html_path = tmp_path / 'plot.html' + # export_figure expects pathlib.Path and save=True to actually save + plotting.export_figure(fig, default_path=html_path, save=True, show=False) + assert html_path.exists() + + def test_export_matplotlib_to_png(self, simple_flow_system, highs_solver, tmp_path): + """Test exporting Matplotlib figure to PNG.""" + simple_flow_system.optimize(highs_solver) + + flow_vars = [v for v in simple_flow_system.solution.data_vars if '|flow_rate' in v][:2] + flow_data = simple_flow_system.solution[flow_vars] + + fig, ax = plotting.with_matplotlib(flow_data, mode='line') + + png_path = tmp_path / 'plot.png' + # export_figure expects pathlib.Path and save=True to actually save + plotting.export_figure((fig, ax), default_path=png_path, save=True, show=False) + assert png_path.exists() + plt.close(fig) + + +if __name__ == '__main__': + pytest.main([__file__, '-v']) From 260a83c57713272f9184abffa29f4ad109097232 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:09:04 +0100 Subject: [PATCH 24/88] Fix depprecation warings in tests --- pyproject.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 5b9800fb6..8817c9eed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -198,6 +198,13 @@ filterwarnings = [ # === Default behavior: show all warnings === "default", + # === Ignore specific deprecation warnings for backward compatibility tests === + # These are raised by deprecated classes (Optimization, Results) used in tests/deprecated/ + "ignore:Results is deprecated:DeprecationWarning:flixopt", + "ignore:Optimization is deprecated:DeprecationWarning:flixopt", + "ignore:SegmentedOptimization is deprecated:DeprecationWarning:flixopt", + "ignore:ClusteredOptimization is deprecated:DeprecationWarning:flixopt", + # === Treat flixopt warnings as errors (strict mode for our code) === # This ensures we catch deprecations, future changes, and user warnings in our own code "error::DeprecationWarning:flixopt", From ba8868339fd43d3bb56586710c5db182db9352ca Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 22:02:48 +0100 Subject: [PATCH 25/88] 1. tests/test_component.py - Fixed tautological assertions in both test_transmission_balanced and test_transmission_unbalanced. Removed the self-comparing assertions and consolidated them with the meaningful loss calculation tests. 2. flixopt/optimize_accessor.py - Removed the unused logging import and logger variable. 3. flixopt/config.py - Updated the docstring for compute_infeasibilities from "Whether to save model documentation on infeasibility" to "Whether to compute infeasibility analysis when the model is infeasible." 4. flixopt/transform_accessor.py - Changed if not dt_min == dt_max: to the more idiomatic if dt_min != dt_max:. 5. pyproject.toml - Added "ignore:SegmentedResults is deprecated:DeprecationWarning:flixopt" to the pytest filter warnings to handle the SegmentedResults deprecation warning in backward compatibility tests. --- flixopt/config.py | 2 +- flixopt/optimize_accessor.py | 3 --- flixopt/transform_accessor.py | 2 +- pyproject.toml | 1 + tests/test_component.py | 20 ++++++-------------- 5 files changed, 9 insertions(+), 19 deletions(-) diff --git a/flixopt/config.py b/flixopt/config.py index f0a7a069d..043142cbe 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -527,7 +527,7 @@ class Solving: time_limit_seconds: Default time limit in seconds for solver runs. log_to_console: Whether solver should output to console. log_main_results: Whether to log main results after solving. - compute_infeasibilities: Whether to save model documentation on infeasibility. + compute_infeasibilities: Whether to compute infeasibility analysis when the model is infeasible. Examples: ```python diff --git a/flixopt/optimize_accessor.py b/flixopt/optimize_accessor.py index bcaaf99f6..5428cd855 100644 --- a/flixopt/optimize_accessor.py +++ b/flixopt/optimize_accessor.py @@ -7,15 +7,12 @@ from __future__ import annotations -import logging from typing import TYPE_CHECKING if TYPE_CHECKING: from .flow_system import FlowSystem from .solvers import _Solver -logger = logging.getLogger('flixopt') - class OptimizeAccessor: """ diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index 90c98157a..08169e71d 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -105,7 +105,7 @@ def cluster( # Validation dt_min = float(self._fs.hours_per_timestep.min().item()) dt_max = float(self._fs.hours_per_timestep.max().item()) - if not dt_min == dt_max: + if dt_min != dt_max: raise ValueError( f'Clustering failed due to inconsistent time step sizes: ' f'delta_t varies from {dt_min} to {dt_max} hours.' diff --git a/pyproject.toml b/pyproject.toml index 8817c9eed..bcd31f33c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -203,6 +203,7 @@ filterwarnings = [ "ignore:Results is deprecated:DeprecationWarning:flixopt", "ignore:Optimization is deprecated:DeprecationWarning:flixopt", "ignore:SegmentedOptimization is deprecated:DeprecationWarning:flixopt", + "ignore:SegmentedResults is deprecated:DeprecationWarning:flixopt", "ignore:ClusteredOptimization is deprecated:DeprecationWarning:flixopt", # === Treat flixopt warnings as errors (strict mode for our code) === diff --git a/tests/test_component.py b/tests/test_component.py index 519d36358..741f6390e 100644 --- a/tests/test_component.py +++ b/tests/test_component.py @@ -514,16 +514,12 @@ def test_transmission_balanced(self, basic_flow_system, highs_solver): 'Status does not work properly', ) - assert_almost_equal_numeric( - flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, - flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, - 'Flow rate of Rohr__Rohr1b is not correct', - ) - + # Verify output flow matches input flow minus losses (relative 20% + absolute 20) in1_flow = flow_system.solution['Rohr(Rohr1a)|flow_rate'].values + expected_out1_flow = in1_flow * 0.8 - np.array([20 if val > 0.1 else 0 for val in in1_flow]) assert_almost_equal_numeric( - in1_flow * 0.8 - np.array([20 if val > 0.1 else 0 for val in in1_flow]), flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, + expected_out1_flow, 'Losses are not computed correctly', ) @@ -595,16 +591,12 @@ def test_transmission_unbalanced(self, basic_flow_system, highs_solver): 'Status does not work properly', ) - assert_almost_equal_numeric( - flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, - flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, - 'Flow rate of Rohr__Rohr1b is not correct', - ) - + # Verify output flow matches input flow minus losses (relative 20% + absolute 20) in1_flow = flow_system.solution['Rohr(Rohr1a)|flow_rate'].values + expected_out1_flow = in1_flow * 0.8 - np.array([20 if val > 0.1 else 0 for val in in1_flow]) assert_almost_equal_numeric( - in1_flow * 0.8 - np.array([20 if val > 0.1 else 0 for val in in1_flow]), flow_system.solution['Rohr(Rohr1b)|flow_rate'].values, + expected_out1_flow, 'Losses are not computed correctly', ) From e0312d39e82b0faafb9b42b11694987115e11ba4 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 4 Dec 2025 23:14:48 +0100 Subject: [PATCH 26/88] Improve --- docs/user-guide/migration-guide-v6.md | 8 +++--- flixopt/structure.py | 10 ++++--- flixopt/transform_accessor.py | 4 +++ tests/test_effect.py | 6 +++-- tests/test_flow_system_resample.py | 6 +++-- tests/test_solution_and_plotting.py | 38 +++++++++++++++------------ tests/test_solution_persistence.py | 8 ++---- 7 files changed, 45 insertions(+), 35 deletions(-) diff --git a/docs/user-guide/migration-guide-v6.md b/docs/user-guide/migration-guide-v6.md index 92f82c06c..796310522 100644 --- a/docs/user-guide/migration-guide-v6.md +++ b/docs/user-guide/migration-guide-v6.md @@ -162,7 +162,7 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset The new API uses a consistent naming pattern: -``` +```text ComponentLabel(FlowLabel)|variable_name ``` @@ -330,9 +330,9 @@ The new API also applies to advanced optimization modes: | v5.x | `Optimization` class deprecated with warning | | v6.0.0 | `Optimization` class removed | -!!! warning "Update before v6.0.0" - The `Optimization` and `Results` classes will be removed in v6.0.0. - Update your code to the new API now to avoid breaking changes. +!!! warning "Update your code" + The `Optimization` and `Results` classes are deprecated and will be removed in a future version. + Update your code to the new API to avoid breaking changes when upgrading. --- diff --git a/flixopt/structure.py b/flixopt/structure.py index 728c6f0af..732dcfeae 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -193,12 +193,14 @@ def solution(self): # merge all time coordinates to include the extra timestep with NaN for other vars. # We extract the final charge state as separate variables and reindex to regular timesteps. if 'time' in solution.coords and len(solution.coords['time']) > len(self.flow_system.timesteps): - # Find charge_state variables and extract final state - for var_name in list(solution.data_vars): + # Collect final states first to avoid modifying during iteration + final_states = {} + for var_name in solution.data_vars: if var_name.endswith('|charge_state') and 'time' in solution[var_name].dims: # Extract final charge state as separate variable - final_state = solution[var_name].isel(time=-1) - solution[f'{var_name}|final'] = final_state + final_states[f'{var_name}|final'] = solution[var_name].isel(time=-1) + # Add all final states at once + solution = solution.assign(final_states) # Reindex all variables to regular timesteps solution = solution.reindex(time=self.flow_system.timesteps) return solution diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index 08169e71d..028d83bca 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -138,6 +138,10 @@ def cluster( # Create new FlowSystem (with aggregated data if requested) if parameters.aggregate_data_and_fix_non_binary_vars: + # Note: A second to_dataset() call is required here because: + # 1. The first 'ds' (line 124) was processed by drop_constant_arrays() + # 2. We need the full unprocessed dataset to apply aggregated data modifications + # 3. The clustering used 'temporaly_changing_ds' for input, not the full 'ds' ds = self._fs.to_dataset() for name, series in clustering.aggregated_data.items(): da = DataConverter.to_dataarray(series, self._fs.coords).rename(name).assign_attrs(ds[name].attrs) diff --git a/tests/test_effect.py b/tests/test_effect.py index 10ae59bcc..1876761ee 100644 --- a/tests/test_effect.py +++ b/tests/test_effect.py @@ -225,9 +225,11 @@ def test_shares(self, basic_flow_system_linopy_coords, coords_config): class TestEffectResults: - @pytest.mark.filterwarnings('ignore::DeprecationWarning') + @pytest.mark.deprecated_api + @pytest.mark.filterwarnings('ignore:Results is deprecated:DeprecationWarning:flixopt') + @pytest.mark.filterwarnings('ignore:Optimization is deprecated:DeprecationWarning:flixopt') def test_shares(self, basic_flow_system_linopy_coords, coords_config): - flow_system, coords_config = basic_flow_system_linopy_coords, coords_config + flow_system = basic_flow_system_linopy_coords effect1 = fx.Effect('Effect1', '€', 'Testing Effect', share_from_temporal={'costs': 0.5}) effect2 = fx.Effect( 'Effect2', diff --git a/tests/test_flow_system_resample.py b/tests/test_flow_system_resample.py index 076de4a2e..f25949c98 100644 --- a/tests/test_flow_system_resample.py +++ b/tests/test_flow_system_resample.py @@ -186,7 +186,8 @@ def test_invest_resample(complex_fs): # === Modeling Integration === -@pytest.mark.filterwarnings('ignore::DeprecationWarning') +@pytest.mark.deprecated_api +@pytest.mark.filterwarnings('ignore:Optimization is deprecated:DeprecationWarning:flixopt') @pytest.mark.parametrize('with_dim', [None, 'periods', 'scenarios']) def test_modeling(with_dim): """Test resampled FlowSystem can be modeled.""" @@ -214,7 +215,8 @@ def test_modeling(with_dim): assert len(calc.model.variables) > 0 -@pytest.mark.filterwarnings('ignore::DeprecationWarning') +@pytest.mark.deprecated_api +@pytest.mark.filterwarnings('ignore:Optimization is deprecated:DeprecationWarning:flixopt') def test_model_structure_preserved(): """Test model structure (var/constraint types) preserved.""" ts = pd.date_range('2023-01-01', periods=48, freq='h') diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index 090f54588..d80169773 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -264,6 +264,8 @@ def test_plot_scalar_effects(self, simple_flow_system, highs_solver): # This should handle scalar data gracefully fig, ax = plotting.with_matplotlib(effects_data, mode='stacked_bar') assert fig is not None + # Verify plot has visual content + assert len(ax.patches) > 0 or len(ax.lines) > 0 or len(ax.containers) > 0, 'Plot should contain visual elements' plt.close(fig) @@ -319,8 +321,15 @@ def test_reshape_auto_mode(self, long_time_data): """Test automatic time reshaping.""" reshaped = plotting.reshape_data_for_heatmap(long_time_data, reshape_time='auto') - # Should have timestep and timeframe dimensions - assert 'timestep' in reshaped.dims or 'timeframe' in reshaped.dims or reshaped.dims == long_time_data.dims + # Auto mode should attempt reshaping; verify it either reshaped or returned original + if 'timestep' in reshaped.dims or 'timeframe' in reshaped.dims: + # Reshaping occurred - verify 2D structure + assert len(reshaped.dims) == 2, 'Reshaped data should have 2 dimensions' + else: + # Reshaping not possible for this data - verify original structure preserved + assert reshaped.dims == long_time_data.dims, ( + 'Original structure should be preserved if reshaping not applied' + ) def test_reshape_explicit_daily_hourly(self, long_time_data): """Test explicit daily-hourly reshaping.""" @@ -364,7 +373,7 @@ class TestNetworkVisualization: def test_plot_network_returns_network(self, simple_flow_system): """Test that plot_network returns a Network object.""" - # Only test if pyvis is available + pytest.importorskip('pyvis') network = simple_flow_system.plot_network(path=False, show=False) assert network is not None @@ -436,10 +445,7 @@ def test_list_all_variables(self, simple_flow_system, highs_solver): simple_flow_system.optimize(highs_solver) variables = list(simple_flow_system.solution.data_vars) - assert len(variables) > 0 - - # Print for debugging - print(f'Solution contains {len(variables)} variables') + assert len(variables) > 0, f'Expected variables in solution, got {len(variables)}' # ============================================================================ @@ -450,15 +456,15 @@ def test_list_all_variables(self, simple_flow_system, highs_solver): class TestPlottingEdgeCases: """Tests for edge cases in plotting.""" - def test_empty_dataset_logs_error(self, caplog): - """Test that empty dataset logs an error and returns empty figure.""" + def test_empty_dataset_returns_empty_figure(self, caplog): + """Test that empty dataset returns an empty figure.""" import logging empty_data = xr.Dataset() with caplog.at_level(logging.ERROR): fig = plotting.with_plotly(empty_data) - # Should log an error about empty dataset - assert 'empty' in caplog.text.lower() or len(fig.data) == 0 + # Empty dataset should produce figure with no data traces + assert len(fig.data) == 0, 'Empty dataset should produce figure with no data traces' def test_non_numeric_data_raises_error(self): """Test that non-numeric data raises appropriate error.""" @@ -483,12 +489,14 @@ def test_all_zero_data_plotting(self): assert fig is not None def test_nan_values_handled(self): - """Test that NaN values are handled gracefully.""" + """Test that NaN values are handled gracefully (no exceptions raised).""" nan_data = xr.Dataset({'var': (['time'], [1.0, np.nan, 3.0, np.nan, 5.0])}, coords={'time': [0, 1, 2, 3, 4]}) - # Should not raise, just warn + # Should not raise - NaN values should be handled gracefully fig = plotting.with_plotly(nan_data, mode='line') assert fig is not None + # Verify that plot was created with some data + assert len(fig.data) > 0, 'Figure should have data traces even with NaN values' def test_negative_values_in_stacked_bar(self): """Test handling of negative values in stacked bar charts.""" @@ -593,7 +601,3 @@ def test_export_matplotlib_to_png(self, simple_flow_system, highs_solver, tmp_pa plotting.export_figure((fig, ax), default_path=png_path, save=True, show=False) assert png_path.exists() plt.close(fig) - - -if __name__ == '__main__': - pytest.main([__file__, '-v']) diff --git a/tests/test_solution_persistence.py b/tests/test_solution_persistence.py index 2bb101df5..f825f64a8 100644 --- a/tests/test_solution_persistence.py +++ b/tests/test_solution_persistence.py @@ -136,7 +136,7 @@ def test_variable_names_populated_after_modeling(self, simple_flow_system, highs boiler = simple_flow_system.components['Boiler'] assert len(boiler._variable_names) > 0 - def test_constraint_names_populated_after_modeling(self, simple_flow_system, highs_solver): + def test_constraint_names_populated_after_modeling(self, simple_flow_system): """Element._constraint_names should be populated after modeling.""" simple_flow_system.build_model() @@ -144,7 +144,7 @@ def test_constraint_names_populated_after_modeling(self, simple_flow_system, hig # Boiler should have some constraints assert len(boiler._constraint_names) >= 0 # Some elements might have no constraints - def test_all_elements_have_variable_names(self, simple_flow_system, highs_solver): + def test_all_elements_have_variable_names(self, simple_flow_system): """All elements with submodels should have _variable_names populated.""" simple_flow_system.build_model() @@ -494,7 +494,3 @@ def test_repeated_optimization_produces_consistent_results(self, simple_flow_sys simple_flow_system.solution[var_name], rtol=1e-5, ) - - -if __name__ == '__main__': - pytest.main(['-v', '--disable-warnings', __file__]) From ce24d210b1a43a30a27c9cfb9374bfd1267a53c9 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Mon, 8 Dec 2025 13:51:24 +0100 Subject: [PATCH 27/88] Add accessors for plotting, statistics and more (#506) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add planning doc * Finalize planning * Add plotting acessor * Add plotting acessor * Add tests * Improve * Improve * Update docs * Updated the plotting API so that .data always returns xarray DataArray or Dataset instead of pandas DataFrame. * All .data now returns xr.Dataset consistently. * Fixed Inconsistencies and Unused Parameters * New Plot Accessors results.plot.variable(pattern) Plots the same variable type across multiple elements for easy comparison. # All binary operation states across all components results.plot.variable('on') # All flow_rates, filtered to Boiler-related elements results.plot.variable('flow_rate', include='Boiler') # All storage charge states results.plot.variable('charge_state') # With aggregation results.plot.variable('flow_rate', aggregate='sum') Key features: - Searches all elements for variables matching the pattern - Filter with include/exclude on element names - Supports aggregation, faceting, and animation - Returns Dataset with element names as variables results.plot.duration_curve(variables) Plots load duration curves (sorted time series) showing utilization patterns. # Single variable results.plot.duration_curve('Boiler(Q_th)|flow_rate') # Multiple variables results.plot.duration_curve(['CHP|on', 'Boiler|on']) # Normalized x-axis (0-100%) results.plot.duration_curve('demand', normalize=True) Key features: - Sorts values from highest to lowest - Shows how often each power level is reached - normalize=True shows percentage of time on x-axis - Returns Dataset with duration_hours or duration_pct dimension * Fix duration curve * Fix duration curve * Fix duration curve * Fix duration curve * xr.apply_ufunc to sort along the time axis while preserving all other dimensions automatically * ⏺ The example runs successfully. Now let me summarize the fixes: Summary of Fixes I addressed the actionable code review comments from CodeRabbitAI: 1. Documentation Issue - reshape parameter name ✓ (No fix needed) The CodeRabbitAI comment was incorrect. The public API parameter in PlotAccessor.heatmap() is correctly named reshape (line 335). The reshape_time parameter exists in the lower-level heatmap_with_plotly function, but the documentation correctly shows the public API parameter. 2. Fixed simple_example.py (lines 129-130) Problem: The example called balance() and duration_curve() without required arguments, which would cause TypeError at runtime. Fix: Added the required arguments: - optimization.results.plot.balance('Fernwärme') - specifying the bus to plot - optimization.results.plot.duration_curve('Boiler(Q_th)|flow_rate') - specifying the variable to plot 3. Fixed variable collision in plot_accessors.py (lines 985-988) Problem: When building the Dataset in the variable() method, using element names as keys could cause collisions if multiple variables from the same element matched the pattern (e.g., 'Boiler|flow_rate' and 'Boiler|flow_rate_max' would both map to 'Boiler', with the latter silently overwriting the former). Fix: Changed to use the full variable names as keys instead of just element names: ds = xr.Dataset({var_name: self._results.solution[var_name] for var_name in filtered_vars}) All tests pass (40 passed, 1 skipped) and the example runs successfully. * make variable names public in results * Fix sankey * Fix effects() * Fix effects * Remove bargaps * made faceting consistent across all plot methods: | Method | facet_col | facet_row | |------------------|-------------------------------------------|-----------------------------| | balance() | 'scenario' | 'period' | | heatmap() | 'scenario' | 'period' | | storage() | 'scenario' | 'period' | | flows() | 'scenario' | 'period' | | effects() | 'scenario' | 'period' | | variable() | 'scenario' | 'period' | | duration_curve() | 'scenario' | 'period' (already had this) | | compare() | N/A (uses its own mode='overlay'/'facet') | | | sankey() | N/A (aggregates to single diagram) | | Removed animate_by parameter from all methods * Update storage method * Remove mode parameter for simpli | Method | Default mode | |------------------|---------------------------------------------------| | balance() | stacked_bar | | storage() | stacked_bar (flows) + line (charge state overlay) | | flows() | line | | variable() | line | | duration_curve() | line | | effects() | bar | * Make plotting_accessors.py more self contained * Use faster to_long() * Add 0-dim case * sankey diagram now properly handles scenarios and periods: Changes made: 1. Period aggregation with weights: Uses period_weights from flow_system to properly weight periods by their duration 2. Scenario aggregation with weights: Uses normalized scenario_weights to compute a weighted average across scenarios 3. Selection support: Users can filter specific scenarios/periods via select parameter before aggregation Weighting logic: - Periods (for aggregate='sum'): (da * period_weights).sum(dim='period') - this gives the total energy across all periods weighted by their duration - Periods (for aggregate='mean'): (da * period_weights).sum(dim='period') / period_weights.sum() - weighted mean - Scenarios: Always uses normalized weights (sum to 1) for weighted averaging, since scenarios represent probability-weighted alternatives * Add colors to sankey * Add sizes * Add size filtering * Include storage sizes * Remove storage sizes * Add charge state and status accessor * Summary of Changes 1. Added new methods to PlotAccessor (plot_accessors.py) charge_states() (line 658): - Returns a Dataset with each storage's charge state as a variable - Supports filtering with include/exclude parameters - Default plot: line chart on_states() (line 753): - Returns a Dataset with each component's |status variable - Supports filtering with include/exclude parameters - Default plot: heatmap (good for binary data visualization) 2. Added data building helper functions (plot_accessors.py) build_flow_rates(results) (line 315): - Builds a DataArray containing flow rates for all flows - Used internally by PlotAccessor methods build_flow_hours(results) (line 333): - Builds a DataArray containing flow hours for all flows build_sizes(results) (line 347): - Builds a DataArray containing sizes for all flows _filter_dataarray_by_coord(da, **kwargs) (line 284): - Helper for filtering DataArrays by coordinate values 3. Deprecated old Results methods (results.py) The following methods now emit DeprecationWarning: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 4. Updated PlotAccessor methods to use new helpers - flows() now uses build_flow_rates() / build_flow_hours() directly - sizes() now uses build_sizes() directly - sankey() now uses build_flow_hours() directly This ensures the deprecation warnings only fire when users directly call the old methods, not when using the plot accessor * 1. New methods added to PlotAccessor - charge_states(): Returns Dataset with all storage charge states - on_states(): Returns Dataset with all component status variables (heatmap display) 2. Data building helper functions (plot_accessors.py) - build_flow_rates(results): Builds DataArray of flow rates - build_flow_hours(results): Builds DataArray of flow hours - build_sizes(results): Builds DataArray of sizes - _filter_dataarray_by_coord(da, **kwargs): Filter helper - _assign_flow_coords(da, results): Add flow coordinates 3. Caching in PlotAccessor Added lazy-cached properties for expensive computations: - _all_flow_rates - cached DataArray of all flow rates - _all_flow_hours - cached DataArray of all flow hours - _all_sizes - cached DataArray of all sizes - _all_charge_states - cached Dataset of all storage charge states - _all_status_vars - cached Dataset of all status variables 4. Deprecated methods in Results class Added deprecation warnings to: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 5. Updated PlotAccessor methods to use cached properties - flows() uses _all_flow_rates / _all_flow_hours - sankey() uses _all_flow_hours - sizes() uses _all_sizes - charge_states() uses _all_charge_states - on_states() uses _all_status_vars * Move deprectated functionality into results.py instead of porting to the new module * Revert to simply deprectae old methods without forwarding to new code * Remove planning file * Update plotting methods for new datasets * 1. Renamed data properties in PlotAccessor to use all_ prefix: - all_flow_rates - All flow rates as Dataset - all_flow_hours - All flow hours as Dataset - all_sizes - All flow sizes as Dataset - all_charge_states - All storage charge states as Dataset - all_on_states - All component on/off status as Dataset 2. Updated internal references - All usages in flows(), sankey(), sizes(), charge_states(), and on_states() methods now use the new names. 3. Updated deprecation messages in results.py to point to the new API: - results.flow_rates() → results.plot.all_flow_rates - results.flow_hours() → results.plot.all_flow_hours - results.sizes() → results.plot.all_sizes 4. Updated docstring examples in PlotAccessor to use the new all_* names. * Update deprecations messages * Update deprecations messages * Thsi seems much better. * Updaet docstrings and variable name generation in plotting acessor * Change __ to _ in private dataset caching * Revert breaking io changes * New solution storing interface * Add new focused statistics and plot accessors * Renamed all properties: - all_flow_rates → flow_rates - all_flow_hours → flow_hours - all_sizes → sizes - all_charge_states → charge_states * Cache Statistics * Invalidate caches * Add effect related statistics * Simplify statistics accessor to rely on flow_system directly instead of solution attrs * Fix heatma fallback for 1D Data * Add topology accessor * All deprecation warnings in the codebase now consistently use the format will be removed in v{DEPRECATION_REMOVAL_VERSION}. * Update tests * created comprehensive documentation for all FlowSystem accessors * Update results documentation * Update results documentation * Update effect statistics * Update effect statistics * Update effect statistics * Add mkdocs plotly plugin * Add section about custom constraints * documentation updates: docs/user-guide/results/index.md: - Updated table to replace effects_per_component with temporal_effects, periodic_effects, total_effects, and effect_share_factors - Fixed flow_hours['Boiler(Q_th)|flow_rate'] → flow_hours['Boiler(Q_th)'] - Fixed sizes['Boiler(Q_th)|size'] → sizes['Boiler(Q_th)'] - Replaced effects_per_component example with new effect properties and groupby examples - Updated complete example to use total_effects docs/user-guide/results-plotting.md: - Fixed colors example from 'Boiler(Q_th)|flow_rate' → 'Boiler(Q_th)' - Fixed duration_curve examples to use clean labels docs/user-guide/migration-guide-v6.md: - Added new "Statistics Accessor" section explaining the clean labels and new effect properties * implemented the effects() method in StatisticsPlotAccessor at flixopt/statistics_accessor.py:1132-1258. Summary of what was done: 1. Implemented effects() method in StatisticsPlotAccessor class that was missing but documented - Takes aspect parameter: 'total', 'temporal', or 'periodic' - Takes effect parameter to filter to a specific effect (e.g., 'costs', 'CO2') - Takes by parameter: 'component' or 'time' for grouping - Supports all standard plotting parameters: select, colors, facet_col, facet_row, show - Returns PlotResult with both data and figure 2. Verified the implementation works with all parameter combinations: - Default call: flow_system.statistics.plot.effects() - Specific effect: flow_system.statistics.plot.effects(effect='costs') - Temporal aspect: flow_system.statistics.plot.effects(aspect='temporal') - Temporal by time: flow_system.statistics.plot.effects(aspect='temporal', by='time') - Periodic aspect: flow_system.statistics.plot.effects(aspect='periodic') * Remove intermediate plot accessor * 1. pyproject.toml: Removed duplicate mkdocs-plotly-plugin>=0.1.3 entry (kept the exact pin ==0.1.3) 2. flixopt/plotting.py: Fixed dimension name consistency by using squeezed_data.name instead of data.name in the fallback heatmap logic 3. flixopt/statistics_accessor.py: - Fixed _dataset_to_long_df() to only use coordinates that are actually present as columns after reset_index() - Fixed the nested loop inefficiency with include_flows by pre-computing the flows list outside the loop - (Previously fixed) Fixed asymmetric NaN handling in validation check * _create_effects_dataset method in statistics_accessor.py was simplified: 1. Detect contributors from solution data variables instead of assuming they're only flows - Uses regex pattern to find {contributor}->{effect}(temporal|periodic) variables - Contributors can be flows OR components (e.g., components with effects_per_active_hour) 2. Exclude effect-to-effect shares - Filters out contributors whose base name matches any effect label - For example, costs(temporal) is excluded because costs is an effect label - These intermediate shares are already included in the computation 3. Removed the unused _compute_effect_total method - The new simplified implementation directly looks up shares from the solution - Uses effect_share_factors for conversion between effects 4. Key insight from user: The solution already contains properly computed share values including all effect-to-effect conversions. The computation uses conversion factors because derived effects (like Effect1 which shares 0.5 from costs) don't have direct {flow}->Effect1(temporal) variables - only the source effect shares exist ({flow}->costs(temporal)). * Update docs * Improve to_netcdf method * Update examples * Fix IIS computaion flag * Fix examples * Fix faceting in heatmap and use period as facet col everywhere * Inline plotting methods to deprecate plotting.py (#508) * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * statistics_accessor.py - Heatmap colors type safety (lines 121-148, 820-853) - Changed _heatmap_figure() parameter type from colors: ColorType = None to colors: str | list[str] | None = None - Changed heatmap() method parameter type similarly - Updated docstrings to clarify that dicts are not supported for heatmaps since px.imshow's color_continuous_scale only accepts colorscale names or lists 2. statistics_accessor.py - Use configured qualitative colorscale (lines 284, 315) - Updated _create_stacked_bar() to use CONFIG.Plotting.default_qualitative_colorscale as the default colorscale - Updated _create_line() similarly - This ensures user-configured CONFIG.Plotting.default_qualitative_colorscale affects all bar/line plots consistently 3. topology_accessor.py - Path type alignment (lines 219-222) - Added normalization of path=False to None before calling _plot_network() - This resolves the type mismatch where TopologyAccessor.plot() accepts bool | str | Path but _plot_network() only accepts str | Path | None * fix usage if index name in aggregation plot --- docs/home/quick-start.md | 26 +- docs/user-guide/core-concepts.md | 31 +- docs/user-guide/migration-guide-v6.md | 25 + docs/user-guide/optimization/index.md | 116 ++ docs/user-guide/results-plotting.md | 413 +++++ docs/user-guide/results/index.md | 266 +++- examples/00_Minmal/minimal_example.py | 4 +- examples/01_Simple/simple_example.py | 38 +- examples/02_Complex/complex_example.py | 24 +- .../02_Complex/complex_example_results.py | 33 +- .../example_optimization_modes.py | 6 +- examples/04_Scenarios/scenario_example.py | 45 +- .../two_stage_optimization.py | 21 +- flixopt/clustering.py | 30 +- flixopt/color_processing.py | 51 + flixopt/flow_system.py | 256 +-- flixopt/plotting.py | 103 +- flixopt/results.py | 132 +- flixopt/statistics_accessor.py | 1406 +++++++++++++++++ flixopt/structure.py | 17 +- flixopt/topology_accessor.py | 302 ++++ mkdocs.yml | 1 + tests/test_effect.py | 70 +- tests/test_flow_system_resample.py | 27 +- tests/test_solution_and_plotting.py | 8 +- tests/test_topology_accessor.py | 126 ++ 26 files changed, 3193 insertions(+), 384 deletions(-) create mode 100644 docs/user-guide/results-plotting.md create mode 100644 flixopt/statistics_accessor.py create mode 100644 flixopt/topology_accessor.py create mode 100644 tests/test_topology_accessor.py diff --git a/docs/home/quick-start.md b/docs/home/quick-start.md index 4b80a7066..d95e53c90 100644 --- a/docs/home/quick-start.md +++ b/docs/home/quick-start.md @@ -88,21 +88,31 @@ battery = fx.Storage( flow_system.add_elements(solar, demand, battery, electricity_bus) ``` -### 5. Run Optimization +### 5. Visualize and Run Optimization ```python -# Run optimization directly on the flow system +# Optional: visualize your system structure +flow_system.topology.plot(path='system.html') + +# Run optimization flow_system.optimize(fx.solvers.HighsSolver()) ``` -### 6. Access Results +### 6. Access and Visualize Results ```python -# Access results directly from the flow system +# Access raw solution data print(flow_system.solution) -# Or access component-specific results +# Use statistics for aggregated data +print(flow_system.statistics.flow_hours) + +# Access component-specific results print(flow_system.components['battery'].solution) + +# Visualize results +flow_system.statistics.plot.balance('electricity') +flow_system.statistics.plot.storage('battery') ``` ### 7. Save Results (Optional) @@ -132,8 +142,10 @@ Most flixOpt projects follow this pattern: 2. **Create flow system** - Initialize with time series and effects 3. **Add buses** - Define connection points 4. **Add components** - Create generators, storage, converters, loads -5. **Run optimization** - Call `flow_system.optimize(solver)` -6. **Access Results** - Via `flow_system.solution` or component `.solution` attributes +5. **Verify structure** - Use `flow_system.topology.plot()` to visualize +6. **Run optimization** - Call `flow_system.optimize(solver)` +7. **Analyze results** - Via `flow_system.statistics` and `.solution` +8. **Visualize** - Use `flow_system.statistics.plot.*` methods ## Tips diff --git a/docs/user-guide/core-concepts.md b/docs/user-guide/core-concepts.md index 3bccb554c..401b34705 100644 --- a/docs/user-guide/core-concepts.md +++ b/docs/user-guide/core-concepts.md @@ -127,23 +127,29 @@ Define your system structure, parameters, and time series data. ### 2. Run the Optimization -Create an [`Optimization`][flixopt.optimization.Optimization] and solve it: +Optimize your FlowSystem with a solver: ```python -optimization = fx.Optimization('my_model', flow_system) -results = optimization.solve(fx.solvers.HighsSolver()) +flow_system.optimize(fx.solvers.HighsSolver()) ``` ### 3. Analyze Results -The [`Results`][flixopt.results.Results] object contains all solution data: +Access solution data directly from the FlowSystem: ```python -# Access component results -boiler_output = results['Boiler'].node_balance() +# Access component solutions +boiler = flow_system.components['Boiler'] +print(boiler.solution) # Get total costs -total_costs = results.solution['Costs'] +total_costs = flow_system.solution['costs|total'] + +# Use statistics for aggregated data +print(flow_system.statistics.flow_hours) + +# Plot results +flow_system.statistics.plot.balance('HeatBus') ```
@@ -185,12 +191,17 @@ While our example used a heating system, flixOpt works for any flow-based optimi flixOpt is built on [linopy](https://github.com/PyPSA/linopy). You can access and extend the underlying optimization model for custom constraints: ```python -# Access the linopy model after building -optimization.do_modeling() -model = optimization.model +# Build the model (without solving) +flow_system.build_model() + +# Access the linopy model +model = flow_system.model # Add custom constraints using linopy API model.add_constraints(...) + +# Then solve +flow_system.solve(fx.solvers.HighsSolver()) ``` This allows advanced users to add domain-specific constraints while keeping flixOpt's convenience for standard modeling. diff --git a/docs/user-guide/migration-guide-v6.md b/docs/user-guide/migration-guide-v6.md index 796310522..8b50312ee 100644 --- a/docs/user-guide/migration-guide-v6.md +++ b/docs/user-guide/migration-guide-v6.md @@ -296,6 +296,31 @@ The new API also applies to advanced optimization modes: --- +## Statistics Accessor + +The new `statistics` accessor provides convenient aggregated data: + +```python +stats = flow_system.statistics + +# Flow data (clean labels, no |flow_rate suffix) +stats.flow_rates['Boiler(Q_th)'] # Not 'Boiler(Q_th)|flow_rate' +stats.flow_hours['Boiler(Q_th)'] +stats.sizes['Boiler(Q_th)'] +stats.charge_states['Battery'] + +# Effect breakdown by contributor (replaces effects_per_component) +stats.temporal_effects['costs'] # Per timestep, per contributor +stats.periodic_effects['costs'] # Investment costs per contributor +stats.total_effects['costs'] # Total per contributor + +# Group by component or component type +stats.total_effects['costs'].groupby('component').sum() +stats.total_effects['costs'].groupby('component_type').sum() +``` + +--- + ## 🔧 Quick Reference ### Common Conversions diff --git a/docs/user-guide/optimization/index.md b/docs/user-guide/optimization/index.md index 0762d505a..07c96454c 100644 --- a/docs/user-guide/optimization/index.md +++ b/docs/user-guide/optimization/index.md @@ -2,6 +2,21 @@ This section covers how to run optimizations in flixOpt, including different optimization modes and solver configuration. +## Verifying Your Model + +Before running an optimization, it's helpful to visualize your system structure: + +```python +# Generate an interactive network diagram +flow_system.topology.plot(path='my_system.html') + +# Or get structure info programmatically +nodes, edges = flow_system.topology.infos() +print(f"Components: {[n for n, d in nodes.items() if d['class'] == 'Component']}") +print(f"Buses: {[n for n, d in nodes.items() if d['class'] == 'Bus']}") +print(f"Flows: {list(edges.keys())}") +``` + ## Standard Optimization The recommended way to run an optimization is directly on the `FlowSystem`: @@ -78,6 +93,107 @@ print(clustered_fs.solution) | Standard | Small-Medium | Slow | Optimal | | Clustered | Very Large | Fast | Approximate | +## Custom Constraints + +flixOpt is built on [linopy](https://github.com/PyPSA/linopy), allowing you to add custom constraints beyond what's available through the standard API. + +### Adding Custom Constraints + +To add custom constraints, build the model first, then access the underlying linopy model: + +```python +# Build the model (without solving) +flow_system.build_model() + +# Access the linopy model +model = flow_system.model + +# Access variables from the solution namespace +# Variables are named: "ElementLabel|variable_name" +boiler_flow = model.variables['Boiler(Q_th)|flow_rate'] +chp_flow = model.variables['CHP(Q_th)|flow_rate'] + +# Add a custom constraint: Boiler must produce at least as much as CHP +model.add_constraints( + boiler_flow >= chp_flow, + name='boiler_min_chp' +) + +# Solve with the custom constraint +flow_system.solve(fx.solvers.HighsSolver()) +``` + +### Common Use Cases + +**Minimum runtime constraint:** +```python +# Require component to run at least 100 hours total +on_var = model.variables['CHP|on'] # Binary on/off variable +hours = flow_system.hours_per_timestep +model.add_constraints( + (on_var * hours).sum() >= 100, + name='chp_min_runtime' +) +``` + +**Linking flows across components:** +```python +# Heat pump and boiler combined must meet minimum base load +hp_flow = model.variables['HeatPump(Q_th)|flow_rate'] +boiler_flow = model.variables['Boiler(Q_th)|flow_rate'] +model.add_constraints( + hp_flow + boiler_flow >= 50, # At least 50 kW combined + name='min_heat_supply' +) +``` + +**Seasonal constraints:** +```python +import pandas as pd + +# Different constraints for summer vs winter +summer_mask = flow_system.timesteps.month.isin([6, 7, 8]) +winter_mask = flow_system.timesteps.month.isin([12, 1, 2]) + +flow_var = model.variables['Boiler(Q_th)|flow_rate'] + +# Lower capacity in summer +model.add_constraints( + flow_var.sel(time=flow_system.timesteps[summer_mask]) <= 100, + name='summer_limit' +) +``` + +### Inspecting the Model + +Before adding constraints, inspect available variables and existing constraints: + +```python +flow_system.build_model() +model = flow_system.model + +# List all variables +print(model.variables) + +# List all constraints +print(model.constraints) + +# Get details about a specific variable +print(model.variables['Boiler(Q_th)|flow_rate']) +``` + +### Variable Naming Convention + +Variables follow this naming pattern: + +| Element Type | Pattern | Example | +|--------------|---------|---------| +| Flow rate | `Component(FlowLabel)\|flow_rate` | `Boiler(Q_th)\|flow_rate` | +| Flow size | `Component(FlowLabel)\|size` | `Boiler(Q_th)\|size` | +| On/off status | `Component\|on` | `CHP\|on` | +| Charge state | `Storage\|charge_state` | `Battery\|charge_state` | +| Effect totals | `effect_name\|total` | `costs\|total` | + ## Solver Configuration ### Available Solvers diff --git a/docs/user-guide/results-plotting.md b/docs/user-guide/results-plotting.md new file mode 100644 index 000000000..4f1932e53 --- /dev/null +++ b/docs/user-guide/results-plotting.md @@ -0,0 +1,413 @@ +# Plotting Results + +After solving an optimization, flixOpt provides a powerful plotting API to visualize and analyze your results. The API is designed to be intuitive and chainable, giving you quick access to common plots while still allowing deep customization. + +## The Plot Accessor + +All plotting is accessed through the `statistics.plot` accessor on your FlowSystem: + +```python +# Run optimization +flow_system.optimize(fx.solvers.HighsSolver()) + +# Access plotting via statistics +flow_system.statistics.plot.balance('ElectricityBus') +flow_system.statistics.plot.sankey() +flow_system.statistics.plot.heatmap('Boiler(Q_th)|flow_rate') +``` + +## PlotResult: Data + Figure + +Every plot method returns a [`PlotResult`][flixopt.plot_accessors.PlotResult] object containing both: + +- **`data`**: An xarray Dataset with the prepared data +- **`figure`**: A Plotly Figure object + +This gives you full access to export data, customize the figure, or use the data for your own visualizations: + +```python +result = flow_system.statistics.plot.balance('Bus') + +# Access the xarray data +print(result.data) +result.data.to_dataframe() # Convert to pandas DataFrame +result.data.to_netcdf('balance_data.nc') # Export as netCDF + +# Access and modify the figure +result.figure.update_layout(title='Custom Title') +result.figure.show() +``` + +### Method Chaining + +All `PlotResult` methods return `self`, enabling fluent chaining: + +```python +flow_system.statistics.plot.balance('Bus') \ + .update(title='Custom Title', height=600) \ + .update_traces(opacity=0.8) \ + .to_csv('data.csv') \ + .to_html('plot.html') \ + .show() +``` + +Available methods: + +| Method | Description | +|--------|-------------| +| `.show()` | Display the figure | +| `.update(**kwargs)` | Update figure layout (passes to `fig.update_layout()`) | +| `.update_traces(**kwargs)` | Update traces (passes to `fig.update_traces()`) | +| `.to_html(path)` | Save as interactive HTML | +| `.to_image(path)` | Save as static image (png, svg, pdf) | +| `.to_csv(path)` | Export data to CSV (converts xarray to DataFrame) | +| `.to_netcdf(path)` | Export data to netCDF (native xarray format) | + +## Available Plot Methods + +### Balance Plot + +Plot the energy/material balance at a node (Bus or Component), showing inputs and outputs: + +```python +flow_system.statistics.plot.balance('ElectricityBus') +flow_system.statistics.plot.balance('Boiler', mode='area') +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `node` | str | Label of the Bus or Component | +| `mode` | `'bar'`, `'line'`, `'area'` | Visual style (default: `'bar'`) | +| `unit` | `'flow_rate'`, `'flow_hours'` | Power (kW) or energy (kWh) | +| `include` | str or list | Only include flows containing these substrings | +| `exclude` | str or list | Exclude flows containing these substrings | +| `aggregate` | `'sum'`, `'mean'`, `'max'`, `'min'` | Aggregate over time | +| `select` | dict | xarray-style data selection | + +### Storage Plot + +Visualize storage components with charge state and flow balance: + +```python +flow_system.statistics.plot.storage('Battery') +flow_system.statistics.plot.storage('ThermalStorage', mode='line') +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `component` | str | Storage component label | +| `mode` | `'bar'`, `'line'`, `'area'` | Visual style | + +### Heatmap + +Create heatmaps of time series data, with automatic time reshaping: + +```python +flow_system.statistics.plot.heatmap('Boiler(Q_th)|flow_rate') +flow_system.statistics.plot.heatmap(['CHP|on', 'Boiler|on'], facet_col='variable') +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `variables` | str or list | Variable name(s) to plot | +| `reshape` | tuple | Time reshaping pattern, e.g., `('D', 'h')` for days × hours | +| `colorscale` | str | Plotly colorscale name | + +Common reshape patterns: + +- `('D', 'h')`: Days × Hours (default) +- `('W', 'D')`: Weeks × Days +- `('MS', 'D')`: Months × Days + +### Flows Plot + +Plot flow rates filtered by nodes or components: + +```python +flow_system.statistics.plot.flows(component='Boiler') +flow_system.statistics.plot.flows(start='ElectricityBus') +flow_system.statistics.plot.flows(unit='flow_hours', aggregate='sum') +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `start` | str or list | Filter by source node(s) | +| `end` | str or list | Filter by destination node(s) | +| `component` | str or list | Filter by parent component(s) | +| `unit` | `'flow_rate'`, `'flow_hours'` | Power or energy | +| `aggregate` | str | Time aggregation | + +### Compare Plot + +Compare multiple elements side-by-side: + +```python +flow_system.statistics.plot.compare(['Boiler', 'CHP', 'HeatPump'], variable='flow_rate') +flow_system.statistics.plot.compare(['Battery1', 'Battery2'], variable='charge_state') +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `elements` | list | Element labels to compare | +| `variable` | str | Variable suffix to compare | +| `mode` | `'overlay'`, `'facet'` | Same axes or subplots | + +### Sankey Diagram + +Visualize energy/material flows as a Sankey diagram: + +```python +flow_system.statistics.plot.sankey() +flow_system.statistics.plot.sankey(timestep=100) +flow_system.statistics.plot.sankey(aggregate='mean') +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `timestep` | int or str | Specific timestep, or None for aggregation | +| `aggregate` | `'sum'`, `'mean'` | Aggregation method when timestep is None | + +### Effects Plot + +Plot cost, emissions, or other effect breakdowns. Effects can be grouped by component, individual contributor (flows), or time. + +```python +flow_system.statistics.plot.effects() # Total of all effects by component +flow_system.statistics.plot.effects(effect='costs') # Just costs +flow_system.statistics.plot.effects(by='contributor') # By individual flows/components +flow_system.statistics.plot.effects(aspect='temporal', by='time') # Over time +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `aspect` | `'total'`, `'temporal'`, `'periodic'` | Which aspect to plot (default: `'total'`) | +| `effect` | str or None | Specific effect to plot (e.g., `'costs'`, `'CO2'`). If None, plots all. | +| `by` | `'component'`, `'contributor'`, `'time'` | Grouping dimension (default: `'component'`) | +| `select` | dict | xarray-style data selection | +| `colors` | dict | Color overrides for categories | +| `facet_col` | str | Dimension for column facets (default: `'scenario'`) | +| `facet_row` | str | Dimension for row facets (default: `'period'`) | + +**Grouping options:** + +- **`by='component'`**: Groups effects by parent component (e.g., all flows from a Boiler are summed together) +- **`by='contributor'`**: Shows individual contributors - flows and components that directly contribute to effects +- **`by='time'`**: Shows effects over time (only valid for `aspect='temporal'`) + +!!! note "Contributors vs Components" + Contributors include not just flows, but also components that directly contribute to effects (e.g., via `effects_per_active_hour`). The system automatically detects all contributors from the optimization solution. + +### Variable Plot + +Plot the same variable type across multiple elements for comparison: + +```python +flow_system.statistics.plot.variable('on') # All binary operation states +flow_system.statistics.plot.variable('flow_rate', include='Boiler') +flow_system.statistics.plot.variable('charge_state') # All storage charge states +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `pattern` | str | Variable suffix to match (e.g., `'on'`, `'flow_rate'`) | +| `include` | str or list | Only include elements containing these substrings | +| `exclude` | str or list | Exclude elements containing these substrings | +| `aggregate` | str | Time aggregation method | +| `mode` | `'line'`, `'bar'`, `'area'` | Visual style | + +### Duration Curve + +Plot load duration curves (sorted time series) to understand utilization patterns: + +```python +flow_system.statistics.plot.duration_curve('Boiler(Q_th)') +flow_system.statistics.plot.duration_curve(['CHP(Q_th)', 'HeatPump(Q_th)']) +flow_system.statistics.plot.duration_curve('Demand(in)', normalize=True) +``` + +**Key parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `variables` | str or list | Variable name(s) to plot | +| `normalize` | bool | Normalize x-axis to 0-100% (default: False) | +| `mode` | `'line'`, `'area'` | Visual style | + +## Common Parameters + +Most plot methods share these parameters: + +### Data Selection + +Use xarray-style selection to filter data before plotting: + +```python +# Single value +flow_system.statistics.plot.balance('Bus', select={'scenario': 'base'}) + +# Multiple values +flow_system.statistics.plot.balance('Bus', select={'scenario': ['base', 'high_demand']}) + +# Time slices +flow_system.statistics.plot.balance('Bus', select={'time': slice('2024-01', '2024-06')}) + +# Combined +flow_system.statistics.plot.balance('Bus', select={ + 'scenario': 'base', + 'time': slice('2024-01-01', '2024-01-07') +}) +``` + +### Faceting and Animation + +Control how multi-dimensional data is displayed: + +```python +# Facet by scenario +flow_system.statistics.plot.balance('Bus', facet_col='scenario') + +# Animate by period +flow_system.statistics.plot.balance('Bus', animate_by='period') + +# Both +flow_system.statistics.plot.balance('Bus', facet_col='scenario', animate_by='period') +``` + +!!! note + Facet and animation dimensions are automatically ignored if not present in the data. Defaults are `facet_col='scenario'` and `animate_by='period'` for balance plots. + +### Include/Exclude Filtering + +Filter flows using simple substring matching: + +```python +# Only show flows containing 'Q_th' +flow_system.statistics.plot.balance('Bus', include='Q_th') + +# Exclude flows containing 'Gas' or 'Grid' +flow_system.statistics.plot.balance('Bus', exclude=['Gas', 'Grid']) + +# Combine include and exclude +flow_system.statistics.plot.balance('Bus', include='Boiler', exclude='auxiliary') +``` + +### Colors + +Override colors using a dictionary: + +```python +flow_system.statistics.plot.balance('Bus', colors={ + 'Boiler(Q_th)': '#ff6b6b', + 'CHP(Q_th)': '#4ecdc4', +}) +``` + +### Display Control + +Control whether plots are shown automatically: + +```python +# Don't show (useful in scripts) +result = flow_system.statistics.plot.balance('Bus', show=False) + +# Show later +result.show() +``` + +The default behavior is controlled by `CONFIG.Plotting.default_show`. + +## Complete Examples + +### Analyzing a Bus Balance + +```python +# Quick overview +flow_system.statistics.plot.balance('ElectricityBus') + +# Detailed analysis with exports +result = flow_system.statistics.plot.balance( + 'ElectricityBus', + mode='area', + unit='flow_hours', + select={'time': slice('2024-06-01', '2024-06-07')}, + show=False +) + +# Access xarray data for further analysis +print(result.data) # xarray Dataset +df = result.data.to_dataframe() # Convert to pandas + +# Export data +result.to_netcdf('electricity_balance.nc') # Native xarray format +result.to_csv('electricity_balance.csv') # As CSV + +# Customize and display +result.update( + title='Electricity Balance - First Week of June', + yaxis_title='Energy [kWh]' +).show() +``` + +### Comparing Storage Units + +```python +# Compare charge states +flow_system.statistics.plot.compare( + ['Battery1', 'Battery2', 'ThermalStorage'], + variable='charge_state', + mode='overlay' +).update(title='Storage Comparison') +``` + +### Creating a Report + +```python +# Generate multiple plots for a report +plots = { + 'balance': flow_system.statistics.plot.balance('HeatBus', show=False), + 'storage': flow_system.statistics.plot.storage('ThermalStorage', show=False), + 'sankey': flow_system.statistics.plot.sankey(show=False), + 'costs': flow_system.statistics.plot.effects(effect='costs', show=False), +} + +# Export all +for name, plot in plots.items(): + plot.to_html(f'report_{name}.html') + plot.to_netcdf(f'report_{name}.nc') # xarray native format +``` + +### Working with xarray Data + +The `.data` attribute returns xarray objects, giving you full access to xarray's powerful data manipulation capabilities: + +```python +result = flow_system.statistics.plot.balance('Bus', show=False) + +# Access the xarray Dataset +ds = result.data + +# Use xarray operations +ds.mean(dim='time') # Average over time +ds.sel(time='2024-06') # Select specific time +ds.to_dataframe() # Convert to pandas + +# Export options +ds.to_netcdf('data.nc') # Native xarray format +ds.to_zarr('data.zarr') # Zarr format for large datasets +``` diff --git a/docs/user-guide/results/index.md b/docs/user-guide/results/index.md index c0a9464ed..5f103dd39 100644 --- a/docs/user-guide/results/index.md +++ b/docs/user-guide/results/index.md @@ -1,18 +1,12 @@ # Analyzing Results -!!! note "Under Development" - This section is being expanded with detailed tutorials. +After running an optimization, flixOpt provides powerful tools to access, analyze, and visualize your results. -Learn how to work with optimization results: +## Accessing Solution Data -- Accessing solution data -- Plotting flows and states -- Exporting to various formats -- Comparing scenarios and periods +### Raw Solution -## Accessing Results - -After running an optimization, access results directly from the FlowSystem: +The `solution` property contains all optimization variables as an xarray Dataset: ```python # Run optimization @@ -20,15 +14,199 @@ flow_system.optimize(fx.solvers.HighsSolver()) # Access the full solution dataset solution = flow_system.solution +print(solution) + +# Access specific variables print(solution['Boiler(Q_th)|flow_rate']) +print(solution['Battery|charge_state']) +``` -# Access component-specific solutions +### Element-Specific Solutions + +Access solution data for individual elements: + +```python +# Component solutions boiler = flow_system.components['Boiler'] -print(boiler.solution) +print(boiler.solution) # All variables for this component -# Access flow solutions +# Flow solutions flow = flow_system.flows['Boiler(Q_th)'] print(flow.solution) + +# Bus solutions (if imbalance is allowed) +bus = flow_system.buses['Heat'] +print(bus.solution) +``` + +## Statistics Accessor + +The `statistics` accessor provides pre-computed aggregations for common analysis tasks: + +```python +# Access via the statistics property +stats = flow_system.statistics +``` + +### Available Data Properties + +| Property | Description | +|----------|-------------| +| `flow_rates` | All flow rate variables as xarray Dataset | +| `flow_hours` | Flow hours (flow_rate × hours_per_timestep) | +| `sizes` | All size variables (fixed and optimized) | +| `charge_states` | Storage charge state variables | +| `temporal_effects` | Temporal effects per contributor per timestep | +| `periodic_effects` | Periodic (investment) effects per contributor | +| `total_effects` | Total effects (temporal + periodic) per contributor | +| `effect_share_factors` | Conversion factors between effects | + +### Examples + +```python +# Get all flow rates +flow_rates = flow_system.statistics.flow_rates +print(flow_rates) + +# Get flow hours (energy) +flow_hours = flow_system.statistics.flow_hours +total_heat = flow_hours['Boiler(Q_th)'].sum() + +# Get sizes (capacities) +sizes = flow_system.statistics.sizes +print(f"Boiler size: {sizes['Boiler(Q_th)'].values}") + +# Get storage charge states +charge_states = flow_system.statistics.charge_states + +# Get effect breakdown by contributor +temporal = flow_system.statistics.temporal_effects +print(temporal['costs']) # Costs per contributor per timestep + +# Group by component +temporal['costs'].groupby('component').sum() +``` + +### Effect Analysis + +Analyze how effects (costs, emissions, etc.) are distributed: + +```python +# Access effects via the new properties +stats = flow_system.statistics + +# Temporal effects per timestep (costs, CO2, etc. per contributor) +stats.temporal_effects['costs'] # DataArray with dims [time, contributor] +stats.temporal_effects['costs'].sum('contributor') # Total per timestep + +# Periodic effects (investment costs, etc.) +stats.periodic_effects['costs'] # DataArray with dim [contributor] + +# Total effects (temporal + periodic combined) +stats.total_effects['costs'].sum('contributor') # Grand total + +# Group by component or component type +stats.total_effects['costs'].groupby('component').sum() +stats.total_effects['costs'].groupby('component_type').sum() +``` + +!!! tip "Contributors" + Contributors are automatically detected from the optimization solution and include: + + - **Flows**: Individual flows with `effects_per_flow_hour` + - **Components**: Components with `effects_per_active_hour` or similar direct effects + + Each contributor has associated metadata (`component` and `component_type` coordinates) for flexible groupby operations. + +## Plotting Results + +The `statistics.plot` accessor provides visualization methods: + +```python +# Balance plots +flow_system.statistics.plot.balance('HeatBus') +flow_system.statistics.plot.balance('Boiler') + +# Heatmaps +flow_system.statistics.plot.heatmap('Boiler(Q_th)|flow_rate') + +# Duration curves +flow_system.statistics.plot.duration_curve('Boiler(Q_th)') + +# Sankey diagrams +flow_system.statistics.plot.sankey() + +# Effects breakdown +flow_system.statistics.plot.effects() # Total costs by component +flow_system.statistics.plot.effects(effect='costs', by='contributor') # By individual flows +flow_system.statistics.plot.effects(aspect='temporal', by='time') # Over time +``` + +See [Plotting Results](../results-plotting.md) for comprehensive plotting documentation. + +## Network Visualization + +The `topology` accessor lets you visualize and inspect your system structure: + +### Static HTML Visualization + +Generate an interactive network diagram using PyVis: + +```python +# Default: saves to 'flow_system.html' and opens in browser +flow_system.topology.plot() + +# Custom options +flow_system.topology.plot( + path='output/my_network.html', + controls=['nodes', 'layout', 'physics'], + show=True +) +``` + +**Parameters:** + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `path` | str, Path, or False | `'flow_system.html'` | Where to save the HTML file | +| `controls` | bool or list | `True` | UI controls to show | +| `show` | bool | `None` | Whether to open in browser | + +### Interactive App + +Launch a Dash/Cytoscape application for exploring the network: + +```python +# Start the visualization server +flow_system.topology.start_app() + +# ... interact with the visualization in your browser ... + +# Stop when done +flow_system.topology.stop_app() +``` + +!!! note "Optional Dependencies" + The interactive app requires additional packages: + ```bash + pip install flixopt[network_viz] + ``` + +### Network Structure Info + +Get node and edge information programmatically: + +```python +nodes, edges = flow_system.topology.infos() + +# nodes: dict mapping labels to properties +# {'Boiler': {'label': 'Boiler', 'class': 'Component', 'infos': '...'}, ...} + +# edges: dict mapping flow labels to properties +# {'Boiler(Q_th)': {'label': 'Q_th', 'start': 'Boiler', 'end': 'Heat', ...}, ...} + +print(f"Components and buses: {list(nodes.keys())}") +print(f"Flows: {list(edges.keys())}") ``` ## Saving and Loading @@ -36,16 +214,70 @@ print(flow.solution) Save the FlowSystem (including solution) for later analysis: ```python -# Save to NetCDF +# Save to NetCDF (recommended for large datasets) flow_system.to_netcdf('results/my_system.nc') # Load later loaded_fs = fx.FlowSystem.from_netcdf('results/my_system.nc') print(loaded_fs.solution) + +# Save to JSON (human-readable, smaller datasets) +flow_system.to_json('results/my_system.json') +loaded_fs = fx.FlowSystem.from_json('results/my_system.json') ``` -## Getting Started +## Working with xarray + +All result data uses [xarray](https://docs.xarray.dev/), giving you powerful data manipulation: + +```python +solution = flow_system.solution + +# Select specific times +summer = solution.sel(time=slice('2024-06-01', '2024-08-31')) + +# Aggregate over dimensions +daily_avg = solution.resample(time='D').mean() + +# Convert to pandas +df = solution['Boiler(Q_th)|flow_rate'].to_dataframe() + +# Export to various formats +solution.to_netcdf('full_solution.nc') +df.to_csv('boiler_flow.csv') +``` + +## Complete Example + +```python +import flixopt as fx +import pandas as pd + +# Build and optimize +timesteps = pd.date_range('2024-01-01', periods=168, freq='h') +flow_system = fx.FlowSystem(timesteps) +# ... add elements ... +flow_system.optimize(fx.solvers.HighsSolver()) + +# Visualize network structure +flow_system.topology.plot(path='system_network.html') + +# Analyze results +print("=== Flow Statistics ===") +print(flow_system.statistics.flow_hours) + +print("\n=== Effect Breakdown ===") +print(flow_system.statistics.total_effects) + +# Create plots +flow_system.statistics.plot.balance('HeatBus') +flow_system.statistics.plot.heatmap('Boiler(Q_th)|flow_rate') + +# Save for later +flow_system.to_netcdf('results/optimized_system.nc') +``` -For now, see: +## Next Steps -- **[Examples](../../examples/index.md)** - Result analysis patterns in working code +- [Plotting Results](../results-plotting.md) - Detailed plotting documentation +- [Examples](../../examples/index.md) - Working code examples diff --git a/examples/00_Minmal/minimal_example.py b/examples/00_Minmal/minimal_example.py index 7a94b2222..207faa9a9 100644 --- a/examples/00_Minmal/minimal_example.py +++ b/examples/00_Minmal/minimal_example.py @@ -32,5 +32,5 @@ ), ) - optimization = fx.Optimization('Simulation1', flow_system).solve(fx.solvers.HighsSolver(0.01, 60)) - optimization.results['Heat'].plot_node_balance() + flow_system.optimize(fx.solvers.HighsSolver(0.01, 60)) + flow_system.statistics.plot.balance('Heat') diff --git a/examples/01_Simple/simple_example.py b/examples/01_Simple/simple_example.py index c2d6d88e1..13781c973 100644 --- a/examples/01_Simple/simple_example.py +++ b/examples/01_Simple/simple_example.py @@ -100,28 +100,22 @@ flow_system.add_elements(costs, CO2, boiler, storage, chp, heat_sink, gas_source, power_sink) # Visualize the flow system for validation purposes - flow_system.plot_network() + flow_system.topology.plot() - # --- Define and Run Calculation --- - # Create a calculation object to model the Flow System - optimization = fx.Optimization(name='Sim1', flow_system=flow_system) - optimization.do_modeling() # Translate the model to a solvable form, creating equations and Variables - - # --- Solve the Calculation and Save Results --- - optimization.solve(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) + # --- Define and Solve Optimization --- + flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) # --- Analyze Results --- - # Colors are automatically assigned using default colormap - # Optional: Configure custom colors with - optimization.results.setup_colors() - optimization.results['Fernwärme'].plot_node_balance_pie() - optimization.results['Fernwärme'].plot_node_balance() - optimization.results['Storage'].plot_charge_state() - optimization.results.plot_heatmap('CHP(Q_th)|flow_rate') - - # Convert the results for the storage component to a dataframe and display - df = optimization.results['Storage'].node_balance_with_charge_state() - print(df) - - # Save results to file for later usage - optimization.results.to_file() + # Plotting through statistics accessor - returns PlotResult with .data and .figure + flow_system.statistics.plot.balance('Fernwärme') + flow_system.statistics.plot.balance('Storage') + flow_system.statistics.plot.heatmap('CHP(Q_th)|flow_rate') + flow_system.statistics.plot.heatmap('Storage|charge_state') + + # Access data as xarray Datasets + print(flow_system.statistics.flow_rates) + print(flow_system.statistics.charge_states) + + # Duration curve and effects analysis + flow_system.statistics.plot.duration_curve('Boiler(Q_th)|flow_rate') + print(flow_system.statistics.temporal_effects) diff --git a/examples/02_Complex/complex_example.py b/examples/02_Complex/complex_example.py index 3806fde40..f1b524a2b 100644 --- a/examples/02_Complex/complex_example.py +++ b/examples/02_Complex/complex_example.py @@ -15,7 +15,6 @@ check_penalty = False imbalance_penalty = 1e5 use_chp_with_piecewise_conversion = True - time_indices = None # Define specific time steps for custom optimizations, or use the entire series # --- Define Demand and Price Profiles --- # Input data for electricity and heat demands, as well as electricity price @@ -189,22 +188,19 @@ print(flow_system) # Get a string representation of the FlowSystem try: - flow_system.start_network_app() # Start the network app + flow_system.topology.start_app() # Start the network app except ImportError as e: print(f'Network app requires extra dependencies: {e}') # --- Solve FlowSystem --- - optimization = fx.Optimization('complex example', flow_system, time_indices) - optimization.do_modeling() - - optimization.solve(fx.solvers.HighsSolver(0.01, 60)) + flow_system.optimize(fx.solvers.HighsSolver(0.01, 60)) # --- Results --- - # You can analyze results directly or save them to file and reload them later. - optimization.results.to_file() - - # But let's plot some results anyway - optimization.results.plot_heatmap('BHKW2(Q_th)|flow_rate') - optimization.results['BHKW2'].plot_node_balance() - optimization.results['Speicher'].plot_charge_state() - optimization.results['Fernwärme'].plot_node_balance_pie() + # Save the flow system with solution to file for later analysis + flow_system.to_netcdf('results/complex_example.nc') + + # Plot results using the statistics accessor + flow_system.statistics.plot.heatmap('BHKW2(Q_th)|flow_rate') + flow_system.statistics.plot.balance('BHKW2') + flow_system.statistics.plot.heatmap('Speicher|charge_state') + flow_system.statistics.plot.balance('Fernwärme') diff --git a/examples/02_Complex/complex_example_results.py b/examples/02_Complex/complex_example_results.py index c4e9bb4f2..6978caff1 100644 --- a/examples/02_Complex/complex_example_results.py +++ b/examples/02_Complex/complex_example_results.py @@ -1,5 +1,5 @@ """ -This script shows how load results of a prior calcualtion and how to analyze them. +This script shows how to load results of a prior optimization and how to analyze them. """ import flixopt as fx @@ -7,31 +7,32 @@ if __name__ == '__main__': fx.CONFIG.exploring() - # --- Load Results --- + # --- Load FlowSystem with Solution --- try: - results = fx.results.Results.from_file('results', 'complex example') + flow_system = fx.FlowSystem.from_netcdf('results/complex_example.nc') except FileNotFoundError as e: raise FileNotFoundError( - f"Results file not found in the specified directory ('results'). " + f"Results file not found ('results/complex_example.nc'). " f"Please ensure that the file is generated by running 'complex_example.py'. " f'Original error: {e}' ) from e # --- Basic overview --- - results.plot_network() - results['Fernwärme'].plot_node_balance() + flow_system.topology.plot() + flow_system.statistics.plot.balance('Fernwärme') # --- Detailed Plots --- - # In depth plot for individual flow rates ('__' is used as the delimiter between Component and Flow - results.plot_heatmap('Wärmelast(Q_th_Last)|flow_rate') - for bus in results.buses.values(): - bus.plot_node_balance_pie(show=False, save=f'results/{bus.label}--pie.html') - bus.plot_node_balance(show=False, save=f'results/{bus.label}--balance.html') + # In-depth plot for individual flow rates + flow_system.statistics.plot.heatmap('Wärmelast(Q_th_Last)|flow_rate') + + # Plot balances for all buses + for bus in flow_system.buses.values(): + flow_system.statistics.plot.balance(bus.label).to_html(f'results/{bus.label}--balance.html') # --- Plotting internal variables manually --- - results.plot_heatmap('BHKW2(Q_th)|status') - results.plot_heatmap('Kessel(Q_th)|status') + flow_system.statistics.plot.heatmap('BHKW2(Q_th)|status') + flow_system.statistics.plot.heatmap('Kessel(Q_th)|status') - # Dataframes from results: - fw_bus = results['Fernwärme'].node_balance().to_dataframe() - all = results.solution.to_dataframe() + # Access data as DataFrames: + print(flow_system.statistics.flow_rates.to_dataframe()) + print(flow_system.solution.to_dataframe()) diff --git a/examples/03_Optimization_modes/example_optimization_modes.py b/examples/03_Optimization_modes/example_optimization_modes.py index 8f26d84b4..3dcd8bd1c 100644 --- a/examples/03_Optimization_modes/example_optimization_modes.py +++ b/examples/03_Optimization_modes/example_optimization_modes.py @@ -16,9 +16,11 @@ def get_solutions(optimizations: list, variable: str) -> xr.Dataset: dataarrays = [] for optimization in optimizations: if optimization.name == 'Segmented': + # SegmentedOptimization requires special handling to remove overlaps dataarrays.append(optimization.results.solution_without_overlap(variable).rename(optimization.name)) else: - dataarrays.append(optimization.results.solution[variable].rename(optimization.name)) + # For Full and Clustered, access solution from the flow_system + dataarrays.append(optimization.flow_system.solution[variable].rename(optimization.name)) return xr.merge(dataarrays, join='outer') @@ -176,7 +178,7 @@ def get_solutions(optimizations: list, variable: str) -> xr.Dataset: a_kwk, a_speicher, ) - flow_system.plot_network() + flow_system.topology.plot() # Optimizations optimizations: list[fx.Optimization | fx.ClusteredOptimization | fx.SegmentedOptimization] = [] diff --git a/examples/04_Scenarios/scenario_example.py b/examples/04_Scenarios/scenario_example.py index 672df5c7f..e3c6f5fd3 100644 --- a/examples/04_Scenarios/scenario_example.py +++ b/examples/04_Scenarios/scenario_example.py @@ -120,7 +120,7 @@ thermal_flow=fx.Flow( label='Q_th', bus='Fernwärme', - size=50, + size=100, relative_minimum=0.1, relative_maximum=1, status_parameters=fx.StatusParameters(), @@ -135,7 +135,7 @@ thermal_efficiency=0.48, # Realistic thermal efficiency (48%) electrical_efficiency=0.40, # Realistic electrical efficiency (40%) electrical_flow=fx.Flow( - 'P_el', bus='Strom', size=60, relative_minimum=5 / 60, status_parameters=fx.StatusParameters() + 'P_el', bus='Strom', size=80, relative_minimum=5 / 80, status_parameters=fx.StatusParameters() ), thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), fuel_flow=fx.Flow('Q_fu', bus='Gas'), @@ -192,35 +192,18 @@ flow_system.add_elements(costs, CO2, boiler, storage, chp, heat_sink, gas_source, power_sink) # Visualize the flow system for validation purposes - flow_system.plot_network() - - # --- Define and Run Calculation --- - # Create a calculation object to model the Flow System - optimization = fx.Optimization(name='Sim1', flow_system=flow_system) - optimization.do_modeling() # Translate the model to a solvable form, creating equations and Variables - - # --- Solve the Calculation and Save Results --- - optimization.solve(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) - - optimization.results.setup_colors( - { - 'CHP': 'red', - 'Greys': ['Gastarif', 'Einspeisung', 'Heat Demand'], - 'Storage': 'blue', - 'Boiler': 'orange', - } - ) + flow_system.topology.plot() - optimization.results.plot_heatmap('CHP(Q_th)|flow_rate') + # --- Define and Solve Optimization --- + flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) # --- Analyze Results --- - optimization.results['Fernwärme'].plot_node_balance(mode='stacked_bar') - optimization.results.plot_heatmap('CHP(Q_th)|flow_rate') - optimization.results['Storage'].plot_charge_state() - optimization.results['Fernwärme'].plot_node_balance_pie(select={'period': 2020, 'scenario': 'Base Case'}) - - # Convert the results for the storage component to a dataframe and display - df = optimization.results['Storage'].node_balance_with_charge_state() - - # Save results to file for later usage - optimization.results.to_file() + # Plotting through statistics accessor - returns PlotResult with .data and .figure + flow_system.statistics.plot.heatmap('CHP(Q_th)|flow_rate') + flow_system.statistics.plot.balance('Fernwärme') + flow_system.statistics.plot.balance('Storage') + flow_system.statistics.plot.heatmap('Storage|charge_state') + + # Access data as xarray Datasets + print(flow_system.statistics.flow_rates) + print(flow_system.statistics.charge_states) diff --git a/examples/05_Two-stage-optimization/two_stage_optimization.py b/examples/05_Two-stage-optimization/two_stage_optimization.py index 9e102c44f..8dea1713b 100644 --- a/examples/05_Two-stage-optimization/two_stage_optimization.py +++ b/examples/05_Two-stage-optimization/two_stage_optimization.py @@ -53,7 +53,7 @@ label='Q_fu', bus='Gas', size=fx.InvestParameters( - effects_of_investment_per_size={'costs': 1_000}, minimum_size=10, maximum_size=500 + effects_of_investment_per_size={'costs': 1_000}, minimum_size=10, maximum_size=600 ), relative_minimum=0.2, previous_flow_rate=20, @@ -87,8 +87,8 @@ eta_discharge=1, relative_loss_per_hour=0.001, prevent_simultaneous_charge_and_discharge=True, - charging=fx.Flow('Q_th_load', size=137, bus='Fernwärme'), - discharging=fx.Flow('Q_th_unload', size=158, bus='Fernwärme'), + charging=fx.Flow('Q_th_load', size=200, bus='Fernwärme'), + discharging=fx.Flow('Q_th_unload', size=200, bus='Fernwärme'), ), fx.Sink( 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand)] @@ -122,34 +122,39 @@ ) # Separate optimization of flow sizes and dispatch + # Stage 1: Optimize sizes using downsampled (2h) data start = timeit.default_timer() calculation_sizing = fx.Optimization('Sizing', flow_system.resample('2h')) calculation_sizing.do_modeling() calculation_sizing.solve(fx.solvers.HighsSolver(0.1 / 100, 60)) timer_sizing = timeit.default_timer() - start + # Stage 2: Optimize dispatch with fixed sizes from Stage 1 start = timeit.default_timer() calculation_dispatch = fx.Optimization('Dispatch', flow_system) calculation_dispatch.do_modeling() - calculation_dispatch.fix_sizes(calculation_sizing.results.solution) + calculation_dispatch.fix_sizes(calculation_sizing.flow_system.solution) calculation_dispatch.solve(fx.solvers.HighsSolver(0.1 / 100, 60)) timer_dispatch = timeit.default_timer() - start - if (calculation_dispatch.results.sizes().round(5) == calculation_sizing.results.sizes().round(5)).all().item(): + # Verify sizes were correctly fixed + dispatch_sizes = calculation_dispatch.flow_system.statistics.sizes + sizing_sizes = calculation_sizing.flow_system.statistics.sizes + if (dispatch_sizes.round(5).to_dataarray() == sizing_sizes.round(5).to_dataarray()).all().item(): logger.info('Sizes were correctly equalized') else: raise RuntimeError('Sizes were not correctly equalized') - # Optimization of both flow sizes and dispatch together + # Combined optimization: optimize both sizes and dispatch together start = timeit.default_timer() calculation_combined = fx.Optimization('Combined', flow_system) calculation_combined.do_modeling() calculation_combined.solve(fx.solvers.HighsSolver(0.1 / 100, 600)) timer_combined = timeit.default_timer() - start - # Comparison of results + # Comparison of results - access solutions from flow_system comparison = xr.concat( - [calculation_combined.results.solution, calculation_dispatch.results.solution], dim='mode' + [calculation_combined.flow_system.solution, calculation_dispatch.flow_system.solution], dim='mode' ).assign_coords(mode=['Combined', 'Two-stage']) comparison['Duration [s]'] = xr.DataArray([timer_combined, timer_sizing + timer_dispatch], dims='mode') diff --git a/flixopt/clustering.py b/flixopt/clustering.py index 1c6f7511b..1595ace5d 100644 --- a/flixopt/clustering.py +++ b/flixopt/clustering.py @@ -7,7 +7,6 @@ import copy import logging -import pathlib import timeit from typing import TYPE_CHECKING @@ -29,6 +28,8 @@ ) if TYPE_CHECKING: + import pathlib + import linopy import pandas as pd import plotly.graph_objects as go @@ -145,7 +146,7 @@ def use_extreme_periods(self): return self.time_series_for_high_peaks or self.time_series_for_low_peaks def plot(self, colormap: str | None = None, show: bool = True, save: pathlib.Path | None = None) -> go.Figure: - from . import plotting + import plotly.express as px df_org = self.original_data.copy().rename( columns={col: f'Original - {col}' for col in self.original_data.columns} @@ -156,10 +157,17 @@ def plot(self, colormap: str | None = None, show: bool = True, save: pathlib.Pat colors = list( process_colors(colormap or CONFIG.Plotting.default_qualitative_colorscale, list(df_org.columns)).values() ) - fig = plotting.with_plotly(df_org.to_xarray(), 'line', colors=colors, xlabel='Time in h') + + # Create line plot for original data (dashed) + index_name = df_org.index.name or 'index' + df_org_long = df_org.reset_index().melt(id_vars=index_name, var_name='variable', value_name='value') + fig = px.line(df_org_long, x=index_name, y='value', color='variable', color_discrete_sequence=colors) for trace in fig.data: - trace.update(dict(line=dict(dash='dash'))) - fig2 = plotting.with_plotly(df_agg.to_xarray(), 'line', colors=colors, xlabel='Time in h') + trace.update(line=dict(dash='dash')) + + # Add aggregated data (solid lines) + df_agg_long = df_agg.reset_index().melt(id_vars=index_name, var_name='variable', value_name='value') + fig2 = px.line(df_agg_long, x=index_name, y='value', color='variable', color_discrete_sequence=colors) for trace in fig2.data: fig.add_trace(trace) @@ -169,14 +177,10 @@ def plot(self, colormap: str | None = None, show: bool = True, save: pathlib.Pat yaxis_title='Value', ) - plotting.export_figure( - figure_like=fig, - default_path=pathlib.Path('aggregated data.html'), - default_filetype='.html', - user_path=save, - show=show, - save=save is not None, - ) + if save is not None: + fig.write_html(str(save)) + if show: + fig.show() return fig diff --git a/flixopt/color_processing.py b/flixopt/color_processing.py index 2959acc82..f6e9a3b9f 100644 --- a/flixopt/color_processing.py +++ b/flixopt/color_processing.py @@ -15,6 +15,57 @@ logger = logging.getLogger('flixopt') +# Type alias for flexible color input +ColorType = str | list[str] | dict[str, str] +"""Flexible color specification type supporting multiple input formats for visualization. + +Color specifications can take several forms to accommodate different use cases: + +**Named colorscales** (str): + - Standard colorscales: 'turbo', 'plasma', 'cividis', 'tab10', 'Set1' + - Energy-focused: 'portland' (custom flixopt colorscale for energy systems) + - Backend-specific maps available in Plotly and Matplotlib + +**Color Lists** (list[str]): + - Explicit color sequences: ['red', 'blue', 'green', 'orange'] + - HEX codes: ['#FF0000', '#0000FF', '#00FF00', '#FFA500'] + - Mixed formats: ['red', '#0000FF', 'green', 'orange'] + +**Label-to-Color Mapping** (dict[str, str]): + - Explicit associations: {'Wind': 'skyblue', 'Solar': 'gold', 'Gas': 'brown'} + - Ensures consistent colors across different plots and datasets + - Ideal for energy system components with semantic meaning + +Examples: + ```python + # Named colorscale + colors = 'turbo' # Automatic color generation + + # Explicit color list + colors = ['red', 'blue', 'green', '#FFD700'] + + # Component-specific mapping + colors = { + 'Wind_Turbine': 'skyblue', + 'Solar_Panel': 'gold', + 'Natural_Gas': 'brown', + 'Battery': 'green', + 'Electric_Load': 'darkred' + } + ``` + +Color Format Support: + - **Named Colors**: 'red', 'blue', 'forestgreen', 'darkorange' + - **HEX Codes**: '#FF0000', '#0000FF', '#228B22', '#FF8C00' + - **RGB Tuples**: (255, 0, 0), (0, 0, 255) [Matplotlib only] + - **RGBA**: 'rgba(255,0,0,0.8)' [Plotly only] + +References: + - HTML Color Names: https://htmlcolorcodes.com/color-names/ + - Matplotlib colorscales: https://matplotlib.org/stable/tutorials/colors/colorscales.html + - Plotly Built-in Colorscales: https://plotly.com/python/builtin-colorscales/ +""" + def _rgb_string_to_hex(color: str) -> str: """Convert Plotly RGB/RGBA string format to hex. diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 9906fd27a..5fda024f7 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -5,6 +5,7 @@ from __future__ import annotations import logging +import pathlib import warnings from collections import defaultdict from itertools import chain @@ -15,7 +16,7 @@ import xarray as xr from . import io as fx_io -from .config import CONFIG +from .config import CONFIG, DEPRECATION_REMOVAL_VERSION from .core import ( ConversionError, DataConverter, @@ -25,11 +26,12 @@ from .effects import Effect, EffectCollection from .elements import Bus, Component, Flow from .optimize_accessor import OptimizeAccessor +from .statistics_accessor import StatisticsAccessor from .structure import CompositeContainerMixin, Element, ElementContainer, FlowSystemModel, Interface +from .topology_accessor import TopologyAccessor from .transform_accessor import TransformAccessor if TYPE_CHECKING: - import pathlib from collections.abc import Collection import pyvis @@ -166,6 +168,7 @@ def __init__( scenario_weights: Numeric_S | None = None, scenario_independent_sizes: bool | list[str] = True, scenario_independent_flow_rates: bool | list[str] = False, + name: str | None = None, ): self.timesteps = self._validate_timesteps(timesteps) @@ -206,15 +209,21 @@ def __init__( self._flows_cache: ElementContainer[Flow] | None = None # Solution dataset - populated after optimization or loaded from file - self.solution: xr.Dataset | None = None + self._solution: xr.Dataset | None = None # Clustering info - populated by transform.cluster() self._clustering_info: dict | None = None + # Statistics accessor cache - lazily initialized, invalidated on new solution + self._statistics: StatisticsAccessor | None = None + # Use properties to validate and store scenario dimension settings self.scenario_independent_sizes = scenario_independent_sizes self.scenario_independent_flow_rates = scenario_independent_flow_rates + # Optional name for identification (derived from filename on load) + self.name = name + @staticmethod def _validate_timesteps(timesteps: pd.DatetimeIndex) -> pd.DatetimeIndex: """Validate timesteps format and rename if needed.""" @@ -654,22 +663,53 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: return flow_system - def to_netcdf(self, path: str | pathlib.Path, compression: int = 0): + def to_netcdf(self, path: str | pathlib.Path, compression: int = 0, overwrite: bool = True): """ Save the FlowSystem to a NetCDF file. Ensures FlowSystem is connected before saving. + The FlowSystem's name is automatically set from the filename + (without extension) when saving. + Args: - path: The path to the netCDF file. - compression: The compression level to use when saving the file. + path: The path to the netCDF file. Parent directories are created if they don't exist. + compression: The compression level to use when saving the file (0-9). + overwrite: If True (default), overwrite existing file. If False, raise error if file exists. + + Raises: + FileExistsError: If overwrite=False and file already exists. """ if not self.connected_and_transformed: logger.warning('FlowSystem is not connected. Calling connect_and_transform() now.') self.connect_and_transform() - super().to_netcdf(path, compression) + path = pathlib.Path(path) + # Set name from filename (without extension) + self.name = path.stem + + super().to_netcdf(path, compression, overwrite) logger.info(f'Saved FlowSystem to {path}') + @classmethod + def from_netcdf(cls, path: str | pathlib.Path) -> FlowSystem: + """ + Load a FlowSystem from a NetCDF file. + + The FlowSystem's name is automatically derived from the filename + (without extension), overriding any name that may have been stored. + + Args: + path: Path to the NetCDF file + + Returns: + FlowSystem instance with name set from filename + """ + path = pathlib.Path(path) + flow_system = super().from_netcdf(path) + # Derive name from filename (without extension) + flow_system.name = path.stem + return flow_system + def get_structure(self, clean: bool = False, stats: bool = False) -> dict: """ Get FlowSystem structure. @@ -913,7 +953,7 @@ def solve(self, solver: _Solver) -> FlowSystem: **solver.options, ) - if self.model.termination_condition == 'infeasible': + if 'infeasible' in self.model.termination_condition: if CONFIG.Solving.compute_infeasibilities: import io from contextlib import redirect_stdout @@ -935,6 +975,17 @@ def solve(self, solver: _Solver) -> FlowSystem: return self + @property + def solution(self) -> xr.Dataset | None: + """Get the solution dataset.""" + return self._solution + + @solution.setter + def solution(self, value: xr.Dataset | None) -> None: + """Set the solution dataset and invalidate statistics cache.""" + self._solution = value + self._statistics = None # Invalidate cached statistics + @property def optimize(self) -> OptimizeAccessor: """ @@ -986,6 +1037,62 @@ def transform(self) -> TransformAccessor: """ return TransformAccessor(self) + @property + def statistics(self) -> StatisticsAccessor: + """ + Access statistics and plotting methods for optimization results. + + This property returns a StatisticsAccessor that provides methods to analyze + and visualize optimization results stored in this FlowSystem's solution. + + Note: + The FlowSystem must have a solution (from optimize() or solve()) before + most statistics methods can be used. + + Returns: + A cached StatisticsAccessor instance. + + Examples: + After optimization: + + >>> flow_system.optimize(solver) + >>> flow_system.statistics.plot.balance('ElectricityBus') + >>> flow_system.statistics.plot.heatmap('Boiler|on') + >>> ds = flow_system.statistics.flow_rates # Get data for analysis + """ + if self._statistics is None: + self._statistics = StatisticsAccessor(self) + return self._statistics + + @property + def topology(self) -> TopologyAccessor: + """ + Access network topology inspection and visualization methods. + + This property returns a TopologyAccessor that provides methods to inspect + the network structure and visualize it. + + Returns: + A TopologyAccessor instance. + + Examples: + Visualize the network: + + >>> flow_system.topology.plot() + >>> flow_system.topology.plot(path='my_network.html', show=True) + + Interactive visualization: + + >>> flow_system.topology.start_app() + >>> # ... interact with the visualization ... + >>> flow_system.topology.stop_app() + + Get network structure info: + + >>> nodes, edges = flow_system.topology.infos() + """ + return TopologyAccessor(self) + def plot_network( self, path: bool | str | pathlib.Path = 'flow_system.html', @@ -996,114 +1103,59 @@ def plot_network( show: bool | None = None, ) -> pyvis.network.Network | None: """ - Visualizes the network structure of a FlowSystem using PyVis, saving it as an interactive HTML file. - - Args: - path: Path to save the HTML visualization. - - `False`: Visualization is created but not saved. - - `str` or `Path`: Specifies file path (default: 'flow_system.html'). - controls: UI controls to add to the visualization. - - `True`: Enables all available controls. - - `List`: Specify controls, e.g., ['nodes', 'layout']. - - Options: 'nodes', 'edges', 'layout', 'interaction', 'manipulation', 'physics', 'selection', 'renderer'. - show: Whether to open the visualization in the web browser. - - Returns: - - 'pyvis.network.Network' | None: The `Network` instance representing the visualization, or `None` if `pyvis` is not installed. - - Examples: - >>> flow_system.plot_network() - >>> flow_system.plot_network(show=False) - >>> flow_system.plot_network(path='output/custom_network.html', controls=['nodes', 'layout']) + Deprecated: Use `flow_system.topology.plot()` instead. - Notes: - - This function requires `pyvis`. If not installed, the function prints a warning and returns `None`. - - Nodes are styled based on type (e.g., circles for buses, boxes for components) and annotated with node information. + Visualizes the network structure of a FlowSystem using PyVis. """ - from . import plotting - - node_infos, edge_infos = self.network_infos() - return plotting.plot_network( - node_infos, edge_infos, path, controls, show if show is not None else CONFIG.Plotting.default_show + warnings.warn( + f'plot_network() is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.topology.plot() instead.', + DeprecationWarning, + stacklevel=2, ) + return self.topology.plot(path=path, controls=controls, show=show) - def start_network_app(self): - """Visualizes the network structure of a FlowSystem using Dash, Cytoscape, and networkx. - Requires optional dependencies: dash, dash-cytoscape, dash-daq, networkx, flask, werkzeug. + def start_network_app(self) -> None: """ - from .network_app import DASH_CYTOSCAPE_AVAILABLE, VISUALIZATION_ERROR, flow_graph, shownetwork + Deprecated: Use `flow_system.topology.start_app()` instead. + Visualizes the network structure using Dash and Cytoscape. + """ warnings.warn( - 'The network visualization is still experimental and might change in the future.', + f'start_network_app() is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.topology.start_app() instead.', + DeprecationWarning, stacklevel=2, - category=UserWarning, ) + self.topology.start_app() - if not DASH_CYTOSCAPE_AVAILABLE: - raise ImportError( - f'Network visualization requires optional dependencies. ' - f'Install with: `pip install flixopt[network_viz]`, `pip install flixopt[full]` ' - f'or: `pip install dash dash-cytoscape dash-daq networkx werkzeug`. ' - f'Original error: {VISUALIZATION_ERROR}' - ) - - if not self._connected_and_transformed: - self._connect_network() - - if self._network_app is not None: - logger.warning('The network app is already running. Restarting it.') - self.stop_network_app() - - self._network_app = shownetwork(flow_graph(self)) - - def stop_network_app(self): - """Stop the network visualization server.""" - from .network_app import DASH_CYTOSCAPE_AVAILABLE, VISUALIZATION_ERROR - - if not DASH_CYTOSCAPE_AVAILABLE: - raise ImportError( - f'Network visualization requires optional dependencies. ' - f'Install with: `pip install flixopt[network_viz]`, `pip install flixopt[full]` ' - f'or: `pip install dash dash-cytoscape dash-daq networkx werkzeug`. ' - f'Original error: {VISUALIZATION_ERROR}' - ) - - if self._network_app is None: - logger.warning("No network app is currently running. Can't stop it") - return + def stop_network_app(self) -> None: + """ + Deprecated: Use `flow_system.topology.stop_app()` instead. - try: - logger.info('Stopping network visualization server...') - self._network_app.server_instance.shutdown() - logger.info('Network visualization stopped.') - except Exception as e: - logger.error(f'Failed to stop the network visualization app: {e}') - finally: - self._network_app = None + Stop the network visualization server. + """ + warnings.warn( + f'stop_network_app() is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.topology.stop_app() instead.', + DeprecationWarning, + stacklevel=2, + ) + self.topology.stop_app() def network_infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: - if not self.connected_and_transformed: - self.connect_and_transform() - nodes = { - node.label_full: { - 'label': node.label, - 'class': 'Bus' if isinstance(node, Bus) else 'Component', - 'infos': node.__str__(), - } - for node in chain(self.components.values(), self.buses.values()) - } - - edges = { - flow.label_full: { - 'label': flow.label, - 'start': flow.bus if flow.is_input_in_component else flow.component, - 'end': flow.component if flow.is_input_in_component else flow.bus, - 'infos': flow.__str__(), - } - for flow in self.flows.values() - } + """ + Deprecated: Use `flow_system.topology.infos()` instead. - return nodes, edges + Get network topology information as dictionaries. + """ + warnings.warn( + f'network_infos() is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.topology.infos() instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.topology.infos() def _check_if_element_is_unique(self, element: Element) -> None: """ diff --git a/flixopt/plotting.py b/flixopt/plotting.py index 0a8dfbc9b..db5a3eb5c 100644 --- a/flixopt/plotting.py +++ b/flixopt/plotting.py @@ -39,7 +39,7 @@ import plotly.offline import xarray as xr -from .color_processing import process_colors +from .color_processing import ColorType, process_colors from .config import CONFIG if TYPE_CHECKING: @@ -66,56 +66,6 @@ plt.register_cmap(name='portland', cmap=mcolors.LinearSegmentedColormap.from_list('portland', _portland_colors)) -ColorType = str | list[str] | dict[str, str] -"""Flexible color specification type supporting multiple input formats for visualization. - -Color specifications can take several forms to accommodate different use cases: - -**Named colorscales** (str): - - Standard colorscales: 'turbo', 'plasma', 'cividis', 'tab10', 'Set1' - - Energy-focused: 'portland' (custom flixopt colorscale for energy systems) - - Backend-specific maps available in Plotly and Matplotlib - -**Color Lists** (list[str]): - - Explicit color sequences: ['red', 'blue', 'green', 'orange'] - - HEX codes: ['#FF0000', '#0000FF', '#00FF00', '#FFA500'] - - Mixed formats: ['red', '#0000FF', 'green', 'orange'] - -**Label-to-Color Mapping** (dict[str, str]): - - Explicit associations: {'Wind': 'skyblue', 'Solar': 'gold', 'Gas': 'brown'} - - Ensures consistent colors across different plots and datasets - - Ideal for energy system components with semantic meaning - -Examples: - ```python - # Named colorscale - colors = 'turbo' # Automatic color generation - - # Explicit color list - colors = ['red', 'blue', 'green', '#FFD700'] - - # Component-specific mapping - colors = { - 'Wind_Turbine': 'skyblue', - 'Solar_Panel': 'gold', - 'Natural_Gas': 'brown', - 'Battery': 'green', - 'Electric_Load': 'darkred' - } - ``` - -Color Format Support: - - **Named Colors**: 'red', 'blue', 'forestgreen', 'darkorange' - - **HEX Codes**: '#FF0000', '#0000FF', '#228B22', '#FF8C00' - - **RGB Tuples**: (255, 0, 0), (0, 0, 255) [Matplotlib only] - - **RGBA**: 'rgba(255,0,0,0.8)' [Plotly only] - -References: - - HTML Color Names: https://htmlcolorcodes.com/color-names/ - - Matplotlib colorscales: https://matplotlib.org/stable/tutorials/colors/colorscales.html - - Plotly Built-in Colorscales: https://plotly.com/python/builtin-colorscales/ -""" - PlottingEngine = Literal['plotly', 'matplotlib'] """Identifier for the plotting engine to use.""" @@ -1192,6 +1142,57 @@ def draw_pie(ax, labels, values, subtitle): return fig, axes +def heatmap_with_plotly_v2( + data: xr.DataArray, + colors: ColorType | None = None, + title: str = '', + facet_col: str | None = None, + animation_frame: str | None = None, + facet_col_wrap: int | None = None, + **imshow_kwargs: Any, +) -> go.Figure: + """ + Plot a heatmap using Plotly's imshow. + + Data should be prepared with dims in order: (y_axis, x_axis, [facet_col], [animation_frame]). + Use reshape_data_for_heatmap() to prepare time-series data before calling this. + + Args: + data: DataArray with 2-4 dimensions. First two are heatmap axes. + colors: Colorscale name ('viridis', 'plasma', etc.). + title: Plot title. + facet_col: Dimension name for subplot columns (3rd dim). + animation_frame: Dimension name for animation (4th dim). + facet_col_wrap: Max columns before wrapping (only if < n_facets). + **imshow_kwargs: Additional args for px.imshow. + + Returns: + Plotly Figure object. + """ + if data.size == 0: + return go.Figure() + + colors = colors or CONFIG.Plotting.default_sequential_colorscale + facet_col_wrap = facet_col_wrap or CONFIG.Plotting.default_facet_cols + + imshow_args: dict[str, Any] = { + 'img': data, + 'color_continuous_scale': colors, + 'title': title, + **imshow_kwargs, + } + + if facet_col and facet_col in data.dims: + imshow_args['facet_col'] = facet_col + if facet_col_wrap < data.sizes[facet_col]: + imshow_args['facet_col_wrap'] = facet_col_wrap + + if animation_frame and animation_frame in data.dims: + imshow_args['animation_frame'] = animation_frame + + return px.imshow(**imshow_args) + + def heatmap_with_plotly( data: xr.DataArray, colors: ColorType | None = None, diff --git a/flixopt/results.py b/flixopt/results.py index 99944b98c..edcbb7a87 100644 --- a/flixopt/results.py +++ b/flixopt/results.py @@ -394,7 +394,7 @@ def setup_colors( def get_all_variable_names(comp: str) -> list[str]: """Collect all variables from the component, including flows and flow_hours.""" comp_object = self.components[comp] - var_names = [comp] + list(comp_object._variable_names) + var_names = [comp] + list(comp_object.variable_names) for flow in comp_object.flows: var_names.extend([flow, f'{flow}|flow_hours']) return var_names @@ -549,21 +549,40 @@ def flow_rates( ) -> xr.DataArray: """Returns a DataArray containing the flow rates of each Flow. - Args: - start: Optional source node(s) to filter by. Can be a single node name or a list of names. - end: Optional destination node(s) to filter by. Can be a single node name or a list of names. - component: Optional component(s) to filter by. Can be a single component name or a list of names. + .. deprecated:: + Use `results.plot.all_flow_rates` (Dataset) or + `results.flows['FlowLabel'].flow_rate` (DataArray) instead. - Further usage: - Convert the dataarray to a dataframe: - >>>results.flow_rates().to_pandas() - Get the max or min over time: - >>>results.flow_rates().max('time') - Sum up the flow rates of flows with the same start and end: - >>>results.flow_rates(end='Fernwärme').groupby('start').sum(dim='flow') - To recombine filtered dataarrays, use `xr.concat` with dim 'flow': - >>>xr.concat([results.flow_rates(start='Fernwärme'), results.flow_rates(end='Fernwärme')], dim='flow') + **Note**: The new API differs from this method: + + - Returns ``xr.Dataset`` (not ``DataArray``) with flow labels as variable names + - No ``'flow'`` dimension - each flow is a separate variable + - No filtering parameters - filter using these alternatives:: + + # Select specific flows by label + ds = results.plot.all_flow_rates + ds[['Boiler(Q_th)', 'CHP(Q_th)']] + + # Filter by substring in label + ds[[v for v in ds.data_vars if 'Boiler' in v]] + + # Filter by bus (start/end) - get flows connected to a bus + results['Fernwärme'].inputs # list of input flow labels + results['Fernwärme'].outputs # list of output flow labels + ds[results['Fernwärme'].inputs] # Dataset with only inputs to bus + + # Filter by component - get flows of a component + results['Boiler'].inputs # list of input flow labels + results['Boiler'].outputs # list of output flow labels """ + warnings.warn( + 'results.flow_rates() is deprecated. ' + 'Use results.plot.all_flow_rates instead (returns Dataset, not DataArray). ' + 'Note: The new API has no filtering parameters and uses flow labels as variable names. ' + f'Will be removed in v{DEPRECATION_REMOVAL_VERSION}.', + DeprecationWarning, + stacklevel=2, + ) if not self._has_flow_data: raise ValueError('Flow data is not available in this results object (pre-v2.2.0).') if self._flow_rates is None: @@ -584,6 +603,32 @@ def flow_hours( ) -> xr.DataArray: """Returns a DataArray containing the flow hours of each Flow. + .. deprecated:: + Use `results.plot.all_flow_hours` (Dataset) or + `results.flows['FlowLabel'].flow_rate * results.hours_per_timestep` instead. + + **Note**: The new API differs from this method: + + - Returns ``xr.Dataset`` (not ``DataArray``) with flow labels as variable names + - No ``'flow'`` dimension - each flow is a separate variable + - No filtering parameters - filter using these alternatives:: + + # Select specific flows by label + ds = results.plot.all_flow_hours + ds[['Boiler(Q_th)', 'CHP(Q_th)']] + + # Filter by substring in label + ds[[v for v in ds.data_vars if 'Boiler' in v]] + + # Filter by bus (start/end) - get flows connected to a bus + results['Fernwärme'].inputs # list of input flow labels + results['Fernwärme'].outputs # list of output flow labels + ds[results['Fernwärme'].inputs] # Dataset with only inputs to bus + + # Filter by component - get flows of a component + results['Boiler'].inputs # list of input flow labels + results['Boiler'].outputs # list of output flow labels + Flow hours represent the total energy/material transferred over time, calculated by multiplying flow rates by the duration of each timestep. @@ -603,6 +648,14 @@ def flow_hours( >>>xr.concat([results.flow_hours(start='Fernwärme'), results.flow_hours(end='Fernwärme')], dim='flow') """ + warnings.warn( + 'results.flow_hours() is deprecated. ' + 'Use results.plot.all_flow_hours instead (returns Dataset, not DataArray). ' + 'Note: The new API has no filtering parameters and uses flow labels as variable names. ' + f'Will be removed in v{DEPRECATION_REMOVAL_VERSION}.', + DeprecationWarning, + stacklevel=2, + ) if self._flow_hours is None: self._flow_hours = (self.flow_rates() * self.hours_per_timestep).rename('flow_hours') filters = {k: v for k, v in {'start': start, 'end': end, 'component': component}.items() if v is not None} @@ -615,18 +668,41 @@ def sizes( component: str | list[str] | None = None, ) -> xr.DataArray: """Returns a dataset with the sizes of the Flows. - Args: - start: Optional source node(s) to filter by. Can be a single node name or a list of names. - end: Optional destination node(s) to filter by. Can be a single node name or a list of names. - component: Optional component(s) to filter by. Can be a single component name or a list of names. - Further usage: - Convert the dataarray to a dataframe: - >>>results.sizes().to_pandas() - To recombine filtered dataarrays, use `xr.concat` with dim 'flow': - >>>xr.concat([results.sizes(start='Fernwärme'), results.sizes(end='Fernwärme')], dim='flow') + .. deprecated:: + Use `results.plot.all_sizes` (Dataset) or + `results.flows['FlowLabel'].size` (DataArray) instead. + + **Note**: The new API differs from this method: + + - Returns ``xr.Dataset`` (not ``DataArray``) with flow labels as variable names + - No ``'flow'`` dimension - each flow is a separate variable + - No filtering parameters - filter using these alternatives:: + + # Select specific flows by label + ds = results.plot.all_sizes + ds[['Boiler(Q_th)', 'CHP(Q_th)']] + + # Filter by substring in label + ds[[v for v in ds.data_vars if 'Boiler' in v]] + # Filter by bus (start/end) - get flows connected to a bus + results['Fernwärme'].inputs # list of input flow labels + results['Fernwärme'].outputs # list of output flow labels + ds[results['Fernwärme'].inputs] # Dataset with only inputs to bus + + # Filter by component - get flows of a component + results['Boiler'].inputs # list of input flow labels + results['Boiler'].outputs # list of output flow labels """ + warnings.warn( + 'results.sizes() is deprecated. ' + 'Use results.plot.all_sizes instead (returns Dataset, not DataArray). ' + 'Note: The new API has no filtering parameters and uses flow labels as variable names. ' + f'Will be removed in v{DEPRECATION_REMOVAL_VERSION}.', + DeprecationWarning, + stacklevel=2, + ) if not self._has_flow_data: raise ValueError('Flow data is not available in this results object (pre-v2.2.0).') if self._sizes is None: @@ -1102,10 +1178,10 @@ class _ElementResults: def __init__(self, results: Results, label: str, variables: list[str], constraints: list[str]): self._results = results self.label = label - self._variable_names = variables + self.variable_names = variables self._constraint_names = constraints - self.solution = self._results.solution[self._variable_names] + self.solution = self._results.solution[self.variable_names] @property def variables(self) -> linopy.Variables: @@ -1116,7 +1192,7 @@ def variables(self) -> linopy.Variables: """ if self._results.model is None: raise ValueError('The linopy model is not available.') - return self._results.model.variables[self._variable_names] + return self._results.model.variables[self.variable_names] @property def constraints(self) -> linopy.Constraints: @@ -1581,7 +1657,7 @@ class ComponentResults(_NodeResults): @property def is_storage(self) -> bool: - return self._charge_state in self._variable_names + return self._charge_state in self.variable_names @property def _charge_state(self) -> str: @@ -1842,7 +1918,7 @@ def get_shares_from(self, element: str) -> xr.Dataset: Returns: xr.Dataset: Element shares to this effect. """ - return self.solution[[name for name in self._variable_names if name.startswith(f'{element}->')]] + return self.solution[[name for name in self.variable_names if name.startswith(f'{element}->')]] class FlowResults(_ElementResults): diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py new file mode 100644 index 000000000..9f6bb01be --- /dev/null +++ b/flixopt/statistics_accessor.py @@ -0,0 +1,1406 @@ +"""Statistics accessor for FlowSystem. + +This module provides a user-friendly API for analyzing optimization results +directly from a FlowSystem. + +Structure: + - `.statistics` - Data/metrics access (cached xarray Datasets) + - `.statistics.plot` - Plotting methods using the statistics data + +Example: + >>> flow_system.optimize(solver) + >>> # Data access + >>> flow_system.statistics.flow_rates + >>> flow_system.statistics.flow_hours + >>> # Plotting + >>> flow_system.statistics.plot.balance('ElectricityBus') + >>> flow_system.statistics.plot.heatmap('Boiler|on') +""" + +from __future__ import annotations + +import logging +import re +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Literal + +import numpy as np +import pandas as pd +import plotly.express as px +import plotly.graph_objects as go +import xarray as xr + +from .color_processing import ColorType, process_colors +from .config import CONFIG + +if TYPE_CHECKING: + from pathlib import Path + + from .flow_system import FlowSystem + +logger = logging.getLogger('flixopt') + +# Type aliases +SelectType = dict[str, Any] +"""xarray-style selection dict: {'time': slice(...), 'scenario': 'base'}""" + +FilterType = str | list[str] +"""For include/exclude filtering: 'Boiler' or ['Boiler', 'CHP']""" + + +def _reshape_time_for_heatmap( + data: xr.DataArray, + reshape: tuple[str, str], + fill: Literal['ffill', 'bfill'] | None = 'ffill', +) -> xr.DataArray: + """Reshape time dimension into 2D (timeframe × timestep) for heatmap display. + + Args: + data: DataArray with 'time' dimension. + reshape: Tuple of (outer_freq, inner_freq), e.g. ('D', 'h') for days × hours. + fill: Method to fill missing values after resampling. + + Returns: + DataArray with 'time' replaced by 'timestep' and 'timeframe' dimensions. + """ + if 'time' not in data.dims: + return data + + timeframes, timesteps_per_frame = reshape + + # Define formats for different combinations + formats = { + ('YS', 'W'): ('%Y', '%W'), + ('YS', 'D'): ('%Y', '%j'), + ('YS', 'h'): ('%Y', '%j %H:00'), + ('MS', 'D'): ('%Y-%m', '%d'), + ('MS', 'h'): ('%Y-%m', '%d %H:00'), + ('W', 'D'): ('%Y-w%W', '%w_%A'), + ('W', 'h'): ('%Y-w%W', '%w_%A %H:00'), + ('D', 'h'): ('%Y-%m-%d', '%H:00'), + ('D', '15min'): ('%Y-%m-%d', '%H:%M'), + ('h', '15min'): ('%Y-%m-%d %H:00', '%M'), + ('h', 'min'): ('%Y-%m-%d %H:00', '%M'), + } + + format_pair = (timeframes, timesteps_per_frame) + if format_pair not in formats: + raise ValueError(f'{format_pair} is not a valid format. Choose from {list(formats.keys())}') + period_format, step_format = formats[format_pair] + + # Resample along time dimension + resampled = data.resample(time=timesteps_per_frame).mean() + + # Apply fill if specified + if fill == 'ffill': + resampled = resampled.ffill(dim='time') + elif fill == 'bfill': + resampled = resampled.bfill(dim='time') + + # Create period and step labels + time_values = pd.to_datetime(resampled.coords['time'].values) + period_labels = time_values.strftime(period_format) + step_labels = time_values.strftime(step_format) + + # Handle special case for weekly day format + if '%w_%A' in step_format: + step_labels = pd.Series(step_labels).replace('0_Sunday', '7_Sunday').values + + # Add period and step as coordinates + resampled = resampled.assign_coords({'timeframe': ('time', period_labels), 'timestep': ('time', step_labels)}) + + # Convert to multi-index and unstack + resampled = resampled.set_index(time=['timeframe', 'timestep']) + result = resampled.unstack('time') + + # Reorder: timestep, timeframe, then other dimensions + other_dims = [d for d in result.dims if d not in ['timestep', 'timeframe']] + return result.transpose('timestep', 'timeframe', *other_dims) + + +def _heatmap_figure( + data: xr.DataArray, + colors: str | list[str] | None = None, + title: str = '', + facet_col: str | None = None, + animation_frame: str | None = None, + facet_col_wrap: int | None = None, + **imshow_kwargs: Any, +) -> go.Figure: + """Create heatmap figure using px.imshow. + + Args: + data: DataArray with 2-4 dimensions. First two are heatmap axes. + colors: Colorscale name (str) or list of colors. Dicts are not supported + for heatmaps as color_continuous_scale requires a colorscale specification. + title: Plot title. + facet_col: Dimension for subplot columns. + animation_frame: Dimension for animation slider. + facet_col_wrap: Max columns before wrapping. + **imshow_kwargs: Additional args for px.imshow. + + Returns: + Plotly Figure. + """ + if data.size == 0: + return go.Figure() + + colors = colors or CONFIG.Plotting.default_sequential_colorscale + facet_col_wrap = facet_col_wrap or CONFIG.Plotting.default_facet_cols + + imshow_args: dict[str, Any] = { + 'img': data, + 'color_continuous_scale': colors, + 'title': title, + **imshow_kwargs, + } + + if facet_col and facet_col in data.dims: + imshow_args['facet_col'] = facet_col + if facet_col_wrap < data.sizes[facet_col]: + imshow_args['facet_col_wrap'] = facet_col_wrap + + if animation_frame and animation_frame in data.dims: + imshow_args['animation_frame'] = animation_frame + + return px.imshow(**imshow_args) + + +@dataclass +class PlotResult: + """Container returned by all plot methods. Holds both data and figure. + + Attributes: + data: Prepared xarray Dataset used for the plot. + figure: Plotly figure object. + """ + + data: xr.Dataset + figure: go.Figure + + def show(self) -> PlotResult: + """Display the figure. Returns self for chaining.""" + self.figure.show() + return self + + def update(self, **layout_kwargs: Any) -> PlotResult: + """Update figure layout. Returns self for chaining.""" + self.figure.update_layout(**layout_kwargs) + return self + + def update_traces(self, **trace_kwargs: Any) -> PlotResult: + """Update figure traces. Returns self for chaining.""" + self.figure.update_traces(**trace_kwargs) + return self + + def to_html(self, path: str | Path) -> PlotResult: + """Save figure as interactive HTML. Returns self for chaining.""" + self.figure.write_html(str(path)) + return self + + def to_image(self, path: str | Path, **kwargs: Any) -> PlotResult: + """Save figure as static image. Returns self for chaining.""" + self.figure.write_image(str(path), **kwargs) + return self + + def to_csv(self, path: str | Path, **kwargs: Any) -> PlotResult: + """Export the underlying data to CSV. Returns self for chaining.""" + self.data.to_dataframe().to_csv(path, **kwargs) + return self + + def to_netcdf(self, path: str | Path, **kwargs: Any) -> PlotResult: + """Export the underlying data to netCDF. Returns self for chaining.""" + self.data.to_netcdf(path, **kwargs) + return self + + +# --- Helper functions --- + + +def _filter_by_pattern( + names: list[str], + include: FilterType | None, + exclude: FilterType | None, +) -> list[str]: + """Filter names using substring matching.""" + result = names.copy() + if include is not None: + patterns = [include] if isinstance(include, str) else include + result = [n for n in result if any(p in n for p in patterns)] + if exclude is not None: + patterns = [exclude] if isinstance(exclude, str) else exclude + result = [n for n in result if not any(p in n for p in patterns)] + return result + + +def _apply_selection(ds: xr.Dataset, select: SelectType | None) -> xr.Dataset: + """Apply xarray-style selection to dataset.""" + if select is None: + return ds + valid_select = {k: v for k, v in select.items() if k in ds.dims or k in ds.coords} + if valid_select: + ds = ds.sel(valid_select) + return ds + + +def _resolve_facets( + ds: xr.Dataset, + facet_col: str | None, + facet_row: str | None, +) -> tuple[str | None, str | None]: + """Resolve facet dimensions, returning None if not present in data.""" + actual_facet_col = facet_col if facet_col and facet_col in ds.dims else None + actual_facet_row = facet_row if facet_row and facet_row in ds.dims else None + return actual_facet_col, actual_facet_row + + +def _dataset_to_long_df(ds: xr.Dataset, value_name: str = 'value', var_name: str = 'variable') -> pd.DataFrame: + """Convert xarray Dataset to long-form DataFrame for plotly express.""" + if not ds.data_vars: + return pd.DataFrame() + if all(ds[var].ndim == 0 for var in ds.data_vars): + rows = [{var_name: var, value_name: float(ds[var].values)} for var in ds.data_vars] + return pd.DataFrame(rows) + df = ds.to_dataframe().reset_index() + # Only use coordinates that are actually present as columns after reset_index + coord_cols = [c for c in ds.coords.keys() if c in df.columns] + return df.melt(id_vars=coord_cols, var_name=var_name, value_name=value_name) + + +def _create_stacked_bar( + ds: xr.Dataset, + colors: ColorType, + title: str, + facet_col: str | None, + facet_row: str | None, + **plotly_kwargs: Any, +) -> go.Figure: + """Create a stacked bar chart from xarray Dataset.""" + df = _dataset_to_long_df(ds) + if df.empty: + return go.Figure() + x_col = 'time' if 'time' in df.columns else df.columns[0] + variables = df['variable'].unique().tolist() + color_map = process_colors(colors, variables, default_colorscale=CONFIG.Plotting.default_qualitative_colorscale) + fig = px.bar( + df, + x=x_col, + y='value', + color='variable', + facet_col=facet_col, + facet_row=facet_row, + color_discrete_map=color_map, + title=title, + **plotly_kwargs, + ) + fig.update_layout(barmode='relative', bargap=0, bargroupgap=0) + fig.update_traces(marker_line_width=0) + return fig + + +def _create_line( + ds: xr.Dataset, + colors: ColorType, + title: str, + facet_col: str | None, + facet_row: str | None, + **plotly_kwargs: Any, +) -> go.Figure: + """Create a line chart from xarray Dataset.""" + df = _dataset_to_long_df(ds) + if df.empty: + return go.Figure() + x_col = 'time' if 'time' in df.columns else df.columns[0] + variables = df['variable'].unique().tolist() + color_map = process_colors(colors, variables, default_colorscale=CONFIG.Plotting.default_qualitative_colorscale) + return px.line( + df, + x=x_col, + y='value', + color='variable', + facet_col=facet_col, + facet_row=facet_row, + color_discrete_map=color_map, + title=title, + **plotly_kwargs, + ) + + +# --- Statistics Accessor (data only) --- + + +class StatisticsAccessor: + """Statistics accessor for FlowSystem. Access via ``flow_system.statistics``. + + This accessor provides cached data properties for optimization results. + Use ``.plot`` for visualization methods. + + Data Properties: + ``flow_rates`` : xr.Dataset + Flow rates for all flows. + ``flow_hours`` : xr.Dataset + Flow hours (energy) for all flows. + ``sizes`` : xr.Dataset + Sizes for all flows. + ``charge_states`` : xr.Dataset + Charge states for all storage components. + ``temporal_effects`` : xr.Dataset + Temporal effects per contributor per timestep. + ``periodic_effects`` : xr.Dataset + Periodic (investment) effects per contributor. + ``total_effects`` : xr.Dataset + Total effects (temporal + periodic) per contributor. + ``effect_share_factors`` : dict + Conversion factors between effects. + + Examples: + >>> flow_system.optimize(solver) + >>> flow_system.statistics.flow_rates # Get data + >>> flow_system.statistics.plot.balance('Bus') # Plot + """ + + def __init__(self, flow_system: FlowSystem) -> None: + self._fs = flow_system + # Cached data + self._flow_rates: xr.Dataset | None = None + self._flow_hours: xr.Dataset | None = None + self._sizes: xr.Dataset | None = None + self._charge_states: xr.Dataset | None = None + self._effect_share_factors: dict[str, dict] | None = None + self._temporal_effects: xr.Dataset | None = None + self._periodic_effects: xr.Dataset | None = None + self._total_effects: xr.Dataset | None = None + # Plotting accessor (lazy) + self._plot: StatisticsPlotAccessor | None = None + + def _require_solution(self) -> xr.Dataset: + """Get solution, raising if not available.""" + if self._fs.solution is None: + raise RuntimeError('FlowSystem has no solution. Run optimize() or solve() first.') + return self._fs.solution + + @property + def plot(self) -> StatisticsPlotAccessor: + """Access plotting methods for statistics. + + Returns: + A StatisticsPlotAccessor instance. + + Examples: + >>> flow_system.statistics.plot.balance('ElectricityBus') + >>> flow_system.statistics.plot.heatmap('Boiler|on') + """ + if self._plot is None: + self._plot = StatisticsPlotAccessor(self) + return self._plot + + @property + def flow_rates(self) -> xr.Dataset: + """All flow rates as a Dataset with flow labels as variable names.""" + self._require_solution() + if self._flow_rates is None: + flow_rate_vars = [v for v in self._fs.solution.data_vars if v.endswith('|flow_rate')] + self._flow_rates = xr.Dataset({v.replace('|flow_rate', ''): self._fs.solution[v] for v in flow_rate_vars}) + return self._flow_rates + + @property + def flow_hours(self) -> xr.Dataset: + """All flow hours (energy) as a Dataset with flow labels as variable names.""" + self._require_solution() + if self._flow_hours is None: + hours = self._fs.hours_per_timestep + self._flow_hours = self.flow_rates * hours + return self._flow_hours + + @property + def sizes(self) -> xr.Dataset: + """All flow sizes as a Dataset with flow labels as variable names.""" + self._require_solution() + if self._sizes is None: + size_vars = [v for v in self._fs.solution.data_vars if v.endswith('|size')] + self._sizes = xr.Dataset({v.replace('|size', ''): self._fs.solution[v] for v in size_vars}) + return self._sizes + + @property + def charge_states(self) -> xr.Dataset: + """All storage charge states as a Dataset with storage labels as variable names.""" + self._require_solution() + if self._charge_states is None: + charge_vars = [v for v in self._fs.solution.data_vars if v.endswith('|charge_state')] + self._charge_states = xr.Dataset( + {v.replace('|charge_state', ''): self._fs.solution[v] for v in charge_vars} + ) + return self._charge_states + + @property + def effect_share_factors(self) -> dict[str, dict]: + """Effect share factors for temporal and periodic modes. + + Returns: + Dict with 'temporal' and 'periodic' keys, each containing + conversion factors between effects. + """ + self._require_solution() + if self._effect_share_factors is None: + factors = self._fs.effects.calculate_effect_share_factors() + self._effect_share_factors = {'temporal': factors[0], 'periodic': factors[1]} + return self._effect_share_factors + + @property + def temporal_effects(self) -> xr.Dataset: + """Temporal effects per contributor per timestep. + + Returns a Dataset where each effect is a data variable with dimensions + [time, contributor] (plus period/scenario if present). + + Coordinates: + - contributor: Individual contributor labels + - component: Parent component label for groupby operations + - component_type: Component type (e.g., 'Boiler', 'Source', 'Sink') + + Examples: + >>> # Get costs per contributor per timestep + >>> statistics.temporal_effects['costs'] + >>> # Sum over all contributors to get total costs per timestep + >>> statistics.temporal_effects['costs'].sum('contributor') + >>> # Group by component + >>> statistics.temporal_effects['costs'].groupby('component').sum() + + Returns: + xr.Dataset with effects as variables and contributor dimension. + """ + self._require_solution() + if self._temporal_effects is None: + ds = self._create_effects_dataset('temporal') + dim_order = ['time', 'period', 'scenario', 'contributor'] + self._temporal_effects = ds.transpose(*dim_order, missing_dims='ignore') + return self._temporal_effects + + @property + def periodic_effects(self) -> xr.Dataset: + """Periodic (investment) effects per contributor. + + Returns a Dataset where each effect is a data variable with dimensions + [contributor] (plus period/scenario if present). + + Coordinates: + - contributor: Individual contributor labels + - component: Parent component label for groupby operations + - component_type: Component type (e.g., 'Boiler', 'Source', 'Sink') + + Examples: + >>> # Get investment costs per contributor + >>> statistics.periodic_effects['costs'] + >>> # Sum over all contributors to get total investment costs + >>> statistics.periodic_effects['costs'].sum('contributor') + >>> # Group by component + >>> statistics.periodic_effects['costs'].groupby('component').sum() + + Returns: + xr.Dataset with effects as variables and contributor dimension. + """ + self._require_solution() + if self._periodic_effects is None: + ds = self._create_effects_dataset('periodic') + dim_order = ['period', 'scenario', 'contributor'] + self._periodic_effects = ds.transpose(*dim_order, missing_dims='ignore') + return self._periodic_effects + + @property + def total_effects(self) -> xr.Dataset: + """Total effects (temporal + periodic) per contributor. + + Returns a Dataset where each effect is a data variable with dimensions + [contributor] (plus period/scenario if present). + + Coordinates: + - contributor: Individual contributor labels + - component: Parent component label for groupby operations + - component_type: Component type (e.g., 'Boiler', 'Source', 'Sink') + + Examples: + >>> # Get total costs per contributor + >>> statistics.total_effects['costs'] + >>> # Sum over all contributors to get total system costs + >>> statistics.total_effects['costs'].sum('contributor') + >>> # Group by component + >>> statistics.total_effects['costs'].groupby('component').sum() + >>> # Group by component type + >>> statistics.total_effects['costs'].groupby('component_type').sum() + + Returns: + xr.Dataset with effects as variables and contributor dimension. + """ + self._require_solution() + if self._total_effects is None: + ds = self._create_effects_dataset('total') + dim_order = ['period', 'scenario', 'contributor'] + self._total_effects = ds.transpose(*dim_order, missing_dims='ignore') + return self._total_effects + + def get_effect_shares( + self, + element: str, + effect: str, + mode: Literal['temporal', 'periodic'] | None = None, + include_flows: bool = False, + ) -> xr.Dataset: + """Retrieve individual effect shares for a specific element and effect. + + Args: + element: The element identifier (component or flow label). + effect: The effect identifier. + mode: 'temporal', 'periodic', or None for both. + include_flows: Whether to include effects from flows connected to this element. + + Returns: + xr.Dataset containing the requested effect shares. + + Raises: + ValueError: If the effect is not available or mode is invalid. + """ + self._require_solution() + + if effect not in self._fs.effects: + raise ValueError(f'Effect {effect} is not available.') + + if mode is None: + return xr.merge( + [ + self.get_effect_shares( + element=element, effect=effect, mode='temporal', include_flows=include_flows + ), + self.get_effect_shares( + element=element, effect=effect, mode='periodic', include_flows=include_flows + ), + ] + ) + + if mode not in ['temporal', 'periodic']: + raise ValueError(f'Mode {mode} is not available. Choose between "temporal" and "periodic".') + + ds = xr.Dataset() + label = f'{element}->{effect}({mode})' + if label in self._fs.solution: + ds = xr.Dataset({label: self._fs.solution[label]}) + + if include_flows: + if element not in self._fs.components: + raise ValueError(f'Only use Components when retrieving Effects including flows. Got {element}') + comp = self._fs.components[element] + flows = [f.label_full.split('|')[0] for f in comp.inputs + comp.outputs] + return xr.merge( + [ds] + + [ + self.get_effect_shares(element=flow, effect=effect, mode=mode, include_flows=False) + for flow in flows + ] + ) + + return ds + + def _create_template_for_mode(self, mode: Literal['temporal', 'periodic', 'total']) -> xr.DataArray: + """Create a template DataArray with the correct dimensions for a given mode.""" + coords = {} + if mode == 'temporal': + coords['time'] = self._fs.timesteps + if self._fs.periods is not None: + coords['period'] = self._fs.periods + if self._fs.scenarios is not None: + coords['scenario'] = self._fs.scenarios + + if coords: + shape = tuple(len(coords[dim]) for dim in coords) + return xr.DataArray(np.full(shape, np.nan, dtype=float), coords=coords, dims=list(coords.keys())) + else: + return xr.DataArray(np.nan) + + def _create_effects_dataset(self, mode: Literal['temporal', 'periodic', 'total']) -> xr.Dataset: + """Create dataset containing effect totals for all contributors. + + Detects contributors (flows, components, etc.) from solution data variables. + Excludes effect-to-effect shares which are intermediate conversions. + Provides component and component_type coordinates for flexible groupby operations. + """ + solution = self._fs.solution + template = self._create_template_for_mode(mode) + + # Detect contributors from solution data variables + # Pattern: {contributor}->{effect}(temporal) or {contributor}->{effect}(periodic) + contributor_pattern = re.compile(r'^(.+)->(.+)\((temporal|periodic)\)$') + effect_labels = set(self._fs.effects.keys()) + + detected_contributors: set[str] = set() + for var in solution.data_vars: + match = contributor_pattern.match(str(var)) + if match: + contributor = match.group(1) + # Exclude effect-to-effect shares (e.g., costs(temporal) -> Effect1(temporal)) + base_name = contributor.split('(')[0] if '(' in contributor else contributor + if base_name not in effect_labels: + detected_contributors.add(contributor) + + contributors = sorted(detected_contributors) + + # Build metadata for each contributor + def get_parent_component(contributor: str) -> str: + if contributor in self._fs.flows: + return self._fs.flows[contributor].component + elif contributor in self._fs.components: + return contributor + return contributor + + def get_contributor_type(contributor: str) -> str: + if contributor in self._fs.flows: + parent = self._fs.flows[contributor].component + return type(self._fs.components[parent]).__name__ + elif contributor in self._fs.components: + return type(self._fs.components[contributor]).__name__ + elif contributor in self._fs.buses: + return type(self._fs.buses[contributor]).__name__ + return 'Unknown' + + parents = [get_parent_component(c) for c in contributors] + contributor_types = [get_contributor_type(c) for c in contributors] + + # Determine modes to process + modes_to_process = ['temporal', 'periodic'] if mode == 'total' else [mode] + + ds = xr.Dataset() + + for effect in self._fs.effects: + contributor_arrays = [] + + for contributor in contributors: + share_total: xr.DataArray | None = None + + for current_mode in modes_to_process: + # Get conversion factors: which source effects contribute to this target effect + conversion_factors = { + key[0]: value + for key, value in self.effect_share_factors[current_mode].items() + if key[1] == effect + } + conversion_factors[effect] = 1 # Direct contribution + + for source_effect, factor in conversion_factors.items(): + label = f'{contributor}->{source_effect}({current_mode})' + if label in solution: + da = solution[label] * factor + # For total mode, sum temporal over time + if mode == 'total' and current_mode == 'temporal' and 'time' in da.dims: + da = da.sum('time') + if share_total is None: + share_total = da + else: + share_total = share_total + da + + # If no share found, use NaN template + if share_total is None: + share_total = xr.full_like(template, np.nan, dtype=float) + + contributor_arrays.append(share_total.expand_dims(contributor=[contributor])) + + # Concatenate all contributors for this effect + ds[effect] = xr.concat(contributor_arrays, dim='contributor', coords='minimal', join='outer').rename(effect) + + # Add groupby coordinates for contributor dimension + ds = ds.assign_coords( + component=('contributor', parents), + component_type=('contributor', contributor_types), + ) + + # Validation: check totals match solution + suffix_map = {'temporal': '(temporal)|per_timestep', 'periodic': '(periodic)', 'total': ''} + for effect in self._fs.effects: + label = f'{effect}{suffix_map[mode]}' + if label in solution: + computed = ds[effect].sum('contributor') + found = solution[label] + if not np.allclose(computed.fillna(0).values, found.fillna(0).values, equal_nan=True): + logger.critical( + f'Results for {effect}({mode}) in effects_dataset doesnt match {label}\n{computed=}\n, {found=}' + ) + + return ds + + +# --- Statistics Plot Accessor --- + + +class StatisticsPlotAccessor: + """Plot accessor for statistics. Access via ``flow_system.statistics.plot``. + + All methods return PlotResult with both data and figure. + """ + + def __init__(self, statistics: StatisticsAccessor) -> None: + self._stats = statistics + self._fs = statistics._fs + + def balance( + self, + node: str, + *, + select: SelectType | None = None, + include: FilterType | None = None, + exclude: FilterType | None = None, + unit: Literal['flow_rate', 'flow_hours'] = 'flow_rate', + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot node balance (inputs vs outputs) for a Bus or Component. + + Args: + node: Label of the Bus or Component to plot. + select: xarray-style selection dict. + include: Only include flows containing these substrings. + exclude: Exclude flows containing these substrings. + unit: 'flow_rate' (power) or 'flow_hours' (energy). + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display the plot. + + Returns: + PlotResult with .data and .figure. + """ + self._stats._require_solution() + + # Get the element + if node in self._fs.buses: + element = self._fs.buses[node] + elif node in self._fs.components: + element = self._fs.components[node] + else: + raise KeyError(f"'{node}' not found in buses or components") + + input_labels = [f.label_full for f in element.inputs] + output_labels = [f.label_full for f in element.outputs] + all_labels = input_labels + output_labels + + filtered_labels = _filter_by_pattern(all_labels, include, exclude) + if not filtered_labels: + logger.warning(f'No flows remaining after filtering for node {node}') + return PlotResult(data=xr.Dataset(), figure=go.Figure()) + + # Get data from statistics + if unit == 'flow_rate': + ds = self._stats.flow_rates[[lbl for lbl in filtered_labels if lbl in self._stats.flow_rates]] + else: + ds = self._stats.flow_hours[[lbl for lbl in filtered_labels if lbl in self._stats.flow_hours]] + + # Negate inputs + for label in input_labels: + if label in ds: + ds[label] = -ds[label] + + ds = _apply_selection(ds, select) + actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + + fig = _create_stacked_bar( + ds, + colors=colors, + title=f'{node} ({unit})', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + **plotly_kwargs, + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=ds, figure=fig) + + def heatmap( + self, + variables: str | list[str], + *, + select: SelectType | None = None, + reshape: tuple[str, str] | None = ('D', 'h'), + colors: str | list[str] | None = None, + facet_col: str | None = 'period', + animation_frame: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot heatmap of time series data. + + Time is reshaped into 2D (e.g., days × hours) when possible. Multiple variables + are shown as facets. If too many dimensions exist to display without data loss, + reshaping is skipped and variables are shown on the y-axis with time on x-axis. + + Args: + variables: Variable name(s) from solution. + select: xarray-style selection, e.g. {'scenario': 'Base Case'}. + reshape: Time reshape frequencies as (outer, inner), e.g. ('D', 'h') for + days × hours. Set to None to disable reshaping. + colors: Colorscale name (str) or list of colors for heatmap coloring. + Dicts are not supported for heatmaps (use str or list[str]). + facet_col: Dimension for subplot columns (default: 'period'). + With multiple variables, 'variable' is used instead. + animation_frame: Dimension for animation slider (default: 'scenario'). + show: Whether to display the figure. + **plotly_kwargs: Additional arguments passed to px.imshow. + + Returns: + PlotResult with processed data and figure. + """ + solution = self._stats._require_solution() + + if isinstance(variables, str): + variables = [variables] + + ds = solution[variables] + ds = _apply_selection(ds, select) + + # Stack variables into single DataArray + variable_names = list(ds.data_vars) + dataarrays = [ds[var] for var in variable_names] + da = xr.concat(dataarrays, dim=pd.Index(variable_names, name='variable')) + + # Determine facet and animation from available dims + has_multiple_vars = 'variable' in da.dims and da.sizes['variable'] > 1 + + if has_multiple_vars: + actual_facet = 'variable' + actual_animation = ( + animation_frame + if animation_frame in da.dims + else (facet_col if facet_col in da.dims and da.sizes.get(facet_col, 1) > 1 else None) + ) + else: + actual_facet = facet_col if facet_col in da.dims and da.sizes.get(facet_col, 0) > 1 else None + actual_animation = ( + animation_frame if animation_frame in da.dims and da.sizes.get(animation_frame, 0) > 1 else None + ) + + # Count non-time dims with size > 1 (these need facet/animation slots) + extra_dims = [d for d in da.dims if d != 'time' and da.sizes[d] > 1] + used_slots = len([d for d in [actual_facet, actual_animation] if d]) + would_drop = len(extra_dims) > used_slots + + # Reshape time only if we wouldn't lose data (all extra dims fit in facet + animation) + if reshape and 'time' in da.dims and not would_drop: + da = _reshape_time_for_heatmap(da, reshape) + heatmap_dims = ['timestep', 'timeframe'] + elif has_multiple_vars: + # Can't reshape but have multiple vars: use variable + time as heatmap axes + heatmap_dims = ['variable', 'time'] + # variable is now a heatmap dim, use period/scenario for facet/animation + actual_facet = facet_col if facet_col in da.dims and da.sizes.get(facet_col, 0) > 1 else None + actual_animation = ( + animation_frame if animation_frame in da.dims and da.sizes.get(animation_frame, 0) > 1 else None + ) + else: + heatmap_dims = ['time'] if 'time' in da.dims else list(da.dims)[:1] + + # Keep only dims we need + keep_dims = set(heatmap_dims) | {actual_facet, actual_animation} - {None} + for dim in [d for d in da.dims if d not in keep_dims]: + da = da.isel({dim: 0}, drop=True) if da.sizes[dim] > 1 else da.squeeze(dim, drop=True) + + # Transpose to expected order + dim_order = heatmap_dims + [d for d in [actual_facet, actual_animation] if d] + da = da.transpose(*dim_order) + + # Clear name for multiple variables (colorbar would show first var's name) + if has_multiple_vars: + da = da.rename('') + + fig = _heatmap_figure( + da, + colors=colors, + facet_col=actual_facet, + animation_frame=actual_animation, + **plotly_kwargs, + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + reshaped_ds = da.to_dataset(name='value') if isinstance(da, xr.DataArray) else da + return PlotResult(data=reshaped_ds, figure=fig) + + def flows( + self, + *, + start: str | list[str] | None = None, + end: str | list[str] | None = None, + component: str | list[str] | None = None, + select: SelectType | None = None, + unit: Literal['flow_rate', 'flow_hours'] = 'flow_rate', + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot flow rates filtered by start/end nodes or component. + + Args: + start: Filter by source node(s). + end: Filter by destination node(s). + component: Filter by parent component(s). + select: xarray-style selection. + unit: 'flow_rate' or 'flow_hours'. + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display. + + Returns: + PlotResult with flow data. + """ + self._stats._require_solution() + + ds = self._stats.flow_rates if unit == 'flow_rate' else self._stats.flow_hours + + # Filter by connection + if start is not None or end is not None or component is not None: + matching_labels = [] + starts = [start] if isinstance(start, str) else (start or []) + ends = [end] if isinstance(end, str) else (end or []) + components = [component] if isinstance(component, str) else (component or []) + + for flow in self._fs.flows.values(): + # Get bus label (could be string or Bus object) + bus_label = flow.bus if isinstance(flow.bus, str) else flow.bus.label + comp_label = flow.component.label if hasattr(flow.component, 'label') else str(flow.component) + + # start/end filtering based on flow direction + if flow.is_input_in_component: + # Flow goes: bus -> component, so start=bus, end=component + if starts and bus_label not in starts: + continue + if ends and comp_label not in ends: + continue + else: + # Flow goes: component -> bus, so start=component, end=bus + if starts and comp_label not in starts: + continue + if ends and bus_label not in ends: + continue + + if components and comp_label not in components: + continue + matching_labels.append(flow.label_full) + + ds = ds[[lbl for lbl in matching_labels if lbl in ds]] + + ds = _apply_selection(ds, select) + actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + + fig = _create_line( + ds, + colors=colors, + title=f'Flows ({unit})', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + **plotly_kwargs, + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=ds, figure=fig) + + def sankey( + self, + *, + timestep: int | str | None = None, + aggregate: Literal['sum', 'mean'] = 'sum', + select: SelectType | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram of energy/material flow hours. + + Args: + timestep: Specific timestep to show, or None for aggregation. + aggregate: How to aggregate if timestep is None. + select: xarray-style selection. + colors: Color specification for nodes (colorscale name, color list, or label-to-color dict). + show: Whether to display. + + Returns: + PlotResult with Sankey flow data. + """ + self._stats._require_solution() + + ds = self._stats.flow_hours.copy() + + # Apply weights + if 'period' in ds.dims and self._fs.period_weights is not None: + ds = ds * self._fs.period_weights + if 'scenario' in ds.dims and self._fs.scenario_weights is not None: + weights = self._fs.scenario_weights / self._fs.scenario_weights.sum() + ds = ds * weights + + ds = _apply_selection(ds, select) + + if timestep is not None: + if isinstance(timestep, int): + ds = ds.isel(time=timestep) + else: + ds = ds.sel(time=timestep) + elif 'time' in ds.dims: + ds = getattr(ds, aggregate)(dim='time') + + for dim in ['period', 'scenario']: + if dim in ds.dims: + ds = ds.sum(dim=dim) + + # Build Sankey + nodes = set() + links = {'source': [], 'target': [], 'value': [], 'label': []} + + for flow in self._fs.flows.values(): + label = flow.label_full + if label not in ds: + continue + value = float(ds[label].values) + if abs(value) < 1e-6: + continue + + # Determine source/target based on flow direction + # is_input_in_component: True means bus -> component, False means component -> bus + bus_label = flow.bus if isinstance(flow.bus, str) else flow.bus.label + comp_label = flow.component.label if hasattr(flow.component, 'label') else str(flow.component) + + if flow.is_input_in_component: + source = bus_label + target = comp_label + else: + source = comp_label + target = bus_label + + nodes.add(source) + nodes.add(target) + links['source'].append(source) + links['target'].append(target) + links['value'].append(abs(value)) + links['label'].append(label) + + node_list = list(nodes) + node_indices = {n: i for i, n in enumerate(node_list)} + + color_map = process_colors(colors, node_list) + node_colors = [color_map[node] for node in node_list] + + fig = go.Figure( + data=[ + go.Sankey( + node=dict( + pad=15, thickness=20, line=dict(color='black', width=0.5), label=node_list, color=node_colors + ), + link=dict( + source=[node_indices[s] for s in links['source']], + target=[node_indices[t] for t in links['target']], + value=links['value'], + label=links['label'], + ), + ) + ] + ) + fig.update_layout(title='Energy Flow Sankey', **plotly_kwargs) + + sankey_ds = xr.Dataset( + {'value': ('link', links['value'])}, + coords={'link': links['label'], 'source': ('link', links['source']), 'target': ('link', links['target'])}, + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=sankey_ds, figure=fig) + + def sizes( + self, + *, + max_size: float | None = 1e6, + select: SelectType | None = None, + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot investment sizes (capacities) of flows. + + Args: + max_size: Maximum size to include (filters defaults). + select: xarray-style selection. + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display. + + Returns: + PlotResult with size data. + """ + self._stats._require_solution() + ds = self._stats.sizes + + ds = _apply_selection(ds, select) + + if max_size is not None and ds.data_vars: + valid_labels = [lbl for lbl in ds.data_vars if float(ds[lbl].max()) < max_size] + ds = ds[valid_labels] + + actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + + df = _dataset_to_long_df(ds) + if df.empty: + fig = go.Figure() + else: + variables = df['variable'].unique().tolist() + color_map = process_colors(colors, variables) + fig = px.bar( + df, + x='variable', + y='value', + color='variable', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + color_discrete_map=color_map, + title='Investment Sizes', + labels={'variable': 'Flow', 'value': 'Size'}, + **plotly_kwargs, + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=ds, figure=fig) + + def duration_curve( + self, + variables: str | list[str], + *, + select: SelectType | None = None, + normalize: bool = False, + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot load duration curves (sorted time series). + + Args: + variables: Flow label(s) to plot (e.g., 'Boiler(Q_th)'). + Uses flow_rates from statistics. + select: xarray-style selection. + normalize: If True, normalize x-axis to 0-100%. + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display. + + Returns: + PlotResult with sorted duration curve data. + """ + self._stats._require_solution() + + if isinstance(variables, str): + variables = [variables] + + # Use flow_rates from statistics (already has clean labels without |flow_rate suffix) + ds = self._stats.flow_rates[variables] + ds = _apply_selection(ds, select) + + if 'time' not in ds.dims: + raise ValueError('Duration curve requires time dimension') + + def sort_descending(arr: np.ndarray) -> np.ndarray: + return np.sort(arr)[::-1] + + result_ds = xr.apply_ufunc( + sort_descending, + ds, + input_core_dims=[['time']], + output_core_dims=[['time']], + vectorize=True, + ) + + duration_name = 'duration_pct' if normalize else 'duration' + result_ds = result_ds.rename({'time': duration_name}) + + n_timesteps = result_ds.sizes[duration_name] + duration_coord = np.linspace(0, 100, n_timesteps) if normalize else np.arange(n_timesteps) + result_ds = result_ds.assign_coords({duration_name: duration_coord}) + + actual_facet_col, actual_facet_row = _resolve_facets(result_ds, facet_col, facet_row) + + fig = _create_line( + result_ds, + colors=colors, + title='Duration Curve', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + **plotly_kwargs, + ) + + x_label = 'Duration [%]' if normalize else 'Timesteps' + fig.update_xaxes(title_text=x_label) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=result_ds, figure=fig) + + def effects( + self, + aspect: Literal['total', 'temporal', 'periodic'] = 'total', + *, + effect: str | None = None, + by: Literal['component', 'contributor', 'time'] = 'component', + select: SelectType | None = None, + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot effect (cost, emissions, etc.) breakdown. + + Args: + aspect: Which aspect to plot - 'total', 'temporal', or 'periodic'. + effect: Specific effect name to plot (e.g., 'costs', 'CO2'). + If None, plots all effects. + by: Group by 'component', 'contributor' (individual flows), or 'time'. + select: xarray-style selection. + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets (ignored if not in data). + facet_row: Dimension for row facets (ignored if not in data). + show: Whether to display. + + Returns: + PlotResult with effect breakdown data. + + Examples: + >>> flow_system.statistics.plot.effects() # Total of all effects by component + >>> flow_system.statistics.plot.effects(effect='costs') # Just costs + >>> flow_system.statistics.plot.effects(by='contributor') # By individual flows + >>> flow_system.statistics.plot.effects(aspect='temporal', by='time') # Over time + """ + self._stats._require_solution() + + # Get the appropriate effects dataset based on aspect + if aspect == 'total': + effects_ds = self._stats.total_effects + elif aspect == 'temporal': + effects_ds = self._stats.temporal_effects + elif aspect == 'periodic': + effects_ds = self._stats.periodic_effects + else: + raise ValueError(f"Aspect '{aspect}' not valid. Choose from 'total', 'temporal', 'periodic'.") + + # Get available effects (data variables in the dataset) + available_effects = list(effects_ds.data_vars) + + # Filter to specific effect if requested + if effect is not None: + if effect not in available_effects: + raise ValueError(f"Effect '{effect}' not found. Available: {available_effects}") + effects_to_plot = [effect] + else: + effects_to_plot = available_effects + + # Build a combined DataArray with effect dimension + effect_arrays = [] + for eff in effects_to_plot: + da = effects_ds[eff] + if by == 'contributor': + # Keep individual contributors (flows) - no groupby + effect_arrays.append(da.expand_dims(effect=[eff])) + else: + # Group by component (sum over contributor within each component) + da_grouped = da.groupby('component').sum() + effect_arrays.append(da_grouped.expand_dims(effect=[eff])) + + combined = xr.concat(effect_arrays, dim='effect') + + # Apply selection + combined = _apply_selection(combined.to_dataset(name='value'), select)['value'] + + # Group by the specified dimension + if by == 'component': + # Sum over time if present + if 'time' in combined.dims: + combined = combined.sum(dim='time') + x_col = 'component' + color_col = 'effect' if len(effects_to_plot) > 1 else 'component' + elif by == 'contributor': + # Sum over time if present + if 'time' in combined.dims: + combined = combined.sum(dim='time') + x_col = 'contributor' + color_col = 'effect' if len(effects_to_plot) > 1 else 'contributor' + elif by == 'time': + if 'time' not in combined.dims: + raise ValueError(f"Cannot plot by 'time' for aspect '{aspect}' - no time dimension.") + # Sum over components or contributors + if 'component' in combined.dims: + combined = combined.sum(dim='component') + if 'contributor' in combined.dims: + combined = combined.sum(dim='contributor') + x_col = 'time' + color_col = 'effect' if len(effects_to_plot) > 1 else None + else: + raise ValueError(f"'by' must be one of 'component', 'contributor', 'time', got {by!r}") + + # Resolve facets + actual_facet_col, actual_facet_row = _resolve_facets(combined.to_dataset(name='value'), facet_col, facet_row) + + # Convert to DataFrame for plotly express + df = combined.to_dataframe(name='value').reset_index() + + # Build color map + if color_col and color_col in df.columns: + color_items = df[color_col].unique().tolist() + color_map = process_colors(colors, color_items) + else: + color_map = None + + # Build title + effect_label = effect if effect else 'Effects' + title = f'{effect_label} ({aspect}) by {by}' + + fig = px.bar( + df, + x=x_col, + y='value', + color=color_col, + color_discrete_map=color_map, + facet_col=actual_facet_col, + facet_row=actual_facet_row, + title=title, + **plotly_kwargs, + ) + fig.update_layout(bargap=0, bargroupgap=0) + fig.update_traces(marker_line_width=0) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=combined.to_dataset(name=aspect), figure=fig) diff --git a/flixopt/structure.py b/flixopt/structure.py index 732dcfeae..8bec197bc 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -7,6 +7,7 @@ import inspect import logging +import pathlib import re from dataclasses import dataclass from difflib import get_close_matches @@ -28,7 +29,6 @@ from .core import FlowSystemDimensions, TimeSeriesData, get_dataarray_stats if TYPE_CHECKING: # for type checking and preventing circular imports - import pathlib from collections.abc import Collection, ItemsView, Iterator from .effects import EffectCollectionModel @@ -838,18 +838,29 @@ def to_dataset(self) -> xr.Dataset: f'Original Error: {e}' ) from e - def to_netcdf(self, path: str | pathlib.Path, compression: int = 0): + def to_netcdf(self, path: str | pathlib.Path, compression: int = 0, overwrite: bool = True): """ Save the object to a NetCDF file. Args: - path: Path to save the NetCDF file + path: Path to save the NetCDF file. Parent directories are created if they don't exist. compression: Compression level (0-9) + overwrite: If True (default), overwrite existing file. If False, raise error if file exists. Raises: + FileExistsError: If overwrite=False and file already exists. ValueError: If serialization fails IOError: If file cannot be written """ + path = pathlib.Path(path) + + # Check if file exists (unless overwrite is True) + if not overwrite and path.exists(): + raise FileExistsError(f'File already exists: {path}. Use overwrite=True to overwrite existing file.') + + # Create parent directories if they don't exist + path.parent.mkdir(parents=True, exist_ok=True) + try: ds = self.to_dataset() fx_io.save_dataset_to_netcdf(ds, path, compression=compression) diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py new file mode 100644 index 000000000..de4f83685 --- /dev/null +++ b/flixopt/topology_accessor.py @@ -0,0 +1,302 @@ +""" +Topology accessor for FlowSystem. + +This module provides the TopologyAccessor class that enables the +`flow_system.topology` pattern for network structure inspection and visualization. +""" + +from __future__ import annotations + +import logging +import pathlib +import warnings +from itertools import chain +from typing import TYPE_CHECKING, Literal + +if TYPE_CHECKING: + import pyvis + + from .flow_system import FlowSystem + +logger = logging.getLogger('flixopt') + + +def _plot_network( + node_infos: dict, + edge_infos: dict, + path: str | pathlib.Path | None = None, + controls: bool + | list[ + Literal['nodes', 'edges', 'layout', 'interaction', 'manipulation', 'physics', 'selection', 'renderer'] + ] = True, + show: bool = False, +) -> pyvis.network.Network | None: + """Visualize network structure using PyVis. + + Args: + node_infos: Dictionary of node information. + edge_infos: Dictionary of edge information. + path: Path to save HTML visualization. + controls: UI controls to add. True for all, or list of specific controls. + show: Whether to open in browser. + + Returns: + Network instance, or None if pyvis not installed. + """ + try: + from pyvis.network import Network + except ImportError: + logger.critical("Plotting the flow system network was not possible. Please install pyvis: 'pip install pyvis'") + return None + + net = Network(directed=True, height='100%' if controls is False else '800px', font_color='white') + + for node_id, node in node_infos.items(): + net.add_node( + node_id, + label=node['label'], + shape={'Bus': 'circle', 'Component': 'box'}[node['class']], + color={'Bus': '#393E46', 'Component': '#00ADB5'}[node['class']], + title=node['infos'].replace(')', '\n)'), + font={'size': 14}, + ) + + for edge in edge_infos.values(): + net.add_edge( + edge['start'], + edge['end'], + label=edge['label'], + title=edge['infos'].replace(')', '\n)'), + font={'color': '#4D4D4D', 'size': 14}, + color='#222831', + ) + + net.barnes_hut(central_gravity=0.8, spring_length=50, spring_strength=0.05, gravity=-10000) + + if controls: + net.show_buttons(filter_=controls) + if not show and not path: + return net + elif path: + path = pathlib.Path(path) if isinstance(path, str) else path + net.write_html(path.as_posix()) + elif show: + path = pathlib.Path('network.html') + net.write_html(path.as_posix()) + + if show: + try: + import webbrowser + + worked = webbrowser.open(f'file://{path.resolve()}', 2) + if not worked: + logger.error(f'Showing the network in the Browser went wrong. Open it manually. Its saved under {path}') + except Exception as e: + logger.error( + f'Showing the network in the Browser went wrong. Open it manually. Its saved under {path}: {e}' + ) + + return net + + +class TopologyAccessor: + """ + Accessor for network topology inspection and visualization on FlowSystem. + + This class provides the topology API for FlowSystem, accessible via + `flow_system.topology`. It offers methods to inspect the network structure + and visualize it. + + Examples: + Visualize the network: + + >>> flow_system.topology.plot() + >>> flow_system.topology.plot(path='my_network.html', show=True) + + Interactive visualization: + + >>> flow_system.topology.start_app() + >>> # ... interact with the visualization ... + >>> flow_system.topology.stop_app() + + Get network structure info: + + >>> nodes, edges = flow_system.topology.infos() + """ + + def __init__(self, flow_system: FlowSystem) -> None: + """ + Initialize the accessor with a reference to the FlowSystem. + + Args: + flow_system: The FlowSystem to inspect. + """ + self._fs = flow_system + + def infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: + """ + Get network topology information as dictionaries. + + Returns node and edge information suitable for visualization or analysis. + + Returns: + Tuple of (nodes_dict, edges_dict) where: + - nodes_dict maps node labels to their properties (label, class, infos) + - edges_dict maps edge labels to their properties (label, start, end, infos) + + Examples: + >>> nodes, edges = flow_system.topology.infos() + >>> print(nodes.keys()) # All component and bus labels + >>> print(edges.keys()) # All flow labels + """ + from .elements import Bus + + if not self._fs.connected_and_transformed: + self._fs.connect_and_transform() + + nodes = { + node.label_full: { + 'label': node.label, + 'class': 'Bus' if isinstance(node, Bus) else 'Component', + 'infos': node.__str__(), + } + for node in chain(self._fs.components.values(), self._fs.buses.values()) + } + + edges = { + flow.label_full: { + 'label': flow.label, + 'start': flow.bus if flow.is_input_in_component else flow.component, + 'end': flow.component if flow.is_input_in_component else flow.bus, + 'infos': flow.__str__(), + } + for flow in self._fs.flows.values() + } + + return nodes, edges + + def plot( + self, + path: bool | str | pathlib.Path = 'flow_system.html', + controls: bool + | list[ + Literal['nodes', 'edges', 'layout', 'interaction', 'manipulation', 'physics', 'selection', 'renderer'] + ] = True, + show: bool | None = None, + ) -> pyvis.network.Network | None: + """ + Visualize the network structure using PyVis, saving it as an interactive HTML file. + + Args: + path: Path to save the HTML visualization. + - `False`: Visualization is created but not saved. + - `str` or `Path`: Specifies file path (default: 'flow_system.html'). + controls: UI controls to add to the visualization. + - `True`: Enables all available controls. + - `List`: Specify controls, e.g., ['nodes', 'layout']. + - Options: 'nodes', 'edges', 'layout', 'interaction', 'manipulation', + 'physics', 'selection', 'renderer'. + show: Whether to open the visualization in the web browser. + + Returns: + The `pyvis.network.Network` instance representing the visualization, + or `None` if `pyvis` is not installed. + + Examples: + >>> flow_system.topology.plot() + >>> flow_system.topology.plot(show=False) + >>> flow_system.topology.plot(path='output/network.html', controls=['nodes', 'layout']) + + Notes: + This function requires `pyvis`. If not installed, the function prints + a warning and returns `None`. + Nodes are styled based on type (circles for buses, boxes for components) + and annotated with node information. + """ + from .config import CONFIG + + node_infos, edge_infos = self.infos() + # Normalize path=False to None for _plot_network compatibility + normalized_path = None if path is False else path + return _plot_network( + node_infos, + edge_infos, + normalized_path, + controls, + show if show is not None else CONFIG.Plotting.default_show, + ) + + def start_app(self) -> None: + """ + Start an interactive network visualization using Dash and Cytoscape. + + Launches a web-based interactive visualization server that allows + exploring the network structure dynamically. + + Raises: + ImportError: If required dependencies are not installed. + + Examples: + >>> flow_system.topology.start_app() + >>> # ... interact with the visualization in browser ... + >>> flow_system.topology.stop_app() + + Notes: + Requires optional dependencies: dash, dash-cytoscape, dash-daq, + networkx, flask, werkzeug. + Install with: `pip install flixopt[network_viz]` or `pip install flixopt[full]` + """ + from .network_app import DASH_CYTOSCAPE_AVAILABLE, VISUALIZATION_ERROR, flow_graph, shownetwork + + warnings.warn( + 'The network visualization is still experimental and might change in the future.', + stacklevel=2, + category=UserWarning, + ) + + if not DASH_CYTOSCAPE_AVAILABLE: + raise ImportError( + f'Network visualization requires optional dependencies. ' + f'Install with: `pip install flixopt[network_viz]`, `pip install flixopt[full]` ' + f'or: `pip install dash dash-cytoscape dash-daq networkx werkzeug`. ' + f'Original error: {VISUALIZATION_ERROR}' + ) + + if not self._fs._connected_and_transformed: + self._fs._connect_network() + + if self._fs._network_app is not None: + logger.warning('The network app is already running. Restarting it.') + self.stop_app() + + self._fs._network_app = shownetwork(flow_graph(self._fs)) + + def stop_app(self) -> None: + """ + Stop the interactive network visualization server. + + Examples: + >>> flow_system.topology.stop_app() + """ + from .network_app import DASH_CYTOSCAPE_AVAILABLE, VISUALIZATION_ERROR + + if not DASH_CYTOSCAPE_AVAILABLE: + raise ImportError( + f'Network visualization requires optional dependencies. ' + f'Install with: `pip install flixopt[network_viz]`, `pip install flixopt[full]` ' + f'or: `pip install dash dash-cytoscape dash-daq networkx werkzeug`. ' + f'Original error: {VISUALIZATION_ERROR}' + ) + + if self._fs._network_app is None: + logger.warning("No network app is currently running. Can't stop it") + return + + try: + logger.info('Stopping network visualization server...') + self._fs._network_app.server_instance.shutdown() + logger.info('Network visualization stopped.') + except Exception as e: + logger.error(f'Failed to stop the network visualization app: {e}') + finally: + self._fs._network_app = None diff --git a/mkdocs.yml b/mkdocs.yml index 58abb684f..f966e76f7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -26,6 +26,7 @@ nav: - Building Models: user-guide/building-models/index.md - Running Optimizations: user-guide/optimization/index.md - Analyzing Results: user-guide/results/index.md + - Plotting Results: user-guide/results-plotting.md - Mathematical Notation: - Overview: user-guide/mathematical-notation/index.md - Bus: user-guide/mathematical-notation/elements/Bus.md diff --git a/tests/test_effect.py b/tests/test_effect.py index 1876761ee..7dcac9e1c 100644 --- a/tests/test_effect.py +++ b/tests/test_effect.py @@ -9,7 +9,6 @@ assert_sets_equal, assert_var_equal, create_linopy_model, - create_optimization_and_solve, ) @@ -225,10 +224,7 @@ def test_shares(self, basic_flow_system_linopy_coords, coords_config): class TestEffectResults: - @pytest.mark.deprecated_api - @pytest.mark.filterwarnings('ignore:Results is deprecated:DeprecationWarning:flixopt') - @pytest.mark.filterwarnings('ignore:Optimization is deprecated:DeprecationWarning:flixopt') - def test_shares(self, basic_flow_system_linopy_coords, coords_config): + def test_shares(self, basic_flow_system_linopy_coords, coords_config, highs_solver): flow_system = basic_flow_system_linopy_coords effect1 = fx.Effect('Effect1', '€', 'Testing Effect', share_from_temporal={'costs': 0.5}) effect2 = fx.Effect( @@ -261,7 +257,10 @@ def test_shares(self, basic_flow_system_linopy_coords, coords_config): ), ) - results = create_optimization_and_solve(flow_system, fx.solvers.HighsSolver(0.01, 60), 'Sim1').results + flow_system.optimize(highs_solver) + + # Use the new statistics accessor + statistics = flow_system.statistics effect_share_factors = { 'temporal': { @@ -278,71 +277,72 @@ def test_shares(self, basic_flow_system_linopy_coords, coords_config): }, } for key, value in effect_share_factors['temporal'].items(): - np.testing.assert_allclose(results.effect_share_factors['temporal'][key].values, value) + np.testing.assert_allclose(statistics.effect_share_factors['temporal'][key].values, value) for key, value in effect_share_factors['periodic'].items(): - np.testing.assert_allclose(results.effect_share_factors['periodic'][key].values, value) + np.testing.assert_allclose(statistics.effect_share_factors['periodic'][key].values, value) + # Temporal effects checks using new API xr.testing.assert_allclose( - results.effects_per_component['temporal'].sum('component').sel(effect='costs', drop=True), - results.solution['costs(temporal)|per_timestep'].fillna(0), + statistics.temporal_effects['costs'].sum('contributor'), + flow_system.solution['costs(temporal)|per_timestep'].fillna(0), ) xr.testing.assert_allclose( - results.effects_per_component['temporal'].sum('component').sel(effect='Effect1', drop=True), - results.solution['Effect1(temporal)|per_timestep'].fillna(0), + statistics.temporal_effects['Effect1'].sum('contributor'), + flow_system.solution['Effect1(temporal)|per_timestep'].fillna(0), ) xr.testing.assert_allclose( - results.effects_per_component['temporal'].sum('component').sel(effect='Effect2', drop=True), - results.solution['Effect2(temporal)|per_timestep'].fillna(0), + statistics.temporal_effects['Effect2'].sum('contributor'), + flow_system.solution['Effect2(temporal)|per_timestep'].fillna(0), ) xr.testing.assert_allclose( - results.effects_per_component['temporal'].sum('component').sel(effect='Effect3', drop=True), - results.solution['Effect3(temporal)|per_timestep'].fillna(0), + statistics.temporal_effects['Effect3'].sum('contributor'), + flow_system.solution['Effect3(temporal)|per_timestep'].fillna(0), ) - # periodic mode checks + # Periodic effects checks using new API xr.testing.assert_allclose( - results.effects_per_component['periodic'].sum('component').sel(effect='costs', drop=True), - results.solution['costs(periodic)'], + statistics.periodic_effects['costs'].sum('contributor'), + flow_system.solution['costs(periodic)'], ) xr.testing.assert_allclose( - results.effects_per_component['periodic'].sum('component').sel(effect='Effect1', drop=True), - results.solution['Effect1(periodic)'], + statistics.periodic_effects['Effect1'].sum('contributor'), + flow_system.solution['Effect1(periodic)'], ) xr.testing.assert_allclose( - results.effects_per_component['periodic'].sum('component').sel(effect='Effect2', drop=True), - results.solution['Effect2(periodic)'], + statistics.periodic_effects['Effect2'].sum('contributor'), + flow_system.solution['Effect2(periodic)'], ) xr.testing.assert_allclose( - results.effects_per_component['periodic'].sum('component').sel(effect='Effect3', drop=True), - results.solution['Effect3(periodic)'], + statistics.periodic_effects['Effect3'].sum('contributor'), + flow_system.solution['Effect3(periodic)'], ) - # Total mode checks + # Total effects checks using new API xr.testing.assert_allclose( - results.effects_per_component['total'].sum('component').sel(effect='costs', drop=True), - results.solution['costs'], + statistics.total_effects['costs'].sum('contributor'), + flow_system.solution['costs'], ) xr.testing.assert_allclose( - results.effects_per_component['total'].sum('component').sel(effect='Effect1', drop=True), - results.solution['Effect1'], + statistics.total_effects['Effect1'].sum('contributor'), + flow_system.solution['Effect1'], ) xr.testing.assert_allclose( - results.effects_per_component['total'].sum('component').sel(effect='Effect2', drop=True), - results.solution['Effect2'], + statistics.total_effects['Effect2'].sum('contributor'), + flow_system.solution['Effect2'], ) xr.testing.assert_allclose( - results.effects_per_component['total'].sum('component').sel(effect='Effect3', drop=True), - results.solution['Effect3'], + statistics.total_effects['Effect3'].sum('contributor'), + flow_system.solution['Effect3'], ) @@ -351,7 +351,6 @@ class TestPenaltyAsObjective: def test_penalty_cannot_be_created_as_objective(self): """Test that creating a Penalty effect with is_objective=True raises ValueError.""" - import pytest with pytest.raises(ValueError, match='Penalty.*cannot be set as the objective'): fx.Effect('Penalty', '€', 'Test Penalty', is_objective=True) @@ -359,7 +358,6 @@ def test_penalty_cannot_be_created_as_objective(self): def test_penalty_cannot_be_set_as_objective_via_setter(self): """Test that setting Penalty as objective via setter raises ValueError.""" import pandas as pd - import pytest # Create a fresh flow system without pre-existing objective flow_system = fx.FlowSystem(timesteps=pd.date_range('2020-01-01', periods=10, freq='h')) diff --git a/tests/test_flow_system_resample.py b/tests/test_flow_system_resample.py index f25949c98..3da206646 100644 --- a/tests/test_flow_system_resample.py +++ b/tests/test_flow_system_resample.py @@ -186,8 +186,6 @@ def test_invest_resample(complex_fs): # === Modeling Integration === -@pytest.mark.deprecated_api -@pytest.mark.filterwarnings('ignore:Optimization is deprecated:DeprecationWarning:flixopt') @pytest.mark.parametrize('with_dim', [None, 'periods', 'scenarios']) def test_modeling(with_dim): """Test resampled FlowSystem can be modeled.""" @@ -208,15 +206,12 @@ def test_modeling(with_dim): ) fs_r = fs.resample('4h', method='mean') - calc = fx.Optimization('test', fs_r) - calc.do_modeling() + fs_r.build_model() - assert calc.model is not None - assert len(calc.model.variables) > 0 + assert fs_r.model is not None + assert len(fs_r.model.variables) > 0 -@pytest.mark.deprecated_api -@pytest.mark.filterwarnings('ignore:Optimization is deprecated:DeprecationWarning:flixopt') def test_model_structure_preserved(): """Test model structure (var/constraint types) preserved.""" ts = pd.date_range('2023-01-01', periods=48, freq='h') @@ -229,22 +224,18 @@ def test_model_structure_preserved(): fx.Source(label='s', outputs=[fx.Flow(label='out', bus='h', size=100, effects_per_flow_hour={'costs': 0.05})]), ) - calc_orig = fx.Optimization('orig', fs) - calc_orig.do_modeling() + fs.build_model() fs_r = fs.resample('4h', method='mean') - calc_r = fx.Optimization('resamp', fs_r) - calc_r.do_modeling() + fs_r.build_model() # Same number of variable/constraint types - assert len(calc_orig.model.variables) == len(calc_r.model.variables) - assert len(calc_orig.model.constraints) == len(calc_r.model.constraints) + assert len(fs.model.variables) == len(fs_r.model.variables) + assert len(fs.model.constraints) == len(fs_r.model.constraints) # Same names - assert set(calc_orig.model.variables.labels.data_vars.keys()) == set(calc_r.model.variables.labels.data_vars.keys()) - assert set(calc_orig.model.constraints.labels.data_vars.keys()) == set( - calc_r.model.constraints.labels.data_vars.keys() - ) + assert set(fs.model.variables.labels.data_vars.keys()) == set(fs_r.model.variables.labels.data_vars.keys()) + assert set(fs.model.constraints.labels.data_vars.keys()) == set(fs_r.model.constraints.labels.data_vars.keys()) # === Advanced Features === diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index d80169773..e5c96da33 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -347,12 +347,12 @@ def test_reshape_none_preserves_data(self, long_time_data): assert 'time' in reshaped.dims xr.testing.assert_equal(reshaped, long_time_data) - def test_heatmap_with_plotly(self, long_time_data): + def test_heatmap_with_plotly_v2(self, long_time_data): """Test heatmap plotting with Plotly.""" - # Convert to Dataset for plotting - data = long_time_data.to_dataset(name='power') + # Reshape data first (heatmap_with_plotly_v2 requires pre-reshaped data) + reshaped = plotting.reshape_data_for_heatmap(long_time_data, reshape_time=('D', 'h')) - fig = plotting.heatmap_with_plotly(data['power'], reshape_time=('D', 'h')) + fig = plotting.heatmap_with_plotly_v2(reshaped) assert fig is not None def test_heatmap_with_matplotlib(self, long_time_data): diff --git a/tests/test_topology_accessor.py b/tests/test_topology_accessor.py new file mode 100644 index 000000000..b1e3fdf31 --- /dev/null +++ b/tests/test_topology_accessor.py @@ -0,0 +1,126 @@ +"""Tests for the TopologyAccessor class.""" + +import tempfile +from pathlib import Path + +import pytest + +import flixopt as fx + + +@pytest.fixture +def flow_system(simple_flow_system): + """Get a simple flow system for testing.""" + if isinstance(simple_flow_system, fx.FlowSystem): + return simple_flow_system + return simple_flow_system[0] + + +class TestTopologyInfos: + """Tests for topology.infos() method.""" + + def test_infos_returns_tuple(self, flow_system): + """Test that infos() returns a tuple of two dicts.""" + result = flow_system.topology.infos() + assert isinstance(result, tuple) + assert len(result) == 2 + nodes, edges = result + assert isinstance(nodes, dict) + assert isinstance(edges, dict) + + def test_infos_nodes_have_correct_structure(self, flow_system): + """Test that nodes have label, class, and infos keys.""" + nodes, _ = flow_system.topology.infos() + for node_data in nodes.values(): + assert 'label' in node_data + assert 'class' in node_data + assert 'infos' in node_data + assert node_data['class'] in ('Bus', 'Component') + + def test_infos_edges_have_correct_structure(self, flow_system): + """Test that edges have label, start, end, and infos keys.""" + _, edges = flow_system.topology.infos() + for edge_data in edges.values(): + assert 'label' in edge_data + assert 'start' in edge_data + assert 'end' in edge_data + assert 'infos' in edge_data + + def test_infos_contains_all_elements(self, flow_system): + """Test that infos contains all components, buses, and flows.""" + nodes, edges = flow_system.topology.infos() + + # Check components + for comp in flow_system.components.values(): + assert comp.label in nodes + + # Check buses + for bus in flow_system.buses.values(): + assert bus.label in nodes + + # Check flows + for flow in flow_system.flows.values(): + assert flow.label_full in edges + + +class TestTopologyPlot: + """Tests for topology.plot() method.""" + + def test_plot_returns_network_or_none(self, flow_system): + """Test that plot() returns a pyvis Network or None.""" + try: + import pyvis + + result = flow_system.topology.plot(path=False, show=False) + assert result is None or isinstance(result, pyvis.network.Network) + except ImportError: + # pyvis not installed, should return None + result = flow_system.topology.plot(path=False, show=False) + assert result is None + + def test_plot_creates_html_file(self, flow_system): + """Test that plot() creates an HTML file when path is specified.""" + pytest.importorskip('pyvis') + + with tempfile.TemporaryDirectory() as tmpdir: + html_path = Path(tmpdir) / 'network.html' + flow_system.topology.plot(path=str(html_path), show=False) + assert html_path.exists() + content = html_path.read_text() + assert '' in content.lower() or ' Date: Mon, 8 Dec 2025 14:05:18 +0100 Subject: [PATCH 28/88] Add carrier and color management MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add planning doc * Finalize planning * Add plotting acessor * Add plotting acessor * Add tests * Improve * Improve * Update docs * Updated the plotting API so that .data always returns xarray DataArray or Dataset instead of pandas DataFrame. * All .data now returns xr.Dataset consistently. * Fixed Inconsistencies and Unused Parameters * New Plot Accessors results.plot.variable(pattern) Plots the same variable type across multiple elements for easy comparison. # All binary operation states across all components results.plot.variable('on') # All flow_rates, filtered to Boiler-related elements results.plot.variable('flow_rate', include='Boiler') # All storage charge states results.plot.variable('charge_state') # With aggregation results.plot.variable('flow_rate', aggregate='sum') Key features: - Searches all elements for variables matching the pattern - Filter with include/exclude on element names - Supports aggregation, faceting, and animation - Returns Dataset with element names as variables results.plot.duration_curve(variables) Plots load duration curves (sorted time series) showing utilization patterns. # Single variable results.plot.duration_curve('Boiler(Q_th)|flow_rate') # Multiple variables results.plot.duration_curve(['CHP|on', 'Boiler|on']) # Normalized x-axis (0-100%) results.plot.duration_curve('demand', normalize=True) Key features: - Sorts values from highest to lowest - Shows how often each power level is reached - normalize=True shows percentage of time on x-axis - Returns Dataset with duration_hours or duration_pct dimension * Fix duration curve * Fix duration curve * Fix duration curve * Fix duration curve * xr.apply_ufunc to sort along the time axis while preserving all other dimensions automatically * ⏺ The example runs successfully. Now let me summarize the fixes: Summary of Fixes I addressed the actionable code review comments from CodeRabbitAI: 1. Documentation Issue - reshape parameter name ✓ (No fix needed) The CodeRabbitAI comment was incorrect. The public API parameter in PlotAccessor.heatmap() is correctly named reshape (line 335). The reshape_time parameter exists in the lower-level heatmap_with_plotly function, but the documentation correctly shows the public API parameter. 2. Fixed simple_example.py (lines 129-130) Problem: The example called balance() and duration_curve() without required arguments, which would cause TypeError at runtime. Fix: Added the required arguments: - optimization.results.plot.balance('Fernwärme') - specifying the bus to plot - optimization.results.plot.duration_curve('Boiler(Q_th)|flow_rate') - specifying the variable to plot 3. Fixed variable collision in plot_accessors.py (lines 985-988) Problem: When building the Dataset in the variable() method, using element names as keys could cause collisions if multiple variables from the same element matched the pattern (e.g., 'Boiler|flow_rate' and 'Boiler|flow_rate_max' would both map to 'Boiler', with the latter silently overwriting the former). Fix: Changed to use the full variable names as keys instead of just element names: ds = xr.Dataset({var_name: self._results.solution[var_name] for var_name in filtered_vars}) All tests pass (40 passed, 1 skipped) and the example runs successfully. * make variable names public in results * Fix sankey * Fix effects() * Fix effects * Remove bargaps * made faceting consistent across all plot methods: | Method | facet_col | facet_row | |------------------|-------------------------------------------|-----------------------------| | balance() | 'scenario' | 'period' | | heatmap() | 'scenario' | 'period' | | storage() | 'scenario' | 'period' | | flows() | 'scenario' | 'period' | | effects() | 'scenario' | 'period' | | variable() | 'scenario' | 'period' | | duration_curve() | 'scenario' | 'period' (already had this) | | compare() | N/A (uses its own mode='overlay'/'facet') | | | sankey() | N/A (aggregates to single diagram) | | Removed animate_by parameter from all methods * Update storage method * Remove mode parameter for simpli | Method | Default mode | |------------------|---------------------------------------------------| | balance() | stacked_bar | | storage() | stacked_bar (flows) + line (charge state overlay) | | flows() | line | | variable() | line | | duration_curve() | line | | effects() | bar | * Make plotting_accessors.py more self contained * Use faster to_long() * Add 0-dim case * sankey diagram now properly handles scenarios and periods: Changes made: 1. Period aggregation with weights: Uses period_weights from flow_system to properly weight periods by their duration 2. Scenario aggregation with weights: Uses normalized scenario_weights to compute a weighted average across scenarios 3. Selection support: Users can filter specific scenarios/periods via select parameter before aggregation Weighting logic: - Periods (for aggregate='sum'): (da * period_weights).sum(dim='period') - this gives the total energy across all periods weighted by their duration - Periods (for aggregate='mean'): (da * period_weights).sum(dim='period') / period_weights.sum() - weighted mean - Scenarios: Always uses normalized weights (sum to 1) for weighted averaging, since scenarios represent probability-weighted alternatives * Add colors to sankey * Add sizes * Add size filtering * Include storage sizes * Remove storage sizes * Add charge state and status accessor * Summary of Changes 1. Added new methods to PlotAccessor (plot_accessors.py) charge_states() (line 658): - Returns a Dataset with each storage's charge state as a variable - Supports filtering with include/exclude parameters - Default plot: line chart on_states() (line 753): - Returns a Dataset with each component's |status variable - Supports filtering with include/exclude parameters - Default plot: heatmap (good for binary data visualization) 2. Added data building helper functions (plot_accessors.py) build_flow_rates(results) (line 315): - Builds a DataArray containing flow rates for all flows - Used internally by PlotAccessor methods build_flow_hours(results) (line 333): - Builds a DataArray containing flow hours for all flows build_sizes(results) (line 347): - Builds a DataArray containing sizes for all flows _filter_dataarray_by_coord(da, **kwargs) (line 284): - Helper for filtering DataArrays by coordinate values 3. Deprecated old Results methods (results.py) The following methods now emit DeprecationWarning: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 4. Updated PlotAccessor methods to use new helpers - flows() now uses build_flow_rates() / build_flow_hours() directly - sizes() now uses build_sizes() directly - sankey() now uses build_flow_hours() directly This ensures the deprecation warnings only fire when users directly call the old methods, not when using the plot accessor * 1. New methods added to PlotAccessor - charge_states(): Returns Dataset with all storage charge states - on_states(): Returns Dataset with all component status variables (heatmap display) 2. Data building helper functions (plot_accessors.py) - build_flow_rates(results): Builds DataArray of flow rates - build_flow_hours(results): Builds DataArray of flow hours - build_sizes(results): Builds DataArray of sizes - _filter_dataarray_by_coord(da, **kwargs): Filter helper - _assign_flow_coords(da, results): Add flow coordinates 3. Caching in PlotAccessor Added lazy-cached properties for expensive computations: - _all_flow_rates - cached DataArray of all flow rates - _all_flow_hours - cached DataArray of all flow hours - _all_sizes - cached DataArray of all sizes - _all_charge_states - cached Dataset of all storage charge states - _all_status_vars - cached Dataset of all status variables 4. Deprecated methods in Results class Added deprecation warnings to: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 5. Updated PlotAccessor methods to use cached properties - flows() uses _all_flow_rates / _all_flow_hours - sankey() uses _all_flow_hours - sizes() uses _all_sizes - charge_states() uses _all_charge_states - on_states() uses _all_status_vars * Move deprectated functionality into results.py instead of porting to the new module * Revert to simply deprectae old methods without forwarding to new code * Remove planning file * Update plotting methods for new datasets * 1. Renamed data properties in PlotAccessor to use all_ prefix: - all_flow_rates - All flow rates as Dataset - all_flow_hours - All flow hours as Dataset - all_sizes - All flow sizes as Dataset - all_charge_states - All storage charge states as Dataset - all_on_states - All component on/off status as Dataset 2. Updated internal references - All usages in flows(), sankey(), sizes(), charge_states(), and on_states() methods now use the new names. 3. Updated deprecation messages in results.py to point to the new API: - results.flow_rates() → results.plot.all_flow_rates - results.flow_hours() → results.plot.all_flow_hours - results.sizes() → results.plot.all_sizes 4. Updated docstring examples in PlotAccessor to use the new all_* names. * Update deprecations messages * Update deprecations messages * Thsi seems much better. * Updaet docstrings and variable name generation in plotting acessor * Change __ to _ in private dataset caching * Revert breaking io changes * New solution storing interface * Add new focused statistics and plot accessors * Renamed all properties: - all_flow_rates → flow_rates - all_flow_hours → flow_hours - all_sizes → sizes - all_charge_states → charge_states * Cache Statistics * Invalidate caches * Add effect related statistics * Simplify statistics accessor to rely on flow_system directly instead of solution attrs * Fix heatma fallback for 1D Data * Add topology accessor * All deprecation warnings in the codebase now consistently use the format will be removed in v{DEPRECATION_REMOVAL_VERSION}. * Update tests * created comprehensive documentation for all FlowSystem accessors * Update results documentation * Update results documentation * Update effect statistics * Update effect statistics * Update effect statistics * Add mkdocs plotly plugin * Add section about custom constraints * documentation updates: docs/user-guide/results/index.md: - Updated table to replace effects_per_component with temporal_effects, periodic_effects, total_effects, and effect_share_factors - Fixed flow_hours['Boiler(Q_th)|flow_rate'] → flow_hours['Boiler(Q_th)'] - Fixed sizes['Boiler(Q_th)|size'] → sizes['Boiler(Q_th)'] - Replaced effects_per_component example with new effect properties and groupby examples - Updated complete example to use total_effects docs/user-guide/results-plotting.md: - Fixed colors example from 'Boiler(Q_th)|flow_rate' → 'Boiler(Q_th)' - Fixed duration_curve examples to use clean labels docs/user-guide/migration-guide-v6.md: - Added new "Statistics Accessor" section explaining the clean labels and new effect properties * implemented the effects() method in StatisticsPlotAccessor at flixopt/statistics_accessor.py:1132-1258. Summary of what was done: 1. Implemented effects() method in StatisticsPlotAccessor class that was missing but documented - Takes aspect parameter: 'total', 'temporal', or 'periodic' - Takes effect parameter to filter to a specific effect (e.g., 'costs', 'CO2') - Takes by parameter: 'component' or 'time' for grouping - Supports all standard plotting parameters: select, colors, facet_col, facet_row, show - Returns PlotResult with both data and figure 2. Verified the implementation works with all parameter combinations: - Default call: flow_system.statistics.plot.effects() - Specific effect: flow_system.statistics.plot.effects(effect='costs') - Temporal aspect: flow_system.statistics.plot.effects(aspect='temporal') - Temporal by time: flow_system.statistics.plot.effects(aspect='temporal', by='time') - Periodic aspect: flow_system.statistics.plot.effects(aspect='periodic') * Remove intermediate plot accessor * 1. pyproject.toml: Removed duplicate mkdocs-plotly-plugin>=0.1.3 entry (kept the exact pin ==0.1.3) 2. flixopt/plotting.py: Fixed dimension name consistency by using squeezed_data.name instead of data.name in the fallback heatmap logic 3. flixopt/statistics_accessor.py: - Fixed _dataset_to_long_df() to only use coordinates that are actually present as columns after reset_index() - Fixed the nested loop inefficiency with include_flows by pre-computing the flows list outside the loop - (Previously fixed) Fixed asymmetric NaN handling in validation check * _create_effects_dataset method in statistics_accessor.py was simplified: 1. Detect contributors from solution data variables instead of assuming they're only flows - Uses regex pattern to find {contributor}->{effect}(temporal|periodic) variables - Contributors can be flows OR components (e.g., components with effects_per_active_hour) 2. Exclude effect-to-effect shares - Filters out contributors whose base name matches any effect label - For example, costs(temporal) is excluded because costs is an effect label - These intermediate shares are already included in the computation 3. Removed the unused _compute_effect_total method - The new simplified implementation directly looks up shares from the solution - Uses effect_share_factors for conversion between effects 4. Key insight from user: The solution already contains properly computed share values including all effect-to-effect conversions. The computation uses conversion factors because derived effects (like Effect1 which shares 0.5 from costs) don't have direct {flow}->Effect1(temporal) variables - only the source effect shares exist ({flow}->costs(temporal)). * Update docs * Improve to_netcdf method * Update examples * Fix IIS computaion flag * Fix examples * Fix faceting in heatmap and use period as facet col everywhere * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * Add color accessor * Ensure io * Add carrier class * implemented Carrier as a proper Interface subclass with container support. Here's what was done: 1. Carrier class (flixopt/carrier.py) - Now inherits from Interface for serialization capabilities - Has transform_data() method (no-op since carriers have no time-series data) - Has label property for container keying - Maintains equality comparison with both Carrier objects and strings 2. CarrierContainer class (flixopt/carrier.py) - Inherits from ContainerMixin['Carrier'] - Provides dict-like access with nice repr and error messages - Uses carrier.name for keying 3. FlowSystem updates (flixopt/flow_system.py) - _carriers is now a CarrierContainer instead of a plain dict - carriers property returns the CarrierContainer - add_carrier() uses the container's add() method - Serialization updated to include carriers in to_dataset() and restore them in from_dataset() 4. Exports (flixopt/__init__.py) - Both Carrier and CarrierContainer are now exported * Inline plotting methods to deprecate plotting.py (#508) * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * statistics_accessor.py - Heatmap colors type safety (lines 121-148, 820-853) - Changed _heatmap_figure() parameter type from colors: ColorType = None to colors: str | list[str] | None = None - Changed heatmap() method parameter type similarly - Updated docstrings to clarify that dicts are not supported for heatmaps since px.imshow's color_continuous_scale only accepts colorscale names or lists 2. statistics_accessor.py - Use configured qualitative colorscale (lines 284, 315) - Updated _create_stacked_bar() to use CONFIG.Plotting.default_qualitative_colorscale as the default colorscale - Updated _create_line() similarly - This ensures user-configured CONFIG.Plotting.default_qualitative_colorscale affects all bar/line plots consistently 3. topology_accessor.py - Path type alignment (lines 219-222) - Added normalization of path=False to None before calling _plot_network() - This resolves the type mismatch where TopologyAccessor.plot() accepts bool | str | Path but _plot_network() only accepts str | Path | None * fix usage if index name in aggregation plot * Add to docs * Improve carrier colors and defaults * Update default carriers and colors * Update config * Update config * Move default carriers to config.py * Change default carrier handling * Add color handling * Rmeove meta_data color handling * Add carrierst to examples * Improve plotting acessor * Improve _resolve_variable_names * Improve _resolve_variable_names * Simplify coloring and remove color accessor * Add connected_and_transformed handling * Improve error message in container * BUGFIX: Carrier from dataset --- docs/stylesheets/extra.css | 20 +++ docs/user-guide/core-concepts.md | 11 ++ .../mathematical-notation/elements/Bus.md | 23 +++ docs/user-guide/results-plotting.md | 107 ++++++++++++ examples/01_Simple/simple_example.py | 14 +- examples/02_Complex/complex_example.py | 11 +- .../example_optimization_modes.py | 8 +- examples/04_Scenarios/scenario_example.py | 11 +- .../two_stage_optimization.py | 9 +- flixopt/__init__.py | 3 + flixopt/carrier.py | 159 ++++++++++++++++++ flixopt/config.py | 40 +++++ flixopt/elements.py | 36 ++-- flixopt/flow_system.py | 135 +++++++++++++++ flixopt/statistics_accessor.py | 127 ++++++++++++-- flixopt/structure.py | 29 +++- 16 files changed, 694 insertions(+), 49 deletions(-) create mode 100644 flixopt/carrier.py diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 78946b9ad..0b600fb08 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -763,6 +763,26 @@ button:focus-visible { scrollbar-color: var(--md-default-fg-color--lighter) var(--md-default-bg-color); } +/* ============================================================================ + Color Swatches for Carrier Documentation + ========================================================================= */ + +/* Inline color swatch - a small colored square */ +.color-swatch { + display: inline-block; + width: 1em; + height: 1em; + border-radius: 3px; + vertical-align: middle; + margin-right: 0.3em; + border: 1px solid rgba(0, 0, 0, 0.15); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); +} + +[data-md-color-scheme="slate"] .color-swatch { + border-color: rgba(255, 255, 255, 0.2); +} + /* ============================================================================ Footer Alignment Fix ========================================================================= */ diff --git a/docs/user-guide/core-concepts.md b/docs/user-guide/core-concepts.md index 401b34705..78e38ade7 100644 --- a/docs/user-guide/core-concepts.md +++ b/docs/user-guide/core-concepts.md @@ -31,6 +31,17 @@ $$\sum inputs = \sum outputs$$ This balance constraint is what makes your model physically meaningful — energy can't appear or disappear. +### Carriers + +Buses can be assigned a **carrier** — a type of energy or material (electricity, heat, gas, etc.). Carriers enable automatic coloring in plots and help organize your system semantically: + +```python +heat_bus = fx.Bus('HeatNetwork', carrier='heat') # Uses default heat color +elec_bus = fx.Bus('Grid', carrier='electricity') +``` + +See [Color Management](results-plotting.md#color-management) for details. + ## Flows: What Moves Between Elements A [`Flow`][flixopt.elements.Flow] represents the movement of energy or material. Every flow connects a component to a bus, with a defined direction. diff --git a/docs/user-guide/mathematical-notation/elements/Bus.md b/docs/user-guide/mathematical-notation/elements/Bus.md index 464381fe8..ca089bfec 100644 --- a/docs/user-guide/mathematical-notation/elements/Bus.md +++ b/docs/user-guide/mathematical-notation/elements/Bus.md @@ -2,6 +2,29 @@ A Bus is where flows meet and must balance — inputs equal outputs at every timestep. +## Carriers + +Buses can optionally be assigned a **carrier** — a type of energy or material (e.g., electricity, heat, gas). Carriers enable: + +- **Automatic coloring** in plots based on energy type +- **Unit tracking** for better result visualization +- **Semantic grouping** of buses by type + +```python +# Assign a carrier by name (uses CONFIG.Carriers defaults) +heat_bus = fx.Bus('HeatNetwork', carrier='heat') +elec_bus = fx.Bus('Grid', carrier='electricity') + +# Or register custom carriers on the FlowSystem +biogas = fx.Carrier('biogas', color='#228B22', unit='kW', description='Biogas fuel') +flow_system.add_carrier(biogas) +gas_bus = fx.Bus('BiogasNetwork', carrier='biogas') +``` + +See [Color Management](../../../user-guide/results-plotting.md#color-management) for more on how carriers affect visualization. + +--- + ## Basic: Balance Equation $$ diff --git a/docs/user-guide/results-plotting.md b/docs/user-guide/results-plotting.md index 4f1932e53..bfb6c8777 100644 --- a/docs/user-guide/results-plotting.md +++ b/docs/user-guide/results-plotting.md @@ -318,6 +318,113 @@ flow_system.statistics.plot.balance('Bus', colors={ }) ``` +## Color Management + +flixOpt provides centralized color management through the `flow_system.colors` accessor and carriers. This ensures consistent colors across all visualizations. + +### Carriers + +[`Carriers`][flixopt.carrier.Carrier] define energy or material types with associated colors. Built-in carriers are available in `CONFIG.Carriers`: + +| Carrier | Color | Description | +|---------|-------|-------------| +| `electricity` | `#FECB52` | Yellow - lightning/energy | +| `heat` | `#D62728` | Red - warmth/fire | +| `gas` | `#1F77B4` | Blue - natural gas | +| `hydrogen` | `#9467BD` | Purple - clean/future | +| `fuel` | `#8C564B` | Brown - fossil/oil | +| `biomass` | `#2CA02C` | Green - organic/renewable | + +Colors are from the D3/Plotly palettes for professional consistency. + +Assign carriers to buses for automatic coloring: + +```python +# Buses use carrier colors automatically +heat_bus = fx.Bus('HeatNetwork', carrier='heat') +elec_bus = fx.Bus('Grid', carrier='electricity') + +# Plots automatically use carrier colors for bus-related elements +flow_system.statistics.plot.sankey() # Buses colored by carrier +``` + +### Custom Carriers + +Register custom carriers on your FlowSystem: + +```python +# Create a custom carrier +biogas = fx.Carrier('biogas', color='#228B22', unit='kW', description='Biogas fuel') +hydrogen = fx.Carrier('hydrogen', color='#00CED1', unit='kg/h') + +# Register with FlowSystem (overrides CONFIG.Carriers defaults) +flow_system.add_carrier(biogas) +flow_system.add_carrier(hydrogen) + +# Access registered carriers +flow_system.carriers # CarrierContainer with locally registered carriers +flow_system.get_carrier('biogas') # Returns Carrier object +``` + +### Color Accessor + +The `flow_system.colors` accessor provides centralized color configuration: + +```python +# Configure colors for components +flow_system.colors.setup({ + 'Boiler': '#D35400', + 'CHP': '#8E44AD', + 'HeatPump': '#27AE60', +}) + +# Or set individual colors +flow_system.colors.set_component_color('Boiler', '#D35400') +flow_system.colors.set_carrier_color('biogas', '#228B22') + +# Load from file +flow_system.colors.setup('colors.json') # or .yaml +``` + +### Context-Aware Coloring + +Plot colors are automatically resolved based on context: + +- **Bus balance plots**: Colors based on the connected component +- **Component balance plots**: Colors based on the connected bus/carrier +- **Sankey diagrams**: Buses use carrier colors, components use configured colors + +```python +# Plotting a bus balance → flows colored by their parent component +flow_system.statistics.plot.balance('ElectricityBus') + +# Plotting a component balance → flows colored by their connected bus/carrier +flow_system.statistics.plot.balance('CHP') +``` + +### Color Resolution Priority + +Colors are resolved in this order: + +1. **Explicit colors** passed to plot methods (always override) +2. **Component/bus colors** set via `flow_system.colors.setup()` +3. **Element `meta_data['color']`** if present +4. **Carrier colors** from FlowSystem or CONFIG.Carriers +5. **Default colorscale** (controlled by `CONFIG.Plotting.default_qualitative_colorscale`) + +### Persistence + +Color configurations are automatically saved with the FlowSystem: + +```python +# Colors are persisted +flow_system.to_netcdf('my_system.nc') + +# And restored +loaded = fx.FlowSystem.from_netcdf('my_system.nc') +loaded.colors # Configuration restored +``` + ### Display Control Control whether plots are shown automatically: diff --git a/examples/01_Simple/simple_example.py b/examples/01_Simple/simple_example.py index 13781c973..e8185e248 100644 --- a/examples/01_Simple/simple_example.py +++ b/examples/01_Simple/simple_example.py @@ -21,7 +21,12 @@ # --- Define Energy Buses --- # These represent nodes, where the used medias are balanced (electricity, heat, and gas) - flow_system.add_elements(fx.Bus(label='Strom'), fx.Bus(label='Fernwärme'), fx.Bus(label='Gas')) + # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, etc.) + flow_system.add_elements( + fx.Bus(label='Strom', carrier='electricity'), + fx.Bus(label='Fernwärme', carrier='heat'), + fx.Bus(label='Gas', carrier='gas'), + ) # --- Define Effects (Objective and CO2 Emissions) --- # Cost effect: used as the optimization objective --> minimizing costs @@ -109,13 +114,14 @@ # Plotting through statistics accessor - returns PlotResult with .data and .figure flow_system.statistics.plot.balance('Fernwärme') flow_system.statistics.plot.balance('Storage') - flow_system.statistics.plot.heatmap('CHP(Q_th)|flow_rate') - flow_system.statistics.plot.heatmap('Storage|charge_state') + flow_system.statistics.plot.heatmap('CHP(Q_th)') + flow_system.statistics.plot.heatmap('Storage') + flow_system.statistics.plot.heatmap('Storage') # Access data as xarray Datasets print(flow_system.statistics.flow_rates) print(flow_system.statistics.charge_states) # Duration curve and effects analysis - flow_system.statistics.plot.duration_curve('Boiler(Q_th)|flow_rate') + flow_system.statistics.plot.duration_curve('Boiler(Q_th)') print(flow_system.statistics.temporal_effects) diff --git a/examples/02_Complex/complex_example.py b/examples/02_Complex/complex_example.py index f1b524a2b..3f38ff954 100644 --- a/examples/02_Complex/complex_example.py +++ b/examples/02_Complex/complex_example.py @@ -32,10 +32,11 @@ # --- Define Energy Buses --- # Represent node balances (inputs=outputs) for the different energy carriers (electricity, heat, gas) in the system + # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, blue for gas) flow_system.add_elements( - fx.Bus('Strom', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Fernwärme', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Gas', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Strom', carrier='electricity', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Fernwärme', carrier='heat', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Gas', carrier='gas', imbalance_penalty_per_flow_hour=imbalance_penalty), ) # --- Define Effects --- @@ -200,7 +201,7 @@ flow_system.to_netcdf('results/complex_example.nc') # Plot results using the statistics accessor - flow_system.statistics.plot.heatmap('BHKW2(Q_th)|flow_rate') + flow_system.statistics.plot.heatmap('BHKW2(Q_th)') # Flow label - auto-resolves to flow_rate flow_system.statistics.plot.balance('BHKW2') - flow_system.statistics.plot.heatmap('Speicher|charge_state') + flow_system.statistics.plot.heatmap('Speicher') # Storage label - auto-resolves to charge_state flow_system.statistics.plot.balance('Fernwärme') diff --git a/examples/03_Optimization_modes/example_optimization_modes.py b/examples/03_Optimization_modes/example_optimization_modes.py index 3dcd8bd1c..1f9968357 100644 --- a/examples/03_Optimization_modes/example_optimization_modes.py +++ b/examples/03_Optimization_modes/example_optimization_modes.py @@ -69,10 +69,10 @@ def get_solutions(optimizations: list, variable: str) -> xr.Dataset: flow_system = fx.FlowSystem(timesteps) flow_system.add_elements( - fx.Bus('Strom', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Fernwärme', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Gas', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Kohle', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Strom', carrier='electricity', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Fernwärme', carrier='heat', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Gas', carrier='gas', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Kohle', carrier='fuel', imbalance_penalty_per_flow_hour=imbalance_penalty), ) # Effects diff --git a/examples/04_Scenarios/scenario_example.py b/examples/04_Scenarios/scenario_example.py index e3c6f5fd3..820336e93 100644 --- a/examples/04_Scenarios/scenario_example.py +++ b/examples/04_Scenarios/scenario_example.py @@ -89,7 +89,12 @@ # --- Define Energy Buses --- # These represent nodes, where the used medias are balanced (electricity, heat, and gas) - flow_system.add_elements(fx.Bus(label='Strom'), fx.Bus(label='Fernwärme'), fx.Bus(label='Gas')) + # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, blue for gas) + flow_system.add_elements( + fx.Bus(label='Strom', carrier='electricity'), + fx.Bus(label='Fernwärme', carrier='heat'), + fx.Bus(label='Gas', carrier='gas'), + ) # --- Define Effects (Objective and CO2 Emissions) --- # Cost effect: used as the optimization objective --> minimizing costs @@ -199,10 +204,10 @@ # --- Analyze Results --- # Plotting through statistics accessor - returns PlotResult with .data and .figure - flow_system.statistics.plot.heatmap('CHP(Q_th)|flow_rate') + flow_system.statistics.plot.heatmap('CHP(Q_th)') # Flow label - auto-resolves to flow_rate flow_system.statistics.plot.balance('Fernwärme') flow_system.statistics.plot.balance('Storage') - flow_system.statistics.plot.heatmap('Storage|charge_state') + flow_system.statistics.plot.heatmap('Storage') # Storage label - auto-resolves to charge_state # Access data as xarray Datasets print(flow_system.statistics.flow_rates) diff --git a/examples/05_Two-stage-optimization/two_stage_optimization.py b/examples/05_Two-stage-optimization/two_stage_optimization.py index 8dea1713b..bf7f13a39 100644 --- a/examples/05_Two-stage-optimization/two_stage_optimization.py +++ b/examples/05_Two-stage-optimization/two_stage_optimization.py @@ -37,11 +37,12 @@ gas_price = filtered_data['Gaspr.€/MWh'].to_numpy() flow_system = fx.FlowSystem(timesteps) + # Carriers provide automatic color assignment in plots flow_system.add_elements( - fx.Bus('Strom'), - fx.Bus('Fernwärme'), - fx.Bus('Gas'), - fx.Bus('Kohle'), + fx.Bus('Strom', carrier='electricity'), + fx.Bus('Fernwärme', carrier='heat'), + fx.Bus('Gas', carrier='gas'), + fx.Bus('Kohle', carrier='fuel'), fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True), fx.Effect('CO2', 'kg', 'CO2_e-Emissionen'), fx.Effect('PE', 'kWh_PE', 'Primärenergie'), diff --git a/flixopt/__init__.py b/flixopt/__init__.py index 8874811b3..3c4edf7e8 100644 --- a/flixopt/__init__.py +++ b/flixopt/__init__.py @@ -14,6 +14,7 @@ # Import commonly used classes and functions from . import linear_converters, plotting, results, solvers +from .carrier import Carrier, CarrierContainer from .clustering import ClusteringParameters from .components import ( LinearConverter, @@ -34,6 +35,8 @@ __all__ = [ 'TimeSeriesData', 'CONFIG', + 'Carrier', + 'CarrierContainer', 'Flow', 'Bus', 'Effect', diff --git a/flixopt/carrier.py b/flixopt/carrier.py new file mode 100644 index 000000000..8a663eca9 --- /dev/null +++ b/flixopt/carrier.py @@ -0,0 +1,159 @@ +"""Carrier class for energy/material type definitions. + +Carriers represent types of energy or materials that flow through buses, +such as electricity, heat, gas, or water. They provide consistent styling +and metadata across visualizations. +""" + +from __future__ import annotations + +from .structure import ContainerMixin, Interface, register_class_for_io + + +@register_class_for_io +class Carrier(Interface): + """Definition of an energy or material carrier type. + + Carriers represent the type of energy or material flowing through a Bus. + They provide consistent color, unit, and description across all visualizations + and can be shared between multiple buses of the same type. + + Inherits from Interface to provide serialization capabilities. + + Args: + name: Identifier for the carrier (e.g., 'electricity', 'heat', 'gas'). + color: Hex color string for visualizations (e.g., '#FFD700'). + unit: Unit string for display (e.g., 'kW', 'kW_th', 'm³/h'). + description: Optional human-readable description. + + Examples: + Creating custom carriers: + + ```python + import flixopt as fx + + # Define custom carriers + electricity = fx.Carrier('electricity', '#FFD700', 'kW', 'Electrical power') + district_heat = fx.Carrier('district_heat', '#FF6B6B', 'kW_th', 'District heating') + hydrogen = fx.Carrier('hydrogen', '#00CED1', 'kg/h', 'Hydrogen fuel') + + # Register with FlowSystem + flow_system.add_carrier(electricity) + flow_system.add_carrier(district_heat) + + # Use with buses (just reference by name) + elec_bus = fx.Bus('MainGrid', carrier='electricity') + heat_bus = fx.Bus('HeatingNetwork', carrier='district_heat') + ``` + + Using predefined carriers from CONFIG: + + ```python + # Access built-in carriers + elec = fx.CONFIG.Carriers.electricity + heat = fx.CONFIG.Carriers.heat + + # Use directly + bus = fx.Bus('Grid', carrier='electricity') + ``` + + Adding custom carriers to CONFIG: + + ```python + # Add a new carrier globally + fx.CONFIG.Carriers.add(fx.Carrier('biogas', '#228B22', 'kW', 'Biogas')) + + # Now available as + fx.CONFIG.Carriers.biogas + ``` + + Note: + Carriers are compared by name for equality, allowing flexible usage + patterns where the same carrier type can be referenced by name string + or Carrier object interchangeably. + """ + + def __init__( + self, + name: str, + color: str = '', + unit: str = '', + description: str = '', + ) -> None: + """Initialize a Carrier. + + Args: + name: Identifier for the carrier (normalized to lowercase). + color: Hex color string for visualizations. + unit: Unit string for display. + description: Optional human-readable description. + """ + self.name = name.lower() + self.color = color + self.unit = unit + self.description = description + + def transform_data(self, name_prefix: str = '') -> None: + """Transform data to match FlowSystem dimensions. + + Carriers don't have time-series data, so this is a no-op. + + Args: + name_prefix: Ignored for Carrier. + """ + pass # Carriers have no data to transform + + @property + def label(self) -> str: + """Label for container keying (alias for name).""" + return self.name + + def __hash__(self): + return hash(self.name) + + def __eq__(self, other): + if isinstance(other, Carrier): + return self.name == other.name + if isinstance(other, str): + return self.name == other.lower() + return False + + def __repr__(self): + return f"Carrier('{self.name}', color='{self.color}', unit='{self.unit}')" + + def __str__(self): + return self.name + + +class CarrierContainer(ContainerMixin['Carrier']): + """Container for Carrier objects. + + Uses carrier.name for keying. Provides dict-like access to carriers + registered with a FlowSystem. + + Examples: + ```python + # Access via FlowSystem + carriers = flow_system.carriers + + # Dict-like access + elec = carriers['electricity'] + 'heat' in carriers # True/False + + # Iteration + for name in carriers: + print(name) + ``` + """ + + def __init__(self, carriers: list[Carrier] | dict[str, Carrier] | None = None): + """Initialize a CarrierContainer. + + Args: + carriers: Initial carriers to add. + """ + super().__init__(elements=carriers, element_type_name='carriers') + + def _get_label(self, carrier: Carrier) -> str: + """Extract name from Carrier for keying.""" + return carrier.name diff --git a/flixopt/config.py b/flixopt/config.py index 043142cbe..4d4571dcd 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -575,6 +575,36 @@ class Plotting: default_sequential_colorscale: str = _DEFAULTS['plotting']['default_sequential_colorscale'] default_qualitative_colorscale: str = _DEFAULTS['plotting']['default_qualitative_colorscale'] + class Carriers: + """Default carrier definitions for common energy types. + + Provides convenient defaults for carriers. Colors are from D3/Plotly palettes. + + Predefined: electricity, heat, gas, hydrogen, fuel, biomass + + Examples: + ```python + import flixopt as fx + + # Access predefined carriers + fx.CONFIG.Carriers.electricity # Carrier with color '#FECB52' + fx.CONFIG.Carriers.heat.color # '#D62728' + + # Use with buses + bus = fx.Bus('Grid', carrier='electricity') + ``` + """ + + from .carrier import Carrier + + # Default carriers - colors from D3/Plotly palettes + electricity: Carrier = Carrier('electricity', '#FECB52') # Yellow + heat: Carrier = Carrier('heat', '#D62728') # Red + gas: Carrier = Carrier('gas', '#1F77B4') # Blue + hydrogen: Carrier = Carrier('hydrogen', '#9467BD') # Purple + fuel: Carrier = Carrier('fuel', '#8C564B') # Brown + biomass: Carrier = Carrier('biomass', '#2CA02C') # Green + config_name: str = _DEFAULTS['config_name'] @classmethod @@ -601,6 +631,16 @@ def reset(cls) -> None: for key, value in _DEFAULTS['plotting'].items(): setattr(cls.Plotting, key, value) + # Reset Carriers to defaults + from .carrier import Carrier + + cls.Carriers.electricity = Carrier('electricity', '#FECB52') + cls.Carriers.heat = Carrier('heat', '#D62728') + cls.Carriers.gas = Carrier('gas', '#1F77B4') + cls.Carriers.hydrogen = Carrier('hydrogen', '#9467BD') + cls.Carriers.fuel = Carrier('fuel', '#8C564B') + cls.Carriers.biomass = Carrier('biomass', '#2CA02C') + cls.config_name = _DEFAULTS['config_name'] # Reset logging to default (silent) diff --git a/flixopt/elements.py b/flixopt/elements.py index 74ed7bde4..d2ebf7ac0 100644 --- a/flixopt/elements.py +++ b/flixopt/elements.py @@ -93,8 +93,9 @@ def __init__( status_parameters: StatusParameters | None = None, prevent_simultaneous_flows: list[Flow] | None = None, meta_data: dict | None = None, + color: str | None = None, ): - super().__init__(label, meta_data=meta_data) + super().__init__(label, meta_data=meta_data, color=color) self.inputs: list[Flow] = inputs or [] self.outputs: list[Flow] = outputs or [] self.status_parameters = status_parameters @@ -194,6 +195,9 @@ class Bus(Element): Args: label: The label of the Element. Used to identify it in the FlowSystem. + carrier: Name of the energy/material carrier type (e.g., 'electricity', 'heat', 'gas'). + Carriers are registered via ``flow_system.add_carrier()`` or available as + predefined defaults in CONFIG.Carriers. Used for automatic color assignment in plots. imbalance_penalty_per_flow_hour: Penalty costs for bus balance violations. When None (default), no imbalance is allowed (hard constraint). When set to a value > 0, allows bus imbalances at penalty cost. @@ -201,30 +205,30 @@ class Bus(Element): in results. Only use Python native types. Examples: - Electrical bus with strict balance: + Using predefined carrier names: ```python - electricity_bus = Bus( - label='main_electrical_bus', - imbalance_penalty_per_flow_hour=None, # No imbalance allowed - ) + electricity_bus = Bus(label='main_grid', carrier='electricity') + heat_bus = Bus(label='district_heating', carrier='heat') ``` - Heat network with penalty for imbalances: + Registering custom carriers on FlowSystem: ```python - heat_network = Bus( - label='district_heating_network', - imbalance_penalty_per_flow_hour=1000, # €1000/MWh penalty for imbalance - ) + import flixopt as fx + + fs = fx.FlowSystem(timesteps) + fs.add_carrier(fx.Carrier('biogas', '#228B22', 'kW')) + biogas_bus = fx.Bus(label='biogas_network', carrier='biogas') ``` - Material flow with time-varying penalties: + Heat network with penalty for imbalances: ```python - material_hub = Bus( - label='material_processing_hub', - imbalance_penalty_per_flow_hour=waste_disposal_costs, # Time series + heat_bus = Bus( + label='district_heating', + carrier='heat', + imbalance_penalty_per_flow_hour=1000, ) ``` @@ -245,6 +249,7 @@ class Bus(Element): def __init__( self, label: str, + carrier: str | None = None, imbalance_penalty_per_flow_hour: Numeric_TPS | None = None, meta_data: dict | None = None, **kwargs, @@ -254,6 +259,7 @@ def __init__( kwargs, 'excess_penalty_per_flow_hour', 'imbalance_penalty_per_flow_hour', imbalance_penalty_per_flow_hour ) self._validate_kwargs(kwargs) + self.carrier = carrier.lower() if carrier else None # Store as lowercase string self.imbalance_penalty_per_flow_hour = imbalance_penalty_per_flow_hour self.inputs: list[Flow] = [] self.outputs: list[Flow] = [] diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 5fda024f7..ee1a10261 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -4,6 +4,7 @@ from __future__ import annotations +import json import logging import pathlib import warnings @@ -39,6 +40,8 @@ from .solvers import _Solver from .types import Effect_TPS, Numeric_S, Numeric_TPS, NumericOrBool +from .carrier import Carrier, CarrierContainer + logger = logging.getLogger('flixopt') @@ -217,6 +220,9 @@ def __init__( # Statistics accessor cache - lazily initialized, invalidated on new solution self._statistics: StatisticsAccessor | None = None + # Carrier container - local carriers override CONFIG.Carriers + self._carriers: CarrierContainer = CarrierContainer() + # Use properties to validate and store scenario dimension settings self.scenario_independent_sizes = scenario_independent_sizes self.scenario_independent_flow_rates = scenario_independent_flow_rates @@ -578,6 +584,14 @@ def to_dataset(self) -> xr.Dataset: else: ds.attrs['has_solution'] = False + # Include carriers if any are registered + if self._carriers: + carriers_structure = {} + for name, carrier in self._carriers.items(): + carrier_ref, _ = carrier._create_reference_structure() + carriers_structure[name] = carrier_ref + ds.attrs['carriers'] = json.dumps(carriers_structure) + return ds @classmethod @@ -661,6 +675,13 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: solution_ds = solution_ds.rename({'solution_time': 'time'}) flow_system.solution = solution_ds + # Restore carriers if present + if 'carriers' in reference_structure: + carriers_structure = json.loads(reference_structure['carriers']) + for carrier_data in carriers_structure.values(): + carrier = cls._resolve_reference_structure(carrier_data, {}) + flow_system._carriers.add(carrier) + return flow_system def to_netcdf(self, path: str | pathlib.Path, compression: int = 0, overwrite: bool = True): @@ -813,6 +834,8 @@ def connect_and_transform(self): return self._connect_network() + self._register_missing_carriers() + self._assign_element_colors() for element in chain(self.components.values(), self.effects.values(), self.buses.values()): element.transform_data() @@ -821,6 +844,40 @@ def connect_and_transform(self): self._connected_and_transformed = True + def _register_missing_carriers(self) -> None: + """Auto-register carriers from CONFIG for buses that reference unregistered carriers.""" + for bus in self.buses.values(): + if bus.carrier and bus.carrier not in self._carriers: + # Try to get from CONFIG defaults + default_carrier = getattr(CONFIG.Carriers, bus.carrier, None) + if default_carrier is not None: + self._carriers[bus.carrier] = default_carrier + logger.debug(f"Auto-registered carrier '{bus.carrier}' from CONFIG") + + def _assign_element_colors(self) -> None: + """Auto-assign colors to elements that don't have explicit colors set. + + Components and buses without explicit colors are assigned colors from the + default qualitative colorscale. This ensures zero-config color support + while still allowing users to override with explicit colors. + """ + from .color_processing import process_colors + + # Collect elements without colors (components only - buses use carrier colors) + elements_without_colors = [comp.label for comp in self.components.values() if comp.color is None] + + if not elements_without_colors: + return + + # Generate colors from the default colorscale + colorscale = CONFIG.Plotting.default_qualitative_colorscale + color_mapping = process_colors(colorscale, elements_without_colors) + + # Assign colors to elements + for label, color in color_mapping.items(): + self.components[label].color = color + logger.debug(f"Auto-assigned color '{color}' to component '{label}'") + def add_elements(self, *elements: Element) -> None: """ Add Components(Storages, Boilers, Heatpumps, ...), Buses or Effects to the FlowSystem @@ -859,6 +916,84 @@ def add_elements(self, *elements: Element) -> None: element_type = type(new_element).__name__ logger.info(f'Registered new {element_type}: {new_element.label_full}') + def add_carriers(self, *carriers: Carrier) -> None: + """Register a custom carrier for this FlowSystem. + + Custom carriers registered on the FlowSystem take precedence over + CONFIG.Carriers defaults when resolving colors and units for buses. + + Args: + carrier: A Carrier object defining the carrier properties. + + Examples: + ```python + import flixopt as fx + + fs = fx.FlowSystem(timesteps) + + # Define and register custom carriers + biogas = fx.Carrier('biogas', '#228B22', 'kW', 'Biogas fuel') + fs.add_carrier(biogas) + + # Now buses can reference this carrier by name + bus = fx.Bus('BioGasNetwork', carrier='biogas') + fs.add_elements(bus) + + # The carrier color will be used in plots automatically + ``` + """ + if self.connected_and_transformed: + warnings.warn( + 'You are adding a carrier to an already connected FlowSystem. This is not recommended (But it works).', + stacklevel=2, + ) + self._connected_and_transformed = False + + for carrier in list(carriers): + if not isinstance(carrier, Carrier): + raise TypeError(f'Expected Carrier object, got {type(carrier)}') + self._carriers.add(carrier) + logger.debug(f'Adding carrier {carrier} to FlowSystem') + + def get_carrier(self, label: str) -> Carrier | None: + """Get the carrier for a bus or flow. + + Args: + label: Bus label (e.g., 'Fernwärme') or flow label (e.g., 'Boiler(Q_th)'). + + Returns: + Carrier or None if not found. + + Note: + To access a carrier directly by name, use ``flow_system.carriers['electricity']``. + + Raises: + RuntimeError: If FlowSystem is not connected_and_transformed. + """ + if not self.connected_and_transformed: + raise RuntimeError( + 'FlowSystem is not connected_and_transformed. Call FlowSystem.connect_and_transform() first.' + ) + + # Try as bus label + bus = self.buses.get(label) + if bus and bus.carrier: + return self._carriers.get(bus.carrier.lower()) + + # Try as flow label + flow = self.flows.get(label) + if flow and flow.bus: + bus = self.buses.get(flow.bus) + if bus and bus.carrier: + return self._carriers.get(bus.carrier.lower()) + + return None + + @property + def carriers(self) -> CarrierContainer: + """Carriers registered on this FlowSystem.""" + return self._carriers + def create_model(self, normalize_weights: bool = True) -> FlowSystemModel: """ Create a linopy model from the FlowSystem. diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 9f6bb01be..2927c42a6 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -738,6 +738,77 @@ def __init__(self, statistics: StatisticsAccessor) -> None: self._stats = statistics self._fs = statistics._fs + def _get_color_map_for_balance(self, node: str, flow_labels: list[str]) -> dict[str, str]: + """Build color map for balance plot. + + - Bus balance: colors from component.color + - Component balance: colors from flow's carrier + + Raises: + RuntimeError: If FlowSystem is not connected_and_transformed. + """ + if not self._fs.connected_and_transformed: + raise RuntimeError( + 'FlowSystem is not connected_and_transformed. Call FlowSystem.connect_and_transform() first.' + ) + + is_bus = node in self._fs.buses + color_map = {} + uncolored = [] + + for label in flow_labels: + if is_bus: + color = self._fs.components[self._fs.flows[label].component].color + else: + carrier = self._fs.get_carrier(label) # get_carrier accepts flow labels + color = carrier.color if carrier else None + + if color: + color_map[label] = color + else: + uncolored.append(label) + + if uncolored: + color_map.update(process_colors(CONFIG.Plotting.default_qualitative_colorscale, uncolored)) + + return color_map + + def _resolve_variable_names(self, variables: list[str], solution: xr.Dataset) -> list[str]: + """Resolve flow labels to variable names with fallback. + + For each variable: + 1. First check if it exists in the dataset as-is + 2. If not found and doesn't contain '|', try adding '|flow_rate' suffix + 3. If still not found, try '|charge_state' suffix (for storages) + + Args: + variables: List of flow labels or variable names. + solution: The solution dataset to check variable existence. + + Returns: + List of resolved variable names. + """ + resolved = [] + for var in variables: + if var in solution: + # Variable exists as-is, use it directly + resolved.append(var) + elif '|' not in var: + # Not found and no '|', try common suffixes + flow_rate_var = f'{var}|flow_rate' + charge_state_var = f'{var}|charge_state' + if flow_rate_var in solution: + resolved.append(flow_rate_var) + elif charge_state_var in solution: + resolved.append(charge_state_var) + else: + # Let it fail with the original name for clear error message + resolved.append(var) + else: + # Contains '|' but not in solution - let it fail with original name + resolved.append(var) + return resolved + def balance( self, node: str, @@ -801,6 +872,10 @@ def balance( ds = _apply_selection(ds, select) actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + # Build color map from Element.color attributes if no colors specified + if colors is None: + colors = self._get_color_map_for_balance(node, list(ds.data_vars)) + fig = _create_stacked_bar( ds, colors=colors, @@ -836,7 +911,9 @@ def heatmap( reshaping is skipped and variables are shown on the y-axis with time on x-axis. Args: - variables: Variable name(s) from solution. + variables: Flow label(s) or variable name(s). Flow labels like 'Boiler(Q_th)' + are automatically resolved to 'Boiler(Q_th)|flow_rate'. Full variable + names like 'Storage|charge_state' are used as-is. select: xarray-style selection, e.g. {'scenario': 'Base Case'}. reshape: Time reshape frequencies as (outer, inner), e.g. ('D', 'h') for days × hours. Set to None to disable reshaping. @@ -856,7 +933,10 @@ def heatmap( if isinstance(variables, str): variables = [variables] - ds = solution[variables] + # Resolve flow labels to variable names + resolved_variables = self._resolve_variable_names(variables, solution) + + ds = solution[resolved_variables] ds = _apply_selection(ds, select) # Stack variables into single DataArray @@ -972,8 +1052,8 @@ def flows( for flow in self._fs.flows.values(): # Get bus label (could be string or Bus object) - bus_label = flow.bus if isinstance(flow.bus, str) else flow.bus.label - comp_label = flow.component.label if hasattr(flow.component, 'label') else str(flow.component) + bus_label = flow.bus + comp_label = flow.component.label_full # start/end filtering based on flow direction if flow.is_input_in_component: @@ -1075,8 +1155,8 @@ def sankey( # Determine source/target based on flow direction # is_input_in_component: True means bus -> component, False means component -> bus - bus_label = flow.bus if isinstance(flow.bus, str) else flow.bus.label - comp_label = flow.component.label if hasattr(flow.component, 'label') else str(flow.component) + bus_label = flow.bus + comp_label = flow.component.label_full if flow.is_input_in_component: source = bus_label @@ -1203,8 +1283,10 @@ def duration_curve( """Plot load duration curves (sorted time series). Args: - variables: Flow label(s) to plot (e.g., 'Boiler(Q_th)'). - Uses flow_rates from statistics. + variables: Flow label(s) or variable name(s). Flow labels like 'Boiler(Q_th)' + are looked up in flow_rates. Full variable names like 'Boiler(Q_th)|flow_rate' + are stripped to their flow label. Other variables (e.g., 'Storage|charge_state') + are looked up in the solution directly. select: xarray-style selection. normalize: If True, normalize x-axis to 0-100%. colors: Color specification (colorscale name, color list, or label-to-color dict). @@ -1215,13 +1297,36 @@ def duration_curve( Returns: PlotResult with sorted duration curve data. """ - self._stats._require_solution() + solution = self._stats._require_solution() if isinstance(variables, str): variables = [variables] - # Use flow_rates from statistics (already has clean labels without |flow_rate suffix) - ds = self._stats.flow_rates[variables] + # Normalize variable names: strip |flow_rate suffix for flow_rates lookup + flow_rates = self._stats.flow_rates + normalized_vars = [] + for var in variables: + # Strip |flow_rate suffix if present + if var.endswith('|flow_rate'): + var = var[: -len('|flow_rate')] + normalized_vars.append(var) + + # Try to get from flow_rates first, fall back to solution for non-flow variables + ds_parts = [] + for var in normalized_vars: + if var in flow_rates: + ds_parts.append(flow_rates[[var]]) + elif var in solution: + ds_parts.append(solution[[var]]) + else: + # Try with |flow_rate suffix as last resort + flow_rate_var = f'{var}|flow_rate' + if flow_rate_var in solution: + ds_parts.append(solution[[flow_rate_var]].rename({flow_rate_var: var})) + else: + raise KeyError(f"Variable '{var}' not found in flow_rates or solution") + + ds = xr.merge(ds_parts) ds = _apply_selection(ds, select) if 'time' not in ds.dims: diff --git a/flixopt/structure.py b/flixopt/structure.py index 8bec197bc..d00066683 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -1015,6 +1015,7 @@ def __init__( self, label: str, meta_data: dict | None = None, + color: str | None = None, _variable_names: list[str] | None = None, _constraint_names: list[str] | None = None, ): @@ -1022,11 +1023,13 @@ def __init__( Args: label: The label of the element meta_data: used to store more information about the Element. Is not used internally, but saved in the results. Only use python native types. + color: Optional color for visualizations (e.g., '#FF6B6B'). If not provided, a color will be automatically assigned during FlowSystem.connect_and_transform(). _variable_names: Internal. Variable names for this element (populated after modeling). _constraint_names: Internal. Constraint names for this element (populated after modeling). """ self.label = Element._valid_label(label) self.meta_data = meta_data if meta_data is not None else {} + self.color = color self.submodel = None self._flow_system: FlowSystem | None = None # Variable/constraint names - populated after modeling, serialized for results @@ -1127,16 +1130,20 @@ def __init__( elements: list[T] | dict[str, T] | None = None, element_type_name: str = 'elements', truncate_repr: int | None = None, + item_name: str | None = None, ): """ Args: elements: Initial elements to add (list or dict) element_type_name: Name for display (e.g., 'components', 'buses') truncate_repr: Maximum number of items to show in repr. If None, show all items. Default: None + item_name: Singular name for error messages (e.g., 'Component', 'Carrier'). + If None, inferred from first added item's class name. """ super().__init__() self._element_type_name = element_type_name self._truncate_repr = truncate_repr + self._item_name = item_name if elements is not None: if isinstance(elements, dict): @@ -1158,13 +1165,28 @@ def _get_label(self, element: T) -> str: """ raise NotImplementedError('Subclasses must implement _get_label()') + def _get_item_name(self) -> str: + """Get the singular item name for error messages. + + Returns the explicitly set item_name, or infers from the first item's class name. + Falls back to 'Item' if container is empty and no name was set. + """ + if self._item_name is not None: + return self._item_name + # Infer from first item's class name + if self: + first_item = next(iter(self.values())) + return first_item.__class__.__name__ + return 'Item' + def add(self, element: T) -> None: """Add an element to the container.""" label = self._get_label(element) if label in self: + item_name = element.__class__.__name__ raise ValueError( - f'Element with label "{label}" already exists in {self._element_type_name}. ' - f'Each element must have a unique label.' + f'{item_name} with label "{label}" already exists in {self._element_type_name}. ' + f'Each {item_name.lower()} must have a unique label.' ) self[label] = element @@ -1195,8 +1217,9 @@ def __getitem__(self, label: str) -> T: return super().__getitem__(label) except KeyError: # Provide helpful error with close matches suggestions + item_name = self._get_item_name() suggestions = get_close_matches(label, self.keys(), n=3, cutoff=0.6) - error_msg = f'Element "{label}" not found in {self._element_type_name}.' + error_msg = f'{item_name} "{label}" not found in {self._element_type_name}.' if suggestions: error_msg += f' Did you mean: {", ".join(suggestions)}?' else: From dedfeb89ffbfe906807e8cf8f59d56ee8f6a6f0e Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:36:17 +0100 Subject: [PATCH 29/88] Add transform accessor and move sel, isel and resample to this accessor (#510) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add planning doc * Finalize planning * Add plotting acessor * Add plotting acessor * Add tests * Improve * Improve * Update docs * Updated the plotting API so that .data always returns xarray DataArray or Dataset instead of pandas DataFrame. * All .data now returns xr.Dataset consistently. * Fixed Inconsistencies and Unused Parameters * New Plot Accessors results.plot.variable(pattern) Plots the same variable type across multiple elements for easy comparison. # All binary operation states across all components results.plot.variable('on') # All flow_rates, filtered to Boiler-related elements results.plot.variable('flow_rate', include='Boiler') # All storage charge states results.plot.variable('charge_state') # With aggregation results.plot.variable('flow_rate', aggregate='sum') Key features: - Searches all elements for variables matching the pattern - Filter with include/exclude on element names - Supports aggregation, faceting, and animation - Returns Dataset with element names as variables results.plot.duration_curve(variables) Plots load duration curves (sorted time series) showing utilization patterns. # Single variable results.plot.duration_curve('Boiler(Q_th)|flow_rate') # Multiple variables results.plot.duration_curve(['CHP|on', 'Boiler|on']) # Normalized x-axis (0-100%) results.plot.duration_curve('demand', normalize=True) Key features: - Sorts values from highest to lowest - Shows how often each power level is reached - normalize=True shows percentage of time on x-axis - Returns Dataset with duration_hours or duration_pct dimension * Fix duration curve * Fix duration curve * Fix duration curve * Fix duration curve * xr.apply_ufunc to sort along the time axis while preserving all other dimensions automatically * ⏺ The example runs successfully. Now let me summarize the fixes: Summary of Fixes I addressed the actionable code review comments from CodeRabbitAI: 1. Documentation Issue - reshape parameter name ✓ (No fix needed) The CodeRabbitAI comment was incorrect. The public API parameter in PlotAccessor.heatmap() is correctly named reshape (line 335). The reshape_time parameter exists in the lower-level heatmap_with_plotly function, but the documentation correctly shows the public API parameter. 2. Fixed simple_example.py (lines 129-130) Problem: The example called balance() and duration_curve() without required arguments, which would cause TypeError at runtime. Fix: Added the required arguments: - optimization.results.plot.balance('Fernwärme') - specifying the bus to plot - optimization.results.plot.duration_curve('Boiler(Q_th)|flow_rate') - specifying the variable to plot 3. Fixed variable collision in plot_accessors.py (lines 985-988) Problem: When building the Dataset in the variable() method, using element names as keys could cause collisions if multiple variables from the same element matched the pattern (e.g., 'Boiler|flow_rate' and 'Boiler|flow_rate_max' would both map to 'Boiler', with the latter silently overwriting the former). Fix: Changed to use the full variable names as keys instead of just element names: ds = xr.Dataset({var_name: self._results.solution[var_name] for var_name in filtered_vars}) All tests pass (40 passed, 1 skipped) and the example runs successfully. * make variable names public in results * Fix sankey * Fix effects() * Fix effects * Remove bargaps * made faceting consistent across all plot methods: | Method | facet_col | facet_row | |------------------|-------------------------------------------|-----------------------------| | balance() | 'scenario' | 'period' | | heatmap() | 'scenario' | 'period' | | storage() | 'scenario' | 'period' | | flows() | 'scenario' | 'period' | | effects() | 'scenario' | 'period' | | variable() | 'scenario' | 'period' | | duration_curve() | 'scenario' | 'period' (already had this) | | compare() | N/A (uses its own mode='overlay'/'facet') | | | sankey() | N/A (aggregates to single diagram) | | Removed animate_by parameter from all methods * Update storage method * Remove mode parameter for simpli | Method | Default mode | |------------------|---------------------------------------------------| | balance() | stacked_bar | | storage() | stacked_bar (flows) + line (charge state overlay) | | flows() | line | | variable() | line | | duration_curve() | line | | effects() | bar | * Make plotting_accessors.py more self contained * Use faster to_long() * Add 0-dim case * sankey diagram now properly handles scenarios and periods: Changes made: 1. Period aggregation with weights: Uses period_weights from flow_system to properly weight periods by their duration 2. Scenario aggregation with weights: Uses normalized scenario_weights to compute a weighted average across scenarios 3. Selection support: Users can filter specific scenarios/periods via select parameter before aggregation Weighting logic: - Periods (for aggregate='sum'): (da * period_weights).sum(dim='period') - this gives the total energy across all periods weighted by their duration - Periods (for aggregate='mean'): (da * period_weights).sum(dim='period') / period_weights.sum() - weighted mean - Scenarios: Always uses normalized weights (sum to 1) for weighted averaging, since scenarios represent probability-weighted alternatives * Add colors to sankey * Add sizes * Add size filtering * Include storage sizes * Remove storage sizes * Add charge state and status accessor * Summary of Changes 1. Added new methods to PlotAccessor (plot_accessors.py) charge_states() (line 658): - Returns a Dataset with each storage's charge state as a variable - Supports filtering with include/exclude parameters - Default plot: line chart on_states() (line 753): - Returns a Dataset with each component's |status variable - Supports filtering with include/exclude parameters - Default plot: heatmap (good for binary data visualization) 2. Added data building helper functions (plot_accessors.py) build_flow_rates(results) (line 315): - Builds a DataArray containing flow rates for all flows - Used internally by PlotAccessor methods build_flow_hours(results) (line 333): - Builds a DataArray containing flow hours for all flows build_sizes(results) (line 347): - Builds a DataArray containing sizes for all flows _filter_dataarray_by_coord(da, **kwargs) (line 284): - Helper for filtering DataArrays by coordinate values 3. Deprecated old Results methods (results.py) The following methods now emit DeprecationWarning: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 4. Updated PlotAccessor methods to use new helpers - flows() now uses build_flow_rates() / build_flow_hours() directly - sizes() now uses build_sizes() directly - sankey() now uses build_flow_hours() directly This ensures the deprecation warnings only fire when users directly call the old methods, not when using the plot accessor * 1. New methods added to PlotAccessor - charge_states(): Returns Dataset with all storage charge states - on_states(): Returns Dataset with all component status variables (heatmap display) 2. Data building helper functions (plot_accessors.py) - build_flow_rates(results): Builds DataArray of flow rates - build_flow_hours(results): Builds DataArray of flow hours - build_sizes(results): Builds DataArray of sizes - _filter_dataarray_by_coord(da, **kwargs): Filter helper - _assign_flow_coords(da, results): Add flow coordinates 3. Caching in PlotAccessor Added lazy-cached properties for expensive computations: - _all_flow_rates - cached DataArray of all flow rates - _all_flow_hours - cached DataArray of all flow hours - _all_sizes - cached DataArray of all sizes - _all_charge_states - cached Dataset of all storage charge states - _all_status_vars - cached Dataset of all status variables 4. Deprecated methods in Results class Added deprecation warnings to: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 5. Updated PlotAccessor methods to use cached properties - flows() uses _all_flow_rates / _all_flow_hours - sankey() uses _all_flow_hours - sizes() uses _all_sizes - charge_states() uses _all_charge_states - on_states() uses _all_status_vars * Move deprectated functionality into results.py instead of porting to the new module * Revert to simply deprectae old methods without forwarding to new code * Remove planning file * Update plotting methods for new datasets * 1. Renamed data properties in PlotAccessor to use all_ prefix: - all_flow_rates - All flow rates as Dataset - all_flow_hours - All flow hours as Dataset - all_sizes - All flow sizes as Dataset - all_charge_states - All storage charge states as Dataset - all_on_states - All component on/off status as Dataset 2. Updated internal references - All usages in flows(), sankey(), sizes(), charge_states(), and on_states() methods now use the new names. 3. Updated deprecation messages in results.py to point to the new API: - results.flow_rates() → results.plot.all_flow_rates - results.flow_hours() → results.plot.all_flow_hours - results.sizes() → results.plot.all_sizes 4. Updated docstring examples in PlotAccessor to use the new all_* names. * Update deprecations messages * Update deprecations messages * Thsi seems much better. * Updaet docstrings and variable name generation in plotting acessor * Change __ to _ in private dataset caching * Revert breaking io changes * New solution storing interface * Add new focused statistics and plot accessors * Renamed all properties: - all_flow_rates → flow_rates - all_flow_hours → flow_hours - all_sizes → sizes - all_charge_states → charge_states * Cache Statistics * Invalidate caches * Add effect related statistics * Simplify statistics accessor to rely on flow_system directly instead of solution attrs * Fix heatma fallback for 1D Data * Add topology accessor * All deprecation warnings in the codebase now consistently use the format will be removed in v{DEPRECATION_REMOVAL_VERSION}. * Update tests * created comprehensive documentation for all FlowSystem accessors * Update results documentation * Update results documentation * Update effect statistics * Update effect statistics * Update effect statistics * Add mkdocs plotly plugin * Add section about custom constraints * documentation updates: docs/user-guide/results/index.md: - Updated table to replace effects_per_component with temporal_effects, periodic_effects, total_effects, and effect_share_factors - Fixed flow_hours['Boiler(Q_th)|flow_rate'] → flow_hours['Boiler(Q_th)'] - Fixed sizes['Boiler(Q_th)|size'] → sizes['Boiler(Q_th)'] - Replaced effects_per_component example with new effect properties and groupby examples - Updated complete example to use total_effects docs/user-guide/results-plotting.md: - Fixed colors example from 'Boiler(Q_th)|flow_rate' → 'Boiler(Q_th)' - Fixed duration_curve examples to use clean labels docs/user-guide/migration-guide-v6.md: - Added new "Statistics Accessor" section explaining the clean labels and new effect properties * implemented the effects() method in StatisticsPlotAccessor at flixopt/statistics_accessor.py:1132-1258. Summary of what was done: 1. Implemented effects() method in StatisticsPlotAccessor class that was missing but documented - Takes aspect parameter: 'total', 'temporal', or 'periodic' - Takes effect parameter to filter to a specific effect (e.g., 'costs', 'CO2') - Takes by parameter: 'component' or 'time' for grouping - Supports all standard plotting parameters: select, colors, facet_col, facet_row, show - Returns PlotResult with both data and figure 2. Verified the implementation works with all parameter combinations: - Default call: flow_system.statistics.plot.effects() - Specific effect: flow_system.statistics.plot.effects(effect='costs') - Temporal aspect: flow_system.statistics.plot.effects(aspect='temporal') - Temporal by time: flow_system.statistics.plot.effects(aspect='temporal', by='time') - Periodic aspect: flow_system.statistics.plot.effects(aspect='periodic') * Remove intermediate plot accessor * 1. pyproject.toml: Removed duplicate mkdocs-plotly-plugin>=0.1.3 entry (kept the exact pin ==0.1.3) 2. flixopt/plotting.py: Fixed dimension name consistency by using squeezed_data.name instead of data.name in the fallback heatmap logic 3. flixopt/statistics_accessor.py: - Fixed _dataset_to_long_df() to only use coordinates that are actually present as columns after reset_index() - Fixed the nested loop inefficiency with include_flows by pre-computing the flows list outside the loop - (Previously fixed) Fixed asymmetric NaN handling in validation check * _create_effects_dataset method in statistics_accessor.py was simplified: 1. Detect contributors from solution data variables instead of assuming they're only flows - Uses regex pattern to find {contributor}->{effect}(temporal|periodic) variables - Contributors can be flows OR components (e.g., components with effects_per_active_hour) 2. Exclude effect-to-effect shares - Filters out contributors whose base name matches any effect label - For example, costs(temporal) is excluded because costs is an effect label - These intermediate shares are already included in the computation 3. Removed the unused _compute_effect_total method - The new simplified implementation directly looks up shares from the solution - Uses effect_share_factors for conversion between effects 4. Key insight from user: The solution already contains properly computed share values including all effect-to-effect conversions. The computation uses conversion factors because derived effects (like Effect1 which shares 0.5 from costs) don't have direct {flow}->Effect1(temporal) variables - only the source effect shares exist ({flow}->costs(temporal)). * Update docs * Improve to_netcdf method * Update examples * Fix IIS computaion flag * Fix examples * Fix faceting in heatmap and use period as facet col everywhere * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * Add color accessor * Ensure io * Add carrier class * implemented Carrier as a proper Interface subclass with container support. Here's what was done: 1. Carrier class (flixopt/carrier.py) - Now inherits from Interface for serialization capabilities - Has transform_data() method (no-op since carriers have no time-series data) - Has label property for container keying - Maintains equality comparison with both Carrier objects and strings 2. CarrierContainer class (flixopt/carrier.py) - Inherits from ContainerMixin['Carrier'] - Provides dict-like access with nice repr and error messages - Uses carrier.name for keying 3. FlowSystem updates (flixopt/flow_system.py) - _carriers is now a CarrierContainer instead of a plain dict - carriers property returns the CarrierContainer - add_carrier() uses the container's add() method - Serialization updated to include carriers in to_dataset() and restore them in from_dataset() 4. Exports (flixopt/__init__.py) - Both Carrier and CarrierContainer are now exported * Inline plotting methods to deprecate plotting.py (#508) * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * statistics_accessor.py - Heatmap colors type safety (lines 121-148, 820-853) - Changed _heatmap_figure() parameter type from colors: ColorType = None to colors: str | list[str] | None = None - Changed heatmap() method parameter type similarly - Updated docstrings to clarify that dicts are not supported for heatmaps since px.imshow's color_continuous_scale only accepts colorscale names or lists 2. statistics_accessor.py - Use configured qualitative colorscale (lines 284, 315) - Updated _create_stacked_bar() to use CONFIG.Plotting.default_qualitative_colorscale as the default colorscale - Updated _create_line() similarly - This ensures user-configured CONFIG.Plotting.default_qualitative_colorscale affects all bar/line plots consistently 3. topology_accessor.py - Path type alignment (lines 219-222) - Added normalization of path=False to None before calling _plot_network() - This resolves the type mismatch where TopologyAccessor.plot() accepts bool | str | Path but _plot_network() only accepts str | Path | None * fix usage if index name in aggregation plot * Add to docs * Improve carrier colors and defaults * Update default carriers and colors * Update config * Update config * Move default carriers to config.py * Change default carrier handling * Add color handling * Rmeove meta_data color handling * Add carrierst to examples * Improve plotting acessor * Improve _resolve_variable_names * Improve _resolve_variable_names * Simplify coloring and remove color accessor * Add connected_and_transformed handling * Improve error message in container * Methods moved to TransformAccessor (transform_accessor.py): - sel() - select by label - isel() - select by integer index - resample() - resample time dimension - Helper methods: _dataset_sel, _dataset_isel, _dataset_resample, _resample_by_dimension_groups 2. Solution is dropped: All transform methods return a new FlowSystem with no solution - the user must re-optimize the transformed system. 3. Deprecation warnings: The old flow_system.sel(), flow_system.isel(), and flow_system.resample() methods now emit deprecation warnings and forward to the new TransformAccessor methods. 4. Backward compatible: Existing code still works, just with deprecation warnings. * Documentation updated * Re-add _dataset_sel and other helper methods for proper deprectation. ALso fix new methods to be classmethods * BUGFIX: Carrier from dataset * Update docs --- docs/user-guide/core-concepts.md | 49 ++++ docs/user-guide/migration-guide-v6.md | 34 ++- docs/user-guide/optimization/index.md | 50 ++++ examples/01_Simple/simple_example.py | 1 - flixopt/flow_system.py | 299 ++++++++--------------- flixopt/transform_accessor.py | 339 +++++++++++++++++++++++++- 6 files changed, 572 insertions(+), 200 deletions(-) diff --git a/docs/user-guide/core-concepts.md b/docs/user-guide/core-concepts.md index 78e38ade7..14e5723d6 100644 --- a/docs/user-guide/core-concepts.md +++ b/docs/user-guide/core-concepts.md @@ -180,6 +180,55 @@ flow_system.statistics.plot.balance('HeatBus') | **Effect** | Metric to track/optimize | Costs, emissions, energy use | | **FlowSystem** | Complete model | Your entire system | +## FlowSystem API at a Glance + +The `FlowSystem` is the central object in flixOpt. After building your model, all operations are accessed through the FlowSystem and its **accessors**: + +```python +flow_system = fx.FlowSystem(timesteps) +flow_system.add_elements(...) + +# Optimize +flow_system.optimize(solver) + +# Access results +flow_system.solution # Raw xarray Dataset +flow_system.statistics.flow_hours # Aggregated statistics +flow_system.statistics.plot.balance() # Visualization + +# Transform (returns new FlowSystem) +fs_subset = flow_system.transform.sel(time=slice(...)) + +# Inspect structure +flow_system.topology.plot() +``` + +### Accessor Overview + +| Accessor | Purpose | Key Methods | +|----------|---------|-------------| +| **`solution`** | Raw optimization results | xarray Dataset with all variables | +| **`statistics`** | Aggregated data | `flow_rates`, `flow_hours`, `sizes`, `charge_states`, `total_effects` | +| **`statistics.plot`** | Visualization | `balance()`, `heatmap()`, `sankey()`, `effects()`, `storage()` | +| **`transform`** | Create modified copies | `sel()`, `isel()`, `resample()`, `cluster()` | +| **`topology`** | Network structure | `plot()`, `start_app()`, `infos()` | + +### Element Access + +Access elements directly from the FlowSystem: + +```python +# Access by label +flow_system.components['Boiler'] # Get a component +flow_system.buses['Heat'] # Get a bus +flow_system.flows['Boiler(Q_th)'] # Get a flow +flow_system.effects['costs'] # Get an effect + +# Element-specific solutions +flow_system.components['Boiler'].solution +flow_system.flows['Boiler(Q_th)'].solution +``` + ## Beyond Energy Systems While our example used a heating system, flixOpt works for any flow-based optimization: diff --git a/docs/user-guide/migration-guide-v6.md b/docs/user-guide/migration-guide-v6.md index 8b50312ee..164ff5a28 100644 --- a/docs/user-guide/migration-guide-v6.md +++ b/docs/user-guide/migration-guide-v6.md @@ -343,20 +343,52 @@ stats.total_effects['costs'].groupby('component_type').sum() | **Replace Optimization class** | Use `flow_system.optimize(solver)` instead | | **Update results access** | Use `flow_system.solution['var_name']` pattern | | **Update I/O code** | Use `to_netcdf()` / `from_netcdf()` | +| **Update transform methods** | Use `flow_system.transform.sel/isel/resample()` instead | | **Test thoroughly** | Verify results match v5.x outputs | | **Remove deprecated imports** | Remove `fx.Optimization`, `fx.Results` | --- +## Transform Methods Moved to Accessor + +The `sel()`, `isel()`, and `resample()` methods have been moved from `FlowSystem` to the `TransformAccessor`: + +=== "Old (deprecated)" + ```python + # These still work but emit deprecation warnings + fs_subset = flow_system.sel(time=slice('2023-01-01', '2023-06-30')) + fs_indexed = flow_system.isel(time=slice(0, 24)) + fs_resampled = flow_system.resample(time='4h', method='mean') + ``` + +=== "New (recommended)" + ```python + # Use the transform accessor + fs_subset = flow_system.transform.sel(time=slice('2023-01-01', '2023-06-30')) + fs_indexed = flow_system.transform.isel(time=slice(0, 24)) + fs_resampled = flow_system.transform.resample(time='4h', method='mean') + ``` + +!!! info "Solution is dropped" + All transform methods return a **new FlowSystem without a solution**. You must re-optimize the transformed system: + ```python + fs_subset = flow_system.transform.sel(time=slice('2023-01-01', '2023-01-31')) + fs_subset.optimize(solver) # Re-optimize the subset + ``` + +--- + ## Deprecation Timeline | Version | Status | |---------|--------| | v5.x | `Optimization` class deprecated with warning | -| v6.0.0 | `Optimization` class removed | +| v6.0.0 | `Optimization` class removed, `sel/isel/resample` methods deprecated | !!! warning "Update your code" The `Optimization` and `Results` classes are deprecated and will be removed in a future version. + The `flow_system.sel()`, `flow_system.isel()`, and `flow_system.resample()` methods are deprecated + in favor of `flow_system.transform.sel/isel/resample()`. Update your code to the new API to avoid breaking changes when upgrading. --- diff --git a/docs/user-guide/optimization/index.md b/docs/user-guide/optimization/index.md index 07c96454c..b1bd0caf6 100644 --- a/docs/user-guide/optimization/index.md +++ b/docs/user-guide/optimization/index.md @@ -93,6 +93,56 @@ print(clustered_fs.solution) | Standard | Small-Medium | Slow | Optimal | | Clustered | Very Large | Fast | Approximate | +## Transform Accessor + +The `transform` accessor provides methods to create modified copies of your FlowSystem. All transform methods return a **new FlowSystem without a solution** — you must re-optimize the transformed system. + +### Selecting Subsets + +Select a subset of your data by label or index: + +```python +# Select by label (like xarray.sel) +fs_january = flow_system.transform.sel(time=slice('2024-01-01', '2024-01-31')) +fs_scenario = flow_system.transform.sel(scenario='base') + +# Select by integer index (like xarray.isel) +fs_first_week = flow_system.transform.isel(time=slice(0, 168)) +fs_first_scenario = flow_system.transform.isel(scenario=0) + +# Re-optimize the subset +fs_january.optimize(fx.solvers.HighsSolver()) +``` + +### Resampling Time Series + +Change the temporal resolution of your FlowSystem: + +```python +# Resample to 4-hour intervals +fs_4h = flow_system.transform.resample(time='4h', method='mean') + +# Resample to daily +fs_daily = flow_system.transform.resample(time='1D', method='mean') + +# Re-optimize with new resolution +fs_4h.optimize(fx.solvers.HighsSolver()) +``` + +**Available resampling methods:** `'mean'`, `'sum'`, `'max'`, `'min'`, `'first'`, `'last'` + +### Clustering + +See [Clustered Optimization](#clustered-optimization) above. + +### Use Cases + +| Method | Use Case | +|--------|----------| +| `sel()` / `isel()` | Analyze specific time periods, scenarios, or periods | +| `resample()` | Reduce problem size, test at lower resolution | +| `cluster()` | Investment planning with typical periods | + ## Custom Constraints flixOpt is built on [linopy](https://github.com/PyPSA/linopy), allowing you to add custom constraints beyond what's available through the standard API. diff --git a/examples/01_Simple/simple_example.py b/examples/01_Simple/simple_example.py index e8185e248..b63260ece 100644 --- a/examples/01_Simple/simple_example.py +++ b/examples/01_Simple/simple_example.py @@ -116,7 +116,6 @@ flow_system.statistics.plot.balance('Storage') flow_system.statistics.plot.heatmap('CHP(Q_th)') flow_system.statistics.plot.heatmap('Storage') - flow_system.statistics.plot.heatmap('Storage') # Access data as xarray Datasets print(flow_system.statistics.flow_rates) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index ee1a10261..153354cce 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -8,7 +8,6 @@ import logging import pathlib import warnings -from collections import defaultdict from itertools import chain from typing import TYPE_CHECKING, Any, Literal @@ -1619,29 +1618,22 @@ def _dataset_sel( Returns: xr.Dataset: Selected dataset """ - indexers = {} - if time is not None: - indexers['time'] = time - if period is not None: - indexers['period'] = period - if scenario is not None: - indexers['scenario'] = scenario - - if not indexers: - return dataset - - result = dataset.sel(**indexers) - - # Update time-related attributes if time was selected - if 'time' in indexers: - result = cls._update_time_metadata(result, hours_of_last_timestep, hours_of_previous_timesteps) - - # Update period-related attributes if period was selected - # This recalculates period_weights and weights from the new period index - if 'period' in indexers: - result = cls._update_period_metadata(result) + warnings.warn( + f'\n_dataset_sel() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use TransformAccessor._dataset_sel() instead.', + DeprecationWarning, + stacklevel=2, + ) + from .transform_accessor import TransformAccessor - return result + return TransformAccessor._dataset_sel( + dataset, + time=time, + period=period, + scenario=scenario, + hours_of_last_timestep=hours_of_last_timestep, + hours_of_previous_timesteps=hours_of_previous_timesteps, + ) def sel( self, @@ -1652,8 +1644,8 @@ def sel( """ Select a subset of the flowsystem by label. - For power users: Use FlowSystem._dataset_sel() to chain operations on datasets - without conversion overhead. See _dataset_sel() documentation. + .. deprecated:: + Use ``flow_system.transform.sel()`` instead. Will be removed in v6.0.0. Args: time: Time selection (e.g., slice('2023-01-01', '2023-12-31'), '2023-06-15') @@ -1661,17 +1653,15 @@ def sel( scenario: Scenario selection (e.g., 'scenario1', or list of scenarios) Returns: - FlowSystem: New FlowSystem with selected data + FlowSystem: New FlowSystem with selected data (no solution). """ - if time is None and period is None and scenario is None: - return self.copy() - - if not self.connected_and_transformed: - self.connect_and_transform() - - ds = self.to_dataset() - ds = self._dataset_sel(ds, time=time, period=period, scenario=scenario) - return self.__class__.from_dataset(ds) + warnings.warn( + f'\nsel() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.transform.sel() instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.transform.sel(time=time, period=period, scenario=scenario) @classmethod def _dataset_isel( @@ -1700,29 +1690,22 @@ def _dataset_isel( Returns: xr.Dataset: Selected dataset """ - indexers = {} - if time is not None: - indexers['time'] = time - if period is not None: - indexers['period'] = period - if scenario is not None: - indexers['scenario'] = scenario - - if not indexers: - return dataset - - result = dataset.isel(**indexers) - - # Update time-related attributes if time was selected - if 'time' in indexers: - result = cls._update_time_metadata(result, hours_of_last_timestep, hours_of_previous_timesteps) - - # Update period-related attributes if period was selected - # This recalculates period_weights and weights from the new period index - if 'period' in indexers: - result = cls._update_period_metadata(result) + warnings.warn( + f'\n_dataset_isel() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use TransformAccessor._dataset_isel() instead.', + DeprecationWarning, + stacklevel=2, + ) + from .transform_accessor import TransformAccessor - return result + return TransformAccessor._dataset_isel( + dataset, + time=time, + period=period, + scenario=scenario, + hours_of_last_timestep=hours_of_last_timestep, + hours_of_previous_timesteps=hours_of_previous_timesteps, + ) def isel( self, @@ -1733,109 +1716,24 @@ def isel( """ Select a subset of the flowsystem by integer indices. - For power users: Use FlowSystem._dataset_isel() to chain operations on datasets - without conversion overhead. See _dataset_sel() documentation. + .. deprecated:: + Use ``flow_system.transform.isel()`` instead. Will be removed in v6.0.0. Args: time: Time selection by integer index (e.g., slice(0, 100), 50, or [0, 5, 10]) - period: Period selection by integer index (e.g., slice(0, 100), 50, or [0, 5, 10]) - scenario: Scenario selection by integer index (e.g., slice(0, 3), 50, or [0, 5, 10]) + period: Period selection by integer index + scenario: Scenario selection by integer index Returns: - FlowSystem: New FlowSystem with selected data - """ - if time is None and period is None and scenario is None: - return self.copy() - - if not self.connected_and_transformed: - self.connect_and_transform() - - ds = self.to_dataset() - ds = self._dataset_isel(ds, time=time, period=period, scenario=scenario) - return self.__class__.from_dataset(ds) - - @classmethod - def _resample_by_dimension_groups( - cls, - time_dataset: xr.Dataset, - time: str, - method: str, - **kwargs: Any, - ) -> xr.Dataset: + FlowSystem: New FlowSystem with selected data (no solution). """ - Resample variables grouped by their dimension structure to avoid broadcasting. - - This method groups variables by their non-time dimensions before resampling, - which provides two key benefits: - - 1. **Performance**: Resampling many variables with the same dimensions together - is significantly faster than resampling each variable individually. - - 2. **Safety**: Prevents xarray from broadcasting variables with different - dimensions into a larger dimensional space filled with NaNs, which would - cause memory bloat and computational inefficiency. - - Example: - Without grouping (problematic): - var1: (time, location, tech) shape (8000, 10, 2) - var2: (time, region) shape (8000, 5) - concat → (variable, time, location, tech, region) ← Unwanted broadcasting! - - With grouping (safe and fast): - Group 1: [var1, var3, ...] with dims (time, location, tech) - Group 2: [var2, var4, ...] with dims (time, region) - Each group resampled separately → No broadcasting, optimal performance! - - Args: - time_dataset: Dataset containing only variables with time dimension - time: Resampling frequency (e.g., '2h', '1D', '1M') - method: Resampling method name (e.g., 'mean', 'sum', 'first') - **kwargs: Additional arguments passed to xarray.resample() - - Returns: - Resampled dataset with original dimension structure preserved - """ - # Group variables by dimensions (excluding time) - dim_groups = defaultdict(list) - for var_name, var in time_dataset.data_vars.items(): - dims_key = tuple(sorted(d for d in var.dims if d != 'time')) - dim_groups[dims_key].append(var_name) - - # Handle empty case: no time-dependent variables - if not dim_groups: - return getattr(time_dataset.resample(time=time, **kwargs), method)() - - # Resample each group separately using DataArray concat (faster) - resampled_groups = [] - for var_names in dim_groups.values(): - # Skip empty groups - if not var_names: - continue - - # Concat variables into a single DataArray with 'variable' dimension - # Use combine_attrs='drop_conflicts' to handle attribute conflicts - stacked = xr.concat( - [time_dataset[name] for name in var_names], - dim=pd.Index(var_names, name='variable'), - combine_attrs='drop_conflicts', - ) - - # Resample the DataArray (faster than resampling Dataset) - resampled = getattr(stacked.resample(time=time, **kwargs), method)() - - # Convert back to Dataset using the 'variable' dimension - resampled_dataset = resampled.to_dataset(dim='variable') - resampled_groups.append(resampled_dataset) - - # Merge all resampled groups, handling empty list case - if not resampled_groups: - return time_dataset # Return empty dataset as-is - - if len(resampled_groups) == 1: - return resampled_groups[0] - - # Merge multiple groups with combine_attrs to avoid conflicts - return xr.merge(resampled_groups, combine_attrs='drop_conflicts') + warnings.warn( + f'\nisel() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.transform.isel() instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.transform.isel(time=time, period=period, scenario=scenario) @classmethod def _dataset_resample( @@ -1866,36 +1764,47 @@ def _dataset_resample( Returns: xr.Dataset: Resampled dataset """ - # Validate method - available_methods = ['mean', 'sum', 'max', 'min', 'first', 'last', 'std', 'var', 'median', 'count'] - if method not in available_methods: - raise ValueError(f'Unsupported resampling method: {method}. Available: {available_methods}') - - # Preserve original dataset attributes (especially the reference structure) - original_attrs = dict(dataset.attrs) - - # Separate time and non-time variables - time_var_names = [v for v in dataset.data_vars if 'time' in dataset[v].dims] - non_time_var_names = [v for v in dataset.data_vars if v not in time_var_names] - - # Only resample variables that have time dimension - time_dataset = dataset[time_var_names] + warnings.warn( + f'\n_dataset_resample() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use TransformAccessor._dataset_resample() instead.', + DeprecationWarning, + stacklevel=2, + ) + from .transform_accessor import TransformAccessor - # Resample with dimension grouping to avoid broadcasting - resampled_time_dataset = cls._resample_by_dimension_groups(time_dataset, freq, method, **kwargs) + return TransformAccessor._dataset_resample( + dataset, + freq=freq, + method=method, + hours_of_last_timestep=hours_of_last_timestep, + hours_of_previous_timesteps=hours_of_previous_timesteps, + **kwargs, + ) - # Combine resampled time variables with non-time variables - if non_time_var_names: - non_time_dataset = dataset[non_time_var_names] - result = xr.merge([resampled_time_dataset, non_time_dataset]) - else: - result = resampled_time_dataset + @classmethod + def _resample_by_dimension_groups( + cls, + time_dataset: xr.Dataset, + time: str, + method: str, + **kwargs: Any, + ) -> xr.Dataset: + """ + Resample variables grouped by their dimension structure to avoid broadcasting. - # Restore original attributes (xr.merge can drop them) - result.attrs.update(original_attrs) + .. deprecated:: + Use ``TransformAccessor._resample_by_dimension_groups()`` instead. + Will be removed in v6.0.0. + """ + warnings.warn( + f'\n_resample_by_dimension_groups() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use TransformAccessor._resample_by_dimension_groups() instead.', + DeprecationWarning, + stacklevel=2, + ) + from .transform_accessor import TransformAccessor - # Update time-related attributes based on new time index - return cls._update_time_metadata(result, hours_of_last_timestep, hours_of_previous_timesteps) + return TransformAccessor._resample_by_dimension_groups(time_dataset, time, method, **kwargs) def resample( self, @@ -1906,36 +1815,34 @@ def resample( **kwargs: Any, ) -> FlowSystem: """ - Create a resampled FlowSystem by resampling data along the time dimension (like xr.Dataset.resample()). - Only resamples data variables that have a time dimension. + Create a resampled FlowSystem by resampling data along the time dimension. - For power users: Use FlowSystem._dataset_resample() to chain operations on datasets - without conversion overhead. See _dataset_sel() documentation. + .. deprecated:: + Use ``flow_system.transform.resample()`` instead. Will be removed in v6.0.0. Args: time: Resampling frequency (e.g., '3h', '2D', '1M') method: Resampling method. Recommended: 'mean', 'first', 'last', 'max', 'min' - hours_of_last_timestep: Duration of the last timestep after resampling. If None, computed from the last time interval. - hours_of_previous_timesteps: Duration of previous timesteps after resampling. If None, computed from the first time interval. - Can be a scalar or array. + hours_of_last_timestep: Duration of the last timestep after resampling. + hours_of_previous_timesteps: Duration of previous timesteps after resampling. **kwargs: Additional arguments passed to xarray.resample() Returns: - FlowSystem: New resampled FlowSystem + FlowSystem: New resampled FlowSystem (no solution). """ - if not self.connected_and_transformed: - self.connect_and_transform() - - ds = self.to_dataset() - ds = self._dataset_resample( - ds, - freq=time, + warnings.warn( + f'\nresample() is deprecated and will be removed in {DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.transform.resample() instead.', + DeprecationWarning, + stacklevel=2, + ) + return self.transform.resample( + time=time, method=method, hours_of_last_timestep=hours_of_last_timestep, hours_of_previous_timesteps=hours_of_previous_timesteps, **kwargs, ) - return self.__class__.from_dataset(ds) @property def connected_and_transformed(self) -> bool: diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index 028d83bca..cb0d87872 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -2,15 +2,21 @@ Transform accessor for FlowSystem. This module provides the TransformAccessor class that enables -transformations on FlowSystem like clustering and MGA. +transformations on FlowSystem like clustering, selection, and resampling. """ from __future__ import annotations import logging -from typing import TYPE_CHECKING +from collections import defaultdict +from typing import TYPE_CHECKING, Any, Literal + +import pandas as pd +import xarray as xr if TYPE_CHECKING: + import numpy as np + from .clustering import ClusteringParameters from .flow_system import FlowSystem @@ -193,6 +199,335 @@ def _calculate_clustering_weights(ds) -> dict[str, float]: return weights + def sel( + self, + time: str | slice | list[str] | pd.Timestamp | pd.DatetimeIndex | None = None, + period: int | slice | list[int] | pd.Index | None = None, + scenario: str | slice | list[str] | pd.Index | None = None, + ) -> FlowSystem: + """ + Select a subset of the FlowSystem by label. + + Creates a new FlowSystem with data selected along the specified dimensions. + The returned FlowSystem has no solution (it must be re-optimized). + + Args: + time: Time selection (e.g., slice('2023-01-01', '2023-12-31'), '2023-06-15') + period: Period selection (e.g., slice(2023, 2024), or list of periods) + scenario: Scenario selection (e.g., 'scenario1', or list of scenarios) + + Returns: + FlowSystem: New FlowSystem with selected data (no solution). + + Examples: + >>> # Select specific time range + >>> fs_jan = flow_system.transform.sel(time=slice('2023-01-01', '2023-01-31')) + >>> fs_jan.optimize(solver) + + >>> # Select single scenario + >>> fs_base = flow_system.transform.sel(scenario='Base Case') + """ + from .flow_system import FlowSystem + + if time is None and period is None and scenario is None: + result = self._fs.copy() + result.solution = None + return result + + if not self._fs.connected_and_transformed: + self._fs.connect_and_transform() + + ds = self._fs.to_dataset() + ds = self._dataset_sel(ds, time=time, period=period, scenario=scenario) + return FlowSystem.from_dataset(ds) # from_dataset doesn't include solution + + def isel( + self, + time: int | slice | list[int] | None = None, + period: int | slice | list[int] | None = None, + scenario: int | slice | list[int] | None = None, + ) -> FlowSystem: + """ + Select a subset of the FlowSystem by integer indices. + + Creates a new FlowSystem with data selected along the specified dimensions. + The returned FlowSystem has no solution (it must be re-optimized). + + Args: + time: Time selection by integer index (e.g., slice(0, 100), 50, or [0, 5, 10]) + period: Period selection by integer index + scenario: Scenario selection by integer index + + Returns: + FlowSystem: New FlowSystem with selected data (no solution). + + Examples: + >>> # Select first 24 timesteps + >>> fs_day1 = flow_system.transform.isel(time=slice(0, 24)) + >>> fs_day1.optimize(solver) + + >>> # Select first scenario + >>> fs_first = flow_system.transform.isel(scenario=0) + """ + from .flow_system import FlowSystem + + if time is None and period is None and scenario is None: + result = self._fs.copy() + result.solution = None + return result + + if not self._fs.connected_and_transformed: + self._fs.connect_and_transform() + + ds = self._fs.to_dataset() + ds = self._dataset_isel(ds, time=time, period=period, scenario=scenario) + return FlowSystem.from_dataset(ds) # from_dataset doesn't include solution + + def resample( + self, + time: str, + method: Literal['mean', 'sum', 'max', 'min', 'first', 'last', 'std', 'var', 'median', 'count'] = 'mean', + hours_of_last_timestep: int | float | None = None, + hours_of_previous_timesteps: int | float | np.ndarray | None = None, + **kwargs: Any, + ) -> FlowSystem: + """ + Create a resampled FlowSystem by resampling data along the time dimension. + + Creates a new FlowSystem with resampled time series data. + The returned FlowSystem has no solution (it must be re-optimized). + + Args: + time: Resampling frequency (e.g., '3h', '2D', '1M') + method: Resampling method. Recommended: 'mean', 'first', 'last', 'max', 'min' + hours_of_last_timestep: Duration of the last timestep after resampling. + If None, computed from the last time interval. + hours_of_previous_timesteps: Duration of previous timesteps after resampling. + If None, computed from the first time interval. Can be a scalar or array. + **kwargs: Additional arguments passed to xarray.resample() + + Returns: + FlowSystem: New resampled FlowSystem (no solution). + + Examples: + >>> # Resample to 4-hour intervals + >>> fs_4h = flow_system.transform.resample(time='4h', method='mean') + >>> fs_4h.optimize(solver) + + >>> # Resample to daily with max values + >>> fs_daily = flow_system.transform.resample(time='1D', method='max') + """ + from .flow_system import FlowSystem + + if not self._fs.connected_and_transformed: + self._fs.connect_and_transform() + + ds = self._fs.to_dataset() + ds = self._dataset_resample( + ds, + freq=time, + method=method, + hours_of_last_timestep=hours_of_last_timestep, + hours_of_previous_timesteps=hours_of_previous_timesteps, + **kwargs, + ) + return FlowSystem.from_dataset(ds) # from_dataset doesn't include solution + + # --- Class methods for dataset operations (can be called without instance) --- + + @classmethod + def _dataset_sel( + cls, + dataset: xr.Dataset, + time: str | slice | list[str] | pd.Timestamp | pd.DatetimeIndex | None = None, + period: int | slice | list[int] | pd.Index | None = None, + scenario: str | slice | list[str] | pd.Index | None = None, + hours_of_last_timestep: int | float | None = None, + hours_of_previous_timesteps: int | float | np.ndarray | None = None, + ) -> xr.Dataset: + """ + Select subset of dataset by label. + + Args: + dataset: xarray Dataset from FlowSystem.to_dataset() + time: Time selection (e.g., '2020-01', slice('2020-01-01', '2020-06-30')) + period: Period selection (e.g., 2020, slice(2020, 2022)) + scenario: Scenario selection (e.g., 'Base Case', ['Base Case', 'High Demand']) + hours_of_last_timestep: Duration of the last timestep. + hours_of_previous_timesteps: Duration of previous timesteps. + + Returns: + xr.Dataset: Selected dataset + """ + from .flow_system import FlowSystem + + indexers = {} + if time is not None: + indexers['time'] = time + if period is not None: + indexers['period'] = period + if scenario is not None: + indexers['scenario'] = scenario + + if not indexers: + return dataset + + result = dataset.sel(**indexers) + + if 'time' in indexers: + result = FlowSystem._update_time_metadata(result, hours_of_last_timestep, hours_of_previous_timesteps) + + if 'period' in indexers: + result = FlowSystem._update_period_metadata(result) + + return result + + @classmethod + def _dataset_isel( + cls, + dataset: xr.Dataset, + time: int | slice | list[int] | None = None, + period: int | slice | list[int] | None = None, + scenario: int | slice | list[int] | None = None, + hours_of_last_timestep: int | float | None = None, + hours_of_previous_timesteps: int | float | np.ndarray | None = None, + ) -> xr.Dataset: + """ + Select subset of dataset by integer index. + + Args: + dataset: xarray Dataset from FlowSystem.to_dataset() + time: Time selection by index + period: Period selection by index + scenario: Scenario selection by index + hours_of_last_timestep: Duration of the last timestep. + hours_of_previous_timesteps: Duration of previous timesteps. + + Returns: + xr.Dataset: Selected dataset + """ + from .flow_system import FlowSystem + + indexers = {} + if time is not None: + indexers['time'] = time + if period is not None: + indexers['period'] = period + if scenario is not None: + indexers['scenario'] = scenario + + if not indexers: + return dataset + + result = dataset.isel(**indexers) + + if 'time' in indexers: + result = FlowSystem._update_time_metadata(result, hours_of_last_timestep, hours_of_previous_timesteps) + + if 'period' in indexers: + result = FlowSystem._update_period_metadata(result) + + return result + + @classmethod + def _dataset_resample( + cls, + dataset: xr.Dataset, + freq: str, + method: Literal['mean', 'sum', 'max', 'min', 'first', 'last', 'std', 'var', 'median', 'count'] = 'mean', + hours_of_last_timestep: int | float | None = None, + hours_of_previous_timesteps: int | float | np.ndarray | None = None, + **kwargs: Any, + ) -> xr.Dataset: + """ + Resample dataset along time dimension. + + Args: + dataset: xarray Dataset from FlowSystem.to_dataset() + freq: Resampling frequency (e.g., '2h', '1D', '1M') + method: Resampling method (e.g., 'mean', 'sum', 'first') + hours_of_last_timestep: Duration of the last timestep after resampling. + hours_of_previous_timesteps: Duration of previous timesteps after resampling. + **kwargs: Additional arguments passed to xarray.resample() + + Returns: + xr.Dataset: Resampled dataset + """ + from .flow_system import FlowSystem + + available_methods = ['mean', 'sum', 'max', 'min', 'first', 'last', 'std', 'var', 'median', 'count'] + if method not in available_methods: + raise ValueError(f'Unsupported resampling method: {method}. Available: {available_methods}') + + original_attrs = dict(dataset.attrs) + + time_var_names = [v for v in dataset.data_vars if 'time' in dataset[v].dims] + non_time_var_names = [v for v in dataset.data_vars if v not in time_var_names] + + time_dataset = dataset[time_var_names] + resampled_time_dataset = cls._resample_by_dimension_groups(time_dataset, freq, method, **kwargs) + + if non_time_var_names: + non_time_dataset = dataset[non_time_var_names] + result = xr.merge([resampled_time_dataset, non_time_dataset]) + else: + result = resampled_time_dataset + + result.attrs.update(original_attrs) + return FlowSystem._update_time_metadata(result, hours_of_last_timestep, hours_of_previous_timesteps) + + @staticmethod + def _resample_by_dimension_groups( + time_dataset: xr.Dataset, + time: str, + method: str, + **kwargs: Any, + ) -> xr.Dataset: + """ + Resample variables grouped by their dimension structure to avoid broadcasting. + + Groups variables by their non-time dimensions before resampling for performance + and to prevent xarray from broadcasting variables with different dimensions. + + Args: + time_dataset: Dataset containing only variables with time dimension + time: Resampling frequency (e.g., '2h', '1D', '1M') + method: Resampling method name (e.g., 'mean', 'sum', 'first') + **kwargs: Additional arguments passed to xarray.resample() + + Returns: + Resampled dataset with original dimension structure preserved + """ + dim_groups = defaultdict(list) + for var_name, var in time_dataset.data_vars.items(): + dims_key = tuple(sorted(d for d in var.dims if d != 'time')) + dim_groups[dims_key].append(var_name) + + if not dim_groups: + return getattr(time_dataset.resample(time=time, **kwargs), method)() + + resampled_groups = [] + for var_names in dim_groups.values(): + if not var_names: + continue + + stacked = xr.concat( + [time_dataset[name] for name in var_names], + dim=pd.Index(var_names, name='variable'), + combine_attrs='drop_conflicts', + ) + resampled = getattr(stacked.resample(time=time, **kwargs), method)() + resampled_dataset = resampled.to_dataset(dim='variable') + resampled_groups.append(resampled_dataset) + + if not resampled_groups: + return time_dataset + + if len(resampled_groups) == 1: + return resampled_groups[0] + + return xr.merge(resampled_groups, combine_attrs='drop_conflicts') + # Future methods can be added here: # # def mga(self, alternatives: int = 5) -> FlowSystem: From 8bf48960e81b6ff6a8af7520d8f43f75721becf1 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Tue, 9 Dec 2025 22:06:30 +0100 Subject: [PATCH 30/88] Add recipies for plotting data (#516) --- docs/user-guide/recipes/index.md | 21 +-- .../recipes/plotting-custom-data.md | 125 ++++++++++++++++++ mkdocs.yml | 4 +- 3 files changed, 133 insertions(+), 17 deletions(-) create mode 100644 docs/user-guide/recipes/plotting-custom-data.md diff --git a/docs/user-guide/recipes/index.md b/docs/user-guide/recipes/index.md index 0317b2c70..38c7fa001 100644 --- a/docs/user-guide/recipes/index.md +++ b/docs/user-guide/recipes/index.md @@ -1,22 +1,10 @@ # Recipes -**Coming Soon!** 🚧 +Short, focused code snippets showing **how to do specific things** in FlixOpt. Unlike full examples, recipes focus on a single concept. -This section will contain quick, copy-paste ready code snippets for common FlixOpt patterns. +## Available Recipes ---- - -## What Will Be Here? - -Short, focused code snippets showing **how to do specific things** in FlixOpt: - -- Common modeling patterns -- Integration with other tools -- Performance optimizations -- Domain-specific solutions -- Data analysis shortcuts - -Unlike full examples, recipes will be focused snippets showing a single concept. +- [Plotting Custom Data](plotting-custom-data.md) - Create faceted plots with your own xarray data using Plotly Express --- @@ -37,9 +25,10 @@ Unlike full examples, recipes will be focused snippets showing a single concept. ## Want to Contribute? -**We need your help!** If you have recurring modeling patterns or clever solutions to share, please contribute via [GitHub issues](https://github.com/flixopt/flixopt/issues) or pull requests. +If you have recurring modeling patterns or clever solutions to share, please contribute via [GitHub issues](https://github.com/flixopt/flixopt/issues) or pull requests. Guidelines: + 1. Keep it short (< 100 lines of code) 2. Focus on one specific technique 3. Add brief explanation and when to use it diff --git a/docs/user-guide/recipes/plotting-custom-data.md b/docs/user-guide/recipes/plotting-custom-data.md new file mode 100644 index 000000000..3c539e6ce --- /dev/null +++ b/docs/user-guide/recipes/plotting-custom-data.md @@ -0,0 +1,125 @@ +# Plotting Custom Data + +The plot accessor (`flow_system.statistics.plot`) is designed for visualizing optimization results using element labels. If you want to create faceted plots with your own custom data (not from a FlowSystem), you can use Plotly Express directly with xarray data. + +## Faceted Plots with Custom xarray Data + +The key is converting your xarray Dataset to a long-form DataFrame that Plotly Express expects: + +```python +import xarray as xr +import pandas as pd +import plotly.express as px + +# Your custom xarray Dataset +my_data = xr.Dataset({ + 'Solar': (['time', 'scenario'], solar_values), + 'Wind': (['time', 'scenario'], wind_values), + 'Demand': (['time', 'scenario'], demand_values), +}, coords={ + 'time': timestamps, + 'scenario': ['Base', 'High RE', 'Low Demand'] +}) + +# Convert to long-form DataFrame for Plotly Express +df = ( + my_data + .to_dataframe() + .reset_index() + .melt( + id_vars=['time', 'scenario'], # Keep as columns + var_name='variable', + value_name='value' + ) +) + +# Faceted stacked bar chart +fig = px.bar( + df, + x='time', + y='value', + color='variable', + facet_col='scenario', + barmode='relative', + title='Energy Balance by Scenario' +) +fig.show() + +# Faceted line plot +fig = px.line( + df, + x='time', + y='value', + color='variable', + facet_col='scenario' +) +fig.show() + +# Faceted area chart +fig = px.area( + df, + x='time', + y='value', + color='variable', + facet_col='scenario' +) +fig.show() +``` + +## Common Plotly Express Faceting Options + +| Parameter | Description | +|-----------|-------------| +| `facet_col` | Dimension for column subplots | +| `facet_row` | Dimension for row subplots | +| `animation_frame` | Dimension for animation slider | +| `facet_col_wrap` | Number of columns before wrapping | + +```python +# Row and column facets +fig = px.line(df, x='time', y='value', color='variable', + facet_col='scenario', facet_row='region') + +# Animation over time periods +fig = px.bar(df, x='variable', y='value', color='variable', + animation_frame='period', barmode='group') + +# Wrap columns +fig = px.line(df, x='time', y='value', color='variable', + facet_col='scenario', facet_col_wrap=2) +``` + +## Heatmaps with Custom Data + +For heatmaps, you can pass 2D arrays directly to `px.imshow`: + +```python +import plotly.express as px + +# 2D data (e.g., days × hours) +heatmap_data = my_data['Solar'].sel(scenario='Base').values.reshape(365, 24) + +fig = px.imshow( + heatmap_data, + labels={'x': 'Hour', 'y': 'Day', 'color': 'Power [kW]'}, + aspect='auto', + color_continuous_scale='portland' +) +fig.show() + +# Faceted heatmaps using subplots +from plotly.subplots import make_subplots +import plotly.graph_objects as go + +scenarios = ['Base', 'High RE'] +fig = make_subplots(rows=1, cols=len(scenarios), subplot_titles=scenarios) + +for i, scenario in enumerate(scenarios, 1): + data = my_data['Solar'].sel(scenario=scenario).values.reshape(365, 24) + fig.add_trace(go.Heatmap(z=data, colorscale='portland'), row=1, col=i) + +fig.update_layout(title='Solar Output by Scenario') +fig.show() +``` + +This approach gives you full control over your visualizations while leveraging Plotly's powerful faceting capabilities. diff --git a/mkdocs.yml b/mkdocs.yml index f966e76f7..278081889 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -37,7 +37,9 @@ nav: - Investment: user-guide/mathematical-notation/features/InvestParameters.md - Status: user-guide/mathematical-notation/features/StatusParameters.md - Piecewise: user-guide/mathematical-notation/features/Piecewise.md - - Recipes: user-guide/recipes/index.md + - Recipes: + - user-guide/recipes/index.md + - Plotting Custom Data: user-guide/recipes/plotting-custom-data.md - Support: - FAQ: user-guide/faq.md - Troubleshooting: user-guide/troubleshooting.md From 82348b919f153863bb6a2e915df3f8d39e604a6d Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Tue, 9 Dec 2025 22:09:16 +0100 Subject: [PATCH 31/88] Invalidate and lock FLow system based on solution existance (#518) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Link status parameters to flow_system * ⏺ Summary I've implemented the FlowSystem locking behavior as discussed. Here's what was done: Core Concept A FlowSystem is locked (read-only) when solution is not None. New Features 1. is_locked property (flow_system.py:1127-1131) - Returns True if the FlowSystem has a solution 2. reset() method (flow_system.py:1145-1168) - Clears: solution, model, element submodels, variable/constraint names - Returns self for method chaining - Allows the FlowSystem to be modified and re-optimized 3. _invalidate_model() helper (flow_system.py:1133-1143) - Called when adding elements/carriers to a FlowSystem with a model (but no solution) - Clears model and element state 4. copy() method (flow_system.py:733-767) - Creates a fresh FlowSystem copy without solution/model - Supports copy.copy() and copy.deepcopy() Behavior Changes | Operation | Before Optimization | After build_model() | After optimize() | |----------------|-------------------------------|------------------------------------|-------------------------------| | add_elements() | ✓ Works | ⚠ Works, warns & invalidates model | ✗ RuntimeError | | add_carriers() | ✓ Works | ⚠ Works, warns & invalidates model | ✗ RuntimeError | | copy() | Returns copy without solution | Returns copy without solution | Returns copy without solution | | reset() | No-op | Clears model | Clears solution & model | Bug Fix Fixed an issue where StatusParameters created during modeling (for prevent_simultaneous_flows and component-level status) weren't linked to the FlowSystem (elements.py:957-964, components.py:731-732). Tests Added comprehensive tests in tests/test_flow_system_locking.py (28 tests) covering: - is_locked property behavior - add_elements() locking and invalidation - add_carriers() locking and invalidation - reset() method functionality - copy() method functionality - Loaded FlowSystem behavior * Add invalidation tests * Add link_to_flow_system method * Add link_to_flow_system method * New invalidate() method (flow_system.py:1232-1275) A public method for manual model invalidation when modifying element attributes after connect_and_transform(): def invalidate(self) -> FlowSystem: """Invalidate the model to allow re-transformation after modifying elements.""" - Raises RuntimeError if FlowSystem has a solution (must call reset() first) - Returns self for method chaining - Useful when you need to modify after connect_and_transform() but before optimize() 2. Updated docstrings connect_and_transform() - Added comprehensive docstring explaining: - What steps it performs - Warning that attributes become xarray DataArrays after transformation - Note about idempotency and how to reset with invalidate() _invalidate_model() - Clarified its role and relationship to public methods 3. New tests (test_flow_system_locking.py:285-409) Added TestInvalidate class with 8 tests: - test_invalidate_resets_connected_and_transformed - test_invalidate_clears_model - test_invalidate_raises_when_locked - test_invalidate_returns_self - test_invalidate_allows_retransformation - test_modify_element_and_invalidate - full workflow with reset - test_invalidate_needed_after_transform_before_optimize - pre-optimization modification - test_reset_already_invalidates - confirms reset already handles invalidation Key insight from testing reset() already calls _invalidate_model(), so modifications after reset() automatically take effect on the next optimize(). The new invalidate() method is primarily for the case where: 1. You've called connect_and_transform() manually 2. Haven't optimized yet (no solution) 3. Need to modify element attributes * Typo --- flixopt/components.py | 62 ++--- flixopt/effects.py | 38 +-- flixopt/elements.py | 91 ++++--- flixopt/flow_system.py | 205 ++++++++++++++- flixopt/interface.py | 96 +++---- flixopt/structure.py | 50 +++- tests/test_flow_system_locking.py | 403 ++++++++++++++++++++++++++++++ 7 files changed, 793 insertions(+), 152 deletions(-) create mode 100644 tests/test_flow_system_locking.py diff --git a/flixopt/components.py b/flixopt/components.py index 0cfed39eb..c5913c8e2 100644 --- a/flixopt/components.py +++ b/flixopt/components.py @@ -180,11 +180,11 @@ def create_model(self, model: FlowSystemModel) -> LinearConverterModel: self.submodel = LinearConverterModel(model, self) return self.submodel - def _set_flow_system(self, flow_system) -> None: + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: """Propagate flow_system reference to parent Component and piecewise_conversion.""" - super()._set_flow_system(flow_system) + super().link_to_flow_system(flow_system, prefix) if self.piecewise_conversion is not None: - self.piecewise_conversion._set_flow_system(flow_system) + self.piecewise_conversion.link_to_flow_system(flow_system, self._sub_prefix('PiecewiseConversion')) def _plausibility_checks(self) -> None: super()._plausibility_checks() @@ -216,14 +216,13 @@ def _plausibility_checks(self) -> None: f'({flow.label_full}).' ) - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) - super().transform_data(prefix) + def transform_data(self) -> None: + super().transform_data() if self.conversion_factors: self.conversion_factors = self._transform_conversion_factors() if self.piecewise_conversion: self.piecewise_conversion.has_time_dim = True - self.piecewise_conversion.transform_data(f'{prefix}|PiecewiseConversion') + self.piecewise_conversion.transform_data() def _transform_conversion_factors(self) -> list[dict[str, xr.DataArray]]: """Converts all conversion factors to internal datatypes""" @@ -427,49 +426,50 @@ def create_model(self, model: FlowSystemModel) -> StorageModel: self.submodel = StorageModel(model, self) return self.submodel - def _set_flow_system(self, flow_system) -> None: + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: """Propagate flow_system reference to parent Component and capacity_in_flow_hours if it's InvestParameters.""" - super()._set_flow_system(flow_system) + super().link_to_flow_system(flow_system, prefix) if isinstance(self.capacity_in_flow_hours, InvestParameters): - self.capacity_in_flow_hours._set_flow_system(flow_system) + self.capacity_in_flow_hours.link_to_flow_system(flow_system, self._sub_prefix('InvestParameters')) - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) - super().transform_data(prefix) + def transform_data(self) -> None: + super().transform_data() self.relative_minimum_charge_state = self._fit_coords( - f'{prefix}|relative_minimum_charge_state', self.relative_minimum_charge_state + f'{self.prefix}|relative_minimum_charge_state', self.relative_minimum_charge_state ) self.relative_maximum_charge_state = self._fit_coords( - f'{prefix}|relative_maximum_charge_state', self.relative_maximum_charge_state + f'{self.prefix}|relative_maximum_charge_state', self.relative_maximum_charge_state + ) + self.eta_charge = self._fit_coords(f'{self.prefix}|eta_charge', self.eta_charge) + self.eta_discharge = self._fit_coords(f'{self.prefix}|eta_discharge', self.eta_discharge) + self.relative_loss_per_hour = self._fit_coords( + f'{self.prefix}|relative_loss_per_hour', self.relative_loss_per_hour ) - self.eta_charge = self._fit_coords(f'{prefix}|eta_charge', self.eta_charge) - self.eta_discharge = self._fit_coords(f'{prefix}|eta_discharge', self.eta_discharge) - self.relative_loss_per_hour = self._fit_coords(f'{prefix}|relative_loss_per_hour', self.relative_loss_per_hour) if not isinstance(self.initial_charge_state, str): self.initial_charge_state = self._fit_coords( - f'{prefix}|initial_charge_state', self.initial_charge_state, dims=['period', 'scenario'] + f'{self.prefix}|initial_charge_state', self.initial_charge_state, dims=['period', 'scenario'] ) self.minimal_final_charge_state = self._fit_coords( - f'{prefix}|minimal_final_charge_state', self.minimal_final_charge_state, dims=['period', 'scenario'] + f'{self.prefix}|minimal_final_charge_state', self.minimal_final_charge_state, dims=['period', 'scenario'] ) self.maximal_final_charge_state = self._fit_coords( - f'{prefix}|maximal_final_charge_state', self.maximal_final_charge_state, dims=['period', 'scenario'] + f'{self.prefix}|maximal_final_charge_state', self.maximal_final_charge_state, dims=['period', 'scenario'] ) self.relative_minimum_final_charge_state = self._fit_coords( - f'{prefix}|relative_minimum_final_charge_state', + f'{self.prefix}|relative_minimum_final_charge_state', self.relative_minimum_final_charge_state, dims=['period', 'scenario'], ) self.relative_maximum_final_charge_state = self._fit_coords( - f'{prefix}|relative_maximum_final_charge_state', + f'{self.prefix}|relative_maximum_final_charge_state', self.relative_maximum_final_charge_state, dims=['period', 'scenario'], ) if isinstance(self.capacity_in_flow_hours, InvestParameters): - self.capacity_in_flow_hours.transform_data(f'{prefix}|InvestParameters') + self.capacity_in_flow_hours.transform_data() else: self.capacity_in_flow_hours = self._fit_coords( - f'{prefix}|capacity_in_flow_hours', self.capacity_in_flow_hours, dims=['period', 'scenario'] + f'{self.prefix}|capacity_in_flow_hours', self.capacity_in_flow_hours, dims=['period', 'scenario'] ) def _plausibility_checks(self) -> None: @@ -714,11 +714,10 @@ def create_model(self, model) -> TransmissionModel: self.submodel = TransmissionModel(model, self) return self.submodel - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) - super().transform_data(prefix) - self.relative_losses = self._fit_coords(f'{prefix}|relative_losses', self.relative_losses) - self.absolute_losses = self._fit_coords(f'{prefix}|absolute_losses', self.absolute_losses) + def transform_data(self) -> None: + super().transform_data() + self.relative_losses = self._fit_coords(f'{self.prefix}|relative_losses', self.relative_losses) + self.absolute_losses = self._fit_coords(f'{self.prefix}|absolute_losses', self.absolute_losses) class TransmissionModel(ComponentModel): @@ -729,6 +728,9 @@ def __init__(self, model: FlowSystemModel, element: Transmission): for flow in element.inputs + element.outputs: if flow.status_parameters is None: flow.status_parameters = StatusParameters() + flow.status_parameters.link_to_flow_system( + model.flow_system, f'{flow.label_full}|status_parameters' + ) super().__init__(model, element) diff --git a/flixopt/effects.py b/flixopt/effects.py index 5dd53258f..a7aae4bf4 100644 --- a/flixopt/effects.py +++ b/flixopt/effects.py @@ -237,50 +237,56 @@ def __init__( self.minimum_over_periods = minimum_over_periods self.maximum_over_periods = maximum_over_periods - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) - self.minimum_per_hour = self._fit_coords(f'{prefix}|minimum_per_hour', self.minimum_per_hour) - self.maximum_per_hour = self._fit_coords(f'{prefix}|maximum_per_hour', self.maximum_per_hour) + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: + """Link this effect to a FlowSystem. + + Elements use their label_full as prefix by default, ignoring the passed prefix. + """ + super().link_to_flow_system(flow_system, self.label_full) + + def transform_data(self) -> None: + self.minimum_per_hour = self._fit_coords(f'{self.prefix}|minimum_per_hour', self.minimum_per_hour) + self.maximum_per_hour = self._fit_coords(f'{self.prefix}|maximum_per_hour', self.maximum_per_hour) self.share_from_temporal = self._fit_effect_coords( prefix=None, effect_values=self.share_from_temporal, - suffix=f'(temporal)->{prefix}(temporal)', + suffix=f'(temporal)->{self.prefix}(temporal)', dims=['time', 'period', 'scenario'], ) self.share_from_periodic = self._fit_effect_coords( prefix=None, effect_values=self.share_from_periodic, - suffix=f'(periodic)->{prefix}(periodic)', + suffix=f'(periodic)->{self.prefix}(periodic)', dims=['period', 'scenario'], ) self.minimum_temporal = self._fit_coords( - f'{prefix}|minimum_temporal', self.minimum_temporal, dims=['period', 'scenario'] + f'{self.prefix}|minimum_temporal', self.minimum_temporal, dims=['period', 'scenario'] ) self.maximum_temporal = self._fit_coords( - f'{prefix}|maximum_temporal', self.maximum_temporal, dims=['period', 'scenario'] + f'{self.prefix}|maximum_temporal', self.maximum_temporal, dims=['period', 'scenario'] ) self.minimum_periodic = self._fit_coords( - f'{prefix}|minimum_periodic', self.minimum_periodic, dims=['period', 'scenario'] + f'{self.prefix}|minimum_periodic', self.minimum_periodic, dims=['period', 'scenario'] ) self.maximum_periodic = self._fit_coords( - f'{prefix}|maximum_periodic', self.maximum_periodic, dims=['period', 'scenario'] + f'{self.prefix}|maximum_periodic', self.maximum_periodic, dims=['period', 'scenario'] ) self.minimum_total = self._fit_coords( - f'{prefix}|minimum_total', self.minimum_total, dims=['period', 'scenario'] + f'{self.prefix}|minimum_total', self.minimum_total, dims=['period', 'scenario'] ) self.maximum_total = self._fit_coords( - f'{prefix}|maximum_total', self.maximum_total, dims=['period', 'scenario'] + f'{self.prefix}|maximum_total', self.maximum_total, dims=['period', 'scenario'] ) self.minimum_over_periods = self._fit_coords( - f'{prefix}|minimum_over_periods', self.minimum_over_periods, dims=['scenario'] + f'{self.prefix}|minimum_over_periods', self.minimum_over_periods, dims=['scenario'] ) self.maximum_over_periods = self._fit_coords( - f'{prefix}|maximum_over_periods', self.maximum_over_periods, dims=['scenario'] + f'{self.prefix}|maximum_over_periods', self.maximum_over_periods, dims=['scenario'] ) self.period_weights = self._fit_coords( - f'{prefix}|period_weights', self.period_weights, dims=['period', 'scenario'] + f'{self.prefix}|period_weights', self.period_weights, dims=['period', 'scenario'] ) def create_model(self, model: FlowSystemModel) -> EffectModel: @@ -670,7 +676,7 @@ def _do_modeling(self): penalty_effect = self.effects._create_penalty_effect() # Link to FlowSystem (should already be linked, but ensure it) if penalty_effect._flow_system is None: - penalty_effect._set_flow_system(self._model.flow_system) + penalty_effect.link_to_flow_system(self._model.flow_system) # Create EffectModel for each effect for effect in self.effects.values(): diff --git a/flixopt/elements.py b/flixopt/elements.py index d2ebf7ac0..d97ff3ffb 100644 --- a/flixopt/elements.py +++ b/flixopt/elements.py @@ -20,7 +20,6 @@ Element, ElementModel, FlowSystemModel, - Interface, register_class_for_io, ) @@ -111,21 +110,23 @@ def create_model(self, model: FlowSystemModel) -> ComponentModel: self.submodel = ComponentModel(model, self) return self.submodel - def _set_flow_system(self, flow_system) -> None: - """Propagate flow_system reference to nested Interface objects and flows.""" - super()._set_flow_system(flow_system) + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: + """Propagate flow_system reference to nested Interface objects and flows. + + Elements use their label_full as prefix by default, ignoring the passed prefix. + """ + super().link_to_flow_system(flow_system, self.label_full) if self.status_parameters is not None: - self.status_parameters._set_flow_system(flow_system) + self.status_parameters.link_to_flow_system(flow_system, self._sub_prefix('status_parameters')) for flow in self.inputs + self.outputs: - flow._set_flow_system(flow_system) + flow.link_to_flow_system(flow_system) - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) + def transform_data(self) -> None: if self.status_parameters is not None: - self.status_parameters.transform_data(prefix) + self.status_parameters.transform_data() for flow in self.inputs + self.outputs: - flow.transform_data() # Flow doesnt need the name_prefix + flow.transform_data() def _check_unique_flow_labels(self): all_flow_labels = [flow.label for flow in self.inputs + self.outputs] @@ -269,16 +270,18 @@ def create_model(self, model: FlowSystemModel) -> BusModel: self.submodel = BusModel(model, self) return self.submodel - def _set_flow_system(self, flow_system) -> None: - """Propagate flow_system reference to nested flows.""" - super()._set_flow_system(flow_system) + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: + """Propagate flow_system reference to nested flows. + + Elements use their label_full as prefix by default, ignoring the passed prefix. + """ + super().link_to_flow_system(flow_system, self.label_full) for flow in self.inputs + self.outputs: - flow._set_flow_system(flow_system) + flow.link_to_flow_system(flow_system) - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) + def transform_data(self) -> None: self.imbalance_penalty_per_flow_hour = self._fit_coords( - f'{prefix}|imbalance_penalty_per_flow_hour', self.imbalance_penalty_per_flow_hour + f'{self.prefix}|imbalance_penalty_per_flow_hour', self.imbalance_penalty_per_flow_hour ) def _plausibility_checks(self) -> None: @@ -505,45 +508,49 @@ def create_model(self, model: FlowSystemModel) -> FlowModel: self.submodel = FlowModel(model, self) return self.submodel - def _set_flow_system(self, flow_system) -> None: - """Propagate flow_system reference to nested Interface objects.""" - super()._set_flow_system(flow_system) + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: + """Propagate flow_system reference to nested Interface objects. + + Elements use their label_full as prefix by default, ignoring the passed prefix. + """ + super().link_to_flow_system(flow_system, self.label_full) if self.status_parameters is not None: - self.status_parameters._set_flow_system(flow_system) - if isinstance(self.size, Interface): - self.size._set_flow_system(flow_system) - - def transform_data(self, name_prefix: str = '') -> None: - prefix = '|'.join(filter(None, [name_prefix, self.label_full])) - self.relative_minimum = self._fit_coords(f'{prefix}|relative_minimum', self.relative_minimum) - self.relative_maximum = self._fit_coords(f'{prefix}|relative_maximum', self.relative_maximum) - self.fixed_relative_profile = self._fit_coords(f'{prefix}|fixed_relative_profile', self.fixed_relative_profile) - self.effects_per_flow_hour = self._fit_effect_coords(prefix, self.effects_per_flow_hour, 'per_flow_hour') + self.status_parameters.link_to_flow_system(flow_system, self._sub_prefix('status_parameters')) + if isinstance(self.size, InvestParameters): + self.size.link_to_flow_system(flow_system, self._sub_prefix('InvestParameters')) + + def transform_data(self) -> None: + self.relative_minimum = self._fit_coords(f'{self.prefix}|relative_minimum', self.relative_minimum) + self.relative_maximum = self._fit_coords(f'{self.prefix}|relative_maximum', self.relative_maximum) + self.fixed_relative_profile = self._fit_coords( + f'{self.prefix}|fixed_relative_profile', self.fixed_relative_profile + ) + self.effects_per_flow_hour = self._fit_effect_coords(self.prefix, self.effects_per_flow_hour, 'per_flow_hour') self.flow_hours_max = self._fit_coords( - f'{prefix}|flow_hours_max', self.flow_hours_max, dims=['period', 'scenario'] + f'{self.prefix}|flow_hours_max', self.flow_hours_max, dims=['period', 'scenario'] ) self.flow_hours_min = self._fit_coords( - f'{prefix}|flow_hours_min', self.flow_hours_min, dims=['period', 'scenario'] + f'{self.prefix}|flow_hours_min', self.flow_hours_min, dims=['period', 'scenario'] ) self.flow_hours_max_over_periods = self._fit_coords( - f'{prefix}|flow_hours_max_over_periods', self.flow_hours_max_over_periods, dims=['scenario'] + f'{self.prefix}|flow_hours_max_over_periods', self.flow_hours_max_over_periods, dims=['scenario'] ) self.flow_hours_min_over_periods = self._fit_coords( - f'{prefix}|flow_hours_min_over_periods', self.flow_hours_min_over_periods, dims=['scenario'] + f'{self.prefix}|flow_hours_min_over_periods', self.flow_hours_min_over_periods, dims=['scenario'] ) self.load_factor_max = self._fit_coords( - f'{prefix}|load_factor_max', self.load_factor_max, dims=['period', 'scenario'] + f'{self.prefix}|load_factor_max', self.load_factor_max, dims=['period', 'scenario'] ) self.load_factor_min = self._fit_coords( - f'{prefix}|load_factor_min', self.load_factor_min, dims=['period', 'scenario'] + f'{self.prefix}|load_factor_min', self.load_factor_min, dims=['period', 'scenario'] ) if self.status_parameters is not None: - self.status_parameters.transform_data(prefix) + self.status_parameters.transform_data() if isinstance(self.size, InvestParameters): - self.size.transform_data(prefix) + self.size.transform_data() else: - self.size = self._fit_coords(f'{prefix}|size', self.size, dims=['period', 'scenario']) + self.size = self._fit_coords(f'{self.prefix}|size', self.size, dims=['period', 'scenario']) def _plausibility_checks(self) -> None: # TODO: Incorporate into Variable? (Lower_bound can not be greater than upper bound @@ -955,11 +962,17 @@ def _do_modeling(self): for flow in all_flows: if flow.status_parameters is None: flow.status_parameters = StatusParameters() + flow.status_parameters.link_to_flow_system( + self._model.flow_system, f'{flow.label_full}|status_parameters' + ) if self.element.prevent_simultaneous_flows: for flow in self.element.prevent_simultaneous_flows: if flow.status_parameters is None: flow.status_parameters = StatusParameters() + flow.status_parameters.link_to_flow_system( + self._model.flow_system, f'{flow.label_full}|status_parameters' + ) # Create FlowModels (which creates their variables and constraints) for flow in all_flows: diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 153354cce..bae700b85 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -730,6 +730,50 @@ def from_netcdf(cls, path: str | pathlib.Path) -> FlowSystem: flow_system.name = path.stem return flow_system + def copy(self) -> FlowSystem: + """Create a copy of the FlowSystem without optimization state. + + Creates a new FlowSystem with copies of all elements, but without: + - The solution dataset + - The optimization model + - Element submodels and variable/constraint names + + This is useful for creating variations of a FlowSystem for different + optimization scenarios without affecting the original. + + Returns: + A new FlowSystem instance that can be modified and optimized independently. + + Examples: + >>> original = FlowSystem(timesteps) + >>> original.add_elements(boiler, bus) + >>> original.optimize(solver) # Original now has solution + >>> + >>> # Create a copy to try different parameters + >>> variant = original.copy() # No solution, can be modified + >>> variant.add_elements(new_component) + >>> variant.optimize(solver) + """ + # Temporarily clear solution to use standard serialization without solution data + original_solution = self._solution + self._solution = None + try: + ds = self.to_dataset() + finally: + self._solution = original_solution + + # Create new FlowSystem from dataset (without solution) + new_fs = FlowSystem.from_dataset(ds.copy(deep=True)) + return new_fs + + def __copy__(self): + """Support for copy.copy().""" + return self.copy() + + def __deepcopy__(self, memo): + """Support for copy.deepcopy().""" + return self.copy() + def get_structure(self, clean: bool = False, stats: bool = False) -> dict: """ Get FlowSystem structure. @@ -827,7 +871,31 @@ def fit_effects_to_model_coords( } def connect_and_transform(self): - """Transform data for all elements using the new simplified approach.""" + """Connect the network and transform all element data to model coordinates. + + This method performs the following steps: + + 1. Connects flows to buses (establishing the network topology) + 2. Registers any missing carriers from CONFIG defaults + 3. Assigns colors to elements without explicit colors + 4. Transforms all element data to xarray DataArrays aligned with + FlowSystem coordinates (time, period, scenario) + 5. Validates system integrity + + This is called automatically by :meth:`build_model` and :meth:`optimize`. + + Warning: + After this method runs, element attributes (e.g., ``flow.size``, + ``flow.relative_minimum``) contain transformed xarray DataArrays, + not the original input values. If you modify element attributes after + transformation, call :meth:`invalidate` to ensure the changes take + effect on the next optimization. + + Note: + This method is idempotent within a single model lifecycle - calling + it multiple times has no effect once ``connected_and_transformed`` + is True. Use :meth:`invalidate` to reset this flag. + """ if self.connected_and_transformed: logger.debug('FlowSystem already connected and transformed') return @@ -884,13 +952,23 @@ def add_elements(self, *elements: Element) -> None: Args: *elements: childs of Element like Boiler, HeatPump, Bus,... modeling Elements + + Raises: + RuntimeError: If the FlowSystem is locked (has a solution). + Call `reset()` to unlock it first. """ - if self.connected_and_transformed: + if self.is_locked: + raise RuntimeError( + 'Cannot add elements to a FlowSystem that has a solution. ' + 'Call `reset()` first to clear the solution and allow modifications.' + ) + + if self.model is not None: warnings.warn( - 'You are adding elements to an already connected FlowSystem. This is not recommended (But it works).', + 'Adding elements to a FlowSystem with an existing model. The model will be invalidated.', stacklevel=2, ) - self._connected_and_transformed = False + self._invalidate_model() for new_element in list(elements): # Validate element type first @@ -924,6 +1002,10 @@ def add_carriers(self, *carriers: Carrier) -> None: Args: carrier: A Carrier object defining the carrier properties. + Raises: + RuntimeError: If the FlowSystem is locked (has a solution). + Call `reset()` to unlock it first. + Examples: ```python import flixopt as fx @@ -941,12 +1023,18 @@ def add_carriers(self, *carriers: Carrier) -> None: # The carrier color will be used in plots automatically ``` """ - if self.connected_and_transformed: + if self.is_locked: + raise RuntimeError( + 'Cannot add carriers to a FlowSystem that has a solution. ' + 'Call `reset()` first to clear the solution and allow modifications.' + ) + + if self.model is not None: warnings.warn( - 'You are adding a carrier to an already connected FlowSystem. This is not recommended (But it works).', + 'Adding carriers to a FlowSystem with an existing model. The model will be invalidated.', stacklevel=2, ) - self._connected_and_transformed = False + self._invalidate_model() for carrier in list(carriers): if not isinstance(carrier, Carrier): @@ -1120,6 +1208,103 @@ def solution(self, value: xr.Dataset | None) -> None: self._solution = value self._statistics = None # Invalidate cached statistics + @property + def is_locked(self) -> bool: + """Check if the FlowSystem is locked (has a solution). + + A locked FlowSystem cannot be modified. Use `reset()` to unlock it. + """ + return self._solution is not None + + def _invalidate_model(self) -> None: + """Invalidate the model and element submodels when structure changes. + + This clears the model, resets the ``connected_and_transformed`` flag, + and clears all element submodels and variable/constraint names. + + Called internally by :meth:`add_elements`, :meth:`add_carriers`, + :meth:`reset`, and :meth:`invalidate`. + + See Also: + :meth:`invalidate`: Public method for manual invalidation. + :meth:`reset`: Clears solution and invalidates (for locked FlowSystems). + """ + self.model = None + self._connected_and_transformed = False + for element in self.values(): + element.submodel = None + element._variable_names = [] + element._constraint_names = [] + + def reset(self) -> FlowSystem: + """Clear optimization state to allow modifications. + + This method unlocks the FlowSystem by clearing: + - The solution dataset + - The optimization model + - All element submodels and variable/constraint names + - The connected_and_transformed flag + + After calling reset(), the FlowSystem can be modified again + (e.g., adding elements or carriers). + + Returns: + Self, for method chaining. + + Examples: + >>> flow_system.optimize(solver) # FlowSystem is now locked + >>> flow_system.add_elements(new_bus) # Raises RuntimeError + >>> flow_system.reset() # Unlock the FlowSystem + >>> flow_system.add_elements(new_bus) # Now works + """ + self.solution = None # Also clears _statistics via setter + self._invalidate_model() + return self + + def invalidate(self) -> FlowSystem: + """Invalidate the model to allow re-transformation after modifying elements. + + Call this after modifying existing element attributes (e.g., ``flow.size``, + ``flow.relative_minimum``) to ensure changes take effect on the next + optimization. The next call to :meth:`optimize` or :meth:`build_model` + will re-run :meth:`connect_and_transform`. + + Note: + Adding new elements via :meth:`add_elements` automatically invalidates + the model. This method is only needed when modifying attributes of + elements that are already part of the FlowSystem. + + Returns: + Self, for method chaining. + + Raises: + RuntimeError: If the FlowSystem has a solution. Call :meth:`reset` + first to clear the solution. + + Examples: + Modify a flow's size and re-optimize: + + >>> flow_system.optimize(solver) + >>> flow_system.reset() # Clear solution first + >>> flow_system.components['Boiler'].inputs[0].size = 200 + >>> flow_system.invalidate() + >>> flow_system.optimize(solver) # Re-runs connect_and_transform + + Modify before first optimization: + + >>> flow_system.connect_and_transform() + >>> # Oops, need to change something + >>> flow_system.components['Boiler'].inputs[0].size = 200 + >>> flow_system.invalidate() + >>> flow_system.optimize(solver) # Changes take effect + """ + if self.is_locked: + raise RuntimeError( + 'Cannot invalidate a FlowSystem with a solution. Call `reset()` first to clear the solution.' + ) + self._invalidate_model() + return self + @property def optimize(self) -> OptimizeAccessor: """ @@ -1345,12 +1530,12 @@ def _validate_system_integrity(self) -> None: def _add_effects(self, *args: Effect) -> None: for effect in args: - effect._set_flow_system(self) # Link element to FlowSystem + effect.link_to_flow_system(self) # Link element to FlowSystem self.effects.add_effects(*args) def _add_components(self, *components: Component) -> None: for new_component in list(components): - new_component._set_flow_system(self) # Link element to FlowSystem + new_component.link_to_flow_system(self) # Link element to FlowSystem self.components.add(new_component) # Add to existing components # Invalidate cache once after all additions if components: @@ -1358,7 +1543,7 @@ def _add_components(self, *components: Component) -> None: def _add_buses(self, *buses: Bus): for new_bus in list(buses): - new_bus._set_flow_system(self) # Link element to FlowSystem + new_bus.link_to_flow_system(self) # Link element to FlowSystem self.buses.add(new_bus) # Add to existing buses # Invalidate cache once after all additions if buses: diff --git a/flixopt/interface.py b/flixopt/interface.py index 7995d5e78..7787eec18 100644 --- a/flixopt/interface.py +++ b/flixopt/interface.py @@ -74,10 +74,10 @@ def __init__(self, start: Numeric_TPS, end: Numeric_TPS): self.end = end self.has_time_dim = False - def transform_data(self, name_prefix: str = '') -> None: + def transform_data(self) -> None: dims = None if self.has_time_dim else ['period', 'scenario'] - self.start = self._fit_coords(f'{name_prefix}|start', self.start, dims=dims) - self.end = self._fit_coords(f'{name_prefix}|end', self.end, dims=dims) + self.start = self._fit_coords(f'{self.prefix}|start', self.start, dims=dims) + self.end = self._fit_coords(f'{self.prefix}|end', self.end, dims=dims) @register_class_for_io @@ -226,15 +226,15 @@ def __getitem__(self, index) -> Piece: def __iter__(self) -> Iterator[Piece]: return iter(self.pieces) # Enables iteration like for piece in piecewise: ... - def _set_flow_system(self, flow_system) -> None: + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: """Propagate flow_system reference to nested Piece objects.""" - super()._set_flow_system(flow_system) - for piece in self.pieces: - piece._set_flow_system(flow_system) - - def transform_data(self, name_prefix: str = '') -> None: + super().link_to_flow_system(flow_system, prefix) for i, piece in enumerate(self.pieces): - piece.transform_data(f'{name_prefix}|Piece{i}') + piece.link_to_flow_system(flow_system, self._sub_prefix(f'Piece{i}')) + + def transform_data(self) -> None: + for piece in self.pieces: + piece.transform_data() @register_class_for_io @@ -458,15 +458,15 @@ def items(self): """ return self.piecewises.items() - def _set_flow_system(self, flow_system) -> None: + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: """Propagate flow_system reference to nested Piecewise objects.""" - super()._set_flow_system(flow_system) - for piecewise in self.piecewises.values(): - piecewise._set_flow_system(flow_system) - - def transform_data(self, name_prefix: str = '') -> None: + super().link_to_flow_system(flow_system, prefix) for name, piecewise in self.piecewises.items(): - piecewise.transform_data(f'{name_prefix}|{name}') + piecewise.link_to_flow_system(flow_system, self._sub_prefix(name)) + + def transform_data(self) -> None: + for piecewise in self.piecewises.values(): + piecewise.transform_data() @register_class_for_io @@ -676,17 +676,17 @@ def has_time_dim(self, value): for piecewise in self.piecewise_shares.values(): piecewise.has_time_dim = value - def _set_flow_system(self, flow_system) -> None: + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: """Propagate flow_system reference to nested Piecewise objects.""" - super()._set_flow_system(flow_system) - self.piecewise_origin._set_flow_system(flow_system) - for piecewise in self.piecewise_shares.values(): - piecewise._set_flow_system(flow_system) - - def transform_data(self, name_prefix: str = '') -> None: - self.piecewise_origin.transform_data(f'{name_prefix}|PiecewiseEffects|origin') + super().link_to_flow_system(flow_system, prefix) + self.piecewise_origin.link_to_flow_system(flow_system, self._sub_prefix('origin')) for effect, piecewise in self.piecewise_shares.items(): - piecewise.transform_data(f'{name_prefix}|PiecewiseEffects|{effect}') + piecewise.link_to_flow_system(flow_system, self._sub_prefix(effect)) + + def transform_data(self) -> None: + self.piecewise_origin.transform_data() + for piecewise in self.piecewise_shares.values(): + piecewise.transform_data() @register_class_for_io @@ -904,27 +904,27 @@ def __init__( self.maximum_size = maximum_size if maximum_size is not None else CONFIG.Modeling.big # default maximum self.linked_periods = linked_periods - def _set_flow_system(self, flow_system) -> None: + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: """Propagate flow_system reference to nested PiecewiseEffects object if present.""" - super()._set_flow_system(flow_system) + super().link_to_flow_system(flow_system, prefix) if self.piecewise_effects_of_investment is not None: - self.piecewise_effects_of_investment._set_flow_system(flow_system) + self.piecewise_effects_of_investment.link_to_flow_system(flow_system, self._sub_prefix('PiecewiseEffects')) - def transform_data(self, name_prefix: str = '') -> None: + def transform_data(self) -> None: self.effects_of_investment = self._fit_effect_coords( - prefix=name_prefix, + prefix=self.prefix, effect_values=self.effects_of_investment, suffix='effects_of_investment', dims=['period', 'scenario'], ) self.effects_of_retirement = self._fit_effect_coords( - prefix=name_prefix, + prefix=self.prefix, effect_values=self.effects_of_retirement, suffix='effects_of_retirement', dims=['period', 'scenario'], ) self.effects_of_investment_per_size = self._fit_effect_coords( - prefix=name_prefix, + prefix=self.prefix, effect_values=self.effects_of_investment_per_size, suffix='effects_of_investment_per_size', dims=['period', 'scenario'], @@ -932,13 +932,13 @@ def transform_data(self, name_prefix: str = '') -> None: if self.piecewise_effects_of_investment is not None: self.piecewise_effects_of_investment.has_time_dim = False - self.piecewise_effects_of_investment.transform_data(f'{name_prefix}|PiecewiseEffects') + self.piecewise_effects_of_investment.transform_data() self.minimum_size = self._fit_coords( - f'{name_prefix}|minimum_size', self.minimum_size, dims=['period', 'scenario'] + f'{self.prefix}|minimum_size', self.minimum_size, dims=['period', 'scenario'] ) self.maximum_size = self._fit_coords( - f'{name_prefix}|maximum_size', self.maximum_size, dims=['period', 'scenario'] + f'{self.prefix}|maximum_size', self.maximum_size, dims=['period', 'scenario'] ) # Convert tuple (first_period, last_period) to DataArray if needed if isinstance(self.linked_periods, (tuple, list)): @@ -965,9 +965,9 @@ def transform_data(self, name_prefix: str = '') -> None: logger.debug(f'Computed {self.linked_periods=}') self.linked_periods = self._fit_coords( - f'{name_prefix}|linked_periods', self.linked_periods, dims=['period', 'scenario'] + f'{self.prefix}|linked_periods', self.linked_periods, dims=['period', 'scenario'] ) - self.fixed_size = self._fit_coords(f'{name_prefix}|fixed_size', self.fixed_size, dims=['period', 'scenario']) + self.fixed_size = self._fit_coords(f'{self.prefix}|fixed_size', self.fixed_size, dims=['period', 'scenario']) @property def minimum_or_fixed_size(self) -> Numeric_PS: @@ -1215,29 +1215,29 @@ def __init__( self.startup_limit = startup_limit self.force_startup_tracking: bool = force_startup_tracking - def transform_data(self, name_prefix: str = '') -> None: + def transform_data(self) -> None: self.effects_per_startup = self._fit_effect_coords( - prefix=name_prefix, + prefix=self.prefix, effect_values=self.effects_per_startup, suffix='per_startup', ) self.effects_per_active_hour = self._fit_effect_coords( - prefix=name_prefix, + prefix=self.prefix, effect_values=self.effects_per_active_hour, suffix='per_active_hour', ) - self.min_uptime = self._fit_coords(f'{name_prefix}|min_uptime', self.min_uptime) - self.max_uptime = self._fit_coords(f'{name_prefix}|max_uptime', self.max_uptime) - self.min_downtime = self._fit_coords(f'{name_prefix}|min_downtime', self.min_downtime) - self.max_downtime = self._fit_coords(f'{name_prefix}|max_downtime', self.max_downtime) + self.min_uptime = self._fit_coords(f'{self.prefix}|min_uptime', self.min_uptime) + self.max_uptime = self._fit_coords(f'{self.prefix}|max_uptime', self.max_uptime) + self.min_downtime = self._fit_coords(f'{self.prefix}|min_downtime', self.min_downtime) + self.max_downtime = self._fit_coords(f'{self.prefix}|max_downtime', self.max_downtime) self.active_hours_max = self._fit_coords( - f'{name_prefix}|active_hours_max', self.active_hours_max, dims=['period', 'scenario'] + f'{self.prefix}|active_hours_max', self.active_hours_max, dims=['period', 'scenario'] ) self.active_hours_min = self._fit_coords( - f'{name_prefix}|active_hours_min', self.active_hours_min, dims=['period', 'scenario'] + f'{self.prefix}|active_hours_min', self.active_hours_min, dims=['period', 'scenario'] ) self.startup_limit = self._fit_coords( - f'{name_prefix}|startup_limit', self.startup_limit, dims=['period', 'scenario'] + f'{self.prefix}|startup_limit', self.startup_limit, dims=['period', 'scenario'] ) @property diff --git a/flixopt/structure.py b/flixopt/structure.py index d00066683..da4eee0f6 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -316,14 +316,13 @@ class Interface: - Recursive handling of complex nested structures Subclasses must implement: - transform_data(name_prefix=''): Transform data to match FlowSystem dimensions + transform_data(): Transform data to match FlowSystem dimensions """ - def transform_data(self, name_prefix: str = '') -> None: + def transform_data(self) -> None: """Transform the data of the interface to match the FlowSystem's dimensions. - Args: - name_prefix: The prefix to use for the names of the variables. Defaults to '', which results in no prefix. + Uses `self._prefix` (set during `link_to_flow_system()`) to name transformed data. Raises: NotImplementedError: Must be implemented by subclasses @@ -335,20 +334,53 @@ def transform_data(self, name_prefix: str = '') -> None: """ raise NotImplementedError('Every Interface subclass needs a transform_data() method') - def _set_flow_system(self, flow_system: FlowSystem) -> None: - """Store flow_system reference and propagate to nested Interface objects. + @property + def prefix(self) -> str: + """The prefix used for naming transformed data (e.g., 'Boiler(Q_th)|status_parameters').""" + return getattr(self, '_prefix', '') + + def _sub_prefix(self, name: str) -> str: + """Build a prefix for a nested interface by appending name to current prefix.""" + return f'{self._prefix}|{name}' if self._prefix else name + + def link_to_flow_system(self, flow_system: FlowSystem, prefix: str = '') -> None: + """Link this interface and all nested interfaces to a FlowSystem. This method is called automatically during element registration to enable elements to access FlowSystem properties without passing the reference - through every method call. + through every method call. It also sets the prefix used for naming + transformed data. Subclasses with nested Interface objects should override this method - to explicitly propagate the reference to their nested interfaces. + to propagate the link to their nested interfaces by calling + `super().link_to_flow_system(flow_system, prefix)` first, then linking + nested objects with appropriate prefixes. Args: - flow_system: The FlowSystem that this interface belongs to + flow_system: The FlowSystem to link to + prefix: The prefix for naming transformed data (e.g., 'Boiler(Q_th)') + + Examples: + Override in a subclass with nested interfaces: + + ```python + def link_to_flow_system(self, flow_system, prefix: str = '') -> None: + super().link_to_flow_system(flow_system, prefix) + if self.nested_interface is not None: + self.nested_interface.link_to_flow_system(flow_system, f'{prefix}|nested' if prefix else 'nested') + ``` + + Creating an Interface dynamically during modeling: + + ```python + # In a Model class + if flow.status_parameters is None: + flow.status_parameters = StatusParameters() + flow.status_parameters.link_to_flow_system(self._model.flow_system, f'{flow.label_full}') + ``` """ self._flow_system = flow_system + self._prefix = prefix @property def flow_system(self) -> FlowSystem: diff --git a/tests/test_flow_system_locking.py b/tests/test_flow_system_locking.py new file mode 100644 index 000000000..68d3ec010 --- /dev/null +++ b/tests/test_flow_system_locking.py @@ -0,0 +1,403 @@ +""" +Tests for FlowSystem locking behavior (read-only after optimization). + +A FlowSystem becomes locked (read-only) when it has a solution. +This prevents accidental modifications to a system that has already been optimized. +""" + +import copy +import warnings + +import pytest + +import flixopt as fx + +# Note: We use simple_flow_system fixture from conftest.py + + +class TestIsLocked: + """Test the is_locked property.""" + + def test_not_locked_initially(self, simple_flow_system): + """A new FlowSystem should not be locked.""" + assert simple_flow_system.is_locked is False + + def test_not_locked_after_build_model(self, simple_flow_system): + """FlowSystem should not be locked after build_model (no solution yet).""" + simple_flow_system.build_model() + assert simple_flow_system.is_locked is False + + def test_locked_after_optimization(self, simple_flow_system, highs_solver): + """FlowSystem should be locked after optimization.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.is_locked is True + + def test_not_locked_after_reset(self, simple_flow_system, highs_solver): + """FlowSystem should not be locked after reset.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.is_locked is True + + simple_flow_system.reset() + assert simple_flow_system.is_locked is False + + +class TestAddElementsLocking: + """Test that add_elements respects locking.""" + + def test_add_elements_before_optimization(self, simple_flow_system): + """Should be able to add elements before optimization.""" + new_bus = fx.Bus('NewBus') + simple_flow_system.add_elements(new_bus) + assert 'NewBus' in simple_flow_system.buses + + def test_add_elements_raises_when_locked(self, simple_flow_system, highs_solver): + """Should raise RuntimeError when adding elements to a locked FlowSystem.""" + simple_flow_system.optimize(highs_solver) + + new_bus = fx.Bus('NewBus') + with pytest.raises(RuntimeError, match='Cannot add elements.*reset\\(\\)'): + simple_flow_system.add_elements(new_bus) + + def test_add_elements_after_reset(self, simple_flow_system, highs_solver): + """Should be able to add elements after reset.""" + simple_flow_system.optimize(highs_solver) + simple_flow_system.reset() + + new_bus = fx.Bus('NewBus') + simple_flow_system.add_elements(new_bus) + assert 'NewBus' in simple_flow_system.buses + + def test_add_elements_invalidates_model(self, simple_flow_system): + """Adding elements to a FlowSystem with a model should invalidate the model.""" + simple_flow_system.build_model() + assert simple_flow_system.model is not None + + new_bus = fx.Bus('NewBus') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + simple_flow_system.add_elements(new_bus) + assert len(w) == 1 + assert 'model will be invalidated' in str(w[0].message) + + assert simple_flow_system.model is None + + +class TestAddCarriersLocking: + """Test that add_carriers respects locking.""" + + def test_add_carriers_before_optimization(self, simple_flow_system): + """Should be able to add carriers before optimization.""" + carrier = fx.Carrier('biogas', '#00FF00', 'kW') + simple_flow_system.add_carriers(carrier) + assert 'biogas' in simple_flow_system.carriers + + def test_add_carriers_raises_when_locked(self, simple_flow_system, highs_solver): + """Should raise RuntimeError when adding carriers to a locked FlowSystem.""" + simple_flow_system.optimize(highs_solver) + + carrier = fx.Carrier('biogas', '#00FF00', 'kW') + with pytest.raises(RuntimeError, match='Cannot add carriers.*reset\\(\\)'): + simple_flow_system.add_carriers(carrier) + + def test_add_carriers_after_reset(self, simple_flow_system, highs_solver): + """Should be able to add carriers after reset.""" + simple_flow_system.optimize(highs_solver) + simple_flow_system.reset() + + carrier = fx.Carrier('biogas', '#00FF00', 'kW') + simple_flow_system.add_carriers(carrier) + assert 'biogas' in simple_flow_system.carriers + + def test_add_carriers_invalidates_model(self, simple_flow_system): + """Adding carriers to a FlowSystem with a model should invalidate the model.""" + simple_flow_system.build_model() + assert simple_flow_system.model is not None + + carrier = fx.Carrier('biogas', '#00FF00', 'kW') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + simple_flow_system.add_carriers(carrier) + assert len(w) == 1 + assert 'model will be invalidated' in str(w[0].message) + + assert simple_flow_system.model is None + + +class TestReset: + """Test the reset method.""" + + def test_reset_clears_solution(self, simple_flow_system, highs_solver): + """Reset should clear the solution.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.solution is not None + + simple_flow_system.reset() + assert simple_flow_system.solution is None + + def test_reset_clears_model(self, simple_flow_system, highs_solver): + """Reset should clear the model.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.model is not None + + simple_flow_system.reset() + assert simple_flow_system.model is None + + def test_reset_clears_element_submodels(self, simple_flow_system, highs_solver): + """Reset should clear element submodels.""" + simple_flow_system.optimize(highs_solver) + + # Check that elements have submodels after optimization + boiler = simple_flow_system.components['Boiler'] + assert boiler.submodel is not None + assert len(boiler._variable_names) > 0 + + simple_flow_system.reset() + + # Check that submodels are cleared + assert boiler.submodel is None + assert len(boiler._variable_names) == 0 + + def test_reset_returns_self(self, simple_flow_system, highs_solver): + """Reset should return self for method chaining.""" + simple_flow_system.optimize(highs_solver) + result = simple_flow_system.reset() + assert result is simple_flow_system + + def test_reset_allows_reoptimization(self, simple_flow_system, highs_solver): + """After reset, FlowSystem can be optimized again.""" + simple_flow_system.optimize(highs_solver) + original_cost = simple_flow_system.solution['costs'].item() + + simple_flow_system.reset() + simple_flow_system.optimize(highs_solver) + + assert simple_flow_system.solution is not None + # Cost should be the same since system structure didn't change + assert simple_flow_system.solution['costs'].item() == pytest.approx(original_cost) + + +class TestCopy: + """Test the copy method.""" + + def test_copy_creates_new_instance(self, simple_flow_system): + """Copy should create a new FlowSystem instance.""" + copy_fs = simple_flow_system.copy() + assert copy_fs is not simple_flow_system + + def test_copy_preserves_elements(self, simple_flow_system): + """Copy should preserve all elements.""" + copy_fs = simple_flow_system.copy() + + assert set(copy_fs.components.keys()) == set(simple_flow_system.components.keys()) + assert set(copy_fs.buses.keys()) == set(simple_flow_system.buses.keys()) + + def test_copy_does_not_copy_solution(self, simple_flow_system, highs_solver): + """Copy should not include the solution.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.solution is not None + + copy_fs = simple_flow_system.copy() + assert copy_fs.solution is None + + def test_copy_does_not_copy_model(self, simple_flow_system, highs_solver): + """Copy should not include the model.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.model is not None + + copy_fs = simple_flow_system.copy() + assert copy_fs.model is None + + def test_copy_is_not_locked(self, simple_flow_system, highs_solver): + """Copy should not be locked even if original is.""" + simple_flow_system.optimize(highs_solver) + assert simple_flow_system.is_locked is True + + copy_fs = simple_flow_system.copy() + assert copy_fs.is_locked is False + + def test_copy_can_be_modified(self, simple_flow_system, highs_solver): + """Copy should be modifiable even if original is locked.""" + simple_flow_system.optimize(highs_solver) + + copy_fs = simple_flow_system.copy() + new_bus = fx.Bus('NewBus') + copy_fs.add_elements(new_bus) # Should not raise + assert 'NewBus' in copy_fs.buses + + def test_copy_can_be_optimized_independently(self, simple_flow_system, highs_solver): + """Copy can be optimized independently of original.""" + simple_flow_system.optimize(highs_solver) + original_cost = simple_flow_system.solution['costs'].item() + + copy_fs = simple_flow_system.copy() + copy_fs.optimize(highs_solver) + + # Both should have solutions + assert simple_flow_system.solution is not None + assert copy_fs.solution is not None + + # Costs should be equal (same system) + assert copy_fs.solution['costs'].item() == pytest.approx(original_cost) + + def test_python_copy_uses_copy_method(self, simple_flow_system, highs_solver): + """copy.copy() should use the custom copy method.""" + simple_flow_system.optimize(highs_solver) + + copy_fs = copy.copy(simple_flow_system) + assert copy_fs.solution is None + assert copy_fs.is_locked is False + + def test_python_deepcopy_uses_copy_method(self, simple_flow_system, highs_solver): + """copy.deepcopy() should use the custom copy method.""" + simple_flow_system.optimize(highs_solver) + + copy_fs = copy.deepcopy(simple_flow_system) + assert copy_fs.solution is None + assert copy_fs.is_locked is False + + +class TestLoadedFlowSystem: + """Test that loaded FlowSystems respect locking.""" + + def test_loaded_fs_with_solution_is_locked(self, simple_flow_system, highs_solver, tmp_path): + """A FlowSystem loaded from file with solution should be locked.""" + simple_flow_system.optimize(highs_solver) + filepath = tmp_path / 'test_fs.nc' + simple_flow_system.to_netcdf(filepath) + + loaded_fs = fx.FlowSystem.from_netcdf(filepath) + assert loaded_fs.is_locked is True + + def test_loaded_fs_can_be_reset(self, simple_flow_system, highs_solver, tmp_path): + """A loaded FlowSystem can be reset to allow modifications.""" + simple_flow_system.optimize(highs_solver) + filepath = tmp_path / 'test_fs.nc' + simple_flow_system.to_netcdf(filepath) + + loaded_fs = fx.FlowSystem.from_netcdf(filepath) + loaded_fs.reset() + + assert loaded_fs.is_locked is False + new_bus = fx.Bus('NewBus') + loaded_fs.add_elements(new_bus) # Should not raise + + +class TestInvalidate: + """Test the invalidate method for manual model invalidation.""" + + def test_invalidate_resets_connected_and_transformed(self, simple_flow_system): + """Invalidate should reset the connected_and_transformed flag.""" + simple_flow_system.connect_and_transform() + assert simple_flow_system.connected_and_transformed is True + + simple_flow_system.invalidate() + assert simple_flow_system.connected_and_transformed is False + + def test_invalidate_clears_model(self, simple_flow_system): + """Invalidate should clear the model.""" + simple_flow_system.build_model() + assert simple_flow_system.model is not None + + simple_flow_system.invalidate() + assert simple_flow_system.model is None + + def test_invalidate_raises_when_locked(self, simple_flow_system, highs_solver): + """Invalidate should raise RuntimeError when FlowSystem has a solution.""" + simple_flow_system.optimize(highs_solver) + + with pytest.raises(RuntimeError, match='Cannot invalidate.*reset\\(\\)'): + simple_flow_system.invalidate() + + def test_invalidate_returns_self(self, simple_flow_system): + """Invalidate should return self for method chaining.""" + simple_flow_system.connect_and_transform() + result = simple_flow_system.invalidate() + assert result is simple_flow_system + + def test_invalidate_allows_retransformation(self, simple_flow_system, highs_solver): + """After invalidate, connect_and_transform should run again.""" + simple_flow_system.connect_and_transform() + assert simple_flow_system.connected_and_transformed is True + + simple_flow_system.invalidate() + assert simple_flow_system.connected_and_transformed is False + + # Should be able to connect_and_transform again + simple_flow_system.connect_and_transform() + assert simple_flow_system.connected_and_transformed is True + + def test_modify_element_and_invalidate(self, simple_flow_system, highs_solver): + """Test the workflow: optimize -> reset -> modify -> invalidate -> re-optimize.""" + # First optimization + simple_flow_system.optimize(highs_solver) + original_cost = simple_flow_system.solution['costs'].item() + + # Reset to unlock + simple_flow_system.reset() + + # Modify an element attribute (increase gas price, which should increase costs) + gas_tariff = simple_flow_system.components['Gastarif'] + original_effects = gas_tariff.outputs[0].effects_per_flow_hour + # Double the cost effect + gas_tariff.outputs[0].effects_per_flow_hour = {effect: value * 2 for effect, value in original_effects.items()} + + # Invalidate to trigger re-transformation + simple_flow_system.invalidate() + + # Re-optimize + simple_flow_system.optimize(highs_solver) + new_cost = simple_flow_system.solution['costs'].item() + + # Cost should have increased due to higher gas price + assert new_cost > original_cost + + def test_invalidate_needed_after_transform_before_optimize(self, simple_flow_system, highs_solver): + """Invalidate is needed to apply changes made after connect_and_transform but before optimize.""" + # Connect and transform (but don't optimize yet) + simple_flow_system.connect_and_transform() + + # Modify an attribute - double the gas costs + gas_tariff = simple_flow_system.components['Gastarif'] + original_effects = gas_tariff.outputs[0].effects_per_flow_hour + gas_tariff.outputs[0].effects_per_flow_hour = {effect: value * 2 for effect, value in original_effects.items()} + + # Call invalidate to ensure re-transformation + simple_flow_system.invalidate() + assert simple_flow_system.connected_and_transformed is False + + # Now optimize - the doubled values should take effect + simple_flow_system.optimize(highs_solver) + cost_with_doubled = simple_flow_system.solution['costs'].item() + + # Reset and use original values + simple_flow_system.reset() + gas_tariff.outputs[0].effects_per_flow_hour = { + effect: value / 2 for effect, value in gas_tariff.outputs[0].effects_per_flow_hour.items() + } + simple_flow_system.optimize(highs_solver) + cost_with_original = simple_flow_system.solution['costs'].item() + + # The doubled costs should result in higher total cost + assert cost_with_doubled > cost_with_original + + def test_reset_already_invalidates(self, simple_flow_system, highs_solver): + """Reset already invalidates, so modifications after reset take effect.""" + # First optimization + simple_flow_system.optimize(highs_solver) + original_cost = simple_flow_system.solution['costs'].item() + + # Reset - this already calls _invalidate_model() + simple_flow_system.reset() + assert simple_flow_system.connected_and_transformed is False + + # Modify an element attribute + gas_tariff = simple_flow_system.components['Gastarif'] + original_effects = gas_tariff.outputs[0].effects_per_flow_hour + gas_tariff.outputs[0].effects_per_flow_hour = {effect: value * 2 for effect, value in original_effects.items()} + + # Re-optimize - changes take effect because reset already invalidated + simple_flow_system.optimize(highs_solver) + new_cost = simple_flow_system.solution['costs'].item() + + # Cost should have increased + assert new_cost > original_cost From 52ad96e63751daabb7e86072b29b25bf90b655fa Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Tue, 9 Dec 2025 22:09:57 +0100 Subject: [PATCH 32/88] Add better and more versitile sankey diagrams (#514) * Update sankey figure building * fix: sankey * fix: effects sankey * Add sankey diagramm tests * Add sankey diagramm tests * Minor nitpicks * All three failing tests are now fixed. Here's a summary of the changes made: Summary of Fixes 1. test_statistics_sizes_includes_all_flows - Fixed Problem: The statistics.sizes property was returning storage capacity sizes (like Speicher) which are not flow labels. The test expected only flow sizes. Fix in flixopt/statistics_accessor.py (lines 419-427): - Modified sizes property to filter only flow sizes by checking if the variable name (minus |size suffix) matches a flow label in self._fs.flows.keys() 2. test_sankey_sizes_mode - Fixed Problem: The sankey diagram with mode='sizes' returned empty links because the test fixture (simple_flow_system) didn't have any flows with InvestParameters. Fix in tests/conftest.py (lines 268-272): - Modified Storage.simple() to use fx.InvestParameters(fixed_size=1e4, mandatory=True) on the charging flow, ensuring there's at least one flow with investment parameters for testing. 3. test_sankey_sizes_max_size_filter - Fixed Problem: The sankey method didn't have a max_size parameter, so passing it caused the parameter to be forwarded to plotly_kwargs and then to update_layout(), which failed with "Invalid property specified for object of type plotly.graph_objs.Layout: 'max_size'". Fix in flixopt/statistics_accessor.py (lines 1351, 1367, 1392-1395): - Added max_size: float | None = None parameter to the sankey method signature - Added filtering logic to apply max_size filter when in mode='sizes' * Add new sankey network topology plot --- flixopt/config.py | 2 +- flixopt/flow_system.py | 8 +- flixopt/statistics_accessor.py | 298 +++++++++++++++++++++++----- flixopt/topology_accessor.py | 161 ++++++++++++++- tests/conftest.py | 6 +- tests/test_solution_and_plotting.py | 170 ++++++++++++++++ tests/test_topology_accessor.py | 78 +++++++- 7 files changed, 651 insertions(+), 72 deletions(-) diff --git a/flixopt/config.py b/flixopt/config.py index 4d4571dcd..aaa3b34d2 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -20,7 +20,7 @@ COLORLOG_AVAILABLE = False escape_codes = None -__all__ = ['CONFIG', 'MultilineFormatter', 'SUCCESS_LEVEL'] +__all__ = ['CONFIG', 'MultilineFormatter', 'SUCCESS_LEVEL', 'DEPRECATION_REMOVAL_VERSION'] if COLORLOG_AVAILABLE: __all__.append('ColoredMultilineFormatter') diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index bae700b85..ce7bd0658 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -1426,13 +1426,7 @@ def plot_network( Visualizes the network structure of a FlowSystem using PyVis. """ - warnings.warn( - f'plot_network() is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' - 'Use flow_system.topology.plot() instead.', - DeprecationWarning, - stacklevel=2, - ) - return self.topology.plot(path=path, controls=controls, show=show) + return self.topology.plot_legacy(path=path, controls=controls, show=show) def start_network_app(self) -> None: """ diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 2927c42a6..2be1b5823 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -417,7 +417,11 @@ def sizes(self) -> xr.Dataset: """All flow sizes as a Dataset with flow labels as variable names.""" self._require_solution() if self._sizes is None: - size_vars = [v for v in self._fs.solution.data_vars if v.endswith('|size')] + # Get flow labels to filter only flow sizes (not storage capacity sizes) + flow_labels = set(self._fs.flows.keys()) + size_vars = [ + v for v in self._fs.solution.data_vars if v.endswith('|size') and v.replace('|size', '') in flow_labels + ] self._sizes = xr.Dataset({v.replace('|size', ''): self._fs.solution[v] for v in size_vars}) return self._sizes @@ -1094,69 +1098,186 @@ def flows( return PlotResult(data=ds, figure=fig) - def sankey( + def _prepare_sankey_data( self, - *, - timestep: int | str | None = None, - aggregate: Literal['sum', 'mean'] = 'sum', - select: SelectType | None = None, - colors: ColorType | None = None, - show: bool | None = None, - **plotly_kwargs: Any, - ) -> PlotResult: - """Plot Sankey diagram of energy/material flow hours. + mode: Literal['flow_hours', 'sizes', 'peak_flow'], + timestep: int | str | None, + aggregate: Literal['sum', 'mean'], + select: SelectType | None, + ) -> tuple[xr.Dataset, str]: + """Prepare data for Sankey diagram based on mode. Args: - timestep: Specific timestep to show, or None for aggregation. - aggregate: How to aggregate if timestep is None. + mode: What to display - flow_hours, sizes, or peak_flow. + timestep: Specific timestep (only for flow_hours mode). + aggregate: Aggregation method (only for flow_hours mode). select: xarray-style selection. - colors: Color specification for nodes (colorscale name, color list, or label-to-color dict). - show: Whether to display. Returns: - PlotResult with Sankey flow data. + Tuple of (prepared Dataset, title string). """ - self._stats._require_solution() - - ds = self._stats.flow_hours.copy() - - # Apply weights - if 'period' in ds.dims and self._fs.period_weights is not None: - ds = ds * self._fs.period_weights - if 'scenario' in ds.dims and self._fs.scenario_weights is not None: - weights = self._fs.scenario_weights / self._fs.scenario_weights.sum() - ds = ds * weights + if mode == 'sizes': + ds = self._stats.sizes.copy() + title = 'Investment Sizes (Capacities)' + elif mode == 'peak_flow': + ds = self._stats.flow_rates.copy() + ds = _apply_selection(ds, select) + if 'time' in ds.dims: + ds = ds.max(dim='time') + for dim in ['period', 'scenario']: + if dim in ds.dims: + ds = ds.max(dim=dim) + return ds, 'Peak Flow Rates' + else: # flow_hours + ds = self._stats.flow_hours.copy() + title = 'Energy Flow' + + # Apply weights for flow_hours + if mode == 'flow_hours': + if 'period' in ds.dims and self._fs.period_weights is not None: + ds = ds * self._fs.period_weights + if 'scenario' in ds.dims and self._fs.scenario_weights is not None: + weights = self._fs.scenario_weights / self._fs.scenario_weights.sum() + ds = ds * weights ds = _apply_selection(ds, select) - if timestep is not None: - if isinstance(timestep, int): - ds = ds.isel(time=timestep) - else: - ds = ds.sel(time=timestep) - elif 'time' in ds.dims: - ds = getattr(ds, aggregate)(dim='time') + # Time aggregation (only for flow_hours) + if mode == 'flow_hours': + if timestep is not None: + if isinstance(timestep, int): + ds = ds.isel(time=timestep) + else: + ds = ds.sel(time=timestep) + elif 'time' in ds.dims: + ds = getattr(ds, aggregate)(dim='time') + # Collapse remaining dimensions for dim in ['period', 'scenario']: if dim in ds.dims: - ds = ds.sum(dim=dim) + ds = ds.sum(dim=dim) if mode == 'flow_hours' else ds.max(dim=dim) + + return ds, title + + def _build_effects_sankey( + self, + select: SelectType | None, + colors: ColorType | None, + **plotly_kwargs: Any, + ) -> tuple[go.Figure, xr.Dataset]: + """Build Sankey diagram showing contributions from components to effects. + + Creates a Sankey with: + - Left side: Components (grouped by type) + - Right side: Effects (costs, CO2, etc.) + - Links: Contributions from each component to each effect + + Args: + select: xarray-style selection. + colors: Color specification for nodes. + **plotly_kwargs: Additional Plotly layout arguments. + + Returns: + Tuple of (Plotly Figure, Dataset with link data). + """ + total_effects = self._stats.total_effects + + # Collect all links: component -> effect + nodes: set[str] = set() + links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} + + for effect_name in total_effects.data_vars: + effect_data = total_effects[effect_name] + effect_data = _apply_selection(effect_data, select) + + # Sum over any remaining dimensions + for dim in ['period', 'scenario']: + if dim in effect_data.dims: + effect_data = effect_data.sum(dim=dim) + + contributors = effect_data.coords['contributor'].values + components = effect_data.coords['component'].values + + for contributor, component in zip(contributors, components, strict=False): + value = float(effect_data.sel(contributor=contributor).values) + if not np.isfinite(value) or abs(value) < 1e-6: + continue + + # Use component as source node, effect as target + source = str(component) + target = f'[{effect_name}]' # Bracket notation to distinguish effects + + nodes.add(source) + nodes.add(target) + links['source'].append(source) + links['target'].append(target) + links['value'].append(abs(value)) + links['label'].append(f'{contributor} → {effect_name}: {value:.2f}') + + # Create figure + node_list = list(nodes) + node_indices = {n: i for i, n in enumerate(node_list)} + + color_map = process_colors(colors, node_list) + node_colors = [color_map[node] for node in node_list] + + fig = go.Figure( + data=[ + go.Sankey( + node=dict( + pad=15, thickness=20, line=dict(color='black', width=0.5), label=node_list, color=node_colors + ), + link=dict( + source=[node_indices[s] for s in links['source']], + target=[node_indices[t] for t in links['target']], + value=links['value'], + label=links['label'], + ), + ) + ] + ) + fig.update_layout(title='Effect Contributions by Component', **plotly_kwargs) + + sankey_ds = xr.Dataset( + {'value': ('link', links['value'])}, + coords={ + 'link': range(len(links['value'])), + 'source': ('link', links['source']), + 'target': ('link', links['target']), + 'label': ('link', links['label']), + }, + ) + + return fig, sankey_ds + + def _build_sankey_links( + self, + ds: xr.Dataset, + min_value: float = 1e-6, + ) -> tuple[set[str], dict[str, list]]: + """Build Sankey nodes and links from flow data. - # Build Sankey - nodes = set() - links = {'source': [], 'target': [], 'value': [], 'label': []} + Args: + ds: Dataset with flow values (one variable per flow). + min_value: Minimum value threshold to include a link. + + Returns: + Tuple of (nodes set, links dict with source/target/value/label). + """ + nodes: set[str] = set() + links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} for flow in self._fs.flows.values(): label = flow.label_full if label not in ds: continue value = float(ds[label].values) - if abs(value) < 1e-6: + if abs(value) < min_value: continue - # Determine source/target based on flow direction - # is_input_in_component: True means bus -> component, False means component -> bus + # flow.bus and flow.component are already strings (bus label, component label_full) bus_label = flow.bus - comp_label = flow.component.label_full + comp_label = flow.component if flow.is_input_in_component: source = bus_label @@ -1172,6 +1293,28 @@ def sankey( links['value'].append(abs(value)) links['label'].append(label) + return nodes, links + + def _create_sankey_figure( + self, + nodes: set[str], + links: dict[str, list], + colors: ColorType | None, + title: str, + **plotly_kwargs: Any, + ) -> go.Figure: + """Create Plotly Sankey figure. + + Args: + nodes: Set of node labels. + links: Dict with source, target, value, label lists. + colors: Color specification for nodes. + title: Figure title. + **plotly_kwargs: Additional Plotly layout arguments. + + Returns: + Plotly Figure with Sankey diagram. + """ node_list = list(nodes) node_indices = {n: i for i, n in enumerate(node_list)} @@ -1193,12 +1336,75 @@ def sankey( ) ] ) - fig.update_layout(title='Energy Flow Sankey', **plotly_kwargs) + fig.update_layout(title=title, **plotly_kwargs) + return fig - sankey_ds = xr.Dataset( - {'value': ('link', links['value'])}, - coords={'link': links['label'], 'source': ('link', links['source']), 'target': ('link', links['target'])}, - ) + def sankey( + self, + *, + mode: Literal['flow_hours', 'sizes', 'peak_flow', 'effects'] = 'flow_hours', + timestep: int | str | None = None, + aggregate: Literal['sum', 'mean'] = 'sum', + select: SelectType | None = None, + max_size: float | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram of the flow system. + + Args: + mode: What to display: + - 'flow_hours': Energy/material amounts (default) + - 'sizes': Investment capacities + - 'peak_flow': Maximum flow rates + - 'effects': Component contributions to all effects (costs, CO2, etc.) + timestep: Specific timestep to show, or None for aggregation (flow_hours only). + aggregate: How to aggregate if timestep is None ('sum' or 'mean', flow_hours only). + select: xarray-style selection. + max_size: Filter flows with sizes exceeding this value (sizes mode only). + colors: Color specification for nodes (colorscale name, color list, or label-to-color dict). + show: Whether to display. + **plotly_kwargs: Additional arguments passed to Plotly layout. + + Returns: + PlotResult with Sankey flow data and figure. + + Examples: + >>> # Show energy flows (default) + >>> flow_system.statistics.plot.sankey() + >>> # Show investment sizes/capacities + >>> flow_system.statistics.plot.sankey(mode='sizes') + >>> # Show peak flow rates + >>> flow_system.statistics.plot.sankey(mode='peak_flow') + >>> # Show effect contributions (components -> effects like costs, CO2) + >>> flow_system.statistics.plot.sankey(mode='effects') + """ + self._stats._require_solution() + + if mode == 'effects': + fig, sankey_ds = self._build_effects_sankey(select, colors, **plotly_kwargs) + else: + ds, title = self._prepare_sankey_data(mode, timestep, aggregate, select) + + # Apply max_size filter for sizes mode + if max_size is not None and mode == 'sizes' and ds.data_vars: + valid_labels = [lbl for lbl in ds.data_vars if float(ds[lbl].max()) < max_size] + ds = ds[valid_labels] + + nodes, links = self._build_sankey_links(ds) + fig = self._create_sankey_figure(nodes, links, colors, title, **plotly_kwargs) + + n_links = len(links['value']) + sankey_ds = xr.Dataset( + {'value': ('link', links['value'])}, + coords={ + 'link': range(n_links), + 'source': ('link', links['source']), + 'target': ('link', links['target']), + 'label': ('link', links['label']), + }, + ) if show is None: show = CONFIG.Plotting.default_show diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py index de4f83685..6e0980ae3 100644 --- a/flixopt/topology_accessor.py +++ b/flixopt/topology_accessor.py @@ -11,7 +11,12 @@ import pathlib import warnings from itertools import chain -from typing import TYPE_CHECKING, Literal +from typing import TYPE_CHECKING, Any, Literal + +import plotly.graph_objects as go + +from .color_processing import ColorType, process_colors +from .config import CONFIG, DEPRECATION_REMOVAL_VERSION if TYPE_CHECKING: import pyvis @@ -176,6 +181,142 @@ def infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: return nodes, edges def plot( + self, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> go.Figure: + """ + Visualize the network structure as a Sankey diagram using Plotly. + + Creates a Sankey diagram showing the topology of the flow system, + with buses and components as nodes, and flows as links between them. + All links have equal width since no solution data is used. + + Args: + colors: Color specification for nodes (buses). + - `None`: Uses default color palette based on buses. + - `str`: Plotly colorscale name (e.g., 'Viridis', 'Blues'). + - `list`: List of colors to cycle through. + - `dict`: Maps bus labels to specific colors. + Links inherit colors from their connected bus. + show: Whether to display the figure in the browser. + - `None`: Uses default from CONFIG.Plotting.default_show. + **plotly_kwargs: Additional arguments passed to Plotly layout. + + Returns: + Plotly Figure with the Sankey diagram. + + Examples: + >>> flow_system.topology.plot() + >>> flow_system.topology.plot(show=True) + >>> flow_system.topology.plot(colors='Viridis') + >>> flow_system.topology.plot(colors={'ElectricityBus': 'gold', 'HeatBus': 'red'}) + + Notes: + This visualization shows the network structure without optimization results. + For visualizations that include flow values, use `flow_system.statistics.plot.sankey()` + after running an optimization. + + Hover over nodes and links to see detailed element information. + + See Also: + - `plot_legacy()`: Previous PyVis-based network visualization. + - `statistics.plot.sankey()`: Sankey with actual flow values from optimization. + """ + if not self._fs.connected_and_transformed: + self._fs.connect_and_transform() + + # Build nodes and links from topology + nodes: set[str] = set() + links: dict[str, list] = { + 'source': [], + 'target': [], + 'value': [], + 'label': [], + 'customdata': [], # For hover text + } + + # Collect node hover info (format repr for HTML display) + node_hover: dict[str, str] = {} + for comp in self._fs.components.values(): + node_hover[comp.label] = repr(comp).replace('\n', '
') + for bus in self._fs.buses.values(): + node_hover[bus.label] = repr(bus).replace('\n', '
') + + for flow in self._fs.flows.values(): + bus_label = flow.bus + comp_label = flow.component + + if flow.is_input_in_component: + source = bus_label + target = comp_label + else: + source = comp_label + target = bus_label + + nodes.add(source) + nodes.add(target) + links['source'].append(source) + links['target'].append(target) + links['value'].append(1) # Equal width for all links (no solution data) + links['label'].append(flow.label_full) + links['customdata'].append(repr(flow).replace('\n', '
')) # Flow repr for hover + + # Create figure + node_list = list(nodes) + node_indices = {n: i for i, n in enumerate(node_list)} + + # Get colors for buses only, then apply to all nodes + bus_labels = [bus.label for bus in self._fs.buses.values()] + bus_color_map = process_colors(colors, bus_labels) + + # Assign colors to nodes: buses get their color, components get a neutral gray + node_colors = [] + for node in node_list: + if node in bus_color_map: + node_colors.append(bus_color_map[node]) + else: + # Component - use a neutral gray + node_colors.append('#808080') + + # Build hover text for nodes + node_customdata = [node_hover.get(node, node) for node in node_list] + + fig = go.Figure( + data=[ + go.Sankey( + node=dict( + pad=15, + thickness=20, + line=dict(color='black', width=0.5), + label=node_list, + color=node_colors, + customdata=node_customdata, + hovertemplate='%{customdata}', + ), + link=dict( + source=[node_indices[s] for s in links['source']], + target=[node_indices[t] for t in links['target']], + value=links['value'], + label=links['label'], + customdata=links['customdata'], + hovertemplate='%{customdata}', + ), + ) + ] + ) + title = plotly_kwargs.pop('title', 'Flow System Topology') + fig.update_layout(title=title, **plotly_kwargs) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return fig + + def plot_legacy( self, path: bool | str | pathlib.Path = 'flow_system.html', controls: bool @@ -187,6 +328,10 @@ def plot( """ Visualize the network structure using PyVis, saving it as an interactive HTML file. + .. deprecated:: + Use `plot()` instead for the new Plotly-based Sankey visualization. + This method is kept for backwards compatibility. + Args: path: Path to save the HTML visualization. - `False`: Visualization is created but not saved. @@ -203,9 +348,9 @@ def plot( or `None` if `pyvis` is not installed. Examples: - >>> flow_system.topology.plot() - >>> flow_system.topology.plot(show=False) - >>> flow_system.topology.plot(path='output/network.html', controls=['nodes', 'layout']) + >>> flow_system.topology.plot_legacy() + >>> flow_system.topology.plot_legacy(show=False) + >>> flow_system.topology.plot_legacy(path='output/network.html', controls=['nodes', 'layout']) Notes: This function requires `pyvis`. If not installed, the function prints @@ -213,8 +358,12 @@ def plot( Nodes are styled based on type (circles for buses, boxes for components) and annotated with node information. """ - from .config import CONFIG - + warnings.warn( + f'This method is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' + 'Use flow_system.topology.plot() instead.', + DeprecationWarning, + stacklevel=2, + ) node_infos, edge_infos = self.infos() # Normalize path=False to None for _plot_network compatibility normalized_path = None if path is False else path diff --git a/tests/conftest.py b/tests/conftest.py index 9d76097ee..15c7509d3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -265,7 +265,11 @@ def simple(timesteps_length=9): return fx.Storage( 'Speicher', - charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1e4), + charging=fx.Flow( + 'Q_th_load', + bus='Fernwärme', + size=fx.InvestParameters(fixed_size=1e4, mandatory=True), # Investment for testing sizes + ), discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1e4), capacity_in_flow_hours=fx.InvestParameters(effects_of_investment=20, fixed_size=30, mandatory=True), initial_charge_state=0, diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index e5c96da33..2d87b595e 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -162,6 +162,61 @@ def test_element_solution_raises_for_unlinked_element(self): _ = boiler.solution +# ============================================================================ +# STATISTICS ACCESSOR TESTS +# ============================================================================ + + +class TestStatisticsAccessor: + """Tests for flow_system.statistics accessor.""" + + def test_statistics_sizes_includes_all_flows(self, simple_flow_system, highs_solver): + """Test that statistics.sizes includes all flow sizes (from InvestParameters).""" + simple_flow_system.optimize(highs_solver) + + sizes = simple_flow_system.statistics.sizes + + assert isinstance(sizes, xr.Dataset) + # Should have sizes for flows with InvestParameters + assert len(sizes.data_vars) > 0 + + # Check that all size labels are valid flow labels + flow_labels = [f.label_full for f in simple_flow_system.flows.values()] + for label in sizes.data_vars: + assert label in flow_labels, f'Size label {label} should be a valid flow' + + def test_statistics_sizes_returns_correct_values(self, simple_flow_system, highs_solver): + """Test that statistics.sizes returns correct size values.""" + simple_flow_system.optimize(highs_solver) + + sizes = simple_flow_system.statistics.sizes + + # Check that all values are positive (sizes should be > 0) + for label in sizes.data_vars: + value = float(sizes[label].values) if sizes[label].dims == () else float(sizes[label].max().values) + assert value > 0, f'Size for {label} should be positive' + + def test_statistics_flow_rates(self, simple_flow_system, highs_solver): + """Test that statistics.flow_rates returns flow rate data.""" + simple_flow_system.optimize(highs_solver) + + flow_rates = simple_flow_system.statistics.flow_rates + + assert isinstance(flow_rates, xr.Dataset) + assert len(flow_rates.data_vars) > 0 + # Flow rates should have time dimension + assert 'time' in flow_rates.dims + + def test_statistics_flow_hours(self, simple_flow_system, highs_solver): + """Test that statistics.flow_hours returns energy data.""" + simple_flow_system.optimize(highs_solver) + + flow_hours = simple_flow_system.statistics.flow_hours + + assert isinstance(flow_hours, xr.Dataset) + assert len(flow_hours.data_vars) > 0 + + # ============================================================================ # PLOTTING WITH OPTIMIZED DATA TESTS # ============================================================================ @@ -601,3 +656,118 @@ def test_export_matplotlib_to_png(self, simple_flow_system, highs_solver, tmp_pa plotting.export_figure((fig, ax), default_path=png_path, save=True, show=False) assert png_path.exists() plt.close(fig) + + +# ============================================================================ +# SANKEY DIAGRAM TESTS +# ============================================================================ + + +class TestSankeyDiagram: + """Tests for Sankey diagram functionality.""" + + def test_sankey_flow_hours_mode(self, simple_flow_system, highs_solver): + """Test Sankey diagram with flow_hours mode (default).""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(show=False) + + assert result.figure is not None + assert result.data is not None + assert 'value' in result.data + assert 'source' in result.data.coords + assert 'target' in result.data.coords + assert len(result.data.link) > 0 + + def test_sankey_peak_flow_mode(self, simple_flow_system, highs_solver): + """Test Sankey diagram with peak_flow mode.""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(mode='peak_flow', show=False) + + assert result.figure is not None + assert result.data is not None + assert len(result.data.link) > 0 + + def test_sankey_sizes_mode(self, simple_flow_system, highs_solver): + """Test Sankey diagram with sizes mode shows investment sizes.""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(mode='sizes', show=False) + + assert result.figure is not None + assert result.data is not None + # Should have some flows with investment sizes + assert len(result.data.link) > 0 + + def test_sankey_sizes_max_size_filter(self, simple_flow_system, highs_solver): + """Test that max_size parameter filters large sizes.""" + simple_flow_system.optimize(highs_solver) + + # Get all sizes (no filter) + result_all = simple_flow_system.statistics.plot.sankey(mode='sizes', max_size=None, show=False) + + # Get filtered sizes + result_filtered = simple_flow_system.statistics.plot.sankey(mode='sizes', max_size=100, show=False) + + # Filtered should have fewer or equal links + assert len(result_filtered.data.link) <= len(result_all.data.link) + + def test_sankey_effects_mode(self, simple_flow_system, highs_solver): + """Test Sankey diagram with effects mode.""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(mode='effects', show=False) + + assert result.figure is not None + assert result.data is not None + # Should have component -> effect links + assert len(result.data.link) > 0 + # Effects should appear in targets with bracket notation + targets = list(result.data.target.values) + assert any('[' in str(t) for t in targets), 'Effects should appear as [effect_name] in targets' + + def test_sankey_effects_includes_costs_and_co2(self, simple_flow_system, highs_solver): + """Test that effects mode includes both costs and CO2.""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(mode='effects', show=False) + + targets = [str(t) for t in result.data.target.values] + # Should have at least costs effect + assert '[costs]' in targets, 'Should include costs effect' + + def test_sankey_with_timestep_selection(self, simple_flow_system, highs_solver): + """Test Sankey with specific timestep.""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(timestep=0, show=False) + + assert result.figure is not None + assert len(result.data.link) > 0 + + def test_sankey_with_mean_aggregate(self, simple_flow_system, highs_solver): + """Test Sankey with mean aggregation.""" + simple_flow_system.optimize(highs_solver) + + result_sum = simple_flow_system.statistics.plot.sankey(aggregate='sum', show=False) + result_mean = simple_flow_system.statistics.plot.sankey(aggregate='mean', show=False) + + # Both should produce valid results + assert result_sum.figure is not None + assert result_mean.figure is not None + # Mean values should be smaller than sum values + sum_total = sum(result_sum.data.value.values) + mean_total = sum(result_mean.data.value.values) + assert mean_total < sum_total, 'Mean should produce smaller values than sum' + + def test_sankey_returns_plot_result(self, simple_flow_system, highs_solver): + """Test that sankey returns PlotResult with figure and data.""" + simple_flow_system.optimize(highs_solver) + + result = simple_flow_system.statistics.plot.sankey(show=False) + + # Check PlotResult structure + assert hasattr(result, 'figure') + assert hasattr(result, 'data') + assert isinstance(result.data, xr.Dataset) diff --git a/tests/test_topology_accessor.py b/tests/test_topology_accessor.py index b1e3fdf31..dc9657726 100644 --- a/tests/test_topology_accessor.py +++ b/tests/test_topology_accessor.py @@ -3,6 +3,7 @@ import tempfile from pathlib import Path +import plotly.graph_objects as go import pytest import flixopt as fx @@ -64,37 +65,92 @@ def test_infos_contains_all_elements(self, flow_system): class TestTopologyPlot: - """Tests for topology.plot() method.""" + """Tests for topology.plot() method (Sankey-based).""" + + def test_plot_returns_plotly_figure(self, flow_system): + """Test that plot() returns a Plotly Figure.""" + result = flow_system.topology.plot(show=False) + assert isinstance(result, go.Figure) + + def test_plot_contains_sankey_trace(self, flow_system): + """Test that the figure contains a Sankey trace.""" + fig = flow_system.topology.plot(show=False) + assert len(fig.data) == 1 + assert isinstance(fig.data[0], go.Sankey) + + def test_plot_has_correct_title(self, flow_system): + """Test that the figure has the correct title.""" + fig = flow_system.topology.plot(show=False) + assert fig.layout.title.text == 'Flow System Topology' + + def test_plot_with_custom_title(self, flow_system): + """Test that custom title can be passed via plotly_kwargs.""" + fig = flow_system.topology.plot(show=False, title='Custom Title') + assert fig.layout.title.text == 'Custom Title' + + def test_plot_contains_all_nodes(self, flow_system): + """Test that the Sankey contains all buses and components as nodes.""" + fig = flow_system.topology.plot(show=False) + sankey = fig.data[0] + node_labels = set(sankey.node.label) + + # All buses should be in nodes + for bus in flow_system.buses.values(): + assert bus.label in node_labels + + # All components should be in nodes + for comp in flow_system.components.values(): + assert comp.label in node_labels + + def test_plot_contains_all_flows_as_links(self, flow_system): + """Test that all flows are represented as links.""" + fig = flow_system.topology.plot(show=False) + sankey = fig.data[0] + link_labels = set(sankey.link.label) + + # All flows should be represented as links + for flow in flow_system.flows.values(): + assert flow.label_full in link_labels + + def test_plot_with_colors(self, flow_system): + """Test that colors parameter is accepted.""" + # Should not raise + flow_system.topology.plot(colors='Viridis', show=False) + flow_system.topology.plot(colors=['red', 'blue', 'green'], show=False) + + +class TestTopologyPlotLegacy: + """Tests for topology.plot_legacy() method (PyVis-based).""" - def test_plot_returns_network_or_none(self, flow_system): - """Test that plot() returns a pyvis Network or None.""" + def test_plot_legacy_returns_network_or_none(self, flow_system): + """Test that plot_legacy() returns a pyvis Network or None.""" try: import pyvis - result = flow_system.topology.plot(path=False, show=False) + result = flow_system.topology.plot_legacy(path=False, show=False) assert result is None or isinstance(result, pyvis.network.Network) except ImportError: # pyvis not installed, should return None - result = flow_system.topology.plot(path=False, show=False) + result = flow_system.topology.plot_legacy(path=False, show=False) assert result is None - def test_plot_creates_html_file(self, flow_system): - """Test that plot() creates an HTML file when path is specified.""" + def test_plot_legacy_creates_html_file(self, flow_system): + """Test that plot_legacy() creates an HTML file when path is specified.""" pytest.importorskip('pyvis') with tempfile.TemporaryDirectory() as tmpdir: html_path = Path(tmpdir) / 'network.html' - flow_system.topology.plot(path=str(html_path), show=False) + flow_system.topology.plot_legacy(path=str(html_path), show=False) assert html_path.exists() content = html_path.read_text() assert '' in content.lower() or ' Date: Tue, 9 Dec 2025 22:28:20 +0100 Subject: [PATCH 33/88] Update tests for new plot method --- tests/test_solution_and_plotting.py | 32 ++++++++++++++++------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index 2d87b595e..b669431b9 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -426,24 +426,28 @@ def test_heatmap_with_matplotlib(self, long_time_data): class TestNetworkVisualization: """Tests for network visualization functionality.""" - def test_plot_network_returns_network(self, simple_flow_system): - """Test that plot_network returns a Network object.""" - pytest.importorskip('pyvis') - network = simple_flow_system.plot_network(path=False, show=False) - assert network is not None - - def test_plot_network_creates_html(self, simple_flow_system, tmp_path): - """Test that plot_network creates HTML file.""" + def test_topology_plot_returns_figure(self, simple_flow_system): + """Test that topology.plot() returns a Plotly Figure.""" + import plotly.graph_objects as go + + fig = simple_flow_system.topology.plot(show=False) + assert fig is not None + assert isinstance(fig, go.Figure) + + def test_topology_plot_creates_html(self, simple_flow_system, tmp_path): + """Test that topology.plot() figure can be saved to HTML file.""" html_path = tmp_path / 'network.html' - simple_flow_system.plot_network(path=str(html_path), show=False) + fig = simple_flow_system.topology.plot(show=False) + fig.write_html(str(html_path)) assert html_path.exists() - def test_network_contains_all_buses(self, simple_flow_system): - """Test that network contains all buses.""" - network = simple_flow_system.plot_network(path=False, show=False) + def test_topology_plot_contains_all_buses(self, simple_flow_system): + """Test that topology plot contains all buses in the Sankey diagram.""" + fig = simple_flow_system.topology.plot(show=False) - # Get node labels - node_labels = [node['label'] for node in network.nodes] + # Get node labels from the Sankey diagram + sankey_data = fig.data[0] + node_labels = list(sankey_data.node.label) # Check that buses are in network for bus_label in simple_flow_system.buses.keys(): From 929c633886cb7b57b7646cf406bef95ee672f96a Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 09:26:12 +0100 Subject: [PATCH 34/88] Extract docs build and deploy into separate workflow (#520) * Extract docs build into separate workflow * Fix workflow * docs deploy job uses the uploaded artifact --- .github/workflows/docs.yaml | 108 +++++++++++++++++++++++++++++++++ .github/workflows/release.yaml | 38 ++---------- 2 files changed, 112 insertions(+), 34 deletions(-) create mode 100644 .github/workflows/docs.yaml diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml new file mode 100644 index 000000000..d5fdc5b00 --- /dev/null +++ b/.github/workflows/docs.yaml @@ -0,0 +1,108 @@ +name: Docs + +on: + push: + branches: [main] + paths: + - 'docs/**' + - 'mkdocs.yml' + - 'flixopt/**' + pull_request: + paths: + - 'docs/**' + - 'mkdocs.yml' + workflow_dispatch: + workflow_call: + inputs: + deploy: + type: boolean + default: false + version: + type: string + required: false + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + PYTHON_VERSION: "3.11" + MPLBACKEND: Agg + PLOTLY_RENDERER: json + +jobs: + build: + name: Build documentation + runs-on: ubuntu-24.04 + timeout-minutes: 30 + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - uses: astral-sh/setup-uv@v6 + with: + version: "0.9.10" + enable-cache: true + + - uses: actions/setup-python@v6 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Extract changelog + run: | + uv pip install --system packaging + python scripts/extract_changelog.py + + - name: Install dependencies + run: uv pip install --system ".[docs]" + + - name: Build docs + run: mkdocs build --strict + + - uses: actions/upload-artifact@v4 + with: + name: docs + path: site/ + retention-days: 7 + + deploy: + name: Deploy documentation + needs: build + if: ${{ inputs.deploy == true }} + runs-on: ubuntu-24.04 + permissions: + contents: write + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + + - uses: astral-sh/setup-uv@v6 + with: + version: "0.9.10" + enable-cache: true + + - uses: actions/setup-python@v6 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Install mike + run: uv pip install --system mike + + - uses: actions/download-artifact@v4 + with: + name: docs + path: site/ + + - name: Configure Git + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + - name: Deploy docs + run: | + VERSION=${{ inputs.version }} + VERSION=${VERSION#v} + mike deploy --push --update-aliases --no-build $VERSION latest + mike set-default --push latest diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4f1edd3e8..2bf49bfc1 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -188,37 +188,7 @@ jobs: name: Deploy documentation needs: [create-release] if: "!contains(github.ref, 'alpha') && !contains(github.ref, 'beta') && !contains(github.ref, 'rc')" - runs-on: ubuntu-24.04 - permissions: - contents: write - steps: - - uses: actions/checkout@v5 - with: - fetch-depth: 0 - - - uses: astral-sh/setup-uv@v6 - with: - version: "0.9.10" - - - uses: actions/setup-python@v6 - with: - python-version: ${{ env.PYTHON_VERSION }} - - - name: Extract changelog - run: | - uv pip install --system packaging - python scripts/extract_changelog.py - - - name: Install docs dependencies - run: uv pip install --system ".[docs]" - - - name: Configure Git - run: | - git config user.name github-actions[bot] - git config user.email 41898282+github-actions[bot]@users.noreply.github.com - - - name: Deploy docs - run: | - VERSION=${GITHUB_REF#refs/tags/v} - mike deploy --push --update-aliases $VERSION latest - mike set-default --push latest + uses: ./.github/workflows/docs.yaml + with: + deploy: true + version: ${{ github.ref_name }} From 03d5bac40aacb8c46e381b55ed095590316c07f5 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 09:50:54 +0100 Subject: [PATCH 35/88] fix: docs build CI --- .github/workflows/docs.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index d5fdc5b00..4424d5122 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -51,8 +51,8 @@ jobs: - name: Extract changelog run: | - uv pip install --system packaging - python scripts/extract_changelog.py + cp CHANGELOG.md docs/changelog.md + python scripts/format_changelog.py - name: Install dependencies run: uv pip install --system ".[docs]" From ecee52e58368538c8eb8d5ef61c23f00b576a2ad Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:22:45 +0100 Subject: [PATCH 36/88] =?UTF-8?q?=E2=8F=BA=20All=2010=20review=20comments?= =?UTF-8?q?=20have=20been=20addressed:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | File | Change | |--------------------------------------------------------------|---------------------------------------------------------------------| | scripts/format_changelog.py | Path now relative to script location, not CWD | | docs/home/license.md | Added text language identifier to code block | | docs/home/citing.md | Removed emphasis from placeholder text | | docs/user-guide/building-models/index.md | Changed "On/Off" to "Status" | | examples/05_Two-stage-optimization/two_stage_optimization.py | Using np.allclose instead of .round(5) comparison | | flixopt/topology_accessor.py | Removed redundant ImportError check in stop_app() | | flixopt/statistics_accessor.py | Changed logger.critical to logger.warning | | flixopt/features.py | Changed self._previous_status * -1 + 1 to 1 - self._previous_status | | tests/deprecated/conftest.py | Using np.random.default_rng(seed) instead of np.random.seed() | --- docs/home/citing.md | 2 +- docs/home/license.md | 2 +- docs/user-guide/building-models/index.md | 2 +- .../two_stage_optimization.py | 3 ++- flixopt/features.py | 2 +- flixopt/statistics_accessor.py | 2 +- flixopt/topology_accessor.py | 10 ---------- scripts/format_changelog.py | 11 ++++++++--- tests/deprecated/conftest.py | 8 ++++---- 9 files changed, 19 insertions(+), 23 deletions(-) diff --git a/docs/home/citing.md b/docs/home/citing.md index 6fd1a6020..a4f900d18 100644 --- a/docs/home/citing.md +++ b/docs/home/citing.md @@ -12,7 +12,7 @@ If you've published research using flixOpt, please let us know! We'd love to fea ### List of Publications -*Coming soon: A list of academic publications that have used flixOpt* +Coming soon: A list of academic publications that have used flixOpt. ## Contributing Back diff --git a/docs/home/license.md b/docs/home/license.md index d00755a0b..e0b0266a4 100644 --- a/docs/home/license.md +++ b/docs/home/license.md @@ -4,7 +4,7 @@ flixOpt is released under the MIT License. ## MIT License -``` +```text MIT License Copyright (c) 2022 Chair of Building Energy Systems and Heat Supply - TU Dresden diff --git a/docs/user-guide/building-models/index.md b/docs/user-guide/building-models/index.md index 27808ea56..1133d5cde 100644 --- a/docs/user-guide/building-models/index.md +++ b/docs/user-guide/building-models/index.md @@ -9,7 +9,7 @@ Learn how to construct FlowSystem models step by step: - Creating buses and flows - Adding components (Sources, Sinks, Converters, Storage) - Configuring effects and objectives -- Using advanced features (Investment, On/Off, Piecewise) +- Using advanced features (Investment, Status, Piecewise) ## Getting Started diff --git a/examples/05_Two-stage-optimization/two_stage_optimization.py b/examples/05_Two-stage-optimization/two_stage_optimization.py index bf7f13a39..3f3278477 100644 --- a/examples/05_Two-stage-optimization/two_stage_optimization.py +++ b/examples/05_Two-stage-optimization/two_stage_optimization.py @@ -11,6 +11,7 @@ import pathlib import timeit +import numpy as np import pandas as pd import xarray as xr @@ -141,7 +142,7 @@ # Verify sizes were correctly fixed dispatch_sizes = calculation_dispatch.flow_system.statistics.sizes sizing_sizes = calculation_sizing.flow_system.statistics.sizes - if (dispatch_sizes.round(5).to_dataarray() == sizing_sizes.round(5).to_dataarray()).all().item(): + if np.allclose(dispatch_sizes.to_dataarray(), sizing_sizes.to_dataarray(), rtol=1e-5): logger.info('Sizes were correctly equalized') else: raise RuntimeError('Sizes were not correctly equalized') diff --git a/flixopt/features.py b/flixopt/features.py index cd9e07151..779ff22f0 100644 --- a/flixopt/features.py +++ b/flixopt/features.py @@ -345,7 +345,7 @@ def _get_previous_downtime(self): if self._previous_status is None: return hours_per_step else: - return ModelingUtilities.compute_consecutive_hours_in_state(self._previous_status * -1 + 1, hours_per_step) + return ModelingUtilities.compute_consecutive_hours_in_state(1 - self._previous_status, hours_per_step) class PieceModel(Submodel): diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 2be1b5823..1b5648098 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -722,7 +722,7 @@ def get_contributor_type(contributor: str) -> str: computed = ds[effect].sum('contributor') found = solution[label] if not np.allclose(computed.fillna(0).values, found.fillna(0).values, equal_nan=True): - logger.critical( + logger.warning( f'Results for {effect}({mode}) in effects_dataset doesnt match {label}\n{computed=}\n, {found=}' ) diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py index 6e0980ae3..2bbb5e782 100644 --- a/flixopt/topology_accessor.py +++ b/flixopt/topology_accessor.py @@ -427,16 +427,6 @@ def stop_app(self) -> None: Examples: >>> flow_system.topology.stop_app() """ - from .network_app import DASH_CYTOSCAPE_AVAILABLE, VISUALIZATION_ERROR - - if not DASH_CYTOSCAPE_AVAILABLE: - raise ImportError( - f'Network visualization requires optional dependencies. ' - f'Install with: `pip install flixopt[network_viz]`, `pip install flixopt[full]` ' - f'or: `pip install dash dash-cytoscape dash-daq networkx werkzeug`. ' - f'Original error: {VISUALIZATION_ERROR}' - ) - if self._fs._network_app is None: logger.warning("No network app is currently running. Can't stop it") return diff --git a/scripts/format_changelog.py b/scripts/format_changelog.py index 48feddc09..891b10c77 100644 --- a/scripts/format_changelog.py +++ b/scripts/format_changelog.py @@ -46,16 +46,21 @@ def format_version_header(match) -> str: # Format the date formatted_date = format_date(date_str) + # Normalise to a Git tag-style version (e.g. "v4.0.0") for URL, display text and id + version_tag = version if version.startswith('v') else f'v{version}' + # Create the new header - github_url = f'https://github.com/flixOpt/flixopt/releases/tag/v{version}' - new_header = f'## [**{version}**]({github_url}) {formatted_date} {{ id="{version}" }}' + github_url = f'https://github.com/flixOpt/flixopt/releases/tag/{version_tag}' + new_header = f'## [**{version_tag}**]({github_url}) {formatted_date} {{ id="{version_tag}" }}' return new_header def main(): """Process the changelog file.""" - changelog_path = Path('docs/changelog.md') + script_dir = Path(__file__).resolve().parent + repo_root = script_dir.parent # assumes this file lives in /scripts/ + changelog_path = repo_root / 'docs' / 'changelog.md' if not changelog_path.exists(): print(f'❌ {changelog_path} not found') diff --git a/tests/deprecated/conftest.py b/tests/deprecated/conftest.py index e24dcaa72..8b22ba128 100644 --- a/tests/deprecated/conftest.py +++ b/tests/deprecated/conftest.py @@ -341,13 +341,13 @@ def electrical_complex(timesteps_length=9): @staticmethod def random_thermal(length=10, seed=42): - np.random.seed(seed) - return np.array([np.random.random() for _ in range(length)]) * 180 + rng = np.random.default_rng(seed) + return rng.random(length) * 180 @staticmethod def random_electrical(length=10, seed=42): - np.random.seed(seed) - return (np.array([np.random.random() for _ in range(length)]) + 0.5) / 1.5 * 50 + rng = np.random.default_rng(seed) + return (rng.random(length) + 0.5) / 1.5 * 50 class Sinks: From 77e3b3c8ca58d7082231f9fe2a8e976295b994a8 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:25:03 +0100 Subject: [PATCH 37/88] Minor nitpicks --- flixopt/features.py | 2 +- flixopt/flow_system.py | 1 + flixopt/statistics_accessor.py | 2 +- flixopt/transform_accessor.py | 3 ++- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/flixopt/features.py b/flixopt/features.py index 779ff22f0..4dfe48964 100644 --- a/flixopt/features.py +++ b/flixopt/features.py @@ -156,7 +156,7 @@ class StatusModel(Submodel): state transitions, duration tracking, and operational effects. Mathematical Formulation: - See + See """ def __init__( diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index ce7bd0658..e7e1ce0cc 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -640,6 +640,7 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: else None, scenario_independent_sizes=reference_structure.get('scenario_independent_sizes', True), scenario_independent_flow_rates=reference_structure.get('scenario_independent_flow_rates', False), + name=reference_structure.get('name'), ) # Restore components diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 1b5648098..9cab41c91 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -985,7 +985,7 @@ def heatmap( heatmap_dims = ['time'] if 'time' in da.dims else list(da.dims)[:1] # Keep only dims we need - keep_dims = set(heatmap_dims) | {actual_facet, actual_animation} - {None} + keep_dims = set(heatmap_dims) | {d for d in [actual_facet, actual_animation] if d is not None} for dim in [d for d in da.dims if d not in keep_dims]: da = da.isel({dim: 0}, drop=True) if da.sizes[dim] > 1 else da.squeeze(dim, drop=True) diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index cb0d87872..60bd8c920 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -504,7 +504,8 @@ def _resample_by_dimension_groups( dim_groups[dims_key].append(var_name) if not dim_groups: - return getattr(time_dataset.resample(time=time, **kwargs), method)() + # No variables to resample - return dataset as-is + return time_dataset resampled_groups = [] for var_names in dim_groups.values(): From 5104be3f9b6e4ea9b7916bdf6e7dd60787912b6d Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 15:29:54 +0100 Subject: [PATCH 38/88] Revert to critical warning --- flixopt/statistics_accessor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 9cab41c91..0cdd2f5ba 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -722,7 +722,7 @@ def get_contributor_type(contributor: str) -> str: computed = ds[effect].sum('contributor') found = solution[label] if not np.allclose(computed.fillna(0).values, found.fillna(0).values, equal_nan=True): - logger.warning( + logger.critical( f'Results for {effect}({mode}) in effects_dataset doesnt match {label}\n{computed=}\n, {found=}' ) From c7d1abb4c134d9688748e1e0e1892d2567909402 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:10:56 +0100 Subject: [PATCH 39/88] bugfix: revert --- flixopt/transform_accessor.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index 60bd8c920..bf2a7ed5e 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -503,9 +503,9 @@ def _resample_by_dimension_groups( dims_key = tuple(sorted(d for d in var.dims if d != 'time')) dim_groups[dims_key].append(var_name) - if not dim_groups: - # No variables to resample - return dataset as-is - return time_dataset + # Note: defaultdict is always truthy, so we check length explicitly + if len(dim_groups) == 0: + return getattr(time_dataset.resample(time=time, **kwargs), method)() resampled_groups = [] for var_names in dim_groups.values(): @@ -522,7 +522,8 @@ def _resample_by_dimension_groups( resampled_groups.append(resampled_dataset) if not resampled_groups: - return time_dataset + # No data variables to resample, but still resample coordinates + return getattr(time_dataset.resample(time=time, **kwargs), method)() if len(resampled_groups) == 1: return resampled_groups[0] From 8e7f14efe56c34278d9f7b20fd1b0b3d4f1549af Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:25:22 +0100 Subject: [PATCH 40/88] revert: solution always having an extra timestep (#523) * Reverted the time index handling to keep the original solution with charge_state including the extra timestep. All other variables now have NaN on the final timestep instead of being truncated. Changes Made: 1. flixopt/structure.py:191-206 - Removed the code that: - Extracted final charge states into separate |final variables - Reindexed the solution to regular timesteps 2. tests/test_solution_and_plotting.py:78-80 - Removed the assertion expecting the Speicher|charge_state|final variable 3. tests/test_integration.py:168-178 - Updated the charge_state expectation to include the extra timestep value (10.0 at the end) 4. tests/conftest.py:695-718 and tests/deprecated/conftest.py:694-717 - Updated the assert_almost_equal_numeric function to handle the extra timestep by trimming arrays when the extra values are NaN (for non-charge_state variables) Result: - charge_state variables now include len(timesteps) + 1 values, with the final value being the actual final charge state - All other time-indexed variables have len(timesteps) + 1 values with NaN at the final timestep (due to xarray coordinate merging) - All 1329 tests pass * Verify that time index always has extra timestep in solution! * fixup test * Update new tests for nan as last timestep * Update some comments and add warnings in tests for nan handling * Update docstring * bugfix: revert --- flixopt/flow_system.py | 17 +++++++++- flixopt/structure.py | 20 +++-------- tests/conftest.py | 20 ++++++++++- tests/deprecated/conftest.py | 20 ++++++++++- tests/deprecated/test_functional.py | 17 +++++----- tests/test_functional.py | 52 ++++++++++++++--------------- tests/test_integration.py | 9 ++--- tests/test_solution_and_plotting.py | 3 +- 8 files changed, 96 insertions(+), 62 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index e7e1ce0cc..0de7b6536 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -1200,7 +1200,22 @@ def solve(self, solver: _Solver) -> FlowSystem: @property def solution(self) -> xr.Dataset | None: - """Get the solution dataset.""" + """ + Access the optimization solution as an xarray Dataset. + + The solution is indexed by ``timesteps_extra`` (the original timesteps plus + one additional timestep at the end). Variables that do not have data for the + extra timestep (most variables except storage charge states) will contain + NaN values at the final timestep. + + Returns: + xr.Dataset: The solution dataset with all optimization variable results, + or None if the model hasn't been solved yet. + + Example: + >>> flow_system.optimize(solver) + >>> flow_system.solution.isel(time=slice(None, -1)) # Exclude trailing NaN (and final charge states) + """ return self._solution @solution.setter diff --git a/flixopt/structure.py b/flixopt/structure.py index da4eee0f6..63d028660 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -166,6 +166,7 @@ def _add_scenario_equality_constraints(self): @property def solution(self): + """Build solution dataset, reindexing to timesteps_extra for consistency.""" solution = super().solution solution['objective'] = self.objective.value solution.attrs = { @@ -188,21 +189,10 @@ def solution(self): for flow in sorted(self.flow_system.flows.values(), key=lambda flow: flow.label_full.upper()) }, } - # Handle extra timestep from storage charge_state variables. - # Storage charge_state uses extra_timestep=True which causes linopy/xarray to - # merge all time coordinates to include the extra timestep with NaN for other vars. - # We extract the final charge state as separate variables and reindex to regular timesteps. - if 'time' in solution.coords and len(solution.coords['time']) > len(self.flow_system.timesteps): - # Collect final states first to avoid modifying during iteration - final_states = {} - for var_name in solution.data_vars: - if var_name.endswith('|charge_state') and 'time' in solution[var_name].dims: - # Extract final charge state as separate variable - final_states[f'{var_name}|final'] = solution[var_name].isel(time=-1) - # Add all final states at once - solution = solution.assign(final_states) - # Reindex all variables to regular timesteps - solution = solution.reindex(time=self.flow_system.timesteps) + # Ensure solution is always indexed by timesteps_extra for consistency. + # Variables without extra timestep data will have NaN at the final timestep. + if 'time' in solution.coords and not solution.indexes['time'].equals(self.flow_system.timesteps_extra): + solution = solution.reindex(time=self.flow_system.timesteps_extra) return solution @property diff --git a/tests/conftest.py b/tests/conftest.py index 15c7509d3..49734911a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -5,6 +5,7 @@ """ import os +import warnings from collections.abc import Iterable import linopy.testing @@ -696,7 +697,10 @@ def assert_almost_equal_numeric( actual, desired, err_msg, relative_error_range_in_percent=0.011, absolute_tolerance=1e-7 ): """ - Custom assertion function for comparing numeric values with relative and absolute tolerances + Custom assertion function for comparing numeric values with relative and absolute tolerances. + + Handles the extra timestep in solutions by trimming actual arrays to match desired length + when the extra values are NaN (from storage charge_state variables using extra_timestep). """ relative_tol = relative_error_range_in_percent / 100 @@ -704,6 +708,20 @@ def assert_almost_equal_numeric( delta = abs(relative_tol * desired) if desired != 0 else absolute_tolerance assert np.isclose(actual, desired, atol=delta), err_msg else: + actual = np.asarray(actual) + desired = np.asarray(desired) + # Handle extra timestep: trim actual to desired length if extra values are NaN + if actual.shape != desired.shape and actual.ndim == 1 and desired.ndim == 1: + if len(actual) > len(desired): + extra = actual[len(desired) :] + if np.all(np.isnan(extra)): + # Warn if trimming more than the expected single extra timestep + if len(extra) > 1: + warnings.warn( + f'Trimming {len(extra)} NaN values from actual array (expected 1)', + stacklevel=2, + ) + actual = actual[: len(desired)] np.testing.assert_allclose(actual, desired, rtol=relative_tol, atol=absolute_tolerance, err_msg=err_msg) diff --git a/tests/deprecated/conftest.py b/tests/deprecated/conftest.py index 8b22ba128..b6ec5ac4b 100644 --- a/tests/deprecated/conftest.py +++ b/tests/deprecated/conftest.py @@ -8,6 +8,7 @@ """ import os +import warnings from collections.abc import Iterable import linopy.testing @@ -695,7 +696,10 @@ def assert_almost_equal_numeric( actual, desired, err_msg, relative_error_range_in_percent=0.011, absolute_tolerance=1e-7 ): """ - Custom assertion function for comparing numeric values with relative and absolute tolerances + Custom assertion function for comparing numeric values with relative and absolute tolerances. + + Handles the extra timestep in solutions by trimming actual arrays to match desired length + when the extra values are NaN (from storage charge_state variables using extra_timestep). """ relative_tol = relative_error_range_in_percent / 100 @@ -703,6 +707,20 @@ def assert_almost_equal_numeric( delta = abs(relative_tol * desired) if desired != 0 else absolute_tolerance assert np.isclose(actual, desired, atol=delta), err_msg else: + actual = np.asarray(actual) + desired = np.asarray(desired) + # Handle extra timestep: trim actual to desired length if extra values are NaN + if actual.shape != desired.shape and actual.ndim == 1 and desired.ndim == 1: + if len(actual) > len(desired): + extra = actual[len(desired) :] + if np.all(np.isnan(extra)): + # Warn if trimming more than the expected single extra timestep + if len(extra) > 1: + warnings.warn( + f'Trimming {len(extra)} NaN values from actual array (expected 1)', + stacklevel=2, + ) + actual = actual[: len(desired)] np.testing.assert_allclose(actual, desired, rtol=relative_tol, atol=absolute_tolerance, err_msg=err_msg) diff --git a/tests/deprecated/test_functional.py b/tests/deprecated/test_functional.py index 34d16819c..c72754003 100644 --- a/tests/deprecated/test_functional.py +++ b/tests/deprecated/test_functional.py @@ -23,6 +23,7 @@ from numpy.testing import assert_allclose import flixopt as fx +from tests.deprecated.conftest import assert_almost_equal_numeric np.random.seed(45) @@ -114,25 +115,23 @@ def test_minimal_model(solver_fixture, time_steps_fixture): assert_allclose(flow_system.solution['costs'].values, 80, rtol=1e-5, atol=1e-10) - assert_allclose( + # Use assert_almost_equal_numeric to handle extra timestep with NaN + assert_almost_equal_numeric( flow_system.solution['Boiler(Q_th)|flow_rate'].values, [-0.0, 10.0, 20.0, -0.0, 10.0], - rtol=1e-5, - atol=1e-10, + 'Boiler flow_rate doesnt match expected value', ) - assert_allclose( + assert_almost_equal_numeric( flow_system.solution['costs(temporal)|per_timestep'].values, [-0.0, 20.0, 40.0, -0.0, 20.0], - rtol=1e-5, - atol=1e-10, + 'costs per_timestep doesnt match expected value', ) - assert_allclose( + assert_almost_equal_numeric( flow_system.solution['Gastarif(Gas)->costs(temporal)'].values, [-0.0, 20.0, 40.0, -0.0, 20.0], - rtol=1e-5, - atol=1e-10, + 'Gastarif costs doesnt match expected value', ) diff --git a/tests/test_functional.py b/tests/test_functional.py index 24322a6e0..8cf67cff9 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -115,21 +115,21 @@ def test_minimal_model(solver_fixture, time_steps_fixture): assert_allclose(flow_system.solution['costs'].values, 80, rtol=1e-5, atol=1e-10) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [-0.0, 10.0, 20.0, -0.0, 10.0], rtol=1e-5, atol=1e-10, ) assert_allclose( - flow_system.solution['costs(temporal)|per_timestep'].values, + flow_system.solution['costs(temporal)|per_timestep'].values[:-1], [-0.0, 20.0, 40.0, -0.0, 20.0], rtol=1e-5, atol=1e-10, ) assert_allclose( - flow_system.solution['Gastarif(Gas)->costs(temporal)'].values, + flow_system.solution['Gastarif(Gas)->costs(temporal)'].values[:-1], [-0.0, 20.0, 40.0, -0.0, 20.0], rtol=1e-5, atol=1e-10, @@ -343,14 +343,14 @@ def test_on(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|status'].values[:-1], [0, 1, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [0, 10, 20, 0, 10], rtol=1e-5, atol=1e-10, @@ -385,21 +385,21 @@ def test_off(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|status'].values[:-1], [0, 1, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|inactive'].values, - 1 - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|inactive'].values[:-1], + 1 - flow_system.solution['Boiler(Q_th)|status'].values[:-1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__off" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [0, 10, 20, 0, 10], rtol=1e-5, atol=1e-10, @@ -434,28 +434,28 @@ def test_startup_shutdown(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|status'].values[:-1], [0, 1, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|startup'].values, + flow_system.solution['Boiler(Q_th)|startup'].values[:-1], [0, 1, 0, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__switch_on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|shutdown'].values, + flow_system.solution['Boiler(Q_th)|shutdown'].values[:-1], [0, 0, 0, 1, 0], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__switch_on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [0, 10, 20, 0, 10], rtol=1e-5, atol=1e-10, @@ -496,14 +496,14 @@ def test_on_total_max(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|status'].values[:-1], [0, 0, 1, 0, 0], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [0, 0, 20, 0, 0], rtol=1e-5, atol=1e-10, @@ -552,14 +552,14 @@ def test_on_total_bounds(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|status'].values[:-1], [0, 0, 1, 0, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [0, 0, 20, 0, 12 - 1e-5], rtol=1e-5, atol=1e-10, @@ -567,14 +567,14 @@ def test_on_total_bounds(solver_fixture, time_steps_fixture): ) assert_allclose( - sum(flow_system.solution['Boiler_backup(Q_th)|status'].values), + sum(flow_system.solution['Boiler_backup(Q_th)|status'].values[:-1]), 3, rtol=1e-5, atol=1e-10, err_msg='"Boiler_backup__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values, + flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values[:-1], [0, 10, 1.0e-05, 0, 1.0e-05], rtol=1e-5, atol=1e-10, @@ -617,14 +617,14 @@ def test_consecutive_uptime_downtime(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|status'].values, + flow_system.solution['Boiler(Q_th)|status'].values[:-1], [1, 1, 0, 1, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [5, 10, 0, 18, 12], rtol=1e-5, atol=1e-10, @@ -632,7 +632,7 @@ def test_consecutive_uptime_downtime(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values, + flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values[:-1], [0, 0, 20, 0, 0], rtol=1e-5, atol=1e-10, @@ -677,21 +677,21 @@ def test_consecutive_off(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler_backup(Q_th)|status'].values, + flow_system.solution['Boiler_backup(Q_th)|status'].values[:-1], [0, 0, 1, 0, 0], rtol=1e-5, atol=1e-10, err_msg='"Boiler_backup__Q_th__on" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler_backup(Q_th)|inactive'].values, + flow_system.solution['Boiler_backup(Q_th)|inactive'].values[:-1], [1, 1, 0, 1, 1], rtol=1e-5, atol=1e-10, err_msg='"Boiler_backup__Q_th__off" does not have the right value', ) assert_allclose( - flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values, + flow_system.solution['Boiler_backup(Q_th)|flow_rate'].values[:-1], [0, 0, 1e-5, 0, 0], rtol=1e-5, atol=1e-10, @@ -699,7 +699,7 @@ def test_consecutive_off(solver_fixture, time_steps_fixture): ) assert_allclose( - flow_system.solution['Boiler(Q_th)|flow_rate'].values, + flow_system.solution['Boiler(Q_th)|flow_rate'].values[:-1], [5, 0, 20 - 1e-5, 18, 12], rtol=1e-5, atol=1e-10, diff --git a/tests/test_integration.py b/tests/test_integration.py index 92a20841a..d33bb54e8 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -165,17 +165,12 @@ def test_basic_flow_system(self, flow_system_base, highs_solver): [-45.0, -69.71111111, 15.0, -10.0, 36.06697198, -55.0, 20.0, 20.0, 20.0], 'Speicher nettoFlow doesnt match expected value', ) - # charge_state now has len(timesteps) values, with final state in separate variable + # charge_state includes extra timestep for final charge state (len = timesteps + 1) assert_almost_equal_numeric( flow_system_base.solution['Speicher|charge_state'].values, - [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565], + [0.0, 40.5, 100.0, 77.0, 79.84, 37.38582802, 83.89496178, 57.18336484, 32.60869565, 10.0], 'Speicher charge_state doesnt match expected value', ) - assert_almost_equal_numeric( - flow_system_base.solution['Speicher|charge_state|final'].values, - 10.0, - 'Speicher final charge_state doesnt match expected value', - ) assert_almost_equal_numeric( flow_system_base.solution['Speicher|PiecewiseEffects|costs'].values, diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index b669431b9..88d92e91f 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -75,9 +75,8 @@ def test_solution_contains_storage_variables(self, simple_flow_system, highs_sol simple_flow_system.optimize(highs_solver) solution = simple_flow_system.solution - # Check storage charge state + # Check storage charge state (includes extra timestep for final state) assert 'Speicher|charge_state' in solution - assert 'Speicher|charge_state|final' in solution def test_solution_item_returns_scalar(self, simple_flow_system, highs_solver): """Verify .item() returns Python scalar for 0-d arrays.""" From 4e13036f90fb6ce194dfa69ffba4bdd4039438c8 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:59:31 +0100 Subject: [PATCH 41/88] Add new user facing notebooks with better user stories (#515) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add planning doc * Finalize planning * Add plotting acessor * Add plotting acessor * Add tests * Improve * Improve * Update docs * Updated the plotting API so that .data always returns xarray DataArray or Dataset instead of pandas DataFrame. * All .data now returns xr.Dataset consistently. * Fixed Inconsistencies and Unused Parameters * New Plot Accessors results.plot.variable(pattern) Plots the same variable type across multiple elements for easy comparison. # All binary operation states across all components results.plot.variable('on') # All flow_rates, filtered to Boiler-related elements results.plot.variable('flow_rate', include='Boiler') # All storage charge states results.plot.variable('charge_state') # With aggregation results.plot.variable('flow_rate', aggregate='sum') Key features: - Searches all elements for variables matching the pattern - Filter with include/exclude on element names - Supports aggregation, faceting, and animation - Returns Dataset with element names as variables results.plot.duration_curve(variables) Plots load duration curves (sorted time series) showing utilization patterns. # Single variable results.plot.duration_curve('Boiler(Q_th)|flow_rate') # Multiple variables results.plot.duration_curve(['CHP|on', 'Boiler|on']) # Normalized x-axis (0-100%) results.plot.duration_curve('demand', normalize=True) Key features: - Sorts values from highest to lowest - Shows how often each power level is reached - normalize=True shows percentage of time on x-axis - Returns Dataset with duration_hours or duration_pct dimension * Fix duration curve * Fix duration curve * Fix duration curve * Fix duration curve * xr.apply_ufunc to sort along the time axis while preserving all other dimensions automatically * ⏺ The example runs successfully. Now let me summarize the fixes: Summary of Fixes I addressed the actionable code review comments from CodeRabbitAI: 1. Documentation Issue - reshape parameter name ✓ (No fix needed) The CodeRabbitAI comment was incorrect. The public API parameter in PlotAccessor.heatmap() is correctly named reshape (line 335). The reshape_time parameter exists in the lower-level heatmap_with_plotly function, but the documentation correctly shows the public API parameter. 2. Fixed simple_example.py (lines 129-130) Problem: The example called balance() and duration_curve() without required arguments, which would cause TypeError at runtime. Fix: Added the required arguments: - optimization.results.plot.balance('Fernwärme') - specifying the bus to plot - optimization.results.plot.duration_curve('Boiler(Q_th)|flow_rate') - specifying the variable to plot 3. Fixed variable collision in plot_accessors.py (lines 985-988) Problem: When building the Dataset in the variable() method, using element names as keys could cause collisions if multiple variables from the same element matched the pattern (e.g., 'Boiler|flow_rate' and 'Boiler|flow_rate_max' would both map to 'Boiler', with the latter silently overwriting the former). Fix: Changed to use the full variable names as keys instead of just element names: ds = xr.Dataset({var_name: self._results.solution[var_name] for var_name in filtered_vars}) All tests pass (40 passed, 1 skipped) and the example runs successfully. * make variable names public in results * Fix sankey * Fix effects() * Fix effects * Remove bargaps * made faceting consistent across all plot methods: | Method | facet_col | facet_row | |------------------|-------------------------------------------|-----------------------------| | balance() | 'scenario' | 'period' | | heatmap() | 'scenario' | 'period' | | storage() | 'scenario' | 'period' | | flows() | 'scenario' | 'period' | | effects() | 'scenario' | 'period' | | variable() | 'scenario' | 'period' | | duration_curve() | 'scenario' | 'period' (already had this) | | compare() | N/A (uses its own mode='overlay'/'facet') | | | sankey() | N/A (aggregates to single diagram) | | Removed animate_by parameter from all methods * Update storage method * Remove mode parameter for simpli | Method | Default mode | |------------------|---------------------------------------------------| | balance() | stacked_bar | | storage() | stacked_bar (flows) + line (charge state overlay) | | flows() | line | | variable() | line | | duration_curve() | line | | effects() | bar | * Make plotting_accessors.py more self contained * Use faster to_long() * Add 0-dim case * sankey diagram now properly handles scenarios and periods: Changes made: 1. Period aggregation with weights: Uses period_weights from flow_system to properly weight periods by their duration 2. Scenario aggregation with weights: Uses normalized scenario_weights to compute a weighted average across scenarios 3. Selection support: Users can filter specific scenarios/periods via select parameter before aggregation Weighting logic: - Periods (for aggregate='sum'): (da * period_weights).sum(dim='period') - this gives the total energy across all periods weighted by their duration - Periods (for aggregate='mean'): (da * period_weights).sum(dim='period') / period_weights.sum() - weighted mean - Scenarios: Always uses normalized weights (sum to 1) for weighted averaging, since scenarios represent probability-weighted alternatives * Add colors to sankey * Add sizes * Add size filtering * Include storage sizes * Remove storage sizes * Add charge state and status accessor * Summary of Changes 1. Added new methods to PlotAccessor (plot_accessors.py) charge_states() (line 658): - Returns a Dataset with each storage's charge state as a variable - Supports filtering with include/exclude parameters - Default plot: line chart on_states() (line 753): - Returns a Dataset with each component's |status variable - Supports filtering with include/exclude parameters - Default plot: heatmap (good for binary data visualization) 2. Added data building helper functions (plot_accessors.py) build_flow_rates(results) (line 315): - Builds a DataArray containing flow rates for all flows - Used internally by PlotAccessor methods build_flow_hours(results) (line 333): - Builds a DataArray containing flow hours for all flows build_sizes(results) (line 347): - Builds a DataArray containing sizes for all flows _filter_dataarray_by_coord(da, **kwargs) (line 284): - Helper for filtering DataArrays by coordinate values 3. Deprecated old Results methods (results.py) The following methods now emit DeprecationWarning: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 4. Updated PlotAccessor methods to use new helpers - flows() now uses build_flow_rates() / build_flow_hours() directly - sizes() now uses build_sizes() directly - sankey() now uses build_flow_hours() directly This ensures the deprecation warnings only fire when users directly call the old methods, not when using the plot accessor * 1. New methods added to PlotAccessor - charge_states(): Returns Dataset with all storage charge states - on_states(): Returns Dataset with all component status variables (heatmap display) 2. Data building helper functions (plot_accessors.py) - build_flow_rates(results): Builds DataArray of flow rates - build_flow_hours(results): Builds DataArray of flow hours - build_sizes(results): Builds DataArray of sizes - _filter_dataarray_by_coord(da, **kwargs): Filter helper - _assign_flow_coords(da, results): Add flow coordinates 3. Caching in PlotAccessor Added lazy-cached properties for expensive computations: - _all_flow_rates - cached DataArray of all flow rates - _all_flow_hours - cached DataArray of all flow hours - _all_sizes - cached DataArray of all sizes - _all_charge_states - cached Dataset of all storage charge states - _all_status_vars - cached Dataset of all status variables 4. Deprecated methods in Results class Added deprecation warnings to: - results.flow_rates() → Use results.plot.flows(plot=False).data - results.flow_hours() → Use results.plot.flows(unit='flow_hours', plot=False).data - results.sizes() → Use results.plot.sizes(plot=False).data 5. Updated PlotAccessor methods to use cached properties - flows() uses _all_flow_rates / _all_flow_hours - sankey() uses _all_flow_hours - sizes() uses _all_sizes - charge_states() uses _all_charge_states - on_states() uses _all_status_vars * Move deprectated functionality into results.py instead of porting to the new module * Revert to simply deprectae old methods without forwarding to new code * Remove planning file * Update plotting methods for new datasets * 1. Renamed data properties in PlotAccessor to use all_ prefix: - all_flow_rates - All flow rates as Dataset - all_flow_hours - All flow hours as Dataset - all_sizes - All flow sizes as Dataset - all_charge_states - All storage charge states as Dataset - all_on_states - All component on/off status as Dataset 2. Updated internal references - All usages in flows(), sankey(), sizes(), charge_states(), and on_states() methods now use the new names. 3. Updated deprecation messages in results.py to point to the new API: - results.flow_rates() → results.plot.all_flow_rates - results.flow_hours() → results.plot.all_flow_hours - results.sizes() → results.plot.all_sizes 4. Updated docstring examples in PlotAccessor to use the new all_* names. * Update deprecations messages * Update deprecations messages * Thsi seems much better. * Updaet docstrings and variable name generation in plotting acessor * Change __ to _ in private dataset caching * Revert breaking io changes * New solution storing interface * Add new focused statistics and plot accessors * Renamed all properties: - all_flow_rates → flow_rates - all_flow_hours → flow_hours - all_sizes → sizes - all_charge_states → charge_states * Cache Statistics * Invalidate caches * Add effect related statistics * Simplify statistics accessor to rely on flow_system directly instead of solution attrs * Fix heatma fallback for 1D Data * Add topology accessor * All deprecation warnings in the codebase now consistently use the format will be removed in v{DEPRECATION_REMOVAL_VERSION}. * Update tests * created comprehensive documentation for all FlowSystem accessors * Update results documentation * Update results documentation * Update effect statistics * Update effect statistics * Update effect statistics * Add mkdocs plotly plugin * Add section about custom constraints * documentation updates: docs/user-guide/results/index.md: - Updated table to replace effects_per_component with temporal_effects, periodic_effects, total_effects, and effect_share_factors - Fixed flow_hours['Boiler(Q_th)|flow_rate'] → flow_hours['Boiler(Q_th)'] - Fixed sizes['Boiler(Q_th)|size'] → sizes['Boiler(Q_th)'] - Replaced effects_per_component example with new effect properties and groupby examples - Updated complete example to use total_effects docs/user-guide/results-plotting.md: - Fixed colors example from 'Boiler(Q_th)|flow_rate' → 'Boiler(Q_th)' - Fixed duration_curve examples to use clean labels docs/user-guide/migration-guide-v6.md: - Added new "Statistics Accessor" section explaining the clean labels and new effect properties * implemented the effects() method in StatisticsPlotAccessor at flixopt/statistics_accessor.py:1132-1258. Summary of what was done: 1. Implemented effects() method in StatisticsPlotAccessor class that was missing but documented - Takes aspect parameter: 'total', 'temporal', or 'periodic' - Takes effect parameter to filter to a specific effect (e.g., 'costs', 'CO2') - Takes by parameter: 'component' or 'time' for grouping - Supports all standard plotting parameters: select, colors, facet_col, facet_row, show - Returns PlotResult with both data and figure 2. Verified the implementation works with all parameter combinations: - Default call: flow_system.statistics.plot.effects() - Specific effect: flow_system.statistics.plot.effects(effect='costs') - Temporal aspect: flow_system.statistics.plot.effects(aspect='temporal') - Temporal by time: flow_system.statistics.plot.effects(aspect='temporal', by='time') - Periodic aspect: flow_system.statistics.plot.effects(aspect='periodic') * Remove intermediate plot accessor * 1. pyproject.toml: Removed duplicate mkdocs-plotly-plugin>=0.1.3 entry (kept the exact pin ==0.1.3) 2. flixopt/plotting.py: Fixed dimension name consistency by using squeezed_data.name instead of data.name in the fallback heatmap logic 3. flixopt/statistics_accessor.py: - Fixed _dataset_to_long_df() to only use coordinates that are actually present as columns after reset_index() - Fixed the nested loop inefficiency with include_flows by pre-computing the flows list outside the loop - (Previously fixed) Fixed asymmetric NaN handling in validation check * _create_effects_dataset method in statistics_accessor.py was simplified: 1. Detect contributors from solution data variables instead of assuming they're only flows - Uses regex pattern to find {contributor}->{effect}(temporal|periodic) variables - Contributors can be flows OR components (e.g., components with effects_per_active_hour) 2. Exclude effect-to-effect shares - Filters out contributors whose base name matches any effect label - For example, costs(temporal) is excluded because costs is an effect label - These intermediate shares are already included in the computation 3. Removed the unused _compute_effect_total method - The new simplified implementation directly looks up shares from the solution - Uses effect_share_factors for conversion between effects 4. Key insight from user: The solution already contains properly computed share values including all effect-to-effect conversions. The computation uses conversion factors because derived effects (like Effect1 which shares 0.5 from costs) don't have direct {flow}->Effect1(temporal) variables - only the source effect shares exist ({flow}->costs(temporal)). * Update docs * Improve to_netcdf method * Update examples * Fix IIS computaion flag * Fix examples * Fix faceting in heatmap and use period as facet col everywhere * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * Add color accessor * Ensure io * Add carrier class * implemented Carrier as a proper Interface subclass with container support. Here's what was done: 1. Carrier class (flixopt/carrier.py) - Now inherits from Interface for serialization capabilities - Has transform_data() method (no-op since carriers have no time-series data) - Has label property for container keying - Maintains equality comparison with both Carrier objects and strings 2. CarrierContainer class (flixopt/carrier.py) - Inherits from ContainerMixin['Carrier'] - Provides dict-like access with nice repr and error messages - Uses carrier.name for keying 3. FlowSystem updates (flixopt/flow_system.py) - _carriers is now a CarrierContainer instead of a plain dict - carriers property returns the CarrierContainer - add_carrier() uses the container's add() method - Serialization updated to include carriers in to_dataset() and restore them in from_dataset() 4. Exports (flixopt/__init__.py) - Both Carrier and CarrierContainer are now exported * Inline plotting methods to deprecate plotting.py (#508) * Inline plotting methods to deprecate plotting.py * Fix test * Simplify Color Management * ColorType is now defined in color_processing.py and imported into statistics_accessor.py. * Fix ColorType typing * statistics_accessor.py - Heatmap colors type safety (lines 121-148, 820-853) - Changed _heatmap_figure() parameter type from colors: ColorType = None to colors: str | list[str] | None = None - Changed heatmap() method parameter type similarly - Updated docstrings to clarify that dicts are not supported for heatmaps since px.imshow's color_continuous_scale only accepts colorscale names or lists 2. statistics_accessor.py - Use configured qualitative colorscale (lines 284, 315) - Updated _create_stacked_bar() to use CONFIG.Plotting.default_qualitative_colorscale as the default colorscale - Updated _create_line() similarly - This ensures user-configured CONFIG.Plotting.default_qualitative_colorscale affects all bar/line plots consistently 3. topology_accessor.py - Path type alignment (lines 219-222) - Added normalization of path=False to None before calling _plot_network() - This resolves the type mismatch where TopologyAccessor.plot() accepts bool | str | Path but _plot_network() only accepts str | Path | None * fix usage if index name in aggregation plot * Add to docs * Improve carrier colors and defaults * Update default carriers and colors * Update config * Update config * Move default carriers to config.py * Change default carrier handling * Add color handling * Rmeove meta_data color handling * Add carrierst to examples * Improve plotting acessor * Improve _resolve_variable_names * Improve _resolve_variable_names * Simplify coloring and remove color accessor * Add connected_and_transformed handling * Improve error message in container * Methods moved to TransformAccessor (transform_accessor.py): - sel() - select by label - isel() - select by integer index - resample() - resample time dimension - Helper methods: _dataset_sel, _dataset_isel, _dataset_resample, _resample_by_dimension_groups 2. Solution is dropped: All transform methods return a new FlowSystem with no solution - the user must re-optimize the transformed system. 3. Deprecation warnings: The old flow_system.sel(), flow_system.isel(), and flow_system.resample() methods now emit deprecation warnings and forward to the new TransformAccessor methods. 4. Backward compatible: Existing code still works, just with deprecation warnings. * Documentation updated * Re-add _dataset_sel and other helper methods for proper deprectation. ALso fix new methods to be classmethods * BUGFIX: Carrier from dataset * Update docs * Add notebook examples instead of raw py files for docs * Execute on docs buildt * Add notebooks and new config util andmore notebook related stuff * Fix notebooks * Fix notebooks and config.py * docstring typo * Update notebooks * Add fix_sizes method and use in two stage optimization notebook * Change notebook config * Dont get size as float in fix sizes! * Update notebook * fix: fix_sizes() to handle var names properly * Add imbalance penalty to prevent infeasibility in Fernwärme Bus * Remove putputs from all notbeooks for git * Update the two stage notebook * Update notebooks with user stories * Add new index to docs * Update notebooks to use plotly instead of matplotlib * fix: Use plotly express * fix: Use plotly express * fix: Use plotly express * Adjust plots * Bugfix: Add _update_scenario_metadata method * fix: _update_scenario_metadata method * Get all notebooks running * Improve notebooks for more interesting results * Fix conversion factor * Fix conversion factor * Update notebooks and bugfix sankey * Add charge state and storages plots * improve charge state plot * Add Piecewise plots and improve Notebooks (#519) * Build notebooks in parralel in CI * Revert "Build notebooks in parralel in CI" This reverts commit 0f1153cd358fadfcf1fc705008a1a27cf1c0107d. * Fix dependencies in docs workflow * Use extra css * Use extra css * Use extra css * Use extra css * Fix notebook * Add new statistics for sizes, flow_sizes and storage_sizes * Fixed broken links in docs * Fix mkdocs buildt noebooks on build * Remove old example notebooks and rename folder to notebooks * Add .storages property to FlowSystem * fix broken links in docs * Imrpove data extraction * Imrpove data extraction * Remove examples and test_examples.py --- .github/workflows/docs.yaml | 2 +- .pre-commit-config.yaml | 6 + docs/examples/00-Minimal Example.md | 5 - docs/examples/01-Basic Example.md | 5 - docs/examples/02-Complex Example.md | 10 - docs/examples/03-Optimization Modes.md | 5 - docs/examples/04-Scenarios.md | 5 - docs/examples/05-Two-stage-optimization.md | 5 - docs/examples/index.md | 14 - docs/home/installation.md | 2 +- docs/home/quick-start.md | 2 +- docs/index.md | 4 +- docs/notebooks/01-quickstart.ipynb | 293 + docs/notebooks/02-heat-system.ipynb | 413 + .../03-investment-optimization.ipynb | 478 + .../04-operational-constraints.ipynb | 458 + docs/notebooks/05-multi-carrier-system.ipynb | 560 + docs/notebooks/06-piecewise-efficiency.ipynb | 646 + docs/notebooks/07-scenarios-and-periods.ipynb | 564 + .../08-large-scale-optimization.ipynb | 538 + docs/notebooks/index.md | 44 + docs/overrides/main.html | 11 + docs/stylesheets/extra.css | 162 + docs/user-guide/building-models/index.md | 2 +- docs/user-guide/core-concepts.md | 2 +- docs/user-guide/index.md | 4 +- docs/user-guide/optimization/index.md | 2 +- docs/user-guide/results-plotting.md | 2 +- docs/user-guide/results/index.md | 2 +- docs/user-guide/support.md | 2 +- examples/00_Minmal/minimal_example.py | 36 - examples/01_Simple/simple_example.py | 126 - examples/02_Complex/complex_example.py | 207 - .../02_Complex/complex_example_results.py | 38 - .../example_optimization_modes.py | 245 - examples/04_Scenarios/scenario_example.py | 214 - .../two_stage_optimization.py | 186 - examples/resources/Zeitreihen2020.csv | 35137 ---------------- flixopt/config.py | 38 + flixopt/flow_system.py | 37 +- flixopt/interface.py | 164 + flixopt/statistics_accessor.py | 224 +- flixopt/transform_accessor.py | 125 + mkdocs.yml | 30 +- pyproject.toml | 2 + tests/deprecated/test_examples.py | 94 - tests/test_examples.py | 94 - tests/test_solution_and_plotting.py | 8 +- 48 files changed, 4794 insertions(+), 36459 deletions(-) delete mode 100644 docs/examples/00-Minimal Example.md delete mode 100644 docs/examples/01-Basic Example.md delete mode 100644 docs/examples/02-Complex Example.md delete mode 100644 docs/examples/03-Optimization Modes.md delete mode 100644 docs/examples/04-Scenarios.md delete mode 100644 docs/examples/05-Two-stage-optimization.md delete mode 100644 docs/examples/index.md create mode 100644 docs/notebooks/01-quickstart.ipynb create mode 100644 docs/notebooks/02-heat-system.ipynb create mode 100644 docs/notebooks/03-investment-optimization.ipynb create mode 100644 docs/notebooks/04-operational-constraints.ipynb create mode 100644 docs/notebooks/05-multi-carrier-system.ipynb create mode 100644 docs/notebooks/06-piecewise-efficiency.ipynb create mode 100644 docs/notebooks/07-scenarios-and-periods.ipynb create mode 100644 docs/notebooks/08-large-scale-optimization.ipynb create mode 100644 docs/notebooks/index.md create mode 100644 docs/overrides/main.html delete mode 100644 examples/00_Minmal/minimal_example.py delete mode 100644 examples/01_Simple/simple_example.py delete mode 100644 examples/02_Complex/complex_example.py delete mode 100644 examples/02_Complex/complex_example_results.py delete mode 100644 examples/03_Optimization_modes/example_optimization_modes.py delete mode 100644 examples/04_Scenarios/scenario_example.py delete mode 100644 examples/05_Two-stage-optimization/two_stage_optimization.py delete mode 100644 examples/resources/Zeitreihen2020.csv delete mode 100644 tests/deprecated/test_examples.py delete mode 100644 tests/test_examples.py diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 4424d5122..762062604 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -55,7 +55,7 @@ jobs: python scripts/format_changelog.py - name: Install dependencies - run: uv pip install --system ".[docs]" + run: uv pip install --system ".[docs,full]" - name: Build docs run: mkdocs build --strict diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e39033067..76c32d069 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,3 +14,9 @@ repos: - id: ruff-check args: [ --fix ] - id: ruff-format + + - repo: https://github.com/kynan/nbstripout + rev: 0.8.1 + hooks: + - id: nbstripout + files: ^docs/examples.*\.ipynb$ diff --git a/docs/examples/00-Minimal Example.md b/docs/examples/00-Minimal Example.md deleted file mode 100644 index a568cd9c9..000000000 --- a/docs/examples/00-Minimal Example.md +++ /dev/null @@ -1,5 +0,0 @@ -# Minimal Example - -```python -{! ../examples/00_Minmal/minimal_example.py !} -``` diff --git a/docs/examples/01-Basic Example.md b/docs/examples/01-Basic Example.md deleted file mode 100644 index 6c6bfbee3..000000000 --- a/docs/examples/01-Basic Example.md +++ /dev/null @@ -1,5 +0,0 @@ -# Simple example - -```python -{! ../examples/01_Simple/simple_example.py !} -``` diff --git a/docs/examples/02-Complex Example.md b/docs/examples/02-Complex Example.md deleted file mode 100644 index 48868cdb0..000000000 --- a/docs/examples/02-Complex Example.md +++ /dev/null @@ -1,10 +0,0 @@ -# Complex example -This saves the results of a calculation to file and reloads them to analyze the results -## Build the Model -```python -{! ../examples/02_Complex/complex_example.py !} -``` -## Load the Results from file -```python -{! ../examples/02_Complex/complex_example_results.py !} -``` diff --git a/docs/examples/03-Optimization Modes.md b/docs/examples/03-Optimization Modes.md deleted file mode 100644 index 880366906..000000000 --- a/docs/examples/03-Optimization Modes.md +++ /dev/null @@ -1,5 +0,0 @@ -# Optimization Modes Comparison -**Note:** This example relies on time series data. You can find it in the `examples` folder of the FlixOpt repository. -```python -{! ../examples/03_Optimization_modes/example_optimization_modes.py !} -``` diff --git a/docs/examples/04-Scenarios.md b/docs/examples/04-Scenarios.md deleted file mode 100644 index b528bb6f3..000000000 --- a/docs/examples/04-Scenarios.md +++ /dev/null @@ -1,5 +0,0 @@ -# Scenario example - -```python -{! ../examples/04_Scenarios/scenario_example.py !} -``` diff --git a/docs/examples/05-Two-stage-optimization.md b/docs/examples/05-Two-stage-optimization.md deleted file mode 100644 index 5cb94e325..000000000 --- a/docs/examples/05-Two-stage-optimization.md +++ /dev/null @@ -1,5 +0,0 @@ -# Two-stage optimization - -```python -{! ../examples/05_Two-stage-optimization/two_stage_optimization.py !} -``` diff --git a/docs/examples/index.md b/docs/examples/index.md deleted file mode 100644 index b5534b8e3..000000000 --- a/docs/examples/index.md +++ /dev/null @@ -1,14 +0,0 @@ -# Examples - -Here you can find a collection of examples that demonstrate how to use FlixOpt. - -We work on improving this gallery. If you have something to share, please contact us! - -## Available Examples - -1. [Minimal Example](00-Minimal Example.md) - The simplest possible FlixOpt model -2. [Simple Example](01-Basic Example.md) - A basic example with more features -3. [Complex Example](02-Complex Example.md) - A comprehensive example with result saving and loading -4. [Optimization Modes](03-Optimization Modes.md) - Comparison of different optimization modes -5. [Scenarios](04-Scenarios.md) - Working with scenarios in FlixOpt -6. [Two-stage Optimization](05-Two-stage-optimization.md) - Two-stage optimization approach diff --git a/docs/home/installation.md b/docs/home/installation.md index afb24172b..d61022074 100644 --- a/docs/home/installation.md +++ b/docs/home/installation.md @@ -87,5 +87,5 @@ For more details on logging configuration, see the [`CONFIG.Logging`][flixopt.co ## Next Steps - Follow the [Quick Start](quick-start.md) guide -- Explore the [Minimal Example](../examples/00-Minimal Example.md) +- Explore the [Minimal Example](../notebooks/01-quickstart.ipynb) - Read about [Core Concepts](../user-guide/core-concepts.md) diff --git a/docs/home/quick-start.md b/docs/home/quick-start.md index d95e53c90..7bbc88172 100644 --- a/docs/home/quick-start.md +++ b/docs/home/quick-start.md @@ -130,7 +130,7 @@ loaded_fs = fx.FlowSystem.from_netcdf('results/solar_battery.nc') Now that you've created your first model, you can: - **Learn the concepts** - Read the [Core Concepts](../user-guide/core-concepts.md) guide -- **Explore examples** - Check out more [Examples](../examples/index.md) +- **Explore examples** - Check out more [Examples](../notebooks/index.md) - **Deep dive** - Study the [Mathematical Formulation](../user-guide/mathematical-notation/index.md) - **Build complex models** - Use [Recipes](../user-guide/recipes/index.md) for common patterns diff --git a/docs/index.md b/docs/index.md index 70fd15bf4..f8509e24c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,7 +14,7 @@ title: Home

🚀 Get Started - 💡 View Examples + 💡 View Examples ⭐ GitHub

@@ -30,7 +30,7 @@ title: Home New to FlixOpt? Start here with installation and your first model -- :bulb: **[Examples Gallery](examples/)** +- :bulb: **[Examples Gallery](notebooks/)** --- diff --git a/docs/notebooks/01-quickstart.ipynb b/docs/notebooks/01-quickstart.ipynb new file mode 100644 index 000000000..c7178c750 --- /dev/null +++ b/docs/notebooks/01-quickstart.ipynb @@ -0,0 +1,293 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Quickstart: Heating a Small Workshop\n", + "\n", + "## User Story\n", + "\n", + "> *You manage a small workshop that needs heating. You have a gas boiler and want to find the optimal operation schedule to minimize heating costs over the next few hours.*\n", + "\n", + "This notebook introduces the **core concepts** of flixopt:\n", + "\n", + "- **FlowSystem**: The container for your energy system model\n", + "- **Bus**: Balance nodes where energy flows meet\n", + "- **Effect**: Quantities to track and optimize (costs, emissions)\n", + "- **Components**: Equipment like boilers, sources, and sinks\n", + "- **Flow**: Connections between components and buses" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## Define the Time Horizon\n", + "\n", + "Every optimization needs a time horizon. Here we model a simple 4-hour period:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "timesteps = pd.date_range('2024-01-15 08:00', periods=4, freq='h')\n", + "print(f'Optimizing from {timesteps[0]} to {timesteps[-1]}')" + ] + }, + { + "cell_type": "markdown", + "id": "5", + "metadata": {}, + "source": [ + "## Define the Heat Demand\n", + "\n", + "The workshop has varying heat demand throughout the morning:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "# Heat demand in kW for each hour - using xarray\n", + "heat_demand = xr.DataArray(\n", + " [30, 50, 45, 25],\n", + " dims=['time'],\n", + " coords={'time': timesteps},\n", + " name='Heat Demand [kW]',\n", + ")\n", + "\n", + "# Visualize the demand with plotly\n", + "fig = px.bar(x=heat_demand.time.values, y=heat_demand.values, labels={'x': 'Time', 'y': 'Heat Demand [kW]'})\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## Build the Energy System Model\n", + "\n", + "Now we create the FlowSystem and add all components:\n", + "\n", + "```\n", + " Gas Supply ──► [Gas Bus] ──► Boiler ──► [Heat Bus] ──► Workshop\n", + " € η=90% Demand\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "# Create the FlowSystem container\n", + "flow_system = fx.FlowSystem(timesteps)\n", + "\n", + "flow_system.add_elements(\n", + " # === Buses: Balance nodes for energy carriers ===\n", + " fx.Bus('Gas'), # Natural gas network connection\n", + " fx.Bus('Heat'), # Heat distribution within workshop\n", + " # === Effect: What we want to minimize ===\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " # === Gas Supply: Unlimited gas at 0.08 €/kWh ===\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.08)],\n", + " ),\n", + " # === Boiler: Converts gas to heat at 90% efficiency ===\n", + " fx.linear_converters.Boiler(\n", + " 'Boiler',\n", + " thermal_efficiency=0.9,\n", + " thermal_flow=fx.Flow('Heat', bus='Heat', size=100), # 100 kW capacity\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " # === Workshop: Heat demand that must be met ===\n", + " fx.Sink(\n", + " 'Workshop',\n", + " inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand.values)],\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Run the Optimization\n", + "\n", + "Now we solve the model using the HiGHS solver (open-source, included with flixopt):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.optimize(fx.solvers.HighsSolver());" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "## Analyze Results\n", + "\n", + "### Heat Balance\n", + "\n", + "The `statistics.plot.balance()` method shows how each bus is balanced:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "### Total Costs\n", + "\n", + "Access the optimized objective value:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "total_costs = flow_system.solution['costs'].item()\n", + "total_heat = float(heat_demand.sum())\n", + "gas_consumed = total_heat / 0.9 # Account for boiler efficiency\n", + "\n", + "print(f'Total heat demand: {total_heat:.1f} kWh')\n", + "print(f'Gas consumed: {gas_consumed:.1f} kWh')\n", + "print(f'Total costs: {total_costs:.2f} €')\n", + "print(f'Average cost: {total_costs / total_heat:.3f} €/kWh_heat')" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "### Flow Rates Over Time\n", + "\n", + "Visualize all flow rates using the built-in plotting accessor:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot all flow rates\n", + "flow_system.statistics.plot.flows()" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "### Energy Flow Sankey\n", + "\n", + "A Sankey diagram visualizes the total energy flows through the system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "In this quickstart, you learned the **basic workflow**:\n", + "\n", + "1. **Create** a `FlowSystem` with timesteps\n", + "2. **Add** buses, effects, and components\n", + "3. **Optimize** with `flow_system.optimize(solver)`\n", + "4. **Analyze** results via `flow_system.statistics`\n", + "\n", + "### Next Steps\n", + "\n", + "- **[02-heat-system](02-heat-system.ipynb)**: Add thermal storage to shift loads\n", + "- **[03-investment-optimization](03-investment-optimization.ipynb)**: Optimize equipment sizing" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/02-heat-system.ipynb b/docs/notebooks/02-heat-system.ipynb new file mode 100644 index 000000000..933366e25 --- /dev/null +++ b/docs/notebooks/02-heat-system.ipynb @@ -0,0 +1,413 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# District Heating System with Thermal Storage\n", + "\n", + "## User Story\n", + "\n", + "> *You operate a small district heating network serving an office building. The system has a gas boiler and a thermal storage tank. Electricity prices vary throughout the day, and you want to optimize when to charge/discharge the storage to minimize costs.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **Storage**: Thermal buffer tanks with charging/discharging\n", + "- **Time series data**: Using real demand profiles\n", + "- **Multiple components**: Combining boiler, storage, and loads\n", + "- **Result visualization**: Heatmaps, balance plots, and charge states" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## Define Time Horizon and Demand\n", + "\n", + "We model one week with hourly resolution. The office has typical weekday patterns:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "# One week, hourly resolution\n", + "timesteps = pd.date_range('2024-01-15', periods=168, freq='h')\n", + "\n", + "# Create realistic office heat demand pattern\n", + "hours = np.arange(168)\n", + "hour_of_day = hours % 24\n", + "day_of_week = (hours // 24) % 7\n", + "\n", + "# Base demand pattern (kW)\n", + "base_demand = np.where(\n", + " (hour_of_day >= 7) & (hour_of_day <= 18), # Office hours\n", + " 80, # Daytime\n", + " 30, # Night setback\n", + ")\n", + "\n", + "# Reduce on weekends (days 5, 6)\n", + "weekend_factor = np.where(day_of_week >= 5, 0.5, 1.0)\n", + "heat_demand = base_demand * weekend_factor\n", + "\n", + "# Add some random variation\n", + "np.random.seed(42)\n", + "heat_demand = heat_demand + np.random.normal(0, 5, len(heat_demand))\n", + "heat_demand = np.clip(heat_demand, 20, 100)\n", + "\n", + "print(f'Time range: {timesteps[0]} to {timesteps[-1]}')\n", + "print(f'Peak demand: {heat_demand.max():.1f} kW')\n", + "print(f'Total demand: {heat_demand.sum():.0f} kWh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize the demand pattern with plotly\n", + "demand_series = xr.DataArray(heat_demand, dims=['time'], coords={'time': timesteps}, name='Heat Demand [kW]')\n", + "fig = px.line(\n", + " x=demand_series.time.values,\n", + " y=demand_series.values,\n", + " title='Office Heat Demand Profile',\n", + " labels={'x': 'Time', 'y': 'kW'},\n", + ")\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "## Define Gas Prices\n", + "\n", + "Gas prices vary with time-of-use tariffs:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "# Time-of-use gas prices (€/kWh)\n", + "gas_price = np.where(\n", + " (hour_of_day >= 6) & (hour_of_day <= 22),\n", + " 0.08, # Peak: 6am-10pm\n", + " 0.05, # Off-peak: 10pm-6am\n", + ")\n", + "\n", + "fig = px.line(x=timesteps, y=gas_price, title='Gas Price [€/kWh]', labels={'x': 'Time', 'y': '€/kWh'})\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## Build the Energy System\n", + "\n", + "The system includes:\n", + "- Gas boiler (150 kW thermal capacity)\n", + "- Thermal storage tank (500 kWh capacity)\n", + "- Office building heat demand\n", + "\n", + "```\n", + "Gas Grid ──► [Gas] ──► Boiler ──► [Heat] ◄──► Storage\n", + " │\n", + " ▼\n", + " Office\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system = fx.FlowSystem(timesteps)\n", + "\n", + "flow_system.add_elements(\n", + " # === Buses ===\n", + " fx.Bus('Gas'),\n", + " fx.Bus('Heat'),\n", + " # === Effect ===\n", + " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " # === Gas Supply with time-varying price ===\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[fx.Flow('Gas', bus='Gas', size=500, effects_per_flow_hour=gas_price)],\n", + " ),\n", + " # === Gas Boiler: 150 kW, 92% efficiency ===\n", + " fx.linear_converters.Boiler(\n", + " 'Boiler',\n", + " thermal_efficiency=0.92,\n", + " thermal_flow=fx.Flow('Heat', bus='Heat', size=150),\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " # === Thermal Storage: 500 kWh tank ===\n", + " fx.Storage(\n", + " 'ThermalStorage',\n", + " capacity_in_flow_hours=500, # 500 kWh capacity\n", + " initial_charge_state=250, # Start half-full\n", + " minimal_final_charge_state=200, # End with at least 200 kWh\n", + " eta_charge=0.98, # 98% charging efficiency\n", + " eta_discharge=0.98, # 98% discharging efficiency\n", + " relative_loss_per_hour=0.005, # 0.5% heat loss per hour\n", + " charging=fx.Flow('Charge', bus='Heat', size=100), # Max 100 kW charging\n", + " discharging=fx.Flow('Discharge', bus='Heat', size=100), # Max 100 kW discharging\n", + " ),\n", + " # === Office Heat Demand ===\n", + " fx.Sink(\n", + " 'Office',\n", + " inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand)],\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "## Run Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0.01));" + ] + }, + { + "cell_type": "markdown", + "id": "12", + "metadata": {}, + "source": [ + "## Analyze Results\n", + "\n", + "### Heat Balance\n", + "\n", + "See how the boiler and storage work together to meet demand:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [ + "### Storage Charge State\n", + "\n", + "Track how the storage level varies over time:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('ThermalStorage')" + ] + }, + { + "cell_type": "markdown", + "id": "16", + "metadata": {}, + "source": [ + "### Heatmap Visualization\n", + "\n", + "Heatmaps show patterns across hours and days:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.heatmap('Boiler(Heat)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.heatmap('ThermalStorage')" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "### Cost Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "total_costs = flow_system.solution['costs'].item()\n", + "total_heat = heat_demand.sum()\n", + "\n", + "print(f'Total operating costs: {total_costs:.2f} €')\n", + "print(f'Total heat delivered: {total_heat:.0f} kWh')\n", + "print(f'Average cost: {total_costs / total_heat * 100:.2f} ct/kWh')" + ] + }, + { + "cell_type": "markdown", + "id": "21", + "metadata": {}, + "source": [ + "### Flow Rates and Charge States\n", + "\n", + "Visualize all flow rates and storage charge states:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot all flow rates\n", + "flow_system.statistics.plot.flows()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot storage charge states\n", + "flow_system.statistics.plot.storage('ThermalStorage')" + ] + }, + { + "cell_type": "markdown", + "id": "24", + "metadata": {}, + "source": [ + "### Energy Flow Sankey\n", + "\n", + "A Sankey diagram visualizes the total energy flows through the system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "## Key Insights\n", + "\n", + "The optimization reveals how storage enables **load shifting**:\n", + "\n", + "1. **Charge during off-peak**: When gas is cheap (night), the boiler runs at higher output to charge the storage\n", + "2. **Discharge during peak**: During expensive periods, storage supplements the boiler\n", + "3. **Weekend patterns**: Lower demand allows more storage cycling\n", + "\n", + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Add **Storage** components with efficiency and losses\n", + "- Use **time-varying prices** in effects\n", + "- Visualize results with **heatmaps** and **balance plots**\n", + "- Access raw data via **statistics.flow_rates** and **statistics.charge_states**\n", + "\n", + "### Next Steps\n", + "\n", + "- **[03-investment-optimization](03-investment-optimization.ipynb)**: Optimize storage size\n", + "- **[04-operational-constraints](04-operational-constraints.ipynb)**: Add startup costs and minimum run times" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/03-investment-optimization.ipynb b/docs/notebooks/03-investment-optimization.ipynb new file mode 100644 index 000000000..c20d77f0a --- /dev/null +++ b/docs/notebooks/03-investment-optimization.ipynb @@ -0,0 +1,478 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Investment Optimization: Sizing a Solar Heating System\n", + "\n", + "## User Story\n", + "\n", + "> *You're designing a solar thermal system for a swimming pool. You need to decide: How large should the solar collectors be? How big should the buffer tank be? The goal is to minimize total costs (investment + operation) over the planning horizon.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **InvestParameters**: Define investment decisions with size bounds and costs\n", + "- **Investment costs**: Fixed costs and size-dependent costs\n", + "- **Optimal sizing**: Let the optimizer find the best equipment sizes\n", + "- **Trade-off analysis**: Balance investment vs. operating costs" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## System Description\n", + "\n", + "The swimming pool heating system:\n", + "\n", + "- **Solar collectors**: Convert solar radiation to heat (size to be optimized)\n", + "- **Gas boiler**: Backup heating when solar is insufficient (existing, 200 kW)\n", + "- **Buffer tank**: Store excess solar heat (size to be optimized)\n", + "- **Pool**: Constant heat demand of 150 kW during operating hours\n", + "\n", + "```\n", + " ☀️ Solar ──► [Heat] ◄── Boiler ◄── [Gas]\n", + " │\n", + " ▼\n", + " Buffer Tank\n", + " │\n", + " ▼\n", + " Pool 🏊\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Define Time Horizon and Profiles\n", + "\n", + "We model one representative summer week:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# One week in summer, hourly\n", + "timesteps = pd.date_range('2024-07-15', periods=168, freq='h')\n", + "hours = np.arange(168)\n", + "hour_of_day = hours % 24\n", + "\n", + "# Solar radiation profile (kW/m² equivalent, simplified)\n", + "# Peak around noon, zero at night\n", + "solar_profile = np.maximum(0, np.sin((hour_of_day - 6) * np.pi / 12)) * 0.8\n", + "solar_profile = np.where((hour_of_day >= 6) & (hour_of_day <= 20), solar_profile, 0)\n", + "\n", + "# Add some cloud variation\n", + "np.random.seed(42)\n", + "cloud_factor = np.random.uniform(0.6, 1.0, len(timesteps))\n", + "solar_profile = solar_profile * cloud_factor\n", + "\n", + "# Pool operates 8am-10pm, constant demand when open\n", + "pool_demand = np.where((hour_of_day >= 8) & (hour_of_day <= 22), 150, 50) # kW\n", + "\n", + "print(f'Peak solar: {solar_profile.max():.2f} kW/kW_installed')\n", + "print(f'Pool demand: {pool_demand.max():.0f} kW (open), {pool_demand.min():.0f} kW (closed)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize profiles with plotly - using xarray and faceting\n", + "profiles = xr.Dataset(\n", + " {\n", + " 'Solar Profile [kW/kW]': xr.DataArray(solar_profile, dims=['time'], coords={'time': timesteps}),\n", + " 'Pool Demand [kW]': xr.DataArray(pool_demand, dims=['time'], coords={'time': timesteps}),\n", + " }\n", + ")\n", + "\n", + "# Convert to long format for faceting\n", + "df = profiles.to_dataframe().reset_index().melt(id_vars='time', var_name='variable', value_name='value')\n", + "fig = px.line(df, x='time', y='value', facet_col='variable', height=300)\n", + "fig.update_yaxes(matches=None, showticklabels=True)\n", + "fig.for_each_annotation(lambda a: a.update(text=a.text.split('=')[-1]))\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## Define Costs\n", + "\n", + "Investment costs are **annualized** (€/year) to compare with operating costs:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "# Cost parameters\n", + "GAS_PRICE = 0.12 # €/kWh - high gas price makes solar attractive\n", + "\n", + "# Solar collectors: 400 €/kW installed, 20-year lifetime → ~25 €/kW/year annualized\n", + "# (simplified, real calculation would include interest rate)\n", + "SOLAR_COST_PER_KW = 20 # €/kW/year\n", + "\n", + "# Buffer tank: 50 €/kWh capacity, 30-year lifetime → ~2 €/kWh/year\n", + "TANK_COST_PER_KWH = 1.5 # €/kWh/year\n", + "\n", + "# Scale factor: We model 1 week, but costs are annual\n", + "# So we scale investment costs to weekly equivalent\n", + "WEEKS_PER_YEAR = 52\n", + "SOLAR_COST_WEEKLY = SOLAR_COST_PER_KW / WEEKS_PER_YEAR\n", + "TANK_COST_WEEKLY = TANK_COST_PER_KWH / WEEKS_PER_YEAR\n", + "\n", + "print(f'Solar cost: {SOLAR_COST_WEEKLY:.3f} €/kW/week')\n", + "print(f'Tank cost: {TANK_COST_WEEKLY:.4f} €/kWh/week')" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Build the System with Investment Options\n", + "\n", + "Use `InvestParameters` to define which sizes should be optimized:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system = fx.FlowSystem(timesteps)\n", + "\n", + "flow_system.add_elements(\n", + " # === Buses ===\n", + " fx.Bus('Heat'),\n", + " fx.Bus('Gas'),\n", + " # === Effects ===\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " # === Gas Supply ===\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[fx.Flow('Gas', bus='Gas', size=500, effects_per_flow_hour=GAS_PRICE)],\n", + " ),\n", + " # === Gas Boiler (existing, fixed size) ===\n", + " fx.linear_converters.Boiler(\n", + " 'GasBoiler',\n", + " thermal_efficiency=0.92,\n", + " thermal_flow=fx.Flow('Heat', bus='Heat', size=200), # 200 kW existing\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " # === Solar Collectors (size to be optimized) ===\n", + " fx.Source(\n", + " 'SolarCollectors',\n", + " outputs=[\n", + " fx.Flow(\n", + " 'Heat',\n", + " bus='Heat',\n", + " # Investment optimization: find optimal size between 0-500 kW\n", + " size=fx.InvestParameters(\n", + " minimum_size=0,\n", + " maximum_size=500,\n", + " effects_of_investment_per_size={'costs': SOLAR_COST_WEEKLY},\n", + " ),\n", + " # Solar output depends on radiation profile\n", + " fixed_relative_profile=solar_profile,\n", + " )\n", + " ],\n", + " ),\n", + " # === Buffer Tank (size to be optimized) ===\n", + " fx.Storage(\n", + " 'BufferTank',\n", + " # Investment optimization: find optimal capacity between 0-2000 kWh\n", + " capacity_in_flow_hours=fx.InvestParameters(\n", + " minimum_size=0,\n", + " maximum_size=2000,\n", + " effects_of_investment_per_size={'costs': TANK_COST_WEEKLY},\n", + " ),\n", + " initial_charge_state=0,\n", + " eta_charge=0.95,\n", + " eta_discharge=0.95,\n", + " relative_loss_per_hour=0.01, # 1% loss per hour\n", + " charging=fx.Flow('Charge', bus='Heat', size=200),\n", + " discharging=fx.Flow('Discharge', bus='Heat', size=200),\n", + " ),\n", + " # === Pool Heat Demand ===\n", + " fx.Sink(\n", + " 'Pool',\n", + " inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=pool_demand)],\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "## Run Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0.01));" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "## Analyze Investment Decisions\n", + "\n", + "### Optimal Sizes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": "solar_size = flow_system.statistics.sizes['SolarCollectors(Heat)'].item()\ntank_size = flow_system.statistics.sizes['BufferTank'].item()\n\nprint('=== Optimal Investment Decisions ===')\nprint(f'Solar collectors: {solar_size:.1f} kW')\nprint(f'Buffer tank: {tank_size:.1f} kWh')\nprint(f'Tank-to-solar ratio: {tank_size / solar_size:.1f} kWh/kW' if solar_size > 0 else 'N/A')" + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "### Visualize Sizes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sizes()" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "### Cost Breakdown" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "total_costs = flow_system.solution['costs'].item()\n", + "\n", + "# Calculate cost components\n", + "solar_invest = solar_size * SOLAR_COST_WEEKLY\n", + "tank_invest = tank_size * TANK_COST_WEEKLY\n", + "gas_costs = total_costs - solar_invest - tank_invest\n", + "\n", + "print('=== Weekly Cost Breakdown ===')\n", + "print(f'Solar investment: {solar_invest:.2f} € ({solar_invest / total_costs * 100:.1f}%)')\n", + "print(f'Tank investment: {tank_invest:.2f} € ({tank_invest / total_costs * 100:.1f}%)')\n", + "print(f'Gas operating: {gas_costs:.2f} € ({gas_costs / total_costs * 100:.1f}%)')\n", + "print('─────────────────────────────')\n", + "print(f'Total: {total_costs:.2f} €')" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "### System Operation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.heatmap('SolarCollectors(Heat)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('BufferTank')" + ] + }, + { + "cell_type": "markdown", + "id": "23", + "metadata": {}, + "source": [ + "## Compare: What if No Solar?\n", + "\n", + "Let's see how much the solar system saves:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "# Gas-only scenario\n", + "total_demand = pool_demand.sum()\n", + "gas_only_cost = total_demand / 0.92 * GAS_PRICE # All heat from gas boiler\n", + "\n", + "savings = gas_only_cost - total_costs\n", + "savings_pct = savings / gas_only_cost * 100\n", + "\n", + "print('=== Comparison with Gas-Only ===')\n", + "print(f'Gas-only cost: {gas_only_cost:.2f} €/week')\n", + "print(f'With solar: {total_costs:.2f} €/week')\n", + "print(f'Savings: {savings:.2f} €/week ({savings_pct:.1f}%)')\n", + "print(f'Annual savings: {savings * 52:.0f} €/year')" + ] + }, + { + "cell_type": "markdown", + "id": "25", + "metadata": {}, + "source": [ + "### Energy Flow Sankey\n", + "\n", + "A Sankey diagram visualizes the total energy flows through the system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "27", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "### InvestParameters Options\n", + "\n", + "```python\n", + "fx.InvestParameters(\n", + " minimum_size=0, # Lower bound (can be 0 for optional)\n", + " maximum_size=500, # Upper bound\n", + " fixed_size=100, # Or: fixed size (binary decision)\n", + " mandatory=True, # Force investment to happen\n", + " effects_of_investment={'costs': 1000}, # Fixed cost if invested\n", + " effects_of_investment_per_size={'costs': 25}, # Cost per unit size\n", + ")\n", + "```\n", + "\n", + "### Where to Use InvestParameters\n", + "\n", + "- **Flow.size**: Optimize converter/source/sink capacity\n", + "- **Storage.capacity_in_flow_hours**: Optimize storage capacity\n", + "\n", + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Define **investment decisions** with `InvestParameters`\n", + "- Set **size bounds** (minimum/maximum)\n", + "- Add **investment costs** (per-size and fixed)\n", + "- Access **optimal sizes** via `statistics.sizes`\n", + "- Visualize sizes with `statistics.plot.sizes()`\n", + "\n", + "### Next Steps\n", + "\n", + "- **[04-operational-constraints](04-operational-constraints.ipynb)**: Add startup costs and minimum run times\n", + "- **[05-multi-carrier-system](05-multi-carrier-system.ipynb)**: Model combined heat and power" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/04-operational-constraints.ipynb b/docs/notebooks/04-operational-constraints.ipynb new file mode 100644 index 000000000..f2505ed41 --- /dev/null +++ b/docs/notebooks/04-operational-constraints.ipynb @@ -0,0 +1,458 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Operational Constraints: Industrial Boiler with Startup Costs\n", + "\n", + "## User Story\n", + "\n", + "> *You operate an industrial steam boiler for a factory. The boiler has significant startup costs (fuel for warmup, operator time) and can't be cycled on/off frequently due to thermal stress. You need to find an operating schedule that minimizes costs while respecting these operational constraints.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **StatusParameters**: Model on/off decisions with constraints\n", + "- **Startup costs**: Penalties for turning equipment on\n", + "- **Minimum uptime/downtime**: Prevent rapid cycling\n", + "- **Minimum load**: Equipment can't run below a certain output" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## System Description\n", + "\n", + "The factory has:\n", + "\n", + "- **Industrial boiler**: 500 kW capacity, startup cost of 50€, minimum 4h uptime\n", + "- **Small backup boiler**: 100 kW, no startup constraints (always available)\n", + "- **Steam demand**: Varies with production schedule (high during shifts, low overnight)\n", + "\n", + "The main boiler is more efficient but has operational constraints. The backup is less efficient but flexible." + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Define Time Horizon and Demand" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# 3 days, hourly resolution\n", + "timesteps = pd.date_range('2024-03-11', periods=72, freq='h')\n", + "hours = np.arange(72)\n", + "hour_of_day = hours % 24\n", + "\n", + "# Factory operates in shifts:\n", + "# - Day shift (6am-2pm): 400 kW\n", + "# - Evening shift (2pm-10pm): 350 kW\n", + "# - Night (10pm-6am): 80 kW (maintenance heating only)\n", + "\n", + "steam_demand = np.select(\n", + " [\n", + " (hour_of_day >= 6) & (hour_of_day < 14), # Day shift\n", + " (hour_of_day >= 14) & (hour_of_day < 22), # Evening shift\n", + " ],\n", + " [400, 350],\n", + " default=80, # Night\n", + ")\n", + "\n", + "# Add some variation\n", + "np.random.seed(123)\n", + "steam_demand = steam_demand + np.random.normal(0, 20, len(steam_demand))\n", + "steam_demand = np.clip(steam_demand, 50, 450).astype(float)\n", + "\n", + "print(f'Peak demand: {steam_demand.max():.0f} kW')\n", + "print(f'Min demand: {steam_demand.min():.0f} kW')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "px.line(x=timesteps, y=steam_demand, title='Factory Steam Demand', labels={'x': 'Time', 'y': 'kW'})" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## Build System with Operational Constraints" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system = fx.FlowSystem(timesteps)\n", + "\n", + "flow_system.add_elements(\n", + " # === Buses ===\n", + " fx.Bus('Gas'),\n", + " fx.Bus('Steam'),\n", + " # === Effect ===\n", + " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " # === Gas Supply ===\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)],\n", + " ),\n", + " # === Main Industrial Boiler (with operational constraints) ===\n", + " fx.linear_converters.Boiler(\n", + " 'MainBoiler',\n", + " thermal_efficiency=0.94, # High efficiency\n", + " # StatusParameters define on/off behavior\n", + " status_parameters=fx.StatusParameters(\n", + " effects_per_startup={'costs': 50}, # 50€ startup cost\n", + " min_uptime=4, # Must run at least 4 hours once started\n", + " min_downtime=2, # Must stay off at least 2 hours\n", + " ),\n", + " thermal_flow=fx.Flow(\n", + " 'Steam',\n", + " bus='Steam',\n", + " size=500,\n", + " relative_minimum=0.3, # Minimum load: 30% = 150 kW\n", + " ),\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " # === Backup Boiler (flexible, but less efficient) ===\n", + " fx.linear_converters.Boiler(\n", + " 'BackupBoiler',\n", + " thermal_efficiency=0.85, # Lower efficiency\n", + " # No status parameters = can turn on/off freely\n", + " thermal_flow=fx.Flow('Steam', bus='Steam', size=150),\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " # === Factory Steam Demand ===\n", + " fx.Sink(\n", + " 'Factory',\n", + " inputs=[fx.Flow('Steam', bus='Steam', size=1, fixed_relative_profile=steam_demand)],\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Run Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0.01));" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "## Analyze Results\n", + "\n", + "### Steam Balance\n", + "\n", + "See how the two boilers share the load:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Steam')" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "### Main Boiler Operation\n", + "\n", + "Notice how the main boiler:\n", + "- Runs continuously during production (respecting min uptime)\n", + "- Stays above minimum load (30%)\n", + "- Shuts down during low-demand periods" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.heatmap('MainBoiler(Steam)')" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "### On/Off Status\n", + "\n", + "Track the boiler's operational status:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "# Merge solution DataArrays directly - xarray aligns coordinates automatically\n", + "status_ds = xr.Dataset(\n", + " {\n", + " 'Status': flow_system.solution['MainBoiler|status'],\n", + " 'Steam Production [kW]': flow_system.solution['MainBoiler(Steam)|flow_rate'],\n", + " }\n", + ")\n", + "\n", + "df = status_ds.to_dataframe().reset_index().melt(id_vars='time', var_name='variable', value_name='value')\n", + "fig = px.line(df, x='time', y='value', facet_col='variable', height=300, title='Main Boiler Operation')\n", + "fig.update_yaxes(matches=None, showticklabels=True)\n", + "fig.for_each_annotation(lambda a: a.update(text=a.text.split('=')[-1]))\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "### Startup Count and Costs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": "total_startups = int(flow_system.solution['MainBoiler|startup'].sum().item())\ntotal_costs = flow_system.solution['costs'].item()\nstartup_costs = total_startups * 50\ngas_costs = total_costs - startup_costs\n\nprint('=== Cost Breakdown ===')\nprint(f'Number of startups: {total_startups}')\nprint(f'Startup costs: {startup_costs:.0f} €')\nprint(f'Gas costs: {gas_costs:.2f} €')\nprint(f'Total costs: {total_costs:.2f} €')" + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "### Duration Curves\n", + "\n", + "See how often each boiler operates at different load levels:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.duration_curve('MainBoiler(Steam)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.duration_curve('BackupBoiler(Steam)')" + ] + }, + { + "cell_type": "markdown", + "id": "22", + "metadata": {}, + "source": [ + "## Compare: Without Operational Constraints\n", + "\n", + "What if the main boiler had no startup costs or minimum uptime?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "# Build unconstrained system\n", + "fs_unconstrained = fx.FlowSystem(timesteps)\n", + "\n", + "fs_unconstrained.add_elements(\n", + " fx.Bus('Gas'),\n", + " fx.Bus('Steam'),\n", + " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)]),\n", + " # Main boiler WITHOUT status parameters\n", + " fx.linear_converters.Boiler(\n", + " 'MainBoiler',\n", + " thermal_efficiency=0.94,\n", + " thermal_flow=fx.Flow('Steam', bus='Steam', size=500),\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " fx.linear_converters.Boiler(\n", + " 'BackupBoiler',\n", + " thermal_efficiency=0.85,\n", + " thermal_flow=fx.Flow('Steam', bus='Steam', size=150),\n", + " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", + " ),\n", + " fx.Sink('Factory', inputs=[fx.Flow('Steam', bus='Steam', size=1, fixed_relative_profile=steam_demand)]),\n", + ")\n", + "\n", + "fs_unconstrained.optimize(fx.solvers.HighsSolver())\n", + "unconstrained_costs = fs_unconstrained.solution['costs'].item()\n", + "\n", + "print('=== Comparison ===')\n", + "print(f'With constraints: {total_costs:.2f} €')\n", + "print(f'Without constraints: {unconstrained_costs:.2f} €')\n", + "print(\n", + " f'Constraint cost: {total_costs - unconstrained_costs:.2f} € ({(total_costs - unconstrained_costs) / unconstrained_costs * 100:.1f}%)'\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "24", + "metadata": {}, + "source": [ + "### Energy Flow Sankey\n", + "\n", + "A Sankey diagram visualizes the total energy flows through the system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "### StatusParameters Options\n", + "\n", + "```python\n", + "fx.StatusParameters(\n", + " # Startup/shutdown costs\n", + " effects_per_startup={'costs': 50}, # Cost per startup event\n", + " effects_per_shutdown={'costs': 10}, # Cost per shutdown event\n", + " \n", + " # Time constraints\n", + " min_uptime=4, # Minimum hours running once started\n", + " min_downtime=2, # Minimum hours off once stopped\n", + " \n", + " # Startup limits\n", + " max_startups=10, # Maximum startups per period\n", + ")\n", + "```\n", + "\n", + "### Minimum Load\n", + "\n", + "Set via `Flow.relative_minimum`:\n", + "```python\n", + "fx.Flow('Steam', bus='Steam', size=500, relative_minimum=0.3) # Min 30% load\n", + "```\n", + "\n", + "### When Status is Active\n", + "\n", + "- When `StatusParameters` is set, a binary on/off variable is created\n", + "- Flow is zero when status=0, within bounds when status=1\n", + "- Without `StatusParameters`, flow can vary continuously from 0 to max\n", + "\n", + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Add **startup costs** with `effects_per_startup`\n", + "- Set **minimum run times** with `min_uptime` and `min_downtime`\n", + "- Define **minimum load** with `relative_minimum`\n", + "- Access **status variables** from the solution\n", + "- Use **duration curves** to analyze operation patterns\n", + "\n", + "### Next Steps\n", + "\n", + "- **[05-multi-carrier-system](05-multi-carrier-system.ipynb)**: Model CHP with electricity and heat\n", + "- **[06-piecewise-efficiency](06-piecewise-efficiency.ipynb)**: Variable efficiency at different loads" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/05-multi-carrier-system.ipynb b/docs/notebooks/05-multi-carrier-system.ipynb new file mode 100644 index 000000000..50c59dd3e --- /dev/null +++ b/docs/notebooks/05-multi-carrier-system.ipynb @@ -0,0 +1,560 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Multi-Carrier System: Hospital with CHP\n", + "\n", + "## User Story\n", + "\n", + "> *You're the energy manager of a hospital. The facility needs both electricity and heat around the clock. You have a Combined Heat and Power (CHP) unit that produces both simultaneously, plus a gas boiler for backup heat and a grid connection for electricity. Your goal is to minimize energy costs while ensuring reliable supply.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **Multiple energy carriers**: Electricity, heat, and gas in one system\n", + "- **CHP (Cogeneration)**: Equipment producing multiple outputs\n", + "- **Electricity market**: Buying and selling to the grid\n", + "- **Carrier colors**: Visual distinction between energy types" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## System Description\n", + "\n", + "The hospital energy system:\n", + "\n", + "```\n", + " Grid Buy ──►\n", + " [Electricity] ──► Hospital Elec. Load\n", + " Grid Sell ◄── ▲\n", + " │\n", + " Gas Grid ──► [Gas] ──► CHP ──────┘\n", + " │ │\n", + " │ ▼\n", + " │ [Heat] ──► Hospital Heat Load\n", + " │ ▲\n", + " └──► Boiler\n", + "```\n", + "\n", + "**Equipment:**\n", + "- **CHP**: 200 kW electrical, ~250 kW thermal (η_el=40%, η_th=50%)\n", + "- **Gas Boiler**: 400 kW thermal backup\n", + "- **Grid**: Buy electricity at variable prices, sell at lower prices" + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Define Time Horizon and Demand Profiles" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# One week, hourly\n", + "timesteps = pd.date_range('2024-02-05', periods=168, freq='h')\n", + "hours = np.arange(168)\n", + "hour_of_day = hours % 24\n", + "\n", + "# Hospital electricity demand (kW)\n", + "# Base load + daily pattern (higher during day for equipment, lighting)\n", + "elec_base = 150 # 24/7 critical systems\n", + "elec_daily = 100 * np.sin((hour_of_day - 6) * np.pi / 12) # Peak at noon\n", + "elec_daily = np.maximum(0, elec_daily)\n", + "electricity_demand = elec_base + elec_daily\n", + "\n", + "# Hospital heat demand (kW)\n", + "# Higher in morning, drops during day, increases for hot water in evening\n", + "heat_pattern = np.select(\n", + " [\n", + " (hour_of_day >= 5) & (hour_of_day < 9), # Morning warmup\n", + " (hour_of_day >= 9) & (hour_of_day < 17), # Daytime\n", + " (hour_of_day >= 17) & (hour_of_day < 22), # Evening\n", + " ],\n", + " [350, 250, 300],\n", + " default=200, # Night\n", + ")\n", + "heat_demand = heat_pattern.astype(float)\n", + "\n", + "# Add random variation\n", + "np.random.seed(456)\n", + "electricity_demand += np.random.normal(0, 15, len(timesteps))\n", + "heat_demand += np.random.normal(0, 20, len(timesteps))\n", + "electricity_demand = np.clip(electricity_demand, 100, 300)\n", + "heat_demand = np.clip(heat_demand, 150, 400)\n", + "\n", + "print(f'Electricity: {electricity_demand.min():.0f} - {electricity_demand.max():.0f} kW')\n", + "print(f'Heat: {heat_demand.min():.0f} - {heat_demand.max():.0f} kW')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "# Electricity prices (€/kWh)\n", + "# Time-of-use: expensive during day, cheaper at night\n", + "elec_buy_price = np.where(\n", + " (hour_of_day >= 7) & (hour_of_day <= 21),\n", + " 0.35, # Peak - high electricity prices make CHP attractive\n", + " 0.20, # Off-peak\n", + ")\n", + "\n", + "# Feed-in tariff (sell price) - allows selling excess CHP electricity\n", + "elec_sell_price = 0.12 # Fixed feed-in rate\n", + "\n", + "# Gas price - relatively low, favoring gas-based generation\n", + "gas_price = 0.05 # €/kWh" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize demands and prices with plotly - using xarray and faceting\n", + "profiles = xr.Dataset(\n", + " {\n", + " 'Electricity Demand [kW]': xr.DataArray(electricity_demand, dims=['time'], coords={'time': timesteps}),\n", + " 'Heat Demand [kW]': xr.DataArray(heat_demand, dims=['time'], coords={'time': timesteps}),\n", + " 'Elec. Buy Price [€/kWh]': xr.DataArray(elec_buy_price, dims=['time'], coords={'time': timesteps}),\n", + " }\n", + ")\n", + "\n", + "df = profiles.to_dataframe().reset_index().melt(id_vars='time', var_name='variable', value_name='value')\n", + "fig = px.line(df, x='time', y='value', facet_col='variable', height=300)\n", + "fig.update_yaxes(matches=None, showticklabels=True)\n", + "fig.for_each_annotation(lambda a: a.update(text=a.text.split('=')[-1]))\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## Build the Multi-Carrier System" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system = fx.FlowSystem(timesteps)\n", + "\n", + "flow_system.add_elements(\n", + " # === Buses with carriers for visual distinction ===\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Bus('Heat', carrier='heat'),\n", + " fx.Bus('Gas', carrier='gas'),\n", + " # === Effects ===\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('CO2', 'kg', 'CO2 Emissions'), # Track emissions too\n", + " # === Gas Supply ===\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[\n", + " fx.Flow(\n", + " 'Gas',\n", + " bus='Gas',\n", + " size=1000,\n", + " effects_per_flow_hour={'costs': gas_price, 'CO2': 0.2}, # Gas: 0.2 kg CO2/kWh\n", + " )\n", + " ],\n", + " ),\n", + " # === Electricity Grid (buy) ===\n", + " fx.Source(\n", + " 'GridBuy',\n", + " outputs=[\n", + " fx.Flow(\n", + " 'Electricity',\n", + " bus='Electricity',\n", + " size=500,\n", + " effects_per_flow_hour={'costs': elec_buy_price, 'CO2': 0.4}, # Grid: 0.4 kg CO2/kWh\n", + " )\n", + " ],\n", + " ),\n", + " # === Electricity Grid (sell) - negative cost = revenue ===\n", + " fx.Sink(\n", + " 'GridSell',\n", + " inputs=[\n", + " fx.Flow(\n", + " 'Electricity',\n", + " bus='Electricity',\n", + " size=200,\n", + " effects_per_flow_hour={'costs': -elec_sell_price}, # Negative = income\n", + " )\n", + " ],\n", + " ),\n", + " # === CHP Unit (Combined Heat and Power) ===\n", + " fx.linear_converters.CHP(\n", + " 'CHP',\n", + " electrical_efficiency=0.40, # 40% to electricity\n", + " thermal_efficiency=0.50, # 50% to heat (total: 90%)\n", + " status_parameters=fx.StatusParameters(\n", + " effects_per_startup={'costs': 30},\n", + " min_uptime=3,\n", + " ),\n", + " electrical_flow=fx.Flow('P_el', bus='Electricity', size=200),\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat', size=250),\n", + " fuel_flow=fx.Flow(\n", + " 'Q_fuel',\n", + " bus='Gas',\n", + " size=500,\n", + " relative_minimum=0.4, # Min 40% load\n", + " ),\n", + " ),\n", + " # === Gas Boiler (heat only) ===\n", + " fx.linear_converters.Boiler(\n", + " 'Boiler',\n", + " thermal_efficiency=0.92,\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat', size=400),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas'),\n", + " ),\n", + " # === Hospital Loads ===\n", + " fx.Sink(\n", + " 'HospitalElec',\n", + " inputs=[fx.Flow('Load', bus='Electricity', size=1, fixed_relative_profile=electricity_demand)],\n", + " ),\n", + " fx.Sink(\n", + " 'HospitalHeat',\n", + " inputs=[fx.Flow('Load', bus='Heat', size=1, fixed_relative_profile=heat_demand)],\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "## Run Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0.01));" + ] + }, + { + "cell_type": "markdown", + "id": "12", + "metadata": {}, + "source": [ + "## Analyze Results\n", + "\n", + "### Electricity Balance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Electricity')" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [ + "### Heat Balance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "markdown", + "id": "16", + "metadata": {}, + "source": [ + "### Gas Balance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Gas')" + ] + }, + { + "cell_type": "markdown", + "id": "18", + "metadata": {}, + "source": [ + "### CHP Operation Pattern" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.heatmap('CHP(P_el)')" + ] + }, + { + "cell_type": "markdown", + "id": "20", + "metadata": {}, + "source": [ + "### Cost and Emissions Summary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "total_costs = flow_system.solution['costs'].item()\n", + "total_co2 = flow_system.solution['CO2'].item()\n", + "\n", + "# Energy flows\n", + "flow_rates = flow_system.statistics.flow_rates\n", + "grid_buy = flow_rates['GridBuy(Electricity)'].sum().item()\n", + "grid_sell = flow_rates['GridSell(Electricity)'].sum().item()\n", + "chp_elec = flow_rates['CHP(P_el)'].sum().item()\n", + "chp_heat = flow_rates['CHP(Q_th)'].sum().item()\n", + "boiler_heat = flow_rates['Boiler(Q_th)'].sum().item()\n", + "\n", + "total_elec = electricity_demand.sum()\n", + "total_heat = heat_demand.sum()\n", + "\n", + "print('=== Energy Summary ===')\n", + "print(f'Total electricity demand: {total_elec:.0f} kWh')\n", + "print(f' - From CHP: {chp_elec:.0f} kWh ({chp_elec / total_elec * 100:.1f}%)')\n", + "print(f' - From Grid: {grid_buy:.0f} kWh ({grid_buy / total_elec * 100:.1f}%)')\n", + "print(f' - Sold to Grid: {grid_sell:.0f} kWh')\n", + "print()\n", + "print(f'Total heat demand: {total_heat:.0f} kWh')\n", + "print(f' - From CHP: {chp_heat:.0f} kWh ({chp_heat / total_heat * 100:.1f}%)')\n", + "print(f' - From Boiler: {boiler_heat:.0f} kWh ({boiler_heat / total_heat * 100:.1f}%)')\n", + "print()\n", + "print('=== Costs & Emissions ===')\n", + "print(f'Total costs: {total_costs:.2f} €')\n", + "print(f'Total CO2: {total_co2:.0f} kg')\n", + "print(f'Specific costs: {total_costs / (total_elec + total_heat) * 100:.2f} ct/kWh')\n", + "print(f'Specific CO2: {total_co2 / (total_elec + total_heat) * 1000:.1f} g/kWh')" + ] + }, + { + "cell_type": "markdown", + "id": "22", + "metadata": {}, + "source": [ + "### Compare: What if No CHP?\n", + "\n", + "How much does the CHP save compared to buying all electricity?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "# Build system without CHP\n", + "fs_no_chp = fx.FlowSystem(timesteps)\n", + "\n", + "fs_no_chp.add_elements(\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Bus('Heat', carrier='heat'),\n", + " fx.Bus('Gas', carrier='gas'),\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('CO2', 'kg', 'CO2 Emissions'),\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour={'costs': gas_price, 'CO2': 0.2})],\n", + " ),\n", + " fx.Source(\n", + " 'GridBuy',\n", + " outputs=[\n", + " fx.Flow(\n", + " 'Electricity', bus='Electricity', size=500, effects_per_flow_hour={'costs': elec_buy_price, 'CO2': 0.4}\n", + " )\n", + " ],\n", + " ),\n", + " # Only boiler for heat\n", + " fx.linear_converters.Boiler(\n", + " 'Boiler',\n", + " thermal_efficiency=0.92,\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat', size=500),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas'),\n", + " ),\n", + " fx.Sink(\n", + " 'HospitalElec', inputs=[fx.Flow('Load', bus='Electricity', size=1, fixed_relative_profile=electricity_demand)]\n", + " ),\n", + " fx.Sink('HospitalHeat', inputs=[fx.Flow('Load', bus='Heat', size=1, fixed_relative_profile=heat_demand)]),\n", + ")\n", + "\n", + "fs_no_chp.optimize(fx.solvers.HighsSolver())\n", + "\n", + "no_chp_costs = fs_no_chp.solution['costs'].item()\n", + "no_chp_co2 = fs_no_chp.solution['CO2'].item()\n", + "\n", + "print('=== CHP Benefit Analysis ===')\n", + "print(f'Without CHP: {no_chp_costs:.2f} € / {no_chp_co2:.0f} kg CO2')\n", + "print(f'With CHP: {total_costs:.2f} € / {total_co2:.0f} kg CO2')\n", + "print(f'Cost savings: {no_chp_costs - total_costs:.2f} € ({(no_chp_costs - total_costs) / no_chp_costs * 100:.1f}%)')\n", + "print(f'CO2 reduction: {no_chp_co2 - total_co2:.0f} kg ({(no_chp_co2 - total_co2) / no_chp_co2 * 100:.1f}%)')" + ] + }, + { + "cell_type": "markdown", + "id": "24", + "metadata": {}, + "source": [ + "### Energy Flow Sankey\n", + "\n", + "A Sankey diagram visualizes the total energy flows through the multi-carrier system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "### Multi-Carrier Systems\n", + "\n", + "- Multiple buses for different energy carriers (electricity, heat, gas)\n", + "- Components can connect to multiple buses (CHP produces both electricity and heat)\n", + "- Carriers enable automatic coloring in visualizations\n", + "\n", + "### CHP Modeling\n", + "\n", + "```python\n", + "fx.linear_converters.CHP(\n", + " 'CHP',\n", + " electrical_efficiency=0.40, # Fuel → Electricity\n", + " thermal_efficiency=0.50, # Fuel → Heat\n", + " # Total efficiency = 0.40 + 0.50 = 0.90 (90%)\n", + " electrical_flow=fx.Flow('P_el', bus='Electricity', size=200),\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat', size=250),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas', size=500),\n", + ")\n", + "```\n", + "\n", + "### Electricity Markets\n", + "\n", + "- **Buy**: Source with positive cost\n", + "- **Sell**: Sink with negative cost (= revenue)\n", + "- Different prices for buy vs. sell (spread)\n", + "\n", + "### Tracking Multiple Effects\n", + "\n", + "```python\n", + "fx.Effect('costs', '€', 'Total Costs', is_objective=True) # Minimize this\n", + "fx.Effect('CO2', 'kg', 'CO2 Emissions') # Just track, don't optimize\n", + "```\n", + "\n", + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Model **multiple energy carriers** (electricity, heat, gas)\n", + "- Use **CHP** for combined heat and power production\n", + "- Model **electricity markets** with buy/sell prices\n", + "- Track **multiple effects** (costs and emissions)\n", + "- Analyze **multi-carrier balances**\n", + "\n", + "### Next Steps\n", + "\n", + "- **[06-piecewise-efficiency](06-piecewise-efficiency.ipynb)**: Model variable efficiency curves\n", + "- **[07-scenarios-and-periods](07-scenarios-and-periods.ipynb)**: Plan under uncertainty" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/06-piecewise-efficiency.ipynb b/docs/notebooks/06-piecewise-efficiency.ipynb new file mode 100644 index 000000000..ce87a93c6 --- /dev/null +++ b/docs/notebooks/06-piecewise-efficiency.ipynb @@ -0,0 +1,646 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Piecewise Efficiency: Heat Pump with Variable COP\n", + "\n", + "## User Story\n", + "\n", + "> *You're installing a heat pump for a commercial building. The heat pump's efficiency (COP - Coefficient of Performance) varies with the outdoor temperature: it's more efficient in mild weather than in cold weather. You want to model this realistically to accurately predict operating costs.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **Piecewise linear functions**: Approximate non-linear behavior\n", + "- **Variable efficiency**: COP changes with operating conditions\n", + "- **LinearConverter with segments**: Multiple operating points\n", + "- **Piecewise effects**: Non-linear cost curves" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## The Problem: Variable Heat Pump Efficiency\n", + "\n", + "A heat pump's COP (Coefficient of Performance) depends on the temperature difference between source and sink:\n", + "\n", + "- **Mild weather** (10°C outside): COP ≈ 4.5 (1 kWh electricity → 4.5 kWh heat)\n", + "- **Cold weather** (-5°C outside): COP ≈ 2.5 (1 kWh electricity → 2.5 kWh heat)\n", + "\n", + "This non-linear relationship can be approximated using piecewise linear segments." + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Define Time Series Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# One winter week\n", + "timesteps = pd.date_range('2024-01-22', periods=168, freq='h')\n", + "hours = np.arange(168)\n", + "hour_of_day = hours % 24\n", + "\n", + "# Outdoor temperature: daily cycle with cold nights\n", + "temp_base = 2 # Average temp\n", + "temp_amplitude = 5 # Daily variation\n", + "outdoor_temp = temp_base + temp_amplitude * np.sin((hour_of_day - 6) * np.pi / 12)\n", + "\n", + "# Add day-to-day variation\n", + "np.random.seed(789)\n", + "daily_offset = np.repeat(np.random.uniform(-3, 3, 7), 24)\n", + "outdoor_temp = outdoor_temp + daily_offset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "# Heat demand: inversely related to outdoor temp (higher demand when colder)\n", + "heat_demand = 200 - 8 * outdoor_temp\n", + "heat_demand = np.clip(heat_demand, 100, 300)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize with plotly - using xarray and faceting\n", + "profiles = xr.Dataset(\n", + " {\n", + " 'Outdoor Temp [°C]': xr.DataArray(outdoor_temp, dims=['time'], coords={'time': timesteps}),\n", + " 'Heat Demand [kW]': xr.DataArray(heat_demand, dims=['time'], coords={'time': timesteps}),\n", + " }\n", + ")\n", + "\n", + "df = profiles.to_dataframe().reset_index().melt(id_vars='time', var_name='variable', value_name='value')\n", + "fig = px.line(df, x='time', y='value', facet_col='variable', height=300)\n", + "fig.update_yaxes(matches=None, showticklabels=True)\n", + "fig.for_each_annotation(lambda a: a.update(text=a.text.split('=')[-1]))\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## Calculate Time-Varying COP\n", + "\n", + "The COP depends on outdoor temperature. We use a simplified Carnot-based formula:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "# COP calculation (simplified): Real COP ≈ 0.45 * Carnot COP\n", + "T_supply = 45 + 273.15 # Supply temperature 45°C in Kelvin\n", + "T_source = outdoor_temp + 273.15 # Outdoor temp in Kelvin\n", + "\n", + "carnot_cop = T_supply / (T_supply - T_source)\n", + "real_cop = 0.45 * carnot_cop\n", + "real_cop = np.clip(real_cop, 2.0, 5.0) # Physical limits" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "# Plot COP vs temperature using plotly\n", + "px.scatter(\n", + " x=outdoor_temp,\n", + " y=real_cop,\n", + " title='Heat Pump COP vs Outdoor Temperature',\n", + " labels={'x': 'Outdoor Temperature [°C]', 'y': 'COP'},\n", + " opacity=0.5,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "## Approach 1: Simple Model with Time-Varying Efficiency\n", + "\n", + "The simplest approach: use time-varying conversion factors directly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system = fx.FlowSystem(timesteps)\n", + "\n", + "flow_system.add_elements(\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Bus('Heat', carrier='heat'),\n", + " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " fx.Source('Grid', outputs=[fx.Flow('Elec', bus='Electricity', size=500, effects_per_flow_hour=0.30)]),\n", + " fx.LinearConverter(\n", + " 'HeatPump',\n", + " inputs=[fx.Flow('Elec', bus='Electricity', size=150)],\n", + " outputs=[fx.Flow('Heat', bus='Heat', size=500)],\n", + " conversion_factors=[{'Elec': real_cop, 'Heat': 1}], # Time-varying COP\n", + " ),\n", + " fx.Sink('Building', inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand)]),\n", + ")\n", + "\n", + "flow_system.optimize(fx.solvers.HighsSolver())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Electricity')" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "## Approach 2: Simple vs Piecewise Efficiency - Model Refinement\n", + "\n", + "Real equipment often has non-linear efficiency curves. Let's compare:\n", + "1. **Simple model**: Constant average efficiency\n", + "2. **Refined model**: Piecewise linear efficiency that varies with load\n", + "\n", + "This demonstrates how to progressively refine a model for more accurate results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "# Gas engine efficiency varies with load:\n", + "# - Part load: lower efficiency\n", + "# - Mid load: optimal efficiency (~42%)\n", + "# - Full load: slightly lower efficiency\n", + "\n", + "SIMPLE_EFFICIENCY = 0.38 # Average efficiency for simple model\n", + "\n", + "# Piecewise model: efficiency varies by operating segment\n", + "piecewise_efficiency = fx.PiecewiseConversion(\n", + " {\n", + " 'Fuel': fx.Piecewise(\n", + " [\n", + " fx.Piece(start=78, end=132), # Part load\n", + " fx.Piece(start=132, end=179), # Mid load (optimal)\n", + " fx.Piece(start=179, end=250), # High load\n", + " ]\n", + " ),\n", + " 'Elec': fx.Piecewise(\n", + " [\n", + " fx.Piece(start=25, end=50),\n", + " fx.Piece(start=50, end=75),\n", + " fx.Piece(start=75, end=100),\n", + " ]\n", + " ),\n", + " }\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "# 2-day demand profile\n", + "timesteps_simple = pd.date_range('2024-01-22', periods=48, freq='h')\n", + "elec_demand_simple = np.concatenate([np.linspace(30, 90, 24), np.linspace(90, 30, 24)])\n", + "\n", + "# MODEL 1: Simple constant efficiency\n", + "fs_simple = fx.FlowSystem(timesteps_simple)\n", + "fs_simple.add_elements(\n", + " fx.Bus('Gas', carrier='gas'),\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Effect('costs', '€', 'Costs', is_standard=True, is_objective=True),\n", + " fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=500, effects_per_flow_hour=0.05)]),\n", + " fx.LinearConverter(\n", + " 'GasEngine',\n", + " inputs=[fx.Flow('Fuel', bus='Gas', size=300)],\n", + " outputs=[fx.Flow('Elec', bus='Electricity', size=100)],\n", + " conversion_factors=[{'Fuel': 1, 'Elec': SIMPLE_EFFICIENCY}],\n", + " ),\n", + " fx.Sink('Load', inputs=[fx.Flow('Elec', bus='Electricity', size=1, fixed_relative_profile=elec_demand_simple)]),\n", + ")\n", + "fs_simple.optimize(fx.solvers.HighsSolver())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "# MODEL 2: Piecewise efficiency (load-dependent)\n", + "fs_piecewise = fx.FlowSystem(timesteps_simple)\n", + "fs_piecewise.add_elements(\n", + " fx.Bus('Gas', carrier='gas'),\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Effect('costs', '€', 'Costs', is_standard=True, is_objective=True),\n", + " fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=500, effects_per_flow_hour=0.05)]),\n", + " fx.LinearConverter(\n", + " 'GasEngine',\n", + " inputs=[fx.Flow('Fuel', bus='Gas')],\n", + " outputs=[fx.Flow('Elec', bus='Electricity')],\n", + " piecewise_conversion=piecewise_efficiency,\n", + " ),\n", + " fx.Sink('Load', inputs=[fx.Flow('Elec', bus='Electricity', size=1, fixed_relative_profile=elec_demand_simple)]),\n", + ")\n", + "fs_piecewise.optimize(fx.solvers.HighsSolver())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize the piecewise conversion curve\n", + "fs_piecewise.components['GasEngine'].piecewise_conversion.plot(\n", + " x_flow='Fuel', title='Gas Engine: Fuel Input vs Electricity Output'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "# Compare: Simple vs Piecewise efficiency\n", + "print(f'Simple model: {fs_simple.solution[\"costs\"].item():.2f} €')\n", + "print(f'Piecewise model: {fs_piecewise.solution[\"costs\"].item():.2f} €')" + ] + }, + { + "cell_type": "markdown", + "id": "21", + "metadata": {}, + "source": [ + "## Approach 3: Simple vs Piecewise Investment Costs\n", + "\n", + "Investment costs often have economies of scale - larger systems cost less per unit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "fs_piecewise.statistics.plot.balance('Gas')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "# Investment costs (daily amortized)\n", + "SIMPLE_INVEST_COST = 0.20 # €/kWh constant\n", + "\n", + "# Piecewise: economies of scale (0.20 → 0.15 → 0.10 €/kWh)\n", + "piecewise_invest_costs = fx.PiecewiseEffects(\n", + " piecewise_origin=fx.Piecewise(\n", + " [\n", + " fx.Piece(start=0, end=100),\n", + " fx.Piece(start=100, end=300),\n", + " fx.Piece(start=300, end=600),\n", + " ]\n", + " ),\n", + " piecewise_shares={\n", + " 'costs': fx.Piecewise(\n", + " [\n", + " fx.Piece(start=0, end=20), # 0.20 €/kWh\n", + " fx.Piece(start=20, end=50), # 0.15 €/kWh\n", + " fx.Piece(start=50, end=80), # 0.10 €/kWh\n", + " ]\n", + " )\n", + " },\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "# Base system: Price arbitrage scenario (3 days)\n", + "timesteps_invest = pd.date_range('2024-01-22', periods=72, freq='h')\n", + "\n", + "heat_demand_invest = np.tile(\n", + " np.concatenate(\n", + " [\n", + " np.full(8, 100),\n", + " np.full(4, 120),\n", + " np.full(4, 110),\n", + " np.full(4, 130),\n", + " np.full(4, 105),\n", + " ]\n", + " ),\n", + " 3,\n", + ")\n", + "\n", + "energy_price_invest = np.tile(\n", + " np.concatenate(\n", + " [\n", + " np.full(8, 0.08),\n", + " np.full(4, 0.20),\n", + " np.full(4, 0.12),\n", + " np.full(4, 0.25),\n", + " np.full(4, 0.10),\n", + " ]\n", + " ),\n", + " 3,\n", + ")\n", + "\n", + "fs_base = fx.FlowSystem(timesteps_invest)\n", + "fs_base.add_elements(\n", + " fx.Bus('Heat', carrier='heat'),\n", + " fx.Effect('costs', '€', 'Costs', is_standard=True, is_objective=True),\n", + " fx.Source('HeatSource', outputs=[fx.Flow('Heat', bus='Heat', size=300, effects_per_flow_hour=energy_price_invest)]),\n", + " fx.Sink('HeatSink', inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand_invest)]),\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "# MODEL 1: Simple linear investment costs\n", + "fs_simple_invest = fs_base.copy()\n", + "fs_simple_invest.add_elements(\n", + " fx.Storage(\n", + " 'ThermalStorage',\n", + " charging=fx.Flow('charge', bus='Heat', size=200),\n", + " discharging=fx.Flow('discharge', bus='Heat', size=200),\n", + " capacity_in_flow_hours=fx.InvestParameters(\n", + " effects_of_investment_per_size=SIMPLE_INVEST_COST,\n", + " minimum_size=0,\n", + " maximum_size=600,\n", + " ),\n", + " initial_charge_state=0,\n", + " eta_charge=0.95,\n", + " eta_discharge=0.95,\n", + " relative_loss_per_hour=0.005,\n", + " ),\n", + ")\n", + "fs_simple_invest.optimize(fx.solvers.HighsSolver())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26", + "metadata": {}, + "outputs": [], + "source": [ + "# MODEL 2: Piecewise investment costs (economies of scale)\n", + "fs_piecewise_invest = fs_base.copy()\n", + "fs_piecewise_invest.add_elements(\n", + " fx.Storage(\n", + " 'ThermalStorage',\n", + " charging=fx.Flow('charge', bus='Heat', size=200),\n", + " discharging=fx.Flow('discharge', bus='Heat', size=200),\n", + " capacity_in_flow_hours=fx.InvestParameters(\n", + " piecewise_effects_of_investment=piecewise_invest_costs,\n", + " minimum_size=0,\n", + " maximum_size=600,\n", + " ),\n", + " initial_charge_state=0,\n", + " eta_charge=0.95,\n", + " eta_discharge=0.95,\n", + " relative_loss_per_hour=0.005,\n", + " ),\n", + ")\n", + "fs_piecewise_invest.optimize(fx.solvers.HighsSolver())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize the piecewise investment cost curve\n", + "# Access through the storage component after it's part of the FlowSystem\n", + "fs_piecewise_invest.components['ThermalStorage'].capacity_in_flow_hours.piecewise_effects_of_investment.plot(\n", + " title='Storage Investment Costs (Economies of Scale)'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "# Compare: Simple vs Piecewise investment\n", + "print(\n", + " f'Simple model: {fs_simple_invest.solution[\"ThermalStorage|size\"].item():.0f} kWh, {fs_simple_invest.solution[\"costs\"].item():.2f} €'\n", + ")\n", + "print(\n", + " f'Piecewise model: {fs_piecewise_invest.solution[\"ThermalStorage|size\"].item():.0f} kWh, {fs_piecewise_invest.solution[\"costs\"].item():.2f} €'\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "29", + "metadata": {}, + "source": [ + "### Visualize Storage Operation and Energy Flows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "# Storage operation visualization\n", + "fs_piecewise_invest.statistics.plot.heatmap('ThermalStorage')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "fs_piecewise_invest.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "32", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "### Time-Varying Conversion Factors\n", + "\n", + "For temperature-dependent efficiency, use arrays with flow labels as keys:\n", + "```python\n", + "fx.LinearConverter(\n", + " 'HeatPump',\n", + " inputs=[fx.Flow('Elec', bus='Electricity', size=150)],\n", + " outputs=[fx.Flow('Heat', bus='Heat', size=500)],\n", + " # Equation: Elec * COP = Heat * 1\n", + " conversion_factors=[{'Elec': cop_array, 'Heat': 1}],\n", + ")\n", + "```\n", + "\n", + "### Piecewise Linear Functions\n", + "\n", + "For non-linear relationships (part-load efficiency), use `PiecewiseConversion`:\n", + "```python\n", + "fx.PiecewiseConversion({\n", + " 'Fuel': fx.Piecewise([\n", + " fx.Piece(start=78, end=132), # Segment 1\n", + " fx.Piece(start=132, end=179), # Segment 2\n", + " ]),\n", + " 'Elec': fx.Piecewise([\n", + " fx.Piece(start=25, end=50), # Segment 1\n", + " fx.Piece(start=50, end=75), # Segment 2\n", + " ]),\n", + "})\n", + "```\n", + "\n", + "### When to Use Each Approach\n", + "\n", + "| Approach | Use Case | Complexity |\n", + "|----------|----------|------------|\n", + "| Time-varying factors | Efficiency depends on external conditions (temp, price) | Low |\n", + "| PiecewiseConversion | Efficiency depends on load level | Medium |\n", + "| PiecewiseEffects | Non-linear costs (economies of scale) | Medium |\n", + "\n", + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Model **time-varying efficiency** using conversion factor arrays\n", + "- Use **PiecewiseConversion** for load-dependent efficiency curves\n", + "- Apply **PiecewiseEffects** for non-linear cost functions\n", + "- Choose the right approach for your modeling needs\n", + "\n", + "### Next Steps\n", + "\n", + "- **[07-scenarios-and-periods](07-scenarios-and-periods.ipynb)**: Multi-scenario planning\n", + "- **[08-large-scale-optimization](08-large-scale-optimization.ipynb)**: Computational efficiency techniques" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/07-scenarios-and-periods.ipynb b/docs/notebooks/07-scenarios-and-periods.ipynb new file mode 100644 index 000000000..3daee6bb4 --- /dev/null +++ b/docs/notebooks/07-scenarios-and-periods.ipynb @@ -0,0 +1,564 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Scenarios and Periods: Investment Planning Under Uncertainty\n", + "\n", + "## User Story\n", + "\n", + "> *You're planning a district heating system for a new residential development. The project spans 3 years, and you face uncertainty: Will the winter be mild or harsh? Will gas prices stay stable or spike? You need to make investment decisions today that work well across multiple possible futures.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **Periods**: Multiple planning years with different conditions\n", + "- **Scenarios**: Uncertain futures (mild vs. harsh winter)\n", + "- **Scenario weights**: Probability-weighted optimization\n", + "- **Multi-dimensional data**: Parameters that vary by time, period, and scenario" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## The Planning Problem\n", + "\n", + "We're designing a heating system with:\n", + "\n", + "- **3 periods** (years): 2024, 2025, 2026 - gas prices expected to rise\n", + "- **2 scenarios**: \"Mild Winter\" (60% probability) and \"Harsh Winter\" (40% probability)\n", + "- **Investment decision**: Size of CHP unit (made once, works across all futures)\n", + "\n", + "The optimizer finds the investment that minimizes **expected cost** across all scenarios." + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## Define Dimensions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "# Time horizon: one representative winter week\n", + "timesteps = pd.date_range('2024-01-15', periods=168, freq='h') # 7 days\n", + "\n", + "# Planning periods (years)\n", + "periods = pd.Index([2024, 2025, 2026], name='period')\n", + "\n", + "# Scenarios with probabilities\n", + "scenarios = pd.Index(['Mild Winter', 'Harsh Winter'], name='scenario')\n", + "scenario_weights = np.array([0.6, 0.4]) # 60% mild, 40% harsh\n", + "\n", + "print(f'Time dimension: {len(timesteps)} hours')\n", + "print(f'Periods: {list(periods)}')\n", + "print(f'Scenarios: {list(scenarios)}')\n", + "print(f'Scenario weights: {dict(zip(scenarios, scenario_weights, strict=False))}')" + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "## Create Scenario-Dependent Demand Profiles\n", + "\n", + "Heat demand differs significantly between mild and harsh winters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "hours = np.arange(168)\n", + "hour_of_day = hours % 24\n", + "\n", + "# Base daily pattern (kW): higher in morning/evening\n", + "daily_pattern = np.select(\n", + " [\n", + " (hour_of_day >= 6) & (hour_of_day < 9), # Morning peak\n", + " (hour_of_day >= 9) & (hour_of_day < 17), # Daytime\n", + " (hour_of_day >= 17) & (hour_of_day < 22), # Evening peak\n", + " ],\n", + " [180, 120, 160],\n", + " default=100, # Night\n", + ").astype(float)\n", + "\n", + "# Add random variation\n", + "np.random.seed(42)\n", + "noise = np.random.normal(0, 10, len(timesteps))\n", + "\n", + "# Mild winter: lower demand\n", + "mild_demand = daily_pattern * 0.8 + noise\n", + "mild_demand = np.clip(mild_demand, 60, 200)\n", + "\n", + "# Harsh winter: higher demand\n", + "harsh_demand = daily_pattern * 1.3 + noise * 1.5\n", + "harsh_demand = np.clip(harsh_demand, 100, 280)\n", + "\n", + "# Create DataFrame with scenario columns (flixopt uses column names to match scenarios)\n", + "heat_demand = pd.DataFrame(\n", + " {\n", + " 'Mild Winter': mild_demand,\n", + " 'Harsh Winter': harsh_demand,\n", + " },\n", + " index=timesteps,\n", + ")\n", + "\n", + "print(f'Mild winter demand: {mild_demand.min():.0f} - {mild_demand.max():.0f} kW')\n", + "print(f'Harsh winter demand: {harsh_demand.min():.0f} - {harsh_demand.max():.0f} kW')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize demand scenarios with plotly\n", + "fig = px.line(\n", + " heat_demand.iloc[:48],\n", + " title='Heat Demand by Scenario (First 2 Days)',\n", + " labels={'index': 'Time', 'value': 'kW', 'variable': 'Scenario'},\n", + ")\n", + "fig.update_traces(mode='lines')\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Create Period-Dependent Prices\n", + "\n", + "Energy prices change across planning years:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "# Gas prices by period (€/kWh) - expected to rise\n", + "gas_prices = np.array([0.06, 0.08, 0.10]) # 2024, 2025, 2026\n", + "\n", + "# Electricity sell prices by period (€/kWh) - CHP revenue\n", + "elec_prices = np.array([0.28, 0.34, 0.43]) # Rising with gas\n", + "\n", + "print('Gas prices by period:')\n", + "for period, price in zip(periods, gas_prices, strict=False):\n", + " print(f' {period}: {price:.2f} €/kWh')\n", + "\n", + "print('\\nElectricity sell prices by period:')\n", + "for period, price in zip(periods, elec_prices, strict=False):\n", + " print(f' {period}: {price:.2f} €/kWh')" + ] + }, + { + "cell_type": "markdown", + "id": "11", + "metadata": {}, + "source": [ + "## Build the Flow System\n", + "\n", + "Initialize with all dimensions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system = fx.FlowSystem(\n", + " timesteps=timesteps,\n", + " periods=periods,\n", + " scenarios=scenarios,\n", + " scenario_weights=scenario_weights,\n", + ")\n", + "\n", + "print(flow_system)" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "## Add Components" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.add_elements(\n", + " # === Buses ===\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Bus('Heat', carrier='heat'),\n", + " fx.Bus('Gas', carrier='gas'),\n", + " # === Effects ===\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " # === Gas Supply (price varies by period) ===\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[\n", + " fx.Flow(\n", + " 'Gas',\n", + " bus='Gas',\n", + " size=1000,\n", + " effects_per_flow_hour=gas_prices, # Array = varies by period\n", + " )\n", + " ],\n", + " ),\n", + " # === CHP Unit (investment decision) ===\n", + " fx.linear_converters.CHP(\n", + " 'CHP',\n", + " electrical_efficiency=0.35,\n", + " thermal_efficiency=0.50,\n", + " electrical_flow=fx.Flow(\n", + " 'P_el',\n", + " bus='Electricity',\n", + " # Investment optimization: find optimal CHP size\n", + " size=fx.InvestParameters(\n", + " minimum_size=0,\n", + " maximum_size=100,\n", + " effects_of_investment_per_size={'costs': 50}, # 50 €/kW annualized\n", + " ),\n", + " relative_minimum=0.3,\n", + " ),\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat'),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas'),\n", + " ),\n", + " # === Gas Boiler (existing backup) ===\n", + " fx.linear_converters.Boiler(\n", + " 'Boiler',\n", + " thermal_efficiency=0.90,\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat', size=500),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas'),\n", + " ),\n", + " # === Electricity Sales (revenue varies by period) ===\n", + " fx.Sink(\n", + " 'ElecSales',\n", + " inputs=[\n", + " fx.Flow(\n", + " 'P_el',\n", + " bus='Electricity',\n", + " size=100,\n", + " effects_per_flow_hour=-elec_prices, # Negative = revenue\n", + " )\n", + " ],\n", + " ),\n", + " # === Heat Demand (varies by scenario) ===\n", + " fx.Sink(\n", + " 'HeatDemand',\n", + " inputs=[\n", + " fx.Flow(\n", + " 'Q_th',\n", + " bus='Heat',\n", + " size=1,\n", + " fixed_relative_profile=heat_demand, # DataFrame with scenario columns\n", + " )\n", + " ],\n", + " ),\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "## Run Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0.01));" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "## Analyze Results\n", + "\n", + "### Optimal Investment Decision" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "chp_size = flow_system.statistics.sizes['CHP(P_el)']\n", + "total_cost = flow_system.solution['costs']\n", + "\n", + "print('=== Investment Decision ===')\n", + "print(f'Optimal CHP size: {chp_size.round(1).to_pandas()} kW electrical')\n", + "print(f'Thermal capacity: {(chp_size * 0.50 / 0.35).round(1).to_pandas()} kW')\n", + "print(f'\\nExpected total cost: {total_cost.round(2).to_pandas()} €')" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "### Heat Balance by Scenario\n", + "\n", + "See how the system operates differently in each scenario:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "markdown", + "id": "21", + "metadata": {}, + "source": [ + "### CHP Operation Patterns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.heatmap('CHP(Q_th)')" + ] + }, + { + "cell_type": "markdown", + "id": "23", + "metadata": {}, + "source": [ + "### Multi-Dimensional Data Access\n", + "\n", + "Results include all dimensions (time, period, scenario):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "# View dimensions\n", + "flow_rates = flow_system.statistics.flow_rates\n", + "print('Flow rates dimensions:', dict(flow_rates.sizes))\n", + "\n", + "# Plot flow rates\n", + "flow_system.statistics.plot.flows()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "# CHP operation in harsh winter vs mild winter\n", + "chp_heat = flow_rates['CHP(Q_th)']\n", + "\n", + "print('CHP Heat Output Statistics:')\n", + "for scenario in scenarios:\n", + " scenario_data = chp_heat.sel(scenario=scenario)\n", + " print(f'\\n{scenario}:')\n", + " for period in periods:\n", + " period_data = scenario_data.sel(period=period)\n", + " print(f' {period}: avg={period_data.mean().item():.1f} kW, max={period_data.max().item():.1f} kW')" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "## Sensitivity: What if Only Mild Winter?\n", + "\n", + "Compare optimal CHP size if we only planned for mild winters:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "# Select only the mild winter scenario\n", + "fs_mild = flow_system.transform.sel(scenario='Mild Winter')\n", + "fs_mild.optimize(fx.solvers.HighsSolver(mip_gap=0.01))\n", + "\n", + "chp_size_mild = fs_mild.statistics.sizes['CHP(P_el)']\n", + "\n", + "print('=== Comparison ===')\n", + "print(f'CHP size (both scenarios): {chp_size.max(\"scenario\").round(2).values} kW')\n", + "print(f'CHP size (mild only): {chp_size_mild.round(2).values} kW')\n", + "print(f'\\nPlanning for uncertainty adds {(chp_size - chp_size_mild).round(2).values} kW capacity')" + ] + }, + { + "cell_type": "markdown", + "id": "28", + "metadata": {}, + "source": [ + "### Energy Flow Sankey\n", + "\n", + "A Sankey diagram visualizes the total energy flows through the system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "flow_system.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "30", + "metadata": {}, + "source": [ + "## Key Concepts\n", + "\n", + "### Multi-Dimensional FlowSystem\n", + "\n", + "```python\n", + "flow_system = fx.FlowSystem(\n", + " timesteps=timesteps, # Time dimension\n", + " periods=periods, # Planning periods (years)\n", + " scenarios=scenarios, # Uncertain futures\n", + " scenario_weights=weights, # Probabilities\n", + ")\n", + "```\n", + "\n", + "### Dimension-Varying Parameters\n", + "\n", + "| Data Shape | Meaning |\n", + "|------------|----------|\n", + "| Scalar | Same for all time/period/scenario |\n", + "| Array (n_periods,) | Varies by period |\n", + "| Array (n_scenarios,) | Varies by scenario |\n", + "| DataFrame with columns | Columns match scenario names |\n", + "| Full array (time, period, scenario) | Full specification |\n", + "\n", + "### Scenario Optimization\n", + "\n", + "The optimizer minimizes **expected cost**:\n", + "$$\\min \\sum_s w_s \\cdot \\text{Cost}_s$$\n", + "\n", + "where $w_s$ is the scenario weight (probability).\n", + "\n", + "### Selection Methods\n", + "\n", + "```python\n", + "# Select specific scenario\n", + "fs_mild = flow_system.transform.sel(scenario='Mild Winter')\n", + "\n", + "# Select specific period\n", + "fs_2025 = flow_system.transform.sel(period=2025)\n", + "\n", + "# Select time range\n", + "fs_day1 = flow_system.transform.sel(time=slice('2024-01-15', '2024-01-16'))\n", + "```\n", + "\n", + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Define **multiple periods** for multi-year planning\n", + "- Create **scenarios** for uncertain futures\n", + "- Use **scenario weights** for probability-weighted optimization\n", + "- Pass **dimension-varying parameters** (arrays and DataFrames)\n", + "- **Select** specific scenarios or periods for analysis\n", + "\n", + "### Next Steps\n", + "\n", + "- **[08-large-scale-optimization](08-large-scale-optimization.ipynb)**: Speed up large problems with resampling and clustering" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/08-large-scale-optimization.ipynb b/docs/notebooks/08-large-scale-optimization.ipynb new file mode 100644 index 000000000..c2f7af123 --- /dev/null +++ b/docs/notebooks/08-large-scale-optimization.ipynb @@ -0,0 +1,538 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Large-Scale Optimization: Computational Efficiency Techniques\n", + "\n", + "## User Story\n", + "\n", + "> *You're planning a district energy system with a full year of hourly data (8,760 timesteps). The optimization takes hours to complete. You need to find ways to get good solutions faster for iterative design exploration.*\n", + "\n", + "This notebook introduces:\n", + "\n", + "- **Resampling**: Reduce time resolution (e.g., hourly → 4-hourly)\n", + "- **Clustering**: Identify typical periods (e.g., 8 representative days)\n", + "- **Two-stage optimization**: Size with reduced data, dispatch at full resolution\n", + "- **Speed vs. accuracy trade-offs**: When to use each technique" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import timeit\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import plotly.express as px\n", + "import xarray as xr\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## Create a Realistic Annual Dataset\n", + "\n", + "We simulate one month of hourly data (720 timesteps) to demonstrate the techniques:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "# One month at hourly resolution\n", + "timesteps = pd.date_range('2024-01-01', periods=720, freq='h') # 30 days\n", + "hours = np.arange(len(timesteps))\n", + "hour_of_day = hours % 24\n", + "day_of_month = hours // 24\n", + "\n", + "print(f'Timesteps: {len(timesteps)} hours ({len(timesteps) / 24:.0f} days)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(42)\n", + "\n", + "# Heat demand: daily pattern with weekly variation\n", + "daily_pattern = np.select(\n", + " [\n", + " (hour_of_day >= 6) & (hour_of_day < 9),\n", + " (hour_of_day >= 9) & (hour_of_day < 17),\n", + " (hour_of_day >= 17) & (hour_of_day < 22),\n", + " ],\n", + " [200, 150, 180],\n", + " default=100,\n", + ").astype(float)\n", + "\n", + "# Add temperature effect (colder mid-month)\n", + "temp_effect = 1 + 0.3 * np.sin(day_of_month * np.pi / 30)\n", + "heat_demand = daily_pattern * temp_effect + np.random.normal(0, 10, len(timesteps))\n", + "heat_demand = np.clip(heat_demand, 80, 300)\n", + "\n", + "# Electricity price: time-of-use with volatility - high prices make CHP attractive\n", + "base_price = np.where((hour_of_day >= 7) & (hour_of_day <= 21), 0.32, 0.18)\n", + "elec_price = base_price * (1 + np.random.uniform(-0.15, 0.15, len(timesteps)))\n", + "\n", + "# Gas price: relatively stable and low\n", + "gas_price = 0.05 + np.random.uniform(-0.005, 0.005, len(timesteps))\n", + "\n", + "print(f'Heat demand: {heat_demand.min():.0f} - {heat_demand.max():.0f} kW')\n", + "print(f'Elec price: {elec_price.min():.3f} - {elec_price.max():.3f} €/kWh')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "# Visualize first week with plotly - using xarray and faceting\n", + "profiles = xr.Dataset(\n", + " {\n", + " 'Heat Demand [kW]': xr.DataArray(heat_demand[:168], dims=['time'], coords={'time': timesteps[:168]}),\n", + " 'Electricity Price [€/kWh]': xr.DataArray(elec_price[:168], dims=['time'], coords={'time': timesteps[:168]}),\n", + " }\n", + ")\n", + "\n", + "df = profiles.to_dataframe().reset_index().melt(id_vars='time', var_name='variable', value_name='value')\n", + "fig = px.line(df, x='time', y='value', facet_col='variable', height=300)\n", + "fig.update_yaxes(matches=None, showticklabels=True)\n", + "fig.for_each_annotation(lambda a: a.update(text=a.text.split('=')[-1]))\n", + "fig" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## Build the Base FlowSystem\n", + "\n", + "A typical district heating system with investment decisions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8", + "metadata": {}, + "outputs": [], + "source": [ + "def build_system(timesteps, heat_demand, elec_price, gas_price):\n", + " \"\"\"Build a FlowSystem with investment optimization.\"\"\"\n", + " fs = fx.FlowSystem(timesteps)\n", + "\n", + " fs.add_elements(\n", + " # Buses\n", + " fx.Bus('Electricity', carrier='electricity'),\n", + " fx.Bus(\n", + " 'Heat', carrier='heat', imbalance_penalty_per_flow_hour=1e5\n", + " ), # Allow for imbalance to prevent infeasibilities with fixed sizes\n", + " fx.Bus('Gas', carrier='gas'),\n", + " # Effects\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " # Gas Supply\n", + " fx.Source(\n", + " 'GasGrid',\n", + " outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=gas_price)],\n", + " ),\n", + " # CHP with investment optimization\n", + " fx.linear_converters.CHP(\n", + " 'CHP',\n", + " electrical_efficiency=0.38,\n", + " thermal_efficiency=0.47,\n", + " electrical_flow=fx.Flow(\n", + " 'P_el',\n", + " bus='Electricity',\n", + " size=fx.InvestParameters(\n", + " minimum_size=0,\n", + " maximum_size=150,\n", + " effects_of_investment_per_size={'costs': 25},\n", + " ),\n", + " relative_minimum=0.4,\n", + " ),\n", + " thermal_flow=fx.Flow('Q_th', bus='Heat'),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas'),\n", + " ),\n", + " # Gas Boiler with investment optimization\n", + " fx.linear_converters.Boiler(\n", + " 'Boiler',\n", + " thermal_efficiency=0.92,\n", + " thermal_flow=fx.Flow(\n", + " 'Q_th',\n", + " bus='Heat',\n", + " size=fx.InvestParameters(\n", + " minimum_size=0,\n", + " maximum_size=400,\n", + " effects_of_investment_per_size={'costs': 8},\n", + " ),\n", + " ),\n", + " fuel_flow=fx.Flow('Q_fuel', bus='Gas'),\n", + " ),\n", + " # Thermal Storage with investment optimization\n", + " fx.Storage(\n", + " 'Storage',\n", + " capacity_in_flow_hours=fx.InvestParameters(\n", + " minimum_size=0,\n", + " maximum_size=1000,\n", + " effects_of_investment_per_size={'costs': 0.5}, # Cheap storage\n", + " ),\n", + " initial_charge_state=0,\n", + " eta_charge=0.98,\n", + " eta_discharge=0.98,\n", + " relative_loss_per_hour=0.005, # Low losses\n", + " charging=fx.Flow('Charge', bus='Heat', size=150),\n", + " discharging=fx.Flow('Discharge', bus='Heat', size=150),\n", + " ),\n", + " # Electricity Sales\n", + " fx.Sink(\n", + " 'ElecSales',\n", + " inputs=[fx.Flow('P_el', bus='Electricity', size=200, effects_per_flow_hour=-elec_price)],\n", + " ),\n", + " # Heat Demand\n", + " fx.Sink(\n", + " 'HeatDemand',\n", + " inputs=[fx.Flow('Q_th', bus='Heat', size=1, fixed_relative_profile=heat_demand)],\n", + " ),\n", + " )\n", + "\n", + " return fs\n", + "\n", + "\n", + "# Build the base system\n", + "flow_system = build_system(timesteps, heat_demand, elec_price, gas_price)\n", + "print(f'Base system: {len(timesteps)} timesteps')" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "## Technique 1: Resampling\n", + "\n", + "Reduce time resolution to speed up optimization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "solver = fx.solvers.HighsSolver(mip_gap=0.01)\n", + "\n", + "# Resample from 1h to 4h resolution\n", + "fs_resampled = flow_system.transform.resample('4h')\n", + "\n", + "print(f'Original: {len(flow_system.timesteps)} timesteps')\n", + "print(f'Resampled: {len(fs_resampled.timesteps)} timesteps')\n", + "print(f'Reduction: {(1 - len(fs_resampled.timesteps) / len(flow_system.timesteps)) * 100:.0f}%')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "# Optimize resampled system\n", + "start = timeit.default_timer()\n", + "fs_resampled.optimize(solver)\n", + "time_resampled = timeit.default_timer() - start\n", + "\n", + "print(f'\\nResampled optimization: {time_resampled:.2f} seconds')\n", + "print(f'Cost: {fs_resampled.solution[\"costs\"].item():.2f} €')" + ] + }, + { + "cell_type": "markdown", + "id": "12", + "metadata": {}, + "source": [ + "## Technique 2: Two-Stage Optimization\n", + "\n", + "1. **Stage 1**: Size components with resampled data (fast)\n", + "2. **Stage 2**: Fix sizes and optimize dispatch at full resolution" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "# Stage 1: Sizing with resampled data\n", + "start = timeit.default_timer()\n", + "fs_sizing = flow_system.transform.resample('4h')\n", + "fs_sizing.optimize(solver)\n", + "time_stage1 = timeit.default_timer() - start\n", + "\n", + "print('=== Stage 1: Sizing ===')\n", + "print(f'Time: {time_stage1:.2f} seconds')\n", + "print('\\nOptimized sizes:')\n", + "for name, size in fs_sizing.statistics.sizes.items():\n", + " print(f' {name}: {float(size.item()):.1f}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "# Stage 2: Dispatch at full resolution with fixed sizes\n", + "start = timeit.default_timer()\n", + "fs_dispatch = flow_system.transform.fix_sizes(fs_sizing.statistics.sizes)\n", + "fs_dispatch.optimize(solver)\n", + "time_stage2 = timeit.default_timer() - start\n", + "\n", + "print('=== Stage 2: Dispatch ===')\n", + "print(f'Time: {time_stage2:.2f} seconds')\n", + "print(f'Cost: {fs_dispatch.solution[\"costs\"].item():.2f} €')\n", + "print(f'\\nTotal two-stage time: {time_stage1 + time_stage2:.2f} seconds')" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "## Technique 3: Full Optimization (Baseline)\n", + "\n", + "For comparison, solve the full problem:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "start = timeit.default_timer()\n", + "fs_full = flow_system.copy()\n", + "fs_full.optimize(solver)\n", + "time_full = timeit.default_timer() - start\n", + "\n", + "print('=== Full Optimization ===')\n", + "print(f'Time: {time_full:.2f} seconds')\n", + "print(f'Cost: {fs_full.solution[\"costs\"].item():.2f} €')" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "## Compare Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "# Collect results\n", + "results = {\n", + " 'Full (baseline)': {\n", + " 'Time [s]': time_full,\n", + " 'Cost [€]': fs_full.solution['costs'].item(),\n", + " 'CHP Size [kW]': fs_full.statistics.sizes['CHP(P_el)'].item(),\n", + " 'Boiler Size [kW]': fs_full.statistics.sizes['Boiler(Q_th)'].item(),\n", + " 'Storage Size [kWh]': fs_full.statistics.sizes['Storage'].item(),\n", + " },\n", + " 'Resampled (4h)': {\n", + " 'Time [s]': time_resampled,\n", + " 'Cost [€]': fs_resampled.solution['costs'].item(),\n", + " 'CHP Size [kW]': fs_resampled.statistics.sizes['CHP(P_el)'].item(),\n", + " 'Boiler Size [kW]': fs_resampled.statistics.sizes['Boiler(Q_th)'].item(),\n", + " 'Storage Size [kWh]': fs_resampled.statistics.sizes['Storage'].item(),\n", + " },\n", + " 'Two-Stage': {\n", + " 'Time [s]': time_stage1 + time_stage2,\n", + " 'Cost [€]': fs_dispatch.solution['costs'].item(),\n", + " 'CHP Size [kW]': fs_dispatch.statistics.sizes['CHP(P_el)'].item(),\n", + " 'Boiler Size [kW]': fs_dispatch.statistics.sizes['Boiler(Q_th)'].item(),\n", + " 'Storage Size [kWh]': fs_dispatch.statistics.sizes['Storage'].item(),\n", + " },\n", + "}\n", + "\n", + "comparison = pd.DataFrame(results).T\n", + "\n", + "# Add relative metrics\n", + "baseline_cost = comparison.loc['Full (baseline)', 'Cost [€]']\n", + "baseline_time = comparison.loc['Full (baseline)', 'Time [s]']\n", + "comparison['Cost Gap [%]'] = ((comparison['Cost [€]'] - baseline_cost) / baseline_cost * 100).round(2)\n", + "comparison['Speedup'] = (baseline_time / comparison['Time [s]']).round(1)\n", + "\n", + "comparison.round(2)" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "## Visual Comparison: Heat Balance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "# Full optimization heat balance\n", + "fs_full.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "# Two-stage optimization heat balance\n", + "fs_dispatch.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "markdown", + "id": "22", + "metadata": {}, + "source": [ + "### Energy Flow Sankey (Full Optimization)\n", + "\n", + "A Sankey diagram visualizes the total energy flows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23", + "metadata": {}, + "outputs": [], + "source": [ + "fs_full.statistics.plot.sankey()" + ] + }, + { + "cell_type": "markdown", + "id": "24", + "metadata": {}, + "source": [ + "## When to Use Each Technique\n", + "\n", + "| Technique | Best For | Trade-off |\n", + "|-----------|----------|------------|\n", + "| **Full optimization** | Final results, small problems | Slowest, most accurate |\n", + "| **Resampling** | Quick screening, trend analysis | Fast, loses temporal detail |\n", + "| **Two-stage** | Investment decisions, large problems | Good balance of speed and accuracy |\n", + "| **Clustering** | Preserves extreme periods | Requires `tsam` package |\n", + "\n", + "### Resampling Options\n", + "\n", + "```python\n", + "# Different resolutions\n", + "fs_2h = flow_system.transform.resample('2h') # 2-hourly\n", + "fs_4h = flow_system.transform.resample('4h') # 4-hourly\n", + "fs_daily = flow_system.transform.resample('1D') # Daily\n", + "\n", + "# Different aggregation methods\n", + "fs_mean = flow_system.transform.resample('4h', method='mean') # Default\n", + "fs_max = flow_system.transform.resample('4h', method='max') # Preserve peaks\n", + "```\n", + "\n", + "### Two-Stage Workflow\n", + "\n", + "```python\n", + "# Stage 1: Sizing\n", + "fs_sizing = flow_system.transform.resample('4h')\n", + "fs_sizing.optimize(solver)\n", + "\n", + "# Stage 2: Dispatch\n", + "fs_dispatch = flow_system.transform.fix_sizes(fs_sizing.statistics.sizes)\n", + "fs_dispatch.optimize(solver)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "25", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "You learned how to:\n", + "\n", + "- Use **`transform.resample()`** to reduce time resolution\n", + "- Apply **two-stage optimization** for large investment problems\n", + "- Use **`transform.fix_sizes()`** to lock in investment decisions\n", + "- Compare **speed vs. accuracy** trade-offs\n", + "\n", + "### Key Takeaways\n", + "\n", + "1. **Start fast**: Use resampling for initial exploration\n", + "2. **Iterate**: Refine with two-stage optimization\n", + "3. **Validate**: Run full optimization for final results\n", + "4. **Monitor**: Check cost gaps to ensure acceptable accuracy\n", + "\n", + "### Further Reading\n", + "\n", + "- For clustering with typical periods, see `transform.cluster()` (requires `tsam` package)\n", + "- For time selection, see `transform.sel()` and `transform.isel()`" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/index.md b/docs/notebooks/index.md new file mode 100644 index 000000000..b8003f6bb --- /dev/null +++ b/docs/notebooks/index.md @@ -0,0 +1,44 @@ +# Examples + +Learn flixopt through practical examples organized by topic. Each notebook includes a real-world user story and progressively builds your understanding. + +## Getting Started + +| Notebook | Description | +|----------|-------------| +| [01-Quickstart](01-quickstart.ipynb) | Minimal working example - heat a workshop with a gas boiler | +| [02-Heat System](02-heat-system.ipynb) | District heating with thermal storage and time-varying prices | + +## Investment & Planning + +| Notebook | Description | +|----------|-------------| +| [03-Investment Optimization](03-investment-optimization.ipynb) | Size a solar heating system - let the optimizer decide equipment sizes | +| [04-Operational Constraints](04-operational-constraints.ipynb) | Industrial boiler with startup costs, minimum uptime, and load constraints | + +## Advanced Modeling + +| Notebook | Description | +|----------|-------------| +| [05-Multi-Carrier Systems](05-multi-carrier-system.ipynb) | Hospital with CHP producing both electricity and heat | +| [06-Piecewise Efficiency](06-piecewise-efficiency.ipynb) | Heat pump with temperature-dependent COP and part-load curves | + +## Scenarios & Scaling + +| Notebook | Description | +|----------|-------------| +| [07-Scenarios and Periods](07-scenarios-and-periods.ipynb) | Multi-year planning with uncertain demand scenarios | +| [08-Large-Scale Optimization](08-large-scale-optimization.ipynb) | Speed up large problems with resampling and two-stage optimization | + +## Key Concepts by Notebook + +| Concept | Introduced In | +|---------|---------------| +| `FlowSystem`, `Bus`, `Flow` | 01-Quickstart | +| `Storage`, time-varying prices | 02-Heat System | +| `InvestParameters`, optimal sizing | 03-Investment | +| `StatusParameters`, startup costs | 04-Operational | +| Multi-carrier, CHP | 05-Multi-Carrier | +| `Piecewise`, variable efficiency | 06-Piecewise | +| Periods, scenarios, weights | 07-Scenarios | +| `transform.resample()`, `fix_sizes()` | 08-Large-Scale | diff --git a/docs/overrides/main.html b/docs/overrides/main.html new file mode 100644 index 000000000..b245acdaa --- /dev/null +++ b/docs/overrides/main.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} + +{% block content %} +{% if page.nb_url %} + + {% include ".icons/material/download.svg" %} + +{% endif %} + +{{ super() }} +{% endblock content %} diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index 0b600fb08..0c84d73e5 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -783,6 +783,168 @@ button:focus-visible { border-color: rgba(255, 255, 255, 0.2); } +/* ============================================================================ + Jupyter Notebook Styling (syncs with dark/light theme) + ========================================================================= */ + +/* Override Jupyter notebook syntax highlighting to match Material theme */ +/* Use Material's CSS variables for consistent colors */ +.highlight-ipynb { background: var(--md-code-bg-color) !important; color: var(--md-code-fg-color) !important; } + +/* Comments */ +.highlight-ipynb .c, .highlight-ipynb .c1, .highlight-ipynb .ch, +.highlight-ipynb .cm, .highlight-ipynb .cp, .highlight-ipynb .cpf, +.highlight-ipynb .cs { color: var(--md-code-hl-comment-color, var(--md-default-fg-color--light)) !important; font-style: italic; } + +/* Keywords */ +.highlight-ipynb .k, .highlight-ipynb .kc, .highlight-ipynb .kd, +.highlight-ipynb .kn, .highlight-ipynb .kp, .highlight-ipynb .kr, +.highlight-ipynb .kt { color: var(--md-code-hl-keyword-color, #3f6ec6) !important; } + +/* Strings */ +.highlight-ipynb .s, .highlight-ipynb .s1, .highlight-ipynb .s2, +.highlight-ipynb .sa, .highlight-ipynb .sb, .highlight-ipynb .sc, +.highlight-ipynb .sd, .highlight-ipynb .se, .highlight-ipynb .sh, +.highlight-ipynb .si, .highlight-ipynb .sl, .highlight-ipynb .sr, +.highlight-ipynb .ss, .highlight-ipynb .sx { color: var(--md-code-hl-string-color, #1c7d4d) !important; } + +/* Numbers */ +.highlight-ipynb .m, .highlight-ipynb .mb, .highlight-ipynb .mf, +.highlight-ipynb .mh, .highlight-ipynb .mi, .highlight-ipynb .mo, +.highlight-ipynb .il { color: var(--md-code-hl-number-color, #d52a2a) !important; } + +/* Functions */ +.highlight-ipynb .nf, .highlight-ipynb .fm { color: var(--md-code-hl-function-color, #a846b9) !important; } + +/* Constants/Builtins */ +.highlight-ipynb .nb, .highlight-ipynb .bp, +.highlight-ipynb .kc { color: var(--md-code-hl-constant-color, #6e59d9) !important; } + +/* Special */ +.highlight-ipynb .nc, .highlight-ipynb .ne, .highlight-ipynb .nd, +.highlight-ipynb .ni { color: var(--md-code-hl-special-color, #db1457) !important; } + +/* Names/variables */ +.highlight-ipynb .n, .highlight-ipynb .nn, .highlight-ipynb .na, +.highlight-ipynb .nv, .highlight-ipynb .no { color: var(--md-code-hl-name-color, var(--md-code-fg-color)) !important; } + +/* Operators */ +.highlight-ipynb .o, .highlight-ipynb .ow { color: var(--md-code-hl-operator-color, var(--md-default-fg-color--light)) !important; } + +/* Punctuation */ +.highlight-ipynb .p, .highlight-ipynb .pm { color: var(--md-code-hl-punctuation-color, var(--md-default-fg-color--light)) !important; } + +/* Errors */ +.highlight-ipynb .err { color: var(--md-code-hl-special-color, #db1457) !important; } + +/* Notebook container */ +.jupyter-wrapper { + margin: 1rem 0; +} + +/* Code cell styling - clean and modern */ +.jupyter-wrapper .jp-CodeCell { + border-radius: 0.4rem; + margin: 0.5rem 0; + border: 1px solid var(--md-default-fg-color--lightest); + overflow: hidden; +} + +/* Input cells (code) */ +.jupyter-wrapper .jp-CodeCell .jp-InputArea { + background-color: var(--md-code-bg-color); + border: none; +} + +.jupyter-wrapper .jp-InputArea pre { + margin: 0; + padding: 0.6rem 0.8rem; + font-size: 0.72rem; + line-height: 1.4; +} + +/* Output cells */ +.jupyter-wrapper .jp-OutputArea pre { + font-size: 0.7rem; + margin: 0; +} + +/* Cell prompts (In [1]:, Out [1]:) - hide for cleaner look */ +.jupyter-wrapper .jp-InputPrompt, +.jupyter-wrapper .jp-OutputPrompt { + display: none; +} + +/* Markdown cells - blend with page, no background */ +.jupyter-wrapper .jp-MarkdownCell { + background: transparent; + border: none; + margin: 0; +} + +.jupyter-wrapper .jp-RenderedMarkdown { + padding: 0.5rem 0; +} + +/* Tables in notebooks */ +.jupyter-wrapper table { + font-size: 0.7rem; + margin: 0; + border-collapse: collapse; +} + +.jupyter-wrapper table th, +.jupyter-wrapper table td { + padding: 0.3rem 0.6rem; + border: 1px solid var(--md-default-fg-color--lightest); +} + +.jupyter-wrapper table th { + background-color: var(--md-default-fg-color--lightest); + font-weight: 600; +} + +/* Images and plots */ +.jupyter-wrapper .jp-RenderedImage img, +.jupyter-wrapper .jp-RenderedImage svg { + max-width: 100%; + height: auto; + display: block; + margin: 0 auto; +} + +/* Dark mode adjustments */ +[data-md-color-scheme="slate"] .jupyter-wrapper .jp-CodeCell { + border-color: rgba(255, 255, 255, 0.1); +} + +[data-md-color-scheme="slate"] .jupyter-wrapper table th { + background-color: rgba(255, 255, 255, 0.05); +} + +[data-md-color-scheme="slate"] .jupyter-wrapper table th, +[data-md-color-scheme="slate"] .jupyter-wrapper table td { + border-color: rgba(255, 255, 255, 0.1); +} + +/* Plotly charts - ensure proper sizing */ +.jupyter-wrapper .plotly-graph-div { + margin: 0 auto; +} + +/* Error output styling */ +.jupyter-wrapper .jp-RenderedText[data-mime-type="application/vnd.jupyter.stderr"] { + background-color: rgba(255, 0, 0, 0.05); + color: #c7254e; + padding: 0.5rem; + border-radius: 0.3rem; +} + +[data-md-color-scheme="slate"] .jupyter-wrapper .jp-RenderedText[data-mime-type="application/vnd.jupyter.stderr"] { + background-color: rgba(255, 0, 0, 0.15); + color: #ff6b6b; +} + /* ============================================================================ Footer Alignment Fix ========================================================================= */ diff --git a/docs/user-guide/building-models/index.md b/docs/user-guide/building-models/index.md index 1133d5cde..d961040bf 100644 --- a/docs/user-guide/building-models/index.md +++ b/docs/user-guide/building-models/index.md @@ -16,5 +16,5 @@ Learn how to construct FlowSystem models step by step: For now, see: - **[Core Concepts](../core-concepts.md)** - Understand the fundamental building blocks -- **[Examples](../../examples/index.md)** - Working code you can learn from +- **[Examples](../../notebooks/index.md)** - Working code you can learn from - **[Mathematical Notation](../mathematical-notation/index.md)** - Detailed specifications of each element diff --git a/docs/user-guide/core-concepts.md b/docs/user-guide/core-concepts.md index 14e5723d6..47e4a882c 100644 --- a/docs/user-guide/core-concepts.md +++ b/docs/user-guide/core-concepts.md @@ -243,7 +243,7 @@ While our example used a heating system, flixOpt works for any flow-based optimi ## Next Steps - **[Building Models](building-models/index.md)** — Step-by-step guide to constructing models -- **[Examples](../examples/index.md)** — Working code for common scenarios +- **[Examples](../notebooks/index.md)** — Working code for common scenarios - **[Mathematical Notation](mathematical-notation/index.md)** — Detailed constraint formulations ## Advanced: Extending with linopy diff --git a/docs/user-guide/index.md b/docs/user-guide/index.md index bfb288ea4..d079f645f 100644 --- a/docs/user-guide/index.md +++ b/docs/user-guide/index.md @@ -59,14 +59,14 @@ This guide follows a sequential learning path: ### Getting Started - [Quick Start](../home/quick-start.md) - Build your first model in 5 minutes -- [Minimal Example](../examples/00-Minimal Example.md) - Simplest possible model +- [Minimal Example](../notebooks/01-quickstart.ipynb) - Simplest possible model - [Core Concepts](core-concepts.md) - Understand the fundamentals ### Reference - [Mathematical Notation](mathematical-notation/index.md) - Detailed specifications - [API Reference](../api-reference/index.md) - Complete class documentation -- [Examples](../examples/index.md) - Working code to learn from +- [Examples](../notebooks/index.md) - Working code to learn from ### Help diff --git a/docs/user-guide/optimization/index.md b/docs/user-guide/optimization/index.md index b1bd0caf6..1d36eb9ba 100644 --- a/docs/user-guide/optimization/index.md +++ b/docs/user-guide/optimization/index.md @@ -347,6 +347,6 @@ If solutions don't match expectations: ## Next Steps -- See [Examples](../../examples/03-Optimization Modes.md) for working code +- See [Examples](../../notebooks/index.md) for working code - Learn about [Mathematical Notation](../mathematical-notation/index.md) - Explore [Recipes](../recipes/index.md) for common patterns diff --git a/docs/user-guide/results-plotting.md b/docs/user-guide/results-plotting.md index bfb6c8777..c64111772 100644 --- a/docs/user-guide/results-plotting.md +++ b/docs/user-guide/results-plotting.md @@ -18,7 +18,7 @@ flow_system.statistics.plot.heatmap('Boiler(Q_th)|flow_rate') ## PlotResult: Data + Figure -Every plot method returns a [`PlotResult`][flixopt.plot_accessors.PlotResult] object containing both: +Every plot method returns a [`PlotResult`][flixopt.statistics_accessor.PlotResult] object containing both: - **`data`**: An xarray Dataset with the prepared data - **`figure`**: A Plotly Figure object diff --git a/docs/user-guide/results/index.md b/docs/user-guide/results/index.md index 5f103dd39..a9b40f7f9 100644 --- a/docs/user-guide/results/index.md +++ b/docs/user-guide/results/index.md @@ -280,4 +280,4 @@ flow_system.to_netcdf('results/optimized_system.nc') ## Next Steps - [Plotting Results](../results-plotting.md) - Detailed plotting documentation -- [Examples](../../examples/index.md) - Working code examples +- [Examples](../../notebooks/index.md) - Working code examples diff --git a/docs/user-guide/support.md b/docs/user-guide/support.md index 5f26cdd24..517a353a1 100644 --- a/docs/user-guide/support.md +++ b/docs/user-guide/support.md @@ -15,7 +15,7 @@ When opening an issue, include: - [FAQ](faq.md) — Common questions - [Troubleshooting](troubleshooting.md) — Common issues -- [Examples](../examples/index.md) — Working code +- [Examples](../notebooks/index.md) — Working code - [API Reference](../api-reference/index.md) — Technical docs ## Contributing diff --git a/examples/00_Minmal/minimal_example.py b/examples/00_Minmal/minimal_example.py deleted file mode 100644 index 207faa9a9..000000000 --- a/examples/00_Minmal/minimal_example.py +++ /dev/null @@ -1,36 +0,0 @@ -""" -This script shows how to use the flixopt framework to model a super minimalistic energy system in the most concise way possible. -THis can also be used to create proposals for new features, bug reports etc -""" - -import numpy as np -import pandas as pd - -import flixopt as fx - -if __name__ == '__main__': - fx.CONFIG.silent() - flow_system = fx.FlowSystem(pd.date_range('2020-01-01', periods=3, freq='h')) - - flow_system.add_elements( - fx.Bus('Heat'), - fx.Bus('Gas'), - fx.Effect('Costs', '€', 'Cost', is_standard=True, is_objective=True), - fx.linear_converters.Boiler( - 'Boiler', - thermal_efficiency=0.5, - thermal_flow=fx.Flow(label='Heat', bus='Heat', size=50), - fuel_flow=fx.Flow(label='Gas', bus='Gas'), - ), - fx.Sink( - 'Sink', - inputs=[fx.Flow(label='Demand', bus='Heat', size=1, fixed_relative_profile=np.array([30, 0, 20]))], - ), - fx.Source( - 'Source', - outputs=[fx.Flow(label='Gas', bus='Gas', size=1000, effects_per_flow_hour=0.04)], - ), - ) - - flow_system.optimize(fx.solvers.HighsSolver(0.01, 60)) - flow_system.statistics.plot.balance('Heat') diff --git a/examples/01_Simple/simple_example.py b/examples/01_Simple/simple_example.py deleted file mode 100644 index b63260ece..000000000 --- a/examples/01_Simple/simple_example.py +++ /dev/null @@ -1,126 +0,0 @@ -""" -This script shows how to use the flixopt framework to model a simple energy system. -""" - -import numpy as np -import pandas as pd - -import flixopt as fx - -if __name__ == '__main__': - fx.CONFIG.exploring() - - # --- Create Time Series Data --- - # Heat demand profile (e.g., kW) over time and corresponding power prices - heat_demand_per_h = np.array([30, 0, 90, 110, 110, 20, 20, 20, 20]) - power_prices = 1 / 1000 * np.array([80, 80, 80, 80, 80, 80, 80, 80, 80]) - - # Create datetime array starting from '2020-01-01' for the given time period - timesteps = pd.date_range('2020-01-01', periods=len(heat_demand_per_h), freq='h') - flow_system = fx.FlowSystem(timesteps=timesteps) - - # --- Define Energy Buses --- - # These represent nodes, where the used medias are balanced (electricity, heat, and gas) - # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, etc.) - flow_system.add_elements( - fx.Bus(label='Strom', carrier='electricity'), - fx.Bus(label='Fernwärme', carrier='heat'), - fx.Bus(label='Gas', carrier='gas'), - ) - - # --- Define Effects (Objective and CO2 Emissions) --- - # Cost effect: used as the optimization objective --> minimizing costs - costs = fx.Effect( - label='costs', - unit='€', - description='Kosten', - is_standard=True, # standard effect: no explicit value needed for costs - is_objective=True, # Minimizing costs as the optimization objective - share_from_temporal={'CO2': 0.2}, - ) - - # CO2 emissions effect with an associated cost impact - CO2 = fx.Effect( - label='CO2', - unit='kg', - description='CO2_e-Emissionen', - maximum_per_hour=1000, # Max CO2 emissions per hour - ) - - # --- Define Flow System Components --- - # Boiler: Converts fuel (gas) into thermal energy (heat) - boiler = fx.linear_converters.Boiler( - label='Boiler', - thermal_efficiency=0.5, - thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme', size=50, relative_minimum=0.1, relative_maximum=1), - fuel_flow=fx.Flow(label='Q_fu', bus='Gas'), - ) - - # Combined Heat and Power (CHP): Generates both electricity and heat from fuel - chp = fx.linear_converters.CHP( - label='CHP', - thermal_efficiency=0.5, - electrical_efficiency=0.4, - electrical_flow=fx.Flow('P_el', bus='Strom', size=60, relative_minimum=5 / 60), - thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), - fuel_flow=fx.Flow('Q_fu', bus='Gas'), - ) - - # Storage: Energy storage system with charging and discharging capabilities - storage = fx.Storage( - label='Storage', - charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1000), - discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1000), - capacity_in_flow_hours=fx.InvestParameters(effects_of_investment=20, fixed_size=30, mandatory=True), - initial_charge_state=0, # Initial storage state: empty - relative_maximum_charge_state=1 / 100 * np.array([80, 70, 80, 80, 80, 80, 80, 80, 80]), - relative_maximum_final_charge_state=0.8, - eta_charge=0.9, - eta_discharge=1, # Efficiency factors for charging/discharging - relative_loss_per_hour=0.08, # 8% loss per hour. Absolute loss depends on current charge state - prevent_simultaneous_charge_and_discharge=True, # Prevent charging and discharging at the same time - ) - - # Heat Demand Sink: Represents a fixed heat demand profile - heat_sink = fx.Sink( - label='Heat Demand', - inputs=[fx.Flow(label='Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand_per_h)], - ) - - # Gas Source: Gas tariff source with associated costs and CO2 emissions - gas_source = fx.Source( - label='Gastarif', - outputs=[ - fx.Flow(label='Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={costs.label: 0.04, CO2.label: 0.3}) - ], - ) - - # Power Sink: Represents the export of electricity to the grid - power_sink = fx.Sink( - label='Einspeisung', inputs=[fx.Flow(label='P_el', bus='Strom', effects_per_flow_hour=-1 * power_prices)] - ) - - # --- Build the Flow System --- - # Add all defined components and effects to the flow system - flow_system.add_elements(costs, CO2, boiler, storage, chp, heat_sink, gas_source, power_sink) - - # Visualize the flow system for validation purposes - flow_system.topology.plot() - - # --- Define and Solve Optimization --- - flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) - - # --- Analyze Results --- - # Plotting through statistics accessor - returns PlotResult with .data and .figure - flow_system.statistics.plot.balance('Fernwärme') - flow_system.statistics.plot.balance('Storage') - flow_system.statistics.plot.heatmap('CHP(Q_th)') - flow_system.statistics.plot.heatmap('Storage') - - # Access data as xarray Datasets - print(flow_system.statistics.flow_rates) - print(flow_system.statistics.charge_states) - - # Duration curve and effects analysis - flow_system.statistics.plot.duration_curve('Boiler(Q_th)') - print(flow_system.statistics.temporal_effects) diff --git a/examples/02_Complex/complex_example.py b/examples/02_Complex/complex_example.py deleted file mode 100644 index 3f38ff954..000000000 --- a/examples/02_Complex/complex_example.py +++ /dev/null @@ -1,207 +0,0 @@ -""" -This script shows how to use the flixopt framework to model a more complex energy system. -""" - -import numpy as np -import pandas as pd - -import flixopt as fx - -if __name__ == '__main__': - fx.CONFIG.exploring() - - # --- Experiment Options --- - # Configure options for testing various parameters and behaviors - check_penalty = False - imbalance_penalty = 1e5 - use_chp_with_piecewise_conversion = True - - # --- Define Demand and Price Profiles --- - # Input data for electricity and heat demands, as well as electricity price - electricity_demand = np.array([70, 80, 90, 90, 90, 90, 90, 90, 90]) - heat_demand = ( - np.array([30, 0, 90, 110, 2000, 20, 20, 20, 20]) - if check_penalty - else np.array([30, 0, 90, 110, 110, 20, 20, 20, 20]) - ) - electricity_price = np.array([40, 40, 40, 40, 40, 40, 40, 40, 40]) - - # --- Define the Flow System, that will hold all elements, and the time steps you want to model --- - timesteps = pd.date_range('2020-01-01', periods=len(heat_demand), freq='h') - flow_system = fx.FlowSystem(timesteps) # Create FlowSystem - - # --- Define Energy Buses --- - # Represent node balances (inputs=outputs) for the different energy carriers (electricity, heat, gas) in the system - # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, blue for gas) - flow_system.add_elements( - fx.Bus('Strom', carrier='electricity', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Fernwärme', carrier='heat', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Gas', carrier='gas', imbalance_penalty_per_flow_hour=imbalance_penalty), - ) - - # --- Define Effects --- - # Specify effects related to costs, CO2 emissions, and primary energy consumption - Costs = fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True, share_from_temporal={'CO2': 0.2}) - CO2 = fx.Effect('CO2', 'kg', 'CO2_e-Emissionen') - PE = fx.Effect('PE', 'kWh_PE', 'Primärenergie', maximum_total=3.5e3) - - # --- Define Components --- - # 1. Define Boiler Component - # A gas boiler that converts fuel into thermal output, with investment and on-inactive parameters - Gaskessel = fx.linear_converters.Boiler( - 'Kessel', - thermal_efficiency=0.5, # Efficiency ratio - status_parameters=fx.StatusParameters( - effects_per_active_hour={Costs.label: 0, CO2.label: 1000} - ), # CO2 emissions per hour - thermal_flow=fx.Flow( - label='Q_th', # Thermal output - bus='Fernwärme', # Linked bus - size=fx.InvestParameters( - effects_of_investment=1000, # Fixed investment costs - fixed_size=50, # Fixed size - mandatory=True, # Forced investment - effects_of_investment_per_size={Costs.label: 10, PE.label: 2}, # Specific costs - ), - load_factor_max=1.0, # Maximum load factor (50 kW) - load_factor_min=0.1, # Minimum load factor (5 kW) - relative_minimum=5 / 50, # Minimum part load - relative_maximum=1, # Maximum part load - previous_flow_rate=50, # Previous flow rate - flow_hours_max=1e6, # Total energy flow limit - status_parameters=fx.StatusParameters( - active_hours_min=0, # Minimum operating hours - active_hours_max=1000, # Maximum operating hours - max_uptime=10, # Max consecutive operating hours - min_uptime=np.array([1, 1, 1, 1, 1, 2, 2, 2, 2]), # min consecutive operation hours - max_downtime=10, # Max consecutive inactive hours - effects_per_startup={Costs.label: 0.01}, # Cost per startup - startup_limit=1000, # Max number of starts - ), - ), - fuel_flow=fx.Flow(label='Q_fu', bus='Gas', size=200), - ) - - # 2. Define CHP Unit - # Combined Heat and Power unit that generates both electricity and heat from fuel - bhkw = fx.linear_converters.CHP( - 'BHKW2', - thermal_efficiency=0.5, - electrical_efficiency=0.4, - status_parameters=fx.StatusParameters(effects_per_startup={Costs.label: 0.01}), - electrical_flow=fx.Flow('P_el', bus='Strom', size=60, relative_minimum=5 / 60), - thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=1e3), - fuel_flow=fx.Flow('Q_fu', bus='Gas', size=1e3, previous_flow_rate=20), # The CHP was ON previously - ) - - # 3. Define CHP with Piecewise Conversion - # This CHP unit uses piecewise conversion for more dynamic behavior over time - P_el = fx.Flow('P_el', bus='Strom', size=60, previous_flow_rate=20) - Q_th = fx.Flow('Q_th', bus='Fernwärme') - Q_fu = fx.Flow('Q_fu', bus='Gas') - piecewise_conversion = fx.PiecewiseConversion( - { - P_el.label: fx.Piecewise([fx.Piece(5, 30), fx.Piece(40, 60)]), - Q_th.label: fx.Piecewise([fx.Piece(6, 35), fx.Piece(45, 100)]), - Q_fu.label: fx.Piecewise([fx.Piece(12, 70), fx.Piece(90, 200)]), - } - ) - - bhkw_2 = fx.LinearConverter( - 'BHKW2', - inputs=[Q_fu], - outputs=[P_el, Q_th], - piecewise_conversion=piecewise_conversion, - status_parameters=fx.StatusParameters(effects_per_startup={Costs.label: 0.01}), - ) - - # 4. Define Storage Component - # Storage with variable size and piecewise investment effects - segmented_investment_effects = fx.PiecewiseEffects( - piecewise_origin=fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), - piecewise_shares={ - Costs.label: fx.Piecewise([fx.Piece(50, 250), fx.Piece(250, 800)]), - PE.label: fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), - }, - ) - - speicher = fx.Storage( - 'Speicher', - charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1e4), - discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1e4), - capacity_in_flow_hours=fx.InvestParameters( - piecewise_effects_of_investment=segmented_investment_effects, # Investment effects - mandatory=True, # Forced investment - minimum_size=0, - maximum_size=1000, # Optimizing between 0 and 1000 kWh - ), - initial_charge_state=0, # Initial charge state - maximal_final_charge_state=10, # Maximum final charge state - eta_charge=0.9, - eta_discharge=1, # Charge/discharge efficiency - relative_loss_per_hour=0.08, # Energy loss per hour, relative to current charge state - prevent_simultaneous_charge_and_discharge=True, # Prevent simultaneous charge/discharge - ) - - # 5. Define Sinks and Sources - # 5.a) Heat demand profile - Waermelast = fx.Sink( - 'Wärmelast', - inputs=[ - fx.Flow( - 'Q_th_Last', # Heat sink - bus='Fernwärme', # Linked bus - size=1, - fixed_relative_profile=heat_demand, # Fixed demand profile - ) - ], - ) - - # 5.b) Gas tariff - Gasbezug = fx.Source( - 'Gastarif', - outputs=[ - fx.Flow( - 'Q_Gas', - bus='Gas', # Gas source - size=1000, # Nominal size - effects_per_flow_hour={Costs.label: 0.04, CO2.label: 0.3}, - ) - ], - ) - - # 5.c) Feed-in of electricity - Stromverkauf = fx.Sink( - 'Einspeisung', - inputs=[ - fx.Flow( - 'P_el', - bus='Strom', # Feed-in tariff for electricity - effects_per_flow_hour=-1 * electricity_price, # Negative price for feed-in - ) - ], - ) - - # --- Build FlowSystem --- - # Select components to be included in the flow system - flow_system.add_elements(Costs, CO2, PE, Gaskessel, Waermelast, Gasbezug, Stromverkauf, speicher) - flow_system.add_elements(bhkw_2) if use_chp_with_piecewise_conversion else flow_system.add_elements(bhkw) - - print(flow_system) # Get a string representation of the FlowSystem - try: - flow_system.topology.start_app() # Start the network app - except ImportError as e: - print(f'Network app requires extra dependencies: {e}') - - # --- Solve FlowSystem --- - flow_system.optimize(fx.solvers.HighsSolver(0.01, 60)) - - # --- Results --- - # Save the flow system with solution to file for later analysis - flow_system.to_netcdf('results/complex_example.nc') - - # Plot results using the statistics accessor - flow_system.statistics.plot.heatmap('BHKW2(Q_th)') # Flow label - auto-resolves to flow_rate - flow_system.statistics.plot.balance('BHKW2') - flow_system.statistics.plot.heatmap('Speicher') # Storage label - auto-resolves to charge_state - flow_system.statistics.plot.balance('Fernwärme') diff --git a/examples/02_Complex/complex_example_results.py b/examples/02_Complex/complex_example_results.py deleted file mode 100644 index 6978caff1..000000000 --- a/examples/02_Complex/complex_example_results.py +++ /dev/null @@ -1,38 +0,0 @@ -""" -This script shows how to load results of a prior optimization and how to analyze them. -""" - -import flixopt as fx - -if __name__ == '__main__': - fx.CONFIG.exploring() - - # --- Load FlowSystem with Solution --- - try: - flow_system = fx.FlowSystem.from_netcdf('results/complex_example.nc') - except FileNotFoundError as e: - raise FileNotFoundError( - f"Results file not found ('results/complex_example.nc'). " - f"Please ensure that the file is generated by running 'complex_example.py'. " - f'Original error: {e}' - ) from e - - # --- Basic overview --- - flow_system.topology.plot() - flow_system.statistics.plot.balance('Fernwärme') - - # --- Detailed Plots --- - # In-depth plot for individual flow rates - flow_system.statistics.plot.heatmap('Wärmelast(Q_th_Last)|flow_rate') - - # Plot balances for all buses - for bus in flow_system.buses.values(): - flow_system.statistics.plot.balance(bus.label).to_html(f'results/{bus.label}--balance.html') - - # --- Plotting internal variables manually --- - flow_system.statistics.plot.heatmap('BHKW2(Q_th)|status') - flow_system.statistics.plot.heatmap('Kessel(Q_th)|status') - - # Access data as DataFrames: - print(flow_system.statistics.flow_rates.to_dataframe()) - print(flow_system.solution.to_dataframe()) diff --git a/examples/03_Optimization_modes/example_optimization_modes.py b/examples/03_Optimization_modes/example_optimization_modes.py deleted file mode 100644 index 1f9968357..000000000 --- a/examples/03_Optimization_modes/example_optimization_modes.py +++ /dev/null @@ -1,245 +0,0 @@ -""" -This script demonstrates how to use the different calculation types in the flixopt framework -to model the same energy system. The results will be compared to each other. -""" - -import pathlib - -import pandas as pd -import xarray as xr - -import flixopt as fx - - -# Get solutions for plotting for different optimizations -def get_solutions(optimizations: list, variable: str) -> xr.Dataset: - dataarrays = [] - for optimization in optimizations: - if optimization.name == 'Segmented': - # SegmentedOptimization requires special handling to remove overlaps - dataarrays.append(optimization.results.solution_without_overlap(variable).rename(optimization.name)) - else: - # For Full and Clustered, access solution from the flow_system - dataarrays.append(optimization.flow_system.solution[variable].rename(optimization.name)) - return xr.merge(dataarrays, join='outer') - - -if __name__ == '__main__': - fx.CONFIG.exploring() - - # Calculation Types - full, segmented, aggregated = True, True, True - - # Segmented Properties - segment_length, overlap_length = 96, 1 - - # Aggregated Properties - clustering_parameters = fx.ClusteringParameters( - hours_per_period=6, - nr_of_periods=4, - fix_storage_flows=False, - aggregate_data_and_fix_non_binary_vars=True, - percentage_of_period_freedom=0, - penalty_of_period_freedom=0, - ) - keep_extreme_periods = True - imbalance_penalty = 1e5 # or set to None if not needed - - # Data Import - data_import = pd.read_csv( - pathlib.Path(__file__).parent.parent / 'resources' / 'Zeitreihen2020.csv', index_col=0 - ).sort_index() - filtered_data = data_import['2020-01-01':'2020-01-07 23:45:00'] - # filtered_data = data_import[0:500] # Alternatively filter by index - - filtered_data.index = pd.to_datetime(filtered_data.index) - timesteps = filtered_data.index - - # Access specific columns and convert to 1D-numpy array - electricity_demand = filtered_data['P_Netz/MW'].to_numpy() - heat_demand = filtered_data['Q_Netz/MW'].to_numpy() - electricity_price = filtered_data['Strompr.€/MWh'].to_numpy() - gas_price = filtered_data['Gaspr.€/MWh'].to_numpy() - - # TimeSeriesData objects - TS_heat_demand = fx.TimeSeriesData(heat_demand) - TS_electricity_demand = fx.TimeSeriesData(electricity_demand, clustering_weight=0.7) - TS_electricity_price_sell = fx.TimeSeriesData(-(electricity_price - 0.5), clustering_group='p_el') - TS_electricity_price_buy = fx.TimeSeriesData(electricity_price + 0.5, clustering_group='p_el') - - flow_system = fx.FlowSystem(timesteps) - flow_system.add_elements( - fx.Bus('Strom', carrier='electricity', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Fernwärme', carrier='heat', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Gas', carrier='gas', imbalance_penalty_per_flow_hour=imbalance_penalty), - fx.Bus('Kohle', carrier='fuel', imbalance_penalty_per_flow_hour=imbalance_penalty), - ) - - # Effects - costs = fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True) - CO2 = fx.Effect('CO2', 'kg', 'CO2_e-Emissionen') - PE = fx.Effect('PE', 'kWh_PE', 'Primärenergie') - - # Component Definitions - - # 1. Boiler - a_gaskessel = fx.linear_converters.Boiler( - 'Kessel', - thermal_efficiency=0.85, - thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme'), - fuel_flow=fx.Flow( - label='Q_fu', - bus='Gas', - size=95, - relative_minimum=12 / 95, - previous_flow_rate=20, - status_parameters=fx.StatusParameters(effects_per_startup=1000), - ), - ) - - # 2. CHP - a_kwk = fx.linear_converters.CHP( - 'BHKW2', - thermal_efficiency=0.58, - electrical_efficiency=0.22, - status_parameters=fx.StatusParameters(effects_per_startup=24000), - electrical_flow=fx.Flow('P_el', bus='Strom', size=200), - thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=200), - fuel_flow=fx.Flow('Q_fu', bus='Kohle', size=288, relative_minimum=87 / 288, previous_flow_rate=100), - ) - - # 3. Storage - a_speicher = fx.Storage( - 'Speicher', - capacity_in_flow_hours=684, - initial_charge_state=137, - minimal_final_charge_state=137, - maximal_final_charge_state=158, - eta_charge=1, - eta_discharge=1, - relative_loss_per_hour=0.001, - prevent_simultaneous_charge_and_discharge=True, - charging=fx.Flow('Q_th_load', size=137, bus='Fernwärme'), - discharging=fx.Flow('Q_th_unload', size=158, bus='Fernwärme'), - ) - - # 4. Sinks and Sources - # Heat Load Profile - a_waermelast = fx.Sink( - 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=TS_heat_demand)] - ) - - # Electricity Feed-in - a_strom_last = fx.Sink( - 'Stromlast', inputs=[fx.Flow('P_el_Last', bus='Strom', size=1, fixed_relative_profile=TS_electricity_demand)] - ) - - # Gas Tariff - a_gas_tarif = fx.Source( - 'Gastarif', - outputs=[ - fx.Flow('Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={costs.label: gas_price, CO2.label: 0.3}) - ], - ) - - # Coal Tariff - a_kohle_tarif = fx.Source( - 'Kohletarif', - outputs=[fx.Flow('Q_Kohle', bus='Kohle', size=1000, effects_per_flow_hour={costs.label: 4.6, CO2.label: 0.3})], - ) - - # Electricity Tariff and Feed-in - a_strom_einspeisung = fx.Sink( - 'Einspeisung', inputs=[fx.Flow('P_el', bus='Strom', size=1000, effects_per_flow_hour=TS_electricity_price_sell)] - ) - - a_strom_tarif = fx.Source( - 'Stromtarif', - outputs=[ - fx.Flow( - 'P_el', - bus='Strom', - size=1000, - effects_per_flow_hour={costs.label: TS_electricity_price_buy, CO2.label: 0.3}, - ) - ], - ) - - # Flow System Setup - flow_system.add_elements(costs, CO2, PE) - flow_system.add_elements( - a_gaskessel, - a_waermelast, - a_strom_last, - a_gas_tarif, - a_kohle_tarif, - a_strom_einspeisung, - a_strom_tarif, - a_kwk, - a_speicher, - ) - flow_system.topology.plot() - - # Optimizations - optimizations: list[fx.Optimization | fx.ClusteredOptimization | fx.SegmentedOptimization] = [] - - if full: - optimization = fx.Optimization('Full', flow_system.copy()) - optimization.do_modeling() - optimization.solve(fx.solvers.HighsSolver(0.01 / 100, 60)) - optimizations.append(optimization) - - if segmented: - optimization = fx.SegmentedOptimization('Segmented', flow_system.copy(), segment_length, overlap_length) - optimization.do_modeling_and_solve(fx.solvers.HighsSolver(0.01 / 100, 60)) - optimizations.append(optimization) - - if aggregated: - if keep_extreme_periods: - clustering_parameters.time_series_for_high_peaks = [TS_heat_demand] - clustering_parameters.time_series_for_low_peaks = [TS_electricity_demand, TS_heat_demand] - optimization = fx.ClusteredOptimization('Aggregated', flow_system.copy(), clustering_parameters) - optimization.do_modeling() - optimization.solve(fx.solvers.HighsSolver(0.01 / 100, 60)) - optimizations.append(optimization) - - # --- Plotting for comparison --- - fx.plotting.with_plotly( - get_solutions(optimizations, 'Speicher|charge_state'), - mode='line', - title='Charge State Comparison', - ylabel='Charge state', - xlabel='Time in h', - ).write_html('results/Charge State.html') - - fx.plotting.with_plotly( - get_solutions(optimizations, 'BHKW2(Q_th)|flow_rate'), - mode='line', - title='BHKW2(Q_th) Flow Rate Comparison', - ylabel='Flow rate', - xlabel='Time in h', - ).write_html('results/BHKW2 Thermal Power.html') - - fx.plotting.with_plotly( - get_solutions(optimizations, 'costs(temporal)|per_timestep'), - mode='line', - title='Operation Cost Comparison', - ylabel='Costs [€]', - xlabel='Time in h', - ).write_html('results/Operation Costs.html') - - fx.plotting.with_plotly( - get_solutions(optimizations, 'costs(temporal)|per_timestep').sum('time'), - mode='stacked_bar', - title='Total Cost Comparison', - ylabel='Costs [€]', - ).update_layout(barmode='group').write_html('results/Total Costs.html') - - fx.plotting.with_plotly( - pd.DataFrame( - [calc.durations for calc in optimizations], index=[calc.name for calc in optimizations] - ).to_xarray(), - mode='stacked_bar', - ).update_layout(title='Duration Comparison', xaxis_title='Optimization type', yaxis_title='Time (s)').write_html( - 'results/Speed Comparison.html' - ) diff --git a/examples/04_Scenarios/scenario_example.py b/examples/04_Scenarios/scenario_example.py deleted file mode 100644 index 820336e93..000000000 --- a/examples/04_Scenarios/scenario_example.py +++ /dev/null @@ -1,214 +0,0 @@ -""" -This script shows how to use the flixopt framework to model a simple energy system. -""" - -import numpy as np -import pandas as pd - -import flixopt as fx - -if __name__ == '__main__': - fx.CONFIG.exploring() - - # Create datetime array starting from '2020-01-01' for one week - timesteps = pd.date_range('2020-01-01', periods=24 * 7, freq='h') - scenarios = pd.Index(['Base Case', 'High Demand']) - periods = pd.Index([2020, 2021, 2022]) - - # --- Create Time Series Data --- - # Realistic daily patterns: morning/evening peaks, night/midday lows - np.random.seed(42) - n_hours = len(timesteps) - - # Heat demand: 24-hour patterns (kW) for Base Case and High Demand scenarios - base_daily_pattern = np.array( - [22, 20, 18, 18, 20, 25, 40, 70, 95, 110, 85, 65, 60, 58, 62, 68, 75, 88, 105, 125, 130, 122, 95, 35] - ) - high_daily_pattern = np.array( - [28, 25, 22, 22, 24, 30, 52, 88, 118, 135, 105, 80, 75, 72, 75, 82, 92, 108, 128, 148, 155, 145, 115, 48] - ) - - # Tile and add variation - base_demand = np.tile(base_daily_pattern, n_hours // 24 + 1)[:n_hours] * ( - 1 + np.random.uniform(-0.05, 0.05, n_hours) - ) - high_demand = np.tile(high_daily_pattern, n_hours // 24 + 1)[:n_hours] * ( - 1 + np.random.uniform(-0.07, 0.07, n_hours) - ) - - heat_demand_per_h = pd.DataFrame({'Base Case': base_demand, 'High Demand': high_demand}, index=timesteps) - - # Power prices: hourly factors (night low, peak high) and period escalation (2020-2022) - hourly_price_factors = np.array( - [ - 0.70, - 0.65, - 0.62, - 0.60, - 0.62, - 0.70, - 0.95, - 1.15, - 1.30, - 1.25, - 1.10, - 1.00, - 0.95, - 0.90, - 0.88, - 0.92, - 1.00, - 1.10, - 1.25, - 1.40, - 1.35, - 1.20, - 0.95, - 0.80, - ] - ) - period_base_prices = np.array([0.075, 0.095, 0.135]) # €/kWh for 2020, 2021, 2022 - - price_series = np.zeros((n_hours, 3)) - for period_idx, base_price in enumerate(period_base_prices): - price_series[:, period_idx] = ( - np.tile(hourly_price_factors, n_hours // 24 + 1)[:n_hours] - * base_price - * (1 + np.random.uniform(-0.03, 0.03, n_hours)) - ) - - power_prices = price_series.mean(axis=0) - - # Scenario weights: probability of each scenario occurring - # Base Case: 60% probability, High Demand: 40% probability - scenario_weights = np.array([0.6, 0.4]) - - flow_system = fx.FlowSystem( - timesteps=timesteps, periods=periods, scenarios=scenarios, scenario_weights=scenario_weights - ) - - # --- Define Energy Buses --- - # These represent nodes, where the used medias are balanced (electricity, heat, and gas) - # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, blue for gas) - flow_system.add_elements( - fx.Bus(label='Strom', carrier='electricity'), - fx.Bus(label='Fernwärme', carrier='heat'), - fx.Bus(label='Gas', carrier='gas'), - ) - - # --- Define Effects (Objective and CO2 Emissions) --- - # Cost effect: used as the optimization objective --> minimizing costs - costs = fx.Effect( - label='costs', - unit='€', - description='Kosten', - is_standard=True, # standard effect: no explicit value needed for costs - is_objective=True, # Minimizing costs as the optimization objective - share_from_temporal={'CO2': 0.2}, # Carbon price: 0.2 €/kg CO2 (e.g., carbon tax) - ) - - # CO2 emissions effect with constraint - # Maximum of 1000 kg CO2/hour represents a regulatory or voluntary emissions limit - CO2 = fx.Effect( - label='CO2', - unit='kg', - description='CO2_e-Emissionen', - maximum_per_hour=1000, # Regulatory emissions limit: 1000 kg CO2/hour - ) - - # --- Define Flow System Components --- - # Boiler: Converts fuel (gas) into thermal energy (heat) - # Modern condensing gas boiler with realistic efficiency - boiler = fx.linear_converters.Boiler( - label='Boiler', - thermal_efficiency=0.92, # Realistic efficiency for modern condensing gas boiler (92%) - thermal_flow=fx.Flow( - label='Q_th', - bus='Fernwärme', - size=100, - relative_minimum=0.1, - relative_maximum=1, - status_parameters=fx.StatusParameters(), - ), - fuel_flow=fx.Flow(label='Q_fu', bus='Gas'), - ) - - # Combined Heat and Power (CHP): Generates both electricity and heat from fuel - # Modern CHP unit with realistic efficiencies (total efficiency ~88%) - chp = fx.linear_converters.CHP( - label='CHP', - thermal_efficiency=0.48, # Realistic thermal efficiency (48%) - electrical_efficiency=0.40, # Realistic electrical efficiency (40%) - electrical_flow=fx.Flow( - 'P_el', bus='Strom', size=80, relative_minimum=5 / 80, status_parameters=fx.StatusParameters() - ), - thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), - fuel_flow=fx.Flow('Q_fu', bus='Gas'), - ) - - # Storage: Thermal energy storage system with charging and discharging capabilities - # Realistic thermal storage parameters (e.g., insulated hot water tank) - storage = fx.Storage( - label='Storage', - charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1000), - discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1000), - capacity_in_flow_hours=fx.InvestParameters(effects_of_investment=20, fixed_size=30, mandatory=True), - initial_charge_state=0, # Initial storage state: empty - relative_maximum_final_charge_state=np.array([0.8, 0.5, 0.1]), - eta_charge=0.95, # Realistic charging efficiency (~95%) - eta_discharge=0.98, # Realistic discharging efficiency (~98%) - relative_loss_per_hour=np.array([0.008, 0.015]), # Realistic thermal losses: 0.8-1.5% per hour - prevent_simultaneous_charge_and_discharge=True, # Prevent charging and discharging at the same time - ) - - # Heat Demand Sink: Represents a fixed heat demand profile - heat_sink = fx.Sink( - label='Heat Demand', - inputs=[fx.Flow(label='Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand_per_h)], - ) - - # Gas Source: Gas tariff source with associated costs and CO2 emissions - # Realistic gas prices varying by period (reflecting 2020-2022 energy crisis) - # 2020: 0.04 €/kWh, 2021: 0.06 €/kWh, 2022: 0.11 €/kWh - gas_prices_per_period = np.array([0.04, 0.06, 0.11]) - - # CO2 emissions factor for natural gas: ~0.202 kg CO2/kWh (realistic value) - gas_co2_emissions = 0.202 - - gas_source = fx.Source( - label='Gastarif', - outputs=[ - fx.Flow( - label='Q_Gas', - bus='Gas', - size=1000, - effects_per_flow_hour={costs.label: gas_prices_per_period, CO2.label: gas_co2_emissions}, - ) - ], - ) - - # Power Sink: Represents the export of electricity to the grid - power_sink = fx.Sink( - label='Einspeisung', inputs=[fx.Flow(label='P_el', bus='Strom', effects_per_flow_hour=-1 * power_prices)] - ) - - # --- Build the Flow System --- - # Add all defined components and effects to the flow system - flow_system.add_elements(costs, CO2, boiler, storage, chp, heat_sink, gas_source, power_sink) - - # Visualize the flow system for validation purposes - flow_system.topology.plot() - - # --- Define and Solve Optimization --- - flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) - - # --- Analyze Results --- - # Plotting through statistics accessor - returns PlotResult with .data and .figure - flow_system.statistics.plot.heatmap('CHP(Q_th)') # Flow label - auto-resolves to flow_rate - flow_system.statistics.plot.balance('Fernwärme') - flow_system.statistics.plot.balance('Storage') - flow_system.statistics.plot.heatmap('Storage') # Storage label - auto-resolves to charge_state - - # Access data as xarray Datasets - print(flow_system.statistics.flow_rates) - print(flow_system.statistics.charge_states) diff --git a/examples/05_Two-stage-optimization/two_stage_optimization.py b/examples/05_Two-stage-optimization/two_stage_optimization.py deleted file mode 100644 index 3f3278477..000000000 --- a/examples/05_Two-stage-optimization/two_stage_optimization.py +++ /dev/null @@ -1,186 +0,0 @@ -""" -This script demonstrates how to use downsampling of a FlowSystem to effectively reduce the size of a model. -This can be very useful when working with large models or during development, -as it can drastically reduce the computational time. -This leads to faster results and easier debugging. -A common use case is to optimize the investments of a model with a downsampled version of the original model, and then fix the computed sizes when calculating the actual dispatch. -While the final optimum might differ from the global optimum, the solving will be much faster. -""" - -import logging -import pathlib -import timeit - -import numpy as np -import pandas as pd -import xarray as xr - -import flixopt as fx - -logger = logging.getLogger('flixopt') - -if __name__ == '__main__': - fx.CONFIG.exploring() - - # Data Import - data_import = pd.read_csv( - pathlib.Path(__file__).parent.parent / 'resources' / 'Zeitreihen2020.csv', index_col=0 - ).sort_index() - filtered_data = data_import[:500] - - filtered_data.index = pd.to_datetime(filtered_data.index) - timesteps = filtered_data.index - - # Access specific columns and convert to 1D-numpy array - electricity_demand = filtered_data['P_Netz/MW'].to_numpy() - heat_demand = filtered_data['Q_Netz/MW'].to_numpy() - electricity_price = filtered_data['Strompr.€/MWh'].to_numpy() - gas_price = filtered_data['Gaspr.€/MWh'].to_numpy() - - flow_system = fx.FlowSystem(timesteps) - # Carriers provide automatic color assignment in plots - flow_system.add_elements( - fx.Bus('Strom', carrier='electricity'), - fx.Bus('Fernwärme', carrier='heat'), - fx.Bus('Gas', carrier='gas'), - fx.Bus('Kohle', carrier='fuel'), - fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True), - fx.Effect('CO2', 'kg', 'CO2_e-Emissionen'), - fx.Effect('PE', 'kWh_PE', 'Primärenergie'), - fx.linear_converters.Boiler( - 'Kessel', - thermal_efficiency=0.85, - thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme'), - fuel_flow=fx.Flow( - label='Q_fu', - bus='Gas', - size=fx.InvestParameters( - effects_of_investment_per_size={'costs': 1_000}, minimum_size=10, maximum_size=600 - ), - relative_minimum=0.2, - previous_flow_rate=20, - status_parameters=fx.StatusParameters(effects_per_startup=300), - ), - ), - fx.linear_converters.CHP( - 'BHKW2', - thermal_efficiency=0.58, - electrical_efficiency=0.22, - status_parameters=fx.StatusParameters(effects_per_startup=1_000, min_uptime=10, min_downtime=10), - electrical_flow=fx.Flow('P_el', bus='Strom'), - thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), - fuel_flow=fx.Flow( - 'Q_fu', - bus='Kohle', - size=fx.InvestParameters( - effects_of_investment_per_size={'costs': 3_000}, minimum_size=10, maximum_size=500 - ), - relative_minimum=0.3, - previous_flow_rate=100, - ), - ), - fx.Storage( - 'Speicher', - capacity_in_flow_hours=fx.InvestParameters( - minimum_size=10, maximum_size=1000, effects_of_investment_per_size={'costs': 60} - ), - initial_charge_state='equals_final', - eta_charge=1, - eta_discharge=1, - relative_loss_per_hour=0.001, - prevent_simultaneous_charge_and_discharge=True, - charging=fx.Flow('Q_th_load', size=200, bus='Fernwärme'), - discharging=fx.Flow('Q_th_unload', size=200, bus='Fernwärme'), - ), - fx.Sink( - 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand)] - ), - fx.Source( - 'Gastarif', - outputs=[fx.Flow('Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={'costs': gas_price, 'CO2': 0.3})], - ), - fx.Source( - 'Kohletarif', - outputs=[fx.Flow('Q_Kohle', bus='Kohle', size=1000, effects_per_flow_hour={'costs': 4.6, 'CO2': 0.3})], - ), - fx.Source( - 'Einspeisung', - outputs=[ - fx.Flow( - 'P_el', bus='Strom', size=1000, effects_per_flow_hour={'costs': electricity_price + 0.5, 'CO2': 0.3} - ) - ], - ), - fx.Sink( - 'Stromlast', - inputs=[fx.Flow('P_el_Last', bus='Strom', size=1, fixed_relative_profile=electricity_demand)], - ), - fx.Source( - 'Stromtarif', - outputs=[ - fx.Flow('P_el', bus='Strom', size=1000, effects_per_flow_hour={'costs': electricity_price, 'CO2': 0.3}) - ], - ), - ) - - # Separate optimization of flow sizes and dispatch - # Stage 1: Optimize sizes using downsampled (2h) data - start = timeit.default_timer() - calculation_sizing = fx.Optimization('Sizing', flow_system.resample('2h')) - calculation_sizing.do_modeling() - calculation_sizing.solve(fx.solvers.HighsSolver(0.1 / 100, 60)) - timer_sizing = timeit.default_timer() - start - - # Stage 2: Optimize dispatch with fixed sizes from Stage 1 - start = timeit.default_timer() - calculation_dispatch = fx.Optimization('Dispatch', flow_system) - calculation_dispatch.do_modeling() - calculation_dispatch.fix_sizes(calculation_sizing.flow_system.solution) - calculation_dispatch.solve(fx.solvers.HighsSolver(0.1 / 100, 60)) - timer_dispatch = timeit.default_timer() - start - - # Verify sizes were correctly fixed - dispatch_sizes = calculation_dispatch.flow_system.statistics.sizes - sizing_sizes = calculation_sizing.flow_system.statistics.sizes - if np.allclose(dispatch_sizes.to_dataarray(), sizing_sizes.to_dataarray(), rtol=1e-5): - logger.info('Sizes were correctly equalized') - else: - raise RuntimeError('Sizes were not correctly equalized') - - # Combined optimization: optimize both sizes and dispatch together - start = timeit.default_timer() - calculation_combined = fx.Optimization('Combined', flow_system) - calculation_combined.do_modeling() - calculation_combined.solve(fx.solvers.HighsSolver(0.1 / 100, 600)) - timer_combined = timeit.default_timer() - start - - # Comparison of results - access solutions from flow_system - comparison = xr.concat( - [calculation_combined.flow_system.solution, calculation_dispatch.flow_system.solution], dim='mode' - ).assign_coords(mode=['Combined', 'Two-stage']) - comparison['Duration [s]'] = xr.DataArray([timer_combined, timer_sizing + timer_dispatch], dims='mode') - - comparison_main = comparison[ - [ - 'Duration [s]', - 'costs', - 'costs(periodic)', - 'costs(temporal)', - 'BHKW2(Q_fu)|size', - 'Kessel(Q_fu)|size', - 'Speicher|size', - ] - ] - comparison_main = xr.concat( - [ - comparison_main, - ( - (comparison_main.sel(mode='Two-stage') - comparison_main.sel(mode='Combined')) - / comparison_main.sel(mode='Combined') - * 100 - ).assign_coords(mode='Diff [%]'), - ], - dim='mode', - ) - - print(comparison_main.to_pandas().T.round(2)) diff --git a/examples/resources/Zeitreihen2020.csv b/examples/resources/Zeitreihen2020.csv deleted file mode 100644 index 9b660ef9c..000000000 --- a/examples/resources/Zeitreihen2020.csv +++ /dev/null @@ -1,35137 +0,0 @@ -Zeit,P_Netz/MW,Q_Netz/MW,Strompr.€/MWh,Gaspr.€/MWh -2020-01-01 00:00:00,58.39,127.059,7.461,32.459 -2020-01-01 00:15:00,58.36,122.156,7.461,32.459 -2020-01-01 00:30:00,58.11,124.412,7.461,32.459 -2020-01-01 00:45:00,57.71,127.713,7.461,32.459 -2020-01-01 01:00:00,55.53,130.69899999999998,2.65,32.459 -2020-01-01 01:15:00,56.24,132.166,2.65,32.459 -2020-01-01 01:30:00,55.17,132.394,2.65,32.459 -2020-01-01 01:45:00,54.5,132.431,2.65,32.459 -2020-01-01 02:00:00,52.95,134.403,-2.949,32.459 -2020-01-01 02:15:00,51.75,134.755,-2.949,32.459 -2020-01-01 02:30:00,50.7,135.631,-2.949,32.459 -2020-01-01 02:45:00,50.33,138.345,-2.949,32.459 -2020-01-01 03:00:00,47.11,141.071,-3.2680000000000002,32.459 -2020-01-01 03:15:00,49.35,141.319,-3.2680000000000002,32.459 -2020-01-01 03:30:00,48.33,143.024,-3.2680000000000002,32.459 -2020-01-01 03:45:00,48.73,144.697,-3.2680000000000002,32.459 -2020-01-01 04:00:00,46.6,152.569,-3.2680000000000002,32.459 -2020-01-01 04:15:00,47.33,160.688,-3.2680000000000002,32.459 -2020-01-01 04:30:00,47.5,161.673,-3.2680000000000002,32.459 -2020-01-01 04:45:00,48.62,163.165,-3.2680000000000002,32.459 -2020-01-01 05:00:00,49.18,176.398,-3.2680000000000002,32.459 -2020-01-01 05:15:00,50.0,184.233,-3.2680000000000002,32.459 -2020-01-01 05:30:00,50.1,181.12,-3.2680000000000002,32.459 -2020-01-01 05:45:00,50.36,179.642,-3.2680000000000002,32.459 -2020-01-01 06:00:00,50.32,196.364,-3.2680000000000002,32.459 -2020-01-01 06:15:00,50.22,215.918,-3.2680000000000002,32.459 -2020-01-01 06:30:00,52.17,211.0,-3.2680000000000002,32.459 -2020-01-01 06:45:00,54.2,206.111,-3.2680000000000002,32.459 -2020-01-01 07:00:00,55.6,202.635,-3.2680000000000002,32.459 -2020-01-01 07:15:00,55.35,207.093,-3.2680000000000002,32.459 -2020-01-01 07:30:00,55.44,211.667,-3.2680000000000002,32.459 -2020-01-01 07:45:00,55.15,215.882,-3.2680000000000002,32.459 -2020-01-01 08:00:00,56.21,219.793,-2.146,32.459 -2020-01-01 08:15:00,55.94,223.388,-2.146,32.459 -2020-01-01 08:30:00,58.2,226.081,-2.146,32.459 -2020-01-01 08:45:00,56.11,227.016,-2.146,32.459 -2020-01-01 09:00:00,61.62,222.30700000000002,1.7519999999999998,32.459 -2020-01-01 09:15:00,63.5,221.018,1.7519999999999998,32.459 -2020-01-01 09:30:00,64.24,219.09,1.7519999999999998,32.459 -2020-01-01 09:45:00,64.02,215.80700000000002,1.7519999999999998,32.459 -2020-01-01 10:00:00,61.38,212.231,4.19,32.459 -2020-01-01 10:15:00,62.05,209.50099999999998,4.19,32.459 -2020-01-01 10:30:00,61.84,206.963,4.19,32.459 -2020-01-01 10:45:00,65.9,204.111,4.19,32.459 -2020-01-01 11:00:00,67.33,203.37599999999998,5.517,32.459 -2020-01-01 11:15:00,68.34,200.575,5.517,32.459 -2020-01-01 11:30:00,67.43,198.755,5.517,32.459 -2020-01-01 11:45:00,68.73,197.22099999999998,5.517,32.459 -2020-01-01 12:00:00,74.2,191.555,4.27,32.459 -2020-01-01 12:15:00,69.91,191.37,4.27,32.459 -2020-01-01 12:30:00,68.83,190.28799999999998,4.27,32.459 -2020-01-01 12:45:00,70.01,189.851,4.27,32.459 -2020-01-01 13:00:00,69.02,188.09599999999998,3.484,32.459 -2020-01-01 13:15:00,68.68,189.604,3.484,32.459 -2020-01-01 13:30:00,68.45,188.61,3.484,32.459 -2020-01-01 13:45:00,68.18,188.303,3.484,32.459 -2020-01-01 14:00:00,68.94,187.555,2.523,32.459 -2020-01-01 14:15:00,66.1,188.747,2.523,32.459 -2020-01-01 14:30:00,70.61,189.53099999999998,2.523,32.459 -2020-01-01 14:45:00,70.58,189.93,2.523,32.459 -2020-01-01 15:00:00,73.81,189.581,5.667999999999999,32.459 -2020-01-01 15:15:00,69.6,191.454,5.667999999999999,32.459 -2020-01-01 15:30:00,68.66,194.55599999999998,5.667999999999999,32.459 -2020-01-01 15:45:00,71.32,197.227,5.667999999999999,32.459 -2020-01-01 16:00:00,73.3,197.49900000000002,12.109000000000002,32.459 -2020-01-01 16:15:00,77.24,199.38099999999997,12.109000000000002,32.459 -2020-01-01 16:30:00,83.2,202.511,12.109000000000002,32.459 -2020-01-01 16:45:00,86.91,205.047,12.109000000000002,32.459 -2020-01-01 17:00:00,89.85,207.06099999999998,22.824,32.459 -2020-01-01 17:15:00,90.61,208.69799999999998,22.824,32.459 -2020-01-01 17:30:00,92.03,209.25099999999998,22.824,32.459 -2020-01-01 17:45:00,93.49,210.672,22.824,32.459 -2020-01-01 18:00:00,95.17,211.632,21.656,32.459 -2020-01-01 18:15:00,94.51,211.645,21.656,32.459 -2020-01-01 18:30:00,93.87,209.94,21.656,32.459 -2020-01-01 18:45:00,93.48,208.489,21.656,32.459 -2020-01-01 19:00:00,92.14,209.826,19.749000000000002,32.459 -2020-01-01 19:15:00,90.85,207.487,19.749000000000002,32.459 -2020-01-01 19:30:00,89.81,204.959,19.749000000000002,32.459 -2020-01-01 19:45:00,88.14,202.29,19.749000000000002,32.459 -2020-01-01 20:00:00,84.73,200.835,24.274,32.459 -2020-01-01 20:15:00,83.37,197.709,24.274,32.459 -2020-01-01 20:30:00,82.23,194.57299999999998,24.274,32.459 -2020-01-01 20:45:00,80.34,191.52200000000002,24.274,32.459 -2020-01-01 21:00:00,78.43,188.843,23.044,32.459 -2020-01-01 21:15:00,77.95,186.56099999999998,23.044,32.459 -2020-01-01 21:30:00,77.04,186.183,23.044,32.459 -2020-01-01 21:45:00,76.57,184.824,23.044,32.459 -2020-01-01 22:00:00,72.56,178.928,25.155,32.459 -2020-01-01 22:15:00,72.48,174.81799999999998,25.155,32.459 -2020-01-01 22:30:00,70.04,170.76,25.155,32.459 -2020-01-01 22:45:00,67.68,167.32,25.155,32.459 -2020-01-01 23:00:00,59.3,159.845,20.101,32.459 -2020-01-01 23:15:00,63.51,156.17700000000002,20.101,32.459 -2020-01-01 23:30:00,61.08,153.764,20.101,32.459 -2020-01-01 23:45:00,60.81,150.845,20.101,32.459 -2020-01-02 00:00:00,72.56,131.099,38.399,32.641 -2020-01-02 00:15:00,75.51,130.822,38.399,32.641 -2020-01-02 00:30:00,76.2,132.15,38.399,32.641 -2020-01-02 00:45:00,79.94,133.753,38.399,32.641 -2020-01-02 01:00:00,76.22,136.549,36.94,32.641 -2020-01-02 01:15:00,75.52,136.971,36.94,32.641 -2020-01-02 01:30:00,69.71,137.433,36.94,32.641 -2020-01-02 01:45:00,72.15,137.96200000000002,36.94,32.641 -2020-01-02 02:00:00,68.46,139.933,35.275,32.641 -2020-01-02 02:15:00,68.93,141.73,35.275,32.641 -2020-01-02 02:30:00,69.13,142.344,35.275,32.641 -2020-01-02 02:45:00,71.05,144.38,35.275,32.641 -2020-01-02 03:00:00,77.24,147.17700000000002,35.329,32.641 -2020-01-02 03:15:00,78.88,148.17700000000002,35.329,32.641 -2020-01-02 03:30:00,79.6,150.07,35.329,32.641 -2020-01-02 03:45:00,73.47,151.487,35.329,32.641 -2020-01-02 04:00:00,71.66,163.75,36.275,32.641 -2020-01-02 04:15:00,72.6,175.77599999999998,36.275,32.641 -2020-01-02 04:30:00,74.43,178.856,36.275,32.641 -2020-01-02 04:45:00,76.31,181.783,36.275,32.641 -2020-01-02 05:00:00,80.9,217.042,42.193999999999996,32.641 -2020-01-02 05:15:00,83.91,245.78799999999998,42.193999999999996,32.641 -2020-01-02 05:30:00,88.55,241.4,42.193999999999996,32.641 -2020-01-02 05:45:00,92.98,234.083,42.193999999999996,32.641 -2020-01-02 06:00:00,101.92,230.607,56.422,32.641 -2020-01-02 06:15:00,106.02,236.44099999999997,56.422,32.641 -2020-01-02 06:30:00,110.67,239.31400000000002,56.422,32.641 -2020-01-02 06:45:00,115.36,243.33,56.422,32.641 -2020-01-02 07:00:00,121.21,242.197,72.569,32.641 -2020-01-02 07:15:00,125.44,247.68200000000002,72.569,32.641 -2020-01-02 07:30:00,127.04,250.858,72.569,32.641 -2020-01-02 07:45:00,129.3,252.55900000000003,72.569,32.641 -2020-01-02 08:00:00,131.83,251.364,67.704,32.641 -2020-01-02 08:15:00,129.92,251.618,67.704,32.641 -2020-01-02 08:30:00,130.03,249.708,67.704,32.641 -2020-01-02 08:45:00,129.65,246.764,67.704,32.641 -2020-01-02 09:00:00,130.4,240.053,63.434,32.641 -2020-01-02 09:15:00,132.18,236.87900000000002,63.434,32.641 -2020-01-02 09:30:00,133.68,234.63099999999997,63.434,32.641 -2020-01-02 09:45:00,133.99,231.472,63.434,32.641 -2020-01-02 10:00:00,133.44,226.187,61.88399999999999,32.641 -2020-01-02 10:15:00,135.64,221.955,61.88399999999999,32.641 -2020-01-02 10:30:00,134.92,218.68400000000003,61.88399999999999,32.641 -2020-01-02 10:45:00,136.65,216.98,61.88399999999999,32.641 -2020-01-02 11:00:00,136.01,214.97299999999998,61.481,32.641 -2020-01-02 11:15:00,135.6,213.702,61.481,32.641 -2020-01-02 11:30:00,135.49,212.15200000000002,61.481,32.641 -2020-01-02 11:45:00,136.56,210.945,61.481,32.641 -2020-01-02 12:00:00,136.24,205.8,59.527,32.641 -2020-01-02 12:15:00,135.89,205.143,59.527,32.641 -2020-01-02 12:30:00,133.92,205.12400000000002,59.527,32.641 -2020-01-02 12:45:00,134.1,205.96099999999998,59.527,32.641 -2020-01-02 13:00:00,130.94,204.35,58.794,32.641 -2020-01-02 13:15:00,129.98,203.88099999999997,58.794,32.641 -2020-01-02 13:30:00,129.31,203.575,58.794,32.641 -2020-01-02 13:45:00,127.59,203.519,58.794,32.641 -2020-01-02 14:00:00,126.5,202.428,60.32,32.641 -2020-01-02 14:15:00,129.81,203.06900000000002,60.32,32.641 -2020-01-02 14:30:00,128.98,203.95,60.32,32.641 -2020-01-02 14:45:00,127.66,204.167,60.32,32.641 -2020-01-02 15:00:00,131.69,205.303,62.52,32.641 -2020-01-02 15:15:00,134.08,205.93900000000002,62.52,32.641 -2020-01-02 15:30:00,130.49,208.357,62.52,32.641 -2020-01-02 15:45:00,132.71,210.109,62.52,32.641 -2020-01-02 16:00:00,134.12,210.895,64.199,32.641 -2020-01-02 16:15:00,134.79,212.476,64.199,32.641 -2020-01-02 16:30:00,137.68,215.345,64.199,32.641 -2020-01-02 16:45:00,138.3,216.87599999999998,64.199,32.641 -2020-01-02 17:00:00,141.23,219.28900000000002,68.19800000000001,32.641 -2020-01-02 17:15:00,140.55,219.918,68.19800000000001,32.641 -2020-01-02 17:30:00,141.63,220.68200000000002,68.19800000000001,32.641 -2020-01-02 17:45:00,141.55,220.424,68.19800000000001,32.641 -2020-01-02 18:00:00,140.02,221.84400000000002,67.899,32.641 -2020-01-02 18:15:00,138.28,218.955,67.899,32.641 -2020-01-02 18:30:00,137.19,217.683,67.899,32.641 -2020-01-02 18:45:00,137.6,217.707,67.899,32.641 -2020-01-02 19:00:00,134.26,217.453,64.72399999999999,32.641 -2020-01-02 19:15:00,133.22,213.481,64.72399999999999,32.641 -2020-01-02 19:30:00,134.64,210.797,64.72399999999999,32.641 -2020-01-02 19:45:00,136.88,207.28599999999997,64.72399999999999,32.641 -2020-01-02 20:00:00,130.24,203.518,64.062,32.641 -2020-01-02 20:15:00,119.33,197.062,64.062,32.641 -2020-01-02 20:30:00,118.31,192.979,64.062,32.641 -2020-01-02 20:45:00,112.7,191.03099999999998,64.062,32.641 -2020-01-02 21:00:00,107.44,188.12900000000002,57.971000000000004,32.641 -2020-01-02 21:15:00,112.86,185.61900000000003,57.971000000000004,32.641 -2020-01-02 21:30:00,111.93,183.535,57.971000000000004,32.641 -2020-01-02 21:45:00,108.29,181.894,57.971000000000004,32.641 -2020-01-02 22:00:00,98.52,174.86,53.715,32.641 -2020-01-02 22:15:00,94.85,168.98,53.715,32.641 -2020-01-02 22:30:00,98.1,155.042,53.715,32.641 -2020-01-02 22:45:00,96.62,146.733,53.715,32.641 -2020-01-02 23:00:00,92.22,140.148,47.8,32.641 -2020-01-02 23:15:00,84.12,138.344,47.8,32.641 -2020-01-02 23:30:00,79.31,138.518,47.8,32.641 -2020-01-02 23:45:00,83.54,137.971,47.8,32.641 -2020-01-03 00:00:00,83.23,130.233,43.656000000000006,32.641 -2020-01-03 00:15:00,82.94,130.13299999999998,43.656000000000006,32.641 -2020-01-03 00:30:00,78.25,131.279,43.656000000000006,32.641 -2020-01-03 00:45:00,76.9,132.954,43.656000000000006,32.641 -2020-01-03 01:00:00,71.11,135.453,41.263000000000005,32.641 -2020-01-03 01:15:00,78.36,136.91899999999998,41.263000000000005,32.641 -2020-01-03 01:30:00,78.99,137.079,41.263000000000005,32.641 -2020-01-03 01:45:00,77.55,137.732,41.263000000000005,32.641 -2020-01-03 02:00:00,71.19,139.738,40.799,32.641 -2020-01-03 02:15:00,72.17,141.41299999999998,40.799,32.641 -2020-01-03 02:30:00,74.79,142.542,40.799,32.641 -2020-01-03 02:45:00,78.06,144.681,40.799,32.641 -2020-01-03 03:00:00,76.51,146.311,41.398,32.641 -2020-01-03 03:15:00,74.89,148.47,41.398,32.641 -2020-01-03 03:30:00,79.0,150.364,41.398,32.641 -2020-01-03 03:45:00,77.85,152.072,41.398,32.641 -2020-01-03 04:00:00,73.23,164.549,42.38,32.641 -2020-01-03 04:15:00,74.31,176.43200000000002,42.38,32.641 -2020-01-03 04:30:00,74.97,179.67700000000002,42.38,32.641 -2020-01-03 04:45:00,78.19,181.39700000000002,42.38,32.641 -2020-01-03 05:00:00,82.49,215.25400000000002,46.181000000000004,32.641 -2020-01-03 05:15:00,85.31,245.535,46.181000000000004,32.641 -2020-01-03 05:30:00,88.01,242.33599999999998,46.181000000000004,32.641 -2020-01-03 05:45:00,93.72,235.011,46.181000000000004,32.641 -2020-01-03 06:00:00,101.82,232.016,59.33,32.641 -2020-01-03 06:15:00,106.19,236.21900000000002,59.33,32.641 -2020-01-03 06:30:00,110.85,238.166,59.33,32.641 -2020-01-03 06:45:00,115.45,244.024,59.33,32.641 -2020-01-03 07:00:00,122.71,241.924,72.454,32.641 -2020-01-03 07:15:00,123.17,248.451,72.454,32.641 -2020-01-03 07:30:00,125.55,251.585,72.454,32.641 -2020-01-03 07:45:00,128.9,252.31099999999998,72.454,32.641 -2020-01-03 08:00:00,130.12,249.83599999999998,67.175,32.641 -2020-01-03 08:15:00,128.89,249.597,67.175,32.641 -2020-01-03 08:30:00,128.21,248.743,67.175,32.641 -2020-01-03 08:45:00,128.6,244.05900000000003,67.175,32.641 -2020-01-03 09:00:00,128.71,238.011,65.365,32.641 -2020-01-03 09:15:00,131.57,235.324,65.365,32.641 -2020-01-03 09:30:00,133.77,232.672,65.365,32.641 -2020-01-03 09:45:00,136.47,229.359,65.365,32.641 -2020-01-03 10:00:00,135.77,222.843,63.95,32.641 -2020-01-03 10:15:00,137.43,219.39,63.95,32.641 -2020-01-03 10:30:00,136.81,215.986,63.95,32.641 -2020-01-03 10:45:00,137.07,213.808,63.95,32.641 -2020-01-03 11:00:00,136.69,211.75,63.92100000000001,32.641 -2020-01-03 11:15:00,137.82,209.576,63.92100000000001,32.641 -2020-01-03 11:30:00,137.25,209.956,63.92100000000001,32.641 -2020-01-03 11:45:00,136.75,208.86900000000003,63.92100000000001,32.641 -2020-01-03 12:00:00,135.72,204.88400000000001,60.79600000000001,32.641 -2020-01-03 12:15:00,135.16,202.011,60.79600000000001,32.641 -2020-01-03 12:30:00,133.9,202.153,60.79600000000001,32.641 -2020-01-03 12:45:00,134.58,203.607,60.79600000000001,32.641 -2020-01-03 13:00:00,130.87,202.96200000000002,59.393,32.641 -2020-01-03 13:15:00,131.78,203.36,59.393,32.641 -2020-01-03 13:30:00,130.35,203.00799999999998,59.393,32.641 -2020-01-03 13:45:00,131.11,202.855,59.393,32.641 -2020-01-03 14:00:00,130.67,200.58700000000002,57.943999999999996,32.641 -2020-01-03 14:15:00,130.14,201.0,57.943999999999996,32.641 -2020-01-03 14:30:00,129.02,202.34799999999998,57.943999999999996,32.641 -2020-01-03 14:45:00,129.81,202.954,57.943999999999996,32.641 -2020-01-03 15:00:00,130.32,203.59099999999998,60.153999999999996,32.641 -2020-01-03 15:15:00,129.09,203.75099999999998,60.153999999999996,32.641 -2020-01-03 15:30:00,128.33,204.56099999999998,60.153999999999996,32.641 -2020-01-03 15:45:00,128.17,206.41299999999998,60.153999999999996,32.641 -2020-01-03 16:00:00,131.49,205.998,62.933,32.641 -2020-01-03 16:15:00,133.11,207.87400000000002,62.933,32.641 -2020-01-03 16:30:00,134.7,210.864,62.933,32.641 -2020-01-03 16:45:00,133.81,212.332,62.933,32.641 -2020-01-03 17:00:00,137.76,214.84900000000002,68.657,32.641 -2020-01-03 17:15:00,136.16,215.076,68.657,32.641 -2020-01-03 17:30:00,140.54,215.513,68.657,32.641 -2020-01-03 17:45:00,137.57,215.02900000000002,68.657,32.641 -2020-01-03 18:00:00,136.81,217.225,67.111,32.641 -2020-01-03 18:15:00,136.99,213.96900000000002,67.111,32.641 -2020-01-03 18:30:00,135.65,213.13,67.111,32.641 -2020-01-03 18:45:00,136.2,213.142,67.111,32.641 -2020-01-03 19:00:00,132.87,213.791,62.434,32.641 -2020-01-03 19:15:00,131.87,211.248,62.434,32.641 -2020-01-03 19:30:00,132.37,208.11900000000003,62.434,32.641 -2020-01-03 19:45:00,134.77,204.162,62.434,32.641 -2020-01-03 20:00:00,128.17,200.44400000000002,61.763000000000005,32.641 -2020-01-03 20:15:00,120.91,193.95,61.763000000000005,32.641 -2020-01-03 20:30:00,117.84,189.834,61.763000000000005,32.641 -2020-01-03 20:45:00,113.28,188.551,61.763000000000005,32.641 -2020-01-03 21:00:00,110.73,186.10299999999998,56.785,32.641 -2020-01-03 21:15:00,113.2,183.95,56.785,32.641 -2020-01-03 21:30:00,110.05,181.924,56.785,32.641 -2020-01-03 21:45:00,104.45,180.86900000000003,56.785,32.641 -2020-01-03 22:00:00,98.56,174.898,52.693000000000005,32.641 -2020-01-03 22:15:00,102.19,168.90400000000002,52.693000000000005,32.641 -2020-01-03 22:30:00,100.03,161.57,52.693000000000005,32.641 -2020-01-03 22:45:00,96.9,157.013,52.693000000000005,32.641 -2020-01-03 23:00:00,89.83,149.83100000000002,45.443999999999996,32.641 -2020-01-03 23:15:00,91.91,146.02700000000002,45.443999999999996,32.641 -2020-01-03 23:30:00,88.18,144.751,45.443999999999996,32.641 -2020-01-03 23:45:00,85.54,143.495,45.443999999999996,32.641 -2020-01-04 00:00:00,82.22,127.199,44.738,32.459 -2020-01-04 00:15:00,83.18,122.48899999999999,44.738,32.459 -2020-01-04 00:30:00,81.48,125.102,44.738,32.459 -2020-01-04 00:45:00,73.34,127.589,44.738,32.459 -2020-01-04 01:00:00,72.21,130.76,40.303000000000004,32.459 -2020-01-04 01:15:00,77.36,131.101,40.303000000000004,32.459 -2020-01-04 01:30:00,78.27,130.754,40.303000000000004,32.459 -2020-01-04 01:45:00,75.98,131.06799999999998,40.303000000000004,32.459 -2020-01-04 02:00:00,69.25,133.903,38.61,32.459 -2020-01-04 02:15:00,74.64,135.233,38.61,32.459 -2020-01-04 02:30:00,74.85,135.217,38.61,32.459 -2020-01-04 02:45:00,73.61,137.407,38.61,32.459 -2020-01-04 03:00:00,68.1,139.812,37.554,32.459 -2020-01-04 03:15:00,73.13,140.717,37.554,32.459 -2020-01-04 03:30:00,75.4,140.84799999999998,37.554,32.459 -2020-01-04 03:45:00,70.56,142.566,37.554,32.459 -2020-01-04 04:00:00,67.07,150.611,37.176,32.459 -2020-01-04 04:15:00,67.97,159.77100000000002,37.176,32.459 -2020-01-04 04:30:00,67.71,160.769,37.176,32.459 -2020-01-04 04:45:00,68.5,161.921,37.176,32.459 -2020-01-04 05:00:00,67.87,178.856,36.893,32.459 -2020-01-04 05:15:00,67.75,189.139,36.893,32.459 -2020-01-04 05:30:00,66.1,186.215,36.893,32.459 -2020-01-04 05:45:00,67.33,184.52,36.893,32.459 -2020-01-04 06:00:00,69.91,201.26,37.803000000000004,32.459 -2020-01-04 06:15:00,69.0,222.77200000000002,37.803000000000004,32.459 -2020-01-04 06:30:00,69.5,219.078,37.803000000000004,32.459 -2020-01-04 06:45:00,71.88,215.377,37.803000000000004,32.459 -2020-01-04 07:00:00,76.68,209.287,41.086999999999996,32.459 -2020-01-04 07:15:00,77.71,214.53599999999997,41.086999999999996,32.459 -2020-01-04 07:30:00,80.15,220.502,41.086999999999996,32.459 -2020-01-04 07:45:00,83.14,225.497,41.086999999999996,32.459 -2020-01-04 08:00:00,85.43,227.446,48.222,32.459 -2020-01-04 08:15:00,85.69,231.175,48.222,32.459 -2020-01-04 08:30:00,89.46,232.06099999999998,48.222,32.459 -2020-01-04 08:45:00,91.91,230.729,48.222,32.459 -2020-01-04 09:00:00,92.65,226.387,52.791000000000004,32.459 -2020-01-04 09:15:00,93.59,224.49200000000002,52.791000000000004,32.459 -2020-01-04 09:30:00,94.68,222.80200000000002,52.791000000000004,32.459 -2020-01-04 09:45:00,96.53,219.69,52.791000000000004,32.459 -2020-01-04 10:00:00,98.05,213.424,54.341,32.459 -2020-01-04 10:15:00,95.0,210.122,54.341,32.459 -2020-01-04 10:30:00,94.99,206.91099999999997,54.341,32.459 -2020-01-04 10:45:00,92.74,206.176,54.341,32.459 -2020-01-04 11:00:00,96.61,204.363,51.94,32.459 -2020-01-04 11:15:00,100.28,201.382,51.94,32.459 -2020-01-04 11:30:00,99.55,200.535,51.94,32.459 -2020-01-04 11:45:00,98.58,198.36700000000002,51.94,32.459 -2020-01-04 12:00:00,96.09,193.4,50.973,32.459 -2020-01-04 12:15:00,98.67,191.18099999999998,50.973,32.459 -2020-01-04 12:30:00,96.52,191.675,50.973,32.459 -2020-01-04 12:45:00,95.72,192.248,50.973,32.459 -2020-01-04 13:00:00,93.57,191.208,48.06399999999999,32.459 -2020-01-04 13:15:00,92.81,189.408,48.06399999999999,32.459 -2020-01-04 13:30:00,91.55,188.543,48.06399999999999,32.459 -2020-01-04 13:45:00,89.25,188.99,48.06399999999999,32.459 -2020-01-04 14:00:00,89.5,188.077,45.707,32.459 -2020-01-04 14:15:00,89.52,187.99,45.707,32.459 -2020-01-04 14:30:00,90.0,187.408,45.707,32.459 -2020-01-04 14:45:00,91.09,188.234,45.707,32.459 -2020-01-04 15:00:00,91.5,189.60299999999998,47.567,32.459 -2020-01-04 15:15:00,91.94,190.57,47.567,32.459 -2020-01-04 15:30:00,92.53,193.02900000000002,47.567,32.459 -2020-01-04 15:45:00,94.28,194.947,47.567,32.459 -2020-01-04 16:00:00,96.74,193.149,52.031000000000006,32.459 -2020-01-04 16:15:00,95.42,196.053,52.031000000000006,32.459 -2020-01-04 16:30:00,100.94,198.982,52.031000000000006,32.459 -2020-01-04 16:45:00,102.46,201.418,52.031000000000006,32.459 -2020-01-04 17:00:00,105.49,203.416,58.218999999999994,32.459 -2020-01-04 17:15:00,104.81,205.575,58.218999999999994,32.459 -2020-01-04 17:30:00,107.13,205.94299999999998,58.218999999999994,32.459 -2020-01-04 17:45:00,108.26,205.013,58.218999999999994,32.459 -2020-01-04 18:00:00,110.16,206.662,57.65,32.459 -2020-01-04 18:15:00,109.91,205.239,57.65,32.459 -2020-01-04 18:30:00,109.66,205.75799999999998,57.65,32.459 -2020-01-04 18:45:00,109.05,202.394,57.65,32.459 -2020-01-04 19:00:00,107.78,204.105,51.261,32.459 -2020-01-04 19:15:00,103.06,201.082,51.261,32.459 -2020-01-04 19:30:00,101.89,198.71599999999998,51.261,32.459 -2020-01-04 19:45:00,102.31,194.47799999999998,51.261,32.459 -2020-01-04 20:00:00,94.91,193.0,44.068000000000005,32.459 -2020-01-04 20:15:00,93.02,188.81400000000002,44.068000000000005,32.459 -2020-01-04 20:30:00,88.29,184.359,44.068000000000005,32.459 -2020-01-04 20:45:00,87.9,182.563,44.068000000000005,32.459 -2020-01-04 21:00:00,84.51,182.58599999999998,38.861,32.459 -2020-01-04 21:15:00,83.28,180.90400000000002,38.861,32.459 -2020-01-04 21:30:00,82.28,180.18200000000002,38.861,32.459 -2020-01-04 21:45:00,81.25,178.737,38.861,32.459 -2020-01-04 22:00:00,77.7,174.207,39.485,32.459 -2020-01-04 22:15:00,77.25,170.87,39.485,32.459 -2020-01-04 22:30:00,74.24,170.22299999999998,39.485,32.459 -2020-01-04 22:45:00,73.18,167.65200000000002,39.485,32.459 -2020-01-04 23:00:00,68.36,163.07399999999998,32.027,32.459 -2020-01-04 23:15:00,68.86,157.509,32.027,32.459 -2020-01-04 23:30:00,66.13,154.256,32.027,32.459 -2020-01-04 23:45:00,65.23,150.387,32.027,32.459 -2020-01-05 00:00:00,61.83,127.708,26.96,32.459 -2020-01-05 00:15:00,59.65,122.706,26.96,32.459 -2020-01-05 00:30:00,56.73,124.90899999999999,26.96,32.459 -2020-01-05 00:45:00,58.04,128.141,26.96,32.459 -2020-01-05 01:00:00,54.64,131.15200000000002,24.295,32.459 -2020-01-05 01:15:00,53.12,132.619,24.295,32.459 -2020-01-05 01:30:00,54.89,132.84799999999998,24.295,32.459 -2020-01-05 01:45:00,55.39,132.83700000000002,24.295,32.459 -2020-01-05 02:00:00,52.81,134.87,24.268,32.459 -2020-01-05 02:15:00,53.85,135.224,24.268,32.459 -2020-01-05 02:30:00,53.36,136.131,24.268,32.459 -2020-01-05 02:45:00,53.22,138.842,24.268,32.459 -2020-01-05 03:00:00,51.24,141.54,23.373,32.459 -2020-01-05 03:15:00,52.77,141.878,23.373,32.459 -2020-01-05 03:30:00,53.33,143.584,23.373,32.459 -2020-01-05 03:45:00,52.95,145.284,23.373,32.459 -2020-01-05 04:00:00,53.02,153.043,23.874000000000002,32.459 -2020-01-05 04:15:00,54.36,161.123,23.874000000000002,32.459 -2020-01-05 04:30:00,55.19,162.089,23.874000000000002,32.459 -2020-01-05 04:45:00,54.83,163.567,23.874000000000002,32.459 -2020-01-05 05:00:00,56.2,176.618,24.871,32.459 -2020-01-05 05:15:00,57.61,184.28099999999998,24.871,32.459 -2020-01-05 05:30:00,58.05,181.218,24.871,32.459 -2020-01-05 05:45:00,58.68,179.833,24.871,32.459 -2020-01-05 06:00:00,58.97,196.65900000000002,23.84,32.459 -2020-01-05 06:15:00,60.37,216.24099999999999,23.84,32.459 -2020-01-05 06:30:00,60.21,211.415,23.84,32.459 -2020-01-05 06:45:00,60.83,206.671,23.84,32.459 -2020-01-05 07:00:00,63.06,203.24599999999998,27.430999999999997,32.459 -2020-01-05 07:15:00,64.35,207.676,27.430999999999997,32.459 -2020-01-05 07:30:00,66.38,212.19400000000002,27.430999999999997,32.459 -2020-01-05 07:45:00,68.85,216.345,27.430999999999997,32.459 -2020-01-05 08:00:00,71.87,220.25099999999998,33.891999999999996,32.459 -2020-01-05 08:15:00,72.96,223.791,33.891999999999996,32.459 -2020-01-05 08:30:00,75.42,226.391,33.891999999999996,32.459 -2020-01-05 08:45:00,77.7,227.232,33.891999999999996,32.459 -2020-01-05 09:00:00,79.34,222.44799999999998,37.571,32.459 -2020-01-05 09:15:00,79.42,221.187,37.571,32.459 -2020-01-05 09:30:00,80.81,219.317,37.571,32.459 -2020-01-05 09:45:00,82.3,216.00799999999998,37.571,32.459 -2020-01-05 10:00:00,83.72,212.428,40.594,32.459 -2020-01-05 10:15:00,84.02,209.692,40.594,32.459 -2020-01-05 10:30:00,86.92,207.107,40.594,32.459 -2020-01-05 10:45:00,89.06,204.26,40.594,32.459 -2020-01-05 11:00:00,91.79,203.445,44.133,32.459 -2020-01-05 11:15:00,98.14,200.63099999999997,44.133,32.459 -2020-01-05 11:30:00,99.24,198.81799999999998,44.133,32.459 -2020-01-05 11:45:00,100.24,197.28900000000002,44.133,32.459 -2020-01-05 12:00:00,99.8,191.658,41.198,32.459 -2020-01-05 12:15:00,96.2,191.544,41.198,32.459 -2020-01-05 12:30:00,92.34,190.454,41.198,32.459 -2020-01-05 12:45:00,91.8,190.02599999999998,41.198,32.459 -2020-01-05 13:00:00,86.98,188.218,37.014,32.459 -2020-01-05 13:15:00,86.22,189.688,37.014,32.459 -2020-01-05 13:30:00,85.32,188.65200000000002,37.014,32.459 -2020-01-05 13:45:00,85.43,188.31799999999998,37.014,32.459 -2020-01-05 14:00:00,83.74,187.613,34.934,32.459 -2020-01-05 14:15:00,83.86,188.78400000000002,34.934,32.459 -2020-01-05 14:30:00,84.5,189.609,34.934,32.459 -2020-01-05 14:45:00,84.63,190.06799999999998,34.934,32.459 -2020-01-05 15:00:00,85.54,189.8,34.588,32.459 -2020-01-05 15:15:00,85.23,191.607,34.588,32.459 -2020-01-05 15:30:00,84.85,194.704,34.588,32.459 -2020-01-05 15:45:00,85.8,197.34099999999998,34.588,32.459 -2020-01-05 16:00:00,87.47,197.61700000000002,37.874,32.459 -2020-01-05 16:15:00,90.49,199.547,37.874,32.459 -2020-01-05 16:30:00,92.21,202.707,37.874,32.459 -2020-01-05 16:45:00,93.29,205.295,37.874,32.459 -2020-01-05 17:00:00,98.04,207.237,47.303999999999995,32.459 -2020-01-05 17:15:00,97.7,208.99900000000002,47.303999999999995,32.459 -2020-01-05 17:30:00,99.31,209.662,47.303999999999995,32.459 -2020-01-05 17:45:00,100.34,211.15,47.303999999999995,32.459 -2020-01-05 18:00:00,102.25,212.196,48.879,32.459 -2020-01-05 18:15:00,100.54,212.206,48.879,32.459 -2020-01-05 18:30:00,100.22,210.523,48.879,32.459 -2020-01-05 18:45:00,99.47,209.142,48.879,32.459 -2020-01-05 19:00:00,99.14,210.358,44.826,32.459 -2020-01-05 19:15:00,98.01,208.015,44.826,32.459 -2020-01-05 19:30:00,96.07,205.486,44.826,32.459 -2020-01-05 19:45:00,94.14,202.801,44.826,32.459 -2020-01-05 20:00:00,93.2,201.287,40.154,32.459 -2020-01-05 20:15:00,91.82,198.157,40.154,32.459 -2020-01-05 20:30:00,90.16,194.97099999999998,40.154,32.459 -2020-01-05 20:45:00,88.47,191.995,40.154,32.459 -2020-01-05 21:00:00,84.27,189.24099999999999,36.549,32.459 -2020-01-05 21:15:00,84.17,186.889,36.549,32.459 -2020-01-05 21:30:00,84.43,186.51,36.549,32.459 -2020-01-05 21:45:00,85.26,185.207,36.549,32.459 -2020-01-05 22:00:00,83.7,179.30900000000003,37.663000000000004,32.459 -2020-01-05 22:15:00,82.23,175.25599999999997,37.663000000000004,32.459 -2020-01-05 22:30:00,80.43,171.27900000000002,37.663000000000004,32.459 -2020-01-05 22:45:00,79.58,167.87099999999998,37.663000000000004,32.459 -2020-01-05 23:00:00,75.67,160.305,31.945,32.459 -2020-01-05 23:15:00,77.15,156.664,31.945,32.459 -2020-01-05 23:30:00,74.59,154.317,31.945,32.459 -2020-01-05 23:45:00,73.41,151.388,31.945,32.459 -2020-01-06 00:00:00,70.86,132.295,31.533,32.641 -2020-01-06 00:15:00,69.7,130.435,31.533,32.641 -2020-01-06 00:30:00,69.11,132.78799999999998,31.533,32.641 -2020-01-06 00:45:00,68.33,135.447,31.533,32.641 -2020-01-06 01:00:00,67.32,138.469,30.56,32.641 -2020-01-06 01:15:00,67.69,139.35399999999998,30.56,32.641 -2020-01-06 01:30:00,67.44,139.616,30.56,32.641 -2020-01-06 01:45:00,67.1,139.725,30.56,32.641 -2020-01-06 02:00:00,67.52,141.722,29.55,32.641 -2020-01-06 02:15:00,67.29,143.738,29.55,32.641 -2020-01-06 02:30:00,67.05,145.003,29.55,32.641 -2020-01-06 02:45:00,67.2,147.05200000000002,29.55,32.641 -2020-01-06 03:00:00,68.35,151.1,27.059,32.641 -2020-01-06 03:15:00,68.78,153.201,27.059,32.641 -2020-01-06 03:30:00,69.82,154.562,27.059,32.641 -2020-01-06 03:45:00,69.92,155.701,27.059,32.641 -2020-01-06 04:00:00,67.73,167.963,28.384,32.641 -2020-01-06 04:15:00,71.53,180.334,28.384,32.641 -2020-01-06 04:30:00,73.1,183.72799999999998,28.384,32.641 -2020-01-06 04:45:00,76.51,185.351,28.384,32.641 -2020-01-06 05:00:00,81.52,215.055,35.915,32.641 -2020-01-06 05:15:00,84.58,243.92,35.915,32.641 -2020-01-06 05:30:00,89.42,241.291,35.915,32.641 -2020-01-06 05:45:00,94.89,233.987,35.915,32.641 -2020-01-06 06:00:00,103.99,232.019,56.18,32.641 -2020-01-06 06:15:00,110.77,236.107,56.18,32.641 -2020-01-06 06:30:00,116.07,239.75,56.18,32.641 -2020-01-06 06:45:00,119.86,244.24,56.18,32.641 -2020-01-06 07:00:00,126.05,243.37599999999998,70.877,32.641 -2020-01-06 07:15:00,129.26,248.982,70.877,32.641 -2020-01-06 07:30:00,131.09,252.704,70.877,32.641 -2020-01-06 07:45:00,132.63,254.012,70.877,32.641 -2020-01-06 08:00:00,136.79,252.68599999999998,65.65,32.641 -2020-01-06 08:15:00,137.86,253.967,65.65,32.641 -2020-01-06 08:30:00,137.45,252.168,65.65,32.641 -2020-01-06 08:45:00,136.78,249.345,65.65,32.641 -2020-01-06 09:00:00,137.29,243.503,62.037,32.641 -2020-01-06 09:15:00,138.96,238.595,62.037,32.641 -2020-01-06 09:30:00,139.49,235.72099999999998,62.037,32.641 -2020-01-06 09:45:00,139.62,232.888,62.037,32.641 -2020-01-06 10:00:00,140.37,228.12599999999998,60.409,32.641 -2020-01-06 10:15:00,140.63,225.046,60.409,32.641 -2020-01-06 10:30:00,138.89,221.533,60.409,32.641 -2020-01-06 10:45:00,138.54,219.613,60.409,32.641 -2020-01-06 11:00:00,137.59,215.89700000000002,60.211999999999996,32.641 -2020-01-06 11:15:00,138.33,215.011,60.211999999999996,32.641 -2020-01-06 11:30:00,139.52,214.644,60.211999999999996,32.641 -2020-01-06 11:45:00,136.44,212.643,60.211999999999996,32.641 -2020-01-06 12:00:00,137.83,209.015,57.733000000000004,32.641 -2020-01-06 12:15:00,134.41,208.912,57.733000000000004,32.641 -2020-01-06 12:30:00,133.37,208.162,57.733000000000004,32.641 -2020-01-06 12:45:00,131.24,209.385,57.733000000000004,32.641 -2020-01-06 13:00:00,130.49,208.141,58.695,32.641 -2020-01-06 13:15:00,127.09,208.16099999999997,58.695,32.641 -2020-01-06 13:30:00,123.67,206.52900000000002,58.695,32.641 -2020-01-06 13:45:00,127.05,206.16299999999998,58.695,32.641 -2020-01-06 14:00:00,129.68,204.84099999999998,59.505,32.641 -2020-01-06 14:15:00,129.73,205.275,59.505,32.641 -2020-01-06 14:30:00,130.81,205.53400000000002,59.505,32.641 -2020-01-06 14:45:00,131.3,205.83599999999998,59.505,32.641 -2020-01-06 15:00:00,131.31,207.50599999999997,59.946000000000005,32.641 -2020-01-06 15:15:00,131.43,207.78400000000002,59.946000000000005,32.641 -2020-01-06 15:30:00,130.17,209.935,59.946000000000005,32.641 -2020-01-06 15:45:00,131.03,212.113,59.946000000000005,32.641 -2020-01-06 16:00:00,134.41,212.476,61.766999999999996,32.641 -2020-01-06 16:15:00,134.55,213.59400000000002,61.766999999999996,32.641 -2020-01-06 16:30:00,140.59,215.763,61.766999999999996,32.641 -2020-01-06 16:45:00,140.87,217.083,61.766999999999996,32.641 -2020-01-06 17:00:00,140.83,218.85299999999998,67.85600000000001,32.641 -2020-01-06 17:15:00,140.84,219.60299999999998,67.85600000000001,32.641 -2020-01-06 17:30:00,142.16,219.729,67.85600000000001,32.641 -2020-01-06 17:45:00,140.41,219.657,67.85600000000001,32.641 -2020-01-06 18:00:00,137.78,221.21599999999998,64.564,32.641 -2020-01-06 18:15:00,136.67,218.96900000000002,64.564,32.641 -2020-01-06 18:30:00,133.62,218.032,64.564,32.641 -2020-01-06 18:45:00,134.52,217.257,64.564,32.641 -2020-01-06 19:00:00,131.97,216.72299999999998,58.536,32.641 -2020-01-06 19:15:00,129.61,213.06,58.536,32.641 -2020-01-06 19:30:00,131.14,211.083,58.536,32.641 -2020-01-06 19:45:00,133.72,207.54,58.536,32.641 -2020-01-06 20:00:00,128.55,203.563,59.888999999999996,32.641 -2020-01-06 20:15:00,117.39,197.7,59.888999999999996,32.641 -2020-01-06 20:30:00,115.28,192.479,59.888999999999996,32.641 -2020-01-06 20:45:00,111.64,191.25099999999998,59.888999999999996,32.641 -2020-01-06 21:00:00,108.63,189.085,52.652,32.641 -2020-01-06 21:15:00,110.16,185.43099999999998,52.652,32.641 -2020-01-06 21:30:00,111.85,184.145,52.652,32.641 -2020-01-06 21:45:00,110.02,182.327,52.652,32.641 -2020-01-06 22:00:00,103.97,173.459,46.17,32.641 -2020-01-06 22:15:00,101.93,167.895,46.17,32.641 -2020-01-06 22:30:00,100.68,153.954,46.17,32.641 -2020-01-06 22:45:00,97.59,145.379,46.17,32.641 -2020-01-06 23:00:00,90.0,138.627,36.281,32.641 -2020-01-06 23:15:00,87.29,137.92700000000002,36.281,32.641 -2020-01-06 23:30:00,83.89,138.554,36.281,32.641 -2020-01-06 23:45:00,88.74,138.484,36.281,32.641 -2020-01-07 00:00:00,86.26,131.85,38.821999999999996,32.641 -2020-01-07 00:15:00,81.91,131.452,38.821999999999996,32.641 -2020-01-07 00:30:00,81.41,132.71200000000002,38.821999999999996,32.641 -2020-01-07 00:45:00,83.42,134.23,38.821999999999996,32.641 -2020-01-07 01:00:00,82.73,137.08700000000002,36.936,32.641 -2020-01-07 01:15:00,80.08,137.469,36.936,32.641 -2020-01-07 01:30:00,78.9,137.929,36.936,32.641 -2020-01-07 01:45:00,81.69,138.401,36.936,32.641 -2020-01-07 02:00:00,81.57,140.446,34.42,32.641 -2020-01-07 02:15:00,80.71,142.245,34.42,32.641 -2020-01-07 02:30:00,78.77,142.898,34.42,32.641 -2020-01-07 02:45:00,81.99,144.93200000000002,34.42,32.641 -2020-01-07 03:00:00,82.0,147.695,33.585,32.641 -2020-01-07 03:15:00,79.21,148.804,33.585,32.641 -2020-01-07 03:30:00,82.09,150.697,33.585,32.641 -2020-01-07 03:45:00,82.69,152.15,33.585,32.641 -2020-01-07 04:00:00,77.46,164.275,35.622,32.641 -2020-01-07 04:15:00,77.37,176.252,35.622,32.641 -2020-01-07 04:30:00,77.18,179.312,35.622,32.641 -2020-01-07 04:45:00,80.05,182.22,35.622,32.641 -2020-01-07 05:00:00,84.68,217.25599999999997,40.599000000000004,32.641 -2020-01-07 05:15:00,88.21,245.796,40.599000000000004,32.641 -2020-01-07 05:30:00,91.8,241.465,40.599000000000004,32.641 -2020-01-07 05:45:00,96.21,234.25900000000001,40.599000000000004,32.641 -2020-01-07 06:00:00,104.74,230.912,55.203,32.641 -2020-01-07 06:15:00,111.62,236.783,55.203,32.641 -2020-01-07 06:30:00,115.53,239.761,55.203,32.641 -2020-01-07 06:45:00,119.58,243.951,55.203,32.641 -2020-01-07 07:00:00,121.42,242.885,69.029,32.641 -2020-01-07 07:15:00,129.39,248.329,69.029,32.641 -2020-01-07 07:30:00,132.48,251.43200000000002,69.029,32.641 -2020-01-07 07:45:00,134.56,253.047,69.029,32.641 -2020-01-07 08:00:00,136.12,251.842,65.85300000000001,32.641 -2020-01-07 08:15:00,135.08,252.024,65.85300000000001,32.641 -2020-01-07 08:30:00,135.3,249.989,65.85300000000001,32.641 -2020-01-07 08:45:00,134.8,246.93400000000003,65.85300000000001,32.641 -2020-01-07 09:00:00,135.59,240.132,61.566,32.641 -2020-01-07 09:15:00,137.31,236.993,61.566,32.641 -2020-01-07 09:30:00,139.13,234.81900000000002,61.566,32.641 -2020-01-07 09:45:00,138.88,231.628,61.566,32.641 -2020-01-07 10:00:00,138.47,226.34,61.244,32.641 -2020-01-07 10:15:00,136.8,222.109,61.244,32.641 -2020-01-07 10:30:00,135.87,218.78,61.244,32.641 -2020-01-07 10:45:00,136.63,217.085,61.244,32.641 -2020-01-07 11:00:00,136.36,214.982,61.16,32.641 -2020-01-07 11:15:00,139.62,213.697,61.16,32.641 -2020-01-07 11:30:00,138.15,212.15400000000002,61.16,32.641 -2020-01-07 11:45:00,134.33,210.957,61.16,32.641 -2020-01-07 12:00:00,132.11,205.859,59.09,32.641 -2020-01-07 12:15:00,133.48,205.292,59.09,32.641 -2020-01-07 12:30:00,132.6,205.255,59.09,32.641 -2020-01-07 12:45:00,132.01,206.10299999999998,59.09,32.641 -2020-01-07 13:00:00,132.8,204.433,60.21,32.641 -2020-01-07 13:15:00,132.97,203.91299999999998,60.21,32.641 -2020-01-07 13:30:00,131.24,203.553,60.21,32.641 -2020-01-07 13:45:00,130.77,203.46599999999998,60.21,32.641 -2020-01-07 14:00:00,129.75,202.437,60.673,32.641 -2020-01-07 14:15:00,129.53,203.049,60.673,32.641 -2020-01-07 14:30:00,124.81,203.976,60.673,32.641 -2020-01-07 14:45:00,126.69,204.27,60.673,32.641 -2020-01-07 15:00:00,127.02,205.505,62.232,32.641 -2020-01-07 15:15:00,126.96,206.055,62.232,32.641 -2020-01-07 15:30:00,127.74,208.46,62.232,32.641 -2020-01-07 15:45:00,128.19,210.165,62.232,32.641 -2020-01-07 16:00:00,130.28,210.956,63.611999999999995,32.641 -2020-01-07 16:15:00,132.81,212.595,63.611999999999995,32.641 -2020-01-07 16:30:00,135.09,215.49900000000002,63.611999999999995,32.641 -2020-01-07 16:45:00,135.68,217.08900000000003,63.611999999999995,32.641 -2020-01-07 17:00:00,136.74,219.416,70.658,32.641 -2020-01-07 17:15:00,137.73,220.201,70.658,32.641 -2020-01-07 17:30:00,140.3,221.10299999999998,70.658,32.641 -2020-01-07 17:45:00,142.14,220.933,70.658,32.641 -2020-01-07 18:00:00,139.97,222.459,68.361,32.641 -2020-01-07 18:15:00,138.96,219.579,68.361,32.641 -2020-01-07 18:30:00,138.24,218.333,68.361,32.641 -2020-01-07 18:45:00,139.74,218.446,68.361,32.641 -2020-01-07 19:00:00,132.95,218.03900000000002,62.922,32.641 -2020-01-07 19:15:00,131.59,214.065,62.922,32.641 -2020-01-07 19:30:00,137.99,211.38400000000001,62.922,32.641 -2020-01-07 19:45:00,136.02,207.86,62.922,32.641 -2020-01-07 20:00:00,126.68,204.014,63.251999999999995,32.641 -2020-01-07 20:15:00,117.77,197.558,63.251999999999995,32.641 -2020-01-07 20:30:00,114.85,193.41400000000002,63.251999999999995,32.641 -2020-01-07 20:45:00,111.71,191.56,63.251999999999995,32.641 -2020-01-07 21:00:00,108.54,188.565,54.47,32.641 -2020-01-07 21:15:00,108.54,185.96599999999998,54.47,32.641 -2020-01-07 21:30:00,111.64,183.882,54.47,32.641 -2020-01-07 21:45:00,109.59,182.312,54.47,32.641 -2020-01-07 22:00:00,99.32,175.27200000000002,51.12,32.641 -2020-01-07 22:15:00,98.89,169.467,51.12,32.641 -2020-01-07 22:30:00,93.04,155.618,51.12,32.641 -2020-01-07 22:45:00,92.29,147.349,51.12,32.641 -2020-01-07 23:00:00,94.19,140.65200000000002,42.156000000000006,32.641 -2020-01-07 23:15:00,93.18,138.885,42.156000000000006,32.641 -2020-01-07 23:30:00,88.85,139.142,42.156000000000006,32.641 -2020-01-07 23:45:00,80.72,138.58700000000002,42.156000000000006,32.641 -2020-01-08 00:00:00,80.57,131.975,37.192,32.641 -2020-01-08 00:15:00,77.7,131.555,37.192,32.641 -2020-01-08 00:30:00,82.22,132.80200000000002,37.192,32.641 -2020-01-08 00:45:00,83.18,134.30200000000002,37.192,32.641 -2020-01-08 01:00:00,80.31,137.168,32.24,32.641 -2020-01-08 01:15:00,80.35,137.54,32.24,32.641 -2020-01-08 01:30:00,81.14,138.001,32.24,32.641 -2020-01-08 01:45:00,83.23,138.461,32.24,32.641 -2020-01-08 02:00:00,82.4,140.52,30.34,32.641 -2020-01-08 02:15:00,76.87,142.319,30.34,32.641 -2020-01-08 02:30:00,81.52,142.981,30.34,32.641 -2020-01-08 02:45:00,82.44,145.014,30.34,32.641 -2020-01-08 03:00:00,82.38,147.77100000000002,29.129,32.641 -2020-01-08 03:15:00,76.92,148.901,29.129,32.641 -2020-01-08 03:30:00,80.45,150.79399999999998,29.129,32.641 -2020-01-08 03:45:00,83.8,152.255,29.129,32.641 -2020-01-08 04:00:00,82.13,164.354,30.075,32.641 -2020-01-08 04:15:00,80.51,176.32,30.075,32.641 -2020-01-08 04:30:00,79.95,179.37900000000002,30.075,32.641 -2020-01-08 04:45:00,82.2,182.28,30.075,32.641 -2020-01-08 05:00:00,86.19,217.273,35.684,32.641 -2020-01-08 05:15:00,86.69,245.778,35.684,32.641 -2020-01-08 05:30:00,92.91,241.455,35.684,32.641 -2020-01-08 05:45:00,97.02,234.27,35.684,32.641 -2020-01-08 06:00:00,105.5,230.947,51.49,32.641 -2020-01-08 06:15:00,111.76,236.826,51.49,32.641 -2020-01-08 06:30:00,116.68,239.821,51.49,32.641 -2020-01-08 06:45:00,121.17,244.044,51.49,32.641 -2020-01-08 07:00:00,125.64,242.99099999999999,68.242,32.641 -2020-01-08 07:15:00,129.08,248.426,68.242,32.641 -2020-01-08 07:30:00,132.63,251.513,68.242,32.641 -2020-01-08 07:45:00,135.49,253.108,68.242,32.641 -2020-01-08 08:00:00,134.07,251.9,63.619,32.641 -2020-01-08 08:15:00,136.8,252.067,63.619,32.641 -2020-01-08 08:30:00,136.39,250.003,63.619,32.641 -2020-01-08 08:45:00,135.84,246.926,63.619,32.641 -2020-01-08 09:00:00,136.47,240.108,61.333,32.641 -2020-01-08 09:15:00,137.33,236.976,61.333,32.641 -2020-01-08 09:30:00,137.5,234.81799999999998,61.333,32.641 -2020-01-08 09:45:00,137.48,231.62099999999998,61.333,32.641 -2020-01-08 10:00:00,134.72,226.333,59.663000000000004,32.641 -2020-01-08 10:15:00,132.18,222.105,59.663000000000004,32.641 -2020-01-08 10:30:00,130.36,218.767,59.663000000000004,32.641 -2020-01-08 10:45:00,128.21,217.075,59.663000000000004,32.641 -2020-01-08 11:00:00,129.5,214.952,59.771,32.641 -2020-01-08 11:15:00,129.67,213.665,59.771,32.641 -2020-01-08 11:30:00,130.99,212.125,59.771,32.641 -2020-01-08 11:45:00,126.7,210.93099999999998,59.771,32.641 -2020-01-08 12:00:00,126.02,205.842,58.723,32.641 -2020-01-08 12:15:00,124.09,205.294,58.723,32.641 -2020-01-08 12:30:00,124.12,205.25099999999998,58.723,32.641 -2020-01-08 12:45:00,123.16,206.101,58.723,32.641 -2020-01-08 13:00:00,121.39,204.422,58.727,32.641 -2020-01-08 13:15:00,121.87,203.891,58.727,32.641 -2020-01-08 13:30:00,120.34,203.52,58.727,32.641 -2020-01-08 13:45:00,120.5,203.426,58.727,32.641 -2020-01-08 14:00:00,121.17,202.41299999999998,59.803999999999995,32.641 -2020-01-08 14:15:00,121.88,203.019,59.803999999999995,32.641 -2020-01-08 14:30:00,122.69,203.952,59.803999999999995,32.641 -2020-01-08 14:45:00,123.96,204.262,59.803999999999995,32.641 -2020-01-08 15:00:00,124.01,205.516,61.05,32.641 -2020-01-08 15:15:00,124.57,206.048,61.05,32.641 -2020-01-08 15:30:00,121.73,208.44799999999998,61.05,32.641 -2020-01-08 15:45:00,124.55,210.141,61.05,32.641 -2020-01-08 16:00:00,126.01,210.935,64.012,32.641 -2020-01-08 16:15:00,128.33,212.583,64.012,32.641 -2020-01-08 16:30:00,131.93,215.49400000000003,64.012,32.641 -2020-01-08 16:45:00,136.83,217.09400000000002,64.012,32.641 -2020-01-08 17:00:00,138.72,219.403,66.751,32.641 -2020-01-08 17:15:00,141.55,220.22,66.751,32.641 -2020-01-08 17:30:00,141.31,221.15200000000002,66.751,32.641 -2020-01-08 17:45:00,141.4,220.99900000000002,66.751,32.641 -2020-01-08 18:00:00,140.41,222.546,65.91199999999999,32.641 -2020-01-08 18:15:00,138.77,219.672,65.91199999999999,32.641 -2020-01-08 18:30:00,137.47,218.43200000000002,65.91199999999999,32.641 -2020-01-08 18:45:00,137.79,218.563,65.91199999999999,32.641 -2020-01-08 19:00:00,135.13,218.12400000000002,63.324,32.641 -2020-01-08 19:15:00,133.38,214.15,63.324,32.641 -2020-01-08 19:30:00,137.98,211.472,63.324,32.641 -2020-01-08 19:45:00,138.21,207.94799999999998,63.324,32.641 -2020-01-08 20:00:00,130.16,204.08599999999998,63.573,32.641 -2020-01-08 20:15:00,121.28,197.63099999999997,63.573,32.641 -2020-01-08 20:30:00,114.19,193.47799999999998,63.573,32.641 -2020-01-08 20:45:00,114.46,191.641,63.573,32.641 -2020-01-08 21:00:00,111.07,188.627,55.073,32.641 -2020-01-08 21:15:00,113.94,186.01,55.073,32.641 -2020-01-08 21:30:00,114.23,183.926,55.073,32.641 -2020-01-08 21:45:00,109.84,182.37,55.073,32.641 -2020-01-08 22:00:00,103.51,175.329,51.321999999999996,32.641 -2020-01-08 22:15:00,99.13,169.53799999999998,51.321999999999996,32.641 -2020-01-08 22:30:00,95.71,155.703,51.321999999999996,32.641 -2020-01-08 22:45:00,101.09,147.44299999999998,51.321999999999996,32.641 -2020-01-08 23:00:00,97.81,140.725,42.09,32.641 -2020-01-08 23:15:00,93.34,138.966,42.09,32.641 -2020-01-08 23:30:00,90.01,139.239,42.09,32.641 -2020-01-08 23:45:00,90.33,138.685,42.09,32.641 -2020-01-09 00:00:00,89.51,132.093,38.399,32.641 -2020-01-09 00:15:00,88.2,131.65,38.399,32.641 -2020-01-09 00:30:00,82.53,132.88299999999998,38.399,32.641 -2020-01-09 00:45:00,87.05,134.366,38.399,32.641 -2020-01-09 01:00:00,85.85,137.24,36.94,32.641 -2020-01-09 01:15:00,83.8,137.60399999999998,36.94,32.641 -2020-01-09 01:30:00,79.51,138.062,36.94,32.641 -2020-01-09 01:45:00,77.14,138.512,36.94,32.641 -2020-01-09 02:00:00,82.48,140.584,35.275,32.641 -2020-01-09 02:15:00,82.45,142.384,35.275,32.641 -2020-01-09 02:30:00,84.42,143.055,35.275,32.641 -2020-01-09 02:45:00,79.29,145.088,35.275,32.641 -2020-01-09 03:00:00,83.67,147.839,35.329,32.641 -2020-01-09 03:15:00,85.27,148.987,35.329,32.641 -2020-01-09 03:30:00,86.25,150.881,35.329,32.641 -2020-01-09 03:45:00,82.05,152.349,35.329,32.641 -2020-01-09 04:00:00,85.8,164.422,36.275,32.641 -2020-01-09 04:15:00,85.66,176.38,36.275,32.641 -2020-01-09 04:30:00,84.93,179.43599999999998,36.275,32.641 -2020-01-09 04:45:00,85.52,182.334,36.275,32.641 -2020-01-09 05:00:00,88.07,217.282,42.193999999999996,32.641 -2020-01-09 05:15:00,91.08,245.75099999999998,42.193999999999996,32.641 -2020-01-09 05:30:00,94.82,241.43599999999998,42.193999999999996,32.641 -2020-01-09 05:45:00,99.1,234.27200000000002,42.193999999999996,32.641 -2020-01-09 06:00:00,105.02,230.97299999999998,56.422,32.641 -2020-01-09 06:15:00,114.36,236.86,56.422,32.641 -2020-01-09 06:30:00,118.47,239.872,56.422,32.641 -2020-01-09 06:45:00,123.49,244.12599999999998,56.422,32.641 -2020-01-09 07:00:00,128.98,243.08900000000003,72.569,32.641 -2020-01-09 07:15:00,133.18,248.513,72.569,32.641 -2020-01-09 07:30:00,135.84,251.582,72.569,32.641 -2020-01-09 07:45:00,136.0,253.157,72.569,32.641 -2020-01-09 08:00:00,136.35,251.945,67.704,32.641 -2020-01-09 08:15:00,136.41,252.09599999999998,67.704,32.641 -2020-01-09 08:30:00,136.61,250.002,67.704,32.641 -2020-01-09 08:45:00,135.57,246.90599999999998,67.704,32.641 -2020-01-09 09:00:00,134.91,240.072,63.434,32.641 -2020-01-09 09:15:00,135.13,236.947,63.434,32.641 -2020-01-09 09:30:00,132.82,234.805,63.434,32.641 -2020-01-09 09:45:00,134.04,231.602,63.434,32.641 -2020-01-09 10:00:00,133.79,226.315,61.88399999999999,32.641 -2020-01-09 10:15:00,132.44,222.09,61.88399999999999,32.641 -2020-01-09 10:30:00,131.18,218.74200000000002,61.88399999999999,32.641 -2020-01-09 10:45:00,129.86,217.054,61.88399999999999,32.641 -2020-01-09 11:00:00,129.31,214.91099999999997,61.481,32.641 -2020-01-09 11:15:00,129.73,213.62400000000002,61.481,32.641 -2020-01-09 11:30:00,129.62,212.08599999999998,61.481,32.641 -2020-01-09 11:45:00,128.23,210.895,61.481,32.641 -2020-01-09 12:00:00,128.19,205.817,59.527,32.641 -2020-01-09 12:15:00,126.99,205.28599999999997,59.527,32.641 -2020-01-09 12:30:00,126.29,205.238,59.527,32.641 -2020-01-09 12:45:00,125.88,206.08900000000003,59.527,32.641 -2020-01-09 13:00:00,125.21,204.40099999999998,58.794,32.641 -2020-01-09 13:15:00,125.26,203.859,58.794,32.641 -2020-01-09 13:30:00,120.6,203.476,58.794,32.641 -2020-01-09 13:45:00,123.97,203.37599999999998,58.794,32.641 -2020-01-09 14:00:00,127.41,202.38099999999997,60.32,32.641 -2020-01-09 14:15:00,128.59,202.979,60.32,32.641 -2020-01-09 14:30:00,127.7,203.919,60.32,32.641 -2020-01-09 14:45:00,128.7,204.245,60.32,32.641 -2020-01-09 15:00:00,129.88,205.519,62.52,32.641 -2020-01-09 15:15:00,129.65,206.03,62.52,32.641 -2020-01-09 15:30:00,128.81,208.423,62.52,32.641 -2020-01-09 15:45:00,129.3,210.108,62.52,32.641 -2020-01-09 16:00:00,130.58,210.90200000000002,64.199,32.641 -2020-01-09 16:15:00,132.89,212.55900000000003,64.199,32.641 -2020-01-09 16:30:00,135.51,215.477,64.199,32.641 -2020-01-09 16:45:00,138.94,217.085,64.199,32.641 -2020-01-09 17:00:00,140.54,219.38,68.19800000000001,32.641 -2020-01-09 17:15:00,141.52,220.227,68.19800000000001,32.641 -2020-01-09 17:30:00,142.06,221.187,68.19800000000001,32.641 -2020-01-09 17:45:00,142.3,221.053,68.19800000000001,32.641 -2020-01-09 18:00:00,140.27,222.622,67.899,32.641 -2020-01-09 18:15:00,139.4,219.75400000000002,67.899,32.641 -2020-01-09 18:30:00,137.51,218.52,67.899,32.641 -2020-01-09 18:45:00,137.88,218.67,67.899,32.641 -2020-01-09 19:00:00,135.66,218.199,64.72399999999999,32.641 -2020-01-09 19:15:00,133.63,214.226,64.72399999999999,32.641 -2020-01-09 19:30:00,136.63,211.551,64.72399999999999,32.641 -2020-01-09 19:45:00,136.33,208.028,64.72399999999999,32.641 -2020-01-09 20:00:00,130.0,204.149,64.062,32.641 -2020-01-09 20:15:00,120.43,197.695,64.062,32.641 -2020-01-09 20:30:00,115.58,193.532,64.062,32.641 -2020-01-09 20:45:00,114.76,191.713,64.062,32.641 -2020-01-09 21:00:00,111.28,188.68,57.971000000000004,32.641 -2020-01-09 21:15:00,114.3,186.046,57.971000000000004,32.641 -2020-01-09 21:30:00,112.74,183.96200000000002,57.971000000000004,32.641 -2020-01-09 21:45:00,107.12,182.422,57.971000000000004,32.641 -2020-01-09 22:00:00,103.37,175.37599999999998,53.715,32.641 -2020-01-09 22:15:00,97.81,169.60299999999998,53.715,32.641 -2020-01-09 22:30:00,96.27,155.78,53.715,32.641 -2020-01-09 22:45:00,99.06,147.52700000000002,53.715,32.641 -2020-01-09 23:00:00,96.54,140.78799999999998,47.8,32.641 -2020-01-09 23:15:00,90.59,139.037,47.8,32.641 -2020-01-09 23:30:00,83.45,139.326,47.8,32.641 -2020-01-09 23:45:00,85.64,138.773,47.8,32.641 -2020-01-10 00:00:00,84.68,131.172,43.656000000000006,32.641 -2020-01-10 00:15:00,87.29,130.907,43.656000000000006,32.641 -2020-01-10 00:30:00,86.37,131.95600000000002,43.656000000000006,32.641 -2020-01-10 00:45:00,81.92,133.513,43.656000000000006,32.641 -2020-01-10 01:00:00,80.49,136.08100000000002,41.263000000000005,32.641 -2020-01-10 01:15:00,84.15,137.489,41.263000000000005,32.641 -2020-01-10 01:30:00,82.86,137.643,41.263000000000005,32.641 -2020-01-10 01:45:00,80.26,138.219,41.263000000000005,32.641 -2020-01-10 02:00:00,82.41,140.32299999999998,40.799,32.641 -2020-01-10 02:15:00,82.9,142.0,40.799,32.641 -2020-01-10 02:30:00,82.52,143.188,40.799,32.641 -2020-01-10 02:45:00,78.57,145.32399999999998,40.799,32.641 -2020-01-10 03:00:00,82.79,146.91,41.398,32.641 -2020-01-10 03:15:00,83.34,149.214,41.398,32.641 -2020-01-10 03:30:00,81.33,151.107,41.398,32.641 -2020-01-10 03:45:00,83.38,152.868,41.398,32.641 -2020-01-10 04:00:00,84.86,165.15900000000002,42.38,32.641 -2020-01-10 04:15:00,82.09,176.97400000000002,42.38,32.641 -2020-01-10 04:30:00,80.74,180.197,42.38,32.641 -2020-01-10 04:45:00,81.91,181.887,42.38,32.641 -2020-01-10 05:00:00,85.77,215.43599999999998,46.181000000000004,32.641 -2020-01-10 05:15:00,88.51,245.451,46.181000000000004,32.641 -2020-01-10 05:30:00,92.4,242.31599999999997,46.181000000000004,32.641 -2020-01-10 05:45:00,97.86,235.141,46.181000000000004,32.641 -2020-01-10 06:00:00,105.68,232.324,59.33,32.641 -2020-01-10 06:15:00,110.88,236.578,59.33,32.641 -2020-01-10 06:30:00,114.95,238.657,59.33,32.641 -2020-01-10 06:45:00,120.02,244.748,59.33,32.641 -2020-01-10 07:00:00,125.32,242.745,72.454,32.641 -2020-01-10 07:15:00,129.26,249.206,72.454,32.641 -2020-01-10 07:30:00,133.08,252.229,72.454,32.641 -2020-01-10 07:45:00,137.34,252.824,72.454,32.641 -2020-01-10 08:00:00,138.92,250.329,67.175,32.641 -2020-01-10 08:15:00,139.19,249.984,67.175,32.641 -2020-01-10 08:30:00,142.05,248.93900000000002,67.175,32.641 -2020-01-10 08:45:00,139.98,244.104,67.175,32.641 -2020-01-10 09:00:00,139.84,237.938,65.365,32.641 -2020-01-10 09:15:00,142.47,235.299,65.365,32.641 -2020-01-10 09:30:00,143.87,232.75599999999997,65.365,32.641 -2020-01-10 09:45:00,144.34,229.4,65.365,32.641 -2020-01-10 10:00:00,143.86,222.885,63.95,32.641 -2020-01-10 10:15:00,145.24,219.442,63.95,32.641 -2020-01-10 10:30:00,146.08,215.968,63.95,32.641 -2020-01-10 10:45:00,145.52,213.80700000000002,63.95,32.641 -2020-01-10 11:00:00,143.53,211.615,63.92100000000001,32.641 -2020-01-10 11:15:00,144.41,209.428,63.92100000000001,32.641 -2020-01-10 11:30:00,142.84,209.82,63.92100000000001,32.641 -2020-01-10 11:45:00,140.57,208.75099999999998,63.92100000000001,32.641 -2020-01-10 12:00:00,139.98,204.835,60.79600000000001,32.641 -2020-01-10 12:15:00,139.61,202.088,60.79600000000001,32.641 -2020-01-10 12:30:00,138.38,202.197,60.79600000000001,32.641 -2020-01-10 12:45:00,137.77,203.66400000000002,60.79600000000001,32.641 -2020-01-10 13:00:00,135.76,202.949,59.393,32.641 -2020-01-10 13:15:00,137.41,203.271,59.393,32.641 -2020-01-10 13:30:00,133.35,202.84099999999998,59.393,32.641 -2020-01-10 13:45:00,131.39,202.644,59.393,32.641 -2020-01-10 14:00:00,131.97,200.481,57.943999999999996,32.641 -2020-01-10 14:15:00,132.24,200.84900000000002,57.943999999999996,32.641 -2020-01-10 14:30:00,130.8,202.25,57.943999999999996,32.641 -2020-01-10 14:45:00,131.39,202.96599999999998,57.943999999999996,32.641 -2020-01-10 15:00:00,131.3,203.739,60.153999999999996,32.641 -2020-01-10 15:15:00,130.95,203.773,60.153999999999996,32.641 -2020-01-10 15:30:00,130.15,204.55,60.153999999999996,32.641 -2020-01-10 15:45:00,129.69,206.333,60.153999999999996,32.641 -2020-01-10 16:00:00,130.75,205.926,62.933,32.641 -2020-01-10 16:15:00,132.79,207.87400000000002,62.933,32.641 -2020-01-10 16:30:00,135.68,210.912,62.933,32.641 -2020-01-10 16:45:00,137.72,212.451,62.933,32.641 -2020-01-10 17:00:00,139.5,214.852,68.657,32.641 -2020-01-10 17:15:00,139.88,215.297,68.657,32.641 -2020-01-10 17:30:00,142.57,215.93400000000003,68.657,32.641 -2020-01-10 17:45:00,139.22,215.576,68.657,32.641 -2020-01-10 18:00:00,136.73,217.919,67.111,32.641 -2020-01-10 18:15:00,136.11,214.695,67.111,32.641 -2020-01-10 18:30:00,134.73,213.893,67.111,32.641 -2020-01-10 18:45:00,135.6,214.03400000000002,67.111,32.641 -2020-01-10 19:00:00,132.42,214.46200000000002,62.434,32.641 -2020-01-10 19:15:00,130.68,211.921,62.434,32.641 -2020-01-10 19:30:00,135.53,208.804,62.434,32.641 -2020-01-10 19:45:00,135.12,204.845,62.434,32.641 -2020-01-10 20:00:00,127.21,201.00900000000001,61.763000000000005,32.641 -2020-01-10 20:15:00,118.7,194.521,61.763000000000005,32.641 -2020-01-10 20:30:00,112.79,190.331,61.763000000000005,32.641 -2020-01-10 20:45:00,111.77,189.175,61.763000000000005,32.641 -2020-01-10 21:00:00,108.32,186.59400000000002,56.785,32.641 -2020-01-10 21:15:00,110.88,184.317,56.785,32.641 -2020-01-10 21:30:00,102.73,182.29,56.785,32.641 -2020-01-10 21:45:00,100.86,181.33900000000003,56.785,32.641 -2020-01-10 22:00:00,96.64,175.354,52.693000000000005,32.641 -2020-01-10 22:15:00,93.07,169.468,52.693000000000005,32.641 -2020-01-10 22:30:00,92.88,162.24,52.693000000000005,32.641 -2020-01-10 22:45:00,93.82,157.739,52.693000000000005,32.641 -2020-01-10 23:00:00,88.99,150.405,45.443999999999996,32.641 -2020-01-10 23:15:00,89.2,146.657,45.443999999999996,32.641 -2020-01-10 23:30:00,85.72,145.495,45.443999999999996,32.641 -2020-01-10 23:45:00,80.79,144.237,45.443999999999996,32.641 -2020-01-11 00:00:00,75.56,128.079,44.738,32.459 -2020-01-11 00:15:00,80.09,123.209,44.738,32.459 -2020-01-11 00:30:00,80.07,125.723,44.738,32.459 -2020-01-11 00:45:00,77.68,128.094,44.738,32.459 -2020-01-11 01:00:00,71.96,131.326,40.303000000000004,32.459 -2020-01-11 01:15:00,70.77,131.606,40.303000000000004,32.459 -2020-01-11 01:30:00,68.37,131.253,40.303000000000004,32.459 -2020-01-11 01:45:00,68.2,131.491,40.303000000000004,32.459 -2020-01-11 02:00:00,69.18,134.41899999999998,38.61,32.459 -2020-01-11 02:15:00,74.74,135.753,38.61,32.459 -2020-01-11 02:30:00,74.65,135.797,38.61,32.459 -2020-01-11 02:45:00,74.36,137.984,38.61,32.459 -2020-01-11 03:00:00,67.49,140.34799999999998,37.554,32.459 -2020-01-11 03:15:00,72.14,141.393,37.554,32.459 -2020-01-11 03:30:00,74.34,141.52200000000002,37.554,32.459 -2020-01-11 03:45:00,74.02,143.29399999999998,37.554,32.459 -2020-01-11 04:00:00,69.83,151.159,37.176,32.459 -2020-01-11 04:15:00,66.48,160.25,37.176,32.459 -2020-01-11 04:30:00,66.65,161.23,37.176,32.459 -2020-01-11 04:45:00,68.43,162.349,37.176,32.459 -2020-01-11 05:00:00,69.3,178.98,36.893,32.459 -2020-01-11 05:15:00,68.52,189.00599999999997,36.893,32.459 -2020-01-11 05:30:00,68.35,186.139,36.893,32.459 -2020-01-11 05:45:00,69.45,184.59400000000002,36.893,32.459 -2020-01-11 06:00:00,71.01,201.507,37.803000000000004,32.459 -2020-01-11 06:15:00,71.8,223.074,37.803000000000004,32.459 -2020-01-11 06:30:00,72.53,219.50099999999998,37.803000000000004,32.459 -2020-01-11 06:45:00,74.42,216.02700000000002,37.803000000000004,32.459 -2020-01-11 07:00:00,77.16,210.03799999999998,41.086999999999996,32.459 -2020-01-11 07:15:00,79.89,215.21599999999998,41.086999999999996,32.459 -2020-01-11 07:30:00,82.88,221.06599999999997,41.086999999999996,32.459 -2020-01-11 07:45:00,87.25,225.924,41.086999999999996,32.459 -2020-01-11 08:00:00,89.61,227.84799999999998,48.222,32.459 -2020-01-11 08:15:00,91.87,231.47099999999998,48.222,32.459 -2020-01-11 08:30:00,94.54,232.15900000000002,48.222,32.459 -2020-01-11 08:45:00,97.83,230.68099999999998,48.222,32.459 -2020-01-11 09:00:00,99.9,226.22400000000002,52.791000000000004,32.459 -2020-01-11 09:15:00,102.11,224.375,52.791000000000004,32.459 -2020-01-11 09:30:00,103.03,222.796,52.791000000000004,32.459 -2020-01-11 09:45:00,104.11,219.641,52.791000000000004,32.459 -2020-01-11 10:00:00,105.67,213.37900000000002,54.341,32.459 -2020-01-11 10:15:00,106.52,210.09400000000002,54.341,32.459 -2020-01-11 10:30:00,107.3,206.815,54.341,32.459 -2020-01-11 10:45:00,107.94,206.1,54.341,32.459 -2020-01-11 11:00:00,109.65,204.15400000000002,51.94,32.459 -2020-01-11 11:15:00,111.25,201.162,51.94,32.459 -2020-01-11 11:30:00,111.53,200.33,51.94,32.459 -2020-01-11 11:45:00,111.53,198.183,51.94,32.459 -2020-01-11 12:00:00,110.54,193.285,50.973,32.459 -2020-01-11 12:15:00,109.01,191.19299999999998,50.973,32.459 -2020-01-11 12:30:00,105.95,191.648,50.973,32.459 -2020-01-11 12:45:00,104.43,192.233,50.973,32.459 -2020-01-11 13:00:00,101.49,191.13,48.06399999999999,32.459 -2020-01-11 13:15:00,99.78,189.25,48.06399999999999,32.459 -2020-01-11 13:30:00,98.12,188.30700000000002,48.06399999999999,32.459 -2020-01-11 13:45:00,96.61,188.71200000000002,48.06399999999999,32.459 -2020-01-11 14:00:00,95.14,187.91299999999998,45.707,32.459 -2020-01-11 14:15:00,94.37,187.77599999999998,45.707,32.459 -2020-01-11 14:30:00,94.65,187.243,45.707,32.459 -2020-01-11 14:45:00,94.99,188.178,45.707,32.459 -2020-01-11 15:00:00,94.68,189.683,47.567,32.459 -2020-01-11 15:15:00,94.55,190.521,47.567,32.459 -2020-01-11 15:30:00,93.53,192.94,47.567,32.459 -2020-01-11 15:45:00,96.02,194.787,47.567,32.459 -2020-01-11 16:00:00,97.55,192.99599999999998,52.031000000000006,32.459 -2020-01-11 16:15:00,98.75,195.96900000000002,52.031000000000006,32.459 -2020-01-11 16:30:00,102.68,198.946,52.031000000000006,32.459 -2020-01-11 16:45:00,104.37,201.447,52.031000000000006,32.459 -2020-01-11 17:00:00,106.29,203.333,58.218999999999994,32.459 -2020-01-11 17:15:00,107.17,205.708,58.218999999999994,32.459 -2020-01-11 17:30:00,108.36,206.278,58.218999999999994,32.459 -2020-01-11 17:45:00,109.4,205.47799999999998,58.218999999999994,32.459 -2020-01-11 18:00:00,108.57,207.27200000000002,57.65,32.459 -2020-01-11 18:15:00,108.91,205.892,57.65,32.459 -2020-01-11 18:30:00,108.15,206.44799999999998,57.65,32.459 -2020-01-11 18:45:00,107.83,203.21400000000003,57.65,32.459 -2020-01-11 19:00:00,105.71,204.699,51.261,32.459 -2020-01-11 19:15:00,103.93,201.683,51.261,32.459 -2020-01-11 19:30:00,102.6,199.333,51.261,32.459 -2020-01-11 19:45:00,101.86,195.09900000000002,51.261,32.459 -2020-01-11 20:00:00,97.56,193.503,44.068000000000005,32.459 -2020-01-11 20:15:00,92.87,189.32299999999998,44.068000000000005,32.459 -2020-01-11 20:30:00,90.31,184.799,44.068000000000005,32.459 -2020-01-11 20:45:00,88.48,183.128,44.068000000000005,32.459 -2020-01-11 21:00:00,86.43,183.017,38.861,32.459 -2020-01-11 21:15:00,84.3,181.21200000000002,38.861,32.459 -2020-01-11 21:30:00,83.24,180.489,38.861,32.459 -2020-01-11 21:45:00,82.41,179.149,38.861,32.459 -2020-01-11 22:00:00,79.49,174.601,39.485,32.459 -2020-01-11 22:15:00,77.77,171.377,39.485,32.459 -2020-01-11 22:30:00,76.13,170.824,39.485,32.459 -2020-01-11 22:45:00,75.32,168.31,39.485,32.459 -2020-01-11 23:00:00,72.71,163.583,32.027,32.459 -2020-01-11 23:15:00,71.28,158.07399999999998,32.027,32.459 -2020-01-11 23:30:00,69.11,154.937,32.027,32.459 -2020-01-11 23:45:00,66.62,151.07,32.027,32.459 -2020-01-12 00:00:00,64.99,128.533,26.96,32.459 -2020-01-12 00:15:00,63.46,123.37200000000001,26.96,32.459 -2020-01-12 00:30:00,61.72,125.475,26.96,32.459 -2020-01-12 00:45:00,60.63,128.591,26.96,32.459 -2020-01-12 01:00:00,59.84,131.655,24.295,32.459 -2020-01-12 01:15:00,59.13,133.06,24.295,32.459 -2020-01-12 01:30:00,58.42,133.279,24.295,32.459 -2020-01-12 01:45:00,57.74,133.195,24.295,32.459 -2020-01-12 02:00:00,57.23,135.319,24.268,32.459 -2020-01-12 02:15:00,56.86,135.67700000000002,24.268,32.459 -2020-01-12 02:30:00,56.65,136.64600000000002,24.268,32.459 -2020-01-12 02:45:00,56.47,139.35399999999998,24.268,32.459 -2020-01-12 03:00:00,56.4,142.011,23.373,32.459 -2020-01-12 03:15:00,56.47,142.487,23.373,32.459 -2020-01-12 03:30:00,56.48,144.191,23.373,32.459 -2020-01-12 03:45:00,56.69,145.944,23.373,32.459 -2020-01-12 04:00:00,57.05,153.52700000000002,23.874000000000002,32.459 -2020-01-12 04:15:00,56.86,161.537,23.874000000000002,32.459 -2020-01-12 04:30:00,57.57,162.489,23.874000000000002,32.459 -2020-01-12 04:45:00,58.1,163.93400000000003,23.874000000000002,32.459 -2020-01-12 05:00:00,58.61,176.683,24.871,32.459 -2020-01-12 05:15:00,59.09,184.1,24.871,32.459 -2020-01-12 05:30:00,58.93,181.088,24.871,32.459 -2020-01-12 05:45:00,59.64,179.84799999999998,24.871,32.459 -2020-01-12 06:00:00,60.42,196.84599999999998,23.84,32.459 -2020-01-12 06:15:00,60.79,216.484,23.84,32.459 -2020-01-12 06:30:00,60.98,211.77,23.84,32.459 -2020-01-12 06:45:00,62.52,207.247,23.84,32.459 -2020-01-12 07:00:00,64.57,203.924,27.430999999999997,32.459 -2020-01-12 07:15:00,66.17,208.28099999999998,27.430999999999997,32.459 -2020-01-12 07:30:00,67.93,212.678,27.430999999999997,32.459 -2020-01-12 07:45:00,69.79,216.687,27.430999999999997,32.459 -2020-01-12 08:00:00,71.93,220.56599999999997,33.891999999999996,32.459 -2020-01-12 08:15:00,74.46,223.995,33.891999999999996,32.459 -2020-01-12 08:30:00,76.78,226.389,33.891999999999996,32.459 -2020-01-12 08:45:00,78.97,227.08900000000003,33.891999999999996,32.459 -2020-01-12 09:00:00,80.51,222.19299999999998,37.571,32.459 -2020-01-12 09:15:00,81.13,220.979,37.571,32.459 -2020-01-12 09:30:00,81.84,219.22099999999998,37.571,32.459 -2020-01-12 09:45:00,82.37,215.87099999999998,37.571,32.459 -2020-01-12 10:00:00,81.27,212.296,40.594,32.459 -2020-01-12 10:15:00,79.61,209.584,40.594,32.459 -2020-01-12 10:30:00,79.77,206.93400000000003,40.594,32.459 -2020-01-12 10:45:00,85.58,204.109,40.594,32.459 -2020-01-12 11:00:00,86.51,203.16299999999998,44.133,32.459 -2020-01-12 11:15:00,88.46,200.34099999999998,44.133,32.459 -2020-01-12 11:30:00,91.87,198.543,44.133,32.459 -2020-01-12 11:45:00,93.46,197.037,44.133,32.459 -2020-01-12 12:00:00,91.63,191.477,41.198,32.459 -2020-01-12 12:15:00,90.3,191.49099999999999,41.198,32.459 -2020-01-12 12:30:00,88.06,190.357,41.198,32.459 -2020-01-12 12:45:00,86.68,189.94,41.198,32.459 -2020-01-12 13:00:00,85.19,188.076,37.014,32.459 -2020-01-12 13:15:00,83.88,189.463,37.014,32.459 -2020-01-12 13:30:00,82.6,188.347,37.014,32.459 -2020-01-12 13:45:00,82.08,187.97099999999998,37.014,32.459 -2020-01-12 14:00:00,82.67,187.389,34.934,32.459 -2020-01-12 14:15:00,82.79,188.51,34.934,32.459 -2020-01-12 14:30:00,82.64,189.378,34.934,32.459 -2020-01-12 14:45:00,85.76,189.947,34.934,32.459 -2020-01-12 15:00:00,83.46,189.813,34.588,32.459 -2020-01-12 15:15:00,83.64,191.487,34.588,32.459 -2020-01-12 15:30:00,84.7,194.537,34.588,32.459 -2020-01-12 15:45:00,85.25,197.101,34.588,32.459 -2020-01-12 16:00:00,86.79,197.385,37.874,32.459 -2020-01-12 16:15:00,88.0,199.38,37.874,32.459 -2020-01-12 16:30:00,92.21,202.588,37.874,32.459 -2020-01-12 16:45:00,94.95,205.236,37.874,32.459 -2020-01-12 17:00:00,97.3,207.06599999999997,47.303999999999995,32.459 -2020-01-12 17:15:00,99.15,209.045,47.303999999999995,32.459 -2020-01-12 17:30:00,100.86,209.912,47.303999999999995,32.459 -2020-01-12 17:45:00,102.12,211.532,47.303999999999995,32.459 -2020-01-12 18:00:00,102.63,212.722,48.879,32.459 -2020-01-12 18:15:00,102.78,212.78599999999997,48.879,32.459 -2020-01-12 18:30:00,101.93,211.138,48.879,32.459 -2020-01-12 18:45:00,100.6,209.889,48.879,32.459 -2020-01-12 19:00:00,99.22,210.878,44.826,32.459 -2020-01-12 19:15:00,96.93,208.544,44.826,32.459 -2020-01-12 19:30:00,98.09,206.03599999999997,44.826,32.459 -2020-01-12 19:45:00,94.04,203.36,44.826,32.459 -2020-01-12 20:00:00,92.48,201.725,40.154,32.459 -2020-01-12 20:15:00,90.52,198.604,40.154,32.459 -2020-01-12 20:30:00,88.61,195.35299999999998,40.154,32.459 -2020-01-12 20:45:00,86.91,192.50099999999998,40.154,32.459 -2020-01-12 21:00:00,86.27,189.613,36.549,32.459 -2020-01-12 21:15:00,85.53,187.137,36.549,32.459 -2020-01-12 21:30:00,85.67,186.76,36.549,32.459 -2020-01-12 21:45:00,86.26,185.56099999999998,36.549,32.459 -2020-01-12 22:00:00,84.68,179.642,37.663000000000004,32.459 -2020-01-12 22:15:00,84.59,175.704,37.663000000000004,32.459 -2020-01-12 22:30:00,81.91,171.81099999999998,37.663000000000004,32.459 -2020-01-12 22:45:00,80.26,168.46,37.663000000000004,32.459 -2020-01-12 23:00:00,77.38,160.747,31.945,32.459 -2020-01-12 23:15:00,76.18,157.165,31.945,32.459 -2020-01-12 23:30:00,75.03,154.933,31.945,32.459 -2020-01-12 23:45:00,75.75,152.011,31.945,32.459 -2020-01-13 00:00:00,70.95,133.061,31.533,32.641 -2020-01-13 00:15:00,70.9,131.047,31.533,32.641 -2020-01-13 00:30:00,70.47,133.298,31.533,32.641 -2020-01-13 00:45:00,69.99,135.843,31.533,32.641 -2020-01-13 01:00:00,67.64,138.91,30.56,32.641 -2020-01-13 01:15:00,66.93,139.731,30.56,32.641 -2020-01-13 01:30:00,67.33,139.983,30.56,32.641 -2020-01-13 01:45:00,67.11,140.019,30.56,32.641 -2020-01-13 02:00:00,66.76,142.105,29.55,32.641 -2020-01-13 02:15:00,67.45,144.125,29.55,32.641 -2020-01-13 02:30:00,67.68,145.453,29.55,32.641 -2020-01-13 02:45:00,67.43,147.497,29.55,32.641 -2020-01-13 03:00:00,67.66,151.507,27.059,32.641 -2020-01-13 03:15:00,68.77,153.741,27.059,32.641 -2020-01-13 03:30:00,68.92,155.1,27.059,32.641 -2020-01-13 03:45:00,68.84,156.29399999999998,27.059,32.641 -2020-01-13 04:00:00,70.83,168.38299999999998,28.384,32.641 -2020-01-13 04:15:00,73.73,180.68599999999998,28.384,32.641 -2020-01-13 04:30:00,73.75,184.06799999999998,28.384,32.641 -2020-01-13 04:45:00,77.08,185.655,28.384,32.641 -2020-01-13 05:00:00,81.53,215.06400000000002,35.915,32.641 -2020-01-13 05:15:00,84.06,243.69099999999997,35.915,32.641 -2020-01-13 05:30:00,88.5,241.104,35.915,32.641 -2020-01-13 05:45:00,94.62,233.94400000000002,35.915,32.641 -2020-01-13 06:00:00,104.44,232.146,56.18,32.641 -2020-01-13 06:15:00,112.23,236.292,56.18,32.641 -2020-01-13 06:30:00,114.44,240.037,56.18,32.641 -2020-01-13 06:45:00,119.14,244.743,56.18,32.641 -2020-01-13 07:00:00,126.22,243.983,70.877,32.641 -2020-01-13 07:15:00,129.2,249.511,70.877,32.641 -2020-01-13 07:30:00,131.57,253.109,70.877,32.641 -2020-01-13 07:45:00,131.68,254.268,70.877,32.641 -2020-01-13 08:00:00,135.22,252.912,65.65,32.641 -2020-01-13 08:15:00,134.08,254.079,65.65,32.641 -2020-01-13 08:30:00,135.2,252.06799999999998,65.65,32.641 -2020-01-13 08:45:00,132.28,249.106,65.65,32.641 -2020-01-13 09:00:00,133.04,243.158,62.037,32.641 -2020-01-13 09:15:00,133.98,238.296,62.037,32.641 -2020-01-13 09:30:00,132.22,235.535,62.037,32.641 -2020-01-13 09:45:00,130.3,232.66299999999998,62.037,32.641 -2020-01-13 10:00:00,129.71,227.908,60.409,32.641 -2020-01-13 10:15:00,129.27,224.858,60.409,32.641 -2020-01-13 10:30:00,127.57,221.285,60.409,32.641 -2020-01-13 10:45:00,130.5,219.388,60.409,32.641 -2020-01-13 11:00:00,125.92,215.54,60.211999999999996,32.641 -2020-01-13 11:15:00,126.17,214.65,60.211999999999996,32.641 -2020-01-13 11:30:00,125.52,214.301,60.211999999999996,32.641 -2020-01-13 11:45:00,127.51,212.32299999999998,60.211999999999996,32.641 -2020-01-13 12:00:00,124.16,208.769,57.733000000000004,32.641 -2020-01-13 12:15:00,123.73,208.793,57.733000000000004,32.641 -2020-01-13 12:30:00,123.65,207.995,57.733000000000004,32.641 -2020-01-13 12:45:00,119.92,209.227,57.733000000000004,32.641 -2020-01-13 13:00:00,118.02,207.935,58.695,32.641 -2020-01-13 13:15:00,118.69,207.868,58.695,32.641 -2020-01-13 13:30:00,116.48,206.155,58.695,32.641 -2020-01-13 13:45:00,117.81,205.75,58.695,32.641 -2020-01-13 14:00:00,124.13,204.56,59.505,32.641 -2020-01-13 14:15:00,122.13,204.937,59.505,32.641 -2020-01-13 14:30:00,125.07,205.237,59.505,32.641 -2020-01-13 14:45:00,121.35,205.65,59.505,32.641 -2020-01-13 15:00:00,123.98,207.451,59.946000000000005,32.641 -2020-01-13 15:15:00,125.58,207.59400000000002,59.946000000000005,32.641 -2020-01-13 15:30:00,124.7,209.69,59.946000000000005,32.641 -2020-01-13 15:45:00,124.42,211.794,59.946000000000005,32.641 -2020-01-13 16:00:00,126.95,212.16400000000002,61.766999999999996,32.641 -2020-01-13 16:15:00,128.1,213.343,61.766999999999996,32.641 -2020-01-13 16:30:00,133.84,215.56,61.766999999999996,32.641 -2020-01-13 16:45:00,134.97,216.93400000000003,61.766999999999996,32.641 -2020-01-13 17:00:00,137.72,218.595,67.85600000000001,32.641 -2020-01-13 17:15:00,139.22,219.562,67.85600000000001,32.641 -2020-01-13 17:30:00,140.31,219.893,67.85600000000001,32.641 -2020-01-13 17:45:00,138.79,219.953,67.85600000000001,32.641 -2020-01-13 18:00:00,138.41,221.658,64.564,32.641 -2020-01-13 18:15:00,136.09,219.475,64.564,32.641 -2020-01-13 18:30:00,135.55,218.57299999999998,64.564,32.641 -2020-01-13 18:45:00,135.23,217.93200000000002,64.564,32.641 -2020-01-13 19:00:00,132.57,217.167,58.536,32.641 -2020-01-13 19:15:00,131.58,213.516,58.536,32.641 -2020-01-13 19:30:00,129.12,211.56400000000002,58.536,32.641 -2020-01-13 19:45:00,134.32,208.04,58.536,32.641 -2020-01-13 20:00:00,128.64,203.938,59.888999999999996,32.641 -2020-01-13 20:15:00,125.25,198.085,59.888999999999996,32.641 -2020-01-13 20:30:00,116.68,192.804,59.888999999999996,32.641 -2020-01-13 20:45:00,117.43,191.696,59.888999999999996,32.641 -2020-01-13 21:00:00,109.83,189.396,52.652,32.641 -2020-01-13 21:15:00,114.34,185.62,52.652,32.641 -2020-01-13 21:30:00,113.42,184.334,52.652,32.641 -2020-01-13 21:45:00,107.41,182.62400000000002,52.652,32.641 -2020-01-13 22:00:00,100.72,173.732,46.17,32.641 -2020-01-13 22:15:00,98.52,168.285,46.17,32.641 -2020-01-13 22:30:00,100.74,154.417,46.17,32.641 -2020-01-13 22:45:00,100.33,145.899,46.17,32.641 -2020-01-13 23:00:00,94.57,139.002,36.281,32.641 -2020-01-13 23:15:00,89.14,138.363,36.281,32.641 -2020-01-13 23:30:00,91.26,139.106,36.281,32.641 -2020-01-13 23:45:00,91.53,139.046,36.281,32.641 -2020-01-14 00:00:00,87.82,132.558,38.821999999999996,32.641 -2020-01-14 00:15:00,81.82,132.01,38.821999999999996,32.641 -2020-01-14 00:30:00,84.32,133.167,38.821999999999996,32.641 -2020-01-14 00:45:00,87.32,134.571,38.821999999999996,32.641 -2020-01-14 01:00:00,84.42,137.464,36.936,32.641 -2020-01-14 01:15:00,79.89,137.782,36.936,32.641 -2020-01-14 01:30:00,77.82,138.22899999999998,36.936,32.641 -2020-01-14 01:45:00,79.93,138.631,36.936,32.641 -2020-01-14 02:00:00,82.47,140.761,34.42,32.641 -2020-01-14 02:15:00,81.18,142.563,34.42,32.641 -2020-01-14 02:30:00,78.27,143.282,34.42,32.641 -2020-01-14 02:45:00,83.03,145.312,34.42,32.641 -2020-01-14 03:00:00,82.63,148.03799999999998,33.585,32.641 -2020-01-14 03:15:00,80.68,149.27700000000002,33.585,32.641 -2020-01-14 03:30:00,74.84,151.167,33.585,32.641 -2020-01-14 03:45:00,75.84,152.67600000000002,33.585,32.641 -2020-01-14 04:00:00,76.53,164.63299999999998,35.622,32.641 -2020-01-14 04:15:00,77.34,176.54,35.622,32.641 -2020-01-14 04:30:00,78.06,179.59400000000002,35.622,32.641 -2020-01-14 04:45:00,80.59,182.463,35.622,32.641 -2020-01-14 05:00:00,83.73,217.205,40.599000000000004,32.641 -2020-01-14 05:15:00,86.8,245.519,40.599000000000004,32.641 -2020-01-14 05:30:00,90.08,241.22400000000002,40.599000000000004,32.641 -2020-01-14 05:45:00,95.43,234.15900000000002,40.599000000000004,32.641 -2020-01-14 06:00:00,104.29,230.98,55.203,32.641 -2020-01-14 06:15:00,109.76,236.90900000000002,55.203,32.641 -2020-01-14 06:30:00,114.01,239.98,55.203,32.641 -2020-01-14 06:45:00,118.59,244.38,55.203,32.641 -2020-01-14 07:00:00,125.25,243.42,69.029,32.641 -2020-01-14 07:15:00,128.89,248.783,69.029,32.641 -2020-01-14 07:30:00,129.58,251.75599999999997,69.029,32.641 -2020-01-14 07:45:00,135.04,253.217,69.029,32.641 -2020-01-14 08:00:00,137.03,251.979,65.85300000000001,32.641 -2020-01-14 08:15:00,136.03,252.045,65.85300000000001,32.641 -2020-01-14 08:30:00,135.16,249.79,65.85300000000001,32.641 -2020-01-14 08:45:00,132.47,246.59900000000002,65.85300000000001,32.641 -2020-01-14 09:00:00,135.18,239.695,61.566,32.641 -2020-01-14 09:15:00,137.97,236.602,61.566,32.641 -2020-01-14 09:30:00,137.36,234.543,61.566,32.641 -2020-01-14 09:45:00,138.26,231.315,61.566,32.641 -2020-01-14 10:00:00,140.95,226.03599999999997,61.244,32.641 -2020-01-14 10:15:00,144.05,221.83900000000003,61.244,32.641 -2020-01-14 10:30:00,146.07,218.455,61.244,32.641 -2020-01-14 10:45:00,144.01,216.787,61.244,32.641 -2020-01-14 11:00:00,132.46,214.55200000000002,61.16,32.641 -2020-01-14 11:15:00,135.5,213.266,61.16,32.641 -2020-01-14 11:30:00,136.58,211.74099999999999,61.16,32.641 -2020-01-14 11:45:00,138.0,210.571,61.16,32.641 -2020-01-14 12:00:00,137.63,205.547,59.09,32.641 -2020-01-14 12:15:00,135.35,205.107,59.09,32.641 -2020-01-14 12:30:00,134.93,205.018,59.09,32.641 -2020-01-14 12:45:00,134.94,205.87400000000002,59.09,32.641 -2020-01-14 13:00:00,133.76,204.162,60.21,32.641 -2020-01-14 13:15:00,131.09,203.554,60.21,32.641 -2020-01-14 13:30:00,129.61,203.111,60.21,32.641 -2020-01-14 13:45:00,134.96,202.985,60.21,32.641 -2020-01-14 14:00:00,133.08,202.09599999999998,60.673,32.641 -2020-01-14 14:15:00,132.64,202.65099999999998,60.673,32.641 -2020-01-14 14:30:00,131.69,203.612,60.673,32.641 -2020-01-14 14:45:00,133.24,204.018,60.673,32.641 -2020-01-14 15:00:00,134.24,205.382,62.232,32.641 -2020-01-14 15:15:00,133.79,205.793,62.232,32.641 -2020-01-14 15:30:00,132.79,208.138,62.232,32.641 -2020-01-14 15:45:00,132.99,209.766,62.232,32.641 -2020-01-14 16:00:00,134.62,210.56599999999997,63.611999999999995,32.641 -2020-01-14 16:15:00,133.49,212.261,63.611999999999995,32.641 -2020-01-14 16:30:00,136.5,215.21200000000002,63.611999999999995,32.641 -2020-01-14 16:45:00,140.39,216.851,63.611999999999995,32.641 -2020-01-14 17:00:00,141.25,219.071,70.658,32.641 -2020-01-14 17:15:00,141.82,220.072,70.658,32.641 -2020-01-14 17:30:00,142.91,221.18200000000002,70.658,32.641 -2020-01-14 17:45:00,141.94,221.146,70.658,32.641 -2020-01-14 18:00:00,140.95,222.817,68.361,32.641 -2020-01-14 18:15:00,139.33,220.011,68.361,32.641 -2020-01-14 18:30:00,138.51,218.8,68.361,32.641 -2020-01-14 18:45:00,138.78,219.049,68.361,32.641 -2020-01-14 19:00:00,134.6,218.407,62.922,32.641 -2020-01-14 19:15:00,133.06,214.447,62.922,32.641 -2020-01-14 19:30:00,130.38,211.797,62.922,32.641 -2020-01-14 19:45:00,135.52,208.298,62.922,32.641 -2020-01-14 20:00:00,131.04,204.324,63.251999999999995,32.641 -2020-01-14 20:15:00,124.9,197.88099999999997,63.251999999999995,32.641 -2020-01-14 20:30:00,119.8,193.68200000000002,63.251999999999995,32.641 -2020-01-14 20:45:00,113.77,191.946,63.251999999999995,32.641 -2020-01-14 21:00:00,111.04,188.81599999999997,54.47,32.641 -2020-01-14 21:15:00,115.36,186.09599999999998,54.47,32.641 -2020-01-14 21:30:00,114.69,184.012,54.47,32.641 -2020-01-14 21:45:00,110.23,182.55,54.47,32.641 -2020-01-14 22:00:00,103.08,175.484,51.12,32.641 -2020-01-14 22:15:00,98.43,169.798,51.12,32.641 -2020-01-14 22:30:00,97.92,156.011,51.12,32.641 -2020-01-14 22:45:00,100.32,147.8,51.12,32.641 -2020-01-14 23:00:00,96.47,140.96200000000002,42.156000000000006,32.641 -2020-01-14 23:15:00,92.03,139.256,42.156000000000006,32.641 -2020-01-14 23:30:00,86.85,139.628,42.156000000000006,32.641 -2020-01-14 23:45:00,87.06,139.088,42.156000000000006,32.641 -2020-01-15 00:00:00,86.86,132.626,37.192,32.641 -2020-01-15 00:15:00,87.23,132.058,37.192,32.641 -2020-01-15 00:30:00,85.9,133.19799999999998,37.192,32.641 -2020-01-15 00:45:00,82.51,134.589,37.192,32.641 -2020-01-15 01:00:00,83.73,137.483,32.24,32.641 -2020-01-15 01:15:00,83.66,137.791,32.24,32.641 -2020-01-15 01:30:00,80.75,138.233,32.24,32.641 -2020-01-15 01:45:00,76.71,138.627,32.24,32.641 -2020-01-15 02:00:00,83.36,140.768,30.34,32.641 -2020-01-15 02:15:00,84.01,142.57,30.34,32.641 -2020-01-15 02:30:00,81.99,143.299,30.34,32.641 -2020-01-15 02:45:00,77.46,145.328,30.34,32.641 -2020-01-15 03:00:00,75.23,148.05,29.129,32.641 -2020-01-15 03:15:00,76.54,149.305,29.129,32.641 -2020-01-15 03:30:00,77.67,151.195,29.129,32.641 -2020-01-15 03:45:00,77.78,152.713,29.129,32.641 -2020-01-15 04:00:00,83.87,164.64700000000002,30.075,32.641 -2020-01-15 04:15:00,85.62,176.545,30.075,32.641 -2020-01-15 04:30:00,87.03,179.59900000000002,30.075,32.641 -2020-01-15 04:45:00,87.26,182.463,30.075,32.641 -2020-01-15 05:00:00,92.08,217.16400000000002,35.684,32.641 -2020-01-15 05:15:00,95.05,245.451,35.684,32.641 -2020-01-15 05:30:00,93.94,241.158,35.684,32.641 -2020-01-15 05:45:00,97.28,234.112,35.684,32.641 -2020-01-15 06:00:00,105.8,230.955,51.49,32.641 -2020-01-15 06:15:00,110.68,236.893,51.49,32.641 -2020-01-15 06:30:00,116.49,239.972,51.49,32.641 -2020-01-15 06:45:00,120.13,244.398,51.49,32.641 -2020-01-15 07:00:00,127.25,243.456,68.242,32.641 -2020-01-15 07:15:00,130.04,248.804,68.242,32.641 -2020-01-15 07:30:00,133.29,251.75599999999997,68.242,32.641 -2020-01-15 07:45:00,136.04,253.19299999999998,68.242,32.641 -2020-01-15 08:00:00,138.64,251.947,63.619,32.641 -2020-01-15 08:15:00,135.35,251.99599999999998,63.619,32.641 -2020-01-15 08:30:00,135.07,249.706,63.619,32.641 -2020-01-15 08:45:00,135.36,246.498,63.619,32.641 -2020-01-15 09:00:00,138.48,239.581,61.333,32.641 -2020-01-15 09:15:00,137.35,236.493,61.333,32.641 -2020-01-15 09:30:00,139.08,234.452,61.333,32.641 -2020-01-15 09:45:00,139.42,231.21900000000002,61.333,32.641 -2020-01-15 10:00:00,139.42,225.94299999999998,59.663000000000004,32.641 -2020-01-15 10:15:00,139.9,221.75400000000002,59.663000000000004,32.641 -2020-01-15 10:30:00,142.04,218.365,59.663000000000004,32.641 -2020-01-15 10:45:00,143.07,216.702,59.663000000000004,32.641 -2020-01-15 11:00:00,139.95,214.44799999999998,59.771,32.641 -2020-01-15 11:15:00,139.24,213.165,59.771,32.641 -2020-01-15 11:30:00,137.7,211.642,59.771,32.641 -2020-01-15 11:45:00,137.77,210.477,59.771,32.641 -2020-01-15 12:00:00,137.15,205.465,58.723,32.641 -2020-01-15 12:15:00,135.27,205.044,58.723,32.641 -2020-01-15 12:30:00,135.67,204.94400000000002,58.723,32.641 -2020-01-15 12:45:00,137.77,205.801,58.723,32.641 -2020-01-15 13:00:00,136.15,204.08700000000002,58.727,32.641 -2020-01-15 13:15:00,136.78,203.465,58.727,32.641 -2020-01-15 13:30:00,136.5,203.01,58.727,32.641 -2020-01-15 13:45:00,136.87,202.877,58.727,32.641 -2020-01-15 14:00:00,136.85,202.014,59.803999999999995,32.641 -2020-01-15 14:15:00,134.91,202.55900000000003,59.803999999999995,32.641 -2020-01-15 14:30:00,134.1,203.52200000000002,59.803999999999995,32.641 -2020-01-15 14:45:00,135.12,203.94400000000002,59.803999999999995,32.641 -2020-01-15 15:00:00,135.73,205.327,61.05,32.641 -2020-01-15 15:15:00,134.79,205.715,61.05,32.641 -2020-01-15 15:30:00,132.55,208.048,61.05,32.641 -2020-01-15 15:45:00,131.89,209.665,61.05,32.641 -2020-01-15 16:00:00,132.28,210.465,64.012,32.641 -2020-01-15 16:15:00,134.26,212.166,64.012,32.641 -2020-01-15 16:30:00,136.16,215.123,64.012,32.641 -2020-01-15 16:45:00,138.74,216.766,64.012,32.641 -2020-01-15 17:00:00,141.87,218.972,66.751,32.641 -2020-01-15 17:15:00,142.23,220.003,66.751,32.641 -2020-01-15 17:30:00,143.82,221.144,66.751,32.641 -2020-01-15 17:45:00,143.42,221.12900000000002,66.751,32.641 -2020-01-15 18:00:00,142.04,222.82,65.91199999999999,32.641 -2020-01-15 18:15:00,140.16,220.03099999999998,65.91199999999999,32.641 -2020-01-15 18:30:00,139.4,218.824,65.91199999999999,32.641 -2020-01-15 18:45:00,140.52,219.09400000000002,65.91199999999999,32.641 -2020-01-15 19:00:00,137.94,218.416,63.324,32.641 -2020-01-15 19:15:00,133.64,214.46099999999998,63.324,32.641 -2020-01-15 19:30:00,130.94,211.817,63.324,32.641 -2020-01-15 19:45:00,129.29,208.326,63.324,32.641 -2020-01-15 20:00:00,123.9,204.331,63.573,32.641 -2020-01-15 20:15:00,121.7,197.892,63.573,32.641 -2020-01-15 20:30:00,116.5,193.687,63.573,32.641 -2020-01-15 20:45:00,115.14,191.967,63.573,32.641 -2020-01-15 21:00:00,110.98,188.81799999999998,55.073,32.641 -2020-01-15 21:15:00,115.16,186.081,55.073,32.641 -2020-01-15 21:30:00,114.07,183.99599999999998,55.073,32.641 -2020-01-15 21:45:00,110.47,182.551,55.073,32.641 -2020-01-15 22:00:00,101.67,175.48,51.321999999999996,32.641 -2020-01-15 22:15:00,100.33,169.81099999999998,51.321999999999996,32.641 -2020-01-15 22:30:00,96.77,156.029,51.321999999999996,32.641 -2020-01-15 22:45:00,95.32,147.825,51.321999999999996,32.641 -2020-01-15 23:00:00,97.65,140.968,42.09,32.641 -2020-01-15 23:15:00,96.42,139.27200000000002,42.09,32.641 -2020-01-15 23:30:00,91.99,139.661,42.09,32.641 -2020-01-15 23:45:00,86.16,139.125,42.09,32.641 -2020-01-16 00:00:00,87.33,139.56,38.399,32.641 -2020-01-16 00:15:00,88.49,139.33,38.399,32.641 -2020-01-16 00:30:00,88.26,140.88299999999998,38.399,32.641 -2020-01-16 00:45:00,83.0,142.724,38.399,32.641 -2020-01-16 01:00:00,83.99,145.79399999999998,36.94,32.641 -2020-01-16 01:15:00,85.07,145.787,36.94,32.641 -2020-01-16 01:30:00,84.84,146.149,36.94,32.641 -2020-01-16 01:45:00,79.18,146.644,36.94,32.641 -2020-01-16 02:00:00,80.14,148.93200000000002,35.275,32.641 -2020-01-16 02:15:00,85.15,151.02200000000002,35.275,32.641 -2020-01-16 02:30:00,84.32,152.084,35.275,32.641 -2020-01-16 02:45:00,82.42,154.27100000000002,35.275,32.641 -2020-01-16 03:00:00,77.71,157.27,35.329,32.641 -2020-01-16 03:15:00,84.16,158.311,35.329,32.641 -2020-01-16 03:30:00,85.53,160.137,35.329,32.641 -2020-01-16 03:45:00,85.45,162.055,35.329,32.641 -2020-01-16 04:00:00,78.58,173.658,36.275,32.641 -2020-01-16 04:15:00,79.47,185.22099999999998,36.275,32.641 -2020-01-16 04:30:00,81.13,188.989,36.275,32.641 -2020-01-16 04:45:00,82.77,192.137,36.275,32.641 -2020-01-16 05:00:00,86.6,227.294,42.193999999999996,32.641 -2020-01-16 05:15:00,89.37,255.28799999999998,42.193999999999996,32.641 -2020-01-16 05:30:00,93.2,250.99099999999999,42.193999999999996,32.641 -2020-01-16 05:45:00,98.25,244.456,42.193999999999996,32.641 -2020-01-16 06:00:00,106.36,241.44099999999997,56.422,32.641 -2020-01-16 06:15:00,111.91,247.579,56.422,32.641 -2020-01-16 06:30:00,115.81,250.795,56.422,32.641 -2020-01-16 06:45:00,121.56,255.86900000000003,56.422,32.641 -2020-01-16 07:00:00,125.43,254.107,72.569,32.641 -2020-01-16 07:15:00,128.69,259.99,72.569,32.641 -2020-01-16 07:30:00,132.2,263.454,72.569,32.641 -2020-01-16 07:45:00,136.04,265.41200000000003,72.569,32.641 -2020-01-16 08:00:00,137.28,264.069,67.704,32.641 -2020-01-16 08:15:00,136.74,264.55400000000003,67.704,32.641 -2020-01-16 08:30:00,137.81,262.16900000000004,67.704,32.641 -2020-01-16 08:45:00,135.89,259.421,67.704,32.641 -2020-01-16 09:00:00,137.97,252.798,63.434,32.641 -2020-01-16 09:15:00,140.1,249.953,63.434,32.641 -2020-01-16 09:30:00,141.78,248.072,63.434,32.641 -2020-01-16 09:45:00,141.49,244.673,63.434,32.641 -2020-01-16 10:00:00,142.24,238.75599999999997,61.88399999999999,32.641 -2020-01-16 10:15:00,140.48,234.90400000000002,61.88399999999999,32.641 -2020-01-16 10:30:00,140.15,230.903,61.88399999999999,32.641 -2020-01-16 10:45:00,140.59,229.00799999999998,61.88399999999999,32.641 -2020-01-16 11:00:00,140.53,225.988,61.481,32.641 -2020-01-16 11:15:00,141.45,224.646,61.481,32.641 -2020-01-16 11:30:00,141.71,222.722,61.481,32.641 -2020-01-16 11:45:00,139.21,222.058,61.481,32.641 -2020-01-16 12:00:00,136.2,218.021,59.527,32.641 -2020-01-16 12:15:00,135.53,217.612,59.527,32.641 -2020-01-16 12:30:00,135.7,217.34900000000002,59.527,32.641 -2020-01-16 12:45:00,136.9,217.868,59.527,32.641 -2020-01-16 13:00:00,135.4,215.40400000000002,58.794,32.641 -2020-01-16 13:15:00,134.78,214.74099999999999,58.794,32.641 -2020-01-16 13:30:00,132.47,213.917,58.794,32.641 -2020-01-16 13:45:00,132.22,214.22,58.794,32.641 -2020-01-16 14:00:00,128.13,213.833,60.32,32.641 -2020-01-16 14:15:00,126.7,214.40200000000002,60.32,32.641 -2020-01-16 14:30:00,124.84,215.28599999999997,60.32,32.641 -2020-01-16 14:45:00,124.2,215.984,60.32,32.641 -2020-01-16 15:00:00,125.48,216.856,62.52,32.641 -2020-01-16 15:15:00,125.05,217.75799999999998,62.52,32.641 -2020-01-16 15:30:00,126.77,219.547,62.52,32.641 -2020-01-16 15:45:00,129.95,220.50099999999998,62.52,32.641 -2020-01-16 16:00:00,132.47,222.225,64.199,32.641 -2020-01-16 16:15:00,131.37,224.09099999999998,64.199,32.641 -2020-01-16 16:30:00,133.46,226.852,64.199,32.641 -2020-01-16 16:45:00,136.14,228.108,64.199,32.641 -2020-01-16 17:00:00,140.04,230.606,68.19800000000001,32.641 -2020-01-16 17:15:00,139.73,231.262,68.19800000000001,32.641 -2020-01-16 17:30:00,140.43,232.16,68.19800000000001,32.641 -2020-01-16 17:45:00,140.42,231.972,68.19800000000001,32.641 -2020-01-16 18:00:00,138.81,233.65400000000002,67.899,32.641 -2020-01-16 18:15:00,136.53,230.218,67.899,32.641 -2020-01-16 18:30:00,137.16,229.18400000000003,67.899,32.641 -2020-01-16 18:45:00,136.92,229.485,67.899,32.641 -2020-01-16 19:00:00,133.32,227.865,64.72399999999999,32.641 -2020-01-16 19:15:00,131.23,223.705,64.72399999999999,32.641 -2020-01-16 19:30:00,133.3,220.62099999999998,64.72399999999999,32.641 -2020-01-16 19:45:00,135.03,217.56900000000002,64.72399999999999,32.641 -2020-01-16 20:00:00,127.62,213.46200000000002,64.062,32.641 -2020-01-16 20:15:00,119.26,206.58700000000002,64.062,32.641 -2020-01-16 20:30:00,116.31,202.333,64.062,32.641 -2020-01-16 20:45:00,111.77,201.076,64.062,32.641 -2020-01-16 21:00:00,108.51,197.449,57.971000000000004,32.641 -2020-01-16 21:15:00,112.3,194.61,57.971000000000004,32.641 -2020-01-16 21:30:00,110.27,192.56900000000002,57.971000000000004,32.641 -2020-01-16 21:45:00,106.27,190.99400000000003,57.971000000000004,32.641 -2020-01-16 22:00:00,97.28,183.658,53.715,32.641 -2020-01-16 22:15:00,96.36,177.688,53.715,32.641 -2020-01-16 22:30:00,94.99,163.819,53.715,32.641 -2020-01-16 22:45:00,98.2,155.327,53.715,32.641 -2020-01-16 23:00:00,94.28,147.961,47.8,32.641 -2020-01-16 23:15:00,91.98,146.525,47.8,32.641 -2020-01-16 23:30:00,84.84,146.689,47.8,32.641 -2020-01-16 23:45:00,82.59,146.202,47.8,32.641 -2020-01-17 00:00:00,85.95,138.651,43.656000000000006,32.641 -2020-01-17 00:15:00,86.53,138.59799999999998,43.656000000000006,32.641 -2020-01-17 00:30:00,85.43,139.931,43.656000000000006,32.641 -2020-01-17 00:45:00,79.36,141.822,43.656000000000006,32.641 -2020-01-17 01:00:00,80.97,144.585,41.263000000000005,32.641 -2020-01-17 01:15:00,83.5,145.747,41.263000000000005,32.641 -2020-01-17 01:30:00,83.45,145.722,41.263000000000005,32.641 -2020-01-17 01:45:00,80.4,146.374,41.263000000000005,32.641 -2020-01-17 02:00:00,78.23,148.619,40.799,32.641 -2020-01-17 02:15:00,74.91,150.584,40.799,32.641 -2020-01-17 02:30:00,73.54,152.134,40.799,32.641 -2020-01-17 02:45:00,74.37,154.489,40.799,32.641 -2020-01-17 03:00:00,79.04,156.16899999999998,41.398,32.641 -2020-01-17 03:15:00,83.49,158.55200000000002,41.398,32.641 -2020-01-17 03:30:00,84.6,160.399,41.398,32.641 -2020-01-17 03:45:00,82.01,162.561,41.398,32.641 -2020-01-17 04:00:00,77.58,174.391,42.38,32.641 -2020-01-17 04:15:00,78.35,185.93099999999998,42.38,32.641 -2020-01-17 04:30:00,79.29,189.803,42.38,32.641 -2020-01-17 04:45:00,82.16,191.699,42.38,32.641 -2020-01-17 05:00:00,85.97,225.387,46.181000000000004,32.641 -2020-01-17 05:15:00,87.85,254.97799999999998,46.181000000000004,32.641 -2020-01-17 05:30:00,94.06,251.938,46.181000000000004,32.641 -2020-01-17 05:45:00,97.27,245.42700000000002,46.181000000000004,32.641 -2020-01-17 06:00:00,106.38,242.907,59.33,32.641 -2020-01-17 06:15:00,111.42,247.27,59.33,32.641 -2020-01-17 06:30:00,115.82,249.47,59.33,32.641 -2020-01-17 06:45:00,119.88,256.536,59.33,32.641 -2020-01-17 07:00:00,127.7,253.679,72.454,32.641 -2020-01-17 07:15:00,130.26,260.601,72.454,32.641 -2020-01-17 07:30:00,132.73,264.178,72.454,32.641 -2020-01-17 07:45:00,134.99,265.091,72.454,32.641 -2020-01-17 08:00:00,136.8,262.293,67.175,32.641 -2020-01-17 08:15:00,135.31,262.188,67.175,32.641 -2020-01-17 08:30:00,136.28,260.932,67.175,32.641 -2020-01-17 08:45:00,136.61,256.327,67.175,32.641 -2020-01-17 09:00:00,136.32,250.61700000000002,65.365,32.641 -2020-01-17 09:15:00,137.58,248.14,65.365,32.641 -2020-01-17 09:30:00,139.47,245.88400000000001,65.365,32.641 -2020-01-17 09:45:00,139.06,242.29,65.365,32.641 -2020-01-17 10:00:00,137.15,235.06400000000002,63.95,32.641 -2020-01-17 10:15:00,136.31,232.081,63.95,32.641 -2020-01-17 10:30:00,137.15,227.899,63.95,32.641 -2020-01-17 10:45:00,138.46,225.50599999999997,63.95,32.641 -2020-01-17 11:00:00,138.45,222.419,63.92100000000001,32.641 -2020-01-17 11:15:00,140.66,220.19799999999998,63.92100000000001,32.641 -2020-01-17 11:30:00,142.55,220.382,63.92100000000001,32.641 -2020-01-17 11:45:00,141.43,219.925,63.92100000000001,32.641 -2020-01-17 12:00:00,140.64,217.108,60.79600000000001,32.641 -2020-01-17 12:15:00,141.7,214.36599999999999,60.79600000000001,32.641 -2020-01-17 12:30:00,140.79,214.257,60.79600000000001,32.641 -2020-01-17 12:45:00,140.1,215.50099999999998,60.79600000000001,32.641 -2020-01-17 13:00:00,138.62,214.043,59.393,32.641 -2020-01-17 13:15:00,137.23,214.293,59.393,32.641 -2020-01-17 13:30:00,134.36,213.351,59.393,32.641 -2020-01-17 13:45:00,134.11,213.528,59.393,32.641 -2020-01-17 14:00:00,133.51,211.956,57.943999999999996,32.641 -2020-01-17 14:15:00,133.72,212.239,57.943999999999996,32.641 -2020-01-17 14:30:00,131.64,213.493,57.943999999999996,32.641 -2020-01-17 14:45:00,132.21,214.667,57.943999999999996,32.641 -2020-01-17 15:00:00,131.29,215.00400000000002,60.153999999999996,32.641 -2020-01-17 15:15:00,129.71,215.408,60.153999999999996,32.641 -2020-01-17 15:30:00,128.64,215.49900000000002,60.153999999999996,32.641 -2020-01-17 15:45:00,127.96,216.497,60.153999999999996,32.641 -2020-01-17 16:00:00,129.48,217.007,62.933,32.641 -2020-01-17 16:15:00,129.9,219.145,62.933,32.641 -2020-01-17 16:30:00,132.34,222.05,62.933,32.641 -2020-01-17 16:45:00,137.1,223.28400000000002,62.933,32.641 -2020-01-17 17:00:00,139.8,225.78599999999997,68.657,32.641 -2020-01-17 17:15:00,138.22,226.025,68.657,32.641 -2020-01-17 17:30:00,139.12,226.56900000000002,68.657,32.641 -2020-01-17 17:45:00,139.16,226.158,68.657,32.641 -2020-01-17 18:00:00,138.22,228.674,67.111,32.641 -2020-01-17 18:15:00,136.69,224.929,67.111,32.641 -2020-01-17 18:30:00,135.95,224.361,67.111,32.641 -2020-01-17 18:45:00,135.85,224.62599999999998,67.111,32.641 -2020-01-17 19:00:00,132.67,223.908,62.434,32.641 -2020-01-17 19:15:00,129.94,221.23,62.434,32.641 -2020-01-17 19:30:00,127.9,217.68,62.434,32.641 -2020-01-17 19:45:00,126.36,214.235,62.434,32.641 -2020-01-17 20:00:00,119.39,210.176,61.763000000000005,32.641 -2020-01-17 20:15:00,116.31,203.215,61.763000000000005,32.641 -2020-01-17 20:30:00,112.3,198.968,61.763000000000005,32.641 -2020-01-17 20:45:00,109.84,198.465,61.763000000000005,32.641 -2020-01-17 21:00:00,104.58,195.234,56.785,32.641 -2020-01-17 21:15:00,101.37,192.667,56.785,32.641 -2020-01-17 21:30:00,99.26,190.696,56.785,32.641 -2020-01-17 21:45:00,97.84,189.733,56.785,32.641 -2020-01-17 22:00:00,96.2,183.52700000000002,52.693000000000005,32.641 -2020-01-17 22:15:00,91.12,177.456,52.693000000000005,32.641 -2020-01-17 22:30:00,88.41,170.262,52.693000000000005,32.641 -2020-01-17 22:45:00,87.24,165.695,52.693000000000005,32.641 -2020-01-17 23:00:00,83.19,157.593,45.443999999999996,32.641 -2020-01-17 23:15:00,82.01,154.141,45.443999999999996,32.641 -2020-01-17 23:30:00,80.42,152.884,45.443999999999996,32.641 -2020-01-17 23:45:00,79.42,151.662,45.443999999999996,32.641 -2020-01-18 00:00:00,75.81,135.17700000000002,44.738,32.459 -2020-01-18 00:15:00,73.43,130.239,44.738,32.459 -2020-01-18 00:30:00,72.12,133.179,44.738,32.459 -2020-01-18 00:45:00,70.8,136.001,44.738,32.459 -2020-01-18 01:00:00,68.46,139.438,40.303000000000004,32.459 -2020-01-18 01:15:00,68.68,139.34,40.303000000000004,32.459 -2020-01-18 01:30:00,68.0,138.83100000000002,40.303000000000004,32.459 -2020-01-18 01:45:00,67.64,139.023,40.303000000000004,32.459 -2020-01-18 02:00:00,66.26,142.22299999999998,38.61,32.459 -2020-01-18 02:15:00,66.19,143.881,38.61,32.459 -2020-01-18 02:30:00,65.47,144.265,38.61,32.459 -2020-01-18 02:45:00,65.76,146.61,38.61,32.459 -2020-01-18 03:00:00,65.61,149.232,37.554,32.459 -2020-01-18 03:15:00,65.84,150.313,37.554,32.459 -2020-01-18 03:30:00,64.93,150.23,37.554,32.459 -2020-01-18 03:45:00,66.07,152.283,37.554,32.459 -2020-01-18 04:00:00,65.87,159.47899999999998,37.176,32.459 -2020-01-18 04:15:00,66.39,168.15,37.176,32.459 -2020-01-18 04:30:00,65.9,169.74400000000003,37.176,32.459 -2020-01-18 04:45:00,68.46,170.998,37.176,32.459 -2020-01-18 05:00:00,67.62,187.06400000000002,36.893,32.459 -2020-01-18 05:15:00,67.44,195.977,36.893,32.459 -2020-01-18 05:30:00,68.22,193.09,36.893,32.459 -2020-01-18 05:45:00,68.87,192.283,36.893,32.459 -2020-01-18 06:00:00,70.41,210.16299999999998,37.803000000000004,32.459 -2020-01-18 06:15:00,71.3,232.584,37.803000000000004,32.459 -2020-01-18 06:30:00,73.03,228.908,37.803000000000004,32.459 -2020-01-18 06:45:00,75.0,225.896,37.803000000000004,32.459 -2020-01-18 07:00:00,78.98,218.862,41.086999999999996,32.459 -2020-01-18 07:15:00,80.53,224.50599999999997,41.086999999999996,32.459 -2020-01-18 07:30:00,83.81,231.007,41.086999999999996,32.459 -2020-01-18 07:45:00,85.94,236.44799999999998,41.086999999999996,32.459 -2020-01-18 08:00:00,88.7,238.415,48.222,32.459 -2020-01-18 08:15:00,89.91,242.604,48.222,32.459 -2020-01-18 08:30:00,92.41,243.21,48.222,32.459 -2020-01-18 08:45:00,95.69,242.15099999999998,48.222,32.459 -2020-01-18 09:00:00,98.41,238.05700000000002,52.791000000000004,32.459 -2020-01-18 09:15:00,98.48,236.391,52.791000000000004,32.459 -2020-01-18 09:30:00,102.21,235.132,52.791000000000004,32.459 -2020-01-18 09:45:00,100.36,231.793,52.791000000000004,32.459 -2020-01-18 10:00:00,100.12,224.771,54.341,32.459 -2020-01-18 10:15:00,100.75,221.933,54.341,32.459 -2020-01-18 10:30:00,101.87,217.99599999999998,54.341,32.459 -2020-01-18 10:45:00,102.85,217.19299999999998,54.341,32.459 -2020-01-18 11:00:00,101.48,214.399,51.94,32.459 -2020-01-18 11:15:00,103.12,211.248,51.94,32.459 -2020-01-18 11:30:00,103.04,210.08900000000003,51.94,32.459 -2020-01-18 11:45:00,100.05,208.422,51.94,32.459 -2020-01-18 12:00:00,97.04,204.50599999999997,50.973,32.459 -2020-01-18 12:15:00,95.62,202.4,50.973,32.459 -2020-01-18 12:30:00,92.58,202.668,50.973,32.459 -2020-01-18 12:45:00,92.09,202.90200000000002,50.973,32.459 -2020-01-18 13:00:00,90.24,201.095,48.06399999999999,32.459 -2020-01-18 13:15:00,87.19,199.011,48.06399999999999,32.459 -2020-01-18 13:30:00,86.44,197.50099999999998,48.06399999999999,32.459 -2020-01-18 13:45:00,89.07,198.437,48.06399999999999,32.459 -2020-01-18 14:00:00,85.42,198.355,45.707,32.459 -2020-01-18 14:15:00,85.02,198.19299999999998,45.707,32.459 -2020-01-18 14:30:00,88.14,197.393,45.707,32.459 -2020-01-18 14:45:00,88.52,198.765,45.707,32.459 -2020-01-18 15:00:00,88.89,199.88299999999998,47.567,32.459 -2020-01-18 15:15:00,89.04,201.095,47.567,32.459 -2020-01-18 15:30:00,91.84,202.926,47.567,32.459 -2020-01-18 15:45:00,89.9,204.063,47.567,32.459 -2020-01-18 16:00:00,91.8,202.982,52.031000000000006,32.459 -2020-01-18 16:15:00,92.59,206.278,52.031000000000006,32.459 -2020-01-18 16:30:00,94.37,209.09900000000002,52.031000000000006,32.459 -2020-01-18 16:45:00,98.68,211.359,52.031000000000006,32.459 -2020-01-18 17:00:00,104.16,213.451,58.218999999999994,32.459 -2020-01-18 17:15:00,105.49,215.894,58.218999999999994,32.459 -2020-01-18 17:30:00,106.99,216.37900000000002,58.218999999999994,32.459 -2020-01-18 17:45:00,107.98,215.463,58.218999999999994,32.459 -2020-01-18 18:00:00,108.94,217.34,57.65,32.459 -2020-01-18 18:15:00,110.75,215.455,57.65,32.459 -2020-01-18 18:30:00,108.32,216.24099999999999,57.65,32.459 -2020-01-18 18:45:00,107.67,213.148,57.65,32.459 -2020-01-18 19:00:00,105.41,213.674,51.261,32.459 -2020-01-18 19:15:00,104.23,210.55700000000002,51.261,32.459 -2020-01-18 19:30:00,103.1,207.775,51.261,32.459 -2020-01-18 19:45:00,104.08,203.93900000000002,51.261,32.459 -2020-01-18 20:00:00,96.04,202.172,44.068000000000005,32.459 -2020-01-18 20:15:00,93.37,197.706,44.068000000000005,32.459 -2020-01-18 20:30:00,90.26,193.16400000000002,44.068000000000005,32.459 -2020-01-18 20:45:00,88.26,191.99400000000003,44.068000000000005,32.459 -2020-01-18 21:00:00,85.63,191.48,38.861,32.459 -2020-01-18 21:15:00,83.97,189.435,38.861,32.459 -2020-01-18 21:30:00,82.78,188.83599999999998,38.861,32.459 -2020-01-18 21:45:00,81.38,187.49400000000003,38.861,32.459 -2020-01-18 22:00:00,78.87,182.81099999999998,39.485,32.459 -2020-01-18 22:15:00,77.45,179.549,39.485,32.459 -2020-01-18 22:30:00,74.7,179.446,39.485,32.459 -2020-01-18 22:45:00,73.83,176.96,39.485,32.459 -2020-01-18 23:00:00,70.86,171.66400000000002,32.027,32.459 -2020-01-18 23:15:00,70.25,166.322,32.027,32.459 -2020-01-18 23:30:00,67.49,162.817,32.027,32.459 -2020-01-18 23:45:00,66.15,158.811,32.027,32.459 -2020-01-19 00:00:00,63.53,135.497,26.96,32.459 -2020-01-19 00:15:00,61.94,130.341,26.96,32.459 -2020-01-19 00:30:00,60.49,132.85,26.96,32.459 -2020-01-19 00:45:00,59.53,136.483,26.96,32.459 -2020-01-19 01:00:00,58.12,139.71,24.295,32.459 -2020-01-19 01:15:00,58.27,140.829,24.295,32.459 -2020-01-19 01:30:00,57.64,140.945,24.295,32.459 -2020-01-19 01:45:00,57.35,140.821,24.295,32.459 -2020-01-19 02:00:00,56.61,143.149,24.268,32.459 -2020-01-19 02:15:00,56.08,143.701,24.268,32.459 -2020-01-19 02:30:00,55.8,145.066,24.268,32.459 -2020-01-19 02:45:00,56.32,147.996,24.268,32.459 -2020-01-19 03:00:00,55.66,150.884,23.373,32.459 -2020-01-19 03:15:00,55.71,151.326,23.373,32.459 -2020-01-19 03:30:00,55.81,153.001,23.373,32.459 -2020-01-19 03:45:00,56.11,155.10299999999998,23.373,32.459 -2020-01-19 04:00:00,55.85,162.005,23.874000000000002,32.459 -2020-01-19 04:15:00,56.49,169.545,23.874000000000002,32.459 -2020-01-19 04:30:00,57.02,170.997,23.874000000000002,32.459 -2020-01-19 04:45:00,57.49,172.642,23.874000000000002,32.459 -2020-01-19 05:00:00,58.49,184.49599999999998,24.871,32.459 -2020-01-19 05:15:00,58.83,190.658,24.871,32.459 -2020-01-19 05:30:00,58.88,187.644,24.871,32.459 -2020-01-19 05:45:00,59.64,187.18900000000002,24.871,32.459 -2020-01-19 06:00:00,59.96,205.362,23.84,32.459 -2020-01-19 06:15:00,60.41,225.62599999999998,23.84,32.459 -2020-01-19 06:30:00,60.71,220.766,23.84,32.459 -2020-01-19 06:45:00,64.2,216.699,23.84,32.459 -2020-01-19 07:00:00,64.77,212.528,27.430999999999997,32.459 -2020-01-19 07:15:00,65.87,217.419,27.430999999999997,32.459 -2020-01-19 07:30:00,68.27,222.238,27.430999999999997,32.459 -2020-01-19 07:45:00,70.01,226.76,27.430999999999997,32.459 -2020-01-19 08:00:00,72.98,230.78099999999998,33.891999999999996,32.459 -2020-01-19 08:15:00,74.51,234.66099999999997,33.891999999999996,32.459 -2020-01-19 08:30:00,77.33,237.02900000000002,33.891999999999996,32.459 -2020-01-19 08:45:00,79.56,238.33,33.891999999999996,32.459 -2020-01-19 09:00:00,81.57,233.78099999999998,37.571,32.459 -2020-01-19 09:15:00,83.04,232.83599999999998,37.571,32.459 -2020-01-19 09:30:00,86.55,231.352,37.571,32.459 -2020-01-19 09:45:00,86.23,227.72299999999998,37.571,32.459 -2020-01-19 10:00:00,87.7,223.55200000000002,40.594,32.459 -2020-01-19 10:15:00,89.59,221.326,40.594,32.459 -2020-01-19 10:30:00,90.48,218.054,40.594,32.459 -2020-01-19 10:45:00,92.41,214.893,40.594,32.459 -2020-01-19 11:00:00,94.56,213.213,44.133,32.459 -2020-01-19 11:15:00,98.06,210.283,44.133,32.459 -2020-01-19 11:30:00,99.96,208.044,44.133,32.459 -2020-01-19 11:45:00,100.24,207.048,44.133,32.459 -2020-01-19 12:00:00,97.6,202.331,41.198,32.459 -2020-01-19 12:15:00,96.12,202.545,41.198,32.459 -2020-01-19 12:30:00,92.64,201.079,41.198,32.459 -2020-01-19 12:45:00,92.83,200.282,41.198,32.459 -2020-01-19 13:00:00,87.94,197.68400000000003,37.014,32.459 -2020-01-19 13:15:00,87.17,199.167,37.014,32.459 -2020-01-19 13:30:00,85.79,197.56099999999998,37.014,32.459 -2020-01-19 13:45:00,85.29,197.56599999999997,37.014,32.459 -2020-01-19 14:00:00,84.54,197.63099999999997,34.934,32.459 -2020-01-19 14:15:00,83.97,198.785,34.934,32.459 -2020-01-19 14:30:00,84.35,199.588,34.934,32.459 -2020-01-19 14:45:00,85.14,200.653,34.934,32.459 -2020-01-19 15:00:00,84.99,199.99,34.588,32.459 -2020-01-19 15:15:00,84.82,202.16,34.588,32.459 -2020-01-19 15:30:00,85.3,204.67700000000002,34.588,32.459 -2020-01-19 15:45:00,84.88,206.55900000000003,34.588,32.459 -2020-01-19 16:00:00,86.12,207.805,37.874,32.459 -2020-01-19 16:15:00,86.01,210.03400000000002,37.874,32.459 -2020-01-19 16:30:00,87.08,213.02700000000002,37.874,32.459 -2020-01-19 16:45:00,89.57,215.435,37.874,32.459 -2020-01-19 17:00:00,97.87,217.421,47.303999999999995,32.459 -2020-01-19 17:15:00,102.85,219.338,47.303999999999995,32.459 -2020-01-19 17:30:00,105.44,220.085,47.303999999999995,32.459 -2020-01-19 17:45:00,106.76,221.72400000000002,47.303999999999995,32.459 -2020-01-19 18:00:00,106.95,222.90200000000002,48.879,32.459 -2020-01-19 18:15:00,108.0,222.58700000000002,48.879,32.459 -2020-01-19 18:30:00,104.37,221.048,48.879,32.459 -2020-01-19 18:45:00,103.14,220.05900000000003,48.879,32.459 -2020-01-19 19:00:00,101.77,219.907,44.826,32.459 -2020-01-19 19:15:00,99.54,217.583,44.826,32.459 -2020-01-19 19:30:00,98.11,214.65400000000002,44.826,32.459 -2020-01-19 19:45:00,96.83,212.50400000000002,44.826,32.459 -2020-01-19 20:00:00,98.04,210.7,40.154,32.459 -2020-01-19 20:15:00,101.48,207.36900000000003,40.154,32.459 -2020-01-19 20:30:00,97.9,204.132,40.154,32.459 -2020-01-19 20:45:00,89.29,201.812,40.154,32.459 -2020-01-19 21:00:00,89.58,198.354,36.549,32.459 -2020-01-19 21:15:00,86.78,195.61900000000003,36.549,32.459 -2020-01-19 21:30:00,86.94,195.425,36.549,32.459 -2020-01-19 21:45:00,87.39,194.21200000000002,36.549,32.459 -2020-01-19 22:00:00,87.92,187.94099999999997,37.663000000000004,32.459 -2020-01-19 22:15:00,85.91,184.03,37.663000000000004,32.459 -2020-01-19 22:30:00,86.09,180.403,37.663000000000004,32.459 -2020-01-19 22:45:00,90.89,177.109,37.663000000000004,32.459 -2020-01-19 23:00:00,87.77,168.668,31.945,32.459 -2020-01-19 23:15:00,86.14,165.292,31.945,32.459 -2020-01-19 23:30:00,80.64,162.781,31.945,32.459 -2020-01-19 23:45:00,82.46,159.77200000000002,31.945,32.459 -2020-01-20 00:00:00,84.43,140.184,31.533,32.641 -2020-01-20 00:15:00,82.35,138.34799999999998,31.533,32.641 -2020-01-20 00:30:00,79.55,141.045,31.533,32.641 -2020-01-20 00:45:00,74.22,144.09799999999998,31.533,32.641 -2020-01-20 01:00:00,68.93,147.299,30.56,32.641 -2020-01-20 01:15:00,74.43,147.789,30.56,32.641 -2020-01-20 01:30:00,78.16,147.909,30.56,32.641 -2020-01-20 01:45:00,77.86,147.925,30.56,32.641 -2020-01-20 02:00:00,74.11,150.179,29.55,32.641 -2020-01-20 02:15:00,78.18,152.602,29.55,32.641 -2020-01-20 02:30:00,78.02,154.341,29.55,32.641 -2020-01-20 02:45:00,78.43,156.56799999999998,29.55,32.641 -2020-01-20 03:00:00,75.4,160.888,27.059,32.641 -2020-01-20 03:15:00,72.87,163.166,27.059,32.641 -2020-01-20 03:30:00,73.43,164.412,27.059,32.641 -2020-01-20 03:45:00,74.76,165.95,27.059,32.641 -2020-01-20 04:00:00,81.45,177.48,28.384,32.641 -2020-01-20 04:15:00,80.59,189.41,28.384,32.641 -2020-01-20 04:30:00,78.24,193.53599999999997,28.384,32.641 -2020-01-20 04:45:00,80.69,195.301,28.384,32.641 -2020-01-20 05:00:00,85.34,224.606,35.915,32.641 -2020-01-20 05:15:00,87.03,252.854,35.915,32.641 -2020-01-20 05:30:00,92.23,250.43200000000002,35.915,32.641 -2020-01-20 05:45:00,96.51,243.827,35.915,32.641 -2020-01-20 06:00:00,105.11,242.514,56.18,32.641 -2020-01-20 06:15:00,109.59,246.791,56.18,32.641 -2020-01-20 06:30:00,116.86,250.736,56.18,32.641 -2020-01-20 06:45:00,120.28,256.20099999999996,56.18,32.641 -2020-01-20 07:00:00,128.01,254.76,70.877,32.641 -2020-01-20 07:15:00,133.06,260.723,70.877,32.641 -2020-01-20 07:30:00,134.78,264.745,70.877,32.641 -2020-01-20 07:45:00,134.45,266.157,70.877,32.641 -2020-01-20 08:00:00,137.24,264.639,65.65,32.641 -2020-01-20 08:15:00,136.02,266.177,65.65,32.641 -2020-01-20 08:30:00,137.76,263.861,65.65,32.641 -2020-01-20 08:45:00,135.54,261.198,65.65,32.641 -2020-01-20 09:00:00,137.3,255.574,62.037,32.641 -2020-01-20 09:15:00,140.43,250.84400000000002,62.037,32.641 -2020-01-20 09:30:00,141.76,248.355,62.037,32.641 -2020-01-20 09:45:00,141.7,245.425,62.037,32.641 -2020-01-20 10:00:00,140.32,239.98,60.409,32.641 -2020-01-20 10:15:00,143.66,237.407,60.409,32.641 -2020-01-20 10:30:00,143.46,233.18,60.409,32.641 -2020-01-20 10:45:00,142.34,231.155,60.409,32.641 -2020-01-20 11:00:00,141.51,226.299,60.211999999999996,32.641 -2020-01-20 11:15:00,141.96,225.43,60.211999999999996,32.641 -2020-01-20 11:30:00,141.04,224.695,60.211999999999996,32.641 -2020-01-20 11:45:00,140.21,223.153,60.211999999999996,32.641 -2020-01-20 12:00:00,137.28,220.753,57.733000000000004,32.641 -2020-01-20 12:15:00,135.08,220.96900000000002,57.733000000000004,32.641 -2020-01-20 12:30:00,134.0,219.947,57.733000000000004,32.641 -2020-01-20 12:45:00,133.78,220.92700000000002,57.733000000000004,32.641 -2020-01-20 13:00:00,132.27,218.886,58.695,32.641 -2020-01-20 13:15:00,132.8,218.87,58.695,32.641 -2020-01-20 13:30:00,131.49,216.606,58.695,32.641 -2020-01-20 13:45:00,135.03,216.507,58.695,32.641 -2020-01-20 14:00:00,134.0,215.979,59.505,32.641 -2020-01-20 14:15:00,133.27,216.283,59.505,32.641 -2020-01-20 14:30:00,132.16,216.48,59.505,32.641 -2020-01-20 14:45:00,133.29,217.21,59.505,32.641 -2020-01-20 15:00:00,134.34,218.625,59.946000000000005,32.641 -2020-01-20 15:15:00,131.87,219.19099999999997,59.946000000000005,32.641 -2020-01-20 15:30:00,131.59,220.61599999999999,59.946000000000005,32.641 -2020-01-20 15:45:00,130.93,222.04,59.946000000000005,32.641 -2020-01-20 16:00:00,132.11,223.24900000000002,61.766999999999996,32.641 -2020-01-20 16:15:00,130.14,224.595,61.766999999999996,32.641 -2020-01-20 16:30:00,131.7,226.576,61.766999999999996,32.641 -2020-01-20 16:45:00,135.3,227.615,61.766999999999996,32.641 -2020-01-20 17:00:00,141.09,229.46099999999998,67.85600000000001,32.641 -2020-01-20 17:15:00,139.31,230.275,67.85600000000001,32.641 -2020-01-20 17:30:00,138.86,230.47799999999998,67.85600000000001,32.641 -2020-01-20 17:45:00,138.41,230.486,67.85600000000001,32.641 -2020-01-20 18:00:00,138.69,232.252,64.564,32.641 -2020-01-20 18:15:00,137.29,229.68,64.564,32.641 -2020-01-20 18:30:00,136.61,228.98,64.564,32.641 -2020-01-20 18:45:00,137.05,228.43400000000003,64.564,32.641 -2020-01-20 19:00:00,133.91,226.423,58.536,32.641 -2020-01-20 19:15:00,132.7,222.625,58.536,32.641 -2020-01-20 19:30:00,128.93,220.31099999999998,58.536,32.641 -2020-01-20 19:45:00,128.61,217.30700000000002,58.536,32.641 -2020-01-20 20:00:00,121.04,212.972,59.888999999999996,32.641 -2020-01-20 20:15:00,117.83,206.653,59.888999999999996,32.641 -2020-01-20 20:30:00,115.43,201.231,59.888999999999996,32.641 -2020-01-20 20:45:00,114.45,200.747,59.888999999999996,32.641 -2020-01-20 21:00:00,108.29,197.956,52.652,32.641 -2020-01-20 21:15:00,112.06,193.812,52.652,32.641 -2020-01-20 21:30:00,112.01,192.627,52.652,32.641 -2020-01-20 21:45:00,109.57,190.88400000000001,52.652,32.641 -2020-01-20 22:00:00,100.81,181.58599999999998,46.17,32.641 -2020-01-20 22:15:00,98.31,175.95,46.17,32.641 -2020-01-20 22:30:00,96.61,162.003,46.17,32.641 -2020-01-20 22:45:00,99.56,153.227,46.17,32.641 -2020-01-20 23:00:00,96.3,145.66,36.281,32.641 -2020-01-20 23:15:00,94.34,145.513,36.281,32.641 -2020-01-20 23:30:00,84.13,146.162,36.281,32.641 -2020-01-20 23:45:00,85.68,146.227,36.281,32.641 -2020-01-21 00:00:00,88.44,139.76,38.821999999999996,32.641 -2020-01-21 00:15:00,87.49,139.435,38.821999999999996,32.641 -2020-01-21 00:30:00,86.84,140.901,38.821999999999996,32.641 -2020-01-21 00:45:00,82.6,142.671,38.821999999999996,32.641 -2020-01-21 01:00:00,84.63,145.717,36.936,32.641 -2020-01-21 01:15:00,85.35,145.653,36.936,32.641 -2020-01-21 01:30:00,83.29,145.993,36.936,32.641 -2020-01-21 01:45:00,81.04,146.444,36.936,32.641 -2020-01-21 02:00:00,83.81,148.781,34.42,32.641 -2020-01-21 02:15:00,86.37,150.878,34.42,32.641 -2020-01-21 02:30:00,82.71,151.991,34.42,32.641 -2020-01-21 02:45:00,82.96,154.17600000000002,34.42,32.641 -2020-01-21 03:00:00,82.05,157.155,33.585,32.641 -2020-01-21 03:15:00,84.36,158.278,33.585,32.641 -2020-01-21 03:30:00,78.36,160.099,33.585,32.641 -2020-01-21 03:45:00,85.53,162.072,33.585,32.641 -2020-01-21 04:00:00,85.62,173.56400000000002,35.622,32.641 -2020-01-21 04:15:00,85.41,185.06599999999997,35.622,32.641 -2020-01-21 04:30:00,84.33,188.84900000000002,35.622,32.641 -2020-01-21 04:45:00,89.36,191.958,35.622,32.641 -2020-01-21 05:00:00,95.38,226.903,40.599000000000004,32.641 -2020-01-21 05:15:00,91.27,254.767,40.599000000000004,32.641 -2020-01-21 05:30:00,93.24,250.47400000000002,40.599000000000004,32.641 -2020-01-21 05:45:00,98.12,244.033,40.599000000000004,32.641 -2020-01-21 06:00:00,108.67,241.128,55.203,32.641 -2020-01-21 06:15:00,112.52,247.321,55.203,32.641 -2020-01-21 06:30:00,114.67,250.555,55.203,32.641 -2020-01-21 06:45:00,119.03,255.76,55.203,32.641 -2020-01-21 07:00:00,126.8,254.093,69.029,32.641 -2020-01-21 07:15:00,129.56,259.89599999999996,69.029,32.641 -2020-01-21 07:30:00,135.6,263.238,69.029,32.641 -2020-01-21 07:45:00,132.37,265.056,69.029,32.641 -2020-01-21 08:00:00,134.51,263.666,65.85300000000001,32.641 -2020-01-21 08:15:00,134.53,264.052,65.85300000000001,32.641 -2020-01-21 08:30:00,135.3,261.45099999999996,65.85300000000001,32.641 -2020-01-21 08:45:00,136.72,258.621,65.85300000000001,32.641 -2020-01-21 09:00:00,137.69,251.945,61.566,32.641 -2020-01-21 09:15:00,138.99,249.12900000000002,61.566,32.641 -2020-01-21 09:30:00,140.22,247.34099999999998,61.566,32.641 -2020-01-21 09:45:00,141.41,243.92,61.566,32.641 -2020-01-21 10:00:00,138.32,238.024,61.244,32.641 -2020-01-21 10:15:00,140.84,234.231,61.244,32.641 -2020-01-21 10:30:00,140.25,230.209,61.244,32.641 -2020-01-21 10:45:00,139.51,228.35,61.244,32.641 -2020-01-21 11:00:00,139.77,225.236,61.16,32.641 -2020-01-21 11:15:00,140.28,223.91,61.16,32.641 -2020-01-21 11:30:00,141.43,222.003,61.16,32.641 -2020-01-21 11:45:00,141.15,221.368,61.16,32.641 -2020-01-21 12:00:00,137.98,217.40200000000002,59.09,32.641 -2020-01-21 12:15:00,136.33,217.08900000000003,59.09,32.641 -2020-01-21 12:30:00,134.76,216.75599999999997,59.09,32.641 -2020-01-21 12:45:00,135.83,217.27200000000002,59.09,32.641 -2020-01-21 13:00:00,136.03,214.812,60.21,32.641 -2020-01-21 13:15:00,137.42,214.06099999999998,60.21,32.641 -2020-01-21 13:30:00,136.56,213.168,60.21,32.641 -2020-01-21 13:45:00,136.51,213.452,60.21,32.641 -2020-01-21 14:00:00,133.43,213.22400000000002,60.673,32.641 -2020-01-21 14:15:00,132.93,213.732,60.673,32.641 -2020-01-21 14:30:00,131.47,214.611,60.673,32.641 -2020-01-21 14:45:00,132.26,215.398,60.673,32.641 -2020-01-21 15:00:00,133.45,216.356,62.232,32.641 -2020-01-21 15:15:00,131.81,217.135,62.232,32.641 -2020-01-21 15:30:00,129.92,218.83700000000002,62.232,32.641 -2020-01-21 15:45:00,129.62,219.72,62.232,32.641 -2020-01-21 16:00:00,130.89,221.453,63.611999999999995,32.641 -2020-01-21 16:15:00,130.05,223.34099999999998,63.611999999999995,32.641 -2020-01-21 16:30:00,131.99,226.138,63.611999999999995,32.641 -2020-01-21 16:45:00,133.7,227.4,63.611999999999995,32.641 -2020-01-21 17:00:00,141.22,229.834,70.658,32.641 -2020-01-21 17:15:00,139.73,230.655,70.658,32.641 -2020-01-21 17:30:00,139.98,231.72299999999998,70.658,32.641 -2020-01-21 17:45:00,140.83,231.653,70.658,32.641 -2020-01-21 18:00:00,139.47,233.438,68.361,32.641 -2020-01-21 18:15:00,137.77,230.11900000000003,68.361,32.641 -2020-01-21 18:30:00,136.43,229.109,68.361,32.641 -2020-01-21 18:45:00,136.05,229.52200000000002,68.361,32.641 -2020-01-21 19:00:00,132.77,227.708,62.922,32.641 -2020-01-21 19:15:00,131.36,223.574,62.922,32.641 -2020-01-21 19:30:00,136.19,220.53799999999998,62.922,32.641 -2020-01-21 19:45:00,137.49,217.548,62.922,32.641 -2020-01-21 20:00:00,125.64,213.32299999999998,63.251999999999995,32.641 -2020-01-21 20:15:00,119.24,206.47299999999998,63.251999999999995,32.641 -2020-01-21 20:30:00,114.43,202.202,63.251999999999995,32.641 -2020-01-21 20:45:00,114.99,201.021,63.251999999999995,32.641 -2020-01-21 21:00:00,107.66,197.293,54.47,32.641 -2020-01-21 21:15:00,113.17,194.36599999999999,54.47,32.641 -2020-01-21 21:30:00,112.31,192.32,54.47,32.641 -2020-01-21 21:45:00,106.88,190.829,54.47,32.641 -2020-01-21 22:00:00,100.25,183.455,51.12,32.641 -2020-01-21 22:15:00,96.44,177.588,51.12,32.641 -2020-01-21 22:30:00,95.56,163.696,51.12,32.641 -2020-01-21 22:45:00,98.08,155.245,51.12,32.641 -2020-01-21 23:00:00,92.47,147.793,42.156000000000006,32.641 -2020-01-21 23:15:00,91.54,146.417,42.156000000000006,32.641 -2020-01-21 23:30:00,85.61,146.672,42.156000000000006,32.641 -2020-01-21 23:45:00,89.01,146.222,42.156000000000006,32.641 -2020-01-22 00:00:00,85.62,139.774,37.192,32.641 -2020-01-22 00:15:00,81.83,139.43200000000002,37.192,32.641 -2020-01-22 00:30:00,78.79,140.88,37.192,32.641 -2020-01-22 00:45:00,84.5,142.636,37.192,32.641 -2020-01-22 01:00:00,81.61,145.673,32.24,32.641 -2020-01-22 01:15:00,82.94,145.59799999999998,32.24,32.641 -2020-01-22 01:30:00,75.82,145.93200000000002,32.24,32.641 -2020-01-22 01:45:00,81.67,146.376,32.24,32.641 -2020-01-22 02:00:00,79.49,148.722,30.34,32.641 -2020-01-22 02:15:00,76.77,150.81799999999998,30.34,32.641 -2020-01-22 02:30:00,76.68,151.94299999999998,30.34,32.641 -2020-01-22 02:45:00,75.36,154.127,30.34,32.641 -2020-01-22 03:00:00,80.37,157.10399999999998,29.129,32.641 -2020-01-22 03:15:00,81.93,158.24,29.129,32.641 -2020-01-22 03:30:00,80.31,160.061,29.129,32.641 -2020-01-22 03:45:00,81.37,162.04399999999998,29.129,32.641 -2020-01-22 04:00:00,84.25,173.516,30.075,32.641 -2020-01-22 04:15:00,85.11,185.007,30.075,32.641 -2020-01-22 04:30:00,83.8,188.795,30.075,32.641 -2020-01-22 04:45:00,87.55,191.895,30.075,32.641 -2020-01-22 05:00:00,91.73,226.801,35.684,32.641 -2020-01-22 05:15:00,94.75,254.644,35.684,32.641 -2020-01-22 05:30:00,92.38,250.34900000000002,35.684,32.641 -2020-01-22 05:45:00,96.78,243.924,35.684,32.641 -2020-01-22 06:00:00,106.02,241.03900000000002,51.49,32.641 -2020-01-22 06:15:00,111.14,247.24400000000003,51.49,32.641 -2020-01-22 06:30:00,115.37,250.47799999999998,51.49,32.641 -2020-01-22 06:45:00,120.3,255.707,51.49,32.641 -2020-01-22 07:00:00,127.38,254.05900000000003,68.242,32.641 -2020-01-22 07:15:00,127.79,259.843,68.242,32.641 -2020-01-22 07:30:00,130.4,263.16,68.242,32.641 -2020-01-22 07:45:00,128.61,264.947,68.242,32.641 -2020-01-22 08:00:00,135.29,263.547,63.619,32.641 -2020-01-22 08:15:00,132.82,263.91200000000003,63.619,32.641 -2020-01-22 08:30:00,133.56,261.265,63.619,32.641 -2020-01-22 08:45:00,131.49,258.42,63.619,32.641 -2020-01-22 09:00:00,132.7,251.735,61.333,32.641 -2020-01-22 09:15:00,134.67,248.925,61.333,32.641 -2020-01-22 09:30:00,136.96,247.155,61.333,32.641 -2020-01-22 09:45:00,137.72,243.732,61.333,32.641 -2020-01-22 10:00:00,135.4,237.84,59.663000000000004,32.641 -2020-01-22 10:15:00,135.86,234.06,59.663000000000004,32.641 -2020-01-22 10:30:00,135.23,230.037,59.663000000000004,32.641 -2020-01-22 10:45:00,135.61,228.18599999999998,59.663000000000004,32.641 -2020-01-22 11:00:00,134.31,225.054,59.771,32.641 -2020-01-22 11:15:00,134.36,223.733,59.771,32.641 -2020-01-22 11:30:00,133.1,221.829,59.771,32.641 -2020-01-22 11:45:00,129.04,221.201,59.771,32.641 -2020-01-22 12:00:00,125.42,217.24900000000002,58.723,32.641 -2020-01-22 12:15:00,124.01,216.957,58.723,32.641 -2020-01-22 12:30:00,120.56,216.608,58.723,32.641 -2020-01-22 12:45:00,119.44,217.122,58.723,32.641 -2020-01-22 13:00:00,117.85,214.667,58.727,32.641 -2020-01-22 13:15:00,117.79,213.896,58.727,32.641 -2020-01-22 13:30:00,112.65,212.987,58.727,32.641 -2020-01-22 13:45:00,116.56,213.269,58.727,32.641 -2020-01-22 14:00:00,117.4,213.078,59.803999999999995,32.641 -2020-01-22 14:15:00,121.18,213.571,59.803999999999995,32.641 -2020-01-22 14:30:00,122.83,214.44799999999998,59.803999999999995,32.641 -2020-01-22 14:45:00,124.29,215.252,59.803999999999995,32.641 -2020-01-22 15:00:00,121.07,216.226,61.05,32.641 -2020-01-22 15:15:00,118.8,216.98,61.05,32.641 -2020-01-22 15:30:00,120.0,218.66099999999997,61.05,32.641 -2020-01-22 15:45:00,121.57,219.53,61.05,32.641 -2020-01-22 16:00:00,124.33,221.263,64.012,32.641 -2020-01-22 16:15:00,123.18,223.155,64.012,32.641 -2020-01-22 16:30:00,126.48,225.959,64.012,32.641 -2020-01-22 16:45:00,129.37,227.22,64.012,32.641 -2020-01-22 17:00:00,135.39,229.643,66.751,32.641 -2020-01-22 17:15:00,135.01,230.495,66.751,32.641 -2020-01-22 17:30:00,137.03,231.59799999999998,66.751,32.641 -2020-01-22 17:45:00,138.51,231.55200000000002,66.751,32.641 -2020-01-22 18:00:00,137.18,233.358,65.91199999999999,32.641 -2020-01-22 18:15:00,135.84,230.067,65.91199999999999,32.641 -2020-01-22 18:30:00,133.59,229.06,65.91199999999999,32.641 -2020-01-22 18:45:00,134.99,229.49599999999998,65.91199999999999,32.641 -2020-01-22 19:00:00,132.74,227.643,63.324,32.641 -2020-01-22 19:15:00,130.93,223.517,63.324,32.641 -2020-01-22 19:30:00,136.71,220.49200000000002,63.324,32.641 -2020-01-22 19:45:00,135.36,217.517,63.324,32.641 -2020-01-22 20:00:00,124.6,213.267,63.573,32.641 -2020-01-22 20:15:00,117.48,206.424,63.573,32.641 -2020-01-22 20:30:00,112.16,202.15200000000002,63.573,32.641 -2020-01-22 20:45:00,113.32,200.983,63.573,32.641 -2020-01-22 21:00:00,105.36,197.236,55.073,32.641 -2020-01-22 21:15:00,110.61,194.291,55.073,32.641 -2020-01-22 21:30:00,110.22,192.24599999999998,55.073,32.641 -2020-01-22 21:45:00,104.07,190.769,55.073,32.641 -2020-01-22 22:00:00,99.2,183.387,51.321999999999996,32.641 -2020-01-22 22:15:00,94.35,177.542,51.321999999999996,32.641 -2020-01-22 22:30:00,90.06,163.64,51.321999999999996,32.641 -2020-01-22 22:45:00,89.79,155.197,51.321999999999996,32.641 -2020-01-22 23:00:00,82.0,147.72899999999998,42.09,32.641 -2020-01-22 23:15:00,82.55,146.36700000000002,42.09,32.641 -2020-01-22 23:30:00,87.0,146.639,42.09,32.641 -2020-01-22 23:45:00,88.39,146.19899999999998,42.09,32.641 -2020-01-23 00:00:00,83.32,139.778,38.399,32.641 -2020-01-23 00:15:00,78.11,139.42,38.399,32.641 -2020-01-23 00:30:00,80.92,140.849,38.399,32.641 -2020-01-23 00:45:00,83.96,142.593,38.399,32.641 -2020-01-23 01:00:00,80.81,145.619,36.94,32.641 -2020-01-23 01:15:00,75.12,145.533,36.94,32.641 -2020-01-23 01:30:00,75.03,145.861,36.94,32.641 -2020-01-23 01:45:00,72.02,146.297,36.94,32.641 -2020-01-23 02:00:00,77.81,148.651,35.275,32.641 -2020-01-23 02:15:00,79.24,150.75,35.275,32.641 -2020-01-23 02:30:00,80.05,151.886,35.275,32.641 -2020-01-23 02:45:00,75.79,154.06799999999998,35.275,32.641 -2020-01-23 03:00:00,71.98,157.043,35.329,32.641 -2020-01-23 03:15:00,76.32,158.19299999999998,35.329,32.641 -2020-01-23 03:30:00,81.55,160.012,35.329,32.641 -2020-01-23 03:45:00,81.7,162.007,35.329,32.641 -2020-01-23 04:00:00,79.93,173.46,36.275,32.641 -2020-01-23 04:15:00,78.74,184.93900000000002,36.275,32.641 -2020-01-23 04:30:00,85.06,188.732,36.275,32.641 -2020-01-23 04:45:00,87.85,191.82299999999998,36.275,32.641 -2020-01-23 05:00:00,88.57,226.69,42.193999999999996,32.641 -2020-01-23 05:15:00,86.51,254.516,42.193999999999996,32.641 -2020-01-23 05:30:00,89.63,250.215,42.193999999999996,32.641 -2020-01-23 05:45:00,95.12,243.808,42.193999999999996,32.641 -2020-01-23 06:00:00,102.82,240.94299999999998,56.422,32.641 -2020-01-23 06:15:00,109.43,247.16,56.422,32.641 -2020-01-23 06:30:00,111.99,250.392,56.422,32.641 -2020-01-23 06:45:00,117.62,255.642,56.422,32.641 -2020-01-23 07:00:00,125.86,254.014,72.569,32.641 -2020-01-23 07:15:00,132.26,259.78,72.569,32.641 -2020-01-23 07:30:00,134.8,263.07,72.569,32.641 -2020-01-23 07:45:00,132.33,264.827,72.569,32.641 -2020-01-23 08:00:00,134.07,263.414,67.704,32.641 -2020-01-23 08:15:00,132.87,263.758,67.704,32.641 -2020-01-23 08:30:00,136.34,261.065,67.704,32.641 -2020-01-23 08:45:00,132.86,258.20599999999996,67.704,32.641 -2020-01-23 09:00:00,133.61,251.513,63.434,32.641 -2020-01-23 09:15:00,133.41,248.707,63.434,32.641 -2020-01-23 09:30:00,135.43,246.957,63.434,32.641 -2020-01-23 09:45:00,135.05,243.53,63.434,32.641 -2020-01-23 10:00:00,134.75,237.644,61.88399999999999,32.641 -2020-01-23 10:15:00,136.32,233.87900000000002,61.88399999999999,32.641 -2020-01-23 10:30:00,134.68,229.854,61.88399999999999,32.641 -2020-01-23 10:45:00,136.01,228.01,61.88399999999999,32.641 -2020-01-23 11:00:00,136.01,224.862,61.481,32.641 -2020-01-23 11:15:00,134.32,223.547,61.481,32.641 -2020-01-23 11:30:00,130.61,221.64700000000002,61.481,32.641 -2020-01-23 11:45:00,133.98,221.024,61.481,32.641 -2020-01-23 12:00:00,134.51,217.088,59.527,32.641 -2020-01-23 12:15:00,132.67,216.815,59.527,32.641 -2020-01-23 12:30:00,132.94,216.449,59.527,32.641 -2020-01-23 12:45:00,133.32,216.96200000000002,59.527,32.641 -2020-01-23 13:00:00,132.61,214.511,58.794,32.641 -2020-01-23 13:15:00,132.78,213.72099999999998,58.794,32.641 -2020-01-23 13:30:00,128.88,212.799,58.794,32.641 -2020-01-23 13:45:00,128.87,213.078,58.794,32.641 -2020-01-23 14:00:00,127.62,212.922,60.32,32.641 -2020-01-23 14:15:00,129.42,213.40200000000002,60.32,32.641 -2020-01-23 14:30:00,128.31,214.275,60.32,32.641 -2020-01-23 14:45:00,128.39,215.09599999999998,60.32,32.641 -2020-01-23 15:00:00,129.2,216.08700000000002,62.52,32.641 -2020-01-23 15:15:00,128.37,216.81400000000002,62.52,32.641 -2020-01-23 15:30:00,125.84,218.475,62.52,32.641 -2020-01-23 15:45:00,125.84,219.328,62.52,32.641 -2020-01-23 16:00:00,127.22,221.063,64.199,32.641 -2020-01-23 16:15:00,127.3,222.956,64.199,32.641 -2020-01-23 16:30:00,128.99,225.766,64.199,32.641 -2020-01-23 16:45:00,131.38,227.025,64.199,32.641 -2020-01-23 17:00:00,137.71,229.438,68.19800000000001,32.641 -2020-01-23 17:15:00,137.9,230.322,68.19800000000001,32.641 -2020-01-23 17:30:00,140.75,231.459,68.19800000000001,32.641 -2020-01-23 17:45:00,138.94,231.43900000000002,68.19800000000001,32.641 -2020-01-23 18:00:00,139.21,233.265,67.899,32.641 -2020-01-23 18:15:00,140.6,230.005,67.899,32.641 -2020-01-23 18:30:00,135.9,229.002,67.899,32.641 -2020-01-23 18:45:00,134.83,229.46099999999998,67.899,32.641 -2020-01-23 19:00:00,132.4,227.56799999999998,64.72399999999999,32.641 -2020-01-23 19:15:00,130.3,223.447,64.72399999999999,32.641 -2020-01-23 19:30:00,136.27,220.435,64.72399999999999,32.641 -2020-01-23 19:45:00,136.38,217.476,64.72399999999999,32.641 -2020-01-23 20:00:00,124.03,213.202,64.062,32.641 -2020-01-23 20:15:00,118.44,206.364,64.062,32.641 -2020-01-23 20:30:00,114.15,202.092,64.062,32.641 -2020-01-23 20:45:00,111.79,200.937,64.062,32.641 -2020-01-23 21:00:00,107.54,197.17,57.971000000000004,32.641 -2020-01-23 21:15:00,110.3,194.208,57.971000000000004,32.641 -2020-01-23 21:30:00,111.1,192.162,57.971000000000004,32.641 -2020-01-23 21:45:00,106.2,190.703,57.971000000000004,32.641 -2020-01-23 22:00:00,98.72,183.31099999999998,53.715,32.641 -2020-01-23 22:15:00,96.15,177.487,53.715,32.641 -2020-01-23 22:30:00,92.08,163.576,53.715,32.641 -2020-01-23 22:45:00,91.81,155.14,53.715,32.641 -2020-01-23 23:00:00,94.02,147.657,47.8,32.641 -2020-01-23 23:15:00,94.02,146.306,47.8,32.641 -2020-01-23 23:30:00,89.04,146.597,47.8,32.641 -2020-01-23 23:45:00,85.37,146.167,47.8,32.641 -2020-01-24 00:00:00,86.99,138.808,43.656000000000006,32.641 -2020-01-24 00:15:00,84.7,138.631,43.656000000000006,32.641 -2020-01-24 00:30:00,84.43,139.84,43.656000000000006,32.641 -2020-01-24 00:45:00,78.25,141.634,43.656000000000006,32.641 -2020-01-24 01:00:00,78.02,144.345,41.263000000000005,32.641 -2020-01-24 01:15:00,81.93,145.425,41.263000000000005,32.641 -2020-01-24 01:30:00,81.42,145.365,41.263000000000005,32.641 -2020-01-24 01:45:00,76.21,145.961,41.263000000000005,32.641 -2020-01-24 02:00:00,78.49,148.269,40.799,32.641 -2020-01-24 02:15:00,80.51,150.241,40.799,32.641 -2020-01-24 02:30:00,80.14,151.866,40.799,32.641 -2020-01-24 02:45:00,75.42,154.216,40.799,32.641 -2020-01-24 03:00:00,74.46,155.875,41.398,32.641 -2020-01-24 03:15:00,81.27,158.363,41.398,32.641 -2020-01-24 03:30:00,82.2,160.202,41.398,32.641 -2020-01-24 03:45:00,82.59,162.441,41.398,32.641 -2020-01-24 04:00:00,78.55,174.128,42.38,32.641 -2020-01-24 04:15:00,81.62,185.585,42.38,32.641 -2020-01-24 04:30:00,86.32,189.485,42.38,32.641 -2020-01-24 04:45:00,88.91,191.32299999999998,42.38,32.641 -2020-01-24 05:00:00,90.44,224.72799999999998,46.181000000000004,32.641 -2020-01-24 05:15:00,88.25,254.162,46.181000000000004,32.641 -2020-01-24 05:30:00,91.02,251.11,46.181000000000004,32.641 -2020-01-24 05:45:00,95.66,244.72299999999998,46.181000000000004,32.641 -2020-01-24 06:00:00,105.46,242.351,59.33,32.641 -2020-01-24 06:15:00,108.13,246.793,59.33,32.641 -2020-01-24 06:30:00,112.97,249.0,59.33,32.641 -2020-01-24 06:45:00,118.74,256.23400000000004,59.33,32.641 -2020-01-24 07:00:00,125.57,253.513,72.454,32.641 -2020-01-24 07:15:00,127.25,260.314,72.454,32.641 -2020-01-24 07:30:00,132.41,263.71299999999997,72.454,32.641 -2020-01-24 07:45:00,133.17,264.42,72.454,32.641 -2020-01-24 08:00:00,137.53,261.54900000000004,67.175,32.641 -2020-01-24 08:15:00,135.9,261.298,67.175,32.641 -2020-01-24 08:30:00,136.3,259.728,67.175,32.641 -2020-01-24 08:45:00,136.6,255.017,67.175,32.641 -2020-01-24 09:00:00,137.1,249.24099999999999,65.365,32.641 -2020-01-24 09:15:00,138.33,246.803,65.365,32.641 -2020-01-24 09:30:00,139.13,244.678,65.365,32.641 -2020-01-24 09:45:00,139.22,241.058,65.365,32.641 -2020-01-24 10:00:00,138.08,233.864,63.95,32.641 -2020-01-24 10:15:00,138.61,230.97299999999998,63.95,32.641 -2020-01-24 10:30:00,138.28,226.773,63.95,32.641 -2020-01-24 10:45:00,137.57,224.433,63.95,32.641 -2020-01-24 11:00:00,138.32,221.21900000000002,63.92100000000001,32.641 -2020-01-24 11:15:00,138.78,219.02900000000002,63.92100000000001,32.641 -2020-01-24 11:30:00,139.38,219.236,63.92100000000001,32.641 -2020-01-24 11:45:00,138.06,218.825,63.92100000000001,32.641 -2020-01-24 12:00:00,136.09,216.109,60.79600000000001,32.641 -2020-01-24 12:15:00,134.0,213.50099999999998,60.79600000000001,32.641 -2020-01-24 12:30:00,131.28,213.28599999999997,60.79600000000001,32.641 -2020-01-24 12:45:00,132.51,214.524,60.79600000000001,32.641 -2020-01-24 13:00:00,130.47,213.08599999999998,59.393,32.641 -2020-01-24 13:15:00,129.98,213.205,59.393,32.641 -2020-01-24 13:30:00,128.13,212.16400000000002,59.393,32.641 -2020-01-24 13:45:00,128.71,212.31799999999998,59.393,32.641 -2020-01-24 14:00:00,126.8,210.986,57.943999999999996,32.641 -2020-01-24 14:15:00,129.56,211.17700000000002,57.943999999999996,32.641 -2020-01-24 14:30:00,127.19,212.415,57.943999999999996,32.641 -2020-01-24 14:45:00,127.61,213.71200000000002,57.943999999999996,32.641 -2020-01-24 15:00:00,129.17,214.165,60.153999999999996,32.641 -2020-01-24 15:15:00,125.93,214.391,60.153999999999996,32.641 -2020-01-24 15:30:00,127.46,214.347,60.153999999999996,32.641 -2020-01-24 15:45:00,126.28,215.24400000000003,60.153999999999996,32.641 -2020-01-24 16:00:00,127.34,215.765,62.933,32.641 -2020-01-24 16:15:00,126.66,217.925,62.933,32.641 -2020-01-24 16:30:00,128.07,220.878,62.933,32.641 -2020-01-24 16:45:00,131.69,222.109,62.933,32.641 -2020-01-24 17:00:00,137.39,224.52900000000002,68.657,32.641 -2020-01-24 17:15:00,135.66,224.99599999999998,68.657,32.641 -2020-01-24 17:30:00,133.93,225.78099999999998,68.657,32.641 -2020-01-24 17:45:00,135.2,225.53799999999998,68.657,32.641 -2020-01-24 18:00:00,136.43,228.196,67.111,32.641 -2020-01-24 18:15:00,134.39,224.639,67.111,32.641 -2020-01-24 18:30:00,133.68,224.102,67.111,32.641 -2020-01-24 18:45:00,133.53,224.52700000000002,67.111,32.641 -2020-01-24 19:00:00,130.37,223.533,62.434,32.641 -2020-01-24 19:15:00,128.1,220.89700000000002,62.434,32.641 -2020-01-24 19:30:00,130.9,217.423,62.434,32.641 -2020-01-24 19:45:00,136.04,214.078,62.434,32.641 -2020-01-24 20:00:00,125.76,209.85,61.763000000000005,32.641 -2020-01-24 20:15:00,117.6,202.93,61.763000000000005,32.641 -2020-01-24 20:30:00,114.72,198.669,61.763000000000005,32.641 -2020-01-24 20:45:00,110.33,198.265,61.763000000000005,32.641 -2020-01-24 21:00:00,104.51,194.895,56.785,32.641 -2020-01-24 21:15:00,102.91,192.205,56.785,32.641 -2020-01-24 21:30:00,102.15,190.22799999999998,56.785,32.641 -2020-01-24 21:45:00,104.05,189.38099999999997,56.785,32.641 -2020-01-24 22:00:00,99.83,183.11700000000002,52.693000000000005,32.641 -2020-01-24 22:15:00,94.61,177.195,52.693000000000005,32.641 -2020-01-24 22:30:00,89.29,169.947,52.693000000000005,32.641 -2020-01-24 22:45:00,85.86,165.43400000000003,52.693000000000005,32.641 -2020-01-24 23:00:00,82.29,157.219,45.443999999999996,32.641 -2020-01-24 23:15:00,81.42,153.85399999999998,45.443999999999996,32.641 -2020-01-24 23:30:00,80.16,152.725,45.443999999999996,32.641 -2020-01-24 23:45:00,77.47,151.564,45.443999999999996,32.641 -2020-01-25 00:00:00,72.4,135.27200000000002,44.738,32.459 -2020-01-25 00:15:00,71.11,130.214,44.738,32.459 -2020-01-25 00:30:00,72.19,133.029,44.738,32.459 -2020-01-25 00:45:00,70.85,135.756,44.738,32.459 -2020-01-25 01:00:00,71.22,139.132,40.303000000000004,32.459 -2020-01-25 01:15:00,72.27,138.951,40.303000000000004,32.459 -2020-01-25 01:30:00,76.25,138.406,40.303000000000004,32.459 -2020-01-25 01:45:00,75.27,138.54399999999998,40.303000000000004,32.459 -2020-01-25 02:00:00,69.95,141.80200000000002,38.61,32.459 -2020-01-25 02:15:00,68.12,143.468,38.61,32.459 -2020-01-25 02:30:00,65.73,143.929,38.61,32.459 -2020-01-25 02:45:00,65.96,146.268,38.61,32.459 -2020-01-25 03:00:00,64.75,148.87,37.554,32.459 -2020-01-25 03:15:00,65.49,150.054,37.554,32.459 -2020-01-25 03:30:00,64.8,149.96,37.554,32.459 -2020-01-25 03:45:00,65.17,152.093,37.554,32.459 -2020-01-25 04:00:00,64.99,159.15,37.176,32.459 -2020-01-25 04:15:00,65.24,167.739,37.176,32.459 -2020-01-25 04:30:00,65.75,169.365,37.176,32.459 -2020-01-25 04:45:00,66.44,170.56,37.176,32.459 -2020-01-25 05:00:00,66.97,186.34799999999998,36.893,32.459 -2020-01-25 05:15:00,67.29,195.11700000000002,36.893,32.459 -2020-01-25 05:30:00,68.56,192.21200000000002,36.893,32.459 -2020-01-25 05:45:00,69.68,191.523,36.893,32.459 -2020-01-25 06:00:00,69.94,209.548,37.803000000000004,32.459 -2020-01-25 06:15:00,70.69,232.051,37.803000000000004,32.459 -2020-01-25 06:30:00,71.35,228.36900000000003,37.803000000000004,32.459 -2020-01-25 06:45:00,73.5,225.519,37.803000000000004,32.459 -2020-01-25 07:00:00,77.71,218.623,41.086999999999996,32.459 -2020-01-25 07:15:00,78.56,224.142,41.086999999999996,32.459 -2020-01-25 07:30:00,82.94,230.46200000000002,41.086999999999996,32.459 -2020-01-25 07:45:00,84.55,235.69099999999997,41.086999999999996,32.459 -2020-01-25 08:00:00,88.98,237.581,48.222,32.459 -2020-01-25 08:15:00,90.69,241.622,48.222,32.459 -2020-01-25 08:30:00,92.22,241.90599999999998,48.222,32.459 -2020-01-25 08:45:00,95.97,240.745,48.222,32.459 -2020-01-25 09:00:00,98.38,236.59099999999998,52.791000000000004,32.459 -2020-01-25 09:15:00,98.75,234.963,52.791000000000004,32.459 -2020-01-25 09:30:00,99.49,233.83700000000002,52.791000000000004,32.459 -2020-01-25 09:45:00,101.44,230.472,52.791000000000004,32.459 -2020-01-25 10:00:00,102.45,223.484,54.341,32.459 -2020-01-25 10:15:00,103.89,220.745,54.341,32.459 -2020-01-25 10:30:00,102.9,216.793,54.341,32.459 -2020-01-25 10:45:00,104.81,216.046,54.341,32.459 -2020-01-25 11:00:00,103.72,213.127,51.94,32.459 -2020-01-25 11:15:00,105.87,210.00900000000001,51.94,32.459 -2020-01-25 11:30:00,107.38,208.875,51.94,32.459 -2020-01-25 11:45:00,106.98,207.255,51.94,32.459 -2020-01-25 12:00:00,104.05,203.44,50.973,32.459 -2020-01-25 12:15:00,103.31,201.46900000000002,50.973,32.459 -2020-01-25 12:30:00,100.71,201.627,50.973,32.459 -2020-01-25 12:45:00,99.96,201.85299999999998,50.973,32.459 -2020-01-25 13:00:00,97.04,200.072,48.06399999999999,32.459 -2020-01-25 13:15:00,97.34,197.856,48.06399999999999,32.459 -2020-01-25 13:30:00,95.63,196.245,48.06399999999999,32.459 -2020-01-25 13:45:00,94.67,197.16,48.06399999999999,32.459 -2020-01-25 14:00:00,91.46,197.327,45.707,32.459 -2020-01-25 14:15:00,92.11,197.06900000000002,45.707,32.459 -2020-01-25 14:30:00,91.72,196.25,45.707,32.459 -2020-01-25 14:45:00,91.73,197.745,45.707,32.459 -2020-01-25 15:00:00,90.8,198.975,47.567,32.459 -2020-01-25 15:15:00,90.03,200.00599999999997,47.567,32.459 -2020-01-25 15:30:00,89.45,201.695,47.567,32.459 -2020-01-25 15:45:00,88.86,202.729,47.567,32.459 -2020-01-25 16:00:00,90.25,201.65900000000002,52.031000000000006,32.459 -2020-01-25 16:15:00,89.46,204.97400000000002,52.031000000000006,32.459 -2020-01-25 16:30:00,90.4,207.842,52.031000000000006,32.459 -2020-01-25 16:45:00,93.84,210.09400000000002,52.031000000000006,32.459 -2020-01-25 17:00:00,100.62,212.105,58.218999999999994,32.459 -2020-01-25 17:15:00,102.8,214.77700000000002,58.218999999999994,32.459 -2020-01-25 17:30:00,106.7,215.502,58.218999999999994,32.459 -2020-01-25 17:45:00,106.99,214.757,58.218999999999994,32.459 -2020-01-25 18:00:00,107.5,216.775,57.65,32.459 -2020-01-25 18:15:00,107.19,215.09,57.65,32.459 -2020-01-25 18:30:00,109.91,215.905,57.65,32.459 -2020-01-25 18:45:00,105.29,212.97400000000002,57.65,32.459 -2020-01-25 19:00:00,104.0,213.22099999999998,51.261,32.459 -2020-01-25 19:15:00,102.55,210.149,51.261,32.459 -2020-01-25 19:30:00,101.86,207.44799999999998,51.261,32.459 -2020-01-25 19:45:00,102.2,203.72,51.261,32.459 -2020-01-25 20:00:00,94.93,201.78,44.068000000000005,32.459 -2020-01-25 20:15:00,92.01,197.358,44.068000000000005,32.459 -2020-01-25 20:30:00,88.94,192.80700000000002,44.068000000000005,32.459 -2020-01-25 20:45:00,87.29,191.732,44.068000000000005,32.459 -2020-01-25 21:00:00,83.53,191.08,38.861,32.459 -2020-01-25 21:15:00,82.66,188.91299999999998,38.861,32.459 -2020-01-25 21:30:00,80.26,188.308,38.861,32.459 -2020-01-25 21:45:00,80.05,187.084,38.861,32.459 -2020-01-25 22:00:00,77.81,182.33900000000003,39.485,32.459 -2020-01-25 22:15:00,76.34,179.227,39.485,32.459 -2020-01-25 22:30:00,73.65,179.05900000000003,39.485,32.459 -2020-01-25 22:45:00,72.2,176.628,39.485,32.459 -2020-01-25 23:00:00,67.88,171.222,32.027,32.459 -2020-01-25 23:15:00,68.21,165.968,32.027,32.459 -2020-01-25 23:30:00,62.43,162.59,32.027,32.459 -2020-01-25 23:45:00,63.07,158.65,32.027,32.459 -2020-01-26 00:00:00,60.64,135.531,26.96,32.459 -2020-01-26 00:15:00,59.92,130.25799999999998,26.96,32.459 -2020-01-26 00:30:00,59.03,132.641,26.96,32.459 -2020-01-26 00:45:00,58.62,136.18200000000002,26.96,32.459 -2020-01-26 01:00:00,54.93,139.338,24.295,32.459 -2020-01-26 01:15:00,55.99,140.374,24.295,32.459 -2020-01-26 01:30:00,55.67,140.451,24.295,32.459 -2020-01-26 01:45:00,54.2,140.276,24.295,32.459 -2020-01-26 02:00:00,53.39,142.659,24.268,32.459 -2020-01-26 02:15:00,54.08,143.218,24.268,32.459 -2020-01-26 02:30:00,52.98,144.661,24.268,32.459 -2020-01-26 02:45:00,53.02,147.586,24.268,32.459 -2020-01-26 03:00:00,53.08,150.45600000000002,23.373,32.459 -2020-01-26 03:15:00,50.37,150.995,23.373,32.459 -2020-01-26 03:30:00,52.45,152.66,23.373,32.459 -2020-01-26 03:45:00,52.94,154.84,23.373,32.459 -2020-01-26 04:00:00,52.89,161.61,23.874000000000002,32.459 -2020-01-26 04:15:00,53.22,169.06799999999998,23.874000000000002,32.459 -2020-01-26 04:30:00,54.0,170.55700000000002,23.874000000000002,32.459 -2020-01-26 04:45:00,54.34,172.14,23.874000000000002,32.459 -2020-01-26 05:00:00,55.82,183.72400000000002,24.871,32.459 -2020-01-26 05:15:00,56.59,189.75599999999997,24.871,32.459 -2020-01-26 05:30:00,55.44,186.71400000000003,24.871,32.459 -2020-01-26 05:45:00,56.61,186.375,24.871,32.459 -2020-01-26 06:00:00,56.99,204.688,23.84,32.459 -2020-01-26 06:15:00,56.78,225.035,23.84,32.459 -2020-01-26 06:30:00,57.8,220.16099999999997,23.84,32.459 -2020-01-26 06:45:00,58.26,216.248,23.84,32.459 -2020-01-26 07:00:00,61.45,212.21599999999998,27.430999999999997,32.459 -2020-01-26 07:15:00,62.62,216.979,27.430999999999997,32.459 -2020-01-26 07:30:00,64.42,221.612,27.430999999999997,32.459 -2020-01-26 07:45:00,65.23,225.917,27.430999999999997,32.459 -2020-01-26 08:00:00,67.41,229.857,33.891999999999996,32.459 -2020-01-26 08:15:00,70.28,233.58700000000002,33.891999999999996,32.459 -2020-01-26 08:30:00,72.53,235.627,33.891999999999996,32.459 -2020-01-26 08:45:00,74.96,236.83,33.891999999999996,32.459 -2020-01-26 09:00:00,76.29,232.225,37.571,32.459 -2020-01-26 09:15:00,77.45,231.31799999999998,37.571,32.459 -2020-01-26 09:30:00,78.94,229.967,37.571,32.459 -2020-01-26 09:45:00,80.75,226.315,37.571,32.459 -2020-01-26 10:00:00,81.35,222.179,40.594,32.459 -2020-01-26 10:15:00,83.76,220.058,40.594,32.459 -2020-01-26 10:30:00,85.49,216.775,40.594,32.459 -2020-01-26 10:45:00,88.12,213.672,40.594,32.459 -2020-01-26 11:00:00,88.23,211.86900000000003,44.133,32.459 -2020-01-26 11:15:00,92.2,208.975,44.133,32.459 -2020-01-26 11:30:00,92.74,206.762,44.133,32.459 -2020-01-26 11:45:00,93.24,205.81400000000002,44.133,32.459 -2020-01-26 12:00:00,91.73,201.201,41.198,32.459 -2020-01-26 12:15:00,89.36,201.549,41.198,32.459 -2020-01-26 12:30:00,84.83,199.968,41.198,32.459 -2020-01-26 12:45:00,83.74,199.162,41.198,32.459 -2020-01-26 13:00:00,80.41,196.597,37.014,32.459 -2020-01-26 13:15:00,80.17,197.945,37.014,32.459 -2020-01-26 13:30:00,81.07,196.236,37.014,32.459 -2020-01-26 13:45:00,80.59,196.222,37.014,32.459 -2020-01-26 14:00:00,79.11,196.545,34.934,32.459 -2020-01-26 14:15:00,78.6,197.6,34.934,32.459 -2020-01-26 14:30:00,78.67,198.37900000000002,34.934,32.459 -2020-01-26 14:45:00,79.38,199.56599999999997,34.934,32.459 -2020-01-26 15:00:00,79.93,199.014,34.588,32.459 -2020-01-26 15:15:00,78.78,201.0,34.588,32.459 -2020-01-26 15:30:00,78.6,203.368,34.588,32.459 -2020-01-26 15:45:00,77.74,205.146,34.588,32.459 -2020-01-26 16:00:00,80.38,206.40099999999998,37.874,32.459 -2020-01-26 16:15:00,79.54,208.645,37.874,32.459 -2020-01-26 16:30:00,81.49,211.685,37.874,32.459 -2020-01-26 16:45:00,84.68,214.078,37.874,32.459 -2020-01-26 17:00:00,92.75,215.987,47.303999999999995,32.459 -2020-01-26 17:15:00,94.5,218.13099999999997,47.303999999999995,32.459 -2020-01-26 17:30:00,96.47,219.12099999999998,47.303999999999995,32.459 -2020-01-26 17:45:00,98.7,220.93200000000002,47.303999999999995,32.459 -2020-01-26 18:00:00,100.59,222.25099999999998,48.879,32.459 -2020-01-26 18:15:00,99.21,222.146,48.879,32.459 -2020-01-26 18:30:00,99.63,220.636,48.879,32.459 -2020-01-26 18:45:00,98.32,219.80900000000003,48.879,32.459 -2020-01-26 19:00:00,96.9,219.37599999999998,44.826,32.459 -2020-01-26 19:15:00,95.53,217.101,44.826,32.459 -2020-01-26 19:30:00,98.34,214.25599999999997,44.826,32.459 -2020-01-26 19:45:00,100.34,212.222,44.826,32.459 -2020-01-26 20:00:00,98.08,210.243,40.154,32.459 -2020-01-26 20:15:00,89.23,206.959,40.154,32.459 -2020-01-26 20:30:00,88.79,203.717,40.154,32.459 -2020-01-26 20:45:00,85.18,201.489,40.154,32.459 -2020-01-26 21:00:00,83.88,197.894,36.549,32.459 -2020-01-26 21:15:00,90.22,195.03599999999997,36.549,32.459 -2020-01-26 21:30:00,90.09,194.83700000000002,36.549,32.459 -2020-01-26 21:45:00,86.75,193.743,36.549,32.459 -2020-01-26 22:00:00,84.32,187.405,37.663000000000004,32.459 -2020-01-26 22:15:00,87.31,183.648,37.663000000000004,32.459 -2020-01-26 22:30:00,87.15,179.94400000000002,37.663000000000004,32.459 -2020-01-26 22:45:00,85.87,176.705,37.663000000000004,32.459 -2020-01-26 23:00:00,78.89,168.15599999999998,31.945,32.459 -2020-01-26 23:15:00,82.8,164.87,31.945,32.459 -2020-01-26 23:30:00,81.36,162.487,31.945,32.459 -2020-01-26 23:45:00,80.85,159.548,31.945,32.459 -2020-01-27 00:00:00,72.01,140.157,31.533,32.641 -2020-01-27 00:15:00,74.98,138.209,31.533,32.641 -2020-01-27 00:30:00,75.17,140.77700000000002,31.533,32.641 -2020-01-27 00:45:00,73.37,143.741,31.533,32.641 -2020-01-27 01:00:00,65.99,146.861,30.56,32.641 -2020-01-27 01:15:00,72.24,147.267,30.56,32.641 -2020-01-27 01:30:00,72.74,147.346,30.56,32.641 -2020-01-27 01:45:00,73.19,147.313,30.56,32.641 -2020-01-27 02:00:00,68.81,149.619,29.55,32.641 -2020-01-27 02:15:00,72.66,152.05,29.55,32.641 -2020-01-27 02:30:00,73.33,153.86700000000002,29.55,32.641 -2020-01-27 02:45:00,72.31,156.089,29.55,32.641 -2020-01-27 03:00:00,67.49,160.394,27.059,32.641 -2020-01-27 03:15:00,73.56,162.764,27.059,32.641 -2020-01-27 03:30:00,75.02,163.99900000000002,27.059,32.641 -2020-01-27 03:45:00,71.92,165.61599999999999,27.059,32.641 -2020-01-27 04:00:00,66.96,177.02,28.384,32.641 -2020-01-27 04:15:00,68.37,188.86900000000003,28.384,32.641 -2020-01-27 04:30:00,70.66,193.035,28.384,32.641 -2020-01-27 04:45:00,72.68,194.738,28.384,32.641 -2020-01-27 05:00:00,77.25,223.778,35.915,32.641 -2020-01-27 05:15:00,79.29,251.91099999999997,35.915,32.641 -2020-01-27 05:30:00,84.6,249.452,35.915,32.641 -2020-01-27 05:45:00,89.92,242.958,35.915,32.641 -2020-01-27 06:00:00,99.95,241.782,56.18,32.641 -2020-01-27 06:15:00,104.93,246.144,56.18,32.641 -2020-01-27 06:30:00,110.18,250.06400000000002,56.18,32.641 -2020-01-27 06:45:00,113.96,255.674,56.18,32.641 -2020-01-27 07:00:00,121.51,254.377,70.877,32.641 -2020-01-27 07:15:00,123.92,260.205,70.877,32.641 -2020-01-27 07:30:00,123.09,264.038,70.877,32.641 -2020-01-27 07:45:00,125.61,265.228,70.877,32.641 -2020-01-27 08:00:00,127.27,263.626,65.65,32.641 -2020-01-27 08:15:00,127.65,265.01099999999997,65.65,32.641 -2020-01-27 08:30:00,129.37,262.36,65.65,32.641 -2020-01-27 08:45:00,125.27,259.60400000000004,65.65,32.641 -2020-01-27 09:00:00,124.61,253.929,62.037,32.641 -2020-01-27 09:15:00,126.22,249.234,62.037,32.641 -2020-01-27 09:30:00,126.26,246.88,62.037,32.641 -2020-01-27 09:45:00,122.4,243.92700000000002,62.037,32.641 -2020-01-27 10:00:00,124.71,238.52,60.409,32.641 -2020-01-27 10:15:00,124.92,236.058,60.409,32.641 -2020-01-27 10:30:00,126.43,231.824,60.409,32.641 -2020-01-27 10:45:00,127.62,229.86,60.409,32.641 -2020-01-27 11:00:00,128.14,224.88299999999998,60.211999999999996,32.641 -2020-01-27 11:15:00,129.57,224.053,60.211999999999996,32.641 -2020-01-27 11:30:00,130.44,223.34599999999998,60.211999999999996,32.641 -2020-01-27 11:45:00,132.01,221.85299999999998,60.211999999999996,32.641 -2020-01-27 12:00:00,131.87,219.55700000000002,57.733000000000004,32.641 -2020-01-27 12:15:00,130.69,219.908,57.733000000000004,32.641 -2020-01-27 12:30:00,127.99,218.766,57.733000000000004,32.641 -2020-01-27 12:45:00,128.57,219.735,57.733000000000004,32.641 -2020-01-27 13:00:00,127.25,217.735,58.695,32.641 -2020-01-27 13:15:00,127.54,217.582,58.695,32.641 -2020-01-27 13:30:00,126.3,215.213,58.695,32.641 -2020-01-27 13:45:00,124.1,215.097,58.695,32.641 -2020-01-27 14:00:00,120.85,214.834,59.505,32.641 -2020-01-27 14:15:00,122.78,215.037,59.505,32.641 -2020-01-27 14:30:00,121.73,215.206,59.505,32.641 -2020-01-27 14:45:00,122.16,216.058,59.505,32.641 -2020-01-27 15:00:00,122.79,217.581,59.946000000000005,32.641 -2020-01-27 15:15:00,122.37,217.96099999999998,59.946000000000005,32.641 -2020-01-27 15:30:00,120.21,219.23,59.946000000000005,32.641 -2020-01-27 15:45:00,121.58,220.549,59.946000000000005,32.641 -2020-01-27 16:00:00,125.44,221.766,61.766999999999996,32.641 -2020-01-27 16:15:00,124.32,223.122,61.766999999999996,32.641 -2020-01-27 16:30:00,125.38,225.149,61.766999999999996,32.641 -2020-01-27 16:45:00,128.84,226.167,61.766999999999996,32.641 -2020-01-27 17:00:00,134.98,227.94099999999997,67.85600000000001,32.641 -2020-01-27 17:15:00,133.74,228.979,67.85600000000001,32.641 -2020-01-27 17:30:00,134.91,229.42700000000002,67.85600000000001,32.641 -2020-01-27 17:45:00,134.47,229.61,67.85600000000001,32.641 -2020-01-27 18:00:00,134.73,231.514,64.564,32.641 -2020-01-27 18:15:00,131.96,229.16400000000002,64.564,32.641 -2020-01-27 18:30:00,133.73,228.49200000000002,64.564,32.641 -2020-01-27 18:45:00,132.73,228.109,64.564,32.641 -2020-01-27 19:00:00,129.78,225.815,58.536,32.641 -2020-01-27 19:15:00,126.63,222.06799999999998,58.536,32.641 -2020-01-27 19:30:00,126.74,219.84400000000002,58.536,32.641 -2020-01-27 19:45:00,131.0,216.96200000000002,58.536,32.641 -2020-01-27 20:00:00,124.95,212.45,59.888999999999996,32.641 -2020-01-27 20:15:00,116.65,206.18,59.888999999999996,32.641 -2020-01-27 20:30:00,113.27,200.757,59.888999999999996,32.641 -2020-01-27 20:45:00,109.79,200.363,59.888999999999996,32.641 -2020-01-27 21:00:00,104.5,197.43400000000003,52.652,32.641 -2020-01-27 21:15:00,102.34,193.169,52.652,32.641 -2020-01-27 21:30:00,105.41,191.98,52.652,32.641 -2020-01-27 21:45:00,106.02,190.355,52.652,32.641 -2020-01-27 22:00:00,103.67,180.989,46.17,32.641 -2020-01-27 22:15:00,92.1,175.507,46.17,32.641 -2020-01-27 22:30:00,90.73,161.47299999999998,46.17,32.641 -2020-01-27 22:45:00,86.82,152.751,46.17,32.641 -2020-01-27 23:00:00,85.71,145.082,36.281,32.641 -2020-01-27 23:15:00,90.44,145.025,36.281,32.641 -2020-01-27 23:30:00,87.95,145.799,36.281,32.641 -2020-01-27 23:45:00,82.47,145.94,36.281,32.641 -2020-01-28 00:00:00,78.26,139.671,38.821999999999996,32.641 -2020-01-28 00:15:00,75.34,139.238,38.821999999999996,32.641 -2020-01-28 00:30:00,79.52,140.57399999999998,38.821999999999996,32.641 -2020-01-28 00:45:00,82.22,142.25799999999998,38.821999999999996,32.641 -2020-01-28 01:00:00,79.73,145.21200000000002,36.936,32.641 -2020-01-28 01:15:00,76.69,145.066,36.936,32.641 -2020-01-28 01:30:00,75.14,145.361,36.936,32.641 -2020-01-28 01:45:00,76.58,145.766,36.936,32.641 -2020-01-28 02:00:00,79.49,148.15200000000002,34.42,32.641 -2020-01-28 02:15:00,79.78,150.255,34.42,32.641 -2020-01-28 02:30:00,77.63,151.44899999999998,34.42,32.641 -2020-01-28 02:45:00,72.78,153.629,34.42,32.641 -2020-01-28 03:00:00,78.0,156.595,33.585,32.641 -2020-01-28 03:15:00,81.7,157.804,33.585,32.641 -2020-01-28 03:30:00,83.51,159.614,33.585,32.641 -2020-01-28 03:45:00,82.44,161.667,33.585,32.641 -2020-01-28 04:00:00,77.73,173.03900000000002,35.622,32.641 -2020-01-28 04:15:00,84.2,184.46099999999998,35.622,32.641 -2020-01-28 04:30:00,87.03,188.28799999999998,35.622,32.641 -2020-01-28 04:45:00,89.61,191.332,35.622,32.641 -2020-01-28 05:00:00,89.09,226.02,40.599000000000004,32.641 -2020-01-28 05:15:00,87.98,253.782,40.599000000000004,32.641 -2020-01-28 05:30:00,94.26,249.44400000000002,40.599000000000004,32.641 -2020-01-28 05:45:00,98.87,243.109,40.599000000000004,32.641 -2020-01-28 06:00:00,105.04,240.338,55.203,32.641 -2020-01-28 06:15:00,109.62,246.618,55.203,32.641 -2020-01-28 06:30:00,113.28,249.817,55.203,32.641 -2020-01-28 06:45:00,117.53,255.15900000000002,55.203,32.641 -2020-01-28 07:00:00,128.45,253.637,69.029,32.641 -2020-01-28 07:15:00,128.39,259.301,69.029,32.641 -2020-01-28 07:30:00,128.01,262.45099999999996,69.029,32.641 -2020-01-28 07:45:00,129.0,264.04200000000003,69.029,32.641 -2020-01-28 08:00:00,131.4,262.563,65.85300000000001,32.641 -2020-01-28 08:15:00,131.16,262.79400000000004,65.85300000000001,32.641 -2020-01-28 08:30:00,129.91,259.853,65.85300000000001,32.641 -2020-01-28 08:45:00,128.94,256.934,65.85300000000001,32.641 -2020-01-28 09:00:00,130.01,250.21099999999998,61.566,32.641 -2020-01-28 09:15:00,130.06,247.43,61.566,32.641 -2020-01-28 09:30:00,128.11,245.77700000000002,61.566,32.641 -2020-01-28 09:45:00,126.64,242.335,61.566,32.641 -2020-01-28 10:00:00,125.99,236.479,61.244,32.641 -2020-01-28 10:15:00,125.95,232.801,61.244,32.641 -2020-01-28 10:30:00,127.09,228.778,61.244,32.641 -2020-01-28 10:45:00,125.87,226.981,61.244,32.641 -2020-01-28 11:00:00,127.54,223.747,61.16,32.641 -2020-01-28 11:15:00,126.56,222.465,61.16,32.641 -2020-01-28 11:30:00,125.17,220.58599999999998,61.16,32.641 -2020-01-28 11:45:00,127.37,220.002,61.16,32.641 -2020-01-28 12:00:00,124.87,216.142,59.09,32.641 -2020-01-28 12:15:00,123.4,215.963,59.09,32.641 -2020-01-28 12:30:00,122.31,215.505,59.09,32.641 -2020-01-28 12:45:00,119.99,216.01,59.09,32.641 -2020-01-28 13:00:00,117.55,213.6,60.21,32.641 -2020-01-28 13:15:00,119.52,212.706,60.21,32.641 -2020-01-28 13:30:00,119.94,211.708,60.21,32.641 -2020-01-28 13:45:00,117.83,211.977,60.21,32.641 -2020-01-28 14:00:00,115.55,212.02200000000002,60.673,32.641 -2020-01-28 14:15:00,117.18,212.426,60.673,32.641 -2020-01-28 14:30:00,118.0,213.271,60.673,32.641 -2020-01-28 14:45:00,119.26,214.18,60.673,32.641 -2020-01-28 15:00:00,119.6,215.243,62.232,32.641 -2020-01-28 15:15:00,119.97,215.834,62.232,32.641 -2020-01-28 15:30:00,119.48,217.37400000000002,62.232,32.641 -2020-01-28 15:45:00,120.64,218.15,62.232,32.641 -2020-01-28 16:00:00,121.9,219.89,63.611999999999995,32.641 -2020-01-28 16:15:00,122.55,221.785,63.611999999999995,32.641 -2020-01-28 16:30:00,127.29,224.62599999999998,63.611999999999995,32.641 -2020-01-28 16:45:00,127.69,225.864,63.611999999999995,32.641 -2020-01-28 17:00:00,132.53,228.227,70.658,32.641 -2020-01-28 17:15:00,136.01,229.27,70.658,32.641 -2020-01-28 17:30:00,140.13,230.585,70.658,32.641 -2020-01-28 17:45:00,139.21,230.69,70.658,32.641 -2020-01-28 18:00:00,139.49,232.614,68.361,32.641 -2020-01-28 18:15:00,137.64,229.528,68.361,32.641 -2020-01-28 18:30:00,137.81,228.544,68.361,32.641 -2020-01-28 18:45:00,137.16,229.122,68.361,32.641 -2020-01-28 19:00:00,134.44,227.023,62.922,32.641 -2020-01-28 19:15:00,132.06,222.94400000000002,62.922,32.641 -2020-01-28 19:30:00,137.09,220.002,62.922,32.641 -2020-01-28 19:45:00,138.01,217.142,62.922,32.641 -2020-01-28 20:00:00,129.62,212.735,63.251999999999995,32.641 -2020-01-28 20:15:00,119.68,205.938,63.251999999999995,32.641 -2020-01-28 20:30:00,118.14,201.671,63.251999999999995,32.641 -2020-01-28 20:45:00,115.08,200.576,63.251999999999995,32.641 -2020-01-28 21:00:00,112.27,196.71099999999998,54.47,32.641 -2020-01-28 21:15:00,114.93,193.66400000000002,54.47,32.641 -2020-01-28 21:30:00,113.2,191.614,54.47,32.641 -2020-01-28 21:45:00,108.39,190.24,54.47,32.641 -2020-01-28 22:00:00,99.19,182.795,51.12,32.641 -2020-01-28 22:15:00,103.31,177.084,51.12,32.641 -2020-01-28 22:30:00,102.8,163.095,51.12,32.641 -2020-01-28 22:45:00,99.67,154.697,51.12,32.641 -2020-01-28 23:00:00,91.53,147.145,42.156000000000006,32.641 -2020-01-28 23:15:00,92.74,145.862,42.156000000000006,32.641 -2020-01-28 23:30:00,92.86,146.243,42.156000000000006,32.641 -2020-01-28 23:45:00,91.28,145.873,42.156000000000006,32.641 -2020-01-29 00:00:00,85.71,139.624,37.192,32.641 -2020-01-29 00:15:00,85.1,139.17700000000002,37.192,32.641 -2020-01-29 00:30:00,86.49,140.494,37.192,32.641 -2020-01-29 00:45:00,83.22,142.166,37.192,32.641 -2020-01-29 01:00:00,79.05,145.10299999999998,32.24,32.641 -2020-01-29 01:15:00,81.99,144.944,32.24,32.641 -2020-01-29 01:30:00,83.1,145.232,32.24,32.641 -2020-01-29 01:45:00,82.85,145.632,32.24,32.641 -2020-01-29 02:00:00,76.67,148.023,30.34,32.641 -2020-01-29 02:15:00,79.99,150.127,30.34,32.641 -2020-01-29 02:30:00,80.46,151.332,30.34,32.641 -2020-01-29 02:45:00,82.45,153.511,30.34,32.641 -2020-01-29 03:00:00,78.21,156.477,29.129,32.641 -2020-01-29 03:15:00,81.98,157.697,29.129,32.641 -2020-01-29 03:30:00,83.78,159.504,29.129,32.641 -2020-01-29 03:45:00,84.27,161.56799999999998,29.129,32.641 -2020-01-29 04:00:00,79.14,172.926,30.075,32.641 -2020-01-29 04:15:00,81.89,184.338,30.075,32.641 -2020-01-29 04:30:00,86.55,188.173,30.075,32.641 -2020-01-29 04:45:00,86.15,191.208,30.075,32.641 -2020-01-29 05:00:00,85.56,225.864,35.684,32.641 -2020-01-29 05:15:00,86.72,253.618,35.684,32.641 -2020-01-29 05:30:00,89.23,249.269,35.684,32.641 -2020-01-29 05:45:00,94.99,242.946,35.684,32.641 -2020-01-29 06:00:00,105.54,240.192,51.49,32.641 -2020-01-29 06:15:00,109.68,246.484,51.49,32.641 -2020-01-29 06:30:00,113.38,249.673,51.49,32.641 -2020-01-29 06:45:00,116.12,255.03099999999998,51.49,32.641 -2020-01-29 07:00:00,121.07,253.53,68.242,32.641 -2020-01-29 07:15:00,126.34,259.173,68.242,32.641 -2020-01-29 07:30:00,126.89,262.293,68.242,32.641 -2020-01-29 07:45:00,128.53,263.848,68.242,32.641 -2020-01-29 08:00:00,129.79,262.355,63.619,32.641 -2020-01-29 08:15:00,129.69,262.562,63.619,32.641 -2020-01-29 08:30:00,128.46,259.569,63.619,32.641 -2020-01-29 08:45:00,129.7,256.64,63.619,32.641 -2020-01-29 09:00:00,130.75,249.91400000000002,61.333,32.641 -2020-01-29 09:15:00,133.1,247.137,61.333,32.641 -2020-01-29 09:30:00,134.98,245.503,61.333,32.641 -2020-01-29 09:45:00,134.4,242.05900000000003,61.333,32.641 -2020-01-29 10:00:00,132.46,236.209,59.663000000000004,32.641 -2020-01-29 10:15:00,133.39,232.55200000000002,59.663000000000004,32.641 -2020-01-29 10:30:00,133.22,228.53099999999998,59.663000000000004,32.641 -2020-01-29 10:45:00,132.39,226.74400000000003,59.663000000000004,32.641 -2020-01-29 11:00:00,132.31,223.495,59.771,32.641 -2020-01-29 11:15:00,133.12,222.22,59.771,32.641 -2020-01-29 11:30:00,134.86,220.34599999999998,59.771,32.641 -2020-01-29 11:45:00,133.3,219.771,59.771,32.641 -2020-01-29 12:00:00,132.7,215.925,58.723,32.641 -2020-01-29 12:15:00,132.51,215.765,58.723,32.641 -2020-01-29 12:30:00,131.59,215.287,58.723,32.641 -2020-01-29 12:45:00,130.75,215.78900000000002,58.723,32.641 -2020-01-29 13:00:00,129.37,213.39,58.727,32.641 -2020-01-29 13:15:00,129.56,212.47400000000002,58.727,32.641 -2020-01-29 13:30:00,127.85,211.46099999999998,58.727,32.641 -2020-01-29 13:45:00,128.01,211.72799999999998,58.727,32.641 -2020-01-29 14:00:00,127.61,211.81799999999998,59.803999999999995,32.641 -2020-01-29 14:15:00,127.81,212.204,59.803999999999995,32.641 -2020-01-29 14:30:00,127.7,213.043,59.803999999999995,32.641 -2020-01-29 14:45:00,127.4,213.96900000000002,59.803999999999995,32.641 -2020-01-29 15:00:00,128.03,215.045,61.05,32.641 -2020-01-29 15:15:00,127.39,215.608,61.05,32.641 -2020-01-29 15:30:00,128.43,217.12,61.05,32.641 -2020-01-29 15:45:00,124.88,217.88,61.05,32.641 -2020-01-29 16:00:00,126.8,219.623,64.012,32.641 -2020-01-29 16:15:00,126.43,221.516,64.012,32.641 -2020-01-29 16:30:00,130.89,224.363,64.012,32.641 -2020-01-29 16:45:00,131.2,225.593,64.012,32.641 -2020-01-29 17:00:00,135.48,227.94799999999998,66.751,32.641 -2020-01-29 17:15:00,135.19,229.023,66.751,32.641 -2020-01-29 17:30:00,136.26,230.373,66.751,32.641 -2020-01-29 17:45:00,136.97,230.505,66.751,32.641 -2020-01-29 18:00:00,136.56,232.447,65.91199999999999,32.641 -2020-01-29 18:15:00,134.46,229.4,65.91199999999999,32.641 -2020-01-29 18:30:00,136.21,228.42,65.91199999999999,32.641 -2020-01-29 18:45:00,134.51,229.021,65.91199999999999,32.641 -2020-01-29 19:00:00,130.95,226.882,63.324,32.641 -2020-01-29 19:15:00,130.8,222.81099999999998,63.324,32.641 -2020-01-29 19:30:00,128.57,219.885,63.324,32.641 -2020-01-29 19:45:00,133.5,217.047,63.324,32.641 -2020-01-29 20:00:00,127.01,212.614,63.573,32.641 -2020-01-29 20:15:00,117.14,205.825,63.573,32.641 -2020-01-29 20:30:00,114.01,201.562,63.573,32.641 -2020-01-29 20:45:00,109.09,200.477,63.573,32.641 -2020-01-29 21:00:00,107.15,196.59400000000002,55.073,32.641 -2020-01-29 21:15:00,111.75,193.52900000000002,55.073,32.641 -2020-01-29 21:30:00,109.55,191.48,55.073,32.641 -2020-01-29 21:45:00,104.52,190.122,55.073,32.641 -2020-01-29 22:00:00,95.88,182.666,51.321999999999996,32.641 -2020-01-29 22:15:00,96.63,176.979,51.321999999999996,32.641 -2020-01-29 22:30:00,97.76,162.968,51.321999999999996,32.641 -2020-01-29 22:45:00,95.81,154.578,51.321999999999996,32.641 -2020-01-29 23:00:00,89.08,147.014,42.09,32.641 -2020-01-29 23:15:00,83.66,145.744,42.09,32.641 -2020-01-29 23:30:00,86.56,146.143,42.09,32.641 -2020-01-29 23:45:00,88.77,145.786,42.09,32.641 -2020-01-30 00:00:00,82.65,139.567,38.399,32.641 -2020-01-30 00:15:00,78.77,139.108,38.399,32.641 -2020-01-30 00:30:00,76.46,140.406,38.399,32.641 -2020-01-30 00:45:00,81.36,142.06799999999998,38.399,32.641 -2020-01-30 01:00:00,78.58,144.985,36.94,32.641 -2020-01-30 01:15:00,78.21,144.812,36.94,32.641 -2020-01-30 01:30:00,76.11,145.093,36.94,32.641 -2020-01-30 01:45:00,79.6,145.488,36.94,32.641 -2020-01-30 02:00:00,78.45,147.884,35.275,32.641 -2020-01-30 02:15:00,77.62,149.989,35.275,32.641 -2020-01-30 02:30:00,71.61,151.20600000000002,35.275,32.641 -2020-01-30 02:45:00,72.74,153.385,35.275,32.641 -2020-01-30 03:00:00,71.23,156.349,35.329,32.641 -2020-01-30 03:15:00,71.37,157.578,35.329,32.641 -2020-01-30 03:30:00,74.11,159.38299999999998,35.329,32.641 -2020-01-30 03:45:00,80.9,161.459,35.329,32.641 -2020-01-30 04:00:00,82.14,172.805,36.275,32.641 -2020-01-30 04:15:00,83.94,184.206,36.275,32.641 -2020-01-30 04:30:00,79.65,188.05,36.275,32.641 -2020-01-30 04:45:00,79.86,191.074,36.275,32.641 -2020-01-30 05:00:00,84.84,225.699,42.193999999999996,32.641 -2020-01-30 05:15:00,87.97,253.44799999999998,42.193999999999996,32.641 -2020-01-30 05:30:00,91.94,249.08700000000002,42.193999999999996,32.641 -2020-01-30 05:45:00,96.69,242.77599999999998,42.193999999999996,32.641 -2020-01-30 06:00:00,105.79,240.03900000000002,56.422,32.641 -2020-01-30 06:15:00,111.14,246.34400000000002,56.422,32.641 -2020-01-30 06:30:00,115.88,249.519,56.422,32.641 -2020-01-30 06:45:00,119.21,254.891,56.422,32.641 -2020-01-30 07:00:00,127.68,253.41299999999998,72.569,32.641 -2020-01-30 07:15:00,130.37,259.034,72.569,32.641 -2020-01-30 07:30:00,129.83,262.124,72.569,32.641 -2020-01-30 07:45:00,131.25,263.643,72.569,32.641 -2020-01-30 08:00:00,133.61,262.135,67.704,32.641 -2020-01-30 08:15:00,133.19,262.318,67.704,32.641 -2020-01-30 08:30:00,132.87,259.27099999999996,67.704,32.641 -2020-01-30 08:45:00,132.5,256.33299999999997,67.704,32.641 -2020-01-30 09:00:00,132.2,249.60299999999998,63.434,32.641 -2020-01-30 09:15:00,133.4,246.83,63.434,32.641 -2020-01-30 09:30:00,133.88,245.217,63.434,32.641 -2020-01-30 09:45:00,134.13,241.77200000000002,63.434,32.641 -2020-01-30 10:00:00,134.86,235.928,61.88399999999999,32.641 -2020-01-30 10:15:00,134.96,232.292,61.88399999999999,32.641 -2020-01-30 10:30:00,133.39,228.273,61.88399999999999,32.641 -2020-01-30 10:45:00,134.4,226.497,61.88399999999999,32.641 -2020-01-30 11:00:00,133.27,223.232,61.481,32.641 -2020-01-30 11:15:00,134.3,221.965,61.481,32.641 -2020-01-30 11:30:00,136.88,220.09599999999998,61.481,32.641 -2020-01-30 11:45:00,137.03,219.52900000000002,61.481,32.641 -2020-01-30 12:00:00,133.83,215.699,59.527,32.641 -2020-01-30 12:15:00,133.63,215.558,59.527,32.641 -2020-01-30 12:30:00,132.45,215.06,59.527,32.641 -2020-01-30 12:45:00,132.76,215.56,59.527,32.641 -2020-01-30 13:00:00,132.63,213.172,58.794,32.641 -2020-01-30 13:15:00,131.93,212.234,58.794,32.641 -2020-01-30 13:30:00,131.32,211.206,58.794,32.641 -2020-01-30 13:45:00,131.62,211.47099999999998,58.794,32.641 -2020-01-30 14:00:00,130.86,211.605,60.32,32.641 -2020-01-30 14:15:00,130.65,211.976,60.32,32.641 -2020-01-30 14:30:00,129.29,212.80599999999998,60.32,32.641 -2020-01-30 14:45:00,129.11,213.748,60.32,32.641 -2020-01-30 15:00:00,128.71,214.838,62.52,32.641 -2020-01-30 15:15:00,127.59,215.372,62.52,32.641 -2020-01-30 15:30:00,126.25,216.857,62.52,32.641 -2020-01-30 15:45:00,127.28,217.6,62.52,32.641 -2020-01-30 16:00:00,127.19,219.34400000000002,64.199,32.641 -2020-01-30 16:15:00,126.69,221.235,64.199,32.641 -2020-01-30 16:30:00,127.31,224.08700000000002,64.199,32.641 -2020-01-30 16:45:00,129.45,225.31,64.199,32.641 -2020-01-30 17:00:00,133.14,227.657,68.19800000000001,32.641 -2020-01-30 17:15:00,136.81,228.763,68.19800000000001,32.641 -2020-01-30 17:30:00,138.93,230.148,68.19800000000001,32.641 -2020-01-30 17:45:00,139.45,230.30700000000002,68.19800000000001,32.641 -2020-01-30 18:00:00,139.02,232.267,67.899,32.641 -2020-01-30 18:15:00,140.21,229.262,67.899,32.641 -2020-01-30 18:30:00,137.12,228.28400000000002,67.899,32.641 -2020-01-30 18:45:00,137.17,228.91099999999997,67.899,32.641 -2020-01-30 19:00:00,134.6,226.73,64.72399999999999,32.641 -2020-01-30 19:15:00,131.53,222.669,64.72399999999999,32.641 -2020-01-30 19:30:00,136.23,219.75900000000001,64.72399999999999,32.641 -2020-01-30 19:45:00,136.85,216.945,64.72399999999999,32.641 -2020-01-30 20:00:00,129.72,212.484,64.062,32.641 -2020-01-30 20:15:00,119.43,205.704,64.062,32.641 -2020-01-30 20:30:00,117.24,201.445,64.062,32.641 -2020-01-30 20:45:00,114.49,200.37099999999998,64.062,32.641 -2020-01-30 21:00:00,110.45,196.468,57.971000000000004,32.641 -2020-01-30 21:15:00,114.4,193.387,57.971000000000004,32.641 -2020-01-30 21:30:00,113.1,191.33700000000002,57.971000000000004,32.641 -2020-01-30 21:45:00,108.52,189.99599999999998,57.971000000000004,32.641 -2020-01-30 22:00:00,99.82,182.52700000000002,53.715,32.641 -2020-01-30 22:15:00,95.43,176.864,53.715,32.641 -2020-01-30 22:30:00,95.06,162.83100000000002,53.715,32.641 -2020-01-30 22:45:00,97.76,154.44899999999998,53.715,32.641 -2020-01-30 23:00:00,95.28,146.873,47.8,32.641 -2020-01-30 23:15:00,93.83,145.61700000000002,47.8,32.641 -2020-01-30 23:30:00,85.99,146.034,47.8,32.641 -2020-01-30 23:45:00,83.25,145.692,47.8,32.641 -2020-01-31 00:00:00,83.54,138.534,43.656000000000006,32.641 -2020-01-31 00:15:00,86.38,138.262,43.656000000000006,32.641 -2020-01-31 00:30:00,85.86,139.339,43.656000000000006,32.641 -2020-01-31 00:45:00,81.71,141.053,43.656000000000006,32.641 -2020-01-31 01:00:00,75.55,143.645,41.263000000000005,32.641 -2020-01-31 01:15:00,81.11,144.639,41.263000000000005,32.641 -2020-01-31 01:30:00,82.73,144.529,41.263000000000005,32.641 -2020-01-31 01:45:00,83.26,145.086,41.263000000000005,32.641 -2020-01-31 02:00:00,78.12,147.43200000000002,40.799,32.641 -2020-01-31 02:15:00,77.01,149.412,40.799,32.641 -2020-01-31 02:30:00,81.31,151.12,40.799,32.641 -2020-01-31 02:45:00,81.77,153.464,40.799,32.641 -2020-01-31 03:00:00,80.53,155.114,41.398,32.641 -2020-01-31 03:15:00,78.43,157.67700000000002,41.398,32.641 -2020-01-31 03:30:00,83.05,159.502,41.398,32.641 -2020-01-31 03:45:00,85.88,161.82299999999998,41.398,32.641 -2020-01-31 04:00:00,81.83,173.408,42.38,32.641 -2020-01-31 04:15:00,79.91,184.787,42.38,32.641 -2020-01-31 04:30:00,83.03,188.74200000000002,42.38,32.641 -2020-01-31 04:45:00,88.4,190.513,42.38,32.641 -2020-01-31 05:00:00,92.99,223.68099999999998,46.181000000000004,32.641 -2020-01-31 05:15:00,86.2,253.05200000000002,46.181000000000004,32.641 -2020-01-31 05:30:00,87.66,249.93200000000002,46.181000000000004,32.641 -2020-01-31 05:45:00,92.16,243.638,46.181000000000004,32.641 -2020-01-31 06:00:00,100.18,241.388,59.33,32.641 -2020-01-31 06:15:00,103.88,245.922,59.33,32.641 -2020-01-31 06:30:00,107.37,248.06099999999998,59.33,32.641 -2020-01-31 06:45:00,111.97,255.41,59.33,32.641 -2020-01-31 07:00:00,118.81,252.83900000000003,72.454,32.641 -2020-01-31 07:15:00,121.43,259.492,72.454,32.641 -2020-01-31 07:30:00,120.61,262.686,72.454,32.641 -2020-01-31 07:45:00,123.16,263.152,72.454,32.641 -2020-01-31 08:00:00,125.9,260.182,67.175,32.641 -2020-01-31 08:15:00,125.96,259.769,67.175,32.641 -2020-01-31 08:30:00,124.1,257.837,67.175,32.641 -2020-01-31 08:45:00,122.45,253.051,67.175,32.641 -2020-01-31 09:00:00,121.29,247.245,65.365,32.641 -2020-01-31 09:15:00,120.99,244.838,65.365,32.641 -2020-01-31 09:30:00,122.63,242.851,65.365,32.641 -2020-01-31 09:45:00,125.07,239.21400000000003,65.365,32.641 -2020-01-31 10:00:00,125.19,232.065,63.95,32.641 -2020-01-31 10:15:00,123.48,229.30700000000002,63.95,32.641 -2020-01-31 10:30:00,118.43,225.118,63.95,32.641 -2020-01-31 10:45:00,116.42,222.847,63.95,32.641 -2020-01-31 11:00:00,112.88,219.519,63.92100000000001,32.641 -2020-01-31 11:15:00,114.05,217.38099999999997,63.92100000000001,32.641 -2020-01-31 11:30:00,112.59,217.62,63.92100000000001,32.641 -2020-01-31 11:45:00,113.51,217.265,63.92100000000001,32.641 -2020-01-31 12:00:00,110.81,214.657,60.79600000000001,32.641 -2020-01-31 12:15:00,108.51,212.18099999999998,60.79600000000001,32.641 -2020-01-31 12:30:00,110.61,211.828,60.79600000000001,32.641 -2020-01-31 12:45:00,107.4,213.051,60.79600000000001,32.641 -2020-01-31 13:00:00,109.64,211.68400000000003,59.393,32.641 -2020-01-31 13:15:00,114.24,211.65400000000002,59.393,32.641 -2020-01-31 13:30:00,114.13,210.50400000000002,59.393,32.641 -2020-01-31 13:45:00,116.3,210.64700000000002,59.393,32.641 -2020-01-31 14:00:00,114.74,209.613,57.943999999999996,32.641 -2020-01-31 14:15:00,117.45,209.69099999999997,57.943999999999996,32.641 -2020-01-31 14:30:00,113.57,210.88299999999998,57.943999999999996,32.641 -2020-01-31 14:45:00,113.98,212.3,57.943999999999996,32.641 -2020-01-31 15:00:00,114.17,212.85,60.153999999999996,32.641 -2020-01-31 15:15:00,115.31,212.88099999999997,60.153999999999996,32.641 -2020-01-31 15:30:00,115.47,212.65400000000002,60.153999999999996,32.641 -2020-01-31 15:45:00,118.13,213.44,60.153999999999996,32.641 -2020-01-31 16:00:00,117.86,213.96900000000002,62.933,32.641 -2020-01-31 16:15:00,117.65,216.122,62.933,32.641 -2020-01-31 16:30:00,119.13,219.115,62.933,32.641 -2020-01-31 16:45:00,120.48,220.305,62.933,32.641 -2020-01-31 17:00:00,125.21,222.662,68.657,32.641 -2020-01-31 17:15:00,125.41,223.35,68.657,32.641 -2020-01-31 17:30:00,129.61,224.38299999999998,68.657,32.641 -2020-01-31 17:45:00,127.16,224.322,68.657,32.641 -2020-01-31 18:00:00,127.56,227.113,67.111,32.641 -2020-01-31 18:15:00,125.29,223.821,67.111,32.641 -2020-01-31 18:30:00,125.6,223.31,67.111,32.641 -2020-01-31 18:45:00,124.45,223.90200000000002,67.111,32.641 -2020-01-31 19:00:00,121.9,222.61900000000003,62.434,32.641 -2020-01-31 19:15:00,121.13,220.045,62.434,32.641 -2020-01-31 19:30:00,123.82,216.67700000000002,62.434,32.641 -2020-01-31 19:45:00,118.48,213.486,62.434,32.641 -2020-01-31 20:00:00,112.24,209.06799999999998,61.763000000000005,32.641 -2020-01-31 20:15:00,106.36,202.207,61.763000000000005,32.641 -2020-01-31 20:30:00,103.04,197.96599999999998,61.763000000000005,32.641 -2020-01-31 20:45:00,102.41,197.637,61.763000000000005,32.641 -2020-01-31 21:00:00,97.4,194.132,56.785,32.641 -2020-01-31 21:15:00,102.69,191.324,56.785,32.641 -2020-01-31 21:30:00,101.42,189.345,56.785,32.641 -2020-01-31 21:45:00,97.23,188.61700000000002,56.785,32.641 -2020-01-31 22:00:00,90.73,182.27200000000002,52.693000000000005,32.641 -2020-01-31 22:15:00,85.64,176.511,52.693000000000005,32.641 -2020-01-31 22:30:00,87.1,169.132,52.693000000000005,32.641 -2020-01-31 22:45:00,89.23,164.673,52.693000000000005,32.641 -2020-01-31 23:00:00,85.55,156.369,45.443999999999996,32.641 -2020-01-31 23:15:00,83.18,153.1,45.443999999999996,32.641 -2020-01-31 23:30:00,79.02,152.094,45.443999999999996,32.641 -2020-01-31 23:45:00,83.75,151.02700000000002,45.443999999999996,32.641 -2020-02-01 00:00:00,76.71,129.81,42.033,32.431999999999995 -2020-02-01 00:15:00,73.23,124.75399999999999,42.033,32.431999999999995 -2020-02-01 00:30:00,70.83,127.20700000000001,42.033,32.431999999999995 -2020-02-01 00:45:00,74.17,129.618,42.033,32.431999999999995 -2020-02-01 01:00:00,71.69,132.734,38.255,32.431999999999995 -2020-02-01 01:15:00,71.85,132.577,38.255,32.431999999999995 -2020-02-01 01:30:00,67.13,132.036,38.255,32.431999999999995 -2020-02-01 01:45:00,71.17,132.134,38.255,32.431999999999995 -2020-02-01 02:00:00,69.97,135.287,36.404,32.431999999999995 -2020-02-01 02:15:00,69.51,136.813,36.404,32.431999999999995 -2020-02-01 02:30:00,67.27,137.26,36.404,32.431999999999995 -2020-02-01 02:45:00,73.49,139.49,36.404,32.431999999999995 -2020-02-01 03:00:00,69.19,141.94,36.083,32.431999999999995 -2020-02-01 03:15:00,67.7,143.183,36.083,32.431999999999995 -2020-02-01 03:30:00,62.05,143.143,36.083,32.431999999999995 -2020-02-01 03:45:00,63.49,145.23,36.083,32.431999999999995 -2020-02-01 04:00:00,67.97,152.216,36.102,32.431999999999995 -2020-02-01 04:15:00,68.64,160.666,36.102,32.431999999999995 -2020-02-01 04:30:00,65.01,162.115,36.102,32.431999999999995 -2020-02-01 04:45:00,63.87,163.159,36.102,32.431999999999995 -2020-02-01 05:00:00,64.66,178.486,35.284,32.431999999999995 -2020-02-01 05:15:00,65.5,187.328,35.284,32.431999999999995 -2020-02-01 05:30:00,65.69,184.41,35.284,32.431999999999995 -2020-02-01 05:45:00,67.86,183.62,35.284,32.431999999999995 -2020-02-01 06:00:00,69.24,201.104,36.265,32.431999999999995 -2020-02-01 06:15:00,71.37,222.93900000000002,36.265,32.431999999999995 -2020-02-01 06:30:00,71.93,219.313,36.265,32.431999999999995 -2020-02-01 06:45:00,74.95,216.52599999999998,36.265,32.431999999999995 -2020-02-01 07:00:00,78.52,210.303,40.714,32.431999999999995 -2020-02-01 07:15:00,80.13,215.368,40.714,32.431999999999995 -2020-02-01 07:30:00,82.2,221.09,40.714,32.431999999999995 -2020-02-01 07:45:00,85.69,225.72099999999998,40.714,32.431999999999995 -2020-02-01 08:00:00,91.13,227.44099999999997,46.692,32.431999999999995 -2020-02-01 08:15:00,91.12,231.018,46.692,32.431999999999995 -2020-02-01 08:30:00,92.79,230.90099999999998,46.692,32.431999999999995 -2020-02-01 08:45:00,94.88,229.52900000000002,46.692,32.431999999999995 -2020-02-01 09:00:00,97.7,225.294,48.925,32.431999999999995 -2020-02-01 09:15:00,97.76,223.685,48.925,32.431999999999995 -2020-02-01 09:30:00,98.69,222.65200000000002,48.925,32.431999999999995 -2020-02-01 09:45:00,101.05,219.40099999999998,48.925,32.431999999999995 -2020-02-01 10:00:00,101.31,212.862,47.799,32.431999999999995 -2020-02-01 10:15:00,101.73,210.19,47.799,32.431999999999995 -2020-02-01 10:30:00,101.39,206.543,47.799,32.431999999999995 -2020-02-01 10:45:00,106.31,205.921,47.799,32.431999999999995 -2020-02-01 11:00:00,103.02,203.19299999999998,44.309,32.431999999999995 -2020-02-01 11:15:00,103.3,200.252,44.309,32.431999999999995 -2020-02-01 11:30:00,108.4,199.29,44.309,32.431999999999995 -2020-02-01 11:45:00,112.35,197.61900000000003,44.309,32.431999999999995 -2020-02-01 12:00:00,105.64,193.695,42.367,32.431999999999995 -2020-02-01 12:15:00,104.87,191.93599999999998,42.367,32.431999999999995 -2020-02-01 12:30:00,102.75,191.995,42.367,32.431999999999995 -2020-02-01 12:45:00,101.19,192.31900000000002,42.367,32.431999999999995 -2020-02-01 13:00:00,98.77,190.88400000000001,39.036,32.431999999999995 -2020-02-01 13:15:00,102.03,188.609,39.036,32.431999999999995 -2020-02-01 13:30:00,97.87,187.08700000000002,39.036,32.431999999999995 -2020-02-01 13:45:00,97.89,187.785,39.036,32.431999999999995 -2020-02-01 14:00:00,95.54,188.062,37.995,32.431999999999995 -2020-02-01 14:15:00,95.43,187.68599999999998,37.995,32.431999999999995 -2020-02-01 14:30:00,94.24,186.92700000000002,37.995,32.431999999999995 -2020-02-01 14:45:00,95.58,188.394,37.995,32.431999999999995 -2020-02-01 15:00:00,95.01,189.855,40.71,32.431999999999995 -2020-02-01 15:15:00,94.99,190.50799999999998,40.71,32.431999999999995 -2020-02-01 15:30:00,93.2,192.142,40.71,32.431999999999995 -2020-02-01 15:45:00,93.06,193.253,40.71,32.431999999999995 -2020-02-01 16:00:00,95.23,191.983,46.998000000000005,32.431999999999995 -2020-02-01 16:15:00,95.22,195.12099999999998,46.998000000000005,32.431999999999995 -2020-02-01 16:30:00,97.78,198.024,46.998000000000005,32.431999999999995 -2020-02-01 16:45:00,99.14,200.262,46.998000000000005,32.431999999999995 -2020-02-01 17:00:00,105.82,202.077,55.431000000000004,32.431999999999995 -2020-02-01 17:15:00,106.49,204.93599999999998,55.431000000000004,32.431999999999995 -2020-02-01 17:30:00,107.67,205.97799999999998,55.431000000000004,32.431999999999995 -2020-02-01 17:45:00,109.78,205.5,55.431000000000004,32.431999999999995 -2020-02-01 18:00:00,112.26,207.61599999999999,55.989,32.431999999999995 -2020-02-01 18:15:00,110.96,206.43400000000003,55.989,32.431999999999995 -2020-02-01 18:30:00,109.62,207.187,55.989,32.431999999999995 -2020-02-01 18:45:00,108.33,204.48,55.989,32.431999999999995 -2020-02-01 19:00:00,106.53,204.679,50.882,32.431999999999995 -2020-02-01 19:15:00,105.46,201.778,50.882,32.431999999999995 -2020-02-01 19:30:00,104.21,199.399,50.882,32.431999999999995 -2020-02-01 19:45:00,102.98,195.791,50.882,32.431999999999995 -2020-02-01 20:00:00,97.91,193.72299999999998,43.172,32.431999999999995 -2020-02-01 20:15:00,94.51,189.55700000000002,43.172,32.431999999999995 -2020-02-01 20:30:00,91.8,185.125,43.172,32.431999999999995 -2020-02-01 20:45:00,90.04,184.016,43.172,32.431999999999995 -2020-02-01 21:00:00,84.99,183.33900000000003,37.599000000000004,32.431999999999995 -2020-02-01 21:15:00,84.93,181.149,37.599000000000004,32.431999999999995 -2020-02-01 21:30:00,83.67,180.52,37.599000000000004,32.431999999999995 -2020-02-01 21:45:00,82.32,179.476,37.599000000000004,32.431999999999995 -2020-02-01 22:00:00,78.77,174.79,39.047,32.431999999999995 -2020-02-01 22:15:00,79.21,171.956,39.047,32.431999999999995 -2020-02-01 22:30:00,75.78,171.52200000000002,39.047,32.431999999999995 -2020-02-01 22:45:00,74.58,169.205,39.047,32.431999999999995 -2020-02-01 23:00:00,71.15,163.97299999999998,32.339,32.431999999999995 -2020-02-01 23:15:00,70.35,158.893,32.339,32.431999999999995 -2020-02-01 23:30:00,67.66,155.857,32.339,32.431999999999995 -2020-02-01 23:45:00,67.11,152.153,32.339,32.431999999999995 -2020-02-02 00:00:00,63.53,130.029,29.988000000000003,32.431999999999995 -2020-02-02 00:15:00,63.8,124.745,29.988000000000003,32.431999999999995 -2020-02-02 00:30:00,62.55,126.78,29.988000000000003,32.431999999999995 -2020-02-02 00:45:00,61.0,129.969,29.988000000000003,32.431999999999995 -2020-02-02 01:00:00,57.82,132.872,28.531999999999996,32.431999999999995 -2020-02-02 01:15:00,58.55,133.874,28.531999999999996,32.431999999999995 -2020-02-02 01:30:00,58.11,133.923,28.531999999999996,32.431999999999995 -2020-02-02 01:45:00,57.64,133.714,28.531999999999996,32.431999999999995 -2020-02-02 02:00:00,55.93,136.03,27.805999999999997,32.431999999999995 -2020-02-02 02:15:00,56.4,136.515,27.805999999999997,32.431999999999995 -2020-02-02 02:30:00,55.63,137.906,27.805999999999997,32.431999999999995 -2020-02-02 02:45:00,55.85,140.687,27.805999999999997,32.431999999999995 -2020-02-02 03:00:00,54.61,143.411,26.193,32.431999999999995 -2020-02-02 03:15:00,55.42,144.041,26.193,32.431999999999995 -2020-02-02 03:30:00,55.76,145.66,26.193,32.431999999999995 -2020-02-02 03:45:00,55.94,147.775,26.193,32.431999999999995 -2020-02-02 04:00:00,55.92,154.489,27.19,32.431999999999995 -2020-02-02 04:15:00,57.67,161.849,27.19,32.431999999999995 -2020-02-02 04:30:00,57.96,163.20600000000002,27.19,32.431999999999995 -2020-02-02 04:45:00,58.08,164.608,27.19,32.431999999999995 -2020-02-02 05:00:00,58.81,175.93599999999998,28.166999999999998,32.431999999999995 -2020-02-02 05:15:00,60.25,182.16099999999997,28.166999999999998,32.431999999999995 -2020-02-02 05:30:00,60.89,179.095,28.166999999999998,32.431999999999995 -2020-02-02 05:45:00,61.68,178.62599999999998,28.166999999999998,32.431999999999995 -2020-02-02 06:00:00,62.19,196.321,27.16,32.431999999999995 -2020-02-02 06:15:00,62.48,216.12400000000002,27.16,32.431999999999995 -2020-02-02 06:30:00,63.17,211.331,27.16,32.431999999999995 -2020-02-02 06:45:00,64.8,207.49599999999998,27.16,32.431999999999995 -2020-02-02 07:00:00,68.38,204.016,29.578000000000003,32.431999999999995 -2020-02-02 07:15:00,68.86,208.31099999999998,29.578000000000003,32.431999999999995 -2020-02-02 07:30:00,69.25,212.454,29.578000000000003,32.431999999999995 -2020-02-02 07:45:00,71.7,216.199,29.578000000000003,32.431999999999995 -2020-02-02 08:00:00,76.25,219.887,34.650999999999996,32.431999999999995 -2020-02-02 08:15:00,77.74,223.195,34.650999999999996,32.431999999999995 -2020-02-02 08:30:00,79.71,224.77,34.650999999999996,32.431999999999995 -2020-02-02 08:45:00,79.84,225.657,34.650999999999996,32.431999999999995 -2020-02-02 09:00:00,84.28,220.99099999999999,38.080999999999996,32.431999999999995 -2020-02-02 09:15:00,85.13,220.058,38.080999999999996,32.431999999999995 -2020-02-02 09:30:00,86.37,218.822,38.080999999999996,32.431999999999995 -2020-02-02 09:45:00,88.68,215.322,38.080999999999996,32.431999999999995 -2020-02-02 10:00:00,88.73,211.52200000000002,39.934,32.431999999999995 -2020-02-02 10:15:00,89.78,209.44799999999998,39.934,32.431999999999995 -2020-02-02 10:30:00,92.29,206.45,39.934,32.431999999999995 -2020-02-02 10:45:00,94.48,203.609,39.934,32.431999999999995 -2020-02-02 11:00:00,96.74,201.93599999999998,43.74100000000001,32.431999999999995 -2020-02-02 11:15:00,100.32,199.2,43.74100000000001,32.431999999999995 -2020-02-02 11:30:00,102.7,197.222,43.74100000000001,32.431999999999995 -2020-02-02 11:45:00,103.15,196.201,43.74100000000001,32.431999999999995 -2020-02-02 12:00:00,99.58,191.542,40.001999999999995,32.431999999999995 -2020-02-02 12:15:00,98.64,191.982,40.001999999999995,32.431999999999995 -2020-02-02 12:30:00,95.5,190.382,40.001999999999995,32.431999999999995 -2020-02-02 12:45:00,93.0,189.704,40.001999999999995,32.431999999999995 -2020-02-02 13:00:00,90.71,187.521,37.855,32.431999999999995 -2020-02-02 13:15:00,89.28,188.63099999999997,37.855,32.431999999999995 -2020-02-02 13:30:00,87.1,186.988,37.855,32.431999999999995 -2020-02-02 13:45:00,86.01,186.828,37.855,32.431999999999995 -2020-02-02 14:00:00,84.14,187.291,35.946999999999996,32.431999999999995 -2020-02-02 14:15:00,84.33,188.176,35.946999999999996,32.431999999999995 -2020-02-02 14:30:00,83.61,188.908,35.946999999999996,32.431999999999995 -2020-02-02 14:45:00,84.39,190.054,35.946999999999996,32.431999999999995 -2020-02-02 15:00:00,84.93,189.815,35.138000000000005,32.431999999999995 -2020-02-02 15:15:00,84.41,191.359,35.138000000000005,32.431999999999995 -2020-02-02 15:30:00,83.67,193.63299999999998,35.138000000000005,32.431999999999995 -2020-02-02 15:45:00,83.84,195.46,35.138000000000005,32.431999999999995 -2020-02-02 16:00:00,85.14,196.38099999999997,38.672,32.431999999999995 -2020-02-02 16:15:00,85.03,198.49599999999998,38.672,32.431999999999995 -2020-02-02 16:30:00,86.66,201.58599999999998,38.672,32.431999999999995 -2020-02-02 16:45:00,89.42,203.954,38.672,32.431999999999995 -2020-02-02 17:00:00,94.56,205.68900000000002,48.684,32.431999999999995 -2020-02-02 17:15:00,97.47,208.07299999999998,48.684,32.431999999999995 -2020-02-02 17:30:00,99.16,209.385,48.684,32.431999999999995 -2020-02-02 17:45:00,100.99,211.365,48.684,32.431999999999995 -2020-02-02 18:00:00,105.14,212.826,51.568999999999996,32.431999999999995 -2020-02-02 18:15:00,103.39,213.162,51.568999999999996,32.431999999999995 -2020-02-02 18:30:00,106.37,211.679,51.568999999999996,32.431999999999995 -2020-02-02 18:45:00,102.89,210.99400000000003,51.568999999999996,32.431999999999995 -2020-02-02 19:00:00,101.38,210.583,48.608000000000004,32.431999999999995 -2020-02-02 19:15:00,99.21,208.429,48.608000000000004,32.431999999999995 -2020-02-02 19:30:00,98.13,205.91099999999997,48.608000000000004,32.431999999999995 -2020-02-02 19:45:00,98.79,203.928,48.608000000000004,32.431999999999995 -2020-02-02 20:00:00,93.72,201.81799999999998,43.733999999999995,32.431999999999995 -2020-02-02 20:15:00,91.94,198.74400000000003,43.733999999999995,32.431999999999995 -2020-02-02 20:30:00,90.61,195.58700000000002,43.733999999999995,32.431999999999995 -2020-02-02 20:45:00,89.18,193.338,43.733999999999995,32.431999999999995 -2020-02-02 21:00:00,86.51,189.835,39.283,32.431999999999995 -2020-02-02 21:15:00,86.22,186.979,39.283,32.431999999999995 -2020-02-02 21:30:00,86.04,186.727,39.283,32.431999999999995 -2020-02-02 21:45:00,87.9,185.815,39.283,32.431999999999995 -2020-02-02 22:00:00,84.32,179.638,40.111,32.431999999999995 -2020-02-02 22:15:00,85.45,176.153,40.111,32.431999999999995 -2020-02-02 22:30:00,83.23,172.30900000000003,40.111,32.431999999999995 -2020-02-02 22:45:00,82.39,169.19,40.111,32.431999999999995 -2020-02-02 23:00:00,78.06,160.942,35.791,32.431999999999995 -2020-02-02 23:15:00,78.99,157.774,35.791,32.431999999999995 -2020-02-02 23:30:00,76.63,155.68200000000002,35.791,32.431999999999995 -2020-02-02 23:45:00,77.09,152.945,35.791,32.431999999999995 -2020-02-03 00:00:00,72.55,134.424,34.311,32.613 -2020-02-03 00:15:00,73.3,132.341,34.311,32.613 -2020-02-03 00:30:00,72.72,134.543,34.311,32.613 -2020-02-03 00:45:00,71.94,137.173,34.311,32.613 -2020-02-03 01:00:00,69.66,140.04,34.585,32.613 -2020-02-03 01:15:00,70.92,140.44,34.585,32.613 -2020-02-03 01:30:00,70.34,140.496,34.585,32.613 -2020-02-03 01:45:00,70.86,140.424,34.585,32.613 -2020-02-03 02:00:00,69.94,142.671,34.111,32.613 -2020-02-03 02:15:00,71.57,144.918,34.111,32.613 -2020-02-03 02:30:00,70.86,146.672,34.111,32.613 -2020-02-03 02:45:00,72.17,148.778,34.111,32.613 -2020-02-03 03:00:00,71.64,152.88299999999998,32.435,32.613 -2020-02-03 03:15:00,71.9,155.274,32.435,32.613 -2020-02-03 03:30:00,73.09,156.496,32.435,32.613 -2020-02-03 03:45:00,73.72,158.063,32.435,32.613 -2020-02-03 04:00:00,74.52,169.278,33.04,32.613 -2020-02-03 04:15:00,75.25,180.90200000000002,33.04,32.613 -2020-02-03 04:30:00,76.93,184.803,33.04,32.613 -2020-02-03 04:45:00,80.1,186.326,33.04,32.613 -2020-02-03 05:00:00,83.89,214.47799999999998,40.399,32.613 -2020-02-03 05:15:00,86.25,242.049,40.399,32.613 -2020-02-03 05:30:00,91.33,239.489,40.399,32.613 -2020-02-03 05:45:00,95.99,233.071,40.399,32.613 -2020-02-03 06:00:00,104.74,231.924,60.226000000000006,32.613 -2020-02-03 06:15:00,110.75,236.253,60.226000000000006,32.613 -2020-02-03 06:30:00,114.63,239.93900000000002,60.226000000000006,32.613 -2020-02-03 06:45:00,119.48,245.31099999999998,60.226000000000006,32.613 -2020-02-03 07:00:00,129.14,244.451,73.578,32.613 -2020-02-03 07:15:00,130.05,249.81900000000002,73.578,32.613 -2020-02-03 07:30:00,129.17,253.173,73.578,32.613 -2020-02-03 07:45:00,130.1,253.949,73.578,32.613 -2020-02-03 08:00:00,135.43,252.31099999999998,66.58,32.613 -2020-02-03 08:15:00,135.0,253.35,66.58,32.613 -2020-02-03 08:30:00,134.72,250.42,66.58,32.613 -2020-02-03 08:45:00,136.03,247.53799999999998,66.58,32.613 -2020-02-03 09:00:00,138.01,241.83900000000003,62.0,32.613 -2020-02-03 09:15:00,139.79,237.245,62.0,32.613 -2020-02-03 09:30:00,141.36,235.02900000000002,62.0,32.613 -2020-02-03 09:45:00,139.59,232.144,62.0,32.613 -2020-02-03 10:00:00,138.43,227.13400000000001,59.099,32.613 -2020-02-03 10:15:00,138.67,224.736,59.099,32.613 -2020-02-03 10:30:00,137.73,220.82299999999998,59.099,32.613 -2020-02-03 10:45:00,137.82,219.03,59.099,32.613 -2020-02-03 11:00:00,138.07,214.34599999999998,57.729,32.613 -2020-02-03 11:15:00,139.42,213.59,57.729,32.613 -2020-02-03 11:30:00,139.86,213.06599999999997,57.729,32.613 -2020-02-03 11:45:00,140.03,211.54,57.729,32.613 -2020-02-03 12:00:00,139.07,209.048,55.615,32.613 -2020-02-03 12:15:00,138.54,209.49200000000002,55.615,32.613 -2020-02-03 12:30:00,136.96,208.28099999999998,55.615,32.613 -2020-02-03 12:45:00,137.41,209.297,55.615,32.613 -2020-02-03 13:00:00,134.33,207.68,56.515,32.613 -2020-02-03 13:15:00,132.51,207.333,56.515,32.613 -2020-02-03 13:30:00,130.0,205.06400000000002,56.515,32.613 -2020-02-03 13:45:00,128.89,204.83,56.515,32.613 -2020-02-03 14:00:00,128.86,204.725,58.1,32.613 -2020-02-03 14:15:00,127.42,204.808,58.1,32.613 -2020-02-03 14:30:00,127.1,204.94799999999998,58.1,32.613 -2020-02-03 14:45:00,128.03,205.826,58.1,32.613 -2020-02-03 15:00:00,129.69,207.56599999999997,59.801,32.613 -2020-02-03 15:15:00,135.62,207.56099999999998,59.801,32.613 -2020-02-03 15:30:00,130.78,208.795,59.801,32.613 -2020-02-03 15:45:00,132.56,210.171,59.801,32.613 -2020-02-03 16:00:00,130.0,211.095,62.901,32.613 -2020-02-03 16:15:00,128.75,212.358,62.901,32.613 -2020-02-03 16:30:00,126.25,214.46200000000002,62.901,32.613 -2020-02-03 16:45:00,126.93,215.51,62.901,32.613 -2020-02-03 17:00:00,132.31,217.107,70.418,32.613 -2020-02-03 17:15:00,134.91,218.438,70.418,32.613 -2020-02-03 17:30:00,139.16,219.222,70.418,32.613 -2020-02-03 17:45:00,137.81,219.636,70.418,32.613 -2020-02-03 18:00:00,140.89,221.644,71.726,32.613 -2020-02-03 18:15:00,138.81,219.799,71.726,32.613 -2020-02-03 18:30:00,142.27,219.105,71.726,32.613 -2020-02-03 18:45:00,138.78,218.90900000000002,71.726,32.613 -2020-02-03 19:00:00,137.55,216.71,65.997,32.613 -2020-02-03 19:15:00,133.6,213.172,65.997,32.613 -2020-02-03 19:30:00,132.16,211.24599999999998,65.997,32.613 -2020-02-03 19:45:00,130.1,208.445,65.997,32.613 -2020-02-03 20:00:00,123.56,203.873,68.09100000000001,32.613 -2020-02-03 20:15:00,121.51,197.967,68.09100000000001,32.613 -2020-02-03 20:30:00,117.5,192.733,68.09100000000001,32.613 -2020-02-03 20:45:00,116.06,192.24400000000003,68.09100000000001,32.613 -2020-02-03 21:00:00,112.08,189.36900000000003,59.617,32.613 -2020-02-03 21:15:00,119.36,185.173,59.617,32.613 -2020-02-03 21:30:00,115.51,183.97799999999998,59.617,32.613 -2020-02-03 21:45:00,112.17,182.554,59.617,32.613 -2020-02-03 22:00:00,102.03,173.428,54.938,32.613 -2020-02-03 22:15:00,101.13,168.33,54.938,32.613 -2020-02-03 22:30:00,103.23,154.47899999999998,54.938,32.613 -2020-02-03 22:45:00,102.28,146.101,54.938,32.613 -2020-02-03 23:00:00,97.78,138.697,47.43,32.613 -2020-02-03 23:15:00,93.27,138.597,47.43,32.613 -2020-02-03 23:30:00,87.74,139.533,47.43,32.613 -2020-02-03 23:45:00,93.42,139.745,47.43,32.613 -2020-02-04 00:00:00,90.86,133.845,48.354,32.613 -2020-02-04 00:15:00,91.14,133.235,48.354,32.613 -2020-02-04 00:30:00,85.35,134.276,48.354,32.613 -2020-02-04 00:45:00,87.43,135.703,48.354,32.613 -2020-02-04 01:00:00,85.05,138.391,45.68600000000001,32.613 -2020-02-04 01:15:00,86.31,138.264,45.68600000000001,32.613 -2020-02-04 01:30:00,82.43,138.523,45.68600000000001,32.613 -2020-02-04 01:45:00,87.86,138.858,45.68600000000001,32.613 -2020-02-04 02:00:00,86.41,141.167,44.269,32.613 -2020-02-04 02:15:00,87.36,143.13,44.269,32.613 -2020-02-04 02:30:00,82.98,144.28,44.269,32.613 -2020-02-04 02:45:00,87.34,146.35399999999998,44.269,32.613 -2020-02-04 03:00:00,85.37,149.16899999999998,44.187,32.613 -2020-02-04 03:15:00,87.11,150.472,44.187,32.613 -2020-02-04 03:30:00,84.96,152.24200000000002,44.187,32.613 -2020-02-04 03:45:00,83.22,154.197,44.187,32.613 -2020-02-04 04:00:00,82.45,165.356,46.126999999999995,32.613 -2020-02-04 04:15:00,83.66,176.574,46.126999999999995,32.613 -2020-02-04 04:30:00,85.46,180.15099999999998,46.126999999999995,32.613 -2020-02-04 04:45:00,87.52,182.96599999999998,46.126999999999995,32.613 -2020-02-04 05:00:00,92.46,216.549,49.666000000000004,32.613 -2020-02-04 05:15:00,94.39,243.795,49.666000000000004,32.613 -2020-02-04 05:30:00,96.94,239.44099999999997,49.666000000000004,32.613 -2020-02-04 05:45:00,101.07,233.153,49.666000000000004,32.613 -2020-02-04 06:00:00,109.2,230.50799999999998,61.077,32.613 -2020-02-04 06:15:00,111.14,236.672,61.077,32.613 -2020-02-04 06:30:00,117.58,239.65099999999998,61.077,32.613 -2020-02-04 06:45:00,123.45,244.737,61.077,32.613 -2020-02-04 07:00:00,133.3,243.669,74.717,32.613 -2020-02-04 07:15:00,131.29,248.86900000000003,74.717,32.613 -2020-02-04 07:30:00,133.43,251.56799999999998,74.717,32.613 -2020-02-04 07:45:00,133.13,252.69799999999998,74.717,32.613 -2020-02-04 08:00:00,136.35,251.172,69.033,32.613 -2020-02-04 08:15:00,136.11,251.097,69.033,32.613 -2020-02-04 08:30:00,134.66,247.888,69.033,32.613 -2020-02-04 08:45:00,134.24,244.832,69.033,32.613 -2020-02-04 09:00:00,133.77,238.14700000000002,63.113,32.613 -2020-02-04 09:15:00,135.41,235.375,63.113,32.613 -2020-02-04 09:30:00,136.68,233.847,63.113,32.613 -2020-02-04 09:45:00,135.45,230.52900000000002,63.113,32.613 -2020-02-04 10:00:00,134.9,225.05700000000002,61.461999999999996,32.613 -2020-02-04 10:15:00,134.83,221.503,61.461999999999996,32.613 -2020-02-04 10:30:00,135.76,217.795,61.461999999999996,32.613 -2020-02-04 10:45:00,134.18,216.19,61.461999999999996,32.613 -2020-02-04 11:00:00,131.66,213.17,59.614,32.613 -2020-02-04 11:15:00,132.42,211.995,59.614,32.613 -2020-02-04 11:30:00,131.61,210.327,59.614,32.613 -2020-02-04 11:45:00,129.45,209.65900000000002,59.614,32.613 -2020-02-04 12:00:00,126.71,205.668,57.415,32.613 -2020-02-04 12:15:00,125.47,205.61599999999999,57.415,32.613 -2020-02-04 12:30:00,128.08,205.076,57.415,32.613 -2020-02-04 12:45:00,125.59,205.66400000000002,57.415,32.613 -2020-02-04 13:00:00,123.19,203.65400000000002,58.534,32.613 -2020-02-04 13:15:00,122.62,202.643,58.534,32.613 -2020-02-04 13:30:00,119.8,201.68,58.534,32.613 -2020-02-04 13:45:00,120.47,201.791,58.534,32.613 -2020-02-04 14:00:00,121.58,201.998,59.415,32.613 -2020-02-04 14:15:00,123.66,202.265,59.415,32.613 -2020-02-04 14:30:00,122.74,203.05599999999998,59.415,32.613 -2020-02-04 14:45:00,123.25,203.967,59.415,32.613 -2020-02-04 15:00:00,126.72,205.26,62.071999999999996,32.613 -2020-02-04 15:15:00,128.05,205.477,62.071999999999996,32.613 -2020-02-04 15:30:00,126.41,206.958,62.071999999999996,32.613 -2020-02-04 15:45:00,125.03,207.822,62.071999999999996,32.613 -2020-02-04 16:00:00,125.33,209.22799999999998,64.99,32.613 -2020-02-04 16:15:00,124.64,211.00400000000002,64.99,32.613 -2020-02-04 16:30:00,127.25,213.877,64.99,32.613 -2020-02-04 16:45:00,128.17,215.144,64.99,32.613 -2020-02-04 17:00:00,133.12,217.313,72.658,32.613 -2020-02-04 17:15:00,136.25,218.657,72.658,32.613 -2020-02-04 17:30:00,140.8,220.261,72.658,32.613 -2020-02-04 17:45:00,141.04,220.595,72.658,32.613 -2020-02-04 18:00:00,142.74,222.60299999999998,73.645,32.613 -2020-02-04 18:15:00,143.03,220.092,73.645,32.613 -2020-02-04 18:30:00,140.63,219.092,73.645,32.613 -2020-02-04 18:45:00,138.97,219.81400000000002,73.645,32.613 -2020-02-04 19:00:00,135.76,217.78,67.085,32.613 -2020-02-04 19:15:00,134.8,213.929,67.085,32.613 -2020-02-04 19:30:00,140.27,211.31400000000002,67.085,32.613 -2020-02-04 19:45:00,133.39,208.546,67.085,32.613 -2020-02-04 20:00:00,125.17,204.082,66.138,32.613 -2020-02-04 20:15:00,128.55,197.642,66.138,32.613 -2020-02-04 20:30:00,119.49,193.523,66.138,32.613 -2020-02-04 20:45:00,118.62,192.36700000000002,66.138,32.613 -2020-02-04 21:00:00,111.08,188.612,57.512,32.613 -2020-02-04 21:15:00,115.78,185.55599999999998,57.512,32.613 -2020-02-04 21:30:00,115.31,183.541,57.512,32.613 -2020-02-04 21:45:00,112.98,182.362,57.512,32.613 -2020-02-04 22:00:00,101.24,175.079,54.545,32.613 -2020-02-04 22:15:00,101.11,169.757,54.545,32.613 -2020-02-04 22:30:00,101.29,155.946,54.545,32.613 -2020-02-04 22:45:00,102.32,147.877,54.545,32.613 -2020-02-04 23:00:00,97.65,140.57399999999998,48.605,32.613 -2020-02-04 23:15:00,94.45,139.328,48.605,32.613 -2020-02-04 23:30:00,87.36,139.886,48.605,32.613 -2020-02-04 23:45:00,92.55,139.616,48.605,32.613 -2020-02-05 00:00:00,89.46,133.739,45.675,32.613 -2020-02-05 00:15:00,90.37,133.12,45.675,32.613 -2020-02-05 00:30:00,85.45,134.141,45.675,32.613 -2020-02-05 00:45:00,84.27,135.56,45.675,32.613 -2020-02-05 01:00:00,85.32,138.22299999999998,43.015,32.613 -2020-02-05 01:15:00,85.92,138.083,43.015,32.613 -2020-02-05 01:30:00,85.0,138.333,43.015,32.613 -2020-02-05 01:45:00,83.16,138.666,43.015,32.613 -2020-02-05 02:00:00,83.15,140.976,41.0,32.613 -2020-02-05 02:15:00,77.78,142.938,41.0,32.613 -2020-02-05 02:30:00,81.84,144.102,41.0,32.613 -2020-02-05 02:45:00,86.05,146.175,41.0,32.613 -2020-02-05 03:00:00,81.25,148.99200000000002,41.318000000000005,32.613 -2020-02-05 03:15:00,88.66,150.3,41.318000000000005,32.613 -2020-02-05 03:30:00,89.0,152.067,41.318000000000005,32.613 -2020-02-05 03:45:00,89.87,154.033,41.318000000000005,32.613 -2020-02-05 04:00:00,85.75,165.185,42.544,32.613 -2020-02-05 04:15:00,82.09,176.393,42.544,32.613 -2020-02-05 04:30:00,83.82,179.982,42.544,32.613 -2020-02-05 04:45:00,88.66,182.785,42.544,32.613 -2020-02-05 05:00:00,90.45,216.34400000000002,45.161,32.613 -2020-02-05 05:15:00,92.16,243.595,45.161,32.613 -2020-02-05 05:30:00,94.66,239.22400000000002,45.161,32.613 -2020-02-05 05:45:00,100.11,232.94299999999998,45.161,32.613 -2020-02-05 06:00:00,110.31,230.312,61.86600000000001,32.613 -2020-02-05 06:15:00,112.52,236.489,61.86600000000001,32.613 -2020-02-05 06:30:00,118.94,239.447,61.86600000000001,32.613 -2020-02-05 06:45:00,122.35,244.541,61.86600000000001,32.613 -2020-02-05 07:00:00,129.73,243.495,77.814,32.613 -2020-02-05 07:15:00,130.12,248.67,77.814,32.613 -2020-02-05 07:30:00,132.0,251.338,77.814,32.613 -2020-02-05 07:45:00,130.03,252.429,77.814,32.613 -2020-02-05 08:00:00,133.79,250.885,70.251,32.613 -2020-02-05 08:15:00,132.59,250.78599999999997,70.251,32.613 -2020-02-05 08:30:00,134.41,247.52200000000002,70.251,32.613 -2020-02-05 08:45:00,131.14,244.46200000000002,70.251,32.613 -2020-02-05 09:00:00,131.14,237.77700000000002,66.965,32.613 -2020-02-05 09:15:00,131.67,235.00900000000001,66.965,32.613 -2020-02-05 09:30:00,133.35,233.50099999999998,66.965,32.613 -2020-02-05 09:45:00,132.54,230.18200000000002,66.965,32.613 -2020-02-05 10:00:00,133.0,224.718,63.628,32.613 -2020-02-05 10:15:00,130.23,221.18900000000002,63.628,32.613 -2020-02-05 10:30:00,128.04,217.488,63.628,32.613 -2020-02-05 10:45:00,128.01,215.894,63.628,32.613 -2020-02-05 11:00:00,127.57,212.861,62.516999999999996,32.613 -2020-02-05 11:15:00,126.97,211.695,62.516999999999996,32.613 -2020-02-05 11:30:00,127.26,210.033,62.516999999999996,32.613 -2020-02-05 11:45:00,128.78,209.375,62.516999999999996,32.613 -2020-02-05 12:00:00,125.28,205.40099999999998,60.888999999999996,32.613 -2020-02-05 12:15:00,123.86,205.365,60.888999999999996,32.613 -2020-02-05 12:30:00,125.88,204.801,60.888999999999996,32.613 -2020-02-05 12:45:00,122.32,205.387,60.888999999999996,32.613 -2020-02-05 13:00:00,120.11,203.394,61.57899999999999,32.613 -2020-02-05 13:15:00,120.74,202.361,61.57899999999999,32.613 -2020-02-05 13:30:00,121.03,201.382,61.57899999999999,32.613 -2020-02-05 13:45:00,121.19,201.493,61.57899999999999,32.613 -2020-02-05 14:00:00,119.29,201.74900000000002,62.602,32.613 -2020-02-05 14:15:00,121.95,201.998,62.602,32.613 -2020-02-05 14:30:00,121.58,202.77700000000002,62.602,32.613 -2020-02-05 14:45:00,122.34,203.703,62.602,32.613 -2020-02-05 15:00:00,125.21,205.007,64.259,32.613 -2020-02-05 15:15:00,123.42,205.195,64.259,32.613 -2020-02-05 15:30:00,126.69,206.644,64.259,32.613 -2020-02-05 15:45:00,122.86,207.49099999999999,64.259,32.613 -2020-02-05 16:00:00,126.84,208.898,67.632,32.613 -2020-02-05 16:15:00,124.67,210.669,67.632,32.613 -2020-02-05 16:30:00,126.69,213.547,67.632,32.613 -2020-02-05 16:45:00,128.11,214.801,67.632,32.613 -2020-02-05 17:00:00,131.41,216.96400000000003,72.583,32.613 -2020-02-05 17:15:00,135.42,218.33599999999998,72.583,32.613 -2020-02-05 17:30:00,141.15,219.976,72.583,32.613 -2020-02-05 17:45:00,142.13,220.33599999999998,72.583,32.613 -2020-02-05 18:00:00,142.56,222.359,72.744,32.613 -2020-02-05 18:15:00,140.69,219.895,72.744,32.613 -2020-02-05 18:30:00,140.23,218.899,72.744,32.613 -2020-02-05 18:45:00,138.2,219.645,72.744,32.613 -2020-02-05 19:00:00,133.78,217.56900000000002,69.684,32.613 -2020-02-05 19:15:00,135.47,213.73,69.684,32.613 -2020-02-05 19:30:00,139.35,211.13400000000001,69.684,32.613 -2020-02-05 19:45:00,137.95,208.394,69.684,32.613 -2020-02-05 20:00:00,129.71,203.90200000000002,70.036,32.613 -2020-02-05 20:15:00,121.3,197.472,70.036,32.613 -2020-02-05 20:30:00,116.66,193.362,70.036,32.613 -2020-02-05 20:45:00,118.71,192.213,70.036,32.613 -2020-02-05 21:00:00,109.48,188.44,60.431999999999995,32.613 -2020-02-05 21:15:00,115.23,185.36900000000003,60.431999999999995,32.613 -2020-02-05 21:30:00,114.27,183.355,60.431999999999995,32.613 -2020-02-05 21:45:00,111.11,182.192,60.431999999999995,32.613 -2020-02-05 22:00:00,102.57,174.896,56.2,32.613 -2020-02-05 22:15:00,98.72,169.59799999999998,56.2,32.613 -2020-02-05 22:30:00,95.62,155.756,56.2,32.613 -2020-02-05 22:45:00,97.92,147.694,56.2,32.613 -2020-02-05 23:00:00,93.72,140.384,47.927,32.613 -2020-02-05 23:15:00,95.58,139.151,47.927,32.613 -2020-02-05 23:30:00,93.57,139.726,47.927,32.613 -2020-02-05 23:45:00,93.42,139.472,47.927,32.613 -2020-02-06 00:00:00,88.03,133.625,43.794,32.613 -2020-02-06 00:15:00,88.69,132.998,43.794,32.613 -2020-02-06 00:30:00,88.37,134.0,43.794,32.613 -2020-02-06 00:45:00,83.31,135.411,43.794,32.613 -2020-02-06 01:00:00,85.13,138.046,42.397,32.613 -2020-02-06 01:15:00,86.78,137.894,42.397,32.613 -2020-02-06 01:30:00,84.13,138.134,42.397,32.613 -2020-02-06 01:45:00,81.34,138.464,42.397,32.613 -2020-02-06 02:00:00,83.95,140.776,40.010999999999996,32.613 -2020-02-06 02:15:00,85.6,142.738,40.010999999999996,32.613 -2020-02-06 02:30:00,84.94,143.915,40.010999999999996,32.613 -2020-02-06 02:45:00,83.06,145.987,40.010999999999996,32.613 -2020-02-06 03:00:00,85.59,148.806,39.181,32.613 -2020-02-06 03:15:00,88.0,150.118,39.181,32.613 -2020-02-06 03:30:00,87.64,151.882,39.181,32.613 -2020-02-06 03:45:00,86.23,153.86,39.181,32.613 -2020-02-06 04:00:00,87.6,165.005,40.39,32.613 -2020-02-06 04:15:00,83.48,176.203,40.39,32.613 -2020-02-06 04:30:00,84.04,179.805,40.39,32.613 -2020-02-06 04:45:00,86.36,182.597,40.39,32.613 -2020-02-06 05:00:00,90.39,216.13299999999998,45.504,32.613 -2020-02-06 05:15:00,92.47,243.39,45.504,32.613 -2020-02-06 05:30:00,94.94,238.99900000000002,45.504,32.613 -2020-02-06 05:45:00,99.52,232.726,45.504,32.613 -2020-02-06 06:00:00,109.99,230.108,57.748000000000005,32.613 -2020-02-06 06:15:00,113.45,236.298,57.748000000000005,32.613 -2020-02-06 06:30:00,117.48,239.236,57.748000000000005,32.613 -2020-02-06 06:45:00,122.09,244.335,57.748000000000005,32.613 -2020-02-06 07:00:00,130.35,243.31099999999998,72.138,32.613 -2020-02-06 07:15:00,131.22,248.46200000000002,72.138,32.613 -2020-02-06 07:30:00,134.4,251.09599999999998,72.138,32.613 -2020-02-06 07:45:00,135.28,252.148,72.138,32.613 -2020-02-06 08:00:00,138.42,250.588,65.542,32.613 -2020-02-06 08:15:00,139.12,250.46400000000003,65.542,32.613 -2020-02-06 08:30:00,135.68,247.144,65.542,32.613 -2020-02-06 08:45:00,135.18,244.079,65.542,32.613 -2020-02-06 09:00:00,136.0,237.396,60.523,32.613 -2020-02-06 09:15:00,137.89,234.63099999999997,60.523,32.613 -2020-02-06 09:30:00,140.17,233.143,60.523,32.613 -2020-02-06 09:45:00,143.52,229.824,60.523,32.613 -2020-02-06 10:00:00,140.22,224.36900000000003,57.449,32.613 -2020-02-06 10:15:00,141.82,220.864,57.449,32.613 -2020-02-06 10:30:00,141.15,217.17,57.449,32.613 -2020-02-06 10:45:00,141.82,215.588,57.449,32.613 -2020-02-06 11:00:00,140.12,212.542,54.505,32.613 -2020-02-06 11:15:00,141.56,211.387,54.505,32.613 -2020-02-06 11:30:00,142.0,209.731,54.505,32.613 -2020-02-06 11:45:00,141.74,209.082,54.505,32.613 -2020-02-06 12:00:00,141.83,205.12400000000002,51.50899999999999,32.613 -2020-02-06 12:15:00,140.81,205.106,51.50899999999999,32.613 -2020-02-06 12:30:00,138.96,204.518,51.50899999999999,32.613 -2020-02-06 12:45:00,136.26,205.1,51.50899999999999,32.613 -2020-02-06 13:00:00,133.75,203.12599999999998,51.303999999999995,32.613 -2020-02-06 13:15:00,132.36,202.07,51.303999999999995,32.613 -2020-02-06 13:30:00,131.1,201.075,51.303999999999995,32.613 -2020-02-06 13:45:00,131.74,201.18599999999998,51.303999999999995,32.613 -2020-02-06 14:00:00,131.95,201.49400000000003,52.785,32.613 -2020-02-06 14:15:00,131.78,201.72299999999998,52.785,32.613 -2020-02-06 14:30:00,129.87,202.489,52.785,32.613 -2020-02-06 14:45:00,131.48,203.43099999999998,52.785,32.613 -2020-02-06 15:00:00,130.36,204.74599999999998,56.458999999999996,32.613 -2020-02-06 15:15:00,130.85,204.90400000000002,56.458999999999996,32.613 -2020-02-06 15:30:00,132.16,206.32,56.458999999999996,32.613 -2020-02-06 15:45:00,129.54,207.15200000000002,56.458999999999996,32.613 -2020-02-06 16:00:00,131.64,208.558,59.388000000000005,32.613 -2020-02-06 16:15:00,130.67,210.32299999999998,59.388000000000005,32.613 -2020-02-06 16:30:00,131.07,213.205,59.388000000000005,32.613 -2020-02-06 16:45:00,131.83,214.446,59.388000000000005,32.613 -2020-02-06 17:00:00,136.93,216.605,64.462,32.613 -2020-02-06 17:15:00,139.65,218.00400000000002,64.462,32.613 -2020-02-06 17:30:00,141.81,219.679,64.462,32.613 -2020-02-06 17:45:00,143.36,220.06400000000002,64.462,32.613 -2020-02-06 18:00:00,143.08,222.104,65.128,32.613 -2020-02-06 18:15:00,141.76,219.69,65.128,32.613 -2020-02-06 18:30:00,142.88,218.695,65.128,32.613 -2020-02-06 18:45:00,140.14,219.465,65.128,32.613 -2020-02-06 19:00:00,137.45,217.34799999999998,61.316,32.613 -2020-02-06 19:15:00,136.1,213.52,61.316,32.613 -2020-02-06 19:30:00,140.99,210.94400000000002,61.316,32.613 -2020-02-06 19:45:00,140.88,208.235,61.316,32.613 -2020-02-06 20:00:00,130.65,203.713,59.845,32.613 -2020-02-06 20:15:00,123.56,197.295,59.845,32.613 -2020-02-06 20:30:00,119.45,193.192,59.845,32.613 -2020-02-06 20:45:00,118.13,192.05,59.845,32.613 -2020-02-06 21:00:00,110.84,188.26,54.83,32.613 -2020-02-06 21:15:00,117.96,185.175,54.83,32.613 -2020-02-06 21:30:00,117.04,183.16,54.83,32.613 -2020-02-06 21:45:00,112.67,182.015,54.83,32.613 -2020-02-06 22:00:00,101.49,174.704,50.933,32.613 -2020-02-06 22:15:00,101.52,169.43,50.933,32.613 -2020-02-06 22:30:00,97.68,155.55700000000002,50.933,32.613 -2020-02-06 22:45:00,100.63,147.503,50.933,32.613 -2020-02-06 23:00:00,98.2,140.183,45.32899999999999,32.613 -2020-02-06 23:15:00,98.49,138.966,45.32899999999999,32.613 -2020-02-06 23:30:00,93.7,139.555,45.32899999999999,32.613 -2020-02-06 23:45:00,88.78,139.321,45.32899999999999,32.613 -2020-02-07 00:00:00,88.69,132.535,43.74,32.613 -2020-02-07 00:15:00,91.22,132.095,43.74,32.613 -2020-02-07 00:30:00,91.01,132.892,43.74,32.613 -2020-02-07 00:45:00,85.92,134.365,43.74,32.613 -2020-02-07 01:00:00,86.38,136.671,42.555,32.613 -2020-02-07 01:15:00,86.96,137.619,42.555,32.613 -2020-02-07 01:30:00,85.7,137.502,42.555,32.613 -2020-02-07 01:45:00,78.77,137.983,42.555,32.613 -2020-02-07 02:00:00,77.21,140.266,41.68600000000001,32.613 -2020-02-07 02:15:00,78.6,142.107,41.68600000000001,32.613 -2020-02-07 02:30:00,78.82,143.773,41.68600000000001,32.613 -2020-02-07 02:45:00,79.14,145.988,41.68600000000001,32.613 -2020-02-07 03:00:00,80.57,147.57399999999998,42.278999999999996,32.613 -2020-02-07 03:15:00,87.01,150.124,42.278999999999996,32.613 -2020-02-07 03:30:00,88.53,151.899,42.278999999999996,32.613 -2020-02-07 03:45:00,91.75,154.13299999999998,42.278999999999996,32.613 -2020-02-07 04:00:00,81.9,165.515,43.742,32.613 -2020-02-07 04:15:00,81.41,176.655,43.742,32.613 -2020-02-07 04:30:00,83.77,180.39,43.742,32.613 -2020-02-07 04:45:00,85.67,181.968,43.742,32.613 -2020-02-07 05:00:00,89.49,214.108,46.973,32.613 -2020-02-07 05:15:00,90.53,242.95,46.973,32.613 -2020-02-07 05:30:00,95.28,239.739,46.973,32.613 -2020-02-07 05:45:00,99.96,233.467,46.973,32.613 -2020-02-07 06:00:00,110.48,231.317,59.63399999999999,32.613 -2020-02-07 06:15:00,113.13,235.822,59.63399999999999,32.613 -2020-02-07 06:30:00,118.49,237.761,59.63399999999999,32.613 -2020-02-07 06:45:00,122.09,244.732,59.63399999999999,32.613 -2020-02-07 07:00:00,129.43,242.68599999999998,71.631,32.613 -2020-02-07 07:15:00,129.96,248.84,71.631,32.613 -2020-02-07 07:30:00,130.46,251.521,71.631,32.613 -2020-02-07 07:45:00,133.64,251.55700000000002,71.631,32.613 -2020-02-07 08:00:00,137.27,248.618,66.181,32.613 -2020-02-07 08:15:00,133.27,247.94099999999997,66.181,32.613 -2020-02-07 08:30:00,132.95,245.679,66.181,32.613 -2020-02-07 08:45:00,131.08,240.852,66.181,32.613 -2020-02-07 09:00:00,132.18,234.997,63.086000000000006,32.613 -2020-02-07 09:15:00,132.77,232.62599999999998,63.086000000000006,32.613 -2020-02-07 09:30:00,132.22,230.766,63.086000000000006,32.613 -2020-02-07 09:45:00,132.21,227.275,63.086000000000006,32.613 -2020-02-07 10:00:00,132.16,220.571,60.886,32.613 -2020-02-07 10:15:00,134.75,217.90599999999998,60.886,32.613 -2020-02-07 10:30:00,132.78,214.06599999999997,60.886,32.613 -2020-02-07 10:45:00,131.45,212.013,60.886,32.613 -2020-02-07 11:00:00,127.82,208.912,59.391000000000005,32.613 -2020-02-07 11:15:00,128.72,206.90200000000002,59.391000000000005,32.613 -2020-02-07 11:30:00,126.6,207.252,59.391000000000005,32.613 -2020-02-07 11:45:00,125.26,206.785,59.391000000000005,32.613 -2020-02-07 12:00:00,123.4,204.003,56.172,32.613 -2020-02-07 12:15:00,122.69,201.739,56.172,32.613 -2020-02-07 12:30:00,121.83,201.28900000000002,56.172,32.613 -2020-02-07 12:45:00,121.23,202.543,56.172,32.613 -2020-02-07 13:00:00,119.63,201.565,54.406000000000006,32.613 -2020-02-07 13:15:00,119.78,201.37599999999998,54.406000000000006,32.613 -2020-02-07 13:30:00,118.9,200.287,54.406000000000006,32.613 -2020-02-07 13:45:00,118.56,200.28799999999998,54.406000000000006,32.613 -2020-02-07 14:00:00,115.99,199.468,53.578,32.613 -2020-02-07 14:15:00,117.39,199.42700000000002,53.578,32.613 -2020-02-07 14:30:00,118.46,200.57,53.578,32.613 -2020-02-07 14:45:00,121.39,201.94799999999998,53.578,32.613 -2020-02-07 15:00:00,122.71,202.743,56.568999999999996,32.613 -2020-02-07 15:15:00,118.45,202.41299999999998,56.568999999999996,32.613 -2020-02-07 15:30:00,118.49,202.174,56.568999999999996,32.613 -2020-02-07 15:45:00,118.79,203.062,56.568999999999996,32.613 -2020-02-07 16:00:00,120.97,203.285,60.169,32.613 -2020-02-07 16:15:00,123.05,205.308,60.169,32.613 -2020-02-07 16:30:00,121.89,208.31900000000002,60.169,32.613 -2020-02-07 16:45:00,123.97,209.50400000000002,60.169,32.613 -2020-02-07 17:00:00,128.63,211.71099999999998,65.497,32.613 -2020-02-07 17:15:00,131.36,212.703,65.497,32.613 -2020-02-07 17:30:00,135.74,214.044,65.497,32.613 -2020-02-07 17:45:00,136.59,214.21599999999998,65.497,32.613 -2020-02-07 18:00:00,137.38,217.047,65.082,32.613 -2020-02-07 18:15:00,136.53,214.35,65.082,32.613 -2020-02-07 18:30:00,135.49,213.798,65.082,32.613 -2020-02-07 18:45:00,134.69,214.545,65.082,32.613 -2020-02-07 19:00:00,131.86,213.304,60.968,32.613 -2020-02-07 19:15:00,131.03,210.918,60.968,32.613 -2020-02-07 19:30:00,134.97,207.908,60.968,32.613 -2020-02-07 19:45:00,136.65,204.822,60.968,32.613 -2020-02-07 20:00:00,128.29,200.338,61.123000000000005,32.613 -2020-02-07 20:15:00,120.3,193.86,61.123000000000005,32.613 -2020-02-07 20:30:00,116.56,189.77,61.123000000000005,32.613 -2020-02-07 20:45:00,113.11,189.325,61.123000000000005,32.613 -2020-02-07 21:00:00,107.82,185.94299999999998,55.416000000000004,32.613 -2020-02-07 21:15:00,111.91,183.15400000000002,55.416000000000004,32.613 -2020-02-07 21:30:00,109.99,181.205,55.416000000000004,32.613 -2020-02-07 21:45:00,109.63,180.65099999999998,55.416000000000004,32.613 -2020-02-07 22:00:00,99.9,174.41299999999998,51.631,32.613 -2020-02-07 22:15:00,94.38,169.043,51.631,32.613 -2020-02-07 22:30:00,91.58,161.64,51.631,32.613 -2020-02-07 22:45:00,96.88,157.365,51.631,32.613 -2020-02-07 23:00:00,93.8,149.38299999999998,44.898,32.613 -2020-02-07 23:15:00,96.38,146.203,44.898,32.613 -2020-02-07 23:30:00,86.3,145.392,44.898,32.613 -2020-02-07 23:45:00,82.22,144.46200000000002,44.898,32.613 -2020-02-08 00:00:00,76.07,129.066,42.033,32.431999999999995 -2020-02-08 00:15:00,81.2,123.95200000000001,42.033,32.431999999999995 -2020-02-08 00:30:00,83.22,126.271,42.033,32.431999999999995 -2020-02-08 00:45:00,85.24,128.624,42.033,32.431999999999995 -2020-02-08 01:00:00,74.78,131.55700000000002,38.255,32.431999999999995 -2020-02-08 01:15:00,73.72,131.313,38.255,32.431999999999995 -2020-02-08 01:30:00,71.69,130.709,38.255,32.431999999999995 -2020-02-08 01:45:00,80.83,130.78799999999998,38.255,32.431999999999995 -2020-02-08 02:00:00,81.35,133.951,36.404,32.431999999999995 -2020-02-08 02:15:00,79.32,135.47799999999998,36.404,32.431999999999995 -2020-02-08 02:30:00,73.69,136.015,36.404,32.431999999999995 -2020-02-08 02:45:00,72.18,138.24,36.404,32.431999999999995 -2020-02-08 03:00:00,76.73,140.701,36.083,32.431999999999995 -2020-02-08 03:15:00,78.04,141.977,36.083,32.431999999999995 -2020-02-08 03:30:00,75.79,141.916,36.083,32.431999999999995 -2020-02-08 03:45:00,72.95,144.086,36.083,32.431999999999995 -2020-02-08 04:00:00,69.34,151.02,36.102,32.431999999999995 -2020-02-08 04:15:00,69.82,159.40200000000002,36.102,32.431999999999995 -2020-02-08 04:30:00,69.75,160.933,36.102,32.431999999999995 -2020-02-08 04:45:00,73.37,161.901,36.102,32.431999999999995 -2020-02-08 05:00:00,71.6,177.055,35.284,32.431999999999995 -2020-02-08 05:15:00,72.11,185.93599999999998,35.284,32.431999999999995 -2020-02-08 05:30:00,71.73,182.887,35.284,32.431999999999995 -2020-02-08 05:45:00,75.3,182.155,35.284,32.431999999999995 -2020-02-08 06:00:00,74.8,199.732,36.265,32.431999999999995 -2020-02-08 06:15:00,74.36,221.66,36.265,32.431999999999995 -2020-02-08 06:30:00,75.45,217.892,36.265,32.431999999999995 -2020-02-08 06:45:00,77.69,215.15,36.265,32.431999999999995 -2020-02-08 07:00:00,83.57,209.08700000000002,40.714,32.431999999999995 -2020-02-08 07:15:00,87.81,213.976,40.714,32.431999999999995 -2020-02-08 07:30:00,87.5,219.47400000000002,40.714,32.431999999999995 -2020-02-08 07:45:00,88.9,223.83700000000002,40.714,32.431999999999995 -2020-02-08 08:00:00,93.52,225.43400000000003,46.692,32.431999999999995 -2020-02-08 08:15:00,95.5,228.845,46.692,32.431999999999995 -2020-02-08 08:30:00,98.42,228.342,46.692,32.431999999999995 -2020-02-08 08:45:00,100.91,226.93599999999998,46.692,32.431999999999995 -2020-02-08 09:00:00,103.5,222.706,48.925,32.431999999999995 -2020-02-08 09:15:00,103.89,221.12,48.925,32.431999999999995 -2020-02-08 09:30:00,104.75,220.226,48.925,32.431999999999995 -2020-02-08 09:45:00,107.02,216.97299999999998,48.925,32.431999999999995 -2020-02-08 10:00:00,107.36,210.49,47.799,32.431999999999995 -2020-02-08 10:15:00,107.78,207.989,47.799,32.431999999999995 -2020-02-08 10:30:00,108.48,204.386,47.799,32.431999999999995 -2020-02-08 10:45:00,109.57,203.84799999999998,47.799,32.431999999999995 -2020-02-08 11:00:00,108.73,201.024,44.309,32.431999999999995 -2020-02-08 11:15:00,110.59,198.15400000000002,44.309,32.431999999999995 -2020-02-08 11:30:00,111.33,197.233,44.309,32.431999999999995 -2020-02-08 11:45:00,110.89,195.63099999999997,44.309,32.431999999999995 -2020-02-08 12:00:00,108.2,191.81599999999997,42.367,32.431999999999995 -2020-02-08 12:15:00,106.08,190.18,42.367,32.431999999999995 -2020-02-08 12:30:00,103.17,190.074,42.367,32.431999999999995 -2020-02-08 12:45:00,102.67,190.37599999999998,42.367,32.431999999999995 -2020-02-08 13:00:00,98.62,189.06799999999998,39.036,32.431999999999995 -2020-02-08 13:15:00,98.03,186.632,39.036,32.431999999999995 -2020-02-08 13:30:00,95.95,185.00099999999998,39.036,32.431999999999995 -2020-02-08 13:45:00,94.83,185.69799999999998,39.036,32.431999999999995 -2020-02-08 14:00:00,96.32,186.321,37.995,32.431999999999995 -2020-02-08 14:15:00,93.19,185.817,37.995,32.431999999999995 -2020-02-08 14:30:00,93.21,184.97400000000002,37.995,32.431999999999995 -2020-02-08 14:45:00,93.07,186.553,37.995,32.431999999999995 -2020-02-08 15:00:00,92.13,188.085,40.71,32.431999999999995 -2020-02-08 15:15:00,92.1,188.537,40.71,32.431999999999995 -2020-02-08 15:30:00,93.08,189.947,40.71,32.431999999999995 -2020-02-08 15:45:00,94.41,190.942,40.71,32.431999999999995 -2020-02-08 16:00:00,93.8,189.675,46.998000000000005,32.431999999999995 -2020-02-08 16:15:00,94.73,192.775,46.998000000000005,32.431999999999995 -2020-02-08 16:30:00,96.17,195.707,46.998000000000005,32.431999999999995 -2020-02-08 16:45:00,97.61,197.858,46.998000000000005,32.431999999999995 -2020-02-08 17:00:00,102.44,199.639,55.431000000000004,32.431999999999995 -2020-02-08 17:15:00,103.98,202.69299999999998,55.431000000000004,32.431999999999995 -2020-02-08 17:30:00,110.41,203.977,55.431000000000004,32.431999999999995 -2020-02-08 17:45:00,109.38,203.68,55.431000000000004,32.431999999999995 -2020-02-08 18:00:00,111.7,205.91099999999997,55.989,32.431999999999995 -2020-02-08 18:15:00,111.45,205.063,55.989,32.431999999999995 -2020-02-08 18:30:00,109.88,205.833,55.989,32.431999999999995 -2020-02-08 18:45:00,108.49,203.294,55.989,32.431999999999995 -2020-02-08 19:00:00,107.67,203.201,50.882,32.431999999999995 -2020-02-08 19:15:00,106.93,200.38299999999998,50.882,32.431999999999995 -2020-02-08 19:30:00,104.88,198.138,50.882,32.431999999999995 -2020-02-08 19:45:00,102.39,194.731,50.882,32.431999999999995 -2020-02-08 20:00:00,98.25,192.463,43.172,32.431999999999995 -2020-02-08 20:15:00,94.38,188.37400000000002,43.172,32.431999999999995 -2020-02-08 20:30:00,91.97,183.99599999999998,43.172,32.431999999999995 -2020-02-08 20:45:00,89.93,182.93900000000002,43.172,32.431999999999995 -2020-02-08 21:00:00,85.08,182.136,37.599000000000004,32.431999999999995 -2020-02-08 21:15:00,83.97,179.845,37.599000000000004,32.431999999999995 -2020-02-08 21:30:00,82.71,179.21599999999998,37.599000000000004,32.431999999999995 -2020-02-08 21:45:00,82.15,178.28900000000002,37.599000000000004,32.431999999999995 -2020-02-08 22:00:00,77.71,173.505,39.047,32.431999999999995 -2020-02-08 22:15:00,77.18,170.838,39.047,32.431999999999995 -2020-02-08 22:30:00,73.7,170.201,39.047,32.431999999999995 -2020-02-08 22:45:00,72.2,167.93,39.047,32.431999999999995 -2020-02-08 23:00:00,69.4,162.638,32.339,32.431999999999995 -2020-02-08 23:15:00,68.66,157.657,32.339,32.431999999999995 -2020-02-08 23:30:00,65.61,154.733,32.339,32.431999999999995 -2020-02-08 23:45:00,64.73,151.15200000000002,32.339,32.431999999999995 -2020-02-09 00:00:00,61.27,129.226,29.988000000000003,32.431999999999995 -2020-02-09 00:15:00,60.71,123.889,29.988000000000003,32.431999999999995 -2020-02-09 00:30:00,59.99,125.789,29.988000000000003,32.431999999999995 -2020-02-09 00:45:00,59.14,128.922,29.988000000000003,32.431999999999995 -2020-02-09 01:00:00,57.53,131.635,28.531999999999996,32.431999999999995 -2020-02-09 01:15:00,56.93,132.55,28.531999999999996,32.431999999999995 -2020-02-09 01:30:00,57.32,132.533,28.531999999999996,32.431999999999995 -2020-02-09 01:45:00,57.14,132.30700000000002,28.531999999999996,32.431999999999995 -2020-02-09 02:00:00,56.24,134.63,27.805999999999997,32.431999999999995 -2020-02-09 02:15:00,57.09,135.11700000000002,27.805999999999997,32.431999999999995 -2020-02-09 02:30:00,56.53,136.59799999999998,27.805999999999997,32.431999999999995 -2020-02-09 02:45:00,54.95,139.373,27.805999999999997,32.431999999999995 -2020-02-09 03:00:00,54.55,142.111,26.193,32.431999999999995 -2020-02-09 03:15:00,55.28,142.769,26.193,32.431999999999995 -2020-02-09 03:30:00,55.8,144.366,26.193,32.431999999999995 -2020-02-09 03:45:00,56.3,146.563,26.193,32.431999999999995 -2020-02-09 04:00:00,56.5,153.233,27.19,32.431999999999995 -2020-02-09 04:15:00,57.24,160.52700000000002,27.19,32.431999999999995 -2020-02-09 04:30:00,57.91,161.968,27.19,32.431999999999995 -2020-02-09 04:45:00,57.79,163.293,27.19,32.431999999999995 -2020-02-09 05:00:00,58.77,174.454,28.166999999999998,32.431999999999995 -2020-02-09 05:15:00,58.46,180.73,28.166999999999998,32.431999999999995 -2020-02-09 05:30:00,60.97,177.52599999999998,28.166999999999998,32.431999999999995 -2020-02-09 05:45:00,62.39,177.112,28.166999999999998,32.431999999999995 -2020-02-09 06:00:00,60.88,194.896,27.16,32.431999999999995 -2020-02-09 06:15:00,63.92,214.793,27.16,32.431999999999995 -2020-02-09 06:30:00,65.05,209.84799999999998,27.16,32.431999999999995 -2020-02-09 06:45:00,63.69,206.051,27.16,32.431999999999995 -2020-02-09 07:00:00,68.95,202.731,29.578000000000003,32.431999999999995 -2020-02-09 07:15:00,68.37,206.84900000000002,29.578000000000003,32.431999999999995 -2020-02-09 07:30:00,70.21,210.766,29.578000000000003,32.431999999999995 -2020-02-09 07:45:00,72.49,214.237,29.578000000000003,32.431999999999995 -2020-02-09 08:00:00,76.04,217.799,34.650999999999996,32.431999999999995 -2020-02-09 08:15:00,76.96,220.94,34.650999999999996,32.431999999999995 -2020-02-09 08:30:00,77.09,222.12400000000002,34.650999999999996,32.431999999999995 -2020-02-09 08:45:00,77.53,222.98,34.650999999999996,32.431999999999995 -2020-02-09 09:00:00,79.01,218.326,38.080999999999996,32.431999999999995 -2020-02-09 09:15:00,78.77,217.41299999999998,38.080999999999996,32.431999999999995 -2020-02-09 09:30:00,75.58,216.317,38.080999999999996,32.431999999999995 -2020-02-09 09:45:00,79.56,212.81599999999997,38.080999999999996,32.431999999999995 -2020-02-09 10:00:00,81.3,209.075,39.934,32.431999999999995 -2020-02-09 10:15:00,76.81,207.17700000000002,39.934,32.431999999999995 -2020-02-09 10:30:00,79.12,204.226,39.934,32.431999999999995 -2020-02-09 10:45:00,81.4,201.47099999999998,39.934,32.431999999999995 -2020-02-09 11:00:00,84.98,199.705,43.74100000000001,32.431999999999995 -2020-02-09 11:15:00,91.65,197.043,43.74100000000001,32.431999999999995 -2020-02-09 11:30:00,93.87,195.105,43.74100000000001,32.431999999999995 -2020-02-09 11:45:00,94.14,194.15599999999998,43.74100000000001,32.431999999999995 -2020-02-09 12:00:00,89.58,189.606,40.001999999999995,32.431999999999995 -2020-02-09 12:15:00,87.22,190.168,40.001999999999995,32.431999999999995 -2020-02-09 12:30:00,81.41,188.4,40.001999999999995,32.431999999999995 -2020-02-09 12:45:00,83.91,187.699,40.001999999999995,32.431999999999995 -2020-02-09 13:00:00,83.42,185.649,37.855,32.431999999999995 -2020-02-09 13:15:00,83.34,186.597,37.855,32.431999999999995 -2020-02-09 13:30:00,83.38,184.843,37.855,32.431999999999995 -2020-02-09 13:45:00,83.48,184.68400000000003,37.855,32.431999999999995 -2020-02-09 14:00:00,82.03,185.49900000000002,35.946999999999996,32.431999999999995 -2020-02-09 14:15:00,81.11,186.253,35.946999999999996,32.431999999999995 -2020-02-09 14:30:00,80.88,186.899,35.946999999999996,32.431999999999995 -2020-02-09 14:45:00,80.8,188.155,35.946999999999996,32.431999999999995 -2020-02-09 15:00:00,80.61,187.985,35.138000000000005,32.431999999999995 -2020-02-09 15:15:00,81.01,189.326,35.138000000000005,32.431999999999995 -2020-02-09 15:30:00,81.24,191.368,35.138000000000005,32.431999999999995 -2020-02-09 15:45:00,82.18,193.079,35.138000000000005,32.431999999999995 -2020-02-09 16:00:00,84.12,194.005,38.672,32.431999999999995 -2020-02-09 16:15:00,82.75,196.077,38.672,32.431999999999995 -2020-02-09 16:30:00,83.87,199.19400000000002,38.672,32.431999999999995 -2020-02-09 16:45:00,85.94,201.47099999999998,38.672,32.431999999999995 -2020-02-09 17:00:00,91.05,203.174,48.684,32.431999999999995 -2020-02-09 17:15:00,91.88,205.752,48.684,32.431999999999995 -2020-02-09 17:30:00,98.58,207.305,48.684,32.431999999999995 -2020-02-09 17:45:00,98.25,209.468,48.684,32.431999999999995 -2020-02-09 18:00:00,103.28,211.042,51.568999999999996,32.431999999999995 -2020-02-09 18:15:00,100.42,211.72099999999998,51.568999999999996,32.431999999999995 -2020-02-09 18:30:00,104.15,210.25400000000002,51.568999999999996,32.431999999999995 -2020-02-09 18:45:00,100.37,209.738,51.568999999999996,32.431999999999995 -2020-02-09 19:00:00,98.81,209.03599999999997,48.608000000000004,32.431999999999995 -2020-02-09 19:15:00,97.23,206.96599999999998,48.608000000000004,32.431999999999995 -2020-02-09 19:30:00,95.94,204.58599999999998,48.608000000000004,32.431999999999995 -2020-02-09 19:45:00,94.87,202.80900000000003,48.608000000000004,32.431999999999995 -2020-02-09 20:00:00,91.94,200.498,43.733999999999995,32.431999999999995 -2020-02-09 20:15:00,91.17,197.502,43.733999999999995,32.431999999999995 -2020-02-09 20:30:00,89.34,194.40599999999998,43.733999999999995,32.431999999999995 -2020-02-09 20:45:00,90.36,192.203,43.733999999999995,32.431999999999995 -2020-02-09 21:00:00,83.75,188.577,39.283,32.431999999999995 -2020-02-09 21:15:00,84.63,185.62,39.283,32.431999999999995 -2020-02-09 21:30:00,84.54,185.36900000000003,39.283,32.431999999999995 -2020-02-09 21:45:00,87.87,184.575,39.283,32.431999999999995 -2020-02-09 22:00:00,86.37,178.296,40.111,32.431999999999995 -2020-02-09 22:15:00,84.1,174.982,40.111,32.431999999999995 -2020-02-09 22:30:00,80.59,170.921,40.111,32.431999999999995 -2020-02-09 22:45:00,80.15,167.84900000000002,40.111,32.431999999999995 -2020-02-09 23:00:00,76.59,159.545,35.791,32.431999999999995 -2020-02-09 23:15:00,78.67,156.477,35.791,32.431999999999995 -2020-02-09 23:30:00,75.47,154.495,35.791,32.431999999999995 -2020-02-09 23:45:00,74.68,151.886,35.791,32.431999999999995 -2020-02-10 00:00:00,69.25,133.565,34.311,32.613 -2020-02-10 00:15:00,70.25,131.43200000000002,34.311,32.613 -2020-02-10 00:30:00,70.75,133.498,34.311,32.613 -2020-02-10 00:45:00,70.63,136.07399999999998,34.311,32.613 -2020-02-10 01:00:00,69.11,138.743,34.585,32.613 -2020-02-10 01:15:00,68.52,139.054,34.585,32.613 -2020-02-10 01:30:00,68.82,139.04399999999998,34.585,32.613 -2020-02-10 01:45:00,69.91,138.957,34.585,32.613 -2020-02-10 02:00:00,68.03,141.208,34.111,32.613 -2020-02-10 02:15:00,68.74,143.455,34.111,32.613 -2020-02-10 02:30:00,68.09,145.303,34.111,32.613 -2020-02-10 02:45:00,68.85,147.40200000000002,34.111,32.613 -2020-02-10 03:00:00,67.44,151.52200000000002,32.435,32.613 -2020-02-10 03:15:00,68.32,153.937,32.435,32.613 -2020-02-10 03:30:00,69.58,155.138,32.435,32.613 -2020-02-10 03:45:00,70.89,156.787,32.435,32.613 -2020-02-10 04:00:00,71.36,167.96099999999998,33.04,32.613 -2020-02-10 04:15:00,73.21,179.521,33.04,32.613 -2020-02-10 04:30:00,75.25,183.50900000000001,33.04,32.613 -2020-02-10 04:45:00,77.06,184.954,33.04,32.613 -2020-02-10 05:00:00,81.16,212.946,40.399,32.613 -2020-02-10 05:15:00,83.71,240.581,40.399,32.613 -2020-02-10 05:30:00,88.12,237.87599999999998,40.399,32.613 -2020-02-10 05:45:00,91.96,231.50799999999998,40.399,32.613 -2020-02-10 06:00:00,100.85,230.446,60.226000000000006,32.613 -2020-02-10 06:15:00,104.58,234.87099999999998,60.226000000000006,32.613 -2020-02-10 06:30:00,109.61,238.394,60.226000000000006,32.613 -2020-02-10 06:45:00,114.01,243.798,60.226000000000006,32.613 -2020-02-10 07:00:00,123.45,243.1,73.578,32.613 -2020-02-10 07:15:00,122.16,248.285,73.578,32.613 -2020-02-10 07:30:00,126.33,251.41,73.578,32.613 -2020-02-10 07:45:00,124.92,251.91099999999997,73.578,32.613 -2020-02-10 08:00:00,128.37,250.143,66.58,32.613 -2020-02-10 08:15:00,127.45,251.013,66.58,32.613 -2020-02-10 08:30:00,127.24,247.687,66.58,32.613 -2020-02-10 08:45:00,126.73,244.77900000000002,66.58,32.613 -2020-02-10 09:00:00,128.93,239.095,62.0,32.613 -2020-02-10 09:15:00,132.12,234.521,62.0,32.613 -2020-02-10 09:30:00,129.88,232.447,62.0,32.613 -2020-02-10 09:45:00,132.17,229.562,62.0,32.613 -2020-02-10 10:00:00,131.38,224.611,59.099,32.613 -2020-02-10 10:15:00,127.86,222.393,59.099,32.613 -2020-02-10 10:30:00,126.07,218.533,59.099,32.613 -2020-02-10 10:45:00,129.64,216.829,59.099,32.613 -2020-02-10 11:00:00,130.68,212.051,57.729,32.613 -2020-02-10 11:15:00,131.96,211.373,57.729,32.613 -2020-02-10 11:30:00,132.31,210.891,57.729,32.613 -2020-02-10 11:45:00,136.23,209.438,57.729,32.613 -2020-02-10 12:00:00,131.68,207.05599999999998,55.615,32.613 -2020-02-10 12:15:00,132.92,207.62,55.615,32.613 -2020-02-10 12:30:00,134.19,206.238,55.615,32.613 -2020-02-10 12:45:00,129.29,207.23,55.615,32.613 -2020-02-10 13:00:00,125.98,205.753,56.515,32.613 -2020-02-10 13:15:00,124.66,205.24,56.515,32.613 -2020-02-10 13:30:00,124.24,202.86,56.515,32.613 -2020-02-10 13:45:00,128.1,202.62900000000002,56.515,32.613 -2020-02-10 14:00:00,124.97,202.88400000000001,58.1,32.613 -2020-02-10 14:15:00,125.5,202.832,58.1,32.613 -2020-02-10 14:30:00,126.78,202.88299999999998,58.1,32.613 -2020-02-10 14:45:00,128.81,203.86900000000003,58.1,32.613 -2020-02-10 15:00:00,129.17,205.675,59.801,32.613 -2020-02-10 15:15:00,129.48,205.46599999999998,59.801,32.613 -2020-02-10 15:30:00,124.6,206.46400000000003,59.801,32.613 -2020-02-10 15:45:00,123.59,207.72099999999998,59.801,32.613 -2020-02-10 16:00:00,123.44,208.65,62.901,32.613 -2020-02-10 16:15:00,123.28,209.86700000000002,62.901,32.613 -2020-02-10 16:30:00,122.68,211.997,62.901,32.613 -2020-02-10 16:45:00,123.82,212.947,62.901,32.613 -2020-02-10 17:00:00,128.52,214.516,70.418,32.613 -2020-02-10 17:15:00,127.46,216.03799999999998,70.418,32.613 -2020-02-10 17:30:00,135.21,217.065,70.418,32.613 -2020-02-10 17:45:00,135.18,217.66099999999997,70.418,32.613 -2020-02-10 18:00:00,137.86,219.78099999999998,71.726,32.613 -2020-02-10 18:15:00,135.1,218.28900000000002,71.726,32.613 -2020-02-10 18:30:00,134.0,217.61,71.726,32.613 -2020-02-10 18:45:00,133.93,217.583,71.726,32.613 -2020-02-10 19:00:00,132.08,215.093,65.997,32.613 -2020-02-10 19:15:00,130.65,211.641,65.997,32.613 -2020-02-10 19:30:00,130.87,209.857,65.997,32.613 -2020-02-10 19:45:00,134.33,207.269,65.997,32.613 -2020-02-10 20:00:00,125.69,202.49400000000003,68.09100000000001,32.613 -2020-02-10 20:15:00,123.18,196.667,68.09100000000001,32.613 -2020-02-10 20:30:00,113.96,191.49900000000002,68.09100000000001,32.613 -2020-02-10 20:45:00,114.18,191.053,68.09100000000001,32.613 -2020-02-10 21:00:00,108.98,188.05599999999998,59.617,32.613 -2020-02-10 21:15:00,111.78,183.76,59.617,32.613 -2020-02-10 21:30:00,113.19,182.56599999999997,59.617,32.613 -2020-02-10 21:45:00,110.69,181.261,59.617,32.613 -2020-02-10 22:00:00,98.01,172.03099999999998,54.938,32.613 -2020-02-10 22:15:00,97.21,167.104,54.938,32.613 -2020-02-10 22:30:00,96.16,153.02700000000002,54.938,32.613 -2020-02-10 22:45:00,99.73,144.695,54.938,32.613 -2020-02-10 23:00:00,94.89,137.238,47.43,32.613 -2020-02-10 23:15:00,95.68,137.238,47.43,32.613 -2020-02-10 23:30:00,87.21,138.285,47.43,32.613 -2020-02-10 23:45:00,87.28,138.628,47.43,32.613 -2020-02-11 00:00:00,86.73,132.929,48.354,32.613 -2020-02-11 00:15:00,86.67,132.27200000000002,48.354,32.613 -2020-02-11 00:30:00,84.13,133.178,48.354,32.613 -2020-02-11 00:45:00,83.69,134.55200000000002,48.354,32.613 -2020-02-11 01:00:00,83.21,137.034,45.68600000000001,32.613 -2020-02-11 01:15:00,84.29,136.819,45.68600000000001,32.613 -2020-02-11 01:30:00,79.62,137.00799999999998,45.68600000000001,32.613 -2020-02-11 01:45:00,77.48,137.332,45.68600000000001,32.613 -2020-02-11 02:00:00,82.18,139.641,44.269,32.613 -2020-02-11 02:15:00,83.97,141.60399999999998,44.269,32.613 -2020-02-11 02:30:00,82.96,142.84799999999998,44.269,32.613 -2020-02-11 02:45:00,77.71,144.915,44.269,32.613 -2020-02-11 03:00:00,76.55,147.748,44.187,32.613 -2020-02-11 03:15:00,81.43,149.071,44.187,32.613 -2020-02-11 03:30:00,85.46,150.81799999999998,44.187,32.613 -2020-02-11 03:45:00,86.18,152.856,44.187,32.613 -2020-02-11 04:00:00,84.27,163.98,46.126999999999995,32.613 -2020-02-11 04:15:00,84.94,175.13400000000001,46.126999999999995,32.613 -2020-02-11 04:30:00,88.91,178.803,46.126999999999995,32.613 -2020-02-11 04:45:00,90.77,181.537,46.126999999999995,32.613 -2020-02-11 05:00:00,89.12,214.968,49.666000000000004,32.613 -2020-02-11 05:15:00,89.51,242.28799999999998,49.666000000000004,32.613 -2020-02-11 05:30:00,91.15,237.78400000000002,49.666000000000004,32.613 -2020-02-11 05:45:00,95.27,231.54,49.666000000000004,32.613 -2020-02-11 06:00:00,104.24,228.979,61.077,32.613 -2020-02-11 06:15:00,107.46,235.239,61.077,32.613 -2020-02-11 06:30:00,112.26,238.045,61.077,32.613 -2020-02-11 06:45:00,115.29,243.15599999999998,61.077,32.613 -2020-02-11 07:00:00,122.79,242.25,74.717,32.613 -2020-02-11 07:15:00,123.23,247.265,74.717,32.613 -2020-02-11 07:30:00,126.38,249.733,74.717,32.613 -2020-02-11 07:45:00,126.0,250.583,74.717,32.613 -2020-02-11 08:00:00,128.06,248.925,69.033,32.613 -2020-02-11 08:15:00,126.93,248.678,69.033,32.613 -2020-02-11 08:30:00,130.01,245.06900000000002,69.033,32.613 -2020-02-11 08:45:00,126.16,241.99200000000002,69.033,32.613 -2020-02-11 09:00:00,127.51,235.327,63.113,32.613 -2020-02-11 09:15:00,129.21,232.574,63.113,32.613 -2020-02-11 09:30:00,129.61,231.18599999999998,63.113,32.613 -2020-02-11 09:45:00,128.56,227.87099999999998,63.113,32.613 -2020-02-11 10:00:00,125.66,222.46099999999998,61.461999999999996,32.613 -2020-02-11 10:15:00,124.7,219.09099999999998,61.461999999999996,32.613 -2020-02-11 10:30:00,123.35,215.44,61.461999999999996,32.613 -2020-02-11 10:45:00,125.93,213.925,61.461999999999996,32.613 -2020-02-11 11:00:00,119.21,210.815,59.614,32.613 -2020-02-11 11:15:00,119.93,209.72,59.614,32.613 -2020-02-11 11:30:00,119.99,208.093,59.614,32.613 -2020-02-11 11:45:00,121.04,207.5,59.614,32.613 -2020-02-11 12:00:00,115.58,203.62099999999998,57.415,32.613 -2020-02-11 12:15:00,116.2,203.688,57.415,32.613 -2020-02-11 12:30:00,121.86,202.972,57.415,32.613 -2020-02-11 12:45:00,119.33,203.535,57.415,32.613 -2020-02-11 13:00:00,115.97,201.671,58.534,32.613 -2020-02-11 13:15:00,115.16,200.493,58.534,32.613 -2020-02-11 13:30:00,116.39,199.42,58.534,32.613 -2020-02-11 13:45:00,118.38,199.53400000000002,58.534,32.613 -2020-02-11 14:00:00,114.61,200.108,59.415,32.613 -2020-02-11 14:15:00,116.91,200.239,59.415,32.613 -2020-02-11 14:30:00,117.94,200.933,59.415,32.613 -2020-02-11 14:45:00,120.5,201.953,59.415,32.613 -2020-02-11 15:00:00,122.94,203.31099999999998,62.071999999999996,32.613 -2020-02-11 15:15:00,119.07,203.321,62.071999999999996,32.613 -2020-02-11 15:30:00,121.84,204.55900000000003,62.071999999999996,32.613 -2020-02-11 15:45:00,120.06,205.305,62.071999999999996,32.613 -2020-02-11 16:00:00,122.44,206.71400000000003,64.99,32.613 -2020-02-11 16:15:00,120.88,208.44099999999997,64.99,32.613 -2020-02-11 16:30:00,120.1,211.33900000000003,64.99,32.613 -2020-02-11 16:45:00,121.9,212.503,64.99,32.613 -2020-02-11 17:00:00,126.56,214.648,72.658,32.613 -2020-02-11 17:15:00,130.27,216.179,72.658,32.613 -2020-02-11 17:30:00,133.97,218.02700000000002,72.658,32.613 -2020-02-11 17:45:00,133.32,218.545,72.658,32.613 -2020-02-11 18:00:00,135.96,220.662,73.645,32.613 -2020-02-11 18:15:00,134.35,218.513,73.645,32.613 -2020-02-11 18:30:00,137.41,217.52700000000002,73.645,32.613 -2020-02-11 18:45:00,134.9,218.418,73.645,32.613 -2020-02-11 19:00:00,133.28,216.093,67.085,32.613 -2020-02-11 19:15:00,131.07,212.33,67.085,32.613 -2020-02-11 19:30:00,128.99,209.861,67.085,32.613 -2020-02-11 19:45:00,130.79,207.312,67.085,32.613 -2020-02-11 20:00:00,123.69,202.644,66.138,32.613 -2020-02-11 20:15:00,117.11,196.28599999999997,66.138,32.613 -2020-02-11 20:30:00,115.68,192.236,66.138,32.613 -2020-02-11 20:45:00,116.21,191.12,66.138,32.613 -2020-02-11 21:00:00,108.07,187.245,57.512,32.613 -2020-02-11 21:15:00,113.35,184.08900000000003,57.512,32.613 -2020-02-11 21:30:00,113.57,182.076,57.512,32.613 -2020-02-11 21:45:00,109.47,181.015,57.512,32.613 -2020-02-11 22:00:00,100.17,173.62599999999998,54.545,32.613 -2020-02-11 22:15:00,99.34,168.476,54.545,32.613 -2020-02-11 22:30:00,95.56,154.42700000000002,54.545,32.613 -2020-02-11 22:45:00,96.63,146.406,54.545,32.613 -2020-02-11 23:00:00,97.75,139.053,48.605,32.613 -2020-02-11 23:15:00,94.85,137.909,48.605,32.613 -2020-02-11 23:30:00,89.6,138.576,48.605,32.613 -2020-02-11 23:45:00,87.08,138.44,48.605,32.613 -2020-02-12 00:00:00,83.69,132.765,45.675,32.613 -2020-02-12 00:15:00,81.35,132.10399999999998,45.675,32.613 -2020-02-12 00:30:00,81.62,132.99,45.675,32.613 -2020-02-12 00:45:00,87.28,134.359,45.675,32.613 -2020-02-12 01:00:00,85.43,136.80700000000002,43.015,32.613 -2020-02-12 01:15:00,86.31,136.579,43.015,32.613 -2020-02-12 01:30:00,81.81,136.75799999999998,43.015,32.613 -2020-02-12 01:45:00,85.94,137.08,43.015,32.613 -2020-02-12 02:00:00,84.66,139.388,41.0,32.613 -2020-02-12 02:15:00,84.18,141.351,41.0,32.613 -2020-02-12 02:30:00,80.13,142.608,41.0,32.613 -2020-02-12 02:45:00,89.1,144.674,41.0,32.613 -2020-02-12 03:00:00,85.93,147.511,41.318000000000005,32.613 -2020-02-12 03:15:00,86.61,148.835,41.318000000000005,32.613 -2020-02-12 03:30:00,84.88,150.577,41.318000000000005,32.613 -2020-02-12 03:45:00,88.19,152.627,41.318000000000005,32.613 -2020-02-12 04:00:00,87.93,163.749,42.544,32.613 -2020-02-12 04:15:00,84.22,174.896,42.544,32.613 -2020-02-12 04:30:00,85.75,178.579,42.544,32.613 -2020-02-12 04:45:00,92.54,181.30200000000002,42.544,32.613 -2020-02-12 05:00:00,97.5,214.71400000000003,45.161,32.613 -2020-02-12 05:15:00,96.39,242.053,45.161,32.613 -2020-02-12 05:30:00,93.69,237.52200000000002,45.161,32.613 -2020-02-12 05:45:00,97.9,231.282,45.161,32.613 -2020-02-12 06:00:00,105.8,228.73,61.86600000000001,32.613 -2020-02-12 06:15:00,112.45,235.005,61.86600000000001,32.613 -2020-02-12 06:30:00,115.07,237.782,61.86600000000001,32.613 -2020-02-12 06:45:00,119.42,242.891,61.86600000000001,32.613 -2020-02-12 07:00:00,125.77,242.01,77.814,32.613 -2020-02-12 07:15:00,125.17,246.997,77.814,32.613 -2020-02-12 07:30:00,125.81,249.429,77.814,32.613 -2020-02-12 07:45:00,127.26,250.237,77.814,32.613 -2020-02-12 08:00:00,129.7,248.55900000000003,70.251,32.613 -2020-02-12 08:15:00,127.18,248.287,70.251,32.613 -2020-02-12 08:30:00,128.56,244.618,70.251,32.613 -2020-02-12 08:45:00,125.84,241.541,70.251,32.613 -2020-02-12 09:00:00,125.04,234.88099999999997,66.965,32.613 -2020-02-12 09:15:00,127.84,232.13,66.965,32.613 -2020-02-12 09:30:00,126.14,230.763,66.965,32.613 -2020-02-12 09:45:00,126.04,227.449,66.965,32.613 -2020-02-12 10:00:00,123.44,222.047,63.628,32.613 -2020-02-12 10:15:00,124.2,218.708,63.628,32.613 -2020-02-12 10:30:00,123.23,215.067,63.628,32.613 -2020-02-12 10:45:00,121.64,213.56599999999997,63.628,32.613 -2020-02-12 11:00:00,120.34,210.44400000000002,62.516999999999996,32.613 -2020-02-12 11:15:00,122.82,209.362,62.516999999999996,32.613 -2020-02-12 11:30:00,118.97,207.74099999999999,62.516999999999996,32.613 -2020-02-12 11:45:00,119.71,207.16,62.516999999999996,32.613 -2020-02-12 12:00:00,116.2,203.298,60.888999999999996,32.613 -2020-02-12 12:15:00,117.0,203.38,60.888999999999996,32.613 -2020-02-12 12:30:00,116.14,202.638,60.888999999999996,32.613 -2020-02-12 12:45:00,117.32,203.196,60.888999999999996,32.613 -2020-02-12 13:00:00,114.38,201.357,61.57899999999999,32.613 -2020-02-12 13:15:00,115.3,200.15400000000002,61.57899999999999,32.613 -2020-02-12 13:30:00,113.12,199.065,61.57899999999999,32.613 -2020-02-12 13:45:00,117.39,199.18,61.57899999999999,32.613 -2020-02-12 14:00:00,117.12,199.81,62.602,32.613 -2020-02-12 14:15:00,116.5,199.92,62.602,32.613 -2020-02-12 14:30:00,117.79,200.59799999999998,62.602,32.613 -2020-02-12 14:45:00,117.74,201.63299999999998,62.602,32.613 -2020-02-12 15:00:00,118.94,202.998,64.259,32.613 -2020-02-12 15:15:00,120.51,202.979,64.259,32.613 -2020-02-12 15:30:00,117.33,204.179,64.259,32.613 -2020-02-12 15:45:00,117.84,204.908,64.259,32.613 -2020-02-12 16:00:00,118.53,206.317,67.632,32.613 -2020-02-12 16:15:00,121.72,208.03400000000002,67.632,32.613 -2020-02-12 16:30:00,120.12,210.935,67.632,32.613 -2020-02-12 16:45:00,121.93,212.081,67.632,32.613 -2020-02-12 17:00:00,125.32,214.22400000000002,72.583,32.613 -2020-02-12 17:15:00,126.29,215.782,72.583,32.613 -2020-02-12 17:30:00,131.21,217.66400000000002,72.583,32.613 -2020-02-12 17:45:00,134.28,218.209,72.583,32.613 -2020-02-12 18:00:00,137.59,220.34099999999998,72.744,32.613 -2020-02-12 18:15:00,135.78,218.24900000000002,72.744,32.613 -2020-02-12 18:30:00,137.74,217.264,72.744,32.613 -2020-02-12 18:45:00,138.12,218.18099999999998,72.744,32.613 -2020-02-12 19:00:00,134.84,215.812,69.684,32.613 -2020-02-12 19:15:00,131.69,212.063,69.684,32.613 -2020-02-12 19:30:00,130.22,209.61700000000002,69.684,32.613 -2020-02-12 19:45:00,132.79,207.10299999999998,69.684,32.613 -2020-02-12 20:00:00,122.05,202.40400000000002,70.036,32.613 -2020-02-12 20:15:00,117.75,196.06,70.036,32.613 -2020-02-12 20:30:00,118.3,192.02200000000002,70.036,32.613 -2020-02-12 20:45:00,115.96,190.91099999999997,70.036,32.613 -2020-02-12 21:00:00,112.05,187.018,60.431999999999995,32.613 -2020-02-12 21:15:00,114.02,183.84900000000002,60.431999999999995,32.613 -2020-02-12 21:30:00,113.2,181.83599999999998,60.431999999999995,32.613 -2020-02-12 21:45:00,108.74,180.792,60.431999999999995,32.613 -2020-02-12 22:00:00,99.68,173.387,56.2,32.613 -2020-02-12 22:15:00,100.84,168.261,56.2,32.613 -2020-02-12 22:30:00,105.11,154.175,56.2,32.613 -2020-02-12 22:45:00,104.72,146.158,56.2,32.613 -2020-02-12 23:00:00,97.34,138.80100000000002,47.927,32.613 -2020-02-12 23:15:00,89.87,137.672,47.927,32.613 -2020-02-12 23:30:00,93.4,138.35399999999998,47.927,32.613 -2020-02-12 23:45:00,93.96,138.24,47.927,32.613 -2020-02-13 00:00:00,89.19,132.594,43.794,32.613 -2020-02-13 00:15:00,88.82,131.93,43.794,32.613 -2020-02-13 00:30:00,89.62,132.795,43.794,32.613 -2020-02-13 00:45:00,88.21,134.158,43.794,32.613 -2020-02-13 01:00:00,82.63,136.571,42.397,32.613 -2020-02-13 01:15:00,82.36,136.33,42.397,32.613 -2020-02-13 01:30:00,84.87,136.498,42.397,32.613 -2020-02-13 01:45:00,85.58,136.821,42.397,32.613 -2020-02-13 02:00:00,81.21,139.126,40.010999999999996,32.613 -2020-02-13 02:15:00,80.58,141.09,40.010999999999996,32.613 -2020-02-13 02:30:00,84.33,142.36,40.010999999999996,32.613 -2020-02-13 02:45:00,85.66,144.425,40.010999999999996,32.613 -2020-02-13 03:00:00,84.48,147.266,39.181,32.613 -2020-02-13 03:15:00,84.82,148.589,39.181,32.613 -2020-02-13 03:30:00,87.48,150.329,39.181,32.613 -2020-02-13 03:45:00,87.5,152.391,39.181,32.613 -2020-02-13 04:00:00,84.29,163.512,40.39,32.613 -2020-02-13 04:15:00,82.01,174.649,40.39,32.613 -2020-02-13 04:30:00,82.76,178.34900000000002,40.39,32.613 -2020-02-13 04:45:00,84.79,181.05900000000003,40.39,32.613 -2020-02-13 05:00:00,88.04,214.454,45.504,32.613 -2020-02-13 05:15:00,91.08,241.812,45.504,32.613 -2020-02-13 05:30:00,93.75,237.25400000000002,45.504,32.613 -2020-02-13 05:45:00,99.4,231.018,45.504,32.613 -2020-02-13 06:00:00,105.36,228.475,57.748000000000005,32.613 -2020-02-13 06:15:00,108.99,234.764,57.748000000000005,32.613 -2020-02-13 06:30:00,113.77,237.51,57.748000000000005,32.613 -2020-02-13 06:45:00,118.6,242.61700000000002,57.748000000000005,32.613 -2020-02-13 07:00:00,125.32,241.76,72.138,32.613 -2020-02-13 07:15:00,124.14,246.71900000000002,72.138,32.613 -2020-02-13 07:30:00,127.06,249.11700000000002,72.138,32.613 -2020-02-13 07:45:00,125.97,249.882,72.138,32.613 -2020-02-13 08:00:00,128.01,248.18200000000002,65.542,32.613 -2020-02-13 08:15:00,126.31,247.885,65.542,32.613 -2020-02-13 08:30:00,125.65,244.155,65.542,32.613 -2020-02-13 08:45:00,126.67,241.079,65.542,32.613 -2020-02-13 09:00:00,125.47,234.424,60.523,32.613 -2020-02-13 09:15:00,126.89,231.675,60.523,32.613 -2020-02-13 09:30:00,129.73,230.329,60.523,32.613 -2020-02-13 09:45:00,129.88,227.015,60.523,32.613 -2020-02-13 10:00:00,131.24,221.625,57.449,32.613 -2020-02-13 10:15:00,135.05,218.315,57.449,32.613 -2020-02-13 10:30:00,132.88,214.68400000000003,57.449,32.613 -2020-02-13 10:45:00,133.42,213.19799999999998,57.449,32.613 -2020-02-13 11:00:00,134.39,210.065,54.505,32.613 -2020-02-13 11:15:00,130.99,208.99599999999998,54.505,32.613 -2020-02-13 11:30:00,130.46,207.382,54.505,32.613 -2020-02-13 11:45:00,131.92,206.813,54.505,32.613 -2020-02-13 12:00:00,132.04,202.96599999999998,51.50899999999999,32.613 -2020-02-13 12:15:00,132.58,203.065,51.50899999999999,32.613 -2020-02-13 12:30:00,130.4,202.295,51.50899999999999,32.613 -2020-02-13 12:45:00,130.32,202.84900000000002,51.50899999999999,32.613 -2020-02-13 13:00:00,128.38,201.03599999999997,51.303999999999995,32.613 -2020-02-13 13:15:00,128.1,199.808,51.303999999999995,32.613 -2020-02-13 13:30:00,127.22,198.702,51.303999999999995,32.613 -2020-02-13 13:45:00,127.79,198.81900000000002,51.303999999999995,32.613 -2020-02-13 14:00:00,128.62,199.505,52.785,32.613 -2020-02-13 14:15:00,126.84,199.595,52.785,32.613 -2020-02-13 14:30:00,126.35,200.25599999999997,52.785,32.613 -2020-02-13 14:45:00,128.53,201.30599999999998,52.785,32.613 -2020-02-13 15:00:00,129.93,202.678,56.458999999999996,32.613 -2020-02-13 15:15:00,128.24,202.62900000000002,56.458999999999996,32.613 -2020-02-13 15:30:00,126.87,203.79,56.458999999999996,32.613 -2020-02-13 15:45:00,125.33,204.50099999999998,56.458999999999996,32.613 -2020-02-13 16:00:00,127.19,205.91099999999997,59.388000000000005,32.613 -2020-02-13 16:15:00,124.76,207.618,59.388000000000005,32.613 -2020-02-13 16:30:00,125.2,210.52200000000002,59.388000000000005,32.613 -2020-02-13 16:45:00,126.24,211.65,59.388000000000005,32.613 -2020-02-13 17:00:00,130.87,213.791,64.462,32.613 -2020-02-13 17:15:00,132.84,215.37400000000002,64.462,32.613 -2020-02-13 17:30:00,137.45,217.291,64.462,32.613 -2020-02-13 17:45:00,138.46,217.863,64.462,32.613 -2020-02-13 18:00:00,138.81,220.00900000000001,65.128,32.613 -2020-02-13 18:15:00,139.01,217.975,65.128,32.613 -2020-02-13 18:30:00,137.4,216.99200000000002,65.128,32.613 -2020-02-13 18:45:00,137.2,217.93200000000002,65.128,32.613 -2020-02-13 19:00:00,135.8,215.521,61.316,32.613 -2020-02-13 19:15:00,131.56,211.78799999999998,61.316,32.613 -2020-02-13 19:30:00,134.76,209.36599999999999,61.316,32.613 -2020-02-13 19:45:00,138.85,206.887,61.316,32.613 -2020-02-13 20:00:00,128.5,202.157,59.845,32.613 -2020-02-13 20:15:00,118.6,195.827,59.845,32.613 -2020-02-13 20:30:00,113.73,191.801,59.845,32.613 -2020-02-13 20:45:00,114.63,190.69299999999998,59.845,32.613 -2020-02-13 21:00:00,108.1,186.78400000000002,54.83,32.613 -2020-02-13 21:15:00,111.9,183.602,54.83,32.613 -2020-02-13 21:30:00,111.83,181.59,54.83,32.613 -2020-02-13 21:45:00,111.1,180.563,54.83,32.613 -2020-02-13 22:00:00,98.11,173.14,50.933,32.613 -2020-02-13 22:15:00,97.59,168.041,50.933,32.613 -2020-02-13 22:30:00,96.24,153.912,50.933,32.613 -2020-02-13 22:45:00,91.94,145.90200000000002,50.933,32.613 -2020-02-13 23:00:00,90.76,138.541,45.32899999999999,32.613 -2020-02-13 23:15:00,94.89,137.42700000000002,45.32899999999999,32.613 -2020-02-13 23:30:00,92.24,138.123,45.32899999999999,32.613 -2020-02-13 23:45:00,90.49,138.031,45.32899999999999,32.613 -2020-02-14 00:00:00,80.41,131.44799999999998,43.74,32.613 -2020-02-14 00:15:00,85.51,130.975,43.74,32.613 -2020-02-14 00:30:00,87.17,131.634,43.74,32.613 -2020-02-14 00:45:00,86.07,133.062,43.74,32.613 -2020-02-14 01:00:00,76.17,135.139,42.555,32.613 -2020-02-14 01:15:00,80.38,135.996,42.555,32.613 -2020-02-14 01:30:00,83.38,135.805,42.555,32.613 -2020-02-14 01:45:00,82.94,136.282,42.555,32.613 -2020-02-14 02:00:00,77.22,138.555,41.68600000000001,32.613 -2020-02-14 02:15:00,79.25,140.39600000000002,41.68600000000001,32.613 -2020-02-14 02:30:00,82.1,142.158,41.68600000000001,32.613 -2020-02-14 02:45:00,84.42,144.364,41.68600000000001,32.613 -2020-02-14 03:00:00,82.15,145.974,42.278999999999996,32.613 -2020-02-14 03:15:00,82.27,148.532,42.278999999999996,32.613 -2020-02-14 03:30:00,85.54,150.282,42.278999999999996,32.613 -2020-02-14 03:45:00,84.15,152.6,42.278999999999996,32.613 -2020-02-14 04:00:00,80.78,163.96400000000003,43.742,32.613 -2020-02-14 04:15:00,81.02,175.043,43.742,32.613 -2020-02-14 04:30:00,81.93,178.87900000000002,43.742,32.613 -2020-02-14 04:45:00,84.27,180.37400000000002,43.742,32.613 -2020-02-14 05:00:00,87.26,212.38099999999997,46.973,32.613 -2020-02-14 05:15:00,88.2,241.33599999999998,46.973,32.613 -2020-02-14 05:30:00,91.52,237.951,46.973,32.613 -2020-02-14 05:45:00,95.37,231.71099999999998,46.973,32.613 -2020-02-14 06:00:00,102.89,229.63400000000001,59.63399999999999,32.613 -2020-02-14 06:15:00,106.98,234.238,59.63399999999999,32.613 -2020-02-14 06:30:00,110.84,235.976,59.63399999999999,32.613 -2020-02-14 06:45:00,116.04,242.94799999999998,59.63399999999999,32.613 -2020-02-14 07:00:00,122.39,241.06900000000002,71.631,32.613 -2020-02-14 07:15:00,121.91,247.02900000000002,71.631,32.613 -2020-02-14 07:30:00,125.24,249.47099999999998,71.631,32.613 -2020-02-14 07:45:00,123.6,249.21599999999998,71.631,32.613 -2020-02-14 08:00:00,125.27,246.135,66.181,32.613 -2020-02-14 08:15:00,123.65,245.28400000000002,66.181,32.613 -2020-02-14 08:30:00,123.84,242.607,66.181,32.613 -2020-02-14 08:45:00,123.1,237.773,66.181,32.613 -2020-02-14 09:00:00,121.88,231.95,63.086000000000006,32.613 -2020-02-14 09:15:00,127.03,229.597,63.086000000000006,32.613 -2020-02-14 09:30:00,125.21,227.877,63.086000000000006,32.613 -2020-02-14 09:45:00,125.55,224.393,63.086000000000006,32.613 -2020-02-14 10:00:00,120.82,217.755,60.886,32.613 -2020-02-14 10:15:00,120.02,215.28900000000002,60.886,32.613 -2020-02-14 10:30:00,120.71,211.518,60.886,32.613 -2020-02-14 10:45:00,119.38,209.56,60.886,32.613 -2020-02-14 11:00:00,118.72,206.375,59.391000000000005,32.613 -2020-02-14 11:15:00,118.29,204.453,59.391000000000005,32.613 -2020-02-14 11:30:00,117.37,204.847,59.391000000000005,32.613 -2020-02-14 11:45:00,114.65,204.46,59.391000000000005,32.613 -2020-02-14 12:00:00,113.88,201.791,56.172,32.613 -2020-02-14 12:15:00,113.37,199.643,56.172,32.613 -2020-02-14 12:30:00,111.06,199.00900000000001,56.172,32.613 -2020-02-14 12:45:00,114.09,200.232,56.172,32.613 -2020-02-14 13:00:00,109.71,199.421,54.406000000000006,32.613 -2020-02-14 13:15:00,109.48,199.05900000000003,54.406000000000006,32.613 -2020-02-14 13:30:00,108.28,197.857,54.406000000000006,32.613 -2020-02-14 13:45:00,110.11,197.86599999999999,54.406000000000006,32.613 -2020-02-14 14:00:00,112.37,197.43200000000002,53.578,32.613 -2020-02-14 14:15:00,116.73,197.24900000000002,53.578,32.613 -2020-02-14 14:30:00,116.58,198.28400000000002,53.578,32.613 -2020-02-14 14:45:00,115.29,199.769,53.578,32.613 -2020-02-14 15:00:00,113.44,200.61700000000002,56.568999999999996,32.613 -2020-02-14 15:15:00,112.25,200.078,56.568999999999996,32.613 -2020-02-14 15:30:00,111.0,199.579,56.568999999999996,32.613 -2020-02-14 15:45:00,113.13,200.34599999999998,56.568999999999996,32.613 -2020-02-14 16:00:00,114.03,200.571,60.169,32.613 -2020-02-14 16:15:00,115.56,202.53400000000002,60.169,32.613 -2020-02-14 16:30:00,117.3,205.56599999999997,60.169,32.613 -2020-02-14 16:45:00,117.51,206.63299999999998,60.169,32.613 -2020-02-14 17:00:00,123.02,208.825,65.497,32.613 -2020-02-14 17:15:00,123.09,209.998,65.497,32.613 -2020-02-14 17:30:00,125.89,211.582,65.497,32.613 -2020-02-14 17:45:00,129.33,211.94,65.497,32.613 -2020-02-14 18:00:00,131.38,214.87599999999998,65.082,32.613 -2020-02-14 18:15:00,129.52,212.56799999999998,65.082,32.613 -2020-02-14 18:30:00,129.37,212.02700000000002,65.082,32.613 -2020-02-14 18:45:00,130.15,212.945,65.082,32.613 -2020-02-14 19:00:00,127.94,211.408,60.968,32.613 -2020-02-14 19:15:00,128.26,209.11900000000003,60.968,32.613 -2020-02-14 19:30:00,129.49,206.266,60.968,32.613 -2020-02-14 19:45:00,134.25,203.418,60.968,32.613 -2020-02-14 20:00:00,123.84,198.725,61.123000000000005,32.613 -2020-02-14 20:15:00,113.6,192.33599999999998,61.123000000000005,32.613 -2020-02-14 20:30:00,111.96,188.327,61.123000000000005,32.613 -2020-02-14 20:45:00,109.54,187.91299999999998,61.123000000000005,32.613 -2020-02-14 21:00:00,103.24,184.41400000000002,55.416000000000004,32.613 -2020-02-14 21:15:00,107.66,181.52900000000002,55.416000000000004,32.613 -2020-02-14 21:30:00,106.5,179.583,55.416000000000004,32.613 -2020-02-14 21:45:00,100.0,179.14700000000002,55.416000000000004,32.613 -2020-02-14 22:00:00,92.22,172.795,51.631,32.613 -2020-02-14 22:15:00,89.89,167.59900000000002,51.631,32.613 -2020-02-14 22:30:00,87.77,159.931,51.631,32.613 -2020-02-14 22:45:00,89.65,155.7,51.631,32.613 -2020-02-14 23:00:00,81.69,147.679,44.898,32.613 -2020-02-14 23:15:00,87.18,144.605,44.898,32.613 -2020-02-14 23:30:00,86.71,143.9,44.898,32.613 -2020-02-14 23:45:00,86.41,143.115,44.898,32.613 -2020-02-15 00:00:00,79.08,116.521,42.033,32.431999999999995 -2020-02-15 00:15:00,72.83,111.295,42.033,32.431999999999995 -2020-02-15 00:30:00,73.01,112.603,42.033,32.431999999999995 -2020-02-15 00:45:00,78.83,113.965,42.033,32.431999999999995 -2020-02-15 01:00:00,77.6,116.42,38.255,32.431999999999995 -2020-02-15 01:15:00,76.74,116.64299999999999,38.255,32.431999999999995 -2020-02-15 01:30:00,71.1,116.18299999999999,38.255,32.431999999999995 -2020-02-15 01:45:00,68.6,116.26,38.255,32.431999999999995 -2020-02-15 02:00:00,68.99,119.05,36.404,32.431999999999995 -2020-02-15 02:15:00,77.1,119.95700000000001,36.404,32.431999999999995 -2020-02-15 02:30:00,76.22,120.164,36.404,32.431999999999995 -2020-02-15 02:45:00,74.46,122.105,36.404,32.431999999999995 -2020-02-15 03:00:00,68.01,124.14200000000001,36.083,32.431999999999995 -2020-02-15 03:15:00,70.9,125.476,36.083,32.431999999999995 -2020-02-15 03:30:00,76.79,125.72399999999999,36.083,32.431999999999995 -2020-02-15 03:45:00,72.61,127.546,36.083,32.431999999999995 -2020-02-15 04:00:00,70.23,135.398,36.102,32.431999999999995 -2020-02-15 04:15:00,69.29,144.376,36.102,32.431999999999995 -2020-02-15 04:30:00,69.13,144.93200000000002,36.102,32.431999999999995 -2020-02-15 04:45:00,70.59,145.541,36.102,32.431999999999995 -2020-02-15 05:00:00,72.01,161.107,35.284,32.431999999999995 -2020-02-15 05:15:00,73.57,171.671,35.284,32.431999999999995 -2020-02-15 05:30:00,71.26,168.453,35.284,32.431999999999995 -2020-02-15 05:45:00,73.74,166.71900000000002,35.284,32.431999999999995 -2020-02-15 06:00:00,74.58,183.00599999999997,36.265,32.431999999999995 -2020-02-15 06:15:00,75.42,203.584,36.265,32.431999999999995 -2020-02-15 06:30:00,76.43,199.912,36.265,32.431999999999995 -2020-02-15 06:45:00,78.71,196.593,36.265,32.431999999999995 -2020-02-15 07:00:00,80.29,192.623,40.714,32.431999999999995 -2020-02-15 07:15:00,81.02,196.359,40.714,32.431999999999995 -2020-02-15 07:30:00,83.66,200.294,40.714,32.431999999999995 -2020-02-15 07:45:00,87.0,203.146,40.714,32.431999999999995 -2020-02-15 08:00:00,90.02,204.477,46.692,32.431999999999995 -2020-02-15 08:15:00,90.93,206.66299999999998,46.692,32.431999999999995 -2020-02-15 08:30:00,92.08,205.672,46.692,32.431999999999995 -2020-02-15 08:45:00,93.93,203.412,46.692,32.431999999999995 -2020-02-15 09:00:00,96.51,198.43,48.925,32.431999999999995 -2020-02-15 09:15:00,95.91,196.627,48.925,32.431999999999995 -2020-02-15 09:30:00,96.0,195.517,48.925,32.431999999999995 -2020-02-15 09:45:00,96.39,192.588,48.925,32.431999999999995 -2020-02-15 10:00:00,96.58,187.47799999999998,47.799,32.431999999999995 -2020-02-15 10:15:00,96.18,184.49900000000002,47.799,32.431999999999995 -2020-02-15 10:30:00,95.93,182.03599999999997,47.799,32.431999999999995 -2020-02-15 10:45:00,96.38,181.78799999999998,47.799,32.431999999999995 -2020-02-15 11:00:00,98.86,180.104,44.309,32.431999999999995 -2020-02-15 11:15:00,100.22,177.608,44.309,32.431999999999995 -2020-02-15 11:30:00,99.83,177.332,44.309,32.431999999999995 -2020-02-15 11:45:00,98.79,175.109,44.309,32.431999999999995 -2020-02-15 12:00:00,99.97,170.31400000000002,42.367,32.431999999999995 -2020-02-15 12:15:00,98.06,168.968,42.367,32.431999999999995 -2020-02-15 12:30:00,94.95,168.99599999999998,42.367,32.431999999999995 -2020-02-15 12:45:00,93.22,169.708,42.367,32.431999999999995 -2020-02-15 13:00:00,91.16,169.28,39.036,32.431999999999995 -2020-02-15 13:15:00,90.52,166.933,39.036,32.431999999999995 -2020-02-15 13:30:00,89.43,165.641,39.036,32.431999999999995 -2020-02-15 13:45:00,90.29,165.61900000000003,39.036,32.431999999999995 -2020-02-15 14:00:00,88.86,166.04,37.995,32.431999999999995 -2020-02-15 14:15:00,88.98,165.236,37.995,32.431999999999995 -2020-02-15 14:30:00,89.39,164.611,37.995,32.431999999999995 -2020-02-15 14:45:00,92.56,165.851,37.995,32.431999999999995 -2020-02-15 15:00:00,90.72,167.85299999999998,40.71,32.431999999999995 -2020-02-15 15:15:00,93.83,167.59599999999998,40.71,32.431999999999995 -2020-02-15 15:30:00,90.34,169.00400000000002,40.71,32.431999999999995 -2020-02-15 15:45:00,89.96,170.202,40.71,32.431999999999995 -2020-02-15 16:00:00,91.14,169.48,46.998000000000005,32.431999999999995 -2020-02-15 16:15:00,90.96,172.19400000000002,46.998000000000005,32.431999999999995 -2020-02-15 16:30:00,91.81,175.07299999999998,46.998000000000005,32.431999999999995 -2020-02-15 16:45:00,93.73,177.238,46.998000000000005,32.431999999999995 -2020-02-15 17:00:00,98.33,178.832,55.431000000000004,32.431999999999995 -2020-02-15 17:15:00,99.99,182.15599999999998,55.431000000000004,32.431999999999995 -2020-02-15 17:30:00,103.94,184.06900000000002,55.431000000000004,32.431999999999995 -2020-02-15 17:45:00,107.33,184.25099999999998,55.431000000000004,32.431999999999995 -2020-02-15 18:00:00,110.74,186.635,55.989,32.431999999999995 -2020-02-15 18:15:00,108.62,187.128,55.989,32.431999999999995 -2020-02-15 18:30:00,109.33,187.54,55.989,32.431999999999995 -2020-02-15 18:45:00,107.71,185.11,55.989,32.431999999999995 -2020-02-15 19:00:00,106.51,186.041,50.882,32.431999999999995 -2020-02-15 19:15:00,104.82,183.521,50.882,32.431999999999995 -2020-02-15 19:30:00,103.08,182.215,50.882,32.431999999999995 -2020-02-15 19:45:00,102.01,178.392,50.882,32.431999999999995 -2020-02-15 20:00:00,96.44,176.037,43.172,32.431999999999995 -2020-02-15 20:15:00,92.99,172.542,43.172,32.431999999999995 -2020-02-15 20:30:00,90.07,168.233,43.172,32.431999999999995 -2020-02-15 20:45:00,89.39,166.56,43.172,32.431999999999995 -2020-02-15 21:00:00,84.61,166.14,37.599000000000004,32.431999999999995 -2020-02-15 21:15:00,83.31,164.019,37.599000000000004,32.431999999999995 -2020-02-15 21:30:00,82.48,163.214,37.599000000000004,32.431999999999995 -2020-02-15 21:45:00,81.66,162.619,37.599000000000004,32.431999999999995 -2020-02-15 22:00:00,77.87,157.94799999999998,39.047,32.431999999999995 -2020-02-15 22:15:00,76.64,155.707,39.047,32.431999999999995 -2020-02-15 22:30:00,74.14,154.209,39.047,32.431999999999995 -2020-02-15 22:45:00,73.06,152.016,39.047,32.431999999999995 -2020-02-15 23:00:00,69.29,147.38299999999998,32.339,32.431999999999995 -2020-02-15 23:15:00,69.86,142.295,32.339,32.431999999999995 -2020-02-15 23:30:00,65.81,140.22,32.339,32.431999999999995 -2020-02-15 23:45:00,64.83,137.039,32.339,32.431999999999995 -2020-02-16 00:00:00,59.92,116.76700000000001,29.988000000000003,32.431999999999995 -2020-02-16 00:15:00,60.99,111.206,29.988000000000003,32.431999999999995 -2020-02-16 00:30:00,60.45,112.125,29.988000000000003,32.431999999999995 -2020-02-16 00:45:00,59.8,114.161,29.988000000000003,32.431999999999995 -2020-02-16 01:00:00,56.82,116.45,28.531999999999996,32.431999999999995 -2020-02-16 01:15:00,58.25,117.669,28.531999999999996,32.431999999999995 -2020-02-16 01:30:00,57.58,117.70200000000001,28.531999999999996,32.431999999999995 -2020-02-16 01:45:00,56.97,117.46600000000001,28.531999999999996,32.431999999999995 -2020-02-16 02:00:00,55.01,119.524,27.805999999999997,32.431999999999995 -2020-02-16 02:15:00,55.92,119.61399999999999,27.805999999999997,32.431999999999995 -2020-02-16 02:30:00,55.77,120.67200000000001,27.805999999999997,32.431999999999995 -2020-02-16 02:45:00,55.31,123.05799999999999,27.805999999999997,32.431999999999995 -2020-02-16 03:00:00,54.28,125.42200000000001,26.193,32.431999999999995 -2020-02-16 03:15:00,56.05,126.24799999999999,26.193,32.431999999999995 -2020-02-16 03:30:00,55.3,127.836,26.193,32.431999999999995 -2020-02-16 03:45:00,55.85,129.576,26.193,32.431999999999995 -2020-02-16 04:00:00,55.44,137.189,27.19,32.431999999999995 -2020-02-16 04:15:00,56.58,145.164,27.19,32.431999999999995 -2020-02-16 04:30:00,56.86,145.828,27.19,32.431999999999995 -2020-02-16 04:45:00,58.08,146.68,27.19,32.431999999999995 -2020-02-16 05:00:00,58.38,158.819,28.166999999999998,32.431999999999995 -2020-02-16 05:15:00,58.85,167.02900000000002,28.166999999999998,32.431999999999995 -2020-02-16 05:30:00,59.76,163.615,28.166999999999998,32.431999999999995 -2020-02-16 05:45:00,60.47,162.11700000000002,28.166999999999998,32.431999999999995 -2020-02-16 06:00:00,61.37,178.252,27.16,32.431999999999995 -2020-02-16 06:15:00,64.85,197.18900000000002,27.16,32.431999999999995 -2020-02-16 06:30:00,63.55,192.395,27.16,32.431999999999995 -2020-02-16 06:45:00,65.16,188.02,27.16,32.431999999999995 -2020-02-16 07:00:00,68.28,186.46,29.578000000000003,32.431999999999995 -2020-02-16 07:15:00,67.41,189.298,29.578000000000003,32.431999999999995 -2020-02-16 07:30:00,69.82,192.037,29.578000000000003,32.431999999999995 -2020-02-16 07:45:00,72.92,194.109,29.578000000000003,32.431999999999995 -2020-02-16 08:00:00,74.96,197.226,34.650999999999996,32.431999999999995 -2020-02-16 08:15:00,75.92,199.338,34.650999999999996,32.431999999999995 -2020-02-16 08:30:00,77.55,199.925,34.650999999999996,32.431999999999995 -2020-02-16 08:45:00,79.55,199.627,34.650999999999996,32.431999999999995 -2020-02-16 09:00:00,81.5,194.25599999999997,38.080999999999996,32.431999999999995 -2020-02-16 09:15:00,82.17,192.979,38.080999999999996,32.431999999999995 -2020-02-16 09:30:00,83.33,191.74900000000002,38.080999999999996,32.431999999999995 -2020-02-16 09:45:00,84.69,188.739,38.080999999999996,32.431999999999995 -2020-02-16 10:00:00,85.76,186.095,39.934,32.431999999999995 -2020-02-16 10:15:00,85.84,183.66400000000002,39.934,32.431999999999995 -2020-02-16 10:30:00,89.06,181.803,39.934,32.431999999999995 -2020-02-16 10:45:00,89.12,179.768,39.934,32.431999999999995 -2020-02-16 11:00:00,92.11,178.949,43.74100000000001,32.431999999999995 -2020-02-16 11:15:00,95.2,176.582,43.74100000000001,32.431999999999995 -2020-02-16 11:30:00,96.92,175.487,43.74100000000001,32.431999999999995 -2020-02-16 11:45:00,95.96,173.87099999999998,43.74100000000001,32.431999999999995 -2020-02-16 12:00:00,93.67,168.581,40.001999999999995,32.431999999999995 -2020-02-16 12:15:00,92.58,169.065,40.001999999999995,32.431999999999995 -2020-02-16 12:30:00,89.3,167.671,40.001999999999995,32.431999999999995 -2020-02-16 12:45:00,90.13,167.426,40.001999999999995,32.431999999999995 -2020-02-16 13:00:00,84.56,166.325,37.855,32.431999999999995 -2020-02-16 13:15:00,84.84,166.843,37.855,32.431999999999995 -2020-02-16 13:30:00,82.46,165.296,37.855,32.431999999999995 -2020-02-16 13:45:00,82.47,164.67700000000002,37.855,32.431999999999995 -2020-02-16 14:00:00,80.52,165.43,35.946999999999996,32.431999999999995 -2020-02-16 14:15:00,80.46,165.77599999999998,35.946999999999996,32.431999999999995 -2020-02-16 14:30:00,80.76,166.28,35.946999999999996,32.431999999999995 -2020-02-16 14:45:00,80.96,167.1,35.946999999999996,32.431999999999995 -2020-02-16 15:00:00,81.11,167.64,35.138000000000005,32.431999999999995 -2020-02-16 15:15:00,79.85,168.058,35.138000000000005,32.431999999999995 -2020-02-16 15:30:00,79.76,169.99,35.138000000000005,32.431999999999995 -2020-02-16 15:45:00,80.59,171.847,35.138000000000005,32.431999999999995 -2020-02-16 16:00:00,82.28,172.89,38.672,32.431999999999995 -2020-02-16 16:15:00,81.81,174.72099999999998,38.672,32.431999999999995 -2020-02-16 16:30:00,81.95,177.882,38.672,32.431999999999995 -2020-02-16 16:45:00,84.44,180.15599999999998,38.672,32.431999999999995 -2020-02-16 17:00:00,88.25,181.767,48.684,32.431999999999995 -2020-02-16 17:15:00,89.74,184.832,48.684,32.431999999999995 -2020-02-16 17:30:00,92.59,187.075,48.684,32.431999999999995 -2020-02-16 17:45:00,97.75,189.489,48.684,32.431999999999995 -2020-02-16 18:00:00,103.5,191.37400000000002,51.568999999999996,32.431999999999995 -2020-02-16 18:15:00,103.77,193.201,51.568999999999996,32.431999999999995 -2020-02-16 18:30:00,103.86,191.58,51.568999999999996,32.431999999999995 -2020-02-16 18:45:00,101.12,190.97400000000002,51.568999999999996,32.431999999999995 -2020-02-16 19:00:00,100.36,191.597,48.608000000000004,32.431999999999995 -2020-02-16 19:15:00,97.84,189.642,48.608000000000004,32.431999999999995 -2020-02-16 19:30:00,100.63,188.19299999999998,48.608000000000004,32.431999999999995 -2020-02-16 19:45:00,103.68,185.798,48.608000000000004,32.431999999999995 -2020-02-16 20:00:00,99.8,183.389,43.733999999999995,32.431999999999995 -2020-02-16 20:15:00,93.26,180.862,43.733999999999995,32.431999999999995 -2020-02-16 20:30:00,92.18,177.79,43.733999999999995,32.431999999999995 -2020-02-16 20:45:00,90.05,174.91400000000002,43.733999999999995,32.431999999999995 -2020-02-16 21:00:00,87.92,171.957,39.283,32.431999999999995 -2020-02-16 21:15:00,88.88,169.209,39.283,32.431999999999995 -2020-02-16 21:30:00,93.52,168.675,39.283,32.431999999999995 -2020-02-16 21:45:00,95.15,168.239,39.283,32.431999999999995 -2020-02-16 22:00:00,90.26,162.445,40.111,32.431999999999995 -2020-02-16 22:15:00,89.37,159.447,40.111,32.431999999999995 -2020-02-16 22:30:00,90.03,154.82,40.111,32.431999999999995 -2020-02-16 22:45:00,90.58,151.776,40.111,32.431999999999995 -2020-02-16 23:00:00,86.82,144.405,35.791,32.431999999999995 -2020-02-16 23:15:00,85.0,141.168,35.791,32.431999999999995 -2020-02-16 23:30:00,86.25,139.881,35.791,32.431999999999995 -2020-02-16 23:45:00,84.99,137.593,35.791,32.431999999999995 -2020-02-17 00:00:00,81.05,120.693,34.311,32.613 -2020-02-17 00:15:00,80.07,118.045,34.311,32.613 -2020-02-17 00:30:00,81.59,119.06200000000001,34.311,32.613 -2020-02-17 00:45:00,81.45,120.56,34.311,32.613 -2020-02-17 01:00:00,76.96,122.838,34.585,32.613 -2020-02-17 01:15:00,76.08,123.53,34.585,32.613 -2020-02-17 01:30:00,79.32,123.61200000000001,34.585,32.613 -2020-02-17 01:45:00,79.06,123.48700000000001,34.585,32.613 -2020-02-17 02:00:00,75.2,125.52799999999999,34.111,32.613 -2020-02-17 02:15:00,77.83,127.016,34.111,32.613 -2020-02-17 02:30:00,78.92,128.418,34.111,32.613 -2020-02-17 02:45:00,80.45,130.196,34.111,32.613 -2020-02-17 03:00:00,74.01,133.811,32.435,32.613 -2020-02-17 03:15:00,76.74,136.253,32.435,32.613 -2020-02-17 03:30:00,81.58,137.588,32.435,32.613 -2020-02-17 03:45:00,81.79,138.791,32.435,32.613 -2020-02-17 04:00:00,80.2,150.708,33.04,32.613 -2020-02-17 04:15:00,77.79,162.775,33.04,32.613 -2020-02-17 04:30:00,85.23,165.579,33.04,32.613 -2020-02-17 04:45:00,86.55,166.584,33.04,32.613 -2020-02-17 05:00:00,89.34,194.2,40.399,32.613 -2020-02-17 05:15:00,84.87,222.275,40.399,32.613 -2020-02-17 05:30:00,88.55,219.07,40.399,32.613 -2020-02-17 05:45:00,93.5,212.00799999999998,40.399,32.613 -2020-02-17 06:00:00,101.21,210.477,60.226000000000006,32.613 -2020-02-17 06:15:00,106.95,214.78900000000002,60.226000000000006,32.613 -2020-02-17 06:30:00,112.4,217.851,60.226000000000006,32.613 -2020-02-17 06:45:00,116.6,222.146,60.226000000000006,32.613 -2020-02-17 07:00:00,122.33,222.924,73.578,32.613 -2020-02-17 07:15:00,122.39,226.99400000000003,73.578,32.613 -2020-02-17 07:30:00,122.25,228.925,73.578,32.613 -2020-02-17 07:45:00,124.77,228.46599999999998,73.578,32.613 -2020-02-17 08:00:00,129.11,226.765,66.58,32.613 -2020-02-17 08:15:00,127.63,226.747,66.58,32.613 -2020-02-17 08:30:00,123.89,223.28599999999997,66.58,32.613 -2020-02-17 08:45:00,122.13,219.752,66.58,32.613 -2020-02-17 09:00:00,124.23,213.396,62.0,32.613 -2020-02-17 09:15:00,125.02,208.692,62.0,32.613 -2020-02-17 09:30:00,125.32,206.49,62.0,32.613 -2020-02-17 09:45:00,122.32,203.72299999999998,62.0,32.613 -2020-02-17 10:00:00,121.29,200.037,59.099,32.613 -2020-02-17 10:15:00,125.81,197.31599999999997,59.099,32.613 -2020-02-17 10:30:00,124.92,194.606,59.099,32.613 -2020-02-17 10:45:00,127.08,193.273,59.099,32.613 -2020-02-17 11:00:00,122.8,189.91400000000002,57.729,32.613 -2020-02-17 11:15:00,123.95,189.315,57.729,32.613 -2020-02-17 11:30:00,125.08,189.584,57.729,32.613 -2020-02-17 11:45:00,121.96,187.597,57.729,32.613 -2020-02-17 12:00:00,120.65,183.946,55.615,32.613 -2020-02-17 12:15:00,122.1,184.45,55.615,32.613 -2020-02-17 12:30:00,120.86,183.24200000000002,55.615,32.613 -2020-02-17 12:45:00,120.22,184.47099999999998,55.615,32.613 -2020-02-17 13:00:00,118.27,183.98,56.515,32.613 -2020-02-17 13:15:00,119.03,183.113,56.515,32.613 -2020-02-17 13:30:00,118.32,181.043,56.515,32.613 -2020-02-17 13:45:00,117.07,180.481,56.515,32.613 -2020-02-17 14:00:00,115.45,180.667,58.1,32.613 -2020-02-17 14:15:00,118.18,180.386,58.1,32.613 -2020-02-17 14:30:00,118.2,180.34400000000002,58.1,32.613 -2020-02-17 14:45:00,115.44,181.199,58.1,32.613 -2020-02-17 15:00:00,117.71,183.47299999999998,59.801,32.613 -2020-02-17 15:15:00,119.93,182.456,59.801,32.613 -2020-02-17 15:30:00,119.86,183.56599999999997,59.801,32.613 -2020-02-17 15:45:00,115.36,184.96400000000003,59.801,32.613 -2020-02-17 16:00:00,116.04,186.22400000000002,62.901,32.613 -2020-02-17 16:15:00,117.83,187.304,62.901,32.613 -2020-02-17 16:30:00,118.12,189.513,62.901,32.613 -2020-02-17 16:45:00,120.01,190.609,62.901,32.613 -2020-02-17 17:00:00,123.07,192.03900000000002,70.418,32.613 -2020-02-17 17:15:00,128.21,194.203,70.418,32.613 -2020-02-17 17:30:00,127.74,195.93200000000002,70.418,32.613 -2020-02-17 17:45:00,131.41,196.90400000000002,70.418,32.613 -2020-02-17 18:00:00,133.59,199.207,71.726,32.613 -2020-02-17 18:15:00,132.22,198.90099999999998,71.726,32.613 -2020-02-17 18:30:00,134.7,197.90400000000002,71.726,32.613 -2020-02-17 18:45:00,132.33,198.072,71.726,32.613 -2020-02-17 19:00:00,129.8,197.084,65.997,32.613 -2020-02-17 19:15:00,128.73,194.02,65.997,32.613 -2020-02-17 19:30:00,129.34,193.07299999999998,65.997,32.613 -2020-02-17 19:45:00,129.08,189.891,65.997,32.613 -2020-02-17 20:00:00,119.74,185.122,68.09100000000001,32.613 -2020-02-17 20:15:00,116.95,180.209,68.09100000000001,32.613 -2020-02-17 20:30:00,113.25,175.343,68.09100000000001,32.613 -2020-02-17 20:45:00,111.85,174.063,68.09100000000001,32.613 -2020-02-17 21:00:00,106.25,171.602,59.617,32.613 -2020-02-17 21:15:00,111.38,167.703,59.617,32.613 -2020-02-17 21:30:00,111.19,166.368,59.617,32.613 -2020-02-17 21:45:00,107.47,165.453,59.617,32.613 -2020-02-17 22:00:00,100.26,156.791,54.938,32.613 -2020-02-17 22:15:00,96.86,152.559,54.938,32.613 -2020-02-17 22:30:00,93.99,138.485,54.938,32.613 -2020-02-17 22:45:00,92.23,130.718,54.938,32.613 -2020-02-17 23:00:00,85.74,124.1,47.43,32.613 -2020-02-17 23:15:00,87.58,123.447,47.43,32.613 -2020-02-17 23:30:00,86.64,124.87200000000001,47.43,32.613 -2020-02-17 23:45:00,94.27,125.181,47.43,32.613 -2020-02-18 00:00:00,90.43,119.78299999999999,48.354,32.613 -2020-02-18 00:15:00,87.49,118.541,48.354,32.613 -2020-02-18 00:30:00,81.76,118.62799999999999,48.354,32.613 -2020-02-18 00:45:00,80.22,119.175,48.354,32.613 -2020-02-18 01:00:00,84.53,121.22,45.68600000000001,32.613 -2020-02-18 01:15:00,84.82,121.465,45.68600000000001,32.613 -2020-02-18 01:30:00,82.61,121.7,45.68600000000001,32.613 -2020-02-18 01:45:00,78.21,121.87,45.68600000000001,32.613 -2020-02-18 02:00:00,82.26,123.896,44.269,32.613 -2020-02-18 02:15:00,84.76,125.286,44.269,32.613 -2020-02-18 02:30:00,83.23,126.115,44.269,32.613 -2020-02-18 02:45:00,78.58,127.90799999999999,44.269,32.613 -2020-02-18 03:00:00,79.52,130.341,44.187,32.613 -2020-02-18 03:15:00,84.9,131.954,44.187,32.613 -2020-02-18 03:30:00,86.95,133.75799999999998,44.187,32.613 -2020-02-18 03:45:00,85.47,135.149,44.187,32.613 -2020-02-18 04:00:00,80.95,146.857,46.126999999999995,32.613 -2020-02-18 04:15:00,86.03,158.57399999999998,46.126999999999995,32.613 -2020-02-18 04:30:00,90.64,161.08700000000002,46.126999999999995,32.613 -2020-02-18 04:45:00,93.17,163.274,46.126999999999995,32.613 -2020-02-18 05:00:00,95.59,195.803,49.666000000000004,32.613 -2020-02-18 05:15:00,96.2,223.696,49.666000000000004,32.613 -2020-02-18 05:30:00,101.55,218.959,49.666000000000004,32.613 -2020-02-18 05:45:00,105.28,211.90200000000002,49.666000000000004,32.613 -2020-02-18 06:00:00,111.44,209.226,61.077,32.613 -2020-02-18 06:15:00,110.26,215.14700000000002,61.077,32.613 -2020-02-18 06:30:00,113.34,217.54,61.077,32.613 -2020-02-18 06:45:00,118.15,221.449,61.077,32.613 -2020-02-18 07:00:00,124.13,222.07,74.717,32.613 -2020-02-18 07:15:00,123.32,225.953,74.717,32.613 -2020-02-18 07:30:00,123.67,227.312,74.717,32.613 -2020-02-18 07:45:00,124.55,227.015,74.717,32.613 -2020-02-18 08:00:00,129.02,225.399,69.033,32.613 -2020-02-18 08:15:00,128.96,224.354,69.033,32.613 -2020-02-18 08:30:00,129.77,220.667,69.033,32.613 -2020-02-18 08:45:00,127.77,216.868,69.033,32.613 -2020-02-18 09:00:00,129.25,209.703,63.113,32.613 -2020-02-18 09:15:00,133.26,206.56900000000002,63.113,32.613 -2020-02-18 09:30:00,129.51,205.06,63.113,32.613 -2020-02-18 09:45:00,127.42,202.097,63.113,32.613 -2020-02-18 10:00:00,123.91,197.831,61.461999999999996,32.613 -2020-02-18 10:15:00,124.56,194.101,61.461999999999996,32.613 -2020-02-18 10:30:00,124.88,191.581,61.461999999999996,32.613 -2020-02-18 10:45:00,127.18,190.551,61.461999999999996,32.613 -2020-02-18 11:00:00,126.45,188.638,59.614,32.613 -2020-02-18 11:15:00,127.78,187.733,59.614,32.613 -2020-02-18 11:30:00,124.02,186.854,59.614,32.613 -2020-02-18 11:45:00,124.8,185.56099999999998,59.614,32.613 -2020-02-18 12:00:00,119.33,180.585,57.415,32.613 -2020-02-18 12:15:00,122.01,180.7,57.415,32.613 -2020-02-18 12:30:00,121.83,180.183,57.415,32.613 -2020-02-18 12:45:00,118.63,181.13099999999997,57.415,32.613 -2020-02-18 13:00:00,114.34,180.268,58.534,32.613 -2020-02-18 13:15:00,116.38,179.06400000000002,58.534,32.613 -2020-02-18 13:30:00,116.49,178.125,58.534,32.613 -2020-02-18 13:45:00,118.33,177.733,58.534,32.613 -2020-02-18 14:00:00,120.0,178.25900000000001,59.415,32.613 -2020-02-18 14:15:00,120.28,178.108,59.415,32.613 -2020-02-18 14:30:00,120.23,178.66400000000002,59.415,32.613 -2020-02-18 14:45:00,123.79,179.44299999999998,59.415,32.613 -2020-02-18 15:00:00,121.51,181.301,62.071999999999996,32.613 -2020-02-18 15:15:00,120.26,180.593,62.071999999999996,32.613 -2020-02-18 15:30:00,122.85,181.87900000000002,62.071999999999996,32.613 -2020-02-18 15:45:00,121.26,182.873,62.071999999999996,32.613 -2020-02-18 16:00:00,122.32,184.453,64.99,32.613 -2020-02-18 16:15:00,121.34,185.988,64.99,32.613 -2020-02-18 16:30:00,122.1,188.827,64.99,32.613 -2020-02-18 16:45:00,124.58,190.19,64.99,32.613 -2020-02-18 17:00:00,130.96,192.155,72.658,32.613 -2020-02-18 17:15:00,129.03,194.37,72.658,32.613 -2020-02-18 17:30:00,131.39,196.77700000000002,72.658,32.613 -2020-02-18 17:45:00,134.3,197.639,72.658,32.613 -2020-02-18 18:00:00,137.03,199.84099999999998,73.645,32.613 -2020-02-18 18:15:00,135.62,199.113,73.645,32.613 -2020-02-18 18:30:00,134.52,197.81,73.645,32.613 -2020-02-18 18:45:00,134.65,198.78099999999998,73.645,32.613 -2020-02-18 19:00:00,130.82,197.82299999999998,67.085,32.613 -2020-02-18 19:15:00,130.82,194.50099999999998,67.085,32.613 -2020-02-18 19:30:00,138.13,192.917,67.085,32.613 -2020-02-18 19:45:00,138.56,189.81,67.085,32.613 -2020-02-18 20:00:00,126.03,185.172,66.138,32.613 -2020-02-18 20:15:00,119.06,179.63099999999997,66.138,32.613 -2020-02-18 20:30:00,114.73,175.77599999999998,66.138,32.613 -2020-02-18 20:45:00,113.6,173.94299999999998,66.138,32.613 -2020-02-18 21:00:00,107.89,170.787,57.512,32.613 -2020-02-18 21:15:00,114.35,167.757,57.512,32.613 -2020-02-18 21:30:00,113.36,165.707,57.512,32.613 -2020-02-18 21:45:00,111.8,165.03599999999997,57.512,32.613 -2020-02-18 22:00:00,100.85,158.043,54.545,32.613 -2020-02-18 22:15:00,99.95,153.578,54.545,32.613 -2020-02-18 22:30:00,100.92,139.555,54.545,32.613 -2020-02-18 22:45:00,102.09,132.065,54.545,32.613 -2020-02-18 23:00:00,97.23,125.461,48.605,32.613 -2020-02-18 23:15:00,94.48,123.948,48.605,32.613 -2020-02-18 23:30:00,89.92,125.03,48.605,32.613 -2020-02-18 23:45:00,91.19,124.929,48.605,32.613 -2020-02-19 00:00:00,90.06,119.571,45.675,32.613 -2020-02-19 00:15:00,88.18,118.331,45.675,32.613 -2020-02-19 00:30:00,88.53,118.399,45.675,32.613 -2020-02-19 00:45:00,85.32,118.94200000000001,45.675,32.613 -2020-02-19 01:00:00,85.6,120.95299999999999,43.015,32.613 -2020-02-19 01:15:00,87.17,121.185,43.015,32.613 -2020-02-19 01:30:00,86.58,121.40700000000001,43.015,32.613 -2020-02-19 01:45:00,82.82,121.579,43.015,32.613 -2020-02-19 02:00:00,84.77,123.601,41.0,32.613 -2020-02-19 02:15:00,86.47,124.98700000000001,41.0,32.613 -2020-02-19 02:30:00,83.73,125.83200000000001,41.0,32.613 -2020-02-19 02:45:00,83.36,127.624,41.0,32.613 -2020-02-19 03:00:00,86.31,130.064,41.318000000000005,32.613 -2020-02-19 03:15:00,87.22,131.672,41.318000000000005,32.613 -2020-02-19 03:30:00,83.52,133.47,41.318000000000005,32.613 -2020-02-19 03:45:00,86.28,134.872,41.318000000000005,32.613 -2020-02-19 04:00:00,81.82,146.582,42.544,32.613 -2020-02-19 04:15:00,86.0,158.291,42.544,32.613 -2020-02-19 04:30:00,91.07,160.819,42.544,32.613 -2020-02-19 04:45:00,93.83,162.994,42.544,32.613 -2020-02-19 05:00:00,95.03,195.505,45.161,32.613 -2020-02-19 05:15:00,92.61,223.41400000000002,45.161,32.613 -2020-02-19 05:30:00,95.38,218.649,45.161,32.613 -2020-02-19 05:45:00,101.64,211.597,45.161,32.613 -2020-02-19 06:00:00,106.45,208.93200000000002,61.86600000000001,32.613 -2020-02-19 06:15:00,110.83,214.862,61.86600000000001,32.613 -2020-02-19 06:30:00,114.29,217.22099999999998,61.86600000000001,32.613 -2020-02-19 06:45:00,118.12,221.122,61.86600000000001,32.613 -2020-02-19 07:00:00,124.11,221.766,77.814,32.613 -2020-02-19 07:15:00,126.22,225.61900000000003,77.814,32.613 -2020-02-19 07:30:00,128.75,226.94299999999998,77.814,32.613 -2020-02-19 07:45:00,127.24,226.606,77.814,32.613 -2020-02-19 08:00:00,130.4,224.96900000000002,70.251,32.613 -2020-02-19 08:15:00,128.37,223.905,70.251,32.613 -2020-02-19 08:30:00,132.94,220.16299999999998,70.251,32.613 -2020-02-19 08:45:00,130.84,216.36900000000003,70.251,32.613 -2020-02-19 09:00:00,133.42,209.21200000000002,66.965,32.613 -2020-02-19 09:15:00,135.01,206.08,66.965,32.613 -2020-02-19 09:30:00,136.59,204.59099999999998,66.965,32.613 -2020-02-19 09:45:00,138.7,201.63400000000001,66.965,32.613 -2020-02-19 10:00:00,134.17,197.37900000000002,63.628,32.613 -2020-02-19 10:15:00,135.78,193.68099999999998,63.628,32.613 -2020-02-19 10:30:00,135.61,191.174,63.628,32.613 -2020-02-19 10:45:00,136.33,190.16,63.628,32.613 -2020-02-19 11:00:00,134.83,188.235,62.516999999999996,32.613 -2020-02-19 11:15:00,132.88,187.34599999999998,62.516999999999996,32.613 -2020-02-19 11:30:00,130.69,186.47299999999998,62.516999999999996,32.613 -2020-02-19 11:45:00,126.99,185.19299999999998,62.516999999999996,32.613 -2020-02-19 12:00:00,126.05,180.234,60.888999999999996,32.613 -2020-02-19 12:15:00,122.3,180.364,60.888999999999996,32.613 -2020-02-19 12:30:00,119.64,179.81799999999998,60.888999999999996,32.613 -2020-02-19 12:45:00,118.58,180.763,60.888999999999996,32.613 -2020-02-19 13:00:00,115.52,179.93,61.57899999999999,32.613 -2020-02-19 13:15:00,116.57,178.705,61.57899999999999,32.613 -2020-02-19 13:30:00,113.94,177.752,61.57899999999999,32.613 -2020-02-19 13:45:00,115.97,177.36,61.57899999999999,32.613 -2020-02-19 14:00:00,114.21,177.94400000000002,62.602,32.613 -2020-02-19 14:15:00,115.49,177.77200000000002,62.602,32.613 -2020-02-19 14:30:00,115.54,178.308,62.602,32.613 -2020-02-19 14:45:00,118.46,179.09900000000002,62.602,32.613 -2020-02-19 15:00:00,119.72,180.96599999999998,64.259,32.613 -2020-02-19 15:15:00,122.91,180.229,64.259,32.613 -2020-02-19 15:30:00,120.97,181.476,64.259,32.613 -2020-02-19 15:45:00,121.61,182.453,64.259,32.613 -2020-02-19 16:00:00,124.31,184.03400000000002,67.632,32.613 -2020-02-19 16:15:00,123.96,185.55599999999998,67.632,32.613 -2020-02-19 16:30:00,123.8,188.396,67.632,32.613 -2020-02-19 16:45:00,124.67,189.734,67.632,32.613 -2020-02-19 17:00:00,129.4,191.702,72.583,32.613 -2020-02-19 17:15:00,130.26,193.933,72.583,32.613 -2020-02-19 17:30:00,133.14,196.37,72.583,32.613 -2020-02-19 17:45:00,133.67,197.252,72.583,32.613 -2020-02-19 18:00:00,138.63,199.46599999999998,72.744,32.613 -2020-02-19 18:15:00,135.29,198.795,72.744,32.613 -2020-02-19 18:30:00,137.36,197.49099999999999,72.744,32.613 -2020-02-19 18:45:00,134.04,198.484,72.744,32.613 -2020-02-19 19:00:00,131.09,197.487,69.684,32.613 -2020-02-19 19:15:00,130.73,194.18,69.684,32.613 -2020-02-19 19:30:00,136.9,192.62099999999998,69.684,32.613 -2020-02-19 19:45:00,137.66,189.549,69.684,32.613 -2020-02-19 20:00:00,126.33,184.882,70.036,32.613 -2020-02-19 20:15:00,117.21,179.354,70.036,32.613 -2020-02-19 20:30:00,116.21,175.517,70.036,32.613 -2020-02-19 20:45:00,114.1,173.687,70.036,32.613 -2020-02-19 21:00:00,108.92,170.518,60.431999999999995,32.613 -2020-02-19 21:15:00,114.41,167.477,60.431999999999995,32.613 -2020-02-19 21:30:00,113.68,165.428,60.431999999999995,32.613 -2020-02-19 21:45:00,113.09,164.775,60.431999999999995,32.613 -2020-02-19 22:00:00,101.66,157.768,56.2,32.613 -2020-02-19 22:15:00,97.67,153.327,56.2,32.613 -2020-02-19 22:30:00,95.3,139.265,56.2,32.613 -2020-02-19 22:45:00,95.0,131.78,56.2,32.613 -2020-02-19 23:00:00,94.34,125.169,47.927,32.613 -2020-02-19 23:15:00,97.09,123.671,47.927,32.613 -2020-02-19 23:30:00,95.13,124.764,47.927,32.613 -2020-02-19 23:45:00,91.62,124.68700000000001,47.927,32.613 -2020-02-20 00:00:00,84.69,119.354,43.794,32.613 -2020-02-20 00:15:00,87.96,118.113,43.794,32.613 -2020-02-20 00:30:00,88.54,118.163,43.794,32.613 -2020-02-20 00:45:00,87.1,118.70299999999999,43.794,32.613 -2020-02-20 01:00:00,80.45,120.679,42.397,32.613 -2020-02-20 01:15:00,79.74,120.897,42.397,32.613 -2020-02-20 01:30:00,79.29,121.10799999999999,42.397,32.613 -2020-02-20 01:45:00,84.73,121.281,42.397,32.613 -2020-02-20 02:00:00,85.65,123.29799999999999,40.010999999999996,32.613 -2020-02-20 02:15:00,86.23,124.682,40.010999999999996,32.613 -2020-02-20 02:30:00,82.4,125.541,40.010999999999996,32.613 -2020-02-20 02:45:00,80.94,127.333,40.010999999999996,32.613 -2020-02-20 03:00:00,86.23,129.78,39.181,32.613 -2020-02-20 03:15:00,87.78,131.382,39.181,32.613 -2020-02-20 03:30:00,86.6,133.175,39.181,32.613 -2020-02-20 03:45:00,82.73,134.589,39.181,32.613 -2020-02-20 04:00:00,84.08,146.3,40.39,32.613 -2020-02-20 04:15:00,82.86,158.0,40.39,32.613 -2020-02-20 04:30:00,83.77,160.543,40.39,32.613 -2020-02-20 04:45:00,86.58,162.708,40.39,32.613 -2020-02-20 05:00:00,97.42,195.2,45.504,32.613 -2020-02-20 05:15:00,99.75,223.127,45.504,32.613 -2020-02-20 05:30:00,97.65,218.333,45.504,32.613 -2020-02-20 05:45:00,102.13,211.28599999999997,45.504,32.613 -2020-02-20 06:00:00,106.74,208.63,57.748000000000005,32.613 -2020-02-20 06:15:00,110.76,214.57,57.748000000000005,32.613 -2020-02-20 06:30:00,114.34,216.894,57.748000000000005,32.613 -2020-02-20 06:45:00,118.21,220.787,57.748000000000005,32.613 -2020-02-20 07:00:00,123.28,221.452,72.138,32.613 -2020-02-20 07:15:00,123.1,225.27700000000002,72.138,32.613 -2020-02-20 07:30:00,125.66,226.56400000000002,72.138,32.613 -2020-02-20 07:45:00,125.06,226.188,72.138,32.613 -2020-02-20 08:00:00,127.31,224.528,65.542,32.613 -2020-02-20 08:15:00,125.33,223.446,65.542,32.613 -2020-02-20 08:30:00,126.93,219.65,65.542,32.613 -2020-02-20 08:45:00,122.41,215.863,65.542,32.613 -2020-02-20 09:00:00,122.95,208.71200000000002,60.523,32.613 -2020-02-20 09:15:00,123.48,205.582,60.523,32.613 -2020-02-20 09:30:00,123.66,204.113,60.523,32.613 -2020-02-20 09:45:00,123.38,201.16299999999998,60.523,32.613 -2020-02-20 10:00:00,123.79,196.918,57.449,32.613 -2020-02-20 10:15:00,122.44,193.252,57.449,32.613 -2020-02-20 10:30:00,120.99,190.75900000000001,57.449,32.613 -2020-02-20 10:45:00,121.04,189.761,57.449,32.613 -2020-02-20 11:00:00,118.26,187.826,54.505,32.613 -2020-02-20 11:15:00,118.28,186.951,54.505,32.613 -2020-02-20 11:30:00,118.21,186.08599999999998,54.505,32.613 -2020-02-20 11:45:00,117.86,184.82,54.505,32.613 -2020-02-20 12:00:00,116.74,179.87599999999998,51.50899999999999,32.613 -2020-02-20 12:15:00,118.18,180.021,51.50899999999999,32.613 -2020-02-20 12:30:00,118.55,179.447,51.50899999999999,32.613 -2020-02-20 12:45:00,118.61,180.388,51.50899999999999,32.613 -2020-02-20 13:00:00,114.9,179.585,51.303999999999995,32.613 -2020-02-20 13:15:00,115.25,178.33700000000002,51.303999999999995,32.613 -2020-02-20 13:30:00,112.8,177.372,51.303999999999995,32.613 -2020-02-20 13:45:00,116.14,176.981,51.303999999999995,32.613 -2020-02-20 14:00:00,111.39,177.622,52.785,32.613 -2020-02-20 14:15:00,115.64,177.429,52.785,32.613 -2020-02-20 14:30:00,114.88,177.945,52.785,32.613 -2020-02-20 14:45:00,116.2,178.748,52.785,32.613 -2020-02-20 15:00:00,118.06,180.623,56.458999999999996,32.613 -2020-02-20 15:15:00,115.92,179.859,56.458999999999996,32.613 -2020-02-20 15:30:00,115.99,181.065,56.458999999999996,32.613 -2020-02-20 15:45:00,117.51,182.02599999999998,56.458999999999996,32.613 -2020-02-20 16:00:00,117.85,183.607,59.388000000000005,32.613 -2020-02-20 16:15:00,118.3,185.11700000000002,59.388000000000005,32.613 -2020-02-20 16:30:00,122.42,187.958,59.388000000000005,32.613 -2020-02-20 16:45:00,122.43,189.268,59.388000000000005,32.613 -2020-02-20 17:00:00,124.49,191.24099999999999,64.462,32.613 -2020-02-20 17:15:00,125.36,193.489,64.462,32.613 -2020-02-20 17:30:00,131.6,195.954,64.462,32.613 -2020-02-20 17:45:00,131.89,196.857,64.462,32.613 -2020-02-20 18:00:00,138.28,199.081,65.128,32.613 -2020-02-20 18:15:00,136.37,198.468,65.128,32.613 -2020-02-20 18:30:00,138.13,197.16400000000002,65.128,32.613 -2020-02-20 18:45:00,136.19,198.179,65.128,32.613 -2020-02-20 19:00:00,132.24,197.143,61.316,32.613 -2020-02-20 19:15:00,136.06,193.85,61.316,32.613 -2020-02-20 19:30:00,140.35,192.31599999999997,61.316,32.613 -2020-02-20 19:45:00,136.18,189.28099999999998,61.316,32.613 -2020-02-20 20:00:00,124.63,184.584,59.845,32.613 -2020-02-20 20:15:00,117.47,179.071,59.845,32.613 -2020-02-20 20:30:00,115.88,175.25,59.845,32.613 -2020-02-20 20:45:00,113.56,173.425,59.845,32.613 -2020-02-20 21:00:00,109.82,170.24099999999999,54.83,32.613 -2020-02-20 21:15:00,107.49,167.19099999999997,54.83,32.613 -2020-02-20 21:30:00,105.41,165.142,54.83,32.613 -2020-02-20 21:45:00,107.31,164.50900000000001,54.83,32.613 -2020-02-20 22:00:00,98.64,157.486,50.933,32.613 -2020-02-20 22:15:00,102.93,153.07,50.933,32.613 -2020-02-20 22:30:00,103.82,138.967,50.933,32.613 -2020-02-20 22:45:00,105.37,131.486,50.933,32.613 -2020-02-20 23:00:00,94.47,124.87,45.32899999999999,32.613 -2020-02-20 23:15:00,90.46,123.387,45.32899999999999,32.613 -2020-02-20 23:30:00,88.59,124.492,45.32899999999999,32.613 -2020-02-20 23:45:00,88.87,124.436,45.32899999999999,32.613 -2020-02-21 00:00:00,84.07,118.053,43.74,32.613 -2020-02-21 00:15:00,90.99,117.012,43.74,32.613 -2020-02-21 00:30:00,90.98,116.915,43.74,32.613 -2020-02-21 00:45:00,87.5,117.566,43.74,32.613 -2020-02-21 01:00:00,80.73,119.194,42.555,32.613 -2020-02-21 01:15:00,82.69,120.294,42.555,32.613 -2020-02-21 01:30:00,78.88,120.279,42.555,32.613 -2020-02-21 01:45:00,79.85,120.557,42.555,32.613 -2020-02-21 02:00:00,79.02,122.663,41.68600000000001,32.613 -2020-02-21 02:15:00,86.13,123.93,41.68600000000001,32.613 -2020-02-21 02:30:00,87.4,125.331,41.68600000000001,32.613 -2020-02-21 02:45:00,87.01,127.15700000000001,41.68600000000001,32.613 -2020-02-21 03:00:00,80.72,128.641,42.278999999999996,32.613 -2020-02-21 03:15:00,80.62,131.14600000000002,42.278999999999996,32.613 -2020-02-21 03:30:00,82.45,132.915,42.278999999999996,32.613 -2020-02-21 03:45:00,82.52,134.672,42.278999999999996,32.613 -2020-02-21 04:00:00,83.5,146.612,43.742,32.613 -2020-02-21 04:15:00,88.63,158.04399999999998,43.742,32.613 -2020-02-21 04:30:00,94.41,160.84,43.742,32.613 -2020-02-21 04:45:00,95.37,161.859,43.742,32.613 -2020-02-21 05:00:00,94.16,193.079,46.973,32.613 -2020-02-21 05:15:00,92.16,222.521,46.973,32.613 -2020-02-21 05:30:00,94.26,218.762,46.973,32.613 -2020-02-21 05:45:00,99.52,211.65099999999998,46.973,32.613 -2020-02-21 06:00:00,108.6,209.43200000000002,59.63399999999999,32.613 -2020-02-21 06:15:00,111.42,213.935,59.63399999999999,32.613 -2020-02-21 06:30:00,115.46,215.37400000000002,59.63399999999999,32.613 -2020-02-21 06:45:00,117.72,220.855,59.63399999999999,32.613 -2020-02-21 07:00:00,122.43,220.72799999999998,71.631,32.613 -2020-02-21 07:15:00,123.45,225.54,71.631,32.613 -2020-02-21 07:30:00,123.07,226.58900000000003,71.631,32.613 -2020-02-21 07:45:00,124.6,225.299,71.631,32.613 -2020-02-21 08:00:00,127.22,222.543,66.181,32.613 -2020-02-21 08:15:00,125.37,221.072,66.181,32.613 -2020-02-21 08:30:00,126.6,218.17700000000002,66.181,32.613 -2020-02-21 08:45:00,123.25,212.84599999999998,66.181,32.613 -2020-02-21 09:00:00,125.59,206.114,63.086000000000006,32.613 -2020-02-21 09:15:00,125.25,203.579,63.086000000000006,32.613 -2020-02-21 09:30:00,126.21,201.69799999999998,63.086000000000006,32.613 -2020-02-21 09:45:00,128.09,198.653,63.086000000000006,32.613 -2020-02-21 10:00:00,122.61,193.30700000000002,60.886,32.613 -2020-02-21 10:15:00,124.67,190.35299999999998,60.886,32.613 -2020-02-21 10:30:00,125.15,187.81599999999997,60.886,32.613 -2020-02-21 10:45:00,124.81,186.39700000000002,60.886,32.613 -2020-02-21 11:00:00,120.18,184.442,59.391000000000005,32.613 -2020-02-21 11:15:00,120.77,182.68200000000002,59.391000000000005,32.613 -2020-02-21 11:30:00,120.33,183.52599999999998,59.391000000000005,32.613 -2020-02-21 11:45:00,120.04,182.298,59.391000000000005,32.613 -2020-02-21 12:00:00,118.73,178.43900000000002,56.172,32.613 -2020-02-21 12:15:00,118.32,176.53799999999998,56.172,32.613 -2020-02-21 12:30:00,117.18,176.092,56.172,32.613 -2020-02-21 12:45:00,119.34,177.515,56.172,32.613 -2020-02-21 13:00:00,112.77,177.671,54.406000000000006,32.613 -2020-02-21 13:15:00,112.5,177.203,54.406000000000006,32.613 -2020-02-21 13:30:00,111.04,176.26,54.406000000000006,32.613 -2020-02-21 13:45:00,111.47,175.815,54.406000000000006,32.613 -2020-02-21 14:00:00,109.79,175.38299999999998,53.578,32.613 -2020-02-21 14:15:00,110.7,175.00599999999997,53.578,32.613 -2020-02-21 14:30:00,110.76,176.04,53.578,32.613 -2020-02-21 14:45:00,110.95,177.13099999999997,53.578,32.613 -2020-02-21 15:00:00,117.42,178.542,56.568999999999996,32.613 -2020-02-21 15:15:00,120.19,177.31599999999997,56.568999999999996,32.613 -2020-02-21 15:30:00,119.17,176.987,56.568999999999996,32.613 -2020-02-21 15:45:00,115.35,178.092,56.568999999999996,32.613 -2020-02-21 16:00:00,117.52,178.511,60.169,32.613 -2020-02-21 16:15:00,115.01,180.301,60.169,32.613 -2020-02-21 16:30:00,116.7,183.232,60.169,32.613 -2020-02-21 16:45:00,119.87,184.386,60.169,32.613 -2020-02-21 17:00:00,123.86,186.592,65.497,32.613 -2020-02-21 17:15:00,126.26,188.45,65.497,32.613 -2020-02-21 17:30:00,126.38,190.63400000000001,65.497,32.613 -2020-02-21 17:45:00,128.7,191.324,65.497,32.613 -2020-02-21 18:00:00,133.63,194.234,65.082,32.613 -2020-02-21 18:15:00,132.24,193.282,65.082,32.613 -2020-02-21 18:30:00,135.09,192.361,65.082,32.613 -2020-02-21 18:45:00,134.34,193.4,65.082,32.613 -2020-02-21 19:00:00,132.35,193.229,60.968,32.613 -2020-02-21 19:15:00,136.76,191.30200000000002,60.968,32.613 -2020-02-21 19:30:00,136.33,189.387,60.968,32.613 -2020-02-21 19:45:00,136.31,185.921,60.968,32.613 -2020-02-21 20:00:00,121.81,181.247,61.123000000000005,32.613 -2020-02-21 20:15:00,119.79,175.767,61.123000000000005,32.613 -2020-02-21 20:30:00,114.65,171.91400000000002,61.123000000000005,32.613 -2020-02-21 20:45:00,115.4,170.627,61.123000000000005,32.613 -2020-02-21 21:00:00,106.52,167.949,55.416000000000004,32.613 -2020-02-21 21:15:00,104.0,165.347,55.416000000000004,32.613 -2020-02-21 21:30:00,102.97,163.342,55.416000000000004,32.613 -2020-02-21 21:45:00,103.72,163.263,55.416000000000004,32.613 -2020-02-21 22:00:00,97.94,157.187,51.631,32.613 -2020-02-21 22:15:00,94.54,152.662,51.631,32.613 -2020-02-21 22:30:00,92.36,144.856,51.631,32.613 -2020-02-21 22:45:00,96.36,140.861,51.631,32.613 -2020-02-21 23:00:00,96.29,133.83,44.898,32.613 -2020-02-21 23:15:00,93.93,130.423,44.898,32.613 -2020-02-21 23:30:00,87.56,130.07399999999998,44.898,32.613 -2020-02-21 23:45:00,86.86,129.387,44.898,32.613 -2020-02-22 00:00:00,80.69,115.046,42.033,32.431999999999995 -2020-02-22 00:15:00,85.92,109.822,42.033,32.431999999999995 -2020-02-22 00:30:00,86.31,111.001,42.033,32.431999999999995 -2020-02-22 00:45:00,83.99,112.337,42.033,32.431999999999995 -2020-02-22 01:00:00,75.49,114.553,38.255,32.431999999999995 -2020-02-22 01:15:00,77.66,114.685,38.255,32.431999999999995 -2020-02-22 01:30:00,74.25,114.135,38.255,32.431999999999995 -2020-02-22 01:45:00,78.27,114.225,38.255,32.431999999999995 -2020-02-22 02:00:00,80.13,116.98200000000001,36.404,32.431999999999995 -2020-02-22 02:15:00,81.83,117.868,36.404,32.431999999999995 -2020-02-22 02:30:00,77.76,118.184,36.404,32.431999999999995 -2020-02-22 02:45:00,77.53,120.12299999999999,36.404,32.431999999999995 -2020-02-22 03:00:00,76.75,122.20700000000001,36.083,32.431999999999995 -2020-02-22 03:15:00,80.16,123.5,36.083,32.431999999999995 -2020-02-22 03:30:00,80.23,123.714,36.083,32.431999999999995 -2020-02-22 03:45:00,78.0,125.616,36.083,32.431999999999995 -2020-02-22 04:00:00,72.92,133.475,36.102,32.431999999999995 -2020-02-22 04:15:00,73.17,142.395,36.102,32.431999999999995 -2020-02-22 04:30:00,73.24,143.054,36.102,32.431999999999995 -2020-02-22 04:45:00,74.17,143.582,36.102,32.431999999999995 -2020-02-22 05:00:00,74.51,159.02200000000002,35.284,32.431999999999995 -2020-02-22 05:15:00,75.89,169.7,35.284,32.431999999999995 -2020-02-22 05:30:00,75.3,166.28599999999997,35.284,32.431999999999995 -2020-02-22 05:45:00,76.79,164.58599999999998,35.284,32.431999999999995 -2020-02-22 06:00:00,78.47,180.94,36.265,32.431999999999995 -2020-02-22 06:15:00,79.02,201.58900000000003,36.265,32.431999999999995 -2020-02-22 06:30:00,79.89,197.68200000000002,36.265,32.431999999999995 -2020-02-22 06:45:00,80.02,194.308,36.265,32.431999999999995 -2020-02-22 07:00:00,81.54,190.49099999999999,40.714,32.431999999999995 -2020-02-22 07:15:00,85.98,194.023,40.714,32.431999999999995 -2020-02-22 07:30:00,86.18,197.71,40.714,32.431999999999995 -2020-02-22 07:45:00,87.86,200.28400000000002,40.714,32.431999999999995 -2020-02-22 08:00:00,89.81,201.467,46.692,32.431999999999995 -2020-02-22 08:15:00,91.73,203.52200000000002,46.692,32.431999999999995 -2020-02-22 08:30:00,98.01,202.149,46.692,32.431999999999995 -2020-02-22 08:45:00,99.24,199.93,46.692,32.431999999999995 -2020-02-22 09:00:00,102.43,194.99599999999998,48.925,32.431999999999995 -2020-02-22 09:15:00,102.12,193.207,48.925,32.431999999999995 -2020-02-22 09:30:00,102.49,192.239,48.925,32.431999999999995 -2020-02-22 09:45:00,99.78,189.347,48.925,32.431999999999995 -2020-02-22 10:00:00,95.56,184.31099999999998,47.799,32.431999999999995 -2020-02-22 10:15:00,99.82,181.56099999999998,47.799,32.431999999999995 -2020-02-22 10:30:00,100.4,179.19,47.799,32.431999999999995 -2020-02-22 10:45:00,99.55,179.048,47.799,32.431999999999995 -2020-02-22 11:00:00,95.77,177.29,44.309,32.431999999999995 -2020-02-22 11:15:00,95.07,174.896,44.309,32.431999999999995 -2020-02-22 11:30:00,94.71,174.668,44.309,32.431999999999995 -2020-02-22 11:45:00,97.76,172.54,44.309,32.431999999999995 -2020-02-22 12:00:00,92.83,167.857,42.367,32.431999999999995 -2020-02-22 12:15:00,92.41,166.61599999999999,42.367,32.431999999999995 -2020-02-22 12:30:00,88.04,166.44400000000002,42.367,32.431999999999995 -2020-02-22 12:45:00,86.69,167.13400000000001,42.367,32.431999999999995 -2020-02-22 13:00:00,82.02,166.915,39.036,32.431999999999995 -2020-02-22 13:15:00,85.74,164.417,39.036,32.431999999999995 -2020-02-22 13:30:00,79.5,163.02700000000002,39.036,32.431999999999995 -2020-02-22 13:45:00,80.82,163.011,39.036,32.431999999999995 -2020-02-22 14:00:00,78.34,163.83100000000002,37.995,32.431999999999995 -2020-02-22 14:15:00,78.85,162.882,37.995,32.431999999999995 -2020-02-22 14:30:00,80.14,162.118,37.995,32.431999999999995 -2020-02-22 14:45:00,81.7,163.444,37.995,32.431999999999995 -2020-02-22 15:00:00,81.24,165.505,40.71,32.431999999999995 -2020-02-22 15:15:00,82.52,165.051,40.71,32.431999999999995 -2020-02-22 15:30:00,83.61,166.18200000000002,40.71,32.431999999999995 -2020-02-22 15:45:00,85.83,167.262,40.71,32.431999999999995 -2020-02-22 16:00:00,87.34,166.548,46.998000000000005,32.431999999999995 -2020-02-22 16:15:00,91.33,169.175,46.998000000000005,32.431999999999995 -2020-02-22 16:30:00,93.53,172.06,46.998000000000005,32.431999999999995 -2020-02-22 16:45:00,92.11,174.048,46.998000000000005,32.431999999999995 -2020-02-22 17:00:00,99.16,175.66,55.431000000000004,32.431999999999995 -2020-02-22 17:15:00,98.14,179.105,55.431000000000004,32.431999999999995 -2020-02-22 17:30:00,103.35,181.222,55.431000000000004,32.431999999999995 -2020-02-22 17:45:00,104.88,181.547,55.431000000000004,32.431999999999995 -2020-02-22 18:00:00,113.78,184.007,55.989,32.431999999999995 -2020-02-22 18:15:00,112.69,184.90400000000002,55.989,32.431999999999995 -2020-02-22 18:30:00,112.95,185.31,55.989,32.431999999999995 -2020-02-22 18:45:00,112.81,183.035,55.989,32.431999999999995 -2020-02-22 19:00:00,111.89,183.692,50.882,32.431999999999995 -2020-02-22 19:15:00,112.4,181.27599999999998,50.882,32.431999999999995 -2020-02-22 19:30:00,107.62,180.136,50.882,32.431999999999995 -2020-02-22 19:45:00,106.47,176.567,50.882,32.431999999999995 -2020-02-22 20:00:00,101.54,174.00799999999998,43.172,32.431999999999995 -2020-02-22 20:15:00,99.49,170.608,43.172,32.431999999999995 -2020-02-22 20:30:00,96.48,166.41400000000002,43.172,32.431999999999995 -2020-02-22 20:45:00,98.36,164.771,43.172,32.431999999999995 -2020-02-22 21:00:00,91.47,164.25099999999998,37.599000000000004,32.431999999999995 -2020-02-22 21:15:00,90.24,162.063,37.599000000000004,32.431999999999995 -2020-02-22 21:30:00,88.52,161.263,37.599000000000004,32.431999999999995 -2020-02-22 21:45:00,88.73,160.796,37.599000000000004,32.431999999999995 -2020-02-22 22:00:00,85.26,156.02100000000002,39.047,32.431999999999995 -2020-02-22 22:15:00,84.4,153.955,39.047,32.431999999999995 -2020-02-22 22:30:00,81.79,152.175,39.047,32.431999999999995 -2020-02-22 22:45:00,81.3,150.017,39.047,32.431999999999995 -2020-02-22 23:00:00,77.58,145.344,32.339,32.431999999999995 -2020-02-22 23:15:00,77.79,140.363,32.339,32.431999999999995 -2020-02-22 23:30:00,74.96,138.365,32.339,32.431999999999995 -2020-02-22 23:45:00,73.63,135.339,32.339,32.431999999999995 -2020-02-23 00:00:00,70.14,115.244,29.988000000000003,32.431999999999995 -2020-02-23 00:15:00,69.61,109.686,29.988000000000003,32.431999999999995 -2020-02-23 00:30:00,69.59,110.479,29.988000000000003,32.431999999999995 -2020-02-23 00:45:00,69.38,112.488,29.988000000000003,32.431999999999995 -2020-02-23 01:00:00,65.46,114.53399999999999,28.531999999999996,32.431999999999995 -2020-02-23 01:15:00,66.66,115.661,28.531999999999996,32.431999999999995 -2020-02-23 01:30:00,65.52,115.603,28.531999999999996,32.431999999999995 -2020-02-23 01:45:00,65.26,115.382,28.531999999999996,32.431999999999995 -2020-02-23 02:00:00,63.83,117.405,27.805999999999997,32.431999999999995 -2020-02-23 02:15:00,64.64,117.473,27.805999999999997,32.431999999999995 -2020-02-23 02:30:00,63.77,118.64200000000001,27.805999999999997,32.431999999999995 -2020-02-23 02:45:00,64.98,121.022,27.805999999999997,32.431999999999995 -2020-02-23 03:00:00,63.94,123.436,26.193,32.431999999999995 -2020-02-23 03:15:00,64.7,124.21799999999999,26.193,32.431999999999995 -2020-02-23 03:30:00,64.1,125.774,26.193,32.431999999999995 -2020-02-23 03:45:00,64.57,127.594,26.193,32.431999999999995 -2020-02-23 04:00:00,64.91,135.216,27.19,32.431999999999995 -2020-02-23 04:15:00,64.97,143.135,27.19,32.431999999999995 -2020-02-23 04:30:00,65.65,143.904,27.19,32.431999999999995 -2020-02-23 04:45:00,66.48,144.673,27.19,32.431999999999995 -2020-02-23 05:00:00,67.26,156.69,28.166999999999998,32.431999999999995 -2020-02-23 05:15:00,67.76,165.021,28.166999999999998,32.431999999999995 -2020-02-23 05:30:00,68.15,161.405,28.166999999999998,32.431999999999995 -2020-02-23 05:45:00,68.8,159.939,28.166999999999998,32.431999999999995 -2020-02-23 06:00:00,69.41,176.139,27.16,32.431999999999995 -2020-02-23 06:15:00,69.86,195.146,27.16,32.431999999999995 -2020-02-23 06:30:00,70.71,190.112,27.16,32.431999999999995 -2020-02-23 06:45:00,69.95,185.675,27.16,32.431999999999995 -2020-02-23 07:00:00,72.62,184.268,29.578000000000003,32.431999999999995 -2020-02-23 07:15:00,73.12,186.9,29.578000000000003,32.431999999999995 -2020-02-23 07:30:00,74.51,189.389,29.578000000000003,32.431999999999995 -2020-02-23 07:45:00,76.29,191.18200000000002,29.578000000000003,32.431999999999995 -2020-02-23 08:00:00,78.45,194.149,34.650999999999996,32.431999999999995 -2020-02-23 08:15:00,78.33,196.13,34.650999999999996,32.431999999999995 -2020-02-23 08:30:00,78.73,196.333,34.650999999999996,32.431999999999995 -2020-02-23 08:45:00,79.07,196.078,34.650999999999996,32.431999999999995 -2020-02-23 09:00:00,78.69,190.75900000000001,38.080999999999996,32.431999999999995 -2020-02-23 09:15:00,78.31,189.495,38.080999999999996,32.431999999999995 -2020-02-23 09:30:00,78.05,188.407,38.080999999999996,32.431999999999995 -2020-02-23 09:45:00,77.75,185.43599999999998,38.080999999999996,32.431999999999995 -2020-02-23 10:00:00,76.21,182.868,39.934,32.431999999999995 -2020-02-23 10:15:00,75.97,180.67,39.934,32.431999999999995 -2020-02-23 10:30:00,75.82,178.90400000000002,39.934,32.431999999999995 -2020-02-23 10:45:00,76.78,176.976,39.934,32.431999999999995 -2020-02-23 11:00:00,77.47,176.084,43.74100000000001,32.431999999999995 -2020-02-23 11:15:00,80.97,173.822,43.74100000000001,32.431999999999995 -2020-02-23 11:30:00,81.83,172.77700000000002,43.74100000000001,32.431999999999995 -2020-02-23 11:45:00,84.37,171.255,43.74100000000001,32.431999999999995 -2020-02-23 12:00:00,80.33,166.08,40.001999999999995,32.431999999999995 -2020-02-23 12:15:00,75.8,166.668,40.001999999999995,32.431999999999995 -2020-02-23 12:30:00,75.85,165.06900000000002,40.001999999999995,32.431999999999995 -2020-02-23 12:45:00,72.42,164.801,40.001999999999995,32.431999999999995 -2020-02-23 13:00:00,71.1,163.916,37.855,32.431999999999995 -2020-02-23 13:15:00,69.74,164.28099999999998,37.855,32.431999999999995 -2020-02-23 13:30:00,66.49,162.636,37.855,32.431999999999995 -2020-02-23 13:45:00,65.1,162.02700000000002,37.855,32.431999999999995 -2020-02-23 14:00:00,63.85,163.18200000000002,35.946999999999996,32.431999999999995 -2020-02-23 14:15:00,67.63,163.381,35.946999999999996,32.431999999999995 -2020-02-23 14:30:00,65.18,163.741,35.946999999999996,32.431999999999995 -2020-02-23 14:45:00,66.34,164.646,35.946999999999996,32.431999999999995 -2020-02-23 15:00:00,67.38,165.24599999999998,35.138000000000005,32.431999999999995 -2020-02-23 15:15:00,71.0,165.46400000000003,35.138000000000005,32.431999999999995 -2020-02-23 15:30:00,70.06,167.115,35.138000000000005,32.431999999999995 -2020-02-23 15:45:00,71.4,168.856,35.138000000000005,32.431999999999995 -2020-02-23 16:00:00,77.36,169.905,38.672,32.431999999999995 -2020-02-23 16:15:00,75.53,171.645,38.672,32.431999999999995 -2020-02-23 16:30:00,77.71,174.812,38.672,32.431999999999995 -2020-02-23 16:45:00,81.19,176.903,38.672,32.431999999999995 -2020-02-23 17:00:00,88.54,178.53599999999997,48.684,32.431999999999995 -2020-02-23 17:15:00,86.32,181.71900000000002,48.684,32.431999999999995 -2020-02-23 17:30:00,90.78,184.165,48.684,32.431999999999995 -2020-02-23 17:45:00,96.64,186.72099999999998,48.684,32.431999999999995 -2020-02-23 18:00:00,104.83,188.683,51.568999999999996,32.431999999999995 -2020-02-23 18:15:00,107.06,190.919,51.568999999999996,32.431999999999995 -2020-02-23 18:30:00,107.23,189.291,51.568999999999996,32.431999999999995 -2020-02-23 18:45:00,103.85,188.84,51.568999999999996,32.431999999999995 -2020-02-23 19:00:00,101.61,189.18900000000002,48.608000000000004,32.431999999999995 -2020-02-23 19:15:00,102.96,187.34,48.608000000000004,32.431999999999995 -2020-02-23 19:30:00,99.45,186.058,48.608000000000004,32.431999999999995 -2020-02-23 19:45:00,100.59,183.923,48.608000000000004,32.431999999999995 -2020-02-23 20:00:00,105.69,181.30900000000003,43.733999999999995,32.431999999999995 -2020-02-23 20:15:00,97.93,178.87599999999998,43.733999999999995,32.431999999999995 -2020-02-23 20:30:00,93.18,175.926,43.733999999999995,32.431999999999995 -2020-02-23 20:45:00,98.42,173.078,43.733999999999995,32.431999999999995 -2020-02-23 21:00:00,92.64,170.021,39.283,32.431999999999995 -2020-02-23 21:15:00,88.96,167.207,39.283,32.431999999999995 -2020-02-23 21:30:00,90.04,166.68,39.283,32.431999999999995 -2020-02-23 21:45:00,93.24,166.37099999999998,39.283,32.431999999999995 -2020-02-23 22:00:00,98.28,160.47,40.111,32.431999999999995 -2020-02-23 22:15:00,92.33,157.649,40.111,32.431999999999995 -2020-02-23 22:30:00,94.51,152.731,40.111,32.431999999999995 -2020-02-23 22:45:00,91.38,149.721,40.111,32.431999999999995 -2020-02-23 23:00:00,86.18,142.312,35.791,32.431999999999995 -2020-02-23 23:15:00,83.82,139.184,35.791,32.431999999999995 -2020-02-23 23:30:00,84.12,137.974,35.791,32.431999999999995 -2020-02-23 23:45:00,89.48,135.843,35.791,32.431999999999995 -2020-02-24 00:00:00,87.4,119.12100000000001,34.311,32.613 -2020-02-24 00:15:00,85.71,116.48200000000001,34.311,32.613 -2020-02-24 00:30:00,79.25,117.37,34.311,32.613 -2020-02-24 00:45:00,80.11,118.845,34.311,32.613 -2020-02-24 01:00:00,75.53,120.87299999999999,34.585,32.613 -2020-02-24 01:15:00,82.25,121.47399999999999,34.585,32.613 -2020-02-24 01:30:00,82.39,121.463,34.585,32.613 -2020-02-24 01:45:00,83.21,121.355,34.585,32.613 -2020-02-24 02:00:00,78.47,123.35799999999999,34.111,32.613 -2020-02-24 02:15:00,81.62,124.824,34.111,32.613 -2020-02-24 02:30:00,83.49,126.336,34.111,32.613 -2020-02-24 02:45:00,85.86,128.109,34.111,32.613 -2020-02-24 03:00:00,77.68,131.778,32.435,32.613 -2020-02-24 03:15:00,84.84,134.17,32.435,32.613 -2020-02-24 03:30:00,85.17,135.471,32.435,32.613 -2020-02-24 03:45:00,85.91,136.755,32.435,32.613 -2020-02-24 04:00:00,83.63,148.685,33.04,32.613 -2020-02-24 04:15:00,83.89,160.695,33.04,32.613 -2020-02-24 04:30:00,89.11,163.607,33.04,32.613 -2020-02-24 04:45:00,86.29,164.52900000000002,33.04,32.613 -2020-02-24 05:00:00,90.81,192.02599999999998,40.399,32.613 -2020-02-24 05:15:00,91.34,220.23,40.399,32.613 -2020-02-24 05:30:00,95.51,216.81900000000002,40.399,32.613 -2020-02-24 05:45:00,100.68,209.787,40.399,32.613 -2020-02-24 06:00:00,112.19,208.31799999999998,60.226000000000006,32.613 -2020-02-24 06:15:00,114.53,212.699,60.226000000000006,32.613 -2020-02-24 06:30:00,121.55,215.514,60.226000000000006,32.613 -2020-02-24 06:45:00,120.58,219.74099999999999,60.226000000000006,32.613 -2020-02-24 07:00:00,127.09,220.673,73.578,32.613 -2020-02-24 07:15:00,128.48,224.535,73.578,32.613 -2020-02-24 07:30:00,128.83,226.213,73.578,32.613 -2020-02-24 07:45:00,128.43,225.47400000000002,73.578,32.613 -2020-02-24 08:00:00,132.65,223.62099999999998,66.58,32.613 -2020-02-24 08:15:00,130.35,223.472,66.58,32.613 -2020-02-24 08:30:00,132.82,219.62400000000002,66.58,32.613 -2020-02-24 08:45:00,128.9,216.138,66.58,32.613 -2020-02-24 09:00:00,130.95,209.83700000000002,62.0,32.613 -2020-02-24 09:15:00,129.17,205.146,62.0,32.613 -2020-02-24 09:30:00,128.34,203.085,62.0,32.613 -2020-02-24 09:45:00,127.77,200.359,62.0,32.613 -2020-02-24 10:00:00,125.53,196.74900000000002,59.099,32.613 -2020-02-24 10:15:00,127.37,194.266,59.099,32.613 -2020-02-24 10:30:00,123.36,191.65599999999998,59.099,32.613 -2020-02-24 10:45:00,127.17,190.43200000000002,59.099,32.613 -2020-02-24 11:00:00,122.95,187.0,57.729,32.613 -2020-02-24 11:15:00,126.73,186.50900000000001,57.729,32.613 -2020-02-24 11:30:00,127.56,186.827,57.729,32.613 -2020-02-24 11:45:00,123.32,184.93599999999998,57.729,32.613 -2020-02-24 12:00:00,122.5,181.40099999999998,55.615,32.613 -2020-02-24 12:15:00,126.78,182.00599999999997,55.615,32.613 -2020-02-24 12:30:00,127.67,180.593,55.615,32.613 -2020-02-24 12:45:00,124.86,181.798,55.615,32.613 -2020-02-24 13:00:00,122.88,181.528,56.515,32.613 -2020-02-24 13:15:00,123.82,180.50599999999997,56.515,32.613 -2020-02-24 13:30:00,125.65,178.34,56.515,32.613 -2020-02-24 13:45:00,128.04,177.78599999999997,56.515,32.613 -2020-02-24 14:00:00,130.27,178.38099999999997,58.1,32.613 -2020-02-24 14:15:00,128.28,177.951,58.1,32.613 -2020-02-24 14:30:00,131.05,177.762,58.1,32.613 -2020-02-24 14:45:00,130.12,178.701,58.1,32.613 -2020-02-24 15:00:00,130.46,181.032,59.801,32.613 -2020-02-24 15:15:00,131.88,179.815,59.801,32.613 -2020-02-24 15:30:00,129.22,180.639,59.801,32.613 -2020-02-24 15:45:00,129.42,181.919,59.801,32.613 -2020-02-24 16:00:00,129.55,183.18599999999998,62.901,32.613 -2020-02-24 16:15:00,129.72,184.172,62.901,32.613 -2020-02-24 16:30:00,127.89,186.385,62.901,32.613 -2020-02-24 16:45:00,129.96,187.296,62.901,32.613 -2020-02-24 17:00:00,133.58,188.75,70.418,32.613 -2020-02-24 17:15:00,136.65,191.028,70.418,32.613 -2020-02-24 17:30:00,139.14,192.96,70.418,32.613 -2020-02-24 17:45:00,138.19,194.074,70.418,32.613 -2020-02-24 18:00:00,144.78,196.45,71.726,32.613 -2020-02-24 18:15:00,140.22,196.56,71.726,32.613 -2020-02-24 18:30:00,140.06,195.55599999999998,71.726,32.613 -2020-02-24 18:45:00,141.43,195.878,71.726,32.613 -2020-02-24 19:00:00,139.29,194.61599999999999,65.997,32.613 -2020-02-24 19:15:00,138.24,191.66,65.997,32.613 -2020-02-24 19:30:00,144.32,190.885,65.997,32.613 -2020-02-24 19:45:00,141.12,187.96599999999998,65.997,32.613 -2020-02-24 20:00:00,133.01,182.99099999999999,68.09100000000001,32.613 -2020-02-24 20:15:00,125.91,178.175,68.09100000000001,32.613 -2020-02-24 20:30:00,120.23,173.433,68.09100000000001,32.613 -2020-02-24 20:45:00,121.43,172.179,68.09100000000001,32.613 -2020-02-24 21:00:00,114.0,169.61900000000003,59.617,32.613 -2020-02-24 21:15:00,117.58,165.65599999999998,59.617,32.613 -2020-02-24 21:30:00,117.76,164.327,59.617,32.613 -2020-02-24 21:45:00,115.93,163.54,59.617,32.613 -2020-02-24 22:00:00,105.83,154.77,54.938,32.613 -2020-02-24 22:15:00,101.05,150.715,54.938,32.613 -2020-02-24 22:30:00,99.67,136.342,54.938,32.613 -2020-02-24 22:45:00,98.93,128.609,54.938,32.613 -2020-02-24 23:00:00,95.34,121.956,47.43,32.613 -2020-02-24 23:15:00,94.94,121.412,47.43,32.613 -2020-02-24 23:30:00,89.82,122.914,47.43,32.613 -2020-02-24 23:45:00,89.72,123.382,47.43,32.613 -2020-02-25 00:00:00,92.74,118.161,48.354,32.613 -2020-02-25 00:15:00,93.6,116.93299999999999,48.354,32.613 -2020-02-25 00:30:00,94.11,116.89200000000001,48.354,32.613 -2020-02-25 00:45:00,89.59,117.417,48.354,32.613 -2020-02-25 01:00:00,84.84,119.20700000000001,45.68600000000001,32.613 -2020-02-25 01:15:00,86.12,119.359,45.68600000000001,32.613 -2020-02-25 01:30:00,82.8,119.501,45.68600000000001,32.613 -2020-02-25 01:45:00,83.08,119.69,45.68600000000001,32.613 -2020-02-25 02:00:00,84.51,121.675,44.269,32.613 -2020-02-25 02:15:00,87.23,123.042,44.269,32.613 -2020-02-25 02:30:00,89.0,123.98200000000001,44.269,32.613 -2020-02-25 02:45:00,93.75,125.771,44.269,32.613 -2020-02-25 03:00:00,88.41,128.25799999999998,44.187,32.613 -2020-02-25 03:15:00,89.23,129.819,44.187,32.613 -2020-02-25 03:30:00,85.06,131.588,44.187,32.613 -2020-02-25 03:45:00,89.04,133.059,44.187,32.613 -2020-02-25 04:00:00,86.27,144.786,46.126999999999995,32.613 -2020-02-25 04:15:00,86.74,156.446,46.126999999999995,32.613 -2020-02-25 04:30:00,88.33,159.06799999999998,46.126999999999995,32.613 -2020-02-25 04:45:00,91.62,161.172,46.126999999999995,32.613 -2020-02-25 05:00:00,97.3,193.585,49.666000000000004,32.613 -2020-02-25 05:15:00,96.94,221.614,49.666000000000004,32.613 -2020-02-25 05:30:00,101.12,216.666,49.666000000000004,32.613 -2020-02-25 05:45:00,105.3,209.638,49.666000000000004,32.613 -2020-02-25 06:00:00,116.13,207.021,61.077,32.613 -2020-02-25 06:15:00,118.32,213.012,61.077,32.613 -2020-02-25 06:30:00,121.9,215.149,61.077,32.613 -2020-02-25 06:45:00,123.41,218.986,61.077,32.613 -2020-02-25 07:00:00,130.25,219.761,74.717,32.613 -2020-02-25 07:15:00,129.83,223.43400000000003,74.717,32.613 -2020-02-25 07:30:00,131.97,224.53900000000002,74.717,32.613 -2020-02-25 07:45:00,129.74,223.96,74.717,32.613 -2020-02-25 08:00:00,132.69,222.18900000000002,69.033,32.613 -2020-02-25 08:15:00,133.52,221.015,69.033,32.613 -2020-02-25 08:30:00,129.26,216.93599999999998,69.033,32.613 -2020-02-25 08:45:00,128.0,213.18900000000002,69.033,32.613 -2020-02-25 09:00:00,134.63,206.084,63.113,32.613 -2020-02-25 09:15:00,134.74,202.96200000000002,63.113,32.613 -2020-02-25 09:30:00,137.02,201.59400000000002,63.113,32.613 -2020-02-25 09:45:00,135.12,198.675,63.113,32.613 -2020-02-25 10:00:00,127.82,194.487,61.461999999999996,32.613 -2020-02-25 10:15:00,127.61,190.99599999999998,61.461999999999996,32.613 -2020-02-25 10:30:00,124.56,188.578,61.461999999999996,32.613 -2020-02-25 10:45:00,124.47,187.65900000000002,61.461999999999996,32.613 -2020-02-25 11:00:00,120.98,185.67700000000002,59.614,32.613 -2020-02-25 11:15:00,121.56,184.88099999999997,59.614,32.613 -2020-02-25 11:30:00,122.41,184.05200000000002,59.614,32.613 -2020-02-25 11:45:00,121.67,182.856,59.614,32.613 -2020-02-25 12:00:00,121.07,177.997,57.415,32.613 -2020-02-25 12:15:00,120.61,178.21200000000002,57.415,32.613 -2020-02-25 12:30:00,117.95,177.486,57.415,32.613 -2020-02-25 12:45:00,118.6,178.41099999999997,57.415,32.613 -2020-02-25 13:00:00,116.09,177.77200000000002,58.534,32.613 -2020-02-25 13:15:00,116.32,176.41299999999998,58.534,32.613 -2020-02-25 13:30:00,118.93,175.377,58.534,32.613 -2020-02-25 13:45:00,116.93,174.995,58.534,32.613 -2020-02-25 14:00:00,119.27,175.935,59.415,32.613 -2020-02-25 14:15:00,117.11,175.63400000000001,59.415,32.613 -2020-02-25 14:30:00,118.09,176.03900000000002,59.415,32.613 -2020-02-25 14:45:00,119.19,176.899,59.415,32.613 -2020-02-25 15:00:00,121.2,178.81400000000002,62.071999999999996,32.613 -2020-02-25 15:15:00,119.3,177.905,62.071999999999996,32.613 -2020-02-25 15:30:00,119.76,178.90200000000002,62.071999999999996,32.613 -2020-02-25 15:45:00,121.39,179.77700000000002,62.071999999999996,32.613 -2020-02-25 16:00:00,123.07,181.363,64.99,32.613 -2020-02-25 16:15:00,125.94,182.801,64.99,32.613 -2020-02-25 16:30:00,123.48,185.644,64.99,32.613 -2020-02-25 16:45:00,125.86,186.815,64.99,32.613 -2020-02-25 17:00:00,133.26,188.80900000000003,72.658,32.613 -2020-02-25 17:15:00,133.66,191.135,72.658,32.613 -2020-02-25 17:30:00,136.58,193.74400000000003,72.658,32.613 -2020-02-25 17:45:00,134.98,194.747,72.658,32.613 -2020-02-25 18:00:00,142.9,197.021,73.645,32.613 -2020-02-25 18:15:00,140.35,196.71400000000003,73.645,32.613 -2020-02-25 18:30:00,140.6,195.40400000000002,73.645,32.613 -2020-02-25 18:45:00,140.89,196.53,73.645,32.613 -2020-02-25 19:00:00,138.89,195.298,67.085,32.613 -2020-02-25 19:15:00,137.3,192.084,67.085,32.613 -2020-02-25 19:30:00,143.66,190.675,67.085,32.613 -2020-02-25 19:45:00,146.82,187.835,67.085,32.613 -2020-02-25 20:00:00,137.15,182.99099999999999,66.138,32.613 -2020-02-25 20:15:00,124.2,177.548,66.138,32.613 -2020-02-25 20:30:00,125.13,173.822,66.138,32.613 -2020-02-25 20:45:00,122.61,172.012,66.138,32.613 -2020-02-25 21:00:00,114.79,168.75900000000001,57.512,32.613 -2020-02-25 21:15:00,117.9,165.666,57.512,32.613 -2020-02-25 21:30:00,118.78,163.622,57.512,32.613 -2020-02-25 21:45:00,115.59,163.079,57.512,32.613 -2020-02-25 22:00:00,105.29,155.977,54.545,32.613 -2020-02-25 22:15:00,105.73,151.689,54.545,32.613 -2020-02-25 22:30:00,100.32,137.36,54.545,32.613 -2020-02-25 22:45:00,103.78,129.903,54.545,32.613 -2020-02-25 23:00:00,103.37,123.266,48.605,32.613 -2020-02-25 23:15:00,102.21,121.863,48.605,32.613 -2020-02-25 23:30:00,94.38,123.02,48.605,32.613 -2020-02-25 23:45:00,93.16,123.08200000000001,48.605,32.613 -2020-02-26 00:00:00,84.21,117.904,45.675,32.613 -2020-02-26 00:15:00,85.32,116.678,45.675,32.613 -2020-02-26 00:30:00,85.53,116.619,45.675,32.613 -2020-02-26 00:45:00,85.09,117.14299999999999,45.675,32.613 -2020-02-26 01:00:00,86.21,118.89200000000001,43.015,32.613 -2020-02-26 01:15:00,91.24,119.031,43.015,32.613 -2020-02-26 01:30:00,91.43,119.15899999999999,43.015,32.613 -2020-02-26 01:45:00,91.86,119.352,43.015,32.613 -2020-02-26 02:00:00,88.93,121.329,41.0,32.613 -2020-02-26 02:15:00,90.95,122.693,41.0,32.613 -2020-02-26 02:30:00,91.59,123.649,41.0,32.613 -2020-02-26 02:45:00,90.28,125.43700000000001,41.0,32.613 -2020-02-26 03:00:00,90.74,127.93299999999999,41.318000000000005,32.613 -2020-02-26 03:15:00,95.62,129.485,41.318000000000005,32.613 -2020-02-26 03:30:00,92.99,131.248,41.318000000000005,32.613 -2020-02-26 03:45:00,89.88,132.731,41.318000000000005,32.613 -2020-02-26 04:00:00,92.31,144.463,42.544,32.613 -2020-02-26 04:15:00,89.03,156.114,42.544,32.613 -2020-02-26 04:30:00,88.74,158.754,42.544,32.613 -2020-02-26 04:45:00,89.87,160.845,42.544,32.613 -2020-02-26 05:00:00,94.12,193.24400000000003,45.161,32.613 -2020-02-26 05:15:00,95.66,221.297,45.161,32.613 -2020-02-26 05:30:00,99.71,216.31599999999997,45.161,32.613 -2020-02-26 05:45:00,104.02,209.291,45.161,32.613 -2020-02-26 06:00:00,116.54,206.68099999999998,61.86600000000001,32.613 -2020-02-26 06:15:00,119.33,212.68099999999998,61.86600000000001,32.613 -2020-02-26 06:30:00,124.91,214.77900000000002,61.86600000000001,32.613 -2020-02-26 06:45:00,124.25,218.601,61.86600000000001,32.613 -2020-02-26 07:00:00,132.05,219.398,77.814,32.613 -2020-02-26 07:15:00,131.93,223.041,77.814,32.613 -2020-02-26 07:30:00,130.23,224.108,77.814,32.613 -2020-02-26 07:45:00,131.9,223.488,77.814,32.613 -2020-02-26 08:00:00,135.76,221.69299999999998,70.251,32.613 -2020-02-26 08:15:00,134.68,220.50099999999998,70.251,32.613 -2020-02-26 08:30:00,134.89,216.365,70.251,32.613 -2020-02-26 08:45:00,132.39,212.62900000000002,70.251,32.613 -2020-02-26 09:00:00,132.02,205.533,66.965,32.613 -2020-02-26 09:15:00,137.94,202.412,66.965,32.613 -2020-02-26 09:30:00,138.13,201.06400000000002,66.965,32.613 -2020-02-26 09:45:00,140.89,198.15200000000002,66.965,32.613 -2020-02-26 10:00:00,135.54,193.976,63.628,32.613 -2020-02-26 10:15:00,133.05,190.52200000000002,63.628,32.613 -2020-02-26 10:30:00,129.5,188.12099999999998,63.628,32.613 -2020-02-26 10:45:00,130.84,187.217,63.628,32.613 -2020-02-26 11:00:00,122.72,185.227,62.516999999999996,32.613 -2020-02-26 11:15:00,122.07,184.449,62.516999999999996,32.613 -2020-02-26 11:30:00,120.82,183.62599999999998,62.516999999999996,32.613 -2020-02-26 11:45:00,120.99,182.445,62.516999999999996,32.613 -2020-02-26 12:00:00,121.64,177.602,60.888999999999996,32.613 -2020-02-26 12:15:00,119.41,177.832,60.888999999999996,32.613 -2020-02-26 12:30:00,119.83,177.074,60.888999999999996,32.613 -2020-02-26 12:45:00,121.37,177.99599999999998,60.888999999999996,32.613 -2020-02-26 13:00:00,118.3,177.392,61.57899999999999,32.613 -2020-02-26 13:15:00,121.25,176.01,61.57899999999999,32.613 -2020-02-26 13:30:00,119.3,174.96,61.57899999999999,32.613 -2020-02-26 13:45:00,117.57,174.58,61.57899999999999,32.613 -2020-02-26 14:00:00,120.42,175.582,62.602,32.613 -2020-02-26 14:15:00,120.08,175.25900000000001,62.602,32.613 -2020-02-26 14:30:00,127.13,175.64,62.602,32.613 -2020-02-26 14:45:00,123.18,176.512,62.602,32.613 -2020-02-26 15:00:00,124.28,178.433,64.259,32.613 -2020-02-26 15:15:00,121.09,177.495,64.259,32.613 -2020-02-26 15:30:00,121.21,178.44799999999998,64.259,32.613 -2020-02-26 15:45:00,124.4,179.30599999999998,64.259,32.613 -2020-02-26 16:00:00,123.44,180.894,67.632,32.613 -2020-02-26 16:15:00,128.2,182.315,67.632,32.613 -2020-02-26 16:30:00,126.24,185.15900000000002,67.632,32.613 -2020-02-26 16:45:00,129.82,186.3,67.632,32.613 -2020-02-26 17:00:00,132.44,188.3,72.583,32.613 -2020-02-26 17:15:00,132.18,190.64,72.583,32.613 -2020-02-26 17:30:00,138.18,193.27700000000002,72.583,32.613 -2020-02-26 17:45:00,137.44,194.299,72.583,32.613 -2020-02-26 18:00:00,144.08,196.584,72.744,32.613 -2020-02-26 18:15:00,142.07,196.34,72.744,32.613 -2020-02-26 18:30:00,143.05,195.028,72.744,32.613 -2020-02-26 18:45:00,143.25,196.175,72.744,32.613 -2020-02-26 19:00:00,142.61,194.905,69.684,32.613 -2020-02-26 19:15:00,143.22,191.708,69.684,32.613 -2020-02-26 19:30:00,148.53,190.325,69.684,32.613 -2020-02-26 19:45:00,145.96,187.525,69.684,32.613 -2020-02-26 20:00:00,134.53,182.65200000000002,70.036,32.613 -2020-02-26 20:15:00,128.04,177.22299999999998,70.036,32.613 -2020-02-26 20:30:00,123.73,173.518,70.036,32.613 -2020-02-26 20:45:00,122.17,171.71,70.036,32.613 -2020-02-26 21:00:00,116.79,168.44400000000002,60.431999999999995,32.613 -2020-02-26 21:15:00,121.15,165.343,60.431999999999995,32.613 -2020-02-26 21:30:00,120.23,163.3,60.431999999999995,32.613 -2020-02-26 21:45:00,113.68,162.774,60.431999999999995,32.613 -2020-02-26 22:00:00,107.74,155.657,56.2,32.613 -2020-02-26 22:15:00,104.57,151.393,56.2,32.613 -2020-02-26 22:30:00,101.62,137.017,56.2,32.613 -2020-02-26 22:45:00,102.65,129.564,56.2,32.613 -2020-02-26 23:00:00,96.31,122.925,47.927,32.613 -2020-02-26 23:15:00,102.68,121.538,47.927,32.613 -2020-02-26 23:30:00,99.27,122.704,47.927,32.613 -2020-02-26 23:45:00,95.89,122.791,47.927,32.613 -2020-02-27 00:00:00,88.18,117.63799999999999,43.794,32.613 -2020-02-27 00:15:00,88.97,116.417,43.794,32.613 -2020-02-27 00:30:00,90.67,116.34,43.794,32.613 -2020-02-27 00:45:00,87.97,116.863,43.794,32.613 -2020-02-27 01:00:00,93.08,118.571,42.397,32.613 -2020-02-27 01:15:00,91.83,118.697,42.397,32.613 -2020-02-27 01:30:00,90.3,118.811,42.397,32.613 -2020-02-27 01:45:00,86.08,119.008,42.397,32.613 -2020-02-27 02:00:00,85.82,120.977,40.010999999999996,32.613 -2020-02-27 02:15:00,93.94,122.337,40.010999999999996,32.613 -2020-02-27 02:30:00,91.53,123.309,40.010999999999996,32.613 -2020-02-27 02:45:00,92.99,125.09700000000001,40.010999999999996,32.613 -2020-02-27 03:00:00,90.02,127.602,39.181,32.613 -2020-02-27 03:15:00,93.1,129.143,39.181,32.613 -2020-02-27 03:30:00,93.75,130.901,39.181,32.613 -2020-02-27 03:45:00,90.45,132.39600000000002,39.181,32.613 -2020-02-27 04:00:00,93.08,144.13299999999998,40.39,32.613 -2020-02-27 04:15:00,98.7,155.77700000000002,40.39,32.613 -2020-02-27 04:30:00,96.19,158.435,40.39,32.613 -2020-02-27 04:45:00,92.23,160.512,40.39,32.613 -2020-02-27 05:00:00,95.1,192.89700000000002,45.504,32.613 -2020-02-27 05:15:00,97.21,220.97400000000002,45.504,32.613 -2020-02-27 05:30:00,102.16,215.96099999999998,45.504,32.613 -2020-02-27 05:45:00,104.54,208.938,45.504,32.613 -2020-02-27 06:00:00,114.7,206.334,57.748000000000005,32.613 -2020-02-27 06:15:00,118.52,212.34400000000002,57.748000000000005,32.613 -2020-02-27 06:30:00,121.44,214.40099999999998,57.748000000000005,32.613 -2020-02-27 06:45:00,123.95,218.209,57.748000000000005,32.613 -2020-02-27 07:00:00,127.56,219.028,72.138,32.613 -2020-02-27 07:15:00,129.28,222.639,72.138,32.613 -2020-02-27 07:30:00,129.58,223.67,72.138,32.613 -2020-02-27 07:45:00,132.15,223.00799999999998,72.138,32.613 -2020-02-27 08:00:00,134.97,221.19,65.542,32.613 -2020-02-27 08:15:00,134.2,219.979,65.542,32.613 -2020-02-27 08:30:00,131.35,215.787,65.542,32.613 -2020-02-27 08:45:00,126.9,212.06,65.542,32.613 -2020-02-27 09:00:00,124.52,204.975,60.523,32.613 -2020-02-27 09:15:00,124.46,201.856,60.523,32.613 -2020-02-27 09:30:00,126.69,200.528,60.523,32.613 -2020-02-27 09:45:00,127.92,197.623,60.523,32.613 -2020-02-27 10:00:00,125.86,193.459,57.449,32.613 -2020-02-27 10:15:00,123.44,190.041,57.449,32.613 -2020-02-27 10:30:00,125.61,187.658,57.449,32.613 -2020-02-27 10:45:00,126.43,186.771,57.449,32.613 -2020-02-27 11:00:00,122.4,184.77200000000002,54.505,32.613 -2020-02-27 11:15:00,127.71,184.00900000000001,54.505,32.613 -2020-02-27 11:30:00,120.16,183.195,54.505,32.613 -2020-02-27 11:45:00,118.8,182.02900000000002,54.505,32.613 -2020-02-27 12:00:00,117.29,177.203,51.50899999999999,32.613 -2020-02-27 12:15:00,116.79,177.446,51.50899999999999,32.613 -2020-02-27 12:30:00,112.3,176.657,51.50899999999999,32.613 -2020-02-27 12:45:00,115.74,177.57299999999998,51.50899999999999,32.613 -2020-02-27 13:00:00,112.3,177.00599999999997,51.303999999999995,32.613 -2020-02-27 13:15:00,119.69,175.601,51.303999999999995,32.613 -2020-02-27 13:30:00,117.02,174.53799999999998,51.303999999999995,32.613 -2020-02-27 13:45:00,114.97,174.16,51.303999999999995,32.613 -2020-02-27 14:00:00,115.47,175.22400000000002,52.785,32.613 -2020-02-27 14:15:00,115.4,174.87900000000002,52.785,32.613 -2020-02-27 14:30:00,119.74,175.236,52.785,32.613 -2020-02-27 14:45:00,121.19,176.11900000000003,52.785,32.613 -2020-02-27 15:00:00,123.14,178.046,56.458999999999996,32.613 -2020-02-27 15:15:00,116.9,177.079,56.458999999999996,32.613 -2020-02-27 15:30:00,124.45,177.988,56.458999999999996,32.613 -2020-02-27 15:45:00,126.19,178.828,56.458999999999996,32.613 -2020-02-27 16:00:00,128.02,180.417,59.388000000000005,32.613 -2020-02-27 16:15:00,126.16,181.822,59.388000000000005,32.613 -2020-02-27 16:30:00,128.55,184.666,59.388000000000005,32.613 -2020-02-27 16:45:00,130.21,185.77599999999998,59.388000000000005,32.613 -2020-02-27 17:00:00,134.52,187.782,64.462,32.613 -2020-02-27 17:15:00,134.4,190.137,64.462,32.613 -2020-02-27 17:30:00,136.14,192.80200000000002,64.462,32.613 -2020-02-27 17:45:00,140.64,193.84400000000002,64.462,32.613 -2020-02-27 18:00:00,148.99,196.137,65.128,32.613 -2020-02-27 18:15:00,149.31,195.958,65.128,32.613 -2020-02-27 18:30:00,144.63,194.645,65.128,32.613 -2020-02-27 18:45:00,147.88,195.813,65.128,32.613 -2020-02-27 19:00:00,146.09,194.50400000000002,61.316,32.613 -2020-02-27 19:15:00,145.64,191.324,61.316,32.613 -2020-02-27 19:30:00,135.54,189.967,61.316,32.613 -2020-02-27 19:45:00,136.53,187.209,61.316,32.613 -2020-02-27 20:00:00,133.14,182.305,59.845,32.613 -2020-02-27 20:15:00,130.96,176.892,59.845,32.613 -2020-02-27 20:30:00,127.67,173.207,59.845,32.613 -2020-02-27 20:45:00,123.1,171.40099999999998,59.845,32.613 -2020-02-27 21:00:00,118.51,168.123,54.83,32.613 -2020-02-27 21:15:00,116.64,165.014,54.83,32.613 -2020-02-27 21:30:00,116.78,162.971,54.83,32.613 -2020-02-27 21:45:00,116.76,162.464,54.83,32.613 -2020-02-27 22:00:00,106.08,155.33,50.933,32.613 -2020-02-27 22:15:00,104.2,151.092,50.933,32.613 -2020-02-27 22:30:00,106.52,136.667,50.933,32.613 -2020-02-27 22:45:00,108.8,129.218,50.933,32.613 -2020-02-27 23:00:00,101.23,122.57600000000001,45.32899999999999,32.613 -2020-02-27 23:15:00,100.86,121.205,45.32899999999999,32.613 -2020-02-27 23:30:00,97.66,122.382,45.32899999999999,32.613 -2020-02-27 23:45:00,99.21,122.494,45.32899999999999,32.613 -2020-02-28 00:00:00,95.24,116.29,43.74,32.613 -2020-02-28 00:15:00,90.0,115.273,43.74,32.613 -2020-02-28 00:30:00,93.54,115.04799999999999,43.74,32.613 -2020-02-28 00:45:00,93.7,115.684,43.74,32.613 -2020-02-28 01:00:00,86.92,117.04,42.555,32.613 -2020-02-28 01:15:00,89.35,118.04700000000001,42.555,32.613 -2020-02-28 01:30:00,90.93,117.935,42.555,32.613 -2020-02-28 01:45:00,91.4,118.236,42.555,32.613 -2020-02-28 02:00:00,88.43,120.294,41.68600000000001,32.613 -2020-02-28 02:15:00,90.06,121.537,41.68600000000001,32.613 -2020-02-28 02:30:00,89.98,123.05,41.68600000000001,32.613 -2020-02-28 02:45:00,91.98,124.87200000000001,41.68600000000001,32.613 -2020-02-28 03:00:00,85.75,126.415,42.278999999999996,32.613 -2020-02-28 03:15:00,90.33,128.856,42.278999999999996,32.613 -2020-02-28 03:30:00,91.82,130.59,42.278999999999996,32.613 -2020-02-28 03:45:00,92.28,132.428,42.278999999999996,32.613 -2020-02-28 04:00:00,93.53,144.399,43.742,32.613 -2020-02-28 04:15:00,94.58,155.774,43.742,32.613 -2020-02-28 04:30:00,96.07,158.686,43.742,32.613 -2020-02-28 04:45:00,88.54,159.619,43.742,32.613 -2020-02-28 05:00:00,92.18,190.735,46.973,32.613 -2020-02-28 05:15:00,94.1,220.334,46.973,32.613 -2020-02-28 05:30:00,99.17,216.352,46.973,32.613 -2020-02-28 05:45:00,101.77,209.26,46.973,32.613 -2020-02-28 06:00:00,114.52,207.092,59.63399999999999,32.613 -2020-02-28 06:15:00,116.78,211.665,59.63399999999999,32.613 -2020-02-28 06:30:00,121.82,212.828,59.63399999999999,32.613 -2020-02-28 06:45:00,121.41,218.22,59.63399999999999,32.613 -2020-02-28 07:00:00,126.51,218.248,71.631,32.613 -2020-02-28 07:15:00,130.43,222.845,71.631,32.613 -2020-02-28 07:30:00,132.73,223.635,71.631,32.613 -2020-02-28 07:45:00,131.7,222.05599999999998,71.631,32.613 -2020-02-28 08:00:00,137.02,219.141,66.181,32.613 -2020-02-28 08:15:00,131.96,217.541,66.181,32.613 -2020-02-28 08:30:00,136.24,214.248,66.181,32.613 -2020-02-28 08:45:00,130.35,208.982,66.181,32.613 -2020-02-28 09:00:00,130.85,202.32,63.086000000000006,32.613 -2020-02-28 09:15:00,128.0,199.795,63.086000000000006,32.613 -2020-02-28 09:30:00,131.49,198.054,63.086000000000006,32.613 -2020-02-28 09:45:00,128.77,195.05700000000002,63.086000000000006,32.613 -2020-02-28 10:00:00,128.05,189.793,60.886,32.613 -2020-02-28 10:15:00,129.03,187.09,60.886,32.613 -2020-02-28 10:30:00,125.57,184.666,60.886,32.613 -2020-02-28 10:45:00,132.11,183.361,60.886,32.613 -2020-02-28 11:00:00,130.54,181.342,59.391000000000005,32.613 -2020-02-28 11:15:00,127.61,179.697,59.391000000000005,32.613 -2020-02-28 11:30:00,127.14,180.593,59.391000000000005,32.613 -2020-02-28 11:45:00,124.9,179.465,59.391000000000005,32.613 -2020-02-28 12:00:00,122.01,175.725,56.172,32.613 -2020-02-28 12:15:00,126.66,173.922,56.172,32.613 -2020-02-28 12:30:00,120.31,173.257,56.172,32.613 -2020-02-28 12:45:00,122.17,174.65400000000002,56.172,32.613 -2020-02-28 13:00:00,118.8,175.051,54.406000000000006,32.613 -2020-02-28 13:15:00,122.05,174.425,54.406000000000006,32.613 -2020-02-28 13:30:00,121.88,173.385,54.406000000000006,32.613 -2020-02-28 13:45:00,125.01,172.955,54.406000000000006,32.613 -2020-02-28 14:00:00,121.64,172.949,53.578,32.613 -2020-02-28 14:15:00,117.04,172.418,53.578,32.613 -2020-02-28 14:30:00,115.28,173.28900000000002,53.578,32.613 -2020-02-28 14:45:00,116.76,174.46099999999998,53.578,32.613 -2020-02-28 15:00:00,112.41,175.921,56.568999999999996,32.613 -2020-02-28 15:15:00,116.08,174.49099999999999,56.568999999999996,32.613 -2020-02-28 15:30:00,121.56,173.861,56.568999999999996,32.613 -2020-02-28 15:45:00,123.51,174.84599999999998,56.568999999999996,32.613 -2020-02-28 16:00:00,121.03,175.273,60.169,32.613 -2020-02-28 16:15:00,119.77,176.956,60.169,32.613 -2020-02-28 16:30:00,124.79,179.888,60.169,32.613 -2020-02-28 16:45:00,130.53,180.83700000000002,60.169,32.613 -2020-02-28 17:00:00,134.83,183.079,65.497,32.613 -2020-02-28 17:15:00,137.27,185.04,65.497,32.613 -2020-02-28 17:30:00,137.09,187.424,65.497,32.613 -2020-02-28 17:45:00,141.86,188.253,65.497,32.613 -2020-02-28 18:00:00,148.36,191.23,65.082,32.613 -2020-02-28 18:15:00,143.47,190.71599999999998,65.082,32.613 -2020-02-28 18:30:00,142.41,189.78599999999997,65.082,32.613 -2020-02-28 18:45:00,144.94,190.97799999999998,65.082,32.613 -2020-02-28 19:00:00,139.83,190.535,60.968,32.613 -2020-02-28 19:15:00,136.32,188.72099999999998,60.968,32.613 -2020-02-28 19:30:00,138.61,186.987,60.968,32.613 -2020-02-28 19:45:00,138.84,183.80200000000002,60.968,32.613 -2020-02-28 20:00:00,130.09,178.919,61.123000000000005,32.613 -2020-02-28 20:15:00,127.16,173.543,61.123000000000005,32.613 -2020-02-28 20:30:00,122.02,169.83,61.123000000000005,32.613 -2020-02-28 20:45:00,118.31,168.558,61.123000000000005,32.613 -2020-02-28 21:00:00,117.05,165.787,55.416000000000004,32.613 -2020-02-28 21:15:00,114.42,163.128,55.416000000000004,32.613 -2020-02-28 21:30:00,108.61,161.128,55.416000000000004,32.613 -2020-02-28 21:45:00,103.76,161.17600000000002,55.416000000000004,32.613 -2020-02-28 22:00:00,96.68,154.987,51.631,32.613 -2020-02-28 22:15:00,95.08,150.64,51.631,32.613 -2020-02-28 22:30:00,100.47,142.507,51.631,32.613 -2020-02-28 22:45:00,100.52,138.542,51.631,32.613 -2020-02-28 23:00:00,93.73,131.487,44.898,32.613 -2020-02-28 23:15:00,87.45,128.192,44.898,32.613 -2020-02-28 23:30:00,82.28,127.915,44.898,32.613 -2020-02-28 23:45:00,85.88,127.398,44.898,32.613 -2020-02-29 00:00:00,82.24,113.23700000000001,42.033,32.431999999999995 -2020-02-29 00:15:00,85.01,108.041,42.033,32.431999999999995 -2020-02-29 00:30:00,80.52,109.09299999999999,42.033,32.431999999999995 -2020-02-29 00:45:00,80.2,110.416,42.033,32.431999999999995 -2020-02-29 01:00:00,76.23,112.354,38.255,32.431999999999995 -2020-02-29 01:15:00,75.84,112.39200000000001,38.255,32.431999999999995 -2020-02-29 01:30:00,74.66,111.743,38.255,32.431999999999995 -2020-02-29 01:45:00,74.31,111.86,38.255,32.431999999999995 -2020-02-29 02:00:00,77.97,114.565,36.404,32.431999999999995 -2020-02-29 02:15:00,79.13,115.428,36.404,32.431999999999995 -2020-02-29 02:30:00,76.43,115.85600000000001,36.404,32.431999999999995 -2020-02-29 02:45:00,74.31,117.789,36.404,32.431999999999995 -2020-02-29 03:00:00,72.93,119.935,36.083,32.431999999999995 -2020-02-29 03:15:00,71.88,121.161,36.083,32.431999999999995 -2020-02-29 03:30:00,71.31,121.338,36.083,32.431999999999995 -2020-02-29 03:45:00,71.98,123.323,36.083,32.431999999999995 -2020-02-29 04:00:00,72.01,131.215,36.102,32.431999999999995 -2020-02-29 04:15:00,72.24,140.079,36.102,32.431999999999995 -2020-02-29 04:30:00,72.51,140.856,36.102,32.431999999999995 -2020-02-29 04:45:00,73.77,141.296,36.102,32.431999999999995 -2020-02-29 05:00:00,73.63,156.637,35.284,32.431999999999995 -2020-02-29 05:15:00,74.75,167.479,35.284,32.431999999999995 -2020-02-29 05:30:00,75.74,163.838,35.284,32.431999999999995 -2020-02-29 05:45:00,77.0,162.155,35.284,32.431999999999995 -2020-02-29 06:00:00,77.1,178.55700000000002,36.265,32.431999999999995 -2020-02-29 06:15:00,78.45,199.275,36.265,32.431999999999995 -2020-02-29 06:30:00,77.71,195.088,36.265,32.431999999999995 -2020-02-29 06:45:00,79.47,191.61700000000002,36.265,32.431999999999995 -2020-02-29 07:00:00,82.82,187.955,40.714,32.431999999999995 -2020-02-29 07:15:00,85.08,191.27,40.714,32.431999999999995 -2020-02-29 07:30:00,87.37,194.697,40.714,32.431999999999995 -2020-02-29 07:45:00,90.24,196.983,40.714,32.431999999999995 -2020-02-29 08:00:00,94.26,198.00400000000002,46.692,32.431999999999995 -2020-02-29 08:15:00,93.79,199.93099999999998,46.692,32.431999999999995 -2020-02-29 08:30:00,95.57,198.158,46.692,32.431999999999995 -2020-02-29 08:45:00,97.68,196.007,46.692,32.431999999999995 -2020-02-29 09:00:00,99.64,191.146,48.925,32.431999999999995 -2020-02-29 09:15:00,101.64,189.36700000000002,48.925,32.431999999999995 -2020-02-29 09:30:00,101.61,188.537,48.925,32.431999999999995 -2020-02-29 09:45:00,103.34,185.695,48.925,32.431999999999995 -2020-02-29 10:00:00,103.19,180.743,47.799,32.431999999999995 -2020-02-29 10:15:00,103.4,178.24599999999998,47.799,32.431999999999995 -2020-02-29 10:30:00,100.05,175.993,47.799,32.431999999999995 -2020-02-29 10:45:00,101.34,175.965,47.799,32.431999999999995 -2020-02-29 11:00:00,102.61,174.145,44.309,32.431999999999995 -2020-02-29 11:15:00,104.3,171.86900000000003,44.309,32.431999999999995 -2020-02-29 11:30:00,107.59,171.69299999999998,44.309,32.431999999999995 -2020-02-29 11:45:00,110.39,169.666,44.309,32.431999999999995 -2020-02-29 12:00:00,107.28,165.10299999999998,42.367,32.431999999999995 -2020-02-29 12:15:00,108.46,163.957,42.367,32.431999999999995 -2020-02-29 12:30:00,105.82,163.566,42.367,32.431999999999995 -2020-02-29 12:45:00,103.19,164.22799999999998,42.367,32.431999999999995 -2020-02-29 13:00:00,97.8,164.255,39.036,32.431999999999995 -2020-02-29 13:15:00,97.25,161.597,39.036,32.431999999999995 -2020-02-29 13:30:00,95.99,160.111,39.036,32.431999999999995 -2020-02-29 13:45:00,96.33,160.111,39.036,32.431999999999995 -2020-02-29 14:00:00,93.08,161.362,37.995,32.431999999999995 -2020-02-29 14:15:00,93.55,160.257,37.995,32.431999999999995 -2020-02-29 14:30:00,93.15,159.326,37.995,32.431999999999995 -2020-02-29 14:45:00,93.28,160.732,37.995,32.431999999999995 -2020-02-29 15:00:00,92.46,162.841,40.71,32.431999999999995 -2020-02-29 15:15:00,91.85,162.183,40.71,32.431999999999995 -2020-02-29 15:30:00,89.88,163.00799999999998,40.71,32.431999999999995 -2020-02-29 15:45:00,88.72,163.968,40.71,32.431999999999995 -2020-02-29 16:00:00,88.8,163.262,46.998000000000005,32.431999999999995 -2020-02-29 16:15:00,87.64,165.77700000000002,46.998000000000005,32.431999999999995 -2020-02-29 16:30:00,89.92,168.66400000000002,46.998000000000005,32.431999999999995 -2020-02-29 16:45:00,92.75,170.44299999999998,46.998000000000005,32.431999999999995 -2020-02-29 17:00:00,98.43,172.093,55.431000000000004,32.431999999999995 -2020-02-29 17:15:00,99.1,175.64,55.431000000000004,32.431999999999995 -2020-02-29 17:30:00,102.07,177.953,55.431000000000004,32.431999999999995 -2020-02-29 17:45:00,105.39,178.418,55.431000000000004,32.431999999999995 -2020-02-29 18:00:00,110.77,180.94299999999998,55.989,32.431999999999995 -2020-02-29 18:15:00,113.04,182.285,55.989,32.431999999999995 -2020-02-29 18:30:00,114.76,182.68,55.989,32.431999999999995 -2020-02-29 18:45:00,114.16,180.55700000000002,55.989,32.431999999999995 -2020-02-29 19:00:00,112.1,180.942,50.882,32.431999999999995 -2020-02-29 19:15:00,110.76,178.642,50.882,32.431999999999995 -2020-02-29 19:30:00,109.34,177.685,50.882,32.431999999999995 -2020-02-29 19:45:00,110.83,174.40099999999998,50.882,32.431999999999995 -2020-02-29 20:00:00,103.05,171.63400000000001,43.172,32.431999999999995 -2020-02-29 20:15:00,100.21,168.33700000000002,43.172,32.431999999999995 -2020-02-29 20:30:00,97.84,164.28599999999997,43.172,32.431999999999995 -2020-02-29 20:45:00,96.65,162.657,43.172,32.431999999999995 -2020-02-29 21:00:00,90.85,162.047,37.599000000000004,32.431999999999995 -2020-02-29 21:15:00,91.68,159.80200000000002,37.599000000000004,32.431999999999995 -2020-02-29 21:30:00,89.56,159.00799999999998,37.599000000000004,32.431999999999995 -2020-02-29 21:45:00,89.3,158.668,37.599000000000004,32.431999999999995 -2020-02-29 22:00:00,85.48,153.77700000000002,39.047,32.431999999999995 -2020-02-29 22:15:00,84.96,151.89,39.047,32.431999999999995 -2020-02-29 22:30:00,79.47,149.774,39.047,32.431999999999995 -2020-02-29 22:45:00,81.08,147.64600000000002,39.047,32.431999999999995 -2020-02-29 23:00:00,77.22,142.952,32.339,32.431999999999995 -2020-02-29 23:15:00,77.22,138.085,32.339,32.431999999999995 -2020-02-29 23:30:00,75.06,136.158,32.339,32.431999999999995 -2020-02-29 23:45:00,73.54,133.304,32.339,32.431999999999995 -2020-03-01 00:00:00,68.61,114.87200000000001,20.007,31.988000000000003 -2020-03-01 00:15:00,70.53,108.667,20.007,31.988000000000003 -2020-03-01 00:30:00,66.5,108.73299999999999,20.007,31.988000000000003 -2020-03-01 00:45:00,67.58,110.04899999999999,20.007,31.988000000000003 -2020-03-01 01:00:00,65.55,112.008,17.378,31.988000000000003 -2020-03-01 01:15:00,65.75,113.44200000000001,17.378,31.988000000000003 -2020-03-01 01:30:00,65.35,113.366,17.378,31.988000000000003 -2020-03-01 01:45:00,65.61,113.147,17.378,31.988000000000003 -2020-03-01 02:00:00,63.96,115.15,16.145,31.988000000000003 -2020-03-01 02:15:00,64.55,114.846,16.145,31.988000000000003 -2020-03-01 02:30:00,62.76,115.854,16.145,31.988000000000003 -2020-03-01 02:45:00,63.36,118.155,16.145,31.988000000000003 -2020-03-01 03:00:00,62.76,120.616,15.427999999999999,31.988000000000003 -2020-03-01 03:15:00,63.56,121.51,15.427999999999999,31.988000000000003 -2020-03-01 03:30:00,63.25,123.181,15.427999999999999,31.988000000000003 -2020-03-01 03:45:00,63.21,124.824,15.427999999999999,31.988000000000003 -2020-03-01 04:00:00,62.91,133.92700000000002,16.663,31.988000000000003 -2020-03-01 04:15:00,63.35,143.066,16.663,31.988000000000003 -2020-03-01 04:30:00,63.9,143.304,16.663,31.988000000000003 -2020-03-01 04:45:00,63.94,143.76,16.663,31.988000000000003 -2020-03-01 05:00:00,66.16,157.566,17.271,31.988000000000003 -2020-03-01 05:15:00,66.79,168.065,17.271,31.988000000000003 -2020-03-01 05:30:00,66.13,163.91,17.271,31.988000000000003 -2020-03-01 05:45:00,66.68,161.535,17.271,31.988000000000003 -2020-03-01 06:00:00,67.98,178.033,17.612000000000002,31.988000000000003 -2020-03-01 06:15:00,67.63,197.967,17.612000000000002,31.988000000000003 -2020-03-01 06:30:00,66.96,192.521,17.612000000000002,31.988000000000003 -2020-03-01 06:45:00,67.33,187.15599999999998,17.612000000000002,31.988000000000003 -2020-03-01 07:00:00,69.6,187.088,20.88,31.988000000000003 -2020-03-01 07:15:00,70.32,188.924,20.88,31.988000000000003 -2020-03-01 07:30:00,72.12,190.649,20.88,31.988000000000003 -2020-03-01 07:45:00,75.07,191.512,20.88,31.988000000000003 -2020-03-01 08:00:00,79.08,194.41400000000002,25.861,31.988000000000003 -2020-03-01 08:15:00,78.76,195.868,25.861,31.988000000000003 -2020-03-01 08:30:00,77.97,195.63400000000001,25.861,31.988000000000003 -2020-03-01 08:45:00,78.47,194.578,25.861,31.988000000000003 -2020-03-01 09:00:00,77.62,188.77599999999998,27.921999999999997,31.988000000000003 -2020-03-01 09:15:00,77.96,187.282,27.921999999999997,31.988000000000003 -2020-03-01 09:30:00,80.81,186.24200000000002,27.921999999999997,31.988000000000003 -2020-03-01 09:45:00,87.16,183.475,27.921999999999997,31.988000000000003 -2020-03-01 10:00:00,87.22,182.304,29.048000000000002,31.988000000000003 -2020-03-01 10:15:00,85.78,180.335,29.048000000000002,31.988000000000003 -2020-03-01 10:30:00,84.44,178.554,29.048000000000002,31.988000000000003 -2020-03-01 10:45:00,83.32,176.795,29.048000000000002,31.988000000000003 -2020-03-01 11:00:00,83.84,174.87900000000002,32.02,31.988000000000003 -2020-03-01 11:15:00,81.49,172.76,32.02,31.988000000000003 -2020-03-01 11:30:00,83.37,172.18400000000003,32.02,31.988000000000003 -2020-03-01 11:45:00,82.81,171.415,32.02,31.988000000000003 -2020-03-01 12:00:00,79.55,165.91400000000002,28.55,31.988000000000003 -2020-03-01 12:15:00,76.4,166.451,28.55,31.988000000000003 -2020-03-01 12:30:00,72.82,165.06900000000002,28.55,31.988000000000003 -2020-03-01 12:45:00,71.89,164.695,28.55,31.988000000000003 -2020-03-01 13:00:00,68.82,163.696,25.601999999999997,31.988000000000003 -2020-03-01 13:15:00,67.4,163.767,25.601999999999997,31.988000000000003 -2020-03-01 13:30:00,66.06,161.689,25.601999999999997,31.988000000000003 -2020-03-01 13:45:00,65.28,160.939,25.601999999999997,31.988000000000003 -2020-03-01 14:00:00,62.31,162.632,23.916999999999998,31.988000000000003 -2020-03-01 14:15:00,63.97,162.403,23.916999999999998,31.988000000000003 -2020-03-01 14:30:00,64.32,162.54399999999998,23.916999999999998,31.988000000000003 -2020-03-01 14:45:00,66.22,163.375,23.916999999999998,31.988000000000003 -2020-03-01 15:00:00,66.27,163.856,24.064,31.988000000000003 -2020-03-01 15:15:00,67.29,163.786,24.064,31.988000000000003 -2020-03-01 15:30:00,68.58,164.68200000000002,24.064,31.988000000000003 -2020-03-01 15:45:00,70.54,165.767,24.064,31.988000000000003 -2020-03-01 16:00:00,73.29,168.68,28.189,31.988000000000003 -2020-03-01 16:15:00,73.42,170.81400000000002,28.189,31.988000000000003 -2020-03-01 16:30:00,75.75,173.27599999999998,28.189,31.988000000000003 -2020-03-01 16:45:00,78.52,174.707,28.189,31.988000000000003 -2020-03-01 17:00:00,83.11,177.141,37.576,31.988000000000003 -2020-03-01 17:15:00,85.27,180.53900000000002,37.576,31.988000000000003 -2020-03-01 17:30:00,89.46,183.257,37.576,31.988000000000003 -2020-03-01 17:45:00,92.14,185.89,37.576,31.988000000000003 -2020-03-01 18:00:00,100.96,188.957,42.669,31.988000000000003 -2020-03-01 18:15:00,103.27,191.891,42.669,31.988000000000003 -2020-03-01 18:30:00,103.76,190.107,42.669,31.988000000000003 -2020-03-01 18:45:00,102.03,190.166,42.669,31.988000000000003 -2020-03-01 19:00:00,101.46,190.812,43.538999999999994,31.988000000000003 -2020-03-01 19:15:00,100.17,188.94400000000002,43.538999999999994,31.988000000000003 -2020-03-01 19:30:00,98.2,188.227,43.538999999999994,31.988000000000003 -2020-03-01 19:45:00,96.97,185.736,43.538999999999994,31.988000000000003 -2020-03-01 20:00:00,93.91,182.748,37.330999999999996,31.988000000000003 -2020-03-01 20:15:00,93.83,180.495,37.330999999999996,31.988000000000003 -2020-03-01 20:30:00,95.91,177.46200000000002,37.330999999999996,31.988000000000003 -2020-03-01 20:45:00,97.34,173.905,37.330999999999996,31.988000000000003 -2020-03-01 21:00:00,94.5,170.889,33.856,31.988000000000003 -2020-03-01 21:15:00,89.25,168.035,33.856,31.988000000000003 -2020-03-01 21:30:00,88.14,167.192,33.856,31.988000000000003 -2020-03-01 21:45:00,89.58,167.22400000000002,33.856,31.988000000000003 -2020-03-01 22:00:00,93.6,161.214,34.711999999999996,31.988000000000003 -2020-03-01 22:15:00,95.33,158.43200000000002,34.711999999999996,31.988000000000003 -2020-03-01 22:30:00,91.18,152.474,34.711999999999996,31.988000000000003 -2020-03-01 22:45:00,83.29,149.13299999999998,34.711999999999996,31.988000000000003 -2020-03-01 23:00:00,79.65,141.811,29.698,31.988000000000003 -2020-03-01 23:15:00,80.74,138.316,29.698,31.988000000000003 -2020-03-01 23:30:00,78.27,137.503,29.698,31.988000000000003 -2020-03-01 23:45:00,78.56,135.459,29.698,31.988000000000003 -2020-03-02 00:00:00,73.51,118.774,29.983,32.166 -2020-03-02 00:15:00,74.57,115.516,29.983,32.166 -2020-03-02 00:30:00,75.5,115.632,29.983,32.166 -2020-03-02 00:45:00,73.67,116.381,29.983,32.166 -2020-03-02 01:00:00,70.05,118.355,29.122,32.166 -2020-03-02 01:15:00,71.82,119.274,29.122,32.166 -2020-03-02 01:30:00,71.29,119.28299999999999,29.122,32.166 -2020-03-02 01:45:00,72.24,119.164,29.122,32.166 -2020-03-02 02:00:00,70.05,121.193,28.676,32.166 -2020-03-02 02:15:00,71.47,122.126,28.676,32.166 -2020-03-02 02:30:00,70.78,123.491,28.676,32.166 -2020-03-02 02:45:00,71.48,125.18299999999999,28.676,32.166 -2020-03-02 03:00:00,72.12,128.914,26.552,32.166 -2020-03-02 03:15:00,72.82,131.45600000000002,26.552,32.166 -2020-03-02 03:30:00,79.44,132.96200000000002,26.552,32.166 -2020-03-02 03:45:00,81.71,134.03,26.552,32.166 -2020-03-02 04:00:00,82.58,147.67700000000002,27.44,32.166 -2020-03-02 04:15:00,77.82,161.142,27.44,32.166 -2020-03-02 04:30:00,78.23,163.398,27.44,32.166 -2020-03-02 04:45:00,79.38,164.046,27.44,32.166 -2020-03-02 05:00:00,83.72,193.69400000000002,36.825,32.166 -2020-03-02 05:15:00,86.57,224.705,36.825,32.166 -2020-03-02 05:30:00,91.53,220.55200000000002,36.825,32.166 -2020-03-02 05:45:00,96.44,212.40900000000002,36.825,32.166 -2020-03-02 06:00:00,105.65,210.571,56.589,32.166 -2020-03-02 06:15:00,110.56,215.197,56.589,32.166 -2020-03-02 06:30:00,114.34,217.84599999999998,56.589,32.166 -2020-03-02 06:45:00,116.99,221.528,56.589,32.166 -2020-03-02 07:00:00,121.98,223.831,67.49,32.166 -2020-03-02 07:15:00,122.83,227.138,67.49,32.166 -2020-03-02 07:30:00,126.26,227.96599999999998,67.49,32.166 -2020-03-02 07:45:00,128.48,226.40400000000002,67.49,32.166 -2020-03-02 08:00:00,132.44,224.445,60.028,32.166 -2020-03-02 08:15:00,131.31,223.685,60.028,32.166 -2020-03-02 08:30:00,130.5,219.38,60.028,32.166 -2020-03-02 08:45:00,131.43,215.199,60.028,32.166 -2020-03-02 09:00:00,130.52,208.362,55.018,32.166 -2020-03-02 09:15:00,130.5,203.305,55.018,32.166 -2020-03-02 09:30:00,131.0,201.21099999999998,55.018,32.166 -2020-03-02 09:45:00,131.43,198.43,55.018,32.166 -2020-03-02 10:00:00,129.42,196.28799999999998,51.183,32.166 -2020-03-02 10:15:00,130.46,194.028,51.183,32.166 -2020-03-02 10:30:00,130.39,191.372,51.183,32.166 -2020-03-02 10:45:00,130.17,190.128,51.183,32.166 -2020-03-02 11:00:00,128.8,185.782,50.065,32.166 -2020-03-02 11:15:00,130.97,185.44099999999997,50.065,32.166 -2020-03-02 11:30:00,128.5,186.283,50.065,32.166 -2020-03-02 11:45:00,124.59,185.206,50.065,32.166 -2020-03-02 12:00:00,122.07,181.143,48.141999999999996,32.166 -2020-03-02 12:15:00,122.75,181.709,48.141999999999996,32.166 -2020-03-02 12:30:00,118.19,180.388,48.141999999999996,32.166 -2020-03-02 12:45:00,115.54,181.465,48.141999999999996,32.166 -2020-03-02 13:00:00,116.29,181.18,47.887,32.166 -2020-03-02 13:15:00,111.2,179.791,47.887,32.166 -2020-03-02 13:30:00,110.44,177.218,47.887,32.166 -2020-03-02 13:45:00,110.06,176.62,47.887,32.166 -2020-03-02 14:00:00,109.1,177.69,48.571000000000005,32.166 -2020-03-02 14:15:00,110.15,176.90200000000002,48.571000000000005,32.166 -2020-03-02 14:30:00,109.82,176.476,48.571000000000005,32.166 -2020-03-02 14:45:00,112.38,177.563,48.571000000000005,32.166 -2020-03-02 15:00:00,111.64,179.74599999999998,49.937,32.166 -2020-03-02 15:15:00,113.26,178.19299999999998,49.937,32.166 -2020-03-02 15:30:00,112.72,178.34599999999998,49.937,32.166 -2020-03-02 15:45:00,112.81,178.925,49.937,32.166 -2020-03-02 16:00:00,116.61,182.183,52.963,32.166 -2020-03-02 16:15:00,115.99,183.57299999999998,52.963,32.166 -2020-03-02 16:30:00,117.48,185.021,52.963,32.166 -2020-03-02 16:45:00,119.0,185.275,52.963,32.166 -2020-03-02 17:00:00,121.05,187.44,61.163999999999994,32.166 -2020-03-02 17:15:00,122.51,189.97299999999998,61.163999999999994,32.166 -2020-03-02 17:30:00,125.34,192.14,61.163999999999994,32.166 -2020-03-02 17:45:00,127.45,193.295,61.163999999999994,32.166 -2020-03-02 18:00:00,135.41,196.68599999999998,63.788999999999994,32.166 -2020-03-02 18:15:00,136.15,197.328,63.788999999999994,32.166 -2020-03-02 18:30:00,135.28,196.08900000000003,63.788999999999994,32.166 -2020-03-02 18:45:00,134.36,197.226,63.788999999999994,32.166 -2020-03-02 19:00:00,134.74,196.25,63.913000000000004,32.166 -2020-03-02 19:15:00,130.7,193.407,63.913000000000004,32.166 -2020-03-02 19:30:00,131.09,193.16099999999997,63.913000000000004,32.166 -2020-03-02 19:45:00,129.93,189.833,63.913000000000004,32.166 -2020-03-02 20:00:00,119.75,184.363,65.44,32.166 -2020-03-02 20:15:00,118.41,179.88299999999998,65.44,32.166 -2020-03-02 20:30:00,115.33,175.128,65.44,32.166 -2020-03-02 20:45:00,114.14,173.17700000000002,65.44,32.166 -2020-03-02 21:00:00,109.07,170.59400000000002,59.117,32.166 -2020-03-02 21:15:00,111.01,166.644,59.117,32.166 -2020-03-02 21:30:00,109.45,165.047,59.117,32.166 -2020-03-02 21:45:00,107.16,164.585,59.117,32.166 -2020-03-02 22:00:00,100.92,155.52,52.301,32.166 -2020-03-02 22:15:00,97.41,151.71,52.301,32.166 -2020-03-02 22:30:00,99.9,135.923,52.301,32.166 -2020-03-02 22:45:00,100.06,127.88600000000001,52.301,32.166 -2020-03-02 23:00:00,94.69,121.306,44.373000000000005,32.166 -2020-03-02 23:15:00,88.97,120.22200000000001,44.373000000000005,32.166 -2020-03-02 23:30:00,89.49,122.09700000000001,44.373000000000005,32.166 -2020-03-02 23:45:00,90.65,122.587,44.373000000000005,32.166 -2020-03-03 00:00:00,87.69,117.507,44.647,32.166 -2020-03-03 00:15:00,84.07,115.73299999999999,44.647,32.166 -2020-03-03 00:30:00,82.45,115.021,44.647,32.166 -2020-03-03 00:45:00,85.5,114.936,44.647,32.166 -2020-03-03 01:00:00,80.31,116.613,41.433,32.166 -2020-03-03 01:15:00,82.7,117.10600000000001,41.433,32.166 -2020-03-03 01:30:00,78.1,117.24600000000001,41.433,32.166 -2020-03-03 01:45:00,76.78,117.35700000000001,41.433,32.166 -2020-03-03 02:00:00,76.01,119.30799999999999,39.909,32.166 -2020-03-03 02:15:00,76.06,120.281,39.909,32.166 -2020-03-03 02:30:00,76.62,121.045,39.909,32.166 -2020-03-03 02:45:00,81.97,122.792,39.909,32.166 -2020-03-03 03:00:00,84.87,125.315,39.14,32.166 -2020-03-03 03:15:00,86.31,127.15700000000001,39.14,32.166 -2020-03-03 03:30:00,84.73,129.112,39.14,32.166 -2020-03-03 03:45:00,85.5,130.22899999999998,39.14,32.166 -2020-03-03 04:00:00,87.66,143.525,40.015,32.166 -2020-03-03 04:15:00,81.89,156.649,40.015,32.166 -2020-03-03 04:30:00,83.96,158.612,40.015,32.166 -2020-03-03 04:45:00,89.14,160.464,40.015,32.166 -2020-03-03 05:00:00,95.89,195.05900000000003,44.93600000000001,32.166 -2020-03-03 05:15:00,98.73,225.97400000000002,44.93600000000001,32.166 -2020-03-03 05:30:00,97.84,220.359,44.93600000000001,32.166 -2020-03-03 05:45:00,100.51,212.12900000000002,44.93600000000001,32.166 -2020-03-03 06:00:00,109.28,209.315,57.271,32.166 -2020-03-03 06:15:00,112.89,215.521,57.271,32.166 -2020-03-03 06:30:00,115.24,217.46900000000002,57.271,32.166 -2020-03-03 06:45:00,116.92,220.65599999999998,57.271,32.166 -2020-03-03 07:00:00,122.15,222.825,68.352,32.166 -2020-03-03 07:15:00,122.86,225.91299999999998,68.352,32.166 -2020-03-03 07:30:00,126.57,226.18099999999998,68.352,32.166 -2020-03-03 07:45:00,127.79,224.65400000000002,68.352,32.166 -2020-03-03 08:00:00,131.05,222.767,60.717,32.166 -2020-03-03 08:15:00,131.16,220.958,60.717,32.166 -2020-03-03 08:30:00,135.43,216.447,60.717,32.166 -2020-03-03 08:45:00,132.45,211.908,60.717,32.166 -2020-03-03 09:00:00,132.71,204.32299999999998,54.603,32.166 -2020-03-03 09:15:00,132.5,200.79,54.603,32.166 -2020-03-03 09:30:00,134.11,199.454,54.603,32.166 -2020-03-03 09:45:00,133.41,196.642,54.603,32.166 -2020-03-03 10:00:00,133.09,193.778,52.308,32.166 -2020-03-03 10:15:00,132.43,190.52200000000002,52.308,32.166 -2020-03-03 10:30:00,133.18,188.062,52.308,32.166 -2020-03-03 10:45:00,133.76,187.234,52.308,32.166 -2020-03-03 11:00:00,132.89,184.308,51.838,32.166 -2020-03-03 11:15:00,134.16,183.71599999999998,51.838,32.166 -2020-03-03 11:30:00,133.77,183.303,51.838,32.166 -2020-03-03 11:45:00,134.04,182.864,51.838,32.166 -2020-03-03 12:00:00,134.11,177.479,50.375,32.166 -2020-03-03 12:15:00,134.12,177.7,50.375,32.166 -2020-03-03 12:30:00,134.26,177.143,50.375,32.166 -2020-03-03 12:45:00,136.24,178.02,50.375,32.166 -2020-03-03 13:00:00,132.14,177.34099999999998,50.735,32.166 -2020-03-03 13:15:00,140.28,175.817,50.735,32.166 -2020-03-03 13:30:00,140.27,174.355,50.735,32.166 -2020-03-03 13:45:00,138.43,173.81900000000002,50.735,32.166 -2020-03-03 14:00:00,134.59,175.283,50.946000000000005,32.166 -2020-03-03 14:15:00,133.48,174.597,50.946000000000005,32.166 -2020-03-03 14:30:00,134.65,174.787,50.946000000000005,32.166 -2020-03-03 14:45:00,139.12,175.71,50.946000000000005,32.166 -2020-03-03 15:00:00,138.89,177.46400000000003,53.18,32.166 -2020-03-03 15:15:00,136.59,176.313,53.18,32.166 -2020-03-03 15:30:00,133.42,176.609,53.18,32.166 -2020-03-03 15:45:00,137.07,176.822,53.18,32.166 -2020-03-03 16:00:00,138.31,180.324,54.928999999999995,32.166 -2020-03-03 16:15:00,137.5,182.165,54.928999999999995,32.166 -2020-03-03 16:30:00,135.91,184.196,54.928999999999995,32.166 -2020-03-03 16:45:00,136.81,184.774,54.928999999999995,32.166 -2020-03-03 17:00:00,138.14,187.50099999999998,60.913000000000004,32.166 -2020-03-03 17:15:00,138.47,190.11700000000002,60.913000000000004,32.166 -2020-03-03 17:30:00,137.24,192.908,60.913000000000004,32.166 -2020-03-03 17:45:00,134.06,193.915,60.913000000000004,32.166 -2020-03-03 18:00:00,143.82,197.111,62.214,32.166 -2020-03-03 18:15:00,146.3,197.49,62.214,32.166 -2020-03-03 18:30:00,146.08,195.918,62.214,32.166 -2020-03-03 18:45:00,142.83,197.834,62.214,32.166 -2020-03-03 19:00:00,139.19,196.77599999999998,62.38,32.166 -2020-03-03 19:15:00,140.37,193.695,62.38,32.166 -2020-03-03 19:30:00,138.01,192.799,62.38,32.166 -2020-03-03 19:45:00,138.66,189.58599999999998,62.38,32.166 -2020-03-03 20:00:00,130.23,184.28,65.018,32.166 -2020-03-03 20:15:00,123.06,179.03400000000002,65.018,32.166 -2020-03-03 20:30:00,123.81,175.297,65.018,32.166 -2020-03-03 20:45:00,121.62,172.838,65.018,32.166 -2020-03-03 21:00:00,117.63,169.65599999999998,56.416000000000004,32.166 -2020-03-03 21:15:00,108.75,166.425,56.416000000000004,32.166 -2020-03-03 21:30:00,108.4,164.136,56.416000000000004,32.166 -2020-03-03 21:45:00,110.03,163.938,56.416000000000004,32.166 -2020-03-03 22:00:00,107.4,156.55,52.846000000000004,32.166 -2020-03-03 22:15:00,105.11,152.477,52.846000000000004,32.166 -2020-03-03 22:30:00,98.01,136.759,52.846000000000004,32.166 -2020-03-03 22:45:00,100.15,128.994,52.846000000000004,32.166 -2020-03-03 23:00:00,96.08,122.352,44.435,32.166 -2020-03-03 23:15:00,96.98,120.572,44.435,32.166 -2020-03-03 23:30:00,89.43,122.104,44.435,32.166 -2020-03-03 23:45:00,87.12,122.21,44.435,32.166 -2020-03-04 00:00:00,83.92,117.189,42.527,32.166 -2020-03-04 00:15:00,81.31,115.42299999999999,42.527,32.166 -2020-03-04 00:30:00,85.2,114.69200000000001,42.527,32.166 -2020-03-04 00:45:00,87.61,114.60600000000001,42.527,32.166 -2020-03-04 01:00:00,83.3,116.243,38.655,32.166 -2020-03-04 01:15:00,83.96,116.72,38.655,32.166 -2020-03-04 01:30:00,76.44,116.84299999999999,38.655,32.166 -2020-03-04 01:45:00,77.77,116.96,38.655,32.166 -2020-03-04 02:00:00,77.27,118.90100000000001,36.912,32.166 -2020-03-04 02:15:00,79.12,119.867,36.912,32.166 -2020-03-04 02:30:00,84.05,120.65,36.912,32.166 -2020-03-04 02:45:00,84.7,122.397,36.912,32.166 -2020-03-04 03:00:00,84.41,124.934,36.98,32.166 -2020-03-04 03:15:00,86.26,126.76,36.98,32.166 -2020-03-04 03:30:00,87.42,128.709,36.98,32.166 -2020-03-04 03:45:00,87.57,129.838,36.98,32.166 -2020-03-04 04:00:00,83.7,143.138,38.052,32.166 -2020-03-04 04:15:00,88.51,156.252,38.052,32.166 -2020-03-04 04:30:00,91.89,158.232,38.052,32.166 -2020-03-04 04:45:00,93.1,160.07,38.052,32.166 -2020-03-04 05:00:00,91.47,194.645,42.455,32.166 -2020-03-04 05:15:00,91.38,225.574,42.455,32.166 -2020-03-04 05:30:00,94.97,219.925,42.455,32.166 -2020-03-04 05:45:00,95.93,211.703,42.455,32.166 -2020-03-04 06:00:00,106.42,208.898,57.986000000000004,32.166 -2020-03-04 06:15:00,112.03,215.11,57.986000000000004,32.166 -2020-03-04 06:30:00,114.0,217.014,57.986000000000004,32.166 -2020-03-04 06:45:00,116.7,220.18200000000002,57.986000000000004,32.166 -2020-03-04 07:00:00,122.52,222.373,71.868,32.166 -2020-03-04 07:15:00,122.72,225.428,71.868,32.166 -2020-03-04 07:30:00,125.92,225.655,71.868,32.166 -2020-03-04 07:45:00,128.12,224.088,71.868,32.166 -2020-03-04 08:00:00,130.83,222.176,62.225,32.166 -2020-03-04 08:15:00,130.93,220.354,62.225,32.166 -2020-03-04 08:30:00,131.84,215.78599999999997,62.225,32.166 -2020-03-04 08:45:00,131.99,211.262,62.225,32.166 -2020-03-04 09:00:00,133.12,203.688,58.802,32.166 -2020-03-04 09:15:00,134.1,200.15599999999998,58.802,32.166 -2020-03-04 09:30:00,135.91,198.843,58.802,32.166 -2020-03-04 09:45:00,136.01,196.042,58.802,32.166 -2020-03-04 10:00:00,135.9,193.19299999999998,54.122,32.166 -2020-03-04 10:15:00,137.47,189.97799999999998,54.122,32.166 -2020-03-04 10:30:00,136.84,187.53799999999998,54.122,32.166 -2020-03-04 10:45:00,137.85,186.72799999999998,54.122,32.166 -2020-03-04 11:00:00,137.84,183.793,54.368,32.166 -2020-03-04 11:15:00,140.09,183.22099999999998,54.368,32.166 -2020-03-04 11:30:00,140.75,182.81599999999997,54.368,32.166 -2020-03-04 11:45:00,141.22,182.395,54.368,32.166 -2020-03-04 12:00:00,138.17,177.02900000000002,52.74,32.166 -2020-03-04 12:15:00,140.05,177.263,52.74,32.166 -2020-03-04 12:30:00,136.13,176.671,52.74,32.166 -2020-03-04 12:45:00,137.21,177.545,52.74,32.166 -2020-03-04 13:00:00,141.05,176.90599999999998,52.544,32.166 -2020-03-04 13:15:00,139.87,175.361,52.544,32.166 -2020-03-04 13:30:00,125.18,173.886,52.544,32.166 -2020-03-04 13:45:00,130.05,173.352,52.544,32.166 -2020-03-04 14:00:00,125.22,174.88400000000001,53.602,32.166 -2020-03-04 14:15:00,123.48,174.174,53.602,32.166 -2020-03-04 14:30:00,126.37,174.335,53.602,32.166 -2020-03-04 14:45:00,123.47,175.268,53.602,32.166 -2020-03-04 15:00:00,121.69,177.032,55.59,32.166 -2020-03-04 15:15:00,118.75,175.852,55.59,32.166 -2020-03-04 15:30:00,116.12,176.09900000000002,55.59,32.166 -2020-03-04 15:45:00,120.18,176.293,55.59,32.166 -2020-03-04 16:00:00,123.92,179.798,57.586999999999996,32.166 -2020-03-04 16:15:00,124.85,181.62099999999998,57.586999999999996,32.166 -2020-03-04 16:30:00,120.88,183.65099999999998,57.586999999999996,32.166 -2020-03-04 16:45:00,124.56,184.18900000000002,57.586999999999996,32.166 -2020-03-04 17:00:00,128.84,186.928,62.111999999999995,32.166 -2020-03-04 17:15:00,130.98,189.553,62.111999999999995,32.166 -2020-03-04 17:30:00,131.7,192.36900000000003,62.111999999999995,32.166 -2020-03-04 17:45:00,131.94,193.391,62.111999999999995,32.166 -2020-03-04 18:00:00,138.98,196.595,64.605,32.166 -2020-03-04 18:15:00,143.1,197.04,64.605,32.166 -2020-03-04 18:30:00,145.58,195.46400000000003,64.605,32.166 -2020-03-04 18:45:00,139.57,197.40099999999998,64.605,32.166 -2020-03-04 19:00:00,139.2,196.305,65.55199999999999,32.166 -2020-03-04 19:15:00,137.12,193.24200000000002,65.55199999999999,32.166 -2020-03-04 19:30:00,134.82,192.373,65.55199999999999,32.166 -2020-03-04 19:45:00,128.94,189.204,65.55199999999999,32.166 -2020-03-04 20:00:00,125.39,183.868,66.778,32.166 -2020-03-04 20:15:00,122.78,178.637,66.778,32.166 -2020-03-04 20:30:00,118.75,174.926,66.778,32.166 -2020-03-04 20:45:00,115.74,172.472,66.778,32.166 -2020-03-04 21:00:00,113.84,169.278,56.103,32.166 -2020-03-04 21:15:00,111.66,166.042,56.103,32.166 -2020-03-04 21:30:00,107.31,163.753,56.103,32.166 -2020-03-04 21:45:00,108.44,163.576,56.103,32.166 -2020-03-04 22:00:00,103.17,156.173,51.371,32.166 -2020-03-04 22:15:00,102.87,152.128,51.371,32.166 -2020-03-04 22:30:00,93.83,136.359,51.371,32.166 -2020-03-04 22:45:00,94.61,128.59799999999998,51.371,32.166 -2020-03-04 23:00:00,93.52,121.95,42.798,32.166 -2020-03-04 23:15:00,93.24,120.189,42.798,32.166 -2020-03-04 23:30:00,86.27,121.729,42.798,32.166 -2020-03-04 23:45:00,85.18,121.86,42.798,32.166 -2020-03-05 00:00:00,79.97,116.865,39.069,32.166 -2020-03-05 00:15:00,84.04,115.10700000000001,39.069,32.166 -2020-03-05 00:30:00,86.08,114.35799999999999,39.069,32.166 -2020-03-05 00:45:00,83.85,114.272,39.069,32.166 -2020-03-05 01:00:00,75.83,115.867,37.043,32.166 -2020-03-05 01:15:00,75.46,116.329,37.043,32.166 -2020-03-05 01:30:00,75.14,116.435,37.043,32.166 -2020-03-05 01:45:00,77.65,116.557,37.043,32.166 -2020-03-05 02:00:00,79.69,118.488,34.625,32.166 -2020-03-05 02:15:00,80.69,119.448,34.625,32.166 -2020-03-05 02:30:00,78.05,120.249,34.625,32.166 -2020-03-05 02:45:00,76.94,121.99700000000001,34.625,32.166 -2020-03-05 03:00:00,77.22,124.545,33.812,32.166 -2020-03-05 03:15:00,82.54,126.35600000000001,33.812,32.166 -2020-03-05 03:30:00,83.02,128.299,33.812,32.166 -2020-03-05 03:45:00,80.83,129.442,33.812,32.166 -2020-03-05 04:00:00,78.0,142.746,35.236999999999995,32.166 -2020-03-05 04:15:00,80.68,155.84799999999998,35.236999999999995,32.166 -2020-03-05 04:30:00,86.04,157.845,35.236999999999995,32.166 -2020-03-05 04:45:00,87.84,159.67,35.236999999999995,32.166 -2020-03-05 05:00:00,88.83,194.22299999999998,40.375,32.166 -2020-03-05 05:15:00,87.34,225.169,40.375,32.166 -2020-03-05 05:30:00,90.9,219.488,40.375,32.166 -2020-03-05 05:45:00,95.15,211.271,40.375,32.166 -2020-03-05 06:00:00,105.43,208.47400000000002,52.316,32.166 -2020-03-05 06:15:00,108.76,214.69299999999998,52.316,32.166 -2020-03-05 06:30:00,115.44,216.55200000000002,52.316,32.166 -2020-03-05 06:45:00,115.49,219.701,52.316,32.166 -2020-03-05 07:00:00,122.69,221.91299999999998,64.115,32.166 -2020-03-05 07:15:00,123.41,224.935,64.115,32.166 -2020-03-05 07:30:00,125.69,225.12099999999998,64.115,32.166 -2020-03-05 07:45:00,128.28,223.512,64.115,32.166 -2020-03-05 08:00:00,131.57,221.575,55.033,32.166 -2020-03-05 08:15:00,127.69,219.74099999999999,55.033,32.166 -2020-03-05 08:30:00,127.62,215.11599999999999,55.033,32.166 -2020-03-05 08:45:00,124.84,210.609,55.033,32.166 -2020-03-05 09:00:00,122.67,203.046,49.411,32.166 -2020-03-05 09:15:00,118.75,199.516,49.411,32.166 -2020-03-05 09:30:00,118.32,198.22400000000002,49.411,32.166 -2020-03-05 09:45:00,118.04,195.43599999999998,49.411,32.166 -2020-03-05 10:00:00,117.58,192.6,45.82899999999999,32.166 -2020-03-05 10:15:00,119.95,189.429,45.82899999999999,32.166 -2020-03-05 10:30:00,123.89,187.00799999999998,45.82899999999999,32.166 -2020-03-05 10:45:00,127.92,186.218,45.82899999999999,32.166 -2020-03-05 11:00:00,124.66,183.275,44.333,32.166 -2020-03-05 11:15:00,129.25,182.722,44.333,32.166 -2020-03-05 11:30:00,117.7,182.325,44.333,32.166 -2020-03-05 11:45:00,115.76,181.92,44.333,32.166 -2020-03-05 12:00:00,113.86,176.574,42.95,32.166 -2020-03-05 12:15:00,115.98,176.822,42.95,32.166 -2020-03-05 12:30:00,123.05,176.19299999999998,42.95,32.166 -2020-03-05 12:45:00,119.31,177.06400000000002,42.95,32.166 -2020-03-05 13:00:00,116.22,176.468,42.489,32.166 -2020-03-05 13:15:00,117.03,174.90099999999998,42.489,32.166 -2020-03-05 13:30:00,114.34,173.41299999999998,42.489,32.166 -2020-03-05 13:45:00,112.98,172.882,42.489,32.166 -2020-03-05 14:00:00,120.48,174.481,43.448,32.166 -2020-03-05 14:15:00,125.43,173.747,43.448,32.166 -2020-03-05 14:30:00,124.36,173.87900000000002,43.448,32.166 -2020-03-05 14:45:00,124.56,174.821,43.448,32.166 -2020-03-05 15:00:00,120.75,176.59599999999998,45.994,32.166 -2020-03-05 15:15:00,117.53,175.38400000000001,45.994,32.166 -2020-03-05 15:30:00,125.28,175.582,45.994,32.166 -2020-03-05 15:45:00,123.67,175.75900000000001,45.994,32.166 -2020-03-05 16:00:00,124.31,179.269,48.167,32.166 -2020-03-05 16:15:00,121.46,181.071,48.167,32.166 -2020-03-05 16:30:00,123.02,183.101,48.167,32.166 -2020-03-05 16:45:00,120.81,183.59900000000002,48.167,32.166 -2020-03-05 17:00:00,126.49,186.34900000000002,52.637,32.166 -2020-03-05 17:15:00,122.58,188.981,52.637,32.166 -2020-03-05 17:30:00,129.9,191.82299999999998,52.637,32.166 -2020-03-05 17:45:00,131.12,192.859,52.637,32.166 -2020-03-05 18:00:00,136.47,196.07,55.739,32.166 -2020-03-05 18:15:00,136.58,196.582,55.739,32.166 -2020-03-05 18:30:00,142.41,195.00400000000002,55.739,32.166 -2020-03-05 18:45:00,143.42,196.96200000000002,55.739,32.166 -2020-03-05 19:00:00,139.76,195.826,56.36600000000001,32.166 -2020-03-05 19:15:00,135.79,192.78099999999998,56.36600000000001,32.166 -2020-03-05 19:30:00,135.89,191.94099999999997,56.36600000000001,32.166 -2020-03-05 19:45:00,135.03,188.817,56.36600000000001,32.166 -2020-03-05 20:00:00,127.56,183.449,56.338,32.166 -2020-03-05 20:15:00,124.1,178.235,56.338,32.166 -2020-03-05 20:30:00,121.73,174.549,56.338,32.166 -2020-03-05 20:45:00,117.92,172.1,56.338,32.166 -2020-03-05 21:00:00,109.2,168.894,49.894,32.166 -2020-03-05 21:15:00,112.76,165.65400000000002,49.894,32.166 -2020-03-05 21:30:00,110.85,163.363,49.894,32.166 -2020-03-05 21:45:00,109.7,163.209,49.894,32.166 -2020-03-05 22:00:00,101.13,155.79,46.687,32.166 -2020-03-05 22:15:00,103.31,151.773,46.687,32.166 -2020-03-05 22:30:00,97.08,135.952,46.687,32.166 -2020-03-05 22:45:00,93.57,128.194,46.687,32.166 -2020-03-05 23:00:00,85.09,121.542,39.211,32.166 -2020-03-05 23:15:00,84.64,119.8,39.211,32.166 -2020-03-05 23:30:00,87.76,121.34700000000001,39.211,32.166 -2020-03-05 23:45:00,89.95,121.505,39.211,32.166 -2020-03-06 00:00:00,84.63,115.272,36.616,32.166 -2020-03-06 00:15:00,80.02,113.741,36.616,32.166 -2020-03-06 00:30:00,78.58,112.88,36.616,32.166 -2020-03-06 00:45:00,79.97,112.955,36.616,32.166 -2020-03-06 01:00:00,81.81,114.15899999999999,33.799,32.166 -2020-03-06 01:15:00,83.15,115.40899999999999,33.799,32.166 -2020-03-06 01:30:00,81.42,115.375,33.799,32.166 -2020-03-06 01:45:00,77.29,115.573,33.799,32.166 -2020-03-06 02:00:00,77.39,117.697,32.968,32.166 -2020-03-06 02:15:00,82.75,118.53200000000001,32.968,32.166 -2020-03-06 02:30:00,81.3,119.965,32.968,32.166 -2020-03-06 02:45:00,79.68,121.664,32.968,32.166 -2020-03-06 03:00:00,75.05,123.374,33.533,32.166 -2020-03-06 03:15:00,80.07,125.906,33.533,32.166 -2020-03-06 03:30:00,83.67,127.795,33.533,32.166 -2020-03-06 03:45:00,79.45,129.38,33.533,32.166 -2020-03-06 04:00:00,79.38,142.92700000000002,36.102,32.166 -2020-03-06 04:15:00,84.68,155.572,36.102,32.166 -2020-03-06 04:30:00,86.79,157.934,36.102,32.166 -2020-03-06 04:45:00,89.75,158.566,36.102,32.166 -2020-03-06 05:00:00,92.61,191.81799999999998,42.423,32.166 -2020-03-06 05:15:00,88.55,224.35,42.423,32.166 -2020-03-06 05:30:00,92.57,219.692,42.423,32.166 -2020-03-06 05:45:00,95.18,211.36,42.423,32.166 -2020-03-06 06:00:00,105.52,209.019,55.38,32.166 -2020-03-06 06:15:00,109.46,213.859,55.38,32.166 -2020-03-06 06:30:00,110.06,214.83900000000003,55.38,32.166 -2020-03-06 06:45:00,112.44,219.50599999999997,55.38,32.166 -2020-03-06 07:00:00,119.09,221.028,65.929,32.166 -2020-03-06 07:15:00,120.34,225.11900000000003,65.929,32.166 -2020-03-06 07:30:00,122.16,224.828,65.929,32.166 -2020-03-06 07:45:00,120.89,222.30200000000002,65.929,32.166 -2020-03-06 08:00:00,121.85,219.385,57.336999999999996,32.166 -2020-03-06 08:15:00,119.68,217.25400000000002,57.336999999999996,32.166 -2020-03-06 08:30:00,118.65,213.497,57.336999999999996,32.166 -2020-03-06 08:45:00,117.07,207.47099999999998,57.336999999999996,32.166 -2020-03-06 09:00:00,115.36,200.05700000000002,54.226000000000006,32.166 -2020-03-06 09:15:00,114.99,197.328,54.226000000000006,32.166 -2020-03-06 09:30:00,115.37,195.553,54.226000000000006,32.166 -2020-03-06 09:45:00,113.84,192.722,54.226000000000006,32.166 -2020-03-06 10:00:00,112.66,188.787,51.298,32.166 -2020-03-06 10:15:00,112.59,186.301,51.298,32.166 -2020-03-06 10:30:00,112.69,183.907,51.298,32.166 -2020-03-06 10:45:00,112.62,182.697,51.298,32.166 -2020-03-06 11:00:00,113.85,179.75400000000002,50.839,32.166 -2020-03-06 11:15:00,114.18,178.215,50.839,32.166 -2020-03-06 11:30:00,118.13,179.46599999999998,50.839,32.166 -2020-03-06 11:45:00,115.78,178.99900000000002,50.839,32.166 -2020-03-06 12:00:00,110.8,174.774,47.976000000000006,32.166 -2020-03-06 12:15:00,112.96,172.933,47.976000000000006,32.166 -2020-03-06 12:30:00,107.04,172.435,47.976000000000006,32.166 -2020-03-06 12:45:00,113.31,173.696,47.976000000000006,32.166 -2020-03-06 13:00:00,113.56,174.122,46.299,32.166 -2020-03-06 13:15:00,112.83,173.34400000000002,46.299,32.166 -2020-03-06 13:30:00,105.26,171.96599999999998,46.299,32.166 -2020-03-06 13:45:00,104.96,171.417,46.299,32.166 -2020-03-06 14:00:00,107.2,171.88099999999997,44.971000000000004,32.166 -2020-03-06 14:15:00,110.28,171.00900000000001,44.971000000000004,32.166 -2020-03-06 14:30:00,113.01,171.803,44.971000000000004,32.166 -2020-03-06 14:45:00,113.67,172.955,44.971000000000004,32.166 -2020-03-06 15:00:00,114.93,174.264,47.48,32.166 -2020-03-06 15:15:00,115.31,172.56799999999998,47.48,32.166 -2020-03-06 15:30:00,123.49,171.176,47.48,32.166 -2020-03-06 15:45:00,122.8,171.57299999999998,47.48,32.166 -2020-03-06 16:00:00,120.52,173.84599999999998,50.648,32.166 -2020-03-06 16:15:00,118.33,175.97,50.648,32.166 -2020-03-06 16:30:00,123.41,178.06799999999998,50.648,32.166 -2020-03-06 16:45:00,122.27,178.315,50.648,32.166 -2020-03-06 17:00:00,123.95,181.48,56.251000000000005,32.166 -2020-03-06 17:15:00,125.14,183.697,56.251000000000005,32.166 -2020-03-06 17:30:00,127.64,186.27200000000002,56.251000000000005,32.166 -2020-03-06 17:45:00,129.37,187.075,56.251000000000005,32.166 -2020-03-06 18:00:00,132.2,190.96,58.982,32.166 -2020-03-06 18:15:00,134.17,191.049,58.982,32.166 -2020-03-06 18:30:00,139.97,189.84,58.982,32.166 -2020-03-06 18:45:00,137.26,191.862,58.982,32.166 -2020-03-06 19:00:00,138.5,191.671,57.293,32.166 -2020-03-06 19:15:00,136.65,190.049,57.293,32.166 -2020-03-06 19:30:00,132.19,188.83900000000003,57.293,32.166 -2020-03-06 19:45:00,128.54,185.19400000000002,57.293,32.166 -2020-03-06 20:00:00,118.1,179.83599999999998,59.433,32.166 -2020-03-06 20:15:00,120.22,174.738,59.433,32.166 -2020-03-06 20:30:00,116.22,170.981,59.433,32.166 -2020-03-06 20:45:00,116.32,168.983,59.433,32.166 -2020-03-06 21:00:00,108.24,166.416,52.153999999999996,32.166 -2020-03-06 21:15:00,107.96,163.793,52.153999999999996,32.166 -2020-03-06 21:30:00,103.98,161.531,52.153999999999996,32.166 -2020-03-06 21:45:00,100.92,161.953,52.153999999999996,32.166 -2020-03-06 22:00:00,101.26,155.461,47.125,32.166 -2020-03-06 22:15:00,98.2,151.312,47.125,32.166 -2020-03-06 22:30:00,91.48,142.222,47.125,32.166 -2020-03-06 22:45:00,86.47,138.014,47.125,32.166 -2020-03-06 23:00:00,80.32,131.118,41.236000000000004,32.166 -2020-03-06 23:15:00,86.56,127.30799999999999,41.236000000000004,32.166 -2020-03-06 23:30:00,86.05,127.225,41.236000000000004,32.166 -2020-03-06 23:45:00,84.17,126.74600000000001,41.236000000000004,32.166 -2020-03-07 00:00:00,73.36,112.361,36.484,31.988000000000003 -2020-03-07 00:15:00,72.69,106.662,36.484,31.988000000000003 -2020-03-07 00:30:00,73.63,106.99600000000001,36.484,31.988000000000003 -2020-03-07 00:45:00,79.66,107.662,36.484,31.988000000000003 -2020-03-07 01:00:00,75.3,109.476,32.391999999999996,31.988000000000003 -2020-03-07 01:15:00,77.06,109.846,32.391999999999996,31.988000000000003 -2020-03-07 01:30:00,71.97,109.189,32.391999999999996,31.988000000000003 -2020-03-07 01:45:00,68.58,109.354,32.391999999999996,31.988000000000003 -2020-03-07 02:00:00,73.65,112.00200000000001,30.194000000000003,31.988000000000003 -2020-03-07 02:15:00,74.65,112.369,30.194000000000003,31.988000000000003 -2020-03-07 02:30:00,69.35,112.65100000000001,30.194000000000003,31.988000000000003 -2020-03-07 02:45:00,68.86,114.555,30.194000000000003,31.988000000000003 -2020-03-07 03:00:00,66.7,116.7,29.677,31.988000000000003 -2020-03-07 03:15:00,65.75,117.959,29.677,31.988000000000003 -2020-03-07 03:30:00,70.1,118.37299999999999,29.677,31.988000000000003 -2020-03-07 03:45:00,72.68,120.28200000000001,29.677,31.988000000000003 -2020-03-07 04:00:00,68.24,129.653,29.616,31.988000000000003 -2020-03-07 04:15:00,67.2,139.745,29.616,31.988000000000003 -2020-03-07 04:30:00,67.39,139.829,29.616,31.988000000000003 -2020-03-07 04:45:00,67.69,140.015,29.616,31.988000000000003 -2020-03-07 05:00:00,67.99,156.97299999999998,29.625,31.988000000000003 -2020-03-07 05:15:00,67.86,169.953,29.625,31.988000000000003 -2020-03-07 05:30:00,67.93,165.817,29.625,31.988000000000003 -2020-03-07 05:45:00,70.0,163.291,29.625,31.988000000000003 -2020-03-07 06:00:00,71.25,180.298,30.551,31.988000000000003 -2020-03-07 06:15:00,72.04,201.768,30.551,31.988000000000003 -2020-03-07 06:30:00,72.04,197.2,30.551,31.988000000000003 -2020-03-07 06:45:00,72.96,192.865,30.551,31.988000000000003 -2020-03-07 07:00:00,76.51,190.575,34.865,31.988000000000003 -2020-03-07 07:15:00,78.94,193.25799999999998,34.865,31.988000000000003 -2020-03-07 07:30:00,81.32,195.71099999999998,34.865,31.988000000000003 -2020-03-07 07:45:00,83.9,197.054,34.865,31.988000000000003 -2020-03-07 08:00:00,88.57,197.97299999999998,41.456,31.988000000000003 -2020-03-07 08:15:00,89.24,199.271,41.456,31.988000000000003 -2020-03-07 08:30:00,90.68,196.99599999999998,41.456,31.988000000000003 -2020-03-07 08:45:00,94.24,194.13099999999997,41.456,31.988000000000003 -2020-03-07 09:00:00,96.14,188.805,43.001999999999995,31.988000000000003 -2020-03-07 09:15:00,98.61,186.863,43.001999999999995,31.988000000000003 -2020-03-07 09:30:00,102.12,186.041,43.001999999999995,31.988000000000003 -2020-03-07 09:45:00,98.59,183.317,43.001999999999995,31.988000000000003 -2020-03-07 10:00:00,95.01,179.757,42.047,31.988000000000003 -2020-03-07 10:15:00,98.58,177.519,42.047,31.988000000000003 -2020-03-07 10:30:00,95.97,175.25900000000001,42.047,31.988000000000003 -2020-03-07 10:45:00,94.89,175.265,42.047,31.988000000000003 -2020-03-07 11:00:00,95.66,172.479,39.894,31.988000000000003 -2020-03-07 11:15:00,96.05,170.417,39.894,31.988000000000003 -2020-03-07 11:30:00,95.32,170.642,39.894,31.988000000000003 -2020-03-07 11:45:00,95.01,169.364,39.894,31.988000000000003 -2020-03-07 12:00:00,95.78,164.368,38.122,31.988000000000003 -2020-03-07 12:15:00,92.41,163.267,38.122,31.988000000000003 -2020-03-07 12:30:00,86.18,163.02,38.122,31.988000000000003 -2020-03-07 12:45:00,85.12,163.636,38.122,31.988000000000003 -2020-03-07 13:00:00,87.26,163.61,34.645,31.988000000000003 -2020-03-07 13:15:00,86.32,160.77,34.645,31.988000000000003 -2020-03-07 13:30:00,84.06,158.97299999999998,34.645,31.988000000000003 -2020-03-07 13:45:00,83.33,158.702,34.645,31.988000000000003 -2020-03-07 14:00:00,77.3,160.404,33.739000000000004,31.988000000000003 -2020-03-07 14:15:00,74.26,158.83,33.739000000000004,31.988000000000003 -2020-03-07 14:30:00,74.73,157.79399999999998,33.739000000000004,31.988000000000003 -2020-03-07 14:45:00,79.24,159.227,33.739000000000004,31.988000000000003 -2020-03-07 15:00:00,79.87,161.2,35.908,31.988000000000003 -2020-03-07 15:15:00,82.29,160.34,35.908,31.988000000000003 -2020-03-07 15:30:00,82.88,160.406,35.908,31.988000000000003 -2020-03-07 15:45:00,83.16,160.681,35.908,31.988000000000003 -2020-03-07 16:00:00,82.92,162.039,39.249,31.988000000000003 -2020-03-07 16:15:00,82.39,164.894,39.249,31.988000000000003 -2020-03-07 16:30:00,84.42,166.97,39.249,31.988000000000003 -2020-03-07 16:45:00,86.48,168.02700000000002,39.249,31.988000000000003 -2020-03-07 17:00:00,89.54,170.46900000000002,46.045,31.988000000000003 -2020-03-07 17:15:00,90.25,174.037,46.045,31.988000000000003 -2020-03-07 17:30:00,93.17,176.52700000000002,46.045,31.988000000000003 -2020-03-07 17:45:00,96.07,177.01,46.045,31.988000000000003 -2020-03-07 18:00:00,104.2,180.562,48.238,31.988000000000003 -2020-03-07 18:15:00,106.48,182.665,48.238,31.988000000000003 -2020-03-07 18:30:00,104.75,182.90599999999998,48.238,31.988000000000003 -2020-03-07 18:45:00,105.22,181.287,48.238,31.988000000000003 -2020-03-07 19:00:00,104.77,181.752,46.785,31.988000000000003 -2020-03-07 19:15:00,101.74,179.548,46.785,31.988000000000003 -2020-03-07 19:30:00,103.23,179.188,46.785,31.988000000000003 -2020-03-07 19:45:00,99.14,175.61599999999999,46.785,31.988000000000003 -2020-03-07 20:00:00,94.25,172.472,39.830999999999996,31.988000000000003 -2020-03-07 20:15:00,90.48,169.38,39.830999999999996,31.988000000000003 -2020-03-07 20:30:00,88.69,165.206,39.830999999999996,31.988000000000003 -2020-03-07 20:45:00,89.27,163.041,39.830999999999996,31.988000000000003 -2020-03-07 21:00:00,82.31,162.475,34.063,31.988000000000003 -2020-03-07 21:15:00,82.13,160.234,34.063,31.988000000000003 -2020-03-07 21:30:00,81.1,159.189,34.063,31.988000000000003 -2020-03-07 21:45:00,79.97,159.173,34.063,31.988000000000003 -2020-03-07 22:00:00,79.99,153.97299999999998,34.455999999999996,31.988000000000003 -2020-03-07 22:15:00,77.88,152.298,34.455999999999996,31.988000000000003 -2020-03-07 22:30:00,73.56,149.155,34.455999999999996,31.988000000000003 -2020-03-07 22:45:00,72.67,146.81,34.455999999999996,31.988000000000003 -2020-03-07 23:00:00,68.96,142.2,27.840999999999998,31.988000000000003 -2020-03-07 23:15:00,69.09,136.869,27.840999999999998,31.988000000000003 -2020-03-07 23:30:00,65.76,135.38299999999998,27.840999999999998,31.988000000000003 -2020-03-07 23:45:00,64.86,132.614,27.840999999999998,31.988000000000003 -2020-03-08 00:00:00,61.0,112.605,20.007,31.988000000000003 -2020-03-08 00:15:00,61.21,106.455,20.007,31.988000000000003 -2020-03-08 00:30:00,60.15,106.39200000000001,20.007,31.988000000000003 -2020-03-08 00:45:00,60.07,107.709,20.007,31.988000000000003 -2020-03-08 01:00:00,56.47,109.37899999999999,17.378,31.988000000000003 -2020-03-08 01:15:00,57.99,110.706,17.378,31.988000000000003 -2020-03-08 01:30:00,57.0,110.509,17.378,31.988000000000003 -2020-03-08 01:45:00,57.02,110.329,17.378,31.988000000000003 -2020-03-08 02:00:00,55.64,112.262,16.145,31.988000000000003 -2020-03-08 02:15:00,56.91,111.91,16.145,31.988000000000003 -2020-03-08 02:30:00,56.07,113.05,16.145,31.988000000000003 -2020-03-08 02:45:00,56.9,115.353,16.145,31.988000000000003 -2020-03-08 03:00:00,55.26,117.9,15.427999999999999,31.988000000000003 -2020-03-08 03:15:00,55.5,118.68299999999999,15.427999999999999,31.988000000000003 -2020-03-08 03:30:00,53.73,120.31200000000001,15.427999999999999,31.988000000000003 -2020-03-08 03:45:00,55.64,122.04700000000001,15.427999999999999,31.988000000000003 -2020-03-08 04:00:00,55.63,131.18200000000002,16.663,31.988000000000003 -2020-03-08 04:15:00,54.6,140.243,16.663,31.988000000000003 -2020-03-08 04:30:00,57.94,140.602,16.663,31.988000000000003 -2020-03-08 04:45:00,58.3,140.964,16.663,31.988000000000003 -2020-03-08 05:00:00,57.65,154.621,17.271,31.988000000000003 -2020-03-08 05:15:00,59.1,165.231,17.271,31.988000000000003 -2020-03-08 05:30:00,56.61,160.846,17.271,31.988000000000003 -2020-03-08 05:45:00,59.93,158.515,17.271,31.988000000000003 -2020-03-08 06:00:00,60.8,175.07299999999998,17.612000000000002,31.988000000000003 -2020-03-08 06:15:00,60.98,195.047,17.612000000000002,31.988000000000003 -2020-03-08 06:30:00,59.58,189.28799999999998,17.612000000000002,31.988000000000003 -2020-03-08 06:45:00,60.73,183.79,17.612000000000002,31.988000000000003 -2020-03-08 07:00:00,64.07,183.87099999999998,20.88,31.988000000000003 -2020-03-08 07:15:00,64.46,185.475,20.88,31.988000000000003 -2020-03-08 07:30:00,67.14,186.912,20.88,31.988000000000003 -2020-03-08 07:45:00,68.83,187.49099999999999,20.88,31.988000000000003 -2020-03-08 08:00:00,70.55,190.217,25.861,31.988000000000003 -2020-03-08 08:15:00,68.92,191.58599999999998,25.861,31.988000000000003 -2020-03-08 08:30:00,68.33,190.949,25.861,31.988000000000003 -2020-03-08 08:45:00,68.61,190.00599999999997,25.861,31.988000000000003 -2020-03-08 09:00:00,68.42,184.287,27.921999999999997,31.988000000000003 -2020-03-08 09:15:00,68.88,182.803,27.921999999999997,31.988000000000003 -2020-03-08 09:30:00,66.98,181.915,27.921999999999997,31.988000000000003 -2020-03-08 09:45:00,66.66,179.234,27.921999999999997,31.988000000000003 -2020-03-08 10:00:00,63.08,178.157,29.048000000000002,31.988000000000003 -2020-03-08 10:15:00,65.17,176.486,29.048000000000002,31.988000000000003 -2020-03-08 10:30:00,66.69,174.85,29.048000000000002,31.988000000000003 -2020-03-08 10:45:00,68.39,173.22299999999998,29.048000000000002,31.988000000000003 -2020-03-08 11:00:00,71.32,171.245,32.02,31.988000000000003 -2020-03-08 11:15:00,68.73,169.267,32.02,31.988000000000003 -2020-03-08 11:30:00,77.87,168.745,32.02,31.988000000000003 -2020-03-08 11:45:00,71.63,168.09599999999998,32.02,31.988000000000003 -2020-03-08 12:00:00,69.65,162.733,28.55,31.988000000000003 -2020-03-08 12:15:00,64.14,163.364,28.55,31.988000000000003 -2020-03-08 12:30:00,62.02,161.72799999999998,28.55,31.988000000000003 -2020-03-08 12:45:00,62.53,161.333,28.55,31.988000000000003 -2020-03-08 13:00:00,59.46,160.626,25.601999999999997,31.988000000000003 -2020-03-08 13:15:00,59.09,160.545,25.601999999999997,31.988000000000003 -2020-03-08 13:30:00,59.19,158.379,25.601999999999997,31.988000000000003 -2020-03-08 13:45:00,58.93,157.644,25.601999999999997,31.988000000000003 -2020-03-08 14:00:00,57.84,159.814,23.916999999999998,31.988000000000003 -2020-03-08 14:15:00,58.46,159.417,23.916999999999998,31.988000000000003 -2020-03-08 14:30:00,62.93,159.34799999999998,23.916999999999998,31.988000000000003 -2020-03-08 14:45:00,64.38,160.249,23.916999999999998,31.988000000000003 -2020-03-08 15:00:00,64.9,160.799,24.064,31.988000000000003 -2020-03-08 15:15:00,65.65,160.517,24.064,31.988000000000003 -2020-03-08 15:30:00,65.05,161.069,24.064,31.988000000000003 -2020-03-08 15:45:00,64.57,162.025,24.064,31.988000000000003 -2020-03-08 16:00:00,67.33,164.97099999999998,28.189,31.988000000000003 -2020-03-08 16:15:00,68.58,166.96400000000003,28.189,31.988000000000003 -2020-03-08 16:30:00,68.93,169.421,28.189,31.988000000000003 -2020-03-08 16:45:00,71.27,170.572,28.189,31.988000000000003 -2020-03-08 17:00:00,75.95,173.09099999999998,37.576,31.988000000000003 -2020-03-08 17:15:00,76.2,176.542,37.576,31.988000000000003 -2020-03-08 17:30:00,80.05,179.435,37.576,31.988000000000003 -2020-03-08 17:45:00,83.25,182.171,37.576,31.988000000000003 -2020-03-08 18:00:00,91.18,185.28900000000002,42.669,31.988000000000003 -2020-03-08 18:15:00,96.39,188.69400000000002,42.669,31.988000000000003 -2020-03-08 18:30:00,101.38,186.88299999999998,42.669,31.988000000000003 -2020-03-08 18:45:00,99.75,187.09,42.669,31.988000000000003 -2020-03-08 19:00:00,97.87,187.46400000000003,43.538999999999994,31.988000000000003 -2020-03-08 19:15:00,93.75,185.72400000000002,43.538999999999994,31.988000000000003 -2020-03-08 19:30:00,94.16,185.204,43.538999999999994,31.988000000000003 -2020-03-08 19:45:00,89.68,183.025,43.538999999999994,31.988000000000003 -2020-03-08 20:00:00,86.68,179.81799999999998,37.330999999999996,31.988000000000003 -2020-03-08 20:15:00,86.27,177.678,37.330999999999996,31.988000000000003 -2020-03-08 20:30:00,83.87,174.827,37.330999999999996,31.988000000000003 -2020-03-08 20:45:00,83.17,171.297,37.330999999999996,31.988000000000003 -2020-03-08 21:00:00,79.53,168.202,33.856,31.988000000000003 -2020-03-08 21:15:00,80.3,165.315,33.856,31.988000000000003 -2020-03-08 21:30:00,80.55,164.47400000000002,33.856,31.988000000000003 -2020-03-08 21:45:00,85.28,164.655,33.856,31.988000000000003 -2020-03-08 22:00:00,87.48,158.54,34.711999999999996,31.988000000000003 -2020-03-08 22:15:00,88.51,155.951,34.711999999999996,31.988000000000003 -2020-03-08 22:30:00,83.88,149.629,34.711999999999996,31.988000000000003 -2020-03-08 22:45:00,79.79,146.309,34.711999999999996,31.988000000000003 -2020-03-08 23:00:00,77.62,138.95,29.698,31.988000000000003 -2020-03-08 23:15:00,82.04,135.591,29.698,31.988000000000003 -2020-03-08 23:30:00,82.56,134.83100000000002,29.698,31.988000000000003 -2020-03-08 23:45:00,79.6,132.972,29.698,31.988000000000003 -2020-03-09 00:00:00,69.92,116.464,29.983,32.166 -2020-03-09 00:15:00,69.51,113.265,29.983,32.166 -2020-03-09 00:30:00,71.32,113.25399999999999,29.983,32.166 -2020-03-09 00:45:00,76.73,114.006,29.983,32.166 -2020-03-09 01:00:00,74.19,115.686,29.122,32.166 -2020-03-09 01:15:00,73.87,116.49700000000001,29.122,32.166 -2020-03-09 01:30:00,67.47,116.385,29.122,32.166 -2020-03-09 01:45:00,74.37,116.307,29.122,32.166 -2020-03-09 02:00:00,73.55,118.26100000000001,28.676,32.166 -2020-03-09 02:15:00,73.53,119.147,28.676,32.166 -2020-03-09 02:30:00,68.13,120.645,28.676,32.166 -2020-03-09 02:45:00,75.19,122.339,28.676,32.166 -2020-03-09 03:00:00,75.27,126.15799999999999,26.552,32.166 -2020-03-09 03:15:00,74.56,128.586,26.552,32.166 -2020-03-09 03:30:00,73.02,130.048,26.552,32.166 -2020-03-09 03:45:00,77.49,131.209,26.552,32.166 -2020-03-09 04:00:00,77.93,144.89,27.44,32.166 -2020-03-09 04:15:00,76.54,158.27700000000002,27.44,32.166 -2020-03-09 04:30:00,74.57,160.655,27.44,32.166 -2020-03-09 04:45:00,74.33,161.21,27.44,32.166 -2020-03-09 05:00:00,77.36,190.71,36.825,32.166 -2020-03-09 05:15:00,83.26,221.83599999999998,36.825,32.166 -2020-03-09 05:30:00,86.0,217.45,36.825,32.166 -2020-03-09 05:45:00,90.09,209.351,36.825,32.166 -2020-03-09 06:00:00,98.46,207.56799999999998,56.589,32.166 -2020-03-09 06:15:00,105.15,212.236,56.589,32.166 -2020-03-09 06:30:00,108.02,214.56799999999998,56.589,32.166 -2020-03-09 06:45:00,110.16,218.112,56.589,32.166 -2020-03-09 07:00:00,117.31,220.562,67.49,32.166 -2020-03-09 07:15:00,118.79,223.637,67.49,32.166 -2020-03-09 07:30:00,122.33,224.175,67.49,32.166 -2020-03-09 07:45:00,125.44,222.329,67.49,32.166 -2020-03-09 08:00:00,129.3,220.19400000000002,60.028,32.166 -2020-03-09 08:15:00,131.05,219.35,60.028,32.166 -2020-03-09 08:30:00,131.67,214.641,60.028,32.166 -2020-03-09 08:45:00,131.5,210.576,60.028,32.166 -2020-03-09 09:00:00,130.44,203.824,55.018,32.166 -2020-03-09 09:15:00,134.15,198.77900000000002,55.018,32.166 -2020-03-09 09:30:00,133.09,196.834,55.018,32.166 -2020-03-09 09:45:00,134.3,194.14,55.018,32.166 -2020-03-09 10:00:00,134.13,192.09400000000002,51.183,32.166 -2020-03-09 10:15:00,134.12,190.137,51.183,32.166 -2020-03-09 10:30:00,134.67,187.627,51.183,32.166 -2020-03-09 10:45:00,135.0,186.516,51.183,32.166 -2020-03-09 11:00:00,136.7,182.109,50.065,32.166 -2020-03-09 11:15:00,135.2,181.91099999999997,50.065,32.166 -2020-03-09 11:30:00,135.31,182.80700000000002,50.065,32.166 -2020-03-09 11:45:00,135.27,181.85299999999998,50.065,32.166 -2020-03-09 12:00:00,136.04,177.92700000000002,48.141999999999996,32.166 -2020-03-09 12:15:00,132.64,178.58700000000002,48.141999999999996,32.166 -2020-03-09 12:30:00,129.11,177.00799999999998,48.141999999999996,32.166 -2020-03-09 12:45:00,129.79,178.063,48.141999999999996,32.166 -2020-03-09 13:00:00,129.66,178.076,47.887,32.166 -2020-03-09 13:15:00,129.83,176.532,47.887,32.166 -2020-03-09 13:30:00,129.35,173.873,47.887,32.166 -2020-03-09 13:45:00,131.32,173.292,47.887,32.166 -2020-03-09 14:00:00,126.29,174.843,48.571000000000005,32.166 -2020-03-09 14:15:00,126.44,173.885,48.571000000000005,32.166 -2020-03-09 14:30:00,128.22,173.24599999999998,48.571000000000005,32.166 -2020-03-09 14:45:00,126.5,174.40099999999998,48.571000000000005,32.166 -2020-03-09 15:00:00,128.64,176.653,49.937,32.166 -2020-03-09 15:15:00,125.18,174.889,49.937,32.166 -2020-03-09 15:30:00,124.09,174.695,49.937,32.166 -2020-03-09 15:45:00,123.67,175.143,49.937,32.166 -2020-03-09 16:00:00,123.86,178.435,52.963,32.166 -2020-03-09 16:15:00,124.07,179.68099999999998,52.963,32.166 -2020-03-09 16:30:00,120.57,181.12400000000002,52.963,32.166 -2020-03-09 16:45:00,120.89,181.093,52.963,32.166 -2020-03-09 17:00:00,124.22,183.347,61.163999999999994,32.166 -2020-03-09 17:15:00,125.08,185.929,61.163999999999994,32.166 -2020-03-09 17:30:00,129.2,188.269,61.163999999999994,32.166 -2020-03-09 17:45:00,128.13,189.52599999999998,61.163999999999994,32.166 -2020-03-09 18:00:00,133.54,192.96599999999998,63.788999999999994,32.166 -2020-03-09 18:15:00,133.96,194.083,63.788999999999994,32.166 -2020-03-09 18:30:00,130.46,192.81599999999997,63.788999999999994,32.166 -2020-03-09 18:45:00,129.43,194.101,63.788999999999994,32.166 -2020-03-09 19:00:00,129.65,192.855,63.913000000000004,32.166 -2020-03-09 19:15:00,125.51,190.139,63.913000000000004,32.166 -2020-03-09 19:30:00,133.89,190.092,63.913000000000004,32.166 -2020-03-09 19:45:00,132.07,187.08,63.913000000000004,32.166 -2020-03-09 20:00:00,119.33,181.389,65.44,32.166 -2020-03-09 20:15:00,115.81,177.02200000000002,65.44,32.166 -2020-03-09 20:30:00,115.88,172.455,65.44,32.166 -2020-03-09 20:45:00,115.72,170.53,65.44,32.166 -2020-03-09 21:00:00,105.11,167.868,59.117,32.166 -2020-03-09 21:15:00,99.97,163.887,59.117,32.166 -2020-03-09 21:30:00,98.25,162.292,59.117,32.166 -2020-03-09 21:45:00,97.32,161.97799999999998,59.117,32.166 -2020-03-09 22:00:00,92.52,152.808,52.301,32.166 -2020-03-09 22:15:00,93.86,149.191,52.301,32.166 -2020-03-09 22:30:00,94.64,133.034,52.301,32.166 -2020-03-09 22:45:00,93.49,125.016,52.301,32.166 -2020-03-09 23:00:00,89.93,118.40299999999999,44.373000000000005,32.166 -2020-03-09 23:15:00,83.28,117.455,44.373000000000005,32.166 -2020-03-09 23:30:00,82.01,119.383,44.373000000000005,32.166 -2020-03-09 23:45:00,79.61,120.059,44.373000000000005,32.166 -2020-03-10 00:00:00,79.63,115.156,44.647,32.166 -2020-03-10 00:15:00,81.95,113.444,44.647,32.166 -2020-03-10 00:30:00,80.93,112.60600000000001,44.647,32.166 -2020-03-10 00:45:00,77.16,112.525,44.647,32.166 -2020-03-10 01:00:00,70.56,113.905,41.433,32.166 -2020-03-10 01:15:00,76.76,114.289,41.433,32.166 -2020-03-10 01:30:00,76.51,114.307,41.433,32.166 -2020-03-10 01:45:00,79.3,114.46,41.433,32.166 -2020-03-10 02:00:00,73.31,116.336,39.909,32.166 -2020-03-10 02:15:00,73.05,117.262,39.909,32.166 -2020-03-10 02:30:00,69.81,118.15700000000001,39.909,32.166 -2020-03-10 02:45:00,71.57,119.90700000000001,39.909,32.166 -2020-03-10 03:00:00,71.1,122.52,39.14,32.166 -2020-03-10 03:15:00,78.8,124.244,39.14,32.166 -2020-03-10 03:30:00,81.43,126.156,39.14,32.166 -2020-03-10 03:45:00,78.81,127.365,39.14,32.166 -2020-03-10 04:00:00,75.34,140.69799999999998,40.015,32.166 -2020-03-10 04:15:00,74.56,153.744,40.015,32.166 -2020-03-10 04:30:00,80.72,155.83,40.015,32.166 -2020-03-10 04:45:00,85.85,157.588,40.015,32.166 -2020-03-10 05:00:00,89.69,192.037,44.93600000000001,32.166 -2020-03-10 05:15:00,87.41,223.071,44.93600000000001,32.166 -2020-03-10 05:30:00,94.15,217.21900000000002,44.93600000000001,32.166 -2020-03-10 05:45:00,99.31,209.03400000000002,44.93600000000001,32.166 -2020-03-10 06:00:00,108.19,206.273,57.271,32.166 -2020-03-10 06:15:00,106.67,212.52,57.271,32.166 -2020-03-10 06:30:00,105.56,214.145,57.271,32.166 -2020-03-10 06:45:00,110.72,217.18900000000002,57.271,32.166 -2020-03-10 07:00:00,114.85,219.50599999999997,68.352,32.166 -2020-03-10 07:15:00,122.4,222.36,68.352,32.166 -2020-03-10 07:30:00,126.34,222.338,68.352,32.166 -2020-03-10 07:45:00,126.87,220.52700000000002,68.352,32.166 -2020-03-10 08:00:00,121.17,218.46200000000002,60.717,32.166 -2020-03-10 08:15:00,121.73,216.57,60.717,32.166 -2020-03-10 08:30:00,123.57,211.655,60.717,32.166 -2020-03-10 08:45:00,119.88,207.236,60.717,32.166 -2020-03-10 09:00:00,120.24,199.739,54.603,32.166 -2020-03-10 09:15:00,125.53,196.215,54.603,32.166 -2020-03-10 09:30:00,125.18,195.02900000000002,54.603,32.166 -2020-03-10 09:45:00,117.63,192.30599999999998,54.603,32.166 -2020-03-10 10:00:00,122.65,189.53900000000002,52.308,32.166 -2020-03-10 10:15:00,122.53,186.588,52.308,32.166 -2020-03-10 10:30:00,122.83,184.278,52.308,32.166 -2020-03-10 10:45:00,123.85,183.583,52.308,32.166 -2020-03-10 11:00:00,124.85,180.6,51.838,32.166 -2020-03-10 11:15:00,124.63,180.15099999999998,51.838,32.166 -2020-03-10 11:30:00,120.0,179.793,51.838,32.166 -2020-03-10 11:45:00,112.97,179.477,51.838,32.166 -2020-03-10 12:00:00,116.62,174.23,50.375,32.166 -2020-03-10 12:15:00,124.04,174.543,50.375,32.166 -2020-03-10 12:30:00,134.05,173.727,50.375,32.166 -2020-03-10 12:45:00,127.79,174.581,50.375,32.166 -2020-03-10 13:00:00,126.21,174.203,50.735,32.166 -2020-03-10 13:15:00,131.91,172.525,50.735,32.166 -2020-03-10 13:30:00,125.28,170.977,50.735,32.166 -2020-03-10 13:45:00,123.2,170.459,50.735,32.166 -2020-03-10 14:00:00,122.54,172.40599999999998,50.946000000000005,32.166 -2020-03-10 14:15:00,121.23,171.549,50.946000000000005,32.166 -2020-03-10 14:30:00,124.05,171.524,50.946000000000005,32.166 -2020-03-10 14:45:00,124.51,172.513,50.946000000000005,32.166 -2020-03-10 15:00:00,131.26,174.335,53.18,32.166 -2020-03-10 15:15:00,123.68,172.97299999999998,53.18,32.166 -2020-03-10 15:30:00,117.32,172.918,53.18,32.166 -2020-03-10 15:45:00,118.3,173.00099999999998,53.18,32.166 -2020-03-10 16:00:00,122.14,176.535,54.928999999999995,32.166 -2020-03-10 16:15:00,120.8,178.231,54.928999999999995,32.166 -2020-03-10 16:30:00,123.17,180.257,54.928999999999995,32.166 -2020-03-10 16:45:00,120.87,180.545,54.928999999999995,32.166 -2020-03-10 17:00:00,119.71,183.364,60.913000000000004,32.166 -2020-03-10 17:15:00,128.27,186.02700000000002,60.913000000000004,32.166 -2020-03-10 17:30:00,128.23,188.989,60.913000000000004,32.166 -2020-03-10 17:45:00,132.22,190.09599999999998,60.913000000000004,32.166 -2020-03-10 18:00:00,133.86,193.33900000000003,62.214,32.166 -2020-03-10 18:15:00,138.61,194.197,62.214,32.166 -2020-03-10 18:30:00,141.3,192.59599999999998,62.214,32.166 -2020-03-10 18:45:00,137.8,194.65900000000002,62.214,32.166 -2020-03-10 19:00:00,133.97,193.333,62.38,32.166 -2020-03-10 19:15:00,133.09,190.37900000000002,62.38,32.166 -2020-03-10 19:30:00,134.88,189.68400000000003,62.38,32.166 -2020-03-10 19:45:00,130.24,186.79,62.38,32.166 -2020-03-10 20:00:00,124.19,181.265,65.018,32.166 -2020-03-10 20:15:00,120.85,176.13299999999998,65.018,32.166 -2020-03-10 20:30:00,119.04,172.58599999999998,65.018,32.166 -2020-03-10 20:45:00,115.01,170.15200000000002,65.018,32.166 -2020-03-10 21:00:00,110.97,166.892,56.416000000000004,32.166 -2020-03-10 21:15:00,109.67,163.63299999999998,56.416000000000004,32.166 -2020-03-10 21:30:00,108.54,161.345,56.416000000000004,32.166 -2020-03-10 21:45:00,105.86,161.29399999999998,56.416000000000004,32.166 -2020-03-10 22:00:00,98.25,153.8,52.846000000000004,32.166 -2020-03-10 22:15:00,100.43,149.92,52.846000000000004,32.166 -2020-03-10 22:30:00,97.18,133.826,52.846000000000004,32.166 -2020-03-10 22:45:00,91.4,126.08,52.846000000000004,32.166 -2020-03-10 23:00:00,89.03,119.40799999999999,44.435,32.166 -2020-03-10 23:15:00,91.06,117.764,44.435,32.166 -2020-03-10 23:30:00,88.04,119.34700000000001,44.435,32.166 -2020-03-10 23:45:00,81.48,119.641,44.435,32.166 -2020-03-11 00:00:00,75.53,114.79700000000001,42.527,32.166 -2020-03-11 00:15:00,80.59,113.096,42.527,32.166 -2020-03-11 00:30:00,83.26,112.241,42.527,32.166 -2020-03-11 00:45:00,83.5,112.162,42.527,32.166 -2020-03-11 01:00:00,75.29,113.49700000000001,38.655,32.166 -2020-03-11 01:15:00,74.08,113.866,38.655,32.166 -2020-03-11 01:30:00,75.7,113.865,38.655,32.166 -2020-03-11 01:45:00,74.92,114.025,38.655,32.166 -2020-03-11 02:00:00,74.13,115.889,36.912,32.166 -2020-03-11 02:15:00,81.05,116.80799999999999,36.912,32.166 -2020-03-11 02:30:00,80.33,117.723,36.912,32.166 -2020-03-11 02:45:00,79.51,119.47200000000001,36.912,32.166 -2020-03-11 03:00:00,75.06,122.09899999999999,36.98,32.166 -2020-03-11 03:15:00,75.42,123.804,36.98,32.166 -2020-03-11 03:30:00,76.42,125.709,36.98,32.166 -2020-03-11 03:45:00,80.52,126.93299999999999,36.98,32.166 -2020-03-11 04:00:00,84.62,140.27200000000002,38.052,32.166 -2020-03-11 04:15:00,85.72,153.308,38.052,32.166 -2020-03-11 04:30:00,81.45,155.411,38.052,32.166 -2020-03-11 04:45:00,84.39,157.156,38.052,32.166 -2020-03-11 05:00:00,91.07,191.585,42.455,32.166 -2020-03-11 05:15:00,95.13,222.638,42.455,32.166 -2020-03-11 05:30:00,98.48,216.752,42.455,32.166 -2020-03-11 05:45:00,96.19,208.571,42.455,32.166 -2020-03-11 06:00:00,104.58,205.817,57.986000000000004,32.166 -2020-03-11 06:15:00,107.88,212.06900000000002,57.986000000000004,32.166 -2020-03-11 06:30:00,110.59,213.645,57.986000000000004,32.166 -2020-03-11 06:45:00,113.78,216.666,57.986000000000004,32.166 -2020-03-11 07:00:00,118.72,219.00400000000002,71.868,32.166 -2020-03-11 07:15:00,127.45,221.824,71.868,32.166 -2020-03-11 07:30:00,131.59,221.76,71.868,32.166 -2020-03-11 07:45:00,132.28,219.90900000000002,71.868,32.166 -2020-03-11 08:00:00,129.65,217.81900000000002,62.225,32.166 -2020-03-11 08:15:00,131.66,215.915,62.225,32.166 -2020-03-11 08:30:00,130.64,210.942,62.225,32.166 -2020-03-11 08:45:00,131.27,206.542,62.225,32.166 -2020-03-11 09:00:00,134.97,199.05900000000003,58.802,32.166 -2020-03-11 09:15:00,139.13,195.53599999999997,58.802,32.166 -2020-03-11 09:30:00,141.53,194.37099999999998,58.802,32.166 -2020-03-11 09:45:00,138.32,191.662,58.802,32.166 -2020-03-11 10:00:00,134.68,188.90900000000002,54.122,32.166 -2020-03-11 10:15:00,135.2,186.00400000000002,54.122,32.166 -2020-03-11 10:30:00,134.26,183.71599999999998,54.122,32.166 -2020-03-11 10:45:00,133.84,183.042,54.122,32.166 -2020-03-11 11:00:00,133.84,180.051,54.368,32.166 -2020-03-11 11:15:00,136.34,179.623,54.368,32.166 -2020-03-11 11:30:00,134.04,179.273,54.368,32.166 -2020-03-11 11:45:00,134.3,178.97400000000002,54.368,32.166 -2020-03-11 12:00:00,136.13,173.747,52.74,32.166 -2020-03-11 12:15:00,139.12,174.074,52.74,32.166 -2020-03-11 12:30:00,137.79,173.21900000000002,52.74,32.166 -2020-03-11 12:45:00,132.99,174.07,52.74,32.166 -2020-03-11 13:00:00,129.17,173.736,52.544,32.166 -2020-03-11 13:15:00,130.87,172.03599999999997,52.544,32.166 -2020-03-11 13:30:00,132.75,170.476,52.544,32.166 -2020-03-11 13:45:00,134.79,169.96099999999998,52.544,32.166 -2020-03-11 14:00:00,129.47,171.979,53.602,32.166 -2020-03-11 14:15:00,126.72,171.09799999999998,53.602,32.166 -2020-03-11 14:30:00,128.13,171.03900000000002,53.602,32.166 -2020-03-11 14:45:00,124.89,172.03799999999998,53.602,32.166 -2020-03-11 15:00:00,129.33,173.86900000000003,55.59,32.166 -2020-03-11 15:15:00,130.78,172.476,55.59,32.166 -2020-03-11 15:30:00,132.29,172.37,55.59,32.166 -2020-03-11 15:45:00,130.2,172.433,55.59,32.166 -2020-03-11 16:00:00,126.12,175.97400000000002,57.586999999999996,32.166 -2020-03-11 16:15:00,122.31,177.64700000000002,57.586999999999996,32.166 -2020-03-11 16:30:00,122.71,179.671,57.586999999999996,32.166 -2020-03-11 16:45:00,123.16,179.915,57.586999999999996,32.166 -2020-03-11 17:00:00,125.12,182.75099999999998,62.111999999999995,32.166 -2020-03-11 17:15:00,128.58,185.418,62.111999999999995,32.166 -2020-03-11 17:30:00,127.81,188.40200000000002,62.111999999999995,32.166 -2020-03-11 17:45:00,130.41,189.523,62.111999999999995,32.166 -2020-03-11 18:00:00,142.61,192.77200000000002,64.605,32.166 -2020-03-11 18:15:00,140.13,193.701,64.605,32.166 -2020-03-11 18:30:00,143.86,192.095,64.605,32.166 -2020-03-11 18:45:00,134.22,194.179,64.605,32.166 -2020-03-11 19:00:00,135.54,192.81400000000002,65.55199999999999,32.166 -2020-03-11 19:15:00,132.58,189.88,65.55199999999999,32.166 -2020-03-11 19:30:00,135.41,189.21400000000003,65.55199999999999,32.166 -2020-03-11 19:45:00,134.32,186.36900000000003,65.55199999999999,32.166 -2020-03-11 20:00:00,127.68,180.81099999999998,66.778,32.166 -2020-03-11 20:15:00,121.46,175.696,66.778,32.166 -2020-03-11 20:30:00,114.11,172.178,66.778,32.166 -2020-03-11 20:45:00,112.76,169.74599999999998,66.778,32.166 -2020-03-11 21:00:00,103.63,166.476,56.103,32.166 -2020-03-11 21:15:00,103.76,163.215,56.103,32.166 -2020-03-11 21:30:00,107.96,160.925,56.103,32.166 -2020-03-11 21:45:00,109.11,160.89700000000002,56.103,32.166 -2020-03-11 22:00:00,106.52,153.386,51.371,32.166 -2020-03-11 22:15:00,101.13,149.535,51.371,32.166 -2020-03-11 22:30:00,100.38,133.38299999999998,51.371,32.166 -2020-03-11 22:45:00,98.36,125.639,51.371,32.166 -2020-03-11 23:00:00,94.04,118.964,42.798,32.166 -2020-03-11 23:15:00,90.56,117.34100000000001,42.798,32.166 -2020-03-11 23:30:00,90.47,118.929,42.798,32.166 -2020-03-11 23:45:00,92.85,119.251,42.798,32.166 -2020-03-12 00:00:00,90.26,114.434,39.069,32.166 -2020-03-12 00:15:00,83.72,112.744,39.069,32.166 -2020-03-12 00:30:00,85.51,111.87,39.069,32.166 -2020-03-12 00:45:00,85.74,111.79299999999999,39.069,32.166 -2020-03-12 01:00:00,82.15,113.084,37.043,32.166 -2020-03-12 01:15:00,81.61,113.43700000000001,37.043,32.166 -2020-03-12 01:30:00,83.56,113.417,37.043,32.166 -2020-03-12 01:45:00,83.38,113.586,37.043,32.166 -2020-03-12 02:00:00,79.78,115.43700000000001,34.625,32.166 -2020-03-12 02:15:00,79.93,116.348,34.625,32.166 -2020-03-12 02:30:00,80.09,117.28200000000001,34.625,32.166 -2020-03-12 02:45:00,83.47,119.03299999999999,34.625,32.166 -2020-03-12 03:00:00,79.75,121.67200000000001,33.812,32.166 -2020-03-12 03:15:00,83.53,123.359,33.812,32.166 -2020-03-12 03:30:00,85.78,125.258,33.812,32.166 -2020-03-12 03:45:00,86.38,126.495,33.812,32.166 -2020-03-12 04:00:00,83.32,139.841,35.236999999999995,32.166 -2020-03-12 04:15:00,85.25,152.864,35.236999999999995,32.166 -2020-03-12 04:30:00,89.13,154.987,35.236999999999995,32.166 -2020-03-12 04:45:00,87.85,156.718,35.236999999999995,32.166 -2020-03-12 05:00:00,87.66,191.12900000000002,40.375,32.166 -2020-03-12 05:15:00,89.16,222.2,40.375,32.166 -2020-03-12 05:30:00,92.45,216.27900000000002,40.375,32.166 -2020-03-12 05:45:00,94.7,208.10299999999998,40.375,32.166 -2020-03-12 06:00:00,106.37,205.355,52.316,32.166 -2020-03-12 06:15:00,109.43,211.613,52.316,32.166 -2020-03-12 06:30:00,110.52,213.139,52.316,32.166 -2020-03-12 06:45:00,112.03,216.136,52.316,32.166 -2020-03-12 07:00:00,115.95,218.495,64.115,32.166 -2020-03-12 07:15:00,118.25,221.282,64.115,32.166 -2020-03-12 07:30:00,121.19,221.176,64.115,32.166 -2020-03-12 07:45:00,121.25,219.28400000000002,64.115,32.166 -2020-03-12 08:00:00,121.28,217.168,55.033,32.166 -2020-03-12 08:15:00,120.35,215.253,55.033,32.166 -2020-03-12 08:30:00,121.03,210.222,55.033,32.166 -2020-03-12 08:45:00,122.01,205.84099999999998,55.033,32.166 -2020-03-12 09:00:00,121.47,198.373,49.411,32.166 -2020-03-12 09:15:00,118.49,194.851,49.411,32.166 -2020-03-12 09:30:00,119.35,193.707,49.411,32.166 -2020-03-12 09:45:00,117.69,191.012,49.411,32.166 -2020-03-12 10:00:00,118.5,188.274,45.82899999999999,32.166 -2020-03-12 10:15:00,119.49,185.41400000000002,45.82899999999999,32.166 -2020-03-12 10:30:00,118.65,183.149,45.82899999999999,32.166 -2020-03-12 10:45:00,120.54,182.495,45.82899999999999,32.166 -2020-03-12 11:00:00,120.4,179.497,44.333,32.166 -2020-03-12 11:15:00,120.2,179.092,44.333,32.166 -2020-03-12 11:30:00,120.88,178.748,44.333,32.166 -2020-03-12 11:45:00,118.34,178.46900000000002,44.333,32.166 -2020-03-12 12:00:00,117.08,173.262,42.95,32.166 -2020-03-12 12:15:00,116.25,173.6,42.95,32.166 -2020-03-12 12:30:00,115.75,172.706,42.95,32.166 -2020-03-12 12:45:00,109.47,173.554,42.95,32.166 -2020-03-12 13:00:00,108.09,173.266,42.489,32.166 -2020-03-12 13:15:00,115.15,171.544,42.489,32.166 -2020-03-12 13:30:00,115.05,169.97099999999998,42.489,32.166 -2020-03-12 13:45:00,111.73,169.46099999999998,42.489,32.166 -2020-03-12 14:00:00,112.25,171.55,43.448,32.166 -2020-03-12 14:15:00,113.98,170.643,43.448,32.166 -2020-03-12 14:30:00,117.08,170.551,43.448,32.166 -2020-03-12 14:45:00,119.53,171.55900000000003,43.448,32.166 -2020-03-12 15:00:00,118.97,173.39700000000002,45.994,32.166 -2020-03-12 15:15:00,118.68,171.975,45.994,32.166 -2020-03-12 15:30:00,117.13,171.81599999999997,45.994,32.166 -2020-03-12 15:45:00,119.59,171.862,45.994,32.166 -2020-03-12 16:00:00,119.06,175.407,48.167,32.166 -2020-03-12 16:15:00,118.71,177.05700000000002,48.167,32.166 -2020-03-12 16:30:00,116.06,179.081,48.167,32.166 -2020-03-12 16:45:00,116.15,179.28099999999998,48.167,32.166 -2020-03-12 17:00:00,117.1,182.13099999999997,52.637,32.166 -2020-03-12 17:15:00,117.47,184.803,52.637,32.166 -2020-03-12 17:30:00,124.27,187.81,52.637,32.166 -2020-03-12 17:45:00,130.48,188.94400000000002,52.637,32.166 -2020-03-12 18:00:00,135.41,192.19799999999998,55.739,32.166 -2020-03-12 18:15:00,134.81,193.199,55.739,32.166 -2020-03-12 18:30:00,135.02,191.58900000000003,55.739,32.166 -2020-03-12 18:45:00,141.44,193.692,55.739,32.166 -2020-03-12 19:00:00,139.92,192.29,56.36600000000001,32.166 -2020-03-12 19:15:00,135.83,189.375,56.36600000000001,32.166 -2020-03-12 19:30:00,133.89,188.739,56.36600000000001,32.166 -2020-03-12 19:45:00,136.57,185.94099999999997,56.36600000000001,32.166 -2020-03-12 20:00:00,127.47,180.352,56.338,32.166 -2020-03-12 20:15:00,117.38,175.25400000000002,56.338,32.166 -2020-03-12 20:30:00,114.25,171.765,56.338,32.166 -2020-03-12 20:45:00,118.49,169.33599999999998,56.338,32.166 -2020-03-12 21:00:00,110.15,166.05599999999998,49.894,32.166 -2020-03-12 21:15:00,109.53,162.791,49.894,32.166 -2020-03-12 21:30:00,99.6,160.502,49.894,32.166 -2020-03-12 21:45:00,103.89,160.494,49.894,32.166 -2020-03-12 22:00:00,96.79,152.968,46.687,32.166 -2020-03-12 22:15:00,101.17,149.144,46.687,32.166 -2020-03-12 22:30:00,99.91,132.936,46.687,32.166 -2020-03-12 22:45:00,97.37,125.19200000000001,46.687,32.166 -2020-03-12 23:00:00,90.19,118.515,39.211,32.166 -2020-03-12 23:15:00,91.27,116.912,39.211,32.166 -2020-03-12 23:30:00,89.72,118.506,39.211,32.166 -2020-03-12 23:45:00,90.08,118.85600000000001,39.211,32.166 -2020-03-13 00:00:00,79.34,112.801,36.616,32.166 -2020-03-13 00:15:00,81.17,111.344,36.616,32.166 -2020-03-13 00:30:00,84.9,110.35700000000001,36.616,32.166 -2020-03-13 00:45:00,84.62,110.445,36.616,32.166 -2020-03-13 01:00:00,76.48,111.34,33.799,32.166 -2020-03-13 01:15:00,75.14,112.479,33.799,32.166 -2020-03-13 01:30:00,75.63,112.32,33.799,32.166 -2020-03-13 01:45:00,78.52,112.565,33.799,32.166 -2020-03-13 02:00:00,80.3,114.60600000000001,32.968,32.166 -2020-03-13 02:15:00,78.45,115.39399999999999,32.968,32.166 -2020-03-13 02:30:00,75.39,116.959,32.968,32.166 -2020-03-13 02:45:00,74.75,118.661,32.968,32.166 -2020-03-13 03:00:00,80.8,120.464,33.533,32.166 -2020-03-13 03:15:00,81.43,122.869,33.533,32.166 -2020-03-13 03:30:00,80.63,124.714,33.533,32.166 -2020-03-13 03:45:00,76.96,126.39299999999999,33.533,32.166 -2020-03-13 04:00:00,77.78,139.984,36.102,32.166 -2020-03-13 04:15:00,76.01,152.549,36.102,32.166 -2020-03-13 04:30:00,78.16,155.04,36.102,32.166 -2020-03-13 04:45:00,80.35,155.576,36.102,32.166 -2020-03-13 05:00:00,83.6,188.688,42.423,32.166 -2020-03-13 05:15:00,86.08,221.351,42.423,32.166 -2020-03-13 05:30:00,89.34,216.452,42.423,32.166 -2020-03-13 05:45:00,93.73,208.157,42.423,32.166 -2020-03-13 06:00:00,103.64,205.862,55.38,32.166 -2020-03-13 06:15:00,107.57,210.74,55.38,32.166 -2020-03-13 06:30:00,110.64,211.385,55.38,32.166 -2020-03-13 06:45:00,114.48,215.893,55.38,32.166 -2020-03-13 07:00:00,119.66,217.563,65.929,32.166 -2020-03-13 07:15:00,122.04,221.418,65.929,32.166 -2020-03-13 07:30:00,125.84,220.833,65.929,32.166 -2020-03-13 07:45:00,127.92,218.025,65.929,32.166 -2020-03-13 08:00:00,130.98,214.92700000000002,57.336999999999996,32.166 -2020-03-13 08:15:00,131.41,212.718,57.336999999999996,32.166 -2020-03-13 08:30:00,133.25,208.553,57.336999999999996,32.166 -2020-03-13 08:45:00,132.73,202.65900000000002,57.336999999999996,32.166 -2020-03-13 09:00:00,131.91,195.34099999999998,54.226000000000006,32.166 -2020-03-13 09:15:00,133.92,192.61900000000003,54.226000000000006,32.166 -2020-03-13 09:30:00,134.68,190.99200000000002,54.226000000000006,32.166 -2020-03-13 09:45:00,135.73,188.257,54.226000000000006,32.166 -2020-03-13 10:00:00,134.92,184.42,51.298,32.166 -2020-03-13 10:15:00,135.4,182.248,51.298,32.166 -2020-03-13 10:30:00,134.47,180.012,51.298,32.166 -2020-03-13 10:45:00,135.19,178.93900000000002,51.298,32.166 -2020-03-13 11:00:00,135.89,175.94299999999998,50.839,32.166 -2020-03-13 11:15:00,138.7,174.553,50.839,32.166 -2020-03-13 11:30:00,137.93,175.858,50.839,32.166 -2020-03-13 11:45:00,136.68,175.517,50.839,32.166 -2020-03-13 12:00:00,135.2,171.43099999999998,47.976000000000006,32.166 -2020-03-13 12:15:00,133.97,169.679,47.976000000000006,32.166 -2020-03-13 12:30:00,132.57,168.91400000000002,47.976000000000006,32.166 -2020-03-13 12:45:00,133.27,170.15200000000002,47.976000000000006,32.166 -2020-03-13 13:00:00,131.19,170.889,46.299,32.166 -2020-03-13 13:15:00,131.49,169.957,46.299,32.166 -2020-03-13 13:30:00,130.77,168.495,46.299,32.166 -2020-03-13 13:45:00,129.96,167.967,46.299,32.166 -2020-03-13 14:00:00,127.92,168.924,44.971000000000004,32.166 -2020-03-13 14:15:00,127.13,167.878,44.971000000000004,32.166 -2020-03-13 14:30:00,128.48,168.445,44.971000000000004,32.166 -2020-03-13 14:45:00,133.54,169.662,44.971000000000004,32.166 -2020-03-13 15:00:00,132.39,171.033,47.48,32.166 -2020-03-13 15:15:00,129.23,169.125,47.48,32.166 -2020-03-13 15:30:00,123.71,167.375,47.48,32.166 -2020-03-13 15:45:00,127.43,167.642,47.48,32.166 -2020-03-13 16:00:00,125.11,169.949,50.648,32.166 -2020-03-13 16:15:00,125.31,171.919,50.648,32.166 -2020-03-13 16:30:00,131.08,174.01,50.648,32.166 -2020-03-13 16:45:00,131.36,173.954,50.648,32.166 -2020-03-13 17:00:00,133.17,177.222,56.251000000000005,32.166 -2020-03-13 17:15:00,127.14,179.476,56.251000000000005,32.166 -2020-03-13 17:30:00,131.27,182.215,56.251000000000005,32.166 -2020-03-13 17:45:00,129.12,183.114,56.251000000000005,32.166 -2020-03-13 18:00:00,131.24,187.041,58.982,32.166 -2020-03-13 18:15:00,135.17,187.62099999999998,58.982,32.166 -2020-03-13 18:30:00,139.57,186.37900000000002,58.982,32.166 -2020-03-13 18:45:00,139.51,188.546,58.982,32.166 -2020-03-13 19:00:00,133.36,188.09,57.293,32.166 -2020-03-13 19:15:00,128.85,186.59799999999998,57.293,32.166 -2020-03-13 19:30:00,132.49,185.59400000000002,57.293,32.166 -2020-03-13 19:45:00,126.88,182.27900000000002,57.293,32.166 -2020-03-13 20:00:00,119.57,176.699,59.433,32.166 -2020-03-13 20:15:00,115.51,171.71900000000002,59.433,32.166 -2020-03-13 20:30:00,114.29,168.16099999999997,59.433,32.166 -2020-03-13 20:45:00,118.37,166.18200000000002,59.433,32.166 -2020-03-13 21:00:00,112.96,163.543,52.153999999999996,32.166 -2020-03-13 21:15:00,110.25,160.898,52.153999999999996,32.166 -2020-03-13 21:30:00,97.71,158.635,52.153999999999996,32.166 -2020-03-13 21:45:00,100.27,159.203,52.153999999999996,32.166 -2020-03-13 22:00:00,97.93,152.60299999999998,47.125,32.166 -2020-03-13 22:15:00,92.71,148.64700000000002,47.125,32.166 -2020-03-13 22:30:00,96.04,139.16299999999998,47.125,32.166 -2020-03-13 22:45:00,96.36,134.97,47.125,32.166 -2020-03-13 23:00:00,92.48,128.05200000000002,41.236000000000004,32.166 -2020-03-13 23:15:00,86.81,124.382,41.236000000000004,32.166 -2020-03-13 23:30:00,83.75,124.344,41.236000000000004,32.166 -2020-03-13 23:45:00,80.73,124.059,41.236000000000004,32.166 -2020-03-14 00:00:00,77.88,109.852,36.484,31.988000000000003 -2020-03-14 00:15:00,83.78,104.229,36.484,31.988000000000003 -2020-03-14 00:30:00,82.86,104.44,36.484,31.988000000000003 -2020-03-14 00:45:00,81.65,105.12,36.484,31.988000000000003 -2020-03-14 01:00:00,70.41,106.62100000000001,32.391999999999996,31.988000000000003 -2020-03-14 01:15:00,73.58,106.88,32.391999999999996,31.988000000000003 -2020-03-14 01:30:00,71.51,106.098,32.391999999999996,31.988000000000003 -2020-03-14 01:45:00,71.4,106.311,32.391999999999996,31.988000000000003 -2020-03-14 02:00:00,70.84,108.875,30.194000000000003,31.988000000000003 -2020-03-14 02:15:00,70.05,109.193,30.194000000000003,31.988000000000003 -2020-03-14 02:30:00,68.78,109.60700000000001,30.194000000000003,31.988000000000003 -2020-03-14 02:45:00,70.66,111.51299999999999,30.194000000000003,31.988000000000003 -2020-03-14 03:00:00,74.8,113.75299999999999,29.677,31.988000000000003 -2020-03-14 03:15:00,77.05,114.881,29.677,31.988000000000003 -2020-03-14 03:30:00,75.79,115.251,29.677,31.988000000000003 -2020-03-14 03:45:00,74.51,117.256,29.677,31.988000000000003 -2020-03-14 04:00:00,73.14,126.67299999999999,29.616,31.988000000000003 -2020-03-14 04:15:00,76.99,136.685,29.616,31.988000000000003 -2020-03-14 04:30:00,79.29,136.898,29.616,31.988000000000003 -2020-03-14 04:45:00,79.22,136.989,29.616,31.988000000000003 -2020-03-14 05:00:00,73.08,153.809,29.625,31.988000000000003 -2020-03-14 05:15:00,73.44,166.923,29.625,31.988000000000003 -2020-03-14 05:30:00,78.54,162.54399999999998,29.625,31.988000000000003 -2020-03-14 05:45:00,82.22,160.054,29.625,31.988000000000003 -2020-03-14 06:00:00,85.25,177.106,30.551,31.988000000000003 -2020-03-14 06:15:00,78.08,198.613,30.551,31.988000000000003 -2020-03-14 06:30:00,81.79,193.703,30.551,31.988000000000003 -2020-03-14 06:45:00,83.22,189.206,30.551,31.988000000000003 -2020-03-14 07:00:00,89.51,187.062,34.865,31.988000000000003 -2020-03-14 07:15:00,91.04,189.51,34.865,31.988000000000003 -2020-03-14 07:30:00,91.15,191.669,34.865,31.988000000000003 -2020-03-14 07:45:00,90.05,192.73,34.865,31.988000000000003 -2020-03-14 08:00:00,95.18,193.46599999999998,41.456,31.988000000000003 -2020-03-14 08:15:00,100.55,194.687,41.456,31.988000000000003 -2020-03-14 08:30:00,104.99,192.00400000000002,41.456,31.988000000000003 -2020-03-14 08:45:00,103.55,189.274,41.456,31.988000000000003 -2020-03-14 09:00:00,103.12,184.047,43.001999999999995,31.988000000000003 -2020-03-14 09:15:00,109.55,182.112,43.001999999999995,31.988000000000003 -2020-03-14 09:30:00,113.29,181.43599999999998,43.001999999999995,31.988000000000003 -2020-03-14 09:45:00,114.02,178.81,43.001999999999995,31.988000000000003 -2020-03-14 10:00:00,110.04,175.35,42.047,31.988000000000003 -2020-03-14 10:15:00,109.56,173.428,42.047,31.988000000000003 -2020-03-14 10:30:00,115.95,171.328,42.047,31.988000000000003 -2020-03-14 10:45:00,117.43,171.47400000000002,42.047,31.988000000000003 -2020-03-14 11:00:00,116.25,168.637,39.894,31.988000000000003 -2020-03-14 11:15:00,113.56,166.72400000000002,39.894,31.988000000000003 -2020-03-14 11:30:00,120.33,167.00400000000002,39.894,31.988000000000003 -2020-03-14 11:45:00,122.42,165.852,39.894,31.988000000000003 -2020-03-14 12:00:00,112.56,160.997,38.122,31.988000000000003 -2020-03-14 12:15:00,110.8,159.982,38.122,31.988000000000003 -2020-03-14 12:30:00,105.88,159.467,38.122,31.988000000000003 -2020-03-14 12:45:00,104.72,160.058,38.122,31.988000000000003 -2020-03-14 13:00:00,102.48,160.347,34.645,31.988000000000003 -2020-03-14 13:15:00,101.32,157.35299999999998,34.645,31.988000000000003 -2020-03-14 13:30:00,99.94,155.47299999999998,34.645,31.988000000000003 -2020-03-14 13:45:00,98.58,155.225,34.645,31.988000000000003 -2020-03-14 14:00:00,96.86,157.421,33.739000000000004,31.988000000000003 -2020-03-14 14:15:00,96.28,155.673,33.739000000000004,31.988000000000003 -2020-03-14 14:30:00,96.6,154.406,33.739000000000004,31.988000000000003 -2020-03-14 14:45:00,97.2,155.903,33.739000000000004,31.988000000000003 -2020-03-14 15:00:00,96.67,157.937,35.908,31.988000000000003 -2020-03-14 15:15:00,95.72,156.866,35.908,31.988000000000003 -2020-03-14 15:30:00,95.92,156.571,35.908,31.988000000000003 -2020-03-14 15:45:00,95.09,156.715,35.908,31.988000000000003 -2020-03-14 16:00:00,95.88,158.109,39.249,31.988000000000003 -2020-03-14 16:15:00,95.55,160.806,39.249,31.988000000000003 -2020-03-14 16:30:00,95.24,162.874,39.249,31.988000000000003 -2020-03-14 16:45:00,95.42,163.626,39.249,31.988000000000003 -2020-03-14 17:00:00,99.69,166.172,46.045,31.988000000000003 -2020-03-14 17:15:00,99.32,169.774,46.045,31.988000000000003 -2020-03-14 17:30:00,101.07,172.42700000000002,46.045,31.988000000000003 -2020-03-14 17:45:00,102.78,173.00599999999997,46.045,31.988000000000003 -2020-03-14 18:00:00,107.78,176.59599999999998,48.238,31.988000000000003 -2020-03-14 18:15:00,108.04,179.19299999999998,48.238,31.988000000000003 -2020-03-14 18:30:00,111.45,179.40099999999998,48.238,31.988000000000003 -2020-03-14 18:45:00,111.41,177.924,48.238,31.988000000000003 -2020-03-14 19:00:00,111.15,178.12599999999998,46.785,31.988000000000003 -2020-03-14 19:15:00,109.51,176.055,46.785,31.988000000000003 -2020-03-14 19:30:00,108.23,175.903,46.785,31.988000000000003 -2020-03-14 19:45:00,106.14,172.66299999999998,46.785,31.988000000000003 -2020-03-14 20:00:00,101.01,169.296,39.830999999999996,31.988000000000003 -2020-03-14 20:15:00,97.68,166.32299999999998,39.830999999999996,31.988000000000003 -2020-03-14 20:30:00,93.02,162.352,39.830999999999996,31.988000000000003 -2020-03-14 20:45:00,93.19,160.203,39.830999999999996,31.988000000000003 -2020-03-14 21:00:00,89.17,159.56799999999998,34.063,31.988000000000003 -2020-03-14 21:15:00,86.26,157.30700000000002,34.063,31.988000000000003 -2020-03-14 21:30:00,89.1,156.261,34.063,31.988000000000003 -2020-03-14 21:45:00,87.56,156.39,34.063,31.988000000000003 -2020-03-14 22:00:00,82.87,151.08100000000002,34.455999999999996,31.988000000000003 -2020-03-14 22:15:00,83.61,149.59799999999998,34.455999999999996,31.988000000000003 -2020-03-14 22:30:00,77.72,146.056,34.455999999999996,31.988000000000003 -2020-03-14 22:45:00,79.25,143.726,34.455999999999996,31.988000000000003 -2020-03-14 23:00:00,75.28,139.096,27.840999999999998,31.988000000000003 -2020-03-14 23:15:00,72.99,133.905,27.840999999999998,31.988000000000003 -2020-03-14 23:30:00,72.93,132.463,27.840999999999998,31.988000000000003 -2020-03-14 23:45:00,71.64,129.89,27.840999999999998,31.988000000000003 -2020-03-15 00:00:00,66.91,110.05799999999999,20.007,31.988000000000003 -2020-03-15 00:15:00,67.0,103.98700000000001,20.007,31.988000000000003 -2020-03-15 00:30:00,66.54,103.802,20.007,31.988000000000003 -2020-03-15 00:45:00,65.35,105.135,20.007,31.988000000000003 -2020-03-15 01:00:00,62.97,106.49,17.378,31.988000000000003 -2020-03-15 01:15:00,63.28,107.705,17.378,31.988000000000003 -2020-03-15 01:30:00,60.74,107.381,17.378,31.988000000000003 -2020-03-15 01:45:00,63.48,107.251,17.378,31.988000000000003 -2020-03-15 02:00:00,61.21,109.098,16.145,31.988000000000003 -2020-03-15 02:15:00,61.18,108.698,16.145,31.988000000000003 -2020-03-15 02:30:00,60.17,109.969,16.145,31.988000000000003 -2020-03-15 02:45:00,61.4,112.275,16.145,31.988000000000003 -2020-03-15 03:00:00,60.81,114.917,15.427999999999999,31.988000000000003 -2020-03-15 03:15:00,61.75,115.56700000000001,15.427999999999999,31.988000000000003 -2020-03-15 03:30:00,61.32,117.15100000000001,15.427999999999999,31.988000000000003 -2020-03-15 03:45:00,62.75,118.98200000000001,15.427999999999999,31.988000000000003 -2020-03-15 04:00:00,62.97,128.166,16.663,31.988000000000003 -2020-03-15 04:15:00,63.98,137.14700000000002,16.663,31.988000000000003 -2020-03-15 04:30:00,63.98,137.636,16.663,31.988000000000003 -2020-03-15 04:45:00,63.9,137.90200000000002,16.663,31.988000000000003 -2020-03-15 05:00:00,63.92,151.424,17.271,31.988000000000003 -2020-03-15 05:15:00,62.64,162.171,17.271,31.988000000000003 -2020-03-15 05:30:00,63.97,157.541,17.271,31.988000000000003 -2020-03-15 05:45:00,64.06,155.245,17.271,31.988000000000003 -2020-03-15 06:00:00,63.06,171.845,17.612000000000002,31.988000000000003 -2020-03-15 06:15:00,61.28,191.857,17.612000000000002,31.988000000000003 -2020-03-15 06:30:00,58.8,185.75099999999998,17.612000000000002,31.988000000000003 -2020-03-15 06:45:00,61.36,180.08599999999998,17.612000000000002,31.988000000000003 -2020-03-15 07:00:00,63.14,180.313,20.88,31.988000000000003 -2020-03-15 07:15:00,62.27,181.68,20.88,31.988000000000003 -2020-03-15 07:30:00,66.04,182.82299999999998,20.88,31.988000000000003 -2020-03-15 07:45:00,68.94,183.12,20.88,31.988000000000003 -2020-03-15 08:00:00,71.34,185.66299999999998,25.861,31.988000000000003 -2020-03-15 08:15:00,73.91,186.957,25.861,31.988000000000003 -2020-03-15 08:30:00,74.04,185.912,25.861,31.988000000000003 -2020-03-15 08:45:00,74.07,185.106,25.861,31.988000000000003 -2020-03-15 09:00:00,74.58,179.49,27.921999999999997,31.988000000000003 -2020-03-15 09:15:00,73.36,178.012,27.921999999999997,31.988000000000003 -2020-03-15 09:30:00,75.48,177.27,27.921999999999997,31.988000000000003 -2020-03-15 09:45:00,75.64,174.68599999999998,27.921999999999997,31.988000000000003 -2020-03-15 10:00:00,75.27,173.71099999999998,29.048000000000002,31.988000000000003 -2020-03-15 10:15:00,74.22,172.36,29.048000000000002,31.988000000000003 -2020-03-15 10:30:00,73.91,170.886,29.048000000000002,31.988000000000003 -2020-03-15 10:45:00,74.56,169.398,29.048000000000002,31.988000000000003 -2020-03-15 11:00:00,77.3,167.37099999999998,32.02,31.988000000000003 -2020-03-15 11:15:00,80.08,165.544,32.02,31.988000000000003 -2020-03-15 11:30:00,82.09,165.077,32.02,31.988000000000003 -2020-03-15 11:45:00,79.85,164.555,32.02,31.988000000000003 -2020-03-15 12:00:00,78.18,159.333,28.55,31.988000000000003 -2020-03-15 12:15:00,79.4,160.05,28.55,31.988000000000003 -2020-03-15 12:30:00,76.27,158.143,28.55,31.988000000000003 -2020-03-15 12:45:00,75.58,157.72299999999998,28.55,31.988000000000003 -2020-03-15 13:00:00,71.35,157.334,25.601999999999997,31.988000000000003 -2020-03-15 13:15:00,71.38,157.099,25.601999999999997,31.988000000000003 -2020-03-15 13:30:00,70.92,154.85,25.601999999999997,31.988000000000003 -2020-03-15 13:45:00,72.05,154.139,25.601999999999997,31.988000000000003 -2020-03-15 14:00:00,72.64,156.80700000000002,23.916999999999998,31.988000000000003 -2020-03-15 14:15:00,71.93,156.235,23.916999999999998,31.988000000000003 -2020-03-15 14:30:00,71.59,155.931,23.916999999999998,31.988000000000003 -2020-03-15 14:45:00,71.9,156.895,23.916999999999998,31.988000000000003 -2020-03-15 15:00:00,73.94,157.505,24.064,31.988000000000003 -2020-03-15 15:15:00,72.87,157.013,24.064,31.988000000000003 -2020-03-15 15:30:00,73.03,157.2,24.064,31.988000000000003 -2020-03-15 15:45:00,74.33,158.025,24.064,31.988000000000003 -2020-03-15 16:00:00,76.14,161.00799999999998,28.189,31.988000000000003 -2020-03-15 16:15:00,77.61,162.841,28.189,31.988000000000003 -2020-03-15 16:30:00,78.45,165.28900000000002,28.189,31.988000000000003 -2020-03-15 16:45:00,83.21,166.13099999999997,28.189,31.988000000000003 -2020-03-15 17:00:00,85.3,168.75799999999998,37.576,31.988000000000003 -2020-03-15 17:15:00,86.88,172.24,37.576,31.988000000000003 -2020-03-15 17:30:00,88.48,175.292,37.576,31.988000000000003 -2020-03-15 17:45:00,89.58,178.122,37.576,31.988000000000003 -2020-03-15 18:00:00,97.68,181.27700000000002,42.669,31.988000000000003 -2020-03-15 18:15:00,98.02,185.18,42.669,31.988000000000003 -2020-03-15 18:30:00,103.29,183.335,42.669,31.988000000000003 -2020-03-15 18:45:00,103.7,183.683,42.669,31.988000000000003 -2020-03-15 19:00:00,105.01,183.797,43.538999999999994,31.988000000000003 -2020-03-15 19:15:00,102.92,182.188,43.538999999999994,31.988000000000003 -2020-03-15 19:30:00,101.41,181.878,43.538999999999994,31.988000000000003 -2020-03-15 19:45:00,99.98,180.03400000000002,43.538999999999994,31.988000000000003 -2020-03-15 20:00:00,98.07,176.605,37.330999999999996,31.988000000000003 -2020-03-15 20:15:00,98.05,174.584,37.330999999999996,31.988000000000003 -2020-03-15 20:30:00,102.06,171.94,37.330999999999996,31.988000000000003 -2020-03-15 20:45:00,101.51,168.424,37.330999999999996,31.988000000000003 -2020-03-15 21:00:00,92.01,165.261,33.856,31.988000000000003 -2020-03-15 21:15:00,96.09,162.356,33.856,31.988000000000003 -2020-03-15 21:30:00,95.45,161.513,33.856,31.988000000000003 -2020-03-15 21:45:00,98.39,161.839,33.856,31.988000000000003 -2020-03-15 22:00:00,96.08,155.615,34.711999999999996,31.988000000000003 -2020-03-15 22:15:00,93.54,153.219,34.711999999999996,31.988000000000003 -2020-03-15 22:30:00,88.54,146.49200000000002,34.711999999999996,31.988000000000003 -2020-03-15 22:45:00,88.54,143.184,34.711999999999996,31.988000000000003 -2020-03-15 23:00:00,90.01,135.808,29.698,31.988000000000003 -2020-03-15 23:15:00,90.99,132.591,29.698,31.988000000000003 -2020-03-15 23:30:00,88.54,131.872,29.698,31.988000000000003 -2020-03-15 23:45:00,84.36,130.211,29.698,31.988000000000003 -2020-03-16 00:00:00,75.75,98.40299999999999,29.983,32.166 -2020-03-16 00:15:00,83.47,96.28299999999999,29.983,32.166 -2020-03-16 00:30:00,84.42,95.56,29.983,32.166 -2020-03-16 00:45:00,82.25,95.21799999999999,29.983,32.166 -2020-03-16 01:00:00,77.57,96.861,29.122,32.166 -2020-03-16 01:15:00,80.67,97.205,29.122,32.166 -2020-03-16 01:30:00,81.83,96.76299999999999,29.122,32.166 -2020-03-16 01:45:00,81.92,96.56,29.122,32.166 -2020-03-16 02:00:00,76.07,98.52600000000001,28.676,32.166 -2020-03-16 02:15:00,79.7,98.59200000000001,28.676,32.166 -2020-03-16 02:30:00,80.65,100.493,28.676,32.166 -2020-03-16 02:45:00,81.61,101.565,28.676,32.166 -2020-03-16 03:00:00,77.46,105.42399999999999,26.552,32.166 -2020-03-16 03:15:00,79.91,107.682,26.552,32.166 -2020-03-16 03:30:00,82.47,108.404,26.552,32.166 -2020-03-16 03:45:00,82.23,109.36399999999999,26.552,32.166 -2020-03-16 04:00:00,80.26,122.883,27.44,32.166 -2020-03-16 04:15:00,78.08,136.07299999999998,27.44,32.166 -2020-03-16 04:30:00,78.99,137.483,27.44,32.166 -2020-03-16 04:45:00,83.48,138.162,27.44,32.166 -2020-03-16 05:00:00,85.58,168.11,36.825,32.166 -2020-03-16 05:15:00,89.84,199.683,36.825,32.166 -2020-03-16 05:30:00,94.03,193.502,36.825,32.166 -2020-03-16 05:45:00,98.78,184.55700000000002,36.825,32.166 -2020-03-16 06:00:00,104.82,183.747,56.589,32.166 -2020-03-16 06:15:00,108.78,188.298,56.589,32.166 -2020-03-16 06:30:00,111.69,189.327,56.589,32.166 -2020-03-16 06:45:00,114.28,191.799,56.589,32.166 -2020-03-16 07:00:00,119.75,194.726,67.49,32.166 -2020-03-16 07:15:00,118.99,196.967,67.49,32.166 -2020-03-16 07:30:00,121.18,196.90599999999998,67.49,32.166 -2020-03-16 07:45:00,121.94,194.672,67.49,32.166 -2020-03-16 08:00:00,124.7,193.282,60.028,32.166 -2020-03-16 08:15:00,122.52,192.105,60.028,32.166 -2020-03-16 08:30:00,121.4,187.63,60.028,32.166 -2020-03-16 08:45:00,119.86,184.179,60.028,32.166 -2020-03-16 09:00:00,117.82,178.373,55.018,32.166 -2020-03-16 09:15:00,116.63,174.179,55.018,32.166 -2020-03-16 09:30:00,117.73,173.43099999999998,55.018,32.166 -2020-03-16 09:45:00,115.81,171.18599999999998,55.018,32.166 -2020-03-16 10:00:00,113.41,168.915,51.183,32.166 -2020-03-16 10:15:00,116.0,167.81400000000002,51.183,32.166 -2020-03-16 10:30:00,115.46,165.19799999999998,51.183,32.166 -2020-03-16 10:45:00,117.05,164.111,51.183,32.166 -2020-03-16 11:00:00,113.1,158.343,50.065,32.166 -2020-03-16 11:15:00,113.17,158.403,50.065,32.166 -2020-03-16 11:30:00,113.75,160.048,50.065,32.166 -2020-03-16 11:45:00,114.16,160.379,50.065,32.166 -2020-03-16 12:00:00,111.33,156.921,48.141999999999996,32.166 -2020-03-16 12:15:00,113.06,157.437,48.141999999999996,32.166 -2020-03-16 12:30:00,110.37,156.293,48.141999999999996,32.166 -2020-03-16 12:45:00,110.4,157.15200000000002,48.141999999999996,32.166 -2020-03-16 13:00:00,108.44,157.352,47.887,32.166 -2020-03-16 13:15:00,107.98,155.593,47.887,32.166 -2020-03-16 13:30:00,107.97,152.868,47.887,32.166 -2020-03-16 13:45:00,108.56,152.096,47.887,32.166 -2020-03-16 14:00:00,111.41,153.593,48.571000000000005,32.166 -2020-03-16 14:15:00,108.91,152.257,48.571000000000005,32.166 -2020-03-16 14:30:00,108.43,151.621,48.571000000000005,32.166 -2020-03-16 14:45:00,109.18,152.847,48.571000000000005,32.166 -2020-03-16 15:00:00,110.53,154.037,49.937,32.166 -2020-03-16 15:15:00,110.99,152.216,49.937,32.166 -2020-03-16 15:30:00,110.57,151.31,49.937,32.166 -2020-03-16 15:45:00,112.88,150.865,49.937,32.166 -2020-03-16 16:00:00,113.73,154.678,52.963,32.166 -2020-03-16 16:15:00,114.16,156.461,52.963,32.166 -2020-03-16 16:30:00,116.67,156.502,52.963,32.166 -2020-03-16 16:45:00,119.49,155.469,52.963,32.166 -2020-03-16 17:00:00,120.61,156.90200000000002,61.163999999999994,32.166 -2020-03-16 17:15:00,121.52,159.283,61.163999999999994,32.166 -2020-03-16 17:30:00,124.46,161.386,61.163999999999994,32.166 -2020-03-16 17:45:00,126.0,162.251,61.163999999999994,32.166 -2020-03-16 18:00:00,128.25,166.34799999999998,63.788999999999994,32.166 -2020-03-16 18:15:00,128.87,167.03099999999998,63.788999999999994,32.166 -2020-03-16 18:30:00,132.59,165.72,63.788999999999994,32.166 -2020-03-16 18:45:00,135.2,169.049,63.788999999999994,32.166 -2020-03-16 19:00:00,135.47,167.59,63.913000000000004,32.166 -2020-03-16 19:15:00,135.93,165.708,63.913000000000004,32.166 -2020-03-16 19:30:00,136.42,165.69400000000002,63.913000000000004,32.166 -2020-03-16 19:45:00,139.91,163.987,63.913000000000004,32.166 -2020-03-16 20:00:00,131.55,157.97,65.44,32.166 -2020-03-16 20:15:00,123.08,154.694,65.44,32.166 -2020-03-16 20:30:00,115.5,151.886,65.44,32.166 -2020-03-16 20:45:00,115.34,150.49200000000002,65.44,32.166 -2020-03-16 21:00:00,111.28,145.696,59.117,32.166 -2020-03-16 21:15:00,109.77,142.936,59.117,32.166 -2020-03-16 21:30:00,108.18,142.46200000000002,59.117,32.166 -2020-03-16 21:45:00,108.66,141.463,59.117,32.166 -2020-03-16 22:00:00,100.71,133.118,52.301,32.166 -2020-03-16 22:15:00,101.8,129.96,52.301,32.166 -2020-03-16 22:30:00,98.84,115.694,52.301,32.166 -2020-03-16 22:45:00,97.68,108.209,52.301,32.166 -2020-03-16 23:00:00,98.26,101.245,44.373000000000005,32.166 -2020-03-16 23:15:00,99.14,100.038,44.373000000000005,32.166 -2020-03-16 23:30:00,95.57,100.943,44.373000000000005,32.166 -2020-03-16 23:45:00,90.74,101.705,44.373000000000005,32.166 -2020-03-17 00:00:00,83.29,96.788,44.647,32.166 -2020-03-17 00:15:00,85.18,96.06,44.647,32.166 -2020-03-17 00:30:00,88.73,94.814,44.647,32.166 -2020-03-17 00:45:00,90.01,93.965,44.647,32.166 -2020-03-17 01:00:00,86.46,95.25399999999999,41.433,32.166 -2020-03-17 01:15:00,85.81,95.272,41.433,32.166 -2020-03-17 01:30:00,81.39,94.90299999999999,41.433,32.166 -2020-03-17 01:45:00,87.26,94.779,41.433,32.166 -2020-03-17 02:00:00,87.84,96.57700000000001,39.909,32.166 -2020-03-17 02:15:00,88.12,96.916,39.909,32.166 -2020-03-17 02:30:00,80.08,98.25200000000001,39.909,32.166 -2020-03-17 02:45:00,81.87,99.441,39.909,32.166 -2020-03-17 03:00:00,88.39,102.213,39.14,32.166 -2020-03-17 03:15:00,89.75,104.1,39.14,32.166 -2020-03-17 03:30:00,82.45,105.178,39.14,32.166 -2020-03-17 03:45:00,84.57,105.939,39.14,32.166 -2020-03-17 04:00:00,86.69,118.898,40.015,32.166 -2020-03-17 04:15:00,91.6,131.80700000000002,40.015,32.166 -2020-03-17 04:30:00,94.85,132.954,40.015,32.166 -2020-03-17 04:45:00,92.46,134.70600000000002,40.015,32.166 -2020-03-17 05:00:00,92.95,168.956,44.93600000000001,32.166 -2020-03-17 05:15:00,94.92,200.56099999999998,44.93600000000001,32.166 -2020-03-17 05:30:00,98.34,193.25,44.93600000000001,32.166 -2020-03-17 05:45:00,99.36,184.088,44.93600000000001,32.166 -2020-03-17 06:00:00,109.4,182.72,57.271,32.166 -2020-03-17 06:15:00,112.51,188.58599999999998,57.271,32.166 -2020-03-17 06:30:00,114.99,188.97299999999998,57.271,32.166 -2020-03-17 06:45:00,116.99,190.85,57.271,32.166 -2020-03-17 07:00:00,118.61,193.696,68.352,32.166 -2020-03-17 07:15:00,121.29,195.703,68.352,32.166 -2020-03-17 07:30:00,121.0,195.18,68.352,32.166 -2020-03-17 07:45:00,121.45,192.78,68.352,32.166 -2020-03-17 08:00:00,121.87,191.438,60.717,32.166 -2020-03-17 08:15:00,119.41,189.315,60.717,32.166 -2020-03-17 08:30:00,117.8,184.7,60.717,32.166 -2020-03-17 08:45:00,117.14,180.785,60.717,32.166 -2020-03-17 09:00:00,114.19,174.417,54.603,32.166 -2020-03-17 09:15:00,117.59,171.476,54.603,32.166 -2020-03-17 09:30:00,123.71,171.49200000000002,54.603,32.166 -2020-03-17 09:45:00,123.51,169.47299999999998,54.603,32.166 -2020-03-17 10:00:00,123.65,166.34900000000002,52.308,32.166 -2020-03-17 10:15:00,126.87,164.386,52.308,32.166 -2020-03-17 10:30:00,129.22,161.95,52.308,32.166 -2020-03-17 10:45:00,132.76,161.387,52.308,32.166 -2020-03-17 11:00:00,132.25,156.829,51.838,32.166 -2020-03-17 11:15:00,132.0,156.743,51.838,32.166 -2020-03-17 11:30:00,132.65,157.129,51.838,32.166 -2020-03-17 11:45:00,134.64,157.938,51.838,32.166 -2020-03-17 12:00:00,132.83,153.315,50.375,32.166 -2020-03-17 12:15:00,132.99,153.584,50.375,32.166 -2020-03-17 12:30:00,132.12,153.22299999999998,50.375,32.166 -2020-03-17 12:45:00,133.93,154.017,50.375,32.166 -2020-03-17 13:00:00,132.01,153.819,50.735,32.166 -2020-03-17 13:15:00,130.45,152.21200000000002,50.735,32.166 -2020-03-17 13:30:00,124.25,150.447,50.735,32.166 -2020-03-17 13:45:00,128.13,149.58700000000002,50.735,32.166 -2020-03-17 14:00:00,127.73,151.502,50.946000000000005,32.166 -2020-03-17 14:15:00,128.74,150.222,50.946000000000005,32.166 -2020-03-17 14:30:00,128.92,150.161,50.946000000000005,32.166 -2020-03-17 14:45:00,130.63,151.126,50.946000000000005,32.166 -2020-03-17 15:00:00,132.16,151.93,53.18,32.166 -2020-03-17 15:15:00,132.92,150.592,53.18,32.166 -2020-03-17 15:30:00,132.15,149.77,53.18,32.166 -2020-03-17 15:45:00,132.5,149.059,53.18,32.166 -2020-03-17 16:00:00,131.86,153.01,54.928999999999995,32.166 -2020-03-17 16:15:00,131.47,155.187,54.928999999999995,32.166 -2020-03-17 16:30:00,129.12,155.662,54.928999999999995,32.166 -2020-03-17 16:45:00,130.42,155.007,54.928999999999995,32.166 -2020-03-17 17:00:00,131.53,156.974,60.913000000000004,32.166 -2020-03-17 17:15:00,135.08,159.489,60.913000000000004,32.166 -2020-03-17 17:30:00,143.36,162.031,60.913000000000004,32.166 -2020-03-17 17:45:00,144.28,162.69899999999998,60.913000000000004,32.166 -2020-03-17 18:00:00,137.97,166.455,62.214,32.166 -2020-03-17 18:15:00,138.35,167.197,62.214,32.166 -2020-03-17 18:30:00,140.04,165.55599999999998,62.214,32.166 -2020-03-17 18:45:00,139.14,169.495,62.214,32.166 -2020-03-17 19:00:00,138.8,167.745,62.38,32.166 -2020-03-17 19:15:00,134.96,165.702,62.38,32.166 -2020-03-17 19:30:00,135.63,165.108,62.38,32.166 -2020-03-17 19:45:00,132.59,163.565,62.38,32.166 -2020-03-17 20:00:00,123.95,157.756,65.018,32.166 -2020-03-17 20:15:00,121.08,153.566,65.018,32.166 -2020-03-17 20:30:00,114.15,151.616,65.018,32.166 -2020-03-17 20:45:00,114.92,149.891,65.018,32.166 -2020-03-17 21:00:00,114.69,144.774,56.416000000000004,32.166 -2020-03-17 21:15:00,109.67,142.322,56.416000000000004,32.166 -2020-03-17 21:30:00,107.76,141.31,56.416000000000004,32.166 -2020-03-17 21:45:00,105.9,140.57399999999998,56.416000000000004,32.166 -2020-03-17 22:00:00,108.3,133.65,52.846000000000004,32.166 -2020-03-17 22:15:00,108.41,130.213,52.846000000000004,32.166 -2020-03-17 22:30:00,101.96,116.061,52.846000000000004,32.166 -2020-03-17 22:45:00,96.25,108.795,52.846000000000004,32.166 -2020-03-17 23:00:00,91.66,101.624,44.435,32.166 -2020-03-17 23:15:00,90.02,100.15700000000001,44.435,32.166 -2020-03-17 23:30:00,86.99,100.775,44.435,32.166 -2020-03-17 23:45:00,89.71,101.256,44.435,32.166 -2020-03-18 00:00:00,83.73,96.42299999999999,42.527,32.166 -2020-03-18 00:15:00,89.73,95.705,42.527,32.166 -2020-03-18 00:30:00,86.8,94.446,42.527,32.166 -2020-03-18 00:45:00,85.84,93.59899999999999,42.527,32.166 -2020-03-18 01:00:00,80.74,94.855,38.655,32.166 -2020-03-18 01:15:00,80.02,94.855,38.655,32.166 -2020-03-18 01:30:00,85.25,94.46799999999999,38.655,32.166 -2020-03-18 01:45:00,87.28,94.34899999999999,38.655,32.166 -2020-03-18 02:00:00,86.8,96.135,36.912,32.166 -2020-03-18 02:15:00,84.18,96.462,36.912,32.166 -2020-03-18 02:30:00,79.64,97.82,36.912,32.166 -2020-03-18 02:45:00,86.07,99.01100000000001,36.912,32.166 -2020-03-18 03:00:00,88.69,101.79799999999999,36.98,32.166 -2020-03-18 03:15:00,89.95,103.663,36.98,32.166 -2020-03-18 03:30:00,85.36,104.735,36.98,32.166 -2020-03-18 03:45:00,81.81,105.51,36.98,32.166 -2020-03-18 04:00:00,86.79,118.46600000000001,38.052,32.166 -2020-03-18 04:15:00,90.82,131.358,38.052,32.166 -2020-03-18 04:30:00,92.75,132.518,38.052,32.166 -2020-03-18 04:45:00,88.52,134.257,38.052,32.166 -2020-03-18 05:00:00,90.89,168.46599999999998,42.455,32.166 -2020-03-18 05:15:00,92.19,200.058,42.455,32.166 -2020-03-18 05:30:00,96.66,192.72400000000002,42.455,32.166 -2020-03-18 05:45:00,100.78,183.581,42.455,32.166 -2020-03-18 06:00:00,108.49,182.225,57.986000000000004,32.166 -2020-03-18 06:15:00,111.7,188.088,57.986000000000004,32.166 -2020-03-18 06:30:00,114.37,188.43599999999998,57.986000000000004,32.166 -2020-03-18 06:45:00,118.53,190.293,57.986000000000004,32.166 -2020-03-18 07:00:00,124.03,193.15400000000002,71.868,32.166 -2020-03-18 07:15:00,124.83,195.13,71.868,32.166 -2020-03-18 07:30:00,127.19,194.567,71.868,32.166 -2020-03-18 07:45:00,130.33,192.137,71.868,32.166 -2020-03-18 08:00:00,133.17,190.771,62.225,32.166 -2020-03-18 08:15:00,131.53,188.65099999999998,62.225,32.166 -2020-03-18 08:30:00,133.54,183.987,62.225,32.166 -2020-03-18 08:45:00,132.96,180.095,62.225,32.166 -2020-03-18 09:00:00,129.67,173.738,58.802,32.166 -2020-03-18 09:15:00,131.06,170.799,58.802,32.166 -2020-03-18 09:30:00,130.32,170.835,58.802,32.166 -2020-03-18 09:45:00,125.59,168.834,58.802,32.166 -2020-03-18 10:00:00,123.25,165.722,54.122,32.166 -2020-03-18 10:15:00,118.73,163.805,54.122,32.166 -2020-03-18 10:30:00,115.43,161.391,54.122,32.166 -2020-03-18 10:45:00,117.34,160.849,54.122,32.166 -2020-03-18 11:00:00,117.69,156.282,54.368,32.166 -2020-03-18 11:15:00,118.38,156.218,54.368,32.166 -2020-03-18 11:30:00,118.73,156.61,54.368,32.166 -2020-03-18 11:45:00,118.1,157.438,54.368,32.166 -2020-03-18 12:00:00,117.22,152.83700000000002,52.74,32.166 -2020-03-18 12:15:00,117.72,153.116,52.74,32.166 -2020-03-18 12:30:00,117.55,152.716,52.74,32.166 -2020-03-18 12:45:00,115.41,153.509,52.74,32.166 -2020-03-18 13:00:00,116.23,153.35399999999998,52.544,32.166 -2020-03-18 13:15:00,118.56,151.731,52.544,32.166 -2020-03-18 13:30:00,118.92,149.958,52.544,32.166 -2020-03-18 13:45:00,118.2,149.1,52.544,32.166 -2020-03-18 14:00:00,119.88,151.083,53.602,32.166 -2020-03-18 14:15:00,117.8,149.78,53.602,32.166 -2020-03-18 14:30:00,116.98,149.68200000000002,53.602,32.166 -2020-03-18 14:45:00,119.05,150.655,53.602,32.166 -2020-03-18 15:00:00,115.92,151.475,55.59,32.166 -2020-03-18 15:15:00,111.49,150.108,55.59,32.166 -2020-03-18 15:30:00,111.91,149.237,55.59,32.166 -2020-03-18 15:45:00,121.29,148.507,55.59,32.166 -2020-03-18 16:00:00,119.54,152.477,57.586999999999996,32.166 -2020-03-18 16:15:00,120.09,154.63,57.586999999999996,32.166 -2020-03-18 16:30:00,114.99,155.105,57.586999999999996,32.166 -2020-03-18 16:45:00,117.72,154.4,57.586999999999996,32.166 -2020-03-18 17:00:00,122.47,156.395,62.111999999999995,32.166 -2020-03-18 17:15:00,129.68,158.906,62.111999999999995,32.166 -2020-03-18 17:30:00,131.77,161.46200000000002,62.111999999999995,32.166 -2020-03-18 17:45:00,132.41,162.132,62.111999999999995,32.166 -2020-03-18 18:00:00,131.64,165.895,64.605,32.166 -2020-03-18 18:15:00,126.8,166.695,64.605,32.166 -2020-03-18 18:30:00,135.48,165.045,64.605,32.166 -2020-03-18 18:45:00,144.49,169.00099999999998,64.605,32.166 -2020-03-18 19:00:00,144.79,167.22,65.55199999999999,32.166 -2020-03-18 19:15:00,137.82,165.19299999999998,65.55199999999999,32.166 -2020-03-18 19:30:00,133.32,164.62400000000002,65.55199999999999,32.166 -2020-03-18 19:45:00,131.22,163.12,65.55199999999999,32.166 -2020-03-18 20:00:00,129.19,157.282,66.778,32.166 -2020-03-18 20:15:00,125.46,153.107,66.778,32.166 -2020-03-18 20:30:00,120.34,151.188,66.778,32.166 -2020-03-18 20:45:00,117.63,149.47299999999998,66.778,32.166 -2020-03-18 21:00:00,114.44,144.349,56.103,32.166 -2020-03-18 21:15:00,114.71,141.899,56.103,32.166 -2020-03-18 21:30:00,109.71,140.885,56.103,32.166 -2020-03-18 21:45:00,108.39,140.174,56.103,32.166 -2020-03-18 22:00:00,107.26,133.243,51.371,32.166 -2020-03-18 22:15:00,105.38,129.833,51.371,32.166 -2020-03-18 22:30:00,98.14,115.63600000000001,51.371,32.166 -2020-03-18 22:45:00,94.88,108.369,51.371,32.166 -2020-03-18 23:00:00,88.42,101.18700000000001,42.798,32.166 -2020-03-18 23:15:00,89.09,99.745,42.798,32.166 -2020-03-18 23:30:00,91.31,100.363,42.798,32.166 -2020-03-18 23:45:00,92.36,100.868,42.798,32.166 -2020-03-19 00:00:00,87.88,96.053,39.069,32.166 -2020-03-19 00:15:00,85.89,95.34700000000001,39.069,32.166 -2020-03-19 00:30:00,87.68,94.073,39.069,32.166 -2020-03-19 00:45:00,87.98,93.228,39.069,32.166 -2020-03-19 01:00:00,84.61,94.45200000000001,37.043,32.166 -2020-03-19 01:15:00,79.55,94.434,37.043,32.166 -2020-03-19 01:30:00,77.18,94.027,37.043,32.166 -2020-03-19 01:45:00,78.42,93.915,37.043,32.166 -2020-03-19 02:00:00,79.65,95.69,34.625,32.166 -2020-03-19 02:15:00,86.0,96.006,34.625,32.166 -2020-03-19 02:30:00,83.94,97.384,34.625,32.166 -2020-03-19 02:45:00,86.89,98.575,34.625,32.166 -2020-03-19 03:00:00,82.57,101.37899999999999,33.812,32.166 -2020-03-19 03:15:00,86.09,103.221,33.812,32.166 -2020-03-19 03:30:00,88.78,104.287,33.812,32.166 -2020-03-19 03:45:00,86.84,105.07799999999999,33.812,32.166 -2020-03-19 04:00:00,86.04,118.03,35.236999999999995,32.166 -2020-03-19 04:15:00,87.46,130.905,35.236999999999995,32.166 -2020-03-19 04:30:00,90.13,132.077,35.236999999999995,32.166 -2020-03-19 04:45:00,89.22,133.804,35.236999999999995,32.166 -2020-03-19 05:00:00,87.18,167.97099999999998,40.375,32.166 -2020-03-19 05:15:00,92.65,199.551,40.375,32.166 -2020-03-19 05:30:00,91.79,192.196,40.375,32.166 -2020-03-19 05:45:00,99.25,183.07,40.375,32.166 -2020-03-19 06:00:00,101.84,181.726,52.316,32.166 -2020-03-19 06:15:00,108.97,187.58700000000002,52.316,32.166 -2020-03-19 06:30:00,112.26,187.893,52.316,32.166 -2020-03-19 06:45:00,114.99,189.731,52.316,32.166 -2020-03-19 07:00:00,119.6,192.607,64.115,32.166 -2020-03-19 07:15:00,119.74,194.554,64.115,32.166 -2020-03-19 07:30:00,122.99,193.949,64.115,32.166 -2020-03-19 07:45:00,125.11,191.489,64.115,32.166 -2020-03-19 08:00:00,132.62,190.1,55.033,32.166 -2020-03-19 08:15:00,133.14,187.981,55.033,32.166 -2020-03-19 08:30:00,132.06,183.27,55.033,32.166 -2020-03-19 08:45:00,130.67,179.4,55.033,32.166 -2020-03-19 09:00:00,131.44,173.053,49.411,32.166 -2020-03-19 09:15:00,128.19,170.11599999999999,49.411,32.166 -2020-03-19 09:30:00,130.89,170.173,49.411,32.166 -2020-03-19 09:45:00,133.55,168.19299999999998,49.411,32.166 -2020-03-19 10:00:00,135.03,165.09099999999998,45.82899999999999,32.166 -2020-03-19 10:15:00,135.81,163.22,45.82899999999999,32.166 -2020-03-19 10:30:00,135.42,160.829,45.82899999999999,32.166 -2020-03-19 10:45:00,133.48,160.30700000000002,45.82899999999999,32.166 -2020-03-19 11:00:00,134.38,155.732,44.333,32.166 -2020-03-19 11:15:00,136.87,155.691,44.333,32.166 -2020-03-19 11:30:00,136.53,156.089,44.333,32.166 -2020-03-19 11:45:00,135.15,156.935,44.333,32.166 -2020-03-19 12:00:00,134.45,152.355,42.95,32.166 -2020-03-19 12:15:00,132.99,152.64600000000002,42.95,32.166 -2020-03-19 12:30:00,130.93,152.20600000000002,42.95,32.166 -2020-03-19 12:45:00,131.7,152.998,42.95,32.166 -2020-03-19 13:00:00,131.55,152.886,42.489,32.166 -2020-03-19 13:15:00,136.58,151.246,42.489,32.166 -2020-03-19 13:30:00,137.49,149.465,42.489,32.166 -2020-03-19 13:45:00,130.19,148.61,42.489,32.166 -2020-03-19 14:00:00,126.15,150.662,43.448,32.166 -2020-03-19 14:15:00,126.13,149.335,43.448,32.166 -2020-03-19 14:30:00,128.46,149.201,43.448,32.166 -2020-03-19 14:45:00,126.37,150.18,43.448,32.166 -2020-03-19 15:00:00,127.54,151.016,45.994,32.166 -2020-03-19 15:15:00,133.12,149.622,45.994,32.166 -2020-03-19 15:30:00,132.92,148.701,45.994,32.166 -2020-03-19 15:45:00,133.74,147.954,45.994,32.166 -2020-03-19 16:00:00,129.51,151.94,48.167,32.166 -2020-03-19 16:15:00,133.23,154.07,48.167,32.166 -2020-03-19 16:30:00,134.2,154.545,48.167,32.166 -2020-03-19 16:45:00,133.59,153.78799999999998,48.167,32.166 -2020-03-19 17:00:00,130.78,155.813,52.637,32.166 -2020-03-19 17:15:00,129.72,158.317,52.637,32.166 -2020-03-19 17:30:00,130.87,160.888,52.637,32.166 -2020-03-19 17:45:00,140.13,161.56,52.637,32.166 -2020-03-19 18:00:00,142.78,165.331,55.739,32.166 -2020-03-19 18:15:00,139.96,166.188,55.739,32.166 -2020-03-19 18:30:00,137.06,164.53099999999998,55.739,32.166 -2020-03-19 18:45:00,135.97,168.502,55.739,32.166 -2020-03-19 19:00:00,140.2,166.69099999999997,56.36600000000001,32.166 -2020-03-19 19:15:00,139.3,164.68,56.36600000000001,32.166 -2020-03-19 19:30:00,137.47,164.135,56.36600000000001,32.166 -2020-03-19 19:45:00,134.57,162.673,56.36600000000001,32.166 -2020-03-19 20:00:00,124.92,156.805,56.338,32.166 -2020-03-19 20:15:00,122.58,152.644,56.338,32.166 -2020-03-19 20:30:00,124.08,150.756,56.338,32.166 -2020-03-19 20:45:00,121.71,149.05200000000002,56.338,32.166 -2020-03-19 21:00:00,111.74,143.921,49.894,32.166 -2020-03-19 21:15:00,110.78,141.474,49.894,32.166 -2020-03-19 21:30:00,112.46,140.45600000000002,49.894,32.166 -2020-03-19 21:45:00,110.73,139.77100000000002,49.894,32.166 -2020-03-19 22:00:00,106.07,132.833,46.687,32.166 -2020-03-19 22:15:00,102.14,129.44899999999998,46.687,32.166 -2020-03-19 22:30:00,100.56,115.20700000000001,46.687,32.166 -2020-03-19 22:45:00,100.02,107.939,46.687,32.166 -2020-03-19 23:00:00,93.88,100.74600000000001,39.211,32.166 -2020-03-19 23:15:00,92.98,99.32700000000001,39.211,32.166 -2020-03-19 23:30:00,90.87,99.948,39.211,32.166 -2020-03-19 23:45:00,92.97,100.475,39.211,32.166 -2020-03-20 00:00:00,81.31,94.274,36.616,32.166 -2020-03-20 00:15:00,83.1,93.804,36.616,32.166 -2020-03-20 00:30:00,80.74,92.495,36.616,32.166 -2020-03-20 00:45:00,87.41,91.87299999999999,36.616,32.166 -2020-03-20 01:00:00,85.22,92.698,33.799,32.166 -2020-03-20 01:15:00,85.31,93.18799999999999,33.799,32.166 -2020-03-20 01:30:00,79.72,92.814,33.799,32.166 -2020-03-20 01:45:00,79.16,92.711,33.799,32.166 -2020-03-20 02:00:00,75.56,94.837,32.968,32.166 -2020-03-20 02:15:00,78.31,95.037,32.968,32.166 -2020-03-20 02:30:00,84.24,97.10799999999999,32.968,32.166 -2020-03-20 02:45:00,84.88,98.116,32.968,32.166 -2020-03-20 03:00:00,84.31,100.412,33.533,32.166 -2020-03-20 03:15:00,80.11,102.57,33.533,32.166 -2020-03-20 03:30:00,86.07,103.539,33.533,32.166 -2020-03-20 03:45:00,86.71,104.882,33.533,32.166 -2020-03-20 04:00:00,89.04,118.052,36.102,32.166 -2020-03-20 04:15:00,86.87,130.207,36.102,32.166 -2020-03-20 04:30:00,82.36,131.881,36.102,32.166 -2020-03-20 04:45:00,84.69,132.501,36.102,32.166 -2020-03-20 05:00:00,89.4,165.488,42.423,32.166 -2020-03-20 05:15:00,90.87,198.532,42.423,32.166 -2020-03-20 05:30:00,93.45,192.05200000000002,42.423,32.166 -2020-03-20 05:45:00,99.81,182.74599999999998,42.423,32.166 -2020-03-20 06:00:00,105.17,181.84099999999998,55.38,32.166 -2020-03-20 06:15:00,110.26,186.604,55.38,32.166 -2020-03-20 06:30:00,112.63,186.18099999999998,55.38,32.166 -2020-03-20 06:45:00,116.56,189.22299999999998,55.38,32.166 -2020-03-20 07:00:00,123.53,191.669,65.929,32.166 -2020-03-20 07:15:00,124.74,194.675,65.929,32.166 -2020-03-20 07:30:00,128.22,193.28099999999998,65.929,32.166 -2020-03-20 07:45:00,131.67,190.02700000000002,65.929,32.166 -2020-03-20 08:00:00,135.19,187.975,57.336999999999996,32.166 -2020-03-20 08:15:00,135.75,185.748,57.336999999999996,32.166 -2020-03-20 08:30:00,136.9,181.74200000000002,57.336999999999996,32.166 -2020-03-20 08:45:00,138.65,176.588,57.336999999999996,32.166 -2020-03-20 09:00:00,138.65,169.93400000000003,54.226000000000006,32.166 -2020-03-20 09:15:00,141.78,168.017,54.226000000000006,32.166 -2020-03-20 09:30:00,141.41,167.548,54.226000000000006,32.166 -2020-03-20 09:45:00,140.33,165.61,54.226000000000006,32.166 -2020-03-20 10:00:00,137.44,161.526,51.298,32.166 -2020-03-20 10:15:00,138.85,160.215,51.298,32.166 -2020-03-20 10:30:00,139.49,157.942,51.298,32.166 -2020-03-20 10:45:00,140.16,157.05,51.298,32.166 -2020-03-20 11:00:00,135.6,152.503,50.839,32.166 -2020-03-20 11:15:00,134.52,151.446,50.839,32.166 -2020-03-20 11:30:00,136.04,153.204,50.839,32.166 -2020-03-20 11:45:00,132.53,153.84799999999998,50.839,32.166 -2020-03-20 12:00:00,128.08,150.317,47.976000000000006,32.166 -2020-03-20 12:15:00,131.48,148.69899999999998,47.976000000000006,32.166 -2020-03-20 12:30:00,131.48,148.384,47.976000000000006,32.166 -2020-03-20 12:45:00,128.91,149.39600000000002,47.976000000000006,32.166 -2020-03-20 13:00:00,125.64,150.276,46.299,32.166 -2020-03-20 13:15:00,127.45,149.352,46.299,32.166 -2020-03-20 13:30:00,121.83,147.784,46.299,32.166 -2020-03-20 13:45:00,121.45,146.958,46.299,32.166 -2020-03-20 14:00:00,122.13,147.91299999999998,44.971000000000004,32.166 -2020-03-20 14:15:00,122.95,146.52700000000002,44.971000000000004,32.166 -2020-03-20 14:30:00,119.93,147.18,44.971000000000004,32.166 -2020-03-20 14:45:00,118.5,148.24,44.971000000000004,32.166 -2020-03-20 15:00:00,118.31,148.666,47.48,32.166 -2020-03-20 15:15:00,118.3,146.813,47.48,32.166 -2020-03-20 15:30:00,117.43,144.417,47.48,32.166 -2020-03-20 15:45:00,118.9,143.97299999999998,47.48,32.166 -2020-03-20 16:00:00,119.03,146.799,50.648,32.166 -2020-03-20 16:15:00,117.4,149.28,50.648,32.166 -2020-03-20 16:30:00,117.62,149.784,50.648,32.166 -2020-03-20 16:45:00,116.65,148.667,50.648,32.166 -2020-03-20 17:00:00,118.31,151.38299999999998,56.251000000000005,32.166 -2020-03-20 17:15:00,119.69,153.495,56.251000000000005,32.166 -2020-03-20 17:30:00,121.15,155.864,56.251000000000005,32.166 -2020-03-20 17:45:00,124.53,156.298,56.251000000000005,32.166 -2020-03-20 18:00:00,130.12,160.666,58.982,32.166 -2020-03-20 18:15:00,129.06,160.994,58.982,32.166 -2020-03-20 18:30:00,130.46,159.622,58.982,32.166 -2020-03-20 18:45:00,132.02,163.724,58.982,32.166 -2020-03-20 19:00:00,134.39,162.879,57.293,32.166 -2020-03-20 19:15:00,130.14,162.16299999999998,57.293,32.166 -2020-03-20 19:30:00,128.96,161.32399999999998,57.293,32.166 -2020-03-20 19:45:00,127.91,159.238,57.293,32.166 -2020-03-20 20:00:00,121.85,153.34799999999998,59.433,32.166 -2020-03-20 20:15:00,124.01,149.438,59.433,32.166 -2020-03-20 20:30:00,121.62,147.405,59.433,32.166 -2020-03-20 20:45:00,115.58,145.928,59.433,32.166 -2020-03-20 21:00:00,107.59,141.58700000000002,52.153999999999996,32.166 -2020-03-20 21:15:00,107.1,139.983,52.153999999999996,32.166 -2020-03-20 21:30:00,102.66,138.957,52.153999999999996,32.166 -2020-03-20 21:45:00,102.64,138.795,52.153999999999996,32.166 -2020-03-20 22:00:00,95.47,132.6,47.125,32.166 -2020-03-20 22:15:00,92.65,129.063,47.125,32.166 -2020-03-20 22:30:00,94.55,121.314,47.125,32.166 -2020-03-20 22:45:00,96.74,117.149,47.125,32.166 -2020-03-20 23:00:00,91.54,110.07799999999999,41.236000000000004,32.166 -2020-03-20 23:15:00,84.93,106.649,41.236000000000004,32.166 -2020-03-20 23:30:00,83.48,105.56200000000001,41.236000000000004,32.166 -2020-03-20 23:45:00,79.79,105.538,41.236000000000004,32.166 -2020-03-21 00:00:00,76.15,92.06,36.484,31.988000000000003 -2020-03-21 00:15:00,76.52,88.061,36.484,31.988000000000003 -2020-03-21 00:30:00,75.95,87.62700000000001,36.484,31.988000000000003 -2020-03-21 00:45:00,78.77,87.333,36.484,31.988000000000003 -2020-03-21 01:00:00,78.62,88.72,32.391999999999996,31.988000000000003 -2020-03-21 01:15:00,79.74,88.615,32.391999999999996,31.988000000000003 -2020-03-21 01:30:00,75.68,87.559,32.391999999999996,31.988000000000003 -2020-03-21 01:45:00,75.56,87.695,32.391999999999996,31.988000000000003 -2020-03-21 02:00:00,77.03,90.04299999999999,30.194000000000003,31.988000000000003 -2020-03-21 02:15:00,75.94,89.686,30.194000000000003,31.988000000000003 -2020-03-21 02:30:00,75.96,90.661,30.194000000000003,31.988000000000003 -2020-03-21 02:45:00,70.86,92.00399999999999,30.194000000000003,31.988000000000003 -2020-03-21 03:00:00,76.24,94.37,29.677,31.988000000000003 -2020-03-21 03:15:00,77.68,95.339,29.677,31.988000000000003 -2020-03-21 03:30:00,77.67,95.18299999999999,29.677,31.988000000000003 -2020-03-21 03:45:00,73.57,97.11200000000001,29.677,31.988000000000003 -2020-03-21 04:00:00,69.82,106.507,29.616,31.988000000000003 -2020-03-21 04:15:00,70.66,116.397,29.616,31.988000000000003 -2020-03-21 04:30:00,72.22,115.867,29.616,31.988000000000003 -2020-03-21 04:45:00,72.34,116.185,29.616,31.988000000000003 -2020-03-21 05:00:00,73.28,134.24200000000002,29.625,31.988000000000003 -2020-03-21 05:15:00,70.66,149.116,29.625,31.988000000000003 -2020-03-21 05:30:00,72.31,143.395,29.625,31.988000000000003 -2020-03-21 05:45:00,71.97,139.756,29.625,31.988000000000003 -2020-03-21 06:00:00,72.01,156.734,30.551,31.988000000000003 -2020-03-21 06:15:00,74.11,176.644,30.551,31.988000000000003 -2020-03-21 06:30:00,70.85,171.11,30.551,31.988000000000003 -2020-03-21 06:45:00,75.14,166.157,30.551,31.988000000000003 -2020-03-21 07:00:00,77.83,164.997,34.865,31.988000000000003 -2020-03-21 07:15:00,78.22,166.58599999999998,34.865,31.988000000000003 -2020-03-21 07:30:00,79.47,167.74200000000002,34.865,31.988000000000003 -2020-03-21 07:45:00,80.88,167.858,34.865,31.988000000000003 -2020-03-21 08:00:00,82.4,168.946,41.456,31.988000000000003 -2020-03-21 08:15:00,82.02,169.545,41.456,31.988000000000003 -2020-03-21 08:30:00,82.13,166.77,41.456,31.988000000000003 -2020-03-21 08:45:00,83.0,164.435,41.456,31.988000000000003 -2020-03-21 09:00:00,84.22,160.035,43.001999999999995,31.988000000000003 -2020-03-21 09:15:00,84.04,158.866,43.001999999999995,31.988000000000003 -2020-03-21 09:30:00,83.23,159.287,43.001999999999995,31.988000000000003 -2020-03-21 09:45:00,82.37,157.369,43.001999999999995,31.988000000000003 -2020-03-21 10:00:00,81.8,153.608,42.047,31.988000000000003 -2020-03-21 10:15:00,80.91,152.577,42.047,31.988000000000003 -2020-03-21 10:30:00,79.58,150.36700000000002,42.047,31.988000000000003 -2020-03-21 10:45:00,80.21,150.458,42.047,31.988000000000003 -2020-03-21 11:00:00,81.27,145.994,39.894,31.988000000000003 -2020-03-21 11:15:00,82.37,144.628,39.894,31.988000000000003 -2020-03-21 11:30:00,82.93,145.55,39.894,31.988000000000003 -2020-03-21 11:45:00,86.04,145.608,39.894,31.988000000000003 -2020-03-21 12:00:00,81.5,141.393,38.122,31.988000000000003 -2020-03-21 12:15:00,78.76,140.543,38.122,31.988000000000003 -2020-03-21 12:30:00,77.88,140.417,38.122,31.988000000000003 -2020-03-21 12:45:00,78.92,140.98,38.122,31.988000000000003 -2020-03-21 13:00:00,73.16,141.30200000000002,34.645,31.988000000000003 -2020-03-21 13:15:00,75.26,138.506,34.645,31.988000000000003 -2020-03-21 13:30:00,72.49,136.60399999999998,34.645,31.988000000000003 -2020-03-21 13:45:00,72.8,135.825,34.645,31.988000000000003 -2020-03-21 14:00:00,71.82,137.874,33.739000000000004,31.988000000000003 -2020-03-21 14:15:00,68.31,135.69299999999998,33.739000000000004,31.988000000000003 -2020-03-21 14:30:00,69.19,134.681,33.739000000000004,31.988000000000003 -2020-03-21 14:45:00,72.21,136.053,33.739000000000004,31.988000000000003 -2020-03-21 15:00:00,73.63,137.141,35.908,31.988000000000003 -2020-03-21 15:15:00,74.28,136.116,35.908,31.988000000000003 -2020-03-21 15:30:00,72.5,135.011,35.908,31.988000000000003 -2020-03-21 15:45:00,76.03,134.32299999999998,35.908,31.988000000000003 -2020-03-21 16:00:00,78.29,136.875,39.249,31.988000000000003 -2020-03-21 16:15:00,79.04,139.828,39.249,31.988000000000003 -2020-03-21 16:30:00,80.66,140.35,39.249,31.988000000000003 -2020-03-21 16:45:00,82.94,139.906,39.249,31.988000000000003 -2020-03-21 17:00:00,86.08,141.953,46.045,31.988000000000003 -2020-03-21 17:15:00,88.1,144.812,46.045,31.988000000000003 -2020-03-21 17:30:00,90.2,147.079,46.045,31.988000000000003 -2020-03-21 17:45:00,92.79,147.321,46.045,31.988000000000003 -2020-03-21 18:00:00,97.5,151.714,48.238,31.988000000000003 -2020-03-21 18:15:00,97.87,154.032,48.238,31.988000000000003 -2020-03-21 18:30:00,100.71,154.118,48.238,31.988000000000003 -2020-03-21 18:45:00,101.17,154.534,48.238,31.988000000000003 -2020-03-21 19:00:00,107.14,153.971,46.785,31.988000000000003 -2020-03-21 19:15:00,105.31,152.583,46.785,31.988000000000003 -2020-03-21 19:30:00,103.63,152.597,46.785,31.988000000000003 -2020-03-21 19:45:00,103.35,150.908,46.785,31.988000000000003 -2020-03-21 20:00:00,97.14,147.029,39.830999999999996,31.988000000000003 -2020-03-21 20:15:00,94.26,144.661,39.830999999999996,31.988000000000003 -2020-03-21 20:30:00,91.73,142.124,39.830999999999996,31.988000000000003 -2020-03-21 20:45:00,90.18,140.87,39.830999999999996,31.988000000000003 -2020-03-21 21:00:00,84.4,137.915,34.063,31.988000000000003 -2020-03-21 21:15:00,85.72,136.566,34.063,31.988000000000003 -2020-03-21 21:30:00,84.05,136.578,34.063,31.988000000000003 -2020-03-21 21:45:00,83.62,135.95600000000002,34.063,31.988000000000003 -2020-03-21 22:00:00,79.7,130.829,34.455999999999996,31.988000000000003 -2020-03-21 22:15:00,78.84,129.39,34.455999999999996,31.988000000000003 -2020-03-21 22:30:00,73.84,126.485,34.455999999999996,31.988000000000003 -2020-03-21 22:45:00,75.89,123.93,34.455999999999996,31.988000000000003 -2020-03-21 23:00:00,70.82,118.62,27.840999999999998,31.988000000000003 -2020-03-21 23:15:00,70.94,114.022,27.840999999999998,31.988000000000003 -2020-03-21 23:30:00,69.79,112.245,27.840999999999998,31.988000000000003 -2020-03-21 23:45:00,68.39,110.39399999999999,27.840999999999998,31.988000000000003 -2020-03-22 00:00:00,60.08,92.443,20.007,31.988000000000003 -2020-03-22 00:15:00,58.06,87.84200000000001,20.007,31.988000000000003 -2020-03-22 00:30:00,55.51,87.055,20.007,31.988000000000003 -2020-03-22 00:45:00,56.45,87.271,20.007,31.988000000000003 -2020-03-22 01:00:00,54.53,88.59700000000001,17.378,31.988000000000003 -2020-03-22 01:15:00,52.88,89.23700000000001,17.378,31.988000000000003 -2020-03-22 01:30:00,52.07,88.521,17.378,31.988000000000003 -2020-03-22 01:45:00,53.98,88.29799999999999,17.378,31.988000000000003 -2020-03-22 02:00:00,48.89,90.07600000000001,16.145,31.988000000000003 -2020-03-22 02:15:00,53.69,89.28200000000001,16.145,31.988000000000003 -2020-03-22 02:30:00,51.28,90.99600000000001,16.145,31.988000000000003 -2020-03-22 02:45:00,53.95,92.603,16.145,31.988000000000003 -2020-03-22 03:00:00,50.72,95.43799999999999,15.427999999999999,31.988000000000003 -2020-03-22 03:15:00,54.24,96.069,15.427999999999999,31.988000000000003 -2020-03-22 03:30:00,51.64,96.738,15.427999999999999,31.988000000000003 -2020-03-22 03:45:00,51.01,98.361,15.427999999999999,31.988000000000003 -2020-03-22 04:00:00,50.48,107.544,16.663,31.988000000000003 -2020-03-22 04:15:00,51.91,116.501,16.663,31.988000000000003 -2020-03-22 04:30:00,51.98,116.48,16.663,31.988000000000003 -2020-03-22 04:45:00,52.83,116.838,16.663,31.988000000000003 -2020-03-22 05:00:00,51.89,132.247,17.271,31.988000000000003 -2020-03-22 05:15:00,52.74,145.017,17.271,31.988000000000003 -2020-03-22 05:30:00,52.54,139.015,17.271,31.988000000000003 -2020-03-22 05:45:00,54.38,135.485,17.271,31.988000000000003 -2020-03-22 06:00:00,55.46,151.58700000000002,17.612000000000002,31.988000000000003 -2020-03-22 06:15:00,53.48,170.449,17.612000000000002,31.988000000000003 -2020-03-22 06:30:00,55.9,163.799,17.612000000000002,31.988000000000003 -2020-03-22 06:45:00,53.71,157.689,17.612000000000002,31.988000000000003 -2020-03-22 07:00:00,55.53,158.501,20.88,31.988000000000003 -2020-03-22 07:15:00,59.67,158.875,20.88,31.988000000000003 -2020-03-22 07:30:00,62.15,159.44299999999998,20.88,31.988000000000003 -2020-03-22 07:45:00,61.32,158.92700000000002,20.88,31.988000000000003 -2020-03-22 08:00:00,67.05,161.621,25.861,31.988000000000003 -2020-03-22 08:15:00,67.97,162.512,25.861,31.988000000000003 -2020-03-22 08:30:00,69.68,161.264,25.861,31.988000000000003 -2020-03-22 08:45:00,69.61,160.52,25.861,31.988000000000003 -2020-03-22 09:00:00,74.12,155.761,27.921999999999997,31.988000000000003 -2020-03-22 09:15:00,75.03,154.89,27.921999999999997,31.988000000000003 -2020-03-22 09:30:00,74.98,155.334,27.921999999999997,31.988000000000003 -2020-03-22 09:45:00,73.91,153.639,27.921999999999997,31.988000000000003 -2020-03-22 10:00:00,76.48,152.053,29.048000000000002,31.988000000000003 -2020-03-22 10:15:00,73.74,151.536,29.048000000000002,31.988000000000003 -2020-03-22 10:30:00,75.72,149.9,29.048000000000002,31.988000000000003 -2020-03-22 10:45:00,74.12,148.77100000000002,29.048000000000002,31.988000000000003 -2020-03-22 11:00:00,72.15,144.928,32.02,31.988000000000003 -2020-03-22 11:15:00,77.67,143.569,32.02,31.988000000000003 -2020-03-22 11:30:00,77.66,143.93200000000002,32.02,31.988000000000003 -2020-03-22 11:45:00,82.07,144.57399999999998,32.02,31.988000000000003 -2020-03-22 12:00:00,72.99,140.191,28.55,31.988000000000003 -2020-03-22 12:15:00,75.01,140.744,28.55,31.988000000000003 -2020-03-22 12:30:00,71.52,139.441,28.55,31.988000000000003 -2020-03-22 12:45:00,69.58,139.036,28.55,31.988000000000003 -2020-03-22 13:00:00,68.21,138.718,25.601999999999997,31.988000000000003 -2020-03-22 13:15:00,67.52,138.237,25.601999999999997,31.988000000000003 -2020-03-22 13:30:00,66.81,135.855,25.601999999999997,31.988000000000003 -2020-03-22 13:45:00,67.38,134.836,25.601999999999997,31.988000000000003 -2020-03-22 14:00:00,60.59,137.475,23.916999999999998,31.988000000000003 -2020-03-22 14:15:00,59.39,136.376,23.916999999999998,31.988000000000003 -2020-03-22 14:30:00,58.18,136.016,23.916999999999998,31.988000000000003 -2020-03-22 14:45:00,60.55,136.768,23.916999999999998,31.988000000000003 -2020-03-22 15:00:00,59.16,136.64700000000002,24.064,31.988000000000003 -2020-03-22 15:15:00,60.01,136.006,24.064,31.988000000000003 -2020-03-22 15:30:00,56.92,135.28799999999998,24.064,31.988000000000003 -2020-03-22 15:45:00,58.07,135.231,24.064,31.988000000000003 -2020-03-22 16:00:00,61.44,138.836,28.189,31.988000000000003 -2020-03-22 16:15:00,62.16,141.086,28.189,31.988000000000003 -2020-03-22 16:30:00,62.09,142.095,28.189,31.988000000000003 -2020-03-22 16:45:00,63.69,141.726,28.189,31.988000000000003 -2020-03-22 17:00:00,63.44,143.861,37.576,31.988000000000003 -2020-03-22 17:15:00,65.92,146.877,37.576,31.988000000000003 -2020-03-22 17:30:00,69.07,149.62,37.576,31.988000000000003 -2020-03-22 17:45:00,69.42,151.817,37.576,31.988000000000003 -2020-03-22 18:00:00,77.2,155.935,42.669,31.988000000000003 -2020-03-22 18:15:00,75.08,159.263,42.669,31.988000000000003 -2020-03-22 18:30:00,76.8,157.589,42.669,31.988000000000003 -2020-03-22 18:45:00,76.23,159.547,42.669,31.988000000000003 -2020-03-22 19:00:00,79.58,159.303,43.538999999999994,31.988000000000003 -2020-03-22 19:15:00,77.87,158.088,43.538999999999994,31.988000000000003 -2020-03-22 19:30:00,78.53,157.924,43.538999999999994,31.988000000000003 -2020-03-22 19:45:00,80.41,157.30700000000002,43.538999999999994,31.988000000000003 -2020-03-22 20:00:00,79.37,153.393,37.330999999999996,31.988000000000003 -2020-03-22 20:15:00,79.52,151.787,37.330999999999996,31.988000000000003 -2020-03-22 20:30:00,78.47,150.509,37.330999999999996,31.988000000000003 -2020-03-22 20:45:00,77.25,147.811,37.330999999999996,31.988000000000003 -2020-03-22 21:00:00,74.47,142.727,33.856,31.988000000000003 -2020-03-22 21:15:00,73.54,140.791,33.856,31.988000000000003 -2020-03-22 21:30:00,73.03,140.843,33.856,31.988000000000003 -2020-03-22 21:45:00,72.54,140.459,33.856,31.988000000000003 -2020-03-22 22:00:00,69.45,134.984,34.711999999999996,31.988000000000003 -2020-03-22 22:15:00,69.2,132.468,34.711999999999996,31.988000000000003 -2020-03-22 22:30:00,64.59,126.84,34.711999999999996,31.988000000000003 -2020-03-22 22:45:00,67.2,123.23,34.711999999999996,31.988000000000003 -2020-03-22 23:00:00,62.87,115.586,29.698,31.988000000000003 -2020-03-22 23:15:00,62.97,112.869,29.698,31.988000000000003 -2020-03-22 23:30:00,58.12,111.583,29.698,31.988000000000003 -2020-03-22 23:45:00,60.08,110.514,29.698,31.988000000000003 -2020-03-23 00:00:00,82.34,95.79,29.983,32.166 -2020-03-23 00:15:00,83.55,93.75399999999999,29.983,32.166 -2020-03-23 00:30:00,79.21,92.929,29.983,32.166 -2020-03-23 00:45:00,78.16,92.605,29.983,32.166 -2020-03-23 01:00:00,79.25,94.01700000000001,29.122,32.166 -2020-03-23 01:15:00,80.78,94.23700000000001,29.122,32.166 -2020-03-23 01:30:00,76.93,93.65899999999999,29.122,32.166 -2020-03-23 01:45:00,77.19,93.501,29.122,32.166 -2020-03-23 02:00:00,77.95,95.383,28.676,32.166 -2020-03-23 02:15:00,78.39,95.369,28.676,32.166 -2020-03-23 02:30:00,81.25,97.412,28.676,32.166 -2020-03-23 02:45:00,76.31,98.49799999999999,28.676,32.166 -2020-03-23 03:00:00,80.56,102.464,26.552,32.166 -2020-03-23 03:15:00,79.77,104.568,26.552,32.166 -2020-03-23 03:30:00,79.74,105.24799999999999,26.552,32.166 -2020-03-23 03:45:00,77.39,106.31200000000001,26.552,32.166 -2020-03-23 04:00:00,81.0,119.811,27.44,32.166 -2020-03-23 04:15:00,84.58,132.873,27.44,32.166 -2020-03-23 04:30:00,82.05,134.373,27.44,32.166 -2020-03-23 04:45:00,82.35,134.965,27.44,32.166 -2020-03-23 05:00:00,81.8,164.62599999999998,36.825,32.166 -2020-03-23 05:15:00,86.07,196.108,36.825,32.166 -2020-03-23 05:30:00,94.52,189.77700000000002,36.825,32.166 -2020-03-23 05:45:00,100.38,180.954,36.825,32.166 -2020-03-23 06:00:00,108.8,180.22799999999998,56.589,32.166 -2020-03-23 06:15:00,114.59,184.75799999999998,56.589,32.166 -2020-03-23 06:30:00,111.33,185.50099999999998,56.589,32.166 -2020-03-23 06:45:00,111.22,187.83,56.589,32.166 -2020-03-23 07:00:00,120.07,190.862,67.49,32.166 -2020-03-23 07:15:00,121.71,192.895,67.49,32.166 -2020-03-23 07:30:00,125.53,192.547,67.49,32.166 -2020-03-23 07:45:00,126.83,190.105,67.49,32.166 -2020-03-23 08:00:00,132.73,188.553,60.028,32.166 -2020-03-23 08:15:00,130.98,187.391,60.028,32.166 -2020-03-23 08:30:00,131.58,182.579,60.028,32.166 -2020-03-23 08:45:00,133.7,179.28900000000002,60.028,32.166 -2020-03-23 09:00:00,132.55,173.55599999999998,55.018,32.166 -2020-03-23 09:15:00,133.07,169.37900000000002,55.018,32.166 -2020-03-23 09:30:00,135.0,168.774,55.018,32.166 -2020-03-23 09:45:00,134.08,166.667,55.018,32.166 -2020-03-23 10:00:00,129.98,164.472,51.183,32.166 -2020-03-23 10:15:00,130.53,163.696,51.183,32.166 -2020-03-23 10:30:00,128.68,161.246,51.183,32.166 -2020-03-23 10:45:00,130.19,160.298,51.183,32.166 -2020-03-23 11:00:00,126.38,154.475,50.065,32.166 -2020-03-23 11:15:00,128.38,154.691,50.065,32.166 -2020-03-23 11:30:00,129.3,156.38,50.065,32.166 -2020-03-23 11:45:00,130.58,156.843,50.065,32.166 -2020-03-23 12:00:00,126.27,153.531,48.141999999999996,32.166 -2020-03-23 12:15:00,128.79,154.124,48.141999999999996,32.166 -2020-03-23 12:30:00,127.53,152.702,48.141999999999996,32.166 -2020-03-23 12:45:00,127.44,153.553,48.141999999999996,32.166 -2020-03-23 13:00:00,125.66,154.064,47.887,32.166 -2020-03-23 13:15:00,135.19,152.185,47.887,32.166 -2020-03-23 13:30:00,135.03,149.401,47.887,32.166 -2020-03-23 13:45:00,132.18,148.64700000000002,47.887,32.166 -2020-03-23 14:00:00,128.57,150.628,48.571000000000005,32.166 -2020-03-23 14:15:00,127.42,149.127,48.571000000000005,32.166 -2020-03-23 14:30:00,130.25,148.237,48.571000000000005,32.166 -2020-03-23 14:45:00,133.63,149.51,48.571000000000005,32.166 -2020-03-23 15:00:00,134.03,150.812,49.937,32.166 -2020-03-23 15:15:00,132.5,148.795,49.937,32.166 -2020-03-23 15:30:00,125.71,147.537,49.937,32.166 -2020-03-23 15:45:00,123.67,146.966,49.937,32.166 -2020-03-23 16:00:00,123.22,150.901,52.963,32.166 -2020-03-23 16:15:00,127.85,152.52,52.963,32.166 -2020-03-23 16:30:00,129.07,152.556,52.963,32.166 -2020-03-23 16:45:00,128.76,151.165,52.963,32.166 -2020-03-23 17:00:00,126.16,152.803,61.163999999999994,32.166 -2020-03-23 17:15:00,121.94,155.144,61.163999999999994,32.166 -2020-03-23 17:30:00,125.11,157.346,61.163999999999994,32.166 -2020-03-23 17:45:00,128.06,158.218,61.163999999999994,32.166 -2020-03-23 18:00:00,127.94,162.369,63.788999999999994,32.166 -2020-03-23 18:15:00,126.59,163.451,63.788999999999994,32.166 -2020-03-23 18:30:00,126.68,162.086,63.788999999999994,32.166 -2020-03-23 18:45:00,129.76,165.52599999999998,63.788999999999994,32.166 -2020-03-23 19:00:00,131.55,163.859,63.913000000000004,32.166 -2020-03-23 19:15:00,124.43,162.089,63.913000000000004,32.166 -2020-03-23 19:30:00,127.1,162.246,63.913000000000004,32.166 -2020-03-23 19:45:00,128.86,160.82399999999998,63.913000000000004,32.166 -2020-03-23 20:00:00,128.96,154.60299999999998,65.44,32.166 -2020-03-23 20:15:00,120.05,151.42600000000002,65.44,32.166 -2020-03-23 20:30:00,119.49,148.838,65.44,32.166 -2020-03-23 20:45:00,118.33,147.517,65.44,32.166 -2020-03-23 21:00:00,111.59,142.67700000000002,59.117,32.166 -2020-03-23 21:15:00,108.56,139.935,59.117,32.166 -2020-03-23 21:30:00,108.54,139.444,59.117,32.166 -2020-03-23 21:45:00,110.95,138.616,59.117,32.166 -2020-03-23 22:00:00,104.38,130.222,52.301,32.166 -2020-03-23 22:15:00,99.93,127.251,52.301,32.166 -2020-03-23 22:30:00,99.37,112.665,52.301,32.166 -2020-03-23 22:45:00,98.94,105.17399999999999,52.301,32.166 -2020-03-23 23:00:00,93.28,98.132,44.373000000000005,32.166 -2020-03-23 23:15:00,87.35,97.09299999999999,44.373000000000005,32.166 -2020-03-23 23:30:00,90.84,98.01299999999999,44.373000000000005,32.166 -2020-03-23 23:45:00,92.8,98.931,44.373000000000005,32.166 -2020-03-24 00:00:00,87.21,94.149,44.647,32.166 -2020-03-24 00:15:00,81.24,93.507,44.647,32.166 -2020-03-24 00:30:00,77.75,92.161,44.647,32.166 -2020-03-24 00:45:00,80.38,91.33200000000001,44.647,32.166 -2020-03-24 01:00:00,79.49,92.387,41.433,32.166 -2020-03-24 01:15:00,81.5,92.28,41.433,32.166 -2020-03-24 01:30:00,81.05,91.77600000000001,41.433,32.166 -2020-03-24 01:45:00,82.59,91.697,41.433,32.166 -2020-03-24 02:00:00,74.4,93.40899999999999,39.909,32.166 -2020-03-24 02:15:00,83.06,93.669,39.909,32.166 -2020-03-24 02:30:00,82.28,95.147,39.909,32.166 -2020-03-24 02:45:00,84.99,96.35,39.909,32.166 -2020-03-24 03:00:00,80.16,99.23100000000001,39.14,32.166 -2020-03-24 03:15:00,82.68,100.959,39.14,32.166 -2020-03-24 03:30:00,86.24,101.995,39.14,32.166 -2020-03-24 03:45:00,85.57,102.86200000000001,39.14,32.166 -2020-03-24 04:00:00,85.36,115.8,40.015,32.166 -2020-03-24 04:15:00,84.21,128.582,40.015,32.166 -2020-03-24 04:30:00,88.34,129.81799999999998,40.015,32.166 -2020-03-24 04:45:00,83.04,131.484,40.015,32.166 -2020-03-24 05:00:00,83.64,165.446,44.93600000000001,32.166 -2020-03-24 05:15:00,88.14,196.958,44.93600000000001,32.166 -2020-03-24 05:30:00,90.73,189.49900000000002,44.93600000000001,32.166 -2020-03-24 05:45:00,92.93,180.458,44.93600000000001,32.166 -2020-03-24 06:00:00,104.65,179.174,57.271,32.166 -2020-03-24 06:15:00,109.33,185.017,57.271,32.166 -2020-03-24 06:30:00,113.7,185.11599999999999,57.271,32.166 -2020-03-24 06:45:00,113.97,186.847,57.271,32.166 -2020-03-24 07:00:00,123.2,189.797,68.352,32.166 -2020-03-24 07:15:00,124.58,191.597,68.352,32.166 -2020-03-24 07:30:00,126.5,190.78599999999997,68.352,32.166 -2020-03-24 07:45:00,129.13,188.18099999999998,68.352,32.166 -2020-03-24 08:00:00,133.3,186.676,60.717,32.166 -2020-03-24 08:15:00,134.37,184.57,60.717,32.166 -2020-03-24 08:30:00,134.29,179.618,60.717,32.166 -2020-03-24 08:45:00,134.4,175.868,60.717,32.166 -2020-03-24 09:00:00,132.5,169.576,54.603,32.166 -2020-03-24 09:15:00,131.97,166.65,54.603,32.166 -2020-03-24 09:30:00,130.44,166.808,54.603,32.166 -2020-03-24 09:45:00,126.35,164.928,54.603,32.166 -2020-03-24 10:00:00,123.85,161.881,52.308,32.166 -2020-03-24 10:15:00,123.58,160.246,52.308,32.166 -2020-03-24 10:30:00,121.34,157.974,52.308,32.166 -2020-03-24 10:45:00,117.88,157.553,52.308,32.166 -2020-03-24 11:00:00,119.32,152.941,51.838,32.166 -2020-03-24 11:15:00,119.66,153.012,51.838,32.166 -2020-03-24 11:30:00,122.6,153.441,51.838,32.166 -2020-03-24 11:45:00,119.94,154.38299999999998,51.838,32.166 -2020-03-24 12:00:00,116.79,149.907,50.375,32.166 -2020-03-24 12:15:00,116.39,150.251,50.375,32.166 -2020-03-24 12:30:00,117.13,149.612,50.375,32.166 -2020-03-24 12:45:00,113.27,150.39600000000002,50.375,32.166 -2020-03-24 13:00:00,113.92,150.511,50.735,32.166 -2020-03-24 13:15:00,118.49,148.784,50.735,32.166 -2020-03-24 13:30:00,117.98,146.963,50.735,32.166 -2020-03-24 13:45:00,116.71,146.122,50.735,32.166 -2020-03-24 14:00:00,115.13,148.52100000000002,50.946000000000005,32.166 -2020-03-24 14:15:00,113.45,147.077,50.946000000000005,32.166 -2020-03-24 14:30:00,110.95,146.75799999999998,50.946000000000005,32.166 -2020-03-24 14:45:00,110.16,147.769,50.946000000000005,32.166 -2020-03-24 15:00:00,114.6,148.683,53.18,32.166 -2020-03-24 15:15:00,116.6,147.15,53.18,32.166 -2020-03-24 15:30:00,109.45,145.975,53.18,32.166 -2020-03-24 15:45:00,117.18,145.137,53.18,32.166 -2020-03-24 16:00:00,117.12,149.214,54.928999999999995,32.166 -2020-03-24 16:15:00,118.32,151.22299999999998,54.928999999999995,32.166 -2020-03-24 16:30:00,119.29,151.694,54.928999999999995,32.166 -2020-03-24 16:45:00,117.54,150.678,54.928999999999995,32.166 -2020-03-24 17:00:00,119.96,152.85299999999998,60.913000000000004,32.166 -2020-03-24 17:15:00,118.56,155.32399999999998,60.913000000000004,32.166 -2020-03-24 17:30:00,119.39,157.963,60.913000000000004,32.166 -2020-03-24 17:45:00,119.91,158.639,60.913000000000004,32.166 -2020-03-24 18:00:00,123.8,162.444,62.214,32.166 -2020-03-24 18:15:00,123.93,163.588,62.214,32.166 -2020-03-24 18:30:00,123.06,161.892,62.214,32.166 -2020-03-24 18:45:00,120.31,165.94099999999997,62.214,32.166 -2020-03-24 19:00:00,128.27,163.985,62.38,32.166 -2020-03-24 19:15:00,128.22,162.053,62.38,32.166 -2020-03-24 19:30:00,127.86,161.632,62.38,32.166 -2020-03-24 19:45:00,126.09,160.375,62.38,32.166 -2020-03-24 20:00:00,128.41,154.361,65.018,32.166 -2020-03-24 20:15:00,124.95,150.27200000000002,65.018,32.166 -2020-03-24 20:30:00,121.53,148.543,65.018,32.166 -2020-03-24 20:45:00,118.91,146.891,65.018,32.166 -2020-03-24 21:00:00,112.76,141.732,56.416000000000004,32.166 -2020-03-24 21:15:00,116.6,139.299,56.416000000000004,32.166 -2020-03-24 21:30:00,112.66,138.269,56.416000000000004,32.166 -2020-03-24 21:45:00,107.6,137.704,56.416000000000004,32.166 -2020-03-24 22:00:00,104.55,130.731,52.846000000000004,32.166 -2020-03-24 22:15:00,103.78,127.48100000000001,52.846000000000004,32.166 -2020-03-24 22:30:00,102.03,113.005,52.846000000000004,32.166 -2020-03-24 22:45:00,97.36,105.73200000000001,52.846000000000004,32.166 -2020-03-24 23:00:00,93.61,98.484,44.435,32.166 -2020-03-24 23:15:00,97.37,97.18700000000001,44.435,32.166 -2020-03-24 23:30:00,91.61,97.818,44.435,32.166 -2020-03-24 23:45:00,86.1,98.45700000000001,44.435,32.166 -2020-03-25 00:00:00,86.32,93.757,42.527,32.166 -2020-03-25 00:15:00,85.72,93.12899999999999,42.527,32.166 -2020-03-25 00:30:00,83.35,91.76899999999999,42.527,32.166 -2020-03-25 00:45:00,80.67,90.944,42.527,32.166 -2020-03-25 01:00:00,76.45,91.96600000000001,38.655,32.166 -2020-03-25 01:15:00,74.51,91.84,38.655,32.166 -2020-03-25 01:30:00,78.1,91.316,38.655,32.166 -2020-03-25 01:45:00,84.0,91.244,38.655,32.166 -2020-03-25 02:00:00,80.41,92.943,36.912,32.166 -2020-03-25 02:15:00,80.95,93.19200000000001,36.912,32.166 -2020-03-25 02:30:00,75.56,94.69,36.912,32.166 -2020-03-25 02:45:00,79.65,95.89399999999999,36.912,32.166 -2020-03-25 03:00:00,81.67,98.792,36.98,32.166 -2020-03-25 03:15:00,81.92,100.49799999999999,36.98,32.166 -2020-03-25 03:30:00,82.53,101.52600000000001,36.98,32.166 -2020-03-25 03:45:00,81.28,102.40899999999999,36.98,32.166 -2020-03-25 04:00:00,76.87,115.345,38.052,32.166 -2020-03-25 04:15:00,82.91,128.107,38.052,32.166 -2020-03-25 04:30:00,87.12,129.356,38.052,32.166 -2020-03-25 04:45:00,89.8,131.01,38.052,32.166 -2020-03-25 05:00:00,84.78,164.93,42.455,32.166 -2020-03-25 05:15:00,86.31,196.429,42.455,32.166 -2020-03-25 05:30:00,91.91,188.94799999999998,42.455,32.166 -2020-03-25 05:45:00,94.23,179.926,42.455,32.166 -2020-03-25 06:00:00,103.12,178.65200000000002,57.986000000000004,32.166 -2020-03-25 06:15:00,110.12,184.49099999999999,57.986000000000004,32.166 -2020-03-25 06:30:00,113.23,184.548,57.986000000000004,32.166 -2020-03-25 06:45:00,114.61,186.25900000000001,57.986000000000004,32.166 -2020-03-25 07:00:00,121.68,189.222,71.868,32.166 -2020-03-25 07:15:00,122.82,190.99200000000002,71.868,32.166 -2020-03-25 07:30:00,123.06,190.141,71.868,32.166 -2020-03-25 07:45:00,125.56,187.507,71.868,32.166 -2020-03-25 08:00:00,131.42,185.979,62.225,32.166 -2020-03-25 08:15:00,131.94,183.877,62.225,32.166 -2020-03-25 08:30:00,129.5,178.877,62.225,32.166 -2020-03-25 08:45:00,130.38,175.15099999999998,62.225,32.166 -2020-03-25 09:00:00,128.7,168.872,58.802,32.166 -2020-03-25 09:15:00,130.92,165.947,58.802,32.166 -2020-03-25 09:30:00,130.3,166.12400000000002,58.802,32.166 -2020-03-25 09:45:00,129.49,164.265,58.802,32.166 -2020-03-25 10:00:00,129.92,161.23,54.122,32.166 -2020-03-25 10:15:00,129.34,159.642,54.122,32.166 -2020-03-25 10:30:00,131.48,157.39600000000002,54.122,32.166 -2020-03-25 10:45:00,131.23,156.995,54.122,32.166 -2020-03-25 11:00:00,133.57,152.376,54.368,32.166 -2020-03-25 11:15:00,133.01,152.469,54.368,32.166 -2020-03-25 11:30:00,135.91,152.905,54.368,32.166 -2020-03-25 11:45:00,134.24,153.866,54.368,32.166 -2020-03-25 12:00:00,134.65,149.411,52.74,32.166 -2020-03-25 12:15:00,134.3,149.766,52.74,32.166 -2020-03-25 12:30:00,131.7,149.085,52.74,32.166 -2020-03-25 12:45:00,131.3,149.868,52.74,32.166 -2020-03-25 13:00:00,128.24,150.028,52.544,32.166 -2020-03-25 13:15:00,135.9,148.285,52.544,32.166 -2020-03-25 13:30:00,134.63,146.457,52.544,32.166 -2020-03-25 13:45:00,130.07,145.619,52.544,32.166 -2020-03-25 14:00:00,125.5,148.08700000000002,53.602,32.166 -2020-03-25 14:15:00,124.21,146.62,53.602,32.166 -2020-03-25 14:30:00,121.48,146.262,53.602,32.166 -2020-03-25 14:45:00,124.82,147.278,53.602,32.166 -2020-03-25 15:00:00,128.87,148.209,55.59,32.166 -2020-03-25 15:15:00,132.49,146.649,55.59,32.166 -2020-03-25 15:30:00,130.48,145.423,55.59,32.166 -2020-03-25 15:45:00,125.19,144.566,55.59,32.166 -2020-03-25 16:00:00,124.83,148.662,57.586999999999996,32.166 -2020-03-25 16:15:00,120.76,150.645,57.586999999999996,32.166 -2020-03-25 16:30:00,126.07,151.116,57.586999999999996,32.166 -2020-03-25 16:45:00,129.45,150.047,57.586999999999996,32.166 -2020-03-25 17:00:00,129.43,152.254,62.111999999999995,32.166 -2020-03-25 17:15:00,125.36,154.717,62.111999999999995,32.166 -2020-03-25 17:30:00,128.18,157.368,62.111999999999995,32.166 -2020-03-25 17:45:00,127.2,158.043,62.111999999999995,32.166 -2020-03-25 18:00:00,131.15,161.856,64.605,32.166 -2020-03-25 18:15:00,124.35,163.05700000000002,64.605,32.166 -2020-03-25 18:30:00,128.29,161.352,64.605,32.166 -2020-03-25 18:45:00,127.92,165.417,64.605,32.166 -2020-03-25 19:00:00,132.44,163.43200000000002,65.55199999999999,32.166 -2020-03-25 19:15:00,123.83,161.515,65.55199999999999,32.166 -2020-03-25 19:30:00,129.2,161.12,65.55199999999999,32.166 -2020-03-25 19:45:00,131.36,159.905,65.55199999999999,32.166 -2020-03-25 20:00:00,129.62,153.862,66.778,32.166 -2020-03-25 20:15:00,119.8,149.78799999999998,66.778,32.166 -2020-03-25 20:30:00,115.17,148.091,66.778,32.166 -2020-03-25 20:45:00,115.5,146.44899999999998,66.778,32.166 -2020-03-25 21:00:00,109.54,141.285,56.103,32.166 -2020-03-25 21:15:00,115.91,138.856,56.103,32.166 -2020-03-25 21:30:00,110.45,137.822,56.103,32.166 -2020-03-25 21:45:00,111.02,137.282,56.103,32.166 -2020-03-25 22:00:00,101.35,130.30200000000002,51.371,32.166 -2020-03-25 22:15:00,99.56,127.07799999999999,51.371,32.166 -2020-03-25 22:30:00,100.15,112.553,51.371,32.166 -2020-03-25 22:45:00,100.47,105.279,51.371,32.166 -2020-03-25 23:00:00,91.64,98.023,42.798,32.166 -2020-03-25 23:15:00,90.67,96.74799999999999,42.798,32.166 -2020-03-25 23:30:00,91.31,97.381,42.798,32.166 -2020-03-25 23:45:00,89.57,98.04299999999999,42.798,32.166 -2020-03-26 00:00:00,81.94,93.36200000000001,39.069,32.166 -2020-03-26 00:15:00,81.2,92.749,39.069,32.166 -2020-03-26 00:30:00,84.64,91.374,39.069,32.166 -2020-03-26 00:45:00,84.28,90.554,39.069,32.166 -2020-03-26 01:00:00,81.91,91.542,37.043,32.166 -2020-03-26 01:15:00,73.61,91.398,37.043,32.166 -2020-03-26 01:30:00,80.41,90.853,37.043,32.166 -2020-03-26 01:45:00,81.37,90.79,37.043,32.166 -2020-03-26 02:00:00,77.06,92.475,34.625,32.166 -2020-03-26 02:15:00,76.31,92.712,34.625,32.166 -2020-03-26 02:30:00,71.77,94.23,34.625,32.166 -2020-03-26 02:45:00,75.66,95.43700000000001,34.625,32.166 -2020-03-26 03:00:00,77.66,98.35,33.812,32.166 -2020-03-26 03:15:00,81.48,100.03200000000001,33.812,32.166 -2020-03-26 03:30:00,74.62,101.055,33.812,32.166 -2020-03-26 03:45:00,78.13,101.95299999999999,33.812,32.166 -2020-03-26 04:00:00,75.81,114.887,35.236999999999995,32.166 -2020-03-26 04:15:00,75.77,127.63,35.236999999999995,32.166 -2020-03-26 04:30:00,74.86,128.892,35.236999999999995,32.166 -2020-03-26 04:45:00,78.41,130.533,35.236999999999995,32.166 -2020-03-26 05:00:00,84.12,164.412,40.375,32.166 -2020-03-26 05:15:00,86.05,195.898,40.375,32.166 -2020-03-26 05:30:00,87.24,188.39700000000002,40.375,32.166 -2020-03-26 05:45:00,92.96,179.391,40.375,32.166 -2020-03-26 06:00:00,98.47,178.128,52.316,32.166 -2020-03-26 06:15:00,106.48,183.963,52.316,32.166 -2020-03-26 06:30:00,108.98,183.97799999999998,52.316,32.166 -2020-03-26 06:45:00,110.31,185.66400000000002,52.316,32.166 -2020-03-26 07:00:00,119.63,188.642,64.115,32.166 -2020-03-26 07:15:00,121.23,190.38400000000001,64.115,32.166 -2020-03-26 07:30:00,122.47,189.49099999999999,64.115,32.166 -2020-03-26 07:45:00,125.54,186.829,64.115,32.166 -2020-03-26 08:00:00,126.35,185.27700000000002,55.033,32.166 -2020-03-26 08:15:00,127.67,183.18099999999998,55.033,32.166 -2020-03-26 08:30:00,128.36,178.132,55.033,32.166 -2020-03-26 08:45:00,129.96,174.43099999999998,55.033,32.166 -2020-03-26 09:00:00,128.86,168.16400000000002,49.411,32.166 -2020-03-26 09:15:00,126.99,165.24200000000002,49.411,32.166 -2020-03-26 09:30:00,128.41,165.438,49.411,32.166 -2020-03-26 09:45:00,128.5,163.6,49.411,32.166 -2020-03-26 10:00:00,125.96,160.575,45.82899999999999,32.166 -2020-03-26 10:15:00,126.19,159.036,45.82899999999999,32.166 -2020-03-26 10:30:00,122.45,156.815,45.82899999999999,32.166 -2020-03-26 10:45:00,122.6,156.434,45.82899999999999,32.166 -2020-03-26 11:00:00,124.89,151.809,44.333,32.166 -2020-03-26 11:15:00,127.98,151.92600000000002,44.333,32.166 -2020-03-26 11:30:00,126.17,152.36700000000002,44.333,32.166 -2020-03-26 11:45:00,127.4,153.346,44.333,32.166 -2020-03-26 12:00:00,122.97,148.91299999999998,42.95,32.166 -2020-03-26 12:15:00,124.07,149.278,42.95,32.166 -2020-03-26 12:30:00,129.47,148.55700000000002,42.95,32.166 -2020-03-26 12:45:00,132.19,149.338,42.95,32.166 -2020-03-26 13:00:00,126.6,149.54399999999998,42.489,32.166 -2020-03-26 13:15:00,121.2,147.784,42.489,32.166 -2020-03-26 13:30:00,122.77,145.94799999999998,42.489,32.166 -2020-03-26 13:45:00,122.03,145.113,42.489,32.166 -2020-03-26 14:00:00,118.12,147.65200000000002,43.448,32.166 -2020-03-26 14:15:00,120.48,146.16,43.448,32.166 -2020-03-26 14:30:00,124.87,145.765,43.448,32.166 -2020-03-26 14:45:00,124.56,146.787,43.448,32.166 -2020-03-26 15:00:00,122.41,147.733,45.994,32.166 -2020-03-26 15:15:00,117.85,146.145,45.994,32.166 -2020-03-26 15:30:00,118.99,144.86700000000002,45.994,32.166 -2020-03-26 15:45:00,120.98,143.993,45.994,32.166 -2020-03-26 16:00:00,116.33,148.107,48.167,32.166 -2020-03-26 16:15:00,113.12,150.065,48.167,32.166 -2020-03-26 16:30:00,110.23,150.535,48.167,32.166 -2020-03-26 16:45:00,103.8,149.41299999999998,48.167,32.166 -2020-03-26 17:00:00,103.8,151.651,52.637,32.166 -2020-03-26 17:15:00,109.33,154.106,52.637,32.166 -2020-03-26 17:30:00,115.38,156.77100000000002,52.637,32.166 -2020-03-26 17:45:00,118.72,157.446,52.637,32.166 -2020-03-26 18:00:00,121.33,161.264,55.739,32.166 -2020-03-26 18:15:00,118.59,162.52200000000002,55.739,32.166 -2020-03-26 18:30:00,113.07,160.809,55.739,32.166 -2020-03-26 18:45:00,113.68,164.889,55.739,32.166 -2020-03-26 19:00:00,113.24,162.876,56.36600000000001,32.166 -2020-03-26 19:15:00,115.41,160.976,56.36600000000001,32.166 -2020-03-26 19:30:00,121.08,160.605,56.36600000000001,32.166 -2020-03-26 19:45:00,117.92,159.431,56.36600000000001,32.166 -2020-03-26 20:00:00,115.8,153.36,56.338,32.166 -2020-03-26 20:15:00,112.12,149.299,56.338,32.166 -2020-03-26 20:30:00,109.36,147.637,56.338,32.166 -2020-03-26 20:45:00,108.08,146.005,56.338,32.166 -2020-03-26 21:00:00,100.24,140.836,49.894,32.166 -2020-03-26 21:15:00,98.69,138.41,49.894,32.166 -2020-03-26 21:30:00,92.64,137.374,49.894,32.166 -2020-03-26 21:45:00,91.85,136.857,49.894,32.166 -2020-03-26 22:00:00,85.8,129.87,46.687,32.166 -2020-03-26 22:15:00,85.45,126.67299999999999,46.687,32.166 -2020-03-26 22:30:00,78.83,112.09899999999999,46.687,32.166 -2020-03-26 22:45:00,80.03,104.823,46.687,32.166 -2020-03-26 23:00:00,73.44,97.556,39.211,32.166 -2020-03-26 23:15:00,74.45,96.307,39.211,32.166 -2020-03-26 23:30:00,71.79,96.94200000000001,39.211,32.166 -2020-03-26 23:45:00,69.13,97.62700000000001,39.211,32.166 -2020-03-27 00:00:00,81.29,91.55799999999999,36.616,32.166 -2020-03-27 00:15:00,83.4,91.184,36.616,32.166 -2020-03-27 00:30:00,84.17,89.77600000000001,36.616,32.166 -2020-03-27 00:45:00,83.96,89.18,36.616,32.166 -2020-03-27 01:00:00,77.52,89.76700000000001,33.799,32.166 -2020-03-27 01:15:00,76.7,90.131,33.799,32.166 -2020-03-27 01:30:00,76.43,89.62,33.799,32.166 -2020-03-27 01:45:00,77.15,89.56700000000001,33.799,32.166 -2020-03-27 02:00:00,76.99,91.602,32.968,32.166 -2020-03-27 02:15:00,77.28,91.721,32.968,32.166 -2020-03-27 02:30:00,77.43,93.932,32.968,32.166 -2020-03-27 02:45:00,79.33,94.956,32.968,32.166 -2020-03-27 03:00:00,79.5,97.36200000000001,33.533,32.166 -2020-03-27 03:15:00,77.66,99.35600000000001,33.533,32.166 -2020-03-27 03:30:00,81.27,100.28299999999999,33.533,32.166 -2020-03-27 03:45:00,79.74,101.734,33.533,32.166 -2020-03-27 04:00:00,79.68,114.887,36.102,32.166 -2020-03-27 04:15:00,79.42,126.90899999999999,36.102,32.166 -2020-03-27 04:30:00,77.92,128.674,36.102,32.166 -2020-03-27 04:45:00,80.87,129.208,36.102,32.166 -2020-03-27 05:00:00,85.69,161.907,42.423,32.166 -2020-03-27 05:15:00,87.55,194.855,42.423,32.166 -2020-03-27 05:30:00,89.94,188.229,42.423,32.166 -2020-03-27 05:45:00,94.07,179.046,42.423,32.166 -2020-03-27 06:00:00,101.92,178.21599999999998,55.38,32.166 -2020-03-27 06:15:00,105.46,182.955,55.38,32.166 -2020-03-27 06:30:00,108.23,182.237,55.38,32.166 -2020-03-27 06:45:00,111.45,185.12599999999998,55.38,32.166 -2020-03-27 07:00:00,118.3,187.672,65.929,32.166 -2020-03-27 07:15:00,118.8,190.475,65.929,32.166 -2020-03-27 07:30:00,122.1,188.794,65.929,32.166 -2020-03-27 07:45:00,124.3,185.33900000000003,65.929,32.166 -2020-03-27 08:00:00,127.28,183.12400000000002,57.336999999999996,32.166 -2020-03-27 08:15:00,127.22,180.92,57.336999999999996,32.166 -2020-03-27 08:30:00,127.94,176.578,57.336999999999996,32.166 -2020-03-27 08:45:00,128.1,171.59599999999998,57.336999999999996,32.166 -2020-03-27 09:00:00,127.49,165.024,54.226000000000006,32.166 -2020-03-27 09:15:00,128.67,163.12,54.226000000000006,32.166 -2020-03-27 09:30:00,129.09,162.789,54.226000000000006,32.166 -2020-03-27 09:45:00,128.83,160.995,54.226000000000006,32.166 -2020-03-27 10:00:00,127.42,156.991,51.298,32.166 -2020-03-27 10:15:00,127.88,156.01,51.298,32.166 -2020-03-27 10:30:00,126.44,153.909,51.298,32.166 -2020-03-27 10:45:00,127.39,153.159,51.298,32.166 -2020-03-27 11:00:00,126.52,148.564,50.839,32.166 -2020-03-27 11:15:00,127.61,147.666,50.839,32.166 -2020-03-27 11:30:00,125.8,149.467,50.839,32.166 -2020-03-27 11:45:00,125.03,150.244,50.839,32.166 -2020-03-27 12:00:00,122.0,146.861,47.976000000000006,32.166 -2020-03-27 12:15:00,122.03,145.314,47.976000000000006,32.166 -2020-03-27 12:30:00,121.02,144.716,47.976000000000006,32.166 -2020-03-27 12:45:00,120.19,145.718,47.976000000000006,32.166 -2020-03-27 13:00:00,119.24,146.917,46.299,32.166 -2020-03-27 13:15:00,120.7,145.874,46.299,32.166 -2020-03-27 13:30:00,117.46,144.253,46.299,32.166 -2020-03-27 13:45:00,119.26,143.44799999999998,46.299,32.166 -2020-03-27 14:00:00,117.14,144.891,44.971000000000004,32.166 -2020-03-27 14:15:00,113.78,143.339,44.971000000000004,32.166 -2020-03-27 14:30:00,110.02,143.72899999999998,44.971000000000004,32.166 -2020-03-27 14:45:00,113.2,144.83100000000002,44.971000000000004,32.166 -2020-03-27 15:00:00,114.23,145.365,47.48,32.166 -2020-03-27 15:15:00,112.17,143.32,47.48,32.166 -2020-03-27 15:30:00,106.47,140.567,47.48,32.166 -2020-03-27 15:45:00,107.87,139.994,47.48,32.166 -2020-03-27 16:00:00,110.03,142.95,50.648,32.166 -2020-03-27 16:15:00,110.03,145.256,50.648,32.166 -2020-03-27 16:30:00,112.39,145.755,50.648,32.166 -2020-03-27 16:45:00,112.32,144.27,50.648,32.166 -2020-03-27 17:00:00,115.94,147.203,56.251000000000005,32.166 -2020-03-27 17:15:00,116.05,149.262,56.251000000000005,32.166 -2020-03-27 17:30:00,117.7,151.722,56.251000000000005,32.166 -2020-03-27 17:45:00,118.13,152.159,56.251000000000005,32.166 -2020-03-27 18:00:00,121.7,156.57299999999998,58.982,32.166 -2020-03-27 18:15:00,122.86,157.303,58.982,32.166 -2020-03-27 18:30:00,122.89,155.875,58.982,32.166 -2020-03-27 18:45:00,124.43,160.083,58.982,32.166 -2020-03-27 19:00:00,125.7,159.037,57.293,32.166 -2020-03-27 19:15:00,121.2,158.434,57.293,32.166 -2020-03-27 19:30:00,121.4,157.769,57.293,32.166 -2020-03-27 19:45:00,119.95,155.972,57.293,32.166 -2020-03-27 20:00:00,116.48,149.879,59.433,32.166 -2020-03-27 20:15:00,114.79,146.07,59.433,32.166 -2020-03-27 20:30:00,113.96,144.265,59.433,32.166 -2020-03-27 20:45:00,113.11,142.858,59.433,32.166 -2020-03-27 21:00:00,108.02,138.48,52.153999999999996,32.166 -2020-03-27 21:15:00,105.58,136.90200000000002,52.153999999999996,32.166 -2020-03-27 21:30:00,99.98,135.85399999999998,52.153999999999996,32.166 -2020-03-27 21:45:00,100.41,135.86,52.153999999999996,32.166 -2020-03-27 22:00:00,93.64,129.616,47.125,32.166 -2020-03-27 22:15:00,92.04,126.265,47.125,32.166 -2020-03-27 22:30:00,91.62,118.181,47.125,32.166 -2020-03-27 22:45:00,93.54,114.007,47.125,32.166 -2020-03-27 23:00:00,88.63,106.86399999999999,41.236000000000004,32.166 -2020-03-27 23:15:00,85.58,103.60600000000001,41.236000000000004,32.166 -2020-03-27 23:30:00,83.35,102.531,41.236000000000004,32.166 -2020-03-27 23:45:00,81.51,102.666,41.236000000000004,32.166 -2020-03-28 00:00:00,57.71,89.321,36.484,31.988000000000003 -2020-03-28 00:15:00,54.17,85.42,36.484,31.988000000000003 -2020-03-28 00:30:00,56.34,84.88799999999999,36.484,31.988000000000003 -2020-03-28 00:45:00,54.63,84.62299999999999,36.484,31.988000000000003 -2020-03-28 01:00:00,49.06,85.77,32.391999999999996,31.988000000000003 -2020-03-28 01:15:00,52.94,85.538,32.391999999999996,31.988000000000003 -2020-03-28 01:30:00,49.74,84.344,32.391999999999996,31.988000000000003 -2020-03-28 01:45:00,52.99,84.53,32.391999999999996,31.988000000000003 -2020-03-28 02:00:00,51.54,86.786,30.194000000000003,31.988000000000003 -2020-03-28 02:15:00,52.29,86.351,30.194000000000003,31.988000000000003 -2020-03-28 02:30:00,52.34,87.463,30.194000000000003,31.988000000000003 -2020-03-28 02:45:00,50.12,88.823,30.194000000000003,31.988000000000003 -2020-03-28 03:00:00,50.63,91.3,29.677,31.988000000000003 -2020-03-28 03:15:00,47.78,92.103,29.677,31.988000000000003 -2020-03-28 03:30:00,48.43,91.905,29.677,31.988000000000003 -2020-03-28 03:45:00,51.9,93.94200000000001,29.677,31.988000000000003 -2020-03-28 04:00:00,49.36,103.32,29.616,31.988000000000003 -2020-03-28 04:15:00,52.2,113.07700000000001,29.616,31.988000000000003 -2020-03-28 04:30:00,53.04,112.63799999999999,29.616,31.988000000000003 -2020-03-28 04:45:00,51.37,112.87,29.616,31.988000000000003 -2020-03-28 05:00:00,55.2,130.638,29.625,31.988000000000003 -2020-03-28 05:15:00,53.94,145.415,29.625,31.988000000000003 -2020-03-28 05:30:00,57.62,139.55100000000002,29.625,31.988000000000003 -2020-03-28 05:45:00,59.67,136.032,29.625,31.988000000000003 -2020-03-28 06:00:00,60.42,153.085,30.551,31.988000000000003 -2020-03-28 06:15:00,63.03,172.97099999999998,30.551,31.988000000000003 -2020-03-28 06:30:00,60.51,167.139,30.551,31.988000000000003 -2020-03-28 06:45:00,61.22,162.032,30.551,31.988000000000003 -2020-03-28 07:00:00,66.83,160.97,34.865,31.988000000000003 -2020-03-28 07:15:00,68.4,162.357,34.865,31.988000000000003 -2020-03-28 07:30:00,67.37,163.225,34.865,31.988000000000003 -2020-03-28 07:45:00,72.4,163.143,34.865,31.988000000000003 -2020-03-28 08:00:00,72.28,164.06799999999998,41.456,31.988000000000003 -2020-03-28 08:15:00,77.29,164.692,41.456,31.988000000000003 -2020-03-28 08:30:00,80.4,161.583,41.456,31.988000000000003 -2020-03-28 08:45:00,80.83,159.421,41.456,31.988000000000003 -2020-03-28 09:00:00,86.02,155.105,43.001999999999995,31.988000000000003 -2020-03-28 09:15:00,86.55,153.95,43.001999999999995,31.988000000000003 -2020-03-28 09:30:00,87.98,154.50799999999998,43.001999999999995,31.988000000000003 -2020-03-28 09:45:00,89.07,152.734,43.001999999999995,31.988000000000003 -2020-03-28 10:00:00,88.02,149.053,42.047,31.988000000000003 -2020-03-28 10:15:00,91.44,148.35399999999998,42.047,31.988000000000003 -2020-03-28 10:30:00,89.49,146.31799999999998,42.047,31.988000000000003 -2020-03-28 10:45:00,95.01,146.55200000000002,42.047,31.988000000000003 -2020-03-28 11:00:00,94.88,142.039,39.894,31.988000000000003 -2020-03-28 11:15:00,97.49,140.834,39.894,31.988000000000003 -2020-03-28 11:30:00,97.87,141.798,39.894,31.988000000000003 -2020-03-28 11:45:00,97.43,141.989,39.894,31.988000000000003 -2020-03-28 12:00:00,92.61,137.923,38.122,31.988000000000003 -2020-03-28 12:15:00,94.95,137.143,38.122,31.988000000000003 -2020-03-28 12:30:00,90.34,136.732,38.122,31.988000000000003 -2020-03-28 12:45:00,86.38,137.285,38.122,31.988000000000003 -2020-03-28 13:00:00,82.75,137.92700000000002,34.645,31.988000000000003 -2020-03-28 13:15:00,84.34,135.013,34.645,31.988000000000003 -2020-03-28 13:30:00,84.37,133.059,34.645,31.988000000000003 -2020-03-28 13:45:00,84.04,132.303,34.645,31.988000000000003 -2020-03-28 14:00:00,79.67,134.838,33.739000000000004,31.988000000000003 -2020-03-28 14:15:00,81.26,132.49200000000002,33.739000000000004,31.988000000000003 -2020-03-28 14:30:00,79.9,131.214,33.739000000000004,31.988000000000003 -2020-03-28 14:45:00,79.54,132.628,33.739000000000004,31.988000000000003 -2020-03-28 15:00:00,78.41,133.822,35.908,31.988000000000003 -2020-03-28 15:15:00,80.8,132.606,35.908,31.988000000000003 -2020-03-28 15:30:00,80.27,131.143,35.908,31.988000000000003 -2020-03-28 15:45:00,77.77,130.329,35.908,31.988000000000003 -2020-03-28 16:00:00,80.98,133.009,39.249,31.988000000000003 -2020-03-28 16:15:00,80.76,135.78799999999998,39.249,31.988000000000003 -2020-03-28 16:30:00,81.37,136.305,39.249,31.988000000000003 -2020-03-28 16:45:00,79.09,135.488,39.249,31.988000000000003 -2020-03-28 17:00:00,83.53,137.756,46.045,31.988000000000003 -2020-03-28 17:15:00,82.0,140.559,46.045,31.988000000000003 -2020-03-28 17:30:00,86.27,142.915,46.045,31.988000000000003 -2020-03-28 17:45:00,87.5,143.157,46.045,31.988000000000003 -2020-03-28 18:00:00,89.89,147.595,48.238,31.988000000000003 -2020-03-28 18:15:00,89.13,150.316,48.238,31.988000000000003 -2020-03-28 18:30:00,88.57,150.346,48.238,31.988000000000003 -2020-03-28 18:45:00,85.87,150.866,48.238,31.988000000000003 -2020-03-28 19:00:00,91.17,150.105,46.785,31.988000000000003 -2020-03-28 19:15:00,86.77,148.829,46.785,31.988000000000003 -2020-03-28 19:30:00,89.79,149.017,46.785,31.988000000000003 -2020-03-28 19:45:00,91.35,147.619,46.785,31.988000000000003 -2020-03-28 20:00:00,86.33,143.537,39.830999999999996,31.988000000000003 -2020-03-28 20:15:00,86.08,141.27,39.830999999999996,31.988000000000003 -2020-03-28 20:30:00,84.34,138.96200000000002,39.830999999999996,31.988000000000003 -2020-03-28 20:45:00,82.32,137.77700000000002,39.830999999999996,31.988000000000003 -2020-03-28 21:00:00,78.48,134.78799999999998,34.063,31.988000000000003 -2020-03-28 21:15:00,78.09,133.465,34.063,31.988000000000003 -2020-03-28 21:30:00,73.54,133.45600000000002,34.063,31.988000000000003 -2020-03-28 21:45:00,76.09,133.001,34.063,31.988000000000003 -2020-03-28 22:00:00,73.18,127.82700000000001,34.455999999999996,31.988000000000003 -2020-03-28 22:15:00,71.44,126.572,34.455999999999996,31.988000000000003 -2020-03-28 22:30:00,69.55,123.32799999999999,34.455999999999996,31.988000000000003 -2020-03-28 22:45:00,69.05,120.762,34.455999999999996,31.988000000000003 -2020-03-28 23:00:00,66.49,115.384,27.840999999999998,31.988000000000003 -2020-03-28 23:15:00,65.31,110.95700000000001,27.840999999999998,31.988000000000003 -2020-03-28 23:30:00,60.24,109.191,27.840999999999998,31.988000000000003 -2020-03-28 23:45:00,61.54,107.5,27.840999999999998,31.988000000000003 -2020-03-29 00:00:00,63.42,89.681,20.007,31.988000000000003 -2020-03-29 00:15:00,63.84,85.18,20.007,31.988000000000003 -2020-03-29 00:30:00,63.41,84.29700000000001,20.007,31.988000000000003 -2020-03-29 00:45:00,63.81,84.542,20.007,31.988000000000003 -2020-03-29 01:00:00,61.41,85.62700000000001,17.378,31.988000000000003 -2020-03-29 01:15:00,61.91,86.14200000000001,17.378,31.988000000000003 -2020-03-29 01:30:00,61.2,85.287,17.378,31.988000000000003 -2020-03-29 01:45:00,61.64,85.115,17.378,31.988000000000003 -2020-03-29 03:00:00,60.55,92.348,15.427999999999999,31.988000000000003 -2020-03-29 03:15:00,61.96,92.81200000000001,15.427999999999999,31.988000000000003 -2020-03-29 03:30:00,61.93,93.43799999999999,15.427999999999999,31.988000000000003 -2020-03-29 03:45:00,61.8,95.17,15.427999999999999,31.988000000000003 -2020-03-29 04:00:00,62.52,104.337,16.663,31.988000000000003 -2020-03-29 04:15:00,62.17,113.15899999999999,16.663,31.988000000000003 -2020-03-29 04:30:00,61.27,113.23,16.663,31.988000000000003 -2020-03-29 04:45:00,61.62,113.501,16.663,31.988000000000003 -2020-03-29 05:00:00,59.26,128.622,17.271,31.988000000000003 -2020-03-29 05:15:00,61.48,141.29399999999998,17.271,31.988000000000003 -2020-03-29 05:30:00,61.34,135.15,17.271,31.988000000000003 -2020-03-29 05:45:00,61.02,131.74200000000002,17.271,31.988000000000003 -2020-03-29 06:00:00,61.85,147.918,17.612000000000002,31.988000000000003 -2020-03-29 06:15:00,63.29,166.752,17.612000000000002,31.988000000000003 -2020-03-29 06:30:00,64.04,159.804,17.612000000000002,31.988000000000003 -2020-03-29 06:45:00,65.71,153.536,17.612000000000002,31.988000000000003 -2020-03-29 07:00:00,65.1,154.444,20.88,31.988000000000003 -2020-03-29 07:15:00,67.09,154.61700000000002,20.88,31.988000000000003 -2020-03-29 07:30:00,68.29,154.899,20.88,31.988000000000003 -2020-03-29 07:45:00,66.11,154.187,20.88,31.988000000000003 -2020-03-29 08:00:00,70.13,156.718,25.861,31.988000000000003 -2020-03-29 08:15:00,69.2,157.636,25.861,31.988000000000003 -2020-03-29 08:30:00,68.25,156.053,25.861,31.988000000000003 -2020-03-29 08:45:00,67.57,155.486,25.861,31.988000000000003 -2020-03-29 09:00:00,66.99,150.813,27.921999999999997,31.988000000000003 -2020-03-29 09:15:00,65.9,149.954,27.921999999999997,31.988000000000003 -2020-03-29 09:30:00,65.28,150.535,27.921999999999997,31.988000000000003 -2020-03-29 09:45:00,65.68,148.985,27.921999999999997,31.988000000000003 -2020-03-29 10:00:00,66.04,147.47799999999998,29.048000000000002,31.988000000000003 -2020-03-29 10:15:00,67.95,147.296,29.048000000000002,31.988000000000003 -2020-03-29 10:30:00,68.96,145.834,29.048000000000002,31.988000000000003 -2020-03-29 10:45:00,69.67,144.84799999999998,29.048000000000002,31.988000000000003 -2020-03-29 11:00:00,66.38,140.961,32.02,31.988000000000003 -2020-03-29 11:15:00,66.11,139.761,32.02,31.988000000000003 -2020-03-29 11:30:00,60.65,140.167,32.02,31.988000000000003 -2020-03-29 11:45:00,61.22,140.942,32.02,31.988000000000003 -2020-03-29 12:00:00,57.94,136.707,28.55,31.988000000000003 -2020-03-29 12:15:00,57.98,137.329,28.55,31.988000000000003 -2020-03-29 12:30:00,57.03,135.741,28.55,31.988000000000003 -2020-03-29 12:45:00,58.14,135.325,28.55,31.988000000000003 -2020-03-29 13:00:00,56.4,135.33,25.601999999999997,31.988000000000003 -2020-03-29 13:15:00,53.99,134.73,25.601999999999997,31.988000000000003 -2020-03-29 13:30:00,54.04,132.297,25.601999999999997,31.988000000000003 -2020-03-29 13:45:00,55.14,131.30200000000002,25.601999999999997,31.988000000000003 -2020-03-29 14:00:00,58.23,134.429,23.916999999999998,31.988000000000003 -2020-03-29 14:15:00,57.08,133.165,23.916999999999998,31.988000000000003 -2020-03-29 14:30:00,54.64,132.536,23.916999999999998,31.988000000000003 -2020-03-29 14:45:00,59.63,133.328,23.916999999999998,31.988000000000003 -2020-03-29 15:00:00,60.63,133.313,24.064,31.988000000000003 -2020-03-29 15:15:00,61.57,132.48,24.064,31.988000000000003 -2020-03-29 15:30:00,63.18,131.404,24.064,31.988000000000003 -2020-03-29 15:45:00,66.09,131.221,24.064,31.988000000000003 -2020-03-29 16:00:00,70.77,134.955,28.189,31.988000000000003 -2020-03-29 16:15:00,72.49,137.029,28.189,31.988000000000003 -2020-03-29 16:30:00,74.01,138.034,28.189,31.988000000000003 -2020-03-29 16:45:00,75.04,137.291,28.189,31.988000000000003 -2020-03-29 17:00:00,82.83,139.64700000000002,37.576,31.988000000000003 -2020-03-29 17:15:00,84.34,142.606,37.576,31.988000000000003 -2020-03-29 17:30:00,85.73,145.435,37.576,31.988000000000003 -2020-03-29 17:45:00,88.1,147.631,37.576,31.988000000000003 -2020-03-29 18:00:00,92.01,151.79,42.669,31.988000000000003 -2020-03-29 18:15:00,90.43,155.52200000000002,42.669,31.988000000000003 -2020-03-29 18:30:00,93.35,153.791,42.669,31.988000000000003 -2020-03-29 18:45:00,100.38,155.852,42.669,31.988000000000003 -2020-03-29 19:00:00,104.31,155.41299999999998,43.538999999999994,31.988000000000003 -2020-03-29 19:15:00,103.88,154.311,43.538999999999994,31.988000000000003 -2020-03-29 19:30:00,94.49,154.321,43.538999999999994,31.988000000000003 -2020-03-29 19:45:00,95.0,153.996,43.538999999999994,31.988000000000003 -2020-03-29 20:00:00,89.36,149.881,37.330999999999996,31.988000000000003 -2020-03-29 20:15:00,94.08,148.375,37.330999999999996,31.988000000000003 -2020-03-29 20:30:00,95.79,147.328,37.330999999999996,31.988000000000003 -2020-03-29 20:45:00,98.77,144.69799999999998,37.330999999999996,31.988000000000003 -2020-03-29 21:00:00,92.39,139.58100000000002,33.856,31.988000000000003 -2020-03-29 21:15:00,90.85,137.675,33.856,31.988000000000003 -2020-03-29 21:30:00,88.72,137.703,33.856,31.988000000000003 -2020-03-29 21:45:00,86.64,137.485,33.856,31.988000000000003 -2020-03-29 22:00:00,86.5,131.963,34.711999999999996,31.988000000000003 -2020-03-29 22:15:00,89.79,129.631,34.711999999999996,31.988000000000003 -2020-03-29 22:30:00,88.27,123.661,34.711999999999996,31.988000000000003 -2020-03-29 22:45:00,85.25,120.038,34.711999999999996,31.988000000000003 -2020-03-29 23:00:00,76.97,112.32799999999999,29.698,31.988000000000003 -2020-03-29 23:15:00,78.47,109.78299999999999,29.698,31.988000000000003 -2020-03-29 23:30:00,76.39,108.507,29.698,31.988000000000003 -2020-03-29 23:45:00,76.76,107.598,29.698,31.988000000000003 -2020-03-30 00:00:00,74.91,93.007,29.983,32.166 -2020-03-30 00:15:00,74.62,91.073,29.983,32.166 -2020-03-30 00:30:00,74.93,90.152,29.983,32.166 -2020-03-30 00:45:00,74.48,89.861,29.983,32.166 -2020-03-30 01:00:00,72.07,91.03,29.122,32.166 -2020-03-30 01:15:00,73.81,91.124,29.122,32.166 -2020-03-30 01:30:00,74.52,90.40700000000001,29.122,32.166 -2020-03-30 01:45:00,73.97,90.3,29.122,32.166 -2020-03-30 02:00:00,73.49,92.089,28.676,32.166 -2020-03-30 02:15:00,75.66,91.99600000000001,28.676,32.166 -2020-03-30 02:30:00,77.39,94.175,28.676,32.166 -2020-03-30 02:45:00,76.44,95.27600000000001,28.676,32.166 -2020-03-30 03:00:00,75.13,99.355,26.552,32.166 -2020-03-30 03:15:00,76.32,101.29,26.552,32.166 -2020-03-30 03:30:00,77.54,101.928,26.552,32.166 -2020-03-30 03:45:00,79.94,103.101,26.552,32.166 -2020-03-30 04:00:00,82.14,116.584,27.44,32.166 -2020-03-30 04:15:00,84.58,129.511,27.44,32.166 -2020-03-30 04:30:00,89.34,131.10299999999998,27.44,32.166 -2020-03-30 04:45:00,93.84,131.608,27.44,32.166 -2020-03-30 05:00:00,101.97,160.982,36.825,32.166 -2020-03-30 05:15:00,106.72,192.364,36.825,32.166 -2020-03-30 05:30:00,107.82,185.893,36.825,32.166 -2020-03-30 05:45:00,108.72,177.19099999999997,36.825,32.166 -2020-03-30 06:00:00,116.23,176.537,56.589,32.166 -2020-03-30 06:15:00,116.59,181.03900000000002,56.589,32.166 -2020-03-30 06:30:00,119.93,181.482,56.589,32.166 -2020-03-30 06:45:00,121.38,183.65099999999998,56.589,32.166 -2020-03-30 07:00:00,124.55,186.778,67.49,32.166 -2020-03-30 07:15:00,124.25,188.61,67.49,32.166 -2020-03-30 07:30:00,123.4,187.977,67.49,32.166 -2020-03-30 07:45:00,123.32,185.34099999999998,67.49,32.166 -2020-03-30 08:00:00,122.13,183.62599999999998,60.028,32.166 -2020-03-30 08:15:00,121.81,182.493,60.028,32.166 -2020-03-30 08:30:00,123.07,177.347,60.028,32.166 -2020-03-30 08:45:00,122.24,174.237,60.028,32.166 -2020-03-30 09:00:00,119.81,168.592,55.018,32.166 -2020-03-30 09:15:00,120.83,164.426,55.018,32.166 -2020-03-30 09:30:00,120.02,163.955,55.018,32.166 -2020-03-30 09:45:00,120.56,161.996,55.018,32.166 -2020-03-30 10:00:00,117.61,159.881,51.183,32.166 -2020-03-30 10:15:00,118.77,159.44,51.183,32.166 -2020-03-30 10:30:00,118.87,157.166,51.183,32.166 -2020-03-30 10:45:00,120.03,156.362,51.183,32.166 -2020-03-30 11:00:00,116.72,150.494,50.065,32.166 -2020-03-30 11:15:00,118.45,150.871,50.065,32.166 -2020-03-30 11:30:00,116.15,152.602,50.065,32.166 -2020-03-30 11:45:00,116.99,153.19799999999998,50.065,32.166 -2020-03-30 12:00:00,115.58,150.036,48.141999999999996,32.166 -2020-03-30 12:15:00,118.73,150.696,48.141999999999996,32.166 -2020-03-30 12:30:00,119.08,148.989,48.141999999999996,32.166 -2020-03-30 12:45:00,116.73,149.827,48.141999999999996,32.166 -2020-03-30 13:00:00,116.77,150.662,47.887,32.166 -2020-03-30 13:15:00,116.21,148.665,47.887,32.166 -2020-03-30 13:30:00,116.04,145.832,47.887,32.166 -2020-03-30 13:45:00,119.23,145.102,47.887,32.166 -2020-03-30 14:00:00,119.84,147.571,48.571000000000005,32.166 -2020-03-30 14:15:00,118.19,145.906,48.571000000000005,32.166 -2020-03-30 14:30:00,115.09,144.745,48.571000000000005,32.166 -2020-03-30 14:45:00,114.72,146.056,48.571000000000005,32.166 -2020-03-30 15:00:00,113.97,147.463,49.937,32.166 -2020-03-30 15:15:00,115.44,145.256,49.937,32.166 -2020-03-30 15:30:00,117.05,143.638,49.937,32.166 -2020-03-30 15:45:00,117.4,142.941,49.937,32.166 -2020-03-30 16:00:00,119.4,147.00799999999998,52.963,32.166 -2020-03-30 16:15:00,117.12,148.44799999999998,52.963,32.166 -2020-03-30 16:30:00,120.03,148.47899999999998,52.963,32.166 -2020-03-30 16:45:00,120.1,146.713,52.963,32.166 -2020-03-30 17:00:00,122.72,148.575,61.163999999999994,32.166 -2020-03-30 17:15:00,121.92,150.855,61.163999999999994,32.166 -2020-03-30 17:30:00,123.43,153.141,61.163999999999994,32.166 -2020-03-30 17:45:00,123.83,154.01,61.163999999999994,32.166 -2020-03-30 18:00:00,125.34,158.202,63.788999999999994,32.166 -2020-03-30 18:15:00,122.68,159.688,63.788999999999994,32.166 -2020-03-30 18:30:00,124.68,158.264,63.788999999999994,32.166 -2020-03-30 18:45:00,125.28,161.806,63.788999999999994,32.166 -2020-03-30 19:00:00,122.28,159.947,63.913000000000004,32.166 -2020-03-30 19:15:00,118.3,158.28799999999998,63.913000000000004,32.166 -2020-03-30 19:30:00,114.81,158.621,63.913000000000004,32.166 -2020-03-30 19:45:00,112.8,157.49200000000002,63.913000000000004,32.166 -2020-03-30 20:00:00,106.59,151.07,65.44,32.166 -2020-03-30 20:15:00,106.52,147.994,65.44,32.166 -2020-03-30 20:30:00,106.51,145.638,65.44,32.166 -2020-03-30 20:45:00,105.14,144.384,65.44,32.166 -2020-03-30 21:00:00,100.49,139.514,59.117,32.166 -2020-03-30 21:15:00,99.35,136.80100000000002,59.117,32.166 -2020-03-30 21:30:00,95.33,136.287,59.117,32.166 -2020-03-30 21:45:00,94.73,135.624,59.117,32.166 -2020-03-30 22:00:00,91.38,127.18299999999999,52.301,32.166 -2020-03-30 22:15:00,91.17,124.395,52.301,32.166 -2020-03-30 22:30:00,89.5,109.465,52.301,32.166 -2020-03-30 22:45:00,88.98,101.96,52.301,32.166 -2020-03-30 23:00:00,66.74,94.854,44.373000000000005,32.166 -2020-03-30 23:15:00,64.17,93.986,44.373000000000005,32.166 -2020-03-30 23:30:00,64.34,94.916,44.373000000000005,32.166 -2020-03-30 23:45:00,63.43,95.994,44.373000000000005,32.166 -2020-03-31 00:00:00,62.68,91.345,44.647,32.166 -2020-03-31 00:15:00,60.68,90.807,44.647,32.166 -2020-03-31 00:30:00,59.93,89.366,44.647,32.166 -2020-03-31 00:45:00,61.17,88.571,44.647,32.166 -2020-03-31 01:00:00,59.63,89.383,41.433,32.166 -2020-03-31 01:15:00,60.51,89.15,41.433,32.166 -2020-03-31 01:30:00,59.6,88.506,41.433,32.166 -2020-03-31 01:45:00,65.34,88.48,41.433,32.166 -2020-03-31 02:00:00,67.35,90.09700000000001,39.909,32.166 -2020-03-31 02:15:00,70.17,90.27799999999999,39.909,32.166 -2020-03-31 02:30:00,68.14,91.891,39.909,32.166 -2020-03-31 02:45:00,65.63,93.11,39.909,32.166 -2020-03-31 03:00:00,72.05,96.104,39.14,32.166 -2020-03-31 03:15:00,71.12,97.663,39.14,32.166 -2020-03-31 03:30:00,68.78,98.656,39.14,32.166 -2020-03-31 03:45:00,71.02,99.632,39.14,32.166 -2020-03-31 04:00:00,72.64,112.556,40.015,32.166 -2020-03-31 04:15:00,77.31,125.20100000000001,40.015,32.166 -2020-03-31 04:30:00,78.77,126.529,40.015,32.166 -2020-03-31 04:45:00,82.3,128.109,40.015,32.166 -2020-03-31 05:00:00,94.54,161.782,44.93600000000001,32.166 -2020-03-31 05:15:00,98.42,193.196,44.93600000000001,32.166 -2020-03-31 05:30:00,103.0,185.597,44.93600000000001,32.166 -2020-03-31 05:45:00,102.84,176.67700000000002,44.93600000000001,32.166 -2020-03-31 06:00:00,112.12,175.46099999999998,57.271,32.166 -2020-03-31 06:15:00,114.11,181.27599999999998,57.271,32.166 -2020-03-31 06:30:00,120.03,181.074,57.271,32.166 -2020-03-31 06:45:00,120.49,182.643,57.271,32.166 -2020-03-31 07:00:00,123.04,185.68599999999998,68.352,32.166 -2020-03-31 07:15:00,121.38,187.287,68.352,32.166 -2020-03-31 07:30:00,118.56,186.19099999999997,68.352,32.166 -2020-03-31 07:45:00,119.78,183.394,68.352,32.166 -2020-03-31 08:00:00,118.34,181.725,60.717,32.166 -2020-03-31 08:15:00,116.42,179.653,60.717,32.166 -2020-03-31 08:30:00,119.31,174.368,60.717,32.166 -2020-03-31 08:45:00,115.45,170.799,60.717,32.166 -2020-03-31 09:00:00,110.19,164.595,54.603,32.166 -2020-03-31 09:15:00,107.11,161.68,54.603,32.166 -2020-03-31 09:30:00,108.81,161.972,54.603,32.166 -2020-03-31 09:45:00,111.86,160.24,54.603,32.166 -2020-03-31 10:00:00,107.21,157.274,52.308,32.166 -2020-03-31 10:15:00,106.49,155.975,52.308,32.166 -2020-03-31 10:30:00,102.82,153.881,52.308,32.166 -2020-03-31 10:45:00,103.11,153.60299999999998,52.308,32.166 -2020-03-31 11:00:00,103.17,148.94899999999998,51.838,32.166 -2020-03-31 11:15:00,105.15,149.18200000000002,51.838,32.166 -2020-03-31 11:30:00,107.81,149.653,51.838,32.166 -2020-03-31 11:45:00,107.37,150.726,51.838,32.166 -2020-03-31 12:00:00,103.49,146.401,50.375,32.166 -2020-03-31 12:15:00,105.66,146.811,50.375,32.166 -2020-03-31 12:30:00,104.92,145.886,50.375,32.166 -2020-03-31 12:45:00,104.34,146.658,50.375,32.166 -2020-03-31 13:00:00,95.18,147.097,50.735,32.166 -2020-03-31 13:15:00,98.54,145.253,50.735,32.166 -2020-03-31 13:30:00,96.68,143.38299999999998,50.735,32.166 -2020-03-31 13:45:00,93.25,142.56799999999998,50.735,32.166 -2020-03-31 14:00:00,100.54,145.45600000000002,50.946000000000005,32.166 -2020-03-31 14:15:00,105.54,143.846,50.946000000000005,32.166 -2020-03-31 14:30:00,101.06,143.255,50.946000000000005,32.166 -2020-03-31 14:45:00,100.21,144.303,50.946000000000005,32.166 -2020-03-31 15:00:00,103.43,145.321,53.18,32.166 -2020-03-31 15:15:00,106.7,143.6,53.18,32.166 -2020-03-31 15:30:00,103.14,142.063,53.18,32.166 -2020-03-31 15:45:00,104.16,141.099,53.18,32.166 -2020-03-31 16:00:00,108.84,145.308,54.928999999999995,32.166 -2020-03-31 16:15:00,109.82,147.137,54.928999999999995,32.166 -2020-03-31 16:30:00,114.81,147.60299999999998,54.928999999999995,32.166 -2020-03-31 16:45:00,110.58,146.209,54.928999999999995,32.166 -2020-03-31 17:00:00,116.98,148.611,60.913000000000004,32.166 -2020-03-31 17:15:00,117.4,151.02,60.913000000000004,32.166 -2020-03-31 17:30:00,117.54,153.74,60.913000000000004,32.166 -2020-03-31 17:45:00,112.39,154.411,60.913000000000004,32.166 -2020-03-31 18:00:00,119.14,158.256,62.214,32.166 -2020-03-31 18:15:00,118.51,159.803,62.214,32.166 -2020-03-31 18:30:00,117.89,158.049,62.214,32.166 -2020-03-31 18:45:00,116.94,162.19799999999998,62.214,32.166 -2020-03-31 19:00:00,116.89,160.05200000000002,62.38,32.166 -2020-03-31 19:15:00,117.46,158.23,62.38,32.166 -2020-03-31 19:30:00,116.74,157.986,62.38,32.166 -2020-03-31 19:45:00,114.19,157.02200000000002,62.38,32.166 -2020-03-31 20:00:00,107.41,150.808,65.018,32.166 -2020-03-31 20:15:00,106.35,146.821,65.018,32.166 -2020-03-31 20:30:00,107.79,145.326,65.018,32.166 -2020-03-31 20:45:00,101.84,143.74,65.018,32.166 -2020-03-31 21:00:00,91.56,138.55100000000002,56.416000000000004,32.166 -2020-03-31 21:15:00,99.16,136.15,56.416000000000004,32.166 -2020-03-31 21:30:00,94.28,135.096,56.416000000000004,32.166 -2020-03-31 21:45:00,95.13,134.695,56.416000000000004,32.166 -2020-03-31 22:00:00,83.39,127.675,52.846000000000004,32.166 -2020-03-31 22:15:00,86.65,124.60799999999999,52.846000000000004,32.166 -2020-03-31 22:30:00,87.84,109.78200000000001,52.846000000000004,32.166 -2020-03-31 22:45:00,84.34,102.49700000000001,52.846000000000004,32.166 -2020-03-31 23:00:00,75.86,95.185,44.435,32.166 -2020-03-31 23:15:00,71.86,94.06,44.435,32.166 -2020-03-31 23:30:00,74.23,94.70100000000001,44.435,32.166 -2020-03-31 23:45:00,72.45,95.499,44.435,32.166 -2020-04-01 00:00:00,69.69,79.456,39.061,30.736 -2020-04-01 00:15:00,75.94,79.935,39.061,30.736 -2020-04-01 00:30:00,78.31,78.125,39.061,30.736 -2020-04-01 00:45:00,79.1,76.366,39.061,30.736 -2020-04-01 01:00:00,70.26,77.627,35.795,30.736 -2020-04-01 01:15:00,71.06,76.926,35.795,30.736 -2020-04-01 01:30:00,68.96,75.87100000000001,35.795,30.736 -2020-04-01 01:45:00,67.64,75.392,35.795,30.736 -2020-04-01 02:00:00,67.11,77.184,33.316,30.736 -2020-04-01 02:15:00,71.63,76.73899999999999,33.316,30.736 -2020-04-01 02:30:00,68.87,79.04899999999999,33.316,30.736 -2020-04-01 02:45:00,69.72,79.654,33.316,30.736 -2020-04-01 03:00:00,70.41,83.104,32.803000000000004,30.736 -2020-04-01 03:15:00,70.75,85.094,32.803000000000004,30.736 -2020-04-01 03:30:00,72.02,84.946,32.803000000000004,30.736 -2020-04-01 03:45:00,74.47,85.49700000000001,32.803000000000004,30.736 -2020-04-01 04:00:00,78.97,98.23200000000001,34.235,30.736 -2020-04-01 04:15:00,81.76,111.244,34.235,30.736 -2020-04-01 04:30:00,84.98,111.566,34.235,30.736 -2020-04-01 04:45:00,89.2,113.62700000000001,34.235,30.736 -2020-04-01 05:00:00,96.35,149.659,38.65,30.736 -2020-04-01 05:15:00,99.7,183.483,38.65,30.736 -2020-04-01 05:30:00,102.53,173.278,38.65,30.736 -2020-04-01 05:45:00,104.9,162.628,38.65,30.736 -2020-04-01 06:00:00,111.67,163.61700000000002,54.951,30.736 -2020-04-01 06:15:00,109.26,169.40099999999998,54.951,30.736 -2020-04-01 06:30:00,111.94,167.69799999999998,54.951,30.736 -2020-04-01 06:45:00,115.16,168.525,54.951,30.736 -2020-04-01 07:00:00,117.0,171.296,67.328,30.736 -2020-04-01 07:15:00,115.4,172.46400000000003,67.328,30.736 -2020-04-01 07:30:00,113.66,171.299,67.328,30.736 -2020-04-01 07:45:00,114.86,168.247,67.328,30.736 -2020-04-01 08:00:00,114.85,167.385,60.23,30.736 -2020-04-01 08:15:00,112.81,165.22400000000002,60.23,30.736 -2020-04-01 08:30:00,115.93,160.542,60.23,30.736 -2020-04-01 08:45:00,116.76,157.317,60.23,30.736 -2020-04-01 09:00:00,116.8,151.364,56.845,30.736 -2020-04-01 09:15:00,118.8,148.974,56.845,30.736 -2020-04-01 09:30:00,116.67,150.576,56.845,30.736 -2020-04-01 09:45:00,112.16,149.53,56.845,30.736 -2020-04-01 10:00:00,107.33,145.305,53.832,30.736 -2020-04-01 10:15:00,106.59,144.53,53.832,30.736 -2020-04-01 10:30:00,110.06,142.187,53.832,30.736 -2020-04-01 10:45:00,112.49,141.908,53.832,30.736 -2020-04-01 11:00:00,111.37,136.292,53.225,30.736 -2020-04-01 11:15:00,112.05,136.708,53.225,30.736 -2020-04-01 11:30:00,108.51,137.773,53.225,30.736 -2020-04-01 11:45:00,105.82,139.032,53.225,30.736 -2020-04-01 12:00:00,99.92,134.388,50.676,30.736 -2020-04-01 12:15:00,105.63,134.911,50.676,30.736 -2020-04-01 12:30:00,106.93,134.461,50.676,30.736 -2020-04-01 12:45:00,103.6,135.236,50.676,30.736 -2020-04-01 13:00:00,103.07,135.707,50.646,30.736 -2020-04-01 13:15:00,102.9,134.39600000000002,50.646,30.736 -2020-04-01 13:30:00,102.03,132.364,50.646,30.736 -2020-04-01 13:45:00,103.27,131.08700000000002,50.646,30.736 -2020-04-01 14:00:00,105.31,132.503,50.786,30.736 -2020-04-01 14:15:00,102.66,131.495,50.786,30.736 -2020-04-01 14:30:00,103.31,131.606,50.786,30.736 -2020-04-01 14:45:00,96.63,132.4,50.786,30.736 -2020-04-01 15:00:00,93.87,132.792,51.535,30.736 -2020-04-01 15:15:00,93.7,131.388,51.535,30.736 -2020-04-01 15:30:00,99.59,130.69299999999998,51.535,30.736 -2020-04-01 15:45:00,101.6,130.118,51.535,30.736 -2020-04-01 16:00:00,98.99,131.167,53.157,30.736 -2020-04-01 16:15:00,101.34,132.373,53.157,30.736 -2020-04-01 16:30:00,101.19,132.377,53.157,30.736 -2020-04-01 16:45:00,103.38,131.024,53.157,30.736 -2020-04-01 17:00:00,106.1,130.7,57.793,30.736 -2020-04-01 17:15:00,106.86,133.321,57.793,30.736 -2020-04-01 17:30:00,107.36,135.382,57.793,30.736 -2020-04-01 17:45:00,109.06,136.537,57.793,30.736 -2020-04-01 18:00:00,110.87,139.363,59.872,30.736 -2020-04-01 18:15:00,109.26,140.57,59.872,30.736 -2020-04-01 18:30:00,110.29,139.069,59.872,30.736 -2020-04-01 18:45:00,111.93,144.532,59.872,30.736 -2020-04-01 19:00:00,113.65,143.02200000000002,60.17100000000001,30.736 -2020-04-01 19:15:00,109.64,141.8,60.17100000000001,30.736 -2020-04-01 19:30:00,110.52,141.476,60.17100000000001,30.736 -2020-04-01 19:45:00,105.99,141.282,60.17100000000001,30.736 -2020-04-01 20:00:00,102.05,136.425,65.015,30.736 -2020-04-01 20:15:00,107.29,133.08100000000002,65.015,30.736 -2020-04-01 20:30:00,106.45,132.442,65.015,30.736 -2020-04-01 20:45:00,102.76,131.428,65.015,30.736 -2020-04-01 21:00:00,92.13,125.118,57.805,30.736 -2020-04-01 21:15:00,93.99,123.633,57.805,30.736 -2020-04-01 21:30:00,88.08,123.904,57.805,30.736 -2020-04-01 21:45:00,86.39,122.70100000000001,57.805,30.736 -2020-04-01 22:00:00,81.08,116.471,52.115,30.736 -2020-04-01 22:15:00,86.83,113.48200000000001,52.115,30.736 -2020-04-01 22:30:00,86.9,100.95,52.115,30.736 -2020-04-01 22:45:00,86.76,93.775,52.115,30.736 -2020-04-01 23:00:00,76.32,84.93299999999999,42.871,30.736 -2020-04-01 23:15:00,73.01,84.014,42.871,30.736 -2020-04-01 23:30:00,73.23,83.148,42.871,30.736 -2020-04-01 23:45:00,75.85,83.984,42.871,30.736 -2020-04-02 00:00:00,71.82,79.054,39.203,30.736 -2020-04-02 00:15:00,78.53,79.546,39.203,30.736 -2020-04-02 00:30:00,80.03,77.726,39.203,30.736 -2020-04-02 00:45:00,79.26,75.968,39.203,30.736 -2020-04-02 01:00:00,71.4,77.212,37.118,30.736 -2020-04-02 01:15:00,75.84,76.488,37.118,30.736 -2020-04-02 01:30:00,76.57,75.41199999999999,37.118,30.736 -2020-04-02 01:45:00,78.33,74.938,37.118,30.736 -2020-04-02 02:00:00,73.97,76.719,35.647,30.736 -2020-04-02 02:15:00,75.9,76.257,35.647,30.736 -2020-04-02 02:30:00,78.09,78.58800000000001,35.647,30.736 -2020-04-02 02:45:00,78.5,79.19800000000001,35.647,30.736 -2020-04-02 03:00:00,76.84,82.665,34.585,30.736 -2020-04-02 03:15:00,79.44,84.63,34.585,30.736 -2020-04-02 03:30:00,81.12,84.477,34.585,30.736 -2020-04-02 03:45:00,81.18,85.04700000000001,34.585,30.736 -2020-04-02 04:00:00,79.89,97.76100000000001,36.184,30.736 -2020-04-02 04:15:00,81.67,110.743,36.184,30.736 -2020-04-02 04:30:00,83.77,111.07,36.184,30.736 -2020-04-02 04:45:00,87.27,113.12,36.184,30.736 -2020-04-02 05:00:00,96.26,149.07299999999998,41.019,30.736 -2020-04-02 05:15:00,98.79,182.831,41.019,30.736 -2020-04-02 05:30:00,101.22,172.627,41.019,30.736 -2020-04-02 05:45:00,102.52,162.015,41.019,30.736 -2020-04-02 06:00:00,111.5,163.025,53.963,30.736 -2020-04-02 06:15:00,109.85,168.795,53.963,30.736 -2020-04-02 06:30:00,113.43,167.063,53.963,30.736 -2020-04-02 06:45:00,114.03,167.875,53.963,30.736 -2020-04-02 07:00:00,119.23,170.65400000000002,66.512,30.736 -2020-04-02 07:15:00,120.65,171.798,66.512,30.736 -2020-04-02 07:30:00,116.77,170.592,66.512,30.736 -2020-04-02 07:45:00,112.67,167.525,66.512,30.736 -2020-04-02 08:00:00,115.24,166.643,58.86,30.736 -2020-04-02 08:15:00,117.46,164.503,58.86,30.736 -2020-04-02 08:30:00,115.91,159.782,58.86,30.736 -2020-04-02 08:45:00,115.21,156.585,58.86,30.736 -2020-04-02 09:00:00,115.87,150.637,52.156000000000006,30.736 -2020-04-02 09:15:00,114.66,148.252,52.156000000000006,30.736 -2020-04-02 09:30:00,119.53,149.874,52.156000000000006,30.736 -2020-04-02 09:45:00,123.85,148.858,52.156000000000006,30.736 -2020-04-02 10:00:00,118.77,144.639,49.034,30.736 -2020-04-02 10:15:00,126.97,143.914,49.034,30.736 -2020-04-02 10:30:00,125.46,141.596,49.034,30.736 -2020-04-02 10:45:00,123.88,141.338,49.034,30.736 -2020-04-02 11:00:00,122.49,135.713,46.53,30.736 -2020-04-02 11:15:00,116.42,136.153,46.53,30.736 -2020-04-02 11:30:00,110.72,137.222,46.53,30.736 -2020-04-02 11:45:00,120.11,138.501,46.53,30.736 -2020-04-02 12:00:00,118.87,133.88299999999998,43.318000000000005,30.736 -2020-04-02 12:15:00,120.48,134.416,43.318000000000005,30.736 -2020-04-02 12:30:00,117.06,133.922,43.318000000000005,30.736 -2020-04-02 12:45:00,111.35,134.69899999999998,43.318000000000005,30.736 -2020-04-02 13:00:00,111.13,135.213,41.608000000000004,30.736 -2020-04-02 13:15:00,108.37,133.891,41.608000000000004,30.736 -2020-04-02 13:30:00,110.04,131.856,41.608000000000004,30.736 -2020-04-02 13:45:00,110.04,130.58100000000002,41.608000000000004,30.736 -2020-04-02 14:00:00,105.79,132.067,41.786,30.736 -2020-04-02 14:15:00,97.68,131.036,41.786,30.736 -2020-04-02 14:30:00,108.28,131.105,41.786,30.736 -2020-04-02 14:45:00,118.85,131.90200000000002,41.786,30.736 -2020-04-02 15:00:00,124.11,132.321,44.181999999999995,30.736 -2020-04-02 15:15:00,123.02,130.893,44.181999999999995,30.736 -2020-04-02 15:30:00,118.52,130.14700000000002,44.181999999999995,30.736 -2020-04-02 15:45:00,111.31,129.553,44.181999999999995,30.736 -2020-04-02 16:00:00,113.66,130.637,45.956,30.736 -2020-04-02 16:15:00,119.09,131.816,45.956,30.736 -2020-04-02 16:30:00,118.53,131.822,45.956,30.736 -2020-04-02 16:45:00,121.92,130.407,45.956,30.736 -2020-04-02 17:00:00,124.5,130.131,50.702,30.736 -2020-04-02 17:15:00,120.31,132.734,50.702,30.736 -2020-04-02 17:30:00,120.7,134.798,50.702,30.736 -2020-04-02 17:45:00,121.11,135.939,50.702,30.736 -2020-04-02 18:00:00,123.23,138.77700000000002,53.595,30.736 -2020-04-02 18:15:00,120.26,140.024,53.595,30.736 -2020-04-02 18:30:00,115.9,138.511,53.595,30.736 -2020-04-02 18:45:00,114.56,143.986,53.595,30.736 -2020-04-02 19:00:00,121.11,142.455,54.207,30.736 -2020-04-02 19:15:00,119.24,141.243,54.207,30.736 -2020-04-02 19:30:00,117.39,140.938,54.207,30.736 -2020-04-02 19:45:00,107.85,140.776,54.207,30.736 -2020-04-02 20:00:00,108.15,135.892,56.948,30.736 -2020-04-02 20:15:00,111.42,132.55700000000002,56.948,30.736 -2020-04-02 20:30:00,106.44,131.955,56.948,30.736 -2020-04-02 20:45:00,101.23,130.964,56.948,30.736 -2020-04-02 21:00:00,100.35,124.652,52.157,30.736 -2020-04-02 21:15:00,101.03,123.176,52.157,30.736 -2020-04-02 21:30:00,107.53,123.44,52.157,30.736 -2020-04-02 21:45:00,103.46,122.266,52.157,30.736 -2020-04-02 22:00:00,96.94,116.041,47.483000000000004,30.736 -2020-04-02 22:15:00,99.13,113.08,47.483000000000004,30.736 -2020-04-02 22:30:00,96.8,100.515,47.483000000000004,30.736 -2020-04-02 22:45:00,92.58,93.336,47.483000000000004,30.736 -2020-04-02 23:00:00,83.94,84.47,41.978,30.736 -2020-04-02 23:15:00,83.81,83.583,41.978,30.736 -2020-04-02 23:30:00,88.75,82.71600000000001,41.978,30.736 -2020-04-02 23:45:00,87.76,83.568,41.978,30.736 -2020-04-03 00:00:00,76.87,76.975,39.301,30.736 -2020-04-03 00:15:00,73.29,77.727,39.301,30.736 -2020-04-03 00:30:00,70.69,75.961,39.301,30.736 -2020-04-03 00:45:00,72.11,74.514,39.301,30.736 -2020-04-03 01:00:00,75.99,75.328,37.976,30.736 -2020-04-03 01:15:00,77.44,74.82,37.976,30.736 -2020-04-03 01:30:00,73.59,73.983,37.976,30.736 -2020-04-03 01:45:00,79.01,73.439,37.976,30.736 -2020-04-03 02:00:00,73.89,75.78399999999999,37.041,30.736 -2020-04-03 02:15:00,73.49,75.205,37.041,30.736 -2020-04-03 02:30:00,79.15,78.352,37.041,30.736 -2020-04-03 02:45:00,75.85,78.607,37.041,30.736 -2020-04-03 03:00:00,74.11,81.914,37.575,30.736 -2020-04-03 03:15:00,79.18,83.74799999999999,37.575,30.736 -2020-04-03 03:30:00,76.15,83.445,37.575,30.736 -2020-04-03 03:45:00,85.07,84.735,37.575,30.736 -2020-04-03 04:00:00,91.35,97.646,39.058,30.736 -2020-04-03 04:15:00,92.78,109.551,39.058,30.736 -2020-04-03 04:30:00,92.59,110.568,39.058,30.736 -2020-04-03 04:45:00,93.75,111.53399999999999,39.058,30.736 -2020-04-03 05:00:00,102.17,146.35299999999998,43.256,30.736 -2020-04-03 05:15:00,102.67,181.516,43.256,30.736 -2020-04-03 05:30:00,104.0,172.08599999999998,43.256,30.736 -2020-04-03 05:45:00,106.32,161.215,43.256,30.736 -2020-04-03 06:00:00,114.66,162.671,56.093999999999994,30.736 -2020-04-03 06:15:00,113.85,167.59900000000002,56.093999999999994,30.736 -2020-04-03 06:30:00,117.45,165.268,56.093999999999994,30.736 -2020-04-03 06:45:00,116.33,167.011,56.093999999999994,30.736 -2020-04-03 07:00:00,117.74,169.637,66.92699999999999,30.736 -2020-04-03 07:15:00,116.74,171.90900000000002,66.92699999999999,30.736 -2020-04-03 07:30:00,116.53,169.487,66.92699999999999,30.736 -2020-04-03 07:45:00,115.69,165.718,66.92699999999999,30.736 -2020-04-03 08:00:00,114.23,164.50900000000001,60.332,30.736 -2020-04-03 08:15:00,113.28,162.47799999999998,60.332,30.736 -2020-04-03 08:30:00,113.5,158.321,60.332,30.736 -2020-04-03 08:45:00,111.4,154.023,60.332,30.736 -2020-04-03 09:00:00,109.66,147.19899999999998,56.085,30.736 -2020-04-03 09:15:00,109.0,146.171,56.085,30.736 -2020-04-03 09:30:00,107.02,147.174,56.085,30.736 -2020-04-03 09:45:00,107.16,146.306,56.085,30.736 -2020-04-03 10:00:00,105.85,141.186,52.91,30.736 -2020-04-03 10:15:00,107.46,140.898,52.91,30.736 -2020-04-03 10:30:00,105.47,138.81799999999998,52.91,30.736 -2020-04-03 10:45:00,107.79,138.22299999999998,52.91,30.736 -2020-04-03 11:00:00,102.99,132.667,52.278999999999996,30.736 -2020-04-03 11:15:00,101.82,131.98,52.278999999999996,30.736 -2020-04-03 11:30:00,101.04,134.144,52.278999999999996,30.736 -2020-04-03 11:45:00,100.88,135.03,52.278999999999996,30.736 -2020-04-03 12:00:00,96.79,131.445,49.023999999999994,30.736 -2020-04-03 12:15:00,100.16,130.16,49.023999999999994,30.736 -2020-04-03 12:30:00,94.47,129.792,49.023999999999994,30.736 -2020-04-03 12:45:00,100.82,130.594,49.023999999999994,30.736 -2020-04-03 13:00:00,98.58,132.121,46.82,30.736 -2020-04-03 13:15:00,96.92,131.47299999999998,46.82,30.736 -2020-04-03 13:30:00,95.45,129.8,46.82,30.736 -2020-04-03 13:45:00,97.9,128.616,46.82,30.736 -2020-04-03 14:00:00,100.06,128.971,45.756,30.736 -2020-04-03 14:15:00,94.08,127.977,45.756,30.736 -2020-04-03 14:30:00,89.77,129.05200000000002,45.756,30.736 -2020-04-03 14:45:00,89.15,129.773,45.756,30.736 -2020-04-03 15:00:00,99.64,129.828,47.56,30.736 -2020-04-03 15:15:00,97.56,127.941,47.56,30.736 -2020-04-03 15:30:00,100.39,125.76799999999999,47.56,30.736 -2020-04-03 15:45:00,96.0,125.601,47.56,30.736 -2020-04-03 16:00:00,102.98,125.535,49.581,30.736 -2020-04-03 16:15:00,107.36,127.12799999999999,49.581,30.736 -2020-04-03 16:30:00,107.41,127.117,49.581,30.736 -2020-04-03 16:45:00,105.69,125.18799999999999,49.581,30.736 -2020-04-03 17:00:00,111.53,125.978,53.918,30.736 -2020-04-03 17:15:00,114.78,128.192,53.918,30.736 -2020-04-03 17:30:00,110.72,130.119,53.918,30.736 -2020-04-03 17:45:00,114.51,130.999,53.918,30.736 -2020-04-03 18:00:00,121.12,134.387,54.266000000000005,30.736 -2020-04-03 18:15:00,115.78,134.931,54.266000000000005,30.736 -2020-04-03 18:30:00,115.51,133.621,54.266000000000005,30.736 -2020-04-03 18:45:00,117.31,139.316,54.266000000000005,30.736 -2020-04-03 19:00:00,117.9,138.845,54.092,30.736 -2020-04-03 19:15:00,113.83,138.86700000000002,54.092,30.736 -2020-04-03 19:30:00,113.99,138.334,54.092,30.736 -2020-04-03 19:45:00,112.93,137.374,54.092,30.736 -2020-04-03 20:00:00,109.53,132.425,59.038999999999994,30.736 -2020-04-03 20:15:00,98.4,129.518,59.038999999999994,30.736 -2020-04-03 20:30:00,94.66,128.66899999999998,59.038999999999994,30.736 -2020-04-03 20:45:00,99.46,127.654,59.038999999999994,30.736 -2020-04-03 21:00:00,89.12,122.366,53.346000000000004,30.736 -2020-04-03 21:15:00,94.16,122.066,53.346000000000004,30.736 -2020-04-03 21:30:00,91.73,122.272,53.346000000000004,30.736 -2020-04-03 21:45:00,92.13,121.59700000000001,53.346000000000004,30.736 -2020-04-03 22:00:00,84.0,115.95,47.938,30.736 -2020-04-03 22:15:00,85.47,112.79700000000001,47.938,30.736 -2020-04-03 22:30:00,85.97,106.915,47.938,30.736 -2020-04-03 22:45:00,86.43,102.51899999999999,47.938,30.736 -2020-04-03 23:00:00,79.39,94.219,40.266,30.736 -2020-04-03 23:15:00,73.78,91.25299999999999,40.266,30.736 -2020-04-03 23:30:00,75.79,88.464,40.266,30.736 -2020-04-03 23:45:00,76.89,88.825,40.266,30.736 -2020-04-04 00:00:00,74.66,75.469,39.184,30.618000000000002 -2020-04-04 00:15:00,73.9,73.183,39.184,30.618000000000002 -2020-04-04 00:30:00,65.93,71.98100000000001,39.184,30.618000000000002 -2020-04-04 00:45:00,68.89,70.57600000000001,39.184,30.618000000000002 -2020-04-04 01:00:00,71.51,71.94,34.692,30.618000000000002 -2020-04-04 01:15:00,76.86,71.125,34.692,30.618000000000002 -2020-04-04 01:30:00,71.53,69.49,34.692,30.618000000000002 -2020-04-04 01:45:00,68.36,69.517,34.692,30.618000000000002 -2020-04-04 02:00:00,66.58,71.745,32.919000000000004,30.618000000000002 -2020-04-04 02:15:00,62.82,70.472,32.919000000000004,30.618000000000002 -2020-04-04 02:30:00,63.39,72.505,32.919000000000004,30.618000000000002 -2020-04-04 02:45:00,64.96,73.27199999999999,32.919000000000004,30.618000000000002 -2020-04-04 03:00:00,65.71,76.22399999999999,32.024,30.618000000000002 -2020-04-04 03:15:00,63.91,76.88600000000001,32.024,30.618000000000002 -2020-04-04 03:30:00,63.74,75.78699999999999,32.024,30.618000000000002 -2020-04-04 03:45:00,64.35,78.009,32.024,30.618000000000002 -2020-04-04 04:00:00,65.42,87.32600000000001,31.958000000000002,30.618000000000002 -2020-04-04 04:15:00,68.5,97.13600000000001,31.958000000000002,30.618000000000002 -2020-04-04 04:30:00,69.35,95.876,31.958000000000002,30.618000000000002 -2020-04-04 04:45:00,69.44,96.686,31.958000000000002,30.618000000000002 -2020-04-04 05:00:00,72.92,117.115,32.75,30.618000000000002 -2020-04-04 05:15:00,68.32,134.414,32.75,30.618000000000002 -2020-04-04 05:30:00,70.28,126.084,32.75,30.618000000000002 -2020-04-04 05:45:00,69.35,121.125,32.75,30.618000000000002 -2020-04-04 06:00:00,75.32,140.066,34.461999999999996,30.618000000000002 -2020-04-04 06:15:00,76.84,159.474,34.461999999999996,30.618000000000002 -2020-04-04 06:30:00,77.92,152.194,34.461999999999996,30.618000000000002 -2020-04-04 06:45:00,79.19,146.56799999999998,34.461999999999996,30.618000000000002 -2020-04-04 07:00:00,82.21,145.606,37.736,30.618000000000002 -2020-04-04 07:15:00,81.98,146.351,37.736,30.618000000000002 -2020-04-04 07:30:00,81.71,146.433,37.736,30.618000000000002 -2020-04-04 07:45:00,82.74,145.686,37.736,30.618000000000002 -2020-04-04 08:00:00,81.59,147.055,42.34,30.618000000000002 -2020-04-04 08:15:00,81.68,147.328,42.34,30.618000000000002 -2020-04-04 08:30:00,81.19,144.188,42.34,30.618000000000002 -2020-04-04 08:45:00,81.27,142.493,42.34,30.618000000000002 -2020-04-04 09:00:00,78.35,138.297,43.571999999999996,30.618000000000002 -2020-04-04 09:15:00,76.95,138.02700000000002,43.571999999999996,30.618000000000002 -2020-04-04 09:30:00,77.5,139.909,43.571999999999996,30.618000000000002 -2020-04-04 09:45:00,76.01,138.953,43.571999999999996,30.618000000000002 -2020-04-04 10:00:00,74.59,134.138,40.514,30.618000000000002 -2020-04-04 10:15:00,75.0,134.186,40.514,30.618000000000002 -2020-04-04 10:30:00,75.58,132.084,40.514,30.618000000000002 -2020-04-04 10:45:00,74.33,132.252,40.514,30.618000000000002 -2020-04-04 11:00:00,72.45,126.696,36.388000000000005,30.618000000000002 -2020-04-04 11:15:00,71.39,125.946,36.388000000000005,30.618000000000002 -2020-04-04 11:30:00,68.52,127.45,36.388000000000005,30.618000000000002 -2020-04-04 11:45:00,68.28,127.98700000000001,36.388000000000005,30.618000000000002 -2020-04-04 12:00:00,64.47,123.79799999999999,35.217,30.618000000000002 -2020-04-04 12:15:00,63.5,123.37200000000001,35.217,30.618000000000002 -2020-04-04 12:30:00,60.6,123.133,35.217,30.618000000000002 -2020-04-04 12:45:00,61.67,123.70200000000001,35.217,30.618000000000002 -2020-04-04 13:00:00,59.52,124.51700000000001,32.001999999999995,30.618000000000002 -2020-04-04 13:15:00,58.68,122.109,32.001999999999995,30.618000000000002 -2020-04-04 13:30:00,59.1,120.18700000000001,32.001999999999995,30.618000000000002 -2020-04-04 13:45:00,60.24,118.756,32.001999999999995,30.618000000000002 -2020-04-04 14:00:00,58.61,120.09200000000001,31.304000000000002,30.618000000000002 -2020-04-04 14:15:00,58.6,118.131,31.304000000000002,30.618000000000002 -2020-04-04 14:30:00,59.62,117.635,31.304000000000002,30.618000000000002 -2020-04-04 14:45:00,60.05,118.73200000000001,31.304000000000002,30.618000000000002 -2020-04-04 15:00:00,61.39,119.492,34.731,30.618000000000002 -2020-04-04 15:15:00,61.93,118.48299999999999,34.731,30.618000000000002 -2020-04-04 15:30:00,62.76,117.48299999999999,34.731,30.618000000000002 -2020-04-04 15:45:00,65.09,116.90299999999999,34.731,30.618000000000002 -2020-04-04 16:00:00,68.45,117.296,38.769,30.618000000000002 -2020-04-04 16:15:00,69.5,119.079,38.769,30.618000000000002 -2020-04-04 16:30:00,75.03,119.14,38.769,30.618000000000002 -2020-04-04 16:45:00,75.19,117.76299999999999,38.769,30.618000000000002 -2020-04-04 17:00:00,79.59,117.855,44.928000000000004,30.618000000000002 -2020-04-04 17:15:00,80.67,120.13799999999999,44.928000000000004,30.618000000000002 -2020-04-04 17:30:00,82.2,121.93700000000001,44.928000000000004,30.618000000000002 -2020-04-04 17:45:00,83.92,122.765,44.928000000000004,30.618000000000002 -2020-04-04 18:00:00,85.73,126.61399999999999,47.786,30.618000000000002 -2020-04-04 18:15:00,83.59,129.254,47.786,30.618000000000002 -2020-04-04 18:30:00,83.84,129.518,47.786,30.618000000000002 -2020-04-04 18:45:00,85.08,131.211,47.786,30.618000000000002 -2020-04-04 19:00:00,87.47,130.589,47.463,30.618000000000002 -2020-04-04 19:15:00,90.07,129.77700000000002,47.463,30.618000000000002 -2020-04-04 19:30:00,88.24,130.158,47.463,30.618000000000002 -2020-04-04 19:45:00,84.51,130.01,47.463,30.618000000000002 -2020-04-04 20:00:00,81.76,126.954,43.735,30.618000000000002 -2020-04-04 20:15:00,80.12,125.14200000000001,43.735,30.618000000000002 -2020-04-04 20:30:00,76.99,123.64399999999999,43.735,30.618000000000002 -2020-04-04 20:45:00,76.56,123.34,43.735,30.618000000000002 -2020-04-04 21:00:00,70.25,118.79799999999999,40.346,30.618000000000002 -2020-04-04 21:15:00,69.31,118.615,40.346,30.618000000000002 -2020-04-04 21:30:00,66.75,119.72200000000001,40.346,30.618000000000002 -2020-04-04 21:45:00,66.4,118.525,40.346,30.618000000000002 -2020-04-04 22:00:00,62.9,113.759,39.323,30.618000000000002 -2020-04-04 22:15:00,62.01,112.402,39.323,30.618000000000002 -2020-04-04 22:30:00,59.88,110.391,39.323,30.618000000000002 -2020-04-04 22:45:00,58.88,107.417,39.323,30.618000000000002 -2020-04-04 23:00:00,54.7,100.368,33.716,30.618000000000002 -2020-04-04 23:15:00,54.75,96.571,33.716,30.618000000000002 -2020-04-04 23:30:00,52.99,93.90100000000001,33.716,30.618000000000002 -2020-04-04 23:45:00,53.7,92.859,33.716,30.618000000000002 -2020-04-05 00:00:00,49.93,76.092,28.703000000000003,30.618000000000002 -2020-04-05 00:15:00,50.91,72.97800000000001,28.703000000000003,30.618000000000002 -2020-04-05 00:30:00,49.61,71.447,28.703000000000003,30.618000000000002 -2020-04-05 00:45:00,49.78,70.42,28.703000000000003,30.618000000000002 -2020-04-05 01:00:00,48.79,71.824,26.171,30.618000000000002 -2020-04-05 01:15:00,49.86,71.562,26.171,30.618000000000002 -2020-04-05 01:30:00,49.35,70.15,26.171,30.618000000000002 -2020-04-05 01:45:00,49.74,69.775,26.171,30.618000000000002 -2020-04-05 02:00:00,49.25,71.568,25.326999999999998,30.618000000000002 -2020-04-05 02:15:00,49.88,70.153,25.326999999999998,30.618000000000002 -2020-04-05 02:30:00,49.37,72.839,25.326999999999998,30.618000000000002 -2020-04-05 02:45:00,49.41,73.73100000000001,25.326999999999998,30.618000000000002 -2020-04-05 03:00:00,48.8,77.26,24.311999999999998,30.618000000000002 -2020-04-05 03:15:00,49.81,77.726,24.311999999999998,30.618000000000002 -2020-04-05 03:30:00,50.35,77.057,24.311999999999998,30.618000000000002 -2020-04-05 03:45:00,51.13,78.79899999999999,24.311999999999998,30.618000000000002 -2020-04-05 04:00:00,51.43,87.915,25.33,30.618000000000002 -2020-04-05 04:15:00,52.55,96.831,25.33,30.618000000000002 -2020-04-05 04:30:00,54.44,96.38600000000001,25.33,30.618000000000002 -2020-04-05 04:45:00,58.04,97.081,25.33,30.618000000000002 -2020-04-05 05:00:00,57.28,115.42299999999999,25.309,30.618000000000002 -2020-04-05 05:15:00,58.24,130.764,25.309,30.618000000000002 -2020-04-05 05:30:00,55.96,122.105,25.309,30.618000000000002 -2020-04-05 05:45:00,57.4,117.171,25.309,30.618000000000002 -2020-04-05 06:00:00,58.75,134.681,25.945999999999998,30.618000000000002 -2020-04-05 06:15:00,58.9,153.49,25.945999999999998,30.618000000000002 -2020-04-05 06:30:00,59.93,145.111,25.945999999999998,30.618000000000002 -2020-04-05 06:45:00,63.35,138.262,25.945999999999998,30.618000000000002 -2020-04-05 07:00:00,64.84,138.942,27.87,30.618000000000002 -2020-04-05 07:15:00,67.39,138.22799999999998,27.87,30.618000000000002 -2020-04-05 07:30:00,67.1,138.191,27.87,30.618000000000002 -2020-04-05 07:45:00,64.74,136.928,27.87,30.618000000000002 -2020-04-05 08:00:00,65.25,139.78799999999998,32.114000000000004,30.618000000000002 -2020-04-05 08:15:00,65.1,140.642,32.114000000000004,30.618000000000002 -2020-04-05 08:30:00,64.21,139.002,32.114000000000004,30.618000000000002 -2020-04-05 08:45:00,63.33,138.611,32.114000000000004,30.618000000000002 -2020-04-05 09:00:00,64.31,134.07,34.222,30.618000000000002 -2020-04-05 09:15:00,61.83,133.924,34.222,30.618000000000002 -2020-04-05 09:30:00,60.69,135.941,34.222,30.618000000000002 -2020-04-05 09:45:00,60.76,135.444,34.222,30.618000000000002 -2020-04-05 10:00:00,61.17,132.583,34.544000000000004,30.618000000000002 -2020-04-05 10:15:00,63.73,133.114,34.544000000000004,30.618000000000002 -2020-04-05 10:30:00,64.51,131.56,34.544000000000004,30.618000000000002 -2020-04-05 10:45:00,63.78,130.931,34.544000000000004,30.618000000000002 -2020-04-05 11:00:00,60.97,125.81200000000001,36.368,30.618000000000002 -2020-04-05 11:15:00,58.9,124.97,36.368,30.618000000000002 -2020-04-05 11:30:00,56.67,126.111,36.368,30.618000000000002 -2020-04-05 11:45:00,56.1,127.214,36.368,30.618000000000002 -2020-04-05 12:00:00,52.5,123.1,32.433,30.618000000000002 -2020-04-05 12:15:00,54.28,123.76299999999999,32.433,30.618000000000002 -2020-04-05 12:30:00,51.11,122.53399999999999,32.433,30.618000000000002 -2020-04-05 12:45:00,51.46,122.119,32.433,30.618000000000002 -2020-04-05 13:00:00,50.91,122.304,28.971999999999998,30.618000000000002 -2020-04-05 13:15:00,50.33,121.807,28.971999999999998,30.618000000000002 -2020-04-05 13:30:00,49.91,119.228,28.971999999999998,30.618000000000002 -2020-04-05 13:45:00,50.1,117.82600000000001,28.971999999999998,30.618000000000002 -2020-04-05 14:00:00,50.18,119.947,25.531999999999996,30.618000000000002 -2020-04-05 14:15:00,50.22,119.027,25.531999999999996,30.618000000000002 -2020-04-05 14:30:00,50.84,118.82700000000001,25.531999999999996,30.618000000000002 -2020-04-05 14:45:00,51.63,119.15,25.531999999999996,30.618000000000002 -2020-04-05 15:00:00,52.57,118.89200000000001,25.766,30.618000000000002 -2020-04-05 15:15:00,53.17,118.04299999999999,25.766,30.618000000000002 -2020-04-05 15:30:00,54.25,117.337,25.766,30.618000000000002 -2020-04-05 15:45:00,57.67,117.369,25.766,30.618000000000002 -2020-04-05 16:00:00,62.85,118.23899999999999,29.232,30.618000000000002 -2020-04-05 16:15:00,63.15,119.47,29.232,30.618000000000002 -2020-04-05 16:30:00,67.45,120.189,29.232,30.618000000000002 -2020-04-05 16:45:00,71.68,118.87299999999999,29.232,30.618000000000002 -2020-04-05 17:00:00,75.8,119.089,37.431,30.618000000000002 -2020-04-05 17:15:00,78.13,121.87700000000001,37.431,30.618000000000002 -2020-04-05 17:30:00,80.23,124.274,37.431,30.618000000000002 -2020-04-05 17:45:00,80.84,126.838,37.431,30.618000000000002 -2020-04-05 18:00:00,83.42,130.58700000000002,41.251999999999995,30.618000000000002 -2020-04-05 18:15:00,82.93,133.947,41.251999999999995,30.618000000000002 -2020-04-05 18:30:00,85.4,132.678,41.251999999999995,30.618000000000002 -2020-04-05 18:45:00,86.36,135.68,41.251999999999995,30.618000000000002 -2020-04-05 19:00:00,89.34,135.89700000000002,41.784,30.618000000000002 -2020-04-05 19:15:00,96.35,134.91899999999998,41.784,30.618000000000002 -2020-04-05 19:30:00,97.94,135.082,41.784,30.618000000000002 -2020-04-05 19:45:00,90.74,135.688,41.784,30.618000000000002 -2020-04-05 20:00:00,83.74,132.64,40.804,30.618000000000002 -2020-04-05 20:15:00,84.54,131.41299999999998,40.804,30.618000000000002 -2020-04-05 20:30:00,88.61,131.183,40.804,30.618000000000002 -2020-04-05 20:45:00,93.47,129.24200000000002,40.804,30.618000000000002 -2020-04-05 21:00:00,90.23,122.90100000000001,38.379,30.618000000000002 -2020-04-05 21:15:00,85.48,122.161,38.379,30.618000000000002 -2020-04-05 21:30:00,81.64,123.109,38.379,30.618000000000002 -2020-04-05 21:45:00,78.03,122.22,38.379,30.618000000000002 -2020-04-05 22:00:00,72.89,117.758,37.87,30.618000000000002 -2020-04-05 22:15:00,76.43,115.053,37.87,30.618000000000002 -2020-04-05 22:30:00,78.18,110.678,37.87,30.618000000000002 -2020-04-05 22:45:00,78.53,106.478,37.87,30.618000000000002 -2020-04-05 23:00:00,72.6,97.42299999999999,33.332,30.618000000000002 -2020-04-05 23:15:00,69.86,95.53299999999999,33.332,30.618000000000002 -2020-04-05 23:30:00,67.11,93.111,33.332,30.618000000000002 -2020-04-05 23:45:00,71.83,92.75,33.332,30.618000000000002 -2020-04-06 00:00:00,72.06,79.122,34.698,30.736 -2020-04-06 00:15:00,73.34,78.301,34.698,30.736 -2020-04-06 00:30:00,69.38,76.625,34.698,30.736 -2020-04-06 00:45:00,66.41,75.048,34.698,30.736 -2020-04-06 01:00:00,65.32,76.639,32.889,30.736 -2020-04-06 01:15:00,71.76,76.038,32.889,30.736 -2020-04-06 01:30:00,72.41,74.84100000000001,32.889,30.736 -2020-04-06 01:45:00,73.18,74.486,32.889,30.736 -2020-04-06 02:00:00,68.6,76.492,32.06,30.736 -2020-04-06 02:15:00,70.89,75.381,32.06,30.736 -2020-04-06 02:30:00,74.64,78.384,32.06,30.736 -2020-04-06 02:45:00,75.36,78.82,32.06,30.736 -2020-04-06 03:00:00,73.31,83.4,30.515,30.736 -2020-04-06 03:15:00,75.92,85.24799999999999,30.515,30.736 -2020-04-06 03:30:00,80.31,84.79899999999999,30.515,30.736 -2020-04-06 03:45:00,82.56,85.961,30.515,30.736 -2020-04-06 04:00:00,85.18,99.426,31.436,30.736 -2020-04-06 04:15:00,84.27,112.485,31.436,30.736 -2020-04-06 04:30:00,87.01,113.088,31.436,30.736 -2020-04-06 04:45:00,88.33,114.081,31.436,30.736 -2020-04-06 05:00:00,97.35,145.80200000000002,38.997,30.736 -2020-04-06 05:15:00,102.88,179.06,38.997,30.736 -2020-04-06 05:30:00,104.6,169.676,38.997,30.736 -2020-04-06 05:45:00,103.3,159.631,38.997,30.736 -2020-04-06 06:00:00,111.48,160.849,54.97,30.736 -2020-04-06 06:15:00,112.43,165.453,54.97,30.736 -2020-04-06 06:30:00,112.7,164.183,54.97,30.736 -2020-04-06 06:45:00,114.94,165.671,54.97,30.736 -2020-04-06 07:00:00,116.47,168.513,66.032,30.736 -2020-04-06 07:15:00,114.52,169.805,66.032,30.736 -2020-04-06 07:30:00,112.82,168.767,66.032,30.736 -2020-04-06 07:45:00,111.27,166.037,66.032,30.736 -2020-04-06 08:00:00,109.22,165.03599999999997,59.941,30.736 -2020-04-06 08:15:00,108.67,163.886,59.941,30.736 -2020-04-06 08:30:00,107.94,159.04,59.941,30.736 -2020-04-06 08:45:00,106.68,156.61,59.941,30.736 -2020-04-06 09:00:00,105.31,151.07299999999998,54.016000000000005,30.736 -2020-04-06 09:15:00,105.6,147.696,54.016000000000005,30.736 -2020-04-06 09:30:00,104.71,148.596,54.016000000000005,30.736 -2020-04-06 09:45:00,103.31,147.168,54.016000000000005,30.736 -2020-04-06 10:00:00,101.9,144.064,50.63,30.736 -2020-04-06 10:15:00,104.54,144.34799999999998,50.63,30.736 -2020-04-06 10:30:00,103.43,141.99200000000002,50.63,30.736 -2020-04-06 10:45:00,105.54,141.142,50.63,30.736 -2020-04-06 11:00:00,100.25,134.44,49.951,30.736 -2020-04-06 11:15:00,103.21,135.025,49.951,30.736 -2020-04-06 11:30:00,98.48,137.47,49.951,30.736 -2020-04-06 11:45:00,100.55,138.54,49.951,30.736 -2020-04-06 12:00:00,103.01,135.093,46.913000000000004,30.736 -2020-04-06 12:15:00,108.32,135.816,46.913000000000004,30.736 -2020-04-06 12:30:00,107.08,134.238,46.913000000000004,30.736 -2020-04-06 12:45:00,101.4,134.923,46.913000000000004,30.736 -2020-04-06 13:00:00,102.39,136.09,47.093999999999994,30.736 -2020-04-06 13:15:00,101.73,134.179,47.093999999999994,30.736 -2020-04-06 13:30:00,102.31,131.29,47.093999999999994,30.736 -2020-04-06 13:45:00,109.82,130.314,47.093999999999994,30.736 -2020-04-06 14:00:00,111.7,131.673,46.678000000000004,30.736 -2020-04-06 14:15:00,107.6,130.526,46.678000000000004,30.736 -2020-04-06 14:30:00,101.94,129.817,46.678000000000004,30.736 -2020-04-06 14:45:00,103.94,131.03799999999998,46.678000000000004,30.736 -2020-04-06 15:00:00,103.09,131.95600000000002,47.715,30.736 -2020-04-06 15:15:00,104.75,129.77100000000002,47.715,30.736 -2020-04-06 15:30:00,107.02,128.752,47.715,30.736 -2020-04-06 15:45:00,106.7,128.225,47.715,30.736 -2020-04-06 16:00:00,111.87,129.474,49.81100000000001,30.736 -2020-04-06 16:15:00,109.46,130.173,49.81100000000001,30.736 -2020-04-06 16:30:00,112.43,129.903,49.81100000000001,30.736 -2020-04-06 16:45:00,110.12,127.697,49.81100000000001,30.736 -2020-04-06 17:00:00,116.7,127.12899999999999,55.591,30.736 -2020-04-06 17:15:00,115.27,129.43200000000002,55.591,30.736 -2020-04-06 17:30:00,116.49,131.267,55.591,30.736 -2020-04-06 17:45:00,114.97,132.599,55.591,30.736 -2020-04-06 18:00:00,118.43,136.04,56.523,30.736 -2020-04-06 18:15:00,116.2,137.036,56.523,30.736 -2020-04-06 18:30:00,115.3,135.815,56.523,30.736 -2020-04-06 18:45:00,112.64,140.894,56.523,30.736 -2020-04-06 19:00:00,111.96,139.827,56.044,30.736 -2020-04-06 19:15:00,117.29,138.756,56.044,30.736 -2020-04-06 19:30:00,115.88,139.08,56.044,30.736 -2020-04-06 19:45:00,110.57,138.85299999999998,56.044,30.736 -2020-04-06 20:00:00,102.39,133.55,61.715,30.736 -2020-04-06 20:15:00,99.43,131.42600000000002,61.715,30.736 -2020-04-06 20:30:00,100.45,130.275,61.715,30.736 -2020-04-06 20:45:00,98.33,129.54,61.715,30.736 -2020-04-06 21:00:00,101.37,123.23200000000001,56.24,30.736 -2020-04-06 21:15:00,100.59,121.96799999999999,56.24,30.736 -2020-04-06 21:30:00,94.39,122.585,56.24,30.736 -2020-04-06 21:45:00,88.76,121.28200000000001,56.24,30.736 -2020-04-06 22:00:00,84.27,113.863,50.437,30.736 -2020-04-06 22:15:00,87.71,111.35700000000001,50.437,30.736 -2020-04-06 22:30:00,87.15,98.445,50.437,30.736 -2020-04-06 22:45:00,85.4,91.066,50.437,30.736 -2020-04-06 23:00:00,73.0,82.488,42.756,30.736 -2020-04-06 23:15:00,73.24,81.514,42.756,30.736 -2020-04-06 23:30:00,69.53,80.881,42.756,30.736 -2020-04-06 23:45:00,72.17,81.986,42.756,30.736 -2020-04-07 00:00:00,69.6,77.01899999999999,39.857,30.736 -2020-04-07 00:15:00,70.65,77.579,39.857,30.736 -2020-04-07 00:30:00,69.86,75.704,39.857,30.736 -2020-04-07 00:45:00,70.53,73.96600000000001,39.857,30.736 -2020-04-07 01:00:00,69.2,75.119,37.233000000000004,30.736 -2020-04-07 01:15:00,73.23,74.282,37.233000000000004,30.736 -2020-04-07 01:30:00,72.34,73.097,37.233000000000004,30.736 -2020-04-07 01:45:00,73.13,72.648,37.233000000000004,30.736 -2020-04-07 02:00:00,72.15,74.37,35.856,30.736 -2020-04-07 02:15:00,72.53,73.82600000000001,35.856,30.736 -2020-04-07 02:30:00,68.0,76.265,35.856,30.736 -2020-04-07 02:45:00,74.06,76.898,35.856,30.736 -2020-04-07 03:00:00,72.61,80.45100000000001,34.766999999999996,30.736 -2020-04-07 03:15:00,72.94,82.287,34.766999999999996,30.736 -2020-04-07 03:30:00,74.44,82.10799999999999,34.766999999999996,30.736 -2020-04-07 03:45:00,76.22,82.777,34.766999999999996,30.736 -2020-04-07 04:00:00,80.49,95.38600000000001,35.468,30.736 -2020-04-07 04:15:00,82.48,108.21,35.468,30.736 -2020-04-07 04:30:00,85.73,108.561,35.468,30.736 -2020-04-07 04:45:00,90.58,110.554,35.468,30.736 -2020-04-07 05:00:00,100.18,146.112,40.399,30.736 -2020-04-07 05:15:00,102.56,179.535,40.399,30.736 -2020-04-07 05:30:00,104.29,169.34400000000002,40.399,30.736 -2020-04-07 05:45:00,106.96,158.921,40.399,30.736 -2020-04-07 06:00:00,110.4,160.033,54.105,30.736 -2020-04-07 06:15:00,110.63,165.732,54.105,30.736 -2020-04-07 06:30:00,112.93,163.855,54.105,30.736 -2020-04-07 06:45:00,116.12,164.59900000000002,54.105,30.736 -2020-04-07 07:00:00,116.23,167.41099999999997,63.083,30.736 -2020-04-07 07:15:00,115.06,168.44,63.083,30.736 -2020-04-07 07:30:00,115.2,167.024,63.083,30.736 -2020-04-07 07:45:00,113.5,163.887,63.083,30.736 -2020-04-07 08:00:00,110.51,162.91,57.254,30.736 -2020-04-07 08:15:00,109.08,160.877,57.254,30.736 -2020-04-07 08:30:00,109.23,155.965,57.254,30.736 -2020-04-07 08:45:00,109.56,152.909,57.254,30.736 -2020-04-07 09:00:00,107.69,146.993,51.395,30.736 -2020-04-07 09:15:00,108.09,144.628,51.395,30.736 -2020-04-07 09:30:00,104.87,146.349,51.395,30.736 -2020-04-07 09:45:00,106.35,145.477,51.395,30.736 -2020-04-07 10:00:00,103.01,141.299,48.201,30.736 -2020-04-07 10:15:00,102.97,140.826,48.201,30.736 -2020-04-07 10:30:00,100.59,138.631,48.201,30.736 -2020-04-07 10:45:00,102.15,138.48,48.201,30.736 -2020-04-07 11:00:00,99.8,132.81,46.133,30.736 -2020-04-07 11:15:00,99.29,133.372,46.133,30.736 -2020-04-07 11:30:00,97.42,134.46,46.133,30.736 -2020-04-07 11:45:00,99.27,135.839,46.133,30.736 -2020-04-07 12:00:00,102.69,131.346,44.243,30.736 -2020-04-07 12:15:00,103.58,131.928,44.243,30.736 -2020-04-07 12:30:00,101.04,131.215,44.243,30.736 -2020-04-07 12:45:00,96.93,131.998,44.243,30.736 -2020-04-07 13:00:00,95.94,132.735,45.042,30.736 -2020-04-07 13:15:00,97.03,131.35399999999998,45.042,30.736 -2020-04-07 13:30:00,100.96,129.305,45.042,30.736 -2020-04-07 13:45:00,103.24,128.042,45.042,30.736 -2020-04-07 14:00:00,101.28,129.875,44.062,30.736 -2020-04-07 14:15:00,102.93,128.732,44.062,30.736 -2020-04-07 14:30:00,106.26,128.583,44.062,30.736 -2020-04-07 14:45:00,104.54,129.403,44.062,30.736 -2020-04-07 15:00:00,100.32,129.96200000000002,46.461999999999996,30.736 -2020-04-07 15:15:00,100.71,128.40200000000002,46.461999999999996,30.736 -2020-04-07 15:30:00,104.76,127.404,46.461999999999996,30.736 -2020-04-07 15:45:00,106.51,126.71600000000001,46.461999999999996,30.736 -2020-04-07 16:00:00,105.14,127.979,48.802,30.736 -2020-04-07 16:15:00,108.47,129.028,48.802,30.736 -2020-04-07 16:30:00,110.54,129.042,48.802,30.736 -2020-04-07 16:45:00,111.8,127.31,48.802,30.736 -2020-04-07 17:00:00,111.67,127.27799999999999,55.672,30.736 -2020-04-07 17:15:00,118.31,129.785,55.672,30.736 -2020-04-07 17:30:00,117.23,131.864,55.672,30.736 -2020-04-07 17:45:00,116.51,132.929,55.672,30.736 -2020-04-07 18:00:00,113.28,135.825,57.006,30.736 -2020-04-07 18:15:00,116.51,137.267,57.006,30.736 -2020-04-07 18:30:00,115.8,135.695,57.006,30.736 -2020-04-07 18:45:00,116.19,141.224,57.006,30.736 -2020-04-07 19:00:00,111.29,139.591,57.148,30.736 -2020-04-07 19:15:00,116.99,138.437,57.148,30.736 -2020-04-07 19:30:00,116.1,138.225,57.148,30.736 -2020-04-07 19:45:00,113.98,138.225,57.148,30.736 -2020-04-07 20:00:00,104.78,133.197,61.895,30.736 -2020-04-07 20:15:00,109.17,129.917,61.895,30.736 -2020-04-07 20:30:00,105.18,129.49200000000002,61.895,30.736 -2020-04-07 20:45:00,104.44,128.619,61.895,30.736 -2020-04-07 21:00:00,94.22,122.29899999999999,54.78,30.736 -2020-04-07 21:15:00,98.11,120.87200000000001,54.78,30.736 -2020-04-07 21:30:00,95.36,121.095,54.78,30.736 -2020-04-07 21:45:00,95.09,120.073,54.78,30.736 -2020-04-07 22:00:00,82.41,113.87100000000001,50.76,30.736 -2020-04-07 22:15:00,81.69,111.046,50.76,30.736 -2020-04-07 22:30:00,86.54,98.31200000000001,50.76,30.736 -2020-04-07 22:45:00,86.26,91.10600000000001,50.76,30.736 -2020-04-07 23:00:00,79.29,82.12700000000001,44.162,30.736 -2020-04-07 23:15:00,77.16,81.404,44.162,30.736 -2020-04-07 23:30:00,74.84,80.531,44.162,30.736 -2020-04-07 23:45:00,80.07,81.457,44.162,30.736 -2020-04-08 00:00:00,77.66,76.607,39.061,30.736 -2020-04-08 00:15:00,75.81,77.182,39.061,30.736 -2020-04-08 00:30:00,72.88,75.296,39.061,30.736 -2020-04-08 00:45:00,69.77,73.563,39.061,30.736 -2020-04-08 01:00:00,73.18,74.697,35.795,30.736 -2020-04-08 01:15:00,76.79,73.837,35.795,30.736 -2020-04-08 01:30:00,75.5,72.631,35.795,30.736 -2020-04-08 01:45:00,70.46,72.187,35.795,30.736 -2020-04-08 02:00:00,71.43,73.89699999999999,33.316,30.736 -2020-04-08 02:15:00,70.31,73.337,33.316,30.736 -2020-04-08 02:30:00,70.6,75.797,33.316,30.736 -2020-04-08 02:45:00,78.12,76.435,33.316,30.736 -2020-04-08 03:00:00,79.43,80.005,32.803000000000004,30.736 -2020-04-08 03:15:00,79.12,81.814,32.803000000000004,30.736 -2020-04-08 03:30:00,75.54,81.631,32.803000000000004,30.736 -2020-04-08 03:45:00,77.28,82.321,32.803000000000004,30.736 -2020-04-08 04:00:00,80.55,94.90899999999999,34.235,30.736 -2020-04-08 04:15:00,81.61,107.698,34.235,30.736 -2020-04-08 04:30:00,85.38,108.055,34.235,30.736 -2020-04-08 04:45:00,90.05,110.037,34.235,30.736 -2020-04-08 05:00:00,97.97,145.516,38.65,30.736 -2020-04-08 05:15:00,99.52,178.87,38.65,30.736 -2020-04-08 05:30:00,102.97,168.683,38.65,30.736 -2020-04-08 05:45:00,107.04,158.297,38.65,30.736 -2020-04-08 06:00:00,111.56,159.431,54.951,30.736 -2020-04-08 06:15:00,113.89,165.113,54.951,30.736 -2020-04-08 06:30:00,116.9,163.208,54.951,30.736 -2020-04-08 06:45:00,118.83,163.938,54.951,30.736 -2020-04-08 07:00:00,121.7,166.757,67.328,30.736 -2020-04-08 07:15:00,121.52,167.764,67.328,30.736 -2020-04-08 07:30:00,120.53,166.30700000000002,67.328,30.736 -2020-04-08 07:45:00,119.16,163.157,67.328,30.736 -2020-04-08 08:00:00,115.39,162.161,60.23,30.736 -2020-04-08 08:15:00,117.51,160.15,60.23,30.736 -2020-04-08 08:30:00,118.44,155.19899999999998,60.23,30.736 -2020-04-08 08:45:00,119.61,152.173,60.23,30.736 -2020-04-08 09:00:00,120.78,146.264,56.845,30.736 -2020-04-08 09:15:00,122.55,143.903,56.845,30.736 -2020-04-08 09:30:00,122.95,145.643,56.845,30.736 -2020-04-08 09:45:00,122.4,144.80100000000002,56.845,30.736 -2020-04-08 10:00:00,122.17,140.63,53.832,30.736 -2020-04-08 10:15:00,121.08,140.207,53.832,30.736 -2020-04-08 10:30:00,124.05,138.03799999999998,53.832,30.736 -2020-04-08 10:45:00,121.53,137.908,53.832,30.736 -2020-04-08 11:00:00,113.64,132.23,53.225,30.736 -2020-04-08 11:15:00,107.84,132.815,53.225,30.736 -2020-04-08 11:30:00,106.89,133.906,53.225,30.736 -2020-04-08 11:45:00,109.26,135.306,53.225,30.736 -2020-04-08 12:00:00,115.23,130.839,50.676,30.736 -2020-04-08 12:15:00,114.32,131.429,50.676,30.736 -2020-04-08 12:30:00,105.49,130.672,50.676,30.736 -2020-04-08 12:45:00,103.19,131.458,50.676,30.736 -2020-04-08 13:00:00,101.47,132.237,50.646,30.736 -2020-04-08 13:15:00,107.86,130.846,50.646,30.736 -2020-04-08 13:30:00,106.14,128.796,50.646,30.736 -2020-04-08 13:45:00,114.59,127.53399999999999,50.646,30.736 -2020-04-08 14:00:00,122.83,129.437,50.786,30.736 -2020-04-08 14:15:00,123.75,128.27200000000002,50.786,30.736 -2020-04-08 14:30:00,119.06,128.078,50.786,30.736 -2020-04-08 14:45:00,114.36,128.901,50.786,30.736 -2020-04-08 15:00:00,108.95,129.488,51.535,30.736 -2020-04-08 15:15:00,110.42,127.902,51.535,30.736 -2020-04-08 15:30:00,107.51,126.854,51.535,30.736 -2020-04-08 15:45:00,110.73,126.148,51.535,30.736 -2020-04-08 16:00:00,116.16,127.445,53.157,30.736 -2020-04-08 16:15:00,113.87,128.469,53.157,30.736 -2020-04-08 16:30:00,113.4,128.485,53.157,30.736 -2020-04-08 16:45:00,118.97,126.69,53.157,30.736 -2020-04-08 17:00:00,120.55,126.706,57.793,30.736 -2020-04-08 17:15:00,115.72,129.194,57.793,30.736 -2020-04-08 17:30:00,117.9,131.276,57.793,30.736 -2020-04-08 17:45:00,119.34,132.32399999999998,57.793,30.736 -2020-04-08 18:00:00,118.83,135.232,59.872,30.736 -2020-04-08 18:15:00,114.99,136.711,59.872,30.736 -2020-04-08 18:30:00,117.03,135.128,59.872,30.736 -2020-04-08 18:45:00,117.74,140.667,59.872,30.736 -2020-04-08 19:00:00,117.3,139.016,60.17100000000001,30.736 -2020-04-08 19:15:00,117.96,137.872,60.17100000000001,30.736 -2020-04-08 19:30:00,117.33,137.67700000000002,60.17100000000001,30.736 -2020-04-08 19:45:00,114.3,137.71,60.17100000000001,30.736 -2020-04-08 20:00:00,102.99,132.656,65.015,30.736 -2020-04-08 20:15:00,103.02,129.386,65.015,30.736 -2020-04-08 20:30:00,107.09,128.996,65.015,30.736 -2020-04-08 20:45:00,106.0,128.14600000000002,65.015,30.736 -2020-04-08 21:00:00,97.85,121.82600000000001,57.805,30.736 -2020-04-08 21:15:00,90.97,120.40899999999999,57.805,30.736 -2020-04-08 21:30:00,89.79,120.62299999999999,57.805,30.736 -2020-04-08 21:45:00,86.79,119.63,57.805,30.736 -2020-04-08 22:00:00,81.91,113.434,52.115,30.736 -2020-04-08 22:15:00,83.05,110.63600000000001,52.115,30.736 -2020-04-08 22:30:00,86.93,97.867,52.115,30.736 -2020-04-08 22:45:00,87.46,90.656,52.115,30.736 -2020-04-08 23:00:00,83.24,81.655,42.871,30.736 -2020-04-08 23:15:00,77.77,80.96300000000001,42.871,30.736 -2020-04-08 23:30:00,78.21,80.09,42.871,30.736 -2020-04-08 23:45:00,81.71,81.031,42.871,30.736 -2020-04-09 00:00:00,75.02,76.195,39.203,30.736 -2020-04-09 00:15:00,76.58,76.783,39.203,30.736 -2020-04-09 00:30:00,70.26,74.887,39.203,30.736 -2020-04-09 00:45:00,71.93,73.15899999999999,39.203,30.736 -2020-04-09 01:00:00,73.86,74.275,37.118,30.736 -2020-04-09 01:15:00,78.67,73.393,37.118,30.736 -2020-04-09 01:30:00,78.31,72.165,37.118,30.736 -2020-04-09 01:45:00,73.67,71.726,37.118,30.736 -2020-04-09 02:00:00,71.77,73.42399999999999,35.647,30.736 -2020-04-09 02:15:00,74.57,72.848,35.647,30.736 -2020-04-09 02:30:00,78.65,75.328,35.647,30.736 -2020-04-09 02:45:00,79.41,75.971,35.647,30.736 -2020-04-09 03:00:00,73.94,79.559,34.585,30.736 -2020-04-09 03:15:00,75.69,81.342,34.585,30.736 -2020-04-09 03:30:00,76.28,81.153,34.585,30.736 -2020-04-09 03:45:00,77.96,81.862,34.585,30.736 -2020-04-09 04:00:00,84.48,94.429,36.184,30.736 -2020-04-09 04:15:00,90.28,107.18700000000001,36.184,30.736 -2020-04-09 04:30:00,90.56,107.54799999999999,36.184,30.736 -2020-04-09 04:45:00,91.01,109.51899999999999,36.184,30.736 -2020-04-09 05:00:00,97.64,144.918,41.019,30.736 -2020-04-09 05:15:00,101.38,178.203,41.019,30.736 -2020-04-09 05:30:00,106.13,168.021,41.019,30.736 -2020-04-09 05:45:00,108.39,157.672,41.019,30.736 -2020-04-09 06:00:00,111.79,158.826,53.963,30.736 -2020-04-09 06:15:00,114.39,164.495,53.963,30.736 -2020-04-09 06:30:00,116.98,162.559,53.963,30.736 -2020-04-09 06:45:00,121.2,163.276,53.963,30.736 -2020-04-09 07:00:00,121.1,166.09900000000002,66.512,30.736 -2020-04-09 07:15:00,120.6,167.085,66.512,30.736 -2020-04-09 07:30:00,119.91,165.58700000000002,66.512,30.736 -2020-04-09 07:45:00,118.39,162.42600000000002,66.512,30.736 -2020-04-09 08:00:00,117.51,161.411,58.86,30.736 -2020-04-09 08:15:00,117.76,159.423,58.86,30.736 -2020-04-09 08:30:00,121.48,154.435,58.86,30.736 -2020-04-09 08:45:00,121.83,151.436,58.86,30.736 -2020-04-09 09:00:00,120.69,145.533,52.156000000000006,30.736 -2020-04-09 09:15:00,115.59,143.17700000000002,52.156000000000006,30.736 -2020-04-09 09:30:00,110.08,144.937,52.156000000000006,30.736 -2020-04-09 09:45:00,113.84,144.123,52.156000000000006,30.736 -2020-04-09 10:00:00,105.34,139.96200000000002,49.034,30.736 -2020-04-09 10:15:00,105.65,139.588,49.034,30.736 -2020-04-09 10:30:00,104.77,137.445,49.034,30.736 -2020-04-09 10:45:00,105.43,137.336,49.034,30.736 -2020-04-09 11:00:00,100.95,131.65,46.53,30.736 -2020-04-09 11:15:00,102.14,132.259,46.53,30.736 -2020-04-09 11:30:00,101.09,133.35299999999998,46.53,30.736 -2020-04-09 11:45:00,101.76,134.774,46.53,30.736 -2020-04-09 12:00:00,100.18,130.33100000000002,43.318000000000005,30.736 -2020-04-09 12:15:00,105.05,130.931,43.318000000000005,30.736 -2020-04-09 12:30:00,101.1,130.13,43.318000000000005,30.736 -2020-04-09 12:45:00,98.59,130.916,43.318000000000005,30.736 -2020-04-09 13:00:00,98.99,131.74,41.608000000000004,30.736 -2020-04-09 13:15:00,100.83,130.338,41.608000000000004,30.736 -2020-04-09 13:30:00,100.23,128.286,41.608000000000004,30.736 -2020-04-09 13:45:00,97.6,127.027,41.608000000000004,30.736 -2020-04-09 14:00:00,107.53,128.997,41.786,30.736 -2020-04-09 14:15:00,114.19,127.811,41.786,30.736 -2020-04-09 14:30:00,114.7,127.574,41.786,30.736 -2020-04-09 14:45:00,112.0,128.401,41.786,30.736 -2020-04-09 15:00:00,111.51,129.015,44.181999999999995,30.736 -2020-04-09 15:15:00,112.57,127.40299999999999,44.181999999999995,30.736 -2020-04-09 15:30:00,107.02,126.306,44.181999999999995,30.736 -2020-04-09 15:45:00,110.02,125.58,44.181999999999995,30.736 -2020-04-09 16:00:00,117.62,126.913,45.956,30.736 -2020-04-09 16:15:00,115.32,127.911,45.956,30.736 -2020-04-09 16:30:00,113.91,127.928,45.956,30.736 -2020-04-09 16:45:00,115.9,126.07,45.956,30.736 -2020-04-09 17:00:00,120.99,126.135,50.702,30.736 -2020-04-09 17:15:00,120.94,128.60299999999998,50.702,30.736 -2020-04-09 17:30:00,122.61,130.686,50.702,30.736 -2020-04-09 17:45:00,117.98,131.719,50.702,30.736 -2020-04-09 18:00:00,116.45,134.638,53.595,30.736 -2020-04-09 18:15:00,119.67,136.156,53.595,30.736 -2020-04-09 18:30:00,119.28,134.56,53.595,30.736 -2020-04-09 18:45:00,118.54,140.11,53.595,30.736 -2020-04-09 19:00:00,113.55,138.439,54.207,30.736 -2020-04-09 19:15:00,111.16,137.30700000000002,54.207,30.736 -2020-04-09 19:30:00,116.65,137.13,54.207,30.736 -2020-04-09 19:45:00,115.97,137.195,54.207,30.736 -2020-04-09 20:00:00,108.98,132.112,56.948,30.736 -2020-04-09 20:15:00,107.57,128.85299999999998,56.948,30.736 -2020-04-09 20:30:00,101.4,128.499,56.948,30.736 -2020-04-09 20:45:00,106.29,127.67299999999999,56.948,30.736 -2020-04-09 21:00:00,102.08,121.351,52.157,30.736 -2020-04-09 21:15:00,96.68,119.946,52.157,30.736 -2020-04-09 21:30:00,90.04,120.15100000000001,52.157,30.736 -2020-04-09 21:45:00,89.87,119.18700000000001,52.157,30.736 -2020-04-09 22:00:00,90.47,112.99700000000001,47.483000000000004,30.736 -2020-04-09 22:15:00,88.93,110.225,47.483000000000004,30.736 -2020-04-09 22:30:00,83.44,97.421,47.483000000000004,30.736 -2020-04-09 22:45:00,80.92,90.204,47.483000000000004,30.736 -2020-04-09 23:00:00,64.51,81.181,41.978,30.736 -2020-04-09 23:15:00,64.07,80.52199999999999,41.978,30.736 -2020-04-09 23:30:00,61.31,79.64699999999999,41.978,30.736 -2020-04-09 23:45:00,61.8,80.60300000000001,41.978,30.736 -2020-04-10 00:00:00,59.64,74.03399999999999,30.72,30.618000000000002 -2020-04-10 00:15:00,60.38,70.993,30.72,30.618000000000002 -2020-04-10 00:30:00,56.32,69.40899999999999,30.72,30.618000000000002 -2020-04-10 00:45:00,59.16,68.405,30.72,30.618000000000002 -2020-04-10 01:00:00,57.38,69.718,26.553,30.618000000000002 -2020-04-10 01:15:00,57.59,69.342,26.553,30.618000000000002 -2020-04-10 01:30:00,57.08,67.82300000000001,26.553,30.618000000000002 -2020-04-10 01:45:00,58.03,67.472,26.553,30.618000000000002 -2020-04-10 02:00:00,53.88,69.205,22.712,30.618000000000002 -2020-04-10 02:15:00,57.6,67.71,22.712,30.618000000000002 -2020-04-10 02:30:00,54.83,70.5,22.712,30.618000000000002 -2020-04-10 02:45:00,57.8,71.417,22.712,30.618000000000002 -2020-04-10 03:00:00,58.43,75.032,20.511999999999997,30.618000000000002 -2020-04-10 03:15:00,56.11,75.366,20.511999999999997,30.618000000000002 -2020-04-10 03:30:00,59.21,74.673,20.511999999999997,30.618000000000002 -2020-04-10 03:45:00,59.68,76.515,20.511999999999997,30.618000000000002 -2020-04-10 04:00:00,61.34,85.525,19.98,30.618000000000002 -2020-04-10 04:15:00,58.56,94.279,19.98,30.618000000000002 -2020-04-10 04:30:00,61.08,93.85799999999999,19.98,30.618000000000002 -2020-04-10 04:45:00,61.82,94.49600000000001,19.98,30.618000000000002 -2020-04-10 05:00:00,61.78,112.44,22.715,30.618000000000002 -2020-04-10 05:15:00,63.19,127.439,22.715,30.618000000000002 -2020-04-10 05:30:00,63.03,118.79899999999999,22.715,30.618000000000002 -2020-04-10 05:45:00,62.57,114.056,22.715,30.618000000000002 -2020-04-10 06:00:00,63.5,131.666,22.576999999999998,30.618000000000002 -2020-04-10 06:15:00,64.36,150.401,22.576999999999998,30.618000000000002 -2020-04-10 06:30:00,66.27,141.877,22.576999999999998,30.618000000000002 -2020-04-10 06:45:00,66.56,134.958,22.576999999999998,30.618000000000002 -2020-04-10 07:00:00,72.0,135.668,23.541999999999998,30.618000000000002 -2020-04-10 07:15:00,72.94,134.844,23.541999999999998,30.618000000000002 -2020-04-10 07:30:00,72.56,134.6,23.541999999999998,30.618000000000002 -2020-04-10 07:45:00,72.68,133.276,23.541999999999998,30.618000000000002 -2020-04-10 08:00:00,73.27,136.041,23.895,30.618000000000002 -2020-04-10 08:15:00,73.33,137.007,23.895,30.618000000000002 -2020-04-10 08:30:00,72.0,135.178,23.895,30.618000000000002 -2020-04-10 08:45:00,71.59,134.93200000000002,23.895,30.618000000000002 -2020-04-10 09:00:00,63.96,130.424,24.239,30.618000000000002 -2020-04-10 09:15:00,70.6,130.297,24.239,30.618000000000002 -2020-04-10 09:30:00,70.79,132.411,24.239,30.618000000000002 -2020-04-10 09:45:00,73.79,132.059,24.239,30.618000000000002 -2020-04-10 10:00:00,71.11,129.239,21.985,30.618000000000002 -2020-04-10 10:15:00,71.88,130.02,21.985,30.618000000000002 -2020-04-10 10:30:00,72.52,128.593,21.985,30.618000000000002 -2020-04-10 10:45:00,68.48,128.07,21.985,30.618000000000002 -2020-04-10 11:00:00,65.66,122.911,22.093000000000004,30.618000000000002 -2020-04-10 11:15:00,62.4,122.189,22.093000000000004,30.618000000000002 -2020-04-10 11:30:00,60.95,123.34700000000001,22.093000000000004,30.618000000000002 -2020-04-10 11:45:00,61.95,124.551,22.093000000000004,30.618000000000002 -2020-04-10 12:00:00,55.24,120.56299999999999,19.041,30.618000000000002 -2020-04-10 12:15:00,54.22,121.271,19.041,30.618000000000002 -2020-04-10 12:30:00,54.57,119.821,19.041,30.618000000000002 -2020-04-10 12:45:00,58.91,119.413,19.041,30.618000000000002 -2020-04-10 13:00:00,55.07,119.819,12.672,30.618000000000002 -2020-04-10 13:15:00,56.02,119.266,12.672,30.618000000000002 -2020-04-10 13:30:00,52.03,116.676,12.672,30.618000000000002 -2020-04-10 13:45:00,51.25,115.288,12.672,30.618000000000002 -2020-04-10 14:00:00,51.01,117.75200000000001,10.321,30.618000000000002 -2020-04-10 14:15:00,54.91,116.723,10.321,30.618000000000002 -2020-04-10 14:30:00,54.25,116.304,10.321,30.618000000000002 -2020-04-10 14:45:00,50.76,116.64299999999999,10.321,30.618000000000002 -2020-04-10 15:00:00,52.9,116.525,13.478,30.618000000000002 -2020-04-10 15:15:00,55.88,115.546,13.478,30.618000000000002 -2020-04-10 15:30:00,52.88,114.59100000000001,13.478,30.618000000000002 -2020-04-10 15:45:00,57.97,114.529,13.478,30.618000000000002 -2020-04-10 16:00:00,62.6,115.57799999999999,17.623,30.618000000000002 -2020-04-10 16:15:00,64.61,116.676,17.623,30.618000000000002 -2020-04-10 16:30:00,67.2,117.40700000000001,17.623,30.618000000000002 -2020-04-10 16:45:00,69.59,115.771,17.623,30.618000000000002 -2020-04-10 17:00:00,76.4,116.23299999999999,22.64,30.618000000000002 -2020-04-10 17:15:00,75.58,118.92200000000001,22.64,30.618000000000002 -2020-04-10 17:30:00,77.36,121.331,22.64,30.618000000000002 -2020-04-10 17:45:00,75.89,123.815,22.64,30.618000000000002 -2020-04-10 18:00:00,81.02,127.62,29.147,30.618000000000002 -2020-04-10 18:15:00,79.22,131.172,29.147,30.618000000000002 -2020-04-10 18:30:00,80.59,129.843,29.147,30.618000000000002 -2020-04-10 18:45:00,80.5,132.89600000000002,29.147,30.618000000000002 -2020-04-10 19:00:00,84.47,133.018,34.491,30.618000000000002 -2020-04-10 19:15:00,83.92,132.095,34.491,30.618000000000002 -2020-04-10 19:30:00,81.85,132.35,34.491,30.618000000000002 -2020-04-10 19:45:00,81.31,133.11700000000002,34.491,30.618000000000002 -2020-04-10 20:00:00,76.54,129.928,41.368,30.618000000000002 -2020-04-10 20:15:00,76.86,128.756,41.368,30.618000000000002 -2020-04-10 20:30:00,73.31,128.704,41.368,30.618000000000002 -2020-04-10 20:45:00,75.27,126.87899999999999,41.368,30.618000000000002 -2020-04-10 21:00:00,70.24,120.53399999999999,37.605,30.618000000000002 -2020-04-10 21:15:00,71.86,119.846,37.605,30.618000000000002 -2020-04-10 21:30:00,65.09,120.75200000000001,37.605,30.618000000000002 -2020-04-10 21:45:00,68.77,120.009,37.605,30.618000000000002 -2020-04-10 22:00:00,65.32,115.573,36.472,30.618000000000002 -2020-04-10 22:15:00,64.47,113.001,36.472,30.618000000000002 -2020-04-10 22:30:00,62.29,108.45200000000001,36.472,30.618000000000002 -2020-04-10 22:45:00,61.86,104.22399999999999,36.472,30.618000000000002 -2020-04-10 23:00:00,78.85,95.059,31.816,30.618000000000002 -2020-04-10 23:15:00,77.86,93.334,31.816,30.618000000000002 -2020-04-10 23:30:00,74.26,90.906,31.816,30.618000000000002 -2020-04-10 23:45:00,72.92,90.618,31.816,30.618000000000002 -2020-04-11 00:00:00,73.14,72.59,39.184,30.618000000000002 -2020-04-11 00:15:00,74.22,70.405,39.184,30.618000000000002 -2020-04-11 00:30:00,72.87,69.128,39.184,30.618000000000002 -2020-04-11 00:45:00,67.49,67.756,39.184,30.618000000000002 -2020-04-11 01:00:00,70.97,68.992,34.692,30.618000000000002 -2020-04-11 01:15:00,73.16,68.01899999999999,34.692,30.618000000000002 -2020-04-11 01:30:00,71.68,66.232,34.692,30.618000000000002 -2020-04-11 01:45:00,67.54,66.294,34.692,30.618000000000002 -2020-04-11 02:00:00,71.64,68.439,32.919000000000004,30.618000000000002 -2020-04-11 02:15:00,73.62,67.054,32.919000000000004,30.618000000000002 -2020-04-11 02:30:00,69.77,69.232,32.919000000000004,30.618000000000002 -2020-04-11 02:45:00,69.74,70.032,32.919000000000004,30.618000000000002 -2020-04-11 03:00:00,65.86,73.10600000000001,32.024,30.618000000000002 -2020-04-11 03:15:00,64.59,73.584,32.024,30.618000000000002 -2020-04-11 03:30:00,65.11,72.45,32.024,30.618000000000002 -2020-04-11 03:45:00,64.5,74.812,32.024,30.618000000000002 -2020-04-11 04:00:00,65.68,83.98200000000001,31.958000000000002,30.618000000000002 -2020-04-11 04:15:00,66.71,93.564,31.958000000000002,30.618000000000002 -2020-04-11 04:30:00,65.87,92.339,31.958000000000002,30.618000000000002 -2020-04-11 04:45:00,66.99,93.068,31.958000000000002,30.618000000000002 -2020-04-11 05:00:00,67.85,112.939,32.75,30.618000000000002 -2020-04-11 05:15:00,67.86,129.761,32.75,30.618000000000002 -2020-04-11 05:30:00,69.08,121.459,32.75,30.618000000000002 -2020-04-11 05:45:00,71.14,116.765,32.75,30.618000000000002 -2020-04-11 06:00:00,72.48,135.846,34.461999999999996,30.618000000000002 -2020-04-11 06:15:00,75.1,155.151,34.461999999999996,30.618000000000002 -2020-04-11 06:30:00,77.55,147.668,34.461999999999996,30.618000000000002 -2020-04-11 06:45:00,80.71,141.945,34.461999999999996,30.618000000000002 -2020-04-11 07:00:00,82.56,141.024,37.736,30.618000000000002 -2020-04-11 07:15:00,83.76,141.615,37.736,30.618000000000002 -2020-04-11 07:30:00,85.57,141.409,37.736,30.618000000000002 -2020-04-11 07:45:00,88.05,140.57399999999998,37.736,30.618000000000002 -2020-04-11 08:00:00,89.53,141.81,42.34,30.618000000000002 -2020-04-11 08:15:00,90.05,142.239,42.34,30.618000000000002 -2020-04-11 08:30:00,88.35,138.835,42.34,30.618000000000002 -2020-04-11 08:45:00,88.99,137.342,42.34,30.618000000000002 -2020-04-11 09:00:00,80.42,133.192,43.571999999999996,30.618000000000002 -2020-04-11 09:15:00,83.26,132.951,43.571999999999996,30.618000000000002 -2020-04-11 09:30:00,81.39,134.967,43.571999999999996,30.618000000000002 -2020-04-11 09:45:00,76.24,134.215,43.571999999999996,30.618000000000002 -2020-04-11 10:00:00,74.6,129.458,40.514,30.618000000000002 -2020-04-11 10:15:00,75.54,129.858,40.514,30.618000000000002 -2020-04-11 10:30:00,76.68,127.932,40.514,30.618000000000002 -2020-04-11 10:45:00,76.58,128.249,40.514,30.618000000000002 -2020-04-11 11:00:00,73.64,122.635,36.388000000000005,30.618000000000002 -2020-04-11 11:15:00,73.67,122.054,36.388000000000005,30.618000000000002 -2020-04-11 11:30:00,76.9,123.58200000000001,36.388000000000005,30.618000000000002 -2020-04-11 11:45:00,74.29,124.258,36.388000000000005,30.618000000000002 -2020-04-11 12:00:00,69.92,120.24700000000001,35.217,30.618000000000002 -2020-04-11 12:15:00,66.27,119.885,35.217,30.618000000000002 -2020-04-11 12:30:00,67.34,119.337,35.217,30.618000000000002 -2020-04-11 12:45:00,67.73,119.915,35.217,30.618000000000002 -2020-04-11 13:00:00,63.46,121.039,32.001999999999995,30.618000000000002 -2020-04-11 13:15:00,65.05,118.553,32.001999999999995,30.618000000000002 -2020-04-11 13:30:00,61.84,116.615,32.001999999999995,30.618000000000002 -2020-04-11 13:45:00,62.81,115.204,32.001999999999995,30.618000000000002 -2020-04-11 14:00:00,62.8,117.021,31.304000000000002,30.618000000000002 -2020-04-11 14:15:00,63.27,114.906,31.304000000000002,30.618000000000002 -2020-04-11 14:30:00,63.28,114.103,31.304000000000002,30.618000000000002 -2020-04-11 14:45:00,63.54,115.226,31.304000000000002,30.618000000000002 -2020-04-11 15:00:00,63.73,116.178,34.731,30.618000000000002 -2020-04-11 15:15:00,64.31,114.98899999999999,34.731,30.618000000000002 -2020-04-11 15:30:00,66.0,113.639,34.731,30.618000000000002 -2020-04-11 15:45:00,68.73,112.928,34.731,30.618000000000002 -2020-04-11 16:00:00,71.32,113.571,38.769,30.618000000000002 -2020-04-11 16:15:00,71.76,115.17,38.769,30.618000000000002 -2020-04-11 16:30:00,74.69,115.245,38.769,30.618000000000002 -2020-04-11 16:45:00,79.72,113.42200000000001,38.769,30.618000000000002 -2020-04-11 17:00:00,82.56,113.86,44.928000000000004,30.618000000000002 -2020-04-11 17:15:00,80.55,116.00200000000001,44.928000000000004,30.618000000000002 -2020-04-11 17:30:00,82.25,117.81700000000001,44.928000000000004,30.618000000000002 -2020-04-11 17:45:00,84.04,118.53399999999999,44.928000000000004,30.618000000000002 -2020-04-11 18:00:00,86.25,122.461,47.786,30.618000000000002 -2020-04-11 18:15:00,84.53,125.369,47.786,30.618000000000002 -2020-04-11 18:30:00,84.88,125.551,47.786,30.618000000000002 -2020-04-11 18:45:00,85.38,127.315,47.786,30.618000000000002 -2020-04-11 19:00:00,86.2,126.56,47.463,30.618000000000002 -2020-04-11 19:15:00,85.71,125.825,47.463,30.618000000000002 -2020-04-11 19:30:00,86.11,126.334,47.463,30.618000000000002 -2020-04-11 19:45:00,84.4,126.412,47.463,30.618000000000002 -2020-04-11 20:00:00,81.75,123.16,43.735,30.618000000000002 -2020-04-11 20:15:00,80.33,121.42200000000001,43.735,30.618000000000002 -2020-04-11 20:30:00,77.95,120.17399999999999,43.735,30.618000000000002 -2020-04-11 20:45:00,76.55,120.03200000000001,43.735,30.618000000000002 -2020-04-11 21:00:00,71.3,115.48700000000001,40.346,30.618000000000002 -2020-04-11 21:15:00,70.85,115.375,40.346,30.618000000000002 -2020-04-11 21:30:00,68.16,116.42200000000001,40.346,30.618000000000002 -2020-04-11 21:45:00,67.66,115.43,40.346,30.618000000000002 -2020-04-11 22:00:00,63.94,110.7,39.323,30.618000000000002 -2020-04-11 22:15:00,64.14,109.53200000000001,39.323,30.618000000000002 -2020-04-11 22:30:00,61.85,107.27600000000001,39.323,30.618000000000002 -2020-04-11 22:45:00,61.25,104.26299999999999,39.323,30.618000000000002 -2020-04-11 23:00:00,60.08,97.06,33.716,30.618000000000002 -2020-04-11 23:15:00,58.06,93.493,33.716,30.618000000000002 -2020-04-11 23:30:00,55.51,90.814,33.716,30.618000000000002 -2020-04-11 23:45:00,56.45,89.876,33.716,30.618000000000002 -2020-04-12 00:00:00,54.53,73.203,30.72,30.618000000000002 -2020-04-12 00:15:00,52.88,70.192,30.72,30.618000000000002 -2020-04-12 00:30:00,52.07,68.59,30.72,30.618000000000002 -2020-04-12 00:45:00,53.98,67.596,30.72,30.618000000000002 -2020-04-12 01:00:00,48.89,68.872,26.553,30.618000000000002 -2020-04-12 01:15:00,53.69,68.45100000000001,26.553,30.618000000000002 -2020-04-12 01:30:00,51.28,66.889,26.553,30.618000000000002 -2020-04-12 01:45:00,53.95,66.54899999999999,26.553,30.618000000000002 -2020-04-12 02:00:00,50.72,68.258,22.712,30.618000000000002 -2020-04-12 02:15:00,54.24,66.73,22.712,30.618000000000002 -2020-04-12 02:30:00,51.64,69.561,22.712,30.618000000000002 -2020-04-12 02:45:00,51.01,70.486,22.712,30.618000000000002 -2020-04-12 03:00:00,50.48,74.13600000000001,20.511999999999997,30.618000000000002 -2020-04-12 03:15:00,51.91,74.418,20.511999999999997,30.618000000000002 -2020-04-12 03:30:00,51.98,73.71600000000001,20.511999999999997,30.618000000000002 -2020-04-12 03:45:00,52.83,75.598,20.511999999999997,30.618000000000002 -2020-04-12 04:00:00,51.89,84.565,19.98,30.618000000000002 -2020-04-12 04:15:00,52.74,93.25200000000001,19.98,30.618000000000002 -2020-04-12 04:30:00,52.54,92.84100000000001,19.98,30.618000000000002 -2020-04-12 04:45:00,54.38,93.456,19.98,30.618000000000002 -2020-04-12 05:00:00,55.46,111.241,22.715,30.618000000000002 -2020-04-12 05:15:00,53.48,126.101,22.715,30.618000000000002 -2020-04-12 05:30:00,55.9,117.47200000000001,22.715,30.618000000000002 -2020-04-12 05:45:00,53.71,112.805,22.715,30.618000000000002 -2020-04-12 06:00:00,55.53,130.452,22.576999999999998,30.618000000000002 -2020-04-12 06:15:00,59.67,149.158,22.576999999999998,30.618000000000002 -2020-04-12 06:30:00,62.15,140.576,22.576999999999998,30.618000000000002 -2020-04-12 06:45:00,61.32,133.628,22.576999999999998,30.618000000000002 -2020-04-12 07:00:00,67.05,134.34799999999998,23.541999999999998,30.618000000000002 -2020-04-12 07:15:00,67.97,133.483,23.541999999999998,30.618000000000002 -2020-04-12 07:30:00,69.68,133.157,23.541999999999998,30.618000000000002 -2020-04-12 07:45:00,69.61,131.813,23.541999999999998,30.618000000000002 -2020-04-12 08:00:00,74.12,134.54,27.568,30.618000000000002 -2020-04-12 08:15:00,75.03,135.55200000000002,27.568,30.618000000000002 -2020-04-12 08:30:00,74.98,133.65,27.568,30.618000000000002 -2020-04-12 08:45:00,73.91,133.46200000000002,27.568,30.618000000000002 -2020-04-12 09:00:00,76.48,128.969,27.965,30.618000000000002 -2020-04-12 09:15:00,73.74,128.851,27.965,30.618000000000002 -2020-04-12 09:30:00,75.72,130.999,27.965,30.618000000000002 -2020-04-12 09:45:00,74.12,130.707,27.965,30.618000000000002 -2020-04-12 10:00:00,72.15,127.902,25.365,30.618000000000002 -2020-04-12 10:15:00,77.67,128.786,25.365,30.618000000000002 -2020-04-12 10:30:00,77.66,127.40899999999999,25.365,30.618000000000002 -2020-04-12 10:45:00,82.07,126.928,25.365,30.618000000000002 -2020-04-12 11:00:00,72.99,121.75399999999999,25.489,30.618000000000002 -2020-04-12 11:15:00,75.01,121.08,25.489,30.618000000000002 -2020-04-12 11:30:00,71.52,122.244,25.489,30.618000000000002 -2020-04-12 11:45:00,69.58,123.48700000000001,25.489,30.618000000000002 -2020-04-12 12:00:00,68.21,119.55,21.968000000000004,30.618000000000002 -2020-04-12 12:15:00,67.52,120.275,21.968000000000004,30.618000000000002 -2020-04-12 12:30:00,66.81,118.738,21.968000000000004,30.618000000000002 -2020-04-12 12:45:00,67.38,118.333,21.968000000000004,30.618000000000002 -2020-04-12 13:00:00,60.59,118.82600000000001,14.62,30.618000000000002 -2020-04-12 13:15:00,59.39,118.251,14.62,30.618000000000002 -2020-04-12 13:30:00,58.18,115.65799999999999,14.62,30.618000000000002 -2020-04-12 13:45:00,60.55,114.27600000000001,14.62,30.618000000000002 -2020-04-12 14:00:00,59.16,116.87700000000001,11.908,30.618000000000002 -2020-04-12 14:15:00,60.01,115.804,11.908,30.618000000000002 -2020-04-12 14:30:00,56.92,115.295,11.908,30.618000000000002 -2020-04-12 14:45:00,58.07,115.64200000000001,11.908,30.618000000000002 -2020-04-12 15:00:00,61.44,115.57700000000001,15.55,30.618000000000002 -2020-04-12 15:15:00,62.16,114.54899999999999,15.55,30.618000000000002 -2020-04-12 15:30:00,62.09,113.494,15.55,30.618000000000002 -2020-04-12 15:45:00,63.69,113.395,15.55,30.618000000000002 -2020-04-12 16:00:00,63.44,114.516,20.332,30.618000000000002 -2020-04-12 16:15:00,65.92,115.56,20.332,30.618000000000002 -2020-04-12 16:30:00,69.07,116.295,20.332,30.618000000000002 -2020-04-12 16:45:00,69.42,114.53200000000001,20.332,30.618000000000002 -2020-04-12 17:00:00,77.2,115.094,26.121,30.618000000000002 -2020-04-12 17:15:00,75.08,117.742,26.121,30.618000000000002 -2020-04-12 17:30:00,76.8,120.152,26.121,30.618000000000002 -2020-04-12 17:45:00,76.23,122.604,26.121,30.618000000000002 -2020-04-12 18:00:00,79.58,126.429,33.626999999999995,30.618000000000002 -2020-04-12 18:15:00,77.87,130.05700000000002,33.626999999999995,30.618000000000002 -2020-04-12 18:30:00,78.53,128.704,33.626999999999995,30.618000000000002 -2020-04-12 18:45:00,80.41,131.775,33.626999999999995,30.618000000000002 -2020-04-12 19:00:00,79.37,131.862,39.793,30.618000000000002 -2020-04-12 19:15:00,79.52,130.96200000000002,39.793,30.618000000000002 -2020-04-12 19:30:00,78.47,131.251,39.793,30.618000000000002 -2020-04-12 19:45:00,77.25,132.084,39.793,30.618000000000002 -2020-04-12 20:00:00,74.47,128.839,41.368,30.618000000000002 -2020-04-12 20:15:00,73.54,127.68799999999999,41.368,30.618000000000002 -2020-04-12 20:30:00,73.03,127.709,41.368,30.618000000000002 -2020-04-12 20:45:00,72.54,125.928,41.368,30.618000000000002 -2020-04-12 21:00:00,69.45,119.583,37.605,30.618000000000002 -2020-04-12 21:15:00,69.2,118.919,37.605,30.618000000000002 -2020-04-12 21:30:00,64.59,119.805,37.605,30.618000000000002 -2020-04-12 21:45:00,67.2,119.119,37.605,30.618000000000002 -2020-04-12 22:00:00,62.87,114.694,36.472,30.618000000000002 -2020-04-12 22:15:00,62.97,112.175,36.472,30.618000000000002 -2020-04-12 22:30:00,58.12,107.554,36.472,30.618000000000002 -2020-04-12 22:45:00,60.08,103.31299999999999,36.472,30.618000000000002 -2020-04-12 23:00:00,57.22,94.10700000000001,31.816,30.618000000000002 -2020-04-12 23:15:00,57.26,92.449,31.816,30.618000000000002 -2020-04-12 23:30:00,53.07,90.01700000000001,31.816,30.618000000000002 -2020-04-12 23:45:00,55.28,89.759,31.816,30.618000000000002 -2020-04-13 00:00:00,49.89,72.78699999999999,30.72,30.618000000000002 -2020-04-13 00:15:00,53.6,69.791,30.72,30.618000000000002 -2020-04-13 00:30:00,50.52,68.178,30.72,30.618000000000002 -2020-04-13 00:45:00,53.11,67.191,30.72,30.618000000000002 -2020-04-13 01:00:00,47.65,68.449,26.553,30.618000000000002 -2020-04-13 01:15:00,51.91,68.006,26.553,30.618000000000002 -2020-04-13 01:30:00,48.7,66.422,26.553,30.618000000000002 -2020-04-13 01:45:00,51.4,66.087,26.553,30.618000000000002 -2020-04-13 02:00:00,49.72,67.783,22.712,30.618000000000002 -2020-04-13 02:15:00,48.31,66.24,22.712,30.618000000000002 -2020-04-13 02:30:00,50.79,69.09100000000001,22.712,30.618000000000002 -2020-04-13 02:45:00,48.57,70.021,22.712,30.618000000000002 -2020-04-13 03:00:00,51.31,73.689,20.511999999999997,30.618000000000002 -2020-04-13 03:15:00,52.15,73.943,20.511999999999997,30.618000000000002 -2020-04-13 03:30:00,51.38,73.236,20.511999999999997,30.618000000000002 -2020-04-13 03:45:00,54.02,75.139,20.511999999999997,30.618000000000002 -2020-04-13 04:00:00,54.39,84.085,19.98,30.618000000000002 -2020-04-13 04:15:00,55.93,92.73899999999999,19.98,30.618000000000002 -2020-04-13 04:30:00,56.7,92.33200000000001,19.98,30.618000000000002 -2020-04-13 04:45:00,57.44,92.93700000000001,19.98,30.618000000000002 -2020-04-13 05:00:00,58.82,110.641,22.715,30.618000000000002 -2020-04-13 05:15:00,59.57,125.43,22.715,30.618000000000002 -2020-04-13 05:30:00,57.7,116.80799999999999,22.715,30.618000000000002 -2020-04-13 05:45:00,55.37,112.177,22.715,30.618000000000002 -2020-04-13 06:00:00,58.84,129.845,22.576999999999998,30.618000000000002 -2020-04-13 06:15:00,57.13,148.534,22.576999999999998,30.618000000000002 -2020-04-13 06:30:00,60.7,139.924,22.576999999999998,30.618000000000002 -2020-04-13 06:45:00,62.85,132.963,22.576999999999998,30.618000000000002 -2020-04-13 07:00:00,68.7,133.687,23.541999999999998,30.618000000000002 -2020-04-13 07:15:00,68.91,132.80200000000002,23.541999999999998,30.618000000000002 -2020-04-13 07:30:00,66.28,132.436,23.541999999999998,30.618000000000002 -2020-04-13 07:45:00,71.72,131.08,23.541999999999998,30.618000000000002 -2020-04-13 08:00:00,70.13,133.79,23.895,30.618000000000002 -2020-04-13 08:15:00,72.83,134.825,23.895,30.618000000000002 -2020-04-13 08:30:00,69.75,132.886,23.895,30.618000000000002 -2020-04-13 08:45:00,71.31,132.72899999999998,23.895,30.618000000000002 -2020-04-13 09:00:00,67.16,128.24200000000002,24.239,30.618000000000002 -2020-04-13 09:15:00,66.12,128.127,24.239,30.618000000000002 -2020-04-13 09:30:00,64.1,130.295,24.239,30.618000000000002 -2020-04-13 09:45:00,66.42,130.032,24.239,30.618000000000002 -2020-04-13 10:00:00,67.4,127.23700000000001,21.985,30.618000000000002 -2020-04-13 10:15:00,66.6,128.17,21.985,30.618000000000002 -2020-04-13 10:30:00,70.58,126.81700000000001,21.985,30.618000000000002 -2020-04-13 10:45:00,69.07,126.359,21.985,30.618000000000002 -2020-04-13 11:00:00,63.2,121.177,22.093000000000004,30.618000000000002 -2020-04-13 11:15:00,62.5,120.52799999999999,22.093000000000004,30.618000000000002 -2020-04-13 11:30:00,63.4,121.693,22.093000000000004,30.618000000000002 -2020-04-13 11:45:00,71.72,122.95700000000001,22.093000000000004,30.618000000000002 -2020-04-13 12:00:00,63.81,119.045,19.041,30.618000000000002 -2020-04-13 12:15:00,54.06,119.77799999999999,19.041,30.618000000000002 -2020-04-13 12:30:00,54.23,118.197,19.041,30.618000000000002 -2020-04-13 12:45:00,56.47,117.792,19.041,30.618000000000002 -2020-04-13 13:00:00,56.38,118.329,12.672,30.618000000000002 -2020-04-13 13:15:00,51.32,117.744,12.672,30.618000000000002 -2020-04-13 13:30:00,50.09,115.15,12.672,30.618000000000002 -2020-04-13 13:45:00,52.76,113.772,12.672,30.618000000000002 -2020-04-13 14:00:00,50.0,116.441,10.321,30.618000000000002 -2020-04-13 14:15:00,47.98,115.345,10.321,30.618000000000002 -2020-04-13 14:30:00,46.88,114.791,10.321,30.618000000000002 -2020-04-13 14:45:00,51.58,115.14200000000001,10.321,30.618000000000002 -2020-04-13 15:00:00,52.85,115.103,13.478,30.618000000000002 -2020-04-13 15:15:00,53.15,114.051,13.478,30.618000000000002 -2020-04-13 15:30:00,51.27,112.945,13.478,30.618000000000002 -2020-04-13 15:45:00,52.98,112.829,13.478,30.618000000000002 -2020-04-13 16:00:00,57.21,113.985,17.623,30.618000000000002 -2020-04-13 16:15:00,61.89,115.00399999999999,17.623,30.618000000000002 -2020-04-13 16:30:00,63.48,115.741,17.623,30.618000000000002 -2020-04-13 16:45:00,65.1,113.913,17.623,30.618000000000002 -2020-04-13 17:00:00,72.1,114.525,22.64,30.618000000000002 -2020-04-13 17:15:00,73.56,117.152,22.64,30.618000000000002 -2020-04-13 17:30:00,76.1,119.56299999999999,22.64,30.618000000000002 -2020-04-13 17:45:00,77.85,121.99799999999999,22.64,30.618000000000002 -2020-04-13 18:00:00,78.34,125.833,29.147,30.618000000000002 -2020-04-13 18:15:00,78.86,129.499,29.147,30.618000000000002 -2020-04-13 18:30:00,81.38,128.134,29.147,30.618000000000002 -2020-04-13 18:45:00,82.16,131.215,29.147,30.618000000000002 -2020-04-13 19:00:00,86.48,131.284,34.491,30.618000000000002 -2020-04-13 19:15:00,87.39,130.394,34.491,30.618000000000002 -2020-04-13 19:30:00,85.34,130.702,34.491,30.618000000000002 -2020-04-13 19:45:00,84.46,131.567,34.491,30.618000000000002 -2020-04-13 20:00:00,81.57,128.29399999999998,41.368,30.618000000000002 -2020-04-13 20:15:00,80.87,127.15299999999999,41.368,30.618000000000002 -2020-04-13 20:30:00,77.82,127.21,41.368,30.618000000000002 -2020-04-13 20:45:00,80.82,125.45200000000001,41.368,30.618000000000002 -2020-04-13 21:00:00,80.42,119.10700000000001,37.605,30.618000000000002 -2020-04-13 21:15:00,79.52,118.454,37.605,30.618000000000002 -2020-04-13 21:30:00,74.22,119.331,37.605,30.618000000000002 -2020-04-13 21:45:00,76.26,118.67399999999999,37.605,30.618000000000002 -2020-04-13 22:00:00,68.73,114.255,36.472,30.618000000000002 -2020-04-13 22:15:00,70.32,111.76100000000001,36.472,30.618000000000002 -2020-04-13 22:30:00,68.58,107.104,36.472,30.618000000000002 -2020-04-13 22:45:00,70.36,102.85700000000001,36.472,30.618000000000002 -2020-04-13 23:00:00,81.66,93.63,31.816,30.618000000000002 -2020-04-13 23:15:00,81.85,92.005,31.816,30.618000000000002 -2020-04-13 23:30:00,75.45,89.572,31.816,30.618000000000002 -2020-04-13 23:45:00,76.28,89.32799999999999,31.816,30.618000000000002 -2020-04-14 00:00:00,77.57,74.116,39.857,30.736 -2020-04-14 00:15:00,78.7,74.781,39.857,30.736 -2020-04-14 00:30:00,77.84,72.835,39.857,30.736 -2020-04-14 00:45:00,74.5,71.13600000000001,39.857,30.736 -2020-04-14 01:00:00,78.14,72.16,37.233000000000004,30.736 -2020-04-14 01:15:00,79.78,71.166,37.233000000000004,30.736 -2020-04-14 01:30:00,79.36,69.831,37.233000000000004,30.736 -2020-04-14 01:45:00,76.71,69.417,37.233000000000004,30.736 -2020-04-14 02:00:00,79.63,71.053,35.856,30.736 -2020-04-14 02:15:00,80.53,70.399,35.856,30.736 -2020-04-14 02:30:00,77.64,72.979,35.856,30.736 -2020-04-14 02:45:00,77.36,73.646,35.856,30.736 -2020-04-14 03:00:00,80.42,77.32,34.766999999999996,30.736 -2020-04-14 03:15:00,77.51,78.97,34.766999999999996,30.736 -2020-04-14 03:30:00,78.75,78.759,34.766999999999996,30.736 -2020-04-14 03:45:00,85.63,79.569,34.766999999999996,30.736 -2020-04-14 04:00:00,90.63,92.03,35.468,30.736 -2020-04-14 04:15:00,89.42,104.62,35.468,30.736 -2020-04-14 04:30:00,89.05,105.006,35.468,30.736 -2020-04-14 04:45:00,91.92,106.92,35.468,30.736 -2020-04-14 05:00:00,100.81,141.918,40.399,30.736 -2020-04-14 05:15:00,102.84,174.856,40.399,30.736 -2020-04-14 05:30:00,105.47,164.701,40.399,30.736 -2020-04-14 05:45:00,107.4,154.543,40.399,30.736 -2020-04-14 06:00:00,112.59,155.791,54.105,30.736 -2020-04-14 06:15:00,113.37,161.384,54.105,30.736 -2020-04-14 06:30:00,116.15,159.305,54.105,30.736 -2020-04-14 06:45:00,117.75,159.95,54.105,30.736 -2020-04-14 07:00:00,122.9,162.8,63.083,30.736 -2020-04-14 07:15:00,119.48,163.681,63.083,30.736 -2020-04-14 07:30:00,122.96,161.981,63.083,30.736 -2020-04-14 07:45:00,119.45,158.767,63.083,30.736 -2020-04-14 08:00:00,120.93,157.66,57.254,30.736 -2020-04-14 08:15:00,123.65,155.789,57.254,30.736 -2020-04-14 08:30:00,125.42,150.616,57.254,30.736 -2020-04-14 08:45:00,126.12,147.766,57.254,30.736 -2020-04-14 09:00:00,121.6,141.899,51.395,30.736 -2020-04-14 09:15:00,123.45,139.561,51.395,30.736 -2020-04-14 09:30:00,123.95,141.412,51.395,30.736 -2020-04-14 09:45:00,124.96,140.746,51.395,30.736 -2020-04-14 10:00:00,122.16,136.626,48.201,30.736 -2020-04-14 10:15:00,123.54,136.503,48.201,30.736 -2020-04-14 10:30:00,121.52,134.487,48.201,30.736 -2020-04-14 10:45:00,120.31,134.483,48.201,30.736 -2020-04-14 11:00:00,116.44,128.762,46.133,30.736 -2020-04-14 11:15:00,111.12,129.491,46.133,30.736 -2020-04-14 11:30:00,108.43,130.6,46.133,30.736 -2020-04-14 11:45:00,109.42,132.118,46.133,30.736 -2020-04-14 12:00:00,104.93,127.803,44.243,30.736 -2020-04-14 12:15:00,109.73,128.44299999999998,44.243,30.736 -2020-04-14 12:30:00,108.63,127.42299999999999,44.243,30.736 -2020-04-14 12:45:00,105.87,128.214,44.243,30.736 -2020-04-14 13:00:00,99.12,129.259,45.042,30.736 -2020-04-14 13:15:00,98.79,127.802,45.042,30.736 -2020-04-14 13:30:00,104.88,125.742,45.042,30.736 -2020-04-14 13:45:00,105.06,124.499,45.042,30.736 -2020-04-14 14:00:00,104.5,126.81,44.062,30.736 -2020-04-14 14:15:00,101.57,125.516,44.062,30.736 -2020-04-14 14:30:00,96.19,125.055,44.062,30.736 -2020-04-14 14:45:00,96.11,125.898,44.062,30.736 -2020-04-14 15:00:00,107.14,126.646,46.461999999999996,30.736 -2020-04-14 15:15:00,106.37,124.911,46.461999999999996,30.736 -2020-04-14 15:30:00,104.16,123.564,46.461999999999996,30.736 -2020-04-14 15:45:00,104.55,122.74700000000001,46.461999999999996,30.736 -2020-04-14 16:00:00,107.58,124.26,48.802,30.736 -2020-04-14 16:15:00,113.1,125.12299999999999,48.802,30.736 -2020-04-14 16:30:00,111.12,125.152,48.802,30.736 -2020-04-14 16:45:00,110.6,122.97399999999999,48.802,30.736 -2020-04-14 17:00:00,112.54,123.29,55.672,30.736 -2020-04-14 17:15:00,115.47,125.654,55.672,30.736 -2020-04-14 17:30:00,119.06,127.742,55.672,30.736 -2020-04-14 17:45:00,115.7,128.691,55.672,30.736 -2020-04-14 18:00:00,112.52,131.662,57.006,30.736 -2020-04-14 18:15:00,117.42,133.36700000000002,57.006,30.736 -2020-04-14 18:30:00,119.58,131.71200000000002,57.006,30.736 -2020-04-14 18:45:00,117.04,137.30700000000002,57.006,30.736 -2020-04-14 19:00:00,110.56,135.55100000000002,57.148,30.736 -2020-04-14 19:15:00,107.17,134.471,57.148,30.736 -2020-04-14 19:30:00,115.88,134.385,57.148,30.736 -2020-04-14 19:45:00,113.92,134.611,57.148,30.736 -2020-04-14 20:00:00,110.45,129.387,61.895,30.736 -2020-04-14 20:15:00,109.71,126.18299999999999,61.895,30.736 -2020-04-14 20:30:00,100.85,126.009,61.895,30.736 -2020-04-14 20:45:00,108.91,125.295,61.895,30.736 -2020-04-14 21:00:00,103.46,118.976,54.78,30.736 -2020-04-14 21:15:00,102.44,117.626,54.78,30.736 -2020-04-14 21:30:00,93.5,117.785,54.78,30.736 -2020-04-14 21:45:00,87.39,116.962,54.78,30.736 -2020-04-14 22:00:00,87.83,110.8,50.76,30.736 -2020-04-14 22:15:00,90.13,108.15799999999999,50.76,30.736 -2020-04-14 22:30:00,87.92,95.17399999999999,50.76,30.736 -2020-04-14 22:45:00,84.46,87.926,50.76,30.736 -2020-04-14 23:00:00,74.36,78.79899999999999,44.162,30.736 -2020-04-14 23:15:00,76.0,78.307,44.162,30.736 -2020-04-14 23:30:00,74.94,77.425,44.162,30.736 -2020-04-14 23:45:00,73.87,78.453,44.162,30.736 -2020-04-15 00:00:00,70.64,73.699,39.061,30.736 -2020-04-15 00:15:00,72.45,74.37899999999999,39.061,30.736 -2020-04-15 00:30:00,71.26,72.425,39.061,30.736 -2020-04-15 00:45:00,73.44,70.73100000000001,39.061,30.736 -2020-04-15 01:00:00,71.82,71.737,35.795,30.736 -2020-04-15 01:15:00,71.14,70.721,35.795,30.736 -2020-04-15 01:30:00,71.08,69.36399999999999,35.795,30.736 -2020-04-15 01:45:00,72.01,68.956,35.795,30.736 -2020-04-15 02:00:00,70.74,70.58,33.316,30.736 -2020-04-15 02:15:00,70.1,69.90899999999999,33.316,30.736 -2020-04-15 02:30:00,72.27,72.509,33.316,30.736 -2020-04-15 02:45:00,78.4,73.181,33.316,30.736 -2020-04-15 03:00:00,80.61,76.872,32.803000000000004,30.736 -2020-04-15 03:15:00,83.75,78.49600000000001,32.803000000000004,30.736 -2020-04-15 03:30:00,82.05,78.28,32.803000000000004,30.736 -2020-04-15 03:45:00,86.07,79.111,32.803000000000004,30.736 -2020-04-15 04:00:00,88.31,91.54899999999999,34.235,30.736 -2020-04-15 04:15:00,89.49,104.10700000000001,34.235,30.736 -2020-04-15 04:30:00,87.96,104.49600000000001,34.235,30.736 -2020-04-15 04:45:00,93.45,106.40100000000001,34.235,30.736 -2020-04-15 05:00:00,98.18,141.31799999999998,38.65,30.736 -2020-04-15 05:15:00,101.94,174.18400000000003,38.65,30.736 -2020-04-15 05:30:00,105.86,164.03599999999997,38.65,30.736 -2020-04-15 05:45:00,109.69,153.917,38.65,30.736 -2020-04-15 06:00:00,114.65,155.183,54.951,30.736 -2020-04-15 06:15:00,114.16,160.76,54.951,30.736 -2020-04-15 06:30:00,116.39,158.65200000000002,54.951,30.736 -2020-04-15 06:45:00,116.53,159.284,54.951,30.736 -2020-04-15 07:00:00,117.39,162.137,67.328,30.736 -2020-04-15 07:15:00,117.4,162.999,67.328,30.736 -2020-04-15 07:30:00,115.55,161.259,67.328,30.736 -2020-04-15 07:45:00,112.28,158.037,67.328,30.736 -2020-04-15 08:00:00,111.52,156.912,60.23,30.736 -2020-04-15 08:15:00,111.85,155.064,60.23,30.736 -2020-04-15 08:30:00,112.04,149.856,60.23,30.736 -2020-04-15 08:45:00,110.65,147.036,60.23,30.736 -2020-04-15 09:00:00,106.92,141.17600000000002,56.845,30.736 -2020-04-15 09:15:00,107.34,138.842,56.845,30.736 -2020-04-15 09:30:00,106.27,140.71,56.845,30.736 -2020-04-15 09:45:00,106.1,140.07299999999998,56.845,30.736 -2020-04-15 10:00:00,105.75,135.961,53.832,30.736 -2020-04-15 10:15:00,106.27,135.888,53.832,30.736 -2020-04-15 10:30:00,106.67,133.898,53.832,30.736 -2020-04-15 10:45:00,105.02,133.914,53.832,30.736 -2020-04-15 11:00:00,103.38,128.187,53.225,30.736 -2020-04-15 11:15:00,103.27,128.941,53.225,30.736 -2020-04-15 11:30:00,104.28,130.05100000000002,53.225,30.736 -2020-04-15 11:45:00,102.15,131.589,53.225,30.736 -2020-04-15 12:00:00,100.29,127.3,50.676,30.736 -2020-04-15 12:15:00,98.13,127.947,50.676,30.736 -2020-04-15 12:30:00,104.5,126.884,50.676,30.736 -2020-04-15 12:45:00,105.18,127.676,50.676,30.736 -2020-04-15 13:00:00,101.11,128.764,50.646,30.736 -2020-04-15 13:15:00,100.65,127.29700000000001,50.646,30.736 -2020-04-15 13:30:00,102.83,125.236,50.646,30.736 -2020-04-15 13:45:00,103.75,123.99700000000001,50.646,30.736 -2020-04-15 14:00:00,104.03,126.375,50.786,30.736 -2020-04-15 14:15:00,97.55,125.059,50.786,30.736 -2020-04-15 14:30:00,97.21,124.553,50.786,30.736 -2020-04-15 14:45:00,102.82,125.4,50.786,30.736 -2020-04-15 15:00:00,103.26,126.17299999999999,51.535,30.736 -2020-04-15 15:15:00,100.4,124.414,51.535,30.736 -2020-04-15 15:30:00,99.53,123.01799999999999,51.535,30.736 -2020-04-15 15:45:00,104.12,122.182,51.535,30.736 -2020-04-15 16:00:00,104.01,123.73200000000001,53.157,30.736 -2020-04-15 16:15:00,108.96,124.56700000000001,53.157,30.736 -2020-04-15 16:30:00,107.57,124.6,53.157,30.736 -2020-04-15 16:45:00,115.32,122.35799999999999,53.157,30.736 -2020-04-15 17:00:00,116.1,122.72399999999999,57.793,30.736 -2020-04-15 17:15:00,113.72,125.06700000000001,57.793,30.736 -2020-04-15 17:30:00,111.49,127.154,57.793,30.736 -2020-04-15 17:45:00,115.74,128.088,57.793,30.736 -2020-04-15 18:00:00,119.64,131.067,59.872,30.736 -2020-04-15 18:15:00,116.25,132.809,59.872,30.736 -2020-04-15 18:30:00,111.49,131.142,59.872,30.736 -2020-04-15 18:45:00,111.02,136.745,59.872,30.736 -2020-04-15 19:00:00,115.27,134.97299999999998,60.17100000000001,30.736 -2020-04-15 19:15:00,112.47,133.905,60.17100000000001,30.736 -2020-04-15 19:30:00,112.99,133.835,60.17100000000001,30.736 -2020-04-15 19:45:00,112.24,134.093,60.17100000000001,30.736 -2020-04-15 20:00:00,110.1,128.842,65.015,30.736 -2020-04-15 20:15:00,111.51,125.648,65.015,30.736 -2020-04-15 20:30:00,106.08,125.51100000000001,65.015,30.736 -2020-04-15 20:45:00,109.31,124.819,65.015,30.736 -2020-04-15 21:00:00,104.34,118.501,57.805,30.736 -2020-04-15 21:15:00,101.95,117.163,57.805,30.736 -2020-04-15 21:30:00,93.9,117.31200000000001,57.805,30.736 -2020-04-15 21:45:00,86.0,116.51700000000001,57.805,30.736 -2020-04-15 22:00:00,78.84,110.359,52.115,30.736 -2020-04-15 22:15:00,87.14,107.744,52.115,30.736 -2020-04-15 22:30:00,85.74,94.72200000000001,52.115,30.736 -2020-04-15 22:45:00,86.73,87.46799999999999,52.115,30.736 -2020-04-15 23:00:00,77.18,78.321,42.871,30.736 -2020-04-15 23:15:00,76.65,77.863,42.871,30.736 -2020-04-15 23:30:00,76.51,76.979,42.871,30.736 -2020-04-15 23:45:00,79.0,78.02199999999999,42.871,30.736 -2020-04-16 00:00:00,76.59,66.062,39.203,30.736 -2020-04-16 00:15:00,76.53,66.53699999999999,39.203,30.736 -2020-04-16 00:30:00,74.45,64.943,39.203,30.736 -2020-04-16 00:45:00,72.38,63.372,39.203,30.736 -2020-04-16 01:00:00,73.63,63.707,37.118,30.736 -2020-04-16 01:15:00,77.98,63.019,37.118,30.736 -2020-04-16 01:30:00,75.57,61.729,37.118,30.736 -2020-04-16 01:45:00,78.14,61.175,37.118,30.736 -2020-04-16 02:00:00,69.37,62.033,35.647,30.736 -2020-04-16 02:15:00,73.86,61.263000000000005,35.647,30.736 -2020-04-16 02:30:00,69.08,63.718999999999994,35.647,30.736 -2020-04-16 02:45:00,73.63,64.268,35.647,30.736 -2020-04-16 03:00:00,78.41,67.297,34.585,30.736 -2020-04-16 03:15:00,81.88,68.52,34.585,30.736 -2020-04-16 03:30:00,81.3,67.967,34.585,30.736 -2020-04-16 03:45:00,77.39,68.23100000000001,34.585,30.736 -2020-04-16 04:00:00,81.22,80.163,36.184,30.736 -2020-04-16 04:15:00,82.62,92.54,36.184,30.736 -2020-04-16 04:30:00,86.64,92.275,36.184,30.736 -2020-04-16 04:45:00,90.81,94.12799999999999,36.184,30.736 -2020-04-16 05:00:00,97.5,127.575,41.019,30.736 -2020-04-16 05:15:00,101.04,159.359,41.019,30.736 -2020-04-16 05:30:00,104.32,148.222,41.019,30.736 -2020-04-16 05:45:00,104.7,137.95,41.019,30.736 -2020-04-16 06:00:00,111.42,139.596,53.963,30.736 -2020-04-16 06:15:00,111.14,144.635,53.963,30.736 -2020-04-16 06:30:00,112.46,141.951,53.963,30.736 -2020-04-16 06:45:00,111.75,142.252,53.963,30.736 -2020-04-16 07:00:00,113.92,144.352,66.512,30.736 -2020-04-16 07:15:00,113.61,144.842,66.512,30.736 -2020-04-16 07:30:00,113.32,143.05100000000002,66.512,30.736 -2020-04-16 07:45:00,111.01,139.931,66.512,30.736 -2020-04-16 08:00:00,109.42,137.489,58.86,30.736 -2020-04-16 08:15:00,108.68,135.996,58.86,30.736 -2020-04-16 08:30:00,109.43,131.921,58.86,30.736 -2020-04-16 08:45:00,108.55,130.05200000000002,58.86,30.736 -2020-04-16 09:00:00,107.62,123.76799999999999,52.156000000000006,30.736 -2020-04-16 09:15:00,105.64,121.553,52.156000000000006,30.736 -2020-04-16 09:30:00,105.44,123.573,52.156000000000006,30.736 -2020-04-16 09:45:00,105.36,123.007,52.156000000000006,30.736 -2020-04-16 10:00:00,104.88,118.589,49.034,30.736 -2020-04-16 10:15:00,105.52,118.499,49.034,30.736 -2020-04-16 10:30:00,104.66,116.969,49.034,30.736 -2020-04-16 10:45:00,103.7,117.022,49.034,30.736 -2020-04-16 11:00:00,101.79,111.735,46.53,30.736 -2020-04-16 11:15:00,100.62,112.494,46.53,30.736 -2020-04-16 11:30:00,102.26,113.68,46.53,30.736 -2020-04-16 11:45:00,100.98,114.271,46.53,30.736 -2020-04-16 12:00:00,101.74,109.26899999999999,43.318000000000005,30.736 -2020-04-16 12:15:00,100.04,110.089,43.318000000000005,30.736 -2020-04-16 12:30:00,100.71,109.241,43.318000000000005,30.736 -2020-04-16 12:45:00,98.75,109.965,43.318000000000005,30.736 -2020-04-16 13:00:00,96.55,110.53399999999999,41.608000000000004,30.736 -2020-04-16 13:15:00,101.33,109.822,41.608000000000004,30.736 -2020-04-16 13:30:00,105.43,107.68799999999999,41.608000000000004,30.736 -2020-04-16 13:45:00,99.87,106.266,41.608000000000004,30.736 -2020-04-16 14:00:00,104.65,107.289,41.786,30.736 -2020-04-16 14:15:00,103.74,106.805,41.786,30.736 -2020-04-16 14:30:00,99.2,106.686,41.786,30.736 -2020-04-16 14:45:00,96.98,107.146,41.786,30.736 -2020-04-16 15:00:00,97.32,108.044,44.181999999999995,30.736 -2020-04-16 15:15:00,97.34,106.54299999999999,44.181999999999995,30.736 -2020-04-16 15:30:00,96.99,106.125,44.181999999999995,30.736 -2020-04-16 15:45:00,105.87,105.76,44.181999999999995,30.736 -2020-04-16 16:00:00,108.15,105.584,45.956,30.736 -2020-04-16 16:15:00,109.03,105.436,45.956,30.736 -2020-04-16 16:30:00,102.46,105.414,45.956,30.736 -2020-04-16 16:45:00,107.51,103.3,45.956,30.736 -2020-04-16 17:00:00,105.77,102.85,50.702,30.736 -2020-04-16 17:15:00,109.81,105.25399999999999,50.702,30.736 -2020-04-16 17:30:00,116.22,106.64299999999999,50.702,30.736 -2020-04-16 17:45:00,115.39,108.116,50.702,30.736 -2020-04-16 18:00:00,117.78,108.929,53.595,30.736 -2020-04-16 18:15:00,112.22,110.46799999999999,53.595,30.736 -2020-04-16 18:30:00,111.55,109.307,53.595,30.736 -2020-04-16 18:45:00,116.31,114.927,53.595,30.736 -2020-04-16 19:00:00,115.59,113.14,54.207,30.736 -2020-04-16 19:15:00,112.76,112.333,54.207,30.736 -2020-04-16 19:30:00,111.41,112.33,54.207,30.736 -2020-04-16 19:45:00,109.87,112.74,54.207,30.736 -2020-04-16 20:00:00,110.54,110.89399999999999,56.948,30.736 -2020-04-16 20:15:00,108.79,108.249,56.948,30.736 -2020-04-16 20:30:00,106.12,107.178,56.948,30.736 -2020-04-16 20:45:00,100.7,106.319,56.948,30.736 -2020-04-16 21:00:00,100.63,102.01,52.157,30.736 -2020-04-16 21:15:00,99.93,101.508,52.157,30.736 -2020-04-16 21:30:00,96.78,101.87899999999999,52.157,30.736 -2020-04-16 21:45:00,91.01,101.338,52.157,30.736 -2020-04-16 22:00:00,88.24,96.85600000000001,47.483000000000004,30.736 -2020-04-16 22:15:00,90.64,94.991,47.483000000000004,30.736 -2020-04-16 22:30:00,87.26,83.77600000000001,47.483000000000004,30.736 -2020-04-16 22:45:00,83.96,78.098,47.483000000000004,30.736 -2020-04-16 23:00:00,79.47,70.275,41.978,30.736 -2020-04-16 23:15:00,82.32,68.947,41.978,30.736 -2020-04-16 23:30:00,82.51,68.09100000000001,41.978,30.736 -2020-04-16 23:45:00,79.47,68.702,41.978,30.736 -2020-04-17 00:00:00,75.69,63.902,39.301,30.736 -2020-04-17 00:15:00,80.52,64.638,39.301,30.736 -2020-04-17 00:30:00,79.11,63.152,39.301,30.736 -2020-04-17 00:45:00,74.97,61.931000000000004,39.301,30.736 -2020-04-17 01:00:00,76.44,61.839,37.976,30.736 -2020-04-17 01:15:00,78.63,61.181999999999995,37.976,30.736 -2020-04-17 01:30:00,78.54,60.246,37.976,30.736 -2020-04-17 01:45:00,75.92,59.578,37.976,30.736 -2020-04-17 02:00:00,76.67,61.106,37.041,30.736 -2020-04-17 02:15:00,78.96,60.225,37.041,30.736 -2020-04-17 02:30:00,73.71,63.532,37.041,30.736 -2020-04-17 02:45:00,72.47,63.641000000000005,37.041,30.736 -2020-04-17 03:00:00,72.74,66.71300000000001,37.575,30.736 -2020-04-17 03:15:00,77.67,67.558,37.575,30.736 -2020-04-17 03:30:00,81.93,66.829,37.575,30.736 -2020-04-17 03:45:00,82.98,67.883,37.575,30.736 -2020-04-17 04:00:00,85.63,79.98899999999999,39.058,30.736 -2020-04-17 04:15:00,81.63,91.12700000000001,39.058,30.736 -2020-04-17 04:30:00,87.46,91.634,39.058,30.736 -2020-04-17 04:45:00,88.26,92.454,39.058,30.736 -2020-04-17 05:00:00,94.18,124.83,43.256,30.736 -2020-04-17 05:15:00,97.98,157.922,43.256,30.736 -2020-04-17 05:30:00,101.19,147.47299999999998,43.256,30.736 -2020-04-17 05:45:00,104.3,136.907,43.256,30.736 -2020-04-17 06:00:00,109.57,138.972,56.093999999999994,30.736 -2020-04-17 06:15:00,110.1,143.366,56.093999999999994,30.736 -2020-04-17 06:30:00,111.6,140.194,56.093999999999994,30.736 -2020-04-17 06:45:00,112.04,141.218,56.093999999999994,30.736 -2020-04-17 07:00:00,113.63,143.342,66.92699999999999,30.736 -2020-04-17 07:15:00,113.48,144.96,66.92699999999999,30.736 -2020-04-17 07:30:00,114.3,141.72799999999998,66.92699999999999,30.736 -2020-04-17 07:45:00,111.17,138.004,66.92699999999999,30.736 -2020-04-17 08:00:00,109.06,135.482,60.332,30.736 -2020-04-17 08:15:00,108.75,134.251,60.332,30.736 -2020-04-17 08:30:00,108.96,130.61,60.332,30.736 -2020-04-17 08:45:00,111.11,127.825,60.332,30.736 -2020-04-17 09:00:00,107.04,120.291,56.085,30.736 -2020-04-17 09:15:00,107.43,119.624,56.085,30.736 -2020-04-17 09:30:00,106.4,120.985,56.085,30.736 -2020-04-17 09:45:00,106.21,120.639,56.085,30.736 -2020-04-17 10:00:00,104.57,115.45100000000001,52.91,30.736 -2020-04-17 10:15:00,105.96,115.67200000000001,52.91,30.736 -2020-04-17 10:30:00,107.27,114.46600000000001,52.91,30.736 -2020-04-17 10:45:00,103.6,114.225,52.91,30.736 -2020-04-17 11:00:00,104.04,109.054,52.278999999999996,30.736 -2020-04-17 11:15:00,101.25,108.65100000000001,52.278999999999996,30.736 -2020-04-17 11:30:00,100.24,110.637,52.278999999999996,30.736 -2020-04-17 11:45:00,100.36,110.69200000000001,52.278999999999996,30.736 -2020-04-17 12:00:00,98.31,106.641,49.023999999999994,30.736 -2020-04-17 12:15:00,98.3,105.836,49.023999999999994,30.736 -2020-04-17 12:30:00,98.9,105.109,49.023999999999994,30.736 -2020-04-17 12:45:00,96.92,105.68,49.023999999999994,30.736 -2020-04-17 13:00:00,95.35,107.199,46.82,30.736 -2020-04-17 13:15:00,94.15,107.081,46.82,30.736 -2020-04-17 13:30:00,95.45,105.429,46.82,30.736 -2020-04-17 13:45:00,95.7,104.15100000000001,46.82,30.736 -2020-04-17 14:00:00,96.68,104.079,45.756,30.736 -2020-04-17 14:15:00,94.93,103.727,45.756,30.736 -2020-04-17 14:30:00,95.22,104.76,45.756,30.736 -2020-04-17 14:45:00,96.43,104.99799999999999,45.756,30.736 -2020-04-17 15:00:00,98.56,105.598,47.56,30.736 -2020-04-17 15:15:00,96.36,103.66799999999999,47.56,30.736 -2020-04-17 15:30:00,98.86,101.962,47.56,30.736 -2020-04-17 15:45:00,99.49,102.11399999999999,47.56,30.736 -2020-04-17 16:00:00,100.98,100.829,49.581,30.736 -2020-04-17 16:15:00,102.21,101.12700000000001,49.581,30.736 -2020-04-17 16:30:00,103.54,101.053,49.581,30.736 -2020-04-17 16:45:00,105.31,98.324,49.581,30.736 -2020-04-17 17:00:00,109.87,99.141,53.918,30.736 -2020-04-17 17:15:00,105.24,101.18,53.918,30.736 -2020-04-17 17:30:00,108.79,102.488,53.918,30.736 -2020-04-17 17:45:00,108.09,103.699,53.918,30.736 -2020-04-17 18:00:00,109.81,104.992,54.266000000000005,30.736 -2020-04-17 18:15:00,106.31,105.728,54.266000000000005,30.736 -2020-04-17 18:30:00,105.75,104.70200000000001,54.266000000000005,30.736 -2020-04-17 18:45:00,105.56,110.596,54.266000000000005,30.736 -2020-04-17 19:00:00,104.01,109.889,54.092,30.736 -2020-04-17 19:15:00,101.85,110.20700000000001,54.092,30.736 -2020-04-17 19:30:00,103.45,110.035,54.092,30.736 -2020-04-17 19:45:00,104.61,109.553,54.092,30.736 -2020-04-17 20:00:00,101.81,107.604,59.038999999999994,30.736 -2020-04-17 20:15:00,104.72,105.49,59.038999999999994,30.736 -2020-04-17 20:30:00,104.95,104.11200000000001,59.038999999999994,30.736 -2020-04-17 20:45:00,104.9,103.052,59.038999999999994,30.736 -2020-04-17 21:00:00,92.54,99.882,53.346000000000004,30.736 -2020-04-17 21:15:00,89.07,100.73,53.346000000000004,30.736 -2020-04-17 21:30:00,86.36,101.012,53.346000000000004,30.736 -2020-04-17 21:45:00,91.79,100.928,53.346000000000004,30.736 -2020-04-17 22:00:00,87.88,96.88600000000001,47.938,30.736 -2020-04-17 22:15:00,87.19,94.811,47.938,30.736 -2020-04-17 22:30:00,79.25,90.098,47.938,30.736 -2020-04-17 22:45:00,78.07,86.851,47.938,30.736 -2020-04-17 23:00:00,78.74,79.878,40.266,30.736 -2020-04-17 23:15:00,79.25,76.51899999999999,40.266,30.736 -2020-04-17 23:30:00,79.44,73.683,40.266,30.736 -2020-04-17 23:45:00,72.93,73.869,40.266,30.736 -2020-04-18 00:00:00,72.24,62.902,39.184,30.618000000000002 -2020-04-18 00:15:00,74.92,61.023999999999994,39.184,30.618000000000002 -2020-04-18 00:30:00,73.65,59.887,39.184,30.618000000000002 -2020-04-18 00:45:00,71.07,58.537,39.184,30.618000000000002 -2020-04-18 01:00:00,64.33,58.955,34.692,30.618000000000002 -2020-04-18 01:15:00,65.67,58.178000000000004,34.692,30.618000000000002 -2020-04-18 01:30:00,64.17,56.406000000000006,34.692,30.618000000000002 -2020-04-18 01:45:00,68.34,56.482,34.692,30.618000000000002 -2020-04-18 02:00:00,71.5,57.685,32.919000000000004,30.618000000000002 -2020-04-18 02:15:00,72.43,56.059,32.919000000000004,30.618000000000002 -2020-04-18 02:30:00,69.43,58.281000000000006,32.919000000000004,30.618000000000002 -2020-04-18 02:45:00,69.21,58.986000000000004,32.919000000000004,30.618000000000002 -2020-04-18 03:00:00,72.51,61.458999999999996,32.024,30.618000000000002 -2020-04-18 03:15:00,68.08,61.188,32.024,30.618000000000002 -2020-04-18 03:30:00,66.16,59.88399999999999,32.024,30.618000000000002 -2020-04-18 03:45:00,64.76,62.033,32.024,30.618000000000002 -2020-04-18 04:00:00,66.57,70.758,31.958000000000002,30.618000000000002 -2020-04-18 04:15:00,67.33,79.971,31.958000000000002,30.618000000000002 -2020-04-18 04:30:00,66.23,78.243,31.958000000000002,30.618000000000002 -2020-04-18 04:45:00,64.3,78.995,31.958000000000002,30.618000000000002 -2020-04-18 05:00:00,64.93,97.959,32.75,30.618000000000002 -2020-04-18 05:15:00,66.66,114.07,32.75,30.618000000000002 -2020-04-18 05:30:00,67.03,104.89,32.75,30.618000000000002 -2020-04-18 05:45:00,70.54,100.15,32.75,30.618000000000002 -2020-04-18 06:00:00,71.71,118.912,34.461999999999996,30.618000000000002 -2020-04-18 06:15:00,73.46,136.754,34.461999999999996,30.618000000000002 -2020-04-18 06:30:00,75.72,128.946,34.461999999999996,30.618000000000002 -2020-04-18 06:45:00,76.77,123.31,34.461999999999996,30.618000000000002 -2020-04-18 07:00:00,78.94,122.14299999999999,37.736,30.618000000000002 -2020-04-18 07:15:00,78.58,122.23200000000001,37.736,30.618000000000002 -2020-04-18 07:30:00,79.45,121.365,37.736,30.618000000000002 -2020-04-18 07:45:00,80.73,120.3,37.736,30.618000000000002 -2020-04-18 08:00:00,80.41,120.022,42.34,30.618000000000002 -2020-04-18 08:15:00,80.62,120.61,42.34,30.618000000000002 -2020-04-18 08:30:00,79.58,117.786,42.34,30.618000000000002 -2020-04-18 08:45:00,79.67,117.322,42.34,30.618000000000002 -2020-04-18 09:00:00,77.81,112.633,43.571999999999996,30.618000000000002 -2020-04-18 09:15:00,76.73,112.691,43.571999999999996,30.618000000000002 -2020-04-18 09:30:00,75.68,114.87700000000001,43.571999999999996,30.618000000000002 -2020-04-18 09:45:00,75.15,114.365,43.571999999999996,30.618000000000002 -2020-04-18 10:00:00,74.84,109.54700000000001,40.514,30.618000000000002 -2020-04-18 10:15:00,76.04,110.12799999999999,40.514,30.618000000000002 -2020-04-18 10:30:00,76.37,108.82600000000001,40.514,30.618000000000002 -2020-04-18 10:45:00,75.02,109.126,40.514,30.618000000000002 -2020-04-18 11:00:00,73.78,103.92299999999999,36.388000000000005,30.618000000000002 -2020-04-18 11:15:00,72.94,103.676,36.388000000000005,30.618000000000002 -2020-04-18 11:30:00,70.92,105.191,36.388000000000005,30.618000000000002 -2020-04-18 11:45:00,69.83,105.12100000000001,36.388000000000005,30.618000000000002 -2020-04-18 12:00:00,67.19,100.64200000000001,35.217,30.618000000000002 -2020-04-18 12:15:00,67.12,100.725,35.217,30.618000000000002 -2020-04-18 12:30:00,65.58,100.066,35.217,30.618000000000002 -2020-04-18 12:45:00,65.28,100.61399999999999,35.217,30.618000000000002 -2020-04-18 13:00:00,61.25,101.42399999999999,32.001999999999995,30.618000000000002 -2020-04-18 13:15:00,62.76,99.764,32.001999999999995,30.618000000000002 -2020-04-18 13:30:00,62.74,97.959,32.001999999999995,30.618000000000002 -2020-04-18 13:45:00,62.56,96.169,32.001999999999995,30.618000000000002 -2020-04-18 14:00:00,63.31,96.9,31.304000000000002,30.618000000000002 -2020-04-18 14:15:00,63.14,95.477,31.304000000000002,30.618000000000002 -2020-04-18 14:30:00,63.14,95.135,31.304000000000002,30.618000000000002 -2020-04-18 14:45:00,64.8,95.787,31.304000000000002,30.618000000000002 -2020-04-18 15:00:00,65.13,97.071,34.731,30.618000000000002 -2020-04-18 15:15:00,65.05,96.014,34.731,30.618000000000002 -2020-04-18 15:30:00,66.87,95.29700000000001,34.731,30.618000000000002 -2020-04-18 15:45:00,69.39,94.9,34.731,30.618000000000002 -2020-04-18 16:00:00,71.14,94.525,38.769,30.618000000000002 -2020-04-18 16:15:00,72.55,94.76299999999999,38.769,30.618000000000002 -2020-04-18 16:30:00,74.77,94.803,38.769,30.618000000000002 -2020-04-18 16:45:00,76.84,92.49600000000001,38.769,30.618000000000002 -2020-04-18 17:00:00,79.92,92.44,44.928000000000004,30.618000000000002 -2020-04-18 17:15:00,79.83,94.03399999999999,44.928000000000004,30.618000000000002 -2020-04-18 17:30:00,81.4,95.20200000000001,44.928000000000004,30.618000000000002 -2020-04-18 17:45:00,81.53,96.46799999999999,44.928000000000004,30.618000000000002 -2020-04-18 18:00:00,85.84,98.512,47.786,30.618000000000002 -2020-04-18 18:15:00,83.87,101.316,47.786,30.618000000000002 -2020-04-18 18:30:00,81.87,101.869,47.786,30.618000000000002 -2020-04-18 18:45:00,81.6,103.727,47.786,30.618000000000002 -2020-04-18 19:00:00,82.11,102.561,47.463,30.618000000000002 -2020-04-18 19:15:00,80.38,101.963,47.463,30.618000000000002 -2020-04-18 19:30:00,82.61,102.70299999999999,47.463,30.618000000000002 -2020-04-18 19:45:00,81.66,103.302,47.463,30.618000000000002 -2020-04-18 20:00:00,78.44,103.012,43.735,30.618000000000002 -2020-04-18 20:15:00,77.86,101.625,43.735,30.618000000000002 -2020-04-18 20:30:00,76.06,99.522,43.735,30.618000000000002 -2020-04-18 20:45:00,75.04,99.48700000000001,43.735,30.618000000000002 -2020-04-18 21:00:00,69.71,96.571,40.346,30.618000000000002 -2020-04-18 21:15:00,69.85,97.436,40.346,30.618000000000002 -2020-04-18 21:30:00,66.1,98.477,40.346,30.618000000000002 -2020-04-18 21:45:00,66.61,97.851,40.346,30.618000000000002 -2020-04-18 22:00:00,63.91,94.52,39.323,30.618000000000002 -2020-04-18 22:15:00,63.83,93.944,39.323,30.618000000000002 -2020-04-18 22:30:00,61.62,92.242,39.323,30.618000000000002 -2020-04-18 22:45:00,61.98,90.219,39.323,30.618000000000002 -2020-04-18 23:00:00,56.73,84.055,33.716,30.618000000000002 -2020-04-18 23:15:00,56.39,80.14699999999999,33.716,30.618000000000002 -2020-04-18 23:30:00,56.57,78.0,33.716,30.618000000000002 -2020-04-18 23:45:00,57.7,77.148,33.716,30.618000000000002 -2020-04-19 00:00:00,47.91,63.659,28.703000000000003,30.618000000000002 -2020-04-19 00:15:00,49.58,60.85,28.703000000000003,30.618000000000002 -2020-04-19 00:30:00,48.9,59.416000000000004,28.703000000000003,30.618000000000002 -2020-04-19 00:45:00,51.89,58.347,28.703000000000003,30.618000000000002 -2020-04-19 01:00:00,48.88,58.867,26.171,30.618000000000002 -2020-04-19 01:15:00,49.69,58.504,26.171,30.618000000000002 -2020-04-19 01:30:00,47.4,56.879,26.171,30.618000000000002 -2020-04-19 01:45:00,50.6,56.542,26.171,30.618000000000002 -2020-04-19 02:00:00,48.49,57.409,25.326999999999998,30.618000000000002 -2020-04-19 02:15:00,49.54,55.821000000000005,25.326999999999998,30.618000000000002 -2020-04-19 02:30:00,49.42,58.62,25.326999999999998,30.618000000000002 -2020-04-19 02:45:00,49.28,59.363,25.326999999999998,30.618000000000002 -2020-04-19 03:00:00,49.27,62.45399999999999,24.311999999999998,30.618000000000002 -2020-04-19 03:15:00,50.12,62.077,24.311999999999998,30.618000000000002 -2020-04-19 03:30:00,50.56,60.961999999999996,24.311999999999998,30.618000000000002 -2020-04-19 03:45:00,51.01,62.55,24.311999999999998,30.618000000000002 -2020-04-19 04:00:00,52.33,71.09100000000001,25.33,30.618000000000002 -2020-04-19 04:15:00,53.42,79.464,25.33,30.618000000000002 -2020-04-19 04:30:00,54.02,78.689,25.33,30.618000000000002 -2020-04-19 04:45:00,52.87,79.245,25.33,30.618000000000002 -2020-04-19 05:00:00,53.79,96.527,25.309,30.618000000000002 -2020-04-19 05:15:00,55.01,110.838,25.309,30.618000000000002 -2020-04-19 05:30:00,54.77,101.319,25.309,30.618000000000002 -2020-04-19 05:45:00,56.87,96.553,25.309,30.618000000000002 -2020-04-19 06:00:00,58.42,113.615,25.945999999999998,30.618000000000002 -2020-04-19 06:15:00,58.63,131.168,25.945999999999998,30.618000000000002 -2020-04-19 06:30:00,59.65,122.322,25.945999999999998,30.618000000000002 -2020-04-19 06:45:00,61.3,115.475,25.945999999999998,30.618000000000002 -2020-04-19 07:00:00,62.91,115.682,27.87,30.618000000000002 -2020-04-19 07:15:00,63.9,114.219,27.87,30.618000000000002 -2020-04-19 07:30:00,64.4,113.54899999999999,27.87,30.618000000000002 -2020-04-19 07:45:00,63.96,112.075,27.87,30.618000000000002 -2020-04-19 08:00:00,62.93,113.177,32.114000000000004,30.618000000000002 -2020-04-19 08:15:00,62.87,114.525,32.114000000000004,30.618000000000002 -2020-04-19 08:30:00,62.0,113.11399999999999,32.114000000000004,30.618000000000002 -2020-04-19 08:45:00,61.46,113.685,32.114000000000004,30.618000000000002 -2020-04-19 09:00:00,60.12,108.691,34.222,30.618000000000002 -2020-04-19 09:15:00,60.81,108.734,34.222,30.618000000000002 -2020-04-19 09:30:00,59.84,111.131,34.222,30.618000000000002 -2020-04-19 09:45:00,60.52,111.23299999999999,34.222,30.618000000000002 -2020-04-19 10:00:00,60.88,108.11,34.544000000000004,30.618000000000002 -2020-04-19 10:15:00,63.47,109.119,34.544000000000004,30.618000000000002 -2020-04-19 10:30:00,64.28,108.31299999999999,34.544000000000004,30.618000000000002 -2020-04-19 10:45:00,64.13,108.21,34.544000000000004,30.618000000000002 -2020-04-19 11:00:00,60.96,103.27799999999999,36.368,30.618000000000002 -2020-04-19 11:15:00,60.33,102.855,36.368,30.618000000000002 -2020-04-19 11:30:00,57.6,104.197,36.368,30.618000000000002 -2020-04-19 11:45:00,56.64,104.645,36.368,30.618000000000002 -2020-04-19 12:00:00,54.74,100.47,32.433,30.618000000000002 -2020-04-19 12:15:00,53.47,101.291,32.433,30.618000000000002 -2020-04-19 12:30:00,53.55,99.87299999999999,32.433,30.618000000000002 -2020-04-19 12:45:00,53.72,99.48299999999999,32.433,30.618000000000002 -2020-04-19 13:00:00,52.34,99.73100000000001,28.971999999999998,30.618000000000002 -2020-04-19 13:15:00,52.36,99.473,28.971999999999998,30.618000000000002 -2020-04-19 13:30:00,52.22,96.885,28.971999999999998,30.618000000000002 -2020-04-19 13:45:00,53.3,95.381,28.971999999999998,30.618000000000002 -2020-04-19 14:00:00,52.13,97.029,25.531999999999996,30.618000000000002 -2020-04-19 14:15:00,52.55,96.542,25.531999999999996,30.618000000000002 -2020-04-19 14:30:00,52.58,96.13799999999999,25.531999999999996,30.618000000000002 -2020-04-19 14:45:00,53.01,95.916,25.531999999999996,30.618000000000002 -2020-04-19 15:00:00,55.7,96.435,25.766,30.618000000000002 -2020-04-19 15:15:00,59.0,95.31299999999999,25.766,30.618000000000002 -2020-04-19 15:30:00,60.62,94.788,25.766,30.618000000000002 -2020-04-19 15:45:00,65.31,94.945,25.766,30.618000000000002 -2020-04-19 16:00:00,66.6,94.571,29.232,30.618000000000002 -2020-04-19 16:15:00,66.2,94.41799999999999,29.232,30.618000000000002 -2020-04-19 16:30:00,70.78,95.229,29.232,30.618000000000002 -2020-04-19 16:45:00,71.98,92.97,29.232,30.618000000000002 -2020-04-19 17:00:00,74.6,93.13,37.431,30.618000000000002 -2020-04-19 17:15:00,75.63,95.47,37.431,30.618000000000002 -2020-04-19 17:30:00,77.0,97.29899999999999,37.431,30.618000000000002 -2020-04-19 17:45:00,78.99,100.04899999999999,37.431,30.618000000000002 -2020-04-19 18:00:00,82.25,102.135,41.251999999999995,30.618000000000002 -2020-04-19 18:15:00,79.87,105.406,41.251999999999995,30.618000000000002 -2020-04-19 18:30:00,79.78,104.67200000000001,41.251999999999995,30.618000000000002 -2020-04-19 18:45:00,79.99,107.59899999999999,41.251999999999995,30.618000000000002 -2020-04-19 19:00:00,81.9,107.616,41.784,30.618000000000002 -2020-04-19 19:15:00,82.8,106.60600000000001,41.784,30.618000000000002 -2020-04-19 19:30:00,87.07,107.10799999999999,41.784,30.618000000000002 -2020-04-19 19:45:00,85.32,108.184,41.784,30.618000000000002 -2020-04-19 20:00:00,87.59,107.975,40.804,30.618000000000002 -2020-04-19 20:15:00,90.05,107.021,40.804,30.618000000000002 -2020-04-19 20:30:00,90.49,106.132,40.804,30.618000000000002 -2020-04-19 20:45:00,89.62,104.4,40.804,30.618000000000002 -2020-04-19 21:00:00,81.38,100.014,38.379,30.618000000000002 -2020-04-19 21:15:00,84.66,100.369,38.379,30.618000000000002 -2020-04-19 21:30:00,77.57,101.12200000000001,38.379,30.618000000000002 -2020-04-19 21:45:00,78.05,100.834,38.379,30.618000000000002 -2020-04-19 22:00:00,77.86,98.241,37.87,30.618000000000002 -2020-04-19 22:15:00,82.24,96.18799999999999,37.87,30.618000000000002 -2020-04-19 22:30:00,80.13,92.486,37.87,30.618000000000002 -2020-04-19 22:45:00,76.14,89.17200000000001,37.87,30.618000000000002 -2020-04-19 23:00:00,67.84,81.33,33.332,30.618000000000002 -2020-04-19 23:15:00,72.28,79.26100000000001,33.332,30.618000000000002 -2020-04-19 23:30:00,75.58,77.17699999999999,33.332,30.618000000000002 -2020-04-19 23:45:00,73.37,76.899,33.332,30.618000000000002 -2020-04-20 00:00:00,69.74,66.392,34.698,30.736 -2020-04-20 00:15:00,72.46,65.615,34.698,30.736 -2020-04-20 00:30:00,70.41,63.977,34.698,30.736 -2020-04-20 00:45:00,69.96,62.376000000000005,34.698,30.736 -2020-04-20 01:00:00,66.93,63.148,32.889,30.736 -2020-04-20 01:15:00,72.98,62.507,32.889,30.736 -2020-04-20 01:30:00,73.29,61.136,32.889,30.736 -2020-04-20 01:45:00,71.28,60.791000000000004,32.889,30.736 -2020-04-20 02:00:00,68.66,61.93899999999999,32.06,30.736 -2020-04-20 02:15:00,73.7,60.363,32.06,30.736 -2020-04-20 02:30:00,73.14,63.458999999999996,32.06,30.736 -2020-04-20 02:45:00,73.33,63.801,32.06,30.736 -2020-04-20 03:00:00,67.47,67.866,30.515,30.736 -2020-04-20 03:15:00,68.31,68.77,30.515,30.736 -2020-04-20 03:30:00,68.12,67.986,30.515,30.736 -2020-04-20 03:45:00,69.11,69.008,30.515,30.736 -2020-04-20 04:00:00,74.41,81.767,31.436,30.736 -2020-04-20 04:15:00,77.05,94.147,31.436,30.736 -2020-04-20 04:30:00,80.21,94.115,31.436,30.736 -2020-04-20 04:45:00,83.85,94.995,31.436,30.736 -2020-04-20 05:00:00,92.02,124.523,38.997,30.736 -2020-04-20 05:15:00,94.95,155.561,38.997,30.736 -2020-04-20 05:30:00,97.01,145.115,38.997,30.736 -2020-04-20 05:45:00,100.5,135.55100000000002,38.997,30.736 -2020-04-20 06:00:00,105.42,137.136,54.97,30.736 -2020-04-20 06:15:00,107.37,141.161,54.97,30.736 -2020-04-20 06:30:00,110.05,138.94799999999998,54.97,30.736 -2020-04-20 06:45:00,111.02,140.03,54.97,30.736 -2020-04-20 07:00:00,115.16,142.121,66.032,30.736 -2020-04-20 07:15:00,112.2,142.808,66.032,30.736 -2020-04-20 07:30:00,115.55,141.128,66.032,30.736 -2020-04-20 07:45:00,114.85,138.559,66.032,30.736 -2020-04-20 08:00:00,113.82,136.049,59.941,30.736 -2020-04-20 08:15:00,117.57,135.525,59.941,30.736 -2020-04-20 08:30:00,120.95,131.31799999999998,59.941,30.736 -2020-04-20 08:45:00,120.25,130.308,59.941,30.736 -2020-04-20 09:00:00,121.46,124.26299999999999,54.016000000000005,30.736 -2020-04-20 09:15:00,120.31,121.29700000000001,54.016000000000005,30.736 -2020-04-20 09:30:00,119.35,122.581,54.016000000000005,30.736 -2020-04-20 09:45:00,116.25,121.405,54.016000000000005,30.736 -2020-04-20 10:00:00,114.59,118.214,50.63,30.736 -2020-04-20 10:15:00,118.18,118.99600000000001,50.63,30.736 -2020-04-20 10:30:00,111.25,117.441,50.63,30.736 -2020-04-20 10:45:00,112.04,116.792,50.63,30.736 -2020-04-20 11:00:00,118.8,110.635,49.951,30.736 -2020-04-20 11:15:00,119.3,111.428,49.951,30.736 -2020-04-20 11:30:00,123.96,113.979,49.951,30.736 -2020-04-20 11:45:00,126.42,114.51899999999999,49.951,30.736 -2020-04-20 12:00:00,124.57,110.541,46.913000000000004,30.736 -2020-04-20 12:15:00,122.52,111.43799999999999,46.913000000000004,30.736 -2020-04-20 12:30:00,115.69,109.486,46.913000000000004,30.736 -2020-04-20 12:45:00,118.2,109.985,46.913000000000004,30.736 -2020-04-20 13:00:00,113.18,111.163,47.093999999999994,30.736 -2020-04-20 13:15:00,112.18,109.56700000000001,47.093999999999994,30.736 -2020-04-20 13:30:00,112.03,106.774,47.093999999999994,30.736 -2020-04-20 13:45:00,106.19,105.821,47.093999999999994,30.736 -2020-04-20 14:00:00,99.72,106.662,46.678000000000004,30.736 -2020-04-20 14:15:00,107.85,106.13,46.678000000000004,30.736 -2020-04-20 14:30:00,105.99,105.26899999999999,46.678000000000004,30.736 -2020-04-20 14:45:00,95.87,106.25399999999999,46.678000000000004,30.736 -2020-04-20 15:00:00,100.13,107.649,47.715,30.736 -2020-04-20 15:15:00,102.74,105.315,47.715,30.736 -2020-04-20 15:30:00,106.75,104.714,47.715,30.736 -2020-04-20 15:45:00,109.06,104.306,47.715,30.736 -2020-04-20 16:00:00,111.0,104.484,49.81100000000001,30.736 -2020-04-20 16:15:00,110.49,103.917,49.81100000000001,30.736 -2020-04-20 16:30:00,109.82,103.781,49.81100000000001,30.736 -2020-04-20 16:45:00,113.31,100.8,49.81100000000001,30.736 -2020-04-20 17:00:00,114.39,100.116,55.591,30.736 -2020-04-20 17:15:00,113.67,102.141,55.591,30.736 -2020-04-20 17:30:00,113.09,103.419,55.591,30.736 -2020-04-20 17:45:00,114.97,105.07,55.591,30.736 -2020-04-20 18:00:00,116.55,106.62,56.523,30.736 -2020-04-20 18:15:00,113.53,107.551,56.523,30.736 -2020-04-20 18:30:00,111.92,106.67,56.523,30.736 -2020-04-20 18:45:00,111.5,112.01299999999999,56.523,30.736 -2020-04-20 19:00:00,109.89,110.913,56.044,30.736 -2020-04-20 19:15:00,115.06,110.16,56.044,30.736 -2020-04-20 19:30:00,113.63,110.69200000000001,56.044,30.736 -2020-04-20 19:45:00,112.78,110.954,56.044,30.736 -2020-04-20 20:00:00,101.75,108.655,61.715,30.736 -2020-04-20 20:15:00,100.7,107.319,61.715,30.736 -2020-04-20 20:30:00,100.68,105.82600000000001,61.715,30.736 -2020-04-20 20:45:00,100.06,105.12200000000001,61.715,30.736 -2020-04-20 21:00:00,99.18,100.616,56.24,30.736 -2020-04-20 21:15:00,98.71,100.664,56.24,30.736 -2020-04-20 21:30:00,94.69,101.24700000000001,56.24,30.736 -2020-04-20 21:45:00,91.68,100.58200000000001,56.24,30.736 -2020-04-20 22:00:00,88.84,95.15299999999999,50.437,30.736 -2020-04-20 22:15:00,88.96,93.74600000000001,50.437,30.736 -2020-04-20 22:30:00,84.92,82.199,50.437,30.736 -2020-04-20 22:45:00,85.41,76.347,50.437,30.736 -2020-04-20 23:00:00,81.6,68.904,42.756,30.736 -2020-04-20 23:15:00,81.0,67.168,42.756,30.736 -2020-04-20 23:30:00,80.1,66.495,42.756,30.736 -2020-04-20 23:45:00,81.46,67.245,42.756,30.736 -2020-04-21 00:00:00,77.51,64.109,39.857,30.736 -2020-04-21 00:15:00,75.11,64.649,39.857,30.736 -2020-04-21 00:30:00,73.12,63.016999999999996,39.857,30.736 -2020-04-21 00:45:00,78.89,61.471000000000004,39.857,30.736 -2020-04-21 01:00:00,78.67,61.772,37.233000000000004,30.736 -2020-04-21 01:15:00,77.8,60.961000000000006,37.233000000000004,30.736 -2020-04-21 01:30:00,72.87,59.566,37.233000000000004,30.736 -2020-04-21 01:45:00,74.1,59.026,37.233000000000004,30.736 -2020-04-21 02:00:00,78.95,59.831,35.856,30.736 -2020-04-21 02:15:00,78.47,58.976000000000006,35.856,30.736 -2020-04-21 02:30:00,72.53,61.526,35.856,30.736 -2020-04-21 02:45:00,71.94,62.106,35.856,30.736 -2020-04-21 03:00:00,74.86,65.212,34.766999999999996,30.736 -2020-04-21 03:15:00,80.59,66.313,34.766999999999996,30.736 -2020-04-21 03:30:00,83.48,65.743,34.766999999999996,30.736 -2020-04-21 03:45:00,83.58,66.119,34.766999999999996,30.736 -2020-04-21 04:00:00,79.94,77.88,35.468,30.736 -2020-04-21 04:15:00,82.73,90.056,35.468,30.736 -2020-04-21 04:30:00,86.26,89.789,35.468,30.736 -2020-04-21 04:45:00,87.7,91.59100000000001,35.468,30.736 -2020-04-21 05:00:00,95.23,124.53200000000001,40.399,30.736 -2020-04-21 05:15:00,98.1,155.803,40.399,30.736 -2020-04-21 05:30:00,100.01,144.778,40.399,30.736 -2020-04-21 05:45:00,102.09,134.755,40.399,30.736 -2020-04-21 06:00:00,107.66,136.52100000000002,54.105,30.736 -2020-04-21 06:15:00,108.52,141.458,54.105,30.736 -2020-04-21 06:30:00,110.71,138.69,54.105,30.736 -2020-04-21 06:45:00,111.29,138.968,54.105,30.736 -2020-04-21 07:00:00,110.64,141.067,63.083,30.736 -2020-04-21 07:15:00,112.61,141.486,63.083,30.736 -2020-04-21 07:30:00,117.23,139.503,63.083,30.736 -2020-04-21 07:45:00,111.61,136.388,63.083,30.736 -2020-04-21 08:00:00,109.22,133.88299999999998,57.254,30.736 -2020-04-21 08:15:00,106.0,132.562,57.254,30.736 -2020-04-21 08:30:00,108.93,128.343,57.254,30.736 -2020-04-21 08:45:00,111.02,126.616,57.254,30.736 -2020-04-21 09:00:00,108.14,120.348,51.395,30.736 -2020-04-21 09:15:00,111.76,118.16,51.395,30.736 -2020-04-21 09:30:00,112.64,120.26700000000001,51.395,30.736 -2020-04-21 09:45:00,108.02,119.867,51.395,30.736 -2020-04-21 10:00:00,106.08,115.491,48.201,30.736 -2020-04-21 10:15:00,104.55,115.639,48.201,30.736 -2020-04-21 10:30:00,104.69,114.223,48.201,30.736 -2020-04-21 10:45:00,104.67,114.375,48.201,30.736 -2020-04-21 11:00:00,103.29,109.04799999999999,46.133,30.736 -2020-04-21 11:15:00,102.35,109.921,46.133,30.736 -2020-04-21 11:30:00,98.0,111.10700000000001,46.133,30.736 -2020-04-21 11:45:00,100.05,111.792,46.133,30.736 -2020-04-21 12:00:00,95.93,106.93700000000001,44.243,30.736 -2020-04-21 12:15:00,104.04,107.79700000000001,44.243,30.736 -2020-04-21 12:30:00,105.24,106.734,44.243,30.736 -2020-04-21 12:45:00,107.04,107.476,44.243,30.736 -2020-04-21 13:00:00,100.69,108.23700000000001,45.042,30.736 -2020-04-21 13:15:00,99.99,107.499,45.042,30.736 -2020-04-21 13:30:00,104.95,105.37799999999999,45.042,30.736 -2020-04-21 13:45:00,111.42,103.964,45.042,30.736 -2020-04-21 14:00:00,114.25,105.295,44.062,30.736 -2020-04-21 14:15:00,112.57,104.719,44.062,30.736 -2020-04-21 14:30:00,109.07,104.374,44.062,30.736 -2020-04-21 14:45:00,106.59,104.85,44.062,30.736 -2020-04-21 15:00:00,113.59,105.935,46.461999999999996,30.736 -2020-04-21 15:15:00,116.36,104.32,46.461999999999996,30.736 -2020-04-21 15:30:00,115.99,103.68299999999999,46.461999999999996,30.736 -2020-04-21 15:45:00,113.69,103.225,46.461999999999996,30.736 -2020-04-21 16:00:00,109.01,103.26299999999999,48.802,30.736 -2020-04-21 16:15:00,111.19,102.992,48.802,30.736 -2020-04-21 16:30:00,117.84,102.99799999999999,48.802,30.736 -2020-04-21 16:45:00,116.61,100.555,48.802,30.736 -2020-04-21 17:00:00,119.91,100.361,55.672,30.736 -2020-04-21 17:15:00,117.41,102.63799999999999,55.672,30.736 -2020-04-21 17:30:00,119.66,104.00299999999999,55.672,30.736 -2020-04-21 17:45:00,120.44,105.34700000000001,55.672,30.736 -2020-04-21 18:00:00,118.14,106.23299999999999,57.006,30.736 -2020-04-21 18:15:00,114.94,107.87,57.006,30.736 -2020-04-21 18:30:00,117.32,106.64200000000001,57.006,30.736 -2020-04-21 18:45:00,117.13,112.29299999999999,57.006,30.736 -2020-04-21 19:00:00,110.96,110.45100000000001,57.148,30.736 -2020-04-21 19:15:00,108.42,109.675,57.148,30.736 -2020-04-21 19:30:00,113.5,109.726,57.148,30.736 -2020-04-21 19:45:00,116.0,110.249,57.148,30.736 -2020-04-21 20:00:00,107.84,108.26299999999999,61.895,30.736 -2020-04-21 20:15:00,108.53,105.655,61.895,30.736 -2020-04-21 20:30:00,108.46,104.756,61.895,30.736 -2020-04-21 20:45:00,106.57,104.056,61.895,30.736 -2020-04-21 21:00:00,95.96,99.756,54.78,30.736 -2020-04-21 21:15:00,98.48,99.322,54.78,30.736 -2020-04-21 21:30:00,95.81,99.62700000000001,54.78,30.736 -2020-04-21 21:45:00,93.29,99.24,54.78,30.736 -2020-04-21 22:00:00,84.54,94.82799999999999,50.76,30.736 -2020-04-21 22:15:00,88.53,93.089,50.76,30.736 -2020-04-21 22:30:00,86.77,81.759,50.76,30.736 -2020-04-21 22:45:00,86.04,76.04,50.76,30.736 -2020-04-21 23:00:00,75.63,68.074,44.162,30.736 -2020-04-21 23:15:00,72.93,66.936,44.162,30.736 -2020-04-21 23:30:00,77.07,66.072,44.162,30.736 -2020-04-21 23:45:00,80.79,66.721,44.162,30.736 -2020-04-22 00:00:00,77.42,63.72,39.061,30.736 -2020-04-22 00:15:00,75.61,64.27199999999999,39.061,30.736 -2020-04-22 00:30:00,73.58,62.63399999999999,39.061,30.736 -2020-04-22 00:45:00,72.45,61.093,39.061,30.736 -2020-04-22 01:00:00,69.55,61.388000000000005,35.795,30.736 -2020-04-22 01:15:00,76.2,60.552,35.795,30.736 -2020-04-22 01:30:00,70.64,59.136,35.795,30.736 -2020-04-22 01:45:00,71.82,58.599,35.795,30.736 -2020-04-22 02:00:00,71.59,59.394,33.316,30.736 -2020-04-22 02:15:00,78.92,58.523,33.316,30.736 -2020-04-22 02:30:00,78.64,61.091,33.316,30.736 -2020-04-22 02:45:00,78.89,61.676,33.316,30.736 -2020-04-22 03:00:00,80.34,64.79899999999999,32.803000000000004,30.736 -2020-04-22 03:15:00,75.97,65.874,32.803000000000004,30.736 -2020-04-22 03:30:00,72.33,65.30199999999999,32.803000000000004,30.736 -2020-04-22 03:45:00,75.91,65.7,32.803000000000004,30.736 -2020-04-22 04:00:00,78.96,77.42699999999999,34.235,30.736 -2020-04-22 04:15:00,78.93,89.56200000000001,34.235,30.736 -2020-04-22 04:30:00,83.97,89.294,34.235,30.736 -2020-04-22 04:45:00,84.72,91.086,34.235,30.736 -2020-04-22 05:00:00,92.29,123.926,38.65,30.736 -2020-04-22 05:15:00,96.41,155.092,38.65,30.736 -2020-04-22 05:30:00,96.57,144.094,38.65,30.736 -2020-04-22 05:45:00,103.85,134.12,38.65,30.736 -2020-04-22 06:00:00,107.64,135.908,54.951,30.736 -2020-04-22 06:15:00,108.62,140.82299999999998,54.951,30.736 -2020-04-22 06:30:00,111.0,138.041,54.951,30.736 -2020-04-22 06:45:00,110.88,138.314,54.951,30.736 -2020-04-22 07:00:00,112.83,140.412,67.328,30.736 -2020-04-22 07:15:00,112.0,140.819,67.328,30.736 -2020-04-22 07:30:00,110.25,138.798,67.328,30.736 -2020-04-22 07:45:00,108.56,135.684,67.328,30.736 -2020-04-22 08:00:00,105.32,133.16899999999998,60.23,30.736 -2020-04-22 08:15:00,105.49,131.882,60.23,30.736 -2020-04-22 08:30:00,110.55,127.635,60.23,30.736 -2020-04-22 08:45:00,113.42,125.93700000000001,60.23,30.736 -2020-04-22 09:00:00,107.8,119.671,56.845,30.736 -2020-04-22 09:15:00,107.23,117.49,56.845,30.736 -2020-04-22 09:30:00,106.86,119.613,56.845,30.736 -2020-04-22 09:45:00,108.88,119.24600000000001,56.845,30.736 -2020-04-22 10:00:00,117.52,114.87799999999999,53.832,30.736 -2020-04-22 10:15:00,121.69,115.073,53.832,30.736 -2020-04-22 10:30:00,118.62,113.68,53.832,30.736 -2020-04-22 10:45:00,118.16,113.852,53.832,30.736 -2020-04-22 11:00:00,108.04,108.51700000000001,53.225,30.736 -2020-04-22 11:15:00,106.35,109.412,53.225,30.736 -2020-04-22 11:30:00,113.65,110.598,53.225,30.736 -2020-04-22 11:45:00,119.82,111.302,53.225,30.736 -2020-04-22 12:00:00,111.54,106.476,50.676,30.736 -2020-04-22 12:15:00,112.94,107.34299999999999,50.676,30.736 -2020-04-22 12:30:00,106.75,106.238,50.676,30.736 -2020-04-22 12:45:00,107.24,106.98299999999999,50.676,30.736 -2020-04-22 13:00:00,106.99,107.78200000000001,50.646,30.736 -2020-04-22 13:15:00,103.94,107.039,50.646,30.736 -2020-04-22 13:30:00,111.47,104.92,50.646,30.736 -2020-04-22 13:45:00,121.34,103.508,50.646,30.736 -2020-04-22 14:00:00,117.59,104.902,50.786,30.736 -2020-04-22 14:15:00,115.99,104.306,50.786,30.736 -2020-04-22 14:30:00,118.6,103.917,50.786,30.736 -2020-04-22 14:45:00,123.1,104.39399999999999,50.786,30.736 -2020-04-22 15:00:00,122.69,105.51799999999999,51.535,30.736 -2020-04-22 15:15:00,113.87,103.881,51.535,30.736 -2020-04-22 15:30:00,107.0,103.198,51.535,30.736 -2020-04-22 15:45:00,105.01,102.72399999999999,51.535,30.736 -2020-04-22 16:00:00,115.45,102.803,53.157,30.736 -2020-04-22 16:15:00,119.01,102.509,53.157,30.736 -2020-04-22 16:30:00,121.41,102.52,53.157,30.736 -2020-04-22 16:45:00,118.86,100.01100000000001,53.157,30.736 -2020-04-22 17:00:00,126.78,99.868,57.793,30.736 -2020-04-22 17:15:00,124.76,102.12,57.793,30.736 -2020-04-22 17:30:00,124.73,103.48,57.793,30.736 -2020-04-22 17:45:00,117.96,104.79799999999999,57.793,30.736 -2020-04-22 18:00:00,119.79,105.698,59.872,30.736 -2020-04-22 18:15:00,119.56,107.354,59.872,30.736 -2020-04-22 18:30:00,118.02,106.11200000000001,59.872,30.736 -2020-04-22 18:45:00,114.89,111.771,59.872,30.736 -2020-04-22 19:00:00,117.2,109.917,60.17100000000001,30.736 -2020-04-22 19:15:00,115.46,109.146,60.17100000000001,30.736 -2020-04-22 19:30:00,111.46,109.208,60.17100000000001,30.736 -2020-04-22 19:45:00,114.24,109.75299999999999,60.17100000000001,30.736 -2020-04-22 20:00:00,110.05,107.742,65.015,30.736 -2020-04-22 20:15:00,112.02,105.141,65.015,30.736 -2020-04-22 20:30:00,103.59,104.27600000000001,65.015,30.736 -2020-04-22 20:45:00,101.23,103.60600000000001,65.015,30.736 -2020-04-22 21:00:00,101.65,99.30799999999999,57.805,30.736 -2020-04-22 21:15:00,100.48,98.88799999999999,57.805,30.736 -2020-04-22 21:30:00,91.45,99.18,57.805,30.736 -2020-04-22 21:45:00,90.16,98.823,57.805,30.736 -2020-04-22 22:00:00,83.23,94.425,52.115,30.736 -2020-04-22 22:15:00,86.17,92.711,52.115,30.736 -2020-04-22 22:30:00,88.07,81.357,52.115,30.736 -2020-04-22 22:45:00,85.72,75.62899999999999,52.115,30.736 -2020-04-22 23:00:00,77.3,67.635,42.871,30.736 -2020-04-22 23:15:00,76.06,66.535,42.871,30.736 -2020-04-22 23:30:00,81.31,65.67,42.871,30.736 -2020-04-22 23:45:00,81.61,66.325,42.871,30.736 -2020-04-23 00:00:00,77.46,63.331,39.203,30.736 -2020-04-23 00:15:00,73.8,63.897,39.203,30.736 -2020-04-23 00:30:00,72.13,62.251000000000005,39.203,30.736 -2020-04-23 00:45:00,78.28,60.717,39.203,30.736 -2020-04-23 01:00:00,77.24,61.004,37.118,30.736 -2020-04-23 01:15:00,76.9,60.145,37.118,30.736 -2020-04-23 01:30:00,73.05,58.708,37.118,30.736 -2020-04-23 01:45:00,74.2,58.173,37.118,30.736 -2020-04-23 02:00:00,77.66,58.958,35.647,30.736 -2020-04-23 02:15:00,74.79,58.07,35.647,30.736 -2020-04-23 02:30:00,73.24,60.656000000000006,35.647,30.736 -2020-04-23 02:45:00,74.37,61.248000000000005,35.647,30.736 -2020-04-23 03:00:00,74.42,64.38600000000001,34.585,30.736 -2020-04-23 03:15:00,83.44,65.436,34.585,30.736 -2020-04-23 03:30:00,82.78,64.861,34.585,30.736 -2020-04-23 03:45:00,85.04,65.282,34.585,30.736 -2020-04-23 04:00:00,81.36,76.975,36.184,30.736 -2020-04-23 04:15:00,83.4,89.069,36.184,30.736 -2020-04-23 04:30:00,86.65,88.79899999999999,36.184,30.736 -2020-04-23 04:45:00,90.42,90.58200000000001,36.184,30.736 -2020-04-23 05:00:00,96.73,123.321,41.019,30.736 -2020-04-23 05:15:00,99.72,154.384,41.019,30.736 -2020-04-23 05:30:00,104.3,143.409,41.019,30.736 -2020-04-23 05:45:00,108.09,133.485,41.019,30.736 -2020-04-23 06:00:00,115.69,135.297,53.963,30.736 -2020-04-23 06:15:00,112.99,140.192,53.963,30.736 -2020-04-23 06:30:00,117.65,137.392,53.963,30.736 -2020-04-23 06:45:00,114.98,137.661,53.963,30.736 -2020-04-23 07:00:00,122.88,139.759,66.512,30.736 -2020-04-23 07:15:00,119.72,140.15200000000002,66.512,30.736 -2020-04-23 07:30:00,116.23,138.096,66.512,30.736 -2020-04-23 07:45:00,110.91,134.984,66.512,30.736 -2020-04-23 08:00:00,109.73,132.45600000000002,58.86,30.736 -2020-04-23 08:15:00,111.4,131.204,58.86,30.736 -2020-04-23 08:30:00,115.66,126.929,58.86,30.736 -2020-04-23 08:45:00,116.9,125.26,58.86,30.736 -2020-04-23 09:00:00,117.14,118.99799999999999,52.156000000000006,30.736 -2020-04-23 09:15:00,117.82,116.822,52.156000000000006,30.736 -2020-04-23 09:30:00,125.16,118.961,52.156000000000006,30.736 -2020-04-23 09:45:00,126.64,118.62700000000001,52.156000000000006,30.736 -2020-04-23 10:00:00,115.39,114.26899999999999,49.034,30.736 -2020-04-23 10:15:00,107.22,114.51,49.034,30.736 -2020-04-23 10:30:00,110.97,113.139,49.034,30.736 -2020-04-23 10:45:00,105.98,113.331,49.034,30.736 -2020-04-23 11:00:00,110.48,107.988,46.53,30.736 -2020-04-23 11:15:00,109.12,108.90700000000001,46.53,30.736 -2020-04-23 11:30:00,104.52,110.09200000000001,46.53,30.736 -2020-04-23 11:45:00,118.1,110.81299999999999,46.53,30.736 -2020-04-23 12:00:00,100.86,106.01799999999999,43.318000000000005,30.736 -2020-04-23 12:15:00,107.42,106.89200000000001,43.318000000000005,30.736 -2020-04-23 12:30:00,119.08,105.743,43.318000000000005,30.736 -2020-04-23 12:45:00,113.59,106.492,43.318000000000005,30.736 -2020-04-23 13:00:00,105.64,107.32799999999999,41.608000000000004,30.736 -2020-04-23 13:15:00,109.66,106.58,41.608000000000004,30.736 -2020-04-23 13:30:00,107.3,104.464,41.608000000000004,30.736 -2020-04-23 13:45:00,109.96,103.055,41.608000000000004,30.736 -2020-04-23 14:00:00,108.12,104.509,41.786,30.736 -2020-04-23 14:15:00,98.99,103.896,41.786,30.736 -2020-04-23 14:30:00,100.33,103.461,41.786,30.736 -2020-04-23 14:45:00,105.57,103.94200000000001,41.786,30.736 -2020-04-23 15:00:00,105.07,105.101,44.181999999999995,30.736 -2020-04-23 15:15:00,107.35,103.44200000000001,44.181999999999995,30.736 -2020-04-23 15:30:00,99.98,102.71700000000001,44.181999999999995,30.736 -2020-04-23 15:45:00,100.25,102.22399999999999,44.181999999999995,30.736 -2020-04-23 16:00:00,98.86,102.346,45.956,30.736 -2020-04-23 16:15:00,107.63,102.027,45.956,30.736 -2020-04-23 16:30:00,113.08,102.045,45.956,30.736 -2020-04-23 16:45:00,113.6,99.471,45.956,30.736 -2020-04-23 17:00:00,112.41,99.37799999999999,50.702,30.736 -2020-04-23 17:15:00,112.21,101.604,50.702,30.736 -2020-04-23 17:30:00,118.08,102.958,50.702,30.736 -2020-04-23 17:45:00,120.54,104.251,50.702,30.736 -2020-04-23 18:00:00,119.87,105.165,53.595,30.736 -2020-04-23 18:15:00,109.3,106.839,53.595,30.736 -2020-04-23 18:30:00,109.67,105.585,53.595,30.736 -2020-04-23 18:45:00,108.25,111.24799999999999,53.595,30.736 -2020-04-23 19:00:00,107.8,109.385,54.207,30.736 -2020-04-23 19:15:00,105.82,108.62,54.207,30.736 -2020-04-23 19:30:00,107.51,108.69200000000001,54.207,30.736 -2020-04-23 19:45:00,112.01,109.26,54.207,30.736 -2020-04-23 20:00:00,110.19,107.22,56.948,30.736 -2020-04-23 20:15:00,109.28,104.626,56.948,30.736 -2020-04-23 20:30:00,106.75,103.795,56.948,30.736 -2020-04-23 20:45:00,105.41,103.15899999999999,56.948,30.736 -2020-04-23 21:00:00,103.61,98.861,52.157,30.736 -2020-04-23 21:15:00,98.19,98.456,52.157,30.736 -2020-04-23 21:30:00,87.51,98.734,52.157,30.736 -2020-04-23 21:45:00,93.02,98.40700000000001,52.157,30.736 -2020-04-23 22:00:00,90.12,94.023,47.483000000000004,30.736 -2020-04-23 22:15:00,89.7,92.33200000000001,47.483000000000004,30.736 -2020-04-23 22:30:00,83.45,80.955,47.483000000000004,30.736 -2020-04-23 22:45:00,79.56,75.218,47.483000000000004,30.736 -2020-04-23 23:00:00,78.7,67.197,41.978,30.736 -2020-04-23 23:15:00,82.28,66.135,41.978,30.736 -2020-04-23 23:30:00,81.32,65.26899999999999,41.978,30.736 -2020-04-23 23:45:00,80.34,65.931,41.978,30.736 -2020-04-24 00:00:00,72.2,61.173,39.301,30.736 -2020-04-24 00:15:00,76.53,62.001999999999995,39.301,30.736 -2020-04-24 00:30:00,78.65,60.465,39.301,30.736 -2020-04-24 00:45:00,78.84,59.282,39.301,30.736 -2020-04-24 01:00:00,72.93,59.141999999999996,37.976,30.736 -2020-04-24 01:15:00,76.27,58.315,37.976,30.736 -2020-04-24 01:30:00,79.2,57.232,37.976,30.736 -2020-04-24 01:45:00,79.29,56.583999999999996,37.976,30.736 -2020-04-24 02:00:00,75.93,58.038999999999994,37.041,30.736 -2020-04-24 02:15:00,76.43,57.04,37.041,30.736 -2020-04-24 02:30:00,79.9,60.477,37.041,30.736 -2020-04-24 02:45:00,79.92,60.628,37.041,30.736 -2020-04-24 03:00:00,78.47,63.809,37.575,30.736 -2020-04-24 03:15:00,78.54,64.48100000000001,37.575,30.736 -2020-04-24 03:30:00,83.02,63.73,37.575,30.736 -2020-04-24 03:45:00,86.25,64.94,37.575,30.736 -2020-04-24 04:00:00,84.35,76.809,39.058,30.736 -2020-04-24 04:15:00,84.36,87.662,39.058,30.736 -2020-04-24 04:30:00,84.53,88.164,39.058,30.736 -2020-04-24 04:45:00,87.97,88.916,39.058,30.736 -2020-04-24 05:00:00,94.74,120.58200000000001,43.256,30.736 -2020-04-24 05:15:00,98.06,152.952,43.256,30.736 -2020-04-24 05:30:00,101.99,142.67,43.256,30.736 -2020-04-24 05:45:00,104.32,132.45,43.256,30.736 -2020-04-24 06:00:00,110.14,134.679,56.093999999999994,30.736 -2020-04-24 06:15:00,110.92,138.92700000000002,56.093999999999994,30.736 -2020-04-24 06:30:00,115.01,135.642,56.093999999999994,30.736 -2020-04-24 06:45:00,113.33,136.634,56.093999999999994,30.736 -2020-04-24 07:00:00,114.79,138.756,66.92699999999999,30.736 -2020-04-24 07:15:00,114.94,140.278,66.92699999999999,30.736 -2020-04-24 07:30:00,111.87,136.784,66.92699999999999,30.736 -2020-04-24 07:45:00,113.65,133.072,66.92699999999999,30.736 -2020-04-24 08:00:00,111.88,130.465,60.332,30.736 -2020-04-24 08:15:00,111.97,129.475,60.332,30.736 -2020-04-24 08:30:00,116.04,125.63600000000001,60.332,30.736 -2020-04-24 08:45:00,116.96,123.051,60.332,30.736 -2020-04-24 09:00:00,113.47,115.54,56.085,30.736 -2020-04-24 09:15:00,109.61,114.911,56.085,30.736 -2020-04-24 09:30:00,104.73,116.389,56.085,30.736 -2020-04-24 09:45:00,106.39,116.274,56.085,30.736 -2020-04-24 10:00:00,104.8,111.147,52.91,30.736 -2020-04-24 10:15:00,110.96,111.698,52.91,30.736 -2020-04-24 10:30:00,108.8,110.649,52.91,30.736 -2020-04-24 10:45:00,112.42,110.54799999999999,52.91,30.736 -2020-04-24 11:00:00,105.01,105.321,52.278999999999996,30.736 -2020-04-24 11:15:00,106.04,105.079,52.278999999999996,30.736 -2020-04-24 11:30:00,106.23,107.06299999999999,52.278999999999996,30.736 -2020-04-24 11:45:00,105.8,107.24700000000001,52.278999999999996,30.736 -2020-04-24 12:00:00,101.15,103.402,49.023999999999994,30.736 -2020-04-24 12:15:00,100.58,102.65100000000001,49.023999999999994,30.736 -2020-04-24 12:30:00,96.07,101.62299999999999,49.023999999999994,30.736 -2020-04-24 12:45:00,90.58,102.21799999999999,49.023999999999994,30.736 -2020-04-24 13:00:00,91.3,104.00399999999999,46.82,30.736 -2020-04-24 13:15:00,91.72,103.84899999999999,46.82,30.736 -2020-04-24 13:30:00,89.96,102.21700000000001,46.82,30.736 -2020-04-24 13:45:00,90.43,100.95299999999999,46.82,30.736 -2020-04-24 14:00:00,91.03,101.309,45.756,30.736 -2020-04-24 14:15:00,90.38,100.82799999999999,45.756,30.736 -2020-04-24 14:30:00,90.13,101.54700000000001,45.756,30.736 -2020-04-24 14:45:00,87.82,101.804,45.756,30.736 -2020-04-24 15:00:00,88.57,102.664,47.56,30.736 -2020-04-24 15:15:00,89.54,100.579,47.56,30.736 -2020-04-24 15:30:00,90.6,98.565,47.56,30.736 -2020-04-24 15:45:00,93.53,98.59200000000001,47.56,30.736 -2020-04-24 16:00:00,96.08,97.604,49.581,30.736 -2020-04-24 16:15:00,98.58,97.73100000000001,49.581,30.736 -2020-04-24 16:30:00,103.04,97.697,49.581,30.736 -2020-04-24 16:45:00,102.74,94.509,49.581,30.736 -2020-04-24 17:00:00,106.18,95.684,53.918,30.736 -2020-04-24 17:15:00,105.16,97.54299999999999,53.918,30.736 -2020-04-24 17:30:00,105.91,98.814,53.918,30.736 -2020-04-24 17:45:00,107.32,99.845,53.918,30.736 -2020-04-24 18:00:00,107.44,101.23700000000001,54.266000000000005,30.736 -2020-04-24 18:15:00,104.49,102.10700000000001,54.266000000000005,30.736 -2020-04-24 18:30:00,104.57,100.98899999999999,54.266000000000005,30.736 -2020-04-24 18:45:00,103.28,106.92399999999999,54.266000000000005,30.736 -2020-04-24 19:00:00,105.31,106.14399999999999,54.092,30.736 -2020-04-24 19:15:00,99.77,106.50299999999999,54.092,30.736 -2020-04-24 19:30:00,104.65,106.406,54.092,30.736 -2020-04-24 19:45:00,102.74,106.08,54.092,30.736 -2020-04-24 20:00:00,99.02,103.93700000000001,59.038999999999994,30.736 -2020-04-24 20:15:00,105.31,101.875,59.038999999999994,30.736 -2020-04-24 20:30:00,106.75,100.73700000000001,59.038999999999994,30.736 -2020-04-24 20:45:00,103.82,99.896,59.038999999999994,30.736 -2020-04-24 21:00:00,92.72,96.742,53.346000000000004,30.736 -2020-04-24 21:15:00,89.77,97.68700000000001,53.346000000000004,30.736 -2020-04-24 21:30:00,92.29,97.876,53.346000000000004,30.736 -2020-04-24 21:45:00,91.53,98.0,53.346000000000004,30.736 -2020-04-24 22:00:00,86.77,94.05799999999999,47.938,30.736 -2020-04-24 22:15:00,82.96,92.156,47.938,30.736 -2020-04-24 22:30:00,85.15,87.279,47.938,30.736 -2020-04-24 22:45:00,83.5,83.97200000000001,47.938,30.736 -2020-04-24 23:00:00,78.39,76.804,40.266,30.736 -2020-04-24 23:15:00,76.03,73.711,40.266,30.736 -2020-04-24 23:30:00,79.22,70.86399999999999,40.266,30.736 -2020-04-24 23:45:00,77.46,71.1,40.266,30.736 -2020-04-25 00:00:00,72.92,60.177,39.184,30.618000000000002 -2020-04-25 00:15:00,67.06,58.391000000000005,39.184,30.618000000000002 -2020-04-25 00:30:00,65.85,57.206,39.184,30.618000000000002 -2020-04-25 00:45:00,69.65,55.895,39.184,30.618000000000002 -2020-04-25 01:00:00,71.38,56.265,34.692,30.618000000000002 -2020-04-25 01:15:00,72.76,55.318000000000005,34.692,30.618000000000002 -2020-04-25 01:30:00,69.42,53.401,34.692,30.618000000000002 -2020-04-25 01:45:00,71.88,53.498000000000005,34.692,30.618000000000002 -2020-04-25 02:00:00,71.15,54.626000000000005,32.919000000000004,30.618000000000002 -2020-04-25 02:15:00,71.09,52.883,32.919000000000004,30.618000000000002 -2020-04-25 02:30:00,65.69,55.233999999999995,32.919000000000004,30.618000000000002 -2020-04-25 02:45:00,61.4,55.98,32.919000000000004,30.618000000000002 -2020-04-25 03:00:00,64.48,58.56100000000001,32.024,30.618000000000002 -2020-04-25 03:15:00,63.49,58.118,32.024,30.618000000000002 -2020-04-25 03:30:00,63.7,56.793,32.024,30.618000000000002 -2020-04-25 03:45:00,64.2,59.101000000000006,32.024,30.618000000000002 -2020-04-25 04:00:00,64.64,67.586,31.958000000000002,30.618000000000002 -2020-04-25 04:15:00,64.45,76.515,31.958000000000002,30.618000000000002 -2020-04-25 04:30:00,62.58,74.78,31.958000000000002,30.618000000000002 -2020-04-25 04:45:00,61.79,75.464,31.958000000000002,30.618000000000002 -2020-04-25 05:00:00,62.67,93.719,32.75,30.618000000000002 -2020-04-25 05:15:00,63.83,109.10600000000001,32.75,30.618000000000002 -2020-04-25 05:30:00,66.59,100.096,32.75,30.618000000000002 -2020-04-25 05:45:00,66.17,95.70100000000001,32.75,30.618000000000002 -2020-04-25 06:00:00,69.06,114.625,34.461999999999996,30.618000000000002 -2020-04-25 06:15:00,71.02,132.321,34.461999999999996,30.618000000000002 -2020-04-25 06:30:00,71.93,124.402,34.461999999999996,30.618000000000002 -2020-04-25 06:45:00,73.64,118.735,34.461999999999996,30.618000000000002 -2020-04-25 07:00:00,76.52,117.56200000000001,37.736,30.618000000000002 -2020-04-25 07:15:00,76.86,117.56,37.736,30.618000000000002 -2020-04-25 07:30:00,77.45,116.432,37.736,30.618000000000002 -2020-04-25 07:45:00,75.16,115.383,37.736,30.618000000000002 -2020-04-25 08:00:00,75.87,115.021,42.34,30.618000000000002 -2020-04-25 08:15:00,75.01,115.853,42.34,30.618000000000002 -2020-04-25 08:30:00,76.19,112.833,42.34,30.618000000000002 -2020-04-25 08:45:00,75.0,112.568,42.34,30.618000000000002 -2020-04-25 09:00:00,77.22,107.902,43.571999999999996,30.618000000000002 -2020-04-25 09:15:00,74.1,107.99700000000001,43.571999999999996,30.618000000000002 -2020-04-25 09:30:00,74.58,110.29799999999999,43.571999999999996,30.618000000000002 -2020-04-25 09:45:00,72.53,110.01700000000001,43.571999999999996,30.618000000000002 -2020-04-25 10:00:00,70.38,105.26,40.514,30.618000000000002 -2020-04-25 10:15:00,71.83,106.17,40.514,30.618000000000002 -2020-04-25 10:30:00,72.86,105.02600000000001,40.514,30.618000000000002 -2020-04-25 10:45:00,76.31,105.464,40.514,30.618000000000002 -2020-04-25 11:00:00,75.64,100.208,36.388000000000005,30.618000000000002 -2020-04-25 11:15:00,72.22,100.119,36.388000000000005,30.618000000000002 -2020-04-25 11:30:00,70.44,101.631,36.388000000000005,30.618000000000002 -2020-04-25 11:45:00,66.44,101.69,36.388000000000005,30.618000000000002 -2020-04-25 12:00:00,62.4,97.416,35.217,30.618000000000002 -2020-04-25 12:15:00,63.37,97.552,35.217,30.618000000000002 -2020-04-25 12:30:00,62.6,96.59299999999999,35.217,30.618000000000002 -2020-04-25 12:45:00,62.97,97.165,35.217,30.618000000000002 -2020-04-25 13:00:00,66.68,98.23899999999999,32.001999999999995,30.618000000000002 -2020-04-25 13:15:00,66.46,96.544,32.001999999999995,30.618000000000002 -2020-04-25 13:30:00,68.38,94.76,32.001999999999995,30.618000000000002 -2020-04-25 13:45:00,63.86,92.984,32.001999999999995,30.618000000000002 -2020-04-25 14:00:00,65.79,94.14200000000001,31.304000000000002,30.618000000000002 -2020-04-25 14:15:00,65.45,92.59,31.304000000000002,30.618000000000002 -2020-04-25 14:30:00,67.98,91.934,31.304000000000002,30.618000000000002 -2020-04-25 14:45:00,70.14,92.603,31.304000000000002,30.618000000000002 -2020-04-25 15:00:00,73.95,94.147,34.731,30.618000000000002 -2020-04-25 15:15:00,68.45,92.935,34.731,30.618000000000002 -2020-04-25 15:30:00,69.17,91.913,34.731,30.618000000000002 -2020-04-25 15:45:00,71.96,91.391,34.731,30.618000000000002 -2020-04-25 16:00:00,74.03,91.31200000000001,38.769,30.618000000000002 -2020-04-25 16:15:00,73.54,91.38,38.769,30.618000000000002 -2020-04-25 16:30:00,77.94,91.461,38.769,30.618000000000002 -2020-04-25 16:45:00,77.97,88.696,38.769,30.618000000000002 -2020-04-25 17:00:00,79.95,88.99700000000001,44.928000000000004,30.618000000000002 -2020-04-25 17:15:00,79.81,90.412,44.928000000000004,30.618000000000002 -2020-04-25 17:30:00,81.88,91.541,44.928000000000004,30.618000000000002 -2020-04-25 17:45:00,79.84,92.62799999999999,44.928000000000004,30.618000000000002 -2020-04-25 18:00:00,81.95,94.76899999999999,47.786,30.618000000000002 -2020-04-25 18:15:00,80.8,97.704,47.786,30.618000000000002 -2020-04-25 18:30:00,80.62,98.166,47.786,30.618000000000002 -2020-04-25 18:45:00,81.58,100.06200000000001,47.786,30.618000000000002 -2020-04-25 19:00:00,82.25,98.82600000000001,47.463,30.618000000000002 -2020-04-25 19:15:00,81.6,98.26799999999999,47.463,30.618000000000002 -2020-04-25 19:30:00,78.79,99.083,47.463,30.618000000000002 -2020-04-25 19:45:00,81.11,99.837,47.463,30.618000000000002 -2020-04-25 20:00:00,79.47,99.35600000000001,43.735,30.618000000000002 -2020-04-25 20:15:00,80.74,98.01899999999999,43.735,30.618000000000002 -2020-04-25 20:30:00,77.33,96.155,43.735,30.618000000000002 -2020-04-25 20:45:00,77.88,96.339,43.735,30.618000000000002 -2020-04-25 21:00:00,76.72,93.439,40.346,30.618000000000002 -2020-04-25 21:15:00,73.54,94.40100000000001,40.346,30.618000000000002 -2020-04-25 21:30:00,70.17,95.348,40.346,30.618000000000002 -2020-04-25 21:45:00,69.94,94.93,40.346,30.618000000000002 -2020-04-25 22:00:00,66.61,91.697,39.323,30.618000000000002 -2020-04-25 22:15:00,65.99,91.294,39.323,30.618000000000002 -2020-04-25 22:30:00,63.67,89.425,39.323,30.618000000000002 -2020-04-25 22:45:00,62.7,87.34100000000001,39.323,30.618000000000002 -2020-04-25 23:00:00,58.03,80.985,33.716,30.618000000000002 -2020-04-25 23:15:00,58.89,77.345,33.716,30.618000000000002 -2020-04-25 23:30:00,57.34,75.185,33.716,30.618000000000002 -2020-04-25 23:45:00,57.63,74.384,33.716,30.618000000000002 -2020-04-26 00:00:00,53.94,60.93899999999999,28.703000000000003,30.618000000000002 -2020-04-26 00:15:00,54.77,58.223,28.703000000000003,30.618000000000002 -2020-04-26 00:30:00,54.11,56.742,28.703000000000003,30.618000000000002 -2020-04-26 00:45:00,54.48,55.713,28.703000000000003,30.618000000000002 -2020-04-26 01:00:00,53.07,56.185,26.171,30.618000000000002 -2020-04-26 01:15:00,53.77,55.653,26.171,30.618000000000002 -2020-04-26 01:30:00,53.29,53.88399999999999,26.171,30.618000000000002 -2020-04-26 01:45:00,53.5,53.567,26.171,30.618000000000002 -2020-04-26 02:00:00,52.56,54.358999999999995,25.326999999999998,30.618000000000002 -2020-04-26 02:15:00,53.08,52.657,25.326999999999998,30.618000000000002 -2020-04-26 02:30:00,53.0,55.581,25.326999999999998,30.618000000000002 -2020-04-26 02:45:00,53.59,56.367,25.326999999999998,30.618000000000002 -2020-04-26 03:00:00,53.57,59.565,24.311999999999998,30.618000000000002 -2020-04-26 03:15:00,54.44,59.016000000000005,24.311999999999998,30.618000000000002 -2020-04-26 03:30:00,54.58,57.88,24.311999999999998,30.618000000000002 -2020-04-26 03:45:00,54.59,59.626999999999995,24.311999999999998,30.618000000000002 -2020-04-26 04:00:00,55.25,67.928,25.33,30.618000000000002 -2020-04-26 04:15:00,56.11,76.015,25.33,30.618000000000002 -2020-04-26 04:30:00,54.4,75.235,25.33,30.618000000000002 -2020-04-26 04:45:00,54.42,75.722,25.33,30.618000000000002 -2020-04-26 05:00:00,53.23,92.29700000000001,25.309,30.618000000000002 -2020-04-26 05:15:00,54.13,105.882,25.309,30.618000000000002 -2020-04-26 05:30:00,53.73,96.536,25.309,30.618000000000002 -2020-04-26 05:45:00,55.13,92.115,25.309,30.618000000000002 -2020-04-26 06:00:00,56.83,109.336,25.945999999999998,30.618000000000002 -2020-04-26 06:15:00,59.16,126.744,25.945999999999998,30.618000000000002 -2020-04-26 06:30:00,59.67,117.788,25.945999999999998,30.618000000000002 -2020-04-26 06:45:00,60.03,110.90899999999999,25.945999999999998,30.618000000000002 -2020-04-26 07:00:00,62.06,111.11,27.87,30.618000000000002 -2020-04-26 07:15:00,63.4,109.559,27.87,30.618000000000002 -2020-04-26 07:30:00,62.84,108.62899999999999,27.87,30.618000000000002 -2020-04-26 07:45:00,61.39,107.17399999999999,27.87,30.618000000000002 -2020-04-26 08:00:00,61.91,108.194,32.114000000000004,30.618000000000002 -2020-04-26 08:15:00,60.92,109.787,32.114000000000004,30.618000000000002 -2020-04-26 08:30:00,59.14,108.181,32.114000000000004,30.618000000000002 -2020-04-26 08:45:00,58.58,108.95200000000001,32.114000000000004,30.618000000000002 -2020-04-26 09:00:00,57.18,103.98299999999999,34.222,30.618000000000002 -2020-04-26 09:15:00,58.03,104.06200000000001,34.222,30.618000000000002 -2020-04-26 09:30:00,58.37,106.571,34.222,30.618000000000002 -2020-04-26 09:45:00,60.08,106.904,34.222,30.618000000000002 -2020-04-26 10:00:00,59.48,103.84200000000001,34.544000000000004,30.618000000000002 -2020-04-26 10:15:00,60.83,105.178,34.544000000000004,30.618000000000002 -2020-04-26 10:30:00,61.23,104.53,34.544000000000004,30.618000000000002 -2020-04-26 10:45:00,61.1,104.56299999999999,34.544000000000004,30.618000000000002 -2020-04-26 11:00:00,62.69,99.581,36.368,30.618000000000002 -2020-04-26 11:15:00,58.41,99.315,36.368,30.618000000000002 -2020-04-26 11:30:00,56.55,100.654,36.368,30.618000000000002 -2020-04-26 11:45:00,57.98,101.229,36.368,30.618000000000002 -2020-04-26 12:00:00,52.84,97.259,32.433,30.618000000000002 -2020-04-26 12:15:00,51.83,98.132,32.433,30.618000000000002 -2020-04-26 12:30:00,49.53,96.414,32.433,30.618000000000002 -2020-04-26 12:45:00,50.89,96.04799999999999,32.433,30.618000000000002 -2020-04-26 13:00:00,45.96,96.559,28.971999999999998,30.618000000000002 -2020-04-26 13:15:00,46.59,96.266,28.971999999999998,30.618000000000002 -2020-04-26 13:30:00,46.54,93.7,28.971999999999998,30.618000000000002 -2020-04-26 13:45:00,49.1,92.21,28.971999999999998,30.618000000000002 -2020-04-26 14:00:00,49.36,94.28200000000001,25.531999999999996,30.618000000000002 -2020-04-26 14:15:00,47.82,93.669,25.531999999999996,30.618000000000002 -2020-04-26 14:30:00,46.91,92.95,25.531999999999996,30.618000000000002 -2020-04-26 14:45:00,50.24,92.745,25.531999999999996,30.618000000000002 -2020-04-26 15:00:00,48.5,93.521,25.766,30.618000000000002 -2020-04-26 15:15:00,49.38,92.24700000000001,25.766,30.618000000000002 -2020-04-26 15:30:00,52.0,91.41799999999999,25.766,30.618000000000002 -2020-04-26 15:45:00,56.72,91.45100000000001,25.766,30.618000000000002 -2020-04-26 16:00:00,58.03,91.37200000000001,29.232,30.618000000000002 -2020-04-26 16:15:00,58.12,91.04899999999999,29.232,30.618000000000002 -2020-04-26 16:30:00,61.98,91.90100000000001,29.232,30.618000000000002 -2020-04-26 16:45:00,66.32,89.185,29.232,30.618000000000002 -2020-04-26 17:00:00,69.92,89.704,37.431,30.618000000000002 -2020-04-26 17:15:00,72.25,91.865,37.431,30.618000000000002 -2020-04-26 17:30:00,71.68,93.652,37.431,30.618000000000002 -2020-04-26 17:45:00,72.65,96.22200000000001,37.431,30.618000000000002 -2020-04-26 18:00:00,74.1,98.405,41.251999999999995,30.618000000000002 -2020-04-26 18:15:00,73.58,101.804,41.251999999999995,30.618000000000002 -2020-04-26 18:30:00,79.83,100.978,41.251999999999995,30.618000000000002 -2020-04-26 18:45:00,81.73,103.944,41.251999999999995,30.618000000000002 -2020-04-26 19:00:00,82.6,103.89399999999999,41.784,30.618000000000002 -2020-04-26 19:15:00,74.77,102.92299999999999,41.784,30.618000000000002 -2020-04-26 19:30:00,78.18,103.49700000000001,41.784,30.618000000000002 -2020-04-26 19:45:00,82.92,104.728,41.784,30.618000000000002 -2020-04-26 20:00:00,80.12,104.32799999999999,40.804,30.618000000000002 -2020-04-26 20:15:00,79.67,103.42299999999999,40.804,30.618000000000002 -2020-04-26 20:30:00,83.74,102.774,40.804,30.618000000000002 -2020-04-26 20:45:00,87.56,101.26,40.804,30.618000000000002 -2020-04-26 21:00:00,86.73,96.89200000000001,38.379,30.618000000000002 -2020-04-26 21:15:00,77.37,97.345,38.379,30.618000000000002 -2020-04-26 21:30:00,78.96,98.001,38.379,30.618000000000002 -2020-04-26 21:45:00,72.49,97.919,38.379,30.618000000000002 -2020-04-26 22:00:00,71.02,95.426,37.87,30.618000000000002 -2020-04-26 22:15:00,74.6,93.542,37.87,30.618000000000002 -2020-04-26 22:30:00,74.46,89.67299999999999,37.87,30.618000000000002 -2020-04-26 22:45:00,77.49,86.29799999999999,37.87,30.618000000000002 -2020-04-26 23:00:00,67.34,78.266,33.332,30.618000000000002 -2020-04-26 23:15:00,67.41,76.46300000000001,33.332,30.618000000000002 -2020-04-26 23:30:00,65.25,74.368,33.332,30.618000000000002 -2020-04-26 23:45:00,71.84,74.14,33.332,30.618000000000002 -2020-04-27 00:00:00,65.34,63.676,34.698,30.736 -2020-04-27 00:15:00,68.11,62.993,34.698,30.736 -2020-04-27 00:30:00,62.17,61.31,34.698,30.736 -2020-04-27 00:45:00,65.5,59.75,34.698,30.736 -2020-04-27 01:00:00,67.94,60.476000000000006,32.889,30.736 -2020-04-27 01:15:00,68.09,59.667,32.889,30.736 -2020-04-27 01:30:00,64.87,58.151,32.889,30.736 -2020-04-27 01:45:00,62.39,57.826,32.889,30.736 -2020-04-27 02:00:00,60.51,58.898999999999994,32.06,30.736 -2020-04-27 02:15:00,61.52,57.211000000000006,32.06,30.736 -2020-04-27 02:30:00,63.11,60.428999999999995,32.06,30.736 -2020-04-27 02:45:00,65.0,60.816,32.06,30.736 -2020-04-27 03:00:00,70.94,64.986,30.515,30.736 -2020-04-27 03:15:00,71.15,65.718,30.515,30.736 -2020-04-27 03:30:00,66.39,64.915,30.515,30.736 -2020-04-27 03:45:00,68.04,66.095,30.515,30.736 -2020-04-27 04:00:00,69.68,78.61399999999999,31.436,30.736 -2020-04-27 04:15:00,70.3,90.708,31.436,30.736 -2020-04-27 04:30:00,70.44,90.67,31.436,30.736 -2020-04-27 04:45:00,74.91,91.48200000000001,31.436,30.736 -2020-04-27 05:00:00,81.04,120.303,38.997,30.736 -2020-04-27 05:15:00,85.59,150.614,38.997,30.736 -2020-04-27 05:30:00,88.32,140.344,38.997,30.736 -2020-04-27 05:45:00,87.62,131.126,38.997,30.736 -2020-04-27 06:00:00,93.16,132.86700000000002,54.97,30.736 -2020-04-27 06:15:00,90.44,136.747,54.97,30.736 -2020-04-27 06:30:00,94.92,134.424,54.97,30.736 -2020-04-27 06:45:00,93.91,135.476,54.97,30.736 -2020-04-27 07:00:00,97.72,137.559,66.032,30.736 -2020-04-27 07:15:00,94.82,138.159,66.032,30.736 -2020-04-27 07:30:00,94.52,136.225,66.032,30.736 -2020-04-27 07:45:00,94.9,133.67700000000002,66.032,30.736 -2020-04-27 08:00:00,92.49,131.08700000000002,59.941,30.736 -2020-04-27 08:15:00,91.85,130.80700000000002,59.941,30.736 -2020-04-27 08:30:00,93.31,126.40799999999999,59.941,30.736 -2020-04-27 08:45:00,92.94,125.59700000000001,59.941,30.736 -2020-04-27 09:00:00,92.84,119.57600000000001,54.016000000000005,30.736 -2020-04-27 09:15:00,91.53,116.648,54.016000000000005,30.736 -2020-04-27 09:30:00,89.3,118.041,54.016000000000005,30.736 -2020-04-27 09:45:00,89.57,117.095,54.016000000000005,30.736 -2020-04-27 10:00:00,89.14,113.96600000000001,50.63,30.736 -2020-04-27 10:15:00,98.83,115.074,50.63,30.736 -2020-04-27 10:30:00,93.52,113.675,50.63,30.736 -2020-04-27 10:45:00,89.12,113.164,50.63,30.736 -2020-04-27 11:00:00,89.55,106.956,49.951,30.736 -2020-04-27 11:15:00,91.6,107.90700000000001,49.951,30.736 -2020-04-27 11:30:00,86.24,110.45299999999999,49.951,30.736 -2020-04-27 11:45:00,87.15,111.12,49.951,30.736 -2020-04-27 12:00:00,88.45,107.34700000000001,46.913000000000004,30.736 -2020-04-27 12:15:00,99.89,108.29299999999999,46.913000000000004,30.736 -2020-04-27 12:30:00,92.92,106.042,46.913000000000004,30.736 -2020-04-27 12:45:00,89.09,106.566,46.913000000000004,30.736 -2020-04-27 13:00:00,96.03,108.00299999999999,47.093999999999994,30.736 -2020-04-27 13:15:00,84.25,106.37299999999999,47.093999999999994,30.736 -2020-04-27 13:30:00,77.31,103.604,47.093999999999994,30.736 -2020-04-27 13:45:00,88.26,102.666,47.093999999999994,30.736 -2020-04-27 14:00:00,85.89,103.928,46.678000000000004,30.736 -2020-04-27 14:15:00,80.66,103.271,46.678000000000004,30.736 -2020-04-27 14:30:00,80.46,102.094,46.678000000000004,30.736 -2020-04-27 14:45:00,81.74,103.096,46.678000000000004,30.736 -2020-04-27 15:00:00,82.97,104.74700000000001,47.715,30.736 -2020-04-27 15:15:00,81.62,102.262,47.715,30.736 -2020-04-27 15:30:00,82.55,101.359,47.715,30.736 -2020-04-27 15:45:00,85.7,100.82799999999999,47.715,30.736 -2020-04-27 16:00:00,85.53,101.301,49.81100000000001,30.736 -2020-04-27 16:15:00,85.86,100.56299999999999,49.81100000000001,30.736 -2020-04-27 16:30:00,88.12,100.47,49.81100000000001,30.736 -2020-04-27 16:45:00,89.52,97.03399999999999,49.81100000000001,30.736 -2020-04-27 17:00:00,93.73,96.706,55.591,30.736 -2020-04-27 17:15:00,92.69,98.552,55.591,30.736 -2020-04-27 17:30:00,95.38,99.787,55.591,30.736 -2020-04-27 17:45:00,94.15,101.258,55.591,30.736 -2020-04-27 18:00:00,95.38,102.904,56.523,30.736 -2020-04-27 18:15:00,92.93,103.962,56.523,30.736 -2020-04-27 18:30:00,92.0,102.98899999999999,56.523,30.736 -2020-04-27 18:45:00,90.2,108.369,56.523,30.736 -2020-04-27 19:00:00,90.92,107.20299999999999,56.044,30.736 -2020-04-27 19:15:00,86.2,106.48899999999999,56.044,30.736 -2020-04-27 19:30:00,85.27,107.094,56.044,30.736 -2020-04-27 19:45:00,86.87,107.507,56.044,30.736 -2020-04-27 20:00:00,84.36,105.01899999999999,61.715,30.736 -2020-04-27 20:15:00,83.51,103.73299999999999,61.715,30.736 -2020-04-27 20:30:00,80.49,102.479,61.715,30.736 -2020-04-27 20:45:00,78.45,101.991,61.715,30.736 -2020-04-27 21:00:00,72.63,97.50399999999999,56.24,30.736 -2020-04-27 21:15:00,73.27,97.652,56.24,30.736 -2020-04-27 21:30:00,68.74,98.13600000000001,56.24,30.736 -2020-04-27 21:45:00,67.7,97.67399999999999,56.24,30.736 -2020-04-27 22:00:00,63.52,92.344,50.437,30.736 -2020-04-27 22:15:00,63.05,91.10600000000001,50.437,30.736 -2020-04-27 22:30:00,60.88,79.39,50.437,30.736 -2020-04-27 22:45:00,60.19,73.476,50.437,30.736 -2020-04-27 23:00:00,81.41,65.845,42.756,30.736 -2020-04-27 23:15:00,80.65,64.377,42.756,30.736 -2020-04-27 23:30:00,78.41,63.692,42.756,30.736 -2020-04-27 23:45:00,78.52,64.492,42.756,30.736 -2020-04-28 00:00:00,77.46,61.4,39.857,30.736 -2020-04-28 00:15:00,76.93,62.035,39.857,30.736 -2020-04-28 00:30:00,76.12,60.358000000000004,39.857,30.736 -2020-04-28 00:45:00,76.92,58.856,39.857,30.736 -2020-04-28 01:00:00,78.02,59.108999999999995,37.233000000000004,30.736 -2020-04-28 01:15:00,78.26,58.13,37.233000000000004,30.736 -2020-04-28 01:30:00,75.49,56.593,37.233000000000004,30.736 -2020-04-28 01:45:00,75.85,56.073,37.233000000000004,30.736 -2020-04-28 02:00:00,78.67,56.803000000000004,35.856,30.736 -2020-04-28 02:15:00,78.88,55.836999999999996,35.856,30.736 -2020-04-28 02:30:00,73.42,58.508,35.856,30.736 -2020-04-28 02:45:00,73.56,59.13,35.856,30.736 -2020-04-28 03:00:00,74.82,62.342,34.766999999999996,30.736 -2020-04-28 03:15:00,76.05,63.271,34.766999999999996,30.736 -2020-04-28 03:30:00,79.51,62.683,34.766999999999996,30.736 -2020-04-28 03:45:00,83.12,63.217,34.766999999999996,30.736 -2020-04-28 04:00:00,84.91,74.73899999999999,35.468,30.736 -2020-04-28 04:15:00,84.94,86.62700000000001,35.468,30.736 -2020-04-28 04:30:00,87.14,86.353,35.468,30.736 -2020-04-28 04:45:00,88.32,88.088,35.468,30.736 -2020-04-28 05:00:00,95.45,120.323,40.399,30.736 -2020-04-28 05:15:00,98.01,150.866,40.399,30.736 -2020-04-28 05:30:00,100.42,140.02200000000002,40.399,30.736 -2020-04-28 05:45:00,102.69,130.343,40.399,30.736 -2020-04-28 06:00:00,107.5,132.263,54.105,30.736 -2020-04-28 06:15:00,108.18,137.054,54.105,30.736 -2020-04-28 06:30:00,110.19,134.178,54.105,30.736 -2020-04-28 06:45:00,110.95,134.42600000000002,54.105,30.736 -2020-04-28 07:00:00,112.62,136.516,63.083,30.736 -2020-04-28 07:15:00,112.53,136.851,63.083,30.736 -2020-04-28 07:30:00,113.87,134.61700000000002,63.083,30.736 -2020-04-28 07:45:00,112.32,131.526,63.083,30.736 -2020-04-28 08:00:00,110.21,128.942,57.254,30.736 -2020-04-28 08:15:00,108.73,127.866,57.254,30.736 -2020-04-28 08:30:00,109.99,123.456,57.254,30.736 -2020-04-28 08:45:00,111.24,121.929,57.254,30.736 -2020-04-28 09:00:00,110.59,115.686,51.395,30.736 -2020-04-28 09:15:00,110.8,113.535,51.395,30.736 -2020-04-28 09:30:00,110.96,115.749,51.395,30.736 -2020-04-28 09:45:00,110.3,115.579,51.395,30.736 -2020-04-28 10:00:00,108.23,111.265,48.201,30.736 -2020-04-28 10:15:00,110.0,111.735,48.201,30.736 -2020-04-28 10:30:00,108.55,110.477,48.201,30.736 -2020-04-28 10:45:00,108.8,110.765,48.201,30.736 -2020-04-28 11:00:00,106.28,105.389,46.133,30.736 -2020-04-28 11:15:00,105.09,106.42,46.133,30.736 -2020-04-28 11:30:00,103.75,107.59899999999999,46.133,30.736 -2020-04-28 11:45:00,106.98,108.41,46.133,30.736 -2020-04-28 12:00:00,106.37,103.759,44.243,30.736 -2020-04-28 12:15:00,109.77,104.667,44.243,30.736 -2020-04-28 12:30:00,108.48,103.306,44.243,30.736 -2020-04-28 12:45:00,108.19,104.073,44.243,30.736 -2020-04-28 13:00:00,104.13,105.09,45.042,30.736 -2020-04-28 13:15:00,103.69,104.32,45.042,30.736 -2020-04-28 13:30:00,104.39,102.223,45.042,30.736 -2020-04-28 13:45:00,106.18,100.82600000000001,45.042,30.736 -2020-04-28 14:00:00,111.13,102.575,44.062,30.736 -2020-04-28 14:15:00,109.93,101.874,44.062,30.736 -2020-04-28 14:30:00,107.35,101.215,44.062,30.736 -2020-04-28 14:45:00,104.4,101.706,44.062,30.736 -2020-04-28 15:00:00,109.65,103.045,46.461999999999996,30.736 -2020-04-28 15:15:00,109.95,101.281,46.461999999999996,30.736 -2020-04-28 15:30:00,109.44,100.34299999999999,46.461999999999996,30.736 -2020-04-28 15:45:00,108.73,99.764,46.461999999999996,30.736 -2020-04-28 16:00:00,108.15,100.094,48.802,30.736 -2020-04-28 16:15:00,109.08,99.656,48.802,30.736 -2020-04-28 16:30:00,111.59,99.704,48.802,30.736 -2020-04-28 16:45:00,112.11,96.806,48.802,30.736 -2020-04-28 17:00:00,114.23,96.969,55.672,30.736 -2020-04-28 17:15:00,114.12,99.066,55.672,30.736 -2020-04-28 17:30:00,116.32,100.38799999999999,55.672,30.736 -2020-04-28 17:45:00,115.06,101.552,55.672,30.736 -2020-04-28 18:00:00,116.52,102.531,57.006,30.736 -2020-04-28 18:15:00,116.37,104.29299999999999,57.006,30.736 -2020-04-28 18:30:00,116.22,102.975,57.006,30.736 -2020-04-28 18:45:00,113.05,108.661,57.006,30.736 -2020-04-28 19:00:00,109.57,106.756,57.148,30.736 -2020-04-28 19:15:00,107.41,106.01799999999999,57.148,30.736 -2020-04-28 19:30:00,111.56,106.139,57.148,30.736 -2020-04-28 19:45:00,110.69,106.81299999999999,57.148,30.736 -2020-04-28 20:00:00,106.84,104.641,61.895,30.736 -2020-04-28 20:15:00,104.83,102.081,61.895,30.736 -2020-04-28 20:30:00,102.09,101.42,61.895,30.736 -2020-04-28 20:45:00,105.29,100.936,61.895,30.736 -2020-04-28 21:00:00,99.4,96.655,54.78,30.736 -2020-04-28 21:15:00,99.25,96.321,54.78,30.736 -2020-04-28 21:30:00,93.24,96.527,54.78,30.736 -2020-04-28 21:45:00,89.26,96.34100000000001,54.78,30.736 -2020-04-28 22:00:00,87.28,92.029,50.76,30.736 -2020-04-28 22:15:00,89.13,90.45700000000001,50.76,30.736 -2020-04-28 22:30:00,86.27,78.956,50.76,30.736 -2020-04-28 22:45:00,83.49,73.17399999999999,50.76,30.736 -2020-04-28 23:00:00,71.4,65.023,44.162,30.736 -2020-04-28 23:15:00,70.29,64.152,44.162,30.736 -2020-04-28 23:30:00,75.32,63.277,44.162,30.736 -2020-04-28 23:45:00,78.15,63.973,44.162,30.736 -2020-04-29 00:00:00,73.93,61.016999999999996,39.061,30.736 -2020-04-29 00:15:00,68.61,61.667,39.061,30.736 -2020-04-29 00:30:00,69.83,59.983999999999995,39.061,30.736 -2020-04-29 00:45:00,74.41,58.489,39.061,30.736 -2020-04-29 01:00:00,73.44,58.735,35.795,30.736 -2020-04-29 01:15:00,71.44,57.733000000000004,35.795,30.736 -2020-04-29 01:30:00,73.21,56.176,35.795,30.736 -2020-04-29 01:45:00,74.77,55.658,35.795,30.736 -2020-04-29 02:00:00,72.45,56.379,33.316,30.736 -2020-04-29 02:15:00,65.54,55.397,33.316,30.736 -2020-04-29 02:30:00,66.56,58.082,33.316,30.736 -2020-04-29 02:45:00,70.87,58.713,33.316,30.736 -2020-04-29 03:00:00,70.07,61.93899999999999,32.803000000000004,30.736 -2020-04-29 03:15:00,76.58,62.843,32.803000000000004,30.736 -2020-04-29 03:30:00,78.46,62.253,32.803000000000004,30.736 -2020-04-29 03:45:00,77.53,62.809,32.803000000000004,30.736 -2020-04-29 04:00:00,79.53,74.297,34.235,30.736 -2020-04-29 04:15:00,80.34,86.14399999999999,34.235,30.736 -2020-04-29 04:30:00,82.42,85.869,34.235,30.736 -2020-04-29 04:45:00,86.48,87.594,34.235,30.736 -2020-04-29 05:00:00,93.77,119.73,38.65,30.736 -2020-04-29 05:15:00,97.73,150.167,38.65,30.736 -2020-04-29 05:30:00,101.06,139.352,38.65,30.736 -2020-04-29 05:45:00,102.22,129.722,38.65,30.736 -2020-04-29 06:00:00,110.99,131.662,54.951,30.736 -2020-04-29 06:15:00,110.65,136.43200000000002,54.951,30.736 -2020-04-29 06:30:00,113.7,133.542,54.951,30.736 -2020-04-29 06:45:00,116.43,133.786,54.951,30.736 -2020-04-29 07:00:00,121.5,135.873,67.328,30.736 -2020-04-29 07:15:00,121.34,136.19899999999998,67.328,30.736 -2020-04-29 07:30:00,121.78,133.929,67.328,30.736 -2020-04-29 07:45:00,122.25,130.845,67.328,30.736 -2020-04-29 08:00:00,122.93,128.249,60.23,30.736 -2020-04-29 08:15:00,125.82,127.21,60.23,30.736 -2020-04-29 08:30:00,127.65,122.774,60.23,30.736 -2020-04-29 08:45:00,128.25,121.274,60.23,30.736 -2020-04-29 09:00:00,129.04,115.035,56.845,30.736 -2020-04-29 09:15:00,129.51,112.889,56.845,30.736 -2020-04-29 09:30:00,126.37,115.118,56.845,30.736 -2020-04-29 09:45:00,124.86,114.979,56.845,30.736 -2020-04-29 10:00:00,121.63,110.675,53.832,30.736 -2020-04-29 10:15:00,121.03,111.19,53.832,30.736 -2020-04-29 10:30:00,122.36,109.954,53.832,30.736 -2020-04-29 10:45:00,116.08,110.26100000000001,53.832,30.736 -2020-04-29 11:00:00,109.95,104.87799999999999,53.225,30.736 -2020-04-29 11:15:00,114.24,105.931,53.225,30.736 -2020-04-29 11:30:00,109.62,107.11,53.225,30.736 -2020-04-29 11:45:00,101.59,107.93799999999999,53.225,30.736 -2020-04-29 12:00:00,99.09,103.316,50.676,30.736 -2020-04-29 12:15:00,97.93,104.23,50.676,30.736 -2020-04-29 12:30:00,97.46,102.82700000000001,50.676,30.736 -2020-04-29 12:45:00,105.95,103.596,50.676,30.736 -2020-04-29 13:00:00,105.96,104.65100000000001,50.646,30.736 -2020-04-29 13:15:00,108.82,103.876,50.646,30.736 -2020-04-29 13:30:00,106.36,101.78200000000001,50.646,30.736 -2020-04-29 13:45:00,107.35,100.38799999999999,50.646,30.736 -2020-04-29 14:00:00,108.22,102.194,50.786,30.736 -2020-04-29 14:15:00,105.88,101.476,50.786,30.736 -2020-04-29 14:30:00,100.87,100.773,50.786,30.736 -2020-04-29 14:45:00,97.81,101.265,50.786,30.736 -2020-04-29 15:00:00,99.63,102.64,51.535,30.736 -2020-04-29 15:15:00,95.3,100.855,51.535,30.736 -2020-04-29 15:30:00,104.15,99.876,51.535,30.736 -2020-04-29 15:45:00,108.0,99.28,51.535,30.736 -2020-04-29 16:00:00,107.58,99.65299999999999,53.157,30.736 -2020-04-29 16:15:00,105.42,99.19,53.157,30.736 -2020-04-29 16:30:00,106.46,99.243,53.157,30.736 -2020-04-29 16:45:00,108.12,96.28399999999999,53.157,30.736 -2020-04-29 17:00:00,109.38,96.49600000000001,57.793,30.736 -2020-04-29 17:15:00,106.94,98.56700000000001,57.793,30.736 -2020-04-29 17:30:00,107.97,99.882,57.793,30.736 -2020-04-29 17:45:00,107.1,101.01899999999999,57.793,30.736 -2020-04-29 18:00:00,108.18,102.01299999999999,59.872,30.736 -2020-04-29 18:15:00,106.95,103.79,59.872,30.736 -2020-04-29 18:30:00,114.64,102.459,59.872,30.736 -2020-04-29 18:45:00,114.76,108.149,59.872,30.736 -2020-04-29 19:00:00,112.55,106.23700000000001,60.17100000000001,30.736 -2020-04-29 19:15:00,104.09,105.50299999999999,60.17100000000001,30.736 -2020-04-29 19:30:00,105.95,105.635,60.17100000000001,30.736 -2020-04-29 19:45:00,108.76,106.331,60.17100000000001,30.736 -2020-04-29 20:00:00,102.11,104.131,65.015,30.736 -2020-04-29 20:15:00,102.79,101.57799999999999,65.015,30.736 -2020-04-29 20:30:00,101.29,100.95100000000001,65.015,30.736 -2020-04-29 20:45:00,104.92,100.49700000000001,65.015,30.736 -2020-04-29 21:00:00,99.96,96.219,57.805,30.736 -2020-04-29 21:15:00,99.95,95.9,57.805,30.736 -2020-04-29 21:30:00,91.66,96.09100000000001,57.805,30.736 -2020-04-29 21:45:00,92.16,95.932,57.805,30.736 -2020-04-29 22:00:00,89.14,91.635,52.115,30.736 -2020-04-29 22:15:00,89.74,90.085,52.115,30.736 -2020-04-29 22:30:00,84.06,78.56,52.115,30.736 -2020-04-29 22:45:00,79.26,72.768,52.115,30.736 -2020-04-29 23:00:00,72.0,64.59100000000001,42.871,30.736 -2020-04-29 23:15:00,77.84,63.75899999999999,42.871,30.736 -2020-04-29 23:30:00,81.54,62.883,42.871,30.736 -2020-04-29 23:45:00,81.39,63.585,42.871,30.736 -2020-04-30 00:00:00,75.37,60.636,39.203,30.736 -2020-04-30 00:15:00,69.88,61.299,39.203,30.736 -2020-04-30 00:30:00,76.11,59.611999999999995,39.203,30.736 -2020-04-30 00:45:00,78.46,58.123000000000005,39.203,30.736 -2020-04-30 01:00:00,76.07,58.363,37.118,30.736 -2020-04-30 01:15:00,74.99,57.338,37.118,30.736 -2020-04-30 01:30:00,69.98,55.761,37.118,30.736 -2020-04-30 01:45:00,72.88,55.246,37.118,30.736 -2020-04-30 02:00:00,77.43,55.956,35.647,30.736 -2020-04-30 02:15:00,77.87,54.958999999999996,35.647,30.736 -2020-04-30 02:30:00,70.93,57.66,35.647,30.736 -2020-04-30 02:45:00,72.1,58.297,35.647,30.736 -2020-04-30 03:00:00,71.36,61.538000000000004,34.585,30.736 -2020-04-30 03:15:00,72.29,62.419,34.585,30.736 -2020-04-30 03:30:00,75.56,61.825,34.585,30.736 -2020-04-30 03:45:00,75.33,62.405,34.585,30.736 -2020-04-30 04:00:00,79.58,73.857,36.184,30.736 -2020-04-30 04:15:00,81.32,85.664,36.184,30.736 -2020-04-30 04:30:00,83.16,85.387,36.184,30.736 -2020-04-30 04:45:00,86.22,87.103,36.184,30.736 -2020-04-30 05:00:00,94.0,119.139,41.019,30.736 -2020-04-30 05:15:00,94.93,149.472,41.019,30.736 -2020-04-30 05:30:00,98.47,138.685,41.019,30.736 -2020-04-30 05:45:00,103.17,129.10299999999998,41.019,30.736 -2020-04-30 06:00:00,110.4,131.064,53.963,30.736 -2020-04-30 06:15:00,111.54,135.813,53.963,30.736 -2020-04-30 06:30:00,114.87,132.909,53.963,30.736 -2020-04-30 06:45:00,116.61,133.149,53.963,30.736 -2020-04-30 07:00:00,121.28,135.233,66.512,30.736 -2020-04-30 07:15:00,121.03,135.549,66.512,30.736 -2020-04-30 07:30:00,122.18,133.245,66.512,30.736 -2020-04-30 07:45:00,121.34,130.166,66.512,30.736 -2020-04-30 08:00:00,120.47,127.561,58.86,30.736 -2020-04-30 08:15:00,121.39,126.557,58.86,30.736 -2020-04-30 08:30:00,122.76,122.095,58.86,30.736 -2020-04-30 08:45:00,121.08,120.624,58.86,30.736 -2020-04-30 09:00:00,121.88,114.389,52.156000000000006,30.736 -2020-04-30 09:15:00,123.85,112.24799999999999,52.156000000000006,30.736 -2020-04-30 09:30:00,124.67,114.49,52.156000000000006,30.736 -2020-04-30 09:45:00,124.74,114.385,52.156000000000006,30.736 -2020-04-30 10:00:00,125.1,110.089,49.034,30.736 -2020-04-30 10:15:00,125.31,110.649,49.034,30.736 -2020-04-30 10:30:00,126.21,109.434,49.034,30.736 -2020-04-30 10:45:00,124.71,109.76,49.034,30.736 -2020-04-30 11:00:00,121.6,104.37200000000001,46.53,30.736 -2020-04-30 11:15:00,123.88,105.447,46.53,30.736 -2020-04-30 11:30:00,120.2,106.624,46.53,30.736 -2020-04-30 11:45:00,119.8,107.46799999999999,46.53,30.736 -2020-04-30 12:00:00,110.03,102.876,43.318000000000005,30.736 -2020-04-30 12:15:00,106.44,103.795,43.318000000000005,30.736 -2020-04-30 12:30:00,100.78,102.351,43.318000000000005,30.736 -2020-04-30 12:45:00,99.22,103.12299999999999,43.318000000000005,30.736 -2020-04-30 13:00:00,106.85,104.212,41.608000000000004,30.736 -2020-04-30 13:15:00,112.1,103.434,41.608000000000004,30.736 -2020-04-30 13:30:00,101.38,101.345,41.608000000000004,30.736 -2020-04-30 13:45:00,100.96,99.954,41.608000000000004,30.736 -2020-04-30 14:00:00,101.38,101.816,41.786,30.736 -2020-04-30 14:15:00,104.57,101.083,41.786,30.736 -2020-04-30 14:30:00,102.6,100.335,41.786,30.736 -2020-04-30 14:45:00,105.7,100.82799999999999,41.786,30.736 -2020-04-30 15:00:00,101.95,102.238,44.181999999999995,30.736 -2020-04-30 15:15:00,104.28,100.432,44.181999999999995,30.736 -2020-04-30 15:30:00,101.87,99.412,44.181999999999995,30.736 -2020-04-30 15:45:00,103.04,98.79899999999999,44.181999999999995,30.736 -2020-04-30 16:00:00,109.28,99.213,45.956,30.736 -2020-04-30 16:15:00,109.2,98.727,45.956,30.736 -2020-04-30 16:30:00,110.26,98.787,45.956,30.736 -2020-04-30 16:45:00,111.89,95.76299999999999,45.956,30.736 -2020-04-30 17:00:00,113.27,96.027,50.702,30.736 -2020-04-30 17:15:00,113.08,98.072,50.702,30.736 -2020-04-30 17:30:00,112.36,99.37899999999999,50.702,30.736 -2020-04-30 17:45:00,111.24,100.491,50.702,30.736 -2020-04-30 18:00:00,111.37,101.49600000000001,53.595,30.736 -2020-04-30 18:15:00,110.86,103.29,53.595,30.736 -2020-04-30 18:30:00,118.75,101.945,53.595,30.736 -2020-04-30 18:45:00,118.09,107.64,53.595,30.736 -2020-04-30 19:00:00,113.08,105.721,54.207,30.736 -2020-04-30 19:15:00,103.48,104.993,54.207,30.736 -2020-04-30 19:30:00,104.39,105.134,54.207,30.736 -2020-04-30 19:45:00,104.48,105.85,54.207,30.736 -2020-04-30 20:00:00,102.44,103.625,56.948,30.736 -2020-04-30 20:15:00,99.4,101.079,56.948,30.736 -2020-04-30 20:30:00,98.53,100.484,56.948,30.736 -2020-04-30 20:45:00,100.91,100.059,56.948,30.736 -2020-04-30 21:00:00,92.46,95.787,52.157,30.736 -2020-04-30 21:15:00,95.11,95.48200000000001,52.157,30.736 -2020-04-30 21:30:00,94.9,95.65799999999999,52.157,30.736 -2020-04-30 21:45:00,93.18,95.525,52.157,30.736 -2020-04-30 22:00:00,90.2,91.242,47.483000000000004,30.736 -2020-04-30 22:15:00,83.38,89.715,47.483000000000004,30.736 -2020-04-30 22:30:00,79.85,78.164,47.483000000000004,30.736 -2020-04-30 22:45:00,83.09,72.363,47.483000000000004,30.736 -2020-04-30 23:00:00,58.59,64.16199999999999,41.978,30.736 -2020-04-30 23:15:00,56.65,63.367,41.978,30.736 -2020-04-30 23:30:00,56.38,62.49100000000001,41.978,30.736 -2020-04-30 23:45:00,55.11,63.199,41.978,30.736 -2020-05-01 00:00:00,50.49,50.163000000000004,18.527,29.662 -2020-05-01 00:15:00,53.64,47.663999999999994,18.527,29.662 -2020-05-01 00:30:00,52.6,46.467,18.527,29.662 -2020-05-01 00:45:00,52.95,45.35,18.527,29.662 -2020-05-01 01:00:00,48.0,45.506,16.348,29.662 -2020-05-01 01:15:00,51.98,45.135,16.348,29.662 -2020-05-01 01:30:00,48.94,43.453,16.348,29.662 -2020-05-01 01:45:00,52.32,43.106,16.348,29.662 -2020-05-01 02:00:00,51.36,43.566,12.581,29.662 -2020-05-01 02:15:00,51.11,41.968,12.581,29.662 -2020-05-01 02:30:00,48.05,44.556999999999995,12.581,29.662 -2020-05-01 02:45:00,47.72,45.224,12.581,29.662 -2020-05-01 03:00:00,48.95,48.13399999999999,10.712,29.662 -2020-05-01 03:15:00,50.28,46.619,10.712,29.662 -2020-05-01 03:30:00,50.66,45.36600000000001,10.712,29.662 -2020-05-01 03:45:00,51.81,46.526,10.712,29.662 -2020-05-01 04:00:00,53.03,54.876000000000005,9.084,29.662 -2020-05-01 04:15:00,54.27,62.676,9.084,29.662 -2020-05-01 04:30:00,51.73,61.516999999999996,9.084,29.662 -2020-05-01 04:45:00,51.01,61.666000000000004,9.084,29.662 -2020-05-01 05:00:00,49.69,76.642,9.388,29.662 -2020-05-01 05:15:00,52.41,87.50299999999999,9.388,29.662 -2020-05-01 05:30:00,52.41,77.738,9.388,29.662 -2020-05-01 05:45:00,50.98,74.282,9.388,29.662 -2020-05-01 06:00:00,55.06,89.3,11.109000000000002,29.662 -2020-05-01 06:15:00,53.68,104.529,11.109000000000002,29.662 -2020-05-01 06:30:00,58.38,96.056,11.109000000000002,29.662 -2020-05-01 06:45:00,60.23,89.587,11.109000000000002,29.662 -2020-05-01 07:00:00,61.8,89.125,13.77,29.662 -2020-05-01 07:15:00,63.86,86.988,13.77,29.662 -2020-05-01 07:30:00,65.25,85.859,13.77,29.662 -2020-05-01 07:45:00,66.17,84.554,13.77,29.662 -2020-05-01 08:00:00,67.11,83.42200000000001,12.868,29.662 -2020-05-01 08:15:00,66.63,85.50299999999999,12.868,29.662 -2020-05-01 08:30:00,67.33,84.87100000000001,12.868,29.662 -2020-05-01 08:45:00,66.74,86.586,12.868,29.662 -2020-05-01 09:00:00,67.45,81.148,12.804,29.662 -2020-05-01 09:15:00,68.21,81.42699999999999,12.804,29.662 -2020-05-01 09:30:00,67.2,84.065,12.804,29.662 -2020-05-01 09:45:00,68.2,84.78399999999999,12.804,29.662 -2020-05-01 10:00:00,69.04,81.47,11.029000000000002,29.662 -2020-05-01 10:15:00,69.41,82.72200000000001,11.029000000000002,29.662 -2020-05-01 10:30:00,70.12,82.583,11.029000000000002,29.662 -2020-05-01 10:45:00,66.61,82.947,11.029000000000002,29.662 -2020-05-01 11:00:00,57.19,79.26,11.681,29.662 -2020-05-01 11:15:00,57.35,79.181,11.681,29.662 -2020-05-01 11:30:00,54.68,80.666,11.681,29.662 -2020-05-01 11:45:00,54.35,80.57,11.681,29.662 -2020-05-01 12:00:00,52.36,78.047,8.915,29.662 -2020-05-01 12:15:00,56.13,78.738,8.915,29.662 -2020-05-01 12:30:00,51.09,77.492,8.915,29.662 -2020-05-01 12:45:00,50.81,77.333,8.915,29.662 -2020-05-01 13:00:00,49.83,78.273,5.4639999999999995,29.662 -2020-05-01 13:15:00,45.08,78.259,5.4639999999999995,29.662 -2020-05-01 13:30:00,46.19,75.832,5.4639999999999995,29.662 -2020-05-01 13:45:00,47.46,74.252,5.4639999999999995,29.662 -2020-05-01 14:00:00,49.01,76.367,3.2939999999999996,29.662 -2020-05-01 14:15:00,48.35,75.575,3.2939999999999996,29.662 -2020-05-01 14:30:00,45.56,75.003,3.2939999999999996,29.662 -2020-05-01 14:45:00,48.43,74.546,3.2939999999999996,29.662 -2020-05-01 15:00:00,49.06,75.21,4.689,29.662 -2020-05-01 15:15:00,49.67,73.595,4.689,29.662 -2020-05-01 15:30:00,51.56,72.592,4.689,29.662 -2020-05-01 15:45:00,53.04,71.998,4.689,29.662 -2020-05-01 16:00:00,55.11,72.08,7.732,29.662 -2020-05-01 16:15:00,59.46,71.52,7.732,29.662 -2020-05-01 16:30:00,62.16,72.118,7.732,29.662 -2020-05-01 16:45:00,62.3,69.263,7.732,29.662 -2020-05-01 17:00:00,67.83,70.095,17.558,29.662 -2020-05-01 17:15:00,72.29,71.555,17.558,29.662 -2020-05-01 17:30:00,72.68,72.794,17.558,29.662 -2020-05-01 17:45:00,73.94,74.653,17.558,29.662 -2020-05-01 18:00:00,75.38,75.821,24.763,29.662 -2020-05-01 18:15:00,74.58,78.516,24.763,29.662 -2020-05-01 18:30:00,75.18,77.906,24.763,29.662 -2020-05-01 18:45:00,75.67,80.471,24.763,29.662 -2020-05-01 19:00:00,79.11,79.535,29.633000000000003,29.662 -2020-05-01 19:15:00,84.51,78.283,29.633000000000003,29.662 -2020-05-01 19:30:00,85.92,78.82,29.633000000000003,29.662 -2020-05-01 19:45:00,82.48,79.994,29.633000000000003,29.662 -2020-05-01 20:00:00,83.91,80.059,38.826,29.662 -2020-05-01 20:15:00,81.16,79.312,38.826,29.662 -2020-05-01 20:30:00,79.77,77.578,38.826,29.662 -2020-05-01 20:45:00,88.48,76.283,38.826,29.662 -2020-05-01 21:00:00,88.98,74.173,37.751,29.662 -2020-05-01 21:15:00,88.97,75.696,37.751,29.662 -2020-05-01 21:30:00,78.96,76.152,37.751,29.662 -2020-05-01 21:45:00,81.17,76.479,37.751,29.662 -2020-05-01 22:00:00,73.75,76.163,39.799,29.662 -2020-05-01 22:15:00,80.27,74.783,39.799,29.662 -2020-05-01 22:30:00,81.01,72.372,39.799,29.662 -2020-05-01 22:45:00,80.12,70.10600000000001,39.799,29.662 -2020-05-01 23:00:00,80.75,64.072,33.686,29.662 -2020-05-01 23:15:00,77.21,61.755,33.686,29.662 -2020-05-01 23:30:00,72.86,60.244,33.686,29.662 -2020-05-01 23:45:00,74.22,59.806999999999995,33.686,29.662 -2020-05-02 00:00:00,67.4,48.595,42.833999999999996,29.662 -2020-05-02 00:15:00,71.63,47.126000000000005,42.833999999999996,29.662 -2020-05-02 00:30:00,75.66,46.176,42.833999999999996,29.662 -2020-05-02 00:45:00,76.11,44.898999999999994,42.833999999999996,29.662 -2020-05-02 01:00:00,72.31,44.903999999999996,37.859,29.662 -2020-05-02 01:15:00,70.22,44.23,37.859,29.662 -2020-05-02 01:30:00,73.08,42.45,37.859,29.662 -2020-05-02 01:45:00,73.7,42.513999999999996,37.859,29.662 -2020-05-02 02:00:00,66.85,43.174,35.327,29.662 -2020-05-02 02:15:00,66.49,41.31100000000001,35.327,29.662 -2020-05-02 02:30:00,68.26,43.461000000000006,35.327,29.662 -2020-05-02 02:45:00,66.14,44.196999999999996,35.327,29.662 -2020-05-02 03:00:00,65.71,46.493,34.908,29.662 -2020-05-02 03:15:00,66.15,44.941,34.908,29.662 -2020-05-02 03:30:00,67.61,43.762,34.908,29.662 -2020-05-02 03:45:00,68.7,45.599,34.908,29.662 -2020-05-02 04:00:00,69.79,54.015,34.84,29.662 -2020-05-02 04:15:00,67.03,62.473,34.84,29.662 -2020-05-02 04:30:00,66.17,60.231,34.84,29.662 -2020-05-02 04:45:00,67.69,60.641999999999996,34.84,29.662 -2020-05-02 05:00:00,69.51,76.563,34.222,29.662 -2020-05-02 05:15:00,70.18,88.72,34.222,29.662 -2020-05-02 05:30:00,69.35,79.377,34.222,29.662 -2020-05-02 05:45:00,71.72,76.12100000000001,34.222,29.662 -2020-05-02 06:00:00,73.67,93.12,35.515,29.662 -2020-05-02 06:15:00,73.73,108.242,35.515,29.662 -2020-05-02 06:30:00,75.39,100.70299999999999,35.515,29.662 -2020-05-02 06:45:00,76.42,95.399,35.515,29.662 -2020-05-02 07:00:00,79.28,93.88799999999999,39.687,29.662 -2020-05-02 07:15:00,77.96,93.337,39.687,29.662 -2020-05-02 07:30:00,78.31,91.61399999999999,39.687,29.662 -2020-05-02 07:45:00,79.86,90.62100000000001,39.687,29.662 -2020-05-02 08:00:00,80.34,88.26799999999999,44.9,29.662 -2020-05-02 08:15:00,78.9,89.515,44.9,29.662 -2020-05-02 08:30:00,78.61,87.58,44.9,29.662 -2020-05-02 08:45:00,79.87,88.637,44.9,29.662 -2020-05-02 09:00:00,76.21,83.447,45.724,29.662 -2020-05-02 09:15:00,75.76,83.902,45.724,29.662 -2020-05-02 09:30:00,75.2,86.28399999999999,45.724,29.662 -2020-05-02 09:45:00,75.61,86.314,45.724,29.662 -2020-05-02 10:00:00,75.42,81.66199999999999,43.123999999999995,29.662 -2020-05-02 10:15:00,76.95,82.645,43.123999999999995,29.662 -2020-05-02 10:30:00,77.79,82.12200000000001,43.123999999999995,29.662 -2020-05-02 10:45:00,76.44,82.48899999999999,43.123999999999995,29.662 -2020-05-02 11:00:00,72.26,78.703,40.255,29.662 -2020-05-02 11:15:00,71.56,78.921,40.255,29.662 -2020-05-02 11:30:00,69.64,80.362,40.255,29.662 -2020-05-02 11:45:00,69.91,79.851,40.255,29.662 -2020-05-02 12:00:00,65.59,76.855,38.582,29.662 -2020-05-02 12:15:00,66.22,77.22399999999999,38.582,29.662 -2020-05-02 12:30:00,64.72,76.383,38.582,29.662 -2020-05-02 12:45:00,64.95,77.09,38.582,29.662 -2020-05-02 13:00:00,62.78,78.554,36.043,29.662 -2020-05-02 13:15:00,62.25,77.737,36.043,29.662 -2020-05-02 13:30:00,62.59,76.217,36.043,29.662 -2020-05-02 13:45:00,62.56,74.087,36.043,29.662 -2020-05-02 14:00:00,61.85,75.279,35.216,29.662 -2020-05-02 14:15:00,62.08,73.669,35.216,29.662 -2020-05-02 14:30:00,62.24,73.452,35.216,29.662 -2020-05-02 14:45:00,62.4,73.947,35.216,29.662 -2020-05-02 15:00:00,62.97,75.17399999999999,36.759,29.662 -2020-05-02 15:15:00,63.02,73.821,36.759,29.662 -2020-05-02 15:30:00,63.12,72.676,36.759,29.662 -2020-05-02 15:45:00,64.76,71.574,36.759,29.662 -2020-05-02 16:00:00,68.0,72.26,40.086,29.662 -2020-05-02 16:15:00,68.86,71.86399999999999,40.086,29.662 -2020-05-02 16:30:00,71.22,71.62,40.086,29.662 -2020-05-02 16:45:00,74.4,68.60300000000001,40.086,29.662 -2020-05-02 17:00:00,79.85,69.22399999999999,44.876999999999995,29.662 -2020-05-02 17:15:00,79.81,69.649,44.876999999999995,29.662 -2020-05-02 17:30:00,80.79,70.16199999999999,44.876999999999995,29.662 -2020-05-02 17:45:00,81.12,70.793,44.876999999999995,29.662 -2020-05-02 18:00:00,83.13,71.803,47.056000000000004,29.662 -2020-05-02 18:15:00,81.4,74.316,47.056000000000004,29.662 -2020-05-02 18:30:00,81.48,74.656,47.056000000000004,29.662 -2020-05-02 18:45:00,82.35,76.45,47.056000000000004,29.662 -2020-05-02 19:00:00,81.48,74.001,45.57,29.662 -2020-05-02 19:15:00,79.11,73.41,45.57,29.662 -2020-05-02 19:30:00,78.9,74.202,45.57,29.662 -2020-05-02 19:45:00,79.86,75.236,45.57,29.662 -2020-05-02 20:00:00,81.06,75.092,41.685,29.662 -2020-05-02 20:15:00,80.73,74.097,41.685,29.662 -2020-05-02 20:30:00,80.18,71.314,41.685,29.662 -2020-05-02 20:45:00,80.23,71.797,41.685,29.662 -2020-05-02 21:00:00,75.92,70.756,39.576,29.662 -2020-05-02 21:15:00,76.58,72.755,39.576,29.662 -2020-05-02 21:30:00,73.98,73.593,39.576,29.662 -2020-05-02 21:45:00,73.06,73.62,39.576,29.662 -2020-05-02 22:00:00,69.29,72.173,39.068000000000005,29.662 -2020-05-02 22:15:00,69.76,72.399,39.068000000000005,29.662 -2020-05-02 22:30:00,67.03,71.508,39.068000000000005,29.662 -2020-05-02 22:45:00,66.09,70.529,39.068000000000005,29.662 -2020-05-02 23:00:00,64.59,65.696,32.06,29.662 -2020-05-02 23:15:00,62.92,61.768,32.06,29.662 -2020-05-02 23:30:00,62.13,60.387,32.06,29.662 -2020-05-02 23:45:00,61.12,59.508,32.06,29.662 -2020-05-03 00:00:00,56.25,49.497,28.825,29.662 -2020-05-03 00:15:00,59.42,47.018,28.825,29.662 -2020-05-03 00:30:00,55.48,45.813,28.825,29.662 -2020-05-03 00:45:00,57.9,44.705,28.825,29.662 -2020-05-03 01:00:00,55.98,44.872,25.995,29.662 -2020-05-03 01:15:00,56.5,44.451,25.995,29.662 -2020-05-03 01:30:00,53.94,42.732,25.995,29.662 -2020-05-03 01:45:00,55.87,42.38399999999999,25.995,29.662 -2020-05-03 02:00:00,55.81,42.83,24.394000000000002,29.662 -2020-05-03 02:15:00,56.25,41.198,24.394000000000002,29.662 -2020-05-03 02:30:00,55.72,43.818000000000005,24.394000000000002,29.662 -2020-05-03 02:45:00,55.33,44.498999999999995,24.394000000000002,29.662 -2020-05-03 03:00:00,51.94,47.433,22.916999999999998,29.662 -2020-05-03 03:15:00,55.79,45.878,22.916999999999998,29.662 -2020-05-03 03:30:00,56.34,44.623999999999995,22.916999999999998,29.662 -2020-05-03 03:45:00,56.91,45.833,22.916999999999998,29.662 -2020-05-03 04:00:00,57.32,54.089,23.576999999999998,29.662 -2020-05-03 04:15:00,55.6,61.795,23.576999999999998,29.662 -2020-05-03 04:30:00,55.41,60.622,23.576999999999998,29.662 -2020-05-03 04:45:00,55.04,60.756,23.576999999999998,29.662 -2020-05-03 05:00:00,56.02,75.493,22.730999999999998,29.662 -2020-05-03 05:15:00,56.44,86.085,22.730999999999998,29.662 -2020-05-03 05:30:00,56.1,76.407,22.730999999999998,29.662 -2020-05-03 05:45:00,56.79,73.071,22.730999999999998,29.662 -2020-05-03 06:00:00,57.69,88.141,22.34,29.662 -2020-05-03 06:15:00,57.57,103.32,22.34,29.662 -2020-05-03 06:30:00,58.58,94.846,22.34,29.662 -2020-05-03 06:45:00,59.95,88.39299999999999,22.34,29.662 -2020-05-03 07:00:00,61.08,87.919,24.691999999999997,29.662 -2020-05-03 07:15:00,61.55,85.772,24.691999999999997,29.662 -2020-05-03 07:30:00,61.04,84.58,24.691999999999997,29.662 -2020-05-03 07:45:00,61.04,83.305,24.691999999999997,29.662 -2020-05-03 08:00:00,61.08,82.164,29.340999999999998,29.662 -2020-05-03 08:15:00,62.23,84.333,29.340999999999998,29.662 -2020-05-03 08:30:00,61.79,83.662,29.340999999999998,29.662 -2020-05-03 08:45:00,60.97,85.425,29.340999999999998,29.662 -2020-05-03 09:00:00,59.6,79.984,30.788,29.662 -2020-05-03 09:15:00,59.67,80.277,30.788,29.662 -2020-05-03 09:30:00,59.03,82.943,30.788,29.662 -2020-05-03 09:45:00,59.85,83.73,30.788,29.662 -2020-05-03 10:00:00,60.2,80.434,30.158,29.662 -2020-05-03 10:15:00,61.9,81.768,30.158,29.662 -2020-05-03 10:30:00,63.99,81.663,30.158,29.662 -2020-05-03 10:45:00,64.7,82.06200000000001,30.158,29.662 -2020-05-03 11:00:00,62.24,78.36,32.056,29.662 -2020-05-03 11:15:00,59.36,78.319,32.056,29.662 -2020-05-03 11:30:00,54.19,79.796,32.056,29.662 -2020-05-03 11:45:00,55.34,79.73100000000001,32.056,29.662 -2020-05-03 12:00:00,52.93,77.274,28.671999999999997,29.662 -2020-05-03 12:15:00,52.8,77.979,28.671999999999997,29.662 -2020-05-03 12:30:00,49.69,76.653,28.671999999999997,29.662 -2020-05-03 12:45:00,47.47,76.506,28.671999999999997,29.662 -2020-05-03 13:00:00,45.23,77.5,23.171,29.662 -2020-05-03 13:15:00,43.21,77.488,23.171,29.662 -2020-05-03 13:30:00,45.06,75.075,23.171,29.662 -2020-05-03 13:45:00,46.0,73.49600000000001,23.171,29.662 -2020-05-03 14:00:00,46.8,75.712,19.11,29.662 -2020-05-03 14:15:00,46.46,74.891,19.11,29.662 -2020-05-03 14:30:00,45.78,74.235,19.11,29.662 -2020-05-03 14:45:00,46.36,73.783,19.11,29.662 -2020-05-03 15:00:00,48.14,74.539,19.689,29.662 -2020-05-03 15:15:00,48.74,72.88600000000001,19.689,29.662 -2020-05-03 15:30:00,49.3,71.814,19.689,29.662 -2020-05-03 15:45:00,51.69,71.186,19.689,29.662 -2020-05-03 16:00:00,55.94,71.361,22.875,29.662 -2020-05-03 16:15:00,57.49,70.76100000000001,22.875,29.662 -2020-05-03 16:30:00,59.74,71.37899999999999,22.875,29.662 -2020-05-03 16:45:00,64.35,68.4,22.875,29.662 -2020-05-03 17:00:00,68.62,69.329,33.884,29.662 -2020-05-03 17:15:00,69.55,70.735,33.884,29.662 -2020-05-03 17:30:00,71.62,71.954,33.884,29.662 -2020-05-03 17:45:00,72.87,73.748,33.884,29.662 -2020-05-03 18:00:00,76.29,74.952,38.453,29.662 -2020-05-03 18:15:00,74.34,77.643,38.453,29.662 -2020-05-03 18:30:00,74.52,77.007,38.453,29.662 -2020-05-03 18:45:00,74.5,79.578,38.453,29.662 -2020-05-03 19:00:00,80.75,78.635,39.221,29.662 -2020-05-03 19:15:00,82.66,77.384,39.221,29.662 -2020-05-03 19:30:00,83.29,77.925,39.221,29.662 -2020-05-03 19:45:00,75.88,79.12100000000001,39.221,29.662 -2020-05-03 20:00:00,79.39,79.132,37.871,29.662 -2020-05-03 20:15:00,79.33,78.392,37.871,29.662 -2020-05-03 20:30:00,79.68,76.717,37.871,29.662 -2020-05-03 20:45:00,81.36,75.5,37.871,29.662 -2020-05-03 21:00:00,87.04,73.398,36.465,29.662 -2020-05-03 21:15:00,90.9,74.95,36.465,29.662 -2020-05-03 21:30:00,84.7,75.37,36.465,29.662 -2020-05-03 21:45:00,81.23,75.756,36.465,29.662 -2020-05-03 22:00:00,78.55,75.484,36.092,29.662 -2020-05-03 22:15:00,82.23,74.148,36.092,29.662 -2020-05-03 22:30:00,81.02,71.717,36.092,29.662 -2020-05-03 22:45:00,76.17,69.429,36.092,29.662 -2020-05-03 23:00:00,72.51,63.32899999999999,31.013,29.662 -2020-05-03 23:15:00,74.86,61.097,31.013,29.662 -2020-05-03 23:30:00,75.21,59.583999999999996,31.013,29.662 -2020-05-03 23:45:00,74.48,59.146,31.013,29.662 -2020-05-04 00:00:00,69.6,51.836999999999996,31.174,29.775 -2020-05-04 00:15:00,72.1,51.037,31.174,29.775 -2020-05-04 00:30:00,73.55,49.571999999999996,31.174,29.775 -2020-05-04 00:45:00,72.62,47.968999999999994,31.174,29.775 -2020-05-04 01:00:00,67.74,48.449,29.663,29.775 -2020-05-04 01:15:00,66.22,47.828,29.663,29.775 -2020-05-04 01:30:00,70.56,46.394,29.663,29.775 -2020-05-04 01:45:00,73.57,46.01,29.663,29.775 -2020-05-04 02:00:00,73.5,46.79600000000001,28.793000000000003,29.775 -2020-05-04 02:15:00,69.89,44.87,28.793000000000003,29.775 -2020-05-04 02:30:00,68.85,47.751000000000005,28.793000000000003,29.775 -2020-05-04 02:45:00,73.7,48.104,28.793000000000003,29.775 -2020-05-04 03:00:00,73.78,51.895,27.728,29.775 -2020-05-04 03:15:00,70.78,51.468,27.728,29.775 -2020-05-04 03:30:00,74.92,50.652,27.728,29.775 -2020-05-04 03:45:00,71.42,51.328,27.728,29.775 -2020-05-04 04:00:00,75.17,63.512,29.266,29.775 -2020-05-04 04:15:00,76.56,74.935,29.266,29.775 -2020-05-04 04:30:00,80.37,74.154,29.266,29.775 -2020-05-04 04:45:00,84.87,74.626,29.266,29.775 -2020-05-04 05:00:00,91.28,99.954,37.889,29.775 -2020-05-04 05:15:00,95.44,125.398,37.889,29.775 -2020-05-04 05:30:00,98.76,114.611,37.889,29.775 -2020-05-04 05:45:00,100.67,106.984,37.889,29.775 -2020-05-04 06:00:00,103.98,108.009,55.485,29.775 -2020-05-04 06:15:00,105.43,110.87700000000001,55.485,29.775 -2020-05-04 06:30:00,106.87,108.288,55.485,29.775 -2020-05-04 06:45:00,108.09,109.04,55.485,29.775 -2020-05-04 07:00:00,108.57,110.086,65.765,29.775 -2020-05-04 07:15:00,107.31,110.166,65.765,29.775 -2020-05-04 07:30:00,106.72,107.994,65.765,29.775 -2020-05-04 07:45:00,105.4,106.05799999999999,65.765,29.775 -2020-05-04 08:00:00,104.99,101.705,56.745,29.775 -2020-05-04 08:15:00,103.93,102.205,56.745,29.775 -2020-05-04 08:30:00,104.33,99.277,56.745,29.775 -2020-05-04 08:45:00,103.33,100.006,56.745,29.775 -2020-05-04 09:00:00,102.16,93.492,53.321999999999996,29.775 -2020-05-04 09:15:00,101.67,91.12200000000001,53.321999999999996,29.775 -2020-05-04 09:30:00,101.56,92.71799999999999,53.321999999999996,29.775 -2020-05-04 09:45:00,101.91,91.898,53.321999999999996,29.775 -2020-05-04 10:00:00,101.39,88.725,51.309,29.775 -2020-05-04 10:15:00,101.65,89.86200000000001,51.309,29.775 -2020-05-04 10:30:00,101.66,89.089,51.309,29.775 -2020-05-04 10:45:00,101.33,88.617,51.309,29.775 -2020-05-04 11:00:00,101.22,84.113,50.415,29.775 -2020-05-04 11:15:00,98.86,85.01899999999999,50.415,29.775 -2020-05-04 11:30:00,98.41,87.557,50.415,29.775 -2020-05-04 11:45:00,97.54,87.715,50.415,29.775 -2020-05-04 12:00:00,97.03,84.945,48.273,29.775 -2020-05-04 12:15:00,95.22,85.738,48.273,29.775 -2020-05-04 12:30:00,95.04,83.7,48.273,29.775 -2020-05-04 12:45:00,94.65,84.18700000000001,48.273,29.775 -2020-05-04 13:00:00,93.91,86.016,48.452,29.775 -2020-05-04 13:15:00,94.72,84.79299999999999,48.452,29.775 -2020-05-04 13:30:00,93.9,82.296,48.452,29.775 -2020-05-04 13:45:00,94.22,81.383,48.452,29.775 -2020-05-04 14:00:00,96.6,82.76899999999999,48.35,29.775 -2020-05-04 14:15:00,94.21,82.103,48.35,29.775 -2020-05-04 14:30:00,94.03,81.062,48.35,29.775 -2020-05-04 14:45:00,93.5,82.105,48.35,29.775 -2020-05-04 15:00:00,92.87,83.38600000000001,48.838,29.775 -2020-05-04 15:15:00,93.09,80.695,48.838,29.775 -2020-05-04 15:30:00,94.12,79.807,48.838,29.775 -2020-05-04 15:45:00,96.9,78.626,48.838,29.775 -2020-05-04 16:00:00,97.74,79.515,50.873000000000005,29.775 -2020-05-04 16:15:00,97.79,78.64699999999999,50.873000000000005,29.775 -2020-05-04 16:30:00,102.74,78.398,50.873000000000005,29.775 -2020-05-04 16:45:00,102.67,74.907,50.873000000000005,29.775 -2020-05-04 17:00:00,105.47,74.95100000000001,56.637,29.775 -2020-05-04 17:15:00,105.44,76.24,56.637,29.775 -2020-05-04 17:30:00,106.23,76.945,56.637,29.775 -2020-05-04 17:45:00,107.54,77.82600000000001,56.637,29.775 -2020-05-04 18:00:00,108.37,78.27,56.35,29.775 -2020-05-04 18:15:00,107.47,78.734,56.35,29.775 -2020-05-04 18:30:00,113.16,77.749,56.35,29.775 -2020-05-04 18:45:00,114.56,83.012,56.35,29.775 -2020-05-04 19:00:00,111.01,81.166,56.023,29.775 -2020-05-04 19:15:00,98.89,80.538,56.023,29.775 -2020-05-04 19:30:00,101.05,80.969,56.023,29.775 -2020-05-04 19:45:00,98.85,81.399,56.023,29.775 -2020-05-04 20:00:00,97.88,79.572,62.372,29.775 -2020-05-04 20:15:00,103.11,79.016,62.372,29.775 -2020-05-04 20:30:00,108.62,77.098,62.372,29.775 -2020-05-04 20:45:00,107.25,76.679,62.372,29.775 -2020-05-04 21:00:00,93.21,74.293,57.516999999999996,29.775 -2020-05-04 21:15:00,90.29,75.783,57.516999999999996,29.775 -2020-05-04 21:30:00,87.29,76.21,57.516999999999996,29.775 -2020-05-04 21:45:00,93.2,76.271,57.516999999999996,29.775 -2020-05-04 22:00:00,88.85,73.393,51.823,29.775 -2020-05-04 22:15:00,88.88,73.15899999999999,51.823,29.775 -2020-05-04 22:30:00,83.03,63.908,51.823,29.775 -2020-05-04 22:45:00,81.21,59.86,51.823,29.775 -2020-05-04 23:00:00,80.18,54.06100000000001,43.832,29.775 -2020-05-04 23:15:00,81.63,51.527,43.832,29.775 -2020-05-04 23:30:00,78.05,50.97,43.832,29.775 -2020-05-04 23:45:00,75.22,51.051,43.832,29.775 -2020-05-05 00:00:00,76.0,49.474,42.371,29.775 -2020-05-05 00:15:00,79.2,49.869,42.371,29.775 -2020-05-05 00:30:00,77.68,48.63,42.371,29.775 -2020-05-05 00:45:00,75.02,47.31100000000001,42.371,29.775 -2020-05-05 01:00:00,77.48,47.3,39.597,29.775 -2020-05-05 01:15:00,78.55,46.585,39.597,29.775 -2020-05-05 01:30:00,78.09,45.091,39.597,29.775 -2020-05-05 01:45:00,74.26,44.409,39.597,29.775 -2020-05-05 02:00:00,77.89,44.806999999999995,38.298,29.775 -2020-05-05 02:15:00,78.97,43.738,38.298,29.775 -2020-05-05 02:30:00,73.18,46.115,38.298,29.775 -2020-05-05 02:45:00,74.65,46.74,38.298,29.775 -2020-05-05 03:00:00,72.05,49.676,37.884,29.775 -2020-05-05 03:15:00,72.97,49.666000000000004,37.884,29.775 -2020-05-05 03:30:00,81.18,48.996,37.884,29.775 -2020-05-05 03:45:00,86.82,48.886,37.884,29.775 -2020-05-05 04:00:00,86.35,59.956,39.442,29.775 -2020-05-05 04:15:00,80.15,71.218,39.442,29.775 -2020-05-05 04:30:00,82.91,70.225,39.442,29.775 -2020-05-05 04:45:00,86.29,71.503,39.442,29.775 -2020-05-05 05:00:00,93.14,99.67200000000001,43.608000000000004,29.775 -2020-05-05 05:15:00,96.1,125.415,43.608000000000004,29.775 -2020-05-05 05:30:00,99.08,114.31700000000001,43.608000000000004,29.775 -2020-05-05 05:45:00,102.21,106.15799999999999,43.608000000000004,29.775 -2020-05-05 06:00:00,105.73,107.665,54.99100000000001,29.775 -2020-05-05 06:15:00,105.97,111.215,54.99100000000001,29.775 -2020-05-05 06:30:00,106.51,108.149,54.99100000000001,29.775 -2020-05-05 06:45:00,106.79,108.066,54.99100000000001,29.775 -2020-05-05 07:00:00,108.05,109.16,66.217,29.775 -2020-05-05 07:15:00,107.67,108.979,66.217,29.775 -2020-05-05 07:30:00,106.25,106.595,66.217,29.775 -2020-05-05 07:45:00,104.55,103.98200000000001,66.217,29.775 -2020-05-05 08:00:00,102.47,99.61399999999999,60.151,29.775 -2020-05-05 08:15:00,101.53,99.43299999999999,60.151,29.775 -2020-05-05 08:30:00,101.82,96.552,60.151,29.775 -2020-05-05 08:45:00,102.85,96.48899999999999,60.151,29.775 -2020-05-05 09:00:00,103.32,89.926,53.873000000000005,29.775 -2020-05-05 09:15:00,101.69,88.057,53.873000000000005,29.775 -2020-05-05 09:30:00,99.95,90.448,53.873000000000005,29.775 -2020-05-05 09:45:00,102.43,90.609,53.873000000000005,29.775 -2020-05-05 10:00:00,101.34,86.17399999999999,51.417,29.775 -2020-05-05 10:15:00,102.24,86.82799999999999,51.417,29.775 -2020-05-05 10:30:00,102.25,86.163,51.417,29.775 -2020-05-05 10:45:00,102.01,86.572,51.417,29.775 -2020-05-05 11:00:00,98.68,82.649,50.43600000000001,29.775 -2020-05-05 11:15:00,99.53,83.743,50.43600000000001,29.775 -2020-05-05 11:30:00,98.28,84.958,50.43600000000001,29.775 -2020-05-05 11:45:00,97.89,85.07700000000001,50.43600000000001,29.775 -2020-05-05 12:00:00,97.44,81.642,47.468,29.775 -2020-05-05 12:15:00,100.02,82.514,47.468,29.775 -2020-05-05 12:30:00,104.48,81.36,47.468,29.775 -2020-05-05 12:45:00,103.25,82.234,47.468,29.775 -2020-05-05 13:00:00,98.15,83.67200000000001,48.453,29.775 -2020-05-05 13:15:00,97.89,83.62799999999999,48.453,29.775 -2020-05-05 13:30:00,98.63,81.594,48.453,29.775 -2020-05-05 13:45:00,96.77,80.05199999999999,48.453,29.775 -2020-05-05 14:00:00,101.19,81.928,48.435,29.775 -2020-05-05 14:15:00,102.3,81.167,48.435,29.775 -2020-05-05 14:30:00,106.02,80.582,48.435,29.775 -2020-05-05 14:45:00,96.9,81.017,48.435,29.775 -2020-05-05 15:00:00,96.46,82.051,49.966,29.775 -2020-05-05 15:15:00,96.66,80.153,49.966,29.775 -2020-05-05 15:30:00,101.42,79.169,49.966,29.775 -2020-05-05 15:45:00,102.58,78.059,49.966,29.775 -2020-05-05 16:00:00,102.74,78.64699999999999,51.184,29.775 -2020-05-05 16:15:00,101.99,78.009,51.184,29.775 -2020-05-05 16:30:00,104.08,77.745,51.184,29.775 -2020-05-05 16:45:00,110.91,74.844,51.184,29.775 -2020-05-05 17:00:00,111.11,75.308,56.138999999999996,29.775 -2020-05-05 17:15:00,110.09,76.896,56.138999999999996,29.775 -2020-05-05 17:30:00,109.87,77.51899999999999,56.138999999999996,29.775 -2020-05-05 17:45:00,109.83,78.067,56.138999999999996,29.775 -2020-05-05 18:00:00,116.18,77.743,57.038000000000004,29.775 -2020-05-05 18:15:00,114.49,79.166,57.038000000000004,29.775 -2020-05-05 18:30:00,112.35,77.851,57.038000000000004,29.775 -2020-05-05 18:45:00,106.65,83.26299999999999,57.038000000000004,29.775 -2020-05-05 19:00:00,104.1,80.51100000000001,56.492,29.775 -2020-05-05 19:15:00,101.34,79.92399999999999,56.492,29.775 -2020-05-05 19:30:00,108.09,79.952,56.492,29.775 -2020-05-05 19:45:00,108.89,80.669,56.492,29.775 -2020-05-05 20:00:00,106.25,79.186,62.534,29.775 -2020-05-05 20:15:00,101.8,77.277,62.534,29.775 -2020-05-05 20:30:00,98.86,75.78699999999999,62.534,29.775 -2020-05-05 20:45:00,99.69,75.52600000000001,62.534,29.775 -2020-05-05 21:00:00,99.28,73.567,55.506,29.775 -2020-05-05 21:15:00,98.12,74.248,55.506,29.775 -2020-05-05 21:30:00,92.99,74.533,55.506,29.775 -2020-05-05 21:45:00,88.48,74.859,55.506,29.775 -2020-05-05 22:00:00,87.66,72.74600000000001,51.472,29.775 -2020-05-05 22:15:00,89.2,72.176,51.472,29.775 -2020-05-05 22:30:00,85.37,63.177,51.472,29.775 -2020-05-05 22:45:00,84.36,59.214,51.472,29.775 -2020-05-05 23:00:00,81.88,52.781000000000006,44.593,29.775 -2020-05-05 23:15:00,80.29,51.196000000000005,44.593,29.775 -2020-05-05 23:30:00,81.46,50.50899999999999,44.593,29.775 -2020-05-05 23:45:00,77.25,50.575,44.593,29.775 -2020-05-06 00:00:00,71.85,49.147,41.978,29.775 -2020-05-06 00:15:00,78.55,49.553000000000004,41.978,29.775 -2020-05-06 00:30:00,77.81,48.31,41.978,29.775 -2020-05-06 00:45:00,77.29,46.997,41.978,29.775 -2020-05-06 01:00:00,73.94,46.992,38.59,29.775 -2020-05-06 01:15:00,78.49,46.251999999999995,38.59,29.775 -2020-05-06 01:30:00,78.56,44.74100000000001,38.59,29.775 -2020-05-06 01:45:00,76.62,44.058,38.59,29.775 -2020-05-06 02:00:00,73.33,44.446999999999996,36.23,29.775 -2020-05-06 02:15:00,78.33,43.364,36.23,29.775 -2020-05-06 02:30:00,77.82,45.753,36.23,29.775 -2020-05-06 02:45:00,72.36,46.386,36.23,29.775 -2020-05-06 03:00:00,70.81,49.335,35.867,29.775 -2020-05-06 03:15:00,72.19,49.305,35.867,29.775 -2020-05-06 03:30:00,73.52,48.63399999999999,35.867,29.775 -2020-05-06 03:45:00,75.1,48.548,35.867,29.775 -2020-05-06 04:00:00,78.39,59.571999999999996,36.75,29.775 -2020-05-06 04:15:00,78.83,70.78699999999999,36.75,29.775 -2020-05-06 04:30:00,81.3,69.78699999999999,36.75,29.775 -2020-05-06 04:45:00,84.96,71.058,36.75,29.775 -2020-05-06 05:00:00,93.15,99.10799999999999,40.461,29.775 -2020-05-06 05:15:00,95.53,124.71799999999999,40.461,29.775 -2020-05-06 05:30:00,97.79,113.664,40.461,29.775 -2020-05-06 05:45:00,101.14,105.565,40.461,29.775 -2020-05-06 06:00:00,106.4,107.095,55.481,29.775 -2020-05-06 06:15:00,106.6,110.62100000000001,55.481,29.775 -2020-05-06 06:30:00,108.89,107.556,55.481,29.775 -2020-05-06 06:45:00,109.94,107.48100000000001,55.481,29.775 -2020-05-06 07:00:00,114.39,108.568,68.45,29.775 -2020-05-06 07:15:00,107.66,108.384,68.45,29.775 -2020-05-06 07:30:00,105.69,105.969,68.45,29.775 -2020-05-06 07:45:00,106.74,103.374,68.45,29.775 -2020-05-06 08:00:00,103.47,99.00200000000001,60.885,29.775 -2020-05-06 08:15:00,101.98,98.86399999999999,60.885,29.775 -2020-05-06 08:30:00,104.01,95.965,60.885,29.775 -2020-05-06 08:45:00,102.48,95.925,60.885,29.775 -2020-05-06 09:00:00,101.52,89.361,56.887,29.775 -2020-05-06 09:15:00,101.65,87.49799999999999,56.887,29.775 -2020-05-06 09:30:00,101.44,89.904,56.887,29.775 -2020-05-06 09:45:00,104.08,90.09700000000001,56.887,29.775 -2020-05-06 10:00:00,109.12,85.67200000000001,54.401,29.775 -2020-05-06 10:15:00,110.04,86.36399999999999,54.401,29.775 -2020-05-06 10:30:00,109.63,85.71600000000001,54.401,29.775 -2020-05-06 10:45:00,105.76,86.14200000000001,54.401,29.775 -2020-05-06 11:00:00,105.77,82.212,53.678000000000004,29.775 -2020-05-06 11:15:00,105.27,83.325,53.678000000000004,29.775 -2020-05-06 11:30:00,108.22,84.535,53.678000000000004,29.775 -2020-05-06 11:45:00,101.7,84.671,53.678000000000004,29.775 -2020-05-06 12:00:00,98.23,81.267,51.68,29.775 -2020-05-06 12:15:00,98.72,82.146,51.68,29.775 -2020-05-06 12:30:00,99.41,80.953,51.68,29.775 -2020-05-06 12:45:00,104.66,81.832,51.68,29.775 -2020-05-06 13:00:00,100.13,83.296,51.263000000000005,29.775 -2020-05-06 13:15:00,102.95,83.25200000000001,51.263000000000005,29.775 -2020-05-06 13:30:00,97.84,81.226,51.263000000000005,29.775 -2020-05-06 13:45:00,96.57,79.685,51.263000000000005,29.775 -2020-05-06 14:00:00,96.82,81.609,51.107,29.775 -2020-05-06 14:15:00,95.84,80.835,51.107,29.775 -2020-05-06 14:30:00,96.81,80.208,51.107,29.775 -2020-05-06 14:45:00,93.98,80.645,51.107,29.775 -2020-05-06 15:00:00,94.2,81.723,51.498000000000005,29.775 -2020-05-06 15:15:00,93.38,79.808,51.498000000000005,29.775 -2020-05-06 15:30:00,95.59,78.79,51.498000000000005,29.775 -2020-05-06 15:45:00,98.49,77.665,51.498000000000005,29.775 -2020-05-06 16:00:00,101.69,78.296,53.376999999999995,29.775 -2020-05-06 16:15:00,101.79,77.641,53.376999999999995,29.775 -2020-05-06 16:30:00,102.02,77.387,53.376999999999995,29.775 -2020-05-06 16:45:00,100.4,74.425,53.376999999999995,29.775 -2020-05-06 17:00:00,102.39,74.937,56.965,29.775 -2020-05-06 17:15:00,101.21,76.498,56.965,29.775 -2020-05-06 17:30:00,100.01,77.111,56.965,29.775 -2020-05-06 17:45:00,102.1,77.626,56.965,29.775 -2020-05-06 18:00:00,104.0,77.32,58.231,29.775 -2020-05-06 18:15:00,104.34,78.742,58.231,29.775 -2020-05-06 18:30:00,105.4,77.414,58.231,29.775 -2020-05-06 18:45:00,103.72,82.82700000000001,58.231,29.775 -2020-05-06 19:00:00,102.23,80.072,58.865,29.775 -2020-05-06 19:15:00,97.93,79.486,58.865,29.775 -2020-05-06 19:30:00,95.7,79.515,58.865,29.775 -2020-05-06 19:45:00,96.66,80.242,58.865,29.775 -2020-05-06 20:00:00,95.25,78.734,65.605,29.775 -2020-05-06 20:15:00,98.04,76.829,65.605,29.775 -2020-05-06 20:30:00,91.55,75.367,65.605,29.775 -2020-05-06 20:45:00,91.56,75.143,65.605,29.775 -2020-05-06 21:00:00,82.99,73.189,58.083999999999996,29.775 -2020-05-06 21:15:00,81.12,73.88600000000001,58.083999999999996,29.775 -2020-05-06 21:30:00,78.05,74.15100000000001,58.083999999999996,29.775 -2020-05-06 21:45:00,75.34,74.505,58.083999999999996,29.775 -2020-05-06 22:00:00,70.55,72.414,53.243,29.775 -2020-05-06 22:15:00,70.4,71.865,53.243,29.775 -2020-05-06 22:30:00,68.32,62.855,53.243,29.775 -2020-05-06 22:45:00,66.71,58.88,53.243,29.775 -2020-05-06 23:00:00,76.44,52.417,44.283,29.775 -2020-05-06 23:15:00,77.93,50.872,44.283,29.775 -2020-05-06 23:30:00,80.4,50.187,44.283,29.775 -2020-05-06 23:45:00,79.81,50.251999999999995,44.283,29.775 -2020-05-07 00:00:00,73.78,48.823,40.219,29.775 -2020-05-07 00:15:00,72.71,49.239,40.219,29.775 -2020-05-07 00:30:00,73.87,47.994,40.219,29.775 -2020-05-07 00:45:00,77.01,46.685,40.219,29.775 -2020-05-07 01:00:00,74.22,46.685,37.959,29.775 -2020-05-07 01:15:00,73.3,45.92100000000001,37.959,29.775 -2020-05-07 01:30:00,72.97,44.391999999999996,37.959,29.775 -2020-05-07 01:45:00,74.22,43.708999999999996,37.959,29.775 -2020-05-07 02:00:00,75.92,44.092,36.113,29.775 -2020-05-07 02:15:00,74.19,42.993,36.113,29.775 -2020-05-07 02:30:00,72.07,45.396,36.113,29.775 -2020-05-07 02:45:00,74.15,46.036,36.113,29.775 -2020-05-07 03:00:00,74.4,48.995,35.546,29.775 -2020-05-07 03:15:00,77.16,48.946000000000005,35.546,29.775 -2020-05-07 03:30:00,76.61,48.275,35.546,29.775 -2020-05-07 03:45:00,78.26,48.214,35.546,29.775 -2020-05-07 04:00:00,79.9,59.19,37.169000000000004,29.775 -2020-05-07 04:15:00,80.7,70.359,37.169000000000004,29.775 -2020-05-07 04:30:00,83.75,69.352,37.169000000000004,29.775 -2020-05-07 04:45:00,87.24,70.615,37.169000000000004,29.775 -2020-05-07 05:00:00,95.0,98.54899999999999,41.233000000000004,29.775 -2020-05-07 05:15:00,97.6,124.024,41.233000000000004,29.775 -2020-05-07 05:30:00,100.93,113.01700000000001,41.233000000000004,29.775 -2020-05-07 05:45:00,104.36,104.975,41.233000000000004,29.775 -2020-05-07 06:00:00,111.07,106.531,52.57,29.775 -2020-05-07 06:15:00,111.79,110.03200000000001,52.57,29.775 -2020-05-07 06:30:00,115.27,106.96700000000001,52.57,29.775 -2020-05-07 06:45:00,116.41,106.9,52.57,29.775 -2020-05-07 07:00:00,121.35,107.98,64.53,29.775 -2020-05-07 07:15:00,120.69,107.794,64.53,29.775 -2020-05-07 07:30:00,120.64,105.34899999999999,64.53,29.775 -2020-05-07 07:45:00,119.58,102.771,64.53,29.775 -2020-05-07 08:00:00,118.88,98.395,55.911,29.775 -2020-05-07 08:15:00,119.04,98.3,55.911,29.775 -2020-05-07 08:30:00,120.65,95.383,55.911,29.775 -2020-05-07 08:45:00,121.31,95.367,55.911,29.775 -2020-05-07 09:00:00,120.75,88.802,50.949,29.775 -2020-05-07 09:15:00,121.94,86.946,50.949,29.775 -2020-05-07 09:30:00,124.2,89.363,50.949,29.775 -2020-05-07 09:45:00,125.86,89.59,50.949,29.775 -2020-05-07 10:00:00,123.35,85.17299999999999,48.136,29.775 -2020-05-07 10:15:00,121.67,85.905,48.136,29.775 -2020-05-07 10:30:00,122.7,85.274,48.136,29.775 -2020-05-07 10:45:00,121.37,85.71700000000001,48.136,29.775 -2020-05-07 11:00:00,120.01,81.78,46.643,29.775 -2020-05-07 11:15:00,119.7,82.912,46.643,29.775 -2020-05-07 11:30:00,116.44,84.117,46.643,29.775 -2020-05-07 11:45:00,120.55,84.266,46.643,29.775 -2020-05-07 12:00:00,114.26,80.895,44.098,29.775 -2020-05-07 12:15:00,115.33,81.78,44.098,29.775 -2020-05-07 12:30:00,115.25,80.548,44.098,29.775 -2020-05-07 12:45:00,111.95,81.433,44.098,29.775 -2020-05-07 13:00:00,111.66,82.92299999999999,43.717,29.775 -2020-05-07 13:15:00,115.79,82.87899999999999,43.717,29.775 -2020-05-07 13:30:00,112.84,80.861,43.717,29.775 -2020-05-07 13:45:00,113.94,79.32,43.717,29.775 -2020-05-07 14:00:00,112.73,81.293,44.218999999999994,29.775 -2020-05-07 14:15:00,110.34,80.506,44.218999999999994,29.775 -2020-05-07 14:30:00,109.63,79.837,44.218999999999994,29.775 -2020-05-07 14:45:00,110.46,80.277,44.218999999999994,29.775 -2020-05-07 15:00:00,109.7,81.399,46.159,29.775 -2020-05-07 15:15:00,111.05,79.46600000000001,46.159,29.775 -2020-05-07 15:30:00,108.64,78.415,46.159,29.775 -2020-05-07 15:45:00,109.14,77.273,46.159,29.775 -2020-05-07 16:00:00,109.78,77.95100000000001,47.115,29.775 -2020-05-07 16:15:00,111.93,77.275,47.115,29.775 -2020-05-07 16:30:00,114.03,77.032,47.115,29.775 -2020-05-07 16:45:00,114.16,74.009,47.115,29.775 -2020-05-07 17:00:00,114.59,74.568,50.827,29.775 -2020-05-07 17:15:00,113.02,76.104,50.827,29.775 -2020-05-07 17:30:00,114.7,76.706,50.827,29.775 -2020-05-07 17:45:00,114.23,77.19,50.827,29.775 -2020-05-07 18:00:00,114.07,76.90100000000001,52.586000000000006,29.775 -2020-05-07 18:15:00,110.01,78.32,52.586000000000006,29.775 -2020-05-07 18:30:00,114.3,76.979,52.586000000000006,29.775 -2020-05-07 18:45:00,113.58,82.39299999999999,52.586000000000006,29.775 -2020-05-07 19:00:00,112.14,79.639,51.886,29.775 -2020-05-07 19:15:00,106.35,79.051,51.886,29.775 -2020-05-07 19:30:00,105.41,79.083,51.886,29.775 -2020-05-07 19:45:00,106.24,79.819,51.886,29.775 -2020-05-07 20:00:00,105.1,78.285,56.162,29.775 -2020-05-07 20:15:00,103.7,76.383,56.162,29.775 -2020-05-07 20:30:00,103.6,74.949,56.162,29.775 -2020-05-07 20:45:00,103.67,74.764,56.162,29.775 -2020-05-07 21:00:00,98.44,72.814,53.023,29.775 -2020-05-07 21:15:00,98.45,73.525,53.023,29.775 -2020-05-07 21:30:00,93.13,73.773,53.023,29.775 -2020-05-07 21:45:00,94.44,74.152,53.023,29.775 -2020-05-07 22:00:00,88.82,72.084,49.303999999999995,29.775 -2020-05-07 22:15:00,86.68,71.556,49.303999999999995,29.775 -2020-05-07 22:30:00,83.38,62.534,49.303999999999995,29.775 -2020-05-07 22:45:00,84.4,58.549,49.303999999999995,29.775 -2020-05-07 23:00:00,58.37,52.053999999999995,43.409,29.775 -2020-05-07 23:15:00,57.74,50.552,43.409,29.775 -2020-05-07 23:30:00,55.82,49.86600000000001,43.409,29.775 -2020-05-07 23:45:00,54.77,49.93,43.409,29.775 -2020-05-08 00:00:00,53.24,46.693000000000005,39.884,29.775 -2020-05-08 00:15:00,54.19,47.361999999999995,39.884,29.775 -2020-05-08 00:30:00,54.32,46.278999999999996,39.884,29.775 -2020-05-08 00:45:00,55.58,45.352,39.884,29.775 -2020-05-08 01:00:00,52.76,44.941,37.658,29.775 -2020-05-08 01:15:00,53.95,44.012,37.658,29.775 -2020-05-08 01:30:00,54.34,42.949,37.658,29.775 -2020-05-08 01:45:00,53.53,42.105,37.658,29.775 -2020-05-08 02:00:00,52.96,43.25,36.707,29.775 -2020-05-08 02:15:00,54.39,42.055,36.707,29.775 -2020-05-08 02:30:00,54.97,45.31399999999999,36.707,29.775 -2020-05-08 02:45:00,54.2,45.437,36.707,29.775 -2020-05-08 03:00:00,55.31,48.655,37.025,29.775 -2020-05-08 03:15:00,56.15,47.978,37.025,29.775 -2020-05-08 03:30:00,57.39,47.113,37.025,29.775 -2020-05-08 03:45:00,59.16,47.886,37.025,29.775 -2020-05-08 04:00:00,61.87,59.01,38.349000000000004,29.775 -2020-05-08 04:15:00,63.45,68.811,38.349000000000004,29.775 -2020-05-08 04:30:00,66.08,68.631,38.349000000000004,29.775 -2020-05-08 04:45:00,68.24,68.958,38.349000000000004,29.775 -2020-05-08 05:00:00,72.24,95.93,41.565,29.775 -2020-05-08 05:15:00,73.47,122.565,41.565,29.775 -2020-05-08 05:30:00,76.45,112.135,41.565,29.775 -2020-05-08 05:45:00,79.96,103.76799999999999,41.565,29.775 -2020-05-08 06:00:00,84.65,105.696,53.861000000000004,29.775 -2020-05-08 06:15:00,86.18,108.787,53.861000000000004,29.775 -2020-05-08 06:30:00,88.73,105.376,53.861000000000004,29.775 -2020-05-08 06:45:00,89.53,105.786,53.861000000000004,29.775 -2020-05-08 07:00:00,93.58,107.083,63.497,29.775 -2020-05-08 07:15:00,92.57,107.986,63.497,29.775 -2020-05-08 07:30:00,92.28,103.915,63.497,29.775 -2020-05-08 07:45:00,92.57,100.859,63.497,29.775 -2020-05-08 08:00:00,92.12,96.67299999999999,55.43899999999999,29.775 -2020-05-08 08:15:00,93.47,96.991,55.43899999999999,29.775 -2020-05-08 08:30:00,95.97,94.354,55.43899999999999,29.775 -2020-05-08 08:45:00,98.27,93.648,55.43899999999999,29.775 -2020-05-08 09:00:00,97.16,85.48,52.132,29.775 -2020-05-08 09:15:00,97.44,85.31700000000001,52.132,29.775 -2020-05-08 09:30:00,96.52,87.052,52.132,29.775 -2020-05-08 09:45:00,93.66,87.565,52.132,29.775 -2020-05-08 10:00:00,90.57,82.54700000000001,49.881,29.775 -2020-05-08 10:15:00,90.43,83.43799999999999,49.881,29.775 -2020-05-08 10:30:00,92.89,83.205,49.881,29.775 -2020-05-08 10:45:00,92.64,83.412,49.881,29.775 -2020-05-08 11:00:00,87.14,79.635,49.396,29.775 -2020-05-08 11:15:00,84.45,79.61,49.396,29.775 -2020-05-08 11:30:00,82.3,81.271,49.396,29.775 -2020-05-08 11:45:00,84.56,80.74600000000001,49.396,29.775 -2020-05-08 12:00:00,85.34,78.204,46.7,29.775 -2020-05-08 12:15:00,87.59,77.72800000000001,46.7,29.775 -2020-05-08 12:30:00,82.79,76.611,46.7,29.775 -2020-05-08 12:45:00,84.03,77.154,46.7,29.775 -2020-05-08 13:00:00,86.69,79.491,44.05,29.775 -2020-05-08 13:15:00,90.34,79.928,44.05,29.775 -2020-05-08 13:30:00,92.17,78.503,44.05,29.775 -2020-05-08 13:45:00,91.91,77.16,44.05,29.775 -2020-05-08 14:00:00,91.0,78.111,42.805,29.775 -2020-05-08 14:15:00,87.13,77.55199999999999,42.805,29.775 -2020-05-08 14:30:00,85.29,78.155,42.805,29.775 -2020-05-08 14:45:00,85.31,78.226,42.805,29.775 -2020-05-08 15:00:00,81.82,79.128,44.36600000000001,29.775 -2020-05-08 15:15:00,80.11,76.816,44.36600000000001,29.775 -2020-05-08 15:30:00,79.41,74.672,44.36600000000001,29.775 -2020-05-08 15:45:00,79.63,74.131,44.36600000000001,29.775 -2020-05-08 16:00:00,80.31,73.779,46.928999999999995,29.775 -2020-05-08 16:15:00,83.58,73.572,46.928999999999995,29.775 -2020-05-08 16:30:00,85.81,73.242,46.928999999999995,29.775 -2020-05-08 16:45:00,88.21,69.52600000000001,46.928999999999995,29.775 -2020-05-08 17:00:00,90.9,71.516,51.468,29.775 -2020-05-08 17:15:00,90.29,72.729,51.468,29.775 -2020-05-08 17:30:00,91.83,73.315,51.468,29.775 -2020-05-08 17:45:00,93.13,73.54899999999999,51.468,29.775 -2020-05-08 18:00:00,95.38,73.646,52.58,29.775 -2020-05-08 18:15:00,93.36,74.184,52.58,29.775 -2020-05-08 18:30:00,94.59,72.903,52.58,29.775 -2020-05-08 18:45:00,91.5,78.64,52.58,29.775 -2020-05-08 19:00:00,88.14,76.949,52.183,29.775 -2020-05-08 19:15:00,85.24,77.32600000000001,52.183,29.775 -2020-05-08 19:30:00,84.68,77.257,52.183,29.775 -2020-05-08 19:45:00,85.55,77.033,52.183,29.775 -2020-05-08 20:00:00,86.18,75.357,58.497,29.775 -2020-05-08 20:15:00,86.8,74.078,58.497,29.775 -2020-05-08 20:30:00,85.42,72.279,58.497,29.775 -2020-05-08 20:45:00,84.39,71.708,58.497,29.775 -2020-05-08 21:00:00,79.14,70.98,54.731,29.775 -2020-05-08 21:15:00,78.08,73.17699999999999,54.731,29.775 -2020-05-08 21:30:00,75.44,73.305,54.731,29.775 -2020-05-08 21:45:00,73.8,74.07300000000001,54.731,29.775 -2020-05-08 22:00:00,69.96,72.279,51.386,29.775 -2020-05-08 22:15:00,70.53,71.528,51.386,29.775 -2020-05-08 22:30:00,67.66,68.579,51.386,29.775 -2020-05-08 22:45:00,66.61,66.559,51.386,29.775 -2020-05-08 23:00:00,62.1,61.192,44.463,29.775 -2020-05-08 23:15:00,61.96,57.783,44.463,29.775 -2020-05-08 23:30:00,61.24,55.128,44.463,29.775 -2020-05-08 23:45:00,61.9,54.85,44.463,29.775 -2020-05-09 00:00:00,59.19,46.31399999999999,42.833999999999996,29.662 -2020-05-09 00:15:00,59.48,44.915,42.833999999999996,29.662 -2020-05-09 00:30:00,58.27,43.941,42.833999999999996,29.662 -2020-05-09 00:45:00,58.41,42.702,42.833999999999996,29.662 -2020-05-09 01:00:00,56.44,42.744,37.859,29.662 -2020-05-09 01:15:00,57.02,41.898999999999994,37.859,29.662 -2020-05-09 01:30:00,54.39,39.994,37.859,29.662 -2020-05-09 01:45:00,57.37,40.054,37.859,29.662 -2020-05-09 02:00:00,56.57,40.662,35.327,29.662 -2020-05-09 02:15:00,57.32,38.695,35.327,29.662 -2020-05-09 02:30:00,56.09,40.938,35.327,29.662 -2020-05-09 02:45:00,56.5,41.725,35.327,29.662 -2020-05-09 03:00:00,56.74,44.101000000000006,34.908,29.662 -2020-05-09 03:15:00,57.04,42.413999999999994,34.908,29.662 -2020-05-09 03:30:00,57.73,41.23,34.908,29.662 -2020-05-09 03:45:00,58.65,43.236000000000004,34.908,29.662 -2020-05-09 04:00:00,56.1,51.325,34.84,29.662 -2020-05-09 04:15:00,58.39,59.455,34.84,29.662 -2020-05-09 04:30:00,58.62,57.167,34.84,29.662 -2020-05-09 04:45:00,58.93,57.523,34.84,29.662 -2020-05-09 05:00:00,59.13,72.622,34.222,29.662 -2020-05-09 05:15:00,58.29,83.84100000000001,34.222,29.662 -2020-05-09 05:30:00,61.65,74.814,34.222,29.662 -2020-05-09 05:45:00,64.49,71.96600000000001,34.222,29.662 -2020-05-09 06:00:00,67.16,89.139,35.515,29.662 -2020-05-09 06:15:00,68.9,104.09200000000001,35.515,29.662 -2020-05-09 06:30:00,67.17,96.552,35.515,29.662 -2020-05-09 06:45:00,72.7,91.306,35.515,29.662 -2020-05-09 07:00:00,71.59,89.74700000000001,39.687,29.662 -2020-05-09 07:15:00,75.04,89.178,39.687,29.662 -2020-05-09 07:30:00,77.56,87.242,39.687,29.662 -2020-05-09 07:45:00,81.67,86.36399999999999,39.687,29.662 -2020-05-09 08:00:00,83.62,83.985,44.9,29.662 -2020-05-09 08:15:00,84.5,85.53399999999999,44.9,29.662 -2020-05-09 08:30:00,84.0,83.471,44.9,29.662 -2020-05-09 08:45:00,81.6,84.695,44.9,29.662 -2020-05-09 09:00:00,79.98,79.499,45.724,29.662 -2020-05-09 09:15:00,82.69,79.999,45.724,29.662 -2020-05-09 09:30:00,76.88,82.469,45.724,29.662 -2020-05-09 09:45:00,80.32,82.73200000000001,45.724,29.662 -2020-05-09 10:00:00,74.68,78.143,43.123999999999995,29.662 -2020-05-09 10:15:00,75.87,79.402,43.123999999999995,29.662 -2020-05-09 10:30:00,75.83,78.999,43.123999999999995,29.662 -2020-05-09 10:45:00,76.14,79.484,43.123999999999995,29.662 -2020-05-09 11:00:00,72.08,75.645,40.255,29.662 -2020-05-09 11:15:00,70.62,75.997,40.255,29.662 -2020-05-09 11:30:00,73.05,77.406,40.255,29.662 -2020-05-09 11:45:00,75.89,76.999,40.255,29.662 -2020-05-09 12:00:00,76.78,74.229,38.582,29.662 -2020-05-09 12:15:00,71.51,74.643,38.582,29.662 -2020-05-09 12:30:00,73.06,73.529,38.582,29.662 -2020-05-09 12:45:00,72.57,74.273,38.582,29.662 -2020-05-09 13:00:00,70.0,75.922,36.043,29.662 -2020-05-09 13:15:00,68.54,75.10600000000001,36.043,29.662 -2020-05-09 13:30:00,62.42,73.637,36.043,29.662 -2020-05-09 13:45:00,66.38,71.518,36.043,29.662 -2020-05-09 14:00:00,70.51,73.04899999999999,35.216,29.662 -2020-05-09 14:15:00,77.12,71.347,35.216,29.662 -2020-05-09 14:30:00,70.75,70.837,35.216,29.662 -2020-05-09 14:45:00,67.87,71.348,35.216,29.662 -2020-05-09 15:00:00,69.68,72.88600000000001,36.759,29.662 -2020-05-09 15:15:00,71.0,71.407,36.759,29.662 -2020-05-09 15:30:00,71.64,70.027,36.759,29.662 -2020-05-09 15:45:00,74.81,68.809,36.759,29.662 -2020-05-09 16:00:00,75.54,69.814,40.086,29.662 -2020-05-09 16:15:00,71.72,69.282,40.086,29.662 -2020-05-09 16:30:00,75.34,69.111,40.086,29.662 -2020-05-09 16:45:00,76.17,65.67,40.086,29.662 -2020-05-09 17:00:00,77.72,66.625,44.876999999999995,29.662 -2020-05-09 17:15:00,79.16,66.865,44.876999999999995,29.662 -2020-05-09 17:30:00,79.96,67.304,44.876999999999995,29.662 -2020-05-09 17:45:00,80.99,67.714,44.876999999999995,29.662 -2020-05-09 18:00:00,80.0,68.844,47.056000000000004,29.662 -2020-05-09 18:15:00,82.8,71.342,47.056000000000004,29.662 -2020-05-09 18:30:00,81.66,71.592,47.056000000000004,29.662 -2020-05-09 18:45:00,82.41,73.399,47.056000000000004,29.662 -2020-05-09 19:00:00,80.39,70.936,45.57,29.662 -2020-05-09 19:15:00,77.08,70.343,45.57,29.662 -2020-05-09 19:30:00,74.71,71.15100000000001,45.57,29.662 -2020-05-09 19:45:00,78.23,72.253,45.57,29.662 -2020-05-09 20:00:00,78.77,71.929,41.685,29.662 -2020-05-09 20:15:00,79.72,70.954,41.685,29.662 -2020-05-09 20:30:00,78.87,68.374,41.685,29.662 -2020-05-09 20:45:00,78.23,69.122,41.685,29.662 -2020-05-09 21:00:00,76.02,68.109,39.576,29.662 -2020-05-09 21:15:00,74.79,70.21300000000001,39.576,29.662 -2020-05-09 21:30:00,70.34,70.922,39.576,29.662 -2020-05-09 21:45:00,72.16,71.14399999999999,39.576,29.662 -2020-05-09 22:00:00,69.44,69.848,39.068000000000005,29.662 -2020-05-09 22:15:00,66.81,70.223,39.068000000000005,29.662 -2020-05-09 22:30:00,65.84,69.253,39.068000000000005,29.662 -2020-05-09 22:45:00,65.64,68.2,39.068000000000005,29.662 -2020-05-09 23:00:00,58.1,63.147,32.06,29.662 -2020-05-09 23:15:00,61.56,59.51,32.06,29.662 -2020-05-09 23:30:00,59.59,58.13,32.06,29.662 -2020-05-09 23:45:00,61.11,57.242,32.06,29.662 -2020-05-10 00:00:00,56.26,47.231,28.825,29.662 -2020-05-10 00:15:00,56.19,44.821000000000005,28.825,29.662 -2020-05-10 00:30:00,56.2,43.593999999999994,28.825,29.662 -2020-05-10 00:45:00,56.93,42.525,28.825,29.662 -2020-05-10 01:00:00,54.42,42.729,25.995,29.662 -2020-05-10 01:15:00,55.57,42.137,25.995,29.662 -2020-05-10 01:30:00,54.8,40.296,25.995,29.662 -2020-05-10 01:45:00,54.72,39.944,25.995,29.662 -2020-05-10 02:00:00,53.8,40.336,24.394000000000002,29.662 -2020-05-10 02:15:00,53.93,38.604,24.394000000000002,29.662 -2020-05-10 02:30:00,54.27,41.316,24.394000000000002,29.662 -2020-05-10 02:45:00,53.34,42.047,24.394000000000002,29.662 -2020-05-10 03:00:00,53.35,45.059,22.916999999999998,29.662 -2020-05-10 03:15:00,53.77,43.37,22.916999999999998,29.662 -2020-05-10 03:30:00,55.05,42.111999999999995,22.916999999999998,29.662 -2020-05-10 03:45:00,55.75,43.489,22.916999999999998,29.662 -2020-05-10 04:00:00,53.43,51.42,23.576999999999998,29.662 -2020-05-10 04:15:00,53.2,58.799,23.576999999999998,29.662 -2020-05-10 04:30:00,52.95,57.58,23.576999999999998,29.662 -2020-05-10 04:45:00,53.86,57.659,23.576999999999998,29.662 -2020-05-10 05:00:00,53.48,71.578,22.730999999999998,29.662 -2020-05-10 05:15:00,54.32,81.235,22.730999999999998,29.662 -2020-05-10 05:30:00,53.89,71.875,22.730999999999998,29.662 -2020-05-10 05:45:00,54.74,68.944,22.730999999999998,29.662 -2020-05-10 06:00:00,56.84,84.185,22.34,29.662 -2020-05-10 06:15:00,56.42,99.195,22.34,29.662 -2020-05-10 06:30:00,57.71,90.72200000000001,22.34,29.662 -2020-05-10 06:45:00,58.61,84.32700000000001,22.34,29.662 -2020-05-10 07:00:00,59.27,83.804,24.691999999999997,29.662 -2020-05-10 07:15:00,59.67,81.642,24.691999999999997,29.662 -2020-05-10 07:30:00,59.68,80.24,24.691999999999997,29.662 -2020-05-10 07:45:00,60.06,79.082,24.691999999999997,29.662 -2020-05-10 08:00:00,59.38,77.918,29.340999999999998,29.662 -2020-05-10 08:15:00,59.29,80.388,29.340999999999998,29.662 -2020-05-10 08:30:00,59.52,79.59,29.340999999999998,29.662 -2020-05-10 08:45:00,58.7,81.51899999999999,29.340999999999998,29.662 -2020-05-10 09:00:00,56.6,76.072,30.788,29.662 -2020-05-10 09:15:00,57.08,76.41,30.788,29.662 -2020-05-10 09:30:00,57.77,79.16199999999999,30.788,29.662 -2020-05-10 09:45:00,60.07,80.18,30.788,29.662 -2020-05-10 10:00:00,59.67,76.94800000000001,30.158,29.662 -2020-05-10 10:15:00,60.32,78.554,30.158,29.662 -2020-05-10 10:30:00,60.97,78.569,30.158,29.662 -2020-05-10 10:45:00,61.22,79.084,30.158,29.662 -2020-05-10 11:00:00,58.46,75.331,32.056,29.662 -2020-05-10 11:15:00,58.18,75.423,32.056,29.662 -2020-05-10 11:30:00,55.24,76.867,32.056,29.662 -2020-05-10 11:45:00,55.54,76.905,32.056,29.662 -2020-05-10 12:00:00,53.33,74.672,28.671999999999997,29.662 -2020-05-10 12:15:00,54.51,75.421,28.671999999999997,29.662 -2020-05-10 12:30:00,50.53,73.825,28.671999999999997,29.662 -2020-05-10 12:45:00,50.54,73.71300000000001,28.671999999999997,29.662 -2020-05-10 13:00:00,47.4,74.889,23.171,29.662 -2020-05-10 13:15:00,45.4,74.87899999999999,23.171,29.662 -2020-05-10 13:30:00,46.65,72.51899999999999,23.171,29.662 -2020-05-10 13:45:00,48.47,70.95,23.171,29.662 -2020-05-10 14:00:00,49.27,73.501,19.11,29.662 -2020-05-10 14:15:00,48.56,72.59100000000001,19.11,29.662 -2020-05-10 14:30:00,47.46,71.642,19.11,29.662 -2020-05-10 14:45:00,47.02,71.206,19.11,29.662 -2020-05-10 15:00:00,46.47,72.26899999999999,19.689,29.662 -2020-05-10 15:15:00,45.86,70.492,19.689,29.662 -2020-05-10 15:30:00,47.51,69.187,19.689,29.662 -2020-05-10 15:45:00,49.12,68.445,19.689,29.662 -2020-05-10 16:00:00,54.26,68.936,22.875,29.662 -2020-05-10 16:15:00,59.43,68.202,22.875,29.662 -2020-05-10 16:30:00,61.12,68.893,22.875,29.662 -2020-05-10 16:45:00,64.01,65.495,22.875,29.662 -2020-05-10 17:00:00,66.15,66.755,33.884,29.662 -2020-05-10 17:15:00,65.55,67.977,33.884,29.662 -2020-05-10 17:30:00,68.01,69.122,33.884,29.662 -2020-05-10 17:45:00,69.14,70.696,33.884,29.662 -2020-05-10 18:00:00,71.22,72.01899999999999,38.453,29.662 -2020-05-10 18:15:00,71.38,74.692,38.453,29.662 -2020-05-10 18:30:00,71.35,73.967,38.453,29.662 -2020-05-10 18:45:00,72.02,76.55,38.453,29.662 -2020-05-10 19:00:00,71.05,75.596,39.221,29.662 -2020-05-10 19:15:00,71.32,74.34100000000001,39.221,29.662 -2020-05-10 19:30:00,76.1,74.89699999999999,39.221,29.662 -2020-05-10 19:45:00,79.65,76.161,39.221,29.662 -2020-05-10 20:00:00,78.39,75.993,37.871,29.662 -2020-05-10 20:15:00,77.6,75.27199999999999,37.871,29.662 -2020-05-10 20:30:00,79.29,73.798,37.871,29.662 -2020-05-10 20:45:00,79.19,72.845,37.871,29.662 -2020-05-10 21:00:00,79.14,70.771,36.465,29.662 -2020-05-10 21:15:00,79.16,72.43,36.465,29.662 -2020-05-10 21:30:00,76.86,72.72,36.465,29.662 -2020-05-10 21:45:00,77.71,73.296,36.465,29.662 -2020-05-10 22:00:00,72.23,73.175,36.092,29.662 -2020-05-10 22:15:00,73.28,71.986,36.092,29.662 -2020-05-10 22:30:00,71.29,69.47399999999999,36.092,29.662 -2020-05-10 22:45:00,72.19,67.111,36.092,29.662 -2020-05-10 23:00:00,66.3,60.795,31.013,29.662 -2020-05-10 23:15:00,67.7,58.853,31.013,29.662 -2020-05-10 23:30:00,66.26,57.341,31.013,29.662 -2020-05-10 23:45:00,66.87,56.893,31.013,29.662 -2020-05-11 00:00:00,68.36,49.586999999999996,31.174,29.775 -2020-05-11 00:15:00,71.71,48.857,31.174,29.775 -2020-05-11 00:30:00,71.93,47.37,31.174,29.775 -2020-05-11 00:45:00,68.14,45.806999999999995,31.174,29.775 -2020-05-11 01:00:00,62.71,46.325,29.663,29.775 -2020-05-11 01:15:00,63.59,45.534,29.663,29.775 -2020-05-11 01:30:00,63.09,43.979,29.663,29.775 -2020-05-11 01:45:00,66.91,43.59,29.663,29.775 -2020-05-11 02:00:00,71.05,44.325,28.793000000000003,29.775 -2020-05-11 02:15:00,71.22,42.299,28.793000000000003,29.775 -2020-05-11 02:30:00,67.29,45.268,28.793000000000003,29.775 -2020-05-11 02:45:00,64.47,45.673,28.793000000000003,29.775 -2020-05-11 03:00:00,65.55,49.538999999999994,27.728,29.775 -2020-05-11 03:15:00,66.79,48.979,27.728,29.775 -2020-05-11 03:30:00,67.95,48.162,27.728,29.775 -2020-05-11 03:45:00,74.12,49.006,27.728,29.775 -2020-05-11 04:00:00,80.04,60.865,29.266,29.775 -2020-05-11 04:15:00,81.67,71.962,29.266,29.775 -2020-05-11 04:30:00,80.33,71.131,29.266,29.775 -2020-05-11 04:45:00,81.18,71.55199999999999,29.266,29.775 -2020-05-11 05:00:00,89.03,96.06299999999999,37.889,29.775 -2020-05-11 05:15:00,93.69,120.575,37.889,29.775 -2020-05-11 05:30:00,95.84,110.10700000000001,37.889,29.775 -2020-05-11 05:45:00,103.12,102.885,37.889,29.775 -2020-05-11 06:00:00,109.88,104.07799999999999,55.485,29.775 -2020-05-11 06:15:00,110.72,106.779,55.485,29.775 -2020-05-11 06:30:00,107.23,104.19200000000001,55.485,29.775 -2020-05-11 06:45:00,105.05,105.00299999999999,55.485,29.775 -2020-05-11 07:00:00,107.77,106.0,65.765,29.775 -2020-05-11 07:15:00,109.31,106.066,65.765,29.775 -2020-05-11 07:30:00,106.64,103.68700000000001,65.765,29.775 -2020-05-11 07:45:00,108.08,101.87200000000001,65.765,29.775 -2020-05-11 08:00:00,112.88,97.49700000000001,56.745,29.775 -2020-05-11 08:15:00,110.39,98.29700000000001,56.745,29.775 -2020-05-11 08:30:00,108.45,95.244,56.745,29.775 -2020-05-11 08:45:00,105.26,96.137,56.745,29.775 -2020-05-11 09:00:00,105.56,89.617,53.321999999999996,29.775 -2020-05-11 09:15:00,103.65,87.292,53.321999999999996,29.775 -2020-05-11 09:30:00,103.56,88.97200000000001,53.321999999999996,29.775 -2020-05-11 09:45:00,106.22,88.381,53.321999999999996,29.775 -2020-05-11 10:00:00,102.45,85.273,51.309,29.775 -2020-05-11 10:15:00,103.67,86.678,51.309,29.775 -2020-05-11 10:30:00,103.32,86.024,51.309,29.775 -2020-05-11 10:45:00,101.26,85.666,51.309,29.775 -2020-05-11 11:00:00,99.43,81.113,50.415,29.775 -2020-05-11 11:15:00,98.15,82.15100000000001,50.415,29.775 -2020-05-11 11:30:00,98.64,84.656,50.415,29.775 -2020-05-11 11:45:00,96.79,84.916,50.415,29.775 -2020-05-11 12:00:00,96.52,82.369,48.273,29.775 -2020-05-11 12:15:00,96.68,83.20299999999999,48.273,29.775 -2020-05-11 12:30:00,95.66,80.89699999999999,48.273,29.775 -2020-05-11 12:45:00,95.11,81.42,48.273,29.775 -2020-05-11 13:00:00,94.53,83.427,48.452,29.775 -2020-05-11 13:15:00,101.79,82.205,48.452,29.775 -2020-05-11 13:30:00,101.81,79.762,48.452,29.775 -2020-05-11 13:45:00,100.1,78.861,48.452,29.775 -2020-05-11 14:00:00,93.14,80.579,48.35,29.775 -2020-05-11 14:15:00,93.8,79.82300000000001,48.35,29.775 -2020-05-11 14:30:00,92.72,78.492,48.35,29.775 -2020-05-11 14:45:00,95.44,79.55,48.35,29.775 -2020-05-11 15:00:00,93.18,81.13600000000001,48.838,29.775 -2020-05-11 15:15:00,91.76,78.321,48.838,29.775 -2020-05-11 15:30:00,93.36,77.204,48.838,29.775 -2020-05-11 15:45:00,94.72,75.90899999999999,48.838,29.775 -2020-05-11 16:00:00,95.88,77.11399999999999,50.873000000000005,29.775 -2020-05-11 16:15:00,96.96,76.11,50.873000000000005,29.775 -2020-05-11 16:30:00,99.03,75.937,50.873000000000005,29.775 -2020-05-11 16:45:00,101.19,72.03,50.873000000000005,29.775 -2020-05-11 17:00:00,103.98,72.402,56.637,29.775 -2020-05-11 17:15:00,104.09,73.51,56.637,29.775 -2020-05-11 17:30:00,105.88,74.139,56.637,29.775 -2020-05-11 17:45:00,105.66,74.80199999999999,56.637,29.775 -2020-05-11 18:00:00,106.65,75.36399999999999,56.35,29.775 -2020-05-11 18:15:00,105.32,75.806,56.35,29.775 -2020-05-11 18:30:00,112.4,74.733,56.35,29.775 -2020-05-11 18:45:00,113.9,80.008,56.35,29.775 -2020-05-11 19:00:00,103.24,78.153,56.023,29.775 -2020-05-11 19:15:00,99.4,77.52,56.023,29.775 -2020-05-11 19:30:00,100.03,77.965,56.023,29.775 -2020-05-11 19:45:00,99.47,78.46300000000001,56.023,29.775 -2020-05-11 20:00:00,100.76,76.457,62.372,29.775 -2020-05-11 20:15:00,98.44,75.921,62.372,29.775 -2020-05-11 20:30:00,97.74,74.20100000000001,62.372,29.775 -2020-05-11 20:45:00,96.87,74.044,62.372,29.775 -2020-05-11 21:00:00,95.03,71.687,57.516999999999996,29.775 -2020-05-11 21:15:00,93.92,73.28399999999999,57.516999999999996,29.775 -2020-05-11 21:30:00,95.99,73.58,57.516999999999996,29.775 -2020-05-11 21:45:00,94.93,73.828,57.516999999999996,29.775 -2020-05-11 22:00:00,89.61,71.101,51.823,29.775 -2020-05-11 22:15:00,82.35,71.01100000000001,51.823,29.775 -2020-05-11 22:30:00,85.45,61.678999999999995,51.823,29.775 -2020-05-11 22:45:00,85.91,57.555,51.823,29.775 -2020-05-11 23:00:00,82.2,51.543,43.832,29.775 -2020-05-11 23:15:00,78.11,49.298,43.832,29.775 -2020-05-11 23:30:00,80.04,48.743,43.832,29.775 -2020-05-11 23:45:00,81.09,48.815,43.832,29.775 -2020-05-12 00:00:00,78.75,47.239,42.371,29.775 -2020-05-12 00:15:00,74.73,47.705,42.371,29.775 -2020-05-12 00:30:00,75.86,46.446000000000005,42.371,29.775 -2020-05-12 00:45:00,79.25,45.168,42.371,29.775 -2020-05-12 01:00:00,77.81,45.195,39.597,29.775 -2020-05-12 01:15:00,76.91,44.31100000000001,39.597,29.775 -2020-05-12 01:30:00,71.67,42.696999999999996,39.597,29.775 -2020-05-12 01:45:00,78.35,42.011,39.597,29.775 -2020-05-12 02:00:00,78.21,42.357,38.298,29.775 -2020-05-12 02:15:00,77.57,41.191,38.298,29.775 -2020-05-12 02:30:00,70.31,43.653,38.298,29.775 -2020-05-12 02:45:00,70.29,44.328,38.298,29.775 -2020-05-12 03:00:00,71.96,47.341,37.884,29.775 -2020-05-12 03:15:00,73.12,47.2,37.884,29.775 -2020-05-12 03:30:00,74.65,46.527,37.884,29.775 -2020-05-12 03:45:00,76.43,46.586000000000006,37.884,29.775 -2020-05-12 04:00:00,82.71,57.331,39.442,29.775 -2020-05-12 04:15:00,87.45,68.267,39.442,29.775 -2020-05-12 04:30:00,90.35,67.226,39.442,29.775 -2020-05-12 04:45:00,87.36,68.453,39.442,29.775 -2020-05-12 05:00:00,92.61,95.80799999999999,43.608000000000004,29.775 -2020-05-12 05:15:00,95.01,120.62100000000001,43.608000000000004,29.775 -2020-05-12 05:30:00,97.1,109.846,43.608000000000004,29.775 -2020-05-12 05:45:00,99.06,102.089,43.608000000000004,29.775 -2020-05-12 06:00:00,104.0,103.76,54.99100000000001,29.775 -2020-05-12 06:15:00,104.83,107.14399999999999,54.99100000000001,29.775 -2020-05-12 06:30:00,107.38,104.08200000000001,54.99100000000001,29.775 -2020-05-12 06:45:00,107.97,104.059,54.99100000000001,29.775 -2020-05-12 07:00:00,108.87,105.101,66.217,29.775 -2020-05-12 07:15:00,110.38,104.91,66.217,29.775 -2020-05-12 07:30:00,109.05,102.322,66.217,29.775 -2020-05-12 07:45:00,113.65,99.833,66.217,29.775 -2020-05-12 08:00:00,108.2,95.444,60.151,29.775 -2020-05-12 08:15:00,103.72,95.56299999999999,60.151,29.775 -2020-05-12 08:30:00,103.77,92.559,60.151,29.775 -2020-05-12 08:45:00,104.97,92.65899999999999,60.151,29.775 -2020-05-12 09:00:00,109.3,86.09100000000001,53.873000000000005,29.775 -2020-05-12 09:15:00,106.31,84.264,53.873000000000005,29.775 -2020-05-12 09:30:00,107.3,86.738,53.873000000000005,29.775 -2020-05-12 09:45:00,105.8,87.12700000000001,53.873000000000005,29.775 -2020-05-12 10:00:00,103.34,82.756,51.417,29.775 -2020-05-12 10:15:00,109.67,83.676,51.417,29.775 -2020-05-12 10:30:00,105.75,83.12700000000001,51.417,29.775 -2020-05-12 10:45:00,108.2,83.65,51.417,29.775 -2020-05-12 11:00:00,106.71,79.682,50.43600000000001,29.775 -2020-05-12 11:15:00,107.35,80.905,50.43600000000001,29.775 -2020-05-12 11:30:00,110.29,82.086,50.43600000000001,29.775 -2020-05-12 11:45:00,120.56,82.305,50.43600000000001,29.775 -2020-05-12 12:00:00,127.19,79.093,47.468,29.775 -2020-05-12 12:15:00,125.28,80.00399999999999,47.468,29.775 -2020-05-12 12:30:00,115.59,78.583,47.468,29.775 -2020-05-12 12:45:00,116.61,79.493,47.468,29.775 -2020-05-12 13:00:00,118.57,81.10600000000001,48.453,29.775 -2020-05-12 13:15:00,118.1,81.064,48.453,29.775 -2020-05-12 13:30:00,109.12,79.085,48.453,29.775 -2020-05-12 13:45:00,111.48,77.554,48.453,29.775 -2020-05-12 14:00:00,124.56,79.757,48.435,29.775 -2020-05-12 14:15:00,123.29,78.90899999999999,48.435,29.775 -2020-05-12 14:30:00,118.12,78.03399999999999,48.435,29.775 -2020-05-12 14:45:00,118.02,78.485,48.435,29.775 -2020-05-12 15:00:00,121.42,79.819,49.966,29.775 -2020-05-12 15:15:00,120.43,77.8,49.966,29.775 -2020-05-12 15:30:00,116.21,76.589,49.966,29.775 -2020-05-12 15:45:00,114.12,75.368,49.966,29.775 -2020-05-12 16:00:00,113.27,76.267,51.184,29.775 -2020-05-12 16:15:00,110.03,75.498,51.184,29.775 -2020-05-12 16:30:00,113.31,75.309,51.184,29.775 -2020-05-12 16:45:00,110.3,71.995,51.184,29.775 -2020-05-12 17:00:00,113.37,72.785,56.138999999999996,29.775 -2020-05-12 17:15:00,113.49,74.193,56.138999999999996,29.775 -2020-05-12 17:30:00,116.69,74.74,56.138999999999996,29.775 -2020-05-12 17:45:00,114.28,75.071,56.138999999999996,29.775 -2020-05-12 18:00:00,119.23,74.863,57.038000000000004,29.775 -2020-05-12 18:15:00,118.62,76.265,57.038000000000004,29.775 -2020-05-12 18:30:00,115.63,74.863,57.038000000000004,29.775 -2020-05-12 18:45:00,111.37,80.283,57.038000000000004,29.775 -2020-05-12 19:00:00,112.68,77.525,56.492,29.775 -2020-05-12 19:15:00,112.7,76.933,56.492,29.775 -2020-05-12 19:30:00,108.78,76.973,56.492,29.775 -2020-05-12 19:45:00,103.96,77.756,56.492,29.775 -2020-05-12 20:00:00,102.83,76.097,62.534,29.775 -2020-05-12 20:15:00,99.27,74.208,62.534,29.775 -2020-05-12 20:30:00,100.18,72.914,62.534,29.775 -2020-05-12 20:45:00,106.01,72.91199999999999,62.534,29.775 -2020-05-12 21:00:00,98.91,70.986,55.506,29.775 -2020-05-12 21:15:00,97.97,71.77199999999999,55.506,29.775 -2020-05-12 21:30:00,90.65,71.925,55.506,29.775 -2020-05-12 21:45:00,87.9,72.434,55.506,29.775 -2020-05-12 22:00:00,89.08,70.472,51.472,29.775 -2020-05-12 22:15:00,88.65,70.043,51.472,29.775 -2020-05-12 22:30:00,85.02,60.961000000000006,51.472,29.775 -2020-05-12 22:45:00,79.11,56.92100000000001,51.472,29.775 -2020-05-12 23:00:00,74.3,50.28,44.593,29.775 -2020-05-12 23:15:00,77.56,48.982,44.593,29.775 -2020-05-12 23:30:00,74.7,48.299,44.593,29.775 -2020-05-12 23:45:00,74.02,48.355,44.593,29.775 -2020-05-13 00:00:00,77.65,46.93,41.978,29.775 -2020-05-13 00:15:00,79.78,47.406000000000006,41.978,29.775 -2020-05-13 00:30:00,79.02,46.145,41.978,29.775 -2020-05-13 00:45:00,74.67,44.873000000000005,41.978,29.775 -2020-05-13 01:00:00,70.45,44.906000000000006,38.59,29.775 -2020-05-13 01:15:00,75.07,43.998999999999995,38.59,29.775 -2020-05-13 01:30:00,76.59,42.369,38.59,29.775 -2020-05-13 01:45:00,78.3,41.681000000000004,38.59,29.775 -2020-05-13 02:00:00,73.41,42.021,36.23,29.775 -2020-05-13 02:15:00,70.67,40.841,36.23,29.775 -2020-05-13 02:30:00,69.26,43.31399999999999,36.23,29.775 -2020-05-13 02:45:00,70.7,43.997,36.23,29.775 -2020-05-13 03:00:00,72.64,47.019,35.867,29.775 -2020-05-13 03:15:00,72.13,46.858999999999995,35.867,29.775 -2020-05-13 03:30:00,73.68,46.188,35.867,29.775 -2020-05-13 03:45:00,77.49,46.271,35.867,29.775 -2020-05-13 04:00:00,80.21,56.97,36.75,29.775 -2020-05-13 04:15:00,87.8,67.86,36.75,29.775 -2020-05-13 04:30:00,91.75,66.811,36.75,29.775 -2020-05-13 04:45:00,96.22,68.03,36.75,29.775 -2020-05-13 05:00:00,96.43,95.272,40.461,29.775 -2020-05-13 05:15:00,98.98,119.954,40.461,29.775 -2020-05-13 05:30:00,102.79,109.227,40.461,29.775 -2020-05-13 05:45:00,105.22,101.527,40.461,29.775 -2020-05-13 06:00:00,111.07,103.219,55.481,29.775 -2020-05-13 06:15:00,111.37,106.58,55.481,29.775 -2020-05-13 06:30:00,115.97,103.52,55.481,29.775 -2020-05-13 06:45:00,119.83,103.505,55.481,29.775 -2020-05-13 07:00:00,123.06,104.54,68.45,29.775 -2020-05-13 07:15:00,124.82,104.348,68.45,29.775 -2020-05-13 07:30:00,124.87,101.734,68.45,29.775 -2020-05-13 07:45:00,126.18,99.264,68.45,29.775 -2020-05-13 08:00:00,124.84,94.87200000000001,60.885,29.775 -2020-05-13 08:15:00,125.61,95.03299999999999,60.885,29.775 -2020-05-13 08:30:00,127.05,92.01299999999999,60.885,29.775 -2020-05-13 08:45:00,130.24,92.135,60.885,29.775 -2020-05-13 09:00:00,129.22,85.56700000000001,56.887,29.775 -2020-05-13 09:15:00,132.69,83.745,56.887,29.775 -2020-05-13 09:30:00,132.0,86.23,56.887,29.775 -2020-05-13 09:45:00,133.26,86.65,56.887,29.775 -2020-05-13 10:00:00,132.15,82.288,54.401,29.775 -2020-05-13 10:15:00,133.61,83.245,54.401,29.775 -2020-05-13 10:30:00,132.7,82.713,54.401,29.775 -2020-05-13 10:45:00,129.86,83.25200000000001,54.401,29.775 -2020-05-13 11:00:00,125.77,79.27600000000001,53.678000000000004,29.775 -2020-05-13 11:15:00,124.22,80.518,53.678000000000004,29.775 -2020-05-13 11:30:00,132.15,81.693,53.678000000000004,29.775 -2020-05-13 11:45:00,134.23,81.925,53.678000000000004,29.775 -2020-05-13 12:00:00,133.92,78.745,51.68,29.775 -2020-05-13 12:15:00,126.49,79.66,51.68,29.775 -2020-05-13 12:30:00,126.47,78.203,51.68,29.775 -2020-05-13 12:45:00,126.1,79.117,51.68,29.775 -2020-05-13 13:00:00,122.35,80.75399999999999,51.263000000000005,29.775 -2020-05-13 13:15:00,121.6,80.712,51.263000000000005,29.775 -2020-05-13 13:30:00,115.7,78.74,51.263000000000005,29.775 -2020-05-13 13:45:00,116.2,77.212,51.263000000000005,29.775 -2020-05-13 14:00:00,122.46,79.46,51.107,29.775 -2020-05-13 14:15:00,118.59,78.6,51.107,29.775 -2020-05-13 14:30:00,107.28,77.684,51.107,29.775 -2020-05-13 14:45:00,98.18,78.138,51.107,29.775 -2020-05-13 15:00:00,97.87,79.513,51.498000000000005,29.775 -2020-05-13 15:15:00,105.19,77.479,51.498000000000005,29.775 -2020-05-13 15:30:00,108.25,76.236,51.498000000000005,29.775 -2020-05-13 15:45:00,112.75,74.999,51.498000000000005,29.775 -2020-05-13 16:00:00,115.28,75.942,53.376999999999995,29.775 -2020-05-13 16:15:00,121.08,75.155,53.376999999999995,29.775 -2020-05-13 16:30:00,127.19,74.976,53.376999999999995,29.775 -2020-05-13 16:45:00,124.65,71.605,53.376999999999995,29.775 -2020-05-13 17:00:00,116.0,72.441,56.965,29.775 -2020-05-13 17:15:00,118.64,73.824,56.965,29.775 -2020-05-13 17:30:00,119.77,74.36,56.965,29.775 -2020-05-13 17:45:00,121.03,74.661,56.965,29.775 -2020-05-13 18:00:00,116.2,74.469,58.231,29.775 -2020-05-13 18:15:00,110.61,75.866,58.231,29.775 -2020-05-13 18:30:00,111.68,74.452,58.231,29.775 -2020-05-13 18:45:00,115.74,79.872,58.231,29.775 -2020-05-13 19:00:00,115.72,77.115,58.865,29.775 -2020-05-13 19:15:00,108.85,76.52199999999999,58.865,29.775 -2020-05-13 19:30:00,105.3,76.563,58.865,29.775 -2020-05-13 19:45:00,108.65,77.355,58.865,29.775 -2020-05-13 20:00:00,108.52,75.672,65.605,29.775 -2020-05-13 20:15:00,107.64,73.78399999999999,65.605,29.775 -2020-05-13 20:30:00,103.12,72.518,65.605,29.775 -2020-05-13 20:45:00,101.58,72.55199999999999,65.605,29.775 -2020-05-13 21:00:00,99.72,70.63,58.083999999999996,29.775 -2020-05-13 21:15:00,98.92,71.432,58.083999999999996,29.775 -2020-05-13 21:30:00,96.57,71.565,58.083999999999996,29.775 -2020-05-13 21:45:00,89.44,72.09899999999999,58.083999999999996,29.775 -2020-05-13 22:00:00,85.38,70.156,53.243,29.775 -2020-05-13 22:15:00,89.96,69.749,53.243,29.775 -2020-05-13 22:30:00,86.78,60.653,53.243,29.775 -2020-05-13 22:45:00,85.75,56.601000000000006,53.243,29.775 -2020-05-13 23:00:00,75.39,49.934,44.283,29.775 -2020-05-13 23:15:00,74.31,48.676,44.283,29.775 -2020-05-13 23:30:00,74.53,47.994,44.283,29.775 -2020-05-13 23:45:00,72.86,48.048,44.283,29.775 -2020-05-14 00:00:00,69.32,46.623000000000005,40.219,29.775 -2020-05-14 00:15:00,70.84,47.11,40.219,29.775 -2020-05-14 00:30:00,69.79,45.847,40.219,29.775 -2020-05-14 00:45:00,70.68,44.582,40.219,29.775 -2020-05-14 01:00:00,70.16,44.619,37.959,29.775 -2020-05-14 01:15:00,69.63,43.68899999999999,37.959,29.775 -2020-05-14 01:30:00,70.15,42.043,37.959,29.775 -2020-05-14 01:45:00,70.69,41.355,37.959,29.775 -2020-05-14 02:00:00,69.83,41.687,36.113,29.775 -2020-05-14 02:15:00,70.46,40.495,36.113,29.775 -2020-05-14 02:30:00,71.03,42.979,36.113,29.775 -2020-05-14 02:45:00,70.72,43.668,36.113,29.775 -2020-05-14 03:00:00,71.24,46.7,35.546,29.775 -2020-05-14 03:15:00,72.5,46.523999999999994,35.546,29.775 -2020-05-14 03:30:00,73.71,45.853,35.546,29.775 -2020-05-14 03:45:00,75.65,45.958999999999996,35.546,29.775 -2020-05-14 04:00:00,79.12,56.613,37.169000000000004,29.775 -2020-05-14 04:15:00,79.46,67.456,37.169000000000004,29.775 -2020-05-14 04:30:00,82.89,66.40100000000001,37.169000000000004,29.775 -2020-05-14 04:45:00,85.82,67.613,37.169000000000004,29.775 -2020-05-14 05:00:00,95.94,94.743,41.233000000000004,29.775 -2020-05-14 05:15:00,98.55,119.294,41.233000000000004,29.775 -2020-05-14 05:30:00,99.72,108.61399999999999,41.233000000000004,29.775 -2020-05-14 05:45:00,102.92,100.969,41.233000000000004,29.775 -2020-05-14 06:00:00,110.05,102.68299999999999,52.57,29.775 -2020-05-14 06:15:00,112.59,106.021,52.57,29.775 -2020-05-14 06:30:00,116.11,102.962,52.57,29.775 -2020-05-14 06:45:00,118.57,102.956,52.57,29.775 -2020-05-14 07:00:00,121.86,103.98200000000001,64.53,29.775 -2020-05-14 07:15:00,122.71,103.792,64.53,29.775 -2020-05-14 07:30:00,123.27,101.15100000000001,64.53,29.775 -2020-05-14 07:45:00,125.08,98.7,64.53,29.775 -2020-05-14 08:00:00,124.66,94.306,55.911,29.775 -2020-05-14 08:15:00,124.04,94.51,55.911,29.775 -2020-05-14 08:30:00,126.3,91.473,55.911,29.775 -2020-05-14 08:45:00,127.75,91.618,55.911,29.775 -2020-05-14 09:00:00,125.81,85.04799999999999,50.949,29.775 -2020-05-14 09:15:00,127.78,83.234,50.949,29.775 -2020-05-14 09:30:00,127.51,85.727,50.949,29.775 -2020-05-14 09:45:00,129.58,86.179,50.949,29.775 -2020-05-14 10:00:00,129.11,81.82600000000001,48.136,29.775 -2020-05-14 10:15:00,129.29,82.819,48.136,29.775 -2020-05-14 10:30:00,129.5,82.303,48.136,29.775 -2020-05-14 10:45:00,130.85,82.85600000000001,48.136,29.775 -2020-05-14 11:00:00,127.65,78.875,46.643,29.775 -2020-05-14 11:15:00,126.84,80.135,46.643,29.775 -2020-05-14 11:30:00,124.7,81.304,46.643,29.775 -2020-05-14 11:45:00,126.76,81.54899999999999,46.643,29.775 -2020-05-14 12:00:00,124.85,78.4,44.098,29.775 -2020-05-14 12:15:00,122.87,79.321,44.098,29.775 -2020-05-14 12:30:00,122.4,77.82600000000001,44.098,29.775 -2020-05-14 12:45:00,118.93,78.745,44.098,29.775 -2020-05-14 13:00:00,117.21,80.405,43.717,29.775 -2020-05-14 13:15:00,120.11,80.363,43.717,29.775 -2020-05-14 13:30:00,119.68,78.4,43.717,29.775 -2020-05-14 13:45:00,123.45,76.874,43.717,29.775 -2020-05-14 14:00:00,125.18,79.166,44.218999999999994,29.775 -2020-05-14 14:15:00,124.9,78.294,44.218999999999994,29.775 -2020-05-14 14:30:00,118.8,77.33800000000001,44.218999999999994,29.775 -2020-05-14 14:45:00,111.7,77.794,44.218999999999994,29.775 -2020-05-14 15:00:00,111.77,79.21,46.159,29.775 -2020-05-14 15:15:00,115.84,77.15899999999999,46.159,29.775 -2020-05-14 15:30:00,116.18,75.887,46.159,29.775 -2020-05-14 15:45:00,115.11,74.634,46.159,29.775 -2020-05-14 16:00:00,111.0,75.619,47.115,29.775 -2020-05-14 16:15:00,111.54,74.814,47.115,29.775 -2020-05-14 16:30:00,116.27,74.64699999999999,47.115,29.775 -2020-05-14 16:45:00,116.72,71.22,47.115,29.775 -2020-05-14 17:00:00,114.96,72.101,50.827,29.775 -2020-05-14 17:15:00,108.11,73.459,50.827,29.775 -2020-05-14 17:30:00,108.02,73.984,50.827,29.775 -2020-05-14 17:45:00,108.53,74.25399999999999,50.827,29.775 -2020-05-14 18:00:00,109.63,74.078,52.586000000000006,29.775 -2020-05-14 18:15:00,108.24,75.471,52.586000000000006,29.775 -2020-05-14 18:30:00,113.52,74.045,52.586000000000006,29.775 -2020-05-14 18:45:00,109.72,79.467,52.586000000000006,29.775 -2020-05-14 19:00:00,112.3,76.709,51.886,29.775 -2020-05-14 19:15:00,106.96,76.115,51.886,29.775 -2020-05-14 19:30:00,106.72,76.158,51.886,29.775 -2020-05-14 19:45:00,107.78,76.959,51.886,29.775 -2020-05-14 20:00:00,105.58,75.251,56.162,29.775 -2020-05-14 20:15:00,99.35,73.365,56.162,29.775 -2020-05-14 20:30:00,102.93,72.126,56.162,29.775 -2020-05-14 20:45:00,105.28,72.195,56.162,29.775 -2020-05-14 21:00:00,103.12,70.278,53.023,29.775 -2020-05-14 21:15:00,99.97,71.095,53.023,29.775 -2020-05-14 21:30:00,93.22,71.209,53.023,29.775 -2020-05-14 21:45:00,93.97,71.766,53.023,29.775 -2020-05-14 22:00:00,90.52,69.846,49.303999999999995,29.775 -2020-05-14 22:15:00,90.9,69.455,49.303999999999995,29.775 -2020-05-14 22:30:00,84.63,60.348,49.303999999999995,29.775 -2020-05-14 22:45:00,88.26,56.285,49.303999999999995,29.775 -2020-05-14 23:00:00,82.53,49.589,43.409,29.775 -2020-05-14 23:15:00,81.52,48.373000000000005,43.409,29.775 -2020-05-14 23:30:00,75.59,47.691,43.409,29.775 -2020-05-14 23:45:00,81.48,47.743,43.409,29.775 -2020-05-15 00:00:00,78.17,44.512,39.884,29.775 -2020-05-15 00:15:00,78.44,45.251999999999995,39.884,29.775 -2020-05-15 00:30:00,73.49,44.153,39.884,29.775 -2020-05-15 00:45:00,78.17,43.27,39.884,29.775 -2020-05-15 01:00:00,78.18,42.896,37.658,29.775 -2020-05-15 01:15:00,78.15,41.803000000000004,37.658,29.775 -2020-05-15 01:30:00,71.38,40.624,37.658,29.775 -2020-05-15 01:45:00,77.87,39.775999999999996,37.658,29.775 -2020-05-15 02:00:00,77.41,40.869,36.707,29.775 -2020-05-15 02:15:00,78.35,39.583,36.707,29.775 -2020-05-15 02:30:00,73.66,42.92,36.707,29.775 -2020-05-15 02:45:00,70.89,43.092,36.707,29.775 -2020-05-15 03:00:00,72.47,46.383,37.025,29.775 -2020-05-15 03:15:00,72.41,45.57899999999999,37.025,29.775 -2020-05-15 03:30:00,73.92,44.714,37.025,29.775 -2020-05-15 03:45:00,77.06,45.655,37.025,29.775 -2020-05-15 04:00:00,81.51,56.457,38.349000000000004,29.775 -2020-05-15 04:15:00,79.37,65.932,38.349000000000004,29.775 -2020-05-15 04:30:00,82.59,65.705,38.349000000000004,29.775 -2020-05-15 04:45:00,85.66,65.982,38.349000000000004,29.775 -2020-05-15 05:00:00,95.76,92.154,41.565,29.775 -2020-05-15 05:15:00,97.85,117.869,41.565,29.775 -2020-05-15 05:30:00,101.38,107.76899999999999,41.565,29.775 -2020-05-15 05:45:00,103.44,99.796,41.565,29.775 -2020-05-15 06:00:00,108.63,101.87700000000001,53.861000000000004,29.775 -2020-05-15 06:15:00,111.05,104.807,53.861000000000004,29.775 -2020-05-15 06:30:00,114.06,101.404,53.861000000000004,29.775 -2020-05-15 06:45:00,116.5,101.876,53.861000000000004,29.775 -2020-05-15 07:00:00,118.58,103.118,63.497,29.775 -2020-05-15 07:15:00,119.62,104.01899999999999,63.497,29.775 -2020-05-15 07:30:00,123.22,99.75399999999999,63.497,29.775 -2020-05-15 07:45:00,121.51,96.83,63.497,29.775 -2020-05-15 08:00:00,120.07,92.62799999999999,55.43899999999999,29.775 -2020-05-15 08:15:00,120.52,93.241,55.43899999999999,29.775 -2020-05-15 08:30:00,121.85,90.48700000000001,55.43899999999999,29.775 -2020-05-15 08:45:00,123.22,89.939,55.43899999999999,29.775 -2020-05-15 09:00:00,120.17,81.768,52.132,29.775 -2020-05-15 09:15:00,120.79,81.646,52.132,29.775 -2020-05-15 09:30:00,120.3,83.456,52.132,29.775 -2020-05-15 09:45:00,121.98,84.19,52.132,29.775 -2020-05-15 10:00:00,122.01,79.236,49.881,29.775 -2020-05-15 10:15:00,122.16,80.387,49.881,29.775 -2020-05-15 10:30:00,125.08,80.267,49.881,29.775 -2020-05-15 10:45:00,121.4,80.583,49.881,29.775 -2020-05-15 11:00:00,118.56,76.764,49.396,29.775 -2020-05-15 11:15:00,117.53,76.866,49.396,29.775 -2020-05-15 11:30:00,115.03,78.49,49.396,29.775 -2020-05-15 11:45:00,117.11,78.059,49.396,29.775 -2020-05-15 12:00:00,113.62,75.738,46.7,29.775 -2020-05-15 12:15:00,112.54,75.296,46.7,29.775 -2020-05-15 12:30:00,109.67,73.919,46.7,29.775 -2020-05-15 12:45:00,110.33,74.495,46.7,29.775 -2020-05-15 13:00:00,105.34,76.998,44.05,29.775 -2020-05-15 13:15:00,104.26,77.437,44.05,29.775 -2020-05-15 13:30:00,101.89,76.069,44.05,29.775 -2020-05-15 13:45:00,103.1,74.741,44.05,29.775 -2020-05-15 14:00:00,99.61,76.006,42.805,29.775 -2020-05-15 14:15:00,96.97,75.365,42.805,29.775 -2020-05-15 14:30:00,94.75,75.683,42.805,29.775 -2020-05-15 14:45:00,93.73,75.768,42.805,29.775 -2020-05-15 15:00:00,96.11,76.961,44.36600000000001,29.775 -2020-05-15 15:15:00,94.15,74.533,44.36600000000001,29.775 -2020-05-15 15:30:00,94.02,72.171,44.36600000000001,29.775 -2020-05-15 15:45:00,94.72,71.51899999999999,44.36600000000001,29.775 -2020-05-15 16:00:00,96.97,71.47399999999999,46.928999999999995,29.775 -2020-05-15 16:15:00,96.61,71.137,46.928999999999995,29.775 -2020-05-15 16:30:00,99.35,70.885,46.928999999999995,29.775 -2020-05-15 16:45:00,100.89,66.767,46.928999999999995,29.775 -2020-05-15 17:00:00,107.94,69.078,51.468,29.775 -2020-05-15 17:15:00,103.98,70.115,51.468,29.775 -2020-05-15 17:30:00,103.89,70.623,51.468,29.775 -2020-05-15 17:45:00,105.25,70.645,51.468,29.775 -2020-05-15 18:00:00,106.7,70.852,52.58,29.775 -2020-05-15 18:15:00,104.83,71.363,52.58,29.775 -2020-05-15 18:30:00,111.99,69.997,52.58,29.775 -2020-05-15 18:45:00,112.9,75.74,52.58,29.775 -2020-05-15 19:00:00,111.75,74.04899999999999,52.183,29.775 -2020-05-15 19:15:00,103.98,74.419,52.183,29.775 -2020-05-15 19:30:00,101.92,74.359,52.183,29.775 -2020-05-15 19:45:00,98.71,74.2,52.183,29.775 -2020-05-15 20:00:00,97.62,72.35,58.497,29.775 -2020-05-15 20:15:00,103.82,71.09,58.497,29.775 -2020-05-15 20:30:00,102.75,69.482,58.497,29.775 -2020-05-15 20:45:00,100.04,69.16199999999999,58.497,29.775 -2020-05-15 21:00:00,88.18,68.469,54.731,29.775 -2020-05-15 21:15:00,88.72,70.771,54.731,29.775 -2020-05-15 21:30:00,85.61,70.765,54.731,29.775 -2020-05-15 21:45:00,83.9,71.708,54.731,29.775 -2020-05-15 22:00:00,82.78,70.062,51.386,29.775 -2020-05-15 22:15:00,84.75,69.445,51.386,29.775 -2020-05-15 22:30:00,82.82,66.408,51.386,29.775 -2020-05-15 22:45:00,80.16,64.311,51.386,29.775 -2020-05-15 23:00:00,71.33,58.746,44.463,29.775 -2020-05-15 23:15:00,70.6,55.622,44.463,29.775 -2020-05-15 23:30:00,69.36,52.972,44.463,29.775 -2020-05-15 23:45:00,70.97,52.681000000000004,44.463,29.775 -2020-05-16 00:00:00,74.15,36.794000000000004,42.833999999999996,29.662 -2020-05-16 00:15:00,73.98,35.758,42.833999999999996,29.662 -2020-05-16 00:30:00,71.46,34.895,42.833999999999996,29.662 -2020-05-16 00:45:00,69.22,33.669000000000004,42.833999999999996,29.662 -2020-05-16 01:00:00,72.75,33.125,37.859,29.662 -2020-05-16 01:15:00,75.46,32.548,37.859,29.662 -2020-05-16 01:30:00,69.76,30.769000000000002,37.859,29.662 -2020-05-16 01:45:00,65.29,30.721,37.859,29.662 -2020-05-16 02:00:00,67.91,30.855,35.327,29.662 -2020-05-16 02:15:00,70.65,28.666,35.327,29.662 -2020-05-16 02:30:00,70.38,30.735,35.327,29.662 -2020-05-16 02:45:00,64.65,31.566,35.327,29.662 -2020-05-16 03:00:00,63.24,33.628,34.908,29.662 -2020-05-16 03:15:00,64.63,30.669,34.908,29.662 -2020-05-16 03:30:00,65.46,29.659000000000002,34.908,29.662 -2020-05-16 03:45:00,65.23,31.218000000000004,34.908,29.662 -2020-05-16 04:00:00,62.15,39.24,34.84,29.662 -2020-05-16 04:15:00,61.52,47.104,34.84,29.662 -2020-05-16 04:30:00,61.86,43.983999999999995,34.84,29.662 -2020-05-16 04:45:00,62.99,44.071999999999996,34.84,29.662 -2020-05-16 05:00:00,64.2,57.34,34.222,29.662 -2020-05-16 05:15:00,64.4,64.827,34.222,29.662 -2020-05-16 05:30:00,63.92,55.413999999999994,34.222,29.662 -2020-05-16 05:45:00,66.28,53.871,34.222,29.662 -2020-05-16 06:00:00,69.14,69.734,35.515,29.662 -2020-05-16 06:15:00,69.45,82.39299999999999,35.515,29.662 -2020-05-16 06:30:00,71.81,75.32300000000001,35.515,29.662 -2020-05-16 06:45:00,72.47,70.584,35.515,29.662 -2020-05-16 07:00:00,73.5,68.16199999999999,39.687,29.662 -2020-05-16 07:15:00,74.27,67.108,39.687,29.662 -2020-05-16 07:30:00,75.61,64.484,39.687,29.662 -2020-05-16 07:45:00,78.65,63.838,39.687,29.662 -2020-05-16 08:00:00,77.98,59.902,44.9,29.662 -2020-05-16 08:15:00,77.32,62.077,44.9,29.662 -2020-05-16 08:30:00,76.53,61.327,44.9,29.662 -2020-05-16 08:45:00,77.34,63.946000000000005,44.9,29.662 -2020-05-16 09:00:00,78.57,61.705,45.724,29.662 -2020-05-16 09:15:00,78.98,62.68899999999999,45.724,29.662 -2020-05-16 09:30:00,74.87,65.62899999999999,45.724,29.662 -2020-05-16 09:45:00,76.27,66.71600000000001,45.724,29.662 -2020-05-16 10:00:00,78.95,63.416000000000004,43.123999999999995,29.662 -2020-05-16 10:15:00,81.25,64.873,43.123999999999995,29.662 -2020-05-16 10:30:00,84.8,64.884,43.123999999999995,29.662 -2020-05-16 10:45:00,82.3,65.693,43.123999999999995,29.662 -2020-05-16 11:00:00,82.79,61.979,40.255,29.662 -2020-05-16 11:15:00,83.53,62.608000000000004,40.255,29.662 -2020-05-16 11:30:00,79.48,64.295,40.255,29.662 -2020-05-16 11:45:00,74.97,64.98,40.255,29.662 -2020-05-16 12:00:00,68.37,60.761,38.582,29.662 -2020-05-16 12:15:00,68.21,60.949,38.582,29.662 -2020-05-16 12:30:00,66.19,60.332,38.582,29.662 -2020-05-16 12:45:00,65.99,61.598,38.582,29.662 -2020-05-16 13:00:00,65.29,62.047,36.043,29.662 -2020-05-16 13:15:00,66.66,62.114,36.043,29.662 -2020-05-16 13:30:00,65.2,60.93,36.043,29.662 -2020-05-16 13:45:00,65.57,58.292,36.043,29.662 -2020-05-16 14:00:00,65.77,58.663999999999994,35.216,29.662 -2020-05-16 14:15:00,65.43,56.394,35.216,29.662 -2020-05-16 14:30:00,67.17,56.395,35.216,29.662 -2020-05-16 14:45:00,69.52,56.943000000000005,35.216,29.662 -2020-05-16 15:00:00,68.76,57.736000000000004,36.759,29.662 -2020-05-16 15:15:00,70.34,55.881,36.759,29.662 -2020-05-16 15:30:00,68.44,53.98,36.759,29.662 -2020-05-16 15:45:00,69.99,51.562,36.759,29.662 -2020-05-16 16:00:00,72.09,54.672,40.086,29.662 -2020-05-16 16:15:00,70.51,54.178000000000004,40.086,29.662 -2020-05-16 16:30:00,72.95,53.538000000000004,40.086,29.662 -2020-05-16 16:45:00,72.75,49.865,40.086,29.662 -2020-05-16 17:00:00,75.24,52.239,44.876999999999995,29.662 -2020-05-16 17:15:00,76.28,51.114,44.876999999999995,29.662 -2020-05-16 17:30:00,78.78,50.931000000000004,44.876999999999995,29.662 -2020-05-16 17:45:00,80.15,50.091,44.876999999999995,29.662 -2020-05-16 18:00:00,84.39,54.299,47.056000000000004,29.662 -2020-05-16 18:15:00,81.11,56.321000000000005,47.056000000000004,29.662 -2020-05-16 18:30:00,81.76,55.763000000000005,47.056000000000004,29.662 -2020-05-16 18:45:00,84.97,57.4,47.056000000000004,29.662 -2020-05-16 19:00:00,81.21,57.782,45.57,29.662 -2020-05-16 19:15:00,78.11,56.823,45.57,29.662 -2020-05-16 19:30:00,77.61,57.25899999999999,45.57,29.662 -2020-05-16 19:45:00,76.99,58.424,45.57,29.662 -2020-05-16 20:00:00,76.78,57.797,41.685,29.662 -2020-05-16 20:15:00,77.96,57.528,41.685,29.662 -2020-05-16 20:30:00,77.7,55.493,41.685,29.662 -2020-05-16 20:45:00,79.72,56.248000000000005,41.685,29.662 -2020-05-16 21:00:00,74.4,54.181999999999995,39.576,29.662 -2020-05-16 21:15:00,73.65,57.01,39.576,29.662 -2020-05-16 21:30:00,70.78,58.263000000000005,39.576,29.662 -2020-05-16 21:45:00,71.05,58.636,39.576,29.662 -2020-05-16 22:00:00,66.23,56.073,39.068000000000005,29.662 -2020-05-16 22:15:00,66.59,57.24100000000001,39.068000000000005,29.662 -2020-05-16 22:30:00,64.33,56.806000000000004,39.068000000000005,29.662 -2020-05-16 22:45:00,63.23,55.815,39.068000000000005,29.662 -2020-05-16 23:00:00,59.53,51.784,32.06,29.662 -2020-05-16 23:15:00,59.33,47.72,32.06,29.662 -2020-05-16 23:30:00,58.61,46.766000000000005,32.06,29.662 -2020-05-16 23:45:00,58.55,45.958,32.06,29.662 -2020-05-17 00:00:00,55.99,37.921,28.825,29.662 -2020-05-17 00:15:00,56.4,35.736999999999995,28.825,29.662 -2020-05-17 00:30:00,55.85,34.657,28.825,29.662 -2020-05-17 00:45:00,55.56,33.474000000000004,28.825,29.662 -2020-05-17 01:00:00,53.93,33.169000000000004,25.995,29.662 -2020-05-17 01:15:00,54.71,32.666,25.995,29.662 -2020-05-17 01:30:00,54.49,30.851,25.995,29.662 -2020-05-17 01:45:00,53.85,30.375,25.995,29.662 -2020-05-17 02:00:00,53.53,30.426,24.394000000000002,29.662 -2020-05-17 02:15:00,54.42,28.711,24.394000000000002,29.662 -2020-05-17 02:30:00,54.27,31.146,24.394000000000002,29.662 -2020-05-17 02:45:00,53.9,31.805999999999997,24.394000000000002,29.662 -2020-05-17 03:00:00,54.33,34.554,22.916999999999998,29.662 -2020-05-17 03:15:00,54.73,31.721,22.916999999999998,29.662 -2020-05-17 03:30:00,56.27,30.311,22.916999999999998,29.662 -2020-05-17 03:45:00,54.77,31.133000000000003,22.916999999999998,29.662 -2020-05-17 04:00:00,51.22,39.014,23.576999999999998,29.662 -2020-05-17 04:15:00,51.74,46.203,23.576999999999998,29.662 -2020-05-17 04:30:00,50.38,44.345,23.576999999999998,29.662 -2020-05-17 04:45:00,50.63,44.044,23.576999999999998,29.662 -2020-05-17 05:00:00,49.16,56.647,22.730999999999998,29.662 -2020-05-17 05:15:00,49.68,62.77,22.730999999999998,29.662 -2020-05-17 05:30:00,49.0,53.008,22.730999999999998,29.662 -2020-05-17 05:45:00,49.52,51.318999999999996,22.730999999999998,29.662 -2020-05-17 06:00:00,50.22,64.92699999999999,22.34,29.662 -2020-05-17 06:15:00,50.56,78.017,22.34,29.662 -2020-05-17 06:30:00,50.65,70.086,22.34,29.662 -2020-05-17 06:45:00,51.26,64.217,22.34,29.662 -2020-05-17 07:00:00,51.72,62.525,24.691999999999997,29.662 -2020-05-17 07:15:00,52.05,59.75899999999999,24.691999999999997,29.662 -2020-05-17 07:30:00,52.11,58.062,24.691999999999997,29.662 -2020-05-17 07:45:00,51.69,57.25899999999999,24.691999999999997,29.662 -2020-05-17 08:00:00,52.0,54.4,29.340999999999998,29.662 -2020-05-17 08:15:00,51.74,57.711000000000006,29.340999999999998,29.662 -2020-05-17 08:30:00,50.65,58.111000000000004,29.340999999999998,29.662 -2020-05-17 08:45:00,50.24,61.091,29.340999999999998,29.662 -2020-05-17 09:00:00,49.9,58.648999999999994,30.788,29.662 -2020-05-17 09:15:00,50.08,59.297,30.788,29.662 -2020-05-17 09:30:00,49.35,62.619,30.788,29.662 -2020-05-17 09:45:00,49.73,64.649,30.788,29.662 -2020-05-17 10:00:00,51.82,62.388000000000005,30.158,29.662 -2020-05-17 10:15:00,54.08,64.119,30.158,29.662 -2020-05-17 10:30:00,54.15,64.479,30.158,29.662 -2020-05-17 10:45:00,54.12,65.82300000000001,30.158,29.662 -2020-05-17 11:00:00,50.69,61.978,32.056,29.662 -2020-05-17 11:15:00,49.03,62.24,32.056,29.662 -2020-05-17 11:30:00,44.51,64.207,32.056,29.662 -2020-05-17 11:45:00,46.44,65.27199999999999,32.056,29.662 -2020-05-17 12:00:00,43.04,61.916000000000004,28.671999999999997,29.662 -2020-05-17 12:15:00,42.65,61.971000000000004,28.671999999999997,29.662 -2020-05-17 12:30:00,41.87,61.183,28.671999999999997,29.662 -2020-05-17 12:45:00,41.91,61.653999999999996,28.671999999999997,29.662 -2020-05-17 13:00:00,41.33,61.688,23.171,29.662 -2020-05-17 13:15:00,41.6,61.905,23.171,29.662 -2020-05-17 13:30:00,42.2,59.663000000000004,23.171,29.662 -2020-05-17 13:45:00,41.31,57.903999999999996,23.171,29.662 -2020-05-17 14:00:00,42.39,59.47,19.11,29.662 -2020-05-17 14:15:00,42.99,57.854,19.11,29.662 -2020-05-17 14:30:00,43.09,56.96,19.11,29.662 -2020-05-17 14:45:00,43.63,56.438,19.11,29.662 -2020-05-17 15:00:00,44.32,57.077,19.689,29.662 -2020-05-17 15:15:00,44.44,54.631,19.689,29.662 -2020-05-17 15:30:00,44.86,52.67100000000001,19.689,29.662 -2020-05-17 15:45:00,47.06,50.652,19.689,29.662 -2020-05-17 16:00:00,49.45,52.661,22.875,29.662 -2020-05-17 16:15:00,50.16,52.172,22.875,29.662 -2020-05-17 16:30:00,52.1,52.534,22.875,29.662 -2020-05-17 16:45:00,55.36,48.893,22.875,29.662 -2020-05-17 17:00:00,60.0,51.653,33.884,29.662 -2020-05-17 17:15:00,60.6,51.835,33.884,29.662 -2020-05-17 17:30:00,65.61,52.448,33.884,29.662 -2020-05-17 17:45:00,64.53,52.451,33.884,29.662 -2020-05-17 18:00:00,68.54,57.073,38.453,29.662 -2020-05-17 18:15:00,66.66,58.964,38.453,29.662 -2020-05-17 18:30:00,69.58,57.735,38.453,29.662 -2020-05-17 18:45:00,66.98,59.857,38.453,29.662 -2020-05-17 19:00:00,68.34,62.187,39.221,29.662 -2020-05-17 19:15:00,67.78,60.285,39.221,29.662 -2020-05-17 19:30:00,66.98,60.448,39.221,29.662 -2020-05-17 19:45:00,67.29,61.458999999999996,39.221,29.662 -2020-05-17 20:00:00,68.66,61.008,37.871,29.662 -2020-05-17 20:15:00,68.42,60.806000000000004,37.871,29.662 -2020-05-17 20:30:00,71.45,59.808,37.871,29.662 -2020-05-17 20:45:00,70.32,58.785,37.871,29.662 -2020-05-17 21:00:00,68.35,56.067,36.465,29.662 -2020-05-17 21:15:00,67.62,58.501999999999995,36.465,29.662 -2020-05-17 21:30:00,65.42,59.177,36.465,29.662 -2020-05-17 21:45:00,64.94,59.942,36.465,29.662 -2020-05-17 22:00:00,61.02,59.086000000000006,36.092,29.662 -2020-05-17 22:15:00,61.21,58.535,36.092,29.662 -2020-05-17 22:30:00,59.51,56.996,36.092,29.662 -2020-05-17 22:45:00,58.72,54.622,36.092,29.662 -2020-05-17 23:00:00,70.52,49.718,31.013,29.662 -2020-05-17 23:15:00,70.67,47.265,31.013,29.662 -2020-05-17 23:30:00,71.07,45.965,31.013,29.662 -2020-05-17 23:45:00,71.64,45.471000000000004,31.013,29.662 -2020-05-18 00:00:00,69.55,39.926,31.174,29.775 -2020-05-18 00:15:00,70.53,39.082,31.174,29.775 -2020-05-18 00:30:00,69.8,37.664,31.174,29.775 -2020-05-18 00:45:00,70.41,36.007,31.174,29.775 -2020-05-18 01:00:00,68.21,36.088,29.663,29.775 -2020-05-18 01:15:00,68.54,35.468,29.663,29.775 -2020-05-18 01:30:00,70.13,33.989000000000004,29.663,29.775 -2020-05-18 01:45:00,71.47,33.439,29.663,29.775 -2020-05-18 02:00:00,71.14,33.912,28.793000000000003,29.775 -2020-05-18 02:15:00,70.93,31.521,28.793000000000003,29.775 -2020-05-18 02:30:00,70.27,34.186,28.793000000000003,29.775 -2020-05-18 02:45:00,71.97,34.594,28.793000000000003,29.775 -2020-05-18 03:00:00,71.3,38.082,27.728,29.775 -2020-05-18 03:15:00,70.0,36.243,27.728,29.775 -2020-05-18 03:30:00,70.97,35.424,27.728,29.775 -2020-05-18 03:45:00,73.44,35.727,27.728,29.775 -2020-05-18 04:00:00,77.39,47.346000000000004,29.266,29.775 -2020-05-18 04:15:00,78.56,58.068999999999996,29.266,29.775 -2020-05-18 04:30:00,79.66,56.18600000000001,29.266,29.775 -2020-05-18 04:45:00,83.67,56.26,29.266,29.775 -2020-05-18 05:00:00,91.78,78.305,37.889,29.775 -2020-05-18 05:15:00,95.73,97.86399999999999,37.889,29.775 -2020-05-18 05:30:00,97.75,86.74700000000001,37.889,29.775 -2020-05-18 05:45:00,99.8,81.139,37.889,29.775 -2020-05-18 06:00:00,105.24,81.69,55.485,29.775 -2020-05-18 06:15:00,107.97,83.287,55.485,29.775 -2020-05-18 06:30:00,108.48,80.672,55.485,29.775 -2020-05-18 06:45:00,108.17,81.521,55.485,29.775 -2020-05-18 07:00:00,108.28,80.867,65.765,29.775 -2020-05-18 07:15:00,108.08,80.506,65.765,29.775 -2020-05-18 07:30:00,108.87,77.82,65.765,29.775 -2020-05-18 07:45:00,109.39,76.815,65.765,29.775 -2020-05-18 08:00:00,109.39,71.055,56.745,29.775 -2020-05-18 08:15:00,107.51,72.851,56.745,29.775 -2020-05-18 08:30:00,106.6,71.499,56.745,29.775 -2020-05-18 08:45:00,105.11,74.01100000000001,56.745,29.775 -2020-05-18 09:00:00,104.7,70.43,53.321999999999996,29.775 -2020-05-18 09:15:00,104.4,68.692,53.321999999999996,29.775 -2020-05-18 09:30:00,104.55,70.94800000000001,53.321999999999996,29.775 -2020-05-18 09:45:00,105.86,70.934,53.321999999999996,29.775 -2020-05-18 10:00:00,104.56,68.959,51.309,29.775 -2020-05-18 10:15:00,105.63,70.516,51.309,29.775 -2020-05-18 10:30:00,106.46,70.271,51.309,29.775 -2020-05-18 10:45:00,105.73,70.328,51.309,29.775 -2020-05-18 11:00:00,103.62,66.137,50.415,29.775 -2020-05-18 11:15:00,102.43,67.071,50.415,29.775 -2020-05-18 11:30:00,102.2,69.97800000000001,50.415,29.775 -2020-05-18 11:45:00,100.97,71.42699999999999,50.415,29.775 -2020-05-18 12:00:00,99.99,67.039,48.273,29.775 -2020-05-18 12:15:00,99.53,67.203,48.273,29.775 -2020-05-18 12:30:00,97.76,65.457,48.273,29.775 -2020-05-18 12:45:00,98.7,66.28,48.273,29.775 -2020-05-18 13:00:00,96.87,67.222,48.452,29.775 -2020-05-18 13:15:00,99.09,66.321,48.452,29.775 -2020-05-18 13:30:00,97.98,64.128,48.452,29.775 -2020-05-18 13:45:00,98.34,63.196999999999996,48.452,29.775 -2020-05-18 14:00:00,96.84,63.848,48.35,29.775 -2020-05-18 14:15:00,97.88,62.621,48.35,29.775 -2020-05-18 14:30:00,97.61,61.413999999999994,48.35,29.775 -2020-05-18 14:45:00,97.53,62.787,48.35,29.775 -2020-05-18 15:00:00,95.98,63.553000000000004,48.838,29.775 -2020-05-18 15:15:00,94.89,60.226000000000006,48.838,29.775 -2020-05-18 15:30:00,96.64,58.75899999999999,48.838,29.775 -2020-05-18 15:45:00,97.73,56.178000000000004,48.838,29.775 -2020-05-18 16:00:00,99.47,59.169,50.873000000000005,29.775 -2020-05-18 16:15:00,100.16,58.563,50.873000000000005,29.775 -2020-05-18 16:30:00,103.58,58.114,50.873000000000005,29.775 -2020-05-18 16:45:00,103.44,54.181999999999995,50.873000000000005,29.775 -2020-05-18 17:00:00,105.33,55.906000000000006,56.637,29.775 -2020-05-18 17:15:00,106.15,56.206,56.637,29.775 -2020-05-18 17:30:00,106.58,56.32899999999999,56.637,29.775 -2020-05-18 17:45:00,107.9,55.603,56.637,29.775 -2020-05-18 18:00:00,107.24,59.253,56.35,29.775 -2020-05-18 18:15:00,106.38,58.951,56.35,29.775 -2020-05-18 18:30:00,111.23,57.136,56.35,29.775 -2020-05-18 18:45:00,112.74,62.372,56.35,29.775 -2020-05-18 19:00:00,107.03,64.04899999999999,56.023,29.775 -2020-05-18 19:15:00,99.04,63.17100000000001,56.023,29.775 -2020-05-18 19:30:00,100.51,63.076,56.023,29.775 -2020-05-18 19:45:00,98.68,63.343999999999994,56.023,29.775 -2020-05-18 20:00:00,97.75,61.221000000000004,62.372,29.775 -2020-05-18 20:15:00,100.39,61.84,62.372,29.775 -2020-05-18 20:30:00,101.96,60.983000000000004,62.372,29.775 -2020-05-18 20:45:00,101.2,60.535,62.372,29.775 -2020-05-18 21:00:00,94.45,57.338,57.516999999999996,29.775 -2020-05-18 21:15:00,93.17,59.972,57.516999999999996,29.775 -2020-05-18 21:30:00,92.14,60.852,57.516999999999996,29.775 -2020-05-18 21:45:00,93.04,61.336000000000006,57.516999999999996,29.775 -2020-05-18 22:00:00,87.62,58.005,51.823,29.775 -2020-05-18 22:15:00,84.34,59.095,51.823,29.775 -2020-05-18 22:30:00,84.14,51.568999999999996,51.823,29.775 -2020-05-18 22:45:00,84.14,48.211000000000006,51.823,29.775 -2020-05-18 23:00:00,65.96,43.48,43.832,29.775 -2020-05-18 23:15:00,68.87,40.029,43.832,29.775 -2020-05-18 23:30:00,68.41,39.236,43.832,29.775 -2020-05-18 23:45:00,64.7,38.741,43.832,29.775 -2020-05-19 00:00:00,62.8,37.38,42.371,29.775 -2020-05-19 00:15:00,66.9,37.645,42.371,29.775 -2020-05-19 00:30:00,66.25,36.715,42.371,29.775 -2020-05-19 00:45:00,63.82,35.619,42.371,29.775 -2020-05-19 01:00:00,61.03,35.165,39.597,29.775 -2020-05-19 01:15:00,66.87,34.537,39.597,29.775 -2020-05-19 01:30:00,67.1,32.953,39.597,29.775 -2020-05-19 01:45:00,66.73,31.971999999999998,39.597,29.775 -2020-05-19 02:00:00,63.92,31.985,38.298,29.775 -2020-05-19 02:15:00,67.6,30.656,38.298,29.775 -2020-05-19 02:30:00,66.14,32.842,38.298,29.775 -2020-05-19 02:45:00,65.87,33.571999999999996,38.298,29.775 -2020-05-19 03:00:00,63.27,36.298,37.884,29.775 -2020-05-19 03:15:00,69.81,35.164,37.884,29.775 -2020-05-19 03:30:00,72.41,34.414,37.884,29.775 -2020-05-19 03:45:00,66.55,33.728,37.884,29.775 -2020-05-19 04:00:00,67.08,44.04600000000001,39.442,29.775 -2020-05-19 04:15:00,68.59,54.656000000000006,39.442,29.775 -2020-05-19 04:30:00,73.0,52.583,39.442,29.775 -2020-05-19 04:45:00,76.72,53.357,39.442,29.775 -2020-05-19 05:00:00,85.35,77.723,43.608000000000004,29.775 -2020-05-19 05:15:00,88.34,97.675,43.608000000000004,29.775 -2020-05-19 05:30:00,91.29,86.52,43.608000000000004,29.775 -2020-05-19 05:45:00,94.03,80.278,43.608000000000004,29.775 -2020-05-19 06:00:00,99.55,81.65100000000001,54.99100000000001,29.775 -2020-05-19 06:15:00,99.82,83.715,54.99100000000001,29.775 -2020-05-19 06:30:00,100.65,80.687,54.99100000000001,29.775 -2020-05-19 06:45:00,100.88,80.633,54.99100000000001,29.775 -2020-05-19 07:00:00,103.61,80.07600000000001,66.217,29.775 -2020-05-19 07:15:00,103.66,79.44800000000001,66.217,29.775 -2020-05-19 07:30:00,103.58,76.64399999999999,66.217,29.775 -2020-05-19 07:45:00,101.83,74.78399999999999,66.217,29.775 -2020-05-19 08:00:00,102.87,68.985,60.151,29.775 -2020-05-19 08:15:00,101.22,70.19800000000001,60.151,29.775 -2020-05-19 08:30:00,101.29,68.957,60.151,29.775 -2020-05-19 08:45:00,100.42,70.559,60.151,29.775 -2020-05-19 09:00:00,103.99,67.12100000000001,53.873000000000005,29.775 -2020-05-19 09:15:00,100.42,65.592,53.873000000000005,29.775 -2020-05-19 09:30:00,100.05,68.646,53.873000000000005,29.775 -2020-05-19 09:45:00,101.34,69.88,53.873000000000005,29.775 -2020-05-19 10:00:00,100.74,66.505,51.417,29.775 -2020-05-19 10:15:00,102.9,67.732,51.417,29.775 -2020-05-19 10:30:00,103.08,67.561,51.417,29.775 -2020-05-19 10:45:00,102.7,68.632,51.417,29.775 -2020-05-19 11:00:00,103.54,64.76,50.43600000000001,29.775 -2020-05-19 11:15:00,99.89,66.014,50.43600000000001,29.775 -2020-05-19 11:30:00,99.47,67.587,50.43600000000001,29.775 -2020-05-19 11:45:00,100.32,68.785,50.43600000000001,29.775 -2020-05-19 12:00:00,97.16,63.95399999999999,47.468,29.775 -2020-05-19 12:15:00,97.84,64.34,47.468,29.775 -2020-05-19 12:30:00,97.67,63.512,47.468,29.775 -2020-05-19 12:45:00,98.46,64.913,47.468,29.775 -2020-05-19 13:00:00,96.91,65.453,48.453,29.775 -2020-05-19 13:15:00,99.44,66.146,48.453,29.775 -2020-05-19 13:30:00,97.7,64.196,48.453,29.775 -2020-05-19 13:45:00,98.33,62.413000000000004,48.453,29.775 -2020-05-19 14:00:00,97.24,63.581,48.435,29.775 -2020-05-19 14:15:00,95.83,62.196000000000005,48.435,29.775 -2020-05-19 14:30:00,96.03,61.394,48.435,29.775 -2020-05-19 14:45:00,95.48,62.022,48.435,29.775 -2020-05-19 15:00:00,94.77,62.601000000000006,49.966,29.775 -2020-05-19 15:15:00,94.41,60.18600000000001,49.966,29.775 -2020-05-19 15:30:00,96.22,58.551,49.966,29.775 -2020-05-19 15:45:00,94.47,56.185,49.966,29.775 -2020-05-19 16:00:00,94.85,58.66,51.184,29.775 -2020-05-19 16:15:00,96.76,58.223,51.184,29.775 -2020-05-19 16:30:00,99.86,57.58,51.184,29.775 -2020-05-19 16:45:00,104.67,54.323,51.184,29.775 -2020-05-19 17:00:00,103.7,56.407,56.138999999999996,29.775 -2020-05-19 17:15:00,102.17,57.08,56.138999999999996,29.775 -2020-05-19 17:30:00,106.22,56.923,56.138999999999996,29.775 -2020-05-19 17:45:00,104.6,55.821999999999996,56.138999999999996,29.775 -2020-05-19 18:00:00,106.74,58.563,57.038000000000004,29.775 -2020-05-19 18:15:00,105.62,59.54600000000001,57.038000000000004,29.775 -2020-05-19 18:30:00,113.35,57.408,57.038000000000004,29.775 -2020-05-19 18:45:00,112.87,62.621,57.038000000000004,29.775 -2020-05-19 19:00:00,108.17,63.18899999999999,56.492,29.775 -2020-05-19 19:15:00,98.13,62.423,56.492,29.775 -2020-05-19 19:30:00,97.16,61.989,56.492,29.775 -2020-05-19 19:45:00,103.23,62.583999999999996,56.492,29.775 -2020-05-19 20:00:00,95.97,60.846000000000004,62.534,29.775 -2020-05-19 20:15:00,100.72,59.967,62.534,29.775 -2020-05-19 20:30:00,104.92,59.372,62.534,29.775 -2020-05-19 20:45:00,104.57,59.255,62.534,29.775 -2020-05-19 21:00:00,94.39,56.748999999999995,55.506,29.775 -2020-05-19 21:15:00,97.34,58.178999999999995,55.506,29.775 -2020-05-19 21:30:00,94.26,59.06,55.506,29.775 -2020-05-19 21:45:00,93.63,59.801,55.506,29.775 -2020-05-19 22:00:00,84.19,56.99,51.472,29.775 -2020-05-19 22:15:00,82.79,57.728,51.472,29.775 -2020-05-19 22:30:00,80.26,50.5,51.472,29.775 -2020-05-19 22:45:00,86.14,47.177,51.472,29.775 -2020-05-19 23:00:00,84.68,41.677,44.593,29.775 -2020-05-19 23:15:00,80.74,39.588,44.593,29.775 -2020-05-19 23:30:00,76.55,38.729,44.593,29.775 -2020-05-19 23:45:00,76.25,38.312,44.593,29.775 -2020-05-20 00:00:00,78.51,37.128,41.978,29.775 -2020-05-20 00:15:00,80.48,37.399,41.978,29.775 -2020-05-20 00:30:00,78.67,36.468,41.978,29.775 -2020-05-20 00:45:00,72.51,35.376,41.978,29.775 -2020-05-20 01:00:00,71.79,34.94,38.59,29.775 -2020-05-20 01:15:00,77.65,34.286,38.59,29.775 -2020-05-20 01:30:00,78.37,32.689,38.59,29.775 -2020-05-20 01:45:00,79.71,31.704,38.59,29.775 -2020-05-20 02:00:00,73.24,31.713,36.23,29.775 -2020-05-20 02:15:00,78.37,30.373,36.23,29.775 -2020-05-20 02:30:00,79.12,32.566,36.23,29.775 -2020-05-20 02:45:00,77.08,33.304,36.23,29.775 -2020-05-20 03:00:00,75.21,36.037,35.867,29.775 -2020-05-20 03:15:00,78.88,34.891999999999996,35.867,29.775 -2020-05-20 03:30:00,81.38,34.144,35.867,29.775 -2020-05-20 03:45:00,80.54,33.484,35.867,29.775 -2020-05-20 04:00:00,75.73,43.74100000000001,36.75,29.775 -2020-05-20 04:15:00,76.72,54.297,36.75,29.775 -2020-05-20 04:30:00,80.9,52.211000000000006,36.75,29.775 -2020-05-20 04:45:00,86.16,52.978,36.75,29.775 -2020-05-20 05:00:00,93.21,77.21,40.461,29.775 -2020-05-20 05:15:00,95.42,96.999,40.461,29.775 -2020-05-20 05:30:00,99.77,85.91,40.461,29.775 -2020-05-20 05:45:00,101.34,79.735,40.461,29.775 -2020-05-20 06:00:00,101.76,81.133,55.481,29.775 -2020-05-20 06:15:00,101.28,83.171,55.481,29.775 -2020-05-20 06:30:00,104.28,80.161,55.481,29.775 -2020-05-20 06:45:00,105.05,80.12899999999999,55.481,29.775 -2020-05-20 07:00:00,108.2,79.56,68.45,29.775 -2020-05-20 07:15:00,107.22,78.939,68.45,29.775 -2020-05-20 07:30:00,107.19,76.111,68.45,29.775 -2020-05-20 07:45:00,106.77,74.281,68.45,29.775 -2020-05-20 08:00:00,105.12,68.487,60.885,29.775 -2020-05-20 08:15:00,105.19,69.749,60.885,29.775 -2020-05-20 08:30:00,106.79,68.49600000000001,60.885,29.775 -2020-05-20 08:45:00,108.41,70.115,60.885,29.775 -2020-05-20 09:00:00,104.53,66.671,56.887,29.775 -2020-05-20 09:15:00,106.56,65.149,56.887,29.775 -2020-05-20 09:30:00,106.98,68.21300000000001,56.887,29.775 -2020-05-20 09:45:00,110.81,69.48,56.887,29.775 -2020-05-20 10:00:00,109.87,66.115,54.401,29.775 -2020-05-20 10:15:00,111.92,67.375,54.401,29.775 -2020-05-20 10:30:00,110.2,67.215,54.401,29.775 -2020-05-20 10:45:00,106.45,68.29899999999999,54.401,29.775 -2020-05-20 11:00:00,111.94,64.417,53.678000000000004,29.775 -2020-05-20 11:15:00,116.47,65.687,53.678000000000004,29.775 -2020-05-20 11:30:00,120.29,67.253,53.678000000000004,29.775 -2020-05-20 11:45:00,127.5,68.46,53.678000000000004,29.775 -2020-05-20 12:00:00,130.45,63.667,51.68,29.775 -2020-05-20 12:15:00,131.65,64.06,51.68,29.775 -2020-05-20 12:30:00,128.54,63.196000000000005,51.68,29.775 -2020-05-20 12:45:00,128.89,64.604,51.68,29.775 -2020-05-20 13:00:00,124.02,65.156,51.263000000000005,29.775 -2020-05-20 13:15:00,125.19,65.852,51.263000000000005,29.775 -2020-05-20 13:30:00,125.37,63.912,51.263000000000005,29.775 -2020-05-20 13:45:00,129.7,62.131,51.263000000000005,29.775 -2020-05-20 14:00:00,127.75,63.336000000000006,51.107,29.775 -2020-05-20 14:15:00,134.43,61.942,51.107,29.775 -2020-05-20 14:30:00,131.56,61.101000000000006,51.107,29.775 -2020-05-20 14:45:00,129.26,61.735,51.107,29.775 -2020-05-20 15:00:00,125.84,62.364,51.498000000000005,29.775 -2020-05-20 15:15:00,123.48,59.934,51.498000000000005,29.775 -2020-05-20 15:30:00,119.44,58.276,51.498000000000005,29.775 -2020-05-20 15:45:00,121.38,55.893,51.498000000000005,29.775 -2020-05-20 16:00:00,119.62,58.416000000000004,53.376999999999995,29.775 -2020-05-20 16:15:00,114.06,57.964,53.376999999999995,29.775 -2020-05-20 16:30:00,110.26,57.338,53.376999999999995,29.775 -2020-05-20 16:45:00,113.71,54.028,53.376999999999995,29.775 -2020-05-20 17:00:00,121.74,56.156000000000006,56.965,29.775 -2020-05-20 17:15:00,122.25,56.806999999999995,56.965,29.775 -2020-05-20 17:30:00,123.94,56.637,56.965,29.775 -2020-05-20 17:45:00,119.22,55.5,56.965,29.775 -2020-05-20 18:00:00,119.16,58.25899999999999,58.231,29.775 -2020-05-20 18:15:00,116.54,59.221000000000004,58.231,29.775 -2020-05-20 18:30:00,114.14,57.071000000000005,58.231,29.775 -2020-05-20 18:45:00,115.86,62.284,58.231,29.775 -2020-05-20 19:00:00,116.25,62.854,58.865,29.775 -2020-05-20 19:15:00,109.47,62.081,58.865,29.775 -2020-05-20 19:30:00,102.19,61.643,58.865,29.775 -2020-05-20 19:45:00,100.8,62.236000000000004,58.865,29.775 -2020-05-20 20:00:00,104.57,60.473,65.605,29.775 -2020-05-20 20:15:00,101.8,59.593999999999994,65.605,29.775 -2020-05-20 20:30:00,104.21,59.021,65.605,29.775 -2020-05-20 20:45:00,107.81,58.949,65.605,29.775 -2020-05-20 21:00:00,100.78,56.446999999999996,58.083999999999996,29.775 -2020-05-20 21:15:00,99.92,57.891999999999996,58.083999999999996,29.775 -2020-05-20 21:30:00,96.61,58.748000000000005,58.083999999999996,29.775 -2020-05-20 21:45:00,94.94,59.515,58.083999999999996,29.775 -2020-05-20 22:00:00,89.31,56.731,53.243,29.775 -2020-05-20 22:15:00,87.09,57.488,53.243,29.775 -2020-05-20 22:30:00,87.82,50.25899999999999,53.243,29.775 -2020-05-20 22:45:00,88.26,46.924,53.243,29.775 -2020-05-20 23:00:00,63.05,41.388999999999996,44.283,29.775 -2020-05-20 23:15:00,62.09,39.345,44.283,29.775 -2020-05-20 23:30:00,60.51,38.489000000000004,44.283,29.775 -2020-05-20 23:45:00,60.15,38.064,44.283,29.775 -2020-05-21 00:00:00,58.01,36.91,18.527,29.662 -2020-05-21 00:15:00,57.28,34.745,18.527,29.662 -2020-05-21 00:30:00,56.86,33.663000000000004,18.527,29.662 -2020-05-21 00:45:00,56.38,32.498000000000005,18.527,29.662 -2020-05-21 01:00:00,54.83,32.263000000000005,16.348,29.662 -2020-05-21 01:15:00,54.78,31.66,16.348,29.662 -2020-05-21 01:30:00,54.4,29.784000000000002,16.348,29.662 -2020-05-21 01:45:00,54.27,29.289,16.348,29.662 -2020-05-21 02:00:00,53.37,29.329,12.581,29.662 -2020-05-21 02:15:00,53.99,27.565,12.581,29.662 -2020-05-21 02:30:00,52.98,30.034000000000002,12.581,29.662 -2020-05-21 02:45:00,55.47,30.726999999999997,12.581,29.662 -2020-05-21 03:00:00,53.56,33.503,10.712,29.662 -2020-05-21 03:15:00,54.49,30.621,10.712,29.662 -2020-05-21 03:30:00,57.11,29.22,10.712,29.662 -2020-05-21 03:45:00,55.48,30.15,10.712,29.662 -2020-05-21 04:00:00,58.06,37.786,9.084,29.662 -2020-05-21 04:15:00,53.75,44.758,9.084,29.662 -2020-05-21 04:30:00,52.67,42.848,9.084,29.662 -2020-05-21 04:45:00,55.12,42.523,9.084,29.662 -2020-05-21 05:00:00,51.91,54.581,9.388,29.662 -2020-05-21 05:15:00,52.73,60.053000000000004,9.388,29.662 -2020-05-21 05:30:00,55.46,50.553999999999995,9.388,29.662 -2020-05-21 05:45:00,54.71,49.13399999999999,9.388,29.662 -2020-05-21 06:00:00,55.97,62.847,11.109000000000002,29.662 -2020-05-21 06:15:00,58.32,75.834,11.109000000000002,29.662 -2020-05-21 06:30:00,57.09,67.965,11.109000000000002,29.662 -2020-05-21 06:45:00,58.87,62.187,11.109000000000002,29.662 -2020-05-21 07:00:00,60.26,60.449,13.77,29.662 -2020-05-21 07:15:00,63.31,57.713,13.77,29.662 -2020-05-21 07:30:00,59.48,55.919,13.77,29.662 -2020-05-21 07:45:00,59.47,55.233000000000004,13.77,29.662 -2020-05-21 08:00:00,59.73,52.391999999999996,12.868,29.662 -2020-05-21 08:15:00,58.67,55.902,12.868,29.662 -2020-05-21 08:30:00,63.81,56.254,12.868,29.662 -2020-05-21 08:45:00,58.75,59.305,12.868,29.662 -2020-05-21 09:00:00,58.3,56.836000000000006,12.804,29.662 -2020-05-21 09:15:00,58.24,57.516999999999996,12.804,29.662 -2020-05-21 09:30:00,57.56,60.875,12.804,29.662 -2020-05-21 09:45:00,61.45,63.036,12.804,29.662 -2020-05-21 10:00:00,57.46,60.818000000000005,11.029000000000002,29.662 -2020-05-21 10:15:00,57.46,62.676,11.029000000000002,29.662 -2020-05-21 10:30:00,60.42,63.08,11.029000000000002,29.662 -2020-05-21 10:45:00,58.0,64.479,11.029000000000002,29.662 -2020-05-21 11:00:00,58.01,60.6,11.681,29.662 -2020-05-21 11:15:00,54.19,60.924,11.681,29.662 -2020-05-21 11:30:00,54.54,62.856,11.681,29.662 -2020-05-21 11:45:00,55.05,63.966,11.681,29.662 -2020-05-21 12:00:00,55.16,60.76,8.915,29.662 -2020-05-21 12:15:00,53.37,60.842,8.915,29.662 -2020-05-21 12:30:00,51.32,59.909,8.915,29.662 -2020-05-21 12:45:00,50.61,60.408,8.915,29.662 -2020-05-21 13:00:00,50.98,60.489,5.4639999999999995,29.662 -2020-05-21 13:15:00,52.85,60.721000000000004,5.4639999999999995,29.662 -2020-05-21 13:30:00,48.58,58.523,5.4639999999999995,29.662 -2020-05-21 13:45:00,49.76,56.766000000000005,5.4639999999999995,29.662 -2020-05-21 14:00:00,51.52,58.485,3.2939999999999996,29.662 -2020-05-21 14:15:00,57.07,56.833999999999996,3.2939999999999996,29.662 -2020-05-21 14:30:00,64.25,55.785,3.2939999999999996,29.662 -2020-05-21 14:45:00,65.85,55.278999999999996,3.2939999999999996,29.662 -2020-05-21 15:00:00,66.73,56.126999999999995,4.689,29.662 -2020-05-21 15:15:00,60.8,53.618,4.689,29.662 -2020-05-21 15:30:00,61.9,51.562,4.689,29.662 -2020-05-21 15:45:00,64.07,49.477,4.689,29.662 -2020-05-21 16:00:00,65.13,51.675,7.732,29.662 -2020-05-21 16:15:00,66.81,51.131,7.732,29.662 -2020-05-21 16:30:00,64.74,51.558,7.732,29.662 -2020-05-21 16:45:00,64.19,47.702,7.732,29.662 -2020-05-21 17:00:00,65.06,50.641999999999996,17.558,29.662 -2020-05-21 17:15:00,66.43,50.731,17.558,29.662 -2020-05-21 17:30:00,69.39,51.294,17.558,29.662 -2020-05-21 17:45:00,71.08,51.156000000000006,17.558,29.662 -2020-05-21 18:00:00,71.37,55.849,24.763,29.662 -2020-05-21 18:15:00,70.43,57.653999999999996,24.763,29.662 -2020-05-21 18:30:00,73.17,56.379,24.763,29.662 -2020-05-21 18:45:00,70.48,58.501000000000005,24.763,29.662 -2020-05-21 19:00:00,69.9,60.832,29.633000000000003,29.662 -2020-05-21 19:15:00,68.76,58.906000000000006,29.633000000000003,29.662 -2020-05-21 19:30:00,69.06,59.05,29.633000000000003,29.662 -2020-05-21 19:45:00,71.41,60.059,29.633000000000003,29.662 -2020-05-21 20:00:00,69.15,59.508,38.826,29.662 -2020-05-21 20:15:00,71.39,59.303999999999995,38.826,29.662 -2020-05-21 20:30:00,74.95,58.396,38.826,29.662 -2020-05-21 20:45:00,71.98,57.552,38.826,29.662 -2020-05-21 21:00:00,71.11,54.851000000000006,37.751,29.662 -2020-05-21 21:15:00,67.66,57.343999999999994,37.751,29.662 -2020-05-21 21:30:00,65.62,57.926,37.751,29.662 -2020-05-21 21:45:00,65.41,58.792,37.751,29.662 -2020-05-21 22:00:00,62.1,58.045,39.799,29.662 -2020-05-21 22:15:00,64.81,57.568999999999996,39.799,29.662 -2020-05-21 22:30:00,60.51,56.025,39.799,29.662 -2020-05-21 22:45:00,60.78,53.603,39.799,29.662 -2020-05-21 23:00:00,83.53,48.56,33.686,29.662 -2020-05-21 23:15:00,79.71,46.288999999999994,33.686,29.662 -2020-05-21 23:30:00,76.64,45.003,33.686,29.662 -2020-05-21 23:45:00,81.28,44.475,33.686,29.662 -2020-05-22 00:00:00,78.78,34.703,39.884,29.662 -2020-05-22 00:15:00,78.38,35.232,39.884,29.662 -2020-05-22 00:30:00,75.8,34.53,39.884,29.662 -2020-05-22 00:45:00,78.88,33.875,39.884,29.662 -2020-05-22 01:00:00,78.43,33.044000000000004,37.658,29.662 -2020-05-22 01:15:00,76.96,31.963,37.658,29.662 -2020-05-22 01:30:00,72.09,30.969,37.658,29.662 -2020-05-22 01:45:00,77.86,29.756999999999998,37.658,29.662 -2020-05-22 02:00:00,78.9,30.668000000000003,36.707,29.662 -2020-05-22 02:15:00,79.75,29.229,36.707,29.662 -2020-05-22 02:30:00,75.51,32.335,36.707,29.662 -2020-05-22 02:45:00,79.05,32.449,36.707,29.662 -2020-05-22 03:00:00,80.35,35.719,37.025,29.662 -2020-05-22 03:15:00,80.81,33.605,37.025,29.662 -2020-05-22 03:30:00,76.91,32.632,37.025,29.662 -2020-05-22 03:45:00,75.74,32.927,37.025,29.662 -2020-05-22 04:00:00,76.89,43.244,38.349000000000004,29.662 -2020-05-22 04:15:00,77.58,52.16,38.349000000000004,29.662 -2020-05-22 04:30:00,80.22,51.0,38.349000000000004,29.662 -2020-05-22 04:45:00,84.77,50.898,38.349000000000004,29.662 -2020-05-22 05:00:00,93.82,74.133,41.565,29.662 -2020-05-22 05:15:00,95.9,94.82,41.565,29.662 -2020-05-22 05:30:00,97.7,84.27,41.565,29.662 -2020-05-22 05:45:00,97.74,77.786,41.565,29.662 -2020-05-22 06:00:00,104.46,79.546,53.861000000000004,29.662 -2020-05-22 06:15:00,105.11,81.39,53.861000000000004,29.662 -2020-05-22 06:30:00,106.02,78.183,53.861000000000004,29.662 -2020-05-22 06:45:00,108.42,78.407,53.861000000000004,29.662 -2020-05-22 07:00:00,109.92,78.263,63.497,29.662 -2020-05-22 07:15:00,110.85,78.738,63.497,29.662 -2020-05-22 07:30:00,113.49,73.98100000000001,63.497,29.662 -2020-05-22 07:45:00,111.86,71.819,63.497,29.662 -2020-05-22 08:00:00,107.87,66.528,55.43899999999999,29.662 -2020-05-22 08:15:00,106.09,68.429,55.43899999999999,29.662 -2020-05-22 08:30:00,104.97,67.28,55.43899999999999,29.662 -2020-05-22 08:45:00,109.12,68.445,55.43899999999999,29.662 -2020-05-22 09:00:00,104.41,62.928000000000004,52.132,29.662 -2020-05-22 09:15:00,102.77,63.343,52.132,29.662 -2020-05-22 09:30:00,103.2,65.684,52.132,29.662 -2020-05-22 09:45:00,105.1,67.34899999999999,52.132,29.662 -2020-05-22 10:00:00,108.85,63.57,49.881,29.662 -2020-05-22 10:15:00,114.42,64.851,49.881,29.662 -2020-05-22 10:30:00,116.06,65.205,49.881,29.662 -2020-05-22 10:45:00,112.9,66.123,49.881,29.662 -2020-05-22 11:00:00,116.37,62.451,49.396,29.662 -2020-05-22 11:15:00,116.42,62.535,49.396,29.662 -2020-05-22 11:30:00,115.65,64.168,49.396,29.662 -2020-05-22 11:45:00,114.92,64.525,49.396,29.662 -2020-05-22 12:00:00,111.62,60.479,46.7,29.662 -2020-05-22 12:15:00,106.84,59.778,46.7,29.662 -2020-05-22 12:30:00,102.56,58.99100000000001,46.7,29.662 -2020-05-22 12:45:00,98.4,59.821000000000005,46.7,29.662 -2020-05-22 13:00:00,94.96,61.16,44.05,29.662 -2020-05-22 13:15:00,96.61,62.23,44.05,29.662 -2020-05-22 13:30:00,93.79,61.045,44.05,29.662 -2020-05-22 13:45:00,92.84,59.531000000000006,44.05,29.662 -2020-05-22 14:00:00,91.24,59.794,42.805,29.662 -2020-05-22 14:15:00,93.29,58.739,42.805,29.662 -2020-05-22 14:30:00,91.88,59.32899999999999,42.805,29.662 -2020-05-22 14:45:00,93.09,59.412,42.805,29.662 -2020-05-22 15:00:00,93.45,59.95399999999999,44.36600000000001,29.662 -2020-05-22 15:15:00,95.82,57.167,44.36600000000001,29.662 -2020-05-22 15:30:00,97.12,54.571000000000005,44.36600000000001,29.662 -2020-05-22 15:45:00,97.8,52.891000000000005,44.36600000000001,29.662 -2020-05-22 16:00:00,96.53,54.466,46.928999999999995,29.662 -2020-05-22 16:15:00,103.21,54.513999999999996,46.928999999999995,29.662 -2020-05-22 16:30:00,104.3,53.775,46.928999999999995,29.662 -2020-05-22 16:45:00,104.51,49.604,46.928999999999995,29.662 -2020-05-22 17:00:00,103.54,53.474,51.468,29.662 -2020-05-22 17:15:00,101.79,53.823,51.468,29.662 -2020-05-22 17:30:00,102.58,53.708,51.468,29.662 -2020-05-22 17:45:00,104.14,52.295,51.468,29.662 -2020-05-22 18:00:00,106.35,55.326,52.58,29.662 -2020-05-22 18:15:00,103.1,55.269,52.58,29.662 -2020-05-22 18:30:00,102.56,53.086000000000006,52.58,29.662 -2020-05-22 18:45:00,105.35,58.692,52.58,29.662 -2020-05-22 19:00:00,107.38,60.31399999999999,52.183,29.662 -2020-05-22 19:15:00,103.6,60.376000000000005,52.183,29.662 -2020-05-22 19:30:00,98.21,59.898999999999994,52.183,29.662 -2020-05-22 19:45:00,98.34,59.427,52.183,29.662 -2020-05-22 20:00:00,94.72,57.468999999999994,58.497,29.662 -2020-05-22 20:15:00,95.77,57.34,58.497,29.662 -2020-05-22 20:30:00,98.16,56.342,58.497,29.662 -2020-05-22 20:45:00,96.69,55.707,58.497,29.662 -2020-05-22 21:00:00,97.63,54.568000000000005,54.731,29.662 -2020-05-22 21:15:00,97.68,57.72,54.731,29.662 -2020-05-22 21:30:00,90.83,58.396,54.731,29.662 -2020-05-22 21:45:00,86.47,59.52,54.731,29.662 -2020-05-22 22:00:00,80.55,56.864,51.386,29.662 -2020-05-22 22:15:00,84.38,57.391000000000005,51.386,29.662 -2020-05-22 22:30:00,86.27,56.013000000000005,51.386,29.662 -2020-05-22 22:45:00,84.62,54.208999999999996,51.386,29.662 -2020-05-22 23:00:00,74.96,50.117,44.463,29.662 -2020-05-22 23:15:00,74.35,46.266000000000005,44.463,29.662 -2020-05-22 23:30:00,71.21,43.38,44.463,29.662 -2020-05-22 23:45:00,76.73,42.683,44.463,29.662 -2020-05-23 00:00:00,75.7,35.035,42.833999999999996,29.662 -2020-05-23 00:15:00,76.89,34.034,42.833999999999996,29.662 -2020-05-23 00:30:00,71.1,33.168,42.833999999999996,29.662 -2020-05-23 00:45:00,75.4,31.974,42.833999999999996,29.662 -2020-05-23 01:00:00,73.52,31.552,37.859,29.662 -2020-05-23 01:15:00,74.62,30.799,37.859,29.662 -2020-05-23 01:30:00,68.8,28.918000000000003,37.859,29.662 -2020-05-23 01:45:00,73.9,28.836,37.859,29.662 -2020-05-23 02:00:00,72.13,28.951,35.327,29.662 -2020-05-23 02:15:00,73.48,26.677,35.327,29.662 -2020-05-23 02:30:00,66.65,28.805,35.327,29.662 -2020-05-23 02:45:00,65.13,29.693,35.327,29.662 -2020-05-23 03:00:00,66.59,31.802,34.908,29.662 -2020-05-23 03:15:00,64.97,28.761,34.908,29.662 -2020-05-23 03:30:00,65.86,27.765,34.908,29.662 -2020-05-23 03:45:00,65.45,29.511999999999997,34.908,29.662 -2020-05-23 04:00:00,63.35,37.108000000000004,34.84,29.662 -2020-05-23 04:15:00,63.76,44.592,34.84,29.662 -2020-05-23 04:30:00,62.96,41.382,34.84,29.662 -2020-05-23 04:45:00,64.33,41.43,34.84,29.662 -2020-05-23 05:00:00,67.52,53.748000000000005,34.222,29.662 -2020-05-23 05:15:00,67.85,60.097,34.222,29.662 -2020-05-23 05:30:00,68.35,51.146,34.222,29.662 -2020-05-23 05:45:00,68.82,50.068999999999996,34.222,29.662 -2020-05-23 06:00:00,72.79,66.115,35.515,29.662 -2020-05-23 06:15:00,71.8,78.594,35.515,29.662 -2020-05-23 06:30:00,73.05,71.634,35.515,29.662 -2020-05-23 06:45:00,75.09,67.053,35.515,29.662 -2020-05-23 07:00:00,76.2,64.55199999999999,39.687,29.662 -2020-05-23 07:15:00,76.2,63.553000000000004,39.687,29.662 -2020-05-23 07:30:00,77.52,60.75899999999999,39.687,29.662 -2020-05-23 07:45:00,79.58,60.32,39.687,29.662 -2020-05-23 08:00:00,78.67,56.416000000000004,44.9,29.662 -2020-05-23 08:15:00,78.07,58.93600000000001,44.9,29.662 -2020-05-23 08:30:00,78.21,58.104,44.9,29.662 -2020-05-23 08:45:00,78.09,60.843,44.9,29.662 -2020-05-23 09:00:00,76.63,58.558,45.724,29.662 -2020-05-23 09:15:00,76.47,59.595,45.724,29.662 -2020-05-23 09:30:00,75.4,62.603,45.724,29.662 -2020-05-23 09:45:00,75.15,63.916000000000004,45.724,29.662 -2020-05-23 10:00:00,75.82,60.69,43.123999999999995,29.662 -2020-05-23 10:15:00,76.15,62.368,43.123999999999995,29.662 -2020-05-23 10:30:00,76.53,62.45399999999999,43.123999999999995,29.662 -2020-05-23 10:45:00,75.37,63.36,43.123999999999995,29.662 -2020-05-23 11:00:00,75.31,59.586999999999996,40.255,29.662 -2020-05-23 11:15:00,77.04,60.324,40.255,29.662 -2020-05-23 11:30:00,77.44,61.949,40.255,29.662 -2020-05-23 11:45:00,74.8,62.708999999999996,40.255,29.662 -2020-05-23 12:00:00,69.86,58.754,38.582,29.662 -2020-05-23 12:15:00,69.32,58.985,38.582,29.662 -2020-05-23 12:30:00,71.91,58.121,38.582,29.662 -2020-05-23 12:45:00,70.49,59.434,38.582,29.662 -2020-05-23 13:00:00,69.63,59.963,36.043,29.662 -2020-05-23 13:15:00,73.6,60.055,36.043,29.662 -2020-05-23 13:30:00,72.67,58.946999999999996,36.043,29.662 -2020-05-23 13:45:00,69.34,56.317,36.043,29.662 -2020-05-23 14:00:00,67.9,56.952,35.216,29.662 -2020-05-23 14:15:00,68.87,54.621,35.216,29.662 -2020-05-23 14:30:00,69.82,54.353,35.216,29.662 -2020-05-23 14:45:00,66.18,54.928999999999995,35.216,29.662 -2020-05-23 15:00:00,71.76,56.085,36.759,29.662 -2020-05-23 15:15:00,72.55,54.121,36.759,29.662 -2020-05-23 15:30:00,72.31,52.053000000000004,36.759,29.662 -2020-05-23 15:45:00,71.95,49.521,36.759,29.662 -2020-05-23 16:00:00,71.37,52.958,40.086,29.662 -2020-05-23 16:15:00,71.22,52.37,40.086,29.662 -2020-05-23 16:30:00,71.77,51.843999999999994,40.086,29.662 -2020-05-23 16:45:00,72.93,47.797,40.086,29.662 -2020-05-23 17:00:00,75.81,50.486000000000004,44.876999999999995,29.662 -2020-05-23 17:15:00,77.15,49.199,44.876999999999995,29.662 -2020-05-23 17:30:00,81.73,48.926,44.876999999999995,29.662 -2020-05-23 17:45:00,83.0,47.845,44.876999999999995,29.662 -2020-05-23 18:00:00,82.3,52.175,47.056000000000004,29.662 -2020-05-23 18:15:00,80.93,54.047,47.056000000000004,29.662 -2020-05-23 18:30:00,81.66,53.409,47.056000000000004,29.662 -2020-05-23 18:45:00,81.46,55.044,47.056000000000004,29.662 -2020-05-23 19:00:00,79.51,55.43,45.57,29.662 -2020-05-23 19:15:00,76.63,54.428999999999995,45.57,29.662 -2020-05-23 19:30:00,75.8,54.83,45.57,29.662 -2020-05-23 19:45:00,75.75,55.99,45.57,29.662 -2020-05-23 20:00:00,75.77,55.193000000000005,41.685,29.662 -2020-05-23 20:15:00,75.2,54.916000000000004,41.685,29.662 -2020-05-23 20:30:00,78.48,53.038999999999994,41.685,29.662 -2020-05-23 20:45:00,77.87,54.102,41.685,29.662 -2020-05-23 21:00:00,75.6,52.068999999999996,39.576,29.662 -2020-05-23 21:15:00,75.41,54.998999999999995,39.576,29.662 -2020-05-23 21:30:00,72.51,56.086999999999996,39.576,29.662 -2020-05-23 21:45:00,71.96,56.635,39.576,29.662 -2020-05-23 22:00:00,68.93,54.263000000000005,39.068000000000005,29.662 -2020-05-23 22:15:00,68.33,55.56,39.068000000000005,29.662 -2020-05-23 22:30:00,65.26,55.118,39.068000000000005,29.662 -2020-05-23 22:45:00,65.06,54.041000000000004,39.068000000000005,29.662 -2020-05-23 23:00:00,61.85,49.77,32.06,29.662 -2020-05-23 23:15:00,61.41,46.022,32.06,29.662 -2020-05-23 23:30:00,61.34,45.095,32.06,29.662 -2020-05-23 23:45:00,59.43,44.225,32.06,29.662 -2020-05-24 00:00:00,57.13,36.184,28.825,29.662 -2020-05-24 00:15:00,57.97,34.035,28.825,29.662 -2020-05-24 00:30:00,57.26,32.953,28.825,29.662 -2020-05-24 00:45:00,57.6,31.803,28.825,29.662 -2020-05-24 01:00:00,55.3,31.62,25.995,29.662 -2020-05-24 01:15:00,56.86,30.941999999999997,25.995,29.662 -2020-05-24 01:30:00,56.68,29.026999999999997,25.995,29.662 -2020-05-24 01:45:00,56.48,28.518,25.995,29.662 -2020-05-24 02:00:00,54.98,28.549,24.394000000000002,29.662 -2020-05-24 02:15:00,55.67,26.753,24.394000000000002,29.662 -2020-05-24 02:30:00,55.71,29.241999999999997,24.394000000000002,29.662 -2020-05-24 02:45:00,54.51,29.96,24.394000000000002,29.662 -2020-05-24 03:00:00,54.2,32.754,22.916999999999998,29.662 -2020-05-24 03:15:00,54.33,29.838,22.916999999999998,29.662 -2020-05-24 03:30:00,55.39,28.445999999999998,22.916999999999998,29.662 -2020-05-24 03:45:00,53.97,29.454,22.916999999999998,29.662 -2020-05-24 04:00:00,51.59,36.912,23.576999999999998,29.662 -2020-05-24 04:15:00,52.43,43.722,23.576999999999998,29.662 -2020-05-24 04:30:00,52.07,41.773999999999994,23.576999999999998,29.662 -2020-05-24 04:45:00,52.18,41.433,23.576999999999998,29.662 -2020-05-24 05:00:00,52.38,53.093999999999994,22.730999999999998,29.662 -2020-05-24 05:15:00,51.01,58.086999999999996,22.730999999999998,29.662 -2020-05-24 05:30:00,51.44,48.788000000000004,22.730999999999998,29.662 -2020-05-24 05:45:00,50.26,47.56100000000001,22.730999999999998,29.662 -2020-05-24 06:00:00,55.4,61.348,22.34,29.662 -2020-05-24 06:15:00,56.11,74.26,22.34,29.662 -2020-05-24 06:30:00,56.5,66.44,22.34,29.662 -2020-05-24 06:45:00,58.7,60.73,22.34,29.662 -2020-05-24 07:00:00,60.0,58.957,24.691999999999997,29.662 -2020-05-24 07:15:00,62.28,56.248999999999995,24.691999999999997,29.662 -2020-05-24 07:30:00,63.86,54.387,24.691999999999997,29.662 -2020-05-24 07:45:00,66.28,53.792,24.691999999999997,29.662 -2020-05-24 08:00:00,68.02,50.965,29.340999999999998,29.662 -2020-05-24 08:15:00,69.85,54.619,29.340999999999998,29.662 -2020-05-24 08:30:00,70.34,54.93600000000001,29.340999999999998,29.662 -2020-05-24 08:45:00,69.19,58.036,29.340999999999998,29.662 -2020-05-24 09:00:00,64.38,55.551,30.788,29.662 -2020-05-24 09:15:00,64.98,56.251999999999995,30.788,29.662 -2020-05-24 09:30:00,61.61,59.635,30.788,29.662 -2020-05-24 09:45:00,58.24,61.888999999999996,30.788,29.662 -2020-05-24 10:00:00,59.37,59.70399999999999,30.158,29.662 -2020-05-24 10:15:00,60.65,61.652,30.158,29.662 -2020-05-24 10:30:00,62.09,62.085,30.158,29.662 -2020-05-24 10:45:00,62.05,63.525,30.158,29.662 -2020-05-24 11:00:00,62.17,59.622,32.056,29.662 -2020-05-24 11:15:00,59.81,59.99100000000001,32.056,29.662 -2020-05-24 11:30:00,55.31,61.896,32.056,29.662 -2020-05-24 11:45:00,55.01,63.036,32.056,29.662 -2020-05-24 12:00:00,56.12,59.94,28.671999999999997,29.662 -2020-05-24 12:15:00,58.46,60.038000000000004,28.671999999999997,29.662 -2020-05-24 12:30:00,58.98,59.003,28.671999999999997,29.662 -2020-05-24 12:45:00,61.98,59.52,28.671999999999997,29.662 -2020-05-24 13:00:00,60.62,59.632,23.171,29.662 -2020-05-24 13:15:00,61.12,59.873000000000005,23.171,29.662 -2020-05-24 13:30:00,56.46,57.708999999999996,23.171,29.662 -2020-05-24 13:45:00,56.65,55.956,23.171,29.662 -2020-05-24 14:00:00,56.1,57.781000000000006,19.11,29.662 -2020-05-24 14:15:00,58.99,56.107,19.11,29.662 -2020-05-24 14:30:00,64.84,54.945,19.11,29.662 -2020-05-24 14:45:00,70.09,54.452,19.11,29.662 -2020-05-24 15:00:00,72.58,55.449,19.689,29.662 -2020-05-24 15:15:00,73.17,52.895,19.689,29.662 -2020-05-24 15:30:00,74.8,50.771,19.689,29.662 -2020-05-24 15:45:00,76.05,48.638999999999996,19.689,29.662 -2020-05-24 16:00:00,84.67,50.972,22.875,29.662 -2020-05-24 16:15:00,87.35,50.39,22.875,29.662 -2020-05-24 16:30:00,87.69,50.867,22.875,29.662 -2020-05-24 16:45:00,83.03,46.857,22.875,29.662 -2020-05-24 17:00:00,83.2,49.927,33.884,29.662 -2020-05-24 17:15:00,80.98,49.951,33.884,29.662 -2020-05-24 17:30:00,82.32,50.475,33.884,29.662 -2020-05-24 17:45:00,86.46,50.239,33.884,29.662 -2020-05-24 18:00:00,88.05,54.983000000000004,38.453,29.662 -2020-05-24 18:15:00,84.96,56.722,38.453,29.662 -2020-05-24 18:30:00,81.33,55.413999999999994,38.453,29.662 -2020-05-24 18:45:00,80.49,57.535,38.453,29.662 -2020-05-24 19:00:00,83.33,59.87,39.221,29.662 -2020-05-24 19:15:00,81.36,57.926,39.221,29.662 -2020-05-24 19:30:00,79.76,58.052,39.221,29.662 -2020-05-24 19:45:00,80.78,59.06,39.221,29.662 -2020-05-24 20:00:00,82.2,58.438,37.871,29.662 -2020-05-24 20:15:00,82.3,58.229,37.871,29.662 -2020-05-24 20:30:00,83.51,57.387,37.871,29.662 -2020-05-24 20:45:00,83.49,56.669,37.871,29.662 -2020-05-24 21:00:00,81.41,53.983999999999995,36.465,29.662 -2020-05-24 21:15:00,82.26,56.519,36.465,29.662 -2020-05-24 21:30:00,75.32,57.03,36.465,29.662 -2020-05-24 21:45:00,76.43,57.966,36.465,29.662 -2020-05-24 22:00:00,74.5,57.299,36.092,29.662 -2020-05-24 22:15:00,78.91,56.873999999999995,36.092,29.662 -2020-05-24 22:30:00,80.16,55.325,36.092,29.662 -2020-05-24 22:45:00,79.85,52.865,36.092,29.662 -2020-05-24 23:00:00,71.49,47.725,31.013,29.662 -2020-05-24 23:15:00,69.19,45.586999999999996,31.013,29.662 -2020-05-24 23:30:00,73.1,44.315,31.013,29.662 -2020-05-24 23:45:00,75.16,43.761,31.013,29.662 -2020-05-25 00:00:00,73.04,38.211999999999996,31.174,29.775 -2020-05-25 00:15:00,71.45,37.404,31.174,29.775 -2020-05-25 00:30:00,65.82,35.985,31.174,29.775 -2020-05-25 00:45:00,65.94,34.361,31.174,29.775 -2020-05-25 01:00:00,68.21,34.563,29.663,29.775 -2020-05-25 01:15:00,73.16,33.77,29.663,29.775 -2020-05-25 01:30:00,73.49,32.193000000000005,29.663,29.775 -2020-05-25 01:45:00,70.92,31.61,29.663,29.775 -2020-05-25 02:00:00,67.31,32.065,28.793000000000003,29.775 -2020-05-25 02:15:00,72.78,29.594,28.793000000000003,29.775 -2020-05-25 02:30:00,74.32,32.31,28.793000000000003,29.775 -2020-05-25 02:45:00,74.35,32.775999999999996,28.793000000000003,29.775 -2020-05-25 03:00:00,69.78,36.306999999999995,27.728,29.775 -2020-05-25 03:15:00,68.47,34.389,27.728,29.775 -2020-05-25 03:30:00,69.86,33.588,27.728,29.775 -2020-05-25 03:45:00,70.1,34.076,27.728,29.775 -2020-05-25 04:00:00,73.53,45.273999999999994,29.266,29.775 -2020-05-25 04:15:00,73.54,55.622,29.266,29.775 -2020-05-25 04:30:00,77.68,53.648,29.266,29.775 -2020-05-25 04:45:00,81.3,53.683,29.266,29.775 -2020-05-25 05:00:00,89.03,74.794,37.889,29.775 -2020-05-25 05:15:00,93.31,93.23,37.889,29.775 -2020-05-25 05:30:00,95.72,82.57700000000001,37.889,29.775 -2020-05-25 05:45:00,98.49,77.42699999999999,37.889,29.775 -2020-05-25 06:00:00,99.46,78.153,55.485,29.775 -2020-05-25 06:15:00,104.22,79.572,55.485,29.775 -2020-05-25 06:30:00,105.6,77.07,55.485,29.775 -2020-05-25 06:45:00,106.6,78.078,55.485,29.775 -2020-05-25 07:00:00,108.35,77.343,65.765,29.775 -2020-05-25 07:15:00,107.73,77.042,65.765,29.775 -2020-05-25 07:30:00,107.92,74.193,65.765,29.775 -2020-05-25 07:45:00,108.55,73.4,65.765,29.775 -2020-05-25 08:00:00,106.16,67.673,56.745,29.775 -2020-05-25 08:15:00,106.57,69.807,56.745,29.775 -2020-05-25 08:30:00,107.31,68.376,56.745,29.775 -2020-05-25 08:45:00,106.93,71.00399999999999,56.745,29.775 -2020-05-25 09:00:00,106.44,67.383,53.321999999999996,29.775 -2020-05-25 09:15:00,106.7,65.695,53.321999999999996,29.775 -2020-05-25 09:30:00,105.96,68.01100000000001,53.321999999999996,29.775 -2020-05-25 09:45:00,105.74,68.217,53.321999999999996,29.775 -2020-05-25 10:00:00,106.53,66.318,51.309,29.775 -2020-05-25 10:15:00,109.6,68.087,51.309,29.775 -2020-05-25 10:30:00,108.78,67.915,51.309,29.775 -2020-05-25 10:45:00,107.84,68.066,51.309,29.775 -2020-05-25 11:00:00,105.05,63.818000000000005,50.415,29.775 -2020-05-25 11:15:00,103.48,64.858,50.415,29.775 -2020-05-25 11:30:00,101.34,67.70100000000001,50.415,29.775 -2020-05-25 11:45:00,101.35,69.223,50.415,29.775 -2020-05-25 12:00:00,100.54,65.095,48.273,29.775 -2020-05-25 12:15:00,101.38,65.3,48.273,29.775 -2020-05-25 12:30:00,99.35,63.31,48.273,29.775 -2020-05-25 12:45:00,101.48,64.178,48.273,29.775 -2020-05-25 13:00:00,100.53,65.195,48.452,29.775 -2020-05-25 13:15:00,101.37,64.317,48.452,29.775 -2020-05-25 13:30:00,99.07,62.199,48.452,29.775 -2020-05-25 13:45:00,100.17,61.278999999999996,48.452,29.775 -2020-05-25 14:00:00,99.77,62.183,48.35,29.775 -2020-05-25 14:15:00,102.24,60.898999999999994,48.35,29.775 -2020-05-25 14:30:00,103.48,59.428000000000004,48.35,29.775 -2020-05-25 14:45:00,101.43,60.82899999999999,48.35,29.775 -2020-05-25 15:00:00,101.0,61.948,48.838,29.775 -2020-05-25 15:15:00,97.03,58.513000000000005,48.838,29.775 -2020-05-25 15:30:00,98.64,56.886,48.838,29.775 -2020-05-25 15:45:00,101.34,54.193999999999996,48.838,29.775 -2020-05-25 16:00:00,101.37,57.505,50.873000000000005,29.775 -2020-05-25 16:15:00,103.25,56.806999999999995,50.873000000000005,29.775 -2020-05-25 16:30:00,106.69,56.475,50.873000000000005,29.775 -2020-05-25 16:45:00,106.5,52.178000000000004,50.873000000000005,29.775 -2020-05-25 17:00:00,107.1,54.208999999999996,56.637,29.775 -2020-05-25 17:15:00,111.13,54.353,56.637,29.775 -2020-05-25 17:30:00,110.99,54.388000000000005,56.637,29.775 -2020-05-25 17:45:00,111.14,53.427,56.637,29.775 -2020-05-25 18:00:00,108.96,57.196999999999996,56.35,29.775 -2020-05-25 18:15:00,105.76,56.744,56.35,29.775 -2020-05-25 18:30:00,113.14,54.85,56.35,29.775 -2020-05-25 18:45:00,116.77,60.083,56.35,29.775 -2020-05-25 19:00:00,108.64,61.768,56.023,29.775 -2020-05-25 19:15:00,98.73,60.848,56.023,29.775 -2020-05-25 19:30:00,103.11,60.716,56.023,29.775 -2020-05-25 19:45:00,99.07,60.978,56.023,29.775 -2020-05-25 20:00:00,96.44,58.687,62.372,29.775 -2020-05-25 20:15:00,103.82,59.299,62.372,29.775 -2020-05-25 20:30:00,106.27,58.593999999999994,62.372,29.775 -2020-05-25 20:45:00,103.64,58.45,62.372,29.775 -2020-05-25 21:00:00,96.06,55.285,57.516999999999996,29.775 -2020-05-25 21:15:00,96.57,58.018,57.516999999999996,29.775 -2020-05-25 21:30:00,96.34,58.732,57.516999999999996,29.775 -2020-05-25 21:45:00,96.09,59.38399999999999,57.516999999999996,29.775 -2020-05-25 22:00:00,89.25,56.24,51.823,29.775 -2020-05-25 22:15:00,83.2,57.45399999999999,51.823,29.775 -2020-05-25 22:30:00,87.35,49.917,51.823,29.775 -2020-05-25 22:45:00,89.63,46.472,51.823,29.775 -2020-05-25 23:00:00,82.93,41.511,43.832,29.775 -2020-05-25 23:15:00,75.55,38.372,43.832,29.775 -2020-05-25 23:30:00,79.33,37.609,43.832,29.775 -2020-05-25 23:45:00,82.15,37.052,43.832,29.775 -2020-05-26 00:00:00,77.88,35.689,42.371,29.775 -2020-05-26 00:15:00,75.1,35.991,42.371,29.775 -2020-05-26 00:30:00,78.04,35.06,42.371,29.775 -2020-05-26 00:45:00,78.89,33.999,42.371,29.775 -2020-05-26 01:00:00,77.82,33.665,39.597,29.775 -2020-05-26 01:15:00,76.09,32.865,39.597,29.775 -2020-05-26 01:30:00,78.26,31.186,39.597,29.775 -2020-05-26 01:45:00,79.73,30.171999999999997,39.597,29.775 -2020-05-26 02:00:00,79.78,30.166999999999998,38.298,29.775 -2020-05-26 02:15:00,76.12,28.761999999999997,38.298,29.775 -2020-05-26 02:30:00,79.45,30.995,38.298,29.775 -2020-05-26 02:45:00,81.63,31.781999999999996,38.298,29.775 -2020-05-26 03:00:00,78.81,34.551,37.884,29.775 -2020-05-26 03:15:00,75.75,33.34,37.884,29.775 -2020-05-26 03:30:00,80.4,32.609,37.884,29.775 -2020-05-26 03:45:00,82.09,32.106,37.884,29.775 -2020-05-26 04:00:00,81.49,42.005,39.442,29.775 -2020-05-26 04:15:00,78.42,52.242,39.442,29.775 -2020-05-26 04:30:00,81.46,50.07899999999999,39.442,29.775 -2020-05-26 04:45:00,86.44,50.81399999999999,39.442,29.775 -2020-05-26 05:00:00,92.93,74.25399999999999,43.608000000000004,29.775 -2020-05-26 05:15:00,95.98,93.09100000000001,43.608000000000004,29.775 -2020-05-26 05:30:00,97.87,82.4,43.608000000000004,29.775 -2020-05-26 05:45:00,100.97,76.611,43.608000000000004,29.775 -2020-05-26 06:00:00,104.23,78.155,54.99100000000001,29.775 -2020-05-26 06:15:00,106.17,80.044,54.99100000000001,29.775 -2020-05-26 06:30:00,107.29,77.12899999999999,54.99100000000001,29.775 -2020-05-26 06:45:00,108.62,77.236,54.99100000000001,29.775 -2020-05-26 07:00:00,111.63,76.596,66.217,29.775 -2020-05-26 07:15:00,109.37,76.031,66.217,29.775 -2020-05-26 07:30:00,108.15,73.069,66.217,29.775 -2020-05-26 07:45:00,107.28,71.422,66.217,29.775 -2020-05-26 08:00:00,105.84,65.657,60.151,29.775 -2020-05-26 08:15:00,107.1,67.205,60.151,29.775 -2020-05-26 08:30:00,107.63,65.885,60.151,29.775 -2020-05-26 08:45:00,105.85,67.601,60.151,29.775 -2020-05-26 09:00:00,106.2,64.122,53.873000000000005,29.775 -2020-05-26 09:15:00,106.76,62.643,53.873000000000005,29.775 -2020-05-26 09:30:00,106.29,65.755,53.873000000000005,29.775 -2020-05-26 09:45:00,107.29,67.207,53.873000000000005,29.775 -2020-05-26 10:00:00,107.68,63.907,51.417,29.775 -2020-05-26 10:15:00,108.29,65.344,51.417,29.775 -2020-05-26 10:30:00,107.02,65.244,51.417,29.775 -2020-05-26 10:45:00,106.79,66.407,51.417,29.775 -2020-05-26 11:00:00,103.4,62.48,50.43600000000001,29.775 -2020-05-26 11:15:00,103.94,63.838,50.43600000000001,29.775 -2020-05-26 11:30:00,107.61,65.347,50.43600000000001,29.775 -2020-05-26 11:45:00,110.51,66.61399999999999,50.43600000000001,29.775 -2020-05-26 12:00:00,108.4,62.042,47.468,29.775 -2020-05-26 12:15:00,103.09,62.467,47.468,29.775 -2020-05-26 12:30:00,104.04,61.398,47.468,29.775 -2020-05-26 12:45:00,101.49,62.843,47.468,29.775 -2020-05-26 13:00:00,102.78,63.45399999999999,48.453,29.775 -2020-05-26 13:15:00,107.92,64.171,48.453,29.775 -2020-05-26 13:30:00,112.42,62.297,48.453,29.775 -2020-05-26 13:45:00,112.14,60.523999999999994,48.453,29.775 -2020-05-26 14:00:00,110.26,61.941,48.435,29.775 -2020-05-26 14:15:00,105.71,60.5,48.435,29.775 -2020-05-26 14:30:00,111.81,59.43600000000001,48.435,29.775 -2020-05-26 14:45:00,112.96,60.092,48.435,29.775 -2020-05-26 15:00:00,112.99,61.018,49.966,29.775 -2020-05-26 15:15:00,110.34,58.498000000000005,49.966,29.775 -2020-05-26 15:30:00,113.39,56.705,49.966,29.775 -2020-05-26 15:45:00,116.68,54.229,49.966,29.775 -2020-05-26 16:00:00,118.92,57.022,51.184,29.775 -2020-05-26 16:15:00,115.17,56.494,51.184,29.775 -2020-05-26 16:30:00,114.9,55.968,51.184,29.775 -2020-05-26 16:45:00,120.29,52.354,51.184,29.775 -2020-05-26 17:00:00,120.37,54.74,56.138999999999996,29.775 -2020-05-26 17:15:00,116.21,55.26,56.138999999999996,29.775 -2020-05-26 17:30:00,111.59,55.015,56.138999999999996,29.775 -2020-05-26 17:45:00,120.21,53.681000000000004,56.138999999999996,29.775 -2020-05-26 18:00:00,122.33,56.542,57.038000000000004,29.775 -2020-05-26 18:15:00,115.55,57.373000000000005,57.038000000000004,29.775 -2020-05-26 18:30:00,110.43,55.159,57.038000000000004,29.775 -2020-05-26 18:45:00,113.6,60.367,57.038000000000004,29.775 -2020-05-26 19:00:00,113.25,60.945,56.492,29.775 -2020-05-26 19:15:00,105.86,60.135,56.492,29.775 -2020-05-26 19:30:00,105.79,59.665,56.492,29.775 -2020-05-26 19:45:00,100.27,60.254,56.492,29.775 -2020-05-26 20:00:00,101.3,58.349,62.534,29.775 -2020-05-26 20:15:00,105.86,57.463,62.534,29.775 -2020-05-26 20:30:00,107.47,57.018,62.534,29.775 -2020-05-26 20:45:00,104.42,57.199,62.534,29.775 -2020-05-26 21:00:00,97.23,54.727,55.506,29.775 -2020-05-26 21:15:00,102.65,56.256,55.506,29.775 -2020-05-26 21:30:00,99.18,56.97,55.506,29.775 -2020-05-26 21:45:00,96.09,57.873999999999995,55.506,29.775 -2020-05-26 22:00:00,85.21,55.248000000000005,51.472,29.775 -2020-05-26 22:15:00,90.23,56.108999999999995,51.472,29.775 -2020-05-26 22:30:00,91.74,48.865,51.472,29.775 -2020-05-26 22:45:00,88.76,45.456,51.472,29.775 -2020-05-26 23:00:00,79.55,39.731,44.593,29.775 -2020-05-26 23:15:00,79.85,37.953,44.593,29.775 -2020-05-26 23:30:00,86.2,37.123000000000005,44.593,29.775 -2020-05-26 23:45:00,87.91,36.645,44.593,29.775 -2020-05-27 00:00:00,78.67,35.461999999999996,41.978,29.775 -2020-05-27 00:15:00,76.21,35.769,41.978,29.775 -2020-05-27 00:30:00,74.83,34.839,41.978,29.775 -2020-05-27 00:45:00,82.21,33.784,41.978,29.775 -2020-05-27 01:00:00,79.98,33.466,38.59,29.775 -2020-05-27 01:15:00,79.27,32.641999999999996,38.59,29.775 -2020-05-27 01:30:00,75.92,30.951,38.59,29.775 -2020-05-27 01:45:00,75.33,29.930999999999997,38.59,29.775 -2020-05-27 02:00:00,79.93,29.924,36.23,29.775 -2020-05-27 02:15:00,81.78,28.51,36.23,29.775 -2020-05-27 02:30:00,78.49,30.748,36.23,29.775 -2020-05-27 02:45:00,76.39,31.541999999999998,36.23,29.775 -2020-05-27 03:00:00,74.78,34.317,35.867,29.775 -2020-05-27 03:15:00,81.81,33.095,35.867,29.775 -2020-05-27 03:30:00,83.72,32.368,35.867,29.775 -2020-05-27 03:45:00,84.2,31.891,35.867,29.775 -2020-05-27 04:00:00,80.31,41.731,36.75,29.775 -2020-05-27 04:15:00,79.3,51.916000000000004,36.75,29.775 -2020-05-27 04:30:00,80.69,49.742,36.75,29.775 -2020-05-27 04:45:00,85.87,50.47,36.75,29.775 -2020-05-27 05:00:00,92.63,73.78399999999999,40.461,29.775 -2020-05-27 05:15:00,97.73,92.46600000000001,40.461,29.775 -2020-05-27 05:30:00,101.04,81.842,40.461,29.775 -2020-05-27 05:45:00,102.83,76.115,40.461,29.775 -2020-05-27 06:00:00,108.55,77.681,55.481,29.775 -2020-05-27 06:15:00,111.03,79.547,55.481,29.775 -2020-05-27 06:30:00,114.05,76.648,55.481,29.775 -2020-05-27 06:45:00,116.14,76.777,55.481,29.775 -2020-05-27 07:00:00,118.55,76.126,68.45,29.775 -2020-05-27 07:15:00,117.45,75.571,68.45,29.775 -2020-05-27 07:30:00,116.41,72.589,68.45,29.775 -2020-05-27 07:45:00,115.84,70.972,68.45,29.775 -2020-05-27 08:00:00,115.67,65.21300000000001,60.885,29.775 -2020-05-27 08:15:00,117.03,66.808,60.885,29.775 -2020-05-27 08:30:00,117.65,65.476,60.885,29.775 -2020-05-27 08:45:00,116.56,67.208,60.885,29.775 -2020-05-27 09:00:00,113.89,63.724,56.887,29.775 -2020-05-27 09:15:00,113.51,62.251000000000005,56.887,29.775 -2020-05-27 09:30:00,110.46,65.37,56.887,29.775 -2020-05-27 09:45:00,113.38,66.851,56.887,29.775 -2020-05-27 10:00:00,111.51,63.56100000000001,54.401,29.775 -2020-05-27 10:15:00,109.58,65.025,54.401,29.775 -2020-05-27 10:30:00,110.08,64.936,54.401,29.775 -2020-05-27 10:45:00,111.45,66.111,54.401,29.775 -2020-05-27 11:00:00,116.34,62.177,53.678000000000004,29.775 -2020-05-27 11:15:00,116.28,63.548,53.678000000000004,29.775 -2020-05-27 11:30:00,120.85,65.04899999999999,53.678000000000004,29.775 -2020-05-27 11:45:00,119.2,66.324,53.678000000000004,29.775 -2020-05-27 12:00:00,113.31,61.788000000000004,51.68,29.775 -2020-05-27 12:15:00,114.74,62.218,51.68,29.775 -2020-05-27 12:30:00,110.65,61.11600000000001,51.68,29.775 -2020-05-27 12:45:00,108.47,62.567,51.68,29.775 -2020-05-27 13:00:00,109.49,63.18600000000001,51.263000000000005,29.775 -2020-05-27 13:15:00,113.95,63.903999999999996,51.263000000000005,29.775 -2020-05-27 13:30:00,118.69,62.041000000000004,51.263000000000005,29.775 -2020-05-27 13:45:00,116.61,60.272,51.263000000000005,29.775 -2020-05-27 14:00:00,106.92,61.72,51.107,29.775 -2020-05-27 14:15:00,103.29,60.273,51.107,29.775 -2020-05-27 14:30:00,103.58,59.173,51.107,29.775 -2020-05-27 14:45:00,101.55,59.833999999999996,51.107,29.775 -2020-05-27 15:00:00,101.02,60.805,51.498000000000005,29.775 -2020-05-27 15:15:00,106.26,58.272,51.498000000000005,29.775 -2020-05-27 15:30:00,108.1,56.458,51.498000000000005,29.775 -2020-05-27 15:45:00,106.97,53.967,51.498000000000005,29.775 -2020-05-27 16:00:00,104.58,56.803000000000004,53.376999999999995,29.775 -2020-05-27 16:15:00,112.71,56.263000000000005,53.376999999999995,29.775 -2020-05-27 16:30:00,115.07,55.753,53.376999999999995,29.775 -2020-05-27 16:45:00,117.58,52.091,53.376999999999995,29.775 -2020-05-27 17:00:00,113.92,54.519,56.965,29.775 -2020-05-27 17:15:00,109.55,55.019,56.965,29.775 -2020-05-27 17:30:00,110.79,54.761,56.965,29.775 -2020-05-27 17:45:00,117.21,53.397,56.965,29.775 -2020-05-27 18:00:00,119.07,56.273,58.231,29.775 -2020-05-27 18:15:00,116.37,57.083,58.231,29.775 -2020-05-27 18:30:00,110.78,54.858000000000004,58.231,29.775 -2020-05-27 18:45:00,111.25,60.065,58.231,29.775 -2020-05-27 19:00:00,112.51,60.646,58.865,29.775 -2020-05-27 19:15:00,110.24,59.83,58.865,29.775 -2020-05-27 19:30:00,106.93,59.354,58.865,29.775 -2020-05-27 19:45:00,104.44,59.942,58.865,29.775 -2020-05-27 20:00:00,106.22,58.015,65.605,29.775 -2020-05-27 20:15:00,109.79,57.128,65.605,29.775 -2020-05-27 20:30:00,105.72,56.702,65.605,29.775 -2020-05-27 20:45:00,106.65,56.923,65.605,29.775 -2020-05-27 21:00:00,103.35,54.456,58.083999999999996,29.775 -2020-05-27 21:15:00,102.42,55.998999999999995,58.083999999999996,29.775 -2020-05-27 21:30:00,96.73,56.688,58.083999999999996,29.775 -2020-05-27 21:45:00,90.01,57.614,58.083999999999996,29.775 -2020-05-27 22:00:00,84.55,55.013999999999996,53.243,29.775 -2020-05-27 22:15:00,92.14,55.89,53.243,29.775 -2020-05-27 22:30:00,90.68,48.641999999999996,53.243,29.775 -2020-05-27 22:45:00,91.0,45.221000000000004,53.243,29.775 -2020-05-27 23:00:00,84.6,39.466,44.283,29.775 -2020-05-27 23:15:00,85.5,37.732,44.283,29.775 -2020-05-27 23:30:00,85.54,36.907,44.283,29.775 -2020-05-27 23:45:00,79.34,36.42,44.283,29.775 -2020-05-28 00:00:00,77.91,35.239000000000004,40.219,29.775 -2020-05-28 00:15:00,80.31,35.55,40.219,29.775 -2020-05-28 00:30:00,82.35,34.621,40.219,29.775 -2020-05-28 00:45:00,82.17,33.571,40.219,29.775 -2020-05-28 01:00:00,73.42,33.269,37.959,29.775 -2020-05-28 01:15:00,73.91,32.423,37.959,29.775 -2020-05-28 01:30:00,80.25,30.72,37.959,29.775 -2020-05-28 01:45:00,80.75,29.695,37.959,29.775 -2020-05-28 02:00:00,78.89,29.686,36.113,29.775 -2020-05-28 02:15:00,76.48,28.261999999999997,36.113,29.775 -2020-05-28 02:30:00,73.17,30.505,36.113,29.775 -2020-05-28 02:45:00,71.76,31.307,36.113,29.775 -2020-05-28 03:00:00,82.48,34.086,35.546,29.775 -2020-05-28 03:15:00,81.95,32.857,35.546,29.775 -2020-05-28 03:30:00,83.28,32.132,35.546,29.775 -2020-05-28 03:45:00,79.02,31.68,35.546,29.775 -2020-05-28 04:00:00,76.6,41.464,37.169000000000004,29.775 -2020-05-28 04:15:00,77.69,51.595,37.169000000000004,29.775 -2020-05-28 04:30:00,81.45,49.409,37.169000000000004,29.775 -2020-05-28 04:45:00,85.59,50.132,37.169000000000004,29.775 -2020-05-28 05:00:00,91.9,73.321,41.233000000000004,29.775 -2020-05-28 05:15:00,94.79,91.84899999999999,41.233000000000004,29.775 -2020-05-28 05:30:00,97.76,81.291,41.233000000000004,29.775 -2020-05-28 05:45:00,101.42,75.626,41.233000000000004,29.775 -2020-05-28 06:00:00,106.7,77.21300000000001,52.57,29.775 -2020-05-28 06:15:00,107.83,79.056,52.57,29.775 -2020-05-28 06:30:00,107.22,76.17399999999999,52.57,29.775 -2020-05-28 06:45:00,108.72,76.32600000000001,52.57,29.775 -2020-05-28 07:00:00,112.97,75.663,64.53,29.775 -2020-05-28 07:15:00,113.42,75.118,64.53,29.775 -2020-05-28 07:30:00,111.88,72.117,64.53,29.775 -2020-05-28 07:45:00,110.47,70.532,64.53,29.775 -2020-05-28 08:00:00,108.25,64.778,55.911,29.775 -2020-05-28 08:15:00,109.2,66.418,55.911,29.775 -2020-05-28 08:30:00,108.89,65.07600000000001,55.911,29.775 -2020-05-28 08:45:00,108.36,66.82300000000001,55.911,29.775 -2020-05-28 09:00:00,108.84,63.333999999999996,50.949,29.775 -2020-05-28 09:15:00,109.6,61.867,50.949,29.775 -2020-05-28 09:30:00,109.68,64.991,50.949,29.775 -2020-05-28 09:45:00,109.89,66.501,50.949,29.775 -2020-05-28 10:00:00,109.06,63.222,48.136,29.775 -2020-05-28 10:15:00,109.02,64.71300000000001,48.136,29.775 -2020-05-28 10:30:00,108.21,64.633,48.136,29.775 -2020-05-28 10:45:00,110.76,65.82,48.136,29.775 -2020-05-28 11:00:00,110.74,61.88,46.643,29.775 -2020-05-28 11:15:00,114.54,63.265,46.643,29.775 -2020-05-28 11:30:00,116.21,64.755,46.643,29.775 -2020-05-28 11:45:00,112.65,66.04,46.643,29.775 -2020-05-28 12:00:00,108.35,61.538999999999994,44.098,29.775 -2020-05-28 12:15:00,107.22,61.972,44.098,29.775 -2020-05-28 12:30:00,101.85,60.839,44.098,29.775 -2020-05-28 12:45:00,104.76,62.294,44.098,29.775 -2020-05-28 13:00:00,104.61,62.92100000000001,43.717,29.775 -2020-05-28 13:15:00,106.42,63.643,43.717,29.775 -2020-05-28 13:30:00,104.67,61.792,43.717,29.775 -2020-05-28 13:45:00,106.86,60.025,43.717,29.775 -2020-05-28 14:00:00,109.05,61.505,44.218999999999994,29.775 -2020-05-28 14:15:00,109.96,60.051,44.218999999999994,29.775 -2020-05-28 14:30:00,111.04,58.915,44.218999999999994,29.775 -2020-05-28 14:45:00,111.45,59.58,44.218999999999994,29.775 -2020-05-28 15:00:00,114.19,60.596000000000004,46.159,29.775 -2020-05-28 15:15:00,116.88,58.05,46.159,29.775 -2020-05-28 15:30:00,117.36,56.215,46.159,29.775 -2020-05-28 15:45:00,118.28,53.708999999999996,46.159,29.775 -2020-05-28 16:00:00,120.09,56.588,47.115,29.775 -2020-05-28 16:15:00,117.02,56.037,47.115,29.775 -2020-05-28 16:30:00,117.12,55.543,47.115,29.775 -2020-05-28 16:45:00,115.03,51.835,47.115,29.775 -2020-05-28 17:00:00,115.21,54.302,50.827,29.775 -2020-05-28 17:15:00,114.26,54.784,50.827,29.775 -2020-05-28 17:30:00,113.32,54.513999999999996,50.827,29.775 -2020-05-28 17:45:00,113.31,53.118,50.827,29.775 -2020-05-28 18:00:00,114.29,56.00899999999999,52.586000000000006,29.775 -2020-05-28 18:15:00,111.81,56.798,52.586000000000006,29.775 -2020-05-28 18:30:00,113.58,54.565,52.586000000000006,29.775 -2020-05-28 18:45:00,111.62,59.769,52.586000000000006,29.775 -2020-05-28 19:00:00,107.16,60.352,51.886,29.775 -2020-05-28 19:15:00,104.15,59.531000000000006,51.886,29.775 -2020-05-28 19:30:00,103.5,59.049,51.886,29.775 -2020-05-28 19:45:00,102.04,59.635,51.886,29.775 -2020-05-28 20:00:00,100.18,57.68600000000001,56.162,29.775 -2020-05-28 20:15:00,101.47,56.798,56.162,29.775 -2020-05-28 20:30:00,103.36,56.391000000000005,56.162,29.775 -2020-05-28 20:45:00,99.21,56.652,56.162,29.775 -2020-05-28 21:00:00,100.34,54.191,53.023,29.775 -2020-05-28 21:15:00,99.7,55.746,53.023,29.775 -2020-05-28 21:30:00,97.4,56.413000000000004,53.023,29.775 -2020-05-28 21:45:00,98.85,57.358000000000004,53.023,29.775 -2020-05-28 22:00:00,89.45,54.783,49.303999999999995,29.775 -2020-05-28 22:15:00,90.82,55.674,49.303999999999995,29.775 -2020-05-28 22:30:00,91.85,48.423,49.303999999999995,29.775 -2020-05-28 22:45:00,92.06,44.99,49.303999999999995,29.775 -2020-05-28 23:00:00,82.98,39.205999999999996,43.409,29.775 -2020-05-28 23:15:00,78.65,37.515,43.409,29.775 -2020-05-28 23:30:00,84.66,36.694,43.409,29.775 -2020-05-28 23:45:00,83.7,36.199,43.409,29.775 -2020-05-29 00:00:00,82.83,33.088,39.884,29.775 -2020-05-29 00:15:00,79.0,33.650999999999996,39.884,29.775 -2020-05-29 00:30:00,76.64,32.953,39.884,29.775 -2020-05-29 00:45:00,75.71,32.335,39.884,29.775 -2020-05-29 01:00:00,75.93,31.62,37.658,29.775 -2020-05-29 01:15:00,75.57,30.374000000000002,37.658,29.775 -2020-05-29 01:30:00,74.04,29.29,37.658,29.775 -2020-05-29 01:45:00,79.8,28.044,37.658,29.775 -2020-05-29 02:00:00,80.93,28.939,36.707,29.775 -2020-05-29 02:15:00,81.07,27.433000000000003,36.707,29.775 -2020-05-29 02:30:00,74.85,30.576,36.707,29.775 -2020-05-29 02:45:00,77.58,30.746,36.707,29.775 -2020-05-29 03:00:00,83.0,34.054,37.025,29.775 -2020-05-29 03:15:00,79.28,31.87,37.025,29.775 -2020-05-29 03:30:00,78.44,30.916999999999998,37.025,29.775 -2020-05-29 03:45:00,80.42,31.393,37.025,29.775 -2020-05-29 04:00:00,86.4,41.3,38.349000000000004,29.775 -2020-05-29 04:15:00,88.81,49.849,38.349000000000004,29.775 -2020-05-29 04:30:00,85.87,48.602,38.349000000000004,29.775 -2020-05-29 04:45:00,86.7,48.461000000000006,38.349000000000004,29.775 -2020-05-29 05:00:00,92.38,70.797,41.565,29.775 -2020-05-29 05:15:00,96.58,90.395,41.565,29.775 -2020-05-29 05:30:00,99.6,80.309,41.565,29.775 -2020-05-29 05:45:00,103.24,74.263,41.565,29.775 -2020-05-29 06:00:00,109.02,76.183,53.861000000000004,29.775 -2020-05-29 06:15:00,107.63,77.858,53.861000000000004,29.775 -2020-05-29 06:30:00,108.54,74.766,53.861000000000004,29.775 -2020-05-29 06:45:00,109.06,75.15100000000001,53.861000000000004,29.775 -2020-05-29 07:00:00,110.54,74.923,63.497,29.775 -2020-05-29 07:15:00,108.76,75.47,63.497,29.775 -2020-05-29 07:30:00,108.91,70.567,63.497,29.775 -2020-05-29 07:45:00,107.71,68.62,63.497,29.775 -2020-05-29 08:00:00,107.34,63.365,55.43899999999999,29.775 -2020-05-29 08:15:00,109.81,65.593,55.43899999999999,29.775 -2020-05-29 08:30:00,113.11,64.368,55.43899999999999,29.775 -2020-05-29 08:45:00,111.74,65.642,55.43899999999999,29.775 -2020-05-29 09:00:00,109.3,60.086999999999996,52.132,29.775 -2020-05-29 09:15:00,107.72,60.547,52.132,29.775 -2020-05-29 09:30:00,107.65,62.937,52.132,29.775 -2020-05-29 09:45:00,106.88,64.81,52.132,29.775 -2020-05-29 10:00:00,108.37,61.106,49.881,29.775 -2020-05-29 10:15:00,108.93,62.585,49.881,29.775 -2020-05-29 10:30:00,106.62,63.006,49.881,29.775 -2020-05-29 10:45:00,106.59,64.012,49.881,29.775 -2020-05-29 11:00:00,105.28,60.29,49.396,29.775 -2020-05-29 11:15:00,105.09,60.472,49.396,29.775 -2020-05-29 11:30:00,105.21,62.038999999999994,49.396,29.775 -2020-05-29 11:45:00,107.75,62.458999999999996,49.396,29.775 -2020-05-29 12:00:00,107.33,58.667,46.7,29.775 -2020-05-29 12:15:00,107.68,57.998999999999995,46.7,29.775 -2020-05-29 12:30:00,104.99,56.981,46.7,29.775 -2020-05-29 12:45:00,108.45,57.851000000000006,46.7,29.775 -2020-05-29 13:00:00,103.8,59.25,44.05,29.775 -2020-05-29 13:15:00,104.04,60.341,44.05,29.775 -2020-05-29 13:30:00,98.47,59.233000000000004,44.05,29.775 -2020-05-29 13:45:00,98.7,57.733999999999995,44.05,29.775 -2020-05-29 14:00:00,101.02,58.231,42.805,29.775 -2020-05-29 14:15:00,107.75,57.125,42.805,29.775 -2020-05-29 14:30:00,112.27,57.461000000000006,42.805,29.775 -2020-05-29 14:45:00,112.96,57.571000000000005,42.805,29.775 -2020-05-29 15:00:00,112.92,58.443000000000005,44.36600000000001,29.775 -2020-05-29 15:15:00,113.34,55.558,44.36600000000001,29.775 -2020-05-29 15:30:00,113.29,52.812,44.36600000000001,29.775 -2020-05-29 15:45:00,113.64,51.027,44.36600000000001,29.775 -2020-05-29 16:00:00,113.52,52.907,46.928999999999995,29.775 -2020-05-29 16:15:00,114.14,52.87,46.928999999999995,29.775 -2020-05-29 16:30:00,113.45,52.247,46.928999999999995,29.775 -2020-05-29 16:45:00,114.36,47.736000000000004,46.928999999999995,29.775 -2020-05-29 17:00:00,114.25,51.898,51.468,29.775 -2020-05-29 17:15:00,112.86,52.104,51.468,29.775 -2020-05-29 17:30:00,111.56,51.902,51.468,29.775 -2020-05-29 17:45:00,111.54,50.268,51.468,29.775 -2020-05-29 18:00:00,112.16,53.412,52.58,29.775 -2020-05-29 18:15:00,107.98,53.203,52.58,29.775 -2020-05-29 18:30:00,107.39,50.948,52.58,29.775 -2020-05-29 18:45:00,106.01,56.54600000000001,52.58,29.775 -2020-05-29 19:00:00,102.16,58.183,52.183,29.775 -2020-05-29 19:15:00,99.93,58.201,52.183,29.775 -2020-05-29 19:30:00,97.8,57.68600000000001,52.183,29.775 -2020-05-29 19:45:00,97.65,57.207,52.183,29.775 -2020-05-29 20:00:00,95.98,55.088,58.497,29.775 -2020-05-29 20:15:00,94.76,54.951,58.497,29.775 -2020-05-29 20:30:00,96.05,54.095,58.497,29.775 -2020-05-29 20:45:00,94.03,53.744,58.497,29.775 -2020-05-29 21:00:00,89.57,52.641999999999996,54.731,29.775 -2020-05-29 21:15:00,90.47,55.89,54.731,29.775 -2020-05-29 21:30:00,93.37,56.398999999999994,54.731,29.775 -2020-05-29 21:45:00,92.72,57.673,54.731,29.775 -2020-05-29 22:00:00,88.91,55.195,51.386,29.775 -2020-05-29 22:15:00,88.07,55.836999999999996,51.386,29.775 -2020-05-29 22:30:00,87.69,54.43600000000001,51.386,29.775 -2020-05-29 22:45:00,85.16,52.544,51.386,29.775 -2020-05-29 23:00:00,77.14,48.243,44.463,29.775 -2020-05-29 23:15:00,77.25,44.698,44.463,29.775 -2020-05-29 23:30:00,80.76,41.843999999999994,44.463,29.775 -2020-05-29 23:45:00,79.05,41.086000000000006,44.463,29.775 -2020-05-30 00:00:00,76.42,33.446,42.833999999999996,29.662 -2020-05-30 00:15:00,70.78,32.48,42.833999999999996,29.662 -2020-05-30 00:30:00,68.05,31.618000000000002,42.833999999999996,29.662 -2020-05-30 00:45:00,68.33,30.462,42.833999999999996,29.662 -2020-05-30 01:00:00,68.06,30.156,37.859,29.662 -2020-05-30 01:15:00,67.11,29.238000000000003,37.859,29.662 -2020-05-30 01:30:00,65.83,27.27,37.859,29.662 -2020-05-30 01:45:00,66.87,27.154,37.859,29.662 -2020-05-30 02:00:00,69.9,27.255,35.327,29.662 -2020-05-30 02:15:00,73.43,24.915,35.327,29.662 -2020-05-30 02:30:00,73.36,27.076999999999998,35.327,29.662 -2020-05-30 02:45:00,69.26,28.019000000000002,35.327,29.662 -2020-05-30 03:00:00,65.65,30.165,34.908,29.662 -2020-05-30 03:15:00,65.73,27.055,34.908,29.662 -2020-05-30 03:30:00,66.22,26.081999999999997,34.908,29.662 -2020-05-30 03:45:00,64.96,28.008000000000003,34.908,29.662 -2020-05-30 04:00:00,63.16,35.196999999999996,34.84,29.662 -2020-05-30 04:15:00,63.06,42.316,34.84,29.662 -2020-05-30 04:30:00,60.91,39.02,34.84,29.662 -2020-05-30 04:45:00,65.06,39.03,34.84,29.662 -2020-05-30 05:00:00,64.16,50.458,34.222,29.662 -2020-05-30 05:15:00,65.68,55.727,34.222,29.662 -2020-05-30 05:30:00,66.81,47.24,34.222,29.662 -2020-05-30 05:45:00,68.98,46.597,34.222,29.662 -2020-05-30 06:00:00,71.04,62.797,35.515,29.662 -2020-05-30 06:15:00,72.65,75.111,35.515,29.662 -2020-05-30 06:30:00,72.85,68.265,35.515,29.662 -2020-05-30 06:45:00,75.19,63.847,35.515,29.662 -2020-05-30 07:00:00,78.59,61.262,39.687,29.662 -2020-05-30 07:15:00,80.62,60.335,39.687,29.662 -2020-05-30 07:30:00,84.57,57.398999999999994,39.687,29.662 -2020-05-30 07:45:00,86.6,57.178000000000004,39.687,29.662 -2020-05-30 08:00:00,86.67,53.312,44.9,29.662 -2020-05-30 08:15:00,86.66,56.153999999999996,44.9,29.662 -2020-05-30 08:30:00,87.74,55.246,44.9,29.662 -2020-05-30 08:45:00,88.34,58.092,44.9,29.662 -2020-05-30 09:00:00,88.31,55.77,45.724,29.662 -2020-05-30 09:15:00,89.73,56.852,45.724,29.662 -2020-05-30 09:30:00,90.73,59.906000000000006,45.724,29.662 -2020-05-30 09:45:00,90.92,61.423,45.724,29.662 -2020-05-30 10:00:00,90.8,58.273999999999994,43.123999999999995,29.662 -2020-05-30 10:15:00,91.47,60.143,43.123999999999995,29.662 -2020-05-30 10:30:00,90.99,60.29600000000001,43.123999999999995,29.662 -2020-05-30 10:45:00,93.34,61.288000000000004,43.123999999999995,29.662 -2020-05-30 11:00:00,92.41,57.467,40.255,29.662 -2020-05-30 11:15:00,90.73,58.301,40.255,29.662 -2020-05-30 11:30:00,88.51,59.858999999999995,40.255,29.662 -2020-05-30 11:45:00,87.44,60.681000000000004,40.255,29.662 -2020-05-30 12:00:00,84.12,56.977,38.582,29.662 -2020-05-30 12:15:00,84.24,57.239,38.582,29.662 -2020-05-30 12:30:00,83.18,56.147,38.582,29.662 -2020-05-30 12:45:00,81.0,57.498999999999995,38.582,29.662 -2020-05-30 13:00:00,79.85,58.083999999999996,36.043,29.662 -2020-05-30 13:15:00,84.69,58.198,36.043,29.662 -2020-05-30 13:30:00,83.22,57.165,36.043,29.662 -2020-05-30 13:45:00,79.43,54.551,36.043,29.662 -2020-05-30 14:00:00,77.05,55.413999999999994,35.216,29.662 -2020-05-30 14:15:00,77.16,53.035,35.216,29.662 -2020-05-30 14:30:00,76.32,52.515,35.216,29.662 -2020-05-30 14:45:00,76.2,53.118,35.216,29.662 -2020-05-30 15:00:00,77.38,54.601000000000006,36.759,29.662 -2020-05-30 15:15:00,76.91,52.538000000000004,36.759,29.662 -2020-05-30 15:30:00,75.07,50.324,36.759,29.662 -2020-05-30 15:45:00,72.67,47.688,36.759,29.662 -2020-05-30 16:00:00,73.75,51.426,40.086,29.662 -2020-05-30 16:15:00,77.63,50.755,40.086,29.662 -2020-05-30 16:30:00,77.61,50.346000000000004,40.086,29.662 -2020-05-30 16:45:00,79.19,45.966,40.086,29.662 -2020-05-30 17:00:00,80.06,48.941,44.876999999999995,29.662 -2020-05-30 17:15:00,80.99,47.513999999999996,44.876999999999995,29.662 -2020-05-30 17:30:00,81.71,47.153999999999996,44.876999999999995,29.662 -2020-05-30 17:45:00,82.2,45.856,44.876999999999995,29.662 -2020-05-30 18:00:00,84.63,50.298,47.056000000000004,29.662 -2020-05-30 18:15:00,85.41,52.016999999999996,47.056000000000004,29.662 -2020-05-30 18:30:00,82.68,51.31,47.056000000000004,29.662 -2020-05-30 18:45:00,82.12,52.935,47.056000000000004,29.662 -2020-05-30 19:00:00,81.55,53.339,45.57,29.662 -2020-05-30 19:15:00,78.78,52.294,45.57,29.662 -2020-05-30 19:30:00,77.84,52.655,45.57,29.662 -2020-05-30 19:45:00,77.76,53.809,45.57,29.662 -2020-05-30 20:00:00,73.8,52.851000000000006,41.685,29.662 -2020-05-30 20:15:00,77.24,52.566,41.685,29.662 -2020-05-30 20:30:00,78.75,50.82899999999999,41.685,29.662 -2020-05-30 20:45:00,79.95,52.173,41.685,29.662 -2020-05-30 21:00:00,76.15,50.175,39.576,29.662 -2020-05-30 21:15:00,75.58,53.202,39.576,29.662 -2020-05-30 21:30:00,73.83,54.123000000000005,39.576,29.662 -2020-05-30 21:45:00,73.25,54.816,39.576,29.662 -2020-05-30 22:00:00,69.37,52.62,39.068000000000005,29.662 -2020-05-30 22:15:00,70.64,54.028999999999996,39.068000000000005,29.662 -2020-05-30 22:30:00,66.88,53.56100000000001,39.068000000000005,29.662 -2020-05-30 22:45:00,65.37,52.398999999999994,39.068000000000005,29.662 -2020-05-30 23:00:00,61.82,47.92100000000001,32.06,29.662 -2020-05-30 23:15:00,61.6,44.477,32.06,29.662 -2020-05-30 23:30:00,60.72,43.583999999999996,32.06,29.662 -2020-05-30 23:45:00,59.52,42.652,32.06,29.662 -2020-05-31 00:00:00,58.29,34.622,28.825,29.662 -2020-05-31 00:15:00,58.97,32.507,28.825,29.662 -2020-05-31 00:30:00,58.75,31.43,28.825,29.662 -2020-05-31 00:45:00,58.69,30.32,28.825,29.662 -2020-05-31 01:00:00,56.94,30.25,25.995,29.662 -2020-05-31 01:15:00,57.91,29.410999999999998,25.995,29.662 -2020-05-31 01:30:00,54.43,27.41,25.995,29.662 -2020-05-31 01:45:00,57.82,26.866,25.995,29.662 -2020-05-31 02:00:00,57.05,26.883000000000003,24.394000000000002,29.662 -2020-05-31 02:15:00,57.16,25.024,24.394000000000002,29.662 -2020-05-31 02:30:00,57.04,27.545,24.394000000000002,29.662 -2020-05-31 02:45:00,57.15,28.318,24.394000000000002,29.662 -2020-05-31 03:00:00,56.31,31.146,22.916999999999998,29.662 -2020-05-31 03:15:00,56.76,28.165,22.916999999999998,29.662 -2020-05-31 03:30:00,57.63,26.795,22.916999999999998,29.662 -2020-05-31 03:45:00,57.02,27.980999999999998,22.916999999999998,29.662 -2020-05-31 04:00:00,54.07,35.034,23.576999999999998,29.662 -2020-05-31 04:15:00,53.44,41.483000000000004,23.576999999999998,29.662 -2020-05-31 04:30:00,52.41,39.448,23.576999999999998,29.662 -2020-05-31 04:45:00,52.3,39.071999999999996,23.576999999999998,29.662 -2020-05-31 05:00:00,51.54,49.851000000000006,22.730999999999998,29.662 -2020-05-31 05:15:00,50.75,53.773999999999994,22.730999999999998,29.662 -2020-05-31 05:30:00,50.89,44.93899999999999,22.730999999999998,29.662 -2020-05-31 05:45:00,52.44,44.14,22.730999999999998,29.662 -2020-05-31 06:00:00,54.87,58.076,22.34,29.662 -2020-05-31 06:15:00,54.95,70.82600000000001,22.34,29.662 -2020-05-31 06:30:00,56.67,63.121,22.34,29.662 -2020-05-31 06:45:00,59.11,57.573,22.34,29.662 -2020-05-31 07:00:00,60.32,55.717,24.691999999999997,29.662 -2020-05-31 07:15:00,62.84,53.083,24.691999999999997,29.662 -2020-05-31 07:30:00,62.65,51.083999999999996,24.691999999999997,29.662 -2020-05-31 07:45:00,62.23,50.706,24.691999999999997,29.662 -2020-05-31 08:00:00,63.06,47.919,29.340999999999998,29.662 -2020-05-31 08:15:00,62.23,51.89,29.340999999999998,29.662 -2020-05-31 08:30:00,64.21,52.13399999999999,29.340999999999998,29.662 -2020-05-31 08:45:00,65.4,55.338,29.340999999999998,29.662 -2020-05-31 09:00:00,62.96,52.817,30.788,29.662 -2020-05-31 09:15:00,61.99,53.562,30.788,29.662 -2020-05-31 09:30:00,59.44,56.989,30.788,29.662 -2020-05-31 09:45:00,62.19,59.445,30.788,29.662 -2020-05-31 10:00:00,62.46,57.333999999999996,30.158,29.662 -2020-05-31 10:15:00,62.53,59.471000000000004,30.158,29.662 -2020-05-31 10:30:00,63.05,59.968999999999994,30.158,29.662 -2020-05-31 10:45:00,65.84,61.492,30.158,29.662 -2020-05-31 11:00:00,61.04,57.544,32.056,29.662 -2020-05-31 11:15:00,61.5,58.008,32.056,29.662 -2020-05-31 11:30:00,63.18,59.845,32.056,29.662 -2020-05-31 11:45:00,61.81,61.044,32.056,29.662 -2020-05-31 12:00:00,59.18,58.198,28.671999999999997,29.662 -2020-05-31 12:15:00,59.97,58.324,28.671999999999997,29.662 -2020-05-31 12:30:00,55.08,57.066,28.671999999999997,29.662 -2020-05-31 12:45:00,55.72,57.618,28.671999999999997,29.662 -2020-05-31 13:00:00,57.1,57.784,23.171,29.662 -2020-05-31 13:15:00,57.89,58.04600000000001,23.171,29.662 -2020-05-31 13:30:00,60.84,55.958,23.171,29.662 -2020-05-31 13:45:00,58.45,54.222,23.171,29.662 -2020-05-31 14:00:00,55.33,56.27,19.11,29.662 -2020-05-31 14:15:00,57.48,54.55,19.11,29.662 -2020-05-31 14:30:00,55.43,53.14,19.11,29.662 -2020-05-31 14:45:00,56.24,52.672,19.11,29.662 -2020-05-31 15:00:00,56.35,53.988,19.689,29.662 -2020-05-31 15:15:00,59.22,51.339,19.689,29.662 -2020-05-31 15:30:00,57.36,49.071999999999996,19.689,29.662 -2020-05-31 15:45:00,59.35,46.838,19.689,29.662 -2020-05-31 16:00:00,63.4,49.468,22.875,29.662 -2020-05-31 16:15:00,64.4,48.803999999999995,22.875,29.662 -2020-05-31 16:30:00,66.23,49.398999999999994,22.875,29.662 -2020-05-31 16:45:00,67.91,45.062,22.875,29.662 -2020-05-31 17:00:00,72.6,48.413999999999994,33.884,29.662 -2020-05-31 17:15:00,71.61,48.3,33.884,29.662 -2020-05-31 17:30:00,75.13,48.739,33.884,29.662 -2020-05-31 17:45:00,76.52,48.29,33.884,29.662 -2020-05-31 18:00:00,79.29,53.143,38.453,29.662 -2020-05-31 18:15:00,79.24,54.731,38.453,29.662 -2020-05-31 18:30:00,79.41,53.353,38.453,29.662 -2020-05-31 18:45:00,83.37,55.465,38.453,29.662 -2020-05-31 19:00:00,80.11,57.818000000000005,39.221,29.662 -2020-05-31 19:15:00,85.23,55.82899999999999,39.221,29.662 -2020-05-31 19:30:00,84.73,55.917,39.221,29.662 -2020-05-31 19:45:00,86.55,56.916000000000004,39.221,29.662 -2020-05-31 20:00:00,86.5,56.137,37.871,29.662 -2020-05-31 20:15:00,86.56,55.92,37.871,29.662 -2020-05-31 20:30:00,87.79,55.214,37.871,29.662 -2020-05-31 20:45:00,86.92,54.773999999999994,37.871,29.662 -2020-05-31 21:00:00,81.05,52.123999999999995,36.465,29.662 -2020-05-31 21:15:00,84.64,54.754,36.465,29.662 -2020-05-31 21:30:00,78.67,55.098,36.465,29.662 -2020-05-31 21:45:00,78.8,56.174,36.465,29.662 -2020-05-31 22:00:00,77.15,55.681999999999995,36.092,29.662 -2020-05-31 22:15:00,82.27,55.36600000000001,36.092,29.662 -2020-05-31 22:30:00,81.25,53.788000000000004,36.092,29.662 -2020-05-31 22:45:00,78.71,51.242,36.092,29.662 -2020-05-31 23:00:00,54.1,45.903999999999996,31.013,29.662 -2020-05-31 23:15:00,55.38,44.067,31.013,29.662 -2020-05-31 23:30:00,54.63,42.828,31.013,29.662 -2020-05-31 23:45:00,53.74,42.213,31.013,29.662 -2020-06-01 00:00:00,52.35,28.079,19.295,29.17 -2020-06-01 00:15:00,52.65,26.704,19.295,29.17 -2020-06-01 00:30:00,52.03,25.386999999999997,19.295,29.17 -2020-06-01 00:45:00,52.09,24.485,19.295,29.17 -2020-06-01 01:00:00,50.91,24.236,15.365,29.17 -2020-06-01 01:15:00,52.12,23.596,15.365,29.17 -2020-06-01 01:30:00,50.95,21.804000000000002,15.365,29.17 -2020-06-01 01:45:00,51.01,21.910999999999998,15.365,29.17 -2020-06-01 02:00:00,50.17,21.433000000000003,13.03,29.17 -2020-06-01 02:15:00,50.81,19.726,13.03,29.17 -2020-06-01 02:30:00,50.97,22.149,13.03,29.17 -2020-06-01 02:45:00,51.9,22.715999999999998,13.03,29.17 -2020-06-01 03:00:00,51.98,24.44,13.46,29.17 -2020-06-01 03:15:00,52.07,21.471,13.46,29.17 -2020-06-01 03:30:00,52.7,20.089000000000002,13.46,29.17 -2020-06-01 03:45:00,49.25,20.781,13.46,29.17 -2020-06-01 04:00:00,51.66,26.259,13.305,29.17 -2020-06-01 04:15:00,51.17,32.0,13.305,29.17 -2020-06-01 04:30:00,48.48,29.869,13.305,29.17 -2020-06-01 04:45:00,50.55,29.331999999999997,13.305,29.17 -2020-06-01 05:00:00,48.78,38.022,13.482000000000001,29.17 -2020-06-01 05:15:00,47.36,39.586,13.482000000000001,29.17 -2020-06-01 05:30:00,50.13,31.343000000000004,13.482000000000001,29.17 -2020-06-01 05:45:00,50.0,31.281,13.482000000000001,29.17 -2020-06-01 06:00:00,51.06,43.007,14.677999999999999,29.17 -2020-06-01 06:15:00,50.92,53.478,14.677999999999999,29.17 -2020-06-01 06:30:00,51.78,46.945,14.677999999999999,29.17 -2020-06-01 06:45:00,52.65,42.336999999999996,14.677999999999999,29.17 -2020-06-01 07:00:00,54.68,42.636,18.473,29.17 -2020-06-01 07:15:00,53.98,40.101,18.473,29.17 -2020-06-01 07:30:00,53.67,38.333,18.473,29.17 -2020-06-01 07:45:00,54.26,38.079,18.473,29.17 -2020-06-01 08:00:00,54.22,38.016,18.142,29.17 -2020-06-01 08:15:00,53.58,41.693999999999996,18.142,29.17 -2020-06-01 08:30:00,52.87,42.685,18.142,29.17 -2020-06-01 08:45:00,53.28,45.778999999999996,18.142,29.17 -2020-06-01 09:00:00,50.94,42.258,19.148,29.17 -2020-06-01 09:15:00,51.9,43.126999999999995,19.148,29.17 -2020-06-01 09:30:00,47.84,46.728,19.148,29.17 -2020-06-01 09:45:00,51.24,49.751999999999995,19.148,29.17 -2020-06-01 10:00:00,53.22,45.975,17.139,29.17 -2020-06-01 10:15:00,55.99,47.87,17.139,29.17 -2020-06-01 10:30:00,57.89,48.418,17.139,29.17 -2020-06-01 10:45:00,57.81,50.29600000000001,17.139,29.17 -2020-06-01 11:00:00,53.25,45.78,18.037,29.17 -2020-06-01 11:15:00,51.93,46.23,18.037,29.17 -2020-06-01 11:30:00,49.85,48.203,18.037,29.17 -2020-06-01 11:45:00,49.1,49.861000000000004,18.037,29.17 -2020-06-01 12:00:00,46.61,47.415,16.559,29.17 -2020-06-01 12:15:00,46.04,47.076,16.559,29.17 -2020-06-01 12:30:00,44.13,46.448,16.559,29.17 -2020-06-01 12:45:00,44.13,47.167,16.559,29.17 -2020-06-01 13:00:00,43.0,47.331,13.697000000000001,29.17 -2020-06-01 13:15:00,42.54,47.643,13.697000000000001,29.17 -2020-06-01 13:30:00,42.78,45.68899999999999,13.697000000000001,29.17 -2020-06-01 13:45:00,44.17,44.308,13.697000000000001,29.17 -2020-06-01 14:00:00,44.11,46.63399999999999,12.578,29.17 -2020-06-01 14:15:00,43.14,44.994,12.578,29.17 -2020-06-01 14:30:00,44.66,43.99,12.578,29.17 -2020-06-01 14:45:00,44.56,43.341,12.578,29.17 -2020-06-01 15:00:00,47.23,44.93899999999999,14.425999999999998,29.17 -2020-06-01 15:15:00,46.69,42.405,14.425999999999998,29.17 -2020-06-01 15:30:00,50.96,40.277,14.425999999999998,29.17 -2020-06-01 15:45:00,50.68,38.414,14.425999999999998,29.17 -2020-06-01 16:00:00,52.39,40.319,18.287,29.17 -2020-06-01 16:15:00,55.05,39.81,18.287,29.17 -2020-06-01 16:30:00,57.45,39.958,18.287,29.17 -2020-06-01 16:45:00,61.38,36.124,18.287,29.17 -2020-06-01 17:00:00,65.43,39.303000000000004,24.461,29.17 -2020-06-01 17:15:00,66.16,38.798,24.461,29.17 -2020-06-01 17:30:00,68.01,38.955999999999996,24.461,29.17 -2020-06-01 17:45:00,69.86,38.388000000000005,24.461,29.17 -2020-06-01 18:00:00,71.38,42.556000000000004,31.44,29.17 -2020-06-01 18:15:00,71.03,43.601000000000006,31.44,29.17 -2020-06-01 18:30:00,73.56,42.254,31.44,29.17 -2020-06-01 18:45:00,79.8,43.708999999999996,31.44,29.17 -2020-06-01 19:00:00,80.73,46.256,34.859,29.17 -2020-06-01 19:15:00,73.32,44.074,34.859,29.17 -2020-06-01 19:30:00,73.38,43.883,34.859,29.17 -2020-06-01 19:45:00,70.97,44.55,34.859,29.17 -2020-06-01 20:00:00,73.37,44.213,42.937,29.17 -2020-06-01 20:15:00,81.13,44.318999999999996,42.937,29.17 -2020-06-01 20:30:00,83.24,43.968,42.937,29.17 -2020-06-01 20:45:00,81.93,43.483999999999995,42.937,29.17 -2020-06-01 21:00:00,74.91,41.38399999999999,39.795,29.17 -2020-06-01 21:15:00,74.14,44.074,39.795,29.17 -2020-06-01 21:30:00,74.04,44.778999999999996,39.795,29.17 -2020-06-01 21:45:00,70.96,45.748999999999995,39.795,29.17 -2020-06-01 22:00:00,72.4,44.92100000000001,41.108000000000004,29.17 -2020-06-01 22:15:00,76.24,45.008,41.108000000000004,29.17 -2020-06-01 22:30:00,72.97,43.971000000000004,41.108000000000004,29.17 -2020-06-01 22:45:00,68.25,41.247,41.108000000000004,29.17 -2020-06-01 23:00:00,75.51,37.607,33.82,29.17 -2020-06-01 23:15:00,76.08,35.554,33.82,29.17 -2020-06-01 23:30:00,75.77,34.259,33.82,29.17 -2020-06-01 23:45:00,75.39,33.885,33.82,29.17 -2020-06-02 00:00:00,72.23,27.486,44.625,29.28 -2020-06-02 00:15:00,72.85,28.073,44.625,29.28 -2020-06-02 00:30:00,72.81,27.004,44.625,29.28 -2020-06-02 00:45:00,72.9,26.359,44.625,29.28 -2020-06-02 01:00:00,72.66,25.963,41.733000000000004,29.28 -2020-06-02 01:15:00,73.01,25.336,41.733000000000004,29.28 -2020-06-02 01:30:00,71.48,23.773000000000003,41.733000000000004,29.28 -2020-06-02 01:45:00,71.71,23.325,41.733000000000004,29.28 -2020-06-02 02:00:00,71.14,22.816,39.872,29.28 -2020-06-02 02:15:00,72.89,21.364,39.872,29.28 -2020-06-02 02:30:00,72.11,23.55,39.872,29.28 -2020-06-02 02:45:00,72.88,24.247,39.872,29.28 -2020-06-02 03:00:00,72.62,25.929000000000002,38.711,29.28 -2020-06-02 03:15:00,73.57,24.605999999999998,38.711,29.28 -2020-06-02 03:30:00,74.97,23.865,38.711,29.28 -2020-06-02 03:45:00,74.58,23.045,38.711,29.28 -2020-06-02 04:00:00,76.34,30.565,39.823,29.28 -2020-06-02 04:15:00,80.5,39.384,39.823,29.28 -2020-06-02 04:30:00,80.66,36.830999999999996,39.823,29.28 -2020-06-02 04:45:00,85.79,37.228,39.823,29.28 -2020-06-02 05:00:00,99.7,55.825,43.228,29.28 -2020-06-02 05:15:00,105.56,69.34,43.228,29.28 -2020-06-02 05:30:00,108.46,59.775,43.228,29.28 -2020-06-02 05:45:00,108.08,55.667,43.228,29.28 -2020-06-02 06:00:00,115.07,57.045,54.316,29.28 -2020-06-02 06:15:00,119.43,57.893,54.316,29.28 -2020-06-02 06:30:00,122.79,55.489,54.316,29.28 -2020-06-02 06:45:00,121.32,55.802,54.316,29.28 -2020-06-02 07:00:00,119.92,56.843,65.758,29.28 -2020-06-02 07:15:00,127.93,56.339,65.758,29.28 -2020-06-02 07:30:00,129.28,53.638999999999996,65.758,29.28 -2020-06-02 07:45:00,129.07,52.556999999999995,65.758,29.28 -2020-06-02 08:00:00,127.22,49.989,57.983000000000004,29.28 -2020-06-02 08:15:00,131.77,51.858999999999995,57.983000000000004,29.28 -2020-06-02 08:30:00,134.36,51.706,57.983000000000004,29.28 -2020-06-02 08:45:00,133.94,53.798,57.983000000000004,29.28 -2020-06-02 09:00:00,128.31,49.465,52.653,29.28 -2020-06-02 09:15:00,126.41,48.339,52.653,29.28 -2020-06-02 09:30:00,129.84,51.693999999999996,52.653,29.28 -2020-06-02 09:45:00,130.52,53.861000000000004,52.653,29.28 -2020-06-02 10:00:00,129.02,49.056999999999995,51.408,29.28 -2020-06-02 10:15:00,128.01,50.575,51.408,29.28 -2020-06-02 10:30:00,124.54,50.652,51.408,29.28 -2020-06-02 10:45:00,130.5,52.098,51.408,29.28 -2020-06-02 11:00:00,130.58,47.683,51.913000000000004,29.28 -2020-06-02 11:15:00,129.85,48.934,51.913000000000004,29.28 -2020-06-02 11:30:00,124.12,50.481,51.913000000000004,29.28 -2020-06-02 11:45:00,123.31,52.216,51.913000000000004,29.28 -2020-06-02 12:00:00,125.14,48.06100000000001,49.508,29.28 -2020-06-02 12:15:00,122.36,48.11600000000001,49.508,29.28 -2020-06-02 12:30:00,118.37,47.354,49.508,29.28 -2020-06-02 12:45:00,115.76,48.853,49.508,29.28 -2020-06-02 13:00:00,120.83,49.547,50.007,29.28 -2020-06-02 13:15:00,121.9,50.588,50.007,29.28 -2020-06-02 13:30:00,116.48,48.832,50.007,29.28 -2020-06-02 13:45:00,110.09,47.396,50.007,29.28 -2020-06-02 14:00:00,109.79,49.284,49.778999999999996,29.28 -2020-06-02 14:15:00,111.56,47.966,49.778999999999996,29.28 -2020-06-02 14:30:00,112.09,47.093999999999994,49.778999999999996,29.28 -2020-06-02 14:45:00,114.29,47.645,49.778999999999996,29.28 -2020-06-02 15:00:00,110.48,48.917,51.559,29.28 -2020-06-02 15:15:00,103.02,46.593999999999994,51.559,29.28 -2020-06-02 15:30:00,100.93,44.923,51.559,29.28 -2020-06-02 15:45:00,105.33,42.842,51.559,29.28 -2020-06-02 16:00:00,105.0,45.167,53.531000000000006,29.28 -2020-06-02 16:15:00,105.3,44.769,53.531000000000006,29.28 -2020-06-02 16:30:00,106.76,43.912,53.531000000000006,29.28 -2020-06-02 16:45:00,111.6,40.665,53.531000000000006,29.28 -2020-06-02 17:00:00,113.3,43.038999999999994,59.497,29.28 -2020-06-02 17:15:00,109.25,43.193000000000005,59.497,29.28 -2020-06-02 17:30:00,106.26,42.56,59.497,29.28 -2020-06-02 17:45:00,108.2,41.12,59.497,29.28 -2020-06-02 18:00:00,110.8,43.38,59.861999999999995,29.28 -2020-06-02 18:15:00,114.43,43.85,59.861999999999995,29.28 -2020-06-02 18:30:00,111.78,41.553999999999995,59.861999999999995,29.28 -2020-06-02 18:45:00,107.85,45.961000000000006,59.861999999999995,29.28 -2020-06-02 19:00:00,102.8,46.961999999999996,60.989,29.28 -2020-06-02 19:15:00,105.39,46.086000000000006,60.989,29.28 -2020-06-02 19:30:00,98.65,45.317,60.989,29.28 -2020-06-02 19:45:00,98.03,45.648,60.989,29.28 -2020-06-02 20:00:00,95.94,44.276,68.35600000000001,29.28 -2020-06-02 20:15:00,101.74,44.063,68.35600000000001,29.28 -2020-06-02 20:30:00,101.49,44.187,68.35600000000001,29.28 -2020-06-02 20:45:00,102.03,44.443000000000005,68.35600000000001,29.28 -2020-06-02 21:00:00,92.62,42.57,59.251000000000005,29.28 -2020-06-02 21:15:00,92.31,44.255,59.251000000000005,29.28 -2020-06-02 21:30:00,87.58,45.371,59.251000000000005,29.28 -2020-06-02 21:45:00,86.58,46.31399999999999,59.251000000000005,29.28 -2020-06-02 22:00:00,81.88,43.613,54.736999999999995,29.28 -2020-06-02 22:15:00,80.55,45.158,54.736999999999995,29.28 -2020-06-02 22:30:00,78.5,39.465,54.736999999999995,29.28 -2020-06-02 22:45:00,77.43,36.318000000000005,54.736999999999995,29.28 -2020-06-02 23:00:00,74.39,32.014,46.806999999999995,29.28 -2020-06-02 23:15:00,74.81,30.081,46.806999999999995,29.28 -2020-06-02 23:30:00,74.8,28.956999999999997,46.806999999999995,29.28 -2020-06-02 23:45:00,73.41,28.416999999999998,46.806999999999995,29.28 -2020-06-03 00:00:00,70.04,27.325,43.824,29.28 -2020-06-03 00:15:00,71.56,27.914,43.824,29.28 -2020-06-03 00:30:00,68.67,26.846,43.824,29.28 -2020-06-03 00:45:00,70.95,26.205,43.824,29.28 -2020-06-03 01:00:00,71.49,25.829,39.86,29.28 -2020-06-03 01:15:00,71.44,25.180999999999997,39.86,29.28 -2020-06-03 01:30:00,70.05,23.608,39.86,29.28 -2020-06-03 01:45:00,70.5,23.154,39.86,29.28 -2020-06-03 02:00:00,70.07,22.645,37.931999999999995,29.28 -2020-06-03 02:15:00,71.93,21.186999999999998,37.931999999999995,29.28 -2020-06-03 02:30:00,70.28,23.375,37.931999999999995,29.28 -2020-06-03 02:45:00,70.45,24.079,37.931999999999995,29.28 -2020-06-03 03:00:00,71.64,25.763,37.579,29.28 -2020-06-03 03:15:00,72.7,24.436999999999998,37.579,29.28 -2020-06-03 03:30:00,72.09,23.701,37.579,29.28 -2020-06-03 03:45:00,72.31,22.904,37.579,29.28 -2020-06-03 04:00:00,76.85,30.365,37.931999999999995,29.28 -2020-06-03 04:15:00,80.4,39.134,37.931999999999995,29.28 -2020-06-03 04:30:00,88.31,36.568000000000005,37.931999999999995,29.28 -2020-06-03 04:45:00,93.4,36.96,37.931999999999995,29.28 -2020-06-03 05:00:00,94.29,55.43600000000001,40.942,29.28 -2020-06-03 05:15:00,98.54,68.80199999999999,40.942,29.28 -2020-06-03 05:30:00,101.92,59.305,40.942,29.28 -2020-06-03 05:45:00,106.14,55.255,40.942,29.28 -2020-06-03 06:00:00,113.26,56.653,56.516999999999996,29.28 -2020-06-03 06:15:00,112.2,57.481,56.516999999999996,29.28 -2020-06-03 06:30:00,106.99,55.099,56.516999999999996,29.28 -2020-06-03 06:45:00,110.19,55.44,56.516999999999996,29.28 -2020-06-03 07:00:00,113.12,56.468999999999994,71.707,29.28 -2020-06-03 07:15:00,116.27,55.978,71.707,29.28 -2020-06-03 07:30:00,115.88,53.263000000000005,71.707,29.28 -2020-06-03 07:45:00,113.15,52.215,71.707,29.28 -2020-06-03 08:00:00,113.28,49.655,61.17,29.28 -2020-06-03 08:15:00,115.37,51.568000000000005,61.17,29.28 -2020-06-03 08:30:00,116.39,51.406000000000006,61.17,29.28 -2020-06-03 08:45:00,112.02,53.507,61.17,29.28 -2020-06-03 09:00:00,110.21,49.167,57.282,29.28 -2020-06-03 09:15:00,113.3,48.047,57.282,29.28 -2020-06-03 09:30:00,110.77,51.406000000000006,57.282,29.28 -2020-06-03 09:45:00,112.52,53.597,57.282,29.28 -2020-06-03 10:00:00,114.37,48.805,54.026,29.28 -2020-06-03 10:15:00,114.82,50.343,54.026,29.28 -2020-06-03 10:30:00,116.42,50.426,54.026,29.28 -2020-06-03 10:45:00,116.13,51.88,54.026,29.28 -2020-06-03 11:00:00,109.87,47.458,54.277,29.28 -2020-06-03 11:15:00,104.76,48.72,54.277,29.28 -2020-06-03 11:30:00,108.82,50.256,54.277,29.28 -2020-06-03 11:45:00,108.87,51.997,54.277,29.28 -2020-06-03 12:00:00,106.62,47.876000000000005,52.552,29.28 -2020-06-03 12:15:00,102.67,47.937,52.552,29.28 -2020-06-03 12:30:00,98.68,47.147,52.552,29.28 -2020-06-03 12:45:00,105.85,48.65,52.552,29.28 -2020-06-03 13:00:00,107.79,49.343999999999994,52.111999999999995,29.28 -2020-06-03 13:15:00,108.61,50.388000000000005,52.111999999999995,29.28 -2020-06-03 13:30:00,102.26,48.643,52.111999999999995,29.28 -2020-06-03 13:45:00,104.72,47.208,52.111999999999995,29.28 -2020-06-03 14:00:00,111.64,49.123000000000005,52.066,29.28 -2020-06-03 14:15:00,108.26,47.799,52.066,29.28 -2020-06-03 14:30:00,108.8,46.897,52.066,29.28 -2020-06-03 14:45:00,103.39,47.453,52.066,29.28 -2020-06-03 15:00:00,103.63,48.77,52.523999999999994,29.28 -2020-06-03 15:15:00,105.44,46.435,52.523999999999994,29.28 -2020-06-03 15:30:00,104.72,44.748999999999995,52.523999999999994,29.28 -2020-06-03 15:45:00,100.41,42.653999999999996,52.523999999999994,29.28 -2020-06-03 16:00:00,100.42,45.018,54.101000000000006,29.28 -2020-06-03 16:15:00,110.51,44.611000000000004,54.101000000000006,29.28 -2020-06-03 16:30:00,111.07,43.773999999999994,54.101000000000006,29.28 -2020-06-03 16:45:00,109.26,40.488,54.101000000000006,29.28 -2020-06-03 17:00:00,104.98,42.896,58.155,29.28 -2020-06-03 17:15:00,111.12,43.037,58.155,29.28 -2020-06-03 17:30:00,114.79,42.395,58.155,29.28 -2020-06-03 17:45:00,115.69,40.927,58.155,29.28 -2020-06-03 18:00:00,108.75,43.202,60.205,29.28 -2020-06-03 18:15:00,112.12,43.644,60.205,29.28 -2020-06-03 18:30:00,114.87,41.341,60.205,29.28 -2020-06-03 18:45:00,113.03,45.747,60.205,29.28 -2020-06-03 19:00:00,104.74,46.748999999999995,61.568999999999996,29.28 -2020-06-03 19:15:00,99.58,45.865,61.568999999999996,29.28 -2020-06-03 19:30:00,104.58,45.088,61.568999999999996,29.28 -2020-06-03 19:45:00,104.49,45.413999999999994,61.568999999999996,29.28 -2020-06-03 20:00:00,102.46,44.022,68.145,29.28 -2020-06-03 20:15:00,95.88,43.805,68.145,29.28 -2020-06-03 20:30:00,95.33,43.943999999999996,68.145,29.28 -2020-06-03 20:45:00,95.16,44.238,68.145,29.28 -2020-06-03 21:00:00,92.82,42.37,59.696000000000005,29.28 -2020-06-03 21:15:00,92.05,44.066,59.696000000000005,29.28 -2020-06-03 21:30:00,89.64,45.158,59.696000000000005,29.28 -2020-06-03 21:45:00,88.21,46.118,59.696000000000005,29.28 -2020-06-03 22:00:00,83.59,43.44,54.861999999999995,29.28 -2020-06-03 22:15:00,82.97,44.998000000000005,54.861999999999995,29.28 -2020-06-03 22:30:00,81.26,39.305,54.861999999999995,29.28 -2020-06-03 22:45:00,80.33,36.147,54.861999999999995,29.28 -2020-06-03 23:00:00,75.58,31.816999999999997,45.568000000000005,29.28 -2020-06-03 23:15:00,75.33,29.924,45.568000000000005,29.28 -2020-06-03 23:30:00,74.44,28.808000000000003,45.568000000000005,29.28 -2020-06-03 23:45:00,73.46,28.256999999999998,45.568000000000005,29.28 -2020-06-04 00:00:00,73.36,27.168000000000003,40.181,29.28 -2020-06-04 00:15:00,73.36,27.758000000000003,40.181,29.28 -2020-06-04 00:30:00,72.26,26.691999999999997,40.181,29.28 -2020-06-04 00:45:00,74.73,26.054000000000002,40.181,29.28 -2020-06-04 01:00:00,71.88,25.698,38.296,29.28 -2020-06-04 01:15:00,72.5,25.03,38.296,29.28 -2020-06-04 01:30:00,71.31,23.448,38.296,29.28 -2020-06-04 01:45:00,71.5,22.986,38.296,29.28 -2020-06-04 02:00:00,71.83,22.479,36.575,29.28 -2020-06-04 02:15:00,71.45,21.015,36.575,29.28 -2020-06-04 02:30:00,71.1,23.204,36.575,29.28 -2020-06-04 02:45:00,71.42,23.915,36.575,29.28 -2020-06-04 03:00:00,73.16,25.601,36.394,29.28 -2020-06-04 03:15:00,72.99,24.271,36.394,29.28 -2020-06-04 03:30:00,71.02,23.54,36.394,29.28 -2020-06-04 03:45:00,73.01,22.767,36.394,29.28 -2020-06-04 04:00:00,77.6,30.171,37.207,29.28 -2020-06-04 04:15:00,77.75,38.889,37.207,29.28 -2020-06-04 04:30:00,88.08,36.309,37.207,29.28 -2020-06-04 04:45:00,93.23,36.698,37.207,29.28 -2020-06-04 05:00:00,94.94,55.053999999999995,40.713,29.28 -2020-06-04 05:15:00,96.67,68.271,40.713,29.28 -2020-06-04 05:30:00,104.59,58.843999999999994,40.713,29.28 -2020-06-04 05:45:00,107.94,54.852,40.713,29.28 -2020-06-04 06:00:00,112.46,56.268,50.952,29.28 -2020-06-04 06:15:00,109.5,57.075,50.952,29.28 -2020-06-04 06:30:00,108.67,54.715,50.952,29.28 -2020-06-04 06:45:00,109.33,55.085,50.952,29.28 -2020-06-04 07:00:00,110.44,56.102,64.88,29.28 -2020-06-04 07:15:00,109.83,55.625,64.88,29.28 -2020-06-04 07:30:00,113.96,52.897,64.88,29.28 -2020-06-04 07:45:00,116.37,51.881,64.88,29.28 -2020-06-04 08:00:00,114.22,49.33,55.133,29.28 -2020-06-04 08:15:00,107.51,51.283,55.133,29.28 -2020-06-04 08:30:00,112.36,51.113,55.133,29.28 -2020-06-04 08:45:00,109.8,53.223,55.133,29.28 -2020-06-04 09:00:00,114.08,48.876000000000005,48.912,29.28 -2020-06-04 09:15:00,119.39,47.761,48.912,29.28 -2020-06-04 09:30:00,116.25,51.125,48.912,29.28 -2020-06-04 09:45:00,110.92,53.34,48.912,29.28 -2020-06-04 10:00:00,107.25,48.559,45.968999999999994,29.28 -2020-06-04 10:15:00,107.81,50.117,45.968999999999994,29.28 -2020-06-04 10:30:00,113.72,50.20399999999999,45.968999999999994,29.28 -2020-06-04 10:45:00,116.8,51.668,45.968999999999994,29.28 -2020-06-04 11:00:00,117.17,47.239,44.067,29.28 -2020-06-04 11:15:00,109.05,48.511,44.067,29.28 -2020-06-04 11:30:00,110.66,50.037,44.067,29.28 -2020-06-04 11:45:00,105.85,51.783,44.067,29.28 -2020-06-04 12:00:00,111.23,47.696999999999996,41.501000000000005,29.28 -2020-06-04 12:15:00,113.61,47.762,41.501000000000005,29.28 -2020-06-04 12:30:00,110.92,46.945,41.501000000000005,29.28 -2020-06-04 12:45:00,102.91,48.453,41.501000000000005,29.28 -2020-06-04 13:00:00,102.85,49.145,41.117,29.28 -2020-06-04 13:15:00,107.65,50.192,41.117,29.28 -2020-06-04 13:30:00,107.87,48.458,41.117,29.28 -2020-06-04 13:45:00,112.9,47.026,41.117,29.28 -2020-06-04 14:00:00,99.93,48.964,41.492,29.28 -2020-06-04 14:15:00,105.4,47.635,41.492,29.28 -2020-06-04 14:30:00,103.85,46.70399999999999,41.492,29.28 -2020-06-04 14:45:00,104.92,47.266000000000005,41.492,29.28 -2020-06-04 15:00:00,109.26,48.626000000000005,43.711999999999996,29.28 -2020-06-04 15:15:00,110.94,46.278,43.711999999999996,29.28 -2020-06-04 15:30:00,109.79,44.57899999999999,43.711999999999996,29.28 -2020-06-04 15:45:00,112.69,42.47,43.711999999999996,29.28 -2020-06-04 16:00:00,114.07,44.871,45.446000000000005,29.28 -2020-06-04 16:15:00,109.19,44.458,45.446000000000005,29.28 -2020-06-04 16:30:00,114.59,43.638999999999996,45.446000000000005,29.28 -2020-06-04 16:45:00,116.07,40.316,45.446000000000005,29.28 -2020-06-04 17:00:00,115.34,42.75899999999999,48.803000000000004,29.28 -2020-06-04 17:15:00,110.62,42.886,48.803000000000004,29.28 -2020-06-04 17:30:00,108.75,42.233999999999995,48.803000000000004,29.28 -2020-06-04 17:45:00,116.09,40.74,48.803000000000004,29.28 -2020-06-04 18:00:00,113.07,43.028,51.167,29.28 -2020-06-04 18:15:00,111.11,43.445,51.167,29.28 -2020-06-04 18:30:00,108.92,41.133,51.167,29.28 -2020-06-04 18:45:00,115.29,45.537,51.167,29.28 -2020-06-04 19:00:00,113.15,46.541000000000004,52.486000000000004,29.28 -2020-06-04 19:15:00,104.97,45.648999999999994,52.486000000000004,29.28 -2020-06-04 19:30:00,105.27,44.864,52.486000000000004,29.28 -2020-06-04 19:45:00,105.77,45.185,52.486000000000004,29.28 -2020-06-04 20:00:00,104.54,43.773999999999994,59.635,29.28 -2020-06-04 20:15:00,99.31,43.553999999999995,59.635,29.28 -2020-06-04 20:30:00,96.07,43.706,59.635,29.28 -2020-06-04 20:45:00,96.72,44.038000000000004,59.635,29.28 -2020-06-04 21:00:00,93.51,42.174,54.353,29.28 -2020-06-04 21:15:00,91.29,43.881,54.353,29.28 -2020-06-04 21:30:00,89.16,44.949,54.353,29.28 -2020-06-04 21:45:00,87.45,45.925,54.353,29.28 -2020-06-04 22:00:00,83.88,43.271,49.431999999999995,29.28 -2020-06-04 22:15:00,83.67,44.842,49.431999999999995,29.28 -2020-06-04 22:30:00,80.79,39.148,49.431999999999995,29.28 -2020-06-04 22:45:00,82.95,35.979,49.431999999999995,29.28 -2020-06-04 23:00:00,77.09,31.623,42.872,29.28 -2020-06-04 23:15:00,76.4,29.77,42.872,29.28 -2020-06-04 23:30:00,76.03,28.66,42.872,29.28 -2020-06-04 23:45:00,75.13,28.1,42.872,29.28 -2020-06-05 00:00:00,72.68,25.186999999999998,39.819,29.28 -2020-06-05 00:15:00,74.39,26.006,39.819,29.28 -2020-06-05 00:30:00,73.39,25.189,39.819,29.28 -2020-06-05 00:45:00,72.85,24.973000000000003,39.819,29.28 -2020-06-05 01:00:00,73.16,24.238000000000003,37.797,29.28 -2020-06-05 01:15:00,73.41,23.063000000000002,37.797,29.28 -2020-06-05 01:30:00,71.51,22.136999999999997,37.797,29.28 -2020-06-05 01:45:00,72.07,21.439,37.797,29.28 -2020-06-05 02:00:00,71.82,21.836,36.905,29.28 -2020-06-05 02:15:00,72.76,20.305,36.905,29.28 -2020-06-05 02:30:00,72.71,23.339000000000002,36.905,29.28 -2020-06-05 02:45:00,73.05,23.405,36.905,29.28 -2020-06-05 03:00:00,73.18,25.739,37.1,29.28 -2020-06-05 03:15:00,74.33,23.340999999999998,37.1,29.28 -2020-06-05 03:30:00,73.58,22.383000000000003,37.1,29.28 -2020-06-05 03:45:00,74.46,22.509,37.1,29.28 -2020-06-05 04:00:00,78.21,30.009,37.882,29.28 -2020-06-05 04:15:00,84.39,37.158,37.882,29.28 -2020-06-05 04:30:00,85.9,35.499,37.882,29.28 -2020-06-05 04:45:00,92.12,35.150999999999996,37.882,29.28 -2020-06-05 05:00:00,94.15,52.801,40.777,29.28 -2020-06-05 05:15:00,96.53,66.937,40.777,29.28 -2020-06-05 05:30:00,98.78,57.873000000000005,40.777,29.28 -2020-06-05 05:45:00,105.4,53.503,40.777,29.28 -2020-06-05 06:00:00,110.45,55.2,55.528,29.28 -2020-06-05 06:15:00,115.64,55.998999999999995,55.528,29.28 -2020-06-05 06:30:00,113.37,53.525,55.528,29.28 -2020-06-05 06:45:00,113.78,53.961000000000006,55.528,29.28 -2020-06-05 07:00:00,117.75,55.501999999999995,67.749,29.28 -2020-06-05 07:15:00,116.94,56.013000000000005,67.749,29.28 -2020-06-05 07:30:00,113.93,51.391999999999996,67.749,29.28 -2020-06-05 07:45:00,110.35,50.114,67.749,29.28 -2020-06-05 08:00:00,109.2,48.199,57.55,29.28 -2020-06-05 08:15:00,110.52,50.788000000000004,57.55,29.28 -2020-06-05 08:30:00,122.31,50.622,57.55,29.28 -2020-06-05 08:45:00,120.12,52.435,57.55,29.28 -2020-06-05 09:00:00,121.23,45.938,52.588,29.28 -2020-06-05 09:15:00,117.3,46.71,52.588,29.28 -2020-06-05 09:30:00,116.81,49.378,52.588,29.28 -2020-06-05 09:45:00,121.98,51.972,52.588,29.28 -2020-06-05 10:00:00,119.87,46.911,49.772,29.28 -2020-06-05 10:15:00,116.15,48.356,49.772,29.28 -2020-06-05 10:30:00,115.85,48.961999999999996,49.772,29.28 -2020-06-05 10:45:00,117.93,50.29600000000001,49.772,29.28 -2020-06-05 11:00:00,114.69,46.1,49.226000000000006,29.28 -2020-06-05 11:15:00,113.17,46.253,49.226000000000006,29.28 -2020-06-05 11:30:00,105.0,47.621,49.226000000000006,29.28 -2020-06-05 11:45:00,103.88,48.471000000000004,49.226000000000006,29.28 -2020-06-05 12:00:00,100.79,44.951,45.705,29.28 -2020-06-05 12:15:00,102.92,44.177,45.705,29.28 -2020-06-05 12:30:00,99.51,43.463,45.705,29.28 -2020-06-05 12:45:00,100.37,44.29,45.705,29.28 -2020-06-05 13:00:00,99.89,45.646,43.133,29.28 -2020-06-05 13:15:00,99.79,46.958,43.133,29.28 -2020-06-05 13:30:00,100.88,45.986999999999995,43.133,29.28 -2020-06-05 13:45:00,99.87,44.84,43.133,29.28 -2020-06-05 14:00:00,99.86,45.912,41.989,29.28 -2020-06-05 14:15:00,97.26,44.972,41.989,29.28 -2020-06-05 14:30:00,96.34,45.495,41.989,29.28 -2020-06-05 14:45:00,94.99,45.443999999999996,41.989,29.28 -2020-06-05 15:00:00,95.46,46.718,43.728,29.28 -2020-06-05 15:15:00,98.1,44.083999999999996,43.728,29.28 -2020-06-05 15:30:00,95.79,41.667,43.728,29.28 -2020-06-05 15:45:00,95.92,40.283,43.728,29.28 -2020-06-05 16:00:00,97.42,41.795,45.93899999999999,29.28 -2020-06-05 16:15:00,100.06,41.875,45.93899999999999,29.28 -2020-06-05 16:30:00,99.13,40.913000000000004,45.93899999999999,29.28 -2020-06-05 16:45:00,101.84,36.795,45.93899999999999,29.28 -2020-06-05 17:00:00,103.81,40.939,50.488,29.28 -2020-06-05 17:15:00,103.47,40.846,50.488,29.28 -2020-06-05 17:30:00,103.83,40.308,50.488,29.28 -2020-06-05 17:45:00,104.89,38.606,50.488,29.28 -2020-06-05 18:00:00,103.73,41.031000000000006,52.408,29.28 -2020-06-05 18:15:00,103.19,40.478,52.408,29.28 -2020-06-05 18:30:00,102.75,38.1,52.408,29.28 -2020-06-05 18:45:00,103.29,42.903999999999996,52.408,29.28 -2020-06-05 19:00:00,98.83,44.846000000000004,52.736000000000004,29.28 -2020-06-05 19:15:00,95.61,44.645,52.736000000000004,29.28 -2020-06-05 19:30:00,93.94,43.871,52.736000000000004,29.28 -2020-06-05 19:45:00,93.79,43.167,52.736000000000004,29.28 -2020-06-05 20:00:00,92.15,41.589,59.68,29.28 -2020-06-05 20:15:00,92.31,42.13,59.68,29.28 -2020-06-05 20:30:00,91.82,41.824,59.68,29.28 -2020-06-05 20:45:00,92.41,41.468999999999994,59.68,29.28 -2020-06-05 21:00:00,89.29,40.918,54.343999999999994,29.28 -2020-06-05 21:15:00,87.29,44.281000000000006,54.343999999999994,29.28 -2020-06-05 21:30:00,84.11,45.185,54.343999999999994,29.28 -2020-06-05 21:45:00,83.05,46.424,54.343999999999994,29.28 -2020-06-05 22:00:00,79.44,43.754,49.672,29.28 -2020-06-05 22:15:00,78.6,45.085,49.672,29.28 -2020-06-05 22:30:00,77.06,44.566,49.672,29.28 -2020-06-05 22:45:00,75.8,42.548,49.672,29.28 -2020-06-05 23:00:00,72.07,39.743,42.065,29.28 -2020-06-05 23:15:00,72.18,36.24,42.065,29.28 -2020-06-05 23:30:00,71.31,33.249,42.065,29.28 -2020-06-05 23:45:00,70.36,32.497,42.065,29.28 -2020-06-06 00:00:00,67.51,25.941999999999997,38.829,29.17 -2020-06-06 00:15:00,67.86,25.7,38.829,29.17 -2020-06-06 00:30:00,67.41,24.565,38.829,29.17 -2020-06-06 00:45:00,67.72,23.725,38.829,29.17 -2020-06-06 01:00:00,66.82,23.335,34.63,29.17 -2020-06-06 01:15:00,67.25,22.605999999999998,34.63,29.17 -2020-06-06 01:30:00,65.85,20.85,34.63,29.17 -2020-06-06 01:45:00,66.09,21.315,34.63,29.17 -2020-06-06 02:00:00,64.68,20.839000000000002,32.465,29.17 -2020-06-06 02:15:00,64.57,18.511,32.465,29.17 -2020-06-06 02:30:00,64.68,20.68,32.465,29.17 -2020-06-06 02:45:00,64.25,21.514,32.465,29.17 -2020-06-06 03:00:00,64.14,22.599,31.925,29.17 -2020-06-06 03:15:00,65.0,19.414,31.925,29.17 -2020-06-06 03:30:00,65.09,18.62,31.925,29.17 -2020-06-06 03:45:00,67.6,20.195,31.925,29.17 -2020-06-06 04:00:00,70.16,25.434,31.309,29.17 -2020-06-06 04:15:00,70.62,31.435,31.309,29.17 -2020-06-06 04:30:00,63.11,27.958000000000002,31.309,29.17 -2020-06-06 04:45:00,65.22,27.819000000000003,31.309,29.17 -2020-06-06 05:00:00,67.91,36.066,30.323,29.17 -2020-06-06 05:15:00,67.72,37.842,30.323,29.17 -2020-06-06 05:30:00,69.31,30.338,30.323,29.17 -2020-06-06 05:45:00,71.04,30.802,30.323,29.17 -2020-06-06 06:00:00,75.65,44.887,31.438000000000002,29.17 -2020-06-06 06:15:00,80.98,54.621,31.438000000000002,29.17 -2020-06-06 06:30:00,84.8,48.958999999999996,31.438000000000002,29.17 -2020-06-06 06:45:00,83.47,45.533,31.438000000000002,29.17 -2020-06-06 07:00:00,78.85,45.275,34.891999999999996,29.17 -2020-06-06 07:15:00,78.38,44.446999999999996,34.891999999999996,29.17 -2020-06-06 07:30:00,79.02,41.507,34.891999999999996,29.17 -2020-06-06 07:45:00,80.34,41.519,34.891999999999996,29.17 -2020-06-06 08:00:00,81.61,40.611999999999995,39.608000000000004,29.17 -2020-06-06 08:15:00,82.54,43.39,39.608000000000004,29.17 -2020-06-06 08:30:00,81.42,43.358000000000004,39.608000000000004,29.17 -2020-06-06 08:45:00,81.09,46.385,39.608000000000004,29.17 -2020-06-06 09:00:00,79.87,42.973,40.894,29.17 -2020-06-06 09:15:00,87.56,44.285,40.894,29.17 -2020-06-06 09:30:00,87.68,47.515,40.894,29.17 -2020-06-06 09:45:00,83.66,49.722,40.894,29.17 -2020-06-06 10:00:00,80.88,45.253,39.525,29.17 -2020-06-06 10:15:00,87.29,47.07,39.525,29.17 -2020-06-06 10:30:00,83.73,47.373999999999995,39.525,29.17 -2020-06-06 10:45:00,83.72,48.521,39.525,29.17 -2020-06-06 11:00:00,84.12,44.211000000000006,36.718,29.17 -2020-06-06 11:15:00,90.83,45.122,36.718,29.17 -2020-06-06 11:30:00,94.67,46.63,36.718,29.17 -2020-06-06 11:45:00,94.56,48.016999999999996,36.718,29.17 -2020-06-06 12:00:00,91.99,44.79600000000001,35.688,29.17 -2020-06-06 12:15:00,90.46,44.895,35.688,29.17 -2020-06-06 12:30:00,88.8,44.06399999999999,35.688,29.17 -2020-06-06 12:45:00,87.54,45.498999999999995,35.688,29.17 -2020-06-06 13:00:00,85.74,46.00899999999999,32.858000000000004,29.17 -2020-06-06 13:15:00,87.07,46.6,32.858000000000004,29.17 -2020-06-06 13:30:00,87.33,45.77,32.858000000000004,29.17 -2020-06-06 13:45:00,86.83,43.407,32.858000000000004,29.17 -2020-06-06 14:00:00,86.15,44.693999999999996,31.738000000000003,29.17 -2020-06-06 14:15:00,84.56,42.516000000000005,31.738000000000003,29.17 -2020-06-06 14:30:00,81.7,42.419,31.738000000000003,29.17 -2020-06-06 14:45:00,80.31,42.846000000000004,31.738000000000003,29.17 -2020-06-06 15:00:00,80.41,44.662,34.35,29.17 -2020-06-06 15:15:00,79.49,42.766000000000005,34.35,29.17 -2020-06-06 15:30:00,79.47,40.687,34.35,29.17 -2020-06-06 15:45:00,79.76,38.425,34.35,29.17 -2020-06-06 16:00:00,80.07,41.907,37.522,29.17 -2020-06-06 16:15:00,79.03,41.225,37.522,29.17 -2020-06-06 16:30:00,80.08,40.488,37.522,29.17 -2020-06-06 16:45:00,81.23,36.4,37.522,29.17 -2020-06-06 17:00:00,82.36,39.404,42.498000000000005,29.17 -2020-06-06 17:15:00,81.67,37.425,42.498000000000005,29.17 -2020-06-06 17:30:00,81.82,36.743,42.498000000000005,29.17 -2020-06-06 17:45:00,84.04,35.443000000000005,42.498000000000005,29.17 -2020-06-06 18:00:00,84.14,39.175,44.701,29.17 -2020-06-06 18:15:00,83.83,40.357,44.701,29.17 -2020-06-06 18:30:00,84.61,39.39,44.701,29.17 -2020-06-06 18:45:00,84.06,40.567,44.701,29.17 -2020-06-06 19:00:00,81.29,41.091,45.727,29.17 -2020-06-06 19:15:00,78.62,39.875,45.727,29.17 -2020-06-06 19:30:00,76.78,39.896,45.727,29.17 -2020-06-06 19:45:00,75.72,40.85,45.727,29.17 -2020-06-06 20:00:00,74.89,40.242,43.391000000000005,29.17 -2020-06-06 20:15:00,74.17,40.381,43.391000000000005,29.17 -2020-06-06 20:30:00,74.7,39.22,43.391000000000005,29.17 -2020-06-06 20:45:00,74.33,40.624,43.391000000000005,29.17 -2020-06-06 21:00:00,71.59,38.898,41.231,29.17 -2020-06-06 21:15:00,69.93,41.982,41.231,29.17 -2020-06-06 21:30:00,68.91,43.161,41.231,29.17 -2020-06-06 21:45:00,68.03,43.858999999999995,41.231,29.17 -2020-06-06 22:00:00,64.54,41.316,40.798,29.17 -2020-06-06 22:15:00,64.33,43.133,40.798,29.17 -2020-06-06 22:30:00,62.24,42.849,40.798,29.17 -2020-06-06 22:45:00,62.62,41.352,40.798,29.17 -2020-06-06 23:00:00,58.66,38.109,34.402,29.17 -2020-06-06 23:15:00,58.11,34.889,34.402,29.17 -2020-06-06 23:30:00,56.97,34.075,34.402,29.17 -2020-06-06 23:45:00,56.18,33.421,34.402,29.17 -2020-06-07 00:00:00,54.78,27.147,30.171,29.17 -2020-06-07 00:15:00,55.23,25.78,30.171,29.17 -2020-06-07 00:30:00,54.07,24.471999999999998,30.171,29.17 -2020-06-07 00:45:00,54.14,23.596999999999998,30.171,29.17 -2020-06-07 01:00:00,52.67,23.464000000000002,27.15,29.17 -2020-06-07 01:15:00,52.85,22.699,27.15,29.17 -2020-06-07 01:30:00,52.59,20.854,27.15,29.17 -2020-06-07 01:45:00,52.21,20.92,27.15,29.17 -2020-06-07 02:00:00,50.98,20.448,25.403000000000002,29.17 -2020-06-07 02:15:00,51.38,18.707,25.403000000000002,29.17 -2020-06-07 02:30:00,50.88,21.136,25.403000000000002,29.17 -2020-06-07 02:45:00,51.13,21.745,25.403000000000002,29.17 -2020-06-07 03:00:00,50.84,23.48,23.386999999999997,29.17 -2020-06-07 03:15:00,51.71,20.49,23.386999999999997,29.17 -2020-06-07 03:30:00,52.75,19.136,23.386999999999997,29.17 -2020-06-07 03:45:00,50.92,19.973,23.386999999999997,29.17 -2020-06-07 04:00:00,50.55,25.101,23.941999999999997,29.17 -2020-06-07 04:15:00,51.55,30.546,23.941999999999997,29.17 -2020-06-07 04:30:00,51.6,28.333000000000002,23.941999999999997,29.17 -2020-06-07 04:45:00,52.09,27.774,23.941999999999997,29.17 -2020-06-07 05:00:00,53.72,35.75,23.026,29.17 -2020-06-07 05:15:00,54.12,36.433,23.026,29.17 -2020-06-07 05:30:00,55.59,28.6,23.026,29.17 -2020-06-07 05:45:00,57.85,28.881,23.026,29.17 -2020-06-07 06:00:00,59.26,40.721,23.223000000000003,29.17 -2020-06-07 06:15:00,60.63,51.071999999999996,23.223000000000003,29.17 -2020-06-07 06:30:00,62.83,44.669,23.223000000000003,29.17 -2020-06-07 06:45:00,64.38,40.23,23.223000000000003,29.17 -2020-06-07 07:00:00,65.6,40.458,24.968000000000004,29.17 -2020-06-07 07:15:00,66.44,38.01,24.968000000000004,29.17 -2020-06-07 07:30:00,68.26,36.156,24.968000000000004,29.17 -2020-06-07 07:45:00,68.77,36.098,24.968000000000004,29.17 -2020-06-07 08:00:00,69.95,36.086,29.131,29.17 -2020-06-07 08:15:00,69.53,40.012,29.131,29.17 -2020-06-07 08:30:00,69.54,40.953,29.131,29.17 -2020-06-07 08:45:00,69.78,44.098,29.131,29.17 -2020-06-07 09:00:00,70.2,40.535,29.904,29.17 -2020-06-07 09:15:00,72.11,41.438,29.904,29.17 -2020-06-07 09:30:00,74.06,45.06399999999999,29.904,29.17 -2020-06-07 09:45:00,74.87,48.231,29.904,29.17 -2020-06-07 10:00:00,77.19,44.516000000000005,28.943,29.17 -2020-06-07 10:15:00,78.39,46.53,28.943,29.17 -2020-06-07 10:30:00,77.62,47.106,28.943,29.17 -2020-06-07 10:45:00,75.28,49.04,28.943,29.17 -2020-06-07 11:00:00,71.31,44.483999999999995,31.682,29.17 -2020-06-07 11:15:00,70.31,44.994,31.682,29.17 -2020-06-07 11:30:00,70.0,46.903,31.682,29.17 -2020-06-07 11:45:00,67.85,48.593,31.682,29.17 -2020-06-07 12:00:00,64.35,46.353,27.315,29.17 -2020-06-07 12:15:00,61.2,46.038000000000004,27.315,29.17 -2020-06-07 12:30:00,57.59,45.248999999999995,27.315,29.17 -2020-06-07 12:45:00,59.18,45.997,27.315,29.17 -2020-06-07 13:00:00,59.01,46.153,23.894000000000002,29.17 -2020-06-07 13:15:00,55.2,46.481,23.894000000000002,29.17 -2020-06-07 13:30:00,57.81,44.589,23.894000000000002,29.17 -2020-06-07 13:45:00,60.26,43.223,23.894000000000002,29.17 -2020-06-07 14:00:00,57.88,45.69,21.148000000000003,29.17 -2020-06-07 14:15:00,64.49,44.026,21.148000000000003,29.17 -2020-06-07 14:30:00,66.8,42.846000000000004,21.148000000000003,29.17 -2020-06-07 14:45:00,67.65,42.228,21.148000000000003,29.17 -2020-06-07 15:00:00,67.87,44.083,21.229,29.17 -2020-06-07 15:15:00,65.72,41.477,21.229,29.17 -2020-06-07 15:30:00,59.62,39.268,21.229,29.17 -2020-06-07 15:45:00,60.76,37.325,21.229,29.17 -2020-06-07 16:00:00,62.45,39.453,25.037,29.17 -2020-06-07 16:15:00,63.37,38.900999999999996,25.037,29.17 -2020-06-07 16:30:00,66.59,39.158,25.037,29.17 -2020-06-07 16:45:00,70.11,35.108000000000004,25.037,29.17 -2020-06-07 17:00:00,72.96,38.486,37.11,29.17 -2020-06-07 17:15:00,76.34,37.903,37.11,29.17 -2020-06-07 17:30:00,79.24,38.003,37.11,29.17 -2020-06-07 17:45:00,81.88,37.28,37.11,29.17 -2020-06-07 18:00:00,83.72,41.528999999999996,42.215,29.17 -2020-06-07 18:15:00,79.56,42.415,42.215,29.17 -2020-06-07 18:30:00,76.0,41.022,42.215,29.17 -2020-06-07 18:45:00,78.65,42.47,42.215,29.17 -2020-06-07 19:00:00,79.38,45.026,44.383,29.17 -2020-06-07 19:15:00,79.12,42.795,44.383,29.17 -2020-06-07 19:30:00,79.25,42.556999999999995,44.383,29.17 -2020-06-07 19:45:00,78.61,43.195,44.383,29.17 -2020-06-07 20:00:00,79.46,42.74,43.426,29.17 -2020-06-07 20:15:00,79.03,42.831,43.426,29.17 -2020-06-07 20:30:00,79.41,42.56100000000001,43.426,29.17 -2020-06-07 20:45:00,81.82,42.298,43.426,29.17 -2020-06-07 21:00:00,81.38,40.224000000000004,42.265,29.17 -2020-06-07 21:15:00,80.43,42.977,42.265,29.17 -2020-06-07 21:30:00,78.77,43.54,42.265,29.17 -2020-06-07 21:45:00,77.29,44.605,42.265,29.17 -2020-06-07 22:00:00,73.8,43.917,42.26,29.17 -2020-06-07 22:15:00,72.46,44.08,42.26,29.17 -2020-06-07 22:30:00,70.72,43.038999999999994,42.26,29.17 -2020-06-07 22:45:00,70.73,40.247,42.26,29.17 -2020-06-07 23:00:00,68.68,36.454,36.609,29.17 -2020-06-07 23:15:00,69.16,34.64,36.609,29.17 -2020-06-07 23:30:00,67.02,33.389,36.609,29.17 -2020-06-07 23:45:00,67.56,32.952,36.609,29.17 -2020-06-08 00:00:00,65.18,28.81,34.611,29.28 -2020-06-08 00:15:00,65.79,28.454,34.611,29.28 -2020-06-08 00:30:00,66.1,26.794,34.611,29.28 -2020-06-08 00:45:00,66.13,25.502,34.611,29.28 -2020-06-08 01:00:00,64.79,25.755,33.552,29.28 -2020-06-08 01:15:00,65.06,24.938000000000002,33.552,29.28 -2020-06-08 01:30:00,65.24,23.433000000000003,33.552,29.28 -2020-06-08 01:45:00,65.35,23.410999999999998,33.552,29.28 -2020-06-08 02:00:00,65.58,23.37,32.351,29.28 -2020-06-08 02:15:00,67.8,20.785999999999998,32.351,29.28 -2020-06-08 02:30:00,73.54,23.4,32.351,29.28 -2020-06-08 02:45:00,74.8,23.823,32.351,29.28 -2020-06-08 03:00:00,71.75,26.151999999999997,30.793000000000003,29.28 -2020-06-08 03:15:00,68.21,23.986,30.793000000000003,29.28 -2020-06-08 03:30:00,68.19,23.261999999999997,30.793000000000003,29.28 -2020-06-08 03:45:00,75.1,23.634,30.793000000000003,29.28 -2020-06-08 04:00:00,76.21,32.04,31.274,29.28 -2020-06-08 04:15:00,81.8,40.582,31.274,29.28 -2020-06-08 04:30:00,81.13,38.092,31.274,29.28 -2020-06-08 04:45:00,84.34,37.895,31.274,29.28 -2020-06-08 05:00:00,91.59,53.857,37.75,29.28 -2020-06-08 05:15:00,94.96,65.925,37.75,29.28 -2020-06-08 05:30:00,96.35,56.716,37.75,29.28 -2020-06-08 05:45:00,103.22,53.645,37.75,29.28 -2020-06-08 06:00:00,115.44,54.214,55.36,29.28 -2020-06-08 06:15:00,117.66,54.621,55.36,29.28 -2020-06-08 06:30:00,119.09,52.708999999999996,55.36,29.28 -2020-06-08 06:45:00,118.2,54.078,55.36,29.28 -2020-06-08 07:00:00,122.59,54.916000000000004,65.87,29.28 -2020-06-08 07:15:00,126.53,54.75899999999999,65.87,29.28 -2020-06-08 07:30:00,126.58,52.008,65.87,29.28 -2020-06-08 07:45:00,117.45,52.041000000000004,65.87,29.28 -2020-06-08 08:00:00,116.82,49.583,55.695,29.28 -2020-06-08 08:15:00,124.15,52.214,55.695,29.28 -2020-06-08 08:30:00,127.09,51.86600000000001,55.695,29.28 -2020-06-08 08:45:00,129.96,54.918,55.695,29.28 -2020-06-08 09:00:00,127.9,50.291000000000004,50.881,29.28 -2020-06-08 09:15:00,127.73,49.188,50.881,29.28 -2020-06-08 09:30:00,129.88,51.846000000000004,50.881,29.28 -2020-06-08 09:45:00,128.32,52.891000000000005,50.881,29.28 -2020-06-08 10:00:00,125.16,49.513999999999996,49.138000000000005,29.28 -2020-06-08 10:15:00,119.84,51.376000000000005,49.138000000000005,29.28 -2020-06-08 10:30:00,116.84,51.43899999999999,49.138000000000005,29.28 -2020-06-08 10:45:00,124.11,51.953,49.138000000000005,29.28 -2020-06-08 11:00:00,126.44,47.358000000000004,49.178000000000004,29.28 -2020-06-08 11:15:00,121.8,48.31100000000001,49.178000000000004,29.28 -2020-06-08 11:30:00,117.6,50.997,49.178000000000004,29.28 -2020-06-08 11:45:00,113.89,53.128,49.178000000000004,29.28 -2020-06-08 12:00:00,106.1,49.479,47.698,29.28 -2020-06-08 12:15:00,110.89,49.273999999999994,47.698,29.28 -2020-06-08 12:30:00,105.06,47.468999999999994,47.698,29.28 -2020-06-08 12:45:00,103.24,48.36,47.698,29.28 -2020-06-08 13:00:00,104.28,49.425,48.104,29.28 -2020-06-08 13:15:00,105.35,48.79,48.104,29.28 -2020-06-08 13:30:00,102.99,47.021,48.104,29.28 -2020-06-08 13:45:00,106.17,46.507,48.104,29.28 -2020-06-08 14:00:00,104.77,48.076,48.53,29.28 -2020-06-08 14:15:00,99.17,46.91,48.53,29.28 -2020-06-08 14:30:00,100.05,45.497,48.53,29.28 -2020-06-08 14:45:00,101.1,46.841,48.53,29.28 -2020-06-08 15:00:00,100.5,48.551,49.351000000000006,29.28 -2020-06-08 15:15:00,97.86,45.243,49.351000000000006,29.28 -2020-06-08 15:30:00,98.11,43.674,49.351000000000006,29.28 -2020-06-08 15:45:00,102.17,41.217,49.351000000000006,29.28 -2020-06-08 16:00:00,104.3,44.405,51.44,29.28 -2020-06-08 16:15:00,106.98,43.84,51.44,29.28 -2020-06-08 16:30:00,105.78,43.396,51.44,29.28 -2020-06-08 16:45:00,107.49,39.226,51.44,29.28 -2020-06-08 17:00:00,108.2,41.544,56.868,29.28 -2020-06-08 17:15:00,108.56,41.22,56.868,29.28 -2020-06-08 17:30:00,108.83,40.895,56.868,29.28 -2020-06-08 17:45:00,109.18,39.635,56.868,29.28 -2020-06-08 18:00:00,108.41,42.896,57.229,29.28 -2020-06-08 18:15:00,107.9,41.818999999999996,57.229,29.28 -2020-06-08 18:30:00,107.3,39.758,57.229,29.28 -2020-06-08 18:45:00,105.82,44.278,57.229,29.28 -2020-06-08 19:00:00,103.74,46.408,57.744,29.28 -2020-06-08 19:15:00,100.22,45.333999999999996,57.744,29.28 -2020-06-08 19:30:00,98.33,44.78,57.744,29.28 -2020-06-08 19:45:00,97.62,44.755,57.744,29.28 -2020-06-08 20:00:00,95.68,42.876000000000005,66.05199999999999,29.28 -2020-06-08 20:15:00,95.32,44.086999999999996,66.05199999999999,29.28 -2020-06-08 20:30:00,96.73,44.168,66.05199999999999,29.28 -2020-06-08 20:45:00,96.53,44.285,66.05199999999999,29.28 -2020-06-08 21:00:00,91.82,41.66,59.396,29.28 -2020-06-08 21:15:00,91.66,44.745,59.396,29.28 -2020-06-08 21:30:00,89.92,45.61,59.396,29.28 -2020-06-08 21:45:00,88.61,46.43600000000001,59.396,29.28 -2020-06-08 22:00:00,83.94,43.571000000000005,53.06,29.28 -2020-06-08 22:15:00,83.74,45.533,53.06,29.28 -2020-06-08 22:30:00,81.28,39.543,53.06,29.28 -2020-06-08 22:45:00,80.11,36.312,53.06,29.28 -2020-06-08 23:00:00,74.81,32.603,46.148,29.28 -2020-06-08 23:15:00,76.9,29.473000000000003,46.148,29.28 -2020-06-08 23:30:00,73.41,28.424,46.148,29.28 -2020-06-08 23:45:00,75.06,27.683000000000003,46.148,29.28 -2020-06-09 00:00:00,71.41,26.438000000000002,44.625,29.28 -2020-06-09 00:15:00,73.02,27.034000000000002,44.625,29.28 -2020-06-09 00:30:00,70.5,25.976999999999997,44.625,29.28 -2020-06-09 00:45:00,73.38,25.364,44.625,29.28 -2020-06-09 01:00:00,72.8,25.099,41.733000000000004,29.28 -2020-06-09 01:15:00,73.38,24.331999999999997,41.733000000000004,29.28 -2020-06-09 01:30:00,72.4,22.71,41.733000000000004,29.28 -2020-06-09 01:45:00,72.79,22.215,41.733000000000004,29.28 -2020-06-09 02:00:00,70.58,21.713,39.872,29.28 -2020-06-09 02:15:00,72.27,20.226,39.872,29.28 -2020-06-09 02:30:00,80.49,22.413,39.872,29.28 -2020-06-09 02:45:00,80.75,23.159000000000002,39.872,29.28 -2020-06-09 03:00:00,78.25,24.851,38.711,29.28 -2020-06-09 03:15:00,73.94,23.508000000000003,38.711,29.28 -2020-06-09 03:30:00,77.01,22.8,38.711,29.28 -2020-06-09 03:45:00,74.49,22.145,38.711,29.28 -2020-06-09 04:00:00,77.74,29.266,39.823,29.28 -2020-06-09 04:15:00,79.76,37.743,39.823,29.28 -2020-06-09 04:30:00,82.3,35.097,39.823,29.28 -2020-06-09 04:45:00,87.15,35.468,39.823,29.28 -2020-06-09 05:00:00,96.24,53.251000000000005,43.228,29.28 -2020-06-09 05:15:00,100.0,65.757,43.228,29.28 -2020-06-09 05:30:00,103.94,56.667,43.228,29.28 -2020-06-09 05:45:00,105.25,52.95,43.228,29.28 -2020-06-09 06:00:00,114.5,54.452,54.316,29.28 -2020-06-09 06:15:00,116.55,55.166000000000004,54.316,29.28 -2020-06-09 06:30:00,110.99,52.913000000000004,54.316,29.28 -2020-06-09 06:45:00,112.3,53.423,54.316,29.28 -2020-06-09 07:00:00,121.18,54.379,65.758,29.28 -2020-06-09 07:15:00,120.41,53.98,65.758,29.28 -2020-06-09 07:30:00,115.9,51.185,65.758,29.28 -2020-06-09 07:45:00,116.85,50.333999999999996,65.758,29.28 -2020-06-09 08:00:00,118.19,47.826,57.983000000000004,29.28 -2020-06-09 08:15:00,119.82,49.976000000000006,57.983000000000004,29.28 -2020-06-09 08:30:00,115.93,49.765,57.983000000000004,29.28 -2020-06-09 08:45:00,114.08,51.917,57.983000000000004,29.28 -2020-06-09 09:00:00,112.79,47.534,52.653,29.28 -2020-06-09 09:15:00,113.07,46.446999999999996,52.653,29.28 -2020-06-09 09:30:00,113.8,49.825,52.653,29.28 -2020-06-09 09:45:00,113.95,52.155,52.653,29.28 -2020-06-09 10:00:00,112.65,47.425,51.408,29.28 -2020-06-09 10:15:00,115.45,49.073,51.408,29.28 -2020-06-09 10:30:00,121.75,49.181999999999995,51.408,29.28 -2020-06-09 10:45:00,124.45,50.68899999999999,51.408,29.28 -2020-06-09 11:00:00,118.76,46.229,51.913000000000004,29.28 -2020-06-09 11:15:00,118.38,47.549,51.913000000000004,29.28 -2020-06-09 11:30:00,118.73,49.02,51.913000000000004,29.28 -2020-06-09 11:45:00,120.94,50.788999999999994,51.913000000000004,29.28 -2020-06-09 12:00:00,115.6,46.87,49.508,29.28 -2020-06-09 12:15:00,114.07,46.952,49.508,29.28 -2020-06-09 12:30:00,115.92,46.006,49.508,29.28 -2020-06-09 12:45:00,116.36,47.536,49.508,29.28 -2020-06-09 13:00:00,114.4,48.217,50.007,29.28 -2020-06-09 13:15:00,114.3,49.275,50.007,29.28 -2020-06-09 13:30:00,114.18,47.592,50.007,29.28 -2020-06-09 13:45:00,114.22,46.174,50.007,29.28 -2020-06-09 14:00:00,109.09,48.222,49.778999999999996,29.28 -2020-06-09 14:15:00,106.54,46.875,49.778999999999996,29.28 -2020-06-09 14:30:00,113.2,45.803999999999995,49.778999999999996,29.28 -2020-06-09 14:45:00,112.19,46.391000000000005,49.778999999999996,29.28 -2020-06-09 15:00:00,108.09,47.952,51.559,29.28 -2020-06-09 15:15:00,101.97,45.549,51.559,29.28 -2020-06-09 15:30:00,104.39,43.786,51.559,29.28 -2020-06-09 15:45:00,107.82,41.613,51.559,29.28 -2020-06-09 16:00:00,106.35,44.193000000000005,53.531000000000006,29.28 -2020-06-09 16:15:00,101.43,43.746,53.531000000000006,29.28 -2020-06-09 16:30:00,105.03,43.018,53.531000000000006,29.28 -2020-06-09 16:45:00,106.03,39.527,53.531000000000006,29.28 -2020-06-09 17:00:00,112.45,42.126999999999995,59.497,29.28 -2020-06-09 17:15:00,115.83,42.196000000000005,59.497,29.28 -2020-06-09 17:30:00,116.3,41.498000000000005,59.497,29.28 -2020-06-09 17:45:00,110.26,39.883,59.497,29.28 -2020-06-09 18:00:00,106.4,42.235,59.861999999999995,29.28 -2020-06-09 18:15:00,108.44,42.52,59.861999999999995,29.28 -2020-06-09 18:30:00,112.57,40.175,59.861999999999995,29.28 -2020-06-09 18:45:00,113.13,44.573,59.861999999999995,29.28 -2020-06-09 19:00:00,106.86,45.585,60.989,29.28 -2020-06-09 19:15:00,103.42,44.653,60.989,29.28 -2020-06-09 19:30:00,98.81,43.82899999999999,60.989,29.28 -2020-06-09 19:45:00,99.4,44.125,60.989,29.28 -2020-06-09 20:00:00,95.84,42.619,68.35600000000001,29.28 -2020-06-09 20:15:00,94.92,42.388000000000005,68.35600000000001,29.28 -2020-06-09 20:30:00,94.19,42.602,68.35600000000001,29.28 -2020-06-09 20:45:00,94.35,43.11,68.35600000000001,29.28 -2020-06-09 21:00:00,90.98,41.266999999999996,59.251000000000005,29.28 -2020-06-09 21:15:00,89.1,43.023999999999994,59.251000000000005,29.28 -2020-06-09 21:30:00,86.25,43.975,59.251000000000005,29.28 -2020-06-09 21:45:00,86.55,45.022,59.251000000000005,29.28 -2020-06-09 22:00:00,82.28,42.479,54.736999999999995,29.28 -2020-06-09 22:15:00,80.43,44.108999999999995,54.736999999999995,29.28 -2020-06-09 22:30:00,78.68,38.405,54.736999999999995,29.28 -2020-06-09 22:45:00,78.71,35.179,54.736999999999995,29.28 -2020-06-09 23:00:00,74.03,30.709,46.806999999999995,29.28 -2020-06-09 23:15:00,74.01,29.048000000000002,46.806999999999995,29.28 -2020-06-09 23:30:00,74.25,27.978,46.806999999999995,29.28 -2020-06-09 23:45:00,73.65,27.365,46.806999999999995,29.28 -2020-06-10 00:00:00,69.28,26.302,43.824,29.28 -2020-06-10 00:15:00,71.2,26.901,43.824,29.28 -2020-06-10 00:30:00,66.99,25.846,43.824,29.28 -2020-06-10 00:45:00,71.61,25.239,43.824,29.28 -2020-06-10 01:00:00,69.8,24.991,39.86,29.28 -2020-06-10 01:15:00,71.05,24.204,39.86,29.28 -2020-06-10 01:30:00,70.29,22.575,39.86,29.28 -2020-06-10 01:45:00,71.08,22.073,39.86,29.28 -2020-06-10 02:00:00,69.28,21.573,37.931999999999995,29.28 -2020-06-10 02:15:00,70.6,20.082,37.931999999999995,29.28 -2020-06-10 02:30:00,77.94,22.269000000000002,37.931999999999995,29.28 -2020-06-10 02:45:00,78.48,23.021,37.931999999999995,29.28 -2020-06-10 03:00:00,76.46,24.714000000000002,37.579,29.28 -2020-06-10 03:15:00,74.28,23.369,37.579,29.28 -2020-06-10 03:30:00,73.07,22.666,37.579,29.28 -2020-06-10 03:45:00,74.4,22.034000000000002,37.579,29.28 -2020-06-10 04:00:00,78.61,29.1,37.931999999999995,29.28 -2020-06-10 04:15:00,78.12,37.53,37.931999999999995,29.28 -2020-06-10 04:30:00,82.15,34.872,37.931999999999995,29.28 -2020-06-10 04:45:00,86.72,35.239000000000004,37.931999999999995,29.28 -2020-06-10 05:00:00,95.11,52.913000000000004,40.942,29.28 -2020-06-10 05:15:00,101.05,65.282,40.942,29.28 -2020-06-10 05:30:00,107.89,56.26,40.942,29.28 -2020-06-10 05:45:00,112.89,52.593,40.942,29.28 -2020-06-10 06:00:00,115.77,54.111999999999995,56.516999999999996,29.28 -2020-06-10 06:15:00,116.7,54.808,56.516999999999996,29.28 -2020-06-10 06:30:00,120.98,52.577,56.516999999999996,29.28 -2020-06-10 06:45:00,121.83,53.114,56.516999999999996,29.28 -2020-06-10 07:00:00,121.07,54.059,71.707,29.28 -2020-06-10 07:15:00,116.29,53.674,71.707,29.28 -2020-06-10 07:30:00,121.13,50.87,71.707,29.28 -2020-06-10 07:45:00,119.6,50.05,71.707,29.28 -2020-06-10 08:00:00,120.93,47.552,61.17,29.28 -2020-06-10 08:15:00,117.32,49.738,61.17,29.28 -2020-06-10 08:30:00,118.76,49.519,61.17,29.28 -2020-06-10 08:45:00,116.95,51.678000000000004,61.17,29.28 -2020-06-10 09:00:00,124.86,47.288999999999994,57.282,29.28 -2020-06-10 09:15:00,121.0,46.206,57.282,29.28 -2020-06-10 09:30:00,126.65,49.588,57.282,29.28 -2020-06-10 09:45:00,128.01,51.937,57.282,29.28 -2020-06-10 10:00:00,127.44,47.218,54.026,29.28 -2020-06-10 10:15:00,119.72,48.883,54.026,29.28 -2020-06-10 10:30:00,121.47,48.994,54.026,29.28 -2020-06-10 10:45:00,128.3,50.51,54.026,29.28 -2020-06-10 11:00:00,132.15,46.044,54.277,29.28 -2020-06-10 11:15:00,127.14,47.372,54.277,29.28 -2020-06-10 11:30:00,117.1,48.833999999999996,54.277,29.28 -2020-06-10 11:45:00,114.36,50.605,54.277,29.28 -2020-06-10 12:00:00,120.41,46.718999999999994,52.552,29.28 -2020-06-10 12:15:00,123.17,46.803999999999995,52.552,29.28 -2020-06-10 12:30:00,122.08,45.833999999999996,52.552,29.28 -2020-06-10 12:45:00,120.6,47.368,52.552,29.28 -2020-06-10 13:00:00,118.16,48.044,52.111999999999995,29.28 -2020-06-10 13:15:00,119.23,49.104,52.111999999999995,29.28 -2020-06-10 13:30:00,117.97,47.431000000000004,52.111999999999995,29.28 -2020-06-10 13:45:00,113.38,46.016999999999996,52.111999999999995,29.28 -2020-06-10 14:00:00,112.33,48.085,52.066,29.28 -2020-06-10 14:15:00,108.78,46.735,52.066,29.28 -2020-06-10 14:30:00,112.6,45.636,52.066,29.28 -2020-06-10 14:45:00,111.92,46.229,52.066,29.28 -2020-06-10 15:00:00,110.0,47.827,52.523999999999994,29.28 -2020-06-10 15:15:00,106.57,45.413999999999994,52.523999999999994,29.28 -2020-06-10 15:30:00,108.24,43.638999999999996,52.523999999999994,29.28 -2020-06-10 15:45:00,110.6,41.455,52.523999999999994,29.28 -2020-06-10 16:00:00,112.33,44.068000000000005,54.101000000000006,29.28 -2020-06-10 16:15:00,110.81,43.615,54.101000000000006,29.28 -2020-06-10 16:30:00,111.57,42.906000000000006,54.101000000000006,29.28 -2020-06-10 16:45:00,118.23,39.384,54.101000000000006,29.28 -2020-06-10 17:00:00,119.5,42.012,58.155,29.28 -2020-06-10 17:15:00,116.37,42.07,58.155,29.28 -2020-06-10 17:30:00,117.51,41.364,58.155,29.28 -2020-06-10 17:45:00,114.99,39.728,58.155,29.28 -2020-06-10 18:00:00,121.59,42.092,60.205,29.28 -2020-06-10 18:15:00,119.08,42.352,60.205,29.28 -2020-06-10 18:30:00,115.11,40.0,60.205,29.28 -2020-06-10 18:45:00,110.65,44.397,60.205,29.28 -2020-06-10 19:00:00,108.16,45.411,61.568999999999996,29.28 -2020-06-10 19:15:00,108.06,44.47,61.568999999999996,29.28 -2020-06-10 19:30:00,106.76,43.638999999999996,61.568999999999996,29.28 -2020-06-10 19:45:00,103.49,43.93,61.568999999999996,29.28 -2020-06-10 20:00:00,96.17,42.407,68.145,29.28 -2020-06-10 20:15:00,96.64,42.173,68.145,29.28 -2020-06-10 20:30:00,95.52,42.398999999999994,68.145,29.28 -2020-06-10 20:45:00,94.92,42.938,68.145,29.28 -2020-06-10 21:00:00,90.77,41.101000000000006,59.696000000000005,29.28 -2020-06-10 21:15:00,90.39,42.868,59.696000000000005,29.28 -2020-06-10 21:30:00,86.63,43.795,59.696000000000005,29.28 -2020-06-10 21:45:00,85.83,44.854,59.696000000000005,29.28 -2020-06-10 22:00:00,81.02,42.332,54.861999999999995,29.28 -2020-06-10 22:15:00,79.98,43.971000000000004,54.861999999999995,29.28 -2020-06-10 22:30:00,77.22,38.265,54.861999999999995,29.28 -2020-06-10 22:45:00,76.83,35.029,54.861999999999995,29.28 -2020-06-10 23:00:00,73.12,30.535999999999998,45.568000000000005,29.28 -2020-06-10 23:15:00,75.38,28.914,45.568000000000005,29.28 -2020-06-10 23:30:00,74.71,27.851999999999997,45.568000000000005,29.28 -2020-06-10 23:45:00,75.2,27.229,45.568000000000005,29.28 -2020-06-11 00:00:00,70.41,26.171999999999997,40.181,29.28 -2020-06-11 00:15:00,70.82,26.772,40.181,29.28 -2020-06-11 00:30:00,70.59,25.719,40.181,29.28 -2020-06-11 00:45:00,70.45,25.116999999999997,40.181,29.28 -2020-06-11 01:00:00,69.57,24.886,38.296,29.28 -2020-06-11 01:15:00,70.14,24.081,38.296,29.28 -2020-06-11 01:30:00,68.96,22.445,38.296,29.28 -2020-06-11 01:45:00,69.74,21.936999999999998,38.296,29.28 -2020-06-11 02:00:00,69.81,21.438000000000002,36.575,29.28 -2020-06-11 02:15:00,69.88,19.944000000000003,36.575,29.28 -2020-06-11 02:30:00,70.09,22.129,36.575,29.28 -2020-06-11 02:45:00,76.04,22.886999999999997,36.575,29.28 -2020-06-11 03:00:00,79.84,24.581,36.394,29.28 -2020-06-11 03:15:00,79.7,23.234,36.394,29.28 -2020-06-11 03:30:00,74.17,22.535,36.394,29.28 -2020-06-11 03:45:00,76.38,21.927,36.394,29.28 -2020-06-11 04:00:00,75.88,28.939,37.207,29.28 -2020-06-11 04:15:00,78.09,37.323,37.207,29.28 -2020-06-11 04:30:00,82.26,34.653,37.207,29.28 -2020-06-11 04:45:00,86.97,35.016,37.207,29.28 -2020-06-11 05:00:00,94.99,52.582,40.713,29.28 -2020-06-11 05:15:00,100.23,64.817,40.713,29.28 -2020-06-11 05:30:00,106.76,55.861000000000004,40.713,29.28 -2020-06-11 05:45:00,111.82,52.246,40.713,29.28 -2020-06-11 06:00:00,116.83,53.778999999999996,50.952,29.28 -2020-06-11 06:15:00,112.43,54.458,50.952,29.28 -2020-06-11 06:30:00,113.1,52.248000000000005,50.952,29.28 -2020-06-11 06:45:00,118.36,52.81399999999999,50.952,29.28 -2020-06-11 07:00:00,124.46,53.745,64.88,29.28 -2020-06-11 07:15:00,126.91,53.378,64.88,29.28 -2020-06-11 07:30:00,121.71,50.56100000000001,64.88,29.28 -2020-06-11 07:45:00,118.85,49.775,64.88,29.28 -2020-06-11 08:00:00,123.62,47.285,55.133,29.28 -2020-06-11 08:15:00,123.22,49.50899999999999,55.133,29.28 -2020-06-11 08:30:00,122.66,49.281000000000006,55.133,29.28 -2020-06-11 08:45:00,116.59,51.448,55.133,29.28 -2020-06-11 09:00:00,119.41,47.053000000000004,48.912,29.28 -2020-06-11 09:15:00,123.06,45.975,48.912,29.28 -2020-06-11 09:30:00,124.81,49.357,48.912,29.28 -2020-06-11 09:45:00,122.25,51.726000000000006,48.912,29.28 -2020-06-11 10:00:00,123.12,47.016999999999996,45.968999999999994,29.28 -2020-06-11 10:15:00,122.31,48.696999999999996,45.968999999999994,29.28 -2020-06-11 10:30:00,124.76,48.813,45.968999999999994,29.28 -2020-06-11 10:45:00,121.0,50.336999999999996,45.968999999999994,29.28 -2020-06-11 11:00:00,114.05,45.86600000000001,44.067,29.28 -2020-06-11 11:15:00,112.2,47.202,44.067,29.28 -2020-06-11 11:30:00,108.33,48.652,44.067,29.28 -2020-06-11 11:45:00,108.51,50.427,44.067,29.28 -2020-06-11 12:00:00,109.52,46.573,41.501000000000005,29.28 -2020-06-11 12:15:00,106.82,46.66,41.501000000000005,29.28 -2020-06-11 12:30:00,106.48,45.667,41.501000000000005,29.28 -2020-06-11 12:45:00,100.88,47.20399999999999,41.501000000000005,29.28 -2020-06-11 13:00:00,95.77,47.875,41.117,29.28 -2020-06-11 13:15:00,95.82,48.938,41.117,29.28 -2020-06-11 13:30:00,100.99,47.275,41.117,29.28 -2020-06-11 13:45:00,104.58,45.864,41.117,29.28 -2020-06-11 14:00:00,103.94,47.951,41.492,29.28 -2020-06-11 14:15:00,100.72,46.599,41.492,29.28 -2020-06-11 14:30:00,97.94,45.475,41.492,29.28 -2020-06-11 14:45:00,99.64,46.071000000000005,41.492,29.28 -2020-06-11 15:00:00,99.53,47.706,43.711999999999996,29.28 -2020-06-11 15:15:00,97.45,45.283,43.711999999999996,29.28 -2020-06-11 15:30:00,94.25,43.497,43.711999999999996,29.28 -2020-06-11 15:45:00,100.3,41.3,43.711999999999996,29.28 -2020-06-11 16:00:00,103.4,43.946000000000005,45.446000000000005,29.28 -2020-06-11 16:15:00,100.4,43.488,45.446000000000005,29.28 -2020-06-11 16:30:00,100.04,42.797,45.446000000000005,29.28 -2020-06-11 16:45:00,101.12,39.244,45.446000000000005,29.28 -2020-06-11 17:00:00,110.22,41.901,48.803000000000004,29.28 -2020-06-11 17:15:00,110.07,41.951,48.803000000000004,29.28 -2020-06-11 17:30:00,113.51,41.235,48.803000000000004,29.28 -2020-06-11 17:45:00,106.59,39.578,48.803000000000004,29.28 -2020-06-11 18:00:00,104.74,41.95399999999999,51.167,29.28 -2020-06-11 18:15:00,106.72,42.18899999999999,51.167,29.28 -2020-06-11 18:30:00,107.72,39.83,51.167,29.28 -2020-06-11 18:45:00,102.99,44.225,51.167,29.28 -2020-06-11 19:00:00,99.51,45.243,52.486000000000004,29.28 -2020-06-11 19:15:00,103.25,44.294,52.486000000000004,29.28 -2020-06-11 19:30:00,105.06,43.455,52.486000000000004,29.28 -2020-06-11 19:45:00,97.36,43.74100000000001,52.486000000000004,29.28 -2020-06-11 20:00:00,101.57,42.2,59.635,29.28 -2020-06-11 20:15:00,101.54,41.964,59.635,29.28 -2020-06-11 20:30:00,100.96,42.202,59.635,29.28 -2020-06-11 20:45:00,96.25,42.772,59.635,29.28 -2020-06-11 21:00:00,92.74,40.939,54.353,29.28 -2020-06-11 21:15:00,89.61,42.716,54.353,29.28 -2020-06-11 21:30:00,87.7,43.619,54.353,29.28 -2020-06-11 21:45:00,94.37,44.69,54.353,29.28 -2020-06-11 22:00:00,89.15,42.188,49.431999999999995,29.28 -2020-06-11 22:15:00,88.41,43.838,49.431999999999995,29.28 -2020-06-11 22:30:00,80.58,38.126999999999995,49.431999999999995,29.28 -2020-06-11 22:45:00,80.98,34.881,49.431999999999995,29.28 -2020-06-11 23:00:00,82.25,30.368000000000002,42.872,29.28 -2020-06-11 23:15:00,83.85,28.783,42.872,29.28 -2020-06-11 23:30:00,79.67,27.729,42.872,29.28 -2020-06-11 23:45:00,74.85,27.095,42.872,29.28 -2020-06-12 00:00:00,71.36,24.219,39.819,29.28 -2020-06-12 00:15:00,72.66,25.046999999999997,39.819,29.28 -2020-06-12 00:30:00,77.04,24.245,39.819,29.28 -2020-06-12 00:45:00,78.71,24.064,39.819,29.28 -2020-06-12 01:00:00,74.65,23.453000000000003,37.797,29.28 -2020-06-12 01:15:00,72.83,22.143,37.797,29.28 -2020-06-12 01:30:00,71.34,21.164,37.797,29.28 -2020-06-12 01:45:00,78.24,20.419,37.797,29.28 -2020-06-12 02:00:00,77.22,20.825,36.905,29.28 -2020-06-12 02:15:00,75.15,19.269000000000002,36.905,29.28 -2020-06-12 02:30:00,76.1,22.295,36.905,29.28 -2020-06-12 02:45:00,72.39,22.408,36.905,29.28 -2020-06-12 03:00:00,77.81,24.747,37.1,29.28 -2020-06-12 03:15:00,79.33,22.335,37.1,29.28 -2020-06-12 03:30:00,78.33,21.410999999999998,37.1,29.28 -2020-06-12 03:45:00,74.64,21.698,37.1,29.28 -2020-06-12 04:00:00,77.34,28.813000000000002,37.882,29.28 -2020-06-12 04:15:00,84.37,35.63,37.882,29.28 -2020-06-12 04:30:00,86.71,33.882,37.882,29.28 -2020-06-12 04:45:00,88.82,33.51,37.882,29.28 -2020-06-12 05:00:00,89.4,50.383,40.777,29.28 -2020-06-12 05:15:00,93.53,63.548,40.777,29.28 -2020-06-12 05:30:00,98.42,54.953,40.777,29.28 -2020-06-12 05:45:00,98.91,50.955,40.777,29.28 -2020-06-12 06:00:00,102.82,52.763000000000005,55.528,29.28 -2020-06-12 06:15:00,102.95,53.437,55.528,29.28 -2020-06-12 06:30:00,110.8,51.111999999999995,55.528,29.28 -2020-06-12 06:45:00,112.79,51.744,55.528,29.28 -2020-06-12 07:00:00,116.91,53.201,67.749,29.28 -2020-06-12 07:15:00,107.11,53.821000000000005,67.749,29.28 -2020-06-12 07:30:00,104.05,49.117,67.749,29.28 -2020-06-12 07:45:00,103.9,48.068999999999996,67.749,29.28 -2020-06-12 08:00:00,106.28,46.215,57.55,29.28 -2020-06-12 08:15:00,102.7,49.07,57.55,29.28 -2020-06-12 08:30:00,109.84,48.847,57.55,29.28 -2020-06-12 08:45:00,110.15,50.713,57.55,29.28 -2020-06-12 09:00:00,108.4,44.169,52.588,29.28 -2020-06-12 09:15:00,103.04,44.977,52.588,29.28 -2020-06-12 09:30:00,109.97,47.66,52.588,29.28 -2020-06-12 09:45:00,108.51,50.403999999999996,52.588,29.28 -2020-06-12 10:00:00,107.23,45.416000000000004,49.772,29.28 -2020-06-12 10:15:00,105.95,46.98,49.772,29.28 -2020-06-12 10:30:00,114.2,47.611999999999995,49.772,29.28 -2020-06-12 10:45:00,115.09,49.004,49.772,29.28 -2020-06-12 11:00:00,112.1,44.768,49.226000000000006,29.28 -2020-06-12 11:15:00,107.96,44.983999999999995,49.226000000000006,29.28 -2020-06-12 11:30:00,105.26,46.276,49.226000000000006,29.28 -2020-06-12 11:45:00,103.17,47.152,49.226000000000006,29.28 -2020-06-12 12:00:00,101.7,43.861000000000004,45.705,29.28 -2020-06-12 12:15:00,103.75,43.108999999999995,45.705,29.28 -2020-06-12 12:30:00,102.31,42.221000000000004,45.705,29.28 -2020-06-12 12:45:00,102.28,43.075,45.705,29.28 -2020-06-12 13:00:00,98.03,44.407,43.133,29.28 -2020-06-12 13:15:00,98.2,45.735,43.133,29.28 -2020-06-12 13:30:00,97.7,44.833999999999996,43.133,29.28 -2020-06-12 13:45:00,99.86,43.71,43.133,29.28 -2020-06-12 14:00:00,100.43,44.925,41.989,29.28 -2020-06-12 14:15:00,103.53,43.963,41.989,29.28 -2020-06-12 14:30:00,105.57,44.29600000000001,41.989,29.28 -2020-06-12 14:45:00,108.6,44.278999999999996,41.989,29.28 -2020-06-12 15:00:00,107.88,45.821999999999996,43.728,29.28 -2020-06-12 15:15:00,108.67,43.114,43.728,29.28 -2020-06-12 15:30:00,108.56,40.613,43.728,29.28 -2020-06-12 15:45:00,108.51,39.143,43.728,29.28 -2020-06-12 16:00:00,107.02,40.894,45.93899999999999,29.28 -2020-06-12 16:15:00,107.22,40.931,45.93899999999999,29.28 -2020-06-12 16:30:00,106.33,40.096,45.93899999999999,29.28 -2020-06-12 16:45:00,105.53,35.755,45.93899999999999,29.28 -2020-06-12 17:00:00,105.78,40.11,50.488,29.28 -2020-06-12 17:15:00,104.46,39.942,50.488,29.28 -2020-06-12 17:30:00,104.33,39.343,50.488,29.28 -2020-06-12 17:45:00,106.02,37.482,50.488,29.28 -2020-06-12 18:00:00,104.89,39.993,52.408,29.28 -2020-06-12 18:15:00,103.14,39.260999999999996,52.408,29.28 -2020-06-12 18:30:00,102.14,36.836999999999996,52.408,29.28 -2020-06-12 18:45:00,101.78,41.63,52.408,29.28 -2020-06-12 19:00:00,98.46,43.586999999999996,52.736000000000004,29.28 -2020-06-12 19:15:00,94.32,43.331,52.736000000000004,29.28 -2020-06-12 19:30:00,94.61,42.503,52.736000000000004,29.28 -2020-06-12 19:45:00,91.52,41.763999999999996,52.736000000000004,29.28 -2020-06-12 20:00:00,89.27,40.058,59.68,29.28 -2020-06-12 20:15:00,91.99,40.582,59.68,29.28 -2020-06-12 20:30:00,88.8,40.359,59.68,29.28 -2020-06-12 20:45:00,88.94,40.238,59.68,29.28 -2020-06-12 21:00:00,86.4,39.718,54.343999999999994,29.28 -2020-06-12 21:15:00,85.82,43.148,54.343999999999994,29.28 -2020-06-12 21:30:00,83.13,43.888999999999996,54.343999999999994,29.28 -2020-06-12 21:45:00,84.05,45.218,54.343999999999994,29.28 -2020-06-12 22:00:00,77.72,42.698,49.672,29.28 -2020-06-12 22:15:00,77.94,44.105,49.672,29.28 -2020-06-12 22:30:00,74.99,43.566,49.672,29.28 -2020-06-12 22:45:00,76.11,41.47,49.672,29.28 -2020-06-12 23:00:00,70.24,38.516,42.065,29.28 -2020-06-12 23:15:00,69.98,35.275999999999996,42.065,29.28 -2020-06-12 23:30:00,69.72,32.342,42.065,29.28 -2020-06-12 23:45:00,69.07,31.518,42.065,29.28 -2020-06-13 00:00:00,64.84,25.0,38.829,29.17 -2020-06-13 00:15:00,66.33,24.767,38.829,29.17 -2020-06-13 00:30:00,65.93,23.649,38.829,29.17 -2020-06-13 00:45:00,64.97,22.844,38.829,29.17 -2020-06-13 01:00:00,64.06,22.574,34.63,29.17 -2020-06-13 01:15:00,64.21,21.715,34.63,29.17 -2020-06-13 01:30:00,62.98,19.908,34.63,29.17 -2020-06-13 01:45:00,63.23,20.326,34.63,29.17 -2020-06-13 02:00:00,62.58,19.86,32.465,29.17 -2020-06-13 02:15:00,62.35,17.509,32.465,29.17 -2020-06-13 02:30:00,62.98,19.667,32.465,29.17 -2020-06-13 02:45:00,62.07,20.549,32.465,29.17 -2020-06-13 03:00:00,63.84,21.636999999999997,31.925,29.17 -2020-06-13 03:15:00,70.97,18.439,31.925,29.17 -2020-06-13 03:30:00,65.1,17.679000000000002,31.925,29.17 -2020-06-13 03:45:00,63.54,19.415,31.925,29.17 -2020-06-13 04:00:00,61.45,24.273000000000003,31.309,29.17 -2020-06-13 04:15:00,69.01,29.947,31.309,29.17 -2020-06-13 04:30:00,69.89,26.381,31.309,29.17 -2020-06-13 04:45:00,70.47,26.219,31.309,29.17 -2020-06-13 05:00:00,64.5,33.701,30.323,29.17 -2020-06-13 05:15:00,66.69,34.52,30.323,29.17 -2020-06-13 05:30:00,66.77,27.484,30.323,29.17 -2020-06-13 05:45:00,69.87,28.311999999999998,30.323,29.17 -2020-06-13 06:00:00,75.11,42.504,31.438000000000002,29.17 -2020-06-13 06:15:00,75.75,52.11600000000001,31.438000000000002,29.17 -2020-06-13 06:30:00,84.06,46.602,31.438000000000002,29.17 -2020-06-13 06:45:00,87.29,43.371,31.438000000000002,29.17 -2020-06-13 07:00:00,86.33,43.028,34.891999999999996,29.17 -2020-06-13 07:15:00,87.6,42.312,34.891999999999996,29.17 -2020-06-13 07:30:00,90.91,39.294000000000004,34.891999999999996,29.17 -2020-06-13 07:45:00,93.57,39.534,34.891999999999996,29.17 -2020-06-13 08:00:00,94.56,38.69,39.608000000000004,29.17 -2020-06-13 08:15:00,92.12,41.727,39.608000000000004,29.17 -2020-06-13 08:30:00,96.32,41.638999999999996,39.608000000000004,29.17 -2020-06-13 08:45:00,97.62,44.715,39.608000000000004,29.17 -2020-06-13 09:00:00,91.24,41.26,40.894,29.17 -2020-06-13 09:15:00,87.74,42.605,40.894,29.17 -2020-06-13 09:30:00,87.68,45.849,40.894,29.17 -2020-06-13 09:45:00,84.6,48.202,40.894,29.17 -2020-06-13 10:00:00,79.46,43.803999999999995,39.525,29.17 -2020-06-13 10:15:00,84.16,45.736000000000004,39.525,29.17 -2020-06-13 10:30:00,89.39,46.066,39.525,29.17 -2020-06-13 10:45:00,89.77,47.268,39.525,29.17 -2020-06-13 11:00:00,91.12,42.92,36.718,29.17 -2020-06-13 11:15:00,93.16,43.891999999999996,36.718,29.17 -2020-06-13 11:30:00,86.51,45.324,36.718,29.17 -2020-06-13 11:45:00,84.34,46.735,36.718,29.17 -2020-06-13 12:00:00,79.65,43.74,35.688,29.17 -2020-06-13 12:15:00,73.18,43.858000000000004,35.688,29.17 -2020-06-13 12:30:00,70.87,42.857,35.688,29.17 -2020-06-13 12:45:00,71.71,44.318999999999996,35.688,29.17 -2020-06-13 13:00:00,72.51,44.803000000000004,32.858000000000004,29.17 -2020-06-13 13:15:00,73.91,45.407,32.858000000000004,29.17 -2020-06-13 13:30:00,70.81,44.647,32.858000000000004,29.17 -2020-06-13 13:45:00,71.46,42.306000000000004,32.858000000000004,29.17 -2020-06-13 14:00:00,65.58,43.733000000000004,31.738000000000003,29.17 -2020-06-13 14:15:00,67.67,41.534,31.738000000000003,29.17 -2020-06-13 14:30:00,66.02,41.251000000000005,31.738000000000003,29.17 -2020-06-13 14:45:00,69.44,41.713,31.738000000000003,29.17 -2020-06-13 15:00:00,69.59,43.79,34.35,29.17 -2020-06-13 15:15:00,68.57,41.821000000000005,34.35,29.17 -2020-06-13 15:30:00,70.63,39.661,34.35,29.17 -2020-06-13 15:45:00,70.47,37.313,34.35,29.17 -2020-06-13 16:00:00,70.88,41.03,37.522,29.17 -2020-06-13 16:15:00,69.13,40.306999999999995,37.522,29.17 -2020-06-13 16:30:00,70.38,39.698,37.522,29.17 -2020-06-13 16:45:00,72.18,35.393,37.522,29.17 -2020-06-13 17:00:00,75.53,38.603,42.498000000000005,29.17 -2020-06-13 17:15:00,75.43,36.553000000000004,42.498000000000005,29.17 -2020-06-13 17:30:00,76.48,35.812,42.498000000000005,29.17 -2020-06-13 17:45:00,78.84,34.356,42.498000000000005,29.17 -2020-06-13 18:00:00,80.38,38.174,44.701,29.17 -2020-06-13 18:15:00,80.49,39.178000000000004,44.701,29.17 -2020-06-13 18:30:00,83.97,38.166,44.701,29.17 -2020-06-13 18:45:00,81.48,39.333,44.701,29.17 -2020-06-13 19:00:00,81.9,39.872,45.727,29.17 -2020-06-13 19:15:00,76.64,38.601,45.727,29.17 -2020-06-13 19:30:00,75.82,38.568000000000005,45.727,29.17 -2020-06-13 19:45:00,78.53,39.488,45.727,29.17 -2020-06-13 20:00:00,74.72,38.754,43.391000000000005,29.17 -2020-06-13 20:15:00,76.21,38.875,43.391000000000005,29.17 -2020-06-13 20:30:00,72.61,37.795,43.391000000000005,29.17 -2020-06-13 20:45:00,72.49,39.428000000000004,43.391000000000005,29.17 -2020-06-13 21:00:00,71.31,37.734,41.231,29.17 -2020-06-13 21:15:00,69.62,40.884,41.231,29.17 -2020-06-13 21:30:00,68.99,41.898999999999994,41.231,29.17 -2020-06-13 21:45:00,65.8,42.681000000000004,41.231,29.17 -2020-06-13 22:00:00,61.94,40.286,40.798,29.17 -2020-06-13 22:15:00,62.44,42.176,40.798,29.17 -2020-06-13 22:30:00,60.41,41.869,40.798,29.17 -2020-06-13 22:45:00,59.47,40.296,40.798,29.17 -2020-06-13 23:00:00,56.53,36.909,34.402,29.17 -2020-06-13 23:15:00,56.79,33.949,34.402,29.17 -2020-06-13 23:30:00,56.94,33.191,34.402,29.17 -2020-06-13 23:45:00,56.32,32.468,34.402,29.17 -2020-06-14 00:00:00,52.28,26.233,30.171,29.17 -2020-06-14 00:15:00,53.6,24.875,30.171,29.17 -2020-06-14 00:30:00,49.61,23.584,30.171,29.17 -2020-06-14 00:45:00,51.87,22.745,30.171,29.17 -2020-06-14 01:00:00,50.13,22.730999999999998,27.15,29.17 -2020-06-14 01:15:00,51.9,21.837,27.15,29.17 -2020-06-14 01:30:00,50.98,19.942999999999998,27.15,29.17 -2020-06-14 01:45:00,51.2,19.963,27.15,29.17 -2020-06-14 02:00:00,49.19,19.500999999999998,25.403000000000002,29.17 -2020-06-14 02:15:00,49.45,17.74,25.403000000000002,29.17 -2020-06-14 02:30:00,46.81,20.155,25.403000000000002,29.17 -2020-06-14 02:45:00,49.86,20.811,25.403000000000002,29.17 -2020-06-14 03:00:00,48.72,22.546999999999997,23.386999999999997,29.17 -2020-06-14 03:15:00,49.41,19.547,23.386999999999997,29.17 -2020-06-14 03:30:00,49.29,18.229,23.386999999999997,29.17 -2020-06-14 03:45:00,48.21,19.223,23.386999999999997,29.17 -2020-06-14 04:00:00,46.3,23.975,23.941999999999997,29.17 -2020-06-14 04:15:00,49.49,29.096999999999998,23.941999999999997,29.17 -2020-06-14 04:30:00,49.02,26.796999999999997,23.941999999999997,29.17 -2020-06-14 04:45:00,51.15,26.214000000000002,23.941999999999997,29.17 -2020-06-14 05:00:00,52.15,33.439,23.026,29.17 -2020-06-14 05:15:00,52.37,33.179,23.026,29.17 -2020-06-14 05:30:00,51.73,25.811,23.026,29.17 -2020-06-14 05:45:00,51.3,26.45,23.026,29.17 -2020-06-14 06:00:00,55.97,38.391,23.223000000000003,29.17 -2020-06-14 06:15:00,56.52,48.623999999999995,23.223000000000003,29.17 -2020-06-14 06:30:00,57.52,42.369,23.223000000000003,29.17 -2020-06-14 06:45:00,56.72,38.123000000000005,23.223000000000003,29.17 -2020-06-14 07:00:00,58.51,38.266999999999996,24.968000000000004,29.17 -2020-06-14 07:15:00,64.2,35.931999999999995,24.968000000000004,29.17 -2020-06-14 07:30:00,64.55,34.004,24.968000000000004,29.17 -2020-06-14 07:45:00,59.52,34.175,24.968000000000004,29.17 -2020-06-14 08:00:00,60.05,34.224000000000004,29.131,29.17 -2020-06-14 08:15:00,60.54,38.406,29.131,29.17 -2020-06-14 08:30:00,59.86,39.29,29.131,29.17 -2020-06-14 08:45:00,59.75,42.483999999999995,29.131,29.17 -2020-06-14 09:00:00,55.4,38.879,29.904,29.17 -2020-06-14 09:15:00,59.64,39.813,29.904,29.17 -2020-06-14 09:30:00,58.18,43.45,29.904,29.17 -2020-06-14 09:45:00,60.74,46.76,29.904,29.17 -2020-06-14 10:00:00,65.21,43.11600000000001,28.943,29.17 -2020-06-14 10:15:00,69.62,45.239,28.943,29.17 -2020-06-14 10:30:00,76.14,45.839,28.943,29.17 -2020-06-14 10:45:00,76.23,47.826,28.943,29.17 -2020-06-14 11:00:00,72.62,43.235,31.682,29.17 -2020-06-14 11:15:00,66.42,43.803999999999995,31.682,29.17 -2020-06-14 11:30:00,63.36,45.636,31.682,29.17 -2020-06-14 11:45:00,64.54,47.348,31.682,29.17 -2020-06-14 12:00:00,58.01,45.331,27.315,29.17 -2020-06-14 12:15:00,62.22,45.035,27.315,29.17 -2020-06-14 12:30:00,67.96,44.08,27.315,29.17 -2020-06-14 12:45:00,72.55,44.851000000000006,27.315,29.17 -2020-06-14 13:00:00,70.76,44.978,23.894000000000002,29.17 -2020-06-14 13:15:00,65.86,45.318000000000005,23.894000000000002,29.17 -2020-06-14 13:30:00,52.16,43.497,23.894000000000002,29.17 -2020-06-14 13:45:00,56.73,42.155,23.894000000000002,29.17 -2020-06-14 14:00:00,56.02,44.756,21.148000000000003,29.17 -2020-06-14 14:15:00,58.16,43.071999999999996,21.148000000000003,29.17 -2020-06-14 14:30:00,59.65,41.708999999999996,21.148000000000003,29.17 -2020-06-14 14:45:00,66.92,41.126999999999995,21.148000000000003,29.17 -2020-06-14 15:00:00,72.76,43.235,21.229,29.17 -2020-06-14 15:15:00,75.07,40.558,21.229,29.17 -2020-06-14 15:30:00,73.16,38.271,21.229,29.17 -2020-06-14 15:45:00,75.74,36.243,21.229,29.17 -2020-06-14 16:00:00,74.37,38.602,25.037,29.17 -2020-06-14 16:15:00,75.85,38.010999999999996,25.037,29.17 -2020-06-14 16:30:00,76.68,38.395,25.037,29.17 -2020-06-14 16:45:00,79.86,34.135,25.037,29.17 -2020-06-14 17:00:00,80.06,37.714,37.11,29.17 -2020-06-14 17:15:00,75.98,37.064,37.11,29.17 -2020-06-14 17:30:00,76.02,37.105,37.11,29.17 -2020-06-14 17:45:00,75.92,36.233000000000004,37.11,29.17 -2020-06-14 18:00:00,79.59,40.564,42.215,29.17 -2020-06-14 18:15:00,78.09,41.273999999999994,42.215,29.17 -2020-06-14 18:30:00,79.69,39.839,42.215,29.17 -2020-06-14 18:45:00,80.19,41.276,42.215,29.17 -2020-06-14 19:00:00,81.77,43.848,44.383,29.17 -2020-06-14 19:15:00,78.54,41.562,44.383,29.17 -2020-06-14 19:30:00,77.06,41.271,44.383,29.17 -2020-06-14 19:45:00,76.9,41.873999999999995,44.383,29.17 -2020-06-14 20:00:00,77.81,41.295,43.426,29.17 -2020-06-14 20:15:00,77.47,41.37,43.426,29.17 -2020-06-14 20:30:00,78.68,41.177,43.426,29.17 -2020-06-14 20:45:00,80.51,41.136,43.426,29.17 -2020-06-14 21:00:00,78.65,39.095,42.265,29.17 -2020-06-14 21:15:00,80.2,41.913999999999994,42.265,29.17 -2020-06-14 21:30:00,77.65,42.313,42.265,29.17 -2020-06-14 21:45:00,77.23,43.458,42.265,29.17 -2020-06-14 22:00:00,72.55,42.913999999999994,42.26,29.17 -2020-06-14 22:15:00,73.29,43.146,42.26,29.17 -2020-06-14 22:30:00,72.39,42.07899999999999,42.26,29.17 -2020-06-14 22:45:00,72.99,39.211,42.26,29.17 -2020-06-14 23:00:00,66.65,35.281,36.609,29.17 -2020-06-14 23:15:00,66.5,33.724000000000004,36.609,29.17 -2020-06-14 23:30:00,66.47,32.531,36.609,29.17 -2020-06-14 23:45:00,66.58,32.023,36.609,29.17 -2020-06-15 00:00:00,63.68,27.921999999999997,34.611,29.28 -2020-06-15 00:15:00,66.57,27.576,34.611,29.28 -2020-06-15 00:30:00,66.22,25.934,34.611,29.28 -2020-06-15 00:45:00,67.82,24.68,34.611,29.28 -2020-06-15 01:00:00,66.38,25.049,33.552,29.28 -2020-06-15 01:15:00,63.83,24.105,33.552,29.28 -2020-06-15 01:30:00,65.85,22.554000000000002,33.552,29.28 -2020-06-15 01:45:00,63.4,22.485,33.552,29.28 -2020-06-15 02:00:00,64.21,22.454,32.351,29.28 -2020-06-15 02:15:00,65.04,19.855,32.351,29.28 -2020-06-15 02:30:00,65.8,22.451,32.351,29.28 -2020-06-15 02:45:00,71.81,22.92,32.351,29.28 -2020-06-15 03:00:00,71.74,25.247,30.793000000000003,29.28 -2020-06-15 03:15:00,73.07,23.074,30.793000000000003,29.28 -2020-06-15 03:30:00,67.77,22.386999999999997,30.793000000000003,29.28 -2020-06-15 03:45:00,68.94,22.915,30.793000000000003,29.28 -2020-06-15 04:00:00,70.83,30.949,31.274,29.28 -2020-06-15 04:15:00,72.74,39.173,31.274,29.28 -2020-06-15 04:30:00,76.76,36.596,31.274,29.28 -2020-06-15 04:45:00,82.08,36.376999999999995,31.274,29.28 -2020-06-15 05:00:00,88.23,51.6,37.75,29.28 -2020-06-15 05:15:00,92.27,62.74100000000001,37.75,29.28 -2020-06-15 05:30:00,94.48,53.993,37.75,29.28 -2020-06-15 05:45:00,97.09,51.272,37.75,29.28 -2020-06-15 06:00:00,102.24,51.938,55.36,29.28 -2020-06-15 06:15:00,111.18,52.23,55.36,29.28 -2020-06-15 06:30:00,115.52,50.466,55.36,29.28 -2020-06-15 06:45:00,117.34,52.028,55.36,29.28 -2020-06-15 07:00:00,115.83,52.782,65.87,29.28 -2020-06-15 07:15:00,114.27,52.74100000000001,65.87,29.28 -2020-06-15 07:30:00,122.7,49.918,65.87,29.28 -2020-06-15 07:45:00,120.92,50.178999999999995,65.87,29.28 -2020-06-15 08:00:00,119.84,47.783,55.695,29.28 -2020-06-15 08:15:00,111.36,50.665,55.695,29.28 -2020-06-15 08:30:00,110.75,50.261,55.695,29.28 -2020-06-15 08:45:00,113.47,53.36,55.695,29.28 -2020-06-15 09:00:00,117.2,48.68899999999999,50.881,29.28 -2020-06-15 09:15:00,116.73,47.618,50.881,29.28 -2020-06-15 09:30:00,110.25,50.285,50.881,29.28 -2020-06-15 09:45:00,118.14,51.467,50.881,29.28 -2020-06-15 10:00:00,117.56,48.161,49.138000000000005,29.28 -2020-06-15 10:15:00,114.82,50.128,49.138000000000005,29.28 -2020-06-15 10:30:00,113.15,50.214,49.138000000000005,29.28 -2020-06-15 10:45:00,110.62,50.78,49.138000000000005,29.28 -2020-06-15 11:00:00,110.55,46.151,49.178000000000004,29.28 -2020-06-15 11:15:00,113.2,47.161,49.178000000000004,29.28 -2020-06-15 11:30:00,114.7,49.771,49.178000000000004,29.28 -2020-06-15 11:45:00,107.65,51.922,49.178000000000004,29.28 -2020-06-15 12:00:00,103.58,48.492,47.698,29.28 -2020-06-15 12:15:00,100.76,48.303000000000004,47.698,29.28 -2020-06-15 12:30:00,98.31,46.336000000000006,47.698,29.28 -2020-06-15 12:45:00,100.35,47.248000000000005,47.698,29.28 -2020-06-15 13:00:00,98.72,48.282,48.104,29.28 -2020-06-15 13:15:00,97.1,47.658,48.104,29.28 -2020-06-15 13:30:00,98.57,45.958,48.104,29.28 -2020-06-15 13:45:00,100.45,45.47,48.104,29.28 -2020-06-15 14:00:00,109.23,47.168,48.53,29.28 -2020-06-15 14:15:00,107.1,45.983999999999995,48.53,29.28 -2020-06-15 14:30:00,105.45,44.391000000000005,48.53,29.28 -2020-06-15 14:45:00,107.37,45.77,48.53,29.28 -2020-06-15 15:00:00,105.82,47.726000000000006,49.351000000000006,29.28 -2020-06-15 15:15:00,101.42,44.35,49.351000000000006,29.28 -2020-06-15 15:30:00,93.89,42.706,49.351000000000006,29.28 -2020-06-15 15:45:00,102.39,40.167,49.351000000000006,29.28 -2020-06-15 16:00:00,103.23,43.58,51.44,29.28 -2020-06-15 16:15:00,103.03,42.976000000000006,51.44,29.28 -2020-06-15 16:30:00,103.38,42.66,51.44,29.28 -2020-06-15 16:45:00,105.31,38.287,51.44,29.28 -2020-06-15 17:00:00,110.64,40.8,56.868,29.28 -2020-06-15 17:15:00,108.12,40.414,56.868,29.28 -2020-06-15 17:30:00,107.45,40.03,56.868,29.28 -2020-06-15 17:45:00,108.12,38.626,56.868,29.28 -2020-06-15 18:00:00,107.0,41.968,57.229,29.28 -2020-06-15 18:15:00,105.19,40.717,57.229,29.28 -2020-06-15 18:30:00,103.36,38.615,57.229,29.28 -2020-06-15 18:45:00,103.93,43.123999999999995,57.229,29.28 -2020-06-15 19:00:00,101.36,45.273,57.744,29.28 -2020-06-15 19:15:00,97.27,44.143,57.744,29.28 -2020-06-15 19:30:00,94.43,43.535,57.744,29.28 -2020-06-15 19:45:00,94.45,43.476000000000006,57.744,29.28 -2020-06-15 20:00:00,93.01,41.475,66.05199999999999,29.28 -2020-06-15 20:15:00,93.07,42.67,66.05199999999999,29.28 -2020-06-15 20:30:00,92.72,42.825,66.05199999999999,29.28 -2020-06-15 20:45:00,92.0,43.159,66.05199999999999,29.28 -2020-06-15 21:00:00,90.53,40.566,59.396,29.28 -2020-06-15 21:15:00,89.26,43.715,59.396,29.28 -2020-06-15 21:30:00,86.15,44.418,59.396,29.28 -2020-06-15 21:45:00,83.94,45.318999999999996,59.396,29.28 -2020-06-15 22:00:00,79.53,42.593999999999994,53.06,29.28 -2020-06-15 22:15:00,79.12,44.623999999999995,53.06,29.28 -2020-06-15 22:30:00,76.82,38.604,53.06,29.28 -2020-06-15 22:45:00,77.6,35.296,53.06,29.28 -2020-06-15 23:00:00,71.23,31.458000000000002,46.148,29.28 -2020-06-15 23:15:00,71.79,28.58,46.148,29.28 -2020-06-15 23:30:00,73.2,27.590999999999998,46.148,29.28 -2020-06-15 23:45:00,71.26,26.781,46.148,29.28 -2020-06-16 00:00:00,68.96,24.359,44.625,29.28 -2020-06-16 00:15:00,69.29,25.055999999999997,44.625,29.28 -2020-06-16 00:30:00,68.44,23.929000000000002,44.625,29.28 -2020-06-16 00:45:00,68.79,23.45,44.625,29.28 -2020-06-16 01:00:00,66.84,23.256,41.733000000000004,29.28 -2020-06-16 01:15:00,68.54,22.443,41.733000000000004,29.28 -2020-06-16 01:30:00,67.64,20.79,41.733000000000004,29.28 -2020-06-16 01:45:00,68.65,20.428,41.733000000000004,29.28 -2020-06-16 02:00:00,68.14,19.965999999999998,39.872,29.28 -2020-06-16 02:15:00,67.92,18.408,39.872,29.28 -2020-06-16 02:30:00,67.69,20.671999999999997,39.872,29.28 -2020-06-16 02:45:00,68.5,21.430999999999997,39.872,29.28 -2020-06-16 03:00:00,68.84,23.045,38.711,29.28 -2020-06-16 03:15:00,70.43,21.794,38.711,29.28 -2020-06-16 03:30:00,71.46,21.061999999999998,38.711,29.28 -2020-06-16 03:45:00,71.24,20.377,38.711,29.28 -2020-06-16 04:00:00,78.78,26.963,39.823,29.28 -2020-06-16 04:15:00,83.37,34.927,39.823,29.28 -2020-06-16 04:30:00,86.33,32.236999999999995,39.823,29.28 -2020-06-16 04:45:00,84.83,32.514,39.823,29.28 -2020-06-16 05:00:00,89.13,48.638999999999996,43.228,29.28 -2020-06-16 05:15:00,95.5,59.591,43.228,29.28 -2020-06-16 05:30:00,102.96,51.088,43.228,29.28 -2020-06-16 05:45:00,106.21,47.806999999999995,43.228,29.28 -2020-06-16 06:00:00,110.04,49.923,54.316,29.28 -2020-06-16 06:15:00,106.31,50.313,54.316,29.28 -2020-06-16 06:30:00,112.22,48.407,54.316,29.28 -2020-06-16 06:45:00,116.7,49.299,54.316,29.28 -2020-06-16 07:00:00,118.4,50.067,65.758,29.28 -2020-06-16 07:15:00,114.45,49.853,65.758,29.28 -2020-06-16 07:30:00,120.01,47.098,65.758,29.28 -2020-06-16 07:45:00,121.47,46.503,65.758,29.28 -2020-06-16 08:00:00,122.52,43.562,57.983000000000004,29.28 -2020-06-16 08:15:00,120.87,46.042,57.983000000000004,29.28 -2020-06-16 08:30:00,119.62,46.19,57.983000000000004,29.28 -2020-06-16 08:45:00,120.59,48.538000000000004,57.983000000000004,29.28 -2020-06-16 09:00:00,119.48,43.669,52.653,29.28 -2020-06-16 09:15:00,115.43,42.684,52.653,29.28 -2020-06-16 09:30:00,115.25,46.261,52.653,29.28 -2020-06-16 09:45:00,119.15,48.981,52.653,29.28 -2020-06-16 10:00:00,124.46,43.623000000000005,51.408,29.28 -2020-06-16 10:15:00,124.81,45.39,51.408,29.28 -2020-06-16 10:30:00,116.98,45.55,51.408,29.28 -2020-06-16 10:45:00,119.25,47.229,51.408,29.28 -2020-06-16 11:00:00,119.52,43.428000000000004,51.913000000000004,29.28 -2020-06-16 11:15:00,106.77,44.788000000000004,51.913000000000004,29.28 -2020-06-16 11:30:00,105.75,46.257,51.913000000000004,29.28 -2020-06-16 11:45:00,111.19,48.073,51.913000000000004,29.28 -2020-06-16 12:00:00,110.92,44.413000000000004,49.508,29.28 -2020-06-16 12:15:00,110.35,44.346000000000004,49.508,29.28 -2020-06-16 12:30:00,105.59,43.29,49.508,29.28 -2020-06-16 12:45:00,115.07,44.753,49.508,29.28 -2020-06-16 13:00:00,112.54,45.398,50.007,29.28 -2020-06-16 13:15:00,111.53,46.568999999999996,50.007,29.28 -2020-06-16 13:30:00,107.86,44.854,50.007,29.28 -2020-06-16 13:45:00,113.1,43.668,50.007,29.28 -2020-06-16 14:00:00,111.48,45.714,49.778999999999996,29.28 -2020-06-16 14:15:00,108.96,44.407,49.778999999999996,29.28 -2020-06-16 14:30:00,105.74,43.292,49.778999999999996,29.28 -2020-06-16 14:45:00,106.26,43.869,49.778999999999996,29.28 -2020-06-16 15:00:00,102.33,45.617,51.559,29.28 -2020-06-16 15:15:00,103.42,43.174,51.559,29.28 -2020-06-16 15:30:00,111.85,41.39,51.559,29.28 -2020-06-16 15:45:00,116.04,39.3,51.559,29.28 -2020-06-16 16:00:00,111.53,42.037,53.531000000000006,29.28 -2020-06-16 16:15:00,109.87,41.598,53.531000000000006,29.28 -2020-06-16 16:30:00,107.38,40.802,53.531000000000006,29.28 -2020-06-16 16:45:00,111.98,37.24,53.531000000000006,29.28 -2020-06-16 17:00:00,113.93,40.24,59.497,29.28 -2020-06-16 17:15:00,112.65,40.22,59.497,29.28 -2020-06-16 17:30:00,108.82,39.359,59.497,29.28 -2020-06-16 17:45:00,114.35,37.766,59.497,29.28 -2020-06-16 18:00:00,115.88,40.343,59.861999999999995,29.28 -2020-06-16 18:15:00,116.48,40.538000000000004,59.861999999999995,29.28 -2020-06-16 18:30:00,107.47,38.215,59.861999999999995,29.28 -2020-06-16 18:45:00,107.61,42.318000000000005,59.861999999999995,29.28 -2020-06-16 19:00:00,111.62,42.979,60.989,29.28 -2020-06-16 19:15:00,106.07,42.001000000000005,60.989,29.28 -2020-06-16 19:30:00,102.41,41.065,60.989,29.28 -2020-06-16 19:45:00,95.32,41.147,60.989,29.28 -2020-06-16 20:00:00,92.13,38.826,68.35600000000001,29.28 -2020-06-16 20:15:00,94.97,38.798,68.35600000000001,29.28 -2020-06-16 20:30:00,91.06,39.229,68.35600000000001,29.28 -2020-06-16 20:45:00,94.21,39.921,68.35600000000001,29.28 -2020-06-16 21:00:00,89.7,38.23,59.251000000000005,29.28 -2020-06-16 21:15:00,89.12,40.126999999999995,59.251000000000005,29.28 -2020-06-16 21:30:00,86.59,41.136,59.251000000000005,29.28 -2020-06-16 21:45:00,85.8,42.263999999999996,59.251000000000005,29.28 -2020-06-16 22:00:00,81.71,39.696,54.736999999999995,29.28 -2020-06-16 22:15:00,82.26,41.648,54.736999999999995,29.28 -2020-06-16 22:30:00,79.77,36.277,54.736999999999995,29.28 -2020-06-16 22:45:00,81.67,32.983000000000004,54.736999999999995,29.28 -2020-06-16 23:00:00,74.51,28.76,46.806999999999995,29.28 -2020-06-16 23:15:00,74.79,27.148000000000003,46.806999999999995,29.28 -2020-06-16 23:30:00,82.15,25.996,46.806999999999995,29.28 -2020-06-16 23:45:00,74.96,25.283,46.806999999999995,29.28 -2020-06-17 00:00:00,70.38,24.259,43.824,29.28 -2020-06-17 00:15:00,71.92,24.956,43.824,29.28 -2020-06-17 00:30:00,70.72,23.831999999999997,43.824,29.28 -2020-06-17 00:45:00,71.52,23.358,43.824,29.28 -2020-06-17 01:00:00,69.75,23.180999999999997,39.86,29.28 -2020-06-17 01:15:00,70.66,22.351999999999997,39.86,29.28 -2020-06-17 01:30:00,70.25,20.694000000000003,39.86,29.28 -2020-06-17 01:45:00,70.36,20.323,39.86,29.28 -2020-06-17 02:00:00,69.85,19.865,37.931999999999995,29.28 -2020-06-17 02:15:00,69.97,18.305999999999997,37.931999999999995,29.28 -2020-06-17 02:30:00,77.19,20.566,37.931999999999995,29.28 -2020-06-17 02:45:00,79.52,21.33,37.931999999999995,29.28 -2020-06-17 03:00:00,75.47,22.943,37.579,29.28 -2020-06-17 03:15:00,71.44,21.693,37.579,29.28 -2020-06-17 03:30:00,73.65,20.968000000000004,37.579,29.28 -2020-06-17 03:45:00,74.61,20.305,37.579,29.28 -2020-06-17 04:00:00,75.19,26.839000000000002,37.931999999999995,29.28 -2020-06-17 04:15:00,77.28,34.758,37.931999999999995,29.28 -2020-06-17 04:30:00,80.23,32.056,37.931999999999995,29.28 -2020-06-17 04:45:00,86.39,32.33,37.931999999999995,29.28 -2020-06-17 05:00:00,92.75,48.354,40.942,29.28 -2020-06-17 05:15:00,94.78,59.178000000000004,40.942,29.28 -2020-06-17 05:30:00,102.45,50.743,40.942,29.28 -2020-06-17 05:45:00,103.25,47.508,40.942,29.28 -2020-06-17 06:00:00,109.39,49.636,56.516999999999996,29.28 -2020-06-17 06:15:00,108.76,50.011,56.516999999999996,29.28 -2020-06-17 06:30:00,106.58,48.129,56.516999999999996,29.28 -2020-06-17 06:45:00,115.87,49.049,56.516999999999996,29.28 -2020-06-17 07:00:00,120.05,49.805,71.707,29.28 -2020-06-17 07:15:00,118.84,49.608999999999995,71.707,29.28 -2020-06-17 07:30:00,112.36,46.847,71.707,29.28 -2020-06-17 07:45:00,116.82,46.285,71.707,29.28 -2020-06-17 08:00:00,118.62,43.354,61.17,29.28 -2020-06-17 08:15:00,120.54,45.867,61.17,29.28 -2020-06-17 08:30:00,112.25,46.007,61.17,29.28 -2020-06-17 08:45:00,110.41,48.36,61.17,29.28 -2020-06-17 09:00:00,112.65,43.483999999999995,57.282,29.28 -2020-06-17 09:15:00,116.01,42.503,57.282,29.28 -2020-06-17 09:30:00,115.28,46.07899999999999,57.282,29.28 -2020-06-17 09:45:00,117.39,48.817,57.282,29.28 -2020-06-17 10:00:00,119.51,43.468,54.026,29.28 -2020-06-17 10:15:00,118.12,45.247,54.026,29.28 -2020-06-17 10:30:00,115.99,45.409,54.026,29.28 -2020-06-17 10:45:00,112.31,47.093999999999994,54.026,29.28 -2020-06-17 11:00:00,117.86,43.288999999999994,54.277,29.28 -2020-06-17 11:15:00,118.81,44.655,54.277,29.28 -2020-06-17 11:30:00,112.48,46.113,54.277,29.28 -2020-06-17 11:45:00,106.68,47.93,54.277,29.28 -2020-06-17 12:00:00,107.8,44.3,52.552,29.28 -2020-06-17 12:15:00,109.75,44.235,52.552,29.28 -2020-06-17 12:30:00,109.97,43.158,52.552,29.28 -2020-06-17 12:45:00,106.0,44.623000000000005,52.552,29.28 -2020-06-17 13:00:00,99.76,45.25899999999999,52.111999999999995,29.28 -2020-06-17 13:15:00,101.66,46.431999999999995,52.111999999999995,29.28 -2020-06-17 13:30:00,106.4,44.727,52.111999999999995,29.28 -2020-06-17 13:45:00,109.32,43.545,52.111999999999995,29.28 -2020-06-17 14:00:00,108.0,45.607,52.066,29.28 -2020-06-17 14:15:00,102.64,44.297,52.066,29.28 -2020-06-17 14:30:00,105.38,43.159,52.066,29.28 -2020-06-17 14:45:00,107.65,43.742,52.066,29.28 -2020-06-17 15:00:00,106.16,45.522,52.523999999999994,29.28 -2020-06-17 15:15:00,98.78,43.071000000000005,52.523999999999994,29.28 -2020-06-17 15:30:00,97.44,41.277,52.523999999999994,29.28 -2020-06-17 15:45:00,102.09,39.176,52.523999999999994,29.28 -2020-06-17 16:00:00,102.74,41.942,54.101000000000006,29.28 -2020-06-17 16:15:00,111.61,41.501000000000005,54.101000000000006,29.28 -2020-06-17 16:30:00,112.07,40.723,54.101000000000006,29.28 -2020-06-17 16:45:00,111.13,37.138000000000005,54.101000000000006,29.28 -2020-06-17 17:00:00,107.3,40.161,58.155,29.28 -2020-06-17 17:15:00,106.07,40.135,58.155,29.28 -2020-06-17 17:30:00,109.67,39.269,58.155,29.28 -2020-06-17 17:45:00,109.22,37.658,58.155,29.28 -2020-06-17 18:00:00,115.64,40.247,60.205,29.28 -2020-06-17 18:15:00,115.65,40.415,60.205,29.28 -2020-06-17 18:30:00,112.11,38.086999999999996,60.205,29.28 -2020-06-17 18:45:00,108.54,42.19,60.205,29.28 -2020-06-17 19:00:00,111.91,42.853,61.568999999999996,29.28 -2020-06-17 19:15:00,107.65,41.867,61.568999999999996,29.28 -2020-06-17 19:30:00,104.81,40.923,61.568999999999996,29.28 -2020-06-17 19:45:00,100.79,41.0,61.568999999999996,29.28 -2020-06-17 20:00:00,95.94,38.662,68.145,29.28 -2020-06-17 20:15:00,95.76,38.63,68.145,29.28 -2020-06-17 20:30:00,95.13,39.07,68.145,29.28 -2020-06-17 20:45:00,95.74,39.789,68.145,29.28 -2020-06-17 21:00:00,93.35,38.104,59.696000000000005,29.28 -2020-06-17 21:15:00,92.86,40.008,59.696000000000005,29.28 -2020-06-17 21:30:00,90.82,40.994,59.696000000000005,29.28 -2020-06-17 21:45:00,88.68,42.13,59.696000000000005,29.28 -2020-06-17 22:00:00,84.2,39.58,54.861999999999995,29.28 -2020-06-17 22:15:00,84.82,41.541000000000004,54.861999999999995,29.28 -2020-06-17 22:30:00,81.78,36.164,54.861999999999995,29.28 -2020-06-17 22:45:00,80.67,32.86,54.861999999999995,29.28 -2020-06-17 23:00:00,74.94,28.62,45.568000000000005,29.28 -2020-06-17 23:15:00,76.51,27.043000000000003,45.568000000000005,29.28 -2020-06-17 23:30:00,75.84,25.903000000000002,45.568000000000005,29.28 -2020-06-17 23:45:00,75.6,25.178,45.568000000000005,29.28 -2020-06-18 00:00:00,73.4,24.163,40.181,29.28 -2020-06-18 00:15:00,72.87,24.86,40.181,29.28 -2020-06-18 00:30:00,72.34,23.739,40.181,29.28 -2020-06-18 00:45:00,73.84,23.271,40.181,29.28 -2020-06-18 01:00:00,71.31,23.109,38.296,29.28 -2020-06-18 01:15:00,72.98,22.264,38.296,29.28 -2020-06-18 01:30:00,73.12,20.601999999999997,38.296,29.28 -2020-06-18 01:45:00,72.86,20.224,38.296,29.28 -2020-06-18 02:00:00,72.69,19.769000000000002,36.575,29.28 -2020-06-18 02:15:00,73.69,18.209,36.575,29.28 -2020-06-18 02:30:00,80.7,20.464000000000002,36.575,29.28 -2020-06-18 02:45:00,81.54,21.235,36.575,29.28 -2020-06-18 03:00:00,76.54,22.845,36.394,29.28 -2020-06-18 03:15:00,74.22,21.598000000000003,36.394,29.28 -2020-06-18 03:30:00,74.27,20.877,36.394,29.28 -2020-06-18 03:45:00,75.37,20.236,36.394,29.28 -2020-06-18 04:00:00,78.58,26.719,37.207,29.28 -2020-06-18 04:15:00,77.79,34.595,37.207,29.28 -2020-06-18 04:30:00,81.29,31.881,37.207,29.28 -2020-06-18 04:45:00,87.9,32.150999999999996,37.207,29.28 -2020-06-18 05:00:00,91.79,48.077,40.713,29.28 -2020-06-18 05:15:00,94.18,58.776,40.713,29.28 -2020-06-18 05:30:00,102.83,50.407,40.713,29.28 -2020-06-18 05:45:00,105.92,47.218999999999994,40.713,29.28 -2020-06-18 06:00:00,112.75,49.357,50.952,29.28 -2020-06-18 06:15:00,110.24,49.718999999999994,50.952,29.28 -2020-06-18 06:30:00,106.85,47.858000000000004,50.952,29.28 -2020-06-18 06:45:00,108.84,48.808,50.952,29.28 -2020-06-18 07:00:00,116.96,49.552,64.88,29.28 -2020-06-18 07:15:00,117.84,49.375,64.88,29.28 -2020-06-18 07:30:00,118.78,46.605,64.88,29.28 -2020-06-18 07:45:00,110.21,46.077,64.88,29.28 -2020-06-18 08:00:00,112.37,43.156000000000006,55.133,29.28 -2020-06-18 08:15:00,120.59,45.7,55.133,29.28 -2020-06-18 08:30:00,116.62,45.832,55.133,29.28 -2020-06-18 08:45:00,113.88,48.188,55.133,29.28 -2020-06-18 09:00:00,111.01,43.306000000000004,48.912,29.28 -2020-06-18 09:15:00,116.08,42.32899999999999,48.912,29.28 -2020-06-18 09:30:00,116.1,45.903999999999996,48.912,29.28 -2020-06-18 09:45:00,110.88,48.659,48.912,29.28 -2020-06-18 10:00:00,111.72,43.321000000000005,45.968999999999994,29.28 -2020-06-18 10:15:00,116.87,45.11,45.968999999999994,29.28 -2020-06-18 10:30:00,119.29,45.273999999999994,45.968999999999994,29.28 -2020-06-18 10:45:00,117.36,46.965,45.968999999999994,29.28 -2020-06-18 11:00:00,115.58,43.156000000000006,44.067,29.28 -2020-06-18 11:15:00,108.97,44.528,44.067,29.28 -2020-06-18 11:30:00,104.55,45.975,44.067,29.28 -2020-06-18 11:45:00,104.96,47.792,44.067,29.28 -2020-06-18 12:00:00,117.07,44.193000000000005,41.501000000000005,29.28 -2020-06-18 12:15:00,118.98,44.129,41.501000000000005,29.28 -2020-06-18 12:30:00,111.45,43.032,41.501000000000005,29.28 -2020-06-18 12:45:00,105.65,44.498999999999995,41.501000000000005,29.28 -2020-06-18 13:00:00,107.61,45.126000000000005,41.117,29.28 -2020-06-18 13:15:00,111.84,46.298,41.117,29.28 -2020-06-18 13:30:00,112.94,44.604,41.117,29.28 -2020-06-18 13:45:00,114.13,43.426,41.117,29.28 -2020-06-18 14:00:00,110.3,45.501999999999995,41.492,29.28 -2020-06-18 14:15:00,112.76,44.191,41.492,29.28 -2020-06-18 14:30:00,115.17,43.031000000000006,41.492,29.28 -2020-06-18 14:45:00,117.92,43.619,41.492,29.28 -2020-06-18 15:00:00,115.32,45.431000000000004,43.711999999999996,29.28 -2020-06-18 15:15:00,123.12,42.968999999999994,43.711999999999996,29.28 -2020-06-18 15:30:00,122.03,41.169,43.711999999999996,29.28 -2020-06-18 15:45:00,118.04,39.056999999999995,43.711999999999996,29.28 -2020-06-18 16:00:00,118.78,41.851000000000006,45.446000000000005,29.28 -2020-06-18 16:15:00,112.38,41.406000000000006,45.446000000000005,29.28 -2020-06-18 16:30:00,118.25,40.647,45.446000000000005,29.28 -2020-06-18 16:45:00,122.87,37.039,45.446000000000005,29.28 -2020-06-18 17:00:00,115.45,40.086999999999996,48.803000000000004,29.28 -2020-06-18 17:15:00,111.22,40.056,48.803000000000004,29.28 -2020-06-18 17:30:00,107.59,39.183,48.803000000000004,29.28 -2020-06-18 17:45:00,109.13,37.556999999999995,48.803000000000004,29.28 -2020-06-18 18:00:00,114.28,40.154,51.167,29.28 -2020-06-18 18:15:00,108.94,40.298,51.167,29.28 -2020-06-18 18:30:00,104.66,37.966,51.167,29.28 -2020-06-18 18:45:00,108.51,42.067,51.167,29.28 -2020-06-18 19:00:00,107.19,42.733000000000004,52.486000000000004,29.28 -2020-06-18 19:15:00,97.5,41.736999999999995,52.486000000000004,29.28 -2020-06-18 19:30:00,95.56,40.787,52.486000000000004,29.28 -2020-06-18 19:45:00,94.72,40.857,52.486000000000004,29.28 -2020-06-18 20:00:00,92.52,38.503,59.635,29.28 -2020-06-18 20:15:00,92.24,38.47,59.635,29.28 -2020-06-18 20:30:00,92.21,38.916,59.635,29.28 -2020-06-18 20:45:00,92.12,39.663000000000004,59.635,29.28 -2020-06-18 21:00:00,90.57,37.983000000000004,54.353,29.28 -2020-06-18 21:15:00,89.89,39.894,54.353,29.28 -2020-06-18 21:30:00,85.01,40.857,54.353,29.28 -2020-06-18 21:45:00,85.71,42.0,54.353,29.28 -2020-06-18 22:00:00,80.59,39.469,49.431999999999995,29.28 -2020-06-18 22:15:00,80.6,41.437,49.431999999999995,29.28 -2020-06-18 22:30:00,78.43,36.054,49.431999999999995,29.28 -2020-06-18 22:45:00,78.92,32.741,49.431999999999995,29.28 -2020-06-18 23:00:00,74.17,28.486,42.872,29.28 -2020-06-18 23:15:00,75.08,26.943,42.872,29.28 -2020-06-18 23:30:00,71.55,25.811,42.872,29.28 -2020-06-18 23:45:00,74.47,25.078000000000003,42.872,29.28 -2020-06-19 00:00:00,71.17,22.217,39.819,29.28 -2020-06-19 00:15:00,70.01,23.143,39.819,29.28 -2020-06-19 00:30:00,67.45,22.285999999999998,39.819,29.28 -2020-06-19 00:45:00,69.33,22.254,39.819,29.28 -2020-06-19 01:00:00,66.99,21.705,37.797,29.28 -2020-06-19 01:15:00,71.13,20.305,37.797,29.28 -2020-06-19 01:30:00,76.08,19.335,37.797,29.28 -2020-06-19 01:45:00,76.62,18.707,37.797,29.28 -2020-06-19 02:00:00,72.72,19.19,36.905,29.28 -2020-06-19 02:15:00,76.55,17.572,36.905,29.28 -2020-06-19 02:30:00,75.24,20.678,36.905,29.28 -2020-06-19 02:45:00,72.74,20.775,36.905,29.28 -2020-06-19 03:00:00,70.27,23.093000000000004,37.1,29.28 -2020-06-19 03:15:00,72.1,20.705,37.1,29.28 -2020-06-19 03:30:00,71.55,19.752,37.1,29.28 -2020-06-19 03:45:00,73.4,20.027,37.1,29.28 -2020-06-19 04:00:00,75.24,26.611,37.882,29.28 -2020-06-19 04:15:00,77.24,32.875,37.882,29.28 -2020-06-19 04:30:00,79.93,31.11,37.882,29.28 -2020-06-19 04:45:00,81.23,30.662,37.882,29.28 -2020-06-19 05:00:00,90.71,45.931000000000004,40.777,29.28 -2020-06-19 05:15:00,98.92,57.556000000000004,40.777,29.28 -2020-06-19 05:30:00,104.38,49.518,40.777,29.28 -2020-06-19 05:45:00,106.32,45.928999999999995,40.777,29.28 -2020-06-19 06:00:00,107.95,48.331,55.528,29.28 -2020-06-19 06:15:00,110.49,48.743,55.528,29.28 -2020-06-19 06:30:00,109.88,46.794,55.528,29.28 -2020-06-19 06:45:00,113.13,47.756,55.528,29.28 -2020-06-19 07:00:00,124.83,49.074,67.749,29.28 -2020-06-19 07:15:00,124.36,49.885,67.749,29.28 -2020-06-19 07:30:00,123.58,45.167,67.749,29.28 -2020-06-19 07:45:00,117.62,44.401,67.749,29.28 -2020-06-19 08:00:00,115.83,42.183,57.55,29.28 -2020-06-19 08:15:00,118.6,45.393,57.55,29.28 -2020-06-19 08:30:00,123.82,45.49100000000001,57.55,29.28 -2020-06-19 08:45:00,128.81,47.595,57.55,29.28 -2020-06-19 09:00:00,126.71,40.461999999999996,52.588,29.28 -2020-06-19 09:15:00,114.96,41.42100000000001,52.588,29.28 -2020-06-19 09:30:00,122.02,44.286,52.588,29.28 -2020-06-19 09:45:00,127.81,47.428999999999995,52.588,29.28 -2020-06-19 10:00:00,122.67,41.851000000000006,49.772,29.28 -2020-06-19 10:15:00,122.54,43.483000000000004,49.772,29.28 -2020-06-19 10:30:00,122.79,44.187,49.772,29.28 -2020-06-19 10:45:00,121.18,45.756,49.772,29.28 -2020-06-19 11:00:00,122.52,42.196999999999996,49.226000000000006,29.28 -2020-06-19 11:15:00,124.31,42.438,49.226000000000006,29.28 -2020-06-19 11:30:00,125.71,43.64,49.226000000000006,29.28 -2020-06-19 11:45:00,123.32,44.515,49.226000000000006,29.28 -2020-06-19 12:00:00,114.63,41.446999999999996,45.705,29.28 -2020-06-19 12:15:00,122.04,40.604,45.705,29.28 -2020-06-19 12:30:00,117.45,39.614000000000004,45.705,29.28 -2020-06-19 12:45:00,117.38,40.341,45.705,29.28 -2020-06-19 13:00:00,106.5,41.613,43.133,29.28 -2020-06-19 13:15:00,107.87,43.023,43.133,29.28 -2020-06-19 13:30:00,118.64,42.123999999999995,43.133,29.28 -2020-06-19 13:45:00,120.24,41.25,43.133,29.28 -2020-06-19 14:00:00,114.0,42.461999999999996,41.989,29.28 -2020-06-19 14:15:00,101.38,41.568000000000005,41.989,29.28 -2020-06-19 14:30:00,104.98,41.913000000000004,41.989,29.28 -2020-06-19 14:45:00,100.54,41.845,41.989,29.28 -2020-06-19 15:00:00,102.98,43.575,43.728,29.28 -2020-06-19 15:15:00,95.22,40.839,43.728,29.28 -2020-06-19 15:30:00,100.15,38.366,43.728,29.28 -2020-06-19 15:45:00,103.04,37.007,43.728,29.28 -2020-06-19 16:00:00,102.24,38.91,45.93899999999999,29.28 -2020-06-19 16:15:00,97.18,38.972,45.93899999999999,29.28 -2020-06-19 16:30:00,99.11,38.058,45.93899999999999,29.28 -2020-06-19 16:45:00,103.2,33.641999999999996,45.93899999999999,29.28 -2020-06-19 17:00:00,108.34,38.445,50.488,29.28 -2020-06-19 17:15:00,102.87,38.21,50.488,29.28 -2020-06-19 17:30:00,103.68,37.475,50.488,29.28 -2020-06-19 17:45:00,106.28,35.653,50.488,29.28 -2020-06-19 18:00:00,106.78,38.35,52.408,29.28 -2020-06-19 18:15:00,100.21,37.504,52.408,29.28 -2020-06-19 18:30:00,105.97,35.091,52.408,29.28 -2020-06-19 18:45:00,105.56,39.607,52.408,29.28 -2020-06-19 19:00:00,102.94,41.207,52.736000000000004,29.28 -2020-06-19 19:15:00,96.06,40.876999999999995,52.736000000000004,29.28 -2020-06-19 19:30:00,98.92,39.952,52.736000000000004,29.28 -2020-06-19 19:45:00,97.55,38.978,52.736000000000004,29.28 -2020-06-19 20:00:00,95.78,36.455999999999996,59.68,29.28 -2020-06-19 20:15:00,97.37,37.21,59.68,29.28 -2020-06-19 20:30:00,92.83,37.177,59.68,29.28 -2020-06-19 20:45:00,91.07,37.179,59.68,29.28 -2020-06-19 21:00:00,94.6,36.84,54.343999999999994,29.28 -2020-06-19 21:15:00,92.39,40.45,54.343999999999994,29.28 -2020-06-19 21:30:00,85.76,41.243,54.343999999999994,29.28 -2020-06-19 21:45:00,83.91,42.629,54.343999999999994,29.28 -2020-06-19 22:00:00,82.56,40.035,49.672,29.28 -2020-06-19 22:15:00,84.43,41.754,49.672,29.28 -2020-06-19 22:30:00,80.48,41.489,49.672,29.28 -2020-06-19 22:45:00,74.58,39.236,49.672,29.28 -2020-06-19 23:00:00,68.57,36.621,42.065,29.28 -2020-06-19 23:15:00,75.75,33.433,42.065,29.28 -2020-06-19 23:30:00,75.04,30.408,42.065,29.28 -2020-06-19 23:45:00,71.81,29.502,42.065,29.28 -2020-06-20 00:00:00,66.09,23.177,38.829,29.17 -2020-06-20 00:15:00,61.95,23.165,38.829,29.17 -2020-06-20 00:30:00,69.46,21.93,38.829,29.17 -2020-06-20 00:45:00,70.54,21.221,38.829,29.17 -2020-06-20 01:00:00,69.8,21.002,34.63,29.17 -2020-06-20 01:15:00,64.85,20.109,34.63,29.17 -2020-06-20 01:30:00,62.76,18.302,34.63,29.17 -2020-06-20 01:45:00,68.84,18.891,34.63,29.17 -2020-06-20 02:00:00,66.79,18.442,32.465,29.17 -2020-06-20 02:15:00,62.57,16.019000000000002,32.465,29.17 -2020-06-20 02:30:00,62.89,18.262,32.465,29.17 -2020-06-20 02:45:00,62.21,19.153,32.465,29.17 -2020-06-20 03:00:00,63.7,20.147000000000002,31.925,29.17 -2020-06-20 03:15:00,68.4,16.994,31.925,29.17 -2020-06-20 03:30:00,69.28,16.274,31.925,29.17 -2020-06-20 03:45:00,66.18,18.046,31.925,29.17 -2020-06-20 04:00:00,64.28,22.455,31.309,29.17 -2020-06-20 04:15:00,67.18,27.634,31.309,29.17 -2020-06-20 04:30:00,67.69,24.068,31.309,29.17 -2020-06-20 04:45:00,65.96,23.858,31.309,29.17 -2020-06-20 05:00:00,64.27,29.932,30.323,29.17 -2020-06-20 05:15:00,63.38,29.461,30.323,29.17 -2020-06-20 05:30:00,66.59,23.021,30.323,29.17 -2020-06-20 05:45:00,73.18,24.226,30.323,29.17 -2020-06-20 06:00:00,77.68,38.798,31.438000000000002,29.17 -2020-06-20 06:15:00,75.5,47.883,31.438000000000002,29.17 -2020-06-20 06:30:00,73.46,42.826,31.438000000000002,29.17 -2020-06-20 06:45:00,70.8,40.108000000000004,31.438000000000002,29.17 -2020-06-20 07:00:00,78.74,39.754,34.891999999999996,29.17 -2020-06-20 07:15:00,82.01,39.227,34.891999999999996,29.17 -2020-06-20 07:30:00,82.18,36.159,34.891999999999996,29.17 -2020-06-20 07:45:00,82.18,36.577,34.891999999999996,29.17 -2020-06-20 08:00:00,80.59,35.275,39.608000000000004,29.17 -2020-06-20 08:15:00,79.69,38.524,39.608000000000004,29.17 -2020-06-20 08:30:00,85.25,38.698,39.608000000000004,29.17 -2020-06-20 08:45:00,92.26,41.931000000000004,39.608000000000004,29.17 -2020-06-20 09:00:00,94.83,37.946,40.894,29.17 -2020-06-20 09:15:00,91.28,39.433,40.894,29.17 -2020-06-20 09:30:00,90.28,42.839,40.894,29.17 -2020-06-20 09:45:00,90.39,45.566,40.894,29.17 -2020-06-20 10:00:00,96.46,40.611,39.525,29.17 -2020-06-20 10:15:00,102.27,42.614,39.525,29.17 -2020-06-20 10:30:00,103.51,42.993,39.525,29.17 -2020-06-20 10:45:00,99.42,44.306000000000004,39.525,29.17 -2020-06-20 11:00:00,94.12,40.628,36.718,29.17 -2020-06-20 11:15:00,91.99,41.68600000000001,36.718,29.17 -2020-06-20 11:30:00,90.43,43.083999999999996,36.718,29.17 -2020-06-20 11:45:00,91.18,44.558,36.718,29.17 -2020-06-20 12:00:00,88.9,41.86600000000001,35.688,29.17 -2020-06-20 12:15:00,87.4,41.9,35.688,29.17 -2020-06-20 12:30:00,86.31,40.782,35.688,29.17 -2020-06-20 12:45:00,85.13,42.178999999999995,35.688,29.17 -2020-06-20 13:00:00,84.77,42.562,32.858000000000004,29.17 -2020-06-20 13:15:00,85.22,43.309,32.858000000000004,29.17 -2020-06-20 13:30:00,84.09,42.575,32.858000000000004,29.17 -2020-06-20 13:45:00,82.67,40.41,32.858000000000004,29.17 -2020-06-20 14:00:00,81.43,41.786,31.738000000000003,29.17 -2020-06-20 14:15:00,81.85,39.626,31.738000000000003,29.17 -2020-06-20 14:30:00,81.06,39.414,31.738000000000003,29.17 -2020-06-20 14:45:00,82.67,39.839,31.738000000000003,29.17 -2020-06-20 15:00:00,82.96,42.092,34.35,29.17 -2020-06-20 15:15:00,80.52,40.094,34.35,29.17 -2020-06-20 15:30:00,81.22,37.909,34.35,29.17 -2020-06-20 15:45:00,82.66,35.633,34.35,29.17 -2020-06-20 16:00:00,85.43,39.605,37.522,29.17 -2020-06-20 16:15:00,84.06,38.836999999999996,37.522,29.17 -2020-06-20 16:30:00,83.74,38.161,37.522,29.17 -2020-06-20 16:45:00,84.53,33.751999999999995,37.522,29.17 -2020-06-20 17:00:00,86.97,37.381,42.498000000000005,29.17 -2020-06-20 17:15:00,87.28,35.118,42.498000000000005,29.17 -2020-06-20 17:30:00,88.27,34.24,42.498000000000005,29.17 -2020-06-20 17:45:00,87.85,32.866,42.498000000000005,29.17 -2020-06-20 18:00:00,88.24,36.915,44.701,29.17 -2020-06-20 18:15:00,86.6,37.805,44.701,29.17 -2020-06-20 18:30:00,88.94,36.808,44.701,29.17 -2020-06-20 18:45:00,84.9,37.689,44.701,29.17 -2020-06-20 19:00:00,81.63,37.759,45.727,29.17 -2020-06-20 19:15:00,76.92,36.394,45.727,29.17 -2020-06-20 19:30:00,78.37,36.266999999999996,45.727,29.17 -2020-06-20 19:45:00,75.8,37.018,45.727,29.17 -2020-06-20 20:00:00,74.14,35.438,43.391000000000005,29.17 -2020-06-20 20:15:00,71.76,35.691,43.391000000000005,29.17 -2020-06-20 20:30:00,72.4,34.777,43.391000000000005,29.17 -2020-06-20 20:45:00,71.24,36.609,43.391000000000005,29.17 -2020-06-20 21:00:00,70.11,34.961,41.231,29.17 -2020-06-20 21:15:00,68.91,38.260999999999996,41.231,29.17 -2020-06-20 21:30:00,66.55,39.293,41.231,29.17 -2020-06-20 21:45:00,64.82,40.121,41.231,29.17 -2020-06-20 22:00:00,64.11,37.602,40.798,29.17 -2020-06-20 22:15:00,62.69,39.724000000000004,40.798,29.17 -2020-06-20 22:30:00,62.16,39.457,40.798,29.17 -2020-06-20 22:45:00,58.77,37.674,40.798,29.17 -2020-06-20 23:00:00,54.05,34.529,34.402,29.17 -2020-06-20 23:15:00,54.66,31.689,34.402,29.17 -2020-06-20 23:30:00,53.59,30.991,34.402,29.17 -2020-06-20 23:45:00,53.51,30.281999999999996,34.402,29.17 -2020-06-21 00:00:00,51.37,24.479,30.171,29.17 -2020-06-21 00:15:00,51.6,23.31,30.171,29.17 -2020-06-21 00:30:00,51.28,21.910999999999998,30.171,29.17 -2020-06-21 00:45:00,50.78,21.142,30.171,29.17 -2020-06-21 01:00:00,47.84,21.191,27.15,29.17 -2020-06-21 01:15:00,50.1,20.225,27.15,29.17 -2020-06-21 01:30:00,49.76,18.312,27.15,29.17 -2020-06-21 01:45:00,49.33,18.498,27.15,29.17 -2020-06-21 02:00:00,48.37,18.084,25.403000000000002,29.17 -2020-06-21 02:15:00,48.73,16.308,25.403000000000002,29.17 -2020-06-21 02:30:00,48.89,18.782,25.403000000000002,29.17 -2020-06-21 02:45:00,48.92,19.419,25.403000000000002,29.17 -2020-06-21 03:00:00,48.71,21.072,23.386999999999997,29.17 -2020-06-21 03:15:00,49.4,18.149,23.386999999999997,29.17 -2020-06-21 03:30:00,50.71,16.795,23.386999999999997,29.17 -2020-06-21 03:45:00,50.44,17.798,23.386999999999997,29.17 -2020-06-21 04:00:00,49.72,22.112,23.941999999999997,29.17 -2020-06-21 04:15:00,50.86,26.76,23.941999999999997,29.17 -2020-06-21 04:30:00,51.2,24.508000000000003,23.941999999999997,29.17 -2020-06-21 04:45:00,52.17,23.851999999999997,23.941999999999997,29.17 -2020-06-21 05:00:00,52.67,29.799,23.026,29.17 -2020-06-21 05:15:00,53.27,28.311,23.026,29.17 -2020-06-21 05:30:00,54.64,21.53,23.026,29.17 -2020-06-21 05:45:00,56.86,22.523000000000003,23.026,29.17 -2020-06-21 06:00:00,58.47,34.766999999999996,23.223000000000003,29.17 -2020-06-21 06:15:00,59.86,44.56100000000001,23.223000000000003,29.17 -2020-06-21 06:30:00,61.63,38.775,23.223000000000003,29.17 -2020-06-21 06:45:00,63.3,35.046,23.223000000000003,29.17 -2020-06-21 07:00:00,66.04,35.114000000000004,24.968000000000004,29.17 -2020-06-21 07:15:00,66.82,32.942,24.968000000000004,29.17 -2020-06-21 07:30:00,67.37,31.054000000000002,24.968000000000004,29.17 -2020-06-21 07:45:00,67.58,31.428,24.968000000000004,29.17 -2020-06-21 08:00:00,66.37,30.988000000000003,29.131,29.17 -2020-06-21 08:15:00,68.59,35.423,29.131,29.17 -2020-06-21 08:30:00,65.93,36.542,29.131,29.17 -2020-06-21 08:45:00,64.07,39.815,29.131,29.17 -2020-06-21 09:00:00,66.26,35.691,29.904,29.17 -2020-06-21 09:15:00,65.59,36.727,29.904,29.17 -2020-06-21 09:30:00,63.46,40.547,29.904,29.17 -2020-06-21 09:45:00,64.99,44.266000000000005,29.904,29.17 -2020-06-21 10:00:00,69.22,39.995,28.943,29.17 -2020-06-21 10:15:00,70.76,42.17,28.943,29.17 -2020-06-21 10:30:00,72.73,42.803000000000004,28.943,29.17 -2020-06-21 10:45:00,73.48,45.013999999999996,28.943,29.17 -2020-06-21 11:00:00,70.43,41.044,31.682,29.17 -2020-06-21 11:15:00,67.81,41.674,31.682,29.17 -2020-06-21 11:30:00,68.94,43.528999999999996,31.682,29.17 -2020-06-21 11:45:00,70.2,45.287,31.682,29.17 -2020-06-21 12:00:00,72.15,43.645,27.315,29.17 -2020-06-21 12:15:00,71.91,43.158,27.315,29.17 -2020-06-21 12:30:00,70.77,42.159,27.315,29.17 -2020-06-21 12:45:00,71.96,42.878,27.315,29.17 -2020-06-21 13:00:00,67.38,42.913000000000004,23.894000000000002,29.17 -2020-06-21 13:15:00,68.77,43.246,23.894000000000002,29.17 -2020-06-21 13:30:00,67.21,41.412,23.894000000000002,29.17 -2020-06-21 13:45:00,64.71,40.32,23.894000000000002,29.17 -2020-06-21 14:00:00,59.95,42.907,21.148000000000003,29.17 -2020-06-21 14:15:00,61.83,41.231,21.148000000000003,29.17 -2020-06-21 14:30:00,64.05,39.84,21.148000000000003,29.17 -2020-06-21 14:45:00,66.51,39.191,21.148000000000003,29.17 -2020-06-21 15:00:00,65.17,41.54,21.229,29.17 -2020-06-21 15:15:00,65.5,38.769,21.229,29.17 -2020-06-21 15:30:00,67.43,36.427,21.229,29.17 -2020-06-21 15:45:00,68.84,34.457,21.229,29.17 -2020-06-21 16:00:00,69.3,36.935,25.037,29.17 -2020-06-21 16:15:00,70.82,36.345,25.037,29.17 -2020-06-21 16:30:00,76.2,36.694,25.037,29.17 -2020-06-21 16:45:00,75.99,32.335,25.037,29.17 -2020-06-21 17:00:00,79.94,36.341,37.11,29.17 -2020-06-21 17:15:00,79.54,35.556,37.11,29.17 -2020-06-21 17:30:00,79.33,35.486,37.11,29.17 -2020-06-21 17:45:00,79.29,34.625,37.11,29.17 -2020-06-21 18:00:00,82.67,39.243,42.215,29.17 -2020-06-21 18:15:00,79.05,39.774,42.215,29.17 -2020-06-21 18:30:00,78.46,38.423,42.215,29.17 -2020-06-21 18:45:00,78.31,39.51,42.215,29.17 -2020-06-21 19:00:00,79.89,41.713,44.383,29.17 -2020-06-21 19:15:00,78.41,39.275,44.383,29.17 -2020-06-21 19:30:00,76.51,38.885999999999996,44.383,29.17 -2020-06-21 19:45:00,76.7,39.255,44.383,29.17 -2020-06-21 20:00:00,77.36,37.827,43.426,29.17 -2020-06-21 20:15:00,76.94,37.992,43.426,29.17 -2020-06-21 20:30:00,78.36,37.949,43.426,29.17 -2020-06-21 20:45:00,78.33,38.084,43.426,29.17 -2020-06-21 21:00:00,77.45,36.18,42.265,29.17 -2020-06-21 21:15:00,76.37,39.157,42.265,29.17 -2020-06-21 21:30:00,74.61,39.539,42.265,29.17 -2020-06-21 21:45:00,74.02,40.735,42.265,29.17 -2020-06-21 22:00:00,72.94,40.181,42.26,29.17 -2020-06-21 22:15:00,71.13,40.609,42.26,29.17 -2020-06-21 22:30:00,69.5,39.675,42.26,29.17 -2020-06-21 22:45:00,73.05,36.58,42.26,29.17 -2020-06-21 23:00:00,65.27,32.983000000000004,36.609,29.17 -2020-06-21 23:15:00,66.55,31.525,36.609,29.17 -2020-06-21 23:30:00,65.95,30.346,36.609,29.17 -2020-06-21 23:45:00,64.51,29.828000000000003,36.609,29.17 -2020-06-22 00:00:00,62.06,26.113000000000003,34.611,29.28 -2020-06-22 00:15:00,63.43,25.878,34.611,29.28 -2020-06-22 00:30:00,63.24,24.111,34.611,29.28 -2020-06-22 00:45:00,62.85,22.93,34.611,29.28 -2020-06-22 01:00:00,61.06,23.374000000000002,33.552,29.28 -2020-06-22 01:15:00,62.06,22.379,33.552,29.28 -2020-06-22 01:30:00,62.07,20.820999999999998,33.552,29.28 -2020-06-22 01:45:00,62.34,20.910999999999998,33.552,29.28 -2020-06-22 02:00:00,61.38,20.945,32.351,29.28 -2020-06-22 02:15:00,62.36,18.246,32.351,29.28 -2020-06-22 02:30:00,62.99,20.894000000000002,32.351,29.28 -2020-06-22 02:45:00,69.91,21.36,32.351,29.28 -2020-06-22 03:00:00,71.83,23.574,30.793000000000003,29.28 -2020-06-22 03:15:00,74.38,21.448,30.793000000000003,29.28 -2020-06-22 03:30:00,68.44,20.76,30.793000000000003,29.28 -2020-06-22 03:45:00,72.17,21.3,30.793000000000003,29.28 -2020-06-22 04:00:00,73.67,28.855999999999998,31.274,29.28 -2020-06-22 04:15:00,81.48,36.568000000000005,31.274,29.28 -2020-06-22 04:30:00,85.31,33.944,31.274,29.28 -2020-06-22 04:45:00,87.89,33.66,31.274,29.28 -2020-06-22 05:00:00,90.15,47.393,37.75,29.28 -2020-06-22 05:15:00,92.28,57.013000000000005,37.75,29.28 -2020-06-22 05:30:00,98.06,48.794,37.75,29.28 -2020-06-22 05:45:00,104.24,46.501000000000005,37.75,29.28 -2020-06-22 06:00:00,114.07,47.684,55.36,29.28 -2020-06-22 06:15:00,113.59,47.718999999999994,55.36,29.28 -2020-06-22 06:30:00,120.64,46.295,55.36,29.28 -2020-06-22 06:45:00,117.35,48.265,55.36,29.28 -2020-06-22 07:00:00,125.32,48.82,65.87,29.28 -2020-06-22 07:15:00,124.38,48.982,65.87,29.28 -2020-06-22 07:30:00,123.8,46.201,65.87,29.28 -2020-06-22 07:45:00,120.42,46.763999999999996,65.87,29.28 -2020-06-22 08:00:00,127.99,43.946999999999996,55.695,29.28 -2020-06-22 08:15:00,124.81,47.11,55.695,29.28 -2020-06-22 08:30:00,122.97,47.053000000000004,55.695,29.28 -2020-06-22 08:45:00,126.89,50.353,55.695,29.28 -2020-06-22 09:00:00,125.76,45.153999999999996,50.881,29.28 -2020-06-22 09:15:00,128.65,44.243,50.881,29.28 -2020-06-22 09:30:00,129.68,47.093,50.881,29.28 -2020-06-22 09:45:00,120.54,48.583999999999996,50.881,29.28 -2020-06-22 10:00:00,114.39,44.678999999999995,49.138000000000005,29.28 -2020-06-22 10:15:00,122.56,46.699,49.138000000000005,29.28 -2020-06-22 10:30:00,122.96,46.832,49.138000000000005,29.28 -2020-06-22 10:45:00,125.29,47.528,49.138000000000005,29.28 -2020-06-22 11:00:00,120.65,43.623000000000005,49.178000000000004,29.28 -2020-06-22 11:15:00,114.96,44.631,49.178000000000004,29.28 -2020-06-22 11:30:00,112.14,47.236000000000004,49.178000000000004,29.28 -2020-06-22 11:45:00,104.36,49.468999999999994,49.178000000000004,29.28 -2020-06-22 12:00:00,104.38,46.236000000000004,47.698,29.28 -2020-06-22 12:15:00,103.64,45.858000000000004,47.698,29.28 -2020-06-22 12:30:00,103.64,43.793,47.698,29.28 -2020-06-22 12:45:00,102.45,44.586999999999996,47.698,29.28 -2020-06-22 13:00:00,96.63,45.56100000000001,48.104,29.28 -2020-06-22 13:15:00,99.66,44.949,48.104,29.28 -2020-06-22 13:30:00,103.52,43.265,48.104,29.28 -2020-06-22 13:45:00,107.28,43.06399999999999,48.104,29.28 -2020-06-22 14:00:00,103.1,44.723,48.53,29.28 -2020-06-22 14:15:00,98.24,43.601000000000006,48.53,29.28 -2020-06-22 14:30:00,97.96,41.998999999999995,48.53,29.28 -2020-06-22 14:45:00,98.66,43.403,48.53,29.28 -2020-06-22 15:00:00,96.96,45.501000000000005,49.351000000000006,29.28 -2020-06-22 15:15:00,95.96,42.066,49.351000000000006,29.28 -2020-06-22 15:30:00,103.76,40.439,49.351000000000006,29.28 -2020-06-22 15:45:00,101.27,37.955999999999996,49.351000000000006,29.28 -2020-06-22 16:00:00,100.46,41.551,51.44,29.28 -2020-06-22 16:15:00,102.13,40.983999999999995,51.44,29.28 -2020-06-22 16:30:00,101.46,40.643,51.44,29.28 -2020-06-22 16:45:00,101.72,36.227,51.44,29.28 -2020-06-22 17:00:00,104.77,39.12,56.868,29.28 -2020-06-22 17:15:00,101.5,38.658,56.868,29.28 -2020-06-22 17:30:00,104.47,38.171,56.868,29.28 -2020-06-22 17:45:00,106.24,36.828,56.868,29.28 -2020-06-22 18:00:00,107.49,40.416,57.229,29.28 -2020-06-22 18:15:00,104.01,38.998000000000005,57.229,29.28 -2020-06-22 18:30:00,102.52,36.928000000000004,57.229,29.28 -2020-06-22 18:45:00,102.38,41.181000000000004,57.229,29.28 -2020-06-22 19:00:00,100.87,43.022,57.744,29.28 -2020-06-22 19:15:00,100.34,41.828,57.744,29.28 -2020-06-22 19:30:00,96.04,41.091,57.744,29.28 -2020-06-22 19:45:00,97.08,40.805,57.744,29.28 -2020-06-22 20:00:00,93.07,37.99,66.05199999999999,29.28 -2020-06-22 20:15:00,93.95,39.416,66.05199999999999,29.28 -2020-06-22 20:30:00,95.77,39.804,66.05199999999999,29.28 -2020-06-22 20:45:00,99.45,40.259,66.05199999999999,29.28 -2020-06-22 21:00:00,94.07,37.760999999999996,59.396,29.28 -2020-06-22 21:15:00,93.7,41.123999999999995,59.396,29.28 -2020-06-22 21:30:00,90.26,41.853,59.396,29.28 -2020-06-22 21:45:00,88.36,42.81,59.396,29.28 -2020-06-22 22:00:00,84.6,40.099000000000004,53.06,29.28 -2020-06-22 22:15:00,85.31,42.441,53.06,29.28 -2020-06-22 22:30:00,82.83,36.732,53.06,29.28 -2020-06-22 22:45:00,81.6,33.37,53.06,29.28 -2020-06-22 23:00:00,76.8,29.838,46.148,29.28 -2020-06-22 23:15:00,77.46,26.904,46.148,29.28 -2020-06-22 23:30:00,78.9,25.831999999999997,46.148,29.28 -2020-06-22 23:45:00,78.36,24.899,46.148,29.28 -2020-06-23 00:00:00,73.53,23.746,44.625,29.28 -2020-06-23 00:15:00,75.33,24.444000000000003,44.625,29.28 -2020-06-23 00:30:00,74.92,23.34,44.625,29.28 -2020-06-23 00:45:00,74.6,22.901,44.625,29.28 -2020-06-23 01:00:00,73.27,22.811999999999998,41.733000000000004,29.28 -2020-06-23 01:15:00,75.07,21.89,41.733000000000004,29.28 -2020-06-23 01:30:00,73.73,20.209,41.733000000000004,29.28 -2020-06-23 01:45:00,74.21,19.797,41.733000000000004,29.28 -2020-06-23 02:00:00,73.89,19.355999999999998,39.872,29.28 -2020-06-23 02:15:00,73.43,17.804000000000002,39.872,29.28 -2020-06-23 02:30:00,80.85,20.026,39.872,29.28 -2020-06-23 02:45:00,82.26,20.824,39.872,29.28 -2020-06-23 03:00:00,78.93,22.423000000000002,38.711,29.28 -2020-06-23 03:15:00,75.46,21.189,38.711,29.28 -2020-06-23 03:30:00,78.81,20.5,38.711,29.28 -2020-06-23 03:45:00,76.4,19.961,38.711,29.28 -2020-06-23 04:00:00,84.82,26.201,39.823,29.28 -2020-06-23 04:15:00,90.66,33.869,39.823,29.28 -2020-06-23 04:30:00,92.85,31.098000000000003,39.823,29.28 -2020-06-23 04:45:00,92.53,31.357,39.823,29.28 -2020-06-23 05:00:00,96.07,46.823,43.228,29.28 -2020-06-23 05:15:00,98.92,56.934,43.228,29.28 -2020-06-23 05:30:00,106.98,48.886,43.228,29.28 -2020-06-23 05:45:00,113.0,45.909,43.228,29.28 -2020-06-23 06:00:00,118.57,48.091,54.316,29.28 -2020-06-23 06:15:00,120.37,48.391999999999996,54.316,29.28 -2020-06-23 06:30:00,119.5,46.638999999999996,54.316,29.28 -2020-06-23 06:45:00,123.82,47.731,54.316,29.28 -2020-06-23 07:00:00,124.88,48.418,65.758,29.28 -2020-06-23 07:15:00,122.94,48.336000000000006,65.758,29.28 -2020-06-23 07:30:00,120.91,45.54,65.758,29.28 -2020-06-23 07:45:00,125.1,45.174,65.758,29.28 -2020-06-23 08:00:00,122.4,42.302,57.983000000000004,29.28 -2020-06-23 08:15:00,118.74,44.994,57.983000000000004,29.28 -2020-06-23 08:30:00,118.28,45.086000000000006,57.983000000000004,29.28 -2020-06-23 08:45:00,122.7,47.455,57.983000000000004,29.28 -2020-06-23 09:00:00,122.76,42.547,52.653,29.28 -2020-06-23 09:15:00,122.01,41.583999999999996,52.653,29.28 -2020-06-23 09:30:00,120.53,45.15,52.653,29.28 -2020-06-23 09:45:00,118.95,47.977,52.653,29.28 -2020-06-23 10:00:00,130.1,42.687,51.408,29.28 -2020-06-23 10:15:00,123.77,44.523,51.408,29.28 -2020-06-23 10:30:00,123.38,44.691,51.408,29.28 -2020-06-23 10:45:00,116.88,46.407,51.408,29.28 -2020-06-23 11:00:00,116.32,42.581,51.913000000000004,29.28 -2020-06-23 11:15:00,111.31,43.983000000000004,51.913000000000004,29.28 -2020-06-23 11:30:00,115.49,45.371,51.913000000000004,29.28 -2020-06-23 11:45:00,107.36,47.188,51.913000000000004,29.28 -2020-06-23 12:00:00,107.78,43.729,49.508,29.28 -2020-06-23 12:15:00,112.97,43.67,49.508,29.28 -2020-06-23 12:30:00,115.46,42.479,49.508,29.28 -2020-06-23 12:45:00,111.06,43.953,49.508,29.28 -2020-06-23 13:00:00,110.37,44.533,50.007,29.28 -2020-06-23 13:15:00,106.59,45.705,50.007,29.28 -2020-06-23 13:30:00,108.56,44.053999999999995,50.007,29.28 -2020-06-23 13:45:00,117.29,42.903,50.007,29.28 -2020-06-23 14:00:00,107.17,45.04,49.778999999999996,29.28 -2020-06-23 14:15:00,109.31,43.724,49.778999999999996,29.28 -2020-06-23 14:30:00,107.16,42.458999999999996,49.778999999999996,29.28 -2020-06-23 14:45:00,97.6,43.075,49.778999999999996,29.28 -2020-06-23 15:00:00,108.88,45.023,51.559,29.28 -2020-06-23 15:15:00,109.4,42.522,51.559,29.28 -2020-06-23 15:30:00,106.06,40.688,51.559,29.28 -2020-06-23 15:45:00,108.71,38.524,51.559,29.28 -2020-06-23 16:00:00,110.94,41.452,53.531000000000006,29.28 -2020-06-23 16:15:00,110.74,40.99100000000001,53.531000000000006,29.28 -2020-06-23 16:30:00,113.66,40.326,53.531000000000006,29.28 -2020-06-23 16:45:00,109.97,36.621,53.531000000000006,29.28 -2020-06-23 17:00:00,116.03,39.773,59.497,29.28 -2020-06-23 17:15:00,115.14,39.727,59.497,29.28 -2020-06-23 17:30:00,117.22,38.826,59.497,29.28 -2020-06-23 17:45:00,112.66,37.13,59.497,29.28 -2020-06-23 18:00:00,114.14,39.775,59.861999999999995,29.28 -2020-06-23 18:15:00,114.54,39.8,59.861999999999995,29.28 -2020-06-23 18:30:00,116.69,37.45,59.861999999999995,29.28 -2020-06-23 18:45:00,112.08,41.543,59.861999999999995,29.28 -2020-06-23 19:00:00,104.05,42.224,60.989,29.28 -2020-06-23 19:15:00,100.72,41.187,60.989,29.28 -2020-06-23 19:30:00,98.01,40.196999999999996,60.989,29.28 -2020-06-23 19:45:00,97.06,40.241,60.989,29.28 -2020-06-23 20:00:00,96.0,37.812,68.35600000000001,29.28 -2020-06-23 20:15:00,96.1,37.766,68.35600000000001,29.28 -2020-06-23 20:30:00,95.0,38.244,68.35600000000001,29.28 -2020-06-23 20:45:00,98.48,39.116,68.35600000000001,29.28 -2020-06-23 21:00:00,95.1,37.458,59.251000000000005,29.28 -2020-06-23 21:15:00,93.78,39.403,59.251000000000005,29.28 -2020-06-23 21:30:00,89.52,40.253,59.251000000000005,29.28 -2020-06-23 21:45:00,88.7,41.42,59.251000000000005,29.28 -2020-06-23 22:00:00,83.01,38.971,54.736999999999995,29.28 -2020-06-23 22:15:00,84.33,40.971000000000004,54.736999999999995,29.28 -2020-06-23 22:30:00,82.74,35.55,54.736999999999995,29.28 -2020-06-23 22:45:00,81.15,32.186,54.736999999999995,29.28 -2020-06-23 23:00:00,78.29,27.874000000000002,46.806999999999995,29.28 -2020-06-23 23:15:00,77.68,26.494,46.806999999999995,29.28 -2020-06-23 23:30:00,76.77,25.414,46.806999999999995,29.28 -2020-06-23 23:45:00,75.36,24.633000000000003,46.806999999999995,29.28 -2020-06-24 00:00:00,72.75,23.675,43.824,29.28 -2020-06-24 00:15:00,73.59,24.374000000000002,43.824,29.28 -2020-06-24 00:30:00,73.6,23.273000000000003,43.824,29.28 -2020-06-24 00:45:00,73.92,22.840999999999998,43.824,29.28 -2020-06-24 01:00:00,72.73,22.764,39.86,29.28 -2020-06-24 01:15:00,73.28,21.828000000000003,39.86,29.28 -2020-06-24 01:30:00,72.51,20.145,39.86,29.28 -2020-06-24 01:45:00,73.33,19.726,39.86,29.28 -2020-06-24 02:00:00,77.46,19.287,37.931999999999995,29.28 -2020-06-24 02:15:00,82.15,17.739,37.931999999999995,29.28 -2020-06-24 02:30:00,81.13,19.952,37.931999999999995,29.28 -2020-06-24 02:45:00,74.48,20.756999999999998,37.931999999999995,29.28 -2020-06-24 03:00:00,77.13,22.351999999999997,37.579,29.28 -2020-06-24 03:15:00,76.09,21.122,37.579,29.28 -2020-06-24 03:30:00,76.54,20.439,37.579,29.28 -2020-06-24 03:45:00,76.21,19.92,37.579,29.28 -2020-06-24 04:00:00,84.58,26.114,37.931999999999995,29.28 -2020-06-24 04:15:00,88.31,33.742,37.931999999999995,29.28 -2020-06-24 04:30:00,92.93,30.961,37.931999999999995,29.28 -2020-06-24 04:45:00,91.92,31.218000000000004,37.931999999999995,29.28 -2020-06-24 05:00:00,95.34,46.599,40.942,29.28 -2020-06-24 05:15:00,98.24,56.599,40.942,29.28 -2020-06-24 05:30:00,101.16,48.613,40.942,29.28 -2020-06-24 05:45:00,103.36,45.676,40.942,29.28 -2020-06-24 06:00:00,111.68,47.864,56.516999999999996,29.28 -2020-06-24 06:15:00,116.87,48.153999999999996,56.516999999999996,29.28 -2020-06-24 06:30:00,116.87,46.42100000000001,56.516999999999996,29.28 -2020-06-24 06:45:00,117.03,47.542,56.516999999999996,29.28 -2020-06-24 07:00:00,116.69,48.217,71.707,29.28 -2020-06-24 07:15:00,116.48,48.155,71.707,29.28 -2020-06-24 07:30:00,116.84,45.356,71.707,29.28 -2020-06-24 07:45:00,112.07,45.023,71.707,29.28 -2020-06-24 08:00:00,109.37,42.161,61.17,29.28 -2020-06-24 08:15:00,108.4,44.878,61.17,29.28 -2020-06-24 08:30:00,114.26,44.963,61.17,29.28 -2020-06-24 08:45:00,114.72,47.333,61.17,29.28 -2020-06-24 09:00:00,112.86,42.42,57.282,29.28 -2020-06-24 09:15:00,108.55,41.458999999999996,57.282,29.28 -2020-06-24 09:30:00,118.09,45.023,57.282,29.28 -2020-06-24 09:45:00,123.97,47.863,57.282,29.28 -2020-06-24 10:00:00,122.12,42.582,54.026,29.28 -2020-06-24 10:15:00,117.01,44.424,54.026,29.28 -2020-06-24 10:30:00,123.16,44.593,54.026,29.28 -2020-06-24 10:45:00,121.18,46.31399999999999,54.026,29.28 -2020-06-24 11:00:00,123.52,42.483999999999995,54.277,29.28 -2020-06-24 11:15:00,117.69,43.891000000000005,54.277,29.28 -2020-06-24 11:30:00,115.43,45.269,54.277,29.28 -2020-06-24 11:45:00,119.14,47.083999999999996,54.277,29.28 -2020-06-24 12:00:00,124.99,43.653,52.552,29.28 -2020-06-24 12:15:00,127.32,43.593,52.552,29.28 -2020-06-24 12:30:00,126.8,42.385,52.552,29.28 -2020-06-24 12:45:00,117.73,43.86,52.552,29.28 -2020-06-24 13:00:00,101.49,44.428999999999995,52.111999999999995,29.28 -2020-06-24 13:15:00,105.29,45.601000000000006,52.111999999999995,29.28 -2020-06-24 13:30:00,116.19,43.958,52.111999999999995,29.28 -2020-06-24 13:45:00,110.54,42.81100000000001,52.111999999999995,29.28 -2020-06-24 14:00:00,99.9,44.958999999999996,52.066,29.28 -2020-06-24 14:15:00,102.05,43.643,52.066,29.28 -2020-06-24 14:30:00,110.45,42.358000000000004,52.066,29.28 -2020-06-24 14:45:00,109.15,42.979,52.066,29.28 -2020-06-24 15:00:00,108.94,44.952,52.523999999999994,29.28 -2020-06-24 15:15:00,101.7,42.445,52.523999999999994,29.28 -2020-06-24 15:30:00,107.34,40.605,52.523999999999994,29.28 -2020-06-24 15:45:00,106.1,38.431999999999995,52.523999999999994,29.28 -2020-06-24 16:00:00,104.67,41.382,54.101000000000006,29.28 -2020-06-24 16:15:00,105.58,40.921,54.101000000000006,29.28 -2020-06-24 16:30:00,112.42,40.273,54.101000000000006,29.28 -2020-06-24 16:45:00,110.04,36.552,54.101000000000006,29.28 -2020-06-24 17:00:00,111.19,39.722,58.155,29.28 -2020-06-24 17:15:00,108.5,39.675,58.155,29.28 -2020-06-24 17:30:00,112.41,38.77,58.155,29.28 -2020-06-24 17:45:00,117.25,37.063,58.155,29.28 -2020-06-24 18:00:00,116.0,39.716,60.205,29.28 -2020-06-24 18:15:00,111.3,39.717,60.205,29.28 -2020-06-24 18:30:00,108.34,37.365,60.205,29.28 -2020-06-24 18:45:00,107.8,41.457,60.205,29.28 -2020-06-24 19:00:00,103.84,42.141000000000005,61.568999999999996,29.28 -2020-06-24 19:15:00,101.09,41.096000000000004,61.568999999999996,29.28 -2020-06-24 19:30:00,102.04,40.098,61.568999999999996,29.28 -2020-06-24 19:45:00,97.68,40.138000000000005,61.568999999999996,29.28 -2020-06-24 20:00:00,95.61,37.694,68.145,29.28 -2020-06-24 20:15:00,94.76,37.645,68.145,29.28 -2020-06-24 20:30:00,94.42,38.129,68.145,29.28 -2020-06-24 20:45:00,94.83,39.023,68.145,29.28 -2020-06-24 21:00:00,96.89,37.37,59.696000000000005,29.28 -2020-06-24 21:15:00,94.06,39.32,59.696000000000005,29.28 -2020-06-24 21:30:00,90.13,40.148,59.696000000000005,29.28 -2020-06-24 21:45:00,88.79,41.318000000000005,59.696000000000005,29.28 -2020-06-24 22:00:00,84.68,38.884,54.861999999999995,29.28 -2020-06-24 22:15:00,87.11,40.889,54.861999999999995,29.28 -2020-06-24 22:30:00,84.09,35.459,54.861999999999995,29.28 -2020-06-24 22:45:00,84.16,32.086,54.861999999999995,29.28 -2020-06-24 23:00:00,79.54,27.765,45.568000000000005,29.28 -2020-06-24 23:15:00,76.73,26.414,45.568000000000005,29.28 -2020-06-24 23:30:00,75.86,25.346,45.568000000000005,29.28 -2020-06-24 23:45:00,78.52,24.555999999999997,45.568000000000005,29.28 -2020-06-25 00:00:00,75.55,23.608,40.181,29.28 -2020-06-25 00:15:00,75.77,24.307,40.181,29.28 -2020-06-25 00:30:00,72.44,23.21,40.181,29.28 -2020-06-25 00:45:00,75.39,22.784000000000002,40.181,29.28 -2020-06-25 01:00:00,72.29,22.72,38.296,29.28 -2020-06-25 01:15:00,74.01,21.771,38.296,29.28 -2020-06-25 01:30:00,72.67,20.085,38.296,29.28 -2020-06-25 01:45:00,72.74,19.66,38.296,29.28 -2020-06-25 02:00:00,73.25,19.224,36.575,29.28 -2020-06-25 02:15:00,74.48,17.678,36.575,29.28 -2020-06-25 02:30:00,74.61,19.884,36.575,29.28 -2020-06-25 02:45:00,74.51,20.693,36.575,29.28 -2020-06-25 03:00:00,75.05,22.285,36.394,29.28 -2020-06-25 03:15:00,76.2,21.059,36.394,29.28 -2020-06-25 03:30:00,83.01,20.384,36.394,29.28 -2020-06-25 03:45:00,85.84,19.883,36.394,29.28 -2020-06-25 04:00:00,80.84,26.031999999999996,37.207,29.28 -2020-06-25 04:15:00,81.65,33.622,37.207,29.28 -2020-06-25 04:30:00,84.58,30.829,37.207,29.28 -2020-06-25 04:45:00,88.67,31.086,37.207,29.28 -2020-06-25 05:00:00,97.63,46.383,40.713,29.28 -2020-06-25 05:15:00,98.52,56.276,40.713,29.28 -2020-06-25 05:30:00,107.02,48.352,40.713,29.28 -2020-06-25 05:45:00,107.47,45.452,40.713,29.28 -2020-06-25 06:00:00,115.01,47.646,50.952,29.28 -2020-06-25 06:15:00,111.77,47.926,50.952,29.28 -2020-06-25 06:30:00,117.15,46.214,50.952,29.28 -2020-06-25 06:45:00,118.68,47.363,50.952,29.28 -2020-06-25 07:00:00,115.38,48.026,64.88,29.28 -2020-06-25 07:15:00,114.08,47.983000000000004,64.88,29.28 -2020-06-25 07:30:00,113.71,45.181999999999995,64.88,29.28 -2020-06-25 07:45:00,114.99,44.88,64.88,29.28 -2020-06-25 08:00:00,113.05,42.027,55.133,29.28 -2020-06-25 08:15:00,112.54,44.771,55.133,29.28 -2020-06-25 08:30:00,110.54,44.848,55.133,29.28 -2020-06-25 08:45:00,116.65,47.22,55.133,29.28 -2020-06-25 09:00:00,118.67,42.302,48.912,29.28 -2020-06-25 09:15:00,119.01,41.343,48.912,29.28 -2020-06-25 09:30:00,116.77,44.903999999999996,48.912,29.28 -2020-06-25 09:45:00,122.25,47.756,48.912,29.28 -2020-06-25 10:00:00,123.53,42.483000000000004,45.968999999999994,29.28 -2020-06-25 10:15:00,129.33,44.333,45.968999999999994,29.28 -2020-06-25 10:30:00,122.87,44.501000000000005,45.968999999999994,29.28 -2020-06-25 10:45:00,119.98,46.227,45.968999999999994,29.28 -2020-06-25 11:00:00,120.33,42.395,44.067,29.28 -2020-06-25 11:15:00,118.71,43.806000000000004,44.067,29.28 -2020-06-25 11:30:00,112.17,45.172,44.067,29.28 -2020-06-25 11:45:00,113.06,46.986999999999995,44.067,29.28 -2020-06-25 12:00:00,123.41,43.581,41.501000000000005,29.28 -2020-06-25 12:15:00,127.98,43.521,41.501000000000005,29.28 -2020-06-25 12:30:00,129.51,42.29600000000001,41.501000000000005,29.28 -2020-06-25 12:45:00,125.72,43.772,41.501000000000005,29.28 -2020-06-25 13:00:00,119.23,44.33,41.117,29.28 -2020-06-25 13:15:00,120.12,45.5,41.117,29.28 -2020-06-25 13:30:00,125.64,43.867,41.117,29.28 -2020-06-25 13:45:00,128.35,42.726000000000006,41.117,29.28 -2020-06-25 14:00:00,128.81,44.882,41.492,29.28 -2020-06-25 14:15:00,125.95,43.567,41.492,29.28 -2020-06-25 14:30:00,120.48,42.263999999999996,41.492,29.28 -2020-06-25 14:45:00,120.88,42.89,41.492,29.28 -2020-06-25 15:00:00,123.63,44.88399999999999,43.711999999999996,29.28 -2020-06-25 15:15:00,121.05,42.37,43.711999999999996,29.28 -2020-06-25 15:30:00,122.08,40.525999999999996,43.711999999999996,29.28 -2020-06-25 15:45:00,120.83,38.344,43.711999999999996,29.28 -2020-06-25 16:00:00,127.83,41.317,45.446000000000005,29.28 -2020-06-25 16:15:00,122.67,40.853,45.446000000000005,29.28 -2020-06-25 16:30:00,122.29,40.224000000000004,45.446000000000005,29.28 -2020-06-25 16:45:00,126.06,36.488,45.446000000000005,29.28 -2020-06-25 17:00:00,123.94,39.675,48.803000000000004,29.28 -2020-06-25 17:15:00,123.31,39.628,48.803000000000004,29.28 -2020-06-25 17:30:00,120.34,38.719,48.803000000000004,29.28 -2020-06-25 17:45:00,114.21,37.001,48.803000000000004,29.28 -2020-06-25 18:00:00,118.99,39.661,51.167,29.28 -2020-06-25 18:15:00,118.56,39.641,51.167,29.28 -2020-06-25 18:30:00,119.87,37.286,51.167,29.28 -2020-06-25 18:45:00,112.47,41.376000000000005,51.167,29.28 -2020-06-25 19:00:00,107.94,42.06399999999999,52.486000000000004,29.28 -2020-06-25 19:15:00,104.55,41.011,52.486000000000004,29.28 -2020-06-25 19:30:00,102.42,40.006,52.486000000000004,29.28 -2020-06-25 19:45:00,103.35,40.04,52.486000000000004,29.28 -2020-06-25 20:00:00,97.55,37.582,59.635,29.28 -2020-06-25 20:15:00,97.58,37.531,59.635,29.28 -2020-06-25 20:30:00,98.76,38.021,59.635,29.28 -2020-06-25 20:45:00,98.12,38.935,59.635,29.28 -2020-06-25 21:00:00,96.92,37.287,54.353,29.28 -2020-06-25 21:15:00,92.89,39.243,54.353,29.28 -2020-06-25 21:30:00,90.17,40.049,54.353,29.28 -2020-06-25 21:45:00,88.89,41.221000000000004,54.353,29.28 -2020-06-25 22:00:00,85.17,38.8,49.431999999999995,29.28 -2020-06-25 22:15:00,84.56,40.81,49.431999999999995,29.28 -2020-06-25 22:30:00,81.54,35.371,49.431999999999995,29.28 -2020-06-25 22:45:00,80.23,31.987,49.431999999999995,29.28 -2020-06-25 23:00:00,78.24,27.659000000000002,42.872,29.28 -2020-06-25 23:15:00,77.2,26.339000000000002,42.872,29.28 -2020-06-25 23:30:00,76.09,25.281999999999996,42.872,29.28 -2020-06-25 23:45:00,74.95,24.483,42.872,29.28 -2020-06-26 00:00:00,73.91,21.691,39.819,29.28 -2020-06-26 00:15:00,73.66,22.618000000000002,39.819,29.28 -2020-06-26 00:30:00,73.5,21.787,39.819,29.28 -2020-06-26 00:45:00,73.41,21.796999999999997,39.819,29.28 -2020-06-26 01:00:00,72.61,21.344,37.797,29.28 -2020-06-26 01:15:00,73.69,19.842,37.797,29.28 -2020-06-26 01:30:00,73.2,18.852,37.797,29.28 -2020-06-26 01:45:00,73.02,18.176,37.797,29.28 -2020-06-26 02:00:00,77.1,18.678,36.905,29.28 -2020-06-26 02:15:00,81.05,17.077,36.905,29.28 -2020-06-26 02:30:00,79.47,20.13,36.905,29.28 -2020-06-26 02:45:00,73.65,20.267,36.905,29.28 -2020-06-26 03:00:00,76.43,22.564,37.1,29.28 -2020-06-26 03:15:00,75.3,20.2,37.1,29.28 -2020-06-26 03:30:00,76.44,19.292,37.1,29.28 -2020-06-26 03:45:00,77.02,19.705,37.1,29.28 -2020-06-26 04:00:00,77.12,25.962,37.882,29.28 -2020-06-26 04:15:00,84.19,31.944000000000003,37.882,29.28 -2020-06-26 04:30:00,91.07,30.104,37.882,29.28 -2020-06-26 04:45:00,88.15,29.641,37.882,29.28 -2020-06-26 05:00:00,93.96,44.298,40.777,29.28 -2020-06-26 05:15:00,96.44,55.133,40.777,29.28 -2020-06-26 05:30:00,99.55,47.538000000000004,40.777,29.28 -2020-06-26 05:45:00,102.21,44.23,40.777,29.28 -2020-06-26 06:00:00,105.49,46.681999999999995,55.528,29.28 -2020-06-26 06:15:00,106.56,47.016000000000005,55.528,29.28 -2020-06-26 06:30:00,111.38,45.214,55.528,29.28 -2020-06-26 06:45:00,113.94,46.373000000000005,55.528,29.28 -2020-06-26 07:00:00,119.24,47.61,67.749,29.28 -2020-06-26 07:15:00,120.18,48.556999999999995,67.749,29.28 -2020-06-26 07:30:00,118.22,43.81100000000001,67.749,29.28 -2020-06-26 07:45:00,111.2,43.27,67.749,29.28 -2020-06-26 08:00:00,111.58,41.121,57.55,29.28 -2020-06-26 08:15:00,114.37,44.523999999999994,57.55,29.28 -2020-06-26 08:30:00,114.99,44.568000000000005,57.55,29.28 -2020-06-26 08:45:00,113.74,46.685,57.55,29.28 -2020-06-26 09:00:00,109.16,39.516999999999996,52.588,29.28 -2020-06-26 09:15:00,113.26,40.493,52.588,29.28 -2020-06-26 09:30:00,112.71,43.34,52.588,29.28 -2020-06-26 09:45:00,110.41,46.576,52.588,29.28 -2020-06-26 10:00:00,105.72,41.063,49.772,29.28 -2020-06-26 10:15:00,112.85,42.751000000000005,49.772,29.28 -2020-06-26 10:30:00,112.6,43.458,49.772,29.28 -2020-06-26 10:45:00,111.95,45.062,49.772,29.28 -2020-06-26 11:00:00,106.15,41.48,49.226000000000006,29.28 -2020-06-26 11:15:00,102.95,41.75899999999999,49.226000000000006,29.28 -2020-06-26 11:30:00,108.99,42.881,49.226000000000006,29.28 -2020-06-26 11:45:00,107.29,43.751000000000005,49.226000000000006,29.28 -2020-06-26 12:00:00,102.93,40.873000000000005,45.705,29.28 -2020-06-26 12:15:00,97.81,40.031,45.705,29.28 -2020-06-26 12:30:00,99.61,38.917,45.705,29.28 -2020-06-26 12:45:00,101.18,39.65,45.705,29.28 -2020-06-26 13:00:00,99.27,40.851,43.133,29.28 -2020-06-26 13:15:00,96.97,42.258,43.133,29.28 -2020-06-26 13:30:00,91.8,41.42,43.133,29.28 -2020-06-26 13:45:00,90.58,40.583,43.133,29.28 -2020-06-26 14:00:00,89.92,41.871,41.989,29.28 -2020-06-26 14:15:00,91.04,40.973,41.989,29.28 -2020-06-26 14:30:00,96.86,41.178999999999995,41.989,29.28 -2020-06-26 14:45:00,96.54,41.148999999999994,41.989,29.28 -2020-06-26 15:00:00,96.12,43.053999999999995,43.728,29.28 -2020-06-26 15:15:00,92.58,40.266,43.728,29.28 -2020-06-26 15:30:00,92.76,37.751999999999995,43.728,29.28 -2020-06-26 15:45:00,99.14,36.326,43.728,29.28 -2020-06-26 16:00:00,102.55,38.402,45.93899999999999,29.28 -2020-06-26 16:15:00,102.02,38.446,45.93899999999999,29.28 -2020-06-26 16:30:00,97.83,37.661,45.93899999999999,29.28 -2020-06-26 16:45:00,104.14,33.126,45.93899999999999,29.28 -2020-06-26 17:00:00,107.5,38.062,50.488,29.28 -2020-06-26 17:15:00,108.79,37.815,50.488,29.28 -2020-06-26 17:30:00,102.7,37.045,50.488,29.28 -2020-06-26 17:45:00,108.93,35.137,50.488,29.28 -2020-06-26 18:00:00,110.72,37.895,52.408,29.28 -2020-06-26 18:15:00,106.92,36.888000000000005,52.408,29.28 -2020-06-26 18:30:00,100.88,34.454,52.408,29.28 -2020-06-26 18:45:00,99.23,38.957,52.408,29.28 -2020-06-26 19:00:00,92.97,40.580999999999996,52.736000000000004,29.28 -2020-06-26 19:15:00,93.69,40.194,52.736000000000004,29.28 -2020-06-26 19:30:00,98.71,39.216,52.736000000000004,29.28 -2020-06-26 19:45:00,97.1,38.205,52.736000000000004,29.28 -2020-06-26 20:00:00,93.03,35.582,59.68,29.28 -2020-06-26 20:15:00,87.14,36.32,59.68,29.28 -2020-06-26 20:30:00,89.87,36.326,59.68,29.28 -2020-06-26 20:45:00,87.72,36.488,59.68,29.28 -2020-06-26 21:00:00,86.85,36.183,54.343999999999994,29.28 -2020-06-26 21:15:00,86.7,39.836,54.343999999999994,29.28 -2020-06-26 21:30:00,87.8,40.472,54.343999999999994,29.28 -2020-06-26 21:45:00,87.75,41.882,54.343999999999994,29.28 -2020-06-26 22:00:00,84.36,39.395,49.672,29.28 -2020-06-26 22:15:00,81.7,41.153,49.672,29.28 -2020-06-26 22:30:00,76.68,40.829,49.672,29.28 -2020-06-26 22:45:00,74.71,38.507,49.672,29.28 -2020-06-26 23:00:00,71.08,35.825,42.065,29.28 -2020-06-26 23:15:00,71.04,32.855,42.065,29.28 -2020-06-26 23:30:00,66.37,29.904,42.065,29.28 -2020-06-26 23:45:00,69.55,28.935,42.065,29.28 -2020-06-27 00:00:00,65.06,22.680999999999997,38.829,29.17 -2020-06-27 00:15:00,66.26,22.67,38.829,29.17 -2020-06-27 00:30:00,67.1,21.462,38.829,29.17 -2020-06-27 00:45:00,66.18,20.795,38.829,29.17 -2020-06-27 01:00:00,63.32,20.668000000000003,34.63,29.17 -2020-06-27 01:15:00,71.54,19.678,34.63,29.17 -2020-06-27 01:30:00,69.12,17.852,34.63,29.17 -2020-06-27 01:45:00,70.08,18.394000000000002,34.63,29.17 -2020-06-27 02:00:00,62.8,17.964000000000002,32.465,29.17 -2020-06-27 02:15:00,62.11,15.561,32.465,29.17 -2020-06-27 02:30:00,65.37,17.749000000000002,32.465,29.17 -2020-06-27 02:45:00,68.43,18.676,32.465,29.17 -2020-06-27 03:00:00,68.92,19.649,31.925,29.17 -2020-06-27 03:15:00,68.83,16.522000000000002,31.925,29.17 -2020-06-27 03:30:00,65.01,15.847999999999999,31.925,29.17 -2020-06-27 03:45:00,60.82,17.756,31.925,29.17 -2020-06-27 04:00:00,61.0,21.845,31.309,29.17 -2020-06-27 04:15:00,68.68,26.747,31.309,29.17 -2020-06-27 04:30:00,68.89,23.107,31.309,29.17 -2020-06-27 04:45:00,67.89,22.884,31.309,29.17 -2020-06-27 05:00:00,63.25,28.361,30.323,29.17 -2020-06-27 05:15:00,62.79,27.12,30.323,29.17 -2020-06-27 05:30:00,67.71,21.116,30.323,29.17 -2020-06-27 05:45:00,71.77,22.594,30.323,29.17 -2020-06-27 06:00:00,75.97,37.208,31.438000000000002,29.17 -2020-06-27 06:15:00,71.83,46.221000000000004,31.438000000000002,29.17 -2020-06-27 06:30:00,70.47,41.309,31.438000000000002,29.17 -2020-06-27 06:45:00,72.75,38.786,31.438000000000002,29.17 -2020-06-27 07:00:00,76.92,38.353,34.891999999999996,29.17 -2020-06-27 07:15:00,77.53,37.963,34.891999999999996,29.17 -2020-06-27 07:30:00,75.96,34.871,34.891999999999996,29.17 -2020-06-27 07:45:00,74.03,35.513000000000005,34.891999999999996,29.17 -2020-06-27 08:00:00,75.68,34.279,39.608000000000004,29.17 -2020-06-27 08:15:00,76.83,37.715,39.608000000000004,29.17 -2020-06-27 08:30:00,81.14,37.835,39.608000000000004,29.17 -2020-06-27 08:45:00,76.55,41.08,39.608000000000004,29.17 -2020-06-27 09:00:00,72.19,37.061,40.894,29.17 -2020-06-27 09:15:00,77.15,38.563,40.894,29.17 -2020-06-27 09:30:00,77.14,41.949,40.894,29.17 -2020-06-27 09:45:00,75.67,44.763999999999996,40.894,29.17 -2020-06-27 10:00:00,75.84,39.874,39.525,29.17 -2020-06-27 10:15:00,73.35,41.927,39.525,29.17 -2020-06-27 10:30:00,70.92,42.309,39.525,29.17 -2020-06-27 10:45:00,72.03,43.653999999999996,39.525,29.17 -2020-06-27 11:00:00,67.93,39.957,36.718,29.17 -2020-06-27 11:15:00,67.39,41.049,36.718,29.17 -2020-06-27 11:30:00,68.26,42.368,36.718,29.17 -2020-06-27 11:45:00,65.04,43.833,36.718,29.17 -2020-06-27 12:00:00,61.59,41.327,35.688,29.17 -2020-06-27 12:15:00,61.46,41.361999999999995,35.688,29.17 -2020-06-27 12:30:00,59.79,40.125,35.688,29.17 -2020-06-27 12:45:00,61.07,41.525,35.688,29.17 -2020-06-27 13:00:00,56.5,41.835,32.858000000000004,29.17 -2020-06-27 13:15:00,57.59,42.577,32.858000000000004,29.17 -2020-06-27 13:30:00,57.29,41.902,32.858000000000004,29.17 -2020-06-27 13:45:00,57.27,39.775999999999996,32.858000000000004,29.17 -2020-06-27 14:00:00,56.82,41.222,31.738000000000003,29.17 -2020-06-27 14:15:00,57.12,39.06,31.738000000000003,29.17 -2020-06-27 14:30:00,57.83,38.715,31.738000000000003,29.17 -2020-06-27 14:45:00,60.56,39.176,31.738000000000003,29.17 -2020-06-27 15:00:00,59.67,41.595,34.35,29.17 -2020-06-27 15:15:00,59.31,39.548,34.35,29.17 -2020-06-27 15:30:00,60.2,37.325,34.35,29.17 -2020-06-27 15:45:00,61.46,34.984,34.35,29.17 -2020-06-27 16:00:00,62.44,39.122,37.522,29.17 -2020-06-27 16:15:00,63.64,38.339,37.522,29.17 -2020-06-27 16:30:00,66.31,37.792,37.522,29.17 -2020-06-27 16:45:00,67.86,33.27,37.522,29.17 -2020-06-27 17:00:00,70.65,37.027,42.498000000000005,29.17 -2020-06-27 17:15:00,71.24,34.755,42.498000000000005,29.17 -2020-06-27 17:30:00,73.98,33.844,42.498000000000005,29.17 -2020-06-27 17:45:00,75.04,32.39,42.498000000000005,29.17 -2020-06-27 18:00:00,77.44,36.498000000000005,44.701,29.17 -2020-06-27 18:15:00,76.21,37.229,44.701,29.17 -2020-06-27 18:30:00,76.3,36.213,44.701,29.17 -2020-06-27 18:45:00,76.3,37.082,44.701,29.17 -2020-06-27 19:00:00,76.28,37.175,45.727,29.17 -2020-06-27 19:15:00,73.26,35.755,45.727,29.17 -2020-06-27 19:30:00,72.4,35.575,45.727,29.17 -2020-06-27 19:45:00,70.94,36.29,45.727,29.17 -2020-06-27 20:00:00,71.82,34.611,43.391000000000005,29.17 -2020-06-27 20:15:00,71.23,34.848,43.391000000000005,29.17 -2020-06-27 20:30:00,71.26,33.97,43.391000000000005,29.17 -2020-06-27 20:45:00,72.04,35.955999999999996,43.391000000000005,29.17 -2020-06-27 21:00:00,74.06,34.341,41.231,29.17 -2020-06-27 21:15:00,74.57,37.683,41.231,29.17 -2020-06-27 21:30:00,70.48,38.56,41.231,29.17 -2020-06-27 21:45:00,70.41,39.407,41.231,29.17 -2020-06-27 22:00:00,62.13,36.991,40.798,29.17 -2020-06-27 22:15:00,64.93,39.149,40.798,29.17 -2020-06-27 22:30:00,60.41,38.819,40.798,29.17 -2020-06-27 22:45:00,62.8,36.968,40.798,29.17 -2020-06-27 23:00:00,59.35,33.760999999999996,34.402,29.17 -2020-06-27 23:15:00,59.05,31.136999999999997,34.402,29.17 -2020-06-27 23:30:00,58.0,30.514,34.402,29.17 -2020-06-27 23:45:00,57.81,29.741999999999997,34.402,29.17 -2020-06-28 00:00:00,52.34,24.013,30.171,29.17 -2020-06-28 00:15:00,55.36,22.846,30.171,29.17 -2020-06-28 00:30:00,54.45,21.474,30.171,29.17 -2020-06-28 00:45:00,54.19,20.747,30.171,29.17 -2020-06-28 01:00:00,53.18,20.885,27.15,29.17 -2020-06-28 01:15:00,50.44,19.824,27.15,29.17 -2020-06-28 01:30:00,52.82,17.895,27.15,29.17 -2020-06-28 01:45:00,53.02,18.034000000000002,27.15,29.17 -2020-06-28 02:00:00,52.68,17.64,25.403000000000002,29.17 -2020-06-28 02:15:00,52.39,15.887,25.403000000000002,29.17 -2020-06-28 02:30:00,52.08,18.303,25.403000000000002,29.17 -2020-06-28 02:45:00,52.53,18.977,25.403000000000002,29.17 -2020-06-28 03:00:00,52.73,20.605999999999998,23.386999999999997,29.17 -2020-06-28 03:15:00,53.01,17.711,23.386999999999997,29.17 -2020-06-28 03:30:00,52.27,16.403,23.386999999999997,29.17 -2020-06-28 03:45:00,52.48,17.54,23.386999999999997,29.17 -2020-06-28 04:00:00,51.85,21.539,23.941999999999997,29.17 -2020-06-28 04:15:00,51.64,25.916999999999998,23.941999999999997,29.17 -2020-06-28 04:30:00,52.18,23.593000000000004,23.941999999999997,29.17 -2020-06-28 04:45:00,52.88,22.923000000000002,23.941999999999997,29.17 -2020-06-28 05:00:00,52.47,28.29,23.026,29.17 -2020-06-28 05:15:00,52.43,26.049,23.026,29.17 -2020-06-28 05:30:00,49.33,19.701,23.026,29.17 -2020-06-28 05:45:00,52.47,20.958000000000002,23.026,29.17 -2020-06-28 06:00:00,53.34,33.241,23.223000000000003,29.17 -2020-06-28 06:15:00,53.67,42.965,23.223000000000003,29.17 -2020-06-28 06:30:00,54.36,37.324,23.223000000000003,29.17 -2020-06-28 06:45:00,54.97,33.788000000000004,23.223000000000003,29.17 -2020-06-28 07:00:00,54.97,33.775,24.968000000000004,29.17 -2020-06-28 07:15:00,54.23,31.741999999999997,24.968000000000004,29.17 -2020-06-28 07:30:00,53.95,29.835,24.968000000000004,29.17 -2020-06-28 07:45:00,53.99,30.430999999999997,24.968000000000004,29.17 -2020-06-28 08:00:00,54.31,30.06,29.131,29.17 -2020-06-28 08:15:00,53.99,34.674,29.131,29.17 -2020-06-28 08:30:00,54.29,35.741,29.131,29.17 -2020-06-28 08:45:00,55.38,39.021,29.131,29.17 -2020-06-28 09:00:00,53.19,34.866,29.904,29.17 -2020-06-28 09:15:00,54.67,35.915,29.904,29.17 -2020-06-28 09:30:00,54.92,39.713,29.904,29.17 -2020-06-28 09:45:00,55.03,43.516000000000005,29.904,29.17 -2020-06-28 10:00:00,56.5,39.309,28.943,29.17 -2020-06-28 10:15:00,57.14,41.528999999999996,28.943,29.17 -2020-06-28 10:30:00,58.29,42.163000000000004,28.943,29.17 -2020-06-28 10:45:00,58.46,44.405,28.943,29.17 -2020-06-28 11:00:00,57.77,40.417,31.682,29.17 -2020-06-28 11:15:00,55.17,41.08,31.682,29.17 -2020-06-28 11:30:00,54.11,42.855,31.682,29.17 -2020-06-28 11:45:00,54.05,44.603,31.682,29.17 -2020-06-28 12:00:00,52.24,43.143,27.315,29.17 -2020-06-28 12:15:00,54.17,42.653999999999996,27.315,29.17 -2020-06-28 12:30:00,51.79,41.54,27.315,29.17 -2020-06-28 12:45:00,52.87,42.261,27.315,29.17 -2020-06-28 13:00:00,48.04,42.218999999999994,23.894000000000002,29.17 -2020-06-28 13:15:00,48.71,42.547,23.894000000000002,29.17 -2020-06-28 13:30:00,47.9,40.772,23.894000000000002,29.17 -2020-06-28 13:45:00,51.51,39.719,23.894000000000002,29.17 -2020-06-28 14:00:00,51.52,42.372,21.148000000000003,29.17 -2020-06-28 14:15:00,49.54,40.695,21.148000000000003,29.17 -2020-06-28 14:30:00,49.02,39.174,21.148000000000003,29.17 -2020-06-28 14:45:00,52.42,38.562,21.148000000000003,29.17 -2020-06-28 15:00:00,52.14,41.068000000000005,21.229,29.17 -2020-06-28 15:15:00,52.45,38.25,21.229,29.17 -2020-06-28 15:30:00,53.38,35.873000000000005,21.229,29.17 -2020-06-28 15:45:00,50.9,33.839,21.229,29.17 -2020-06-28 16:00:00,52.91,36.479,25.037,29.17 -2020-06-28 16:15:00,55.27,35.875,25.037,29.17 -2020-06-28 16:30:00,56.98,36.352,25.037,29.17 -2020-06-28 16:45:00,61.07,31.888,25.037,29.17 -2020-06-28 17:00:00,63.55,36.014,37.11,29.17 -2020-06-28 17:15:00,65.49,35.226,37.11,29.17 -2020-06-28 17:30:00,66.42,35.125,37.11,29.17 -2020-06-28 17:45:00,67.75,34.19,37.11,29.17 -2020-06-28 18:00:00,72.02,38.864000000000004,42.215,29.17 -2020-06-28 18:15:00,71.79,39.239000000000004,42.215,29.17 -2020-06-28 18:30:00,71.81,37.871,42.215,29.17 -2020-06-28 18:45:00,73.23,38.946,42.215,29.17 -2020-06-28 19:00:00,75.51,41.174,44.383,29.17 -2020-06-28 19:15:00,72.91,38.681,44.383,29.17 -2020-06-28 19:30:00,72.05,38.239000000000004,44.383,29.17 -2020-06-28 19:45:00,71.62,38.571999999999996,44.383,29.17 -2020-06-28 20:00:00,72.23,37.048,43.426,29.17 -2020-06-28 20:15:00,72.93,37.198,43.426,29.17 -2020-06-28 20:30:00,75.71,37.187,43.426,29.17 -2020-06-28 20:45:00,76.24,37.47,43.426,29.17 -2020-06-28 21:00:00,79.17,35.599000000000004,42.265,29.17 -2020-06-28 21:15:00,79.66,38.616,42.265,29.17 -2020-06-28 21:30:00,77.53,38.846,42.265,29.17 -2020-06-28 21:45:00,76.34,40.054,42.265,29.17 -2020-06-28 22:00:00,71.7,39.599000000000004,42.26,29.17 -2020-06-28 22:15:00,73.09,40.06,42.26,29.17 -2020-06-28 22:30:00,70.56,39.058,42.26,29.17 -2020-06-28 22:45:00,71.0,35.898,42.26,29.17 -2020-06-28 23:00:00,64.44,32.248000000000005,36.609,29.17 -2020-06-28 23:15:00,64.62,30.998,36.609,29.17 -2020-06-28 23:30:00,61.55,29.895,36.609,29.17 -2020-06-28 23:45:00,63.88,29.316,36.609,29.17 -2020-06-29 00:00:00,66.83,25.676,34.611,29.28 -2020-06-29 00:15:00,67.56,25.444000000000003,34.611,29.28 -2020-06-29 00:30:00,66.99,23.704,34.611,29.28 -2020-06-29 00:45:00,65.2,22.566,34.611,29.28 -2020-06-29 01:00:00,61.33,23.096,33.552,29.28 -2020-06-29 01:15:00,61.25,22.009,33.552,29.28 -2020-06-29 01:30:00,68.73,20.438,33.552,29.28 -2020-06-29 01:45:00,69.26,20.480999999999998,33.552,29.28 -2020-06-29 02:00:00,67.73,20.535999999999998,32.351,29.28 -2020-06-29 02:15:00,64.1,17.863,32.351,29.28 -2020-06-29 02:30:00,65.25,20.449,32.351,29.28 -2020-06-29 02:45:00,62.46,20.95,32.351,29.28 -2020-06-29 03:00:00,63.93,23.139,30.793000000000003,29.28 -2020-06-29 03:15:00,64.66,21.044,30.793000000000003,29.28 -2020-06-29 03:30:00,64.42,20.402,30.793000000000003,29.28 -2020-06-29 03:45:00,65.17,21.073,30.793000000000003,29.28 -2020-06-29 04:00:00,69.29,28.322,31.274,29.28 -2020-06-29 04:15:00,69.39,35.769,31.274,29.28 -2020-06-29 04:30:00,73.21,33.074,31.274,29.28 -2020-06-29 04:45:00,76.37,32.777,31.274,29.28 -2020-06-29 05:00:00,84.05,45.946999999999996,37.75,29.28 -2020-06-29 05:15:00,89.26,54.832,37.75,29.28 -2020-06-29 05:30:00,91.77,47.041000000000004,37.75,29.28 -2020-06-29 05:45:00,100.7,45.004,37.75,29.28 -2020-06-29 06:00:00,106.18,46.221000000000004,55.36,29.28 -2020-06-29 06:15:00,104.78,46.18899999999999,55.36,29.28 -2020-06-29 06:30:00,101.12,44.909,55.36,29.28 -2020-06-29 06:45:00,106.27,47.068999999999996,55.36,29.28 -2020-06-29 07:00:00,110.35,47.54600000000001,65.87,29.28 -2020-06-29 07:15:00,106.69,47.847,65.87,29.28 -2020-06-29 07:30:00,102.74,45.05,65.87,29.28 -2020-06-29 07:45:00,98.31,45.833999999999996,65.87,29.28 -2020-06-29 08:00:00,101.86,43.085,55.695,29.28 -2020-06-29 08:15:00,104.63,46.422,55.695,29.28 -2020-06-29 08:30:00,103.4,46.312,55.695,29.28 -2020-06-29 08:45:00,98.22,49.619,55.695,29.28 -2020-06-29 09:00:00,97.83,44.388000000000005,50.881,29.28 -2020-06-29 09:15:00,98.5,43.49100000000001,50.881,29.28 -2020-06-29 09:30:00,97.26,46.31399999999999,50.881,29.28 -2020-06-29 09:45:00,99.53,47.886,50.881,29.28 -2020-06-29 10:00:00,105.48,44.043,49.138000000000005,29.28 -2020-06-29 10:15:00,107.62,46.105,49.138000000000005,29.28 -2020-06-29 10:30:00,106.69,46.236999999999995,49.138000000000005,29.28 -2020-06-29 10:45:00,101.86,46.96,49.138000000000005,29.28 -2020-06-29 11:00:00,108.46,43.041000000000004,49.178000000000004,29.28 -2020-06-29 11:15:00,104.0,44.08,49.178000000000004,29.28 -2020-06-29 11:30:00,102.52,46.606,49.178000000000004,29.28 -2020-06-29 11:45:00,97.39,48.825,49.178000000000004,29.28 -2020-06-29 12:00:00,95.56,45.77,47.698,29.28 -2020-06-29 12:15:00,98.26,45.39,47.698,29.28 -2020-06-29 12:30:00,92.89,43.213,47.698,29.28 -2020-06-29 12:45:00,91.17,44.008,47.698,29.28 -2020-06-29 13:00:00,90.56,44.903,48.104,29.28 -2020-06-29 13:15:00,91.19,44.283,48.104,29.28 -2020-06-29 13:30:00,93.09,42.658,48.104,29.28 -2020-06-29 13:45:00,90.72,42.498000000000005,48.104,29.28 -2020-06-29 14:00:00,92.67,44.217,48.53,29.28 -2020-06-29 14:15:00,90.61,43.095,48.53,29.28 -2020-06-29 14:30:00,89.74,41.367,48.53,29.28 -2020-06-29 14:45:00,89.22,42.806999999999995,48.53,29.28 -2020-06-29 15:00:00,92.79,45.053999999999995,49.351000000000006,29.28 -2020-06-29 15:15:00,89.48,41.575,49.351000000000006,29.28 -2020-06-29 15:30:00,89.59,39.916,49.351000000000006,29.28 -2020-06-29 15:45:00,91.17,37.37,49.351000000000006,29.28 -2020-06-29 16:00:00,92.45,41.121,51.44,29.28 -2020-06-29 16:15:00,93.63,40.543,51.44,29.28 -2020-06-29 16:30:00,98.96,40.327,51.44,29.28 -2020-06-29 16:45:00,97.02,35.815,51.44,29.28 -2020-06-29 17:00:00,99.29,38.823,56.868,29.28 -2020-06-29 17:15:00,99.23,38.361,56.868,29.28 -2020-06-29 17:30:00,99.19,37.845,56.868,29.28 -2020-06-29 17:45:00,102.14,36.434,56.868,29.28 -2020-06-29 18:00:00,102.78,40.075,57.229,29.28 -2020-06-29 18:15:00,101.5,38.505,57.229,29.28 -2020-06-29 18:30:00,103.73,36.42,57.229,29.28 -2020-06-29 18:45:00,102.37,40.659,57.229,29.28 -2020-06-29 19:00:00,99.56,42.528,57.744,29.28 -2020-06-29 19:15:00,95.89,41.278,57.744,29.28 -2020-06-29 19:30:00,96.63,40.488,57.744,29.28 -2020-06-29 19:45:00,92.86,40.168,57.744,29.28 -2020-06-29 20:00:00,91.91,37.258,66.05199999999999,29.28 -2020-06-29 20:15:00,90.4,38.671,66.05199999999999,29.28 -2020-06-29 20:30:00,93.06,39.088,66.05199999999999,29.28 -2020-06-29 20:45:00,90.78,39.683,66.05199999999999,29.28 -2020-06-29 21:00:00,92.65,37.217,59.396,29.28 -2020-06-29 21:15:00,88.69,40.618,59.396,29.28 -2020-06-29 21:30:00,86.02,41.196000000000005,59.396,29.28 -2020-06-29 21:45:00,84.23,42.163000000000004,59.396,29.28 -2020-06-29 22:00:00,80.64,39.546,53.06,29.28 -2020-06-29 22:15:00,79.82,41.918,53.06,29.28 -2020-06-29 22:30:00,78.02,36.138000000000005,53.06,29.28 -2020-06-29 22:45:00,80.24,32.711,53.06,29.28 -2020-06-29 23:00:00,73.65,29.131,46.148,29.28 -2020-06-29 23:15:00,74.02,26.403000000000002,46.148,29.28 -2020-06-29 23:30:00,72.94,25.406999999999996,46.148,29.28 -2020-06-29 23:45:00,71.27,24.415,46.148,29.28 -2020-06-30 00:00:00,72.03,23.34,44.625,29.28 -2020-06-30 00:15:00,69.91,24.04,44.625,29.28 -2020-06-30 00:30:00,68.65,22.963,44.625,29.28 -2020-06-30 00:45:00,71.12,22.569000000000003,44.625,29.28 -2020-06-30 01:00:00,68.89,22.561,41.733000000000004,29.28 -2020-06-30 01:15:00,68.91,21.552,41.733000000000004,29.28 -2020-06-30 01:30:00,69.21,19.86,41.733000000000004,29.28 -2020-06-30 01:45:00,72.69,19.401,41.733000000000004,29.28 -2020-06-30 02:00:00,69.55,18.98,39.872,29.28 -2020-06-30 02:15:00,70.67,17.457,39.872,29.28 -2020-06-30 02:30:00,77.04,19.615,39.872,29.28 -2020-06-30 02:45:00,77.77,20.448,39.872,29.28 -2020-06-30 03:00:00,73.56,22.02,38.711,29.28 -2020-06-30 03:15:00,71.83,20.819000000000003,38.711,29.28 -2020-06-30 03:30:00,74.59,20.177,38.711,29.28 -2020-06-30 03:45:00,72.48,19.767,38.711,29.28 -2020-06-30 04:00:00,73.67,25.706,39.823,29.28 -2020-06-30 04:15:00,76.58,33.113,39.823,29.28 -2020-06-30 04:30:00,78.87,30.273000000000003,39.823,29.28 -2020-06-30 04:45:00,84.64,30.521,39.823,29.28 -2020-06-30 05:00:00,90.01,45.441,43.228,29.28 -2020-06-30 05:15:00,94.67,54.836000000000006,43.228,29.28 -2020-06-30 05:30:00,100.35,47.21,43.228,29.28 -2020-06-30 05:45:00,104.12,44.481,43.228,29.28 -2020-06-30 06:00:00,104.34,46.69,54.316,29.28 -2020-06-30 06:15:00,106.09,46.928999999999995,54.316,29.28 -2020-06-30 06:30:00,104.25,45.317,54.316,29.28 -2020-06-30 06:45:00,111.24,46.6,54.316,29.28 -2020-06-30 07:00:00,112.68,47.207,65.758,29.28 -2020-06-30 07:15:00,112.93,47.266000000000005,65.758,29.28 -2020-06-30 07:30:00,106.91,44.458999999999996,65.758,29.28 -2020-06-30 07:45:00,109.59,44.313,65.758,29.28 -2020-06-30 08:00:00,108.14,41.508,57.983000000000004,29.28 -2020-06-30 08:15:00,105.14,44.367,57.983000000000004,29.28 -2020-06-30 08:30:00,102.56,44.407,57.983000000000004,29.28 -2020-06-30 08:45:00,109.58,46.778999999999996,57.983000000000004,29.28 -2020-06-30 09:00:00,108.83,41.842,52.653,29.28 -2020-06-30 09:15:00,107.0,40.89,52.653,29.28 -2020-06-30 09:30:00,102.96,44.428000000000004,52.653,29.28 -2020-06-30 09:45:00,100.07,47.33,52.653,29.28 -2020-06-30 10:00:00,106.46,42.102,51.408,29.28 -2020-06-30 10:15:00,108.26,43.974,51.408,29.28 -2020-06-30 10:30:00,109.08,44.14,51.408,29.28 -2020-06-30 10:45:00,106.82,45.883,51.408,29.28 -2020-06-30 11:00:00,100.17,42.043,51.913000000000004,29.28 -2020-06-30 11:15:00,103.91,43.474,51.913000000000004,29.28 -2020-06-30 11:30:00,106.58,44.784,51.913000000000004,29.28 -2020-06-30 11:45:00,101.37,46.586000000000006,51.913000000000004,29.28 -2020-06-30 12:00:00,98.37,43.301,49.508,29.28 -2020-06-30 12:15:00,96.43,43.236999999999995,49.508,29.28 -2020-06-30 12:30:00,100.54,41.938,49.508,29.28 -2020-06-30 12:45:00,100.76,43.412,49.508,29.28 -2020-06-30 13:00:00,99.12,43.91,50.007,29.28 -2020-06-30 13:15:00,93.41,45.073,50.007,29.28 -2020-06-30 13:30:00,100.0,43.479,50.007,29.28 -2020-06-30 13:45:00,100.4,42.37,50.007,29.28 -2020-06-30 14:00:00,101.59,44.562,49.778999999999996,29.28 -2020-06-30 14:15:00,93.92,43.248000000000005,49.778999999999996,29.28 -2020-06-30 14:30:00,98.79,41.861000000000004,49.778999999999996,29.28 -2020-06-30 14:45:00,99.07,42.513000000000005,49.778999999999996,29.28 -2020-06-30 15:00:00,98.76,44.603,51.559,29.28 -2020-06-30 15:15:00,96.36,42.058,51.559,29.28 -2020-06-30 15:30:00,97.72,40.195,51.559,29.28 -2020-06-30 15:45:00,100.74,37.971,51.559,29.28 -2020-06-30 16:00:00,101.72,41.047,53.531000000000006,29.28 -2020-06-30 16:15:00,97.36,40.577,53.531000000000006,29.28 -2020-06-30 16:30:00,100.31,40.037,53.531000000000006,29.28 -2020-06-30 16:45:00,100.27,36.243,53.531000000000006,29.28 -2020-06-30 17:00:00,108.34,39.504,59.497,29.28 -2020-06-30 17:15:00,109.28,39.463,59.497,29.28 -2020-06-30 17:30:00,107.79,38.535,59.497,29.28 -2020-06-30 17:45:00,105.96,36.778,59.497,29.28 -2020-06-30 18:00:00,107.94,39.473,59.861999999999995,29.28 -2020-06-30 18:15:00,109.77,39.347,59.861999999999995,29.28 -2020-06-30 18:30:00,112.0,36.985,59.861999999999995,29.28 -2020-06-30 18:45:00,107.95,41.065,59.861999999999995,29.28 -2020-06-30 19:00:00,102.45,41.773,60.989,29.28 -2020-06-30 19:15:00,102.48,40.681999999999995,60.989,29.28 -2020-06-30 19:30:00,105.3,39.64,60.989,29.28 -2020-06-30 19:45:00,101.39,39.65,60.989,29.28 -2020-06-30 20:00:00,93.96,37.129,68.35600000000001,29.28 -2020-06-30 20:15:00,92.47,37.068000000000005,68.35600000000001,29.28 -2020-06-30 20:30:00,92.77,37.573,68.35600000000001,29.28 -2020-06-30 20:45:00,95.45,38.578,68.35600000000001,29.28 -2020-06-30 21:00:00,91.73,36.955,59.251000000000005,29.28 -2020-06-30 21:15:00,91.24,38.936,59.251000000000005,29.28 -2020-06-30 21:30:00,89.56,39.635,59.251000000000005,29.28 -2020-06-30 21:45:00,87.06,40.806,59.251000000000005,29.28 -2020-06-30 22:00:00,82.92,38.446999999999996,54.736999999999995,29.28 -2020-06-30 22:15:00,83.13,40.474000000000004,54.736999999999995,29.28 -2020-06-30 22:30:00,79.39,34.979,54.736999999999995,29.28 -2020-06-30 22:45:00,78.5,31.551,54.736999999999995,29.28 -2020-06-30 23:00:00,75.71,27.199,46.806999999999995,29.28 -2020-06-30 23:15:00,75.56,26.018,46.806999999999995,29.28 -2020-06-30 23:30:00,74.43,25.016,46.806999999999995,29.28 -2020-06-30 23:45:00,73.31,24.177,46.806999999999995,29.28 -2020-07-01 00:00:00,70.43,18.788,42.195,29.509 -2020-07-01 00:15:00,71.7,19.662,42.195,29.509 -2020-07-01 00:30:00,70.95,18.385,42.195,29.509 -2020-07-01 00:45:00,71.27,18.276,42.195,29.509 -2020-07-01 01:00:00,69.68,18.217,38.82,29.509 -2020-07-01 01:15:00,70.95,17.452,38.82,29.509 -2020-07-01 01:30:00,71.25,15.89,38.82,29.509 -2020-07-01 01:45:00,71.45,15.93,38.82,29.509 -2020-07-01 02:00:00,70.66,15.644,37.023,29.509 -2020-07-01 02:15:00,70.4,14.513,37.023,29.509 -2020-07-01 02:30:00,71.19,16.352999999999998,37.023,29.509 -2020-07-01 02:45:00,71.81,17.062,37.023,29.509 -2020-07-01 03:00:00,72.87,18.293,36.818000000000005,29.509 -2020-07-01 03:15:00,71.24,17.483,36.818000000000005,29.509 -2020-07-01 03:30:00,72.47,16.722,36.818000000000005,29.509 -2020-07-01 03:45:00,73.77,15.866,36.818000000000005,29.509 -2020-07-01 04:00:00,79.37,20.849,37.495,29.509 -2020-07-01 04:15:00,83.66,27.185,37.495,29.509 -2020-07-01 04:30:00,85.87,24.576,37.495,29.509 -2020-07-01 04:45:00,82.08,24.599,37.495,29.509 -2020-07-01 05:00:00,87.68,37.652,39.858000000000004,29.509 -2020-07-01 05:15:00,91.0,45.316,39.858000000000004,29.509 -2020-07-01 05:30:00,94.48,39.075,39.858000000000004,29.509 -2020-07-01 05:45:00,96.89,36.391999999999996,39.858000000000004,29.509 -2020-07-01 06:00:00,102.46,37.272,52.867,29.509 -2020-07-01 06:15:00,102.72,36.881,52.867,29.509 -2020-07-01 06:30:00,102.82,36.024,52.867,29.509 -2020-07-01 06:45:00,103.56,37.891999999999996,52.867,29.509 -2020-07-01 07:00:00,106.17,38.054,66.061,29.509 -2020-07-01 07:15:00,107.32,38.36,66.061,29.509 -2020-07-01 07:30:00,103.25,36.042,66.061,29.509 -2020-07-01 07:45:00,105.44,36.064,66.061,29.509 -2020-07-01 08:00:00,102.77,31.921,58.532,29.509 -2020-07-01 08:15:00,106.3,34.949,58.532,29.509 -2020-07-01 08:30:00,109.35,36.171,58.532,29.509 -2020-07-01 08:45:00,110.17,38.823,58.532,29.509 -2020-07-01 09:00:00,107.3,32.952,56.047,29.509 -2020-07-01 09:15:00,102.83,32.253,56.047,29.509 -2020-07-01 09:30:00,105.13,36.139,56.047,29.509 -2020-07-01 09:45:00,108.99,39.617,56.047,29.509 -2020-07-01 10:00:00,108.91,36.763000000000005,53.823,29.509 -2020-07-01 10:15:00,111.42,38.422,53.823,29.509 -2020-07-01 10:30:00,107.94,38.482,53.823,29.509 -2020-07-01 10:45:00,106.69,39.787,53.823,29.509 -2020-07-01 11:00:00,108.14,37.555,54.184,29.509 -2020-07-01 11:15:00,107.34,38.873000000000005,54.184,29.509 -2020-07-01 11:30:00,103.63,40.246,54.184,29.509 -2020-07-01 11:45:00,99.79,41.605,54.184,29.509 -2020-07-01 12:00:00,101.32,36.647,52.628,29.509 -2020-07-01 12:15:00,105.42,36.146,52.628,29.509 -2020-07-01 12:30:00,103.81,35.018,52.628,29.509 -2020-07-01 12:45:00,100.08,36.165,52.628,29.509 -2020-07-01 13:00:00,97.35,36.506,52.31,29.509 -2020-07-01 13:15:00,99.57,37.897,52.31,29.509 -2020-07-01 13:30:00,102.34,36.091,52.31,29.509 -2020-07-01 13:45:00,101.61,35.67,52.31,29.509 -2020-07-01 14:00:00,97.36,37.439,52.278999999999996,29.509 -2020-07-01 14:15:00,95.86,36.361,52.278999999999996,29.509 -2020-07-01 14:30:00,94.71,35.399,52.278999999999996,29.509 -2020-07-01 14:45:00,102.25,35.926,52.278999999999996,29.509 -2020-07-01 15:00:00,101.58,37.861999999999995,53.306999999999995,29.509 -2020-07-01 15:15:00,106.6,35.504,53.306999999999995,29.509 -2020-07-01 15:30:00,109.06,33.898,53.306999999999995,29.509 -2020-07-01 15:45:00,110.7,32.225,53.306999999999995,29.509 -2020-07-01 16:00:00,104.2,34.999,55.358999999999995,29.509 -2020-07-01 16:15:00,100.24,34.702,55.358999999999995,29.509 -2020-07-01 16:30:00,107.63,33.689,55.358999999999995,29.509 -2020-07-01 16:45:00,110.17,30.451999999999998,55.358999999999995,29.509 -2020-07-01 17:00:00,110.35,34.147,59.211999999999996,29.509 -2020-07-01 17:15:00,104.03,34.079,59.211999999999996,29.509 -2020-07-01 17:30:00,107.88,32.936,59.211999999999996,29.509 -2020-07-01 17:45:00,108.5,31.721,59.211999999999996,29.509 -2020-07-01 18:00:00,113.12,34.732,60.403999999999996,29.509 -2020-07-01 18:15:00,112.56,34.763000000000005,60.403999999999996,29.509 -2020-07-01 18:30:00,109.0,32.714,60.403999999999996,29.509 -2020-07-01 18:45:00,106.69,35.778,60.403999999999996,29.509 -2020-07-01 19:00:00,103.85,36.946999999999996,60.993,29.509 -2020-07-01 19:15:00,104.5,36.014,60.993,29.509 -2020-07-01 19:30:00,99.49,34.96,60.993,29.509 -2020-07-01 19:45:00,102.64,34.247,60.993,29.509 -2020-07-01 20:00:00,93.35,31.489,66.6,29.509 -2020-07-01 20:15:00,92.62,31.057,66.6,29.509 -2020-07-01 20:30:00,94.73,31.609,66.6,29.509 -2020-07-01 20:45:00,92.77,32.135999999999996,66.6,29.509 -2020-07-01 21:00:00,93.61,30.487,59.855,29.509 -2020-07-01 21:15:00,91.43,32.09,59.855,29.509 -2020-07-01 21:30:00,88.22,33.063,59.855,29.509 -2020-07-01 21:45:00,86.19,34.155,59.855,29.509 -2020-07-01 22:00:00,82.68,31.27,54.942,29.509 -2020-07-01 22:15:00,82.47,33.906,54.942,29.509 -2020-07-01 22:30:00,79.33,29.747,54.942,29.509 -2020-07-01 22:45:00,79.58,26.566999999999997,54.942,29.509 -2020-07-01 23:00:00,76.55,23.329,46.056000000000004,29.509 -2020-07-01 23:15:00,75.74,21.73,46.056000000000004,29.509 -2020-07-01 23:30:00,76.51,20.483,46.056000000000004,29.509 -2020-07-01 23:45:00,75.37,19.579,46.056000000000004,29.509 -2020-07-02 00:00:00,71.27,18.766,40.859,29.509 -2020-07-02 00:15:00,75.23,19.639,40.859,29.509 -2020-07-02 00:30:00,72.87,18.366,40.859,29.509 -2020-07-02 00:45:00,72.99,18.262,40.859,29.509 -2020-07-02 01:00:00,73.16,18.214000000000002,39.06,29.509 -2020-07-02 01:15:00,71.58,17.437,39.06,29.509 -2020-07-02 01:30:00,70.03,15.875,39.06,29.509 -2020-07-02 01:45:00,71.6,15.907,39.06,29.509 -2020-07-02 02:00:00,71.98,15.627,37.592,29.509 -2020-07-02 02:15:00,72.45,14.513,37.592,29.509 -2020-07-02 02:30:00,71.95,16.332,37.592,29.509 -2020-07-02 02:45:00,73.87,17.044,37.592,29.509 -2020-07-02 03:00:00,73.17,18.271,37.416,29.509 -2020-07-02 03:15:00,73.55,17.469,37.416,29.509 -2020-07-02 03:30:00,74.45,16.714000000000002,37.416,29.509 -2020-07-02 03:45:00,76.07,15.876,37.416,29.509 -2020-07-02 04:00:00,85.78,20.818,38.176,29.509 -2020-07-02 04:15:00,84.85,27.118000000000002,38.176,29.509 -2020-07-02 04:30:00,81.2,24.5,38.176,29.509 -2020-07-02 04:45:00,82.99,24.521,38.176,29.509 -2020-07-02 05:00:00,91.83,37.501999999999995,41.203,29.509 -2020-07-02 05:15:00,92.7,45.07,41.203,29.509 -2020-07-02 05:30:00,93.71,38.889,41.203,29.509 -2020-07-02 05:45:00,100.65,36.238,41.203,29.509 -2020-07-02 06:00:00,111.15,37.12,51.09,29.509 -2020-07-02 06:15:00,112.6,36.724000000000004,51.09,29.509 -2020-07-02 06:30:00,107.72,35.889,51.09,29.509 -2020-07-02 06:45:00,109.61,37.786,51.09,29.509 -2020-07-02 07:00:00,106.92,37.939,63.541000000000004,29.509 -2020-07-02 07:15:00,111.87,38.266,63.541000000000004,29.509 -2020-07-02 07:30:00,113.84,35.949,63.541000000000004,29.509 -2020-07-02 07:45:00,113.44,36.0,63.541000000000004,29.509 -2020-07-02 08:00:00,107.91,31.868000000000002,55.65,29.509 -2020-07-02 08:15:00,107.55,34.914,55.65,29.509 -2020-07-02 08:30:00,114.18,36.126,55.65,29.509 -2020-07-02 08:45:00,115.94,38.775,55.65,29.509 -2020-07-02 09:00:00,110.22,32.898,51.833999999999996,29.509 -2020-07-02 09:15:00,109.29,32.201,51.833999999999996,29.509 -2020-07-02 09:30:00,107.38,36.082,51.833999999999996,29.509 -2020-07-02 09:45:00,111.58,39.568000000000005,51.833999999999996,29.509 -2020-07-02 10:00:00,112.97,36.721,49.70399999999999,29.509 -2020-07-02 10:15:00,113.92,38.382,49.70399999999999,29.509 -2020-07-02 10:30:00,108.83,38.439,49.70399999999999,29.509 -2020-07-02 10:45:00,113.08,39.747,49.70399999999999,29.509 -2020-07-02 11:00:00,112.65,37.512,48.593999999999994,29.509 -2020-07-02 11:15:00,108.39,38.832,48.593999999999994,29.509 -2020-07-02 11:30:00,105.46,40.194,48.593999999999994,29.509 -2020-07-02 11:45:00,103.74,41.549,48.593999999999994,29.509 -2020-07-02 12:00:00,102.28,36.616,46.275,29.509 -2020-07-02 12:15:00,112.02,36.114000000000004,46.275,29.509 -2020-07-02 12:30:00,110.12,34.974000000000004,46.275,29.509 -2020-07-02 12:45:00,111.95,36.118,46.275,29.509 -2020-07-02 13:00:00,108.93,36.444,45.803000000000004,29.509 -2020-07-02 13:15:00,104.36,37.830999999999996,45.803000000000004,29.509 -2020-07-02 13:30:00,111.63,36.033,45.803000000000004,29.509 -2020-07-02 13:45:00,108.98,35.619,45.803000000000004,29.509 -2020-07-02 14:00:00,114.1,37.393,46.251999999999995,29.509 -2020-07-02 14:15:00,102.95,36.316,46.251999999999995,29.509 -2020-07-02 14:30:00,101.66,35.339,46.251999999999995,29.509 -2020-07-02 14:45:00,108.11,35.873000000000005,46.251999999999995,29.509 -2020-07-02 15:00:00,117.54,37.826,48.309,29.509 -2020-07-02 15:15:00,115.68,35.461,48.309,29.509 -2020-07-02 15:30:00,115.1,33.853,48.309,29.509 -2020-07-02 15:45:00,108.35,32.172,48.309,29.509 -2020-07-02 16:00:00,106.86,34.964,49.681999999999995,29.509 -2020-07-02 16:15:00,116.47,34.668,49.681999999999995,29.509 -2020-07-02 16:30:00,115.12,33.673,49.681999999999995,29.509 -2020-07-02 16:45:00,115.58,30.432,49.681999999999995,29.509 -2020-07-02 17:00:00,113.83,34.135999999999996,53.086000000000006,29.509 -2020-07-02 17:15:00,108.49,34.075,53.086000000000006,29.509 -2020-07-02 17:30:00,108.27,32.933,53.086000000000006,29.509 -2020-07-02 17:45:00,110.25,31.714000000000002,53.086000000000006,29.509 -2020-07-02 18:00:00,117.44,34.733000000000004,54.038999999999994,29.509 -2020-07-02 18:15:00,113.72,34.743,54.038999999999994,29.509 -2020-07-02 18:30:00,110.69,32.695,54.038999999999994,29.509 -2020-07-02 18:45:00,103.51,35.757,54.038999999999994,29.509 -2020-07-02 19:00:00,99.92,36.928000000000004,53.408,29.509 -2020-07-02 19:15:00,95.01,35.986999999999995,53.408,29.509 -2020-07-02 19:30:00,95.4,34.926,53.408,29.509 -2020-07-02 19:45:00,91.38,34.207,53.408,29.509 -2020-07-02 20:00:00,91.86,31.435,55.309,29.509 -2020-07-02 20:15:00,89.76,31.002,55.309,29.509 -2020-07-02 20:30:00,90.27,31.554000000000002,55.309,29.509 -2020-07-02 20:45:00,93.88,32.098,55.309,29.509 -2020-07-02 21:00:00,88.63,30.451999999999998,51.585,29.509 -2020-07-02 21:15:00,87.77,32.058,51.585,29.509 -2020-07-02 21:30:00,87.98,33.01,51.585,29.509 -2020-07-02 21:45:00,85.55,34.099000000000004,51.585,29.509 -2020-07-02 22:00:00,81.55,31.225,48.006,29.509 -2020-07-02 22:15:00,79.87,33.864000000000004,48.006,29.509 -2020-07-02 22:30:00,78.85,29.693,48.006,29.509 -2020-07-02 22:45:00,80.14,26.506,48.006,29.509 -2020-07-02 23:00:00,74.23,23.264,42.309,29.509 -2020-07-02 23:15:00,74.85,21.691999999999997,42.309,29.509 -2020-07-02 23:30:00,74.97,20.459,42.309,29.509 -2020-07-02 23:45:00,73.89,19.547,42.309,29.509 -2020-07-03 00:00:00,70.93,16.918,39.649,29.509 -2020-07-03 00:15:00,74.24,18.007,39.649,29.509 -2020-07-03 00:30:00,70.69,17.027,39.649,29.509 -2020-07-03 00:45:00,71.66,17.366,39.649,29.509 -2020-07-03 01:00:00,70.83,16.942,37.744,29.509 -2020-07-03 01:15:00,71.09,15.489,37.744,29.509 -2020-07-03 01:30:00,73.13,14.683,37.744,29.509 -2020-07-03 01:45:00,70.01,14.513,37.744,29.509 -2020-07-03 02:00:00,69.99,15.138,36.965,29.509 -2020-07-03 02:15:00,72.95,14.513,36.965,29.509 -2020-07-03 02:30:00,70.26,16.631,36.965,29.509 -2020-07-03 02:45:00,72.71,16.631,36.965,29.509 -2020-07-03 03:00:00,71.77,18.701,37.678000000000004,29.509 -2020-07-03 03:15:00,71.51,16.611,37.678000000000004,29.509 -2020-07-03 03:30:00,76.38,15.615,37.678000000000004,29.509 -2020-07-03 03:45:00,80.75,15.698,37.678000000000004,29.509 -2020-07-03 04:00:00,85.8,20.732,38.591,29.509 -2020-07-03 04:15:00,79.97,25.381,38.591,29.509 -2020-07-03 04:30:00,79.88,23.738000000000003,38.591,29.509 -2020-07-03 04:45:00,87.51,23.125999999999998,38.591,29.509 -2020-07-03 05:00:00,88.68,35.584,40.666,29.509 -2020-07-03 05:15:00,99.92,44.004,40.666,29.509 -2020-07-03 05:30:00,102.65,38.053000000000004,40.666,29.509 -2020-07-03 05:45:00,105.28,34.976,40.666,29.509 -2020-07-03 06:00:00,112.07,36.077,51.784,29.509 -2020-07-03 06:15:00,109.3,35.889,51.784,29.509 -2020-07-03 06:30:00,114.85,35.047,51.784,29.509 -2020-07-03 06:45:00,117.65,36.794000000000004,51.784,29.509 -2020-07-03 07:00:00,118.78,37.632,61.383,29.509 -2020-07-03 07:15:00,114.49,38.888000000000005,61.383,29.509 -2020-07-03 07:30:00,122.05,34.546,61.383,29.509 -2020-07-03 07:45:00,121.0,34.44,61.383,29.509 -2020-07-03 08:00:00,120.65,31.176,55.272,29.509 -2020-07-03 08:15:00,115.76,34.957,55.272,29.509 -2020-07-03 08:30:00,118.63,36.018,55.272,29.509 -2020-07-03 08:45:00,124.55,38.578,55.272,29.509 -2020-07-03 09:00:00,124.35,30.26,53.506,29.509 -2020-07-03 09:15:00,123.23,31.552,53.506,29.509 -2020-07-03 09:30:00,117.79,34.724000000000004,53.506,29.509 -2020-07-03 09:45:00,124.21,38.628,53.506,29.509 -2020-07-03 10:00:00,124.18,35.675,51.363,29.509 -2020-07-03 10:15:00,125.33,37.067,51.363,29.509 -2020-07-03 10:30:00,113.6,37.708,51.363,29.509 -2020-07-03 10:45:00,112.47,38.94,51.363,29.509 -2020-07-03 11:00:00,117.84,36.973,51.043,29.509 -2020-07-03 11:15:00,119.54,37.192,51.043,29.509 -2020-07-03 11:30:00,114.56,38.071,51.043,29.509 -2020-07-03 11:45:00,111.63,38.407,51.043,29.509 -2020-07-03 12:00:00,106.04,33.891999999999996,47.52,29.509 -2020-07-03 12:15:00,110.61,32.827,47.52,29.509 -2020-07-03 12:30:00,107.32,31.789,47.52,29.509 -2020-07-03 12:45:00,103.64,32.069,47.52,29.509 -2020-07-03 13:00:00,101.08,32.958,45.494,29.509 -2020-07-03 13:15:00,99.8,34.49,45.494,29.509 -2020-07-03 13:30:00,95.66,33.538000000000004,45.494,29.509 -2020-07-03 13:45:00,101.57,33.458,45.494,29.509 -2020-07-03 14:00:00,98.0,34.446999999999996,43.883,29.509 -2020-07-03 14:15:00,99.34,33.841,43.883,29.509 -2020-07-03 14:30:00,102.34,34.419000000000004,43.883,29.509 -2020-07-03 14:45:00,107.73,34.214,43.883,29.509 -2020-07-03 15:00:00,109.4,36.125,45.714,29.509 -2020-07-03 15:15:00,106.77,33.525,45.714,29.509 -2020-07-03 15:30:00,104.22,31.396,45.714,29.509 -2020-07-03 15:45:00,105.17,30.504,45.714,29.509 -2020-07-03 16:00:00,101.31,32.468,48.222,29.509 -2020-07-03 16:15:00,98.01,32.68,48.222,29.509 -2020-07-03 16:30:00,102.98,31.509,48.222,29.509 -2020-07-03 16:45:00,107.56,27.44,48.222,29.509 -2020-07-03 17:00:00,110.19,32.964,52.619,29.509 -2020-07-03 17:15:00,103.65,32.747,52.619,29.509 -2020-07-03 17:30:00,108.81,31.796,52.619,29.509 -2020-07-03 17:45:00,110.01,30.412,52.619,29.509 -2020-07-03 18:00:00,107.36,33.431,52.99,29.509 -2020-07-03 18:15:00,103.91,32.449,52.99,29.509 -2020-07-03 18:30:00,105.74,30.276,52.99,29.509 -2020-07-03 18:45:00,106.53,33.777,52.99,29.509 -2020-07-03 19:00:00,100.94,35.813,51.923,29.509 -2020-07-03 19:15:00,91.66,35.426,51.923,29.509 -2020-07-03 19:30:00,95.59,34.438,51.923,29.509 -2020-07-03 19:45:00,96.63,32.675,51.923,29.509 -2020-07-03 20:00:00,95.47,29.728,56.238,29.509 -2020-07-03 20:15:00,91.08,30.12,56.238,29.509 -2020-07-03 20:30:00,87.72,30.166,56.238,29.509 -2020-07-03 20:45:00,93.25,29.855,56.238,29.509 -2020-07-03 21:00:00,93.94,29.558000000000003,52.426,29.509 -2020-07-03 21:15:00,91.58,32.889,52.426,29.509 -2020-07-03 21:30:00,84.87,33.661,52.426,29.509 -2020-07-03 21:45:00,81.0,34.939,52.426,29.509 -2020-07-03 22:00:00,81.22,31.889,48.196000000000005,29.509 -2020-07-03 22:15:00,83.92,34.275999999999996,48.196000000000005,29.509 -2020-07-03 22:30:00,81.87,34.796,48.196000000000005,29.509 -2020-07-03 22:45:00,78.52,32.36,48.196000000000005,29.509 -2020-07-03 23:00:00,69.31,30.891,41.71,29.509 -2020-07-03 23:15:00,70.51,27.789,41.71,29.509 -2020-07-03 23:30:00,75.91,24.73,41.71,29.509 -2020-07-03 23:45:00,74.86,23.709,41.71,29.509 -2020-07-04 00:00:00,71.28,18.308,41.105,29.398000000000003 -2020-07-04 00:15:00,66.58,18.862000000000002,41.105,29.398000000000003 -2020-07-04 00:30:00,68.4,17.344,41.105,29.398000000000003 -2020-07-04 00:45:00,72.06,16.899,41.105,29.398000000000003 -2020-07-04 01:00:00,70.88,16.746,36.934,29.398000000000003 -2020-07-04 01:15:00,68.8,15.936,36.934,29.398000000000003 -2020-07-04 01:30:00,62.1,14.513,36.934,29.398000000000003 -2020-07-04 01:45:00,61.89,15.368,36.934,29.398000000000003 -2020-07-04 02:00:00,61.38,15.015999999999998,34.782,29.398000000000003 -2020-07-04 02:15:00,61.18,14.513,34.782,29.398000000000003 -2020-07-04 02:30:00,67.97,14.918,34.782,29.398000000000003 -2020-07-04 02:45:00,68.39,15.735999999999999,34.782,29.398000000000003 -2020-07-04 03:00:00,67.7,16.349,34.489000000000004,29.398000000000003 -2020-07-04 03:15:00,65.75,14.513,34.489000000000004,29.398000000000003 -2020-07-04 03:30:00,69.36,14.513,34.489000000000004,29.398000000000003 -2020-07-04 03:45:00,67.53,14.645,34.489000000000004,29.398000000000003 -2020-07-04 04:00:00,64.42,17.846,34.111,29.398000000000003 -2020-07-04 04:15:00,60.03,21.635,34.111,29.398000000000003 -2020-07-04 04:30:00,62.56,18.337,34.111,29.398000000000003 -2020-07-04 04:45:00,68.6,18.028,34.111,29.398000000000003 -2020-07-04 05:00:00,69.39,22.414,33.283,29.398000000000003 -2020-07-04 05:15:00,67.18,20.141,33.283,29.398000000000003 -2020-07-04 05:30:00,62.58,15.806,33.283,29.398000000000003 -2020-07-04 05:45:00,66.37,17.168,33.283,29.398000000000003 -2020-07-04 06:00:00,67.09,29.13,33.653,29.398000000000003 -2020-07-04 06:15:00,70.36,36.363,33.653,29.398000000000003 -2020-07-04 06:30:00,75.13,32.815,33.653,29.398000000000003 -2020-07-04 06:45:00,76.55,31.62,33.653,29.398000000000003 -2020-07-04 07:00:00,74.19,31.340999999999998,36.732,29.398000000000003 -2020-07-04 07:15:00,69.0,31.328000000000003,36.732,29.398000000000003 -2020-07-04 07:30:00,75.39,28.43,36.732,29.398000000000003 -2020-07-04 07:45:00,78.46,29.125999999999998,36.732,29.398000000000003 -2020-07-04 08:00:00,78.82,26.471,41.318999999999996,29.398000000000003 -2020-07-04 08:15:00,75.62,29.854,41.318999999999996,29.398000000000003 -2020-07-04 08:30:00,72.05,30.805,41.318999999999996,29.398000000000003 -2020-07-04 08:45:00,72.92,34.181999999999995,41.318999999999996,29.398000000000003 -2020-07-04 09:00:00,75.51,29.045,43.195,29.398000000000003 -2020-07-04 09:15:00,75.93,30.805,43.195,29.398000000000003 -2020-07-04 09:30:00,76.19,34.44,43.195,29.398000000000003 -2020-07-04 09:45:00,69.16,37.868,43.195,29.398000000000003 -2020-07-04 10:00:00,68.23,35.586999999999996,41.843999999999994,29.398000000000003 -2020-07-04 10:15:00,68.67,37.345,41.843999999999994,29.398000000000003 -2020-07-04 10:30:00,72.15,37.611999999999995,41.843999999999994,29.398000000000003 -2020-07-04 10:45:00,69.35,38.399,41.843999999999994,29.398000000000003 -2020-07-04 11:00:00,67.52,36.268,39.035,29.398000000000003 -2020-07-04 11:15:00,67.46,37.444,39.035,29.398000000000003 -2020-07-04 11:30:00,65.74,38.674,39.035,29.398000000000003 -2020-07-04 11:45:00,64.54,39.766999999999996,39.035,29.398000000000003 -2020-07-04 12:00:00,62.25,35.786,38.001,29.398000000000003 -2020-07-04 12:15:00,60.77,35.577,38.001,29.398000000000003 -2020-07-04 12:30:00,60.3,34.369,38.001,29.398000000000003 -2020-07-04 12:45:00,59.23,35.464,38.001,29.398000000000003 -2020-07-04 13:00:00,57.7,35.444,34.747,29.398000000000003 -2020-07-04 13:15:00,57.19,36.525999999999996,34.747,29.398000000000003 -2020-07-04 13:30:00,57.53,35.806,34.747,29.398000000000003 -2020-07-04 13:45:00,57.64,34.283,34.747,29.398000000000003 -2020-07-04 14:00:00,57.47,35.258,33.434,29.398000000000003 -2020-07-04 14:15:00,57.5,33.368,33.434,29.398000000000003 -2020-07-04 14:30:00,57.46,33.594,33.434,29.398000000000003 -2020-07-04 14:45:00,58.13,33.887,33.434,29.398000000000003 -2020-07-04 15:00:00,59.46,36.232,35.921,29.398000000000003 -2020-07-04 15:15:00,59.91,34.321,35.921,29.398000000000003 -2020-07-04 15:30:00,60.67,32.314,35.921,29.398000000000003 -2020-07-04 15:45:00,61.72,30.444000000000003,35.921,29.398000000000003 -2020-07-04 16:00:00,63.63,34.691,39.427,29.398000000000003 -2020-07-04 16:15:00,64.21,33.919000000000004,39.427,29.398000000000003 -2020-07-04 16:30:00,69.13,33.007,39.427,29.398000000000003 -2020-07-04 16:45:00,69.2,28.857,39.427,29.398000000000003 -2020-07-04 17:00:00,69.91,33.164,44.096000000000004,29.398000000000003 -2020-07-04 17:15:00,72.05,30.614,44.096000000000004,29.398000000000003 -2020-07-04 17:30:00,73.58,29.529,44.096000000000004,29.398000000000003 -2020-07-04 17:45:00,75.0,28.683000000000003,44.096000000000004,29.398000000000003 -2020-07-04 18:00:00,76.84,33.131,43.931000000000004,29.398000000000003 -2020-07-04 18:15:00,76.16,33.784,43.931000000000004,29.398000000000003 -2020-07-04 18:30:00,76.26,32.959,43.931000000000004,29.398000000000003 -2020-07-04 18:45:00,77.12,33.004,43.931000000000004,29.398000000000003 -2020-07-04 19:00:00,75.57,33.28,42.187,29.398000000000003 -2020-07-04 19:15:00,72.31,31.864,42.187,29.398000000000003 -2020-07-04 19:30:00,71.21,31.631999999999998,42.187,29.398000000000003 -2020-07-04 19:45:00,70.88,31.693,42.187,29.398000000000003 -2020-07-04 20:00:00,70.25,29.52,38.315,29.398000000000003 -2020-07-04 20:15:00,69.83,29.163,38.315,29.398000000000003 -2020-07-04 20:30:00,69.99,28.314,38.315,29.398000000000003 -2020-07-04 20:45:00,70.95,29.953000000000003,38.315,29.398000000000003 -2020-07-04 21:00:00,71.53,28.039,36.843,29.398000000000003 -2020-07-04 21:15:00,71.29,30.995,36.843,29.398000000000003 -2020-07-04 21:30:00,70.14,31.895,36.843,29.398000000000003 -2020-07-04 21:45:00,68.61,32.623000000000005,36.843,29.398000000000003 -2020-07-04 22:00:00,66.07,29.506999999999998,37.260999999999996,29.398000000000003 -2020-07-04 22:15:00,66.0,32.06,37.260999999999996,29.398000000000003 -2020-07-04 22:30:00,62.91,31.948,37.260999999999996,29.398000000000003 -2020-07-04 22:45:00,62.98,29.82,37.260999999999996,29.398000000000003 -2020-07-04 23:00:00,59.32,27.59,32.148,29.398000000000003 -2020-07-04 23:15:00,58.95,25.004,32.148,29.398000000000003 -2020-07-04 23:30:00,58.24,24.543000000000003,32.148,29.398000000000003 -2020-07-04 23:45:00,57.81,23.965999999999998,32.148,29.398000000000003 -2020-07-05 00:00:00,55.67,19.707,28.905,29.398000000000003 -2020-07-05 00:15:00,55.37,19.081,28.905,29.398000000000003 -2020-07-05 00:30:00,54.85,17.43,28.905,29.398000000000003 -2020-07-05 00:45:00,54.72,16.848,28.905,29.398000000000003 -2020-07-05 01:00:00,53.6,16.983,26.906999999999996,29.398000000000003 -2020-07-05 01:15:00,53.84,15.994000000000002,26.906999999999996,29.398000000000003 -2020-07-05 01:30:00,54.02,14.513,26.906999999999996,29.398000000000003 -2020-07-05 01:45:00,54.04,14.877,26.906999999999996,29.398000000000003 -2020-07-05 02:00:00,53.25,14.642000000000001,25.938000000000002,29.398000000000003 -2020-07-05 02:15:00,53.53,14.513,25.938000000000002,29.398000000000003 -2020-07-05 02:30:00,53.44,15.464,25.938000000000002,29.398000000000003 -2020-07-05 02:45:00,52.89,15.967,25.938000000000002,29.398000000000003 -2020-07-05 03:00:00,52.29,17.232,24.693,29.398000000000003 -2020-07-05 03:15:00,53.06,14.776,24.693,29.398000000000003 -2020-07-05 03:30:00,52.75,14.513,24.693,29.398000000000003 -2020-07-05 03:45:00,51.46,14.513,24.693,29.398000000000003 -2020-07-05 04:00:00,51.22,17.359,25.683000000000003,29.398000000000003 -2020-07-05 04:15:00,51.09,20.709,25.683000000000003,29.398000000000003 -2020-07-05 04:30:00,50.47,18.782,25.683000000000003,29.398000000000003 -2020-07-05 04:45:00,51.05,17.98,25.683000000000003,29.398000000000003 -2020-07-05 05:00:00,50.86,22.613000000000003,26.023000000000003,29.398000000000003 -2020-07-05 05:15:00,50.47,19.552,26.023000000000003,29.398000000000003 -2020-07-05 05:30:00,48.1,14.87,26.023000000000003,29.398000000000003 -2020-07-05 05:45:00,51.33,15.972000000000001,26.023000000000003,29.398000000000003 -2020-07-05 06:00:00,51.68,25.519000000000002,25.834,29.398000000000003 -2020-07-05 06:15:00,51.55,33.667,25.834,29.398000000000003 -2020-07-05 06:30:00,52.79,29.468000000000004,25.834,29.398000000000003 -2020-07-05 06:45:00,53.9,27.323,25.834,29.398000000000003 -2020-07-05 07:00:00,53.77,27.261999999999997,27.765,29.398000000000003 -2020-07-05 07:15:00,53.67,25.614,27.765,29.398000000000003 -2020-07-05 07:30:00,52.11,24.101,27.765,29.398000000000003 -2020-07-05 07:45:00,54.99,24.828000000000003,27.765,29.398000000000003 -2020-07-05 08:00:00,55.61,22.898000000000003,31.357,29.398000000000003 -2020-07-05 08:15:00,55.39,27.529,31.357,29.398000000000003 -2020-07-05 08:30:00,56.12,29.285999999999998,31.357,29.398000000000003 -2020-07-05 08:45:00,56.36,32.464,31.357,29.398000000000003 -2020-07-05 09:00:00,57.17,27.238000000000003,33.238,29.398000000000003 -2020-07-05 09:15:00,57.85,28.448,33.238,29.398000000000003 -2020-07-05 09:30:00,60.75,32.537,33.238,29.398000000000003 -2020-07-05 09:45:00,58.0,37.027,33.238,29.398000000000003 -2020-07-05 10:00:00,61.54,35.167,34.22,29.398000000000003 -2020-07-05 10:15:00,62.53,37.032,34.22,29.398000000000003 -2020-07-05 10:30:00,60.64,37.488,34.22,29.398000000000003 -2020-07-05 10:45:00,64.41,39.474000000000004,34.22,29.398000000000003 -2020-07-05 11:00:00,63.97,36.913000000000004,36.298,29.398000000000003 -2020-07-05 11:15:00,62.55,37.61,36.298,29.398000000000003 -2020-07-05 11:30:00,61.59,39.439,36.298,29.398000000000003 -2020-07-05 11:45:00,61.53,40.755,36.298,29.398000000000003 -2020-07-05 12:00:00,58.57,37.967,33.52,29.398000000000003 -2020-07-05 12:15:00,59.34,36.952,33.52,29.398000000000003 -2020-07-05 12:30:00,56.89,36.068000000000005,33.52,29.398000000000003 -2020-07-05 12:45:00,56.14,36.559,33.52,29.398000000000003 -2020-07-05 13:00:00,56.09,36.25,30.12,29.398000000000003 -2020-07-05 13:15:00,58.54,36.499,30.12,29.398000000000003 -2020-07-05 13:30:00,53.91,34.625,30.12,29.398000000000003 -2020-07-05 13:45:00,54.48,34.336999999999996,30.12,29.398000000000003 -2020-07-05 14:00:00,53.1,36.564,27.233,29.398000000000003 -2020-07-05 14:15:00,52.56,35.042,27.233,29.398000000000003 -2020-07-05 14:30:00,53.24,33.861999999999995,27.233,29.398000000000003 -2020-07-05 14:45:00,53.16,33.063,27.233,29.398000000000003 -2020-07-05 15:00:00,52.17,35.689,27.468000000000004,29.398000000000003 -2020-07-05 15:15:00,53.08,32.861999999999995,27.468000000000004,29.398000000000003 -2020-07-05 15:30:00,52.72,30.621,27.468000000000004,29.398000000000003 -2020-07-05 15:45:00,52.87,28.991999999999997,27.468000000000004,29.398000000000003 -2020-07-05 16:00:00,58.7,31.435,30.8,29.398000000000003 -2020-07-05 16:15:00,59.41,30.967,30.8,29.398000000000003 -2020-07-05 16:30:00,58.69,31.108,30.8,29.398000000000003 -2020-07-05 16:45:00,63.11,27.015,30.8,29.398000000000003 -2020-07-05 17:00:00,67.05,31.717,37.806,29.398000000000003 -2020-07-05 17:15:00,64.23,30.783,37.806,29.398000000000003 -2020-07-05 17:30:00,65.25,30.528000000000002,37.806,29.398000000000003 -2020-07-05 17:45:00,68.4,29.974,37.806,29.398000000000003 -2020-07-05 18:00:00,72.02,35.104,40.766,29.398000000000003 -2020-07-05 18:15:00,71.05,35.239000000000004,40.766,29.398000000000003 -2020-07-05 18:30:00,71.03,34.275999999999996,40.766,29.398000000000003 -2020-07-05 18:45:00,71.01,34.335,40.766,29.398000000000003 -2020-07-05 19:00:00,71.74,36.906,41.163000000000004,29.398000000000003 -2020-07-05 19:15:00,70.17,34.306999999999995,41.163000000000004,29.398000000000003 -2020-07-05 19:30:00,70.19,33.819,41.163000000000004,29.398000000000003 -2020-07-05 19:45:00,70.61,33.332,41.163000000000004,29.398000000000003 -2020-07-05 20:00:00,70.45,31.316,39.885999999999996,29.398000000000003 -2020-07-05 20:15:00,71.14,30.765,39.885999999999996,29.398000000000003 -2020-07-05 20:30:00,75.63,30.69,39.885999999999996,29.398000000000003 -2020-07-05 20:45:00,75.49,30.666,39.885999999999996,29.398000000000003 -2020-07-05 21:00:00,75.9,28.771,38.900999999999996,29.398000000000003 -2020-07-05 21:15:00,76.48,31.448,38.900999999999996,29.398000000000003 -2020-07-05 21:30:00,74.17,31.642,38.900999999999996,29.398000000000003 -2020-07-05 21:45:00,73.12,32.73,38.900999999999996,29.398000000000003 -2020-07-05 22:00:00,70.17,31.783,39.806999999999995,29.398000000000003 -2020-07-05 22:15:00,70.35,32.641999999999996,39.806999999999995,29.398000000000003 -2020-07-05 22:30:00,68.44,32.145,39.806999999999995,29.398000000000003 -2020-07-05 22:45:00,68.89,28.736,39.806999999999995,29.398000000000003 -2020-07-05 23:00:00,66.69,26.328000000000003,35.564,29.398000000000003 -2020-07-05 23:15:00,65.66,24.987,35.564,29.398000000000003 -2020-07-05 23:30:00,64.82,23.948,35.564,29.398000000000003 -2020-07-05 23:45:00,63.72,23.485,35.564,29.398000000000003 -2020-07-06 00:00:00,62.93,21.053,36.578,29.509 -2020-07-06 00:15:00,62.05,21.09,36.578,29.509 -2020-07-06 00:30:00,61.97,19.039,36.578,29.509 -2020-07-06 00:45:00,61.79,18.081,36.578,29.509 -2020-07-06 01:00:00,61.64,18.625,35.292,29.509 -2020-07-06 01:15:00,60.91,17.667,35.292,29.509 -2020-07-06 01:30:00,60.67,16.254,35.292,29.509 -2020-07-06 01:45:00,59.95,16.808,35.292,29.509 -2020-07-06 02:00:00,61.3,17.049,34.319,29.509 -2020-07-06 02:15:00,61.83,14.513,34.319,29.509 -2020-07-06 02:30:00,62.07,16.898,34.319,29.509 -2020-07-06 02:45:00,62.17,17.285,34.319,29.509 -2020-07-06 03:00:00,65.43,19.002,33.13,29.509 -2020-07-06 03:15:00,64.03,17.215,33.13,29.509 -2020-07-06 03:30:00,65.09,16.549,33.13,29.509 -2020-07-06 03:45:00,65.84,16.95,33.13,29.509 -2020-07-06 04:00:00,67.57,23.045,33.851,29.509 -2020-07-06 04:15:00,68.87,29.180999999999997,33.851,29.509 -2020-07-06 04:30:00,71.48,26.636999999999997,33.851,29.509 -2020-07-06 04:45:00,75.03,26.21,33.851,29.509 -2020-07-06 05:00:00,80.19,37.529,38.718,29.509 -2020-07-06 05:15:00,84.78,44.1,38.718,29.509 -2020-07-06 05:30:00,88.76,37.885,38.718,29.509 -2020-07-06 05:45:00,91.27,36.103,38.718,29.509 -2020-07-06 06:00:00,94.97,35.835,51.648999999999994,29.509 -2020-07-06 06:15:00,100.81,35.295,51.648999999999994,29.509 -2020-07-06 06:30:00,107.42,34.845,51.648999999999994,29.509 -2020-07-06 06:45:00,109.2,37.764,51.648999999999994,29.509 -2020-07-06 07:00:00,100.07,37.709,60.159,29.509 -2020-07-06 07:15:00,99.42,38.38,60.159,29.509 -2020-07-06 07:30:00,109.47,36.021,60.159,29.509 -2020-07-06 07:45:00,108.74,37.223,60.159,29.509 -2020-07-06 08:00:00,103.48,33.216,53.8,29.509 -2020-07-06 08:15:00,101.9,36.735,53.8,29.509 -2020-07-06 08:30:00,102.67,37.72,53.8,29.509 -2020-07-06 08:45:00,102.51,41.309,53.8,29.509 -2020-07-06 09:00:00,108.05,34.997,50.583,29.509 -2020-07-06 09:15:00,108.16,34.559,50.583,29.509 -2020-07-06 09:30:00,103.79,37.734,50.583,29.509 -2020-07-06 09:45:00,100.1,39.804,50.583,29.509 -2020-07-06 10:00:00,100.26,38.406,49.11600000000001,29.509 -2020-07-06 10:15:00,98.97,40.135999999999996,49.11600000000001,29.509 -2020-07-06 10:30:00,101.45,40.166,49.11600000000001,29.509 -2020-07-06 10:45:00,105.24,40.429,49.11600000000001,29.509 -2020-07-06 11:00:00,115.14,38.292,49.056000000000004,29.509 -2020-07-06 11:15:00,114.12,39.161,49.056000000000004,29.509 -2020-07-06 11:30:00,109.51,41.618,49.056000000000004,29.509 -2020-07-06 11:45:00,107.16,43.486999999999995,49.056000000000004,29.509 -2020-07-06 12:00:00,98.95,38.736,47.227,29.509 -2020-07-06 12:15:00,97.34,37.839,47.227,29.509 -2020-07-06 12:30:00,94.65,35.788000000000004,47.227,29.509 -2020-07-06 12:45:00,94.35,36.159,47.227,29.509 -2020-07-06 13:00:00,95.56,36.779,47.006,29.509 -2020-07-06 13:15:00,94.55,36.189,47.006,29.509 -2020-07-06 13:30:00,93.02,34.541,47.006,29.509 -2020-07-06 13:45:00,98.7,35.205999999999996,47.006,29.509 -2020-07-06 14:00:00,95.14,36.535,47.19,29.509 -2020-07-06 14:15:00,91.16,35.689,47.19,29.509 -2020-07-06 14:30:00,89.41,34.361999999999995,47.19,29.509 -2020-07-06 14:45:00,88.76,35.762,47.19,29.509 -2020-07-06 15:00:00,87.58,37.905,47.846000000000004,29.509 -2020-07-06 15:15:00,88.49,34.553000000000004,47.846000000000004,29.509 -2020-07-06 15:30:00,88.04,33.184,47.846000000000004,29.509 -2020-07-06 15:45:00,88.3,31.066999999999997,47.846000000000004,29.509 -2020-07-06 16:00:00,88.8,34.711999999999996,49.641000000000005,29.509 -2020-07-06 16:15:00,90.56,34.364000000000004,49.641000000000005,29.509 -2020-07-06 16:30:00,93.03,33.887,49.641000000000005,29.509 -2020-07-06 16:45:00,95.66,29.892,49.641000000000005,29.509 -2020-07-06 17:00:00,98.75,33.438,54.133,29.509 -2020-07-06 17:15:00,99.58,32.971,54.133,29.509 -2020-07-06 17:30:00,99.52,32.346,54.133,29.509 -2020-07-06 17:45:00,99.38,31.47,54.133,29.509 -2020-07-06 18:00:00,99.13,35.501999999999995,53.761,29.509 -2020-07-06 18:15:00,101.41,33.836999999999996,53.761,29.509 -2020-07-06 18:30:00,101.33,32.049,53.761,29.509 -2020-07-06 18:45:00,99.47,35.366,53.761,29.509 -2020-07-06 19:00:00,96.1,37.764,53.923,29.509 -2020-07-06 19:15:00,92.71,36.589,53.923,29.509 -2020-07-06 19:30:00,92.02,35.689,53.923,29.509 -2020-07-06 19:45:00,92.82,34.603,53.923,29.509 -2020-07-06 20:00:00,91.58,31.381,58.786,29.509 -2020-07-06 20:15:00,89.83,32.415,58.786,29.509 -2020-07-06 20:30:00,90.8,32.982,58.786,29.509 -2020-07-06 20:45:00,90.9,33.107,58.786,29.509 -2020-07-06 21:00:00,88.74,30.525,54.591,29.509 -2020-07-06 21:15:00,87.51,33.721,54.591,29.509 -2020-07-06 21:30:00,85.2,34.366,54.591,29.509 -2020-07-06 21:45:00,83.29,35.247,54.591,29.509 -2020-07-06 22:00:00,80.54,32.321999999999996,51.551,29.509 -2020-07-06 22:15:00,79.21,35.305,51.551,29.509 -2020-07-06 22:30:00,78.44,30.779,51.551,29.509 -2020-07-06 22:45:00,76.79,27.581999999999997,51.551,29.509 -2020-07-06 23:00:00,75.39,25.141,44.716,29.509 -2020-07-06 23:15:00,74.53,21.991,44.716,29.509 -2020-07-06 23:30:00,74.57,20.794,44.716,29.509 -2020-07-06 23:45:00,72.99,19.643,44.716,29.509 -2020-07-07 00:00:00,71.53,18.721,43.01,29.509 -2020-07-07 00:15:00,70.84,19.582,43.01,29.509 -2020-07-07 00:30:00,71.39,18.327,43.01,29.509 -2020-07-07 00:45:00,70.56,18.253,43.01,29.509 -2020-07-07 01:00:00,71.2,18.25,40.687,29.509 -2020-07-07 01:15:00,70.9,17.422,40.687,29.509 -2020-07-07 01:30:00,70.33,15.867,40.687,29.509 -2020-07-07 01:45:00,70.39,15.862,40.687,29.509 -2020-07-07 02:00:00,70.97,15.605,39.554,29.509 -2020-07-07 02:15:00,70.84,14.513,39.554,29.509 -2020-07-07 02:30:00,77.92,16.289,39.554,29.509 -2020-07-07 02:45:00,78.65,17.02,39.554,29.509 -2020-07-07 03:00:00,75.67,18.214000000000002,38.958,29.509 -2020-07-07 03:15:00,70.77,17.46,38.958,29.509 -2020-07-07 03:30:00,74.81,16.742,38.958,29.509 -2020-07-07 03:45:00,74.03,15.989,38.958,29.509 -2020-07-07 04:00:00,77.7,20.735,39.783,29.509 -2020-07-07 04:15:00,82.93,26.872,39.783,29.509 -2020-07-07 04:30:00,86.8,24.212,39.783,29.509 -2020-07-07 04:45:00,87.2,24.226999999999997,39.783,29.509 -2020-07-07 05:00:00,87.99,36.885999999999996,42.281000000000006,29.509 -2020-07-07 05:15:00,95.27,44.023999999999994,42.281000000000006,29.509 -2020-07-07 05:30:00,96.03,38.126999999999995,42.281000000000006,29.509 -2020-07-07 05:45:00,100.96,35.614000000000004,42.281000000000006,29.509 -2020-07-07 06:00:00,111.3,36.497,50.801,29.509 -2020-07-07 06:15:00,114.63,36.082,50.801,29.509 -2020-07-07 06:30:00,116.56,35.349000000000004,50.801,29.509 -2020-07-07 06:45:00,116.13,37.391,50.801,29.509 -2020-07-07 07:00:00,116.59,37.498000000000005,60.202,29.509 -2020-07-07 07:15:00,121.92,37.93,60.202,29.509 -2020-07-07 07:30:00,124.36,35.623000000000005,60.202,29.509 -2020-07-07 07:45:00,123.71,35.817,60.202,29.509 -2020-07-07 08:00:00,119.38,31.735,54.461000000000006,29.509 -2020-07-07 08:15:00,124.37,34.859,54.461000000000006,29.509 -2020-07-07 08:30:00,128.67,36.022,54.461000000000006,29.509 -2020-07-07 08:45:00,130.1,38.647,54.461000000000006,29.509 -2020-07-07 09:00:00,129.85,32.748000000000005,50.753,29.509 -2020-07-07 09:15:00,128.0,32.054,50.753,29.509 -2020-07-07 09:30:00,130.61,35.906,50.753,29.509 -2020-07-07 09:45:00,129.99,39.417,50.753,29.509 -2020-07-07 10:00:00,122.45,36.611999999999995,49.703,29.509 -2020-07-07 10:15:00,120.63,38.272,49.703,29.509 -2020-07-07 10:30:00,122.78,38.313,49.703,29.509 -2020-07-07 10:45:00,123.45,39.629,49.703,29.509 -2020-07-07 11:00:00,128.68,37.385,49.42100000000001,29.509 -2020-07-07 11:15:00,125.65,38.714,49.42100000000001,29.509 -2020-07-07 11:30:00,122.76,40.018,49.42100000000001,29.509 -2020-07-07 11:45:00,121.95,41.35,49.42100000000001,29.509 -2020-07-07 12:00:00,118.98,36.525999999999996,47.155,29.509 -2020-07-07 12:15:00,125.09,36.022,47.155,29.509 -2020-07-07 12:30:00,122.87,34.824,47.155,29.509 -2020-07-07 12:45:00,119.92,35.959,47.155,29.509 -2020-07-07 13:00:00,121.51,36.201,47.515,29.509 -2020-07-07 13:15:00,124.02,37.568000000000005,47.515,29.509 -2020-07-07 13:30:00,121.3,35.8,47.515,29.509 -2020-07-07 13:45:00,120.45,35.42,47.515,29.509 -2020-07-07 14:00:00,111.95,37.211,47.575,29.509 -2020-07-07 14:15:00,112.15,36.14,47.575,29.509 -2020-07-07 14:30:00,118.73,35.104,47.575,29.509 -2020-07-07 14:45:00,117.88,35.671,47.575,29.509 -2020-07-07 15:00:00,112.52,37.69,48.903,29.509 -2020-07-07 15:15:00,106.84,35.296,48.903,29.509 -2020-07-07 15:30:00,107.4,33.681999999999995,48.903,29.509 -2020-07-07 15:45:00,99.77,31.961,48.903,29.509 -2020-07-07 16:00:00,96.93,34.83,50.218999999999994,29.509 -2020-07-07 16:15:00,106.09,34.543,50.218999999999994,29.509 -2020-07-07 16:30:00,106.41,33.641,50.218999999999994,29.509 -2020-07-07 16:45:00,104.59,30.386999999999997,50.218999999999994,29.509 -2020-07-07 17:00:00,99.96,34.125,55.396,29.509 -2020-07-07 17:15:00,103.8,34.11,55.396,29.509 -2020-07-07 17:30:00,100.99,32.974000000000004,55.396,29.509 -2020-07-07 17:45:00,102.8,31.754,55.396,29.509 -2020-07-07 18:00:00,108.74,34.804,55.583999999999996,29.509 -2020-07-07 18:15:00,108.95,34.722,55.583999999999996,29.509 -2020-07-07 18:30:00,107.59,32.679,55.583999999999996,29.509 -2020-07-07 18:45:00,103.26,35.739000000000004,55.583999999999996,29.509 -2020-07-07 19:00:00,99.07,36.917,56.071000000000005,29.509 -2020-07-07 19:15:00,94.57,35.938,56.071000000000005,29.509 -2020-07-07 19:30:00,92.99,34.843,56.071000000000005,29.509 -2020-07-07 19:45:00,92.6,34.101,56.071000000000005,29.509 -2020-07-07 20:00:00,91.59,31.27,61.55,29.509 -2020-07-07 20:15:00,90.41,30.826999999999998,61.55,29.509 -2020-07-07 20:30:00,90.06,31.373,61.55,29.509 -2020-07-07 20:45:00,90.65,31.985,61.55,29.509 -2020-07-07 21:00:00,90.29,30.355999999999998,55.94,29.509 -2020-07-07 21:15:00,88.11,31.968000000000004,55.94,29.509 -2020-07-07 21:30:00,85.72,32.819,55.94,29.509 -2020-07-07 21:45:00,84.05,33.887,55.94,29.509 -2020-07-07 22:00:00,82.01,31.055,52.857,29.509 -2020-07-07 22:15:00,79.35,33.702,52.857,29.509 -2020-07-07 22:30:00,77.27,29.464000000000002,52.857,29.509 -2020-07-07 22:45:00,75.9,26.239,52.857,29.509 -2020-07-07 23:00:00,73.88,23.0,46.04,29.509 -2020-07-07 23:15:00,72.06,21.55,46.04,29.509 -2020-07-07 23:30:00,71.73,20.384,46.04,29.509 -2020-07-07 23:45:00,70.42,19.437,46.04,29.509 -2020-07-08 00:00:00,68.87,18.723,42.195,29.509 -2020-07-08 00:15:00,68.28,19.582,42.195,29.509 -2020-07-08 00:30:00,67.17,18.331,42.195,29.509 -2020-07-08 00:45:00,67.5,18.262,42.195,29.509 -2020-07-08 01:00:00,68.65,18.267,38.82,29.509 -2020-07-08 01:15:00,68.23,17.430999999999997,38.82,29.509 -2020-07-08 01:30:00,67.33,15.877,38.82,29.509 -2020-07-08 01:45:00,67.32,15.865,38.82,29.509 -2020-07-08 02:00:00,67.95,15.613,37.023,29.509 -2020-07-08 02:15:00,67.93,14.513,37.023,29.509 -2020-07-08 02:30:00,75.12,16.292,37.023,29.509 -2020-07-08 02:45:00,73.61,17.028,37.023,29.509 -2020-07-08 03:00:00,77.07,18.215,36.818000000000005,29.509 -2020-07-08 03:15:00,72.12,17.471,36.818000000000005,29.509 -2020-07-08 03:30:00,73.91,16.761,36.818000000000005,29.509 -2020-07-08 03:45:00,71.79,16.022000000000002,36.818000000000005,29.509 -2020-07-08 04:00:00,77.39,20.733,37.495,29.509 -2020-07-08 04:15:00,82.0,26.840999999999998,37.495,29.509 -2020-07-08 04:30:00,84.87,24.173000000000002,37.495,29.509 -2020-07-08 04:45:00,83.56,24.188000000000002,37.495,29.509 -2020-07-08 05:00:00,86.92,36.789,39.858000000000004,29.509 -2020-07-08 05:15:00,93.46,43.852,39.858000000000004,29.509 -2020-07-08 05:30:00,93.59,38.008,39.858000000000004,29.509 -2020-07-08 05:45:00,96.52,35.519,39.858000000000004,29.509 -2020-07-08 06:00:00,99.68,36.399,52.867,29.509 -2020-07-08 06:15:00,102.4,35.982,52.867,29.509 -2020-07-08 06:30:00,108.54,35.269,52.867,29.509 -2020-07-08 06:45:00,113.47,37.338,52.867,29.509 -2020-07-08 07:00:00,108.0,37.436,66.061,29.509 -2020-07-08 07:15:00,102.54,37.89,66.061,29.509 -2020-07-08 07:30:00,100.01,35.586,66.061,29.509 -2020-07-08 07:45:00,101.07,35.809,66.061,29.509 -2020-07-08 08:00:00,108.39,31.736,58.532,29.509 -2020-07-08 08:15:00,116.1,34.872,58.532,29.509 -2020-07-08 08:30:00,117.34,36.025,58.532,29.509 -2020-07-08 08:45:00,115.72,38.645,58.532,29.509 -2020-07-08 09:00:00,111.76,32.743,56.047,29.509 -2020-07-08 09:15:00,108.9,32.047,56.047,29.509 -2020-07-08 09:30:00,108.08,35.893,56.047,29.509 -2020-07-08 09:45:00,116.56,39.406,56.047,29.509 -2020-07-08 10:00:00,120.29,36.609,53.823,29.509 -2020-07-08 10:15:00,118.95,38.266999999999996,53.823,29.509 -2020-07-08 10:30:00,112.11,38.305,53.823,29.509 -2020-07-08 10:45:00,109.74,39.623000000000005,53.823,29.509 -2020-07-08 11:00:00,109.06,37.376999999999995,54.184,29.509 -2020-07-08 11:15:00,108.4,38.705999999999996,54.184,29.509 -2020-07-08 11:30:00,105.6,40.0,54.184,29.509 -2020-07-08 11:45:00,107.2,41.326,54.184,29.509 -2020-07-08 12:00:00,114.53,36.522,52.628,29.509 -2020-07-08 12:15:00,112.75,36.016,52.628,29.509 -2020-07-08 12:30:00,101.99,34.808,52.628,29.509 -2020-07-08 12:45:00,99.23,35.94,52.628,29.509 -2020-07-08 13:00:00,100.2,36.167,52.31,29.509 -2020-07-08 13:15:00,102.73,37.527,52.31,29.509 -2020-07-08 13:30:00,102.61,35.765,52.31,29.509 -2020-07-08 13:45:00,102.47,35.391999999999996,52.31,29.509 -2020-07-08 14:00:00,116.5,37.185,52.278999999999996,29.509 -2020-07-08 14:15:00,112.73,36.115,52.278999999999996,29.509 -2020-07-08 14:30:00,108.85,35.069,52.278999999999996,29.509 -2020-07-08 14:45:00,109.45,35.644,52.278999999999996,29.509 -2020-07-08 15:00:00,101.37,37.671,53.306999999999995,29.509 -2020-07-08 15:15:00,100.94,35.272,53.306999999999995,29.509 -2020-07-08 15:30:00,99.62,33.659,53.306999999999995,29.509 -2020-07-08 15:45:00,97.35,31.93,53.306999999999995,29.509 -2020-07-08 16:00:00,93.45,34.812,55.358999999999995,29.509 -2020-07-08 16:15:00,94.89,34.528,55.358999999999995,29.509 -2020-07-08 16:30:00,98.99,33.643,55.358999999999995,29.509 -2020-07-08 16:45:00,99.62,30.389,55.358999999999995,29.509 -2020-07-08 17:00:00,98.93,34.132,59.211999999999996,29.509 -2020-07-08 17:15:00,98.18,34.126999999999995,59.211999999999996,29.509 -2020-07-08 17:30:00,98.72,32.994,59.211999999999996,29.509 -2020-07-08 17:45:00,100.38,31.776999999999997,59.211999999999996,29.509 -2020-07-08 18:00:00,99.58,34.832,60.403999999999996,29.509 -2020-07-08 18:15:00,99.0,34.734,60.403999999999996,29.509 -2020-07-08 18:30:00,100.18,32.691,60.403999999999996,29.509 -2020-07-08 18:45:00,98.99,35.751999999999995,60.403999999999996,29.509 -2020-07-08 19:00:00,96.37,36.931999999999995,60.993,29.509 -2020-07-08 19:15:00,92.43,35.945,60.993,29.509 -2020-07-08 19:30:00,91.2,34.844,60.993,29.509 -2020-07-08 19:45:00,90.88,34.098,60.993,29.509 -2020-07-08 20:00:00,90.29,31.255,66.6,29.509 -2020-07-08 20:15:00,88.95,30.811,66.6,29.509 -2020-07-08 20:30:00,89.13,31.355999999999998,66.6,29.509 -2020-07-08 20:45:00,91.03,31.976999999999997,66.6,29.509 -2020-07-08 21:00:00,89.33,30.351999999999997,59.855,29.509 -2020-07-08 21:15:00,87.63,31.965999999999998,59.855,29.509 -2020-07-08 21:30:00,85.13,32.796,59.855,29.509 -2020-07-08 21:45:00,83.76,33.858000000000004,59.855,29.509 -2020-07-08 22:00:00,81.36,31.031999999999996,54.942,29.509 -2020-07-08 22:15:00,79.43,33.68,54.942,29.509 -2020-07-08 22:30:00,76.01,29.427,54.942,29.509 -2020-07-08 22:45:00,74.2,26.193,54.942,29.509 -2020-07-08 23:00:00,74.17,22.959,46.056000000000004,29.509 -2020-07-08 23:15:00,72.84,21.531999999999996,46.056000000000004,29.509 -2020-07-08 23:30:00,72.63,20.379,46.056000000000004,29.509 -2020-07-08 23:45:00,72.27,19.425,46.056000000000004,29.509 -2020-07-09 00:00:00,70.77,18.729,40.859,29.509 -2020-07-09 00:15:00,69.68,19.587,40.859,29.509 -2020-07-09 00:30:00,68.62,18.339000000000002,40.859,29.509 -2020-07-09 00:45:00,68.26,18.276,40.859,29.509 -2020-07-09 01:00:00,68.62,18.287,39.06,29.509 -2020-07-09 01:15:00,67.79,17.444000000000003,39.06,29.509 -2020-07-09 01:30:00,66.52,15.892000000000001,39.06,29.509 -2020-07-09 01:45:00,67.76,15.872,39.06,29.509 -2020-07-09 02:00:00,68.72,15.626,37.592,29.509 -2020-07-09 02:15:00,67.64,14.513,37.592,29.509 -2020-07-09 02:30:00,67.33,16.301,37.592,29.509 -2020-07-09 02:45:00,67.89,17.039,37.592,29.509 -2020-07-09 03:00:00,69.13,18.219,37.416,29.509 -2020-07-09 03:15:00,70.24,17.485,37.416,29.509 -2020-07-09 03:30:00,71.26,16.783,37.416,29.509 -2020-07-09 03:45:00,72.08,16.06,37.416,29.509 -2020-07-09 04:00:00,76.24,20.737,38.176,29.509 -2020-07-09 04:15:00,75.02,26.815,38.176,29.509 -2020-07-09 04:30:00,77.62,24.14,38.176,29.509 -2020-07-09 04:45:00,80.21,24.154,38.176,29.509 -2020-07-09 05:00:00,85.53,36.703,41.203,29.509 -2020-07-09 05:15:00,89.78,43.691,41.203,29.509 -2020-07-09 05:30:00,93.38,37.9,41.203,29.509 -2020-07-09 05:45:00,101.99,35.434,41.203,29.509 -2020-07-09 06:00:00,106.23,36.31,51.09,29.509 -2020-07-09 06:15:00,109.0,35.891999999999996,51.09,29.509 -2020-07-09 06:30:00,106.78,35.196999999999996,51.09,29.509 -2020-07-09 06:45:00,104.81,37.294000000000004,51.09,29.509 -2020-07-09 07:00:00,106.36,37.384,63.541000000000004,29.509 -2020-07-09 07:15:00,110.69,37.859,63.541000000000004,29.509 -2020-07-09 07:30:00,112.06,35.56,63.541000000000004,29.509 -2020-07-09 07:45:00,118.5,35.809,63.541000000000004,29.509 -2020-07-09 08:00:00,121.66,31.746,55.65,29.509 -2020-07-09 08:15:00,122.22,34.893,55.65,29.509 -2020-07-09 08:30:00,118.81,36.037,55.65,29.509 -2020-07-09 08:45:00,116.9,38.649,55.65,29.509 -2020-07-09 09:00:00,117.8,32.743,51.833999999999996,29.509 -2020-07-09 09:15:00,120.31,32.048,51.833999999999996,29.509 -2020-07-09 09:30:00,120.69,35.887,51.833999999999996,29.509 -2020-07-09 09:45:00,124.35,39.402,51.833999999999996,29.509 -2020-07-09 10:00:00,130.54,36.613,49.70399999999999,29.509 -2020-07-09 10:15:00,131.59,38.268,49.70399999999999,29.509 -2020-07-09 10:30:00,127.98,38.302,49.70399999999999,29.509 -2020-07-09 10:45:00,122.86,39.621,49.70399999999999,29.509 -2020-07-09 11:00:00,122.53,37.374,48.593999999999994,29.509 -2020-07-09 11:15:00,121.63,38.705,48.593999999999994,29.509 -2020-07-09 11:30:00,121.85,39.986,48.593999999999994,29.509 -2020-07-09 11:45:00,120.39,41.306999999999995,48.593999999999994,29.509 -2020-07-09 12:00:00,120.74,36.523,46.275,29.509 -2020-07-09 12:15:00,120.27,36.015,46.275,29.509 -2020-07-09 12:30:00,117.63,34.798,46.275,29.509 -2020-07-09 12:45:00,114.26,35.927,46.275,29.509 -2020-07-09 13:00:00,109.73,36.135999999999996,45.803000000000004,29.509 -2020-07-09 13:15:00,108.7,37.491,45.803000000000004,29.509 -2020-07-09 13:30:00,113.78,35.734,45.803000000000004,29.509 -2020-07-09 13:45:00,117.0,35.368,45.803000000000004,29.509 -2020-07-09 14:00:00,110.72,37.163000000000004,46.251999999999995,29.509 -2020-07-09 14:15:00,111.27,36.095,46.251999999999995,29.509 -2020-07-09 14:30:00,112.08,35.039,46.251999999999995,29.509 -2020-07-09 14:45:00,109.67,35.62,46.251999999999995,29.509 -2020-07-09 15:00:00,109.08,37.655,48.309,29.509 -2020-07-09 15:15:00,104.89,35.251,48.309,29.509 -2020-07-09 15:30:00,100.7,33.638000000000005,48.309,29.509 -2020-07-09 15:45:00,104.1,31.903000000000002,48.309,29.509 -2020-07-09 16:00:00,103.6,34.797,49.681999999999995,29.509 -2020-07-09 16:15:00,105.47,34.515,49.681999999999995,29.509 -2020-07-09 16:30:00,100.69,33.648,49.681999999999995,29.509 -2020-07-09 16:45:00,101.97,30.396,49.681999999999995,29.509 -2020-07-09 17:00:00,103.65,34.143,53.086000000000006,29.509 -2020-07-09 17:15:00,103.74,34.149,53.086000000000006,29.509 -2020-07-09 17:30:00,105.78,33.018,53.086000000000006,29.509 -2020-07-09 17:45:00,108.82,31.804000000000002,53.086000000000006,29.509 -2020-07-09 18:00:00,108.39,34.865,54.038999999999994,29.509 -2020-07-09 18:15:00,108.03,34.75,54.038999999999994,29.509 -2020-07-09 18:30:00,106.59,32.711,54.038999999999994,29.509 -2020-07-09 18:45:00,103.0,35.77,54.038999999999994,29.509 -2020-07-09 19:00:00,100.88,36.952,53.408,29.509 -2020-07-09 19:15:00,97.96,35.959,53.408,29.509 -2020-07-09 19:30:00,94.18,34.851,53.408,29.509 -2020-07-09 19:45:00,92.67,34.101,53.408,29.509 -2020-07-09 20:00:00,90.99,31.249000000000002,55.309,29.509 -2020-07-09 20:15:00,90.23,30.802,55.309,29.509 -2020-07-09 20:30:00,90.8,31.345,55.309,29.509 -2020-07-09 20:45:00,92.1,31.975,55.309,29.509 -2020-07-09 21:00:00,89.34,30.354,51.585,29.509 -2020-07-09 21:15:00,87.34,31.968000000000004,51.585,29.509 -2020-07-09 21:30:00,84.56,32.778,51.585,29.509 -2020-07-09 21:45:00,83.79,33.833,51.585,29.509 -2020-07-09 22:00:00,80.79,31.013,48.006,29.509 -2020-07-09 22:15:00,78.88,33.661,48.006,29.509 -2020-07-09 22:30:00,76.76,29.392,48.006,29.509 -2020-07-09 22:45:00,75.3,26.151999999999997,48.006,29.509 -2020-07-09 23:00:00,73.05,22.921,42.309,29.509 -2020-07-09 23:15:00,72.92,21.516,42.309,29.509 -2020-07-09 23:30:00,71.81,20.377,42.309,29.509 -2020-07-09 23:45:00,70.78,19.418,42.309,29.509 -2020-07-10 00:00:00,75.87,16.908,39.649,29.509 -2020-07-10 00:15:00,78.17,17.980999999999998,39.649,29.509 -2020-07-10 00:30:00,75.85,17.027,39.649,29.509 -2020-07-10 00:45:00,71.62,17.408,39.649,29.509 -2020-07-10 01:00:00,69.81,17.038,37.744,29.509 -2020-07-10 01:15:00,68.97,15.522,37.744,29.509 -2020-07-10 01:30:00,67.92,14.729000000000001,37.744,29.509 -2020-07-10 01:45:00,69.22,14.513,37.744,29.509 -2020-07-10 02:00:00,68.97,15.165999999999999,36.965,29.509 -2020-07-10 02:15:00,71.25,14.513,36.965,29.509 -2020-07-10 02:30:00,75.07,16.63,36.965,29.509 -2020-07-10 02:45:00,74.85,16.655,36.965,29.509 -2020-07-10 03:00:00,75.76,18.677,37.678000000000004,29.509 -2020-07-10 03:15:00,71.23,16.657,37.678000000000004,29.509 -2020-07-10 03:30:00,77.96,15.714,37.678000000000004,29.509 -2020-07-10 03:45:00,73.99,15.908,37.678000000000004,29.509 -2020-07-10 04:00:00,73.54,20.688000000000002,38.591,29.509 -2020-07-10 04:15:00,74.61,25.119,38.591,29.509 -2020-07-10 04:30:00,77.28,23.421,38.591,29.509 -2020-07-10 04:45:00,79.7,22.803,38.591,29.509 -2020-07-10 05:00:00,86.23,34.849000000000004,40.666,29.509 -2020-07-10 05:15:00,91.4,42.71,40.666,29.509 -2020-07-10 05:30:00,95.84,37.144,40.666,29.509 -2020-07-10 05:45:00,103.23,34.24,40.666,29.509 -2020-07-10 06:00:00,106.94,35.33,51.784,29.509 -2020-07-10 06:15:00,106.98,35.125,51.784,29.509 -2020-07-10 06:30:00,107.3,34.42,51.784,29.509 -2020-07-10 06:45:00,110.82,36.363,51.784,29.509 -2020-07-10 07:00:00,103.93,37.14,61.383,29.509 -2020-07-10 07:15:00,103.93,38.543,61.383,29.509 -2020-07-10 07:30:00,100.62,34.223,61.383,29.509 -2020-07-10 07:45:00,107.12,34.312,61.383,29.509 -2020-07-10 08:00:00,114.53,31.116999999999997,55.272,29.509 -2020-07-10 08:15:00,110.12,34.992,55.272,29.509 -2020-07-10 08:30:00,106.93,35.983000000000004,55.272,29.509 -2020-07-10 08:45:00,109.04,38.505,55.272,29.509 -2020-07-10 09:00:00,114.76,30.16,53.506,29.509 -2020-07-10 09:15:00,113.51,31.453000000000003,53.506,29.509 -2020-07-10 09:30:00,110.89,34.580999999999996,53.506,29.509 -2020-07-10 09:45:00,107.02,38.509,53.506,29.509 -2020-07-10 10:00:00,113.21,35.611,51.363,29.509 -2020-07-10 10:15:00,111.84,36.994,51.363,29.509 -2020-07-10 10:30:00,112.42,37.61,51.363,29.509 -2020-07-10 10:45:00,110.71,38.852,51.363,29.509 -2020-07-10 11:00:00,112.67,36.874,51.043,29.509 -2020-07-10 11:15:00,113.11,37.103,51.043,29.509 -2020-07-10 11:30:00,107.88,37.903,51.043,29.509 -2020-07-10 11:45:00,109.91,38.202,51.043,29.509 -2020-07-10 12:00:00,111.54,33.830999999999996,47.52,29.509 -2020-07-10 12:15:00,112.77,32.756,47.52,29.509 -2020-07-10 12:30:00,109.24,31.646,47.52,29.509 -2020-07-10 12:45:00,105.69,31.91,47.52,29.509 -2020-07-10 13:00:00,106.61,32.681,45.494,29.509 -2020-07-10 13:15:00,112.86,34.179,45.494,29.509 -2020-07-10 13:30:00,115.59,33.268,45.494,29.509 -2020-07-10 13:45:00,109.93,33.236999999999995,45.494,29.509 -2020-07-10 14:00:00,105.89,34.242,43.883,29.509 -2020-07-10 14:15:00,101.49,33.646,43.883,29.509 -2020-07-10 14:30:00,95.86,34.148,43.883,29.509 -2020-07-10 14:45:00,97.16,33.991,43.883,29.509 -2020-07-10 15:00:00,94.55,35.974000000000004,45.714,29.509 -2020-07-10 15:15:00,89.18,33.336999999999996,45.714,29.509 -2020-07-10 15:30:00,91.05,31.205,45.714,29.509 -2020-07-10 15:45:00,100.25,30.261999999999997,45.714,29.509 -2020-07-10 16:00:00,97.71,32.321999999999996,48.222,29.509 -2020-07-10 16:15:00,101.07,32.548,48.222,29.509 -2020-07-10 16:30:00,98.92,31.503,48.222,29.509 -2020-07-10 16:45:00,98.38,27.433000000000003,48.222,29.509 -2020-07-10 17:00:00,103.96,32.991,52.619,29.509 -2020-07-10 17:15:00,105.3,32.848,52.619,29.509 -2020-07-10 17:30:00,104.89,31.909000000000002,52.619,29.509 -2020-07-10 17:45:00,101.36,30.537,52.619,29.509 -2020-07-10 18:00:00,102.68,33.596,52.99,29.509 -2020-07-10 18:15:00,105.55,32.494,52.99,29.509 -2020-07-10 18:30:00,106.3,30.329,52.99,29.509 -2020-07-10 18:45:00,103.31,33.828,52.99,29.509 -2020-07-10 19:00:00,97.76,35.876,51.923,29.509 -2020-07-10 19:15:00,92.42,35.438,51.923,29.509 -2020-07-10 19:30:00,92.95,34.405,51.923,29.509 -2020-07-10 19:45:00,97.4,32.611,51.923,29.509 -2020-07-10 20:00:00,95.69,29.585,56.238,29.509 -2020-07-10 20:15:00,92.52,29.965999999999998,56.238,29.509 -2020-07-10 20:30:00,86.88,30.0,56.238,29.509 -2020-07-10 20:45:00,87.29,29.768,56.238,29.509 -2020-07-10 21:00:00,83.47,29.494,52.426,29.509 -2020-07-10 21:15:00,83.93,32.832,52.426,29.509 -2020-07-10 21:30:00,80.36,33.465,52.426,29.509 -2020-07-10 21:45:00,84.98,34.704,52.426,29.509 -2020-07-10 22:00:00,82.87,31.701999999999998,48.196000000000005,29.509 -2020-07-10 22:15:00,79.75,34.096,48.196000000000005,29.509 -2020-07-10 22:30:00,73.88,34.513000000000005,48.196000000000005,29.509 -2020-07-10 22:45:00,70.67,32.027,48.196000000000005,29.509 -2020-07-10 23:00:00,71.98,30.574,41.71,29.509 -2020-07-10 23:15:00,75.31,27.635,41.71,29.509 -2020-07-10 23:30:00,73.88,24.671999999999997,41.71,29.509 -2020-07-10 23:45:00,69.5,23.603,41.71,29.509 -2020-07-11 00:00:00,66.78,18.323,41.105,29.398000000000003 -2020-07-11 00:15:00,65.61,18.863,41.105,29.398000000000003 -2020-07-11 00:30:00,68.91,17.372,41.105,29.398000000000003 -2020-07-11 00:45:00,71.3,16.97,41.105,29.398000000000003 -2020-07-11 01:00:00,71.31,16.866,36.934,29.398000000000003 -2020-07-11 01:15:00,66.13,15.995999999999999,36.934,29.398000000000003 -2020-07-11 01:30:00,62.39,14.513,36.934,29.398000000000003 -2020-07-11 01:45:00,65.34,15.394,36.934,29.398000000000003 -2020-07-11 02:00:00,69.2,15.074000000000002,34.782,29.398000000000003 -2020-07-11 02:15:00,69.08,14.513,34.782,29.398000000000003 -2020-07-11 02:30:00,66.46,14.948,34.782,29.398000000000003 -2020-07-11 02:45:00,61.07,15.79,34.782,29.398000000000003 -2020-07-11 03:00:00,61.65,16.352,34.489000000000004,29.398000000000003 -2020-07-11 03:15:00,67.74,14.513,34.489000000000004,29.398000000000003 -2020-07-11 03:30:00,68.92,14.513,34.489000000000004,29.398000000000003 -2020-07-11 03:45:00,67.2,14.882,34.489000000000004,29.398000000000003 -2020-07-11 04:00:00,61.39,17.837,34.111,29.398000000000003 -2020-07-11 04:15:00,62.51,21.416,34.111,29.398000000000003 -2020-07-11 04:30:00,67.0,18.064,34.111,29.398000000000003 -2020-07-11 04:45:00,68.68,17.75,34.111,29.398000000000003 -2020-07-11 05:00:00,67.76,21.743000000000002,33.283,29.398000000000003 -2020-07-11 05:15:00,65.79,18.933,33.283,29.398000000000003 -2020-07-11 05:30:00,71.55,14.975999999999999,33.283,29.398000000000003 -2020-07-11 05:45:00,73.19,16.502,33.283,29.398000000000003 -2020-07-11 06:00:00,72.98,28.447,33.653,29.398000000000003 -2020-07-11 06:15:00,70.87,35.666,33.653,29.398000000000003 -2020-07-11 06:30:00,69.27,32.253,33.653,29.398000000000003 -2020-07-11 06:45:00,72.03,31.250999999999998,33.653,29.398000000000003 -2020-07-11 07:00:00,78.34,30.91,36.732,29.398000000000003 -2020-07-11 07:15:00,79.62,31.045,36.732,29.398000000000003 -2020-07-11 07:30:00,79.34,28.175,36.732,29.398000000000003 -2020-07-11 07:45:00,76.51,29.061,36.732,29.398000000000003 -2020-07-11 08:00:00,81.35,26.475,41.318999999999996,29.398000000000003 -2020-07-11 08:15:00,81.1,29.944000000000003,41.318999999999996,29.398000000000003 -2020-07-11 08:30:00,79.87,30.825,41.318999999999996,29.398000000000003 -2020-07-11 08:45:00,74.11,34.164,41.318999999999996,29.398000000000003 -2020-07-11 09:00:00,76.56,29.0,43.195,29.398000000000003 -2020-07-11 09:15:00,73.1,30.758000000000003,43.195,29.398000000000003 -2020-07-11 09:30:00,79.0,34.347,43.195,29.398000000000003 -2020-07-11 09:45:00,80.51,37.795,43.195,29.398000000000003 -2020-07-11 10:00:00,81.2,35.568000000000005,41.843999999999994,29.398000000000003 -2020-07-11 10:15:00,76.6,37.312,41.843999999999994,29.398000000000003 -2020-07-11 10:30:00,80.08,37.554,41.843999999999994,29.398000000000003 -2020-07-11 10:45:00,79.57,38.348,41.843999999999994,29.398000000000003 -2020-07-11 11:00:00,72.28,36.21,39.035,29.398000000000003 -2020-07-11 11:15:00,72.4,37.393,39.035,29.398000000000003 -2020-07-11 11:30:00,66.56,38.545,39.035,29.398000000000003 -2020-07-11 11:45:00,64.38,39.599000000000004,39.035,29.398000000000003 -2020-07-11 12:00:00,63.06,35.757,38.001,29.398000000000003 -2020-07-11 12:15:00,61.1,35.538000000000004,38.001,29.398000000000003 -2020-07-11 12:30:00,60.22,34.263000000000005,38.001,29.398000000000003 -2020-07-11 12:45:00,59.31,35.336999999999996,38.001,29.398000000000003 -2020-07-11 13:00:00,58.37,35.196999999999996,34.747,29.398000000000003 -2020-07-11 13:15:00,58.07,36.245,34.747,29.398000000000003 -2020-07-11 13:30:00,57.74,35.563,34.747,29.398000000000003 -2020-07-11 13:45:00,57.83,34.092,34.747,29.398000000000003 -2020-07-11 14:00:00,58.61,35.078,33.434,29.398000000000003 -2020-07-11 14:15:00,58.61,33.199,33.434,29.398000000000003 -2020-07-11 14:30:00,59.59,33.353,33.434,29.398000000000003 -2020-07-11 14:45:00,60.3,33.694,33.434,29.398000000000003 -2020-07-11 15:00:00,61.37,36.101,35.921,29.398000000000003 -2020-07-11 15:15:00,61.08,34.154,35.921,29.398000000000003 -2020-07-11 15:30:00,61.78,32.147,35.921,29.398000000000003 -2020-07-11 15:45:00,62.97,30.228,35.921,29.398000000000003 -2020-07-11 16:00:00,64.97,34.564,39.427,29.398000000000003 -2020-07-11 16:15:00,65.55,33.809,39.427,29.398000000000003 -2020-07-11 16:30:00,67.43,33.021,39.427,29.398000000000003 -2020-07-11 16:45:00,69.59,28.877,39.427,29.398000000000003 -2020-07-11 17:00:00,71.58,33.213,44.096000000000004,29.398000000000003 -2020-07-11 17:15:00,72.95,30.74,44.096000000000004,29.398000000000003 -2020-07-11 17:30:00,74.4,29.671,44.096000000000004,29.398000000000003 -2020-07-11 17:45:00,76.23,28.840999999999998,44.096000000000004,29.398000000000003 -2020-07-11 18:00:00,76.65,33.328,43.931000000000004,29.398000000000003 -2020-07-11 18:15:00,76.76,33.864000000000004,43.931000000000004,29.398000000000003 -2020-07-11 18:30:00,77.06,33.051,43.931000000000004,29.398000000000003 -2020-07-11 18:45:00,77.28,33.094,43.931000000000004,29.398000000000003 -2020-07-11 19:00:00,75.61,33.381,42.187,29.398000000000003 -2020-07-11 19:15:00,73.06,31.915,42.187,29.398000000000003 -2020-07-11 19:30:00,72.09,31.64,42.187,29.398000000000003 -2020-07-11 19:45:00,72.06,31.671,42.187,29.398000000000003 -2020-07-11 20:00:00,71.02,29.423000000000002,38.315,29.398000000000003 -2020-07-11 20:15:00,70.88,29.055,38.315,29.398000000000003 -2020-07-11 20:30:00,71.67,28.191999999999997,38.315,29.398000000000003 -2020-07-11 20:45:00,73.05,29.901999999999997,38.315,29.398000000000003 -2020-07-11 21:00:00,72.16,28.011999999999997,36.843,29.398000000000003 -2020-07-11 21:15:00,70.77,30.971999999999998,36.843,29.398000000000003 -2020-07-11 21:30:00,69.19,31.735,36.843,29.398000000000003 -2020-07-11 21:45:00,68.12,32.418,36.843,29.398000000000003 -2020-07-11 22:00:00,65.88,29.346,37.260999999999996,29.398000000000003 -2020-07-11 22:15:00,64.83,31.903000000000002,37.260999999999996,29.398000000000003 -2020-07-11 22:30:00,63.5,31.685,37.260999999999996,29.398000000000003 -2020-07-11 22:45:00,61.86,29.505,37.260999999999996,29.398000000000003 -2020-07-11 23:00:00,60.37,27.302,32.148,29.398000000000003 -2020-07-11 23:15:00,59.02,24.873,32.148,29.398000000000003 -2020-07-11 23:30:00,58.04,24.506999999999998,32.148,29.398000000000003 -2020-07-11 23:45:00,57.38,23.886,32.148,29.398000000000003 -2020-07-12 00:00:00,56.58,19.749000000000002,28.905,29.398000000000003 -2020-07-12 00:15:00,55.15,19.109,28.905,29.398000000000003 -2020-07-12 00:30:00,55.08,17.485,28.905,29.398000000000003 -2020-07-12 00:45:00,55.02,16.945,28.905,29.398000000000003 -2020-07-12 01:00:00,54.63,17.125999999999998,26.906999999999996,29.398000000000003 -2020-07-12 01:15:00,54.08,16.081,26.906999999999996,29.398000000000003 -2020-07-12 01:30:00,54.07,14.513,26.906999999999996,29.398000000000003 -2020-07-12 01:45:00,53.22,14.932,26.906999999999996,29.398000000000003 -2020-07-12 02:00:00,53.3,14.73,25.938000000000002,29.398000000000003 -2020-07-12 02:15:00,52.94,14.513,25.938000000000002,29.398000000000003 -2020-07-12 02:30:00,53.05,15.523,25.938000000000002,29.398000000000003 -2020-07-12 02:45:00,52.79,16.05,25.938000000000002,29.398000000000003 -2020-07-12 03:00:00,53.08,17.264,24.693,29.398000000000003 -2020-07-12 03:15:00,52.25,14.882,24.693,29.398000000000003 -2020-07-12 03:30:00,52.6,14.513,24.693,29.398000000000003 -2020-07-12 03:45:00,52.24,14.513,24.693,29.398000000000003 -2020-07-12 04:00:00,51.42,17.385,25.683000000000003,29.398000000000003 -2020-07-12 04:15:00,51.0,20.531,25.683000000000003,29.398000000000003 -2020-07-12 04:30:00,50.5,18.554000000000002,25.683000000000003,29.398000000000003 -2020-07-12 04:45:00,50.97,17.746,25.683000000000003,29.398000000000003 -2020-07-12 05:00:00,51.24,22.005,26.023000000000003,29.398000000000003 -2020-07-12 05:15:00,51.43,18.430999999999997,26.023000000000003,29.398000000000003 -2020-07-12 05:30:00,51.69,14.513,26.023000000000003,29.398000000000003 -2020-07-12 05:45:00,52.25,15.375,26.023000000000003,29.398000000000003 -2020-07-12 06:00:00,52.24,24.9,25.834,29.398000000000003 -2020-07-12 06:15:00,52.9,33.04,25.834,29.398000000000003 -2020-07-12 06:30:00,53.7,28.971,25.834,29.398000000000003 -2020-07-12 06:45:00,55.15,27.016,25.834,29.398000000000003 -2020-07-12 07:00:00,54.82,26.895,27.765,29.398000000000003 -2020-07-12 07:15:00,55.23,25.395,27.765,29.398000000000003 -2020-07-12 07:30:00,56.51,23.913,27.765,29.398000000000003 -2020-07-12 07:45:00,57.17,24.826999999999998,27.765,29.398000000000003 -2020-07-12 08:00:00,55.26,22.965,31.357,29.398000000000003 -2020-07-12 08:15:00,55.02,27.676,31.357,29.398000000000003 -2020-07-12 08:30:00,54.22,29.362,31.357,29.398000000000003 -2020-07-12 08:45:00,55.5,32.498000000000005,31.357,29.398000000000003 -2020-07-12 09:00:00,56.55,27.249000000000002,33.238,29.398000000000003 -2020-07-12 09:15:00,54.44,28.454,33.238,29.398000000000003 -2020-07-12 09:30:00,53.99,32.496,33.238,29.398000000000003 -2020-07-12 09:45:00,54.89,37.0,33.238,29.398000000000003 -2020-07-12 10:00:00,55.54,35.193000000000005,34.22,29.398000000000003 -2020-07-12 10:15:00,57.68,37.039,34.22,29.398000000000003 -2020-07-12 10:30:00,59.4,37.47,34.22,29.398000000000003 -2020-07-12 10:45:00,58.87,39.461,34.22,29.398000000000003 -2020-07-12 11:00:00,56.65,36.895,36.298,29.398000000000003 -2020-07-12 11:15:00,55.61,37.598,36.298,29.398000000000003 -2020-07-12 11:30:00,53.69,39.349000000000004,36.298,29.398000000000003 -2020-07-12 11:45:00,51.82,40.623000000000005,36.298,29.398000000000003 -2020-07-12 12:00:00,49.79,37.971,33.52,29.398000000000003 -2020-07-12 12:15:00,48.34,36.944,33.52,29.398000000000003 -2020-07-12 12:30:00,47.06,35.995,33.52,29.398000000000003 -2020-07-12 12:45:00,46.84,36.466,33.52,29.398000000000003 -2020-07-12 13:00:00,45.47,36.035,30.12,29.398000000000003 -2020-07-12 13:15:00,44.9,36.248000000000005,30.12,29.398000000000003 -2020-07-12 13:30:00,46.01,34.412,30.12,29.398000000000003 -2020-07-12 13:45:00,48.63,34.175,30.12,29.398000000000003 -2020-07-12 14:00:00,47.77,36.409,27.233,29.398000000000003 -2020-07-12 14:15:00,50.67,34.899,27.233,29.398000000000003 -2020-07-12 14:30:00,49.51,33.652,27.233,29.398000000000003 -2020-07-12 14:45:00,50.09,32.899,27.233,29.398000000000003 -2020-07-12 15:00:00,49.11,35.577,27.468000000000004,29.398000000000003 -2020-07-12 15:15:00,51.61,32.717,27.468000000000004,29.398000000000003 -2020-07-12 15:30:00,52.28,30.478,27.468000000000004,29.398000000000003 -2020-07-12 15:45:00,54.69,28.804000000000002,27.468000000000004,29.398000000000003 -2020-07-12 16:00:00,56.69,31.328000000000003,30.8,29.398000000000003 -2020-07-12 16:15:00,57.79,30.877,30.8,29.398000000000003 -2020-07-12 16:30:00,60.36,31.142,30.8,29.398000000000003 -2020-07-12 16:45:00,62.51,27.061999999999998,30.8,29.398000000000003 -2020-07-12 17:00:00,64.81,31.787,37.806,29.398000000000003 -2020-07-12 17:15:00,65.45,30.935,37.806,29.398000000000003 -2020-07-12 17:30:00,67.71,30.695999999999998,37.806,29.398000000000003 -2020-07-12 17:45:00,68.61,30.166999999999998,37.806,29.398000000000003 -2020-07-12 18:00:00,71.24,35.333,40.766,29.398000000000003 -2020-07-12 18:15:00,71.8,35.356,40.766,29.398000000000003 -2020-07-12 18:30:00,72.57,34.407,40.766,29.398000000000003 -2020-07-12 18:45:00,72.89,34.463,40.766,29.398000000000003 -2020-07-12 19:00:00,72.83,37.047,41.163000000000004,29.398000000000003 -2020-07-12 19:15:00,71.76,34.399,41.163000000000004,29.398000000000003 -2020-07-12 19:30:00,70.93,33.869,41.163000000000004,29.398000000000003 -2020-07-12 19:45:00,71.3,33.354,41.163000000000004,29.398000000000003 -2020-07-12 20:00:00,68.86,31.265,39.885999999999996,29.398000000000003 -2020-07-12 20:15:00,69.89,30.703000000000003,39.885999999999996,29.398000000000003 -2020-07-12 20:30:00,71.35,30.611,39.885999999999996,29.398000000000003 -2020-07-12 20:45:00,74.04,30.651,39.885999999999996,29.398000000000003 -2020-07-12 21:00:00,76.76,28.779,38.900999999999996,29.398000000000003 -2020-07-12 21:15:00,76.45,31.459,38.900999999999996,29.398000000000003 -2020-07-12 21:30:00,75.21,31.52,38.900999999999996,29.398000000000003 -2020-07-12 21:45:00,73.92,32.556,38.900999999999996,29.398000000000003 -2020-07-12 22:00:00,72.32,31.649,39.806999999999995,29.398000000000003 -2020-07-12 22:15:00,71.26,32.507,39.806999999999995,29.398000000000003 -2020-07-12 22:30:00,70.12,31.899,39.806999999999995,29.398000000000003 -2020-07-12 22:45:00,69.17,28.441999999999997,39.806999999999995,29.398000000000003 -2020-07-12 23:00:00,66.25,26.066999999999997,35.564,29.398000000000003 -2020-07-12 23:15:00,66.98,24.875999999999998,35.564,29.398000000000003 -2020-07-12 23:30:00,67.33,23.935,35.564,29.398000000000003 -2020-07-12 23:45:00,65.65,23.429000000000002,35.564,29.398000000000003 -2020-07-13 00:00:00,63.25,21.121,36.578,29.509 -2020-07-13 00:15:00,63.73,21.145,36.578,29.509 -2020-07-13 00:30:00,63.24,19.121,36.578,29.509 -2020-07-13 00:45:00,64.24,18.207,36.578,29.509 -2020-07-13 01:00:00,62.98,18.792,35.292,29.509 -2020-07-13 01:15:00,64.06,17.78,35.292,29.509 -2020-07-13 01:30:00,62.35,16.386,35.292,29.509 -2020-07-13 01:45:00,62.1,16.892,35.292,29.509 -2020-07-13 02:00:00,62.13,17.167,34.319,29.509 -2020-07-13 02:15:00,63.93,14.513,34.319,29.509 -2020-07-13 02:30:00,62.7,16.987000000000002,34.319,29.509 -2020-07-13 02:45:00,68.66,17.396,34.319,29.509 -2020-07-13 03:00:00,71.71,19.061,33.13,29.509 -2020-07-13 03:15:00,70.72,17.35,33.13,29.509 -2020-07-13 03:30:00,68.96,16.737000000000002,33.13,29.509 -2020-07-13 03:45:00,68.2,17.241,33.13,29.509 -2020-07-13 04:00:00,71.65,23.105999999999998,33.851,29.509 -2020-07-13 04:15:00,75.48,29.046,33.851,29.509 -2020-07-13 04:30:00,81.43,26.454,33.851,29.509 -2020-07-13 04:45:00,88.04,26.021,33.851,29.509 -2020-07-13 05:00:00,87.82,36.985,38.718,29.509 -2020-07-13 05:15:00,92.38,43.06399999999999,38.718,29.509 -2020-07-13 05:30:00,92.03,37.214,38.718,29.509 -2020-07-13 05:45:00,94.27,35.575,38.718,29.509 -2020-07-13 06:00:00,105.23,35.279,51.648999999999994,29.509 -2020-07-13 06:15:00,111.06,34.735,51.648999999999994,29.509 -2020-07-13 06:30:00,115.27,34.412,51.648999999999994,29.509 -2020-07-13 06:45:00,111.43,37.519,51.648999999999994,29.509 -2020-07-13 07:00:00,115.92,37.404,60.159,29.509 -2020-07-13 07:15:00,114.27,38.225,60.159,29.509 -2020-07-13 07:30:00,121.23,35.899,60.159,29.509 -2020-07-13 07:45:00,121.9,37.286,60.159,29.509 -2020-07-13 08:00:00,121.83,33.344,53.8,29.509 -2020-07-13 08:15:00,117.34,36.936,53.8,29.509 -2020-07-13 08:30:00,119.03,37.851,53.8,29.509 -2020-07-13 08:45:00,125.58,41.396,53.8,29.509 -2020-07-13 09:00:00,127.01,35.063,50.583,29.509 -2020-07-13 09:15:00,124.63,34.619,50.583,29.509 -2020-07-13 09:30:00,120.25,37.743,50.583,29.509 -2020-07-13 09:45:00,127.67,39.821999999999996,50.583,29.509 -2020-07-13 10:00:00,129.63,38.476,49.11600000000001,29.509 -2020-07-13 10:15:00,127.89,40.185,49.11600000000001,29.509 -2020-07-13 10:30:00,123.11,40.189,49.11600000000001,29.509 -2020-07-13 10:45:00,122.39,40.455,49.11600000000001,29.509 -2020-07-13 11:00:00,118.84,38.315,49.056000000000004,29.509 -2020-07-13 11:15:00,121.61,39.187,49.056000000000004,29.509 -2020-07-13 11:30:00,114.5,41.566,49.056000000000004,29.509 -2020-07-13 11:45:00,110.96,43.393,49.056000000000004,29.509 -2020-07-13 12:00:00,107.31,38.772,47.227,29.509 -2020-07-13 12:15:00,105.66,37.86,47.227,29.509 -2020-07-13 12:30:00,102.31,35.75,47.227,29.509 -2020-07-13 12:45:00,93.18,36.098,47.227,29.509 -2020-07-13 13:00:00,92.65,36.595,47.006,29.509 -2020-07-13 13:15:00,92.56,35.967,47.006,29.509 -2020-07-13 13:30:00,91.16,34.355,47.006,29.509 -2020-07-13 13:45:00,91.85,35.071999999999996,47.006,29.509 -2020-07-13 14:00:00,90.82,36.405,47.19,29.509 -2020-07-13 14:15:00,91.72,35.571999999999996,47.19,29.509 -2020-07-13 14:30:00,90.69,34.181999999999995,47.19,29.509 -2020-07-13 14:45:00,90.03,35.629,47.19,29.509 -2020-07-13 15:00:00,93.94,37.814,47.846000000000004,29.509 -2020-07-13 15:15:00,99.23,34.43,47.846000000000004,29.509 -2020-07-13 15:30:00,95.18,33.066,47.846000000000004,29.509 -2020-07-13 15:45:00,96.44,30.903000000000002,47.846000000000004,29.509 -2020-07-13 16:00:00,96.49,34.625,49.641000000000005,29.509 -2020-07-13 16:15:00,95.72,34.295,49.641000000000005,29.509 -2020-07-13 16:30:00,96.85,33.941,49.641000000000005,29.509 -2020-07-13 16:45:00,94.4,29.968000000000004,49.641000000000005,29.509 -2020-07-13 17:00:00,98.43,33.529,54.133,29.509 -2020-07-13 17:15:00,98.75,33.147,54.133,29.509 -2020-07-13 17:30:00,99.74,32.542,54.133,29.509 -2020-07-13 17:45:00,98.7,31.698,54.133,29.509 -2020-07-13 18:00:00,102.1,35.762,53.761,29.509 -2020-07-13 18:15:00,99.07,33.991,53.761,29.509 -2020-07-13 18:30:00,100.45,32.218,53.761,29.509 -2020-07-13 18:45:00,100.43,35.531,53.761,29.509 -2020-07-13 19:00:00,97.31,37.945,53.923,29.509 -2020-07-13 19:15:00,93.81,36.722,53.923,29.509 -2020-07-13 19:30:00,93.3,35.78,53.923,29.509 -2020-07-13 19:45:00,91.72,34.668,53.923,29.509 -2020-07-13 20:00:00,90.68,31.375,58.786,29.509 -2020-07-13 20:15:00,90.77,32.399,58.786,29.509 -2020-07-13 20:30:00,90.87,32.946,58.786,29.509 -2020-07-13 20:45:00,91.51,33.126999999999995,58.786,29.509 -2020-07-13 21:00:00,89.62,30.568,54.591,29.509 -2020-07-13 21:15:00,88.41,33.764,54.591,29.509 -2020-07-13 21:30:00,85.66,34.279,54.591,29.509 -2020-07-13 21:45:00,85.22,35.104,54.591,29.509 -2020-07-13 22:00:00,79.21,32.213,51.551,29.509 -2020-07-13 22:15:00,80.28,35.194,51.551,29.509 -2020-07-13 22:30:00,79.16,30.554000000000002,51.551,29.509 -2020-07-13 22:45:00,78.47,27.307,51.551,29.509 -2020-07-13 23:00:00,72.96,24.906999999999996,44.716,29.509 -2020-07-13 23:15:00,73.07,21.904,44.716,29.509 -2020-07-13 23:30:00,69.81,20.805,44.716,29.509 -2020-07-13 23:45:00,72.76,19.611,44.716,29.509 -2020-07-14 00:00:00,67.54,18.816,43.01,29.509 -2020-07-14 00:15:00,69.07,19.663,43.01,29.509 -2020-07-14 00:30:00,66.45,18.436,43.01,29.509 -2020-07-14 00:45:00,70.02,18.406,43.01,29.509 -2020-07-14 01:00:00,69.42,18.439,40.687,29.509 -2020-07-14 01:15:00,69.69,17.563,40.687,29.509 -2020-07-14 01:30:00,67.81,16.028,40.687,29.509 -2020-07-14 01:45:00,69.25,15.975999999999999,40.687,29.509 -2020-07-14 02:00:00,68.49,15.753,39.554,29.509 -2020-07-14 02:15:00,69.32,14.513,39.554,29.509 -2020-07-14 02:30:00,69.78,16.408,39.554,29.509 -2020-07-14 02:45:00,69.55,17.16,39.554,29.509 -2020-07-14 03:00:00,70.53,18.301,38.958,29.509 -2020-07-14 03:15:00,71.95,17.624000000000002,38.958,29.509 -2020-07-14 03:30:00,71.88,16.959,38.958,29.509 -2020-07-14 03:45:00,75.76,16.305,38.958,29.509 -2020-07-14 04:00:00,74.52,20.831999999999997,39.783,29.509 -2020-07-14 04:15:00,75.95,26.779,39.783,29.509 -2020-07-14 04:30:00,79.03,24.072,39.783,29.509 -2020-07-14 04:45:00,81.77,24.083000000000002,39.783,29.509 -2020-07-14 05:00:00,88.06,36.406,42.281000000000006,29.509 -2020-07-14 05:15:00,90.34,43.077,42.281000000000006,29.509 -2020-07-14 05:30:00,92.69,37.535,42.281000000000006,29.509 -2020-07-14 05:45:00,98.51,35.157,42.281000000000006,29.509 -2020-07-14 06:00:00,109.3,36.005,50.801,29.509 -2020-07-14 06:15:00,108.62,35.589,50.801,29.509 -2020-07-14 06:30:00,105.84,34.981,50.801,29.509 -2020-07-14 06:45:00,105.08,37.208,50.801,29.509 -2020-07-14 07:00:00,116.07,37.256,60.202,29.509 -2020-07-14 07:15:00,115.56,37.838,60.202,29.509 -2020-07-14 07:30:00,111.32,35.568000000000005,60.202,29.509 -2020-07-14 07:45:00,103.14,35.945,60.202,29.509 -2020-07-14 08:00:00,106.06,31.928,54.461000000000006,29.509 -2020-07-14 08:15:00,103.57,35.115,54.461000000000006,29.509 -2020-07-14 08:30:00,103.42,36.209,54.461000000000006,29.509 -2020-07-14 08:45:00,106.65,38.788000000000004,54.461000000000006,29.509 -2020-07-14 09:00:00,110.63,32.869,50.753,29.509 -2020-07-14 09:15:00,110.97,32.167,50.753,29.509 -2020-07-14 09:30:00,104.6,35.965,50.753,29.509 -2020-07-14 09:45:00,103.21,39.481,50.753,29.509 -2020-07-14 10:00:00,108.94,36.727,49.703,29.509 -2020-07-14 10:15:00,110.62,38.361,49.703,29.509 -2020-07-14 10:30:00,109.15,38.375,49.703,29.509 -2020-07-14 10:45:00,102.77,39.693000000000005,49.703,29.509 -2020-07-14 11:00:00,100.68,37.448,49.42100000000001,29.509 -2020-07-14 11:15:00,104.47,38.778,49.42100000000001,29.509 -2020-07-14 11:30:00,103.85,40.007,49.42100000000001,29.509 -2020-07-14 11:45:00,104.68,41.293,49.42100000000001,29.509 -2020-07-14 12:00:00,101.13,36.594,47.155,29.509 -2020-07-14 12:15:00,100.12,36.073,47.155,29.509 -2020-07-14 12:30:00,97.38,34.82,47.155,29.509 -2020-07-14 12:45:00,103.21,35.93,47.155,29.509 -2020-07-14 13:00:00,104.0,36.05,47.515,29.509 -2020-07-14 13:15:00,102.08,37.375,47.515,29.509 -2020-07-14 13:30:00,96.92,35.641,47.515,29.509 -2020-07-14 13:45:00,97.9,35.316,47.515,29.509 -2020-07-14 14:00:00,96.33,37.105,47.575,29.509 -2020-07-14 14:15:00,101.9,36.049,47.575,29.509 -2020-07-14 14:30:00,99.58,34.953,47.575,29.509 -2020-07-14 14:45:00,98.18,35.567,47.575,29.509 -2020-07-14 15:00:00,93.03,37.619,48.903,29.509 -2020-07-14 15:15:00,90.27,35.195,48.903,29.509 -2020-07-14 15:30:00,93.61,33.589,48.903,29.509 -2020-07-14 15:45:00,99.29,31.824,48.903,29.509 -2020-07-14 16:00:00,102.48,34.764,50.218999999999994,29.509 -2020-07-14 16:15:00,101.61,34.497,50.218999999999994,29.509 -2020-07-14 16:30:00,97.93,33.715,50.218999999999994,29.509 -2020-07-14 16:45:00,99.0,30.489,50.218999999999994,29.509 -2020-07-14 17:00:00,100.95,34.236999999999995,55.396,29.509 -2020-07-14 17:15:00,101.47,34.311,55.396,29.509 -2020-07-14 17:30:00,101.51,33.196999999999996,55.396,29.509 -2020-07-14 17:45:00,104.76,32.015,55.396,29.509 -2020-07-14 18:00:00,107.85,35.096,55.583999999999996,29.509 -2020-07-14 18:15:00,108.01,34.913000000000004,55.583999999999996,29.509 -2020-07-14 18:30:00,105.94,32.885999999999996,55.583999999999996,29.509 -2020-07-14 18:45:00,101.24,35.943000000000005,55.583999999999996,29.509 -2020-07-14 19:00:00,102.79,37.137,56.071000000000005,29.509 -2020-07-14 19:15:00,102.8,36.111,56.071000000000005,29.509 -2020-07-14 19:30:00,101.74,34.975,56.071000000000005,29.509 -2020-07-14 19:45:00,95.47,34.209,56.071000000000005,29.509 -2020-07-14 20:00:00,91.86,31.309,61.55,29.509 -2020-07-14 20:15:00,91.07,30.857,61.55,29.509 -2020-07-14 20:30:00,91.99,31.381,61.55,29.509 -2020-07-14 20:45:00,93.25,32.04,61.55,29.509 -2020-07-14 21:00:00,90.18,30.436,55.94,29.509 -2020-07-14 21:15:00,89.36,32.047,55.94,29.509 -2020-07-14 21:30:00,86.61,32.768,55.94,29.509 -2020-07-14 21:45:00,85.12,33.775,55.94,29.509 -2020-07-14 22:00:00,80.32,30.973000000000003,52.857,29.509 -2020-07-14 22:15:00,79.79,33.615,52.857,29.509 -2020-07-14 22:30:00,78.37,29.256999999999998,52.857,29.509 -2020-07-14 22:45:00,77.97,25.984,52.857,29.509 -2020-07-14 23:00:00,72.49,22.794,46.04,29.509 -2020-07-14 23:15:00,73.85,21.485,46.04,29.509 -2020-07-14 23:30:00,70.65,20.417,46.04,29.509 -2020-07-14 23:45:00,72.46,19.43,46.04,29.509 -2020-07-15 00:00:00,70.34,18.844,42.195,29.509 -2020-07-15 00:15:00,71.25,19.69,42.195,29.509 -2020-07-15 00:30:00,70.44,18.468,42.195,29.509 -2020-07-15 00:45:00,70.41,18.444000000000003,42.195,29.509 -2020-07-15 01:00:00,67.46,18.48,38.82,29.509 -2020-07-15 01:15:00,68.86,17.599,38.82,29.509 -2020-07-15 01:30:00,67.2,16.067999999999998,38.82,29.509 -2020-07-15 01:45:00,67.83,16.009,38.82,29.509 -2020-07-15 02:00:00,66.75,15.790999999999999,37.023,29.509 -2020-07-15 02:15:00,67.72,14.513,37.023,29.509 -2020-07-15 02:30:00,67.76,16.441,37.023,29.509 -2020-07-15 02:45:00,67.84,17.197,37.023,29.509 -2020-07-15 03:00:00,66.87,18.329,36.818000000000005,29.509 -2020-07-15 03:15:00,71.03,17.664,36.818000000000005,29.509 -2020-07-15 03:30:00,71.12,17.007,36.818000000000005,29.509 -2020-07-15 03:45:00,72.97,16.365,36.818000000000005,29.509 -2020-07-15 04:00:00,73.68,20.866,37.495,29.509 -2020-07-15 04:15:00,76.29,26.789,37.495,29.509 -2020-07-15 04:30:00,80.11,24.078000000000003,37.495,29.509 -2020-07-15 04:45:00,84.96,24.088,37.495,29.509 -2020-07-15 05:00:00,87.78,36.374,39.858000000000004,29.509 -2020-07-15 05:15:00,87.33,42.99100000000001,39.858000000000004,29.509 -2020-07-15 05:30:00,94.23,37.495,39.858000000000004,29.509 -2020-07-15 05:45:00,94.63,35.131,39.858000000000004,29.509 -2020-07-15 06:00:00,100.78,35.971,52.867,29.509 -2020-07-15 06:15:00,108.9,35.558,52.867,29.509 -2020-07-15 06:30:00,110.63,34.966,52.867,29.509 -2020-07-15 06:45:00,111.18,37.216,52.867,29.509 -2020-07-15 07:00:00,105.52,37.258,66.061,29.509 -2020-07-15 07:15:00,103.46,37.86,66.061,29.509 -2020-07-15 07:30:00,103.47,35.599000000000004,66.061,29.509 -2020-07-15 07:45:00,102.77,35.999,66.061,29.509 -2020-07-15 08:00:00,103.23,31.991,58.532,29.509 -2020-07-15 08:15:00,108.72,35.184,58.532,29.509 -2020-07-15 08:30:00,110.2,36.266999999999996,58.532,29.509 -2020-07-15 08:45:00,110.41,38.838,58.532,29.509 -2020-07-15 09:00:00,110.93,32.918,56.047,29.509 -2020-07-15 09:15:00,114.49,32.213,56.047,29.509 -2020-07-15 09:30:00,113.05,36.003,56.047,29.509 -2020-07-15 09:45:00,111.8,39.516999999999996,56.047,29.509 -2020-07-15 10:00:00,110.53,36.769,53.823,29.509 -2020-07-15 10:15:00,113.38,38.397,53.823,29.509 -2020-07-15 10:30:00,118.08,38.407,53.823,29.509 -2020-07-15 10:45:00,119.14,39.724000000000004,53.823,29.509 -2020-07-15 11:00:00,114.85,37.48,54.184,29.509 -2020-07-15 11:15:00,105.35,38.809,54.184,29.509 -2020-07-15 11:30:00,107.75,40.027,54.184,29.509 -2020-07-15 11:45:00,104.65,41.305,54.184,29.509 -2020-07-15 12:00:00,101.57,36.622,52.628,29.509 -2020-07-15 12:15:00,102.98,36.098,52.628,29.509 -2020-07-15 12:30:00,101.37,34.839,52.628,29.509 -2020-07-15 12:45:00,100.1,35.945,52.628,29.509 -2020-07-15 13:00:00,95.13,36.046,52.31,29.509 -2020-07-15 13:15:00,97.79,37.365,52.31,29.509 -2020-07-15 13:30:00,92.09,35.635,52.31,29.509 -2020-07-15 13:45:00,93.99,35.318000000000005,52.31,29.509 -2020-07-15 14:00:00,91.96,37.105,52.278999999999996,29.509 -2020-07-15 14:15:00,93.66,36.051,52.278999999999996,29.509 -2020-07-15 14:30:00,93.43,34.949,52.278999999999996,29.509 -2020-07-15 14:45:00,94.43,35.57,52.278999999999996,29.509 -2020-07-15 15:00:00,90.17,37.62,53.306999999999995,29.509 -2020-07-15 15:15:00,89.69,35.193000000000005,53.306999999999995,29.509 -2020-07-15 15:30:00,94.34,33.59,53.306999999999995,29.509 -2020-07-15 15:45:00,93.63,31.82,53.306999999999995,29.509 -2020-07-15 16:00:00,94.82,34.765,55.358999999999995,29.509 -2020-07-15 16:15:00,96.19,34.501999999999995,55.358999999999995,29.509 -2020-07-15 16:30:00,95.74,33.736999999999995,55.358999999999995,29.509 -2020-07-15 16:45:00,96.06,30.52,55.358999999999995,29.509 -2020-07-15 17:00:00,98.6,34.265,59.211999999999996,29.509 -2020-07-15 17:15:00,98.46,34.354,59.211999999999996,29.509 -2020-07-15 17:30:00,98.19,33.245,59.211999999999996,29.509 -2020-07-15 17:45:00,101.1,32.071999999999996,59.211999999999996,29.509 -2020-07-15 18:00:00,101.97,35.156,60.403999999999996,29.509 -2020-07-15 18:15:00,100.51,34.96,60.403999999999996,29.509 -2020-07-15 18:30:00,99.62,32.937,60.403999999999996,29.509 -2020-07-15 18:45:00,99.61,35.994,60.403999999999996,29.509 -2020-07-15 19:00:00,96.67,37.191,60.993,29.509 -2020-07-15 19:15:00,92.57,36.158,60.993,29.509 -2020-07-15 19:30:00,91.19,35.016999999999996,60.993,29.509 -2020-07-15 19:45:00,90.05,34.249,60.993,29.509 -2020-07-15 20:00:00,89.39,31.340999999999998,66.6,29.509 -2020-07-15 20:15:00,89.79,30.886999999999997,66.6,29.509 -2020-07-15 20:30:00,90.48,31.406999999999996,66.6,29.509 -2020-07-15 20:45:00,94.33,32.068000000000005,66.6,29.509 -2020-07-15 21:00:00,89.0,30.467,59.855,29.509 -2020-07-15 21:15:00,90.24,32.078,59.855,29.509 -2020-07-15 21:30:00,86.46,32.781,59.855,29.509 -2020-07-15 21:45:00,84.69,33.777,59.855,29.509 -2020-07-15 22:00:00,80.58,30.976999999999997,54.942,29.509 -2020-07-15 22:15:00,79.78,33.615,54.942,29.509 -2020-07-15 22:30:00,77.4,29.239,54.942,29.509 -2020-07-15 22:45:00,76.55,25.959,54.942,29.509 -2020-07-15 23:00:00,70.55,22.781,46.056000000000004,29.509 -2020-07-15 23:15:00,73.75,21.489,46.056000000000004,29.509 -2020-07-15 23:30:00,72.68,20.434,46.056000000000004,29.509 -2020-07-15 23:45:00,71.83,19.444000000000003,46.056000000000004,29.509 -2020-07-16 00:00:00,68.4,17.695999999999998,40.859,29.509 -2020-07-16 00:15:00,69.33,18.609,40.859,29.509 -2020-07-16 00:30:00,69.21,17.279,40.859,29.509 -2020-07-16 00:45:00,69.57,17.358,40.859,29.509 -2020-07-16 01:00:00,66.81,17.385,39.06,29.509 -2020-07-16 01:15:00,69.01,16.565,39.06,29.509 -2020-07-16 01:30:00,67.69,15.054,39.06,29.509 -2020-07-16 01:45:00,68.28,15.171,39.06,29.509 -2020-07-16 02:00:00,68.0,15.002,37.592,29.509 -2020-07-16 02:15:00,67.65,14.513,37.592,29.509 -2020-07-16 02:30:00,67.91,15.694,37.592,29.509 -2020-07-16 02:45:00,69.21,16.421,37.592,29.509 -2020-07-16 03:00:00,68.8,17.433,37.416,29.509 -2020-07-16 03:15:00,69.64,16.917,37.416,29.509 -2020-07-16 03:30:00,71.41,16.209,37.416,29.509 -2020-07-16 03:45:00,74.92,15.402999999999999,37.416,29.509 -2020-07-16 04:00:00,75.15,19.62,38.176,29.509 -2020-07-16 04:15:00,76.88,25.261999999999997,38.176,29.509 -2020-07-16 04:30:00,76.66,22.57,38.176,29.509 -2020-07-16 04:45:00,80.18,22.496,38.176,29.509 -2020-07-16 05:00:00,87.87,34.303000000000004,41.203,29.509 -2020-07-16 05:15:00,89.57,40.372,41.203,29.509 -2020-07-16 05:30:00,96.26,35.325,41.203,29.509 -2020-07-16 05:45:00,101.5,32.945,41.203,29.509 -2020-07-16 06:00:00,107.07,33.306,51.09,29.509 -2020-07-16 06:15:00,102.95,32.66,51.09,29.509 -2020-07-16 06:30:00,101.95,32.357,51.09,29.509 -2020-07-16 06:45:00,107.07,34.909,51.09,29.509 -2020-07-16 07:00:00,109.85,34.71,63.541000000000004,29.509 -2020-07-16 07:15:00,107.55,35.439,63.541000000000004,29.509 -2020-07-16 07:30:00,105.46,33.343,63.541000000000004,29.509 -2020-07-16 07:45:00,99.9,33.835,63.541000000000004,29.509 -2020-07-16 08:00:00,103.71,29.159000000000002,55.65,29.509 -2020-07-16 08:15:00,106.39,32.507,55.65,29.509 -2020-07-16 08:30:00,107.35,34.055,55.65,29.509 -2020-07-16 08:45:00,103.5,36.774,55.65,29.509 -2020-07-16 09:00:00,99.32,32.482,51.833999999999996,29.509 -2020-07-16 09:15:00,101.09,32.001999999999995,51.833999999999996,29.509 -2020-07-16 09:30:00,106.4,35.815,51.833999999999996,29.509 -2020-07-16 09:45:00,112.1,39.141,51.833999999999996,29.509 -2020-07-16 10:00:00,113.34,36.639,49.70399999999999,29.509 -2020-07-16 10:15:00,103.53,38.18,49.70399999999999,29.509 -2020-07-16 10:30:00,108.61,38.09,49.70399999999999,29.509 -2020-07-16 10:45:00,110.26,39.092,49.70399999999999,29.509 -2020-07-16 11:00:00,107.49,36.751999999999995,48.593999999999994,29.509 -2020-07-16 11:15:00,101.65,38.056999999999995,48.593999999999994,29.509 -2020-07-16 11:30:00,99.95,39.297,48.593999999999994,29.509 -2020-07-16 11:45:00,105.9,40.42,48.593999999999994,29.509 -2020-07-16 12:00:00,104.35,34.999,46.275,29.509 -2020-07-16 12:15:00,106.27,34.306999999999995,46.275,29.509 -2020-07-16 12:30:00,97.52,33.074,46.275,29.509 -2020-07-16 12:45:00,98.65,34.076,46.275,29.509 -2020-07-16 13:00:00,102.47,34.053000000000004,45.803000000000004,29.509 -2020-07-16 13:15:00,104.02,35.477,45.803000000000004,29.509 -2020-07-16 13:30:00,100.98,33.608000000000004,45.803000000000004,29.509 -2020-07-16 13:45:00,94.53,33.578,45.803000000000004,29.509 -2020-07-16 14:00:00,96.85,35.39,46.251999999999995,29.509 -2020-07-16 14:15:00,96.71,34.388000000000005,46.251999999999995,29.509 -2020-07-16 14:30:00,99.91,33.429,46.251999999999995,29.509 -2020-07-16 14:45:00,99.62,34.041,46.251999999999995,29.509 -2020-07-16 15:00:00,96.59,36.379,48.309,29.509 -2020-07-16 15:15:00,93.27,34.016999999999996,48.309,29.509 -2020-07-16 15:30:00,95.88,32.552,48.309,29.509 -2020-07-16 15:45:00,100.36,30.926,48.309,29.509 -2020-07-16 16:00:00,100.07,33.31,49.681999999999995,29.509 -2020-07-16 16:15:00,95.77,33.111,49.681999999999995,29.509 -2020-07-16 16:30:00,98.62,32.172,49.681999999999995,29.509 -2020-07-16 16:45:00,100.86,29.104,49.681999999999995,29.509 -2020-07-16 17:00:00,105.52,33.069,53.086000000000006,29.509 -2020-07-16 17:15:00,107.45,33.188,53.086000000000006,29.509 -2020-07-16 17:30:00,104.16,32.003,53.086000000000006,29.509 -2020-07-16 17:45:00,103.07,31.022,53.086000000000006,29.509 -2020-07-16 18:00:00,101.84,34.315,54.038999999999994,29.509 -2020-07-16 18:15:00,100.31,34.167,54.038999999999994,29.509 -2020-07-16 18:30:00,100.5,32.226,54.038999999999994,29.509 -2020-07-16 18:45:00,106.08,34.979,54.038999999999994,29.509 -2020-07-16 19:00:00,105.9,36.38,53.408,29.509 -2020-07-16 19:15:00,102.77,35.374,53.408,29.509 -2020-07-16 19:30:00,96.1,34.2,53.408,29.509 -2020-07-16 19:45:00,95.11,33.135,53.408,29.509 -2020-07-16 20:00:00,91.57,30.674,55.309,29.509 -2020-07-16 20:15:00,94.42,29.885,55.309,29.509 -2020-07-16 20:30:00,93.02,30.358,55.309,29.509 -2020-07-16 20:45:00,93.42,30.788,55.309,29.509 -2020-07-16 21:00:00,91.2,29.548000000000002,51.585,29.509 -2020-07-16 21:15:00,90.29,30.741999999999997,51.585,29.509 -2020-07-16 21:30:00,87.58,31.38,51.585,29.509 -2020-07-16 21:45:00,86.37,32.32,51.585,29.509 -2020-07-16 22:00:00,81.95,29.609,48.006,29.509 -2020-07-16 22:15:00,81.66,32.455,48.006,29.509 -2020-07-16 22:30:00,79.46,28.267,48.006,29.509 -2020-07-16 22:45:00,80.13,25.146,48.006,29.509 -2020-07-16 23:00:00,75.25,21.895,42.309,29.509 -2020-07-16 23:15:00,75.85,20.484,42.309,29.509 -2020-07-16 23:30:00,74.85,19.387,42.309,29.509 -2020-07-16 23:45:00,73.27,18.362000000000002,42.309,29.509 -2020-07-17 00:00:00,69.67,15.872,39.649,29.509 -2020-07-17 00:15:00,72.11,17.002,39.649,29.509 -2020-07-17 00:30:00,72.27,15.982999999999999,39.649,29.509 -2020-07-17 00:45:00,72.1,16.518,39.649,29.509 -2020-07-17 01:00:00,69.69,16.156,37.744,29.509 -2020-07-17 01:15:00,70.44,14.607000000000001,37.744,29.509 -2020-07-17 01:30:00,70.83,14.513,37.744,29.509 -2020-07-17 01:45:00,73.34,14.513,37.744,29.509 -2020-07-17 02:00:00,70.32,14.565999999999999,36.965,29.509 -2020-07-17 02:15:00,70.93,14.513,36.965,29.509 -2020-07-17 02:30:00,70.09,16.064,36.965,29.509 -2020-07-17 02:45:00,69.59,16.048,36.965,29.509 -2020-07-17 03:00:00,70.93,17.969,37.678000000000004,29.509 -2020-07-17 03:15:00,72.45,16.085,37.678000000000004,29.509 -2020-07-17 03:30:00,74.49,15.127,37.678000000000004,29.509 -2020-07-17 03:45:00,74.49,15.26,37.678000000000004,29.509 -2020-07-17 04:00:00,76.78,19.583,38.591,29.509 -2020-07-17 04:15:00,83.05,23.531999999999996,38.591,29.509 -2020-07-17 04:30:00,83.79,21.848000000000003,38.591,29.509 -2020-07-17 04:45:00,82.32,21.16,38.591,29.509 -2020-07-17 05:00:00,92.53,32.51,40.666,29.509 -2020-07-17 05:15:00,93.78,39.453,40.666,29.509 -2020-07-17 05:30:00,99.45,34.591,40.666,29.509 -2020-07-17 05:45:00,102.94,31.750999999999998,40.666,29.509 -2020-07-17 06:00:00,108.29,32.311,51.784,29.509 -2020-07-17 06:15:00,101.27,31.945999999999998,51.784,29.509 -2020-07-17 06:30:00,101.61,31.660999999999998,51.784,29.509 -2020-07-17 06:45:00,108.21,33.99,51.784,29.509 -2020-07-17 07:00:00,112.7,34.54,61.383,29.509 -2020-07-17 07:15:00,110.87,36.194,61.383,29.509 -2020-07-17 07:30:00,107.13,31.997,61.383,29.509 -2020-07-17 07:45:00,105.72,32.355,61.383,29.509 -2020-07-17 08:00:00,109.76,28.636,55.272,29.509 -2020-07-17 08:15:00,109.09,32.758,55.272,29.509 -2020-07-17 08:30:00,106.95,34.098,55.272,29.509 -2020-07-17 08:45:00,103.14,36.793,55.272,29.509 -2020-07-17 09:00:00,105.78,29.919,53.506,29.509 -2020-07-17 09:15:00,106.52,31.503,53.506,29.509 -2020-07-17 09:30:00,107.91,34.588,53.506,29.509 -2020-07-17 09:45:00,105.7,38.348,53.506,29.509 -2020-07-17 10:00:00,103.69,35.79,51.363,29.509 -2020-07-17 10:15:00,108.86,37.004,51.363,29.509 -2020-07-17 10:30:00,108.56,37.53,51.363,29.509 -2020-07-17 10:45:00,105.22,38.471,51.363,29.509 -2020-07-17 11:00:00,99.4,36.409,51.043,29.509 -2020-07-17 11:15:00,104.69,36.599000000000004,51.043,29.509 -2020-07-17 11:30:00,105.83,37.249,51.043,29.509 -2020-07-17 11:45:00,105.9,37.297,51.043,29.509 -2020-07-17 12:00:00,97.56,32.258,47.52,29.509 -2020-07-17 12:15:00,96.68,31.066,47.52,29.509 -2020-07-17 12:30:00,91.93,29.941999999999997,47.52,29.509 -2020-07-17 12:45:00,92.95,30.011999999999997,47.52,29.509 -2020-07-17 13:00:00,96.42,30.528000000000002,45.494,29.509 -2020-07-17 13:15:00,97.53,32.061,45.494,29.509 -2020-07-17 13:30:00,94.43,31.075,45.494,29.509 -2020-07-17 13:45:00,91.76,31.401999999999997,45.494,29.509 -2020-07-17 14:00:00,92.13,32.44,43.883,29.509 -2020-07-17 14:15:00,90.45,31.94,43.883,29.509 -2020-07-17 14:30:00,91.4,32.594,43.883,29.509 -2020-07-17 14:45:00,93.5,32.418,43.883,29.509 -2020-07-17 15:00:00,94.71,34.715,45.714,29.509 -2020-07-17 15:15:00,95.27,32.129,45.714,29.509 -2020-07-17 15:30:00,88.29,30.189,45.714,29.509 -2020-07-17 15:45:00,92.07,29.386,45.714,29.509 -2020-07-17 16:00:00,91.83,30.943,48.222,29.509 -2020-07-17 16:15:00,100.32,31.264,48.222,29.509 -2020-07-17 16:30:00,98.96,30.133000000000003,48.222,29.509 -2020-07-17 16:45:00,102.8,26.223000000000003,48.222,29.509 -2020-07-17 17:00:00,96.41,32.058,52.619,29.509 -2020-07-17 17:15:00,97.39,32.042,52.619,29.509 -2020-07-17 17:30:00,96.03,31.074,52.619,29.509 -2020-07-17 17:45:00,101.63,29.944000000000003,52.619,29.509 -2020-07-17 18:00:00,104.59,33.204,52.99,29.509 -2020-07-17 18:15:00,104.12,32.05,52.99,29.509 -2020-07-17 18:30:00,99.36,29.965999999999998,52.99,29.509 -2020-07-17 18:45:00,95.42,33.177,52.99,29.509 -2020-07-17 19:00:00,99.76,35.439,51.923,29.509 -2020-07-17 19:15:00,99.09,34.96,51.923,29.509 -2020-07-17 19:30:00,93.72,33.879,51.923,29.509 -2020-07-17 19:45:00,89.16,31.75,51.923,29.509 -2020-07-17 20:00:00,86.65,29.105999999999998,56.238,29.509 -2020-07-17 20:15:00,91.65,29.175,56.238,29.509 -2020-07-17 20:30:00,91.6,29.116999999999997,56.238,29.509 -2020-07-17 20:45:00,89.51,28.627,56.238,29.509 -2020-07-17 21:00:00,81.75,28.764,52.426,29.509 -2020-07-17 21:15:00,84.05,31.724,52.426,29.509 -2020-07-17 21:30:00,85.59,32.179,52.426,29.509 -2020-07-17 21:45:00,85.67,33.286,52.426,29.509 -2020-07-17 22:00:00,79.08,30.348000000000003,48.196000000000005,29.509 -2020-07-17 22:15:00,73.88,32.935,48.196000000000005,29.509 -2020-07-17 22:30:00,71.96,33.379,48.196000000000005,29.509 -2020-07-17 22:45:00,70.94,30.925,48.196000000000005,29.509 -2020-07-17 23:00:00,69.13,29.535999999999998,41.71,29.509 -2020-07-17 23:15:00,72.96,26.595,41.71,29.509 -2020-07-17 23:30:00,74.34,23.662,41.71,29.509 -2020-07-17 23:45:00,73.55,22.548000000000002,41.71,29.509 -2020-07-18 00:00:00,64.97,17.482,41.105,29.398000000000003 -2020-07-18 00:15:00,64.83,18.22,41.105,29.398000000000003 -2020-07-18 00:30:00,69.52,16.590999999999998,41.105,29.398000000000003 -2020-07-18 00:45:00,69.35,16.285,41.105,29.398000000000003 -2020-07-18 01:00:00,67.98,16.169,36.934,29.398000000000003 -2020-07-18 01:15:00,63.54,15.332,36.934,29.398000000000003 -2020-07-18 01:30:00,65.47,14.513,36.934,29.398000000000003 -2020-07-18 01:45:00,67.32,14.98,36.934,29.398000000000003 -2020-07-18 02:00:00,66.36,14.703,34.782,29.398000000000003 -2020-07-18 02:15:00,62.18,14.513,34.782,29.398000000000003 -2020-07-18 02:30:00,60.75,14.605,34.782,29.398000000000003 -2020-07-18 02:45:00,66.16,15.431,34.782,29.398000000000003 -2020-07-18 03:00:00,65.84,15.811,34.489000000000004,29.398000000000003 -2020-07-18 03:15:00,67.15,14.513,34.489000000000004,29.398000000000003 -2020-07-18 03:30:00,60.47,14.513,34.489000000000004,29.398000000000003 -2020-07-18 03:45:00,66.51,14.547,34.489000000000004,29.398000000000003 -2020-07-18 04:00:00,65.6,17.13,34.111,29.398000000000003 -2020-07-18 04:15:00,60.82,20.293,34.111,29.398000000000003 -2020-07-18 04:30:00,65.33,16.974,34.111,29.398000000000003 -2020-07-18 04:45:00,61.82,16.62,34.111,29.398000000000003 -2020-07-18 05:00:00,61.13,20.213,33.283,29.398000000000003 -2020-07-18 05:15:00,60.73,16.794,33.283,29.398000000000003 -2020-07-18 05:30:00,62.16,14.513,33.283,29.398000000000003 -2020-07-18 05:45:00,66.61,15.129000000000001,33.283,29.398000000000003 -2020-07-18 06:00:00,72.23,26.281,33.653,29.398000000000003 -2020-07-18 06:15:00,71.83,33.03,33.653,29.398000000000003 -2020-07-18 06:30:00,69.3,30.125,33.653,29.398000000000003 -2020-07-18 06:45:00,68.38,29.725,33.653,29.398000000000003 -2020-07-18 07:00:00,73.72,29.413,36.732,29.398000000000003 -2020-07-18 07:15:00,77.89,29.795,36.732,29.398000000000003 -2020-07-18 07:30:00,79.76,26.998,36.732,29.398000000000003 -2020-07-18 07:45:00,78.08,28.014,36.732,29.398000000000003 -2020-07-18 08:00:00,79.55,24.814,41.318999999999996,29.398000000000003 -2020-07-18 08:15:00,85.3,28.331999999999997,41.318999999999996,29.398000000000003 -2020-07-18 08:30:00,84.34,29.479,41.318999999999996,29.398000000000003 -2020-07-18 08:45:00,82.38,32.879,41.318999999999996,29.398000000000003 -2020-07-18 09:00:00,79.5,29.301,43.195,29.398000000000003 -2020-07-18 09:15:00,79.99,31.334,43.195,29.398000000000003 -2020-07-18 09:30:00,88.35,34.856,43.195,29.398000000000003 -2020-07-18 09:45:00,91.53,38.098,43.195,29.398000000000003 -2020-07-18 10:00:00,87.81,36.235,41.843999999999994,29.398000000000003 -2020-07-18 10:15:00,83.2,37.816,41.843999999999994,29.398000000000003 -2020-07-18 10:30:00,84.65,37.939,41.843999999999994,29.398000000000003 -2020-07-18 10:45:00,92.01,38.341,41.843999999999994,29.398000000000003 -2020-07-18 11:00:00,88.51,36.077,39.035,29.398000000000003 -2020-07-18 11:15:00,83.11,37.3,39.035,29.398000000000003 -2020-07-18 11:30:00,78.1,38.375,39.035,29.398000000000003 -2020-07-18 11:45:00,76.27,39.258,39.035,29.398000000000003 -2020-07-18 12:00:00,74.23,34.78,38.001,29.398000000000003 -2020-07-18 12:15:00,71.26,34.455,38.001,29.398000000000003 -2020-07-18 12:30:00,65.03,33.147,38.001,29.398000000000003 -2020-07-18 12:45:00,61.3,34.099000000000004,38.001,29.398000000000003 -2020-07-18 13:00:00,60.24,33.71,34.747,29.398000000000003 -2020-07-18 13:15:00,62.03,34.865,34.747,29.398000000000003 -2020-07-18 13:30:00,65.18,34.141,34.747,29.398000000000003 -2020-07-18 13:45:00,70.0,32.931999999999995,34.747,29.398000000000003 -2020-07-18 14:00:00,72.75,33.854,33.434,29.398000000000003 -2020-07-18 14:15:00,74.53,32.037,33.434,29.398000000000003 -2020-07-18 14:30:00,77.56,32.413000000000004,33.434,29.398000000000003 -2020-07-18 14:45:00,79.82,32.749,33.434,29.398000000000003 -2020-07-18 15:00:00,79.73,35.416,35.921,29.398000000000003 -2020-07-18 15:15:00,78.71,33.518,35.921,29.398000000000003 -2020-07-18 15:30:00,78.58,31.645,35.921,29.398000000000003 -2020-07-18 15:45:00,78.43,29.824,35.921,29.398000000000003 -2020-07-18 16:00:00,77.97,33.81,39.427,29.398000000000003 -2020-07-18 16:15:00,75.31,33.069,39.427,29.398000000000003 -2020-07-18 16:30:00,75.91,32.207,39.427,29.398000000000003 -2020-07-18 16:45:00,77.36,28.189,39.427,29.398000000000003 -2020-07-18 17:00:00,78.24,32.734,44.096000000000004,29.398000000000003 -2020-07-18 17:15:00,78.03,30.230999999999998,44.096000000000004,29.398000000000003 -2020-07-18 17:30:00,78.44,29.135,44.096000000000004,29.398000000000003 -2020-07-18 17:45:00,80.13,28.595,44.096000000000004,29.398000000000003 -2020-07-18 18:00:00,79.23,33.352,43.931000000000004,29.398000000000003 -2020-07-18 18:15:00,78.26,33.839,43.931000000000004,29.398000000000003 -2020-07-18 18:30:00,77.24,33.111,43.931000000000004,29.398000000000003 -2020-07-18 18:45:00,76.69,32.857,43.931000000000004,29.398000000000003 -2020-07-18 19:00:00,73.66,33.239000000000004,42.187,29.398000000000003 -2020-07-18 19:15:00,71.27,31.711,42.187,29.398000000000003 -2020-07-18 19:30:00,70.94,31.392,42.187,29.398000000000003 -2020-07-18 19:45:00,71.36,31.168000000000003,42.187,29.398000000000003 -2020-07-18 20:00:00,71.01,29.235,38.315,29.398000000000003 -2020-07-18 20:15:00,72.39,28.453000000000003,38.315,29.398000000000003 -2020-07-18 20:30:00,72.9,27.475,38.315,29.398000000000003 -2020-07-18 20:45:00,72.58,29.005,38.315,29.398000000000003 -2020-07-18 21:00:00,71.06,27.381,36.843,29.398000000000003 -2020-07-18 21:15:00,70.83,29.934,36.843,29.398000000000003 -2020-07-18 21:30:00,68.87,30.485,36.843,29.398000000000003 -2020-07-18 21:45:00,68.49,31.026,36.843,29.398000000000003 -2020-07-18 22:00:00,65.43,27.968000000000004,37.260999999999996,29.398000000000003 -2020-07-18 22:15:00,65.56,30.64,37.260999999999996,29.398000000000003 -2020-07-18 22:30:00,63.24,30.226,37.260999999999996,29.398000000000003 -2020-07-18 22:45:00,62.82,28.031999999999996,37.260999999999996,29.398000000000003 -2020-07-18 23:00:00,57.26,25.816999999999997,32.148,29.398000000000003 -2020-07-18 23:15:00,59.35,23.447,32.148,29.398000000000003 -2020-07-18 23:30:00,58.36,23.248,32.148,29.398000000000003 -2020-07-18 23:45:00,57.61,22.671,32.148,29.398000000000003 -2020-07-19 00:00:00,55.61,18.977,28.905,29.398000000000003 -2020-07-19 00:15:00,55.79,18.499000000000002,28.905,29.398000000000003 -2020-07-19 00:30:00,54.68,16.748,28.905,29.398000000000003 -2020-07-19 00:45:00,54.38,16.272000000000002,28.905,29.398000000000003 -2020-07-19 01:00:00,51.87,16.452,26.906999999999996,29.398000000000003 -2020-07-19 01:15:00,53.39,15.395999999999999,26.906999999999996,29.398000000000003 -2020-07-19 01:30:00,53.69,14.513,26.906999999999996,29.398000000000003 -2020-07-19 01:45:00,53.75,14.513,26.906999999999996,29.398000000000003 -2020-07-19 02:00:00,52.09,14.513,25.938000000000002,29.398000000000003 -2020-07-19 02:15:00,52.77,14.513,25.938000000000002,29.398000000000003 -2020-07-19 02:30:00,52.15,15.205,25.938000000000002,29.398000000000003 -2020-07-19 02:45:00,52.3,15.685,25.938000000000002,29.398000000000003 -2020-07-19 03:00:00,51.95,16.727999999999998,24.693,29.398000000000003 -2020-07-19 03:15:00,52.28,14.535,24.693,29.398000000000003 -2020-07-19 03:30:00,53.32,14.513,24.693,29.398000000000003 -2020-07-19 03:45:00,53.05,14.513,24.693,29.398000000000003 -2020-07-19 04:00:00,52.24,16.62,25.683000000000003,29.398000000000003 -2020-07-19 04:15:00,51.65,19.378,25.683000000000003,29.398000000000003 -2020-07-19 04:30:00,51.6,17.485,25.683000000000003,29.398000000000003 -2020-07-19 04:45:00,52.23,16.61,25.683000000000003,29.398000000000003 -2020-07-19 05:00:00,51.43,20.625,26.023000000000003,29.398000000000003 -2020-07-19 05:15:00,51.17,16.522000000000002,26.023000000000003,29.398000000000003 -2020-07-19 05:30:00,51.75,14.513,26.023000000000003,29.398000000000003 -2020-07-19 05:45:00,52.6,14.513,26.023000000000003,29.398000000000003 -2020-07-19 06:00:00,54.27,22.829,25.834,29.398000000000003 -2020-07-19 06:15:00,54.5,30.6,25.834,29.398000000000003 -2020-07-19 06:30:00,55.07,27.053,25.834,29.398000000000003 -2020-07-19 06:45:00,57.47,25.699,25.834,29.398000000000003 -2020-07-19 07:00:00,59.13,25.54,27.765,29.398000000000003 -2020-07-19 07:15:00,59.65,24.248,27.765,29.398000000000003 -2020-07-19 07:30:00,60.2,22.959,27.765,29.398000000000003 -2020-07-19 07:45:00,60.84,24.031999999999996,27.765,29.398000000000003 -2020-07-19 08:00:00,61.14,21.519000000000002,31.357,29.398000000000003 -2020-07-19 08:15:00,58.21,26.334,31.357,29.398000000000003 -2020-07-19 08:30:00,57.28,28.247,31.357,29.398000000000003 -2020-07-19 08:45:00,58.82,31.338,31.357,29.398000000000003 -2020-07-19 09:00:00,59.11,27.697,33.238,29.398000000000003 -2020-07-19 09:15:00,60.1,29.121,33.238,29.398000000000003 -2020-07-19 09:30:00,59.77,33.126,33.238,29.398000000000003 -2020-07-19 09:45:00,62.12,37.48,33.238,29.398000000000003 -2020-07-19 10:00:00,62.62,35.931,34.22,29.398000000000003 -2020-07-19 10:15:00,63.28,37.588,34.22,29.398000000000003 -2020-07-19 10:30:00,63.94,37.878,34.22,29.398000000000003 -2020-07-19 10:45:00,63.69,39.635,34.22,29.398000000000003 -2020-07-19 11:00:00,63.64,36.87,36.298,29.398000000000003 -2020-07-19 11:15:00,65.93,37.582,36.298,29.398000000000003 -2020-07-19 11:30:00,62.62,39.328,36.298,29.398000000000003 -2020-07-19 11:45:00,61.61,40.412,36.298,29.398000000000003 -2020-07-19 12:00:00,60.44,37.195,33.52,29.398000000000003 -2020-07-19 12:15:00,58.9,35.936,33.52,29.398000000000003 -2020-07-19 12:30:00,58.57,35.041,33.52,29.398000000000003 -2020-07-19 12:45:00,56.89,35.4,33.52,29.398000000000003 -2020-07-19 13:00:00,54.98,34.747,30.12,29.398000000000003 -2020-07-19 13:15:00,53.24,34.882,30.12,29.398000000000003 -2020-07-19 13:30:00,51.7,32.954,30.12,29.398000000000003 -2020-07-19 13:45:00,54.52,33.073,30.12,29.398000000000003 -2020-07-19 14:00:00,54.96,35.285,27.233,29.398000000000003 -2020-07-19 14:15:00,52.39,33.801,27.233,29.398000000000003 -2020-07-19 14:30:00,50.08,32.659,27.233,29.398000000000003 -2020-07-19 14:45:00,49.54,31.871,27.233,29.398000000000003 -2020-07-19 15:00:00,51.32,34.882,27.468000000000004,29.398000000000003 -2020-07-19 15:15:00,51.02,32.001,27.468000000000004,29.398000000000003 -2020-07-19 15:30:00,52.26,29.862,27.468000000000004,29.398000000000003 -2020-07-19 15:45:00,52.6,28.27,27.468000000000004,29.398000000000003 -2020-07-19 16:00:00,56.74,30.274,30.8,29.398000000000003 -2020-07-19 16:15:00,57.44,29.891,30.8,29.398000000000003 -2020-07-19 16:30:00,60.95,30.116999999999997,30.8,29.398000000000003 -2020-07-19 16:45:00,61.94,26.168000000000003,30.8,29.398000000000003 -2020-07-19 17:00:00,67.22,31.125999999999998,37.806,29.398000000000003 -2020-07-19 17:15:00,71.64,30.329,37.806,29.398000000000003 -2020-07-19 17:30:00,73.51,30.09,37.806,29.398000000000003 -2020-07-19 17:45:00,74.82,29.78,37.806,29.398000000000003 -2020-07-19 18:00:00,75.5,35.266,40.766,29.398000000000003 -2020-07-19 18:15:00,73.22,35.173,40.766,29.398000000000003 -2020-07-19 18:30:00,72.29,34.387,40.766,29.398000000000003 -2020-07-19 18:45:00,72.76,34.076,40.766,29.398000000000003 -2020-07-19 19:00:00,74.69,36.863,41.163000000000004,29.398000000000003 -2020-07-19 19:15:00,73.14,34.086,41.163000000000004,29.398000000000003 -2020-07-19 19:30:00,71.41,33.510999999999996,41.163000000000004,29.398000000000003 -2020-07-19 19:45:00,72.67,32.666,41.163000000000004,29.398000000000003 -2020-07-19 20:00:00,73.53,30.916,39.885999999999996,29.398000000000003 -2020-07-19 20:15:00,75.2,29.899,39.885999999999996,29.398000000000003 -2020-07-19 20:30:00,76.95,29.673000000000002,39.885999999999996,29.398000000000003 -2020-07-19 20:45:00,76.76,29.506,39.885999999999996,29.398000000000003 -2020-07-19 21:00:00,74.32,28.004,38.900999999999996,29.398000000000003 -2020-07-19 21:15:00,74.99,30.284000000000002,38.900999999999996,29.398000000000003 -2020-07-19 21:30:00,73.19,30.101999999999997,38.900999999999996,29.398000000000003 -2020-07-19 21:45:00,71.17,30.999000000000002,38.900999999999996,29.398000000000003 -2020-07-19 22:00:00,66.49,30.218000000000004,39.806999999999995,29.398000000000003 -2020-07-19 22:15:00,68.96,31.16,39.806999999999995,29.398000000000003 -2020-07-19 22:30:00,67.63,30.438000000000002,39.806999999999995,29.398000000000003 -2020-07-19 22:45:00,67.17,26.953000000000003,39.806999999999995,29.398000000000003 -2020-07-19 23:00:00,62.05,24.655,35.564,29.398000000000003 -2020-07-19 23:15:00,63.9,23.502,35.564,29.398000000000003 -2020-07-19 23:30:00,62.49,22.683000000000003,35.564,29.398000000000003 -2020-07-19 23:45:00,62.2,22.201,35.564,29.398000000000003 -2020-07-20 00:00:00,60.09,20.273,36.578,29.509 -2020-07-20 00:15:00,60.71,20.372,36.578,29.509 -2020-07-20 00:30:00,59.91,18.199,36.578,29.509 -2020-07-20 00:45:00,60.28,17.354,36.578,29.509 -2020-07-20 01:00:00,58.64,17.95,35.292,29.509 -2020-07-20 01:15:00,58.78,16.954,35.292,29.509 -2020-07-20 01:30:00,59.4,15.62,35.292,29.509 -2020-07-20 01:45:00,58.95,16.297,35.292,29.509 -2020-07-20 02:00:00,58.17,16.67,34.319,29.509 -2020-07-20 02:15:00,59.43,14.513,34.319,29.509 -2020-07-20 02:30:00,65.62,16.453,34.319,29.509 -2020-07-20 02:45:00,68.61,16.833,34.319,29.509 -2020-07-20 03:00:00,68.25,18.299,33.13,29.509 -2020-07-20 03:15:00,63.19,16.746,33.13,29.509 -2020-07-20 03:30:00,64.3,16.148,33.13,29.509 -2020-07-20 03:45:00,71.14,16.613,33.13,29.509 -2020-07-20 04:00:00,74.7,22.09,33.851,29.509 -2020-07-20 04:15:00,76.07,27.603,33.851,29.509 -2020-07-20 04:30:00,72.95,24.997,33.851,29.509 -2020-07-20 04:45:00,78.22,24.505,33.851,29.509 -2020-07-20 05:00:00,83.67,34.926,38.718,29.509 -2020-07-20 05:15:00,86.56,40.138000000000005,38.718,29.509 -2020-07-20 05:30:00,86.91,34.939,38.718,29.509 -2020-07-20 05:45:00,96.34,33.38,38.718,29.509 -2020-07-20 06:00:00,101.08,32.46,51.648999999999994,29.509 -2020-07-20 06:15:00,103.96,31.761999999999997,51.648999999999994,29.509 -2020-07-20 06:30:00,100.97,31.808000000000003,51.648999999999994,29.509 -2020-07-20 06:45:00,101.61,35.384,51.648999999999994,29.509 -2020-07-20 07:00:00,101.25,34.973,60.159,29.509 -2020-07-20 07:15:00,101.47,36.051,60.159,29.509 -2020-07-20 07:30:00,105.36,33.915,60.159,29.509 -2020-07-20 07:45:00,106.42,35.589,60.159,29.509 -2020-07-20 08:00:00,107.88,31.041,53.8,29.509 -2020-07-20 08:15:00,105.6,34.771,53.8,29.509 -2020-07-20 08:30:00,101.05,36.065,53.8,29.509 -2020-07-20 08:45:00,107.78,39.739000000000004,53.8,29.509 -2020-07-20 09:00:00,106.48,34.959,50.583,29.509 -2020-07-20 09:15:00,103.76,34.821,50.583,29.509 -2020-07-20 09:30:00,100.88,37.909,50.583,29.509 -2020-07-20 09:45:00,97.4,39.689,50.583,29.509 -2020-07-20 10:00:00,103.26,38.675,49.11600000000001,29.509 -2020-07-20 10:15:00,107.19,40.2,49.11600000000001,29.509 -2020-07-20 10:30:00,105.63,40.084,49.11600000000001,29.509 -2020-07-20 10:45:00,97.62,39.985,49.11600000000001,29.509 -2020-07-20 11:00:00,97.57,37.84,49.056000000000004,29.509 -2020-07-20 11:15:00,103.01,38.643,49.056000000000004,29.509 -2020-07-20 11:30:00,102.55,40.983000000000004,49.056000000000004,29.509 -2020-07-20 11:45:00,105.27,42.663999999999994,49.056000000000004,29.509 -2020-07-20 12:00:00,98.29,37.333,47.227,29.509 -2020-07-20 12:15:00,99.49,36.194,47.227,29.509 -2020-07-20 12:30:00,97.27,34.074,47.227,29.509 -2020-07-20 12:45:00,96.77,34.235,47.227,29.509 -2020-07-20 13:00:00,95.98,34.484,47.006,29.509 -2020-07-20 13:15:00,91.51,33.8,47.006,29.509 -2020-07-20 13:30:00,91.54,32.129,47.006,29.509 -2020-07-20 13:45:00,91.45,33.25,47.006,29.509 -2020-07-20 14:00:00,91.7,34.586,47.19,29.509 -2020-07-20 14:15:00,91.78,33.838,47.19,29.509 -2020-07-20 14:30:00,88.92,32.577,47.19,29.509 -2020-07-20 14:45:00,90.77,34.091,47.19,29.509 -2020-07-20 15:00:00,87.71,36.536,47.846000000000004,29.509 -2020-07-20 15:15:00,88.74,33.169000000000004,47.846000000000004,29.509 -2020-07-20 15:30:00,89.17,31.98,47.846000000000004,29.509 -2020-07-20 15:45:00,88.84,29.899,47.846000000000004,29.509 -2020-07-20 16:00:00,89.26,33.132,49.641000000000005,29.509 -2020-07-20 16:15:00,89.55,32.911,49.641000000000005,29.509 -2020-07-20 16:30:00,91.94,32.528,49.641000000000005,29.509 -2020-07-20 16:45:00,94.53,28.75,49.641000000000005,29.509 -2020-07-20 17:00:00,95.39,32.519,54.133,29.509 -2020-07-20 17:15:00,94.5,32.255,54.133,29.509 -2020-07-20 17:30:00,96.79,31.66,54.133,29.509 -2020-07-20 17:45:00,98.25,31.088,54.133,29.509 -2020-07-20 18:00:00,98.64,35.414,53.761,29.509 -2020-07-20 18:15:00,97.32,33.545,53.761,29.509 -2020-07-20 18:30:00,97.45,31.878,53.761,29.509 -2020-07-20 18:45:00,96.82,34.93,53.761,29.509 -2020-07-20 19:00:00,93.5,37.611,53.923,29.509 -2020-07-20 19:15:00,90.15,36.361,53.923,29.509 -2020-07-20 19:30:00,89.51,35.339,53.923,29.509 -2020-07-20 19:45:00,89.22,33.908,53.923,29.509 -2020-07-20 20:00:00,86.74,31.003,58.786,29.509 -2020-07-20 20:15:00,87.84,31.72,58.786,29.509 -2020-07-20 20:30:00,88.62,32.219,58.786,29.509 -2020-07-20 20:45:00,88.28,32.134,58.786,29.509 -2020-07-20 21:00:00,86.92,29.896,54.591,29.509 -2020-07-20 21:15:00,85.22,32.747,54.591,29.509 -2020-07-20 21:30:00,80.97,33.064,54.591,29.509 -2020-07-20 21:45:00,80.99,33.756,54.591,29.509 -2020-07-20 22:00:00,74.55,31.004,51.551,29.509 -2020-07-20 22:15:00,75.32,34.176,51.551,29.509 -2020-07-20 22:30:00,74.29,29.589000000000002,51.551,29.509 -2020-07-20 22:45:00,72.88,26.478,51.551,29.509 -2020-07-20 23:00:00,68.65,24.109,44.716,29.509 -2020-07-20 23:15:00,69.81,20.999000000000002,44.716,29.509 -2020-07-20 23:30:00,68.67,19.935,44.716,29.509 -2020-07-20 23:45:00,67.93,18.665,44.716,29.509 -2020-07-21 00:00:00,63.82,17.929000000000002,43.01,29.509 -2020-07-21 00:15:00,65.39,18.83,43.01,29.509 -2020-07-21 00:30:00,64.02,17.522000000000002,43.01,29.509 -2020-07-21 00:45:00,64.2,17.633,43.01,29.509 -2020-07-21 01:00:00,64.16,17.659000000000002,40.687,29.509 -2020-07-21 01:15:00,65.18,16.822,40.687,29.509 -2020-07-21 01:30:00,64.43,15.337,40.687,29.509 -2020-07-21 01:45:00,65.07,15.425,40.687,29.509 -2020-07-21 02:00:00,63.66,15.28,39.554,29.509 -2020-07-21 02:15:00,65.32,14.513,39.554,29.509 -2020-07-21 02:30:00,72.4,15.956,39.554,29.509 -2020-07-21 02:45:00,73.53,16.692,39.554,29.509 -2020-07-21 03:00:00,68.84,17.657,38.958,29.509 -2020-07-21 03:15:00,66.73,17.21,38.958,29.509 -2020-07-21 03:30:00,70.8,16.541,38.958,29.509 -2020-07-21 03:45:00,75.24,15.792,38.958,29.509 -2020-07-21 04:00:00,77.83,19.896,39.783,29.509 -2020-07-21 04:15:00,79.77,25.436,39.783,29.509 -2020-07-21 04:30:00,76.2,22.725,39.783,29.509 -2020-07-21 04:45:00,78.11,22.65,39.783,29.509 -2020-07-21 05:00:00,86.55,34.32,42.281000000000006,29.509 -2020-07-21 05:15:00,88.52,40.176,42.281000000000006,29.509 -2020-07-21 05:30:00,90.48,35.345,42.281000000000006,29.509 -2020-07-21 05:45:00,99.68,33.008,42.281000000000006,29.509 -2020-07-21 06:00:00,105.81,33.314,50.801,29.509 -2020-07-21 06:15:00,105.55,32.696,50.801,29.509 -2020-07-21 06:30:00,99.73,32.465,50.801,29.509 -2020-07-21 06:45:00,103.62,35.137,50.801,29.509 -2020-07-21 07:00:00,102.74,34.907,60.202,29.509 -2020-07-21 07:15:00,100.9,35.742,60.202,29.509 -2020-07-21 07:30:00,99.85,33.693000000000005,60.202,29.509 -2020-07-21 07:45:00,99.38,34.294000000000004,60.202,29.509 -2020-07-21 08:00:00,99.42,29.659000000000002,54.461000000000006,29.509 -2020-07-21 08:15:00,99.3,33.006,54.461000000000006,29.509 -2020-07-21 08:30:00,105.13,34.493,54.461000000000006,29.509 -2020-07-21 08:45:00,106.32,37.162,54.461000000000006,29.509 -2020-07-21 09:00:00,105.96,32.863,50.753,29.509 -2020-07-21 09:15:00,101.04,32.369,50.753,29.509 -2020-07-21 09:30:00,99.71,36.133,50.753,29.509 -2020-07-21 09:45:00,98.06,39.431999999999995,50.753,29.509 -2020-07-21 10:00:00,97.74,36.961999999999996,49.703,29.509 -2020-07-21 10:15:00,100.93,38.46,49.703,29.509 -2020-07-21 10:30:00,104.39,38.344,49.703,29.509 -2020-07-21 10:45:00,104.51,39.336999999999996,49.703,29.509 -2020-07-21 11:00:00,102.28,37.006,49.42100000000001,29.509 -2020-07-21 11:15:00,99.28,38.304,49.42100000000001,29.509 -2020-07-21 11:30:00,95.02,39.493,49.42100000000001,29.509 -2020-07-21 11:45:00,101.89,40.571,49.42100000000001,29.509 -2020-07-21 12:00:00,99.86,35.217,47.155,29.509 -2020-07-21 12:15:00,95.66,34.506,47.155,29.509 -2020-07-21 12:30:00,93.76,33.255,47.155,29.509 -2020-07-21 12:45:00,93.59,34.227,47.155,29.509 -2020-07-21 13:00:00,92.33,34.104,47.515,29.509 -2020-07-21 13:15:00,91.18,35.485,47.515,29.509 -2020-07-21 13:30:00,89.86,33.629,47.515,29.509 -2020-07-21 13:45:00,90.0,33.645,47.515,29.509 -2020-07-21 14:00:00,90.09,35.437,47.575,29.509 -2020-07-21 14:15:00,92.68,34.449,47.575,29.509 -2020-07-21 14:30:00,90.15,33.472,47.575,29.509 -2020-07-21 14:45:00,88.28,34.118,47.575,29.509 -2020-07-21 15:00:00,88.62,36.428000000000004,48.903,29.509 -2020-07-21 15:15:00,88.99,34.052,48.903,29.509 -2020-07-21 15:30:00,89.61,32.603,48.903,29.509 -2020-07-21 15:45:00,91.36,30.955,48.903,29.509 -2020-07-21 16:00:00,93.5,33.351,50.218999999999994,29.509 -2020-07-21 16:15:00,91.9,33.176,50.218999999999994,29.509 -2020-07-21 16:30:00,94.2,32.317,50.218999999999994,29.509 -2020-07-21 16:45:00,95.32,29.316,50.218999999999994,29.509 -2020-07-21 17:00:00,95.98,33.25,55.396,29.509 -2020-07-21 17:15:00,97.01,33.464,55.396,29.509 -2020-07-21 17:30:00,98.47,32.316,55.396,29.509 -2020-07-21 17:45:00,99.18,31.405,55.396,29.509 -2020-07-21 18:00:00,98.99,34.709,55.583999999999996,29.509 -2020-07-21 18:15:00,99.15,34.52,55.583999999999996,29.509 -2020-07-21 18:30:00,101.85,32.603,55.583999999999996,29.509 -2020-07-21 18:45:00,98.64,35.358000000000004,55.583999999999996,29.509 -2020-07-21 19:00:00,97.79,36.768,56.071000000000005,29.509 -2020-07-21 19:15:00,91.91,35.734,56.071000000000005,29.509 -2020-07-21 19:30:00,90.5,34.538000000000004,56.071000000000005,29.509 -2020-07-21 19:45:00,89.8,33.467,56.071000000000005,29.509 -2020-07-21 20:00:00,87.79,30.967,61.55,29.509 -2020-07-21 20:15:00,91.21,30.176,61.55,29.509 -2020-07-21 20:30:00,90.1,30.614,61.55,29.509 -2020-07-21 20:45:00,90.93,31.037,61.55,29.509 -2020-07-21 21:00:00,86.27,29.811999999999998,55.94,29.509 -2020-07-21 21:15:00,86.42,30.99,55.94,29.509 -2020-07-21 21:30:00,83.72,31.548000000000002,55.94,29.509 -2020-07-21 21:45:00,82.77,32.415,55.94,29.509 -2020-07-21 22:00:00,76.63,29.698,52.857,29.509 -2020-07-21 22:15:00,77.71,32.525999999999996,52.857,29.509 -2020-07-21 22:30:00,75.72,28.224,52.857,29.509 -2020-07-21 22:45:00,76.32,25.078000000000003,52.857,29.509 -2020-07-21 23:00:00,71.02,21.905,46.04,29.509 -2020-07-21 23:15:00,71.7,20.565,46.04,29.509 -2020-07-21 23:30:00,70.36,19.544,46.04,29.509 -2020-07-21 23:45:00,70.53,18.503,46.04,29.509 -2020-07-22 00:00:00,67.59,17.987000000000002,42.195,29.509 -2020-07-22 00:15:00,68.74,18.885,42.195,29.509 -2020-07-22 00:30:00,66.81,17.581,42.195,29.509 -2020-07-22 00:45:00,67.64,17.7,42.195,29.509 -2020-07-22 01:00:00,66.47,17.722,38.82,29.509 -2020-07-22 01:15:00,67.91,16.884,38.82,29.509 -2020-07-22 01:30:00,65.56,15.405999999999999,38.82,29.509 -2020-07-22 01:45:00,66.27,15.485999999999999,38.82,29.509 -2020-07-22 02:00:00,64.97,15.347999999999999,37.023,29.509 -2020-07-22 02:15:00,72.4,14.513,37.023,29.509 -2020-07-22 02:30:00,74.12,16.021,37.023,29.509 -2020-07-22 02:45:00,73.22,16.758,37.023,29.509 -2020-07-22 03:00:00,66.46,17.713,36.818000000000005,29.509 -2020-07-22 03:15:00,75.15,17.28,36.818000000000005,29.509 -2020-07-22 03:30:00,76.71,16.618,36.818000000000005,29.509 -2020-07-22 03:45:00,78.64,15.88,36.818000000000005,29.509 -2020-07-22 04:00:00,77.87,19.965,37.495,29.509 -2020-07-22 04:15:00,72.77,25.488000000000003,37.495,29.509 -2020-07-22 04:30:00,76.27,22.774,37.495,29.509 -2020-07-22 04:45:00,81.51,22.7,37.495,29.509 -2020-07-22 05:00:00,85.93,34.351,39.858000000000004,29.509 -2020-07-22 05:15:00,89.79,40.176,39.858000000000004,29.509 -2020-07-22 05:30:00,98.41,35.385,39.858000000000004,29.509 -2020-07-22 05:45:00,102.38,33.051,39.858000000000004,29.509 -2020-07-22 06:00:00,107.43,33.343,52.867,29.509 -2020-07-22 06:15:00,101.45,32.733000000000004,52.867,29.509 -2020-07-22 06:30:00,105.73,32.514,52.867,29.509 -2020-07-22 06:45:00,102.48,35.209,52.867,29.509 -2020-07-22 07:00:00,105.43,34.973,66.061,29.509 -2020-07-22 07:15:00,109.7,35.829,66.061,29.509 -2020-07-22 07:30:00,109.95,33.79,66.061,29.509 -2020-07-22 07:45:00,108.67,34.412,66.061,29.509 -2020-07-22 08:00:00,103.21,29.785,58.532,29.509 -2020-07-22 08:15:00,103.06,33.128,58.532,29.509 -2020-07-22 08:30:00,103.46,34.603,58.532,29.509 -2020-07-22 08:45:00,102.16,37.262,58.532,29.509 -2020-07-22 09:00:00,103.55,32.961999999999996,56.047,29.509 -2020-07-22 09:15:00,112.12,32.464,56.047,29.509 -2020-07-22 09:30:00,113.73,36.217,56.047,29.509 -2020-07-22 09:45:00,114.83,39.509,56.047,29.509 -2020-07-22 10:00:00,106.75,37.044000000000004,53.823,29.509 -2020-07-22 10:15:00,110.2,38.532,53.823,29.509 -2020-07-22 10:30:00,111.64,38.41,53.823,29.509 -2020-07-22 10:45:00,111.39,39.402,53.823,29.509 -2020-07-22 11:00:00,107.68,37.074,54.184,29.509 -2020-07-22 11:15:00,106.1,38.369,54.184,29.509 -2020-07-22 11:30:00,109.13,39.548,54.184,29.509 -2020-07-22 11:45:00,107.03,40.616,54.184,29.509 -2020-07-22 12:00:00,105.01,35.274,52.628,29.509 -2020-07-22 12:15:00,102.07,34.558,52.628,29.509 -2020-07-22 12:30:00,96.47,33.306,52.628,29.509 -2020-07-22 12:45:00,97.11,34.27,52.628,29.509 -2020-07-22 13:00:00,97.9,34.126999999999995,52.31,29.509 -2020-07-22 13:15:00,101.75,35.499,52.31,29.509 -2020-07-22 13:30:00,97.86,33.644,52.31,29.509 -2020-07-22 13:45:00,95.02,33.67,52.31,29.509 -2020-07-22 14:00:00,94.83,35.455999999999996,52.278999999999996,29.509 -2020-07-22 14:15:00,98.49,34.472,52.278999999999996,29.509 -2020-07-22 14:30:00,95.78,33.493,52.278999999999996,29.509 -2020-07-22 14:45:00,94.64,34.146,52.278999999999996,29.509 -2020-07-22 15:00:00,92.12,36.445,53.306999999999995,29.509 -2020-07-22 15:15:00,93.44,34.067,53.306999999999995,29.509 -2020-07-22 15:30:00,92.66,32.624,53.306999999999995,29.509 -2020-07-22 15:45:00,95.61,30.971999999999998,53.306999999999995,29.509 -2020-07-22 16:00:00,95.06,33.367,55.358999999999995,29.509 -2020-07-22 16:15:00,96.05,33.196,55.358999999999995,29.509 -2020-07-22 16:30:00,96.79,32.354,55.358999999999995,29.509 -2020-07-22 16:45:00,97.88,29.37,55.358999999999995,29.509 -2020-07-22 17:00:00,99.85,33.293,59.211999999999996,29.509 -2020-07-22 17:15:00,99.72,33.529,59.211999999999996,29.509 -2020-07-22 17:30:00,100.86,32.388000000000005,59.211999999999996,29.509 -2020-07-22 17:45:00,101.07,31.495,59.211999999999996,29.509 -2020-07-22 18:00:00,101.72,34.8,60.403999999999996,29.509 -2020-07-22 18:15:00,102.59,34.605,60.403999999999996,29.509 -2020-07-22 18:30:00,100.5,32.693000000000005,60.403999999999996,29.509 -2020-07-22 18:45:00,100.9,35.45,60.403999999999996,29.509 -2020-07-22 19:00:00,97.19,36.861,60.993,29.509 -2020-07-22 19:15:00,97.17,35.821999999999996,60.993,29.509 -2020-07-22 19:30:00,92.14,34.623000000000005,60.993,29.509 -2020-07-22 19:45:00,91.77,33.551,60.993,29.509 -2020-07-22 20:00:00,90.35,31.044,66.6,29.509 -2020-07-22 20:15:00,91.78,30.253,66.6,29.509 -2020-07-22 20:30:00,95.13,30.684,66.6,29.509 -2020-07-22 20:45:00,92.78,31.101999999999997,66.6,29.509 -2020-07-22 21:00:00,90.14,29.88,59.855,29.509 -2020-07-22 21:15:00,88.39,31.054000000000002,59.855,29.509 -2020-07-22 21:30:00,85.36,31.596,59.855,29.509 -2020-07-22 21:45:00,84.32,32.446,59.855,29.509 -2020-07-22 22:00:00,79.02,29.726,54.942,29.509 -2020-07-22 22:15:00,78.99,32.55,54.942,29.509 -2020-07-22 22:30:00,76.96,28.224,54.942,29.509 -2020-07-22 22:45:00,79.38,25.072,54.942,29.509 -2020-07-22 23:00:00,71.81,21.918000000000003,46.056000000000004,29.509 -2020-07-22 23:15:00,73.46,20.590999999999998,46.056000000000004,29.509 -2020-07-22 23:30:00,72.52,19.585,46.056000000000004,29.509 -2020-07-22 23:45:00,71.69,18.542,46.056000000000004,29.509 -2020-07-23 00:00:00,68.3,18.047,40.859,29.509 -2020-07-23 00:15:00,70.02,18.944000000000003,40.859,29.509 -2020-07-23 00:30:00,68.78,17.644000000000002,40.859,29.509 -2020-07-23 00:45:00,69.1,17.771,40.859,29.509 -2020-07-23 01:00:00,68.25,17.789,39.06,29.509 -2020-07-23 01:15:00,68.94,16.949,39.06,29.509 -2020-07-23 01:30:00,67.5,15.479000000000001,39.06,29.509 -2020-07-23 01:45:00,67.58,15.552999999999999,39.06,29.509 -2020-07-23 02:00:00,66.85,15.42,37.592,29.509 -2020-07-23 02:15:00,71.03,14.513,37.592,29.509 -2020-07-23 02:30:00,76.38,16.089000000000002,37.592,29.509 -2020-07-23 02:45:00,76.3,16.827,37.592,29.509 -2020-07-23 03:00:00,71.84,17.772000000000002,37.416,29.509 -2020-07-23 03:15:00,72.28,17.354,37.416,29.509 -2020-07-23 03:30:00,79.96,16.701,37.416,29.509 -2020-07-23 03:45:00,81.25,15.972000000000001,37.416,29.509 -2020-07-23 04:00:00,80.97,20.04,38.176,29.509 -2020-07-23 04:15:00,74.82,25.546,38.176,29.509 -2020-07-23 04:30:00,77.22,22.83,38.176,29.509 -2020-07-23 04:45:00,84.81,22.756999999999998,38.176,29.509 -2020-07-23 05:00:00,87.82,34.391,41.203,29.509 -2020-07-23 05:15:00,95.47,40.189,41.203,29.509 -2020-07-23 05:30:00,100.21,35.435,41.203,29.509 -2020-07-23 05:45:00,104.43,33.103,41.203,29.509 -2020-07-23 06:00:00,105.17,33.383,51.09,29.509 -2020-07-23 06:15:00,102.39,32.779,51.09,29.509 -2020-07-23 06:30:00,107.01,32.573,51.09,29.509 -2020-07-23 06:45:00,109.32,35.289,51.09,29.509 -2020-07-23 07:00:00,113.51,35.048,63.541000000000004,29.509 -2020-07-23 07:15:00,107.64,35.925,63.541000000000004,29.509 -2020-07-23 07:30:00,106.21,33.898,63.541000000000004,29.509 -2020-07-23 07:45:00,107.98,34.539,63.541000000000004,29.509 -2020-07-23 08:00:00,109.58,29.919,55.65,29.509 -2020-07-23 08:15:00,109.46,33.257,55.65,29.509 -2020-07-23 08:30:00,109.2,34.72,55.65,29.509 -2020-07-23 08:45:00,111.06,37.368,55.65,29.509 -2020-07-23 09:00:00,111.53,33.069,51.833999999999996,29.509 -2020-07-23 09:15:00,109.8,32.566,51.833999999999996,29.509 -2020-07-23 09:30:00,107.6,36.308,51.833999999999996,29.509 -2020-07-23 09:45:00,106.21,39.592,51.833999999999996,29.509 -2020-07-23 10:00:00,111.27,37.133,49.70399999999999,29.509 -2020-07-23 10:15:00,114.48,38.61,49.70399999999999,29.509 -2020-07-23 10:30:00,116.26,38.482,49.70399999999999,29.509 -2020-07-23 10:45:00,112.02,39.472,49.70399999999999,29.509 -2020-07-23 11:00:00,112.26,37.147,48.593999999999994,29.509 -2020-07-23 11:15:00,110.11,38.439,48.593999999999994,29.509 -2020-07-23 11:30:00,107.88,39.608000000000004,48.593999999999994,29.509 -2020-07-23 11:45:00,103.41,40.667,48.593999999999994,29.509 -2020-07-23 12:00:00,100.19,35.335,46.275,29.509 -2020-07-23 12:15:00,101.53,34.614000000000004,46.275,29.509 -2020-07-23 12:30:00,98.55,33.36,46.275,29.509 -2020-07-23 12:45:00,97.18,34.318000000000005,46.275,29.509 -2020-07-23 13:00:00,95.62,34.154,45.803000000000004,29.509 -2020-07-23 13:15:00,94.73,35.516,45.803000000000004,29.509 -2020-07-23 13:30:00,96.45,33.664,45.803000000000004,29.509 -2020-07-23 13:45:00,95.72,33.7,45.803000000000004,29.509 -2020-07-23 14:00:00,95.01,35.48,46.251999999999995,29.509 -2020-07-23 14:15:00,93.53,34.498000000000005,46.251999999999995,29.509 -2020-07-23 14:30:00,92.34,33.518,46.251999999999995,29.509 -2020-07-23 14:45:00,91.59,34.177,46.251999999999995,29.509 -2020-07-23 15:00:00,90.99,36.466,48.309,29.509 -2020-07-23 15:15:00,91.91,34.086,48.309,29.509 -2020-07-23 15:30:00,92.29,32.647,48.309,29.509 -2020-07-23 15:45:00,98.7,30.991999999999997,48.309,29.509 -2020-07-23 16:00:00,94.54,33.385,49.681999999999995,29.509 -2020-07-23 16:15:00,95.86,33.22,49.681999999999995,29.509 -2020-07-23 16:30:00,97.35,32.391999999999996,49.681999999999995,29.509 -2020-07-23 16:45:00,99.16,29.426,49.681999999999995,29.509 -2020-07-23 17:00:00,99.71,33.339,53.086000000000006,29.509 -2020-07-23 17:15:00,100.72,33.598,53.086000000000006,29.509 -2020-07-23 17:30:00,104.23,32.466,53.086000000000006,29.509 -2020-07-23 17:45:00,102.39,31.589000000000002,53.086000000000006,29.509 -2020-07-23 18:00:00,103.82,34.895,54.038999999999994,29.509 -2020-07-23 18:15:00,102.29,34.695,54.038999999999994,29.509 -2020-07-23 18:30:00,102.15,32.79,54.038999999999994,29.509 -2020-07-23 18:45:00,101.8,35.545,54.038999999999994,29.509 -2020-07-23 19:00:00,98.33,36.96,53.408,29.509 -2020-07-23 19:15:00,94.82,35.916,53.408,29.509 -2020-07-23 19:30:00,93.96,34.714,53.408,29.509 -2020-07-23 19:45:00,92.17,33.641,53.408,29.509 -2020-07-23 20:00:00,91.92,31.128,55.309,29.509 -2020-07-23 20:15:00,92.98,30.337,55.309,29.509 -2020-07-23 20:30:00,94.08,30.759,55.309,29.509 -2020-07-23 20:45:00,96.13,31.17,55.309,29.509 -2020-07-23 21:00:00,89.56,29.951999999999998,51.585,29.509 -2020-07-23 21:15:00,88.93,31.123,51.585,29.509 -2020-07-23 21:30:00,84.47,31.65,51.585,29.509 -2020-07-23 21:45:00,83.82,32.483000000000004,51.585,29.509 -2020-07-23 22:00:00,79.54,29.758000000000003,48.006,29.509 -2020-07-23 22:15:00,79.02,32.576,48.006,29.509 -2020-07-23 22:30:00,77.0,28.225,48.006,29.509 -2020-07-23 22:45:00,76.14,25.069000000000003,48.006,29.509 -2020-07-23 23:00:00,71.58,21.935,42.309,29.509 -2020-07-23 23:15:00,73.24,20.619,42.309,29.509 -2020-07-23 23:30:00,70.94,19.628,42.309,29.509 -2020-07-23 23:45:00,70.55,18.584,42.309,29.509 -2020-07-24 00:00:00,68.03,16.248,39.649,29.509 -2020-07-24 00:15:00,69.75,17.363,39.649,29.509 -2020-07-24 00:30:00,68.38,16.374000000000002,39.649,29.509 -2020-07-24 00:45:00,68.41,16.957,39.649,29.509 -2020-07-24 01:00:00,66.25,16.582,37.744,29.509 -2020-07-24 01:15:00,67.66,15.015,37.744,29.509 -2020-07-24 01:30:00,66.78,14.513,37.744,29.509 -2020-07-24 01:45:00,67.15,14.513,37.744,29.509 -2020-07-24 02:00:00,66.84,15.012,36.965,29.509 -2020-07-24 02:15:00,67.65,14.513,36.965,29.509 -2020-07-24 02:30:00,73.02,16.486,36.965,29.509 -2020-07-24 02:45:00,75.8,16.48,36.965,29.509 -2020-07-24 03:00:00,71.52,18.334,37.678000000000004,29.509 -2020-07-24 03:15:00,70.7,16.549,37.678000000000004,29.509 -2020-07-24 03:30:00,77.5,15.645999999999999,37.678000000000004,29.509 -2020-07-24 03:45:00,79.57,15.852,37.678000000000004,29.509 -2020-07-24 04:00:00,80.0,20.035999999999998,38.591,29.509 -2020-07-24 04:15:00,75.24,23.857,38.591,29.509 -2020-07-24 04:30:00,76.43,22.151999999999997,38.591,29.509 -2020-07-24 04:45:00,79.48,21.465,38.591,29.509 -2020-07-24 05:00:00,87.6,32.664,40.666,29.509 -2020-07-24 05:15:00,90.22,39.36,40.666,29.509 -2020-07-24 05:30:00,93.14,34.783,40.666,29.509 -2020-07-24 05:45:00,91.92,31.98,40.666,29.509 -2020-07-24 06:00:00,106.2,32.453,51.784,29.509 -2020-07-24 06:15:00,107.22,32.135,51.784,29.509 -2020-07-24 06:30:00,110.0,31.943,51.784,29.509 -2020-07-24 06:45:00,107.88,34.431999999999995,51.784,29.509 -2020-07-24 07:00:00,114.31,34.941,61.383,29.509 -2020-07-24 07:15:00,115.72,36.741,61.383,29.509 -2020-07-24 07:30:00,112.69,32.617,61.383,29.509 -2020-07-24 07:45:00,107.73,33.121,61.383,29.509 -2020-07-24 08:00:00,109.58,29.456,55.272,29.509 -2020-07-24 08:15:00,115.15,33.56,55.272,29.509 -2020-07-24 08:30:00,122.28,34.815,55.272,29.509 -2020-07-24 08:45:00,123.43,37.437,55.272,29.509 -2020-07-24 09:00:00,124.99,30.558000000000003,53.506,29.509 -2020-07-24 09:15:00,124.06,32.117,53.506,29.509 -2020-07-24 09:30:00,113.17,35.128,53.506,29.509 -2020-07-24 09:45:00,102.68,38.842,53.506,29.509 -2020-07-24 10:00:00,108.12,36.326,51.363,29.509 -2020-07-24 10:15:00,109.83,37.472,51.363,29.509 -2020-07-24 10:30:00,109.0,37.959,51.363,29.509 -2020-07-24 10:45:00,104.36,38.887,51.363,29.509 -2020-07-24 11:00:00,106.38,36.842,51.043,29.509 -2020-07-24 11:15:00,106.17,37.016999999999996,51.043,29.509 -2020-07-24 11:30:00,105.41,37.599000000000004,51.043,29.509 -2020-07-24 11:45:00,102.94,37.579,51.043,29.509 -2020-07-24 12:00:00,101.2,32.623000000000005,47.52,29.509 -2020-07-24 12:15:00,101.62,31.401999999999997,47.52,29.509 -2020-07-24 12:30:00,104.8,30.261,47.52,29.509 -2020-07-24 12:45:00,107.68,30.285,47.52,29.509 -2020-07-24 13:00:00,109.01,30.66,45.494,29.509 -2020-07-24 13:15:00,111.33,32.129,45.494,29.509 -2020-07-24 13:30:00,109.44,31.159000000000002,45.494,29.509 -2020-07-24 13:45:00,103.01,31.551,45.494,29.509 -2020-07-24 14:00:00,93.71,32.553000000000004,43.883,29.509 -2020-07-24 14:15:00,95.41,32.075,43.883,29.509 -2020-07-24 14:30:00,104.39,32.713,43.883,29.509 -2020-07-24 14:45:00,101.16,32.585,43.883,29.509 -2020-07-24 15:00:00,96.2,34.821,45.714,29.509 -2020-07-24 15:15:00,94.94,32.219,45.714,29.509 -2020-07-24 15:30:00,91.29,30.305999999999997,45.714,29.509 -2020-07-24 15:45:00,89.73,29.476,45.714,29.509 -2020-07-24 16:00:00,90.1,31.035999999999998,48.222,29.509 -2020-07-24 16:15:00,94.51,31.392,48.222,29.509 -2020-07-24 16:30:00,101.04,30.37,48.222,29.509 -2020-07-24 16:45:00,100.07,26.570999999999998,48.222,29.509 -2020-07-24 17:00:00,103.96,32.347,52.619,29.509 -2020-07-24 17:15:00,101.89,32.475,52.619,29.509 -2020-07-24 17:30:00,100.32,31.561,52.619,29.509 -2020-07-24 17:45:00,99.63,30.541999999999998,52.619,29.509 -2020-07-24 18:00:00,100.58,33.814,52.99,29.509 -2020-07-24 18:15:00,97.61,32.611999999999995,52.99,29.509 -2020-07-24 18:30:00,96.16,30.566,52.99,29.509 -2020-07-24 18:45:00,95.07,33.78,52.99,29.509 -2020-07-24 19:00:00,91.05,36.055,51.923,29.509 -2020-07-24 19:15:00,89.09,35.54,51.923,29.509 -2020-07-24 19:30:00,87.63,34.434,51.923,29.509 -2020-07-24 19:45:00,86.2,32.297,51.923,29.509 -2020-07-24 20:00:00,85.56,29.603,56.238,29.509 -2020-07-24 20:15:00,85.67,29.671,56.238,29.509 -2020-07-24 20:30:00,86.67,29.561,56.238,29.509 -2020-07-24 20:45:00,85.85,29.044,56.238,29.509 -2020-07-24 21:00:00,80.66,29.201999999999998,52.426,29.509 -2020-07-24 21:15:00,79.89,32.137,52.426,29.509 -2020-07-24 21:30:00,76.38,32.484,52.426,29.509 -2020-07-24 21:45:00,77.28,33.479,52.426,29.509 -2020-07-24 22:00:00,72.52,30.523000000000003,48.196000000000005,29.509 -2020-07-24 22:15:00,73.32,33.078,48.196000000000005,29.509 -2020-07-24 22:30:00,71.32,33.355,48.196000000000005,29.509 -2020-07-24 22:45:00,70.83,30.868000000000002,48.196000000000005,29.509 -2020-07-24 23:00:00,64.51,29.603,41.71,29.509 -2020-07-24 23:15:00,66.35,26.752,41.71,29.509 -2020-07-24 23:30:00,63.12,23.924,41.71,29.509 -2020-07-24 23:45:00,64.62,22.791,41.71,29.509 -2020-07-25 00:00:00,60.52,17.883,41.105,29.398000000000003 -2020-07-25 00:15:00,63.43,18.605999999999998,41.105,29.398000000000003 -2020-07-25 00:30:00,61.73,17.007,41.105,29.398000000000003 -2020-07-25 00:45:00,60.92,16.749000000000002,41.105,29.398000000000003 -2020-07-25 01:00:00,58.7,16.616,36.934,29.398000000000003 -2020-07-25 01:15:00,60.36,15.764000000000001,36.934,29.398000000000003 -2020-07-25 01:30:00,59.34,14.513,36.934,29.398000000000003 -2020-07-25 01:45:00,59.81,15.419,36.934,29.398000000000003 -2020-07-25 02:00:00,63.49,15.175999999999998,34.782,29.398000000000003 -2020-07-25 02:15:00,67.28,14.513,34.782,29.398000000000003 -2020-07-25 02:30:00,64.51,15.055,34.782,29.398000000000003 -2020-07-25 02:45:00,58.8,15.890999999999998,34.782,29.398000000000003 -2020-07-25 03:00:00,58.48,16.201,34.489000000000004,29.398000000000003 -2020-07-25 03:15:00,60.49,14.513,34.489000000000004,29.398000000000003 -2020-07-25 03:30:00,60.97,14.513,34.489000000000004,29.398000000000003 -2020-07-25 03:45:00,67.24,15.163,34.489000000000004,29.398000000000003 -2020-07-25 04:00:00,67.49,17.617,34.111,29.398000000000003 -2020-07-25 04:15:00,64.17,20.659000000000002,34.111,29.398000000000003 -2020-07-25 04:30:00,56.16,17.320999999999998,34.111,29.398000000000003 -2020-07-25 04:45:00,60.64,16.969,34.111,29.398000000000003 -2020-07-25 05:00:00,64.22,20.432000000000002,33.283,29.398000000000003 -2020-07-25 05:15:00,62.07,16.791,33.283,29.398000000000003 -2020-07-25 05:30:00,66.1,14.513,33.283,29.398000000000003 -2020-07-25 05:45:00,71.54,15.429,33.283,29.398000000000003 -2020-07-25 06:00:00,72.53,26.487,33.653,29.398000000000003 -2020-07-25 06:15:00,71.91,33.288000000000004,33.653,29.398000000000003 -2020-07-25 06:30:00,69.01,30.473000000000003,33.653,29.398000000000003 -2020-07-25 06:45:00,69.56,30.228,33.653,29.398000000000003 -2020-07-25 07:00:00,73.11,29.875999999999998,36.732,29.398000000000003 -2020-07-25 07:15:00,76.36,30.405,36.732,29.398000000000003 -2020-07-25 07:30:00,78.06,27.684,36.732,29.398000000000003 -2020-07-25 07:45:00,80.04,28.840999999999998,36.732,29.398000000000003 -2020-07-25 08:00:00,77.09,25.694000000000003,41.318999999999996,29.398000000000003 -2020-07-25 08:15:00,79.78,29.186,41.318999999999996,29.398000000000003 -2020-07-25 08:30:00,80.24,30.247,41.318999999999996,29.398000000000003 -2020-07-25 08:45:00,80.25,33.574,41.318999999999996,29.398000000000003 -2020-07-25 09:00:00,76.95,29.991999999999997,43.195,29.398000000000003 -2020-07-25 09:15:00,80.1,31.998,43.195,29.398000000000003 -2020-07-25 09:30:00,78.95,35.445,43.195,29.398000000000003 -2020-07-25 09:45:00,77.75,38.635999999999996,43.195,29.398000000000003 -2020-07-25 10:00:00,76.41,36.813,41.843999999999994,29.398000000000003 -2020-07-25 10:15:00,81.4,38.321999999999996,41.843999999999994,29.398000000000003 -2020-07-25 10:30:00,76.14,38.407,41.843999999999994,29.398000000000003 -2020-07-25 10:45:00,74.84,38.793,41.843999999999994,29.398000000000003 -2020-07-25 11:00:00,74.35,36.548,39.035,29.398000000000003 -2020-07-25 11:15:00,74.37,37.754,39.035,29.398000000000003 -2020-07-25 11:30:00,82.18,38.760999999999996,39.035,29.398000000000003 -2020-07-25 11:45:00,79.36,39.576,39.035,29.398000000000003 -2020-07-25 12:00:00,73.47,35.176,38.001,29.398000000000003 -2020-07-25 12:15:00,71.39,34.818000000000005,38.001,29.398000000000003 -2020-07-25 12:30:00,73.92,33.497,38.001,29.398000000000003 -2020-07-25 12:45:00,73.51,34.403,38.001,29.398000000000003 -2020-07-25 13:00:00,62.75,33.873000000000005,34.747,29.398000000000003 -2020-07-25 13:15:00,60.52,34.961,34.747,29.398000000000003 -2020-07-25 13:30:00,64.66,34.251,34.747,29.398000000000003 -2020-07-25 13:45:00,71.77,33.11,34.747,29.398000000000003 -2020-07-25 14:00:00,74.39,33.992,33.434,29.398000000000003 -2020-07-25 14:15:00,80.98,32.196,33.434,29.398000000000003 -2020-07-25 14:30:00,77.88,32.56,33.434,29.398000000000003 -2020-07-25 14:45:00,74.01,32.943000000000005,33.434,29.398000000000003 -2020-07-25 15:00:00,67.72,35.54,35.921,29.398000000000003 -2020-07-25 15:15:00,63.96,33.629,35.921,29.398000000000003 -2020-07-25 15:30:00,60.29,31.785,35.921,29.398000000000003 -2020-07-25 15:45:00,70.07,29.939,35.921,29.398000000000003 -2020-07-25 16:00:00,80.46,33.92,39.427,29.398000000000003 -2020-07-25 16:15:00,81.09,33.215,39.427,29.398000000000003 -2020-07-25 16:30:00,81.48,32.46,39.427,29.398000000000003 -2020-07-25 16:45:00,81.44,28.561,39.427,29.398000000000003 -2020-07-25 17:00:00,83.25,33.041,44.096000000000004,29.398000000000003 -2020-07-25 17:15:00,81.38,30.686,44.096000000000004,29.398000000000003 -2020-07-25 17:30:00,81.62,29.645,44.096000000000004,29.398000000000003 -2020-07-25 17:45:00,80.18,29.224,44.096000000000004,29.398000000000003 -2020-07-25 18:00:00,82.87,33.99,43.931000000000004,29.398000000000003 -2020-07-25 18:15:00,82.76,34.434,43.931000000000004,29.398000000000003 -2020-07-25 18:30:00,83.27,33.746,43.931000000000004,29.398000000000003 -2020-07-25 18:45:00,81.38,33.495,43.931000000000004,29.398000000000003 -2020-07-25 19:00:00,79.1,33.891999999999996,42.187,29.398000000000003 -2020-07-25 19:15:00,73.98,32.328,42.187,29.398000000000003 -2020-07-25 19:30:00,74.69,31.985,42.187,29.398000000000003 -2020-07-25 19:45:00,73.47,31.756999999999998,42.187,29.398000000000003 -2020-07-25 20:00:00,74.38,29.776,38.315,29.398000000000003 -2020-07-25 20:15:00,74.87,28.994,38.315,29.398000000000003 -2020-07-25 20:30:00,74.53,27.961,38.315,29.398000000000003 -2020-07-25 20:45:00,73.21,29.456,38.315,29.398000000000003 -2020-07-25 21:00:00,69.25,27.854,36.843,29.398000000000003 -2020-07-25 21:15:00,69.72,30.38,36.843,29.398000000000003 -2020-07-25 21:30:00,66.85,30.825,36.843,29.398000000000003 -2020-07-25 21:45:00,66.91,31.249000000000002,36.843,29.398000000000003 -2020-07-25 22:00:00,63.87,28.166999999999998,37.260999999999996,29.398000000000003 -2020-07-25 22:15:00,65.21,30.805999999999997,37.260999999999996,29.398000000000003 -2020-07-25 22:30:00,60.75,30.22,37.260999999999996,29.398000000000003 -2020-07-25 22:45:00,62.66,27.993000000000002,37.260999999999996,29.398000000000003 -2020-07-25 23:00:00,57.37,25.910999999999998,32.148,29.398000000000003 -2020-07-25 23:15:00,58.97,23.625,32.148,29.398000000000003 -2020-07-25 23:30:00,57.29,23.531,32.148,29.398000000000003 -2020-07-25 23:45:00,57.1,22.938000000000002,32.148,29.398000000000003 -2020-07-26 00:00:00,52.63,19.403,28.905,29.398000000000003 -2020-07-26 00:15:00,55.31,18.910999999999998,28.905,29.398000000000003 -2020-07-26 00:30:00,54.02,17.189,28.905,29.398000000000003 -2020-07-26 00:45:00,54.11,16.762999999999998,28.905,29.398000000000003 -2020-07-26 01:00:00,51.5,16.92,26.906999999999996,29.398000000000003 -2020-07-26 01:15:00,52.88,15.854000000000001,26.906999999999996,29.398000000000003 -2020-07-26 01:30:00,53.34,14.513,26.906999999999996,29.398000000000003 -2020-07-26 01:45:00,53.47,14.937999999999999,26.906999999999996,29.398000000000003 -2020-07-26 02:00:00,55.77,14.847000000000001,25.938000000000002,29.398000000000003 -2020-07-26 02:15:00,52.74,14.513,25.938000000000002,29.398000000000003 -2020-07-26 02:30:00,51.94,15.683,25.938000000000002,29.398000000000003 -2020-07-26 02:45:00,52.62,16.17,25.938000000000002,29.398000000000003 -2020-07-26 03:00:00,52.69,17.144000000000002,24.693,29.398000000000003 -2020-07-26 03:15:00,52.83,15.054,24.693,29.398000000000003 -2020-07-26 03:30:00,53.82,14.513,24.693,29.398000000000003 -2020-07-26 03:45:00,53.8,14.713,24.693,29.398000000000003 -2020-07-26 04:00:00,53.27,17.141,25.683000000000003,29.398000000000003 -2020-07-26 04:15:00,52.43,19.784000000000002,25.683000000000003,29.398000000000003 -2020-07-26 04:30:00,51.66,17.875999999999998,25.683000000000003,29.398000000000003 -2020-07-26 04:45:00,52.2,17.003,25.683000000000003,29.398000000000003 -2020-07-26 05:00:00,51.2,20.91,26.023000000000003,29.398000000000003 -2020-07-26 05:15:00,51.8,16.61,26.023000000000003,29.398000000000003 -2020-07-26 05:30:00,52.03,14.513,26.023000000000003,29.398000000000003 -2020-07-26 05:45:00,52.83,14.56,26.023000000000003,29.398000000000003 -2020-07-26 06:00:00,54.33,23.101,25.834,29.398000000000003 -2020-07-26 06:15:00,54.38,30.927,25.834,29.398000000000003 -2020-07-26 06:30:00,54.62,27.465999999999998,25.834,29.398000000000003 -2020-07-26 06:45:00,55.22,26.263,25.834,29.398000000000003 -2020-07-26 07:00:00,57.6,26.066,27.765,29.398000000000003 -2020-07-26 07:15:00,56.19,24.92,27.765,29.398000000000003 -2020-07-26 07:30:00,57.26,23.711,27.765,29.398000000000003 -2020-07-26 07:45:00,57.26,24.921,27.765,29.398000000000003 -2020-07-26 08:00:00,55.54,22.46,31.357,29.398000000000003 -2020-07-26 08:15:00,55.35,27.239,31.357,29.398000000000003 -2020-07-26 08:30:00,54.77,29.068,31.357,29.398000000000003 -2020-07-26 08:45:00,57.54,32.083,31.357,29.398000000000003 -2020-07-26 09:00:00,55.42,28.44,33.238,29.398000000000003 -2020-07-26 09:15:00,54.51,29.836,33.238,29.398000000000003 -2020-07-26 09:30:00,54.13,33.762,33.238,29.398000000000003 -2020-07-26 09:45:00,56.02,38.06,33.238,29.398000000000003 -2020-07-26 10:00:00,57.58,36.551,34.22,29.398000000000003 -2020-07-26 10:15:00,58.34,38.132,34.22,29.398000000000003 -2020-07-26 10:30:00,58.17,38.382,34.22,29.398000000000003 -2020-07-26 10:45:00,57.3,40.123000000000005,34.22,29.398000000000003 -2020-07-26 11:00:00,52.42,37.379,36.298,29.398000000000003 -2020-07-26 11:15:00,55.26,38.073,36.298,29.398000000000003 -2020-07-26 11:30:00,54.51,39.75,36.298,29.398000000000003 -2020-07-26 11:45:00,58.89,40.765,36.298,29.398000000000003 -2020-07-26 12:00:00,51.91,37.62,33.52,29.398000000000003 -2020-07-26 12:15:00,53.07,36.328,33.52,29.398000000000003 -2020-07-26 12:30:00,55.05,35.425,33.52,29.398000000000003 -2020-07-26 12:45:00,57.13,35.735,33.52,29.398000000000003 -2020-07-26 13:00:00,54.79,34.94,30.12,29.398000000000003 -2020-07-26 13:15:00,57.11,35.007,30.12,29.398000000000003 -2020-07-26 13:30:00,57.12,33.091,30.12,29.398000000000003 -2020-07-26 13:45:00,53.35,33.279,30.12,29.398000000000003 -2020-07-26 14:00:00,53.46,35.445,27.233,29.398000000000003 -2020-07-26 14:15:00,50.5,33.985,27.233,29.398000000000003 -2020-07-26 14:30:00,48.85,32.835,27.233,29.398000000000003 -2020-07-26 14:45:00,48.31,32.092,27.233,29.398000000000003 -2020-07-26 15:00:00,50.34,35.024,27.468000000000004,29.398000000000003 -2020-07-26 15:15:00,51.44,32.132,27.468000000000004,29.398000000000003 -2020-07-26 15:30:00,51.5,30.025,27.468000000000004,29.398000000000003 -2020-07-26 15:45:00,56.42,28.409000000000002,27.468000000000004,29.398000000000003 -2020-07-26 16:00:00,57.3,30.403000000000002,30.8,29.398000000000003 -2020-07-26 16:15:00,58.79,30.057,30.8,29.398000000000003 -2020-07-26 16:30:00,61.59,30.386999999999997,30.8,29.398000000000003 -2020-07-26 16:45:00,60.88,26.564,30.8,29.398000000000003 -2020-07-26 17:00:00,65.37,31.451,37.806,29.398000000000003 -2020-07-26 17:15:00,66.63,30.805999999999997,37.806,29.398000000000003 -2020-07-26 17:30:00,68.97,30.625999999999998,37.806,29.398000000000003 -2020-07-26 17:45:00,71.33,30.439,37.806,29.398000000000003 -2020-07-26 18:00:00,72.0,35.931999999999995,40.766,29.398000000000003 -2020-07-26 18:15:00,74.61,35.803000000000004,40.766,29.398000000000003 -2020-07-26 18:30:00,73.46,35.058,40.766,29.398000000000003 -2020-07-26 18:45:00,72.82,34.749,40.766,29.398000000000003 -2020-07-26 19:00:00,75.82,37.553000000000004,41.163000000000004,29.398000000000003 -2020-07-26 19:15:00,72.02,34.741,41.163000000000004,29.398000000000003 -2020-07-26 19:30:00,72.59,34.144,41.163000000000004,29.398000000000003 -2020-07-26 19:45:00,73.1,33.296,41.163000000000004,29.398000000000003 -2020-07-26 20:00:00,77.43,31.500999999999998,39.885999999999996,29.398000000000003 -2020-07-26 20:15:00,75.87,30.485,39.885999999999996,29.398000000000003 -2020-07-26 20:30:00,76.9,30.201999999999998,39.885999999999996,29.398000000000003 -2020-07-26 20:45:00,76.0,29.991,39.885999999999996,29.398000000000003 -2020-07-26 21:00:00,74.18,28.511,38.900999999999996,29.398000000000003 -2020-07-26 21:15:00,74.35,30.761999999999997,38.900999999999996,29.398000000000003 -2020-07-26 21:30:00,73.05,30.476999999999997,38.900999999999996,29.398000000000003 -2020-07-26 21:45:00,74.93,31.252,38.900999999999996,29.398000000000003 -2020-07-26 22:00:00,69.15,30.444000000000003,39.806999999999995,29.398000000000003 -2020-07-26 22:15:00,68.91,31.346999999999998,39.806999999999995,29.398000000000003 -2020-07-26 22:30:00,67.21,30.45,39.806999999999995,29.398000000000003 -2020-07-26 22:45:00,66.92,26.933000000000003,39.806999999999995,29.398000000000003 -2020-07-26 23:00:00,62.44,24.776,35.564,29.398000000000003 -2020-07-26 23:15:00,64.2,23.701,35.564,29.398000000000003 -2020-07-26 23:30:00,63.75,22.988000000000003,35.564,29.398000000000003 -2020-07-26 23:45:00,63.65,22.491,35.564,29.398000000000003 -2020-07-27 00:00:00,58.08,20.721999999999998,36.578,29.509 -2020-07-27 00:15:00,59.82,20.807,36.578,29.509 -2020-07-27 00:30:00,59.44,18.666,36.578,29.509 -2020-07-27 00:45:00,59.65,17.87,36.578,29.509 -2020-07-27 01:00:00,58.51,18.438,35.292,29.509 -2020-07-27 01:15:00,59.94,17.435,35.292,29.509 -2020-07-27 01:30:00,58.16,16.151,35.292,29.509 -2020-07-27 01:45:00,59.68,16.791,35.292,29.509 -2020-07-27 02:00:00,59.36,17.198,34.319,29.509 -2020-07-27 02:15:00,60.33,14.605,34.319,29.509 -2020-07-27 02:30:00,60.15,16.959,34.319,29.509 -2020-07-27 02:45:00,68.55,17.345,34.319,29.509 -2020-07-27 03:00:00,69.23,18.741,33.13,29.509 -2020-07-27 03:15:00,68.09,17.291,33.13,29.509 -2020-07-27 03:30:00,64.78,16.747,33.13,29.509 -2020-07-27 03:45:00,67.17,17.275,33.13,29.509 -2020-07-27 04:00:00,69.51,22.643,33.851,29.509 -2020-07-27 04:15:00,71.44,28.05,33.851,29.509 -2020-07-27 04:30:00,75.51,25.430999999999997,33.851,29.509 -2020-07-27 04:45:00,75.8,24.941,33.851,29.509 -2020-07-27 05:00:00,83.51,35.275999999999996,38.718,29.509 -2020-07-27 05:15:00,93.98,40.316,38.718,29.509 -2020-07-27 05:30:00,96.18,35.374,38.718,29.509 -2020-07-27 05:45:00,97.7,33.821,38.718,29.509 -2020-07-27 06:00:00,98.3,32.796,51.648999999999994,29.509 -2020-07-27 06:15:00,101.88,32.159,51.648999999999994,29.509 -2020-07-27 06:30:00,101.45,32.286,51.648999999999994,29.509 -2020-07-27 06:45:00,102.71,36.009,51.648999999999994,29.509 -2020-07-27 07:00:00,109.88,35.56,60.159,29.509 -2020-07-27 07:15:00,110.12,36.783,60.159,29.509 -2020-07-27 07:30:00,108.64,34.733000000000004,60.159,29.509 -2020-07-27 07:45:00,103.69,36.539,60.159,29.509 -2020-07-27 08:00:00,102.39,32.04,53.8,29.509 -2020-07-27 08:15:00,101.23,35.729,53.8,29.509 -2020-07-27 08:30:00,102.32,36.937,53.8,29.509 -2020-07-27 08:45:00,101.63,40.533,53.8,29.509 -2020-07-27 09:00:00,100.95,35.754,50.583,29.509 -2020-07-27 09:15:00,100.48,35.586,50.583,29.509 -2020-07-27 09:30:00,99.92,38.594,50.583,29.509 -2020-07-27 09:45:00,102.25,40.314,50.583,29.509 -2020-07-27 10:00:00,100.85,39.336,49.11600000000001,29.509 -2020-07-27 10:15:00,105.36,40.782,49.11600000000001,29.509 -2020-07-27 10:30:00,110.58,40.625,49.11600000000001,29.509 -2020-07-27 10:45:00,104.99,40.507,49.11600000000001,29.509 -2020-07-27 11:00:00,104.14,38.387,49.056000000000004,29.509 -2020-07-27 11:15:00,99.79,39.169000000000004,49.056000000000004,29.509 -2020-07-27 11:30:00,97.15,41.443999999999996,49.056000000000004,29.509 -2020-07-27 11:45:00,97.01,43.053000000000004,49.056000000000004,29.509 -2020-07-27 12:00:00,94.59,37.788000000000004,47.227,29.509 -2020-07-27 12:15:00,96.64,36.614000000000004,47.227,29.509 -2020-07-27 12:30:00,94.46,34.49,47.227,29.509 -2020-07-27 12:45:00,96.43,34.6,47.227,29.509 -2020-07-27 13:00:00,94.41,34.707,47.006,29.509 -2020-07-27 13:15:00,98.63,33.953,47.006,29.509 -2020-07-27 13:30:00,92.15,32.293,47.006,29.509 -2020-07-27 13:45:00,92.79,33.483000000000004,47.006,29.509 -2020-07-27 14:00:00,96.24,34.769,47.19,29.509 -2020-07-27 14:15:00,94.96,34.046,47.19,29.509 -2020-07-27 14:30:00,97.53,32.781,47.19,29.509 -2020-07-27 14:45:00,94.66,34.342,47.19,29.509 -2020-07-27 15:00:00,96.06,36.696,47.846000000000004,29.509 -2020-07-27 15:15:00,96.69,33.32,47.846000000000004,29.509 -2020-07-27 15:30:00,94.08,32.165,47.846000000000004,29.509 -2020-07-27 15:45:00,95.96,30.063000000000002,47.846000000000004,29.509 -2020-07-27 16:00:00,97.15,33.278,49.641000000000005,29.509 -2020-07-27 16:15:00,97.99,33.095,49.641000000000005,29.509 -2020-07-27 16:30:00,102.46,32.815,49.641000000000005,29.509 -2020-07-27 16:45:00,101.93,29.17,49.641000000000005,29.509 -2020-07-27 17:00:00,100.45,32.861999999999995,54.133,29.509 -2020-07-27 17:15:00,98.37,32.753,54.133,29.509 -2020-07-27 17:30:00,98.03,32.219,54.133,29.509 -2020-07-27 17:45:00,97.96,31.778000000000002,54.133,29.509 -2020-07-27 18:00:00,100.96,36.108000000000004,53.761,29.509 -2020-07-27 18:15:00,102.23,34.207,53.761,29.509 -2020-07-27 18:30:00,99.94,32.584,53.761,29.509 -2020-07-27 18:45:00,102.7,35.639,53.761,29.509 -2020-07-27 19:00:00,97.52,38.338,53.923,29.509 -2020-07-27 19:15:00,93.44,37.054,53.923,29.509 -2020-07-27 19:30:00,92.1,36.010999999999996,53.923,29.509 -2020-07-27 19:45:00,92.41,34.579,53.923,29.509 -2020-07-27 20:00:00,90.77,31.631999999999998,58.786,29.509 -2020-07-27 20:15:00,91.86,32.35,58.786,29.509 -2020-07-27 20:30:00,92.73,32.789,58.786,29.509 -2020-07-27 20:45:00,92.17,32.653,58.786,29.509 -2020-07-27 21:00:00,88.4,30.436,54.591,29.509 -2020-07-27 21:15:00,86.32,33.257,54.591,29.509 -2020-07-27 21:30:00,81.87,33.473,54.591,29.509 -2020-07-27 21:45:00,81.44,34.038000000000004,54.591,29.509 -2020-07-27 22:00:00,75.29,31.253,51.551,29.509 -2020-07-27 22:15:00,76.35,34.385999999999996,51.551,29.509 -2020-07-27 22:30:00,74.74,29.62,51.551,29.509 -2020-07-27 22:45:00,78.59,26.478,51.551,29.509 -2020-07-27 23:00:00,69.51,24.256,44.716,29.509 -2020-07-27 23:15:00,70.81,21.219,44.716,29.509 -2020-07-27 23:30:00,70.12,20.26,44.716,29.509 -2020-07-27 23:45:00,69.6,18.979,44.716,29.509 -2020-07-28 00:00:00,66.06,18.403,43.01,29.509 -2020-07-28 00:15:00,67.08,19.291,43.01,29.509 -2020-07-28 00:30:00,66.41,18.014,43.01,29.509 -2020-07-28 00:45:00,67.0,18.176,43.01,29.509 -2020-07-28 01:00:00,64.96,18.167,40.687,29.509 -2020-07-28 01:15:00,66.69,17.328,40.687,29.509 -2020-07-28 01:30:00,66.57,15.895,40.687,29.509 -2020-07-28 01:45:00,67.11,15.945,40.687,29.509 -2020-07-28 02:00:00,65.29,15.835,39.554,29.509 -2020-07-28 02:15:00,66.22,14.524000000000001,39.554,29.509 -2020-07-28 02:30:00,67.12,16.489,39.554,29.509 -2020-07-28 02:45:00,74.51,17.230999999999998,39.554,29.509 -2020-07-28 03:00:00,75.51,18.124000000000002,38.958,29.509 -2020-07-28 03:15:00,71.6,17.781,38.958,29.509 -2020-07-28 03:30:00,69.58,17.167,38.958,29.509 -2020-07-28 03:45:00,71.85,16.477999999999998,38.958,29.509 -2020-07-28 04:00:00,75.9,20.482,39.783,29.509 -2020-07-28 04:15:00,74.67,25.921999999999997,39.783,29.509 -2020-07-28 04:30:00,75.33,23.201999999999998,39.783,29.509 -2020-07-28 04:45:00,79.19,23.13,39.783,29.509 -2020-07-28 05:00:00,91.86,34.734,42.281000000000006,29.509 -2020-07-28 05:15:00,95.84,40.444,42.281000000000006,29.509 -2020-07-28 05:30:00,96.24,35.861,42.281000000000006,29.509 -2020-07-28 05:45:00,94.7,33.519,42.281000000000006,29.509 -2020-07-28 06:00:00,104.47,33.715,50.801,29.509 -2020-07-28 06:15:00,108.31,33.161,50.801,29.509 -2020-07-28 06:30:00,109.99,33.008,50.801,29.509 -2020-07-28 06:45:00,108.51,35.823,50.801,29.509 -2020-07-28 07:00:00,107.45,35.556,60.202,29.509 -2020-07-28 07:15:00,105.46,36.536,60.202,29.509 -2020-07-28 07:30:00,107.66,34.574,60.202,29.509 -2020-07-28 07:45:00,111.91,35.306,60.202,29.509 -2020-07-28 08:00:00,111.65,30.717,54.461000000000006,29.509 -2020-07-28 08:15:00,111.03,34.015,54.461000000000006,29.509 -2020-07-28 08:30:00,104.82,35.417,54.461000000000006,29.509 -2020-07-28 08:45:00,105.65,38.006,54.461000000000006,29.509 -2020-07-28 09:00:00,105.34,33.71,50.753,29.509 -2020-07-28 09:15:00,104.97,33.184,50.753,29.509 -2020-07-28 09:30:00,111.63,36.865,50.753,29.509 -2020-07-28 09:45:00,111.1,40.098,50.753,29.509 -2020-07-28 10:00:00,103.92,37.664,49.703,29.509 -2020-07-28 10:15:00,108.58,39.079,49.703,29.509 -2020-07-28 10:30:00,104.47,38.921,49.703,29.509 -2020-07-28 10:45:00,102.44,39.895,49.703,29.509 -2020-07-28 11:00:00,99.91,37.591,49.42100000000001,29.509 -2020-07-28 11:15:00,101.99,38.866,49.42100000000001,29.509 -2020-07-28 11:30:00,102.94,39.99,49.42100000000001,29.509 -2020-07-28 11:45:00,104.11,40.995,49.42100000000001,29.509 -2020-07-28 12:00:00,103.58,35.702,47.155,29.509 -2020-07-28 12:15:00,108.58,34.954,47.155,29.509 -2020-07-28 12:30:00,112.24,33.703,47.155,29.509 -2020-07-28 12:45:00,113.51,34.622,47.155,29.509 -2020-07-28 13:00:00,110.53,34.356,47.515,29.509 -2020-07-28 13:15:00,113.4,35.666,47.515,29.509 -2020-07-28 13:30:00,111.67,33.818000000000005,47.515,29.509 -2020-07-28 13:45:00,108.55,33.906,47.515,29.509 -2020-07-28 14:00:00,98.05,35.644,47.575,29.509 -2020-07-28 14:15:00,94.38,34.681,47.575,29.509 -2020-07-28 14:30:00,93.99,33.705,47.575,29.509 -2020-07-28 14:45:00,93.91,34.396,47.575,29.509 -2020-07-28 15:00:00,99.21,36.606,48.903,29.509 -2020-07-28 15:15:00,101.07,34.223,48.903,29.509 -2020-07-28 15:30:00,100.87,32.81,48.903,29.509 -2020-07-28 15:45:00,100.92,31.144000000000002,48.903,29.509 -2020-07-28 16:00:00,97.59,33.515,50.218999999999994,29.509 -2020-07-28 16:15:00,98.84,33.376999999999995,50.218999999999994,29.509 -2020-07-28 16:30:00,99.43,32.621,50.218999999999994,29.509 -2020-07-28 16:45:00,99.6,29.761,50.218999999999994,29.509 -2020-07-28 17:00:00,102.62,33.61,55.396,29.509 -2020-07-28 17:15:00,101.28,33.985,55.396,29.509 -2020-07-28 17:30:00,100.85,32.898,55.396,29.509 -2020-07-28 17:45:00,102.53,32.125,55.396,29.509 -2020-07-28 18:00:00,102.54,35.43,55.583999999999996,29.509 -2020-07-28 18:15:00,100.74,35.217,55.583999999999996,29.509 -2020-07-28 18:30:00,102.02,33.344,55.583999999999996,29.509 -2020-07-28 18:45:00,102.2,36.103,55.583999999999996,29.509 -2020-07-28 19:00:00,97.76,37.53,56.071000000000005,29.509 -2020-07-28 19:15:00,95.49,36.464,56.071000000000005,29.509 -2020-07-28 19:30:00,94.9,35.249,56.071000000000005,29.509 -2020-07-28 19:45:00,93.33,34.178000000000004,56.071000000000005,29.509 -2020-07-28 20:00:00,91.91,31.64,61.55,29.509 -2020-07-28 20:15:00,93.19,30.85,61.55,29.509 -2020-07-28 20:30:00,94.82,31.225,61.55,29.509 -2020-07-28 20:45:00,93.22,31.589000000000002,61.55,29.509 -2020-07-28 21:00:00,89.1,30.386999999999997,55.94,29.509 -2020-07-28 21:15:00,87.92,31.531999999999996,55.94,29.509 -2020-07-28 21:30:00,84.69,31.991999999999997,55.94,29.509 -2020-07-28 21:45:00,84.68,32.727,55.94,29.509 -2020-07-28 22:00:00,78.94,29.971,52.857,29.509 -2020-07-28 22:15:00,85.09,32.757,52.857,29.509 -2020-07-28 22:30:00,81.12,28.272,52.857,29.509 -2020-07-28 22:45:00,81.25,25.096999999999998,52.857,29.509 -2020-07-28 23:00:00,77.11,22.079,46.04,29.509 -2020-07-28 23:15:00,78.13,20.805999999999997,46.04,29.509 -2020-07-28 23:30:00,77.41,19.891,46.04,29.509 -2020-07-28 23:45:00,77.45,18.84,46.04,29.509 -2020-07-29 00:00:00,72.28,18.484,42.195,29.509 -2020-07-29 00:15:00,73.33,19.371,42.195,29.509 -2020-07-29 00:30:00,73.27,18.098,42.195,29.509 -2020-07-29 00:45:00,72.85,18.268,42.195,29.509 -2020-07-29 01:00:00,71.33,18.252,38.82,29.509 -2020-07-29 01:15:00,72.86,17.414,38.82,29.509 -2020-07-29 01:30:00,73.45,15.99,38.82,29.509 -2020-07-29 01:45:00,73.58,16.035,38.82,29.509 -2020-07-29 02:00:00,71.67,15.93,37.023,29.509 -2020-07-29 02:15:00,72.3,14.637,37.023,29.509 -2020-07-29 02:30:00,69.76,16.581,37.023,29.509 -2020-07-29 02:45:00,79.06,17.323,37.023,29.509 -2020-07-29 03:00:00,79.64,18.204,36.818000000000005,29.509 -2020-07-29 03:15:00,77.13,17.878,36.818000000000005,29.509 -2020-07-29 03:30:00,73.32,17.271,36.818000000000005,29.509 -2020-07-29 03:45:00,77.35,16.589000000000002,36.818000000000005,29.509 -2020-07-29 04:00:00,79.17,20.584,37.495,29.509 -2020-07-29 04:15:00,78.45,26.015,37.495,29.509 -2020-07-29 04:30:00,78.67,23.294,37.495,29.509 -2020-07-29 04:45:00,81.9,23.224,37.495,29.509 -2020-07-29 05:00:00,97.1,34.83,39.858000000000004,29.509 -2020-07-29 05:15:00,99.54,40.534,39.858000000000004,29.509 -2020-07-29 05:30:00,103.49,35.981,39.858000000000004,29.509 -2020-07-29 05:45:00,98.13,33.632,39.858000000000004,29.509 -2020-07-29 06:00:00,105.66,33.81,52.867,29.509 -2020-07-29 06:15:00,110.73,33.266999999999996,52.867,29.509 -2020-07-29 06:30:00,111.3,33.122,52.867,29.509 -2020-07-29 06:45:00,112.66,35.955,52.867,29.509 -2020-07-29 07:00:00,108.85,35.685,66.061,29.509 -2020-07-29 07:15:00,105.98,36.684,66.061,29.509 -2020-07-29 07:30:00,105.83,34.736999999999995,66.061,29.509 -2020-07-29 07:45:00,104.0,35.484,66.061,29.509 -2020-07-29 08:00:00,106.11,30.903000000000002,58.532,29.509 -2020-07-29 08:15:00,104.13,34.188,58.532,29.509 -2020-07-29 08:30:00,106.01,35.577,58.532,29.509 -2020-07-29 08:45:00,106.01,38.155,58.532,29.509 -2020-07-29 09:00:00,106.42,33.86,56.047,29.509 -2020-07-29 09:15:00,105.79,33.329,56.047,29.509 -2020-07-29 09:30:00,105.45,36.997,56.047,29.509 -2020-07-29 09:45:00,103.21,40.218,56.047,29.509 -2020-07-29 10:00:00,102.4,37.788000000000004,53.823,29.509 -2020-07-29 10:15:00,106.01,39.188,53.823,29.509 -2020-07-29 10:30:00,104.96,39.025,53.823,29.509 -2020-07-29 10:45:00,104.1,39.994,53.823,29.509 -2020-07-29 11:00:00,108.14,37.696,54.184,29.509 -2020-07-29 11:15:00,108.27,38.968,54.184,29.509 -2020-07-29 11:30:00,108.1,40.082,54.184,29.509 -2020-07-29 11:45:00,102.46,41.075,54.184,29.509 -2020-07-29 12:00:00,102.99,35.788000000000004,52.628,29.509 -2020-07-29 12:15:00,100.87,35.034,52.628,29.509 -2020-07-29 12:30:00,100.15,33.786,52.628,29.509 -2020-07-29 12:45:00,98.46,34.696,52.628,29.509 -2020-07-29 13:00:00,98.77,34.41,52.31,29.509 -2020-07-29 13:15:00,97.85,35.708,52.31,29.509 -2020-07-29 13:30:00,97.02,33.861,52.31,29.509 -2020-07-29 13:45:00,97.78,33.959,52.31,29.509 -2020-07-29 14:00:00,96.14,35.687,52.278999999999996,29.509 -2020-07-29 14:15:00,95.9,34.727,52.278999999999996,29.509 -2020-07-29 14:30:00,96.19,33.756,52.278999999999996,29.509 -2020-07-29 14:45:00,96.56,34.452,52.278999999999996,29.509 -2020-07-29 15:00:00,95.81,36.641999999999996,53.306999999999995,29.509 -2020-07-29 15:15:00,92.1,34.259,53.306999999999995,29.509 -2020-07-29 15:30:00,94.45,32.853,53.306999999999995,29.509 -2020-07-29 15:45:00,96.56,31.185,53.306999999999995,29.509 -2020-07-29 16:00:00,97.51,33.548,55.358999999999995,29.509 -2020-07-29 16:15:00,98.55,33.417,55.358999999999995,29.509 -2020-07-29 16:30:00,98.44,32.673,55.358999999999995,29.509 -2020-07-29 16:45:00,98.51,29.837,55.358999999999995,29.509 -2020-07-29 17:00:00,100.98,33.671,59.211999999999996,29.509 -2020-07-29 17:15:00,101.93,34.071,59.211999999999996,29.509 -2020-07-29 17:30:00,102.63,32.995,59.211999999999996,29.509 -2020-07-29 17:45:00,103.93,32.245,59.211999999999996,29.509 -2020-07-29 18:00:00,104.7,35.549,60.403999999999996,29.509 -2020-07-29 18:15:00,103.25,35.335,60.403999999999996,29.509 -2020-07-29 18:30:00,103.93,33.47,60.403999999999996,29.509 -2020-07-29 18:45:00,103.57,36.229,60.403999999999996,29.509 -2020-07-29 19:00:00,99.94,37.659,60.993,29.509 -2020-07-29 19:15:00,95.58,36.588,60.993,29.509 -2020-07-29 19:30:00,95.02,35.373000000000005,60.993,29.509 -2020-07-29 19:45:00,95.21,34.303000000000004,60.993,29.509 -2020-07-29 20:00:00,93.06,31.76,66.6,29.509 -2020-07-29 20:15:00,95.46,30.971999999999998,66.6,29.509 -2020-07-29 20:30:00,95.47,31.337,66.6,29.509 -2020-07-29 20:45:00,94.87,31.686999999999998,66.6,29.509 -2020-07-29 21:00:00,91.12,30.487,59.855,29.509 -2020-07-29 21:15:00,90.81,31.628,59.855,29.509 -2020-07-29 21:30:00,87.11,32.074,59.855,29.509 -2020-07-29 21:45:00,85.59,32.789,59.855,29.509 -2020-07-29 22:00:00,80.94,30.025,54.942,29.509 -2020-07-29 22:15:00,79.82,32.803000000000004,54.942,29.509 -2020-07-29 22:30:00,78.83,28.29,54.942,29.509 -2020-07-29 22:45:00,78.28,25.111,54.942,29.509 -2020-07-29 23:00:00,73.71,22.119,46.056000000000004,29.509 -2020-07-29 23:15:00,75.13,20.851999999999997,46.056000000000004,29.509 -2020-07-29 23:30:00,74.23,19.952,46.056000000000004,29.509 -2020-07-29 23:45:00,72.75,18.901,46.056000000000004,29.509 -2020-07-30 00:00:00,66.91,18.569000000000003,40.859,29.509 -2020-07-30 00:15:00,70.85,19.454,40.859,29.509 -2020-07-30 00:30:00,68.48,18.186,40.859,29.509 -2020-07-30 00:45:00,71.01,18.364,40.859,29.509 -2020-07-30 01:00:00,68.53,18.339000000000002,39.06,29.509 -2020-07-30 01:15:00,69.68,17.503,39.06,29.509 -2020-07-30 01:30:00,69.53,16.087,39.06,29.509 -2020-07-30 01:45:00,69.27,16.129,39.06,29.509 -2020-07-30 02:00:00,69.25,16.028,37.592,29.509 -2020-07-30 02:15:00,69.73,14.753,37.592,29.509 -2020-07-30 02:30:00,69.73,16.677,37.592,29.509 -2020-07-30 02:45:00,70.05,17.419,37.592,29.509 -2020-07-30 03:00:00,70.14,18.289,37.416,29.509 -2020-07-30 03:15:00,67.95,17.977999999999998,37.416,29.509 -2020-07-30 03:30:00,71.64,17.379,37.416,29.509 -2020-07-30 03:45:00,74.13,16.704,37.416,29.509 -2020-07-30 04:00:00,78.12,20.691,38.176,29.509 -2020-07-30 04:15:00,77.94,26.114,38.176,29.509 -2020-07-30 04:30:00,82.51,23.393,38.176,29.509 -2020-07-30 04:45:00,88.96,23.324,38.176,29.509 -2020-07-30 05:00:00,95.56,34.935,41.203,29.509 -2020-07-30 05:15:00,96.07,40.637,41.203,29.509 -2020-07-30 05:30:00,94.6,36.111999999999995,41.203,29.509 -2020-07-30 05:45:00,97.84,33.755,41.203,29.509 -2020-07-30 06:00:00,103.74,33.912,51.09,29.509 -2020-07-30 06:15:00,106.27,33.382,51.09,29.509 -2020-07-30 06:30:00,107.84,33.246,51.09,29.509 -2020-07-30 06:45:00,108.65,36.096,51.09,29.509 -2020-07-30 07:00:00,115.44,35.821,63.541000000000004,29.509 -2020-07-30 07:15:00,115.82,36.841,63.541000000000004,29.509 -2020-07-30 07:30:00,119.1,34.909,63.541000000000004,29.509 -2020-07-30 07:45:00,116.84,35.671,63.541000000000004,29.509 -2020-07-30 08:00:00,114.55,31.096,55.65,29.509 -2020-07-30 08:15:00,110.16,34.368,55.65,29.509 -2020-07-30 08:30:00,112.03,35.745,55.65,29.509 -2020-07-30 08:45:00,108.34,38.311,55.65,29.509 -2020-07-30 09:00:00,110.22,34.018,51.833999999999996,29.509 -2020-07-30 09:15:00,117.14,33.48,51.833999999999996,29.509 -2020-07-30 09:30:00,114.83,37.135,51.833999999999996,29.509 -2020-07-30 09:45:00,112.31,40.343,51.833999999999996,29.509 -2020-07-30 10:00:00,105.58,37.918,49.70399999999999,29.509 -2020-07-30 10:15:00,106.54,39.303000000000004,49.70399999999999,29.509 -2020-07-30 10:30:00,105.24,39.134,49.70399999999999,29.509 -2020-07-30 10:45:00,108.78,40.099000000000004,49.70399999999999,29.509 -2020-07-30 11:00:00,108.28,37.806,48.593999999999994,29.509 -2020-07-30 11:15:00,108.61,39.073,48.593999999999994,29.509 -2020-07-30 11:30:00,108.06,40.179,48.593999999999994,29.509 -2020-07-30 11:45:00,105.5,41.161,48.593999999999994,29.509 -2020-07-30 12:00:00,101.8,35.878,46.275,29.509 -2020-07-30 12:15:00,100.72,35.118,46.275,29.509 -2020-07-30 12:30:00,98.24,33.873000000000005,46.275,29.509 -2020-07-30 12:45:00,98.08,34.773,46.275,29.509 -2020-07-30 13:00:00,96.54,34.467,45.803000000000004,29.509 -2020-07-30 13:15:00,96.92,35.754,45.803000000000004,29.509 -2020-07-30 13:30:00,96.23,33.906,45.803000000000004,29.509 -2020-07-30 13:45:00,97.99,34.016,45.803000000000004,29.509 -2020-07-30 14:00:00,96.53,35.733000000000004,46.251999999999995,29.509 -2020-07-30 14:15:00,96.4,34.777,46.251999999999995,29.509 -2020-07-30 14:30:00,96.01,33.809,46.251999999999995,29.509 -2020-07-30 14:45:00,97.0,34.510999999999996,46.251999999999995,29.509 -2020-07-30 15:00:00,95.45,36.68,48.309,29.509 -2020-07-30 15:15:00,95.82,34.297,48.309,29.509 -2020-07-30 15:30:00,95.51,32.898,48.309,29.509 -2020-07-30 15:45:00,96.03,31.229,48.309,29.509 -2020-07-30 16:00:00,97.23,33.583,49.681999999999995,29.509 -2020-07-30 16:15:00,98.16,33.459,49.681999999999995,29.509 -2020-07-30 16:30:00,98.84,32.728,49.681999999999995,29.509 -2020-07-30 16:45:00,101.61,29.916999999999998,49.681999999999995,29.509 -2020-07-30 17:00:00,101.98,33.736,53.086000000000006,29.509 -2020-07-30 17:15:00,101.92,34.16,53.086000000000006,29.509 -2020-07-30 17:30:00,102.4,33.095,53.086000000000006,29.509 -2020-07-30 17:45:00,104.67,32.369,53.086000000000006,29.509 -2020-07-30 18:00:00,104.01,35.671,54.038999999999994,29.509 -2020-07-30 18:15:00,102.55,35.457,54.038999999999994,29.509 -2020-07-30 18:30:00,101.69,33.601,54.038999999999994,29.509 -2020-07-30 18:45:00,101.62,36.359,54.038999999999994,29.509 -2020-07-30 19:00:00,97.79,37.793,53.408,29.509 -2020-07-30 19:15:00,95.25,36.719,53.408,29.509 -2020-07-30 19:30:00,94.88,35.501999999999995,53.408,29.509 -2020-07-30 19:45:00,94.26,34.434,53.408,29.509 -2020-07-30 20:00:00,94.38,31.886,55.309,29.509 -2020-07-30 20:15:00,95.53,31.099,55.309,29.509 -2020-07-30 20:30:00,95.23,31.453000000000003,55.309,29.509 -2020-07-30 20:45:00,94.49,31.789,55.309,29.509 -2020-07-30 21:00:00,90.29,30.593000000000004,51.585,29.509 -2020-07-30 21:15:00,90.19,31.728,51.585,29.509 -2020-07-30 21:30:00,85.83,32.162,51.585,29.509 -2020-07-30 21:45:00,84.2,32.855,51.585,29.509 -2020-07-30 22:00:00,79.37,30.081999999999997,48.006,29.509 -2020-07-30 22:15:00,79.95,32.852,48.006,29.509 -2020-07-30 22:30:00,77.7,28.309,48.006,29.509 -2020-07-30 22:45:00,78.53,25.127,48.006,29.509 -2020-07-30 23:00:00,73.03,22.162,42.309,29.509 -2020-07-30 23:15:00,73.29,20.901999999999997,42.309,29.509 -2020-07-30 23:30:00,72.79,20.016,42.309,29.509 -2020-07-30 23:45:00,72.36,18.965999999999998,42.309,29.509 -2020-07-31 00:00:00,67.66,16.794,39.649,29.509 -2020-07-31 00:15:00,67.46,17.897000000000002,39.649,29.509 -2020-07-31 00:30:00,69.3,16.939,39.649,29.509 -2020-07-31 00:45:00,69.18,17.575,39.649,29.509 -2020-07-31 01:00:00,68.54,17.151,37.744,29.509 -2020-07-31 01:15:00,69.64,15.592,37.744,29.509 -2020-07-31 01:30:00,68.26,14.98,37.744,29.509 -2020-07-31 01:45:00,68.52,14.735999999999999,37.744,29.509 -2020-07-31 02:00:00,66.7,15.647,36.965,29.509 -2020-07-31 02:15:00,69.12,14.513,36.965,29.509 -2020-07-31 02:30:00,68.98,17.101,36.965,29.509 -2020-07-31 02:45:00,68.73,17.097,36.965,29.509 -2020-07-31 03:00:00,69.73,18.875999999999998,37.678000000000004,29.509 -2020-07-31 03:15:00,70.06,17.2,37.678000000000004,29.509 -2020-07-31 03:30:00,71.02,16.35,37.678000000000004,29.509 -2020-07-31 03:45:00,73.59,16.607,37.678000000000004,29.509 -2020-07-31 04:00:00,77.51,20.721,38.591,29.509 -2020-07-31 04:15:00,84.16,24.464000000000002,38.591,29.509 -2020-07-31 04:30:00,85.18,22.758000000000003,38.591,29.509 -2020-07-31 04:45:00,83.87,22.075,38.591,29.509 -2020-07-31 05:00:00,88.03,33.272,40.666,29.509 -2020-07-31 05:15:00,93.14,39.897,40.666,29.509 -2020-07-31 05:30:00,96.11,35.541,40.666,29.509 -2020-07-31 05:45:00,103.78,32.701,40.666,29.509 -2020-07-31 06:00:00,109.56,33.047,51.784,29.509 -2020-07-31 06:15:00,108.31,32.806,51.784,29.509 -2020-07-31 06:30:00,104.13,32.679,51.784,29.509 -2020-07-31 06:45:00,103.29,35.299,51.784,29.509 -2020-07-31 07:00:00,105.64,35.775,61.383,29.509 -2020-07-31 07:15:00,107.2,37.719,61.383,29.509 -2020-07-31 07:30:00,106.76,33.693000000000005,61.383,29.509 -2020-07-31 07:45:00,108.81,34.313,61.383,29.509 -2020-07-31 08:00:00,110.94,30.691,55.272,29.509 -2020-07-31 08:15:00,111.98,34.72,55.272,29.509 -2020-07-31 08:30:00,111.09,35.89,55.272,29.509 -2020-07-31 08:45:00,105.5,38.428000000000004,55.272,29.509 -2020-07-31 09:00:00,112.21,31.557,53.506,29.509 -2020-07-31 09:15:00,112.71,33.08,53.506,29.509 -2020-07-31 09:30:00,117.26,36.003,53.506,29.509 -2020-07-31 09:45:00,117.46,39.635,53.506,29.509 -2020-07-31 10:00:00,118.86,37.153,51.363,29.509 -2020-07-31 10:15:00,109.46,38.202,51.363,29.509 -2020-07-31 10:30:00,106.07,38.647,51.363,29.509 -2020-07-31 10:45:00,104.7,39.549,51.363,29.509 -2020-07-31 11:00:00,102.28,37.538000000000004,51.043,29.509 -2020-07-31 11:15:00,99.07,37.687,51.043,29.509 -2020-07-31 11:30:00,98.78,38.205999999999996,51.043,29.509 -2020-07-31 11:45:00,102.16,38.109,51.043,29.509 -2020-07-31 12:00:00,98.03,33.196,47.52,29.509 -2020-07-31 12:15:00,98.7,31.933000000000003,47.52,29.509 -2020-07-31 12:30:00,97.7,30.805999999999997,47.52,29.509 -2020-07-31 12:45:00,101.31,30.771,47.52,29.509 -2020-07-31 13:00:00,97.21,31.002,45.494,29.509 -2020-07-31 13:15:00,94.94,32.394,45.494,29.509 -2020-07-31 13:30:00,95.09,31.428,45.494,29.509 -2020-07-31 13:45:00,99.62,31.894000000000002,45.494,29.509 -2020-07-31 14:00:00,99.4,32.83,43.883,29.509 -2020-07-31 14:15:00,102.69,32.379,43.883,29.509 -2020-07-31 14:30:00,104.82,33.031,43.883,29.509 -2020-07-31 14:45:00,108.76,32.946,43.883,29.509 -2020-07-31 15:00:00,107.19,35.053000000000004,45.714,29.509 -2020-07-31 15:15:00,107.16,32.45,45.714,29.509 -2020-07-31 15:30:00,102.02,30.58,45.714,29.509 -2020-07-31 15:45:00,98.73,29.737,45.714,29.509 -2020-07-31 16:00:00,97.24,31.250999999999998,48.222,29.509 -2020-07-31 16:15:00,96.65,31.649,48.222,29.509 -2020-07-31 16:30:00,95.0,30.721999999999998,48.222,29.509 -2020-07-31 16:45:00,98.3,27.085,48.222,29.509 -2020-07-31 17:00:00,100.32,32.76,52.619,29.509 -2020-07-31 17:15:00,100.27,33.058,52.619,29.509 -2020-07-31 17:30:00,99.43,32.214,52.619,29.509 -2020-07-31 17:45:00,99.98,31.351999999999997,52.619,29.509 -2020-07-31 18:00:00,100.2,34.617,52.99,29.509 -2020-07-31 18:15:00,101.05,33.407,52.99,29.509 -2020-07-31 18:30:00,100.24,31.410999999999998,52.99,29.509 -2020-07-31 18:45:00,97.28,34.628,52.99,29.509 -2020-07-31 19:00:00,94.41,36.923,51.923,29.509 -2020-07-31 19:15:00,93.63,36.38,51.923,29.509 -2020-07-31 19:30:00,90.61,35.259,51.923,29.509 -2020-07-31 19:45:00,91.18,33.129,51.923,29.509 -2020-07-31 20:00:00,91.95,30.405,56.238,29.509 -2020-07-31 20:15:00,91.38,30.476999999999997,56.238,29.509 -2020-07-31 20:30:00,90.78,30.296999999999997,56.238,29.509 -2020-07-31 20:45:00,90.26,29.695,56.238,29.509 -2020-07-31 21:00:00,85.04,29.877,52.426,29.509 -2020-07-31 21:15:00,83.4,32.773,52.426,29.509 -2020-07-31 21:30:00,80.13,33.031,52.426,29.509 -2020-07-31 21:45:00,79.5,33.88,52.426,29.509 -2020-07-31 22:00:00,75.94,30.871,48.196000000000005,29.509 -2020-07-31 22:15:00,75.61,33.374,48.196000000000005,29.509 -2020-07-31 22:30:00,74.04,33.457,48.196000000000005,29.509 -2020-07-31 22:45:00,74.51,30.945,48.196000000000005,29.509 -2020-07-31 23:00:00,69.29,29.855999999999998,41.71,29.509 -2020-07-31 23:15:00,67.98,27.054000000000002,41.71,29.509 -2020-07-31 23:30:00,67.78,24.331999999999997,41.71,29.509 -2020-07-31 23:45:00,68.07,23.197,41.71,29.509 -2020-08-01 00:00:00,64.84,16.840999999999998,40.227,29.423000000000002 -2020-08-01 00:15:00,65.7,17.429000000000002,40.227,29.423000000000002 -2020-08-01 00:30:00,61.29,16.066,40.227,29.423000000000002 -2020-08-01 00:45:00,63.86,15.87,40.227,29.423000000000002 -2020-08-01 01:00:00,61.89,15.71,36.303000000000004,29.423000000000002 -2020-08-01 01:15:00,63.24,14.94,36.303000000000004,29.423000000000002 -2020-08-01 01:30:00,61.9,13.640999999999998,36.303000000000004,29.423000000000002 -2020-08-01 01:45:00,62.53,14.588,36.303000000000004,29.423000000000002 -2020-08-01 02:00:00,60.34,14.395999999999999,33.849000000000004,29.423000000000002 -2020-08-01 02:15:00,60.96,13.040999999999999,33.849000000000004,29.423000000000002 -2020-08-01 02:30:00,66.99,14.253,33.849000000000004,29.423000000000002 -2020-08-01 02:45:00,68.32,15.014000000000001,33.849000000000004,29.423000000000002 -2020-08-01 03:00:00,65.65,15.258,33.149,29.423000000000002 -2020-08-01 03:15:00,61.57,13.152999999999999,33.149,29.423000000000002 -2020-08-01 03:30:00,61.95,13.040999999999999,33.149,29.423000000000002 -2020-08-01 03:45:00,64.13,14.512,33.149,29.423000000000002 -2020-08-01 04:00:00,63.58,16.715,32.501,29.423000000000002 -2020-08-01 04:15:00,62.36,19.454,32.501,29.423000000000002 -2020-08-01 04:30:00,64.17,16.437,32.501,29.423000000000002 -2020-08-01 04:45:00,69.28,16.136,32.501,29.423000000000002 -2020-08-01 05:00:00,70.79,19.305,31.648000000000003,29.423000000000002 -2020-08-01 05:15:00,66.78,16.058,31.648000000000003,29.423000000000002 -2020-08-01 05:30:00,64.36,13.495999999999999,31.648000000000003,29.423000000000002 -2020-08-01 05:45:00,65.34,14.887,31.648000000000003,29.423000000000002 -2020-08-01 06:00:00,68.08,24.894000000000002,32.552,29.423000000000002 -2020-08-01 06:15:00,71.47,31.201,32.552,29.423000000000002 -2020-08-01 06:30:00,70.7,28.622,32.552,29.423000000000002 -2020-08-01 06:45:00,73.6,28.4,32.552,29.423000000000002 -2020-08-01 07:00:00,80.26,28.034000000000002,35.181999999999995,29.423000000000002 -2020-08-01 07:15:00,81.15,28.61,35.181999999999995,29.423000000000002 -2020-08-01 07:30:00,83.99,26.254,35.181999999999995,29.423000000000002 -2020-08-01 07:45:00,78.02,27.406,35.181999999999995,29.423000000000002 -2020-08-01 08:00:00,78.36,24.79,40.35,29.423000000000002 -2020-08-01 08:15:00,78.58,27.854,40.35,29.423000000000002 -2020-08-01 08:30:00,84.13,28.653000000000002,40.35,29.423000000000002 -2020-08-01 08:45:00,88.25,31.538,40.35,29.423000000000002 -2020-08-01 09:00:00,83.81,27.921,42.292,29.423000000000002 -2020-08-01 09:15:00,77.51,29.616,42.292,29.423000000000002 -2020-08-01 09:30:00,77.4,32.631,42.292,29.423000000000002 -2020-08-01 09:45:00,81.46,35.472,42.292,29.423000000000002 -2020-08-01 10:00:00,88.03,33.78,40.084,29.423000000000002 -2020-08-01 10:15:00,87.71,35.077,40.084,29.423000000000002 -2020-08-01 10:30:00,88.54,35.137,40.084,29.423000000000002 -2020-08-01 10:45:00,81.12,35.558,40.084,29.423000000000002 -2020-08-01 11:00:00,75.49,33.609,36.966,29.423000000000002 -2020-08-01 11:15:00,77.04,34.655,36.966,29.423000000000002 -2020-08-01 11:30:00,73.65,35.507,36.966,29.423000000000002 -2020-08-01 11:45:00,73.41,36.196999999999996,36.966,29.423000000000002 -2020-08-01 12:00:00,72.34,32.466,35.19,29.423000000000002 -2020-08-01 12:15:00,72.7,32.124,35.19,29.423000000000002 -2020-08-01 12:30:00,68.3,30.954,35.19,29.423000000000002 -2020-08-01 12:45:00,72.12,31.738000000000003,35.19,29.423000000000002 -2020-08-01 13:00:00,71.85,31.165,32.277,29.423000000000002 -2020-08-01 13:15:00,73.17,32.038000000000004,32.277,29.423000000000002 -2020-08-01 13:30:00,75.14,31.421,32.277,29.423000000000002 -2020-08-01 13:45:00,78.23,30.410999999999998,32.277,29.423000000000002 -2020-08-01 14:00:00,75.78,31.076999999999998,31.436999999999998,29.423000000000002 -2020-08-01 14:15:00,76.7,29.488000000000003,31.436999999999998,29.423000000000002 -2020-08-01 14:30:00,76.4,29.755,31.436999999999998,29.423000000000002 -2020-08-01 14:45:00,71.54,30.14,31.436999999999998,29.423000000000002 -2020-08-01 15:00:00,72.15,32.229,33.493,29.423000000000002 -2020-08-01 15:15:00,79.53,30.479,33.493,29.423000000000002 -2020-08-01 15:30:00,82.37,28.81,33.493,29.423000000000002 -2020-08-01 15:45:00,82.54,27.113000000000003,33.493,29.423000000000002 -2020-08-01 16:00:00,80.64,30.905,36.593,29.423000000000002 -2020-08-01 16:15:00,78.96,30.311,36.593,29.423000000000002 -2020-08-01 16:30:00,81.42,29.761,36.593,29.423000000000002 -2020-08-01 16:45:00,77.27,26.39,36.593,29.423000000000002 -2020-08-01 17:00:00,78.24,30.271,42.049,29.423000000000002 -2020-08-01 17:15:00,80.69,28.34,42.049,29.423000000000002 -2020-08-01 17:30:00,83.53,27.478,42.049,29.423000000000002 -2020-08-01 17:45:00,81.6,27.182,42.049,29.423000000000002 -2020-08-01 18:00:00,83.2,31.39,43.755,29.423000000000002 -2020-08-01 18:15:00,82.56,31.776,43.755,29.423000000000002 -2020-08-01 18:30:00,82.19,31.188000000000002,43.755,29.423000000000002 -2020-08-01 18:45:00,81.88,31.037,43.755,29.423000000000002 -2020-08-01 19:00:00,79.58,31.397,44.492,29.423000000000002 -2020-08-01 19:15:00,76.37,29.973000000000003,44.492,29.423000000000002 -2020-08-01 19:30:00,75.74,29.653000000000002,44.492,29.423000000000002 -2020-08-01 19:45:00,76.03,29.514,44.492,29.423000000000002 -2020-08-01 20:00:00,78.67,27.618000000000002,40.896,29.423000000000002 -2020-08-01 20:15:00,78.26,27.023000000000003,40.896,29.423000000000002 -2020-08-01 20:30:00,77.78,26.051,40.896,29.423000000000002 -2020-08-01 20:45:00,79.77,27.362,40.896,29.423000000000002 -2020-08-01 21:00:00,74.49,25.883000000000003,39.056,29.423000000000002 -2020-08-01 21:15:00,73.64,28.221,39.056,29.423000000000002 -2020-08-01 21:30:00,71.31,28.568,39.056,29.423000000000002 -2020-08-01 21:45:00,70.86,28.83,39.056,29.423000000000002 -2020-08-01 22:00:00,68.57,26.011,38.478,29.423000000000002 -2020-08-01 22:15:00,67.73,28.296999999999997,38.478,29.423000000000002 -2020-08-01 22:30:00,65.12,27.611,38.478,29.423000000000002 -2020-08-01 22:45:00,65.56,25.581999999999997,38.478,29.423000000000002 -2020-08-01 23:00:00,61.72,23.868000000000002,32.953,29.423000000000002 -2020-08-01 23:15:00,60.35,21.84,32.953,29.423000000000002 -2020-08-01 23:30:00,58.32,21.82,32.953,29.423000000000002 -2020-08-01 23:45:00,57.81,21.265,32.953,29.423000000000002 -2020-08-02 00:00:00,56.36,18.218,28.584,29.423000000000002 -2020-08-02 00:15:00,57.66,17.723,28.584,29.423000000000002 -2020-08-02 00:30:00,57.1,16.248,28.584,29.423000000000002 -2020-08-02 00:45:00,57.12,15.909,28.584,29.423000000000002 -2020-08-02 01:00:00,55.38,16.003,26.419,29.423000000000002 -2020-08-02 01:15:00,55.55,15.054,26.419,29.423000000000002 -2020-08-02 01:30:00,55.72,13.6,26.419,29.423000000000002 -2020-08-02 01:45:00,55.6,14.199000000000002,26.419,29.423000000000002 -2020-08-02 02:00:00,55.11,14.134,25.335,29.423000000000002 -2020-08-02 02:15:00,55.47,13.040999999999999,25.335,29.423000000000002 -2020-08-02 02:30:00,54.77,14.844000000000001,25.335,29.423000000000002 -2020-08-02 02:45:00,55.36,15.297,25.335,29.423000000000002 -2020-08-02 03:00:00,54.8,16.134,24.805,29.423000000000002 -2020-08-02 03:15:00,55.54,14.325,24.805,29.423000000000002 -2020-08-02 03:30:00,55.72,13.217,24.805,29.423000000000002 -2020-08-02 03:45:00,55.21,14.154000000000002,24.805,29.423000000000002 -2020-08-02 04:00:00,58.15,16.34,25.772,29.423000000000002 -2020-08-02 04:15:00,56.39,18.723,25.772,29.423000000000002 -2020-08-02 04:30:00,54.95,16.98,25.772,29.423000000000002 -2020-08-02 04:45:00,55.36,16.218,25.772,29.423000000000002 -2020-08-02 05:00:00,55.17,19.77,25.971999999999998,29.423000000000002 -2020-08-02 05:15:00,54.51,15.937000000000001,25.971999999999998,29.423000000000002 -2020-08-02 05:30:00,54.25,13.040999999999999,25.971999999999998,29.423000000000002 -2020-08-02 05:45:00,55.07,14.138,25.971999999999998,29.423000000000002 -2020-08-02 06:00:00,55.41,21.9,26.026,29.423000000000002 -2020-08-02 06:15:00,55.73,29.107,26.026,29.423000000000002 -2020-08-02 06:30:00,57.85,25.941,26.026,29.423000000000002 -2020-08-02 06:45:00,59.03,24.854,26.026,29.423000000000002 -2020-08-02 07:00:00,59.2,24.644000000000002,27.396,29.423000000000002 -2020-08-02 07:15:00,60.74,23.725,27.396,29.423000000000002 -2020-08-02 07:30:00,63.57,22.7,27.396,29.423000000000002 -2020-08-02 07:45:00,64.87,23.888,27.396,29.423000000000002 -2020-08-02 08:00:00,63.57,21.895,30.791999999999998,29.423000000000002 -2020-08-02 08:15:00,66.35,26.094,30.791999999999998,29.423000000000002 -2020-08-02 08:30:00,66.99,27.593000000000004,30.791999999999998,29.423000000000002 -2020-08-02 08:45:00,68.25,30.224,30.791999999999998,29.423000000000002 -2020-08-02 09:00:00,68.6,26.549,32.482,29.423000000000002 -2020-08-02 09:15:00,67.03,27.708000000000002,32.482,29.423000000000002 -2020-08-02 09:30:00,66.69,31.144000000000002,32.482,29.423000000000002 -2020-08-02 09:45:00,67.87,34.96,32.482,29.423000000000002 -2020-08-02 10:00:00,69.2,33.574,31.951,29.423000000000002 -2020-08-02 10:15:00,67.97,34.938,31.951,29.423000000000002 -2020-08-02 10:30:00,69.5,35.152,31.951,29.423000000000002 -2020-08-02 10:45:00,73.44,36.748000000000005,31.951,29.423000000000002 -2020-08-02 11:00:00,71.52,34.372,33.619,29.423000000000002 -2020-08-02 11:15:00,64.82,34.964,33.619,29.423000000000002 -2020-08-02 11:30:00,60.86,36.402,33.619,29.423000000000002 -2020-08-02 11:45:00,66.18,37.275,33.619,29.423000000000002 -2020-08-02 12:00:00,63.81,34.646,30.975,29.423000000000002 -2020-08-02 12:15:00,60.26,33.494,30.975,29.423000000000002 -2020-08-02 12:30:00,56.84,32.681,30.975,29.423000000000002 -2020-08-02 12:45:00,55.4,32.926,30.975,29.423000000000002 -2020-08-02 13:00:00,53.87,32.108000000000004,27.956999999999997,29.423000000000002 -2020-08-02 13:15:00,58.19,32.109,27.956999999999997,29.423000000000002 -2020-08-02 13:30:00,55.86,30.419,27.956999999999997,29.423000000000002 -2020-08-02 13:45:00,57.45,30.579,27.956999999999997,29.423000000000002 -2020-08-02 14:00:00,56.54,32.385999999999996,25.555999999999997,29.423000000000002 -2020-08-02 14:15:00,55.69,31.107,25.555999999999997,29.423000000000002 -2020-08-02 14:30:00,56.82,30.05,25.555999999999997,29.423000000000002 -2020-08-02 14:45:00,56.34,29.430999999999997,25.555999999999997,29.423000000000002 -2020-08-02 15:00:00,56.78,31.79,26.271,29.423000000000002 -2020-08-02 15:15:00,54.95,29.179000000000002,26.271,29.423000000000002 -2020-08-02 15:30:00,54.84,27.285,26.271,29.423000000000002 -2020-08-02 15:45:00,56.41,25.801,26.271,29.423000000000002 -2020-08-02 16:00:00,59.72,27.843000000000004,30.369,29.423000000000002 -2020-08-02 16:15:00,59.6,27.56,30.369,29.423000000000002 -2020-08-02 16:30:00,61.23,27.973000000000003,30.369,29.423000000000002 -2020-08-02 16:45:00,63.53,24.678,30.369,29.423000000000002 -2020-08-02 17:00:00,67.12,28.910999999999998,38.787,29.423000000000002 -2020-08-02 17:15:00,68.98,28.498,38.787,29.423000000000002 -2020-08-02 17:30:00,70.71,28.406,38.787,29.423000000000002 -2020-08-02 17:45:00,74.99,28.346999999999998,38.787,29.423000000000002 -2020-08-02 18:00:00,74.67,33.192,41.886,29.423000000000002 -2020-08-02 18:15:00,73.6,33.085,41.886,29.423000000000002 -2020-08-02 18:30:00,76.34,32.428000000000004,41.886,29.423000000000002 -2020-08-02 18:45:00,74.12,32.243,41.886,29.423000000000002 -2020-08-02 19:00:00,75.09,34.739000000000004,42.91,29.423000000000002 -2020-08-02 19:15:00,72.97,32.211999999999996,42.91,29.423000000000002 -2020-08-02 19:30:00,73.09,31.666,42.91,29.423000000000002 -2020-08-02 19:45:00,73.57,30.991,42.91,29.423000000000002 -2020-08-02 20:00:00,78.39,29.259,42.148999999999994,29.423000000000002 -2020-08-02 20:15:00,77.61,28.465,42.148999999999994,29.423000000000002 -2020-08-02 20:30:00,77.86,28.169,42.148999999999994,29.423000000000002 -2020-08-02 20:45:00,80.93,27.945999999999998,42.148999999999994,29.423000000000002 -2020-08-02 21:00:00,76.12,26.549,40.955999999999996,29.423000000000002 -2020-08-02 21:15:00,75.92,28.636999999999997,40.955999999999996,29.423000000000002 -2020-08-02 21:30:00,72.29,28.338,40.955999999999996,29.423000000000002 -2020-08-02 21:45:00,71.28,28.91,40.955999999999996,29.423000000000002 -2020-08-02 22:00:00,67.02,28.098000000000003,39.873000000000005,29.423000000000002 -2020-08-02 22:15:00,68.04,28.831,39.873000000000005,29.423000000000002 -2020-08-02 22:30:00,65.78,27.840999999999998,39.873000000000005,29.423000000000002 -2020-08-02 22:45:00,65.72,24.656999999999996,39.873000000000005,29.423000000000002 -2020-08-02 23:00:00,60.72,22.861,35.510999999999996,29.423000000000002 -2020-08-02 23:15:00,63.05,21.92,35.510999999999996,29.423000000000002 -2020-08-02 23:30:00,62.6,21.354,35.510999999999996,29.423000000000002 -2020-08-02 23:45:00,62.86,20.894000000000002,35.510999999999996,29.423000000000002 -2020-08-03 00:00:00,64.33,19.451,33.475,29.535 -2020-08-03 00:15:00,67.22,19.498,33.475,29.535 -2020-08-03 00:30:00,66.41,17.651,33.475,29.535 -2020-08-03 00:45:00,63.17,16.98,33.475,29.535 -2020-08-03 01:00:00,63.68,17.434,33.111,29.535 -2020-08-03 01:15:00,60.61,16.54,33.111,29.535 -2020-08-03 01:30:00,60.33,15.436,33.111,29.535 -2020-08-03 01:45:00,61.13,15.931,33.111,29.535 -2020-08-03 02:00:00,59.92,16.308,32.358000000000004,29.535 -2020-08-03 02:15:00,61.4,14.12,32.358000000000004,29.535 -2020-08-03 02:30:00,61.07,16.077,32.358000000000004,29.535 -2020-08-03 02:45:00,61.46,16.435,32.358000000000004,29.535 -2020-08-03 03:00:00,60.32,17.656,30.779,29.535 -2020-08-03 03:15:00,63.48,16.432000000000002,30.779,29.535 -2020-08-03 03:30:00,63.96,16.000999999999998,30.779,29.535 -2020-08-03 03:45:00,66.5,16.54,30.779,29.535 -2020-08-03 04:00:00,74.97,21.386999999999997,31.416,29.535 -2020-08-03 04:15:00,76.04,26.27,31.416,29.535 -2020-08-03 04:30:00,74.98,23.919,31.416,29.535 -2020-08-03 04:45:00,83.07,23.5,31.416,29.535 -2020-08-03 05:00:00,90.67,32.928000000000004,37.221,29.535 -2020-08-03 05:15:00,89.8,37.603,37.221,29.535 -2020-08-03 05:30:00,91.37,33.244,37.221,29.535 -2020-08-03 05:45:00,93.43,31.784000000000002,37.221,29.535 -2020-08-03 06:00:00,105.8,30.877,51.891000000000005,29.535 -2020-08-03 06:15:00,107.93,30.43,51.891000000000005,29.535 -2020-08-03 06:30:00,104.29,30.522,51.891000000000005,29.535 -2020-08-03 06:45:00,105.53,33.891,51.891000000000005,29.535 -2020-08-03 07:00:00,111.0,33.523,62.282,29.535 -2020-08-03 07:15:00,108.3,34.719,62.282,29.535 -2020-08-03 07:30:00,108.02,32.942,62.282,29.535 -2020-08-03 07:45:00,103.2,34.629,62.282,29.535 -2020-08-03 08:00:00,104.16,30.793000000000003,54.102,29.535 -2020-08-03 08:15:00,105.8,33.993,54.102,29.535 -2020-08-03 08:30:00,107.65,34.896,54.102,29.535 -2020-08-03 08:45:00,105.3,38.001999999999995,54.102,29.535 -2020-08-03 09:00:00,103.61,33.321999999999996,50.917,29.535 -2020-08-03 09:15:00,107.08,33.051,50.917,29.535 -2020-08-03 09:30:00,106.27,35.66,50.917,29.535 -2020-08-03 09:45:00,106.17,37.192,50.917,29.535 -2020-08-03 10:00:00,102.23,36.264,49.718999999999994,29.535 -2020-08-03 10:15:00,106.93,37.5,49.718999999999994,29.535 -2020-08-03 10:30:00,107.96,37.342,49.718999999999994,29.535 -2020-08-03 10:45:00,107.77,37.3,49.718999999999994,29.535 -2020-08-03 11:00:00,100.64,35.437,49.833999999999996,29.535 -2020-08-03 11:15:00,97.07,36.126,49.833999999999996,29.535 -2020-08-03 11:30:00,95.48,38.11,49.833999999999996,29.535 -2020-08-03 11:45:00,95.33,39.504,49.833999999999996,29.535 -2020-08-03 12:00:00,98.79,35.001,47.832,29.535 -2020-08-03 12:15:00,96.36,33.953,47.832,29.535 -2020-08-03 12:30:00,97.53,32.065,47.832,29.535 -2020-08-03 12:45:00,95.9,32.147,47.832,29.535 -2020-08-03 13:00:00,100.77,32.144,48.03,29.535 -2020-08-03 13:15:00,99.22,31.401,48.03,29.535 -2020-08-03 13:30:00,102.37,29.932,48.03,29.535 -2020-08-03 13:45:00,97.29,30.98,48.03,29.535 -2020-08-03 14:00:00,94.86,31.984,48.157,29.535 -2020-08-03 14:15:00,93.05,31.354,48.157,29.535 -2020-08-03 14:30:00,92.91,30.191999999999997,48.157,29.535 -2020-08-03 14:45:00,92.65,31.615,48.157,29.535 -2020-08-03 15:00:00,92.04,33.464,48.897,29.535 -2020-08-03 15:15:00,91.52,30.410999999999998,48.897,29.535 -2020-08-03 15:30:00,90.89,29.355999999999998,48.897,29.535 -2020-08-03 15:45:00,92.82,27.436999999999998,48.897,29.535 -2020-08-03 16:00:00,94.14,30.561,51.446000000000005,29.535 -2020-08-03 16:15:00,94.64,30.415,51.446000000000005,29.535 -2020-08-03 16:30:00,96.56,30.275,51.446000000000005,29.535 -2020-08-03 16:45:00,98.01,27.131999999999998,51.446000000000005,29.535 -2020-08-03 17:00:00,98.65,30.291,57.507,29.535 -2020-08-03 17:15:00,100.17,30.348000000000003,57.507,29.535 -2020-08-03 17:30:00,101.49,29.936999999999998,57.507,29.535 -2020-08-03 17:45:00,102.04,29.642,57.507,29.535 -2020-08-03 18:00:00,103.4,33.454,57.896,29.535 -2020-08-03 18:15:00,101.83,31.758000000000003,57.896,29.535 -2020-08-03 18:30:00,102.94,30.328000000000003,57.896,29.535 -2020-08-03 18:45:00,102.54,33.139,57.896,29.535 -2020-08-03 19:00:00,99.56,35.525,57.891999999999996,29.535 -2020-08-03 19:15:00,96.15,34.346,57.891999999999996,29.535 -2020-08-03 19:30:00,94.72,33.41,57.891999999999996,29.535 -2020-08-03 19:45:00,96.09,32.209,57.891999999999996,29.535 -2020-08-03 20:00:00,96.55,29.432,64.57300000000001,29.535 -2020-08-03 20:15:00,103.85,30.159000000000002,64.57300000000001,29.535 -2020-08-03 20:30:00,102.7,30.487,64.57300000000001,29.535 -2020-08-03 20:45:00,96.84,30.337,64.57300000000001,29.535 -2020-08-03 21:00:00,90.83,28.291999999999998,59.431999999999995,29.535 -2020-08-03 21:15:00,90.21,30.875999999999998,59.431999999999995,29.535 -2020-08-03 21:30:00,85.03,31.019000000000002,59.431999999999995,29.535 -2020-08-03 21:45:00,84.99,31.394000000000002,59.431999999999995,29.535 -2020-08-03 22:00:00,79.53,28.799,51.519,29.535 -2020-08-03 22:15:00,80.49,31.503,51.519,29.535 -2020-08-03 22:30:00,79.92,26.988000000000003,51.519,29.535 -2020-08-03 22:45:00,78.23,24.1,51.519,29.535 -2020-08-03 23:00:00,73.74,22.268,44.501000000000005,29.535 -2020-08-03 23:15:00,72.71,19.594,44.501000000000005,29.535 -2020-08-03 23:30:00,74.86,18.83,44.501000000000005,29.535 -2020-08-03 23:45:00,80.0,17.692,44.501000000000005,29.535 -2020-08-04 00:00:00,77.12,17.405,44.522,29.535 -2020-08-04 00:15:00,74.58,18.18,44.522,29.535 -2020-08-04 00:30:00,69.85,17.092,44.522,29.535 -2020-08-04 00:45:00,70.87,17.262999999999998,44.522,29.535 -2020-08-04 01:00:00,70.62,17.199,41.441,29.535 -2020-08-04 01:15:00,70.7,16.449,41.441,29.535 -2020-08-04 01:30:00,73.19,15.217,41.441,29.535 -2020-08-04 01:45:00,78.29,15.190999999999999,41.441,29.535 -2020-08-04 02:00:00,77.5,15.107999999999999,40.203,29.535 -2020-08-04 02:15:00,71.54,14.061,40.203,29.535 -2020-08-04 02:30:00,71.46,15.665999999999999,40.203,29.535 -2020-08-04 02:45:00,76.65,16.338,40.203,29.535 -2020-08-04 03:00:00,78.03,17.101,39.536,29.535 -2020-08-04 03:15:00,78.15,16.855,39.536,29.535 -2020-08-04 03:30:00,71.82,16.365,39.536,29.535 -2020-08-04 03:45:00,79.75,15.821,39.536,29.535 -2020-08-04 04:00:00,84.05,19.462,40.759,29.535 -2020-08-04 04:15:00,86.03,24.38,40.759,29.535 -2020-08-04 04:30:00,85.13,21.936,40.759,29.535 -2020-08-04 04:45:00,89.94,21.901999999999997,40.759,29.535 -2020-08-04 05:00:00,95.49,32.521,43.623999999999995,29.535 -2020-08-04 05:15:00,96.01,37.814,43.623999999999995,29.535 -2020-08-04 05:30:00,98.12,33.751,43.623999999999995,29.535 -2020-08-04 05:45:00,99.46,31.581,43.623999999999995,29.535 -2020-08-04 06:00:00,100.86,31.744,52.684,29.535 -2020-08-04 06:15:00,104.1,31.389,52.684,29.535 -2020-08-04 06:30:00,107.85,31.221999999999998,52.684,29.535 -2020-08-04 06:45:00,112.25,33.775999999999996,52.684,29.535 -2020-08-04 07:00:00,112.11,33.569,62.676,29.535 -2020-08-04 07:15:00,113.72,34.546,62.676,29.535 -2020-08-04 07:30:00,109.77,32.847,62.676,29.535 -2020-08-04 07:45:00,107.83,33.577,62.676,29.535 -2020-08-04 08:00:00,112.52,29.664,56.161,29.535 -2020-08-04 08:15:00,112.46,32.497,56.161,29.535 -2020-08-04 08:30:00,112.9,33.57,56.161,29.535 -2020-08-04 08:45:00,111.06,35.781,56.161,29.535 -2020-08-04 09:00:00,115.35,31.52,52.132,29.535 -2020-08-04 09:15:00,114.68,30.95,52.132,29.535 -2020-08-04 09:30:00,112.07,34.161,52.132,29.535 -2020-08-04 09:45:00,109.95,37.027,52.132,29.535 -2020-08-04 10:00:00,113.26,34.8,51.032,29.535 -2020-08-04 10:15:00,111.01,35.992,51.032,29.535 -2020-08-04 10:30:00,108.81,35.836,51.032,29.535 -2020-08-04 10:45:00,112.99,36.762,51.032,29.535 -2020-08-04 11:00:00,106.02,34.756,51.085,29.535 -2020-08-04 11:15:00,107.07,35.876999999999995,51.085,29.535 -2020-08-04 11:30:00,108.91,36.829,51.085,29.535 -2020-08-04 11:45:00,110.11,37.693000000000005,51.085,29.535 -2020-08-04 12:00:00,105.38,33.145,49.049,29.535 -2020-08-04 12:15:00,101.69,32.468,49.049,29.535 -2020-08-04 12:30:00,100.66,31.366999999999997,49.049,29.535 -2020-08-04 12:45:00,99.77,32.162,49.049,29.535 -2020-08-04 13:00:00,98.37,31.823,49.722,29.535 -2020-08-04 13:15:00,98.25,32.902,49.722,29.535 -2020-08-04 13:30:00,97.22,31.279,49.722,29.535 -2020-08-04 13:45:00,97.65,31.354,49.722,29.535 -2020-08-04 14:00:00,98.37,32.76,49.565,29.535 -2020-08-04 14:15:00,100.11,31.919,49.565,29.535 -2020-08-04 14:30:00,100.18,31.025,49.565,29.535 -2020-08-04 14:45:00,99.55,31.674,49.565,29.535 -2020-08-04 15:00:00,100.99,33.382,51.108999999999995,29.535 -2020-08-04 15:15:00,98.14,31.217,51.108999999999995,29.535 -2020-08-04 15:30:00,97.4,29.936999999999998,51.108999999999995,29.535 -2020-08-04 15:45:00,98.43,28.403000000000002,51.108999999999995,29.535 -2020-08-04 16:00:00,102.05,30.775,52.725,29.535 -2020-08-04 16:15:00,104.62,30.676,52.725,29.535 -2020-08-04 16:30:00,102.53,30.116999999999997,52.725,29.535 -2020-08-04 16:45:00,103.42,27.68,52.725,29.535 -2020-08-04 17:00:00,104.82,30.979,58.031000000000006,29.535 -2020-08-04 17:15:00,106.88,31.469,58.031000000000006,29.535 -2020-08-04 17:30:00,106.52,30.576,58.031000000000006,29.535 -2020-08-04 17:45:00,106.89,29.989,58.031000000000006,29.535 -2020-08-04 18:00:00,107.37,32.888000000000005,58.338,29.535 -2020-08-04 18:15:00,105.89,32.689,58.338,29.535 -2020-08-04 18:30:00,105.26,31.037,58.338,29.535 -2020-08-04 18:45:00,104.69,33.591,58.338,29.535 -2020-08-04 19:00:00,102.74,34.849000000000004,58.464,29.535 -2020-08-04 19:15:00,99.6,33.861,58.464,29.535 -2020-08-04 19:30:00,98.69,32.769,58.464,29.535 -2020-08-04 19:45:00,99.54,31.89,58.464,29.535 -2020-08-04 20:00:00,98.28,29.48,63.708,29.535 -2020-08-04 20:15:00,104.76,28.862,63.708,29.535 -2020-08-04 20:30:00,104.72,29.14,63.708,29.535 -2020-08-04 20:45:00,102.08,29.421999999999997,63.708,29.535 -2020-08-04 21:00:00,93.21,28.273000000000003,57.06399999999999,29.535 -2020-08-04 21:15:00,91.37,29.372,57.06399999999999,29.535 -2020-08-04 21:30:00,88.94,29.728,57.06399999999999,29.535 -2020-08-04 21:45:00,87.22,30.253,57.06399999999999,29.535 -2020-08-04 22:00:00,81.39,27.693,52.831,29.535 -2020-08-04 22:15:00,90.48,30.084,52.831,29.535 -2020-08-04 22:30:00,86.19,25.816999999999997,52.831,29.535 -2020-08-04 22:45:00,84.07,22.903000000000002,52.831,29.535 -2020-08-04 23:00:00,76.58,20.366,44.717,29.535 -2020-08-04 23:15:00,82.38,19.252,44.717,29.535 -2020-08-04 23:30:00,81.93,18.522000000000002,44.717,29.535 -2020-08-04 23:45:00,82.08,17.589000000000002,44.717,29.535 -2020-08-05 00:00:00,74.43,17.499000000000002,41.263000000000005,29.535 -2020-08-05 00:15:00,72.81,18.273,41.263000000000005,29.535 -2020-08-05 00:30:00,73.78,17.189,41.263000000000005,29.535 -2020-08-05 00:45:00,79.92,17.368,41.263000000000005,29.535 -2020-08-05 01:00:00,79.4,17.293,38.448,29.535 -2020-08-05 01:15:00,79.23,16.547,38.448,29.535 -2020-08-05 01:30:00,73.16,15.324000000000002,38.448,29.535 -2020-08-05 01:45:00,74.56,15.296,38.448,29.535 -2020-08-05 02:00:00,71.2,15.217,36.471,29.535 -2020-08-05 02:15:00,72.53,14.187999999999999,36.471,29.535 -2020-08-05 02:30:00,76.7,15.772,36.471,29.535 -2020-08-05 02:45:00,78.9,16.442999999999998,36.471,29.535 -2020-08-05 03:00:00,76.32,17.195,36.042,29.535 -2020-08-05 03:15:00,71.19,16.965,36.042,29.535 -2020-08-05 03:30:00,73.06,16.482,36.042,29.535 -2020-08-05 03:45:00,74.45,15.94,36.042,29.535 -2020-08-05 04:00:00,76.22,19.583,36.705,29.535 -2020-08-05 04:15:00,79.11,24.499000000000002,36.705,29.535 -2020-08-05 04:30:00,80.91,22.057,36.705,29.535 -2020-08-05 04:45:00,83.59,22.023000000000003,36.705,29.535 -2020-08-05 05:00:00,89.3,32.665,39.716,29.535 -2020-08-05 05:15:00,93.87,37.975,39.716,29.535 -2020-08-05 05:30:00,98.13,33.93,39.716,29.535 -2020-08-05 05:45:00,102.24,31.743000000000002,39.716,29.535 -2020-08-05 06:00:00,110.74,31.885,52.756,29.535 -2020-08-05 06:15:00,113.42,31.543000000000003,52.756,29.535 -2020-08-05 06:30:00,114.26,31.381999999999998,52.756,29.535 -2020-08-05 06:45:00,111.89,33.946999999999996,52.756,29.535 -2020-08-05 07:00:00,112.05,33.738,65.977,29.535 -2020-08-05 07:15:00,111.49,34.732,65.977,29.535 -2020-08-05 07:30:00,110.79,33.048,65.977,29.535 -2020-08-05 07:45:00,115.87,33.79,65.977,29.535 -2020-08-05 08:00:00,116.83,29.88,57.927,29.535 -2020-08-05 08:15:00,115.09,32.696999999999996,57.927,29.535 -2020-08-05 08:30:00,115.44,33.76,57.927,29.535 -2020-08-05 08:45:00,116.68,35.958,57.927,29.535 -2020-08-05 09:00:00,119.16,31.701,54.86,29.535 -2020-08-05 09:15:00,115.56,31.124000000000002,54.86,29.535 -2020-08-05 09:30:00,112.66,34.321999999999996,54.86,29.535 -2020-08-05 09:45:00,127.72,37.173,54.86,29.535 -2020-08-05 10:00:00,125.46,34.949,52.818000000000005,29.535 -2020-08-05 10:15:00,122.4,36.124,52.818000000000005,29.535 -2020-08-05 10:30:00,115.0,35.961999999999996,52.818000000000005,29.535 -2020-08-05 10:45:00,114.33,36.883,52.818000000000005,29.535 -2020-08-05 11:00:00,111.89,34.884,52.937,29.535 -2020-08-05 11:15:00,111.04,36.0,52.937,29.535 -2020-08-05 11:30:00,107.75,36.945,52.937,29.535 -2020-08-05 11:45:00,105.24,37.798,52.937,29.535 -2020-08-05 12:00:00,104.45,33.249,50.826,29.535 -2020-08-05 12:15:00,103.52,32.566,50.826,29.535 -2020-08-05 12:30:00,103.67,31.47,50.826,29.535 -2020-08-05 12:45:00,102.21,32.255,50.826,29.535 -2020-08-05 13:00:00,100.82,31.898000000000003,50.556000000000004,29.535 -2020-08-05 13:15:00,100.96,32.968,50.556000000000004,29.535 -2020-08-05 13:30:00,105.71,31.343000000000004,50.556000000000004,29.535 -2020-08-05 13:45:00,102.53,31.427,50.556000000000004,29.535 -2020-08-05 14:00:00,104.32,32.821,51.188,29.535 -2020-08-05 14:15:00,112.39,31.984,51.188,29.535 -2020-08-05 14:30:00,116.08,31.096999999999998,51.188,29.535 -2020-08-05 14:45:00,116.4,31.75,51.188,29.535 -2020-08-05 15:00:00,114.44,33.433,52.976000000000006,29.535 -2020-08-05 15:15:00,114.65,31.269000000000002,52.976000000000006,29.535 -2020-08-05 15:30:00,115.6,29.997,52.976000000000006,29.535 -2020-08-05 15:45:00,115.27,28.464000000000002,52.976000000000006,29.535 -2020-08-05 16:00:00,113.47,30.823,55.463,29.535 -2020-08-05 16:15:00,110.57,30.73,55.463,29.535 -2020-08-05 16:30:00,109.52,30.18,55.463,29.535 -2020-08-05 16:45:00,111.03,27.772,55.463,29.535 -2020-08-05 17:00:00,109.65,31.051,59.435,29.535 -2020-08-05 17:15:00,106.85,31.566,59.435,29.535 -2020-08-05 17:30:00,106.49,30.684,59.435,29.535 -2020-08-05 17:45:00,109.02,30.124000000000002,59.435,29.535 -2020-08-05 18:00:00,109.21,33.019,61.387,29.535 -2020-08-05 18:15:00,107.26,32.824,61.387,29.535 -2020-08-05 18:30:00,107.93,31.18,61.387,29.535 -2020-08-05 18:45:00,105.44,33.734,61.387,29.535 -2020-08-05 19:00:00,102.48,34.996,63.323,29.535 -2020-08-05 19:15:00,99.33,34.006,63.323,29.535 -2020-08-05 19:30:00,98.06,32.913000000000004,63.323,29.535 -2020-08-05 19:45:00,97.58,32.037,63.323,29.535 -2020-08-05 20:00:00,98.82,29.625999999999998,69.083,29.535 -2020-08-05 20:15:00,99.21,29.009,69.083,29.535 -2020-08-05 20:30:00,100.79,29.276,69.083,29.535 -2020-08-05 20:45:00,97.25,29.539,69.083,29.535 -2020-08-05 21:00:00,94.59,28.393,59.957,29.535 -2020-08-05 21:15:00,93.52,29.486,59.957,29.535 -2020-08-05 21:30:00,89.59,29.833000000000002,59.957,29.535 -2020-08-05 21:45:00,86.86,30.335,59.957,29.535 -2020-08-05 22:00:00,81.98,27.763,53.821000000000005,29.535 -2020-08-05 22:15:00,82.56,30.144000000000002,53.821000000000005,29.535 -2020-08-05 22:30:00,80.52,25.849,53.821000000000005,29.535 -2020-08-05 22:45:00,83.39,22.934,53.821000000000005,29.535 -2020-08-05 23:00:00,76.4,20.426,45.458,29.535 -2020-08-05 23:15:00,76.83,19.312,45.458,29.535 -2020-08-05 23:30:00,76.33,18.596,45.458,29.535 -2020-08-05 23:45:00,75.85,17.664,45.458,29.535 -2020-08-06 00:00:00,71.94,17.595,40.36,29.535 -2020-08-06 00:15:00,72.79,18.368,40.36,29.535 -2020-08-06 00:30:00,71.6,17.289,40.36,29.535 -2020-08-06 00:45:00,72.0,17.474,40.36,29.535 -2020-08-06 01:00:00,70.14,17.387999999999998,38.552,29.535 -2020-08-06 01:15:00,71.15,16.648,38.552,29.535 -2020-08-06 01:30:00,70.1,15.435,38.552,29.535 -2020-08-06 01:45:00,69.93,15.404000000000002,38.552,29.535 -2020-08-06 02:00:00,76.01,15.328,36.895,29.535 -2020-08-06 02:15:00,77.91,14.318,36.895,29.535 -2020-08-06 02:30:00,75.22,15.882,36.895,29.535 -2020-08-06 02:45:00,72.63,16.552,36.895,29.535 -2020-08-06 03:00:00,72.82,17.294,36.565,29.535 -2020-08-06 03:15:00,72.3,17.077,36.565,29.535 -2020-08-06 03:30:00,74.58,16.601,36.565,29.535 -2020-08-06 03:45:00,75.09,16.062,36.565,29.535 -2020-08-06 04:00:00,79.6,19.707,37.263000000000005,29.535 -2020-08-06 04:15:00,86.77,24.622,37.263000000000005,29.535 -2020-08-06 04:30:00,88.17,22.183000000000003,37.263000000000005,29.535 -2020-08-06 04:45:00,90.68,22.151,37.263000000000005,29.535 -2020-08-06 05:00:00,90.92,32.816,40.412,29.535 -2020-08-06 05:15:00,94.47,38.146,40.412,29.535 -2020-08-06 05:30:00,102.91,34.119,40.412,29.535 -2020-08-06 05:45:00,107.32,31.916,40.412,29.535 -2020-08-06 06:00:00,110.3,32.035,49.825,29.535 -2020-08-06 06:15:00,109.16,31.708000000000002,49.825,29.535 -2020-08-06 06:30:00,113.88,31.549,49.825,29.535 -2020-08-06 06:45:00,115.25,34.126,49.825,29.535 -2020-08-06 07:00:00,118.34,33.914,61.082,29.535 -2020-08-06 07:15:00,113.87,34.925,61.082,29.535 -2020-08-06 07:30:00,116.05,33.259,61.082,29.535 -2020-08-06 07:45:00,116.6,34.01,61.082,29.535 -2020-08-06 08:00:00,115.41,30.105,53.961999999999996,29.535 -2020-08-06 08:15:00,108.89,32.903,53.961999999999996,29.535 -2020-08-06 08:30:00,114.46,33.955,53.961999999999996,29.535 -2020-08-06 08:45:00,116.44,36.141999999999996,53.961999999999996,29.535 -2020-08-06 09:00:00,117.7,31.888,50.06100000000001,29.535 -2020-08-06 09:15:00,113.69,31.304000000000002,50.06100000000001,29.535 -2020-08-06 09:30:00,109.27,34.489000000000004,50.06100000000001,29.535 -2020-08-06 09:45:00,108.39,37.323,50.06100000000001,29.535 -2020-08-06 10:00:00,109.59,35.102,47.68,29.535 -2020-08-06 10:15:00,109.22,36.260999999999996,47.68,29.535 -2020-08-06 10:30:00,115.31,36.093,47.68,29.535 -2020-08-06 10:45:00,123.63,37.009,47.68,29.535 -2020-08-06 11:00:00,120.81,35.016999999999996,45.93899999999999,29.535 -2020-08-06 11:15:00,120.53,36.128,45.93899999999999,29.535 -2020-08-06 11:30:00,115.4,37.066,45.93899999999999,29.535 -2020-08-06 11:45:00,114.1,37.907,45.93899999999999,29.535 -2020-08-06 12:00:00,108.48,33.357,43.648999999999994,29.535 -2020-08-06 12:15:00,115.79,32.666,43.648999999999994,29.535 -2020-08-06 12:30:00,114.88,31.578000000000003,43.648999999999994,29.535 -2020-08-06 12:45:00,109.1,32.354,43.648999999999994,29.535 -2020-08-06 13:00:00,105.16,31.976999999999997,42.801,29.535 -2020-08-06 13:15:00,109.12,33.035,42.801,29.535 -2020-08-06 13:30:00,109.71,31.41,42.801,29.535 -2020-08-06 13:45:00,108.45,31.504,42.801,29.535 -2020-08-06 14:00:00,105.05,32.884,43.24,29.535 -2020-08-06 14:15:00,106.1,32.052,43.24,29.535 -2020-08-06 14:30:00,113.49,31.171,43.24,29.535 -2020-08-06 14:45:00,112.04,31.83,43.24,29.535 -2020-08-06 15:00:00,106.97,33.484,45.04600000000001,29.535 -2020-08-06 15:15:00,105.8,31.323,45.04600000000001,29.535 -2020-08-06 15:30:00,104.44,30.059,45.04600000000001,29.535 -2020-08-06 15:45:00,107.22,28.526999999999997,45.04600000000001,29.535 -2020-08-06 16:00:00,109.97,30.872,46.568000000000005,29.535 -2020-08-06 16:15:00,108.43,30.785999999999998,46.568000000000005,29.535 -2020-08-06 16:30:00,109.72,30.246,46.568000000000005,29.535 -2020-08-06 16:45:00,114.1,27.866999999999997,46.568000000000005,29.535 -2020-08-06 17:00:00,114.18,31.127,50.618,29.535 -2020-08-06 17:15:00,107.45,31.666,50.618,29.535 -2020-08-06 17:30:00,110.68,30.795,50.618,29.535 -2020-08-06 17:45:00,113.82,30.261,50.618,29.535 -2020-08-06 18:00:00,115.22,33.153,52.806999999999995,29.535 -2020-08-06 18:15:00,116.03,32.963,52.806999999999995,29.535 -2020-08-06 18:30:00,115.79,31.326999999999998,52.806999999999995,29.535 -2020-08-06 18:45:00,111.98,33.882,52.806999999999995,29.535 -2020-08-06 19:00:00,104.96,35.147,53.464,29.535 -2020-08-06 19:15:00,99.09,34.155,53.464,29.535 -2020-08-06 19:30:00,97.96,33.061,53.464,29.535 -2020-08-06 19:45:00,99.34,32.188,53.464,29.535 -2020-08-06 20:00:00,102.66,29.776999999999997,56.753,29.535 -2020-08-06 20:15:00,99.01,29.160999999999998,56.753,29.535 -2020-08-06 20:30:00,98.36,29.416999999999998,56.753,29.535 -2020-08-06 20:45:00,96.53,29.66,56.753,29.535 -2020-08-06 21:00:00,92.34,28.517,52.506,29.535 -2020-08-06 21:15:00,91.64,29.603,52.506,29.535 -2020-08-06 21:30:00,87.55,29.941999999999997,52.506,29.535 -2020-08-06 21:45:00,86.87,30.42,52.506,29.535 -2020-08-06 22:00:00,82.17,27.836,48.163000000000004,29.535 -2020-08-06 22:15:00,83.32,30.206999999999997,48.163000000000004,29.535 -2020-08-06 22:30:00,79.81,25.884,48.163000000000004,29.535 -2020-08-06 22:45:00,79.96,22.967,48.163000000000004,29.535 -2020-08-06 23:00:00,73.69,20.49,42.379,29.535 -2020-08-06 23:15:00,75.01,19.374000000000002,42.379,29.535 -2020-08-06 23:30:00,75.72,18.672,42.379,29.535 -2020-08-06 23:45:00,76.69,17.742,42.379,29.535 -2020-08-07 00:00:00,71.41,16.029,38.505,29.535 -2020-08-07 00:15:00,70.97,16.997,38.505,29.535 -2020-08-07 00:30:00,66.19,16.194000000000003,38.505,29.535 -2020-08-07 00:45:00,68.12,16.788,38.505,29.535 -2020-08-07 01:00:00,69.02,16.339000000000002,37.004,29.535 -2020-08-07 01:15:00,70.25,14.969000000000001,37.004,29.535 -2020-08-07 01:30:00,70.41,14.469000000000001,37.004,29.535 -2020-08-07 01:45:00,70.59,14.186,37.004,29.535 -2020-08-07 02:00:00,76.79,15.011,36.098,29.535 -2020-08-07 02:15:00,79.54,13.975999999999999,36.098,29.535 -2020-08-07 02:30:00,74.87,16.284000000000002,36.098,29.535 -2020-08-07 02:45:00,70.69,16.291,36.098,29.535 -2020-08-07 03:00:00,70.91,17.83,36.561,29.535 -2020-08-07 03:15:00,70.99,16.409000000000002,36.561,29.535 -2020-08-07 03:30:00,73.56,15.71,36.561,29.535 -2020-08-07 03:45:00,75.0,15.999,36.561,29.535 -2020-08-07 04:00:00,77.55,19.767,37.355,29.535 -2020-08-07 04:15:00,85.83,23.194000000000003,37.355,29.535 -2020-08-07 04:30:00,87.24,21.662,37.355,29.535 -2020-08-07 04:45:00,88.67,21.076,37.355,29.535 -2020-08-07 05:00:00,92.85,31.379,40.285,29.535 -2020-08-07 05:15:00,98.87,37.567,40.285,29.535 -2020-08-07 05:30:00,96.26,33.688,40.285,29.535 -2020-08-07 05:45:00,100.51,31.046999999999997,40.285,29.535 -2020-08-07 06:00:00,106.1,31.334,52.378,29.535 -2020-08-07 06:15:00,108.88,31.254,52.378,29.535 -2020-08-07 06:30:00,111.1,31.092,52.378,29.535 -2020-08-07 06:45:00,113.24,33.475,52.378,29.535 -2020-08-07 07:00:00,114.37,33.924,60.891999999999996,29.535 -2020-08-07 07:15:00,113.51,35.764,60.891999999999996,29.535 -2020-08-07 07:30:00,113.78,32.241,60.891999999999996,29.535 -2020-08-07 07:45:00,114.69,32.854,60.891999999999996,29.535 -2020-08-07 08:00:00,115.11,29.781,53.652,29.535 -2020-08-07 08:15:00,119.6,33.239000000000004,53.652,29.535 -2020-08-07 08:30:00,121.84,34.12,53.652,29.535 -2020-08-07 08:45:00,120.12,36.262,53.652,29.535 -2020-08-07 09:00:00,124.38,29.730999999999998,51.456,29.535 -2020-08-07 09:15:00,127.6,30.976999999999997,51.456,29.535 -2020-08-07 09:30:00,130.39,33.506,51.456,29.535 -2020-08-07 09:45:00,126.25,36.711,51.456,29.535 -2020-08-07 10:00:00,120.83,34.423,49.4,29.535 -2020-08-07 10:15:00,127.56,35.29,49.4,29.535 -2020-08-07 10:30:00,127.41,35.665,49.4,29.535 -2020-08-07 10:45:00,126.26,36.516999999999996,49.4,29.535 -2020-08-07 11:00:00,118.94,34.779,48.773,29.535 -2020-08-07 11:15:00,114.75,34.885,48.773,29.535 -2020-08-07 11:30:00,117.42,35.325,48.773,29.535 -2020-08-07 11:45:00,115.42,35.209,48.773,29.535 -2020-08-07 12:00:00,110.13,30.995,46.033,29.535 -2020-08-07 12:15:00,110.2,29.831999999999997,46.033,29.535 -2020-08-07 12:30:00,109.71,28.854,46.033,29.535 -2020-08-07 12:45:00,110.98,28.804000000000002,46.033,29.535 -2020-08-07 13:00:00,108.18,28.916999999999998,44.38399999999999,29.535 -2020-08-07 13:15:00,108.46,30.076999999999998,44.38399999999999,29.535 -2020-08-07 13:30:00,109.25,29.230999999999998,44.38399999999999,29.535 -2020-08-07 13:45:00,111.29,29.642,44.38399999999999,29.535 -2020-08-07 14:00:00,99.65,30.31,43.162,29.535 -2020-08-07 14:15:00,103.35,29.925,43.162,29.535 -2020-08-07 14:30:00,100.75,30.491,43.162,29.535 -2020-08-07 14:45:00,103.99,30.454,43.162,29.535 -2020-08-07 15:00:00,92.04,32.04,44.91,29.535 -2020-08-07 15:15:00,93.49,29.68,44.91,29.535 -2020-08-07 15:30:00,91.17,27.985,44.91,29.535 -2020-08-07 15:45:00,93.1,27.19,44.91,29.535 -2020-08-07 16:00:00,99.66,28.771,47.489,29.535 -2020-08-07 16:15:00,101.19,29.153000000000002,47.489,29.535 -2020-08-07 16:30:00,102.13,28.436999999999998,47.489,29.535 -2020-08-07 16:45:00,100.1,25.329,47.489,29.535 -2020-08-07 17:00:00,107.59,30.236,52.047,29.535 -2020-08-07 17:15:00,107.4,30.662,52.047,29.535 -2020-08-07 17:30:00,106.27,29.985,52.047,29.535 -2020-08-07 17:45:00,100.88,29.333000000000002,52.047,29.535 -2020-08-07 18:00:00,106.56,32.196,53.306000000000004,29.535 -2020-08-07 18:15:00,103.38,31.123,53.306000000000004,29.535 -2020-08-07 18:30:00,105.2,29.368000000000002,53.306000000000004,29.535 -2020-08-07 18:45:00,105.43,32.33,53.306000000000004,29.535 -2020-08-07 19:00:00,100.82,34.372,53.516000000000005,29.535 -2020-08-07 19:15:00,99.6,33.865,53.516000000000005,29.535 -2020-08-07 19:30:00,101.51,32.855,53.516000000000005,29.535 -2020-08-07 19:45:00,97.37,31.035,53.516000000000005,29.535 -2020-08-07 20:00:00,96.5,28.47,57.88,29.535 -2020-08-07 20:15:00,97.87,28.62,57.88,29.535 -2020-08-07 20:30:00,97.05,28.397,57.88,29.535 -2020-08-07 20:45:00,91.55,27.805,57.88,29.535 -2020-08-07 21:00:00,87.14,27.892,53.32,29.535 -2020-08-07 21:15:00,88.39,30.548000000000002,53.32,29.535 -2020-08-07 21:30:00,86.76,30.733,53.32,29.535 -2020-08-07 21:45:00,86.09,31.351,53.32,29.535 -2020-08-07 22:00:00,78.09,28.561,48.074,29.535 -2020-08-07 22:15:00,76.09,30.691,48.074,29.535 -2020-08-07 22:30:00,77.97,30.533,48.074,29.535 -2020-08-07 22:45:00,79.31,28.241999999999997,48.074,29.535 -2020-08-07 23:00:00,74.19,27.438000000000002,41.306999999999995,29.535 -2020-08-07 23:15:00,68.5,24.93,41.306999999999995,29.535 -2020-08-07 23:30:00,66.0,22.58,41.306999999999995,29.535 -2020-08-07 23:45:00,65.38,21.570999999999998,41.306999999999995,29.535 -2020-08-08 00:00:00,66.74,17.496,40.227,29.423000000000002 -2020-08-08 00:15:00,69.29,18.078,40.227,29.423000000000002 -2020-08-08 00:30:00,68.8,16.746,40.227,29.423000000000002 -2020-08-08 00:45:00,63.95,16.6,40.227,29.423000000000002 -2020-08-08 01:00:00,66.72,16.363,36.303000000000004,29.423000000000002 -2020-08-08 01:15:00,67.67,15.626,36.303000000000004,29.423000000000002 -2020-08-08 01:30:00,68.13,14.392999999999999,36.303000000000004,29.423000000000002 -2020-08-08 01:45:00,65.03,15.319,36.303000000000004,29.423000000000002 -2020-08-08 02:00:00,64.36,15.154000000000002,33.849000000000004,29.423000000000002 -2020-08-08 02:15:00,66.91,13.402000000000001,33.849000000000004,29.423000000000002 -2020-08-08 02:30:00,66.76,14.997,33.849000000000004,29.423000000000002 -2020-08-08 02:45:00,63.89,15.75,33.849000000000004,29.423000000000002 -2020-08-08 03:00:00,58.71,15.923,33.149,29.423000000000002 -2020-08-08 03:15:00,64.73,13.921,33.149,29.423000000000002 -2020-08-08 03:30:00,67.22,13.64,33.149,29.423000000000002 -2020-08-08 03:45:00,67.03,15.345,33.149,29.423000000000002 -2020-08-08 04:00:00,65.26,17.557000000000002,32.501,29.423000000000002 -2020-08-08 04:15:00,60.78,20.284000000000002,32.501,29.423000000000002 -2020-08-08 04:30:00,63.06,17.284000000000002,32.501,29.423000000000002 -2020-08-08 04:45:00,63.74,16.992,32.501,29.423000000000002 -2020-08-08 05:00:00,68.08,20.31,31.648000000000003,29.423000000000002 -2020-08-08 05:15:00,70.17,17.18,31.648000000000003,29.423000000000002 -2020-08-08 05:30:00,69.63,14.745999999999999,31.648000000000003,29.423000000000002 -2020-08-08 05:45:00,69.72,16.029,31.648000000000003,29.423000000000002 -2020-08-08 06:00:00,74.01,25.884,32.552,29.423000000000002 -2020-08-08 06:15:00,76.69,32.289,32.552,29.423000000000002 -2020-08-08 06:30:00,74.92,29.739,32.552,29.423000000000002 -2020-08-08 06:45:00,75.68,29.601,32.552,29.423000000000002 -2020-08-08 07:00:00,78.07,29.214000000000002,35.181999999999995,29.423000000000002 -2020-08-08 07:15:00,77.53,29.912,35.181999999999995,29.423000000000002 -2020-08-08 07:30:00,79.7,27.668000000000003,35.181999999999995,29.423000000000002 -2020-08-08 07:45:00,85.61,28.895,35.181999999999995,29.423000000000002 -2020-08-08 08:00:00,89.39,26.308000000000003,40.35,29.423000000000002 -2020-08-08 08:15:00,89.11,29.252,40.35,29.423000000000002 -2020-08-08 08:30:00,80.69,29.98,40.35,29.423000000000002 -2020-08-08 08:45:00,79.94,32.78,40.35,29.423000000000002 -2020-08-08 09:00:00,81.67,29.186,42.292,29.423000000000002 -2020-08-08 09:15:00,85.15,30.836,42.292,29.423000000000002 -2020-08-08 09:30:00,86.84,33.758,42.292,29.423000000000002 -2020-08-08 09:45:00,85.72,36.493,42.292,29.423000000000002 -2020-08-08 10:00:00,78.03,34.819,40.084,29.423000000000002 -2020-08-08 10:15:00,80.44,36.003,40.084,29.423000000000002 -2020-08-08 10:30:00,87.73,36.022,40.084,29.423000000000002 -2020-08-08 10:45:00,76.01,36.408,40.084,29.423000000000002 -2020-08-08 11:00:00,75.02,34.505,36.966,29.423000000000002 -2020-08-08 11:15:00,71.3,35.515,36.966,29.423000000000002 -2020-08-08 11:30:00,71.44,36.321,36.966,29.423000000000002 -2020-08-08 11:45:00,83.52,36.929,36.966,29.423000000000002 -2020-08-08 12:00:00,78.82,33.196,35.19,29.423000000000002 -2020-08-08 12:15:00,77.58,32.803000000000004,35.19,29.423000000000002 -2020-08-08 12:30:00,68.36,31.677,35.19,29.423000000000002 -2020-08-08 12:45:00,71.92,32.397,35.19,29.423000000000002 -2020-08-08 13:00:00,65.67,31.694000000000003,32.277,29.423000000000002 -2020-08-08 13:15:00,71.96,32.49,32.277,29.423000000000002 -2020-08-08 13:30:00,63.1,31.866,32.277,29.423000000000002 -2020-08-08 13:45:00,64.32,30.926,32.277,29.423000000000002 -2020-08-08 14:00:00,72.95,31.502,31.436999999999998,29.423000000000002 -2020-08-08 14:15:00,65.23,29.944000000000003,31.436999999999998,29.423000000000002 -2020-08-08 14:30:00,63.29,30.256,31.436999999999998,29.423000000000002 -2020-08-08 14:45:00,69.43,30.671999999999997,31.436999999999998,29.423000000000002 -2020-08-08 15:00:00,64.98,32.576,33.493,29.423000000000002 -2020-08-08 15:15:00,62.48,30.843000000000004,33.493,29.423000000000002 -2020-08-08 15:30:00,61.84,29.228,33.493,29.423000000000002 -2020-08-08 15:45:00,64.18,27.535999999999998,33.493,29.423000000000002 -2020-08-08 16:00:00,64.57,31.239,36.593,29.423000000000002 -2020-08-08 16:15:00,66.55,30.691,36.593,29.423000000000002 -2020-08-08 16:30:00,72.26,30.206999999999997,36.593,29.423000000000002 -2020-08-08 16:45:00,72.92,27.033,36.593,29.423000000000002 -2020-08-08 17:00:00,74.06,30.78,42.049,29.423000000000002 -2020-08-08 17:15:00,73.2,29.022,42.049,29.423000000000002 -2020-08-08 17:30:00,75.04,28.235,42.049,29.423000000000002 -2020-08-08 17:45:00,77.03,28.121,42.049,29.423000000000002 -2020-08-08 18:00:00,78.39,32.303000000000004,43.755,29.423000000000002 -2020-08-08 18:15:00,76.69,32.72,43.755,29.423000000000002 -2020-08-08 18:30:00,76.27,32.189,43.755,29.423000000000002 -2020-08-08 18:45:00,76.64,32.038000000000004,43.755,29.423000000000002 -2020-08-08 19:00:00,75.57,32.424,44.492,29.423000000000002 -2020-08-08 19:15:00,72.67,30.984,44.492,29.423000000000002 -2020-08-08 19:30:00,72.39,30.662,44.492,29.423000000000002 -2020-08-08 19:45:00,73.31,30.538,44.492,29.423000000000002 -2020-08-08 20:00:00,75.0,28.638,40.896,29.423000000000002 -2020-08-08 20:15:00,74.88,28.051,40.896,29.423000000000002 -2020-08-08 20:30:00,74.76,27.0,40.896,29.423000000000002 -2020-08-08 20:45:00,74.69,28.18,40.896,29.423000000000002 -2020-08-08 21:00:00,71.99,26.721999999999998,39.056,29.423000000000002 -2020-08-08 21:15:00,71.04,29.015,39.056,29.423000000000002 -2020-08-08 21:30:00,67.87,29.302,39.056,29.423000000000002 -2020-08-08 21:45:00,67.58,29.401,39.056,29.423000000000002 -2020-08-08 22:00:00,63.3,26.502,38.478,29.423000000000002 -2020-08-08 22:15:00,64.97,28.721,38.478,29.423000000000002 -2020-08-08 22:30:00,62.91,27.836,38.478,29.423000000000002 -2020-08-08 22:45:00,62.35,25.795,38.478,29.423000000000002 -2020-08-08 23:00:00,57.64,24.291,32.953,29.423000000000002 -2020-08-08 23:15:00,57.7,22.261999999999997,32.953,29.423000000000002 -2020-08-08 23:30:00,58.28,22.333000000000002,32.953,29.423000000000002 -2020-08-08 23:45:00,58.51,21.79,32.953,29.423000000000002 -2020-08-09 00:00:00,54.08,18.893,28.584,29.423000000000002 -2020-08-09 00:15:00,54.76,18.393,28.584,29.423000000000002 -2020-08-09 00:30:00,54.22,16.949,28.584,29.423000000000002 -2020-08-09 00:45:00,55.07,16.660999999999998,28.584,29.423000000000002 -2020-08-09 01:00:00,51.21,16.673,26.419,29.423000000000002 -2020-08-09 01:15:00,53.23,15.76,26.419,29.423000000000002 -2020-08-09 01:30:00,50.21,14.374,26.419,29.423000000000002 -2020-08-09 01:45:00,52.88,14.954,26.419,29.423000000000002 -2020-08-09 02:00:00,51.33,14.915,25.335,29.423000000000002 -2020-08-09 02:15:00,52.26,13.91,25.335,29.423000000000002 -2020-08-09 02:30:00,51.66,15.61,25.335,29.423000000000002 -2020-08-09 02:45:00,51.22,16.055999999999997,25.335,29.423000000000002 -2020-08-09 03:00:00,51.33,16.819000000000003,24.805,29.423000000000002 -2020-08-09 03:15:00,52.88,15.114,24.805,29.423000000000002 -2020-08-09 03:30:00,52.66,14.052,24.805,29.423000000000002 -2020-08-09 03:45:00,53.13,15.005999999999998,24.805,29.423000000000002 -2020-08-09 04:00:00,53.45,17.209,25.772,29.423000000000002 -2020-08-09 04:15:00,54.38,19.586,25.772,29.423000000000002 -2020-08-09 04:30:00,52.71,17.863,25.772,29.423000000000002 -2020-08-09 04:45:00,52.22,17.111,25.772,29.423000000000002 -2020-08-09 05:00:00,51.09,20.83,25.971999999999998,29.423000000000002 -2020-08-09 05:15:00,51.86,17.137999999999998,25.971999999999998,29.423000000000002 -2020-08-09 05:30:00,51.9,14.347999999999999,25.971999999999998,29.423000000000002 -2020-08-09 05:45:00,52.64,15.338,25.971999999999998,29.423000000000002 -2020-08-09 06:00:00,52.67,22.945,26.026,29.423000000000002 -2020-08-09 06:15:00,53.6,30.255,26.026,29.423000000000002 -2020-08-09 06:30:00,54.27,27.113000000000003,26.026,29.423000000000002 -2020-08-09 06:45:00,55.49,26.105999999999998,26.026,29.423000000000002 -2020-08-09 07:00:00,57.23,25.877,27.396,29.423000000000002 -2020-08-09 07:15:00,57.15,25.078000000000003,27.396,29.423000000000002 -2020-08-09 07:30:00,56.53,24.169,27.396,29.423000000000002 -2020-08-09 07:45:00,56.43,25.428,27.396,29.423000000000002 -2020-08-09 08:00:00,56.12,23.463,30.791999999999998,29.423000000000002 -2020-08-09 08:15:00,57.24,27.535,30.791999999999998,29.423000000000002 -2020-08-09 08:30:00,56.64,28.962,30.791999999999998,29.423000000000002 -2020-08-09 08:45:00,57.8,31.506999999999998,30.791999999999998,29.423000000000002 -2020-08-09 09:00:00,57.9,27.857,32.482,29.423000000000002 -2020-08-09 09:15:00,57.48,28.969,32.482,29.423000000000002 -2020-08-09 09:30:00,53.71,32.31,32.482,29.423000000000002 -2020-08-09 09:45:00,57.49,36.016999999999996,32.482,29.423000000000002 -2020-08-09 10:00:00,58.06,34.648,31.951,29.423000000000002 -2020-08-09 10:15:00,59.54,35.896,31.951,29.423000000000002 -2020-08-09 10:30:00,61.42,36.068000000000005,31.951,29.423000000000002 -2020-08-09 10:45:00,60.84,37.628,31.951,29.423000000000002 -2020-08-09 11:00:00,60.37,35.299,33.619,29.423000000000002 -2020-08-09 11:15:00,61.49,35.853,33.619,29.423000000000002 -2020-08-09 11:30:00,57.13,37.247,33.619,29.423000000000002 -2020-08-09 11:45:00,57.85,38.035,33.619,29.423000000000002 -2020-08-09 12:00:00,53.65,35.400999999999996,30.975,29.423000000000002 -2020-08-09 12:15:00,52.86,34.196999999999996,30.975,29.423000000000002 -2020-08-09 12:30:00,50.62,33.433,30.975,29.423000000000002 -2020-08-09 12:45:00,50.63,33.611999999999995,30.975,29.423000000000002 -2020-08-09 13:00:00,49.19,32.663000000000004,27.956999999999997,29.423000000000002 -2020-08-09 13:15:00,48.43,32.585,27.956999999999997,29.423000000000002 -2020-08-09 13:30:00,48.61,30.886999999999997,27.956999999999997,29.423000000000002 -2020-08-09 13:45:00,49.71,31.119,27.956999999999997,29.423000000000002 -2020-08-09 14:00:00,49.4,32.830999999999996,25.555999999999997,29.423000000000002 -2020-08-09 14:15:00,50.46,31.583000000000002,25.555999999999997,29.423000000000002 -2020-08-09 14:30:00,49.99,30.576,25.555999999999997,29.423000000000002 -2020-08-09 14:45:00,51.47,29.987,25.555999999999997,29.423000000000002 -2020-08-09 15:00:00,52.05,32.154,26.271,29.423000000000002 -2020-08-09 15:15:00,51.23,29.56,26.271,29.423000000000002 -2020-08-09 15:30:00,52.35,27.721999999999998,26.271,29.423000000000002 -2020-08-09 15:45:00,54.8,26.245,26.271,29.423000000000002 -2020-08-09 16:00:00,58.39,28.193,30.369,29.423000000000002 -2020-08-09 16:15:00,59.37,27.954,30.369,29.423000000000002 -2020-08-09 16:30:00,61.94,28.434,30.369,29.423000000000002 -2020-08-09 16:45:00,64.25,25.340999999999998,30.369,29.423000000000002 -2020-08-09 17:00:00,67.55,29.435,38.787,29.423000000000002 -2020-08-09 17:15:00,69.77,29.199,38.787,29.423000000000002 -2020-08-09 17:30:00,74.47,29.183000000000003,38.787,29.423000000000002 -2020-08-09 17:45:00,73.06,29.31,38.787,29.423000000000002 -2020-08-09 18:00:00,76.18,34.126999999999995,41.886,29.423000000000002 -2020-08-09 18:15:00,75.37,34.056,41.886,29.423000000000002 -2020-08-09 18:30:00,78.04,33.457,41.886,29.423000000000002 -2020-08-09 18:45:00,75.37,33.274,41.886,29.423000000000002 -2020-08-09 19:00:00,77.91,35.796,42.91,29.423000000000002 -2020-08-09 19:15:00,76.23,33.253,42.91,29.423000000000002 -2020-08-09 19:30:00,76.04,32.707,42.91,29.423000000000002 -2020-08-09 19:45:00,78.63,32.049,42.91,29.423000000000002 -2020-08-09 20:00:00,79.32,30.315,42.148999999999994,29.423000000000002 -2020-08-09 20:15:00,78.88,29.53,42.148999999999994,29.423000000000002 -2020-08-09 20:30:00,78.51,29.153000000000002,42.148999999999994,29.423000000000002 -2020-08-09 20:45:00,77.97,28.791,42.148999999999994,29.423000000000002 -2020-08-09 21:00:00,76.29,27.416,40.955999999999996,29.423000000000002 -2020-08-09 21:15:00,76.26,29.456999999999997,40.955999999999996,29.423000000000002 -2020-08-09 21:30:00,74.21,29.101,40.955999999999996,29.423000000000002 -2020-08-09 21:45:00,72.91,29.506,40.955999999999996,29.423000000000002 -2020-08-09 22:00:00,68.37,28.61,39.873000000000005,29.423000000000002 -2020-08-09 22:15:00,70.97,29.274,39.873000000000005,29.423000000000002 -2020-08-09 22:30:00,68.0,28.081,39.873000000000005,29.423000000000002 -2020-08-09 22:45:00,68.68,24.886999999999997,39.873000000000005,29.423000000000002 -2020-08-09 23:00:00,64.15,23.305999999999997,35.510999999999996,29.423000000000002 -2020-08-09 23:15:00,65.15,22.361,35.510999999999996,29.423000000000002 -2020-08-09 23:30:00,65.42,21.884,35.510999999999996,29.423000000000002 -2020-08-09 23:45:00,64.78,21.439,35.510999999999996,29.423000000000002 -2020-08-10 00:00:00,64.59,20.146,33.475,29.535 -2020-08-10 00:15:00,67.7,20.188,33.475,29.535 -2020-08-10 00:30:00,67.92,18.373,33.475,29.535 -2020-08-10 00:45:00,66.94,17.753,33.475,29.535 -2020-08-10 01:00:00,60.75,18.12,33.111,29.535 -2020-08-10 01:15:00,62.05,17.266,33.111,29.535 -2020-08-10 01:30:00,61.91,16.230999999999998,33.111,29.535 -2020-08-10 01:45:00,61.67,16.708,33.111,29.535 -2020-08-10 02:00:00,62.03,17.11,32.358000000000004,29.535 -2020-08-10 02:15:00,66.27,15.054,32.358000000000004,29.535 -2020-08-10 02:30:00,69.88,16.866,32.358000000000004,29.535 -2020-08-10 02:45:00,70.55,17.215,32.358000000000004,29.535 -2020-08-10 03:00:00,67.73,18.362000000000002,30.779,29.535 -2020-08-10 03:15:00,64.33,17.243,30.779,29.535 -2020-08-10 03:30:00,68.6,16.858,30.779,29.535 -2020-08-10 03:45:00,68.36,17.41,30.779,29.535 -2020-08-10 04:00:00,72.46,22.284000000000002,31.416,29.535 -2020-08-10 04:15:00,75.4,27.168000000000003,31.416,29.535 -2020-08-10 04:30:00,77.15,24.838,31.416,29.535 -2020-08-10 04:45:00,82.65,24.43,31.416,29.535 -2020-08-10 05:00:00,87.89,34.043,37.221,29.535 -2020-08-10 05:15:00,93.43,38.881,37.221,29.535 -2020-08-10 05:30:00,98.76,34.632,37.221,29.535 -2020-08-10 05:45:00,106.75,33.045,37.221,29.535 -2020-08-10 06:00:00,109.61,31.978,51.891000000000005,29.535 -2020-08-10 06:15:00,110.17,31.636,51.891000000000005,29.535 -2020-08-10 06:30:00,106.16,31.749000000000002,51.891000000000005,29.535 -2020-08-10 06:45:00,105.44,35.194,51.891000000000005,29.535 -2020-08-10 07:00:00,112.69,34.809,62.282,29.535 -2020-08-10 07:15:00,114.13,36.123000000000005,62.282,29.535 -2020-08-10 07:30:00,114.44,34.466,62.282,29.535 -2020-08-10 07:45:00,111.46,36.219,62.282,29.535 -2020-08-10 08:00:00,109.2,32.409,54.102,29.535 -2020-08-10 08:15:00,114.03,35.476,54.102,29.535 -2020-08-10 08:30:00,115.94,36.306999999999995,54.102,29.535 -2020-08-10 08:45:00,113.48,39.326,54.102,29.535 -2020-08-10 09:00:00,109.67,34.673,50.917,29.535 -2020-08-10 09:15:00,113.16,34.354,50.917,29.535 -2020-08-10 09:30:00,114.97,36.866,50.917,29.535 -2020-08-10 09:45:00,114.23,38.284,50.917,29.535 -2020-08-10 10:00:00,110.17,37.372,49.718999999999994,29.535 -2020-08-10 10:15:00,112.96,38.489000000000004,49.718999999999994,29.535 -2020-08-10 10:30:00,113.44,38.289,49.718999999999994,29.535 -2020-08-10 10:45:00,112.68,38.208,49.718999999999994,29.535 -2020-08-10 11:00:00,106.81,36.395,49.833999999999996,29.535 -2020-08-10 11:15:00,101.75,37.046,49.833999999999996,29.535 -2020-08-10 11:30:00,108.76,38.986,49.833999999999996,29.535 -2020-08-10 11:45:00,115.96,40.294000000000004,49.833999999999996,29.535 -2020-08-10 12:00:00,116.04,35.781,47.832,29.535 -2020-08-10 12:15:00,108.93,34.679,47.832,29.535 -2020-08-10 12:30:00,105.17,32.842,47.832,29.535 -2020-08-10 12:45:00,109.13,32.858000000000004,47.832,29.535 -2020-08-10 13:00:00,105.35,32.725,48.03,29.535 -2020-08-10 13:15:00,106.96,31.901999999999997,48.03,29.535 -2020-08-10 13:30:00,112.55,30.421999999999997,48.03,29.535 -2020-08-10 13:45:00,110.89,31.543000000000003,48.03,29.535 -2020-08-10 14:00:00,108.24,32.449,48.157,29.535 -2020-08-10 14:15:00,116.67,31.851,48.157,29.535 -2020-08-10 14:30:00,109.93,30.743000000000002,48.157,29.535 -2020-08-10 14:45:00,100.75,32.195,48.157,29.535 -2020-08-10 15:00:00,102.13,33.843,48.897,29.535 -2020-08-10 15:15:00,101.58,30.81,48.897,29.535 -2020-08-10 15:30:00,103.82,29.811999999999998,48.897,29.535 -2020-08-10 15:45:00,112.32,27.903000000000002,48.897,29.535 -2020-08-10 16:00:00,107.56,30.926,51.446000000000005,29.535 -2020-08-10 16:15:00,110.02,30.826,51.446000000000005,29.535 -2020-08-10 16:30:00,111.09,30.749000000000002,51.446000000000005,29.535 -2020-08-10 16:45:00,111.76,27.815,51.446000000000005,29.535 -2020-08-10 17:00:00,116.67,30.83,57.507,29.535 -2020-08-10 17:15:00,115.62,31.066999999999997,57.507,29.535 -2020-08-10 17:30:00,119.59,30.733,57.507,29.535 -2020-08-10 17:45:00,117.62,30.63,57.507,29.535 -2020-08-10 18:00:00,112.36,34.413000000000004,57.896,29.535 -2020-08-10 18:15:00,111.68,32.756,57.896,29.535 -2020-08-10 18:30:00,111.01,31.386,57.896,29.535 -2020-08-10 18:45:00,118.2,34.199,57.896,29.535 -2020-08-10 19:00:00,115.05,36.61,57.891999999999996,29.535 -2020-08-10 19:15:00,108.14,35.417,57.891999999999996,29.535 -2020-08-10 19:30:00,100.95,34.482,57.891999999999996,29.535 -2020-08-10 19:45:00,107.15,33.301,57.891999999999996,29.535 -2020-08-10 20:00:00,107.38,30.524,64.57300000000001,29.535 -2020-08-10 20:15:00,106.34,31.261,64.57300000000001,29.535 -2020-08-10 20:30:00,101.37,31.505,64.57300000000001,29.535 -2020-08-10 20:45:00,96.58,31.21,64.57300000000001,29.535 -2020-08-10 21:00:00,92.54,29.186,59.431999999999995,29.535 -2020-08-10 21:15:00,98.18,31.721999999999998,59.431999999999995,29.535 -2020-08-10 21:30:00,94.61,31.811,59.431999999999995,29.535 -2020-08-10 21:45:00,89.3,32.016,59.431999999999995,29.535 -2020-08-10 22:00:00,85.65,29.331999999999997,51.519,29.535 -2020-08-10 22:15:00,83.02,31.964000000000002,51.519,29.535 -2020-08-10 22:30:00,84.02,27.245,51.519,29.535 -2020-08-10 22:45:00,86.92,24.348000000000003,51.519,29.535 -2020-08-10 23:00:00,83.27,22.737,44.501000000000005,29.535 -2020-08-10 23:15:00,79.13,20.052,44.501000000000005,29.535 -2020-08-10 23:30:00,77.81,19.378,44.501000000000005,29.535 -2020-08-10 23:45:00,76.11,18.256,44.501000000000005,29.535 -2020-08-11 00:00:00,80.82,18.12,44.522,29.535 -2020-08-11 00:15:00,81.42,18.89,44.522,29.535 -2020-08-11 00:30:00,79.26,17.834,44.522,29.535 -2020-08-11 00:45:00,77.23,18.055999999999997,44.522,29.535 -2020-08-11 01:00:00,77.88,17.902,41.441,29.535 -2020-08-11 01:15:00,81.19,17.195,41.441,29.535 -2020-08-11 01:30:00,80.87,16.033,41.441,29.535 -2020-08-11 01:45:00,77.52,15.99,41.441,29.535 -2020-08-11 02:00:00,76.14,15.933,40.203,29.535 -2020-08-11 02:15:00,80.33,15.019,40.203,29.535 -2020-08-11 02:30:00,80.22,16.476,40.203,29.535 -2020-08-11 02:45:00,76.52,17.139,40.203,29.535 -2020-08-11 03:00:00,76.12,17.828,39.536,29.535 -2020-08-11 03:15:00,81.42,17.687,39.536,29.535 -2020-08-11 03:30:00,82.68,17.243,39.536,29.535 -2020-08-11 03:45:00,81.38,16.709,39.536,29.535 -2020-08-11 04:00:00,84.21,20.386,40.759,29.535 -2020-08-11 04:15:00,83.25,25.311,40.759,29.535 -2020-08-11 04:30:00,87.0,22.891,40.759,29.535 -2020-08-11 04:45:00,96.1,22.866999999999997,40.759,29.535 -2020-08-11 05:00:00,103.35,33.692,43.623999999999995,29.535 -2020-08-11 05:15:00,104.96,39.169000000000004,43.623999999999995,29.535 -2020-08-11 05:30:00,101.93,35.208,43.623999999999995,29.535 -2020-08-11 05:45:00,103.66,32.900999999999996,43.623999999999995,29.535 -2020-08-11 06:00:00,107.81,32.9,52.684,29.535 -2020-08-11 06:15:00,115.41,32.653,52.684,29.535 -2020-08-11 06:30:00,119.45,32.504,52.684,29.535 -2020-08-11 06:45:00,121.63,35.13,52.684,29.535 -2020-08-11 07:00:00,117.33,34.907,62.676,29.535 -2020-08-11 07:15:00,117.63,36.001,62.676,29.535 -2020-08-11 07:30:00,120.47,34.424,62.676,29.535 -2020-08-11 07:45:00,121.97,35.217,62.676,29.535 -2020-08-11 08:00:00,118.67,31.328000000000003,56.161,29.535 -2020-08-11 08:15:00,115.82,34.021,56.161,29.535 -2020-08-11 08:30:00,109.61,35.024,56.161,29.535 -2020-08-11 08:45:00,108.39,37.145,56.161,29.535 -2020-08-11 09:00:00,118.63,32.913000000000004,52.132,29.535 -2020-08-11 09:15:00,124.0,32.294000000000004,52.132,29.535 -2020-08-11 09:30:00,120.89,35.407,52.132,29.535 -2020-08-11 09:45:00,113.74,38.154,52.132,29.535 -2020-08-11 10:00:00,115.04,35.943000000000005,51.032,29.535 -2020-08-11 10:15:00,111.74,37.010999999999996,51.032,29.535 -2020-08-11 10:30:00,117.81,36.813,51.032,29.535 -2020-08-11 10:45:00,120.03,37.7,51.032,29.535 -2020-08-11 11:00:00,116.21,35.745,51.085,29.535 -2020-08-11 11:15:00,109.85,36.827,51.085,29.535 -2020-08-11 11:30:00,112.41,37.735,51.085,29.535 -2020-08-11 11:45:00,117.13,38.514,51.085,29.535 -2020-08-11 12:00:00,121.63,33.95,49.049,29.535 -2020-08-11 12:15:00,122.61,33.218,49.049,29.535 -2020-08-11 12:30:00,116.41,32.172,49.049,29.535 -2020-08-11 12:45:00,106.88,32.898,49.049,29.535 -2020-08-11 13:00:00,103.94,32.428000000000004,49.722,29.535 -2020-08-11 13:15:00,106.12,33.428000000000004,49.722,29.535 -2020-08-11 13:30:00,107.33,31.793000000000003,49.722,29.535 -2020-08-11 13:45:00,105.9,31.94,49.722,29.535 -2020-08-11 14:00:00,104.55,33.245,49.565,29.535 -2020-08-11 14:15:00,111.12,32.436,49.565,29.535 -2020-08-11 14:30:00,106.63,31.599,49.565,29.535 -2020-08-11 14:45:00,112.83,32.278,49.565,29.535 -2020-08-11 15:00:00,106.44,33.777,51.108999999999995,29.535 -2020-08-11 15:15:00,107.53,31.633000000000003,51.108999999999995,29.535 -2020-08-11 15:30:00,111.68,30.412,51.108999999999995,29.535 -2020-08-11 15:45:00,112.97,28.89,51.108999999999995,29.535 -2020-08-11 16:00:00,110.35,31.155,52.725,29.535 -2020-08-11 16:15:00,106.75,31.103,52.725,29.535 -2020-08-11 16:30:00,107.28,30.604,52.725,29.535 -2020-08-11 16:45:00,113.29,28.383000000000003,52.725,29.535 -2020-08-11 17:00:00,120.26,31.531999999999996,58.031000000000006,29.535 -2020-08-11 17:15:00,116.61,32.205,58.031000000000006,29.535 -2020-08-11 17:30:00,113.1,31.391,58.031000000000006,29.535 -2020-08-11 17:45:00,115.09,31.000999999999998,58.031000000000006,29.535 -2020-08-11 18:00:00,111.56,33.868,58.338,29.535 -2020-08-11 18:15:00,114.45,33.714,58.338,29.535 -2020-08-11 18:30:00,115.07,32.123000000000005,58.338,29.535 -2020-08-11 18:45:00,115.29,34.679,58.338,29.535 -2020-08-11 19:00:00,107.15,35.964,58.464,29.535 -2020-08-11 19:15:00,108.56,34.964,58.464,29.535 -2020-08-11 19:30:00,109.56,33.873000000000005,58.464,29.535 -2020-08-11 19:45:00,111.07,33.014,58.464,29.535 -2020-08-11 20:00:00,104.95,30.608,63.708,29.535 -2020-08-11 20:15:00,102.1,30.0,63.708,29.535 -2020-08-11 20:30:00,97.33,30.191999999999997,63.708,29.535 -2020-08-11 20:45:00,97.81,30.324,63.708,29.535 -2020-08-11 21:00:00,95.02,29.195,57.06399999999999,29.535 -2020-08-11 21:15:00,98.79,30.244,57.06399999999999,29.535 -2020-08-11 21:30:00,96.16,30.55,57.06399999999999,29.535 -2020-08-11 21:45:00,94.75,30.9,57.06399999999999,29.535 -2020-08-11 22:00:00,85.73,28.247,52.831,29.535 -2020-08-11 22:15:00,90.12,30.564,52.831,29.535 -2020-08-11 22:30:00,87.77,26.09,52.831,29.535 -2020-08-11 22:45:00,86.92,23.166999999999998,52.831,29.535 -2020-08-11 23:00:00,83.18,20.858,44.717,29.535 -2020-08-11 23:15:00,84.73,19.727,44.717,29.535 -2020-08-11 23:30:00,83.67,19.087,44.717,29.535 -2020-08-11 23:45:00,76.9,18.173,44.717,29.535 -2020-08-12 00:00:00,72.5,18.233,41.263000000000005,29.535 -2020-08-12 00:15:00,78.82,19.003,41.263000000000005,29.535 -2020-08-12 00:30:00,80.76,17.951,41.263000000000005,29.535 -2020-08-12 00:45:00,81.39,18.18,41.263000000000005,29.535 -2020-08-12 01:00:00,78.93,18.011,38.448,29.535 -2020-08-12 01:15:00,81.15,17.312,38.448,29.535 -2020-08-12 01:30:00,80.17,16.162,38.448,29.535 -2020-08-12 01:45:00,77.33,16.117,38.448,29.535 -2020-08-12 02:00:00,73.77,16.063,36.471,29.535 -2020-08-12 02:15:00,73.65,15.169,36.471,29.535 -2020-08-12 02:30:00,80.17,16.605,36.471,29.535 -2020-08-12 02:45:00,80.73,17.266,36.471,29.535 -2020-08-12 03:00:00,81.84,17.944000000000003,36.042,29.535 -2020-08-12 03:15:00,75.9,17.819000000000003,36.042,29.535 -2020-08-12 03:30:00,82.63,17.381,36.042,29.535 -2020-08-12 03:45:00,85.64,16.847,36.042,29.535 -2020-08-12 04:00:00,87.96,20.533,36.705,29.535 -2020-08-12 04:15:00,83.3,25.464000000000002,36.705,29.535 -2020-08-12 04:30:00,94.27,23.048000000000002,36.705,29.535 -2020-08-12 04:45:00,96.6,23.026,36.705,29.535 -2020-08-12 05:00:00,101.67,33.89,39.716,29.535 -2020-08-12 05:15:00,102.94,39.406,39.716,29.535 -2020-08-12 05:30:00,106.43,35.455,39.716,29.535 -2020-08-12 05:45:00,111.7,33.123000000000005,39.716,29.535 -2020-08-12 06:00:00,115.63,33.095,52.756,29.535 -2020-08-12 06:15:00,114.21,32.867,52.756,29.535 -2020-08-12 06:30:00,115.31,32.718,52.756,29.535 -2020-08-12 06:45:00,119.39,35.351,52.756,29.535 -2020-08-12 07:00:00,120.77,35.128,65.977,29.535 -2020-08-12 07:15:00,115.6,36.236999999999995,65.977,29.535 -2020-08-12 07:30:00,114.05,34.679,65.977,29.535 -2020-08-12 07:45:00,117.2,35.479,65.977,29.535 -2020-08-12 08:00:00,118.01,31.593000000000004,57.927,29.535 -2020-08-12 08:15:00,113.31,34.262,57.927,29.535 -2020-08-12 08:30:00,111.75,35.255,57.927,29.535 -2020-08-12 08:45:00,110.43,37.361999999999995,57.927,29.535 -2020-08-12 09:00:00,116.17,33.135,54.86,29.535 -2020-08-12 09:15:00,116.01,32.508,54.86,29.535 -2020-08-12 09:30:00,116.37,35.607,54.86,29.535 -2020-08-12 09:45:00,112.57,38.335,54.86,29.535 -2020-08-12 10:00:00,113.53,36.125,52.818000000000005,29.535 -2020-08-12 10:15:00,118.87,37.175,52.818000000000005,29.535 -2020-08-12 10:30:00,114.46,36.969,52.818000000000005,29.535 -2020-08-12 10:45:00,110.49,37.849000000000004,52.818000000000005,29.535 -2020-08-12 11:00:00,116.41,35.904,52.937,29.535 -2020-08-12 11:15:00,112.99,36.979,52.937,29.535 -2020-08-12 11:30:00,106.78,37.882,52.937,29.535 -2020-08-12 11:45:00,114.37,38.647,52.937,29.535 -2020-08-12 12:00:00,116.44,34.079,50.826,29.535 -2020-08-12 12:15:00,114.58,33.338,50.826,29.535 -2020-08-12 12:30:00,119.4,32.302,50.826,29.535 -2020-08-12 12:45:00,114.81,33.016999999999996,50.826,29.535 -2020-08-12 13:00:00,111.49,32.529,50.556000000000004,29.535 -2020-08-12 13:15:00,104.65,33.516999999999996,50.556000000000004,29.535 -2020-08-12 13:30:00,100.7,31.879,50.556000000000004,29.535 -2020-08-12 13:45:00,102.39,32.037,50.556000000000004,29.535 -2020-08-12 14:00:00,103.75,33.325,51.188,29.535 -2020-08-12 14:15:00,103.76,32.522,51.188,29.535 -2020-08-12 14:30:00,107.42,31.695999999999998,51.188,29.535 -2020-08-12 14:45:00,105.01,32.378,51.188,29.535 -2020-08-12 15:00:00,100.4,33.842,52.976000000000006,29.535 -2020-08-12 15:15:00,103.59,31.701999999999998,52.976000000000006,29.535 -2020-08-12 15:30:00,101.61,30.491,52.976000000000006,29.535 -2020-08-12 15:45:00,103.92,28.971999999999998,52.976000000000006,29.535 -2020-08-12 16:00:00,102.77,31.217,55.463,29.535 -2020-08-12 16:15:00,107.41,31.173000000000002,55.463,29.535 -2020-08-12 16:30:00,108.87,30.682,55.463,29.535 -2020-08-12 16:45:00,109.71,28.494,55.463,29.535 -2020-08-12 17:00:00,108.65,31.62,59.435,29.535 -2020-08-12 17:15:00,108.44,32.32,59.435,29.535 -2020-08-12 17:30:00,108.62,31.518,59.435,29.535 -2020-08-12 17:45:00,109.31,31.159000000000002,59.435,29.535 -2020-08-12 18:00:00,109.78,34.02,61.387,29.535 -2020-08-12 18:15:00,107.43,33.876,61.387,29.535 -2020-08-12 18:30:00,107.41,32.295,61.387,29.535 -2020-08-12 18:45:00,106.93,34.85,61.387,29.535 -2020-08-12 19:00:00,105.24,36.139,63.323,29.535 -2020-08-12 19:15:00,101.29,35.138000000000005,63.323,29.535 -2020-08-12 19:30:00,101.31,34.048,63.323,29.535 -2020-08-12 19:45:00,105.17,33.194,63.323,29.535 -2020-08-12 20:00:00,102.58,30.789,69.083,29.535 -2020-08-12 20:15:00,100.04,30.183000000000003,69.083,29.535 -2020-08-12 20:30:00,99.46,30.362,69.083,29.535 -2020-08-12 20:45:00,97.18,30.468000000000004,69.083,29.535 -2020-08-12 21:00:00,93.2,29.343000000000004,59.957,29.535 -2020-08-12 21:15:00,90.83,30.383000000000003,59.957,29.535 -2020-08-12 21:30:00,86.78,30.683000000000003,59.957,29.535 -2020-08-12 21:45:00,87.17,31.006,59.957,29.535 -2020-08-12 22:00:00,81.89,28.338,53.821000000000005,29.535 -2020-08-12 22:15:00,83.57,30.643,53.821000000000005,29.535 -2020-08-12 22:30:00,80.19,26.136999999999997,53.821000000000005,29.535 -2020-08-12 22:45:00,79.2,23.215,53.821000000000005,29.535 -2020-08-12 23:00:00,76.03,20.941,45.458,29.535 -2020-08-12 23:15:00,75.7,19.805,45.458,29.535 -2020-08-12 23:30:00,76.14,19.178,45.458,29.535 -2020-08-12 23:45:00,76.61,18.267,45.458,29.535 -2020-08-13 00:00:00,72.42,18.349,40.36,29.535 -2020-08-13 00:15:00,73.49,19.119,40.36,29.535 -2020-08-13 00:30:00,73.4,18.072,40.36,29.535 -2020-08-13 00:45:00,73.58,18.308,40.36,29.535 -2020-08-13 01:00:00,73.1,18.123,38.552,29.535 -2020-08-13 01:15:00,73.24,17.432000000000002,38.552,29.535 -2020-08-13 01:30:00,72.48,16.293,38.552,29.535 -2020-08-13 01:45:00,73.22,16.247,38.552,29.535 -2020-08-13 02:00:00,71.87,16.195999999999998,36.895,29.535 -2020-08-13 02:15:00,75.03,15.322000000000001,36.895,29.535 -2020-08-13 02:30:00,78.27,16.736,36.895,29.535 -2020-08-13 02:45:00,80.01,17.394000000000002,36.895,29.535 -2020-08-13 03:00:00,77.38,18.062,36.565,29.535 -2020-08-13 03:15:00,72.6,17.952,36.565,29.535 -2020-08-13 03:30:00,74.33,17.521,36.565,29.535 -2020-08-13 03:45:00,79.52,16.986,36.565,29.535 -2020-08-13 04:00:00,85.0,20.684,37.263000000000005,29.535 -2020-08-13 04:15:00,91.08,25.62,37.263000000000005,29.535 -2020-08-13 04:30:00,94.95,23.21,37.263000000000005,29.535 -2020-08-13 04:45:00,93.59,23.19,37.263000000000005,29.535 -2020-08-13 05:00:00,98.02,34.096,40.412,29.535 -2020-08-13 05:15:00,100.02,39.655,40.412,29.535 -2020-08-13 05:30:00,106.59,35.711,40.412,29.535 -2020-08-13 05:45:00,112.6,33.354,40.412,29.535 -2020-08-13 06:00:00,116.48,33.299,49.825,29.535 -2020-08-13 06:15:00,113.4,33.088,49.825,29.535 -2020-08-13 06:30:00,111.91,32.939,49.825,29.535 -2020-08-13 06:45:00,111.96,35.58,49.825,29.535 -2020-08-13 07:00:00,114.86,35.355,61.082,29.535 -2020-08-13 07:15:00,116.59,36.48,61.082,29.535 -2020-08-13 07:30:00,119.63,34.942,61.082,29.535 -2020-08-13 07:45:00,118.33,35.748000000000005,61.082,29.535 -2020-08-13 08:00:00,111.91,31.864,53.961999999999996,29.535 -2020-08-13 08:15:00,110.29,34.508,53.961999999999996,29.535 -2020-08-13 08:30:00,109.63,35.491,53.961999999999996,29.535 -2020-08-13 08:45:00,114.21,37.586,53.961999999999996,29.535 -2020-08-13 09:00:00,116.43,33.364000000000004,50.06100000000001,29.535 -2020-08-13 09:15:00,117.8,32.728,50.06100000000001,29.535 -2020-08-13 09:30:00,114.9,35.812,50.06100000000001,29.535 -2020-08-13 09:45:00,115.89,38.521,50.06100000000001,29.535 -2020-08-13 10:00:00,115.79,36.312,47.68,29.535 -2020-08-13 10:15:00,109.66,37.342,47.68,29.535 -2020-08-13 10:30:00,115.53,37.13,47.68,29.535 -2020-08-13 10:45:00,114.31,38.004,47.68,29.535 -2020-08-13 11:00:00,112.62,36.067,45.93899999999999,29.535 -2020-08-13 11:15:00,112.44,37.135999999999996,45.93899999999999,29.535 -2020-08-13 11:30:00,112.77,38.033,45.93899999999999,29.535 -2020-08-13 11:45:00,109.6,38.785,45.93899999999999,29.535 -2020-08-13 12:00:00,110.46,34.21,43.648999999999994,29.535 -2020-08-13 12:15:00,110.53,33.461,43.648999999999994,29.535 -2020-08-13 12:30:00,110.63,32.435,43.648999999999994,29.535 -2020-08-13 12:45:00,107.32,33.141,43.648999999999994,29.535 -2020-08-13 13:00:00,111.0,32.635,42.801,29.535 -2020-08-13 13:15:00,110.62,33.609,42.801,29.535 -2020-08-13 13:30:00,110.8,31.969,42.801,29.535 -2020-08-13 13:45:00,106.12,32.137,42.801,29.535 -2020-08-13 14:00:00,106.62,33.408,43.24,29.535 -2020-08-13 14:15:00,110.75,32.61,43.24,29.535 -2020-08-13 14:30:00,108.44,31.795,43.24,29.535 -2020-08-13 14:45:00,108.43,32.482,43.24,29.535 -2020-08-13 15:00:00,100.47,33.91,45.04600000000001,29.535 -2020-08-13 15:15:00,100.61,31.774,45.04600000000001,29.535 -2020-08-13 15:30:00,104.49,30.573,45.04600000000001,29.535 -2020-08-13 15:45:00,105.82,29.055999999999997,45.04600000000001,29.535 -2020-08-13 16:00:00,111.96,31.281999999999996,46.568000000000005,29.535 -2020-08-13 16:15:00,112.43,31.245,46.568000000000005,29.535 -2020-08-13 16:30:00,113.32,30.761,46.568000000000005,29.535 -2020-08-13 16:45:00,111.17,28.608,46.568000000000005,29.535 -2020-08-13 17:00:00,120.16,31.709,50.618,29.535 -2020-08-13 17:15:00,119.4,32.437,50.618,29.535 -2020-08-13 17:30:00,121.21,31.648000000000003,50.618,29.535 -2020-08-13 17:45:00,113.4,31.320999999999998,50.618,29.535 -2020-08-13 18:00:00,115.18,34.176,52.806999999999995,29.535 -2020-08-13 18:15:00,116.91,34.041,52.806999999999995,29.535 -2020-08-13 18:30:00,119.58,32.469,52.806999999999995,29.535 -2020-08-13 18:45:00,114.31,35.025,52.806999999999995,29.535 -2020-08-13 19:00:00,107.96,36.318000000000005,53.464,29.535 -2020-08-13 19:15:00,104.43,35.316,53.464,29.535 -2020-08-13 19:30:00,104.41,34.227,53.464,29.535 -2020-08-13 19:45:00,110.75,33.378,53.464,29.535 -2020-08-13 20:00:00,110.35,30.975,56.753,29.535 -2020-08-13 20:15:00,104.81,30.371,56.753,29.535 -2020-08-13 20:30:00,100.88,30.537,56.753,29.535 -2020-08-13 20:45:00,98.91,30.616,56.753,29.535 -2020-08-13 21:00:00,94.78,29.493000000000002,52.506,29.535 -2020-08-13 21:15:00,93.57,30.526,52.506,29.535 -2020-08-13 21:30:00,89.55,30.82,52.506,29.535 -2020-08-13 21:45:00,89.48,31.116999999999997,52.506,29.535 -2020-08-13 22:00:00,84.47,28.432,48.163000000000004,29.535 -2020-08-13 22:15:00,85.66,30.724,48.163000000000004,29.535 -2020-08-13 22:30:00,83.52,26.188000000000002,48.163000000000004,29.535 -2020-08-13 22:45:00,82.68,23.265,48.163000000000004,29.535 -2020-08-13 23:00:00,78.63,21.028000000000002,42.379,29.535 -2020-08-13 23:15:00,79.67,19.885,42.379,29.535 -2020-08-13 23:30:00,78.45,19.271,42.379,29.535 -2020-08-13 23:45:00,79.55,18.363,42.379,29.535 -2020-08-14 00:00:00,77.38,16.802,38.505,29.535 -2020-08-14 00:15:00,77.2,17.767,38.505,29.535 -2020-08-14 00:30:00,76.42,16.995,38.505,29.535 -2020-08-14 00:45:00,77.01,17.641,38.505,29.535 -2020-08-14 01:00:00,75.04,17.09,37.004,29.535 -2020-08-14 01:15:00,76.59,15.772,37.004,29.535 -2020-08-14 01:30:00,76.72,15.347000000000001,37.004,29.535 -2020-08-14 01:45:00,76.98,15.050999999999998,37.004,29.535 -2020-08-14 02:00:00,75.7,15.899000000000001,36.098,29.535 -2020-08-14 02:15:00,76.98,15.003,36.098,29.535 -2020-08-14 02:30:00,76.36,17.160999999999998,36.098,29.535 -2020-08-14 02:45:00,77.05,17.155,36.098,29.535 -2020-08-14 03:00:00,76.85,18.619,36.561,29.535 -2020-08-14 03:15:00,76.89,17.305,36.561,29.535 -2020-08-14 03:30:00,77.81,16.651,36.561,29.535 -2020-08-14 03:45:00,81.89,16.94,36.561,29.535 -2020-08-14 04:00:00,84.07,20.77,37.355,29.535 -2020-08-14 04:15:00,91.01,24.226,37.355,29.535 -2020-08-14 04:30:00,96.53,22.723000000000003,37.355,29.535 -2020-08-14 04:45:00,98.47,22.149,37.355,29.535 -2020-08-14 05:00:00,97.75,32.713,40.285,29.535 -2020-08-14 05:15:00,106.42,39.152,40.285,29.535 -2020-08-14 05:30:00,111.47,35.349000000000004,40.285,29.535 -2020-08-14 05:45:00,114.34,32.543,40.285,29.535 -2020-08-14 06:00:00,117.13,32.652,52.378,29.535 -2020-08-14 06:15:00,115.21,32.692,52.378,29.535 -2020-08-14 06:30:00,119.17,32.536,52.378,29.535 -2020-08-14 06:45:00,121.31,34.979,52.378,29.535 -2020-08-14 07:00:00,122.16,35.415,60.891999999999996,29.535 -2020-08-14 07:15:00,114.97,37.369,60.891999999999996,29.535 -2020-08-14 07:30:00,119.05,33.976,60.891999999999996,29.535 -2020-08-14 07:45:00,119.76,34.639,60.891999999999996,29.535 -2020-08-14 08:00:00,121.92,31.587,53.652,29.535 -2020-08-14 08:15:00,117.57,34.885,53.652,29.535 -2020-08-14 08:30:00,116.45,35.696,53.652,29.535 -2020-08-14 08:45:00,119.87,37.746,53.652,29.535 -2020-08-14 09:00:00,122.22,31.248,51.456,29.535 -2020-08-14 09:15:00,121.31,32.442,51.456,29.535 -2020-08-14 09:30:00,117.74,34.867,51.456,29.535 -2020-08-14 09:45:00,114.72,37.943000000000005,51.456,29.535 -2020-08-14 10:00:00,116.88,35.665,49.4,29.535 -2020-08-14 10:15:00,122.22,36.4,49.4,29.535 -2020-08-14 10:30:00,123.37,36.731,49.4,29.535 -2020-08-14 10:45:00,118.57,37.541,49.4,29.535 -2020-08-14 11:00:00,116.16,35.859,48.773,29.535 -2020-08-14 11:15:00,114.64,35.923,48.773,29.535 -2020-08-14 11:30:00,114.36,36.323,48.773,29.535 -2020-08-14 11:45:00,109.72,36.116,48.773,29.535 -2020-08-14 12:00:00,109.46,31.871,46.033,29.535 -2020-08-14 12:15:00,106.86,30.65,46.033,29.535 -2020-08-14 12:30:00,104.86,29.738000000000003,46.033,29.535 -2020-08-14 12:45:00,104.8,29.616,46.033,29.535 -2020-08-14 13:00:00,101.33,29.599,44.38399999999999,29.535 -2020-08-14 13:15:00,101.51,30.674,44.38399999999999,29.535 -2020-08-14 13:30:00,101.84,29.811999999999998,44.38399999999999,29.535 -2020-08-14 13:45:00,104.46,30.298000000000002,44.38399999999999,29.535 -2020-08-14 14:00:00,98.79,30.854,43.162,29.535 -2020-08-14 14:15:00,100.52,30.504,43.162,29.535 -2020-08-14 14:30:00,104.56,31.139,43.162,29.535 -2020-08-14 14:45:00,107.41,31.128,43.162,29.535 -2020-08-14 15:00:00,107.75,32.481,44.91,29.535 -2020-08-14 15:15:00,107.7,30.148000000000003,44.91,29.535 -2020-08-14 15:30:00,103.14,28.518,44.91,29.535 -2020-08-14 15:45:00,104.08,27.74,44.91,29.535 -2020-08-14 16:00:00,108.58,29.195,47.489,29.535 -2020-08-14 16:15:00,109.61,29.625999999999998,47.489,29.535 -2020-08-14 16:30:00,105.67,28.965999999999998,47.489,29.535 -2020-08-14 16:45:00,106.48,26.09,47.489,29.535 -2020-08-14 17:00:00,106.27,30.831999999999997,52.047,29.535 -2020-08-14 17:15:00,112.92,31.45,52.047,29.535 -2020-08-14 17:30:00,117.17,30.857,52.047,29.535 -2020-08-14 17:45:00,114.87,30.416999999999998,52.047,29.535 -2020-08-14 18:00:00,113.07,33.241,53.306000000000004,29.535 -2020-08-14 18:15:00,108.05,32.227,53.306000000000004,29.535 -2020-08-14 18:30:00,110.51,30.538,53.306000000000004,29.535 -2020-08-14 18:45:00,114.14,33.5,53.306000000000004,29.535 -2020-08-14 19:00:00,111.52,35.571,53.516000000000005,29.535 -2020-08-14 19:15:00,103.77,35.055,53.516000000000005,29.535 -2020-08-14 19:30:00,100.59,34.052,53.516000000000005,29.535 -2020-08-14 19:45:00,102.62,32.256,53.516000000000005,29.535 -2020-08-14 20:00:00,101.7,29.701999999999998,57.88,29.535 -2020-08-14 20:15:00,100.14,29.865,57.88,29.535 -2020-08-14 20:30:00,104.22,29.55,57.88,29.535 -2020-08-14 20:45:00,102.33,28.785999999999998,57.88,29.535 -2020-08-14 21:00:00,93.47,28.896,53.32,29.535 -2020-08-14 21:15:00,89.73,31.496,53.32,29.535 -2020-08-14 21:30:00,84.2,31.639,53.32,29.535 -2020-08-14 21:45:00,90.61,32.071999999999996,53.32,29.535 -2020-08-14 22:00:00,87.69,29.177,48.074,29.535 -2020-08-14 22:15:00,85.9,31.226999999999997,48.074,29.535 -2020-08-14 22:30:00,80.19,30.853,48.074,29.535 -2020-08-14 22:45:00,79.07,28.558000000000003,48.074,29.535 -2020-08-14 23:00:00,72.75,27.998,41.306999999999995,29.535 -2020-08-14 23:15:00,73.35,25.458000000000002,41.306999999999995,29.535 -2020-08-14 23:30:00,77.1,23.195,41.306999999999995,29.535 -2020-08-14 23:45:00,80.37,22.21,41.306999999999995,29.535 -2020-08-15 00:00:00,78.66,18.289,40.227,29.423000000000002 -2020-08-15 00:15:00,78.01,18.867,40.227,29.423000000000002 -2020-08-15 00:30:00,77.59,17.567,40.227,29.423000000000002 -2020-08-15 00:45:00,78.28,17.474,40.227,29.423000000000002 -2020-08-15 01:00:00,75.62,17.129,36.303000000000004,29.423000000000002 -2020-08-15 01:15:00,73.05,16.448,36.303000000000004,29.423000000000002 -2020-08-15 01:30:00,72.17,15.292,36.303000000000004,29.423000000000002 -2020-08-15 01:45:00,76.06,16.205,36.303000000000004,29.423000000000002 -2020-08-15 02:00:00,74.7,16.063,33.849000000000004,29.423000000000002 -2020-08-15 02:15:00,74.19,14.452,33.849000000000004,29.423000000000002 -2020-08-15 02:30:00,72.6,15.894,33.849000000000004,29.423000000000002 -2020-08-15 02:45:00,74.73,16.635,33.849000000000004,29.423000000000002 -2020-08-15 03:00:00,74.32,16.73,33.149,29.423000000000002 -2020-08-15 03:15:00,71.83,14.837,33.149,29.423000000000002 -2020-08-15 03:30:00,66.95,14.600999999999999,33.149,29.423000000000002 -2020-08-15 03:45:00,67.51,16.303,33.149,29.423000000000002 -2020-08-15 04:00:00,68.28,18.586,32.501,29.423000000000002 -2020-08-15 04:15:00,68.18,21.346999999999998,32.501,29.423000000000002 -2020-08-15 04:30:00,67.99,18.38,32.501,29.423000000000002 -2020-08-15 04:45:00,69.92,18.101,32.501,29.423000000000002 -2020-08-15 05:00:00,68.61,21.697,31.648000000000003,29.423000000000002 -2020-08-15 05:15:00,71.82,18.840999999999998,31.648000000000003,29.423000000000002 -2020-08-15 05:30:00,69.58,16.473,31.648000000000003,29.423000000000002 -2020-08-15 05:45:00,70.22,17.582,31.648000000000003,29.423000000000002 -2020-08-15 06:00:00,73.17,27.255,32.552,29.423000000000002 -2020-08-15 06:15:00,75.29,33.784,32.552,29.423000000000002 -2020-08-15 06:30:00,78.84,31.236,32.552,29.423000000000002 -2020-08-15 06:45:00,86.96,31.153000000000002,32.552,29.423000000000002 -2020-08-15 07:00:00,88.59,30.756,35.181999999999995,29.423000000000002 -2020-08-15 07:15:00,88.61,31.564,35.181999999999995,29.423000000000002 -2020-08-15 07:30:00,88.1,29.455,35.181999999999995,29.423000000000002 -2020-08-15 07:45:00,94.77,30.729,35.181999999999995,29.423000000000002 -2020-08-15 08:00:00,96.75,28.160999999999998,40.35,29.423000000000002 -2020-08-15 08:15:00,93.18,30.936999999999998,40.35,29.423000000000002 -2020-08-15 08:30:00,93.98,31.596,40.35,29.423000000000002 -2020-08-15 08:45:00,95.48,34.302,40.35,29.423000000000002 -2020-08-15 09:00:00,93.38,30.744,42.292,29.423000000000002 -2020-08-15 09:15:00,91.59,32.339,42.292,29.423000000000002 -2020-08-15 09:30:00,92.73,35.157,42.292,29.423000000000002 -2020-08-15 09:45:00,96.95,37.759,42.292,29.423000000000002 -2020-08-15 10:00:00,100.16,36.094,40.084,29.423000000000002 -2020-08-15 10:15:00,101.04,37.143,40.084,29.423000000000002 -2020-08-15 10:30:00,99.67,37.117,40.084,29.423000000000002 -2020-08-15 10:45:00,99.38,37.459,40.084,29.423000000000002 -2020-08-15 11:00:00,95.9,35.616,36.966,29.423000000000002 -2020-08-15 11:15:00,93.51,36.58,36.966,29.423000000000002 -2020-08-15 11:30:00,89.93,37.348,36.966,29.423000000000002 -2020-08-15 11:45:00,86.8,37.865,36.966,29.423000000000002 -2020-08-15 12:00:00,82.81,34.096,35.19,29.423000000000002 -2020-08-15 12:15:00,81.87,33.643,35.19,29.423000000000002 -2020-08-15 12:30:00,80.39,32.586999999999996,35.19,29.423000000000002 -2020-08-15 12:45:00,72.88,33.234,35.19,29.423000000000002 -2020-08-15 13:00:00,68.23,32.400999999999996,32.277,29.423000000000002 -2020-08-15 13:15:00,68.49,33.111999999999995,32.277,29.423000000000002 -2020-08-15 13:30:00,72.94,32.469,32.277,29.423000000000002 -2020-08-15 13:45:00,73.41,31.604,32.277,29.423000000000002 -2020-08-15 14:00:00,67.3,32.065,31.436999999999998,29.423000000000002 -2020-08-15 14:15:00,71.1,30.541999999999998,31.436999999999998,29.423000000000002 -2020-08-15 14:30:00,67.23,30.926,31.436999999999998,29.423000000000002 -2020-08-15 14:45:00,66.15,31.37,31.436999999999998,29.423000000000002 -2020-08-15 15:00:00,64.93,33.033,33.493,29.423000000000002 -2020-08-15 15:15:00,67.48,31.328000000000003,33.493,29.423000000000002 -2020-08-15 15:30:00,66.52,29.779,33.493,29.423000000000002 -2020-08-15 15:45:00,68.11,28.105999999999998,33.493,29.423000000000002 -2020-08-15 16:00:00,71.24,31.679000000000002,36.593,29.423000000000002 -2020-08-15 16:15:00,71.7,31.18,36.593,29.423000000000002 -2020-08-15 16:30:00,73.28,30.749000000000002,36.593,29.423000000000002 -2020-08-15 16:45:00,76.09,27.814,36.593,29.423000000000002 -2020-08-15 17:00:00,77.79,31.39,42.049,29.423000000000002 -2020-08-15 17:15:00,78.28,29.826,42.049,29.423000000000002 -2020-08-15 17:30:00,80.48,29.125999999999998,42.049,29.423000000000002 -2020-08-15 17:45:00,81.56,29.226,42.049,29.423000000000002 -2020-08-15 18:00:00,82.67,33.369,43.755,29.423000000000002 -2020-08-15 18:15:00,81.18,33.85,43.755,29.423000000000002 -2020-08-15 18:30:00,80.1,33.385,43.755,29.423000000000002 -2020-08-15 18:45:00,80.79,33.236,43.755,29.423000000000002 -2020-08-15 19:00:00,78.86,33.652,44.492,29.423000000000002 -2020-08-15 19:15:00,76.55,32.202,44.492,29.423000000000002 -2020-08-15 19:30:00,77.59,31.889,44.492,29.423000000000002 -2020-08-15 19:45:00,80.08,31.791,44.492,29.423000000000002 -2020-08-15 20:00:00,79.74,29.905,40.896,29.423000000000002 -2020-08-15 20:15:00,80.99,29.331,40.896,29.423000000000002 -2020-08-15 20:30:00,76.08,28.186999999999998,40.896,29.423000000000002 -2020-08-15 20:45:00,75.31,29.188000000000002,40.896,29.423000000000002 -2020-08-15 21:00:00,72.65,27.752,39.056,29.423000000000002 -2020-08-15 21:15:00,72.67,29.988000000000003,39.056,29.423000000000002 -2020-08-15 21:30:00,70.17,30.236,39.056,29.423000000000002 -2020-08-15 21:45:00,69.86,30.145,39.056,29.423000000000002 -2020-08-15 22:00:00,66.08,27.138,38.478,29.423000000000002 -2020-08-15 22:15:00,67.02,29.274,38.478,29.423000000000002 -2020-08-15 22:30:00,64.4,28.171999999999997,38.478,29.423000000000002 -2020-08-15 22:45:00,64.41,26.127,38.478,29.423000000000002 -2020-08-15 23:00:00,59.88,24.873,32.953,29.423000000000002 -2020-08-15 23:15:00,61.24,22.807,32.953,29.423000000000002 -2020-08-15 23:30:00,60.61,22.965,32.953,29.423000000000002 -2020-08-15 23:45:00,59.27,22.448,32.953,29.423000000000002 -2020-08-16 00:00:00,56.4,20.963,28.584,29.423000000000002 -2020-08-16 00:15:00,57.15,20.25,28.584,29.423000000000002 -2020-08-16 00:30:00,56.4,19.059,28.584,29.423000000000002 -2020-08-16 00:45:00,56.75,18.803,28.584,29.423000000000002 -2020-08-16 01:00:00,54.08,18.761,26.419,29.423000000000002 -2020-08-16 01:15:00,55.73,17.887999999999998,26.419,29.423000000000002 -2020-08-16 01:30:00,54.82,16.56,26.419,29.423000000000002 -2020-08-16 01:45:00,55.19,16.852,26.419,29.423000000000002 -2020-08-16 02:00:00,53.79,16.772000000000002,25.335,29.423000000000002 -2020-08-16 02:15:00,54.64,15.895999999999999,25.335,29.423000000000002 -2020-08-16 02:30:00,54.21,17.325,25.335,29.423000000000002 -2020-08-16 02:45:00,53.98,17.839000000000002,25.335,29.423000000000002 -2020-08-16 03:00:00,53.46,18.679000000000002,24.805,29.423000000000002 -2020-08-16 03:15:00,54.06,16.922,24.805,29.423000000000002 -2020-08-16 03:30:00,54.48,15.995999999999999,24.805,29.423000000000002 -2020-08-16 03:45:00,55.19,17.086,24.805,29.423000000000002 -2020-08-16 04:00:00,55.99,19.613,25.772,29.423000000000002 -2020-08-16 04:15:00,57.26,22.346,25.772,29.423000000000002 -2020-08-16 04:30:00,54.82,20.494,25.772,29.423000000000002 -2020-08-16 04:45:00,56.06,19.851,25.772,29.423000000000002 -2020-08-16 05:00:00,55.21,23.886,25.971999999999998,29.423000000000002 -2020-08-16 05:15:00,55.74,20.704,25.971999999999998,29.423000000000002 -2020-08-16 05:30:00,55.42,17.433,25.971999999999998,29.423000000000002 -2020-08-16 05:45:00,56.8,18.361,25.971999999999998,29.423000000000002 -2020-08-16 06:00:00,55.15,26.846999999999998,26.026,29.423000000000002 -2020-08-16 06:15:00,58.89,34.753,26.026,29.423000000000002 -2020-08-16 06:30:00,59.5,31.089000000000002,26.026,29.423000000000002 -2020-08-16 06:45:00,60.53,29.549,26.026,29.423000000000002 -2020-08-16 07:00:00,61.9,29.266,27.396,29.423000000000002 -2020-08-16 07:15:00,61.93,28.503,27.396,29.423000000000002 -2020-08-16 07:30:00,61.72,27.575,27.396,29.423000000000002 -2020-08-16 07:45:00,59.55,28.915,27.396,29.423000000000002 -2020-08-16 08:00:00,62.74,27.895,30.791999999999998,29.423000000000002 -2020-08-16 08:15:00,61.33,31.752,30.791999999999998,29.423000000000002 -2020-08-16 08:30:00,60.91,32.825,30.791999999999998,29.423000000000002 -2020-08-16 08:45:00,60.73,35.29,30.791999999999998,29.423000000000002 -2020-08-16 09:00:00,60.52,30.888,32.482,29.423000000000002 -2020-08-16 09:15:00,61.23,31.75,32.482,29.423000000000002 -2020-08-16 09:30:00,61.34,34.828,32.482,29.423000000000002 -2020-08-16 09:45:00,61.67,38.303000000000004,32.482,29.423000000000002 -2020-08-16 10:00:00,59.03,35.681,31.951,29.423000000000002 -2020-08-16 10:15:00,63.77,36.964,31.951,29.423000000000002 -2020-08-16 10:30:00,64.3,37.236,31.951,29.423000000000002 -2020-08-16 10:45:00,64.55,39.031,31.951,29.423000000000002 -2020-08-16 11:00:00,62.19,37.029,33.619,29.423000000000002 -2020-08-16 11:15:00,61.81,37.51,33.619,29.423000000000002 -2020-08-16 11:30:00,60.1,38.786,33.619,29.423000000000002 -2020-08-16 11:45:00,59.33,39.66,33.619,29.423000000000002 -2020-08-16 12:00:00,56.59,37.803000000000004,30.975,29.423000000000002 -2020-08-16 12:15:00,56.52,36.787,30.975,29.423000000000002 -2020-08-16 12:30:00,56.09,36.008,30.975,29.423000000000002 -2020-08-16 12:45:00,54.79,36.227,30.975,29.423000000000002 -2020-08-16 13:00:00,51.28,35.288000000000004,27.956999999999997,29.423000000000002 -2020-08-16 13:15:00,55.09,35.214,27.956999999999997,29.423000000000002 -2020-08-16 13:30:00,52.21,33.672,27.956999999999997,29.423000000000002 -2020-08-16 13:45:00,54.84,33.584,27.956999999999997,29.423000000000002 -2020-08-16 14:00:00,55.31,35.247,25.555999999999997,29.423000000000002 -2020-08-16 14:15:00,56.62,34.028,25.555999999999997,29.423000000000002 -2020-08-16 14:30:00,54.58,32.937,25.555999999999997,29.423000000000002 -2020-08-16 14:45:00,56.86,32.461,25.555999999999997,29.423000000000002 -2020-08-16 15:00:00,58.29,34.168,26.271,29.423000000000002 -2020-08-16 15:15:00,58.87,31.699,26.271,29.423000000000002 -2020-08-16 15:30:00,54.96,29.926,26.271,29.423000000000002 -2020-08-16 15:45:00,59.3,28.335,26.271,29.423000000000002 -2020-08-16 16:00:00,63.28,30.392,30.369,29.423000000000002 -2020-08-16 16:15:00,64.29,30.148000000000003,30.369,29.423000000000002 -2020-08-16 16:30:00,66.51,30.853,30.369,29.423000000000002 -2020-08-16 16:45:00,70.7,27.897,30.369,29.423000000000002 -2020-08-16 17:00:00,74.15,31.488000000000003,38.787,29.423000000000002 -2020-08-16 17:15:00,75.05,31.449,38.787,29.423000000000002 -2020-08-16 17:30:00,76.55,31.503,38.787,29.423000000000002 -2020-08-16 17:45:00,77.73,31.592,38.787,29.423000000000002 -2020-08-16 18:00:00,80.1,35.961,41.886,29.423000000000002 -2020-08-16 18:15:00,79.15,35.951,41.886,29.423000000000002 -2020-08-16 18:30:00,78.57,35.23,41.886,29.423000000000002 -2020-08-16 18:45:00,78.39,35.485,41.886,29.423000000000002 -2020-08-16 19:00:00,77.11,37.847,42.91,29.423000000000002 -2020-08-16 19:15:00,78.29,35.399,42.91,29.423000000000002 -2020-08-16 19:30:00,80.1,34.857,42.91,29.423000000000002 -2020-08-16 19:45:00,82.78,34.594,42.91,29.423000000000002 -2020-08-16 20:00:00,82.35,32.407,42.148999999999994,29.423000000000002 -2020-08-16 20:15:00,81.74,32.199,42.148999999999994,29.423000000000002 -2020-08-16 20:30:00,81.4,31.858,42.148999999999994,29.423000000000002 -2020-08-16 20:45:00,81.03,31.601,42.148999999999994,29.423000000000002 -2020-08-16 21:00:00,79.1,29.82,40.955999999999996,29.423000000000002 -2020-08-16 21:15:00,80.28,32.325,40.955999999999996,29.423000000000002 -2020-08-16 21:30:00,78.42,32.105,40.955999999999996,29.423000000000002 -2020-08-16 21:45:00,77.85,32.394,40.955999999999996,29.423000000000002 -2020-08-16 22:00:00,73.71,31.552,39.873000000000005,29.423000000000002 -2020-08-16 22:15:00,74.13,31.956,39.873000000000005,29.423000000000002 -2020-08-16 22:30:00,70.68,30.46,39.873000000000005,29.423000000000002 -2020-08-16 22:45:00,73.48,27.304000000000002,39.873000000000005,29.423000000000002 -2020-08-16 23:00:00,66.63,25.803,35.510999999999996,29.423000000000002 -2020-08-16 23:15:00,68.8,24.945999999999998,35.510999999999996,29.423000000000002 -2020-08-16 23:30:00,67.36,24.513,35.510999999999996,29.423000000000002 -2020-08-16 23:45:00,68.31,24.014,35.510999999999996,29.423000000000002 -2020-08-17 00:00:00,67.08,22.375,33.475,29.535 -2020-08-17 00:15:00,66.94,22.315,33.475,29.535 -2020-08-17 00:30:00,66.43,20.779,33.475,29.535 -2020-08-17 00:45:00,66.96,20.184,33.475,29.535 -2020-08-17 01:00:00,64.35,20.474,33.111,29.535 -2020-08-17 01:15:00,65.92,19.635,33.111,29.535 -2020-08-17 01:30:00,65.15,18.643,33.111,29.535 -2020-08-17 01:45:00,64.74,18.845,33.111,29.535 -2020-08-17 02:00:00,65.98,19.177,32.358000000000004,29.535 -2020-08-17 02:15:00,72.77,17.374000000000002,32.358000000000004,29.535 -2020-08-17 02:30:00,73.53,18.923,32.358000000000004,29.535 -2020-08-17 02:45:00,69.28,19.314,32.358000000000004,29.535 -2020-08-17 03:00:00,66.89,20.573,30.779,29.535 -2020-08-17 03:15:00,67.8,19.445999999999998,30.779,29.535 -2020-08-17 03:30:00,71.43,19.149,30.779,29.535 -2020-08-17 03:45:00,74.75,19.83,30.779,29.535 -2020-08-17 04:00:00,80.78,25.086,31.416,29.535 -2020-08-17 04:15:00,87.43,30.389,31.416,29.535 -2020-08-17 04:30:00,90.67,28.061,31.416,29.535 -2020-08-17 04:45:00,90.09,27.750999999999998,31.416,29.535 -2020-08-17 05:00:00,93.62,38.103,37.221,29.535 -2020-08-17 05:15:00,96.83,43.934,37.221,29.535 -2020-08-17 05:30:00,105.37,39.284,37.221,29.535 -2020-08-17 05:45:00,108.9,37.507,37.221,29.535 -2020-08-17 06:00:00,113.83,36.976,51.891000000000005,29.535 -2020-08-17 06:15:00,111.93,36.961,51.891000000000005,29.535 -2020-08-17 06:30:00,116.33,36.743,51.891000000000005,29.535 -2020-08-17 06:45:00,116.15,39.816,51.891000000000005,29.535 -2020-08-17 07:00:00,119.7,39.711999999999996,62.282,29.535 -2020-08-17 07:15:00,114.94,40.998000000000005,62.282,29.535 -2020-08-17 07:30:00,113.97,39.330999999999996,62.282,29.535 -2020-08-17 07:45:00,116.01,40.996,62.282,29.535 -2020-08-17 08:00:00,116.0,38.075,54.102,29.535 -2020-08-17 08:15:00,113.19,40.864000000000004,54.102,29.535 -2020-08-17 08:30:00,108.1,41.148,54.102,29.535 -2020-08-17 08:45:00,111.95,43.861000000000004,54.102,29.535 -2020-08-17 09:00:00,116.11,38.529,50.917,29.535 -2020-08-17 09:15:00,113.89,37.845,50.917,29.535 -2020-08-17 09:30:00,111.12,40.088,50.917,29.535 -2020-08-17 09:45:00,106.99,41.456,50.917,29.535 -2020-08-17 10:00:00,109.37,39.195,49.718999999999994,29.535 -2020-08-17 10:15:00,108.32,40.332,49.718999999999994,29.535 -2020-08-17 10:30:00,115.64,40.201,49.718999999999994,29.535 -2020-08-17 10:45:00,113.32,40.523,49.718999999999994,29.535 -2020-08-17 11:00:00,109.23,38.788000000000004,49.833999999999996,29.535 -2020-08-17 11:15:00,106.15,39.465,49.833999999999996,29.535 -2020-08-17 11:30:00,106.16,41.331,49.833999999999996,29.535 -2020-08-17 11:45:00,112.52,42.663999999999994,49.833999999999996,29.535 -2020-08-17 12:00:00,113.63,39.105,47.832,29.535 -2020-08-17 12:15:00,106.33,38.181,47.832,29.535 -2020-08-17 12:30:00,107.11,36.42,47.832,29.535 -2020-08-17 12:45:00,107.04,36.57,47.832,29.535 -2020-08-17 13:00:00,103.37,36.479,48.03,29.535 -2020-08-17 13:15:00,102.48,35.629,48.03,29.535 -2020-08-17 13:30:00,104.21,34.259,48.03,29.535 -2020-08-17 13:45:00,102.22,35.001,48.03,29.535 -2020-08-17 14:00:00,103.51,35.816,48.157,29.535 -2020-08-17 14:15:00,99.38,35.17,48.157,29.535 -2020-08-17 14:30:00,99.26,33.96,48.157,29.535 -2020-08-17 14:45:00,99.3,35.389,48.157,29.535 -2020-08-17 15:00:00,102.77,36.656,48.897,29.535 -2020-08-17 15:15:00,101.97,33.701,48.897,29.535 -2020-08-17 15:30:00,103.47,32.678000000000004,48.897,29.535 -2020-08-17 15:45:00,104.76,30.66,48.897,29.535 -2020-08-17 16:00:00,106.74,33.74,51.446000000000005,29.535 -2020-08-17 16:15:00,109.18,33.586,51.446000000000005,29.535 -2020-08-17 16:30:00,111.89,33.715,51.446000000000005,29.535 -2020-08-17 16:45:00,110.39,30.851,51.446000000000005,29.535 -2020-08-17 17:00:00,109.89,33.382,57.507,29.535 -2020-08-17 17:15:00,108.72,33.742,57.507,29.535 -2020-08-17 17:30:00,109.15,33.471,57.507,29.535 -2020-08-17 17:45:00,108.54,33.272,57.507,29.535 -2020-08-17 18:00:00,108.29,36.677,57.896,29.535 -2020-08-17 18:15:00,107.32,35.067,57.896,29.535 -2020-08-17 18:30:00,107.79,33.650999999999996,57.896,29.535 -2020-08-17 18:45:00,106.79,36.765,57.896,29.535 -2020-08-17 19:00:00,113.59,38.936,57.891999999999996,29.535 -2020-08-17 19:15:00,107.67,37.709,57.891999999999996,29.535 -2020-08-17 19:30:00,110.58,36.824,57.891999999999996,29.535 -2020-08-17 19:45:00,109.62,36.025999999999996,57.891999999999996,29.535 -2020-08-17 20:00:00,102.56,32.74,64.57300000000001,29.535 -2020-08-17 20:15:00,100.21,33.866,64.57300000000001,29.535 -2020-08-17 20:30:00,98.27,34.029,64.57300000000001,29.535 -2020-08-17 20:45:00,99.3,33.9,64.57300000000001,29.535 -2020-08-17 21:00:00,95.28,31.535,59.431999999999995,29.535 -2020-08-17 21:15:00,96.5,34.459,59.431999999999995,29.535 -2020-08-17 21:30:00,93.09,34.631,59.431999999999995,29.535 -2020-08-17 21:45:00,92.08,34.704,59.431999999999995,29.535 -2020-08-17 22:00:00,89.32,32.049,51.519,29.535 -2020-08-17 22:15:00,87.02,34.274,51.519,29.535 -2020-08-17 22:30:00,82.96,29.033,51.519,29.535 -2020-08-17 22:45:00,87.26,25.968000000000004,51.519,29.535 -2020-08-17 23:00:00,83.17,24.506999999999998,44.501000000000005,29.535 -2020-08-17 23:15:00,84.93,22.086,44.501000000000005,29.535 -2020-08-17 23:30:00,79.26,21.566999999999997,44.501000000000005,29.535 -2020-08-17 23:45:00,75.42,20.524,44.501000000000005,29.535 -2020-08-18 00:00:00,80.51,20.454,44.522,29.535 -2020-08-18 00:15:00,81.43,21.15,44.522,29.535 -2020-08-18 00:30:00,80.49,20.289,44.522,29.535 -2020-08-18 00:45:00,75.85,20.444000000000003,44.522,29.535 -2020-08-18 01:00:00,72.88,20.229,41.441,29.535 -2020-08-18 01:15:00,73.3,19.511,41.441,29.535 -2020-08-18 01:30:00,75.87,18.41,41.441,29.535 -2020-08-18 01:45:00,80.87,18.136,41.441,29.535 -2020-08-18 02:00:00,81.98,18.032,40.203,29.535 -2020-08-18 02:15:00,79.19,17.307000000000002,40.203,29.535 -2020-08-18 02:30:00,76.72,18.492,40.203,29.535 -2020-08-18 02:45:00,82.03,19.179000000000002,40.203,29.535 -2020-08-18 03:00:00,82.91,19.949,39.536,29.535 -2020-08-18 03:15:00,82.37,19.711,39.536,29.535 -2020-08-18 03:30:00,78.01,19.379,39.536,29.535 -2020-08-18 03:45:00,83.18,19.037,39.536,29.535 -2020-08-18 04:00:00,90.43,23.16,40.759,29.535 -2020-08-18 04:15:00,92.1,28.493000000000002,40.759,29.535 -2020-08-18 04:30:00,89.48,26.066999999999997,40.759,29.535 -2020-08-18 04:45:00,92.67,26.177,40.759,29.535 -2020-08-18 05:00:00,97.83,37.921,43.623999999999995,29.535 -2020-08-18 05:15:00,105.65,44.367,43.623999999999995,29.535 -2020-08-18 05:30:00,111.86,39.913000000000004,43.623999999999995,29.535 -2020-08-18 05:45:00,115.65,37.446,43.623999999999995,29.535 -2020-08-18 06:00:00,116.29,37.865,52.684,29.535 -2020-08-18 06:15:00,117.43,38.018,52.684,29.535 -2020-08-18 06:30:00,123.82,37.52,52.684,29.535 -2020-08-18 06:45:00,129.27,39.798,52.684,29.535 -2020-08-18 07:00:00,135.91,39.836,62.676,29.535 -2020-08-18 07:15:00,126.32,40.907,62.676,29.535 -2020-08-18 07:30:00,127.7,39.289,62.676,29.535 -2020-08-18 07:45:00,125.98,40.064,62.676,29.535 -2020-08-18 08:00:00,127.08,37.076,56.161,29.535 -2020-08-18 08:15:00,131.88,39.455,56.161,29.535 -2020-08-18 08:30:00,134.91,39.891,56.161,29.535 -2020-08-18 08:45:00,131.78,41.751000000000005,56.161,29.535 -2020-08-18 09:00:00,132.31,36.759,52.132,29.535 -2020-08-18 09:15:00,134.14,35.897,52.132,29.535 -2020-08-18 09:30:00,140.01,38.738,52.132,29.535 -2020-08-18 09:45:00,140.34,41.32,52.132,29.535 -2020-08-18 10:00:00,137.81,37.816,51.032,29.535 -2020-08-18 10:15:00,133.5,38.835,51.032,29.535 -2020-08-18 10:30:00,134.66,38.716,51.032,29.535 -2020-08-18 10:45:00,131.74,39.949,51.032,29.535 -2020-08-18 11:00:00,125.16,38.181,51.085,29.535 -2020-08-18 11:15:00,124.46,39.236,51.085,29.535 -2020-08-18 11:30:00,124.13,40.074,51.085,29.535 -2020-08-18 11:45:00,115.02,40.953,51.085,29.535 -2020-08-18 12:00:00,109.2,37.262,49.049,29.535 -2020-08-18 12:15:00,108.88,36.66,49.049,29.535 -2020-08-18 12:30:00,112.98,35.681999999999995,49.049,29.535 -2020-08-18 12:45:00,115.32,36.479,49.049,29.535 -2020-08-18 13:00:00,108.39,36.041,49.722,29.535 -2020-08-18 13:15:00,111.75,36.867,49.722,29.535 -2020-08-18 13:30:00,111.55,35.42,49.722,29.535 -2020-08-18 13:45:00,107.18,35.269,49.722,29.535 -2020-08-18 14:00:00,114.92,36.473,49.565,29.535 -2020-08-18 14:15:00,117.53,35.641999999999996,49.565,29.535 -2020-08-18 14:30:00,117.41,34.726,49.565,29.535 -2020-08-18 14:45:00,113.97,35.425,49.565,29.535 -2020-08-18 15:00:00,104.47,36.525,51.108999999999995,29.535 -2020-08-18 15:15:00,107.86,34.426,51.108999999999995,29.535 -2020-08-18 15:30:00,116.75,33.21,51.108999999999995,29.535 -2020-08-18 15:45:00,114.65,31.535999999999998,51.108999999999995,29.535 -2020-08-18 16:00:00,112.4,33.915,52.725,29.535 -2020-08-18 16:15:00,114.87,33.833,52.725,29.535 -2020-08-18 16:30:00,114.02,33.6,52.725,29.535 -2020-08-18 16:45:00,116.97,31.426,52.725,29.535 -2020-08-18 17:00:00,113.73,34.107,58.031000000000006,29.535 -2020-08-18 17:15:00,110.05,34.88,58.031000000000006,29.535 -2020-08-18 17:30:00,118.5,34.19,58.031000000000006,29.535 -2020-08-18 17:45:00,119.33,33.718,58.031000000000006,29.535 -2020-08-18 18:00:00,122.4,36.251999999999995,58.338,29.535 -2020-08-18 18:15:00,114.26,36.035,58.338,29.535 -2020-08-18 18:30:00,115.94,34.396,58.338,29.535 -2020-08-18 18:45:00,118.08,37.306999999999995,58.338,29.535 -2020-08-18 19:00:00,107.79,38.418,58.464,29.535 -2020-08-18 19:15:00,104.16,37.361,58.464,29.535 -2020-08-18 19:30:00,111.36,36.297,58.464,29.535 -2020-08-18 19:45:00,113.13,35.806,58.464,29.535 -2020-08-18 20:00:00,106.38,32.879,63.708,29.535 -2020-08-18 20:15:00,103.17,32.701,63.708,29.535 -2020-08-18 20:30:00,98.53,32.858000000000004,63.708,29.535 -2020-08-18 20:45:00,97.08,33.101,63.708,29.535 -2020-08-18 21:00:00,89.74,31.555,57.06399999999999,29.535 -2020-08-18 21:15:00,91.57,33.103,57.06399999999999,29.535 -2020-08-18 21:30:00,86.58,33.452,57.06399999999999,29.535 -2020-08-18 21:45:00,86.69,33.669000000000004,57.06399999999999,29.535 -2020-08-18 22:00:00,80.92,31.107,52.831,29.535 -2020-08-18 22:15:00,81.51,33.018,52.831,29.535 -2020-08-18 22:30:00,80.13,28.011999999999997,52.831,29.535 -2020-08-18 22:45:00,79.13,24.936999999999998,52.831,29.535 -2020-08-18 23:00:00,72.87,22.809,44.717,29.535 -2020-08-18 23:15:00,76.22,21.831999999999997,44.717,29.535 -2020-08-18 23:30:00,77.08,21.331,44.717,29.535 -2020-08-18 23:45:00,78.95,20.47,44.717,29.535 -2020-08-19 00:00:00,75.55,20.588,41.263000000000005,29.535 -2020-08-19 00:15:00,74.25,21.284000000000002,41.263000000000005,29.535 -2020-08-19 00:30:00,73.14,20.428,41.263000000000005,29.535 -2020-08-19 00:45:00,73.85,20.59,41.263000000000005,29.535 -2020-08-19 01:00:00,72.97,20.358,38.448,29.535 -2020-08-19 01:15:00,75.56,19.652,38.448,29.535 -2020-08-19 01:30:00,70.9,18.563,38.448,29.535 -2020-08-19 01:45:00,73.95,18.288,38.448,29.535 -2020-08-19 02:00:00,73.83,18.187,36.471,29.535 -2020-08-19 02:15:00,75.11,17.482,36.471,29.535 -2020-08-19 02:30:00,74.21,18.646,36.471,29.535 -2020-08-19 02:45:00,74.47,19.331,36.471,29.535 -2020-08-19 03:00:00,76.06,20.089000000000002,36.042,29.535 -2020-08-19 03:15:00,77.07,19.866,36.042,29.535 -2020-08-19 03:30:00,74.69,19.54,36.042,29.535 -2020-08-19 03:45:00,84.15,19.194000000000003,36.042,29.535 -2020-08-19 04:00:00,90.54,23.335,36.705,29.535 -2020-08-19 04:15:00,91.52,28.679000000000002,36.705,29.535 -2020-08-19 04:30:00,88.4,26.26,36.705,29.535 -2020-08-19 04:45:00,91.16,26.372,36.705,29.535 -2020-08-19 05:00:00,95.33,38.171,39.716,29.535 -2020-08-19 05:15:00,104.66,44.675,39.716,29.535 -2020-08-19 05:30:00,106.17,40.223,39.716,29.535 -2020-08-19 05:45:00,113.8,37.723,39.716,29.535 -2020-08-19 06:00:00,118.61,38.113,52.756,29.535 -2020-08-19 06:15:00,117.99,38.286,52.756,29.535 -2020-08-19 06:30:00,114.51,37.786,52.756,29.535 -2020-08-19 06:45:00,111.03,40.067,52.756,29.535 -2020-08-19 07:00:00,120.0,40.104,65.977,29.535 -2020-08-19 07:15:00,121.82,41.191,65.977,29.535 -2020-08-19 07:30:00,118.1,39.595,65.977,29.535 -2020-08-19 07:45:00,117.26,40.374,65.977,29.535 -2020-08-19 08:00:00,114.13,37.389,57.927,29.535 -2020-08-19 08:15:00,117.26,39.741,57.927,29.535 -2020-08-19 08:30:00,120.28,40.171,57.927,29.535 -2020-08-19 08:45:00,118.51,42.016999999999996,57.927,29.535 -2020-08-19 09:00:00,117.01,37.033,54.86,29.535 -2020-08-19 09:15:00,114.75,36.162,54.86,29.535 -2020-08-19 09:30:00,117.13,38.986999999999995,54.86,29.535 -2020-08-19 09:45:00,112.52,41.547,54.86,29.535 -2020-08-19 10:00:00,114.95,38.043,52.818000000000005,29.535 -2020-08-19 10:15:00,116.13,39.04,52.818000000000005,29.535 -2020-08-19 10:30:00,116.65,38.913000000000004,52.818000000000005,29.535 -2020-08-19 10:45:00,111.6,40.138000000000005,52.818000000000005,29.535 -2020-08-19 11:00:00,110.58,38.38,52.937,29.535 -2020-08-19 11:15:00,112.5,39.426,52.937,29.535 -2020-08-19 11:30:00,112.13,40.26,52.937,29.535 -2020-08-19 11:45:00,111.52,41.125,52.937,29.535 -2020-08-19 12:00:00,106.13,37.423,50.826,29.535 -2020-08-19 12:15:00,106.08,36.811,50.826,29.535 -2020-08-19 12:30:00,106.22,35.847,50.826,29.535 -2020-08-19 12:45:00,115.53,36.633,50.826,29.535 -2020-08-19 13:00:00,113.75,36.177,50.556000000000004,29.535 -2020-08-19 13:15:00,112.48,36.993,50.556000000000004,29.535 -2020-08-19 13:30:00,105.73,35.543,50.556000000000004,29.535 -2020-08-19 13:45:00,105.62,35.400999999999996,50.556000000000004,29.535 -2020-08-19 14:00:00,109.57,36.584,51.188,29.535 -2020-08-19 14:15:00,112.24,35.759,51.188,29.535 -2020-08-19 14:30:00,108.23,34.856,51.188,29.535 -2020-08-19 14:45:00,107.5,35.559,51.188,29.535 -2020-08-19 15:00:00,109.94,36.618,52.976000000000006,29.535 -2020-08-19 15:15:00,110.19,34.525999999999996,52.976000000000006,29.535 -2020-08-19 15:30:00,105.86,33.321999999999996,52.976000000000006,29.535 -2020-08-19 15:45:00,109.9,31.653000000000002,52.976000000000006,29.535 -2020-08-19 16:00:00,110.95,34.01,55.463,29.535 -2020-08-19 16:15:00,112.44,33.936,55.463,29.535 -2020-08-19 16:30:00,109.15,33.707,55.463,29.535 -2020-08-19 16:45:00,107.57,31.572,55.463,29.535 -2020-08-19 17:00:00,115.26,34.226,59.435,29.535 -2020-08-19 17:15:00,118.06,35.025,59.435,29.535 -2020-08-19 17:30:00,118.86,34.346,59.435,29.535 -2020-08-19 17:45:00,116.17,33.907,59.435,29.535 -2020-08-19 18:00:00,112.79,36.433,61.387,29.535 -2020-08-19 18:15:00,115.1,36.225,61.387,29.535 -2020-08-19 18:30:00,118.21,34.598,61.387,29.535 -2020-08-19 18:45:00,118.6,37.507,61.387,29.535 -2020-08-19 19:00:00,113.59,38.624,63.323,29.535 -2020-08-19 19:15:00,106.04,37.567,63.323,29.535 -2020-08-19 19:30:00,112.3,36.503,63.323,29.535 -2020-08-19 19:45:00,112.18,36.016,63.323,29.535 -2020-08-19 20:00:00,107.02,33.094,69.083,29.535 -2020-08-19 20:15:00,107.02,32.918,69.083,29.535 -2020-08-19 20:30:00,100.41,33.061,69.083,29.535 -2020-08-19 20:45:00,98.9,33.274,69.083,29.535 -2020-08-19 21:00:00,94.63,31.729,59.957,29.535 -2020-08-19 21:15:00,94.3,33.27,59.957,29.535 -2020-08-19 21:30:00,91.09,33.616,59.957,29.535 -2020-08-19 21:45:00,88.92,33.804,59.957,29.535 -2020-08-19 22:00:00,81.63,31.223000000000003,53.821000000000005,29.535 -2020-08-19 22:15:00,84.95,33.12,53.821000000000005,29.535 -2020-08-19 22:30:00,83.56,28.084,53.821000000000005,29.535 -2020-08-19 22:45:00,83.98,25.009,53.821000000000005,29.535 -2020-08-19 23:00:00,74.72,22.921,45.458,29.535 -2020-08-19 23:15:00,78.64,21.933000000000003,45.458,29.535 -2020-08-19 23:30:00,74.14,21.443,45.458,29.535 -2020-08-19 23:45:00,79.63,20.586,45.458,29.535 -2020-08-20 00:00:00,73.64,20.724,40.36,29.535 -2020-08-20 00:15:00,75.13,21.421,40.36,29.535 -2020-08-20 00:30:00,70.59,20.57,40.36,29.535 -2020-08-20 00:45:00,74.45,20.739,40.36,29.535 -2020-08-20 01:00:00,72.22,20.49,38.552,29.535 -2020-08-20 01:15:00,74.16,19.795,38.552,29.535 -2020-08-20 01:30:00,75.17,18.719,38.552,29.535 -2020-08-20 01:45:00,81.58,18.444000000000003,38.552,29.535 -2020-08-20 02:00:00,80.48,18.346,36.895,29.535 -2020-08-20 02:15:00,77.16,17.660999999999998,36.895,29.535 -2020-08-20 02:30:00,74.84,18.802,36.895,29.535 -2020-08-20 02:45:00,76.18,19.485,36.895,29.535 -2020-08-20 03:00:00,77.16,20.230999999999998,36.565,29.535 -2020-08-20 03:15:00,76.8,20.024,36.565,29.535 -2020-08-20 03:30:00,77.13,19.705,36.565,29.535 -2020-08-20 03:45:00,81.08,19.352999999999998,36.565,29.535 -2020-08-20 04:00:00,82.53,23.513,37.263000000000005,29.535 -2020-08-20 04:15:00,85.3,28.87,37.263000000000005,29.535 -2020-08-20 04:30:00,89.78,26.456,37.263000000000005,29.535 -2020-08-20 04:45:00,92.89,26.572,37.263000000000005,29.535 -2020-08-20 05:00:00,100.42,38.428000000000004,40.412,29.535 -2020-08-20 05:15:00,97.56,44.992,40.412,29.535 -2020-08-20 05:30:00,104.41,40.54,40.412,29.535 -2020-08-20 05:45:00,114.19,38.008,40.412,29.535 -2020-08-20 06:00:00,118.96,38.368,49.825,29.535 -2020-08-20 06:15:00,118.57,38.561,49.825,29.535 -2020-08-20 06:30:00,115.56,38.058,49.825,29.535 -2020-08-20 06:45:00,116.37,40.343,49.825,29.535 -2020-08-20 07:00:00,117.94,40.379,61.082,29.535 -2020-08-20 07:15:00,121.74,41.48,61.082,29.535 -2020-08-20 07:30:00,117.74,39.907,61.082,29.535 -2020-08-20 07:45:00,117.37,40.691,61.082,29.535 -2020-08-20 08:00:00,119.5,37.708,53.961999999999996,29.535 -2020-08-20 08:15:00,119.23,40.032,53.961999999999996,29.535 -2020-08-20 08:30:00,117.61,40.457,53.961999999999996,29.535 -2020-08-20 08:45:00,119.25,42.288999999999994,53.961999999999996,29.535 -2020-08-20 09:00:00,121.78,37.311,50.06100000000001,29.535 -2020-08-20 09:15:00,121.69,36.431999999999995,50.06100000000001,29.535 -2020-08-20 09:30:00,113.46,39.24,50.06100000000001,29.535 -2020-08-20 09:45:00,113.9,41.778,50.06100000000001,29.535 -2020-08-20 10:00:00,119.89,38.274,47.68,29.535 -2020-08-20 10:15:00,119.66,39.247,47.68,29.535 -2020-08-20 10:30:00,118.06,39.114000000000004,47.68,29.535 -2020-08-20 10:45:00,111.47,40.330999999999996,47.68,29.535 -2020-08-20 11:00:00,110.59,38.582,45.93899999999999,29.535 -2020-08-20 11:15:00,113.71,39.62,45.93899999999999,29.535 -2020-08-20 11:30:00,113.77,40.45,45.93899999999999,29.535 -2020-08-20 11:45:00,113.94,41.301,45.93899999999999,29.535 -2020-08-20 12:00:00,110.52,37.588,43.648999999999994,29.535 -2020-08-20 12:15:00,113.88,36.965,43.648999999999994,29.535 -2020-08-20 12:30:00,114.93,36.016,43.648999999999994,29.535 -2020-08-20 12:45:00,114.05,36.791,43.648999999999994,29.535 -2020-08-20 13:00:00,113.61,36.317,42.801,29.535 -2020-08-20 13:15:00,115.95,37.122,42.801,29.535 -2020-08-20 13:30:00,127.37,35.669000000000004,42.801,29.535 -2020-08-20 13:45:00,125.7,35.538000000000004,42.801,29.535 -2020-08-20 14:00:00,120.24,36.696999999999996,43.24,29.535 -2020-08-20 14:15:00,116.22,35.878,43.24,29.535 -2020-08-20 14:30:00,117.36,34.991,43.24,29.535 -2020-08-20 14:45:00,120.32,35.696,43.24,29.535 -2020-08-20 15:00:00,118.94,36.713,45.04600000000001,29.535 -2020-08-20 15:15:00,113.51,34.626999999999995,45.04600000000001,29.535 -2020-08-20 15:30:00,112.59,33.437,45.04600000000001,29.535 -2020-08-20 15:45:00,117.13,31.774,45.04600000000001,29.535 -2020-08-20 16:00:00,112.87,34.106,46.568000000000005,29.535 -2020-08-20 16:15:00,107.6,34.041,46.568000000000005,29.535 -2020-08-20 16:30:00,113.61,33.817,46.568000000000005,29.535 -2020-08-20 16:45:00,113.75,31.721,46.568000000000005,29.535 -2020-08-20 17:00:00,116.5,34.345,50.618,29.535 -2020-08-20 17:15:00,117.63,35.172,50.618,29.535 -2020-08-20 17:30:00,118.34,34.506,50.618,29.535 -2020-08-20 17:45:00,121.4,34.099000000000004,50.618,29.535 -2020-08-20 18:00:00,121.03,36.616,52.806999999999995,29.535 -2020-08-20 18:15:00,118.78,36.42,52.806999999999995,29.535 -2020-08-20 18:30:00,118.33,34.802,52.806999999999995,29.535 -2020-08-20 18:45:00,113.93,37.711,52.806999999999995,29.535 -2020-08-20 19:00:00,110.67,38.834,53.464,29.535 -2020-08-20 19:15:00,108.18,37.775999999999996,53.464,29.535 -2020-08-20 19:30:00,108.15,36.714,53.464,29.535 -2020-08-20 19:45:00,108.46,36.23,53.464,29.535 -2020-08-20 20:00:00,104.07,33.314,56.753,29.535 -2020-08-20 20:15:00,102.81,33.14,56.753,29.535 -2020-08-20 20:30:00,101.22,33.266999999999996,56.753,29.535 -2020-08-20 20:45:00,100.86,33.449,56.753,29.535 -2020-08-20 21:00:00,93.78,31.909000000000002,52.506,29.535 -2020-08-20 21:15:00,95.92,33.44,52.506,29.535 -2020-08-20 21:30:00,88.69,33.784,52.506,29.535 -2020-08-20 21:45:00,90.87,33.941,52.506,29.535 -2020-08-20 22:00:00,83.08,31.343000000000004,48.163000000000004,29.535 -2020-08-20 22:15:00,86.43,33.224000000000004,48.163000000000004,29.535 -2020-08-20 22:30:00,83.99,28.158,48.163000000000004,29.535 -2020-08-20 22:45:00,83.77,25.084,48.163000000000004,29.535 -2020-08-20 23:00:00,75.0,23.035,42.379,29.535 -2020-08-20 23:15:00,77.96,22.035,42.379,29.535 -2020-08-20 23:30:00,75.78,21.557,42.379,29.535 -2020-08-20 23:45:00,78.91,20.704,42.379,29.535 -2020-08-21 00:00:00,75.42,19.239,38.505,29.535 -2020-08-21 00:15:00,75.15,20.131,38.505,29.535 -2020-08-21 00:30:00,73.55,19.534000000000002,38.505,29.535 -2020-08-21 00:45:00,74.33,20.096,38.505,29.535 -2020-08-21 01:00:00,73.08,19.484,37.004,29.535 -2020-08-21 01:15:00,73.78,18.242,37.004,29.535 -2020-08-21 01:30:00,73.77,17.834,37.004,29.535 -2020-08-21 01:45:00,80.71,17.328,37.004,29.535 -2020-08-21 02:00:00,81.21,18.083,36.098,29.535 -2020-08-21 02:15:00,77.73,17.374000000000002,36.098,29.535 -2020-08-21 02:30:00,74.39,19.24,36.098,29.535 -2020-08-21 02:45:00,75.1,19.294,36.098,29.535 -2020-08-21 03:00:00,77.31,20.749000000000002,36.561,29.535 -2020-08-21 03:15:00,77.03,19.445,36.561,29.535 -2020-08-21 03:30:00,76.96,18.914,36.561,29.535 -2020-08-21 03:45:00,83.38,19.355,36.561,29.535 -2020-08-21 04:00:00,88.24,23.659000000000002,37.355,29.535 -2020-08-21 04:15:00,91.71,27.607,37.355,29.535 -2020-08-21 04:30:00,90.26,26.066,37.355,29.535 -2020-08-21 04:45:00,91.87,25.607,37.355,29.535 -2020-08-21 05:00:00,99.2,37.098,40.285,29.535 -2020-08-21 05:15:00,102.18,44.583,40.285,29.535 -2020-08-21 05:30:00,106.7,40.306,40.285,29.535 -2020-08-21 05:45:00,115.67,37.338,40.285,29.535 -2020-08-21 06:00:00,123.11,37.869,52.378,29.535 -2020-08-21 06:15:00,120.91,38.234,52.378,29.535 -2020-08-21 06:30:00,123.41,37.684,52.378,29.535 -2020-08-21 06:45:00,127.16,39.852,52.378,29.535 -2020-08-21 07:00:00,129.29,40.475,60.891999999999996,29.535 -2020-08-21 07:15:00,124.88,42.409,60.891999999999996,29.535 -2020-08-21 07:30:00,117.88,39.092,60.891999999999996,29.535 -2020-08-21 07:45:00,116.37,39.691,60.891999999999996,29.535 -2020-08-21 08:00:00,118.09,37.425,53.652,29.535 -2020-08-21 08:15:00,119.83,40.330999999999996,53.652,29.535 -2020-08-21 08:30:00,122.73,40.656,53.652,29.535 -2020-08-21 08:45:00,121.5,42.353,53.652,29.535 -2020-08-21 09:00:00,118.6,35.285,51.456,29.535 -2020-08-21 09:15:00,120.12,36.135999999999996,51.456,29.535 -2020-08-21 09:30:00,126.02,38.305,51.456,29.535 -2020-08-21 09:45:00,122.6,41.172,51.456,29.535 -2020-08-21 10:00:00,120.93,37.529,49.4,29.535 -2020-08-21 10:15:00,121.21,38.27,49.4,29.535 -2020-08-21 10:30:00,124.91,38.634,49.4,29.535 -2020-08-21 10:45:00,126.82,39.759,49.4,29.535 -2020-08-21 11:00:00,123.43,38.259,48.773,29.535 -2020-08-21 11:15:00,121.31,38.306,48.773,29.535 -2020-08-21 11:30:00,114.97,38.778,48.773,29.535 -2020-08-21 11:45:00,117.42,38.736,48.773,29.535 -2020-08-21 12:00:00,122.33,35.384,46.033,29.535 -2020-08-21 12:15:00,112.57,34.199,46.033,29.535 -2020-08-21 12:30:00,103.79,33.37,46.033,29.535 -2020-08-21 12:45:00,111.23,33.400999999999996,46.033,29.535 -2020-08-21 13:00:00,109.6,33.441,44.38399999999999,29.535 -2020-08-21 13:15:00,108.67,34.389,44.38399999999999,29.535 -2020-08-21 13:30:00,105.43,33.662,44.38399999999999,29.535 -2020-08-21 13:45:00,105.72,33.823,44.38399999999999,29.535 -2020-08-21 14:00:00,109.3,34.238,43.162,29.535 -2020-08-21 14:15:00,119.63,33.829,43.162,29.535 -2020-08-21 14:30:00,116.81,34.333,43.162,29.535 -2020-08-21 14:45:00,115.99,34.4,43.162,29.535 -2020-08-21 15:00:00,108.46,35.311,44.91,29.535 -2020-08-21 15:15:00,102.35,33.022,44.91,29.535 -2020-08-21 15:30:00,102.98,31.35,44.91,29.535 -2020-08-21 15:45:00,109.7,30.392,44.91,29.535 -2020-08-21 16:00:00,115.52,31.933000000000003,47.489,29.535 -2020-08-21 16:15:00,117.53,32.324,47.489,29.535 -2020-08-21 16:30:00,114.19,31.936,47.489,29.535 -2020-08-21 16:45:00,114.63,29.162,47.489,29.535 -2020-08-21 17:00:00,114.87,33.342,52.047,29.535 -2020-08-21 17:15:00,112.6,34.046,52.047,29.535 -2020-08-21 17:30:00,111.56,33.547,52.047,29.535 -2020-08-21 17:45:00,119.81,33.025999999999996,52.047,29.535 -2020-08-21 18:00:00,118.61,35.549,53.306000000000004,29.535 -2020-08-21 18:15:00,111.71,34.506,53.306000000000004,29.535 -2020-08-21 18:30:00,109.02,32.798,53.306000000000004,29.535 -2020-08-21 18:45:00,109.32,36.089,53.306000000000004,29.535 -2020-08-21 19:00:00,104.75,37.998000000000005,53.516000000000005,29.535 -2020-08-21 19:15:00,103.22,37.463,53.516000000000005,29.535 -2020-08-21 19:30:00,105.19,36.463,53.516000000000005,29.535 -2020-08-21 19:45:00,109.91,35.064,53.516000000000005,29.535 -2020-08-21 20:00:00,108.19,32.015,57.88,29.535 -2020-08-21 20:15:00,105.08,32.567,57.88,29.535 -2020-08-21 20:30:00,99.01,32.235,57.88,29.535 -2020-08-21 20:45:00,95.41,31.636,57.88,29.535 -2020-08-21 21:00:00,90.21,31.29,53.32,29.535 -2020-08-21 21:15:00,89.55,34.330999999999996,53.32,29.535 -2020-08-21 21:30:00,92.66,34.534,53.32,29.535 -2020-08-21 21:45:00,91.64,34.841,53.32,29.535 -2020-08-21 22:00:00,87.68,32.082,48.074,29.535 -2020-08-21 22:15:00,84.08,33.724000000000004,48.074,29.535 -2020-08-21 22:30:00,86.02,32.883,48.074,29.535 -2020-08-21 22:45:00,85.3,30.55,48.074,29.535 -2020-08-21 23:00:00,77.83,30.086,41.306999999999995,29.535 -2020-08-21 23:15:00,71.95,27.67,41.306999999999995,29.535 -2020-08-21 23:30:00,73.74,25.559,41.306999999999995,29.535 -2020-08-21 23:45:00,71.29,24.608,41.306999999999995,29.535 -2020-08-22 00:00:00,69.81,20.534000000000002,40.227,29.423000000000002 -2020-08-22 00:15:00,69.02,20.857,40.227,29.423000000000002 -2020-08-22 00:30:00,67.89,19.826,40.227,29.423000000000002 -2020-08-22 00:45:00,72.34,19.723,40.227,29.423000000000002 -2020-08-22 01:00:00,75.79,19.339000000000002,36.303000000000004,29.423000000000002 -2020-08-22 01:15:00,76.02,18.655,36.303000000000004,29.423000000000002 -2020-08-22 01:30:00,75.61,17.533,36.303000000000004,29.423000000000002 -2020-08-22 01:45:00,73.35,18.16,36.303000000000004,29.423000000000002 -2020-08-22 02:00:00,74.97,18.018,33.849000000000004,29.423000000000002 -2020-08-22 02:15:00,75.4,16.616,33.849000000000004,29.423000000000002 -2020-08-22 02:30:00,69.28,17.753,33.849000000000004,29.423000000000002 -2020-08-22 02:45:00,66.05,18.517,33.849000000000004,29.423000000000002 -2020-08-22 03:00:00,72.84,18.707,33.149,29.423000000000002 -2020-08-22 03:15:00,73.03,16.8,33.149,29.423000000000002 -2020-08-22 03:30:00,67.68,16.592,33.149,29.423000000000002 -2020-08-22 03:45:00,66.88,18.373,33.149,29.423000000000002 -2020-08-22 04:00:00,69.12,21.037,32.501,29.423000000000002 -2020-08-22 04:15:00,67.9,24.219,32.501,29.423000000000002 -2020-08-22 04:30:00,68.89,21.195999999999998,32.501,29.423000000000002 -2020-08-22 04:45:00,75.53,20.994,32.501,29.423000000000002 -2020-08-22 05:00:00,76.39,25.175,31.648000000000003,29.423000000000002 -2020-08-22 05:15:00,77.34,23.013,31.648000000000003,29.423000000000002 -2020-08-22 05:30:00,70.85,20.104,31.648000000000003,29.423000000000002 -2020-08-22 05:45:00,75.88,21.084,31.648000000000003,29.423000000000002 -2020-08-22 06:00:00,79.9,31.51,32.552,29.423000000000002 -2020-08-22 06:15:00,81.93,38.769,32.552,29.423000000000002 -2020-08-22 06:30:00,78.71,35.705999999999996,32.552,29.423000000000002 -2020-08-22 06:45:00,78.42,35.068000000000005,32.552,29.423000000000002 -2020-08-22 07:00:00,81.49,34.53,35.181999999999995,29.423000000000002 -2020-08-22 07:15:00,83.52,35.321999999999996,35.181999999999995,29.423000000000002 -2020-08-22 07:30:00,88.71,33.359,35.181999999999995,29.423000000000002 -2020-08-22 07:45:00,83.28,34.743,35.181999999999995,29.423000000000002 -2020-08-22 08:00:00,87.36,33.074,40.35,29.423000000000002 -2020-08-22 08:15:00,83.56,35.699,40.35,29.423000000000002 -2020-08-22 08:30:00,83.76,35.982,40.35,29.423000000000002 -2020-08-22 08:45:00,86.8,38.474000000000004,40.35,29.423000000000002 -2020-08-22 09:00:00,91.83,34.203,42.292,29.423000000000002 -2020-08-22 09:15:00,94.77,35.471,42.292,29.423000000000002 -2020-08-22 09:30:00,93.76,38.058,42.292,29.423000000000002 -2020-08-22 09:45:00,86.84,40.493,42.292,29.423000000000002 -2020-08-22 10:00:00,92.6,37.429,40.084,29.423000000000002 -2020-08-22 10:15:00,82.43,38.467,40.084,29.423000000000002 -2020-08-22 10:30:00,84.17,38.509,40.084,29.423000000000002 -2020-08-22 10:45:00,83.75,39.282,40.084,29.423000000000002 -2020-08-22 11:00:00,82.45,37.674,36.966,29.423000000000002 -2020-08-22 11:15:00,78.36,38.518,36.966,29.423000000000002 -2020-08-22 11:30:00,80.55,39.266,36.966,29.423000000000002 -2020-08-22 11:45:00,84.46,39.841,36.966,29.423000000000002 -2020-08-22 12:00:00,80.83,36.912,35.19,29.423000000000002 -2020-08-22 12:15:00,81.73,36.481,35.19,29.423000000000002 -2020-08-22 12:30:00,83.66,35.539,35.19,29.423000000000002 -2020-08-22 12:45:00,83.6,36.244,35.19,29.423000000000002 -2020-08-22 13:00:00,80.22,35.459,32.277,29.423000000000002 -2020-08-22 13:15:00,81.83,35.946,32.277,29.423000000000002 -2020-08-22 13:30:00,79.68,35.398,32.277,29.423000000000002 -2020-08-22 13:45:00,76.05,34.327,32.277,29.423000000000002 -2020-08-22 14:00:00,76.01,34.762,31.436999999999998,29.423000000000002 -2020-08-22 14:15:00,76.05,33.229,31.436999999999998,29.423000000000002 -2020-08-22 14:30:00,73.17,33.400999999999996,31.436999999999998,29.423000000000002 -2020-08-22 14:45:00,73.18,33.904,31.436999999999998,29.423000000000002 -2020-08-22 15:00:00,73.62,35.177,33.493,29.423000000000002 -2020-08-22 15:15:00,75.64,33.522,33.493,29.423000000000002 -2020-08-22 15:30:00,75.93,32.013000000000005,33.493,29.423000000000002 -2020-08-22 15:45:00,75.66,30.217,33.493,29.423000000000002 -2020-08-22 16:00:00,74.81,33.667,36.593,29.423000000000002 -2020-08-22 16:15:00,75.25,33.234,36.593,29.423000000000002 -2020-08-22 16:30:00,75.96,33.058,36.593,29.423000000000002 -2020-08-22 16:45:00,78.59,30.281,36.593,29.423000000000002 -2020-08-22 17:00:00,80.01,33.37,42.049,29.423000000000002 -2020-08-22 17:15:00,81.17,32.102,42.049,29.423000000000002 -2020-08-22 17:30:00,80.84,31.496,42.049,29.423000000000002 -2020-08-22 17:45:00,79.99,31.468000000000004,42.049,29.423000000000002 -2020-08-22 18:00:00,83.24,35.213,43.755,29.423000000000002 -2020-08-22 18:15:00,78.95,35.67,43.755,29.423000000000002 -2020-08-22 18:30:00,78.74,35.183,43.755,29.423000000000002 -2020-08-22 18:45:00,79.68,35.374,43.755,29.423000000000002 -2020-08-22 19:00:00,79.36,35.782,44.492,29.423000000000002 -2020-08-22 19:15:00,78.0,34.344,44.492,29.423000000000002 -2020-08-22 19:30:00,78.76,34.03,44.492,29.423000000000002 -2020-08-22 19:45:00,78.12,34.227,44.492,29.423000000000002 -2020-08-22 20:00:00,75.97,31.935,40.896,29.423000000000002 -2020-08-22 20:15:00,75.27,31.884,40.896,29.423000000000002 -2020-08-22 20:30:00,77.26,30.746,40.896,29.423000000000002 -2020-08-22 20:45:00,74.04,31.799,40.896,29.423000000000002 -2020-08-22 21:00:00,72.99,30.090999999999998,39.056,29.423000000000002 -2020-08-22 21:15:00,69.37,32.803000000000004,39.056,29.423000000000002 -2020-08-22 21:30:00,65.99,33.161,39.056,29.423000000000002 -2020-08-22 21:45:00,65.64,32.949,39.056,29.423000000000002 -2020-08-22 22:00:00,62.66,30.133000000000003,38.478,29.423000000000002 -2020-08-22 22:15:00,62.96,31.954,38.478,29.423000000000002 -2020-08-22 22:30:00,60.65,30.666999999999998,38.478,29.423000000000002 -2020-08-22 22:45:00,60.45,28.648000000000003,38.478,29.423000000000002 -2020-08-22 23:00:00,57.7,27.596,32.953,29.423000000000002 -2020-08-22 23:15:00,56.86,25.565,32.953,29.423000000000002 -2020-08-22 23:30:00,56.41,25.7,32.953,29.423000000000002 -2020-08-22 23:45:00,56.12,25.105,32.953,29.423000000000002 -2020-08-23 00:00:00,54.05,21.918000000000003,28.584,29.423000000000002 -2020-08-23 00:15:00,54.14,21.205,28.584,29.423000000000002 -2020-08-23 00:30:00,51.82,20.051,28.584,29.423000000000002 -2020-08-23 00:45:00,52.75,19.846,28.584,29.423000000000002 -2020-08-23 01:00:00,50.79,19.685,26.419,29.423000000000002 -2020-08-23 01:15:00,51.91,18.892,26.419,29.423000000000002 -2020-08-23 01:30:00,52.0,17.651,26.419,29.423000000000002 -2020-08-23 01:45:00,51.21,17.939,26.419,29.423000000000002 -2020-08-23 02:00:00,49.98,17.88,25.335,29.423000000000002 -2020-08-23 02:15:00,49.28,17.148,25.335,29.423000000000002 -2020-08-23 02:30:00,49.62,18.421,25.335,29.423000000000002 -2020-08-23 02:45:00,50.01,18.914,25.335,29.423000000000002 -2020-08-23 03:00:00,49.63,19.677,24.805,29.423000000000002 -2020-08-23 03:15:00,50.61,18.027,24.805,29.423000000000002 -2020-08-23 03:30:00,51.05,17.143,24.805,29.423000000000002 -2020-08-23 03:45:00,51.04,18.202,24.805,29.423000000000002 -2020-08-23 04:00:00,52.83,20.862,25.772,29.423000000000002 -2020-08-23 04:15:00,53.3,23.68,25.772,29.423000000000002 -2020-08-23 04:30:00,53.83,21.873,25.772,29.423000000000002 -2020-08-23 04:45:00,55.23,21.249000000000002,25.772,29.423000000000002 -2020-08-23 05:00:00,53.76,25.686999999999998,25.971999999999998,29.423000000000002 -2020-08-23 05:15:00,53.31,22.923000000000002,25.971999999999998,29.423000000000002 -2020-08-23 05:30:00,52.98,19.655,25.971999999999998,29.423000000000002 -2020-08-23 05:45:00,54.2,20.352,25.971999999999998,29.423000000000002 -2020-08-23 06:00:00,55.52,28.631999999999998,26.026,29.423000000000002 -2020-08-23 06:15:00,56.17,36.676,26.026,29.423000000000002 -2020-08-23 06:30:00,57.6,32.996,26.026,29.423000000000002 -2020-08-23 06:45:00,58.37,31.48,26.026,29.423000000000002 -2020-08-23 07:00:00,60.01,31.19,27.396,29.423000000000002 -2020-08-23 07:15:00,59.93,30.531,27.396,29.423000000000002 -2020-08-23 07:30:00,61.88,29.76,27.396,29.423000000000002 -2020-08-23 07:45:00,62.61,31.128,27.396,29.423000000000002 -2020-08-23 08:00:00,63.28,30.125999999999998,30.791999999999998,29.423000000000002 -2020-08-23 08:15:00,61.72,33.788000000000004,30.791999999999998,29.423000000000002 -2020-08-23 08:30:00,60.05,34.823,30.791999999999998,29.423000000000002 -2020-08-23 08:45:00,60.37,37.19,30.791999999999998,29.423000000000002 -2020-08-23 09:00:00,57.88,32.838,32.482,29.423000000000002 -2020-08-23 09:15:00,58.54,33.64,32.482,29.423000000000002 -2020-08-23 09:30:00,61.36,36.603,32.482,29.423000000000002 -2020-08-23 09:45:00,64.5,39.924,32.482,29.423000000000002 -2020-08-23 10:00:00,65.45,37.297,31.951,29.423000000000002 -2020-08-23 10:15:00,63.8,38.42,31.951,29.423000000000002 -2020-08-23 10:30:00,69.36,38.641,31.951,29.423000000000002 -2020-08-23 10:45:00,69.5,40.378,31.951,29.423000000000002 -2020-08-23 11:00:00,68.42,38.444,33.619,29.423000000000002 -2020-08-23 11:15:00,68.97,38.867,33.619,29.423000000000002 -2020-08-23 11:30:00,65.45,40.113,33.619,29.423000000000002 -2020-08-23 11:45:00,65.73,40.89,33.619,29.423000000000002 -2020-08-23 12:00:00,62.07,38.953,30.975,29.423000000000002 -2020-08-23 12:15:00,60.77,37.865,30.975,29.423000000000002 -2020-08-23 12:30:00,57.24,37.19,30.975,29.423000000000002 -2020-08-23 12:45:00,59.1,37.333,30.975,29.423000000000002 -2020-08-23 13:00:00,54.41,36.266999999999996,27.956999999999997,29.423000000000002 -2020-08-23 13:15:00,56.3,36.116,27.956999999999997,29.423000000000002 -2020-08-23 13:30:00,54.14,34.552,27.956999999999997,29.423000000000002 -2020-08-23 13:45:00,57.34,34.536,27.956999999999997,29.423000000000002 -2020-08-23 14:00:00,54.95,36.039,25.555999999999997,29.423000000000002 -2020-08-23 14:15:00,55.93,34.866,25.555999999999997,29.423000000000002 -2020-08-23 14:30:00,53.34,33.878,25.555999999999997,29.423000000000002 -2020-08-23 14:45:00,52.83,33.415,25.555999999999997,29.423000000000002 -2020-08-23 15:00:00,52.56,34.832,26.271,29.423000000000002 -2020-08-23 15:15:00,52.26,32.414,26.271,29.423000000000002 -2020-08-23 15:30:00,53.99,30.730999999999998,26.271,29.423000000000002 -2020-08-23 15:45:00,55.72,29.178,26.271,29.423000000000002 -2020-08-23 16:00:00,60.31,31.070999999999998,30.369,29.423000000000002 -2020-08-23 16:15:00,60.83,30.884,30.369,29.423000000000002 -2020-08-23 16:30:00,63.75,31.62,30.369,29.423000000000002 -2020-08-23 16:45:00,67.7,28.939,30.369,29.423000000000002 -2020-08-23 17:00:00,71.4,32.325,38.787,29.423000000000002 -2020-08-23 17:15:00,73.13,32.479,38.787,29.423000000000002 -2020-08-23 17:30:00,74.84,32.615,38.787,29.423000000000002 -2020-08-23 17:45:00,76.19,32.934,38.787,29.423000000000002 -2020-08-23 18:00:00,78.8,37.244,41.886,29.423000000000002 -2020-08-23 18:15:00,78.18,37.311,41.886,29.423000000000002 -2020-08-23 18:30:00,76.17,36.661,41.886,29.423000000000002 -2020-08-23 18:45:00,77.31,36.91,41.886,29.423000000000002 -2020-08-23 19:00:00,79.28,39.316,42.91,29.423000000000002 -2020-08-23 19:15:00,79.78,36.865,42.91,29.423000000000002 -2020-08-23 19:30:00,81.08,36.332,42.91,29.423000000000002 -2020-08-23 19:45:00,80.3,36.093,42.91,29.423000000000002 -2020-08-23 20:00:00,79.94,33.946999999999996,42.148999999999994,29.423000000000002 -2020-08-23 20:15:00,79.46,33.751,42.148999999999994,29.423000000000002 -2020-08-23 20:30:00,78.65,33.303000000000004,42.148999999999994,29.423000000000002 -2020-08-23 20:45:00,78.43,32.828,42.148999999999994,29.423000000000002 -2020-08-23 21:00:00,77.51,31.070999999999998,40.955999999999996,29.423000000000002 -2020-08-23 21:15:00,78.17,33.514,40.955999999999996,29.423000000000002 -2020-08-23 21:30:00,74.81,33.278,40.955999999999996,29.423000000000002 -2020-08-23 21:45:00,74.82,33.356,40.955999999999996,29.423000000000002 -2020-08-23 22:00:00,70.62,32.385999999999996,39.873000000000005,29.423000000000002 -2020-08-23 22:15:00,71.54,32.687,39.873000000000005,29.423000000000002 -2020-08-23 22:30:00,70.08,30.976999999999997,39.873000000000005,29.423000000000002 -2020-08-23 22:45:00,70.5,27.828000000000003,39.873000000000005,29.423000000000002 -2020-08-23 23:00:00,65.77,26.604,35.510999999999996,29.423000000000002 -2020-08-23 23:15:00,68.03,25.668000000000003,35.510999999999996,29.423000000000002 -2020-08-23 23:30:00,68.09,25.31,35.510999999999996,29.423000000000002 -2020-08-23 23:45:00,67.17,24.844,35.510999999999996,29.423000000000002 -2020-08-24 00:00:00,61.92,23.346999999999998,33.475,29.535 -2020-08-24 00:15:00,61.51,23.287,33.475,29.535 -2020-08-24 00:30:00,62.23,21.79,33.475,29.535 -2020-08-24 00:45:00,64.91,21.246,33.475,29.535 -2020-08-24 01:00:00,63.88,21.413,33.111,29.535 -2020-08-24 01:15:00,64.28,20.656,33.111,29.535 -2020-08-24 01:30:00,63.48,19.754,33.111,29.535 -2020-08-24 01:45:00,64.2,19.951,33.111,29.535 -2020-08-24 02:00:00,63.59,20.304000000000002,32.358000000000004,29.535 -2020-08-24 02:15:00,65.17,18.646,32.358000000000004,29.535 -2020-08-24 02:30:00,66.78,20.039,32.358000000000004,29.535 -2020-08-24 02:45:00,69.86,20.409000000000002,32.358000000000004,29.535 -2020-08-24 03:00:00,74.42,21.589000000000002,30.779,29.535 -2020-08-24 03:15:00,75.12,20.570999999999998,30.779,29.535 -2020-08-24 03:30:00,69.75,20.315,30.779,29.535 -2020-08-24 03:45:00,71.44,20.962,30.779,29.535 -2020-08-24 04:00:00,77.38,26.358,31.416,29.535 -2020-08-24 04:15:00,84.0,31.753,31.416,29.535 -2020-08-24 04:30:00,88.97,29.471,31.416,29.535 -2020-08-24 04:45:00,90.63,29.182,31.416,29.535 -2020-08-24 05:00:00,92.59,39.953,37.221,29.535 -2020-08-24 05:15:00,98.51,46.222,37.221,29.535 -2020-08-24 05:30:00,97.7,41.567,37.221,29.535 -2020-08-24 05:45:00,106.99,39.55,37.221,29.535 -2020-08-24 06:00:00,114.75,38.809,51.891000000000005,29.535 -2020-08-24 06:15:00,115.62,38.935,51.891000000000005,29.535 -2020-08-24 06:30:00,114.57,38.699,51.891000000000005,29.535 -2020-08-24 06:45:00,111.02,41.791000000000004,51.891000000000005,29.535 -2020-08-24 07:00:00,116.17,41.681999999999995,62.282,29.535 -2020-08-24 07:15:00,117.57,43.071000000000005,62.282,29.535 -2020-08-24 07:30:00,116.26,41.563,62.282,29.535 -2020-08-24 07:45:00,111.86,43.251999999999995,62.282,29.535 -2020-08-24 08:00:00,112.24,40.347,54.102,29.535 -2020-08-24 08:15:00,110.91,42.93600000000001,54.102,29.535 -2020-08-24 08:30:00,107.9,43.183,54.102,29.535 -2020-08-24 08:45:00,106.7,45.798,54.102,29.535 -2020-08-24 09:00:00,103.97,40.516999999999996,50.917,29.535 -2020-08-24 09:15:00,112.8,39.77,50.917,29.535 -2020-08-24 09:30:00,109.89,41.897,50.917,29.535 -2020-08-24 09:45:00,115.07,43.108000000000004,50.917,29.535 -2020-08-24 10:00:00,107.02,40.842,49.718999999999994,29.535 -2020-08-24 10:15:00,116.52,41.815,49.718999999999994,29.535 -2020-08-24 10:30:00,119.9,41.635,49.718999999999994,29.535 -2020-08-24 10:45:00,119.31,41.896,49.718999999999994,29.535 -2020-08-24 11:00:00,116.15,40.231,49.833999999999996,29.535 -2020-08-24 11:15:00,121.04,40.848,49.833999999999996,29.535 -2020-08-24 11:30:00,121.33,42.687,49.833999999999996,29.535 -2020-08-24 11:45:00,120.83,43.92,49.833999999999996,29.535 -2020-08-24 12:00:00,115.38,40.277,47.832,29.535 -2020-08-24 12:15:00,118.08,39.281,47.832,29.535 -2020-08-24 12:30:00,110.62,37.626999999999995,47.832,29.535 -2020-08-24 12:45:00,109.16,37.7,47.832,29.535 -2020-08-24 13:00:00,106.38,37.482,48.03,29.535 -2020-08-24 13:15:00,100.21,36.554,48.03,29.535 -2020-08-24 13:30:00,103.29,35.159,48.03,29.535 -2020-08-24 13:45:00,105.95,35.975,48.03,29.535 -2020-08-24 14:00:00,103.3,36.626999999999995,48.157,29.535 -2020-08-24 14:15:00,99.66,36.027,48.157,29.535 -2020-08-24 14:30:00,103.17,34.923,48.157,29.535 -2020-08-24 14:45:00,110.25,36.366,48.157,29.535 -2020-08-24 15:00:00,115.96,37.335,48.897,29.535 -2020-08-24 15:15:00,112.33,34.433,48.897,29.535 -2020-08-24 15:30:00,104.1,33.501,48.897,29.535 -2020-08-24 15:45:00,99.37,31.523000000000003,48.897,29.535 -2020-08-24 16:00:00,108.59,34.434,51.446000000000005,29.535 -2020-08-24 16:15:00,110.63,34.338,51.446000000000005,29.535 -2020-08-24 16:30:00,113.83,34.496,51.446000000000005,29.535 -2020-08-24 16:45:00,113.22,31.912,51.446000000000005,29.535 -2020-08-24 17:00:00,108.34,34.234,57.507,29.535 -2020-08-24 17:15:00,106.39,34.789,57.507,29.535 -2020-08-24 17:30:00,107.38,34.6,57.507,29.535 -2020-08-24 17:45:00,112.93,34.635999999999996,57.507,29.535 -2020-08-24 18:00:00,113.44,37.981,57.896,29.535 -2020-08-24 18:15:00,110.9,36.451,57.896,29.535 -2020-08-24 18:30:00,108.43,35.108000000000004,57.896,29.535 -2020-08-24 18:45:00,106.18,38.216,57.896,29.535 -2020-08-24 19:00:00,105.21,40.431,57.891999999999996,29.535 -2020-08-24 19:15:00,109.56,39.202,57.891999999999996,29.535 -2020-08-24 19:30:00,106.94,38.328,57.891999999999996,29.535 -2020-08-24 19:45:00,101.03,37.554,57.891999999999996,29.535 -2020-08-24 20:00:00,100.29,34.311,64.57300000000001,29.535 -2020-08-24 20:15:00,98.55,35.45,64.57300000000001,29.535 -2020-08-24 20:30:00,97.25,35.505,64.57300000000001,29.535 -2020-08-24 20:45:00,101.29,35.153,64.57300000000001,29.535 -2020-08-24 21:00:00,99.14,32.809,59.431999999999995,29.535 -2020-08-24 21:15:00,93.54,35.671,59.431999999999995,29.535 -2020-08-24 21:30:00,84.27,35.83,59.431999999999995,29.535 -2020-08-24 21:45:00,83.92,35.689,59.431999999999995,29.535 -2020-08-24 22:00:00,75.13,32.900999999999996,51.519,29.535 -2020-08-24 22:15:00,79.97,35.023,51.519,29.535 -2020-08-24 22:30:00,74.93,29.565,51.519,29.535 -2020-08-24 22:45:00,75.97,26.509,51.519,29.535 -2020-08-24 23:00:00,72.01,25.331,44.501000000000005,29.535 -2020-08-24 23:15:00,73.98,22.824,44.501000000000005,29.535 -2020-08-24 23:30:00,73.76,22.38,44.501000000000005,29.535 -2020-08-24 23:45:00,72.64,21.371,44.501000000000005,29.535 -2020-08-25 00:00:00,71.72,21.445,44.522,29.535 -2020-08-25 00:15:00,71.62,22.142,44.522,29.535 -2020-08-25 00:30:00,70.03,21.316999999999997,44.522,29.535 -2020-08-25 00:45:00,71.88,21.523000000000003,44.522,29.535 -2020-08-25 01:00:00,71.19,21.183000000000003,41.441,29.535 -2020-08-25 01:15:00,72.36,20.55,41.441,29.535 -2020-08-25 01:30:00,70.95,19.538,41.441,29.535 -2020-08-25 01:45:00,71.76,19.262,41.441,29.535 -2020-08-25 02:00:00,70.7,19.179000000000002,40.203,29.535 -2020-08-25 02:15:00,69.84,18.6,40.203,29.535 -2020-08-25 02:30:00,70.82,19.628,40.203,29.535 -2020-08-25 02:45:00,70.92,20.293,40.203,29.535 -2020-08-25 03:00:00,72.33,20.983,39.536,29.535 -2020-08-25 03:15:00,72.62,20.854,39.536,29.535 -2020-08-25 03:30:00,75.29,20.564,39.536,29.535 -2020-08-25 03:45:00,77.05,20.184,39.536,29.535 -2020-08-25 04:00:00,84.41,24.456,40.759,29.535 -2020-08-25 04:15:00,89.97,29.886,40.759,29.535 -2020-08-25 04:30:00,92.14,27.509,40.759,29.535 -2020-08-25 04:45:00,92.03,27.641,40.759,29.535 -2020-08-25 05:00:00,99.0,39.819,43.623999999999995,29.535 -2020-08-25 05:15:00,107.55,46.723,43.623999999999995,29.535 -2020-08-25 05:30:00,109.53,42.256,43.623999999999995,29.535 -2020-08-25 05:45:00,114.17,39.54,43.623999999999995,29.535 -2020-08-25 06:00:00,113.12,39.746,52.684,29.535 -2020-08-25 06:15:00,114.58,40.044000000000004,52.684,29.535 -2020-08-25 06:30:00,116.2,39.524,52.684,29.535 -2020-08-25 06:45:00,116.67,41.817,52.684,29.535 -2020-08-25 07:00:00,123.26,41.85,62.676,29.535 -2020-08-25 07:15:00,127.76,43.023,62.676,29.535 -2020-08-25 07:30:00,128.42,41.568000000000005,62.676,29.535 -2020-08-25 07:45:00,121.39,42.361999999999995,62.676,29.535 -2020-08-25 08:00:00,117.12,39.391,56.161,29.535 -2020-08-25 08:15:00,112.74,41.563,56.161,29.535 -2020-08-25 08:30:00,113.5,41.963,56.161,29.535 -2020-08-25 08:45:00,116.16,43.723,56.161,29.535 -2020-08-25 09:00:00,118.01,38.784,52.132,29.535 -2020-08-25 09:15:00,126.14,37.858000000000004,52.132,29.535 -2020-08-25 09:30:00,124.08,40.582,52.132,29.535 -2020-08-25 09:45:00,118.84,43.004,52.132,29.535 -2020-08-25 10:00:00,117.53,39.493,51.032,29.535 -2020-08-25 10:15:00,121.68,40.346,51.032,29.535 -2020-08-25 10:30:00,120.94,40.177,51.032,29.535 -2020-08-25 10:45:00,113.26,41.349,51.032,29.535 -2020-08-25 11:00:00,109.61,39.652,51.085,29.535 -2020-08-25 11:15:00,117.1,40.645,51.085,29.535 -2020-08-25 11:30:00,122.66,41.457,51.085,29.535 -2020-08-25 11:45:00,124.89,42.236000000000004,51.085,29.535 -2020-08-25 12:00:00,115.6,38.455,49.049,29.535 -2020-08-25 12:15:00,113.66,37.78,49.049,29.535 -2020-08-25 12:30:00,120.05,36.912,49.049,29.535 -2020-08-25 12:45:00,118.16,37.631,49.049,29.535 -2020-08-25 13:00:00,117.18,37.067,49.722,29.535 -2020-08-25 13:15:00,108.95,37.815,49.722,29.535 -2020-08-25 13:30:00,104.14,36.343,49.722,29.535 -2020-08-25 13:45:00,104.85,36.264,49.722,29.535 -2020-08-25 14:00:00,109.46,37.303000000000004,49.565,29.535 -2020-08-25 14:15:00,108.21,36.518,49.565,29.535 -2020-08-25 14:30:00,106.98,35.711,49.565,29.535 -2020-08-25 14:45:00,101.38,36.424,49.565,29.535 -2020-08-25 15:00:00,98.49,37.22,51.108999999999995,29.535 -2020-08-25 15:15:00,103.6,35.174,51.108999999999995,29.535 -2020-08-25 15:30:00,106.69,34.051,51.108999999999995,29.535 -2020-08-25 15:45:00,107.37,32.419000000000004,51.108999999999995,29.535 -2020-08-25 16:00:00,106.02,34.625,52.725,29.535 -2020-08-25 16:15:00,105.04,34.601,52.725,29.535 -2020-08-25 16:30:00,111.46,34.395,52.725,29.535 -2020-08-25 16:45:00,113.59,32.505,52.725,29.535 -2020-08-25 17:00:00,115.04,34.974000000000004,58.031000000000006,29.535 -2020-08-25 17:15:00,109.32,35.943000000000005,58.031000000000006,29.535 -2020-08-25 17:30:00,115.28,35.338,58.031000000000006,29.535 -2020-08-25 17:45:00,115.65,35.104,58.031000000000006,29.535 -2020-08-25 18:00:00,116.18,37.575,58.338,29.535 -2020-08-25 18:15:00,111.28,37.442,58.338,29.535 -2020-08-25 18:30:00,110.08,35.876999999999995,58.338,29.535 -2020-08-25 18:45:00,108.95,38.782,58.338,29.535 -2020-08-25 19:00:00,112.98,39.938,58.464,29.535 -2020-08-25 19:15:00,115.45,38.88,58.464,29.535 -2020-08-25 19:30:00,112.47,37.827,58.464,29.535 -2020-08-25 19:45:00,107.22,37.361999999999995,58.464,29.535 -2020-08-25 20:00:00,101.92,34.48,63.708,29.535 -2020-08-25 20:15:00,107.45,34.316,63.708,29.535 -2020-08-25 20:30:00,106.27,34.363,63.708,29.535 -2020-08-25 20:45:00,103.99,34.378,63.708,29.535 -2020-08-25 21:00:00,94.4,32.854,57.06399999999999,29.535 -2020-08-25 21:15:00,95.17,34.338,57.06399999999999,29.535 -2020-08-25 21:30:00,89.29,34.676,57.06399999999999,29.535 -2020-08-25 21:45:00,87.19,34.677,57.06399999999999,29.535 -2020-08-25 22:00:00,78.39,31.979,52.831,29.535 -2020-08-25 22:15:00,81.0,33.783,52.831,29.535 -2020-08-25 22:30:00,76.91,28.561,52.831,29.535 -2020-08-25 22:45:00,80.86,25.493000000000002,52.831,29.535 -2020-08-25 23:00:00,74.5,23.654,44.717,29.535 -2020-08-25 23:15:00,72.88,22.587,44.717,29.535 -2020-08-25 23:30:00,72.05,22.16,44.717,29.535 -2020-08-25 23:45:00,72.32,21.335,44.717,29.535 -2020-08-26 00:00:00,71.27,21.596,41.263000000000005,29.535 -2020-08-26 00:15:00,72.44,22.294,41.263000000000005,29.535 -2020-08-26 00:30:00,72.68,21.475,41.263000000000005,29.535 -2020-08-26 00:45:00,73.43,21.688000000000002,41.263000000000005,29.535 -2020-08-26 01:00:00,69.7,21.326,38.448,29.535 -2020-08-26 01:15:00,71.13,20.708000000000002,38.448,29.535 -2020-08-26 01:30:00,67.88,19.711,38.448,29.535 -2020-08-26 01:45:00,71.52,19.434,38.448,29.535 -2020-08-26 02:00:00,69.26,19.352999999999998,36.471,29.535 -2020-08-26 02:15:00,69.62,18.797,36.471,29.535 -2020-08-26 02:30:00,70.17,19.801,36.471,29.535 -2020-08-26 02:45:00,71.2,20.463,36.471,29.535 -2020-08-26 03:00:00,72.48,21.142,36.042,29.535 -2020-08-26 03:15:00,72.93,21.028000000000002,36.042,29.535 -2020-08-26 03:30:00,74.6,20.743000000000002,36.042,29.535 -2020-08-26 03:45:00,77.43,20.357,36.042,29.535 -2020-08-26 04:00:00,82.27,24.653000000000002,36.705,29.535 -2020-08-26 04:15:00,88.85,30.103,36.705,29.535 -2020-08-26 04:30:00,91.76,27.734,36.705,29.535 -2020-08-26 04:45:00,93.35,27.868000000000002,36.705,29.535 -2020-08-26 05:00:00,101.37,40.118,39.716,29.535 -2020-08-26 05:15:00,108.33,47.097,39.716,29.535 -2020-08-26 05:30:00,110.12,42.623000000000005,39.716,29.535 -2020-08-26 05:45:00,111.53,39.868,39.716,29.535 -2020-08-26 06:00:00,112.68,40.042,52.756,29.535 -2020-08-26 06:15:00,116.55,40.361999999999995,52.756,29.535 -2020-08-26 06:30:00,120.01,39.836999999999996,52.756,29.535 -2020-08-26 06:45:00,121.27,42.13,52.756,29.535 -2020-08-26 07:00:00,119.57,42.163000000000004,65.977,29.535 -2020-08-26 07:15:00,114.72,43.35,65.977,29.535 -2020-08-26 07:30:00,121.57,41.919,65.977,29.535 -2020-08-26 07:45:00,118.18,42.715,65.977,29.535 -2020-08-26 08:00:00,118.81,39.744,57.927,29.535 -2020-08-26 08:15:00,116.2,41.883,57.927,29.535 -2020-08-26 08:30:00,118.47,42.278,57.927,29.535 -2020-08-26 08:45:00,117.16,44.023999999999994,57.927,29.535 -2020-08-26 09:00:00,113.77,39.093,54.86,29.535 -2020-08-26 09:15:00,109.86,38.158,54.86,29.535 -2020-08-26 09:30:00,114.74,40.864000000000004,54.86,29.535 -2020-08-26 09:45:00,115.54,43.261,54.86,29.535 -2020-08-26 10:00:00,115.19,39.749,52.818000000000005,29.535 -2020-08-26 10:15:00,109.01,40.578,52.818000000000005,29.535 -2020-08-26 10:30:00,111.28,40.4,52.818000000000005,29.535 -2020-08-26 10:45:00,114.2,41.563,52.818000000000005,29.535 -2020-08-26 11:00:00,112.86,39.876,52.937,29.535 -2020-08-26 11:15:00,109.67,40.861,52.937,29.535 -2020-08-26 11:30:00,106.25,41.67,52.937,29.535 -2020-08-26 11:45:00,111.83,42.434,52.937,29.535 -2020-08-26 12:00:00,109.68,38.638000000000005,50.826,29.535 -2020-08-26 12:15:00,109.43,37.951,50.826,29.535 -2020-08-26 12:30:00,102.87,37.102,50.826,29.535 -2020-08-26 12:45:00,108.4,37.808,50.826,29.535 -2020-08-26 13:00:00,105.9,37.226,50.556000000000004,29.535 -2020-08-26 13:15:00,105.95,37.961999999999996,50.556000000000004,29.535 -2020-08-26 13:30:00,101.59,36.486999999999995,50.556000000000004,29.535 -2020-08-26 13:45:00,99.54,36.418,50.556000000000004,29.535 -2020-08-26 14:00:00,100.94,37.431999999999995,51.188,29.535 -2020-08-26 14:15:00,105.78,36.654,51.188,29.535 -2020-08-26 14:30:00,108.59,35.864000000000004,51.188,29.535 -2020-08-26 14:45:00,109.21,36.579,51.188,29.535 -2020-08-26 15:00:00,104.05,37.327,52.976000000000006,29.535 -2020-08-26 15:15:00,107.09,35.291,52.976000000000006,29.535 -2020-08-26 15:30:00,108.02,34.181,52.976000000000006,29.535 -2020-08-26 15:45:00,108.26,32.556,52.976000000000006,29.535 -2020-08-26 16:00:00,107.58,34.734,55.463,29.535 -2020-08-26 16:15:00,106.64,34.72,55.463,29.535 -2020-08-26 16:30:00,106.57,34.516,55.463,29.535 -2020-08-26 16:45:00,108.55,32.669000000000004,55.463,29.535 -2020-08-26 17:00:00,113.88,35.105,59.435,29.535 -2020-08-26 17:15:00,118.13,36.104,59.435,29.535 -2020-08-26 17:30:00,118.87,35.510999999999996,59.435,29.535 -2020-08-26 17:45:00,113.11,35.313,59.435,29.535 -2020-08-26 18:00:00,113.43,37.775,61.387,29.535 -2020-08-26 18:15:00,112.92,37.656,61.387,29.535 -2020-08-26 18:30:00,117.05,36.104,61.387,29.535 -2020-08-26 18:45:00,113.66,39.007,61.387,29.535 -2020-08-26 19:00:00,116.87,40.169000000000004,63.323,29.535 -2020-08-26 19:15:00,114.49,39.111,63.323,29.535 -2020-08-26 19:30:00,115.09,38.061,63.323,29.535 -2020-08-26 19:45:00,114.82,37.6,63.323,29.535 -2020-08-26 20:00:00,107.23,34.726,69.083,29.535 -2020-08-26 20:15:00,102.55,34.564,69.083,29.535 -2020-08-26 20:30:00,99.74,34.594,69.083,29.535 -2020-08-26 20:45:00,99.86,34.573,69.083,29.535 -2020-08-26 21:00:00,92.47,33.052,59.957,29.535 -2020-08-26 21:15:00,89.95,34.527,59.957,29.535 -2020-08-26 21:30:00,86.5,34.865,59.957,29.535 -2020-08-26 21:45:00,86.61,34.833,59.957,29.535 -2020-08-26 22:00:00,81.97,32.114000000000004,53.821000000000005,29.535 -2020-08-26 22:15:00,83.28,33.902,53.821000000000005,29.535 -2020-08-26 22:30:00,79.53,28.649,53.821000000000005,29.535 -2020-08-26 22:45:00,84.8,25.583000000000002,53.821000000000005,29.535 -2020-08-26 23:00:00,81.23,23.787,45.458,29.535 -2020-08-26 23:15:00,79.13,22.703000000000003,45.458,29.535 -2020-08-26 23:30:00,78.99,22.287,45.458,29.535 -2020-08-26 23:45:00,78.9,21.468000000000004,45.458,29.535 -2020-08-27 00:00:00,71.33,21.749000000000002,40.36,29.535 -2020-08-27 00:15:00,73.36,22.448,40.36,29.535 -2020-08-27 00:30:00,73.38,21.634,40.36,29.535 -2020-08-27 00:45:00,73.37,21.854,40.36,29.535 -2020-08-27 01:00:00,70.34,21.473000000000003,38.552,29.535 -2020-08-27 01:15:00,71.82,20.868000000000002,38.552,29.535 -2020-08-27 01:30:00,71.13,19.885,38.552,29.535 -2020-08-27 01:45:00,71.82,19.609,38.552,29.535 -2020-08-27 02:00:00,69.67,19.53,36.895,29.535 -2020-08-27 02:15:00,71.68,18.995,36.895,29.535 -2020-08-27 02:30:00,71.41,19.977,36.895,29.535 -2020-08-27 02:45:00,72.88,20.635,36.895,29.535 -2020-08-27 03:00:00,74.73,21.303,36.565,29.535 -2020-08-27 03:15:00,73.5,21.204,36.565,29.535 -2020-08-27 03:30:00,74.7,20.924,36.565,29.535 -2020-08-27 03:45:00,77.44,20.531,36.565,29.535 -2020-08-27 04:00:00,80.24,24.855,37.263000000000005,29.535 -2020-08-27 04:15:00,84.26,30.322,37.263000000000005,29.535 -2020-08-27 04:30:00,88.93,27.961,37.263000000000005,29.535 -2020-08-27 04:45:00,92.35,28.099,37.263000000000005,29.535 -2020-08-27 05:00:00,100.04,40.422,40.412,29.535 -2020-08-27 05:15:00,101.99,47.481,40.412,29.535 -2020-08-27 05:30:00,103.56,43.0,40.412,29.535 -2020-08-27 05:45:00,108.21,40.204,40.412,29.535 -2020-08-27 06:00:00,111.6,40.345,49.825,29.535 -2020-08-27 06:15:00,115.35,40.686,49.825,29.535 -2020-08-27 06:30:00,124.04,40.156,49.825,29.535 -2020-08-27 06:45:00,126.88,42.449,49.825,29.535 -2020-08-27 07:00:00,129.89,42.482,61.082,29.535 -2020-08-27 07:15:00,127.93,43.683,61.082,29.535 -2020-08-27 07:30:00,132.59,42.276,61.082,29.535 -2020-08-27 07:45:00,134.35,43.071999999999996,61.082,29.535 -2020-08-27 08:00:00,130.7,40.103,53.961999999999996,29.535 -2020-08-27 08:15:00,129.47,42.208999999999996,53.961999999999996,29.535 -2020-08-27 08:30:00,135.31,42.599,53.961999999999996,29.535 -2020-08-27 08:45:00,130.08,44.33,53.961999999999996,29.535 -2020-08-27 09:00:00,132.01,39.407,50.06100000000001,29.535 -2020-08-27 09:15:00,137.15,38.461999999999996,50.06100000000001,29.535 -2020-08-27 09:30:00,136.56,41.151,50.06100000000001,29.535 -2020-08-27 09:45:00,138.15,43.523999999999994,50.06100000000001,29.535 -2020-08-27 10:00:00,140.11,40.01,47.68,29.535 -2020-08-27 10:15:00,137.51,40.811,47.68,29.535 -2020-08-27 10:30:00,134.24,40.628,47.68,29.535 -2020-08-27 10:45:00,138.17,41.781000000000006,47.68,29.535 -2020-08-27 11:00:00,132.89,40.105,45.93899999999999,29.535 -2020-08-27 11:15:00,126.1,41.08,45.93899999999999,29.535 -2020-08-27 11:30:00,131.52,41.886,45.93899999999999,29.535 -2020-08-27 11:45:00,134.76,42.635,45.93899999999999,29.535 -2020-08-27 12:00:00,133.16,38.823,43.648999999999994,29.535 -2020-08-27 12:15:00,130.96,38.125,43.648999999999994,29.535 -2020-08-27 12:30:00,125.67,37.294000000000004,43.648999999999994,29.535 -2020-08-27 12:45:00,134.33,37.988,43.648999999999994,29.535 -2020-08-27 13:00:00,127.85,37.389,42.801,29.535 -2020-08-27 13:15:00,124.91,38.113,42.801,29.535 -2020-08-27 13:30:00,127.6,36.634,42.801,29.535 -2020-08-27 13:45:00,132.81,36.576,42.801,29.535 -2020-08-27 14:00:00,129.82,37.563,43.24,29.535 -2020-08-27 14:15:00,126.07,36.792,43.24,29.535 -2020-08-27 14:30:00,121.33,36.021,43.24,29.535 -2020-08-27 14:45:00,126.96,36.736999999999995,43.24,29.535 -2020-08-27 15:00:00,125.31,37.437,45.04600000000001,29.535 -2020-08-27 15:15:00,123.64,35.409,45.04600000000001,29.535 -2020-08-27 15:30:00,117.09,34.314,45.04600000000001,29.535 -2020-08-27 15:45:00,113.24,32.696,45.04600000000001,29.535 -2020-08-27 16:00:00,115.1,34.846,46.568000000000005,29.535 -2020-08-27 16:15:00,117.47,34.841,46.568000000000005,29.535 -2020-08-27 16:30:00,113.23,34.639,46.568000000000005,29.535 -2020-08-27 16:45:00,113.72,32.836999999999996,46.568000000000005,29.535 -2020-08-27 17:00:00,116.96,35.239000000000004,50.618,29.535 -2020-08-27 17:15:00,113.6,36.266999999999996,50.618,29.535 -2020-08-27 17:30:00,111.58,35.686,50.618,29.535 -2020-08-27 17:45:00,112.19,35.525999999999996,50.618,29.535 -2020-08-27 18:00:00,111.35,37.977,52.806999999999995,29.535 -2020-08-27 18:15:00,110.44,37.874,52.806999999999995,29.535 -2020-08-27 18:30:00,108.59,36.330999999999996,52.806999999999995,29.535 -2020-08-27 18:45:00,108.94,39.234,52.806999999999995,29.535 -2020-08-27 19:00:00,111.09,40.403,53.464,29.535 -2020-08-27 19:15:00,108.1,39.346,53.464,29.535 -2020-08-27 19:30:00,108.89,38.298,53.464,29.535 -2020-08-27 19:45:00,104.8,37.842,53.464,29.535 -2020-08-27 20:00:00,99.49,34.976,56.753,29.535 -2020-08-27 20:15:00,100.21,34.816,56.753,29.535 -2020-08-27 20:30:00,96.74,34.83,56.753,29.535 -2020-08-27 20:45:00,94.89,34.772,56.753,29.535 -2020-08-27 21:00:00,91.41,33.254,52.506,29.535 -2020-08-27 21:15:00,90.08,34.719,52.506,29.535 -2020-08-27 21:30:00,85.55,35.056999999999995,52.506,29.535 -2020-08-27 21:45:00,85.17,34.993,52.506,29.535 -2020-08-27 22:00:00,80.57,32.251999999999995,48.163000000000004,29.535 -2020-08-27 22:15:00,82.4,34.023,48.163000000000004,29.535 -2020-08-27 22:30:00,79.2,28.738000000000003,48.163000000000004,29.535 -2020-08-27 22:45:00,79.7,25.674,48.163000000000004,29.535 -2020-08-27 23:00:00,75.57,23.923000000000002,42.379,29.535 -2020-08-27 23:15:00,76.68,22.822,42.379,29.535 -2020-08-27 23:30:00,75.21,22.416,42.379,29.535 -2020-08-27 23:45:00,74.58,21.603,42.379,29.535 -2020-08-28 00:00:00,72.43,20.281,38.505,29.535 -2020-08-28 00:15:00,71.75,21.175,38.505,29.535 -2020-08-28 00:30:00,72.78,20.615,38.505,29.535 -2020-08-28 00:45:00,72.99,21.226999999999997,38.505,29.535 -2020-08-28 01:00:00,70.23,20.479,37.004,29.535 -2020-08-28 01:15:00,72.14,19.332,37.004,29.535 -2020-08-28 01:30:00,71.17,19.017,37.004,29.535 -2020-08-28 01:45:00,72.62,18.511,37.004,29.535 -2020-08-28 02:00:00,71.55,19.285,36.098,29.535 -2020-08-28 02:15:00,72.3,18.726,36.098,29.535 -2020-08-28 02:30:00,72.07,20.434,36.098,29.535 -2020-08-28 02:45:00,72.86,20.463,36.098,29.535 -2020-08-28 03:00:00,73.05,21.838,36.561,29.535 -2020-08-28 03:15:00,75.07,20.644000000000002,36.561,29.535 -2020-08-28 03:30:00,74.45,20.151,36.561,29.535 -2020-08-28 03:45:00,79.36,20.548000000000002,36.561,29.535 -2020-08-28 04:00:00,87.62,25.022,37.355,29.535 -2020-08-28 04:15:00,89.23,29.087,37.355,29.535 -2020-08-28 04:30:00,93.88,27.601,37.355,29.535 -2020-08-28 04:45:00,94.42,27.164,37.355,29.535 -2020-08-28 05:00:00,99.29,39.138000000000005,40.285,29.535 -2020-08-28 05:15:00,100.91,47.137,40.285,29.535 -2020-08-28 05:30:00,109.34,42.821999999999996,40.285,29.535 -2020-08-28 05:45:00,112.16,39.583,40.285,29.535 -2020-08-28 06:00:00,116.49,39.891999999999996,52.378,29.535 -2020-08-28 06:15:00,113.8,40.41,52.378,29.535 -2020-08-28 06:30:00,110.25,39.828,52.378,29.535 -2020-08-28 06:45:00,110.75,42.0,52.378,29.535 -2020-08-28 07:00:00,116.02,42.622,60.891999999999996,29.535 -2020-08-28 07:15:00,113.76,44.653,60.891999999999996,29.535 -2020-08-28 07:30:00,113.32,41.505,60.891999999999996,29.535 -2020-08-28 07:45:00,116.11,42.113,60.891999999999996,29.535 -2020-08-28 08:00:00,110.53,39.859,53.652,29.535 -2020-08-28 08:15:00,110.47,42.542,53.652,29.535 -2020-08-28 08:30:00,118.74,42.833,53.652,29.535 -2020-08-28 08:45:00,118.78,44.428000000000004,53.652,29.535 -2020-08-28 09:00:00,114.6,37.416,51.456,29.535 -2020-08-28 09:15:00,109.6,38.2,51.456,29.535 -2020-08-28 09:30:00,106.67,40.25,51.456,29.535 -2020-08-28 09:45:00,107.3,42.948,51.456,29.535 -2020-08-28 10:00:00,110.6,39.293,49.4,29.535 -2020-08-28 10:15:00,108.84,39.86,49.4,29.535 -2020-08-28 10:30:00,109.67,40.172,49.4,29.535 -2020-08-28 10:45:00,104.36,41.235,49.4,29.535 -2020-08-28 11:00:00,105.31,39.806999999999995,48.773,29.535 -2020-08-28 11:15:00,104.1,39.791,48.773,29.535 -2020-08-28 11:30:00,102.59,40.239000000000004,48.773,29.535 -2020-08-28 11:45:00,100.47,40.095,48.773,29.535 -2020-08-28 12:00:00,97.94,36.64,46.033,29.535 -2020-08-28 12:15:00,100.85,35.379,46.033,29.535 -2020-08-28 12:30:00,98.11,34.671,46.033,29.535 -2020-08-28 12:45:00,98.83,34.62,46.033,29.535 -2020-08-28 13:00:00,96.79,34.536,44.38399999999999,29.535 -2020-08-28 13:15:00,98.89,35.403,44.38399999999999,29.535 -2020-08-28 13:30:00,109.7,34.647,44.38399999999999,29.535 -2020-08-28 13:45:00,107.01,34.881,44.38399999999999,29.535 -2020-08-28 14:00:00,107.86,35.121,43.162,29.535 -2020-08-28 14:15:00,106.56,34.760999999999996,43.162,29.535 -2020-08-28 14:30:00,110.38,35.385,43.162,29.535 -2020-08-28 14:45:00,113.12,35.463,43.162,29.535 -2020-08-28 15:00:00,113.59,36.05,44.91,29.535 -2020-08-28 15:15:00,109.31,33.82,44.91,29.535 -2020-08-28 15:30:00,109.09,32.246,44.91,29.535 -2020-08-28 15:45:00,113.5,31.334,44.91,29.535 -2020-08-28 16:00:00,117.73,32.688,47.489,29.535 -2020-08-28 16:15:00,114.05,33.139,47.489,29.535 -2020-08-28 16:30:00,111.88,32.772,47.489,29.535 -2020-08-28 16:45:00,110.29,30.296,47.489,29.535 -2020-08-28 17:00:00,116.92,34.25,52.047,29.535 -2020-08-28 17:15:00,116.73,35.156,52.047,29.535 -2020-08-28 17:30:00,116.42,34.746,52.047,29.535 -2020-08-28 17:45:00,110.79,34.473,52.047,29.535 -2020-08-28 18:00:00,112.92,36.928000000000004,53.306000000000004,29.535 -2020-08-28 18:15:00,115.02,35.982,53.306000000000004,29.535 -2020-08-28 18:30:00,113.25,34.352,53.306000000000004,29.535 -2020-08-28 18:45:00,112.51,37.635,53.306000000000004,29.535 -2020-08-28 19:00:00,107.58,39.59,53.516000000000005,29.535 -2020-08-28 19:15:00,106.68,39.058,53.516000000000005,29.535 -2020-08-28 19:30:00,106.55,38.073,53.516000000000005,29.535 -2020-08-28 19:45:00,110.05,36.702,53.516000000000005,29.535 -2020-08-28 20:00:00,105.55,33.705999999999996,57.88,29.535 -2020-08-28 20:15:00,103.72,34.273,57.88,29.535 -2020-08-28 20:30:00,95.59,33.826,57.88,29.535 -2020-08-28 20:45:00,90.62,32.982,57.88,29.535 -2020-08-28 21:00:00,84.68,32.658,53.32,29.535 -2020-08-28 21:15:00,83.65,35.631,53.32,29.535 -2020-08-28 21:30:00,80.52,35.832,53.32,29.535 -2020-08-28 21:45:00,82.9,35.915,53.32,29.535 -2020-08-28 22:00:00,83.63,33.01,48.074,29.535 -2020-08-28 22:15:00,83.65,34.539,48.074,29.535 -2020-08-28 22:30:00,78.8,33.479,48.074,29.535 -2020-08-28 22:45:00,76.63,31.156999999999996,48.074,29.535 -2020-08-28 23:00:00,75.72,30.994,41.306999999999995,29.535 -2020-08-28 23:15:00,75.8,28.473000000000003,41.306999999999995,29.535 -2020-08-28 23:30:00,73.3,26.433000000000003,41.306999999999995,29.535 -2020-08-28 23:45:00,66.16,25.524,41.306999999999995,29.535 -2020-08-29 00:00:00,64.44,21.593000000000004,40.227,29.423000000000002 -2020-08-29 00:15:00,71.06,21.918000000000003,40.227,29.423000000000002 -2020-08-29 00:30:00,70.31,20.924,40.227,29.423000000000002 -2020-08-29 00:45:00,70.07,20.871,40.227,29.423000000000002 -2020-08-29 01:00:00,63.31,20.348,36.303000000000004,29.423000000000002 -2020-08-29 01:15:00,64.56,19.761,36.303000000000004,29.423000000000002 -2020-08-29 01:30:00,62.06,18.733,36.303000000000004,29.423000000000002 -2020-08-29 01:45:00,61.97,19.362000000000002,36.303000000000004,29.423000000000002 -2020-08-29 02:00:00,61.2,19.239,33.849000000000004,29.423000000000002 -2020-08-29 02:15:00,65.22,17.988,33.849000000000004,29.423000000000002 -2020-08-29 02:30:00,67.93,18.965,33.849000000000004,29.423000000000002 -2020-08-29 02:45:00,67.63,19.703,33.849000000000004,29.423000000000002 -2020-08-29 03:00:00,62.88,19.814,33.149,29.423000000000002 -2020-08-29 03:15:00,60.75,18.016,33.149,29.423000000000002 -2020-08-29 03:30:00,64.25,17.847,33.149,29.423000000000002 -2020-08-29 03:45:00,69.62,19.58,33.149,29.423000000000002 -2020-08-29 04:00:00,70.43,22.421999999999997,32.501,29.423000000000002 -2020-08-29 04:15:00,67.71,25.729,32.501,29.423000000000002 -2020-08-29 04:30:00,64.26,22.76,32.501,29.423000000000002 -2020-08-29 04:45:00,66.86,22.581,32.501,29.423000000000002 -2020-08-29 05:00:00,72.03,27.261,31.648000000000003,29.423000000000002 -2020-08-29 05:15:00,74.87,25.631,31.648000000000003,29.423000000000002 -2020-08-29 05:30:00,74.46,22.678,31.648000000000003,29.423000000000002 -2020-08-29 05:45:00,72.84,23.379,31.648000000000003,29.423000000000002 -2020-08-29 06:00:00,73.13,33.579,32.552,29.423000000000002 -2020-08-29 06:15:00,77.89,40.993,32.552,29.423000000000002 -2020-08-29 06:30:00,78.78,37.895,32.552,29.423000000000002 -2020-08-29 06:45:00,77.89,37.258,32.552,29.423000000000002 -2020-08-29 07:00:00,77.07,36.72,35.181999999999995,29.423000000000002 -2020-08-29 07:15:00,78.08,37.609,35.181999999999995,29.423000000000002 -2020-08-29 07:30:00,79.75,35.816,35.181999999999995,29.423000000000002 -2020-08-29 07:45:00,82.27,37.204,35.181999999999995,29.423000000000002 -2020-08-29 08:00:00,84.1,35.546,40.35,29.423000000000002 -2020-08-29 08:15:00,84.31,37.943000000000005,40.35,29.423000000000002 -2020-08-29 08:30:00,85.25,38.193000000000005,40.35,29.423000000000002 -2020-08-29 08:45:00,85.89,40.580999999999996,40.35,29.423000000000002 -2020-08-29 09:00:00,89.71,36.368,42.292,29.423000000000002 -2020-08-29 09:15:00,89.66,37.569,42.292,29.423000000000002 -2020-08-29 09:30:00,85.99,40.035,42.292,29.423000000000002 -2020-08-29 09:45:00,80.14,42.298,42.292,29.423000000000002 -2020-08-29 10:00:00,80.79,39.221,40.084,29.423000000000002 -2020-08-29 10:15:00,88.58,40.082,40.084,29.423000000000002 -2020-08-29 10:30:00,90.14,40.073,40.084,29.423000000000002 -2020-08-29 10:45:00,90.37,40.782,40.084,29.423000000000002 -2020-08-29 11:00:00,89.97,39.248000000000005,36.966,29.423000000000002 -2020-08-29 11:15:00,91.84,40.025999999999996,36.966,29.423000000000002 -2020-08-29 11:30:00,89.82,40.753,36.966,29.423000000000002 -2020-08-29 11:45:00,88.72,41.224,36.966,29.423000000000002 -2020-08-29 12:00:00,86.32,38.188,35.19,29.423000000000002 -2020-08-29 12:15:00,84.51,37.68,35.19,29.423000000000002 -2020-08-29 12:30:00,82.92,36.863,35.19,29.423000000000002 -2020-08-29 12:45:00,85.5,37.486,35.19,29.423000000000002 -2020-08-29 13:00:00,81.37,36.576,32.277,29.423000000000002 -2020-08-29 13:15:00,82.13,36.982,32.277,29.423000000000002 -2020-08-29 13:30:00,81.68,36.403,32.277,29.423000000000002 -2020-08-29 13:45:00,81.28,35.406,32.277,29.423000000000002 -2020-08-29 14:00:00,79.6,35.664,31.436999999999998,29.423000000000002 -2020-08-29 14:15:00,79.02,34.179,31.436999999999998,29.423000000000002 -2020-08-29 14:30:00,76.91,34.474000000000004,31.436999999999998,29.423000000000002 -2020-08-29 14:45:00,76.5,34.986999999999995,31.436999999999998,29.423000000000002 -2020-08-29 15:00:00,76.4,35.93,33.493,29.423000000000002 -2020-08-29 15:15:00,77.73,34.336,33.493,29.423000000000002 -2020-08-29 15:30:00,78.14,32.926,33.493,29.423000000000002 -2020-08-29 15:45:00,77.73,31.178,33.493,29.423000000000002 -2020-08-29 16:00:00,78.32,34.436,36.593,29.423000000000002 -2020-08-29 16:15:00,79.7,34.065,36.593,29.423000000000002 -2020-08-29 16:30:00,80.81,33.906,36.593,29.423000000000002 -2020-08-29 16:45:00,82.06,31.432,36.593,29.423000000000002 -2020-08-29 17:00:00,84.59,34.291,42.049,29.423000000000002 -2020-08-29 17:15:00,86.73,33.227,42.049,29.423000000000002 -2020-08-29 17:30:00,85.87,32.711,42.049,29.423000000000002 -2020-08-29 17:45:00,83.17,32.935,42.049,29.423000000000002 -2020-08-29 18:00:00,84.18,36.61,43.755,29.423000000000002 -2020-08-29 18:15:00,83.2,37.168,43.755,29.423000000000002 -2020-08-29 18:30:00,83.27,36.759,43.755,29.423000000000002 -2020-08-29 18:45:00,84.31,36.943000000000005,43.755,29.423000000000002 -2020-08-29 19:00:00,89.05,37.398,44.492,29.423000000000002 -2020-08-29 19:15:00,84.66,35.963,44.492,29.423000000000002 -2020-08-29 19:30:00,86.21,35.665,44.492,29.423000000000002 -2020-08-29 19:45:00,81.85,35.891999999999996,44.492,29.423000000000002 -2020-08-29 20:00:00,77.43,33.655,40.896,29.423000000000002 -2020-08-29 20:15:00,77.44,33.62,40.896,29.423000000000002 -2020-08-29 20:30:00,75.73,32.365,40.896,29.423000000000002 -2020-08-29 20:45:00,76.44,33.168,40.896,29.423000000000002 -2020-08-29 21:00:00,73.3,31.482,39.056,29.423000000000002 -2020-08-29 21:15:00,72.72,34.125,39.056,29.423000000000002 -2020-08-29 21:30:00,70.23,34.483000000000004,39.056,29.423000000000002 -2020-08-29 21:45:00,69.8,34.045,39.056,29.423000000000002 -2020-08-29 22:00:00,66.22,31.079,38.478,29.423000000000002 -2020-08-29 22:15:00,65.01,32.786,38.478,29.423000000000002 -2020-08-29 22:30:00,63.02,31.276999999999997,38.478,29.423000000000002 -2020-08-29 22:45:00,61.99,29.272,38.478,29.423000000000002 -2020-08-29 23:00:00,58.73,28.525,32.953,29.423000000000002 -2020-08-29 23:15:00,57.9,26.384,32.953,29.423000000000002 -2020-08-29 23:30:00,57.04,26.589000000000002,32.953,29.423000000000002 -2020-08-29 23:45:00,56.91,26.037,32.953,29.423000000000002 -2020-08-30 00:00:00,54.27,22.994,28.584,29.423000000000002 -2020-08-30 00:15:00,55.13,22.281999999999996,28.584,29.423000000000002 -2020-08-30 00:30:00,50.94,21.165,28.584,29.423000000000002 -2020-08-30 00:45:00,53.35,21.011,28.584,29.423000000000002 -2020-08-30 01:00:00,51.34,20.706999999999997,26.419,29.423000000000002 -2020-08-30 01:15:00,52.9,20.012999999999998,26.419,29.423000000000002 -2020-08-30 01:30:00,52.18,18.868,26.419,29.423000000000002 -2020-08-30 01:45:00,51.93,19.159000000000002,26.419,29.423000000000002 -2020-08-30 02:00:00,52.18,19.118,25.335,29.423000000000002 -2020-08-30 02:15:00,51.62,18.54,25.335,29.423000000000002 -2020-08-30 02:30:00,51.01,19.651,25.335,29.423000000000002 -2020-08-30 02:45:00,50.76,20.117,25.335,29.423000000000002 -2020-08-30 03:00:00,51.01,20.8,24.805,29.423000000000002 -2020-08-30 03:15:00,51.32,19.261,24.805,29.423000000000002 -2020-08-30 03:30:00,52.27,18.414,24.805,29.423000000000002 -2020-08-30 03:45:00,53.2,19.423,24.805,29.423000000000002 -2020-08-30 04:00:00,53.28,22.268,25.772,29.423000000000002 -2020-08-30 04:15:00,53.79,25.218000000000004,25.772,29.423000000000002 -2020-08-30 04:30:00,54.34,23.467,25.772,29.423000000000002 -2020-08-30 04:45:00,55.42,22.866,25.772,29.423000000000002 -2020-08-30 05:00:00,56.16,27.819000000000003,25.971999999999998,29.423000000000002 -2020-08-30 05:15:00,56.99,25.605999999999998,25.971999999999998,29.423000000000002 -2020-08-30 05:30:00,56.61,22.284000000000002,25.971999999999998,29.423000000000002 -2020-08-30 05:45:00,57.04,22.694000000000003,25.971999999999998,29.423000000000002 -2020-08-30 06:00:00,58.54,30.746,26.026,29.423000000000002 -2020-08-30 06:15:00,59.88,38.948,26.026,29.423000000000002 -2020-08-30 06:30:00,61.66,35.231,26.026,29.423000000000002 -2020-08-30 06:45:00,63.97,33.71,26.026,29.423000000000002 -2020-08-30 07:00:00,66.86,33.422,27.396,29.423000000000002 -2020-08-30 07:15:00,68.13,32.858000000000004,27.396,29.423000000000002 -2020-08-30 07:30:00,70.07,32.260999999999996,27.396,29.423000000000002 -2020-08-30 07:45:00,71.87,33.628,27.396,29.423000000000002 -2020-08-30 08:00:00,74.54,32.635,30.791999999999998,29.423000000000002 -2020-08-30 08:15:00,76.67,36.064,30.791999999999998,29.423000000000002 -2020-08-30 08:30:00,77.37,37.067,30.791999999999998,29.423000000000002 -2020-08-30 08:45:00,78.29,39.330999999999996,30.791999999999998,29.423000000000002 -2020-08-30 09:00:00,78.71,35.037,32.482,29.423000000000002 -2020-08-30 09:15:00,79.95,35.771,32.482,29.423000000000002 -2020-08-30 09:30:00,80.79,38.611999999999995,32.482,29.423000000000002 -2020-08-30 09:45:00,83.14,41.757,32.482,29.423000000000002 -2020-08-30 10:00:00,84.85,39.117,31.951,29.423000000000002 -2020-08-30 10:15:00,87.31,40.061,31.951,29.423000000000002 -2020-08-30 10:30:00,88.3,40.231,31.951,29.423000000000002 -2020-08-30 10:45:00,87.52,41.902,31.951,29.423000000000002 -2020-08-30 11:00:00,84.25,40.043,33.619,29.423000000000002 -2020-08-30 11:15:00,83.28,40.399,33.619,29.423000000000002 -2020-08-30 11:30:00,81.94,41.626000000000005,33.619,29.423000000000002 -2020-08-30 11:45:00,80.98,42.297,33.619,29.423000000000002 -2020-08-30 12:00:00,78.49,40.249,30.975,29.423000000000002 -2020-08-30 12:15:00,77.41,39.084,30.975,29.423000000000002 -2020-08-30 12:30:00,75.82,38.535,30.975,29.423000000000002 -2020-08-30 12:45:00,78.16,38.595,30.975,29.423000000000002 -2020-08-30 13:00:00,72.08,37.405,27.956999999999997,29.423000000000002 -2020-08-30 13:15:00,72.23,37.171,27.956999999999997,29.423000000000002 -2020-08-30 13:30:00,71.97,35.578,27.956999999999997,29.423000000000002 -2020-08-30 13:45:00,72.4,35.635,27.956999999999997,29.423000000000002 -2020-08-30 14:00:00,70.92,36.957,25.555999999999997,29.423000000000002 -2020-08-30 14:15:00,70.88,35.834,25.555999999999997,29.423000000000002 -2020-08-30 14:30:00,70.54,34.972,25.555999999999997,29.423000000000002 -2020-08-30 14:45:00,70.65,34.519,25.555999999999997,29.423000000000002 -2020-08-30 15:00:00,71.32,35.598,26.271,29.423000000000002 -2020-08-30 15:15:00,71.25,33.243,26.271,29.423000000000002 -2020-08-30 15:30:00,71.19,31.660999999999998,26.271,29.423000000000002 -2020-08-30 15:45:00,71.97,30.158,26.271,29.423000000000002 -2020-08-30 16:00:00,73.4,31.854,30.369,29.423000000000002 -2020-08-30 16:15:00,74.06,31.729,30.369,29.423000000000002 -2020-08-30 16:30:00,75.86,32.481,30.369,29.423000000000002 -2020-08-30 16:45:00,78.3,30.105999999999998,30.369,29.423000000000002 -2020-08-30 17:00:00,79.85,33.259,38.787,29.423000000000002 -2020-08-30 17:15:00,80.1,33.619,38.787,29.423000000000002 -2020-08-30 17:30:00,81.58,33.845,38.787,29.423000000000002 -2020-08-30 17:45:00,80.78,34.421,38.787,29.423000000000002 -2020-08-30 18:00:00,83.14,38.659,41.886,29.423000000000002 -2020-08-30 18:15:00,80.9,38.830999999999996,41.886,29.423000000000002 -2020-08-30 18:30:00,80.98,38.26,41.886,29.423000000000002 -2020-08-30 18:45:00,80.43,38.503,41.886,29.423000000000002 -2020-08-30 19:00:00,86.05,40.954,42.91,29.423000000000002 -2020-08-30 19:15:00,82.33,38.507,42.91,29.423000000000002 -2020-08-30 19:30:00,83.91,37.993,42.91,29.423000000000002 -2020-08-30 19:45:00,80.57,37.784,42.91,29.423000000000002 -2020-08-30 20:00:00,78.83,35.695,42.148999999999994,29.423000000000002 -2020-08-30 20:15:00,79.05,35.516,42.148999999999994,29.423000000000002 -2020-08-30 20:30:00,78.41,34.949,42.148999999999994,29.423000000000002 -2020-08-30 20:45:00,79.19,34.219,42.148999999999994,29.423000000000002 -2020-08-30 21:00:00,77.65,32.483000000000004,40.955999999999996,29.423000000000002 -2020-08-30 21:15:00,78.79,34.856,40.955999999999996,29.423000000000002 -2020-08-30 21:30:00,75.78,34.623000000000005,40.955999999999996,29.423000000000002 -2020-08-30 21:45:00,75.79,34.472,40.955999999999996,29.423000000000002 -2020-08-30 22:00:00,72.02,33.349000000000004,39.873000000000005,29.423000000000002 -2020-08-30 22:15:00,72.93,33.534,39.873000000000005,29.423000000000002 -2020-08-30 22:30:00,71.7,31.603,39.873000000000005,29.423000000000002 -2020-08-30 22:45:00,70.88,28.467,39.873000000000005,29.423000000000002 -2020-08-30 23:00:00,66.13,27.553,35.510999999999996,29.423000000000002 -2020-08-30 23:15:00,67.65,26.502,35.510999999999996,29.423000000000002 -2020-08-30 23:30:00,68.19,26.213,35.510999999999996,29.423000000000002 -2020-08-30 23:45:00,66.64,25.791,35.510999999999996,29.423000000000002 -2020-08-31 00:00:00,63.09,24.439,33.475,29.535 -2020-08-31 00:15:00,65.41,24.381,33.475,29.535 -2020-08-31 00:30:00,65.2,22.921,33.475,29.535 -2020-08-31 00:45:00,65.56,22.427,33.475,29.535 -2020-08-31 01:00:00,62.92,22.448,33.111,29.535 -2020-08-31 01:15:00,64.41,21.793000000000003,33.111,29.535 -2020-08-31 01:30:00,64.04,20.988000000000003,33.111,29.535 -2020-08-31 01:45:00,65.01,21.19,33.111,29.535 -2020-08-31 02:00:00,62.9,21.559,32.358000000000004,29.535 -2020-08-31 02:15:00,64.34,20.055999999999997,32.358000000000004,29.535 -2020-08-31 02:30:00,64.2,21.287,32.358000000000004,29.535 -2020-08-31 02:45:00,64.04,21.629,32.358000000000004,29.535 -2020-08-31 03:00:00,65.64,22.729,30.779,29.535 -2020-08-31 03:15:00,66.35,21.822,30.779,29.535 -2020-08-31 03:30:00,72.4,21.601999999999997,30.779,29.535 -2020-08-31 03:45:00,75.77,22.195,30.779,29.535 -2020-08-31 04:00:00,80.59,27.787,31.416,29.535 -2020-08-31 04:15:00,79.36,33.317,31.416,29.535 -2020-08-31 04:30:00,88.89,31.094,31.416,29.535 -2020-08-31 04:45:00,94.27,30.829,31.416,29.535 -2020-08-31 05:00:00,100.31,42.129,37.221,29.535 -2020-08-31 05:15:00,101.92,48.968,37.221,29.535 -2020-08-31 05:30:00,101.22,44.25,37.221,29.535 -2020-08-31 05:45:00,104.81,41.94,37.221,29.535 -2020-08-31 06:00:00,108.02,40.968,51.891000000000005,29.535 -2020-08-31 06:15:00,111.44,41.255,51.891000000000005,29.535 -2020-08-31 06:30:00,112.93,40.977,51.891000000000005,29.535 -2020-08-31 06:45:00,115.62,44.062,51.891000000000005,29.535 -2020-08-31 07:00:00,119.0,43.956,62.282,29.535 -2020-08-31 07:15:00,119.27,45.438,62.282,29.535 -2020-08-31 07:30:00,120.08,44.106,62.282,29.535 -2020-08-31 07:45:00,119.77,45.791000000000004,62.282,29.535 -2020-08-31 08:00:00,121.76,42.894,54.102,29.535 -2020-08-31 08:15:00,123.35,45.245,54.102,29.535 -2020-08-31 08:30:00,124.12,45.458999999999996,54.102,29.535 -2020-08-31 08:45:00,125.71,47.97,54.102,29.535 -2020-08-31 09:00:00,129.33,42.748999999999995,50.917,29.535 -2020-08-31 09:15:00,126.56,41.933,50.917,29.535 -2020-08-31 09:30:00,126.46,43.938,50.917,29.535 -2020-08-31 09:45:00,127.36,44.971000000000004,50.917,29.535 -2020-08-31 10:00:00,128.24,42.68899999999999,49.718999999999994,29.535 -2020-08-31 10:15:00,131.55,43.481,49.718999999999994,29.535 -2020-08-31 10:30:00,130.34,43.248000000000005,49.718999999999994,29.535 -2020-08-31 10:45:00,123.89,43.443000000000005,49.718999999999994,29.535 -2020-08-31 11:00:00,124.43,41.855,49.833999999999996,29.535 -2020-08-31 11:15:00,124.83,42.403,49.833999999999996,29.535 -2020-08-31 11:30:00,129.95,44.224,49.833999999999996,29.535 -2020-08-31 11:45:00,125.36,45.352,49.833999999999996,29.535 -2020-08-31 12:00:00,121.07,41.592,47.832,29.535 -2020-08-31 12:15:00,122.98,40.518,47.832,29.535 -2020-08-31 12:30:00,117.12,38.993,47.832,29.535 -2020-08-31 12:45:00,116.46,38.983000000000004,47.832,29.535 -2020-08-31 13:00:00,120.35,38.641,48.03,29.535 -2020-08-31 13:15:00,120.22,37.631,48.03,29.535 -2020-08-31 13:30:00,118.44,36.205,48.03,29.535 -2020-08-31 13:45:00,111.87,37.094,48.03,29.535 -2020-08-31 14:00:00,111.57,37.562,48.157,29.535 -2020-08-31 14:15:00,114.04,37.012,48.157,29.535 -2020-08-31 14:30:00,113.71,36.038000000000004,48.157,29.535 -2020-08-31 14:45:00,116.13,37.49,48.157,29.535 -2020-08-31 15:00:00,113.44,38.115,48.897,29.535 -2020-08-31 15:15:00,111.84,35.278,48.897,29.535 -2020-08-31 15:30:00,110.24,34.448,48.897,29.535 -2020-08-31 15:45:00,108.51,32.522,48.897,29.535 -2020-08-31 16:00:00,104.99,35.231,51.446000000000005,29.535 -2020-08-31 16:15:00,104.55,35.198,51.446000000000005,29.535 -2020-08-31 16:30:00,108.33,35.369,51.446000000000005,29.535 -2020-08-31 16:45:00,108.42,33.097,51.446000000000005,29.535 -2020-08-31 17:00:00,109.57,35.18,57.507,29.535 -2020-08-31 17:15:00,108.31,35.944,57.507,29.535 -2020-08-31 17:30:00,111.74,35.846,57.507,29.535 -2020-08-31 17:45:00,110.77,36.141999999999996,57.507,29.535 -2020-08-31 18:00:00,113.05,39.413000000000004,57.896,29.535 -2020-08-31 18:15:00,109.66,37.992,57.896,29.535 -2020-08-31 18:30:00,110.56,36.729,57.896,29.535 -2020-08-31 18:45:00,108.24,39.83,57.896,29.535 -2020-08-31 19:00:00,109.87,42.091,57.891999999999996,29.535 -2020-08-31 19:15:00,105.78,40.868,57.891999999999996,29.535 -2020-08-31 19:30:00,103.3,40.012,57.891999999999996,29.535 -2020-08-31 19:45:00,105.3,39.27,57.891999999999996,29.535 -2020-08-31 20:00:00,98.65,36.086999999999996,64.57300000000001,29.535 -2020-08-31 20:15:00,99.73,37.242,64.57300000000001,29.535 -2020-08-31 20:30:00,98.19,37.177,64.57300000000001,29.535 -2020-08-31 20:45:00,98.28,36.565,64.57300000000001,29.535 -2020-08-31 21:00:00,93.39,34.244,59.431999999999995,29.535 -2020-08-31 21:15:00,93.97,37.034,59.431999999999995,29.535 -2020-08-31 21:30:00,89.46,37.196999999999996,59.431999999999995,29.535 -2020-08-31 21:45:00,86.99,36.826,59.431999999999995,29.535 -2020-08-31 22:00:00,86.09,33.882,51.519,29.535 -2020-08-31 22:15:00,89.99,35.885999999999996,51.519,29.535 -2020-08-31 22:30:00,88.27,30.206,51.519,29.535 -2020-08-31 22:45:00,83.31,27.164,51.519,29.535 -2020-08-31 23:00:00,75.5,26.299,44.501000000000005,29.535 -2020-08-31 23:15:00,75.51,23.673000000000002,44.501000000000005,29.535 -2020-08-31 23:30:00,75.27,23.296999999999997,44.501000000000005,29.535 -2020-08-31 23:45:00,75.09,22.335,44.501000000000005,29.535 -2020-09-01 00:00:00,73.47,29.916999999999998,44.438,29.93 -2020-09-01 00:15:00,81.26,30.489,44.438,29.93 -2020-09-01 00:30:00,72.65,30.061,44.438,29.93 -2020-09-01 00:45:00,74.24,30.002,44.438,29.93 -2020-09-01 01:00:00,75.98,29.759,41.468999999999994,29.93 -2020-09-01 01:15:00,79.49,28.94,41.468999999999994,29.93 -2020-09-01 01:30:00,80.77,27.840999999999998,41.468999999999994,29.93 -2020-09-01 01:45:00,80.77,26.919,41.468999999999994,29.93 -2020-09-01 02:00:00,76.57,26.625,39.708,29.93 -2020-09-01 02:15:00,74.41,26.226,39.708,29.93 -2020-09-01 02:30:00,73.57,26.895,39.708,29.93 -2020-09-01 02:45:00,75.06,27.743000000000002,39.708,29.93 -2020-09-01 03:00:00,75.97,28.845,38.919000000000004,29.93 -2020-09-01 03:15:00,76.67,28.206,38.919000000000004,29.93 -2020-09-01 03:30:00,77.0,28.11,38.919000000000004,29.93 -2020-09-01 03:45:00,80.42,28.19,38.919000000000004,29.93 -2020-09-01 04:00:00,83.6,34.74,40.092,29.93 -2020-09-01 04:15:00,85.52,41.981,40.092,29.93 -2020-09-01 04:30:00,93.85,39.315,40.092,29.93 -2020-09-01 04:45:00,102.83,39.861999999999995,40.092,29.93 -2020-09-01 05:00:00,110.21,57.162,43.713,29.93 -2020-09-01 05:15:00,108.06,68.223,43.713,29.93 -2020-09-01 05:30:00,106.25,62.226000000000006,43.713,29.93 -2020-09-01 05:45:00,108.65,58.465,43.713,29.93 -2020-09-01 06:00:00,117.46,58.838,56.033,29.93 -2020-09-01 06:15:00,114.57,60.111000000000004,56.033,29.93 -2020-09-01 06:30:00,114.76,58.723,56.033,29.93 -2020-09-01 06:45:00,117.5,60.365,56.033,29.93 -2020-09-01 07:00:00,120.97,58.69,66.003,29.93 -2020-09-01 07:15:00,121.58,59.825,66.003,29.93 -2020-09-01 07:30:00,122.12,58.056000000000004,66.003,29.93 -2020-09-01 07:45:00,122.42,58.925,66.003,29.93 -2020-09-01 08:00:00,123.81,57.608999999999995,57.474,29.93 -2020-09-01 08:15:00,119.75,59.684,57.474,29.93 -2020-09-01 08:30:00,121.34,58.928999999999995,57.474,29.93 -2020-09-01 08:45:00,119.7,60.385,57.474,29.93 -2020-09-01 09:00:00,119.63,56.747,51.928000000000004,29.93 -2020-09-01 09:15:00,114.95,55.32899999999999,51.928000000000004,29.93 -2020-09-01 09:30:00,111.22,57.449,51.928000000000004,29.93 -2020-09-01 09:45:00,112.13,59.055,51.928000000000004,29.93 -2020-09-01 10:00:00,110.13,55.532,49.46,29.93 -2020-09-01 10:15:00,111.52,56.278999999999996,49.46,29.93 -2020-09-01 10:30:00,112.58,56.043,49.46,29.93 -2020-09-01 10:45:00,113.39,57.13399999999999,49.46,29.93 -2020-09-01 11:00:00,106.2,53.576,48.206,29.93 -2020-09-01 11:15:00,104.73,54.661,48.206,29.93 -2020-09-01 11:30:00,106.63,55.326,48.206,29.93 -2020-09-01 11:45:00,108.22,56.138000000000005,48.206,29.93 -2020-09-01 12:00:00,105.4,52.413999999999994,46.285,29.93 -2020-09-01 12:15:00,110.05,52.071000000000005,46.285,29.93 -2020-09-01 12:30:00,108.08,51.176,46.285,29.93 -2020-09-01 12:45:00,105.77,52.277,46.285,29.93 -2020-09-01 13:00:00,110.03,51.369,46.861999999999995,29.93 -2020-09-01 13:15:00,106.07,51.993,46.861999999999995,29.93 -2020-09-01 13:30:00,107.01,50.818000000000005,46.861999999999995,29.93 -2020-09-01 13:45:00,108.05,49.903999999999996,46.861999999999995,29.93 -2020-09-01 14:00:00,104.78,51.108000000000004,46.488,29.93 -2020-09-01 14:15:00,107.92,50.152,46.488,29.93 -2020-09-01 14:30:00,103.2,48.902,46.488,29.93 -2020-09-01 14:45:00,103.58,49.669,46.488,29.93 -2020-09-01 15:00:00,101.89,50.393,48.442,29.93 -2020-09-01 15:15:00,103.13,48.303000000000004,48.442,29.93 -2020-09-01 15:30:00,103.38,47.102,48.442,29.93 -2020-09-01 15:45:00,102.77,44.833999999999996,48.442,29.93 -2020-09-01 16:00:00,102.66,47.282,50.397,29.93 -2020-09-01 16:15:00,105.53,47.086000000000006,50.397,29.93 -2020-09-01 16:30:00,106.51,47.457,50.397,29.93 -2020-09-01 16:45:00,108.89,45.013999999999996,50.397,29.93 -2020-09-01 17:00:00,109.84,46.915,56.668,29.93 -2020-09-01 17:15:00,109.18,47.858000000000004,56.668,29.93 -2020-09-01 17:30:00,109.98,47.298,56.668,29.93 -2020-09-01 17:45:00,112.11,46.278999999999996,56.668,29.93 -2020-09-01 18:00:00,113.7,48.562,57.957,29.93 -2020-09-01 18:15:00,109.54,48.016999999999996,57.957,29.93 -2020-09-01 18:30:00,111.45,46.04,57.957,29.93 -2020-09-01 18:45:00,109.99,50.2,57.957,29.93 -2020-09-01 19:00:00,111.38,52.652,57.056000000000004,29.93 -2020-09-01 19:15:00,107.84,51.383,57.056000000000004,29.93 -2020-09-01 19:30:00,107.01,50.34,57.056000000000004,29.93 -2020-09-01 19:45:00,106.18,50.461999999999996,57.056000000000004,29.93 -2020-09-01 20:00:00,100.69,48.705,64.156,29.93 -2020-09-01 20:15:00,100.76,48.184,64.156,29.93 -2020-09-01 20:30:00,98.36,47.782,64.156,29.93 -2020-09-01 20:45:00,97.15,47.833,64.156,29.93 -2020-09-01 21:00:00,91.14,46.413000000000004,56.507,29.93 -2020-09-01 21:15:00,91.05,48.013000000000005,56.507,29.93 -2020-09-01 21:30:00,87.36,47.721000000000004,56.507,29.93 -2020-09-01 21:45:00,85.97,47.453,56.507,29.93 -2020-09-01 22:00:00,81.23,45.082,50.728,29.93 -2020-09-01 22:15:00,80.37,45.82899999999999,50.728,29.93 -2020-09-01 22:30:00,79.33,38.537,50.728,29.93 -2020-09-01 22:45:00,78.66,35.022,50.728,29.93 -2020-09-01 23:00:00,74.04,31.743000000000002,43.556999999999995,29.93 -2020-09-01 23:15:00,74.63,31.009,43.556999999999995,29.93 -2020-09-01 23:30:00,74.95,30.879,43.556999999999995,29.93 -2020-09-01 23:45:00,73.76,30.048000000000002,43.556999999999995,29.93 -2020-09-02 00:00:00,70.09,30.121,41.151,29.93 -2020-09-02 00:15:00,71.22,30.691,41.151,29.93 -2020-09-02 00:30:00,70.52,30.272,41.151,29.93 -2020-09-02 00:45:00,70.04,30.22,41.151,29.93 -2020-09-02 01:00:00,70.4,29.961,37.763000000000005,29.93 -2020-09-02 01:15:00,71.55,29.159000000000002,37.763000000000005,29.93 -2020-09-02 01:30:00,70.54,28.076999999999998,37.763000000000005,29.93 -2020-09-02 01:45:00,71.31,27.156,37.763000000000005,29.93 -2020-09-02 02:00:00,70.05,26.865,35.615,29.93 -2020-09-02 02:15:00,70.33,26.489,35.615,29.93 -2020-09-02 02:30:00,70.42,27.131999999999998,35.615,29.93 -2020-09-02 02:45:00,71.01,27.975,35.615,29.93 -2020-09-02 03:00:00,71.66,29.066,35.153,29.93 -2020-09-02 03:15:00,73.29,28.445,35.153,29.93 -2020-09-02 03:30:00,74.2,28.353,35.153,29.93 -2020-09-02 03:45:00,76.12,28.423000000000002,35.153,29.93 -2020-09-02 04:00:00,79.71,35.003,36.203,29.93 -2020-09-02 04:15:00,83.25,42.268,36.203,29.93 -2020-09-02 04:30:00,93.94,39.609,36.203,29.93 -2020-09-02 04:45:00,98.95,40.161,36.203,29.93 -2020-09-02 05:00:00,102.22,57.54600000000001,39.922,29.93 -2020-09-02 05:15:00,99.73,68.696,39.922,29.93 -2020-09-02 05:30:00,104.42,62.69,39.922,29.93 -2020-09-02 05:45:00,106.12,58.883,39.922,29.93 -2020-09-02 06:00:00,110.69,59.221000000000004,56.443999999999996,29.93 -2020-09-02 06:15:00,110.55,60.515,56.443999999999996,29.93 -2020-09-02 06:30:00,112.02,59.126999999999995,56.443999999999996,29.93 -2020-09-02 06:45:00,111.67,60.766000000000005,56.443999999999996,29.93 -2020-09-02 07:00:00,114.69,59.091,68.683,29.93 -2020-09-02 07:15:00,114.16,60.243,68.683,29.93 -2020-09-02 07:30:00,112.53,58.504,68.683,29.93 -2020-09-02 07:45:00,112.99,59.375,68.683,29.93 -2020-09-02 08:00:00,112.66,58.06399999999999,59.003,29.93 -2020-09-02 08:15:00,112.55,60.106,59.003,29.93 -2020-09-02 08:30:00,111.76,59.354,59.003,29.93 -2020-09-02 08:45:00,108.42,60.795,59.003,29.93 -2020-09-02 09:00:00,107.65,57.165,56.21,29.93 -2020-09-02 09:15:00,106.69,55.736000000000004,56.21,29.93 -2020-09-02 09:30:00,106.79,57.836000000000006,56.21,29.93 -2020-09-02 09:45:00,106.64,59.413999999999994,56.21,29.93 -2020-09-02 10:00:00,106.81,55.888999999999996,52.358999999999995,29.93 -2020-09-02 10:15:00,107.49,56.603,52.358999999999995,29.93 -2020-09-02 10:30:00,104.67,56.357,52.358999999999995,29.93 -2020-09-02 10:45:00,104.68,57.435,52.358999999999995,29.93 -2020-09-02 11:00:00,102.67,53.89,51.161,29.93 -2020-09-02 11:15:00,101.54,54.961000000000006,51.161,29.93 -2020-09-02 11:30:00,105.83,55.623999999999995,51.161,29.93 -2020-09-02 11:45:00,103.98,56.419,51.161,29.93 -2020-09-02 12:00:00,99.78,52.676,49.119,29.93 -2020-09-02 12:15:00,101.12,52.318999999999996,49.119,29.93 -2020-09-02 12:30:00,101.87,51.45,49.119,29.93 -2020-09-02 12:45:00,104.35,52.54,49.119,29.93 -2020-09-02 13:00:00,100.22,51.608000000000004,49.187,29.93 -2020-09-02 13:15:00,101.85,52.223,49.187,29.93 -2020-09-02 13:30:00,99.0,51.04600000000001,49.187,29.93 -2020-09-02 13:45:00,102.96,50.141999999999996,49.187,29.93 -2020-09-02 14:00:00,102.01,51.306999999999995,49.787,29.93 -2020-09-02 14:15:00,102.18,50.363,49.787,29.93 -2020-09-02 14:30:00,100.6,49.137,49.787,29.93 -2020-09-02 14:45:00,103.38,49.903,49.787,29.93 -2020-09-02 15:00:00,106.74,50.576,51.458999999999996,29.93 -2020-09-02 15:15:00,101.18,48.5,51.458999999999996,29.93 -2020-09-02 15:30:00,102.11,47.323,51.458999999999996,29.93 -2020-09-02 15:45:00,100.59,45.065,51.458999999999996,29.93 -2020-09-02 16:00:00,102.98,47.48,53.663000000000004,29.93 -2020-09-02 16:15:00,103.91,47.295,53.663000000000004,29.93 -2020-09-02 16:30:00,108.38,47.666000000000004,53.663000000000004,29.93 -2020-09-02 16:45:00,107.21,45.275,53.663000000000004,29.93 -2020-09-02 17:00:00,108.81,47.14,58.183,29.93 -2020-09-02 17:15:00,109.2,48.111000000000004,58.183,29.93 -2020-09-02 17:30:00,109.84,47.558,58.183,29.93 -2020-09-02 17:45:00,111.27,46.574,58.183,29.93 -2020-09-02 18:00:00,113.28,48.843,60.141000000000005,29.93 -2020-09-02 18:15:00,110.36,48.303999999999995,60.141000000000005,29.93 -2020-09-02 18:30:00,108.48,46.339,60.141000000000005,29.93 -2020-09-02 18:45:00,112.25,50.495,60.141000000000005,29.93 -2020-09-02 19:00:00,116.4,52.958999999999996,60.582,29.93 -2020-09-02 19:15:00,114.79,51.688,60.582,29.93 -2020-09-02 19:30:00,113.75,50.644,60.582,29.93 -2020-09-02 19:45:00,114.25,50.766000000000005,60.582,29.93 -2020-09-02 20:00:00,110.94,49.023,66.61,29.93 -2020-09-02 20:15:00,106.94,48.503,66.61,29.93 -2020-09-02 20:30:00,102.41,48.07899999999999,66.61,29.93 -2020-09-02 20:45:00,98.12,48.092,66.61,29.93 -2020-09-02 21:00:00,91.53,46.675,57.658,29.93 -2020-09-02 21:15:00,91.25,48.266000000000005,57.658,29.93 -2020-09-02 21:30:00,86.71,47.976000000000006,57.658,29.93 -2020-09-02 21:45:00,86.21,47.672,57.658,29.93 -2020-09-02 22:00:00,80.75,45.28,51.81,29.93 -2020-09-02 22:15:00,81.19,46.005,51.81,29.93 -2020-09-02 22:30:00,80.24,38.691,51.81,29.93 -2020-09-02 22:45:00,83.69,35.178000000000004,51.81,29.93 -2020-09-02 23:00:00,82.31,31.945,42.93600000000001,29.93 -2020-09-02 23:15:00,84.53,31.188000000000002,42.93600000000001,29.93 -2020-09-02 23:30:00,80.72,31.066,42.93600000000001,29.93 -2020-09-02 23:45:00,74.93,30.238000000000003,42.93600000000001,29.93 -2020-09-03 00:00:00,78.78,30.328000000000003,39.211,29.93 -2020-09-03 00:15:00,80.39,30.897,39.211,29.93 -2020-09-03 00:30:00,80.32,30.485,39.211,29.93 -2020-09-03 00:45:00,73.95,30.44,39.211,29.93 -2020-09-03 01:00:00,73.78,30.165,37.607,29.93 -2020-09-03 01:15:00,79.05,29.381,37.607,29.93 -2020-09-03 01:30:00,79.16,28.316,37.607,29.93 -2020-09-03 01:45:00,76.51,27.395,37.607,29.93 -2020-09-03 02:00:00,74.11,27.108,36.44,29.93 -2020-09-03 02:15:00,80.14,26.754,36.44,29.93 -2020-09-03 02:30:00,79.59,27.372,36.44,29.93 -2020-09-03 02:45:00,78.57,28.211,36.44,29.93 -2020-09-03 03:00:00,73.82,29.289,36.116,29.93 -2020-09-03 03:15:00,72.93,28.685,36.116,29.93 -2020-09-03 03:30:00,74.34,28.599,36.116,29.93 -2020-09-03 03:45:00,77.3,28.656999999999996,36.116,29.93 -2020-09-03 04:00:00,81.78,35.27,37.398,29.93 -2020-09-03 04:15:00,82.8,42.558,37.398,29.93 -2020-09-03 04:30:00,91.14,39.907,37.398,29.93 -2020-09-03 04:45:00,98.67,40.465,37.398,29.93 -2020-09-03 05:00:00,108.57,57.937,41.776,29.93 -2020-09-03 05:15:00,103.7,69.179,41.776,29.93 -2020-09-03 05:30:00,104.33,63.162,41.776,29.93 -2020-09-03 05:45:00,105.67,59.306999999999995,41.776,29.93 -2020-09-03 06:00:00,110.59,59.608999999999995,55.61,29.93 -2020-09-03 06:15:00,111.02,60.928000000000004,55.61,29.93 -2020-09-03 06:30:00,112.63,59.537,55.61,29.93 -2020-09-03 06:45:00,113.01,61.175,55.61,29.93 -2020-09-03 07:00:00,115.07,59.497,67.13600000000001,29.93 -2020-09-03 07:15:00,114.55,60.665,67.13600000000001,29.93 -2020-09-03 07:30:00,112.42,58.958,67.13600000000001,29.93 -2020-09-03 07:45:00,112.27,59.832,67.13600000000001,29.93 -2020-09-03 08:00:00,109.14,58.523999999999994,57.55,29.93 -2020-09-03 08:15:00,107.8,60.532,57.55,29.93 -2020-09-03 08:30:00,111.96,59.786,57.55,29.93 -2020-09-03 08:45:00,108.99,61.208,57.55,29.93 -2020-09-03 09:00:00,108.66,57.586000000000006,52.931999999999995,29.93 -2020-09-03 09:15:00,108.25,56.148999999999994,52.931999999999995,29.93 -2020-09-03 09:30:00,107.97,58.228,52.931999999999995,29.93 -2020-09-03 09:45:00,106.96,59.778,52.931999999999995,29.93 -2020-09-03 10:00:00,107.82,56.248999999999995,50.36600000000001,29.93 -2020-09-03 10:15:00,109.16,56.93,50.36600000000001,29.93 -2020-09-03 10:30:00,108.59,56.674,50.36600000000001,29.93 -2020-09-03 10:45:00,107.7,57.74,50.36600000000001,29.93 -2020-09-03 11:00:00,107.03,54.208,47.893,29.93 -2020-09-03 11:15:00,107.11,55.266000000000005,47.893,29.93 -2020-09-03 11:30:00,109.86,55.926,47.893,29.93 -2020-09-03 11:45:00,106.11,56.703,47.893,29.93 -2020-09-03 12:00:00,104.22,52.94,45.271,29.93 -2020-09-03 12:15:00,106.28,52.57,45.271,29.93 -2020-09-03 12:30:00,105.6,51.727,45.271,29.93 -2020-09-03 12:45:00,104.71,52.805,45.271,29.93 -2020-09-03 13:00:00,106.15,51.85,44.351000000000006,29.93 -2020-09-03 13:15:00,107.6,52.457,44.351000000000006,29.93 -2020-09-03 13:30:00,113.46,51.277,44.351000000000006,29.93 -2020-09-03 13:45:00,112.08,50.383,44.351000000000006,29.93 -2020-09-03 14:00:00,113.14,51.511,44.99,29.93 -2020-09-03 14:15:00,108.1,50.577,44.99,29.93 -2020-09-03 14:30:00,104.21,49.376000000000005,44.99,29.93 -2020-09-03 14:45:00,103.23,50.141000000000005,44.99,29.93 -2020-09-03 15:00:00,107.19,50.763000000000005,46.869,29.93 -2020-09-03 15:15:00,106.83,48.701,46.869,29.93 -2020-09-03 15:30:00,105.79,47.54600000000001,46.869,29.93 -2020-09-03 15:45:00,104.72,45.301,46.869,29.93 -2020-09-03 16:00:00,105.33,47.681000000000004,48.902,29.93 -2020-09-03 16:15:00,105.72,47.508,48.902,29.93 -2020-09-03 16:30:00,107.33,47.879,48.902,29.93 -2020-09-03 16:45:00,110.5,45.538999999999994,48.902,29.93 -2020-09-03 17:00:00,112.54,47.36600000000001,53.244,29.93 -2020-09-03 17:15:00,111.29,48.365,53.244,29.93 -2020-09-03 17:30:00,110.8,47.821999999999996,53.244,29.93 -2020-09-03 17:45:00,111.93,46.872,53.244,29.93 -2020-09-03 18:00:00,112.15,49.126999999999995,54.343999999999994,29.93 -2020-09-03 18:15:00,110.62,48.596000000000004,54.343999999999994,29.93 -2020-09-03 18:30:00,112.94,46.643,54.343999999999994,29.93 -2020-09-03 18:45:00,111.47,50.794,54.343999999999994,29.93 -2020-09-03 19:00:00,112.83,53.269,54.332,29.93 -2020-09-03 19:15:00,109.18,51.998000000000005,54.332,29.93 -2020-09-03 19:30:00,109.17,50.953,54.332,29.93 -2020-09-03 19:45:00,112.48,51.073,54.332,29.93 -2020-09-03 20:00:00,107.89,49.346000000000004,58.06,29.93 -2020-09-03 20:15:00,107.07,48.826,58.06,29.93 -2020-09-03 20:30:00,101.06,48.38,58.06,29.93 -2020-09-03 20:45:00,99.03,48.354,58.06,29.93 -2020-09-03 21:00:00,91.24,46.941,52.411,29.93 -2020-09-03 21:15:00,98.02,48.522,52.411,29.93 -2020-09-03 21:30:00,96.57,48.235,52.411,29.93 -2020-09-03 21:45:00,96.41,47.895,52.411,29.93 -2020-09-03 22:00:00,88.52,45.481,47.148999999999994,29.93 -2020-09-03 22:15:00,84.04,46.18600000000001,47.148999999999994,29.93 -2020-09-03 22:30:00,85.59,38.847,47.148999999999994,29.93 -2020-09-03 22:45:00,88.8,35.336999999999996,47.148999999999994,29.93 -2020-09-03 23:00:00,84.03,32.149,40.814,29.93 -2020-09-03 23:15:00,81.23,31.37,40.814,29.93 -2020-09-03 23:30:00,78.97,31.255,40.814,29.93 -2020-09-03 23:45:00,84.43,30.430999999999997,40.814,29.93 -2020-09-04 00:00:00,79.88,28.809,39.153,29.93 -2020-09-04 00:15:00,81.93,29.595,39.153,29.93 -2020-09-04 00:30:00,76.83,29.414,39.153,29.93 -2020-09-04 00:45:00,81.19,29.766,39.153,29.93 -2020-09-04 01:00:00,78.59,29.094,37.228,29.93 -2020-09-04 01:15:00,75.78,27.914,37.228,29.93 -2020-09-04 01:30:00,74.53,27.471,37.228,29.93 -2020-09-04 01:45:00,76.53,26.340999999999998,37.228,29.93 -2020-09-04 02:00:00,79.34,26.897,35.851,29.93 -2020-09-04 02:15:00,80.68,26.505,35.851,29.93 -2020-09-04 02:30:00,79.68,27.898000000000003,35.851,29.93 -2020-09-04 02:45:00,72.95,28.131,35.851,29.93 -2020-09-04 03:00:00,71.7,29.756,36.54,29.93 -2020-09-04 03:15:00,72.28,28.221,36.54,29.93 -2020-09-04 03:30:00,76.49,27.927,36.54,29.93 -2020-09-04 03:45:00,83.91,28.791999999999998,36.54,29.93 -2020-09-04 04:00:00,87.81,35.59,37.578,29.93 -2020-09-04 04:15:00,87.55,41.49100000000001,37.578,29.93 -2020-09-04 04:30:00,92.55,39.719,37.578,29.93 -2020-09-04 04:45:00,98.47,39.561,37.578,29.93 -2020-09-04 05:00:00,103.34,56.532,40.387,29.93 -2020-09-04 05:15:00,107.52,68.905,40.387,29.93 -2020-09-04 05:30:00,105.74,63.184,40.387,29.93 -2020-09-04 05:45:00,109.74,58.878,40.387,29.93 -2020-09-04 06:00:00,115.98,59.403999999999996,54.668,29.93 -2020-09-04 06:15:00,115.47,60.705,54.668,29.93 -2020-09-04 06:30:00,117.38,59.156000000000006,54.668,29.93 -2020-09-04 06:45:00,119.84,60.883,54.668,29.93 -2020-09-04 07:00:00,121.76,59.673,63.971000000000004,29.93 -2020-09-04 07:15:00,124.37,61.793,63.971000000000004,29.93 -2020-09-04 07:30:00,124.71,58.375,63.971000000000004,29.93 -2020-09-04 07:45:00,124.2,58.946000000000005,63.971000000000004,29.93 -2020-09-04 08:00:00,125.37,58.18,56.042,29.93 -2020-09-04 08:15:00,124.6,60.688,56.042,29.93 -2020-09-04 08:30:00,128.49,59.994,56.042,29.93 -2020-09-04 08:45:00,128.74,61.058,56.042,29.93 -2020-09-04 09:00:00,130.79,55.483000000000004,52.832,29.93 -2020-09-04 09:15:00,128.22,55.792,52.832,29.93 -2020-09-04 09:30:00,125.85,57.18899999999999,52.832,29.93 -2020-09-04 09:45:00,122.8,59.033,52.832,29.93 -2020-09-04 10:00:00,123.79,55.185,50.044,29.93 -2020-09-04 10:15:00,126.55,55.742,50.044,29.93 -2020-09-04 10:30:00,128.28,55.945,50.044,29.93 -2020-09-04 10:45:00,124.38,56.851000000000006,50.044,29.93 -2020-09-04 11:00:00,124.72,53.549,49.06100000000001,29.93 -2020-09-04 11:15:00,126.1,53.519,49.06100000000001,29.93 -2020-09-04 11:30:00,129.93,54.115,49.06100000000001,29.93 -2020-09-04 11:45:00,120.43,54.05,49.06100000000001,29.93 -2020-09-04 12:00:00,116.34,50.803999999999995,45.595,29.93 -2020-09-04 12:15:00,122.71,49.553999999999995,45.595,29.93 -2020-09-04 12:30:00,109.57,48.861999999999995,45.595,29.93 -2020-09-04 12:45:00,103.66,49.325,45.595,29.93 -2020-09-04 13:00:00,100.92,48.995,43.218,29.93 -2020-09-04 13:15:00,101.16,49.873000000000005,43.218,29.93 -2020-09-04 13:30:00,100.93,49.382,43.218,29.93 -2020-09-04 13:45:00,100.61,48.751999999999995,43.218,29.93 -2020-09-04 14:00:00,99.88,48.977,41.926,29.93 -2020-09-04 14:15:00,100.39,48.406000000000006,41.926,29.93 -2020-09-04 14:30:00,103.67,48.613,41.926,29.93 -2020-09-04 14:45:00,105.03,48.823,41.926,29.93 -2020-09-04 15:00:00,106.17,49.254,43.79,29.93 -2020-09-04 15:15:00,101.95,46.93600000000001,43.79,29.93 -2020-09-04 15:30:00,95.93,45.091,43.79,29.93 -2020-09-04 15:45:00,97.23,43.538999999999994,43.79,29.93 -2020-09-04 16:00:00,99.92,44.988,45.895,29.93 -2020-09-04 16:15:00,100.88,45.3,45.895,29.93 -2020-09-04 16:30:00,104.55,45.525,45.895,29.93 -2020-09-04 16:45:00,106.79,42.534,45.895,29.93 -2020-09-04 17:00:00,106.67,45.867,51.36,29.93 -2020-09-04 17:15:00,105.13,46.685,51.36,29.93 -2020-09-04 17:30:00,106.1,46.251999999999995,51.36,29.93 -2020-09-04 17:45:00,108.53,45.159,51.36,29.93 -2020-09-04 18:00:00,108.52,47.55,52.985,29.93 -2020-09-04 18:15:00,105.88,46.141999999999996,52.985,29.93 -2020-09-04 18:30:00,108.88,44.162,52.985,29.93 -2020-09-04 18:45:00,110.64,48.68,52.985,29.93 -2020-09-04 19:00:00,111.33,52.07,52.602,29.93 -2020-09-04 19:15:00,112.44,51.495,52.602,29.93 -2020-09-04 19:30:00,112.3,50.453,52.602,29.93 -2020-09-04 19:45:00,106.77,49.611999999999995,52.602,29.93 -2020-09-04 20:00:00,98.61,47.763000000000005,58.063,29.93 -2020-09-04 20:15:00,99.3,47.946999999999996,58.063,29.93 -2020-09-04 20:30:00,95.69,47.044,58.063,29.93 -2020-09-04 20:45:00,93.25,46.33,58.063,29.93 -2020-09-04 21:00:00,88.17,46.15,50.135,29.93 -2020-09-04 21:15:00,88.23,49.258,50.135,29.93 -2020-09-04 21:30:00,85.09,48.846000000000004,50.135,29.93 -2020-09-04 21:45:00,85.78,48.718999999999994,50.135,29.93 -2020-09-04 22:00:00,82.3,46.283,45.165,29.93 -2020-09-04 22:15:00,81.47,46.729,45.165,29.93 -2020-09-04 22:30:00,77.2,44.387,45.165,29.93 -2020-09-04 22:45:00,79.3,42.086000000000006,45.165,29.93 -2020-09-04 23:00:00,74.88,40.385,39.121,29.93 -2020-09-04 23:15:00,70.48,37.946999999999996,39.121,29.93 -2020-09-04 23:30:00,72.77,36.041,39.121,29.93 -2020-09-04 23:45:00,73.16,35.028,39.121,29.93 -2020-09-05 00:00:00,69.6,29.750999999999998,38.49,29.816 -2020-09-05 00:15:00,65.9,29.398000000000003,38.49,29.816 -2020-09-05 00:30:00,61.59,28.978,38.49,29.816 -2020-09-05 00:45:00,64.02,28.78,38.49,29.816 -2020-09-05 01:00:00,62.98,28.416999999999998,34.5,29.816 -2020-09-05 01:15:00,69.08,27.651,34.5,29.816 -2020-09-05 01:30:00,69.9,26.445999999999998,34.5,29.816 -2020-09-05 01:45:00,65.62,26.391,34.5,29.816 -2020-09-05 02:00:00,59.22,26.165,32.236,29.816 -2020-09-05 02:15:00,61.62,25.051,32.236,29.816 -2020-09-05 02:30:00,60.74,25.576999999999998,32.236,29.816 -2020-09-05 02:45:00,61.81,26.514,32.236,29.816 -2020-09-05 03:00:00,59.94,26.993000000000002,32.067,29.816 -2020-09-05 03:15:00,61.24,24.705,32.067,29.816 -2020-09-05 03:30:00,61.65,24.504,32.067,29.816 -2020-09-05 03:45:00,61.59,26.679000000000002,32.067,29.816 -2020-09-05 04:00:00,61.57,31.316999999999997,33.071,29.816 -2020-09-05 04:15:00,59.69,36.134,33.071,29.816 -2020-09-05 04:30:00,62.02,32.619,33.071,29.816 -2020-09-05 04:45:00,63.77,32.647,33.071,29.816 -2020-09-05 05:00:00,64.24,40.606,33.014,29.816 -2020-09-05 05:15:00,65.87,41.105,33.014,29.816 -2020-09-05 05:30:00,65.26,36.77,33.014,29.816 -2020-09-05 05:45:00,64.15,37.029,33.014,29.816 -2020-09-05 06:00:00,67.9,49.608999999999995,34.628,29.816 -2020-09-05 06:15:00,70.61,59.795,34.628,29.816 -2020-09-05 06:30:00,71.88,55.083,34.628,29.816 -2020-09-05 06:45:00,72.73,52.895,34.628,29.816 -2020-09-05 07:00:00,75.06,49.843999999999994,38.871,29.816 -2020-09-05 07:15:00,73.03,50.681999999999995,38.871,29.816 -2020-09-05 07:30:00,77.02,48.961999999999996,38.871,29.816 -2020-09-05 07:45:00,79.22,50.842,38.871,29.816 -2020-09-05 08:00:00,77.29,51.131,43.293,29.816 -2020-09-05 08:15:00,78.24,53.879,43.293,29.816 -2020-09-05 08:30:00,76.23,53.385,43.293,29.816 -2020-09-05 08:45:00,75.72,55.662,43.293,29.816 -2020-09-05 09:00:00,74.97,53.013000000000005,44.559,29.816 -2020-09-05 09:15:00,72.64,53.833,44.559,29.816 -2020-09-05 09:30:00,73.09,55.76,44.559,29.816 -2020-09-05 09:45:00,75.25,57.203,44.559,29.816 -2020-09-05 10:00:00,74.29,53.878,42.091,29.816 -2020-09-05 10:15:00,73.61,54.733000000000004,42.091,29.816 -2020-09-05 10:30:00,73.64,54.651,42.091,29.816 -2020-09-05 10:45:00,71.59,55.418,42.091,29.816 -2020-09-05 11:00:00,70.86,52.035,38.505,29.816 -2020-09-05 11:15:00,67.38,52.648,38.505,29.816 -2020-09-05 11:30:00,67.78,53.333999999999996,38.505,29.816 -2020-09-05 11:45:00,67.79,53.699,38.505,29.816 -2020-09-05 12:00:00,64.86,50.608999999999995,35.388000000000005,29.816 -2020-09-05 12:15:00,64.27,50.17,35.388000000000005,29.816 -2020-09-05 12:30:00,61.73,49.437,35.388000000000005,29.816 -2020-09-05 12:45:00,61.93,50.407,35.388000000000005,29.816 -2020-09-05 13:00:00,57.25,49.278999999999996,31.355999999999998,29.816 -2020-09-05 13:15:00,60.01,49.393,31.355999999999998,29.816 -2020-09-05 13:30:00,60.1,48.998000000000005,31.355999999999998,29.816 -2020-09-05 13:45:00,58.58,47.281000000000006,31.355999999999998,29.816 -2020-09-05 14:00:00,62.4,47.692,30.522,29.816 -2020-09-05 14:15:00,62.32,45.977,30.522,29.816 -2020-09-05 14:30:00,69.06,45.586000000000006,30.522,29.816 -2020-09-05 14:45:00,67.31,46.24,30.522,29.816 -2020-09-05 15:00:00,64.95,47.103,34.36,29.816 -2020-09-05 15:15:00,68.02,45.523,34.36,29.816 -2020-09-05 15:30:00,73.3,44.092,34.36,29.816 -2020-09-05 15:45:00,66.23,41.758,34.36,29.816 -2020-09-05 16:00:00,70.0,44.927,39.507,29.816 -2020-09-05 16:15:00,70.69,44.593999999999994,39.507,29.816 -2020-09-05 16:30:00,72.97,45.01,39.507,29.816 -2020-09-05 16:45:00,75.43,42.166000000000004,39.507,29.816 -2020-09-05 17:00:00,78.45,44.356,47.151,29.816 -2020-09-05 17:15:00,79.25,43.55,47.151,29.816 -2020-09-05 17:30:00,80.34,42.998000000000005,47.151,29.816 -2020-09-05 17:45:00,81.44,42.316,47.151,29.816 -2020-09-05 18:00:00,84.42,45.887,50.303999999999995,29.816 -2020-09-05 18:15:00,82.25,46.185,50.303999999999995,29.816 -2020-09-05 18:30:00,82.55,45.576,50.303999999999995,29.816 -2020-09-05 18:45:00,85.27,46.61600000000001,50.303999999999995,29.816 -2020-09-05 19:00:00,83.52,48.75899999999999,50.622,29.816 -2020-09-05 19:15:00,83.04,47.233000000000004,50.622,29.816 -2020-09-05 19:30:00,81.56,46.961999999999996,50.622,29.816 -2020-09-05 19:45:00,80.53,47.653,50.622,29.816 -2020-09-05 20:00:00,77.83,46.8,45.391000000000005,29.816 -2020-09-05 20:15:00,76.29,46.696000000000005,45.391000000000005,29.816 -2020-09-05 20:30:00,75.74,44.957,45.391000000000005,29.816 -2020-09-05 20:45:00,75.02,45.777,45.391000000000005,29.816 -2020-09-05 21:00:00,71.28,44.6,39.98,29.816 -2020-09-05 21:15:00,70.5,47.446000000000005,39.98,29.816 -2020-09-05 21:30:00,67.18,47.358999999999995,39.98,29.816 -2020-09-05 21:45:00,67.05,46.666000000000004,39.98,29.816 -2020-09-05 22:00:00,64.24,44.354,37.53,29.816 -2020-09-05 22:15:00,62.85,45.309,37.53,29.816 -2020-09-05 22:30:00,60.44,43.391000000000005,37.53,29.816 -2020-09-05 22:45:00,60.44,41.656000000000006,37.53,29.816 -2020-09-05 23:00:00,55.7,39.704,30.97,29.816 -2020-09-05 23:15:00,55.88,37.408,30.97,29.816 -2020-09-05 23:30:00,55.87,37.45,30.97,29.816 -2020-09-05 23:45:00,54.85,36.455,30.97,29.816 -2020-09-06 00:00:00,51.94,31.230999999999998,27.24,29.816 -2020-09-06 00:15:00,52.98,29.822,27.24,29.816 -2020-09-06 00:30:00,51.93,29.235,27.24,29.816 -2020-09-06 00:45:00,52.47,29.033,27.24,29.816 -2020-09-06 01:00:00,50.9,28.868000000000002,25.662,29.816 -2020-09-06 01:15:00,51.69,28.144000000000002,25.662,29.816 -2020-09-06 01:30:00,51.06,26.9,25.662,29.816 -2020-09-06 01:45:00,51.75,26.471999999999998,25.662,29.816 -2020-09-06 02:00:00,50.22,26.226,25.67,29.816 -2020-09-06 02:15:00,50.83,25.649,25.67,29.816 -2020-09-06 02:30:00,50.93,26.423000000000002,25.67,29.816 -2020-09-06 02:45:00,51.01,27.158,25.67,29.816 -2020-09-06 03:00:00,50.72,28.236,24.258000000000003,29.816 -2020-09-06 03:15:00,51.86,26.129,24.258000000000003,29.816 -2020-09-06 03:30:00,51.93,25.463,24.258000000000003,29.816 -2020-09-06 03:45:00,52.05,26.918000000000003,24.258000000000003,29.816 -2020-09-06 04:00:00,52.55,31.531,25.051,29.816 -2020-09-06 04:15:00,52.95,35.867,25.051,29.816 -2020-09-06 04:30:00,53.59,33.545,25.051,29.816 -2020-09-06 04:45:00,54.33,33.202,25.051,29.816 -2020-09-06 05:00:00,56.46,40.988,25.145,29.816 -2020-09-06 05:15:00,55.34,40.624,25.145,29.816 -2020-09-06 05:30:00,53.86,35.900999999999996,25.145,29.816 -2020-09-06 05:45:00,55.65,35.897,25.145,29.816 -2020-09-06 06:00:00,56.53,46.333999999999996,26.371,29.816 -2020-09-06 06:15:00,57.41,57.077,26.371,29.816 -2020-09-06 06:30:00,58.46,51.619,26.371,29.816 -2020-09-06 06:45:00,60.16,48.426,26.371,29.816 -2020-09-06 07:00:00,60.1,45.915,28.756999999999998,29.816 -2020-09-06 07:15:00,60.26,45.225,28.756999999999998,29.816 -2020-09-06 07:30:00,65.45,44.508,28.756999999999998,29.816 -2020-09-06 07:45:00,66.55,46.265,28.756999999999998,29.816 -2020-09-06 08:00:00,66.48,47.442,32.82,29.816 -2020-09-06 08:15:00,65.64,51.174,32.82,29.816 -2020-09-06 08:30:00,58.67,51.653,32.82,29.816 -2020-09-06 08:45:00,61.25,54.093,32.82,29.816 -2020-09-06 09:00:00,63.13,51.301,35.534,29.816 -2020-09-06 09:15:00,57.61,51.75,35.534,29.816 -2020-09-06 09:30:00,58.16,54.012,35.534,29.816 -2020-09-06 09:45:00,60.38,56.286,35.534,29.816 -2020-09-06 10:00:00,61.07,53.742,35.925,29.816 -2020-09-06 10:15:00,60.78,54.75,35.925,29.816 -2020-09-06 10:30:00,63.8,54.928000000000004,35.925,29.816 -2020-09-06 10:45:00,61.65,56.318000000000005,35.925,29.816 -2020-09-06 11:00:00,61.14,52.763999999999996,37.056,29.816 -2020-09-06 11:15:00,57.92,52.993,37.056,29.816 -2020-09-06 11:30:00,60.04,54.018,37.056,29.816 -2020-09-06 11:45:00,59.7,54.666000000000004,37.056,29.816 -2020-09-06 12:00:00,59.47,52.391999999999996,33.124,29.816 -2020-09-06 12:15:00,59.46,51.644,33.124,29.816 -2020-09-06 12:30:00,57.73,50.933,33.124,29.816 -2020-09-06 12:45:00,56.0,51.214,33.124,29.816 -2020-09-06 13:00:00,53.2,49.711000000000006,29.874000000000002,29.816 -2020-09-06 13:15:00,54.82,49.708,29.874000000000002,29.816 -2020-09-06 13:30:00,54.67,48.316,29.874000000000002,29.816 -2020-09-06 13:45:00,53.78,47.49100000000001,29.874000000000002,29.816 -2020-09-06 14:00:00,52.66,48.938,27.302,29.816 -2020-09-06 14:15:00,55.42,47.761,27.302,29.816 -2020-09-06 14:30:00,57.66,46.483000000000004,27.302,29.816 -2020-09-06 14:45:00,57.04,46.153,27.302,29.816 -2020-09-06 15:00:00,57.93,46.895,27.642,29.816 -2020-09-06 15:15:00,56.35,44.723,27.642,29.816 -2020-09-06 15:30:00,55.04,43.233000000000004,27.642,29.816 -2020-09-06 15:45:00,55.71,41.247,27.642,29.816 -2020-09-06 16:00:00,59.68,43.17,31.945999999999998,29.816 -2020-09-06 16:15:00,60.8,42.937,31.945999999999998,29.816 -2020-09-06 16:30:00,66.16,44.26,31.945999999999998,29.816 -2020-09-06 16:45:00,71.81,41.54,31.945999999999998,29.816 -2020-09-06 17:00:00,76.25,44.00899999999999,40.387,29.816 -2020-09-06 17:15:00,77.49,44.511,40.387,29.816 -2020-09-06 17:30:00,78.34,44.708,40.387,29.816 -2020-09-06 17:45:00,74.93,44.711000000000006,40.387,29.816 -2020-09-06 18:00:00,79.12,48.699,44.575,29.816 -2020-09-06 18:15:00,78.19,48.806999999999995,44.575,29.816 -2020-09-06 18:30:00,80.41,47.744,44.575,29.816 -2020-09-06 18:45:00,80.48,49.102,44.575,29.816 -2020-09-06 19:00:00,92.24,53.111000000000004,45.623999999999995,29.816 -2020-09-06 19:15:00,91.93,50.673,45.623999999999995,29.816 -2020-09-06 19:30:00,89.23,50.163999999999994,45.623999999999995,29.816 -2020-09-06 19:45:00,85.71,50.617,45.623999999999995,29.816 -2020-09-06 20:00:00,81.21,49.949,44.583999999999996,29.816 -2020-09-06 20:15:00,87.39,49.841,44.583999999999996,29.816 -2020-09-06 20:30:00,86.81,48.938,44.583999999999996,29.816 -2020-09-06 20:45:00,86.6,48.099,44.583999999999996,29.816 -2020-09-06 21:00:00,78.52,46.498999999999995,39.732,29.816 -2020-09-06 21:15:00,79.0,48.997,39.732,29.816 -2020-09-06 21:30:00,80.14,48.376999999999995,39.732,29.816 -2020-09-06 21:45:00,77.29,47.978,39.732,29.816 -2020-09-06 22:00:00,73.53,47.293,38.571,29.816 -2020-09-06 22:15:00,73.0,46.657,38.571,29.816 -2020-09-06 22:30:00,71.65,43.901,38.571,29.816 -2020-09-06 22:45:00,71.15,40.95,38.571,29.816 -2020-09-06 23:00:00,65.54,38.457,33.121,29.816 -2020-09-06 23:15:00,66.93,37.468,33.121,29.816 -2020-09-06 23:30:00,66.52,37.135999999999996,33.121,29.816 -2020-09-06 23:45:00,66.55,36.387,33.121,29.816 -2020-09-07 00:00:00,64.09,33.271,32.506,29.93 -2020-09-07 00:15:00,66.1,32.906,32.506,29.93 -2020-09-07 00:30:00,65.16,32.003,32.506,29.93 -2020-09-07 00:45:00,72.59,31.397,32.506,29.93 -2020-09-07 01:00:00,71.19,31.555999999999997,31.121,29.93 -2020-09-07 01:15:00,72.55,30.802,31.121,29.93 -2020-09-07 01:30:00,70.95,29.899,31.121,29.93 -2020-09-07 01:45:00,71.59,29.4,31.121,29.93 -2020-09-07 02:00:00,71.83,29.554000000000002,29.605999999999998,29.93 -2020-09-07 02:15:00,71.29,28.28,29.605999999999998,29.93 -2020-09-07 02:30:00,65.32,29.213,29.605999999999998,29.93 -2020-09-07 02:45:00,68.55,29.741,29.605999999999998,29.93 -2020-09-07 03:00:00,73.65,31.401,28.124000000000002,29.93 -2020-09-07 03:15:00,75.4,30.138,28.124000000000002,29.93 -2020-09-07 03:30:00,77.07,30.045,28.124000000000002,29.93 -2020-09-07 03:45:00,72.74,31.016,28.124000000000002,29.93 -2020-09-07 04:00:00,78.77,38.909,29.743000000000002,29.93 -2020-09-07 04:15:00,78.27,46.333999999999996,29.743000000000002,29.93 -2020-09-07 04:30:00,81.92,43.856,29.743000000000002,29.93 -2020-09-07 04:45:00,87.93,43.864,29.743000000000002,29.93 -2020-09-07 05:00:00,95.33,59.738,36.191,29.93 -2020-09-07 05:15:00,99.43,70.842,36.191,29.93 -2020-09-07 05:30:00,100.39,64.77199999999999,36.191,29.93 -2020-09-07 05:45:00,103.16,61.369,36.191,29.93 -2020-09-07 06:00:00,107.79,60.716,55.277,29.93 -2020-09-07 06:15:00,107.35,61.775,55.277,29.93 -2020-09-07 06:30:00,111.41,60.729,55.277,29.93 -2020-09-07 06:45:00,110.88,63.191,55.277,29.93 -2020-09-07 07:00:00,111.5,61.396,65.697,29.93 -2020-09-07 07:15:00,111.03,62.872,65.697,29.93 -2020-09-07 07:30:00,108.26,61.34,65.697,29.93 -2020-09-07 07:45:00,107.84,63.056999999999995,65.697,29.93 -2020-09-07 08:00:00,106.73,61.815,57.028,29.93 -2020-09-07 08:15:00,106.0,64.19800000000001,57.028,29.93 -2020-09-07 08:30:00,105.72,63.345,57.028,29.93 -2020-09-07 08:45:00,105.41,65.547,57.028,29.93 -2020-09-07 09:00:00,105.06,61.758,52.633,29.93 -2020-09-07 09:15:00,103.6,60.206,52.633,29.93 -2020-09-07 09:30:00,104.14,61.515,52.633,29.93 -2020-09-07 09:45:00,108.19,61.792,52.633,29.93 -2020-09-07 10:00:00,105.88,59.531000000000006,50.647,29.93 -2020-09-07 10:15:00,107.1,60.333999999999996,50.647,29.93 -2020-09-07 10:30:00,106.5,59.99,50.647,29.93 -2020-09-07 10:45:00,110.53,60.085,50.647,29.93 -2020-09-07 11:00:00,112.98,56.413000000000004,50.245,29.93 -2020-09-07 11:15:00,107.64,57.105,50.245,29.93 -2020-09-07 11:30:00,101.36,58.91,50.245,29.93 -2020-09-07 11:45:00,103.67,59.924,50.245,29.93 -2020-09-07 12:00:00,108.34,56.413000000000004,46.956,29.93 -2020-09-07 12:15:00,106.87,55.748000000000005,46.956,29.93 -2020-09-07 12:30:00,97.46,54.169,46.956,29.93 -2020-09-07 12:45:00,99.84,54.635,46.956,29.93 -2020-09-07 13:00:00,97.74,53.949,47.383,29.93 -2020-09-07 13:15:00,100.52,52.99100000000001,47.383,29.93 -2020-09-07 13:30:00,97.51,51.676,47.383,29.93 -2020-09-07 13:45:00,96.25,51.64,47.383,29.93 -2020-09-07 14:00:00,98.27,52.184,47.1,29.93 -2020-09-07 14:15:00,99.93,51.449,47.1,29.93 -2020-09-07 14:30:00,104.1,49.985,47.1,29.93 -2020-09-07 14:45:00,107.04,51.446999999999996,47.1,29.93 -2020-09-07 15:00:00,106.36,52.048,49.355,29.93 -2020-09-07 15:15:00,104.11,49.193999999999996,49.355,29.93 -2020-09-07 15:30:00,105.03,48.29,49.355,29.93 -2020-09-07 15:45:00,108.61,45.835,49.355,29.93 -2020-09-07 16:00:00,109.53,48.643,52.14,29.93 -2020-09-07 16:15:00,109.89,48.38399999999999,52.14,29.93 -2020-09-07 16:30:00,113.1,49.004,52.14,29.93 -2020-09-07 16:45:00,113.41,46.208,52.14,29.93 -2020-09-07 17:00:00,113.76,47.629,58.705,29.93 -2020-09-07 17:15:00,113.0,48.368,58.705,29.93 -2020-09-07 17:30:00,115.63,48.17,58.705,29.93 -2020-09-07 17:45:00,114.27,47.673,58.705,29.93 -2020-09-07 18:00:00,115.1,50.723,59.153,29.93 -2020-09-07 18:15:00,112.76,48.966,59.153,29.93 -2020-09-07 18:30:00,113.45,47.331,59.153,29.93 -2020-09-07 18:45:00,118.05,51.548,59.153,29.93 -2020-09-07 19:00:00,114.98,55.098,61.483000000000004,29.93 -2020-09-07 19:15:00,112.15,53.696999999999996,61.483000000000004,29.93 -2020-09-07 19:30:00,113.66,52.918,61.483000000000004,29.93 -2020-09-07 19:45:00,113.35,52.733000000000004,61.483000000000004,29.93 -2020-09-07 20:00:00,109.69,50.699,67.55,29.93 -2020-09-07 20:15:00,107.25,51.534,67.55,29.93 -2020-09-07 20:30:00,106.23,50.851000000000006,67.55,29.93 -2020-09-07 20:45:00,103.57,50.35,67.55,29.93 -2020-09-07 21:00:00,96.79,48.262,60.026,29.93 -2020-09-07 21:15:00,92.0,51.003,60.026,29.93 -2020-09-07 21:30:00,87.06,50.658,60.026,29.93 -2020-09-07 21:45:00,91.31,49.968999999999994,60.026,29.93 -2020-09-07 22:00:00,88.7,47.123000000000005,52.736999999999995,29.93 -2020-09-07 22:15:00,87.47,48.068999999999996,52.736999999999995,29.93 -2020-09-07 22:30:00,82.02,40.363,52.736999999999995,29.93 -2020-09-07 22:45:00,84.25,36.84,52.736999999999995,29.93 -2020-09-07 23:00:00,81.67,34.525999999999996,44.408,29.93 -2020-09-07 23:15:00,82.18,32.357,44.408,29.93 -2020-09-07 23:30:00,79.67,32.315,44.408,29.93 -2020-09-07 23:45:00,80.93,31.396,44.408,29.93 -2020-09-08 00:00:00,78.69,31.4,44.438,29.93 -2020-09-08 00:15:00,78.24,31.965,44.438,29.93 -2020-09-08 00:30:00,74.74,31.59,44.438,29.93 -2020-09-08 00:45:00,78.91,31.578000000000003,44.438,29.93 -2020-09-08 01:00:00,78.69,31.218000000000004,41.468999999999994,29.93 -2020-09-08 01:15:00,79.73,30.53,41.468999999999994,29.93 -2020-09-08 01:30:00,74.2,29.549,41.468999999999994,29.93 -2020-09-08 01:45:00,79.22,28.631999999999998,41.468999999999994,29.93 -2020-09-08 02:00:00,78.78,28.364,39.708,29.93 -2020-09-08 02:15:00,79.67,28.124000000000002,39.708,29.93 -2020-09-08 02:30:00,78.51,28.616999999999997,39.708,29.93 -2020-09-08 02:45:00,78.4,29.432,39.708,29.93 -2020-09-08 03:00:00,81.3,30.445999999999998,38.919000000000004,29.93 -2020-09-08 03:15:00,79.9,29.929000000000002,38.919000000000004,29.93 -2020-09-08 03:30:00,77.62,29.871,38.919000000000004,29.93 -2020-09-08 03:45:00,81.23,29.865,38.919000000000004,29.93 -2020-09-08 04:00:00,88.53,36.65,40.092,29.93 -2020-09-08 04:15:00,91.69,44.075,40.092,29.93 -2020-09-08 04:30:00,94.06,41.461999999999996,40.092,29.93 -2020-09-08 04:45:00,99.19,42.047,40.092,29.93 -2020-09-08 05:00:00,107.52,59.983000000000004,43.713,29.93 -2020-09-08 05:15:00,111.02,71.717,43.713,29.93 -2020-09-08 05:30:00,106.44,65.628,43.713,29.93 -2020-09-08 05:45:00,110.66,61.523,43.713,29.93 -2020-09-08 06:00:00,113.9,61.646,56.033,29.93 -2020-09-08 06:15:00,116.71,63.085,56.033,29.93 -2020-09-08 06:30:00,119.58,61.678000000000004,56.033,29.93 -2020-09-08 06:45:00,119.15,63.302,56.033,29.93 -2020-09-08 07:00:00,121.33,61.621,66.003,29.93 -2020-09-08 07:15:00,120.99,62.865,66.003,29.93 -2020-09-08 07:30:00,121.51,61.317,66.003,29.93 -2020-09-08 07:45:00,119.76,62.193999999999996,66.003,29.93 -2020-09-08 08:00:00,113.06,60.905,57.474,29.93 -2020-09-08 08:15:00,112.42,62.732,57.474,29.93 -2020-09-08 08:30:00,112.09,62.012,57.474,29.93 -2020-09-08 08:45:00,114.08,63.347,57.474,29.93 -2020-09-08 09:00:00,111.56,59.766999999999996,51.928000000000004,29.93 -2020-09-08 09:15:00,113.34,58.276,51.928000000000004,29.93 -2020-09-08 09:30:00,112.99,60.253,51.928000000000004,29.93 -2020-09-08 09:45:00,116.22,61.656000000000006,51.928000000000004,29.93 -2020-09-08 10:00:00,117.84,58.111000000000004,49.46,29.93 -2020-09-08 10:15:00,109.46,58.625,49.46,29.93 -2020-09-08 10:30:00,109.25,58.316,49.46,29.93 -2020-09-08 10:45:00,109.93,59.315,49.46,29.93 -2020-09-08 11:00:00,105.93,55.848,48.206,29.93 -2020-09-08 11:15:00,109.06,56.84,48.206,29.93 -2020-09-08 11:30:00,107.95,57.488,48.206,29.93 -2020-09-08 11:45:00,108.6,58.178000000000004,48.206,29.93 -2020-09-08 12:00:00,108.71,54.305,46.285,29.93 -2020-09-08 12:15:00,108.48,53.868,46.285,29.93 -2020-09-08 12:30:00,108.83,53.159,46.285,29.93 -2020-09-08 12:45:00,105.3,54.181999999999995,46.285,29.93 -2020-09-08 13:00:00,104.99,53.108000000000004,46.861999999999995,29.93 -2020-09-08 13:15:00,107.88,53.677,46.861999999999995,29.93 -2020-09-08 13:30:00,110.14,52.479,46.861999999999995,29.93 -2020-09-08 13:45:00,107.86,51.63,46.861999999999995,29.93 -2020-09-08 14:00:00,108.5,52.566,46.488,29.93 -2020-09-08 14:15:00,109.29,51.687,46.488,29.93 -2020-09-08 14:30:00,103.98,50.617,46.488,29.93 -2020-09-08 14:45:00,103.36,51.375,46.488,29.93 -2020-09-08 15:00:00,104.44,51.73,48.442,29.93 -2020-09-08 15:15:00,102.88,49.745,48.442,29.93 -2020-09-08 15:30:00,100.95,48.707,48.442,29.93 -2020-09-08 15:45:00,101.93,46.519,48.442,29.93 -2020-09-08 16:00:00,106.74,48.718999999999994,50.397,29.93 -2020-09-08 16:15:00,109.62,48.608000000000004,50.397,29.93 -2020-09-08 16:30:00,111.41,48.976000000000006,50.397,29.93 -2020-09-08 16:45:00,111.89,46.9,50.397,29.93 -2020-09-08 17:00:00,114.63,48.536,56.668,29.93 -2020-09-08 17:15:00,112.41,49.675,56.668,29.93 -2020-09-08 17:30:00,113.49,49.18,56.668,29.93 -2020-09-08 17:45:00,115.51,48.411,56.668,29.93 -2020-09-08 18:00:00,115.96,50.586999999999996,57.957,29.93 -2020-09-08 18:15:00,112.95,50.101000000000006,57.957,29.93 -2020-09-08 18:30:00,113.99,48.21,57.957,29.93 -2020-09-08 18:45:00,116.35,52.343,57.957,29.93 -2020-09-08 19:00:00,120.65,54.869,57.056000000000004,29.93 -2020-09-08 19:15:00,118.5,53.596000000000004,57.056000000000004,29.93 -2020-09-08 19:30:00,120.53,52.551,57.056000000000004,29.93 -2020-09-08 19:45:00,111.59,52.668,57.056000000000004,29.93 -2020-09-08 20:00:00,103.31,51.019,64.156,29.93 -2020-09-08 20:15:00,102.93,50.501000000000005,64.156,29.93 -2020-09-08 20:30:00,100.46,49.946999999999996,64.156,29.93 -2020-09-08 20:45:00,102.55,49.711000000000006,64.156,29.93 -2020-09-08 21:00:00,101.45,48.318000000000005,56.507,29.93 -2020-09-08 21:15:00,102.7,49.847,56.507,29.93 -2020-09-08 21:30:00,97.23,49.58,56.507,29.93 -2020-09-08 21:45:00,96.21,49.055,56.507,29.93 -2020-09-08 22:00:00,91.16,46.526,50.728,29.93 -2020-09-08 22:15:00,91.57,47.123000000000005,50.728,29.93 -2020-09-08 22:30:00,84.85,39.665,50.728,29.93 -2020-09-08 22:45:00,86.91,36.171,50.728,29.93 -2020-09-08 23:00:00,84.69,33.22,43.556999999999995,29.93 -2020-09-08 23:15:00,85.78,32.317,43.556999999999995,29.93 -2020-09-08 23:30:00,82.52,32.239000000000004,43.556999999999995,29.93 -2020-09-08 23:45:00,85.59,31.436999999999998,43.556999999999995,29.93 -2020-09-09 00:00:00,82.31,31.622,41.151,29.93 -2020-09-09 00:15:00,83.13,32.187,41.151,29.93 -2020-09-09 00:30:00,79.51,31.819000000000003,41.151,29.93 -2020-09-09 00:45:00,77.56,31.813000000000002,41.151,29.93 -2020-09-09 01:00:00,79.6,31.435,37.763000000000005,29.93 -2020-09-09 01:15:00,81.91,30.766,37.763000000000005,29.93 -2020-09-09 01:30:00,82.15,29.803,37.763000000000005,29.93 -2020-09-09 01:45:00,79.99,28.886999999999997,37.763000000000005,29.93 -2020-09-09 02:00:00,74.52,28.623,35.615,29.93 -2020-09-09 02:15:00,74.8,28.405,35.615,29.93 -2020-09-09 02:30:00,81.69,28.874000000000002,35.615,29.93 -2020-09-09 02:45:00,82.63,29.683000000000003,35.615,29.93 -2020-09-09 03:00:00,83.44,30.685,35.153,29.93 -2020-09-09 03:15:00,78.79,30.186,35.153,29.93 -2020-09-09 03:30:00,84.28,30.133000000000003,35.153,29.93 -2020-09-09 03:45:00,86.29,30.113000000000003,35.153,29.93 -2020-09-09 04:00:00,89.48,36.935,36.203,29.93 -2020-09-09 04:15:00,89.42,44.39,36.203,29.93 -2020-09-09 04:30:00,94.57,41.785,36.203,29.93 -2020-09-09 04:45:00,102.54,42.376000000000005,36.203,29.93 -2020-09-09 05:00:00,108.61,60.409,39.922,29.93 -2020-09-09 05:15:00,107.95,72.247,39.922,29.93 -2020-09-09 05:30:00,111.12,66.142,39.922,29.93 -2020-09-09 05:45:00,111.45,61.985,39.922,29.93 -2020-09-09 06:00:00,113.78,62.07,56.443999999999996,29.93 -2020-09-09 06:15:00,116.37,63.535,56.443999999999996,29.93 -2020-09-09 06:30:00,119.03,62.123000000000005,56.443999999999996,29.93 -2020-09-09 06:45:00,118.81,63.743,56.443999999999996,29.93 -2020-09-09 07:00:00,118.73,62.062,68.683,29.93 -2020-09-09 07:15:00,118.39,63.321000000000005,68.683,29.93 -2020-09-09 07:30:00,116.09,61.806000000000004,68.683,29.93 -2020-09-09 07:45:00,114.53,62.681999999999995,68.683,29.93 -2020-09-09 08:00:00,113.91,61.396,59.003,29.93 -2020-09-09 08:15:00,112.48,63.184,59.003,29.93 -2020-09-09 08:30:00,113.23,62.471000000000004,59.003,29.93 -2020-09-09 08:45:00,114.44,63.788000000000004,59.003,29.93 -2020-09-09 09:00:00,111.57,60.216,56.21,29.93 -2020-09-09 09:15:00,109.34,58.714,56.21,29.93 -2020-09-09 09:30:00,109.66,60.67100000000001,56.21,29.93 -2020-09-09 09:45:00,109.6,62.044,56.21,29.93 -2020-09-09 10:00:00,108.97,58.495,52.358999999999995,29.93 -2020-09-09 10:15:00,108.59,58.974,52.358999999999995,29.93 -2020-09-09 10:30:00,107.81,58.653,52.358999999999995,29.93 -2020-09-09 10:45:00,107.09,59.638999999999996,52.358999999999995,29.93 -2020-09-09 11:00:00,105.96,56.187,51.161,29.93 -2020-09-09 11:15:00,104.7,57.163999999999994,51.161,29.93 -2020-09-09 11:30:00,105.82,57.81,51.161,29.93 -2020-09-09 11:45:00,102.87,58.482,51.161,29.93 -2020-09-09 12:00:00,103.56,54.586000000000006,49.119,29.93 -2020-09-09 12:15:00,100.18,54.136,49.119,29.93 -2020-09-09 12:30:00,98.72,53.456,49.119,29.93 -2020-09-09 12:45:00,100.89,54.467,49.119,29.93 -2020-09-09 13:00:00,101.22,53.369,49.187,29.93 -2020-09-09 13:15:00,101.0,53.93,49.187,29.93 -2020-09-09 13:30:00,103.88,52.728,49.187,29.93 -2020-09-09 13:45:00,102.94,51.888000000000005,49.187,29.93 -2020-09-09 14:00:00,103.48,52.784,49.787,29.93 -2020-09-09 14:15:00,104.49,51.917,49.787,29.93 -2020-09-09 14:30:00,101.7,50.873999999999995,49.787,29.93 -2020-09-09 14:45:00,101.43,51.63,49.787,29.93 -2020-09-09 15:00:00,101.46,51.931000000000004,51.458999999999996,29.93 -2020-09-09 15:15:00,101.99,49.961000000000006,51.458999999999996,29.93 -2020-09-09 15:30:00,102.58,48.946999999999996,51.458999999999996,29.93 -2020-09-09 15:45:00,104.51,46.772,51.458999999999996,29.93 -2020-09-09 16:00:00,104.61,48.935,53.663000000000004,29.93 -2020-09-09 16:15:00,109.4,48.835,53.663000000000004,29.93 -2020-09-09 16:30:00,108.58,49.201,53.663000000000004,29.93 -2020-09-09 16:45:00,109.96,47.181000000000004,53.663000000000004,29.93 -2020-09-09 17:00:00,112.76,48.776,58.183,29.93 -2020-09-09 17:15:00,112.11,49.945,58.183,29.93 -2020-09-09 17:30:00,115.42,49.458999999999996,58.183,29.93 -2020-09-09 17:45:00,113.9,48.728,58.183,29.93 -2020-09-09 18:00:00,112.53,50.887,60.141000000000005,29.93 -2020-09-09 18:15:00,111.03,50.411,60.141000000000005,29.93 -2020-09-09 18:30:00,112.22,48.534,60.141000000000005,29.93 -2020-09-09 18:45:00,115.87,52.662,60.141000000000005,29.93 -2020-09-09 19:00:00,114.45,55.199,60.582,29.93 -2020-09-09 19:15:00,114.54,53.925,60.582,29.93 -2020-09-09 19:30:00,114.12,52.881,60.582,29.93 -2020-09-09 19:45:00,114.17,52.997,60.582,29.93 -2020-09-09 20:00:00,107.24,51.36600000000001,66.61,29.93 -2020-09-09 20:15:00,100.92,50.848,66.61,29.93 -2020-09-09 20:30:00,105.27,50.271,66.61,29.93 -2020-09-09 20:45:00,105.34,49.992,66.61,29.93 -2020-09-09 21:00:00,100.98,48.603,57.658,29.93 -2020-09-09 21:15:00,97.14,50.12,57.658,29.93 -2020-09-09 21:30:00,95.75,49.858999999999995,57.658,29.93 -2020-09-09 21:45:00,95.25,49.29600000000001,57.658,29.93 -2020-09-09 22:00:00,92.5,46.744,51.81,29.93 -2020-09-09 22:15:00,86.93,47.318000000000005,51.81,29.93 -2020-09-09 22:30:00,87.86,39.836,51.81,29.93 -2020-09-09 22:45:00,86.09,36.346,51.81,29.93 -2020-09-09 23:00:00,84.21,33.443000000000005,42.93600000000001,29.93 -2020-09-09 23:15:00,82.99,32.514,42.93600000000001,29.93 -2020-09-09 23:30:00,83.34,32.443000000000005,42.93600000000001,29.93 -2020-09-09 23:45:00,84.51,31.645,42.93600000000001,29.93 -2020-09-10 00:00:00,80.33,31.846,39.211,29.93 -2020-09-10 00:15:00,77.06,32.409,39.211,29.93 -2020-09-10 00:30:00,80.13,32.05,39.211,29.93 -2020-09-10 00:45:00,81.28,32.049,39.211,29.93 -2020-09-10 01:00:00,81.02,31.653000000000002,37.607,29.93 -2020-09-10 01:15:00,75.14,31.005,37.607,29.93 -2020-09-10 01:30:00,73.91,30.059,37.607,29.93 -2020-09-10 01:45:00,77.05,29.145,37.607,29.93 -2020-09-10 02:00:00,80.23,28.884,36.44,29.93 -2020-09-10 02:15:00,81.87,28.69,36.44,29.93 -2020-09-10 02:30:00,73.49,29.133000000000003,36.44,29.93 -2020-09-10 02:45:00,74.47,29.936999999999998,36.44,29.93 -2020-09-10 03:00:00,77.1,30.927,36.116,29.93 -2020-09-10 03:15:00,80.63,30.445,36.116,29.93 -2020-09-10 03:30:00,83.84,30.397,36.116,29.93 -2020-09-10 03:45:00,83.29,30.363000000000003,36.116,29.93 -2020-09-10 04:00:00,83.53,37.223,37.398,29.93 -2020-09-10 04:15:00,89.58,44.708,37.398,29.93 -2020-09-10 04:30:00,94.75,42.11,37.398,29.93 -2020-09-10 04:45:00,100.81,42.708999999999996,37.398,29.93 -2020-09-10 05:00:00,101.58,60.841,41.776,29.93 -2020-09-10 05:15:00,104.3,72.78699999999999,41.776,29.93 -2020-09-10 05:30:00,107.36,66.663,41.776,29.93 -2020-09-10 05:45:00,107.9,62.453,41.776,29.93 -2020-09-10 06:00:00,114.18,62.5,55.61,29.93 -2020-09-10 06:15:00,116.19,63.99,55.61,29.93 -2020-09-10 06:30:00,117.06,62.575,55.61,29.93 -2020-09-10 06:45:00,118.62,64.19,55.61,29.93 -2020-09-10 07:00:00,119.66,62.50899999999999,67.13600000000001,29.93 -2020-09-10 07:15:00,118.33,63.782,67.13600000000001,29.93 -2020-09-10 07:30:00,118.98,62.299,67.13600000000001,29.93 -2020-09-10 07:45:00,118.75,63.175,67.13600000000001,29.93 -2020-09-10 08:00:00,117.68,61.891999999999996,57.55,29.93 -2020-09-10 08:15:00,118.15,63.641000000000005,57.55,29.93 -2020-09-10 08:30:00,118.58,62.933,57.55,29.93 -2020-09-10 08:45:00,119.2,64.232,57.55,29.93 -2020-09-10 09:00:00,121.14,60.669,52.931999999999995,29.93 -2020-09-10 09:15:00,118.91,59.157,52.931999999999995,29.93 -2020-09-10 09:30:00,120.24,61.093,52.931999999999995,29.93 -2020-09-10 09:45:00,124.85,62.435,52.931999999999995,29.93 -2020-09-10 10:00:00,125.58,58.882,50.36600000000001,29.93 -2020-09-10 10:15:00,124.15,59.327,50.36600000000001,29.93 -2020-09-10 10:30:00,125.44,58.995,50.36600000000001,29.93 -2020-09-10 10:45:00,121.44,59.967,50.36600000000001,29.93 -2020-09-10 11:00:00,119.2,56.528,47.893,29.93 -2020-09-10 11:15:00,121.84,57.49100000000001,47.893,29.93 -2020-09-10 11:30:00,126.86,58.136,47.893,29.93 -2020-09-10 11:45:00,126.23,58.79,47.893,29.93 -2020-09-10 12:00:00,125.52,54.871,45.271,29.93 -2020-09-10 12:15:00,125.28,54.406000000000006,45.271,29.93 -2020-09-10 12:30:00,120.23,53.754,45.271,29.93 -2020-09-10 12:45:00,121.25,54.754,45.271,29.93 -2020-09-10 13:00:00,119.37,53.633,44.351000000000006,29.93 -2020-09-10 13:15:00,120.66,54.18600000000001,44.351000000000006,29.93 -2020-09-10 13:30:00,119.3,52.98,44.351000000000006,29.93 -2020-09-10 13:45:00,117.09,52.148,44.351000000000006,29.93 -2020-09-10 14:00:00,117.58,53.005,44.99,29.93 -2020-09-10 14:15:00,117.93,52.148999999999994,44.99,29.93 -2020-09-10 14:30:00,115.71,51.13399999999999,44.99,29.93 -2020-09-10 14:45:00,114.86,51.888000000000005,44.99,29.93 -2020-09-10 15:00:00,113.58,52.13399999999999,46.869,29.93 -2020-09-10 15:15:00,112.65,50.178999999999995,46.869,29.93 -2020-09-10 15:30:00,113.09,49.191,46.869,29.93 -2020-09-10 15:45:00,113.8,47.027,46.869,29.93 -2020-09-10 16:00:00,114.36,49.151,48.902,29.93 -2020-09-10 16:15:00,116.87,49.066,48.902,29.93 -2020-09-10 16:30:00,117.85,49.43,48.902,29.93 -2020-09-10 16:45:00,119.64,47.464,48.902,29.93 -2020-09-10 17:00:00,120.81,49.018,53.244,29.93 -2020-09-10 17:15:00,118.06,50.216,53.244,29.93 -2020-09-10 17:30:00,118.85,49.74100000000001,53.244,29.93 -2020-09-10 17:45:00,118.18,49.047,53.244,29.93 -2020-09-10 18:00:00,119.17,51.18899999999999,54.343999999999994,29.93 -2020-09-10 18:15:00,118.52,50.725,54.343999999999994,29.93 -2020-09-10 18:30:00,117.98,48.86,54.343999999999994,29.93 -2020-09-10 18:45:00,117.71,52.985,54.343999999999994,29.93 -2020-09-10 19:00:00,118.08,55.531000000000006,54.332,29.93 -2020-09-10 19:15:00,117.58,54.257,54.332,29.93 -2020-09-10 19:30:00,115.86,53.214,54.332,29.93 -2020-09-10 19:45:00,111.56,53.33,54.332,29.93 -2020-09-10 20:00:00,103.85,51.715,58.06,29.93 -2020-09-10 20:15:00,104.58,51.196999999999996,58.06,29.93 -2020-09-10 20:30:00,99.86,50.598,58.06,29.93 -2020-09-10 20:45:00,103.55,50.276,58.06,29.93 -2020-09-10 21:00:00,99.44,48.89,52.411,29.93 -2020-09-10 21:15:00,100.62,50.397,52.411,29.93 -2020-09-10 21:30:00,92.72,50.141000000000005,52.411,29.93 -2020-09-10 21:45:00,88.73,49.54,52.411,29.93 -2020-09-10 22:00:00,87.31,46.963,47.148999999999994,29.93 -2020-09-10 22:15:00,88.58,47.515,47.148999999999994,29.93 -2020-09-10 22:30:00,84.17,40.009,47.148999999999994,29.93 -2020-09-10 22:45:00,83.22,36.524,47.148999999999994,29.93 -2020-09-10 23:00:00,80.89,33.669000000000004,40.814,29.93 -2020-09-10 23:15:00,82.71,32.713,40.814,29.93 -2020-09-10 23:30:00,78.26,32.649,40.814,29.93 -2020-09-10 23:45:00,82.96,31.855999999999998,40.814,29.93 -2020-09-11 00:00:00,75.6,30.344,39.153,29.93 -2020-09-11 00:15:00,80.38,31.125,39.153,29.93 -2020-09-11 00:30:00,80.19,30.996,39.153,29.93 -2020-09-11 00:45:00,79.37,31.391,39.153,29.93 -2020-09-11 01:00:00,72.6,30.596999999999998,37.228,29.93 -2020-09-11 01:15:00,79.38,29.555,37.228,29.93 -2020-09-11 01:30:00,77.58,29.232,37.228,29.93 -2020-09-11 01:45:00,80.0,28.109,37.228,29.93 -2020-09-11 02:00:00,76.16,28.691,35.851,29.93 -2020-09-11 02:15:00,80.66,28.458000000000002,35.851,29.93 -2020-09-11 02:30:00,81.2,29.677,35.851,29.93 -2020-09-11 02:45:00,80.38,29.875999999999998,35.851,29.93 -2020-09-11 03:00:00,76.4,31.41,36.54,29.93 -2020-09-11 03:15:00,80.73,29.999000000000002,36.54,29.93 -2020-09-11 03:30:00,84.41,29.741999999999997,36.54,29.93 -2020-09-11 03:45:00,81.82,30.514,36.54,29.93 -2020-09-11 04:00:00,85.33,37.564,37.578,29.93 -2020-09-11 04:15:00,91.54,43.666000000000004,37.578,29.93 -2020-09-11 04:30:00,94.67,41.95,37.578,29.93 -2020-09-11 04:45:00,96.14,41.833,37.578,29.93 -2020-09-11 05:00:00,101.04,59.476000000000006,40.387,29.93 -2020-09-11 05:15:00,102.73,72.569,40.387,29.93 -2020-09-11 05:30:00,108.87,66.734,40.387,29.93 -2020-09-11 05:45:00,111.53,62.067,40.387,29.93 -2020-09-11 06:00:00,116.13,62.336000000000006,54.668,29.93 -2020-09-11 06:15:00,118.68,63.81100000000001,54.668,29.93 -2020-09-11 06:30:00,120.17,62.233999999999995,54.668,29.93 -2020-09-11 06:45:00,123.12,63.937,54.668,29.93 -2020-09-11 07:00:00,125.11,62.724,63.971000000000004,29.93 -2020-09-11 07:15:00,125.24,64.94800000000001,63.971000000000004,29.93 -2020-09-11 07:30:00,125.46,61.755,63.971000000000004,29.93 -2020-09-11 07:45:00,125.76,62.323,63.971000000000004,29.93 -2020-09-11 08:00:00,124.69,61.582,56.042,29.93 -2020-09-11 08:15:00,125.79,63.826,56.042,29.93 -2020-09-11 08:30:00,127.99,63.174,56.042,29.93 -2020-09-11 08:45:00,128.03,64.111,56.042,29.93 -2020-09-11 09:00:00,127.4,58.596000000000004,52.832,29.93 -2020-09-11 09:15:00,127.15,58.831,52.832,29.93 -2020-09-11 09:30:00,126.24,60.083999999999996,52.832,29.93 -2020-09-11 09:45:00,126.73,61.718,52.832,29.93 -2020-09-11 10:00:00,123.95,57.843999999999994,50.044,29.93 -2020-09-11 10:15:00,126.91,58.161,50.044,29.93 -2020-09-11 10:30:00,126.92,58.288000000000004,50.044,29.93 -2020-09-11 10:45:00,126.94,59.099,50.044,29.93 -2020-09-11 11:00:00,124.25,55.891999999999996,49.06100000000001,29.93 -2020-09-11 11:15:00,122.43,55.766000000000005,49.06100000000001,29.93 -2020-09-11 11:30:00,123.76,56.348,49.06100000000001,29.93 -2020-09-11 11:45:00,121.22,56.158,49.06100000000001,29.93 -2020-09-11 12:00:00,117.99,52.754,45.595,29.93 -2020-09-11 12:15:00,118.71,51.409,45.595,29.93 -2020-09-11 12:30:00,115.33,50.912,45.595,29.93 -2020-09-11 12:45:00,114.1,51.29600000000001,45.595,29.93 -2020-09-11 13:00:00,113.23,50.799,43.218,29.93 -2020-09-11 13:15:00,112.25,51.623000000000005,43.218,29.93 -2020-09-11 13:30:00,110.79,51.105,43.218,29.93 -2020-09-11 13:45:00,111.31,50.538000000000004,43.218,29.93 -2020-09-11 14:00:00,110.24,50.486999999999995,41.926,29.93 -2020-09-11 14:15:00,112.95,49.996,41.926,29.93 -2020-09-11 14:30:00,108.86,50.391999999999996,41.926,29.93 -2020-09-11 14:45:00,112.25,50.591,41.926,29.93 -2020-09-11 15:00:00,111.4,50.64,43.79,29.93 -2020-09-11 15:15:00,111.65,48.431000000000004,43.79,29.93 -2020-09-11 15:30:00,110.79,46.753,43.79,29.93 -2020-09-11 15:45:00,107.67,45.287,43.79,29.93 -2020-09-11 16:00:00,107.07,46.474,45.895,29.93 -2020-09-11 16:15:00,108.07,46.873999999999995,45.895,29.93 -2020-09-11 16:30:00,106.95,47.09,45.895,29.93 -2020-09-11 16:45:00,105.52,44.477,45.895,29.93 -2020-09-11 17:00:00,109.06,47.535,51.36,29.93 -2020-09-11 17:15:00,109.74,48.553000000000004,51.36,29.93 -2020-09-11 17:30:00,110.3,48.187,51.36,29.93 -2020-09-11 17:45:00,111.89,47.353,51.36,29.93 -2020-09-11 18:00:00,111.62,49.632,52.985,29.93 -2020-09-11 18:15:00,109.54,48.294,52.985,29.93 -2020-09-11 18:30:00,111.46,46.401,52.985,29.93 -2020-09-11 18:45:00,114.19,50.891999999999996,52.985,29.93 -2020-09-11 19:00:00,112.04,54.356,52.602,29.93 -2020-09-11 19:15:00,108.7,53.778,52.602,29.93 -2020-09-11 19:30:00,105.58,52.738,52.602,29.93 -2020-09-11 19:45:00,103.63,51.891999999999996,52.602,29.93 -2020-09-11 20:00:00,98.96,50.158,58.063,29.93 -2020-09-11 20:15:00,100.7,50.345,58.063,29.93 -2020-09-11 20:30:00,97.79,49.286,58.063,29.93 -2020-09-11 20:45:00,98.82,48.273999999999994,58.063,29.93 -2020-09-11 21:00:00,92.16,48.119,50.135,29.93 -2020-09-11 21:15:00,87.15,51.151,50.135,29.93 -2020-09-11 21:30:00,82.01,50.773999999999994,50.135,29.93 -2020-09-11 21:45:00,83.79,50.385,50.135,29.93 -2020-09-11 22:00:00,84.45,47.785,45.165,29.93 -2020-09-11 22:15:00,82.84,48.075,45.165,29.93 -2020-09-11 22:30:00,74.05,45.567,45.165,29.93 -2020-09-11 22:45:00,75.88,43.292,45.165,29.93 -2020-09-11 23:00:00,67.88,41.926,39.121,29.93 -2020-09-11 23:15:00,66.06,39.306999999999995,39.121,29.93 -2020-09-11 23:30:00,65.9,37.449,39.121,29.93 -2020-09-11 23:45:00,73.95,36.47,39.121,29.93 -2020-09-12 00:00:00,72.49,31.303,38.49,29.816 -2020-09-12 00:15:00,70.54,30.943,38.49,29.816 -2020-09-12 00:30:00,63.74,30.576,38.49,29.816 -2020-09-12 00:45:00,64.17,30.421999999999997,38.49,29.816 -2020-09-12 01:00:00,63.03,29.933000000000003,34.5,29.816 -2020-09-12 01:15:00,61.92,29.307,34.5,29.816 -2020-09-12 01:30:00,61.64,28.223000000000003,34.5,29.816 -2020-09-12 01:45:00,61.96,28.176,34.5,29.816 -2020-09-12 02:00:00,62.24,27.976,32.236,29.816 -2020-09-12 02:15:00,67.5,27.022,32.236,29.816 -2020-09-12 02:30:00,67.15,27.374000000000002,32.236,29.816 -2020-09-12 02:45:00,66.48,28.275,32.236,29.816 -2020-09-12 03:00:00,65.68,28.665,32.067,29.816 -2020-09-12 03:15:00,61.69,26.500999999999998,32.067,29.816 -2020-09-12 03:30:00,61.21,26.336,32.067,29.816 -2020-09-12 03:45:00,61.06,28.415,32.067,29.816 -2020-09-12 04:00:00,62.25,33.311,33.071,29.816 -2020-09-12 04:15:00,61.64,38.334,33.071,29.816 -2020-09-12 04:30:00,61.43,34.878,33.071,29.816 -2020-09-12 04:45:00,64.14,34.945,33.071,29.816 -2020-09-12 05:00:00,66.46,43.589,33.014,29.816 -2020-09-12 05:15:00,68.23,44.825,33.014,29.816 -2020-09-12 05:30:00,66.76,40.367,33.014,29.816 -2020-09-12 05:45:00,68.02,40.258,33.014,29.816 -2020-09-12 06:00:00,70.3,52.581,34.628,29.816 -2020-09-12 06:15:00,72.97,62.941,34.628,29.816 -2020-09-12 06:30:00,74.15,58.201,34.628,29.816 -2020-09-12 06:45:00,76.25,55.983999999999995,34.628,29.816 -2020-09-12 07:00:00,77.74,52.931999999999995,38.871,29.816 -2020-09-12 07:15:00,80.76,53.872,38.871,29.816 -2020-09-12 07:30:00,82.04,52.38,38.871,29.816 -2020-09-12 07:45:00,79.99,54.251999999999995,38.871,29.816 -2020-09-12 08:00:00,80.65,54.566,43.293,29.816 -2020-09-12 08:15:00,84.33,57.047,43.293,29.816 -2020-09-12 08:30:00,80.92,56.593,43.293,29.816 -2020-09-12 08:45:00,82.18,58.745,43.293,29.816 -2020-09-12 09:00:00,73.56,56.155,44.559,29.816 -2020-09-12 09:15:00,72.42,56.9,44.559,29.816 -2020-09-12 09:30:00,72.7,58.683,44.559,29.816 -2020-09-12 09:45:00,77.44,59.915,44.559,29.816 -2020-09-12 10:00:00,76.92,56.563,42.091,29.816 -2020-09-12 10:15:00,82.93,57.177,42.091,29.816 -2020-09-12 10:30:00,75.13,57.018,42.091,29.816 -2020-09-12 10:45:00,78.26,57.68899999999999,42.091,29.816 -2020-09-12 11:00:00,75.56,54.4,38.505,29.816 -2020-09-12 11:15:00,72.28,54.917,38.505,29.816 -2020-09-12 11:30:00,70.41,55.589,38.505,29.816 -2020-09-12 11:45:00,69.55,55.831,38.505,29.816 -2020-09-12 12:00:00,69.43,52.578,35.388000000000005,29.816 -2020-09-12 12:15:00,67.6,52.043,35.388000000000005,29.816 -2020-09-12 12:30:00,66.35,51.507,35.388000000000005,29.816 -2020-09-12 12:45:00,66.07,52.397,35.388000000000005,29.816 -2020-09-12 13:00:00,63.61,51.104,31.355999999999998,29.816 -2020-09-12 13:15:00,68.82,51.163999999999994,31.355999999999998,29.816 -2020-09-12 13:30:00,66.78,50.739,31.355999999999998,29.816 -2020-09-12 13:45:00,66.36,49.083999999999996,31.355999999999998,29.816 -2020-09-12 14:00:00,68.36,49.22,30.522,29.816 -2020-09-12 14:15:00,69.67,47.583999999999996,30.522,29.816 -2020-09-12 14:30:00,66.25,47.385,30.522,29.816 -2020-09-12 14:45:00,67.5,48.027,30.522,29.816 -2020-09-12 15:00:00,68.44,48.504,34.36,29.816 -2020-09-12 15:15:00,69.12,47.034,34.36,29.816 -2020-09-12 15:30:00,69.44,45.773,34.36,29.816 -2020-09-12 15:45:00,70.61,43.525,34.36,29.816 -2020-09-12 16:00:00,73.84,46.43,39.507,29.816 -2020-09-12 16:15:00,75.23,46.185,39.507,29.816 -2020-09-12 16:30:00,75.45,46.589,39.507,29.816 -2020-09-12 16:45:00,77.86,44.126999999999995,39.507,29.816 -2020-09-12 17:00:00,81.34,46.038000000000004,47.151,29.816 -2020-09-12 17:15:00,84.36,45.433,47.151,29.816 -2020-09-12 17:30:00,82.72,44.951,47.151,29.816 -2020-09-12 17:45:00,83.58,44.531000000000006,47.151,29.816 -2020-09-12 18:00:00,85.61,47.988,50.303999999999995,29.816 -2020-09-12 18:15:00,84.62,48.356,50.303999999999995,29.816 -2020-09-12 18:30:00,89.46,47.836999999999996,50.303999999999995,29.816 -2020-09-12 18:45:00,89.86,48.85,50.303999999999995,29.816 -2020-09-12 19:00:00,88.15,51.066,50.622,29.816 -2020-09-12 19:15:00,83.92,49.538000000000004,50.622,29.816 -2020-09-12 19:30:00,83.24,49.269,50.622,29.816 -2020-09-12 19:45:00,82.65,49.957,50.622,29.816 -2020-09-12 20:00:00,80.31,49.22,45.391000000000005,29.816 -2020-09-12 20:15:00,77.48,49.12,45.391000000000005,29.816 -2020-09-12 20:30:00,76.12,47.223,45.391000000000005,29.816 -2020-09-12 20:45:00,75.87,47.74100000000001,45.391000000000005,29.816 -2020-09-12 21:00:00,71.68,46.589,39.98,29.816 -2020-09-12 21:15:00,70.68,49.358999999999995,39.98,29.816 -2020-09-12 21:30:00,68.86,49.309,39.98,29.816 -2020-09-12 21:45:00,68.45,48.352,39.98,29.816 -2020-09-12 22:00:00,64.74,45.873999999999995,37.53,29.816 -2020-09-12 22:15:00,65.48,46.672,37.53,29.816 -2020-09-12 22:30:00,62.36,44.59,37.53,29.816 -2020-09-12 22:45:00,62.8,42.88,37.53,29.816 -2020-09-12 23:00:00,57.88,41.266999999999996,30.97,29.816 -2020-09-12 23:15:00,56.65,38.785,30.97,29.816 -2020-09-12 23:30:00,58.13,38.875,30.97,29.816 -2020-09-12 23:45:00,57.91,37.913000000000004,30.97,29.816 -2020-09-13 00:00:00,53.28,32.799,27.24,29.816 -2020-09-13 00:15:00,53.54,31.384,27.24,29.816 -2020-09-13 00:30:00,53.48,30.849,27.24,29.816 -2020-09-13 00:45:00,53.88,30.689,27.24,29.816 -2020-09-13 01:00:00,51.24,30.398000000000003,25.662,29.816 -2020-09-13 01:15:00,52.62,29.816,25.662,29.816 -2020-09-13 01:30:00,52.7,28.694000000000003,25.662,29.816 -2020-09-13 01:45:00,52.44,28.274,25.662,29.816 -2020-09-13 02:00:00,53.25,28.054000000000002,25.67,29.816 -2020-09-13 02:15:00,52.44,27.636999999999997,25.67,29.816 -2020-09-13 02:30:00,51.82,28.238000000000003,25.67,29.816 -2020-09-13 02:45:00,51.81,28.935,25.67,29.816 -2020-09-13 03:00:00,50.96,29.924,24.258000000000003,29.816 -2020-09-13 03:15:00,52.6,27.941,24.258000000000003,29.816 -2020-09-13 03:30:00,52.63,27.311,24.258000000000003,29.816 -2020-09-13 03:45:00,52.9,28.666999999999998,24.258000000000003,29.816 -2020-09-13 04:00:00,53.7,33.546,25.051,29.816 -2020-09-13 04:15:00,54.59,38.092,25.051,29.816 -2020-09-13 04:30:00,54.4,35.829,25.051,29.816 -2020-09-13 04:45:00,55.85,35.528,25.051,29.816 -2020-09-13 05:00:00,57.42,44.011,25.145,29.816 -2020-09-13 05:15:00,58.05,44.397,25.145,29.816 -2020-09-13 05:30:00,55.99,39.544000000000004,25.145,29.816 -2020-09-13 05:45:00,56.86,39.168,25.145,29.816 -2020-09-13 06:00:00,57.81,49.345,26.371,29.816 -2020-09-13 06:15:00,58.65,60.265,26.371,29.816 -2020-09-13 06:30:00,58.81,54.775,26.371,29.816 -2020-09-13 06:45:00,60.74,51.551,26.371,29.816 -2020-09-13 07:00:00,61.74,49.041000000000004,28.756999999999998,29.816 -2020-09-13 07:15:00,61.61,48.45,28.756999999999998,29.816 -2020-09-13 07:30:00,61.01,47.961999999999996,28.756999999999998,29.816 -2020-09-13 07:45:00,61.51,49.708999999999996,28.756999999999998,29.816 -2020-09-13 08:00:00,61.6,50.91,32.82,29.816 -2020-09-13 08:15:00,63.67,54.369,32.82,29.816 -2020-09-13 08:30:00,61.43,54.89,32.82,29.816 -2020-09-13 08:45:00,60.33,57.203,32.82,29.816 -2020-09-13 09:00:00,58.83,54.472,35.534,29.816 -2020-09-13 09:15:00,60.35,54.845,35.534,29.816 -2020-09-13 09:30:00,60.42,56.964,35.534,29.816 -2020-09-13 09:45:00,60.83,59.023999999999994,35.534,29.816 -2020-09-13 10:00:00,61.52,56.451,35.925,29.816 -2020-09-13 10:15:00,63.03,57.215,35.925,29.816 -2020-09-13 10:30:00,64.13,57.315,35.925,29.816 -2020-09-13 10:45:00,64.9,58.61,35.925,29.816 -2020-09-13 11:00:00,61.16,55.151,37.056,29.816 -2020-09-13 11:15:00,60.3,55.281000000000006,37.056,29.816 -2020-09-13 11:30:00,56.6,56.294,37.056,29.816 -2020-09-13 11:45:00,58.49,56.818000000000005,37.056,29.816 -2020-09-13 12:00:00,52.37,54.376999999999995,33.124,29.816 -2020-09-13 12:15:00,54.75,53.535,33.124,29.816 -2020-09-13 12:30:00,50.06,53.025,33.124,29.816 -2020-09-13 12:45:00,50.17,53.224,33.124,29.816 -2020-09-13 13:00:00,49.32,51.556999999999995,29.874000000000002,29.816 -2020-09-13 13:15:00,49.67,51.497,29.874000000000002,29.816 -2020-09-13 13:30:00,48.44,50.077,29.874000000000002,29.816 -2020-09-13 13:45:00,49.63,49.31399999999999,29.874000000000002,29.816 -2020-09-13 14:00:00,49.39,50.481,27.302,29.816 -2020-09-13 14:15:00,50.02,49.385,27.302,29.816 -2020-09-13 14:30:00,50.96,48.302,27.302,29.816 -2020-09-13 14:45:00,52.31,47.96,27.302,29.816 -2020-09-13 15:00:00,52.47,48.31100000000001,27.642,29.816 -2020-09-13 15:15:00,56.04,46.251000000000005,27.642,29.816 -2020-09-13 15:30:00,55.91,44.931000000000004,27.642,29.816 -2020-09-13 15:45:00,58.62,43.033,27.642,29.816 -2020-09-13 16:00:00,63.63,44.687,31.945999999999998,29.816 -2020-09-13 16:15:00,63.63,44.543,31.945999999999998,29.816 -2020-09-13 16:30:00,67.25,45.853,31.945999999999998,29.816 -2020-09-13 16:45:00,69.54,43.519,31.945999999999998,29.816 -2020-09-13 17:00:00,73.29,45.705,40.387,29.816 -2020-09-13 17:15:00,75.48,46.41,40.387,29.816 -2020-09-13 17:30:00,76.49,46.678000000000004,40.387,29.816 -2020-09-13 17:45:00,80.06,46.943999999999996,40.387,29.816 -2020-09-13 18:00:00,80.24,50.817,44.575,29.816 -2020-09-13 18:15:00,80.31,50.998000000000005,44.575,29.816 -2020-09-13 18:30:00,86.23,50.026,44.575,29.816 -2020-09-13 18:45:00,84.95,51.357,44.575,29.816 -2020-09-13 19:00:00,83.91,55.43899999999999,45.623999999999995,29.816 -2020-09-13 19:15:00,82.55,53.001000000000005,45.623999999999995,29.816 -2020-09-13 19:30:00,81.33,52.494,45.623999999999995,29.816 -2020-09-13 19:45:00,82.57,52.943999999999996,45.623999999999995,29.816 -2020-09-13 20:00:00,82.59,52.394,44.583999999999996,29.816 -2020-09-13 20:15:00,85.52,52.29,44.583999999999996,29.816 -2020-09-13 20:30:00,81.65,51.228,44.583999999999996,29.816 -2020-09-13 20:45:00,80.24,50.083999999999996,44.583999999999996,29.816 -2020-09-13 21:00:00,74.96,48.508,39.732,29.816 -2020-09-13 21:15:00,80.14,50.928000000000004,39.732,29.816 -2020-09-13 21:30:00,82.33,50.347,39.732,29.816 -2020-09-13 21:45:00,81.42,49.684,39.732,29.816 -2020-09-13 22:00:00,76.5,48.83,38.571,29.816 -2020-09-13 22:15:00,71.7,48.037,38.571,29.816 -2020-09-13 22:30:00,69.2,45.117,38.571,29.816 -2020-09-13 22:45:00,69.21,42.193000000000005,38.571,29.816 -2020-09-13 23:00:00,66.31,40.039,33.121,29.816 -2020-09-13 23:15:00,68.89,38.861,33.121,29.816 -2020-09-13 23:30:00,67.54,38.577,33.121,29.816 -2020-09-13 23:45:00,72.63,37.861999999999995,33.121,29.816 -2020-09-14 00:00:00,70.49,34.855,32.506,29.93 -2020-09-14 00:15:00,71.68,34.483000000000004,32.506,29.93 -2020-09-14 00:30:00,66.33,33.631,32.506,29.93 -2020-09-14 00:45:00,63.56,33.067,32.506,29.93 -2020-09-14 01:00:00,65.34,33.099000000000004,31.121,29.93 -2020-09-14 01:15:00,71.25,32.488,31.121,29.93 -2020-09-14 01:30:00,71.36,31.708000000000002,31.121,29.93 -2020-09-14 01:45:00,70.39,31.218000000000004,31.121,29.93 -2020-09-14 02:00:00,67.0,31.398000000000003,29.605999999999998,29.93 -2020-09-14 02:15:00,72.09,30.285,29.605999999999998,29.93 -2020-09-14 02:30:00,73.13,31.045,29.605999999999998,29.93 -2020-09-14 02:45:00,72.63,31.535,29.605999999999998,29.93 -2020-09-14 03:00:00,70.81,33.106,28.124000000000002,29.93 -2020-09-14 03:15:00,74.52,31.967,28.124000000000002,29.93 -2020-09-14 03:30:00,76.44,31.909000000000002,28.124000000000002,29.93 -2020-09-14 03:45:00,75.06,32.779,28.124000000000002,29.93 -2020-09-14 04:00:00,77.33,40.942,29.743000000000002,29.93 -2020-09-14 04:15:00,83.88,48.583999999999996,29.743000000000002,29.93 -2020-09-14 04:30:00,89.01,46.166000000000004,29.743000000000002,29.93 -2020-09-14 04:45:00,92.93,46.215,29.743000000000002,29.93 -2020-09-14 05:00:00,94.93,62.798,36.191,29.93 -2020-09-14 05:15:00,104.51,74.667,36.191,29.93 -2020-09-14 05:30:00,102.86,68.46,36.191,29.93 -2020-09-14 05:45:00,103.19,64.678,36.191,29.93 -2020-09-14 06:00:00,108.82,63.763999999999996,55.277,29.93 -2020-09-14 06:15:00,111.8,65.002,55.277,29.93 -2020-09-14 06:30:00,112.82,63.923,55.277,29.93 -2020-09-14 06:45:00,111.4,66.351,55.277,29.93 -2020-09-14 07:00:00,115.98,64.559,65.697,29.93 -2020-09-14 07:15:00,110.78,66.132,65.697,29.93 -2020-09-14 07:30:00,110.77,64.83,65.697,29.93 -2020-09-14 07:45:00,108.81,66.53399999999999,65.697,29.93 -2020-09-14 08:00:00,107.66,65.313,57.028,29.93 -2020-09-14 08:15:00,106.67,67.42,57.028,29.93 -2020-09-14 08:30:00,111.75,66.61,57.028,29.93 -2020-09-14 08:45:00,114.96,68.684,57.028,29.93 -2020-09-14 09:00:00,107.61,64.957,52.633,29.93 -2020-09-14 09:15:00,104.76,63.328,52.633,29.93 -2020-09-14 09:30:00,104.17,64.493,52.633,29.93 -2020-09-14 09:45:00,103.52,64.554,52.633,29.93 -2020-09-14 10:00:00,104.08,62.263000000000005,50.647,29.93 -2020-09-14 10:15:00,103.09,62.821000000000005,50.647,29.93 -2020-09-14 10:30:00,103.8,62.4,50.647,29.93 -2020-09-14 10:45:00,103.53,62.397,50.647,29.93 -2020-09-14 11:00:00,102.76,58.821999999999996,50.245,29.93 -2020-09-14 11:15:00,103.69,59.413000000000004,50.245,29.93 -2020-09-14 11:30:00,102.69,61.208,50.245,29.93 -2020-09-14 11:45:00,105.2,62.097,50.245,29.93 -2020-09-14 12:00:00,101.81,58.416000000000004,46.956,29.93 -2020-09-14 12:15:00,103.71,57.656000000000006,46.956,29.93 -2020-09-14 12:30:00,101.04,56.28,46.956,29.93 -2020-09-14 12:45:00,103.68,56.665,46.956,29.93 -2020-09-14 13:00:00,99.52,55.81399999999999,47.383,29.93 -2020-09-14 13:15:00,98.82,54.8,47.383,29.93 -2020-09-14 13:30:00,100.67,53.45399999999999,47.383,29.93 -2020-09-14 13:45:00,102.23,53.481,47.383,29.93 -2020-09-14 14:00:00,102.81,53.742,47.1,29.93 -2020-09-14 14:15:00,100.22,53.089,47.1,29.93 -2020-09-14 14:30:00,100.3,51.821999999999996,47.1,29.93 -2020-09-14 14:45:00,98.73,53.272,47.1,29.93 -2020-09-14 15:00:00,99.67,53.479,49.355,29.93 -2020-09-14 15:15:00,101.22,50.736999999999995,49.355,29.93 -2020-09-14 15:30:00,103.35,50.004,49.355,29.93 -2020-09-14 15:45:00,102.28,47.64,49.355,29.93 -2020-09-14 16:00:00,103.7,50.174,52.14,29.93 -2020-09-14 16:15:00,104.69,50.006,52.14,29.93 -2020-09-14 16:30:00,107.28,50.61,52.14,29.93 -2020-09-14 16:45:00,109.54,48.20399999999999,52.14,29.93 -2020-09-14 17:00:00,111.52,49.339,58.705,29.93 -2020-09-14 17:15:00,109.57,50.282,58.705,29.93 -2020-09-14 17:30:00,112.39,50.155,58.705,29.93 -2020-09-14 17:45:00,111.73,49.925,58.705,29.93 -2020-09-14 18:00:00,113.13,52.857,59.153,29.93 -2020-09-14 18:15:00,111.59,51.177,59.153,29.93 -2020-09-14 18:30:00,117.13,49.633,59.153,29.93 -2020-09-14 18:45:00,115.67,53.824,59.153,29.93 -2020-09-14 19:00:00,112.01,57.446000000000005,61.483000000000004,29.93 -2020-09-14 19:15:00,107.89,56.045,61.483000000000004,29.93 -2020-09-14 19:30:00,105.2,55.27,61.483000000000004,29.93 -2020-09-14 19:45:00,108.61,55.082,61.483000000000004,29.93 -2020-09-14 20:00:00,105.34,53.168,67.55,29.93 -2020-09-14 20:15:00,106.11,54.007,67.55,29.93 -2020-09-14 20:30:00,103.61,53.163000000000004,67.55,29.93 -2020-09-14 20:45:00,94.43,52.355,67.55,29.93 -2020-09-14 21:00:00,92.43,50.291000000000004,60.026,29.93 -2020-09-14 21:15:00,89.42,52.953,60.026,29.93 -2020-09-14 21:30:00,85.77,52.648999999999994,60.026,29.93 -2020-09-14 21:45:00,91.92,51.695,60.026,29.93 -2020-09-14 22:00:00,88.36,48.677,52.736999999999995,29.93 -2020-09-14 22:15:00,88.46,49.465,52.736999999999995,29.93 -2020-09-14 22:30:00,82.45,41.596000000000004,52.736999999999995,29.93 -2020-09-14 22:45:00,82.32,38.1,52.736999999999995,29.93 -2020-09-14 23:00:00,80.56,36.128,44.408,29.93 -2020-09-14 23:15:00,81.23,33.766,44.408,29.93 -2020-09-14 23:30:00,76.93,33.77,44.408,29.93 -2020-09-14 23:45:00,75.97,32.887,44.408,29.93 -2020-09-15 00:00:00,76.99,32.999,44.438,29.93 -2020-09-15 00:15:00,79.26,33.558,44.438,29.93 -2020-09-15 00:30:00,78.82,33.234,44.438,29.93 -2020-09-15 00:45:00,74.27,33.263000000000005,44.438,29.93 -2020-09-15 01:00:00,70.44,32.773,41.468999999999994,29.93 -2020-09-15 01:15:00,74.86,32.23,41.468999999999994,29.93 -2020-09-15 01:30:00,77.73,31.374000000000002,41.468999999999994,29.93 -2020-09-15 01:45:00,78.5,30.465999999999998,41.468999999999994,29.93 -2020-09-15 02:00:00,77.58,30.223000000000003,39.708,29.93 -2020-09-15 02:15:00,76.77,30.145,39.708,29.93 -2020-09-15 02:30:00,78.83,30.465,39.708,29.93 -2020-09-15 02:45:00,78.93,31.241,39.708,29.93 -2020-09-15 03:00:00,79.89,32.166,38.919000000000004,29.93 -2020-09-15 03:15:00,80.14,31.774,38.919000000000004,29.93 -2020-09-15 03:30:00,82.91,31.75,38.919000000000004,29.93 -2020-09-15 03:45:00,83.91,31.641,38.919000000000004,29.93 -2020-09-15 04:00:00,85.18,38.702,40.092,29.93 -2020-09-15 04:15:00,89.49,46.347,40.092,29.93 -2020-09-15 04:30:00,94.24,43.79600000000001,40.092,29.93 -2020-09-15 04:45:00,96.41,44.424,40.092,29.93 -2020-09-15 05:00:00,99.04,63.07899999999999,43.713,29.93 -2020-09-15 05:15:00,103.98,75.593,43.713,29.93 -2020-09-15 05:30:00,107.4,69.36,43.713,29.93 -2020-09-15 05:45:00,109.39,64.872,43.713,29.93 -2020-09-15 06:00:00,117.19,64.73100000000001,56.033,29.93 -2020-09-15 06:15:00,114.09,66.351,56.033,29.93 -2020-09-15 06:30:00,115.14,64.90899999999999,56.033,29.93 -2020-09-15 06:45:00,116.49,66.49600000000001,56.033,29.93 -2020-09-15 07:00:00,118.41,64.818,66.003,29.93 -2020-09-15 07:15:00,117.26,66.15899999999999,66.003,29.93 -2020-09-15 07:30:00,117.65,64.84100000000001,66.003,29.93 -2020-09-15 07:45:00,116.28,65.70100000000001,66.003,29.93 -2020-09-15 08:00:00,113.85,64.434,57.474,29.93 -2020-09-15 08:15:00,110.41,65.98100000000001,57.474,29.93 -2020-09-15 08:30:00,110.67,65.303,57.474,29.93 -2020-09-15 08:45:00,110.98,66.51,57.474,29.93 -2020-09-15 09:00:00,110.26,62.99100000000001,51.928000000000004,29.93 -2020-09-15 09:15:00,109.79,61.425,51.928000000000004,29.93 -2020-09-15 09:30:00,108.62,63.258,51.928000000000004,29.93 -2020-09-15 09:45:00,108.66,64.442,51.928000000000004,29.93 -2020-09-15 10:00:00,108.71,60.86600000000001,49.46,29.93 -2020-09-15 10:15:00,108.89,61.133,49.46,29.93 -2020-09-15 10:30:00,108.34,60.746,49.46,29.93 -2020-09-15 10:45:00,108.25,61.647,49.46,29.93 -2020-09-15 11:00:00,106.43,58.276,48.206,29.93 -2020-09-15 11:15:00,104.48,59.166000000000004,48.206,29.93 -2020-09-15 11:30:00,106.87,59.805,48.206,29.93 -2020-09-15 11:45:00,104.72,60.371,48.206,29.93 -2020-09-15 12:00:00,102.62,56.325,46.285,29.93 -2020-09-15 12:15:00,101.2,55.792,46.285,29.93 -2020-09-15 12:30:00,102.37,55.288999999999994,46.285,29.93 -2020-09-15 12:45:00,101.53,56.23,46.285,29.93 -2020-09-15 13:00:00,101.21,54.992,46.861999999999995,29.93 -2020-09-15 13:15:00,100.74,55.506,46.861999999999995,29.93 -2020-09-15 13:30:00,100.23,54.276,46.861999999999995,29.93 -2020-09-15 13:45:00,102.07,53.488,46.861999999999995,29.93 -2020-09-15 14:00:00,100.98,54.14,46.488,29.93 -2020-09-15 14:15:00,101.37,53.342,46.488,29.93 -2020-09-15 14:30:00,102.21,52.472,46.488,29.93 -2020-09-15 14:45:00,104.2,53.218,46.488,29.93 -2020-09-15 15:00:00,103.31,53.176,48.442,29.93 -2020-09-15 15:15:00,105.66,51.303999999999995,48.442,29.93 -2020-09-15 15:30:00,104.22,50.43899999999999,48.442,29.93 -2020-09-15 15:45:00,106.45,48.342,48.442,29.93 -2020-09-15 16:00:00,107.2,50.266000000000005,50.397,29.93 -2020-09-15 16:15:00,108.47,50.245,50.397,29.93 -2020-09-15 16:30:00,111.24,50.597,50.397,29.93 -2020-09-15 16:45:00,112.38,48.913000000000004,50.397,29.93 -2020-09-15 17:00:00,118.39,50.25899999999999,56.668,29.93 -2020-09-15 17:15:00,113.96,51.603,56.668,29.93 -2020-09-15 17:30:00,113.72,51.18,56.668,29.93 -2020-09-15 17:45:00,114.84,50.68,56.668,29.93 -2020-09-15 18:00:00,117.58,52.738,57.957,29.93 -2020-09-15 18:15:00,116.18,52.331,57.957,29.93 -2020-09-15 18:30:00,120.29,50.532,57.957,29.93 -2020-09-15 18:45:00,119.15,54.638999999999996,57.957,29.93 -2020-09-15 19:00:00,120.04,57.236000000000004,57.056000000000004,29.93 -2020-09-15 19:15:00,118.63,55.964,57.056000000000004,29.93 -2020-09-15 19:30:00,113.73,54.924,57.056000000000004,29.93 -2020-09-15 19:45:00,113.54,55.038000000000004,57.056000000000004,29.93 -2020-09-15 20:00:00,105.26,53.512,64.156,29.93 -2020-09-15 20:15:00,101.39,52.998000000000005,64.156,29.93 -2020-09-15 20:30:00,98.17,52.282,64.156,29.93 -2020-09-15 20:45:00,97.7,51.735,64.156,29.93 -2020-09-15 21:00:00,98.43,50.36600000000001,56.507,29.93 -2020-09-15 21:15:00,100.0,51.815,56.507,29.93 -2020-09-15 21:30:00,94.23,51.591,56.507,29.93 -2020-09-15 21:45:00,89.6,50.799,56.507,29.93 -2020-09-15 22:00:00,85.63,48.097,50.728,29.93 -2020-09-15 22:15:00,88.34,48.534,50.728,29.93 -2020-09-15 22:30:00,87.42,40.913000000000004,50.728,29.93 -2020-09-15 22:45:00,85.3,37.449,50.728,29.93 -2020-09-15 23:00:00,78.95,34.841,43.556999999999995,29.93 -2020-09-15 23:15:00,83.3,33.741,43.556999999999995,29.93 -2020-09-15 23:30:00,83.87,33.709,43.556999999999995,29.93 -2020-09-15 23:45:00,78.6,32.943000000000005,43.556999999999995,29.93 -2020-09-16 00:00:00,73.44,39.084,41.151,29.93 -2020-09-16 00:15:00,73.98,39.830999999999996,41.151,29.93 -2020-09-16 00:30:00,78.99,39.635,41.151,29.93 -2020-09-16 00:45:00,80.82,39.476,41.151,29.93 -2020-09-16 01:00:00,76.35,39.616,37.763000000000005,29.93 -2020-09-16 01:15:00,73.59,38.859,37.763000000000005,29.93 -2020-09-16 01:30:00,72.26,37.896,37.763000000000005,29.93 -2020-09-16 01:45:00,78.96,37.031,37.763000000000005,29.93 -2020-09-16 02:00:00,78.44,37.302,35.615,29.93 -2020-09-16 02:15:00,78.12,37.166,35.615,29.93 -2020-09-16 02:30:00,72.51,37.736,35.615,29.93 -2020-09-16 02:45:00,78.41,38.519,35.615,29.93 -2020-09-16 03:00:00,82.31,40.568000000000005,35.153,29.93 -2020-09-16 03:15:00,81.48,40.628,35.153,29.93 -2020-09-16 03:30:00,78.89,40.606,35.153,29.93 -2020-09-16 03:45:00,80.9,41.105,35.153,29.93 -2020-09-16 04:00:00,85.15,49.181000000000004,36.203,29.93 -2020-09-16 04:15:00,89.89,57.271,36.203,29.93 -2020-09-16 04:30:00,92.92,55.732,36.203,29.93 -2020-09-16 04:45:00,92.18,56.861000000000004,36.203,29.93 -2020-09-16 05:00:00,99.03,78.215,39.922,29.93 -2020-09-16 05:15:00,104.76,95.447,39.922,29.93 -2020-09-16 05:30:00,108.0,89.35799999999999,39.922,29.93 -2020-09-16 05:45:00,109.51,83.431,39.922,29.93 -2020-09-16 06:00:00,113.65,83.573,56.443999999999996,29.93 -2020-09-16 06:15:00,114.5,86.17,56.443999999999996,29.93 -2020-09-16 06:30:00,115.4,84.446,56.443999999999996,29.93 -2020-09-16 06:45:00,117.08,85.50399999999999,56.443999999999996,29.93 -2020-09-16 07:00:00,119.77,85.01899999999999,68.683,29.93 -2020-09-16 07:15:00,119.16,86.70100000000001,68.683,29.93 -2020-09-16 07:30:00,124.41,85.609,68.683,29.93 -2020-09-16 07:45:00,120.27,86.053,68.683,29.93 -2020-09-16 08:00:00,119.32,82.478,59.003,29.93 -2020-09-16 08:15:00,118.97,83.669,59.003,29.93 -2020-09-16 08:30:00,117.59,81.854,59.003,29.93 -2020-09-16 08:45:00,117.4,82.26899999999999,59.003,29.93 -2020-09-16 09:00:00,118.31,76.666,56.21,29.93 -2020-09-16 09:15:00,120.11,74.795,56.21,29.93 -2020-09-16 09:30:00,122.52,75.825,56.21,29.93 -2020-09-16 09:45:00,124.42,76.199,56.21,29.93 -2020-09-16 10:00:00,126.1,73.703,52.358999999999995,29.93 -2020-09-16 10:15:00,126.69,73.807,52.358999999999995,29.93 -2020-09-16 10:30:00,121.23,73.306,52.358999999999995,29.93 -2020-09-16 10:45:00,118.65,73.608,52.358999999999995,29.93 -2020-09-16 11:00:00,109.55,71.77600000000001,51.161,29.93 -2020-09-16 11:15:00,111.88,72.722,51.161,29.93 -2020-09-16 11:30:00,117.41,73.042,51.161,29.93 -2020-09-16 11:45:00,116.4,72.767,51.161,29.93 -2020-09-16 12:00:00,107.59,70.317,49.119,29.93 -2020-09-16 12:15:00,105.17,70.104,49.119,29.93 -2020-09-16 12:30:00,102.46,69.05199999999999,49.119,29.93 -2020-09-16 12:45:00,103.14,69.616,49.119,29.93 -2020-09-16 13:00:00,101.75,69.403,49.187,29.93 -2020-09-16 13:15:00,101.95,69.571,49.187,29.93 -2020-09-16 13:30:00,104.52,68.53399999999999,49.187,29.93 -2020-09-16 13:45:00,101.25,67.885,49.187,29.93 -2020-09-16 14:00:00,102.1,68.471,49.787,29.93 -2020-09-16 14:15:00,103.0,68.127,49.787,29.93 -2020-09-16 14:30:00,103.44,66.956,49.787,29.93 -2020-09-16 14:45:00,104.37,67.27600000000001,49.787,29.93 -2020-09-16 15:00:00,102.18,67.498,51.458999999999996,29.93 -2020-09-16 15:15:00,104.63,66.195,51.458999999999996,29.93 -2020-09-16 15:30:00,104.49,65.661,51.458999999999996,29.93 -2020-09-16 15:45:00,106.34,64.396,51.458999999999996,29.93 -2020-09-16 16:00:00,111.51,65.649,53.663000000000004,29.93 -2020-09-16 16:15:00,108.92,65.133,53.663000000000004,29.93 -2020-09-16 16:30:00,110.62,65.763,53.663000000000004,29.93 -2020-09-16 16:45:00,111.54,63.458999999999996,53.663000000000004,29.93 -2020-09-16 17:00:00,116.11,64.80199999999999,58.183,29.93 -2020-09-16 17:15:00,114.55,65.96,58.183,29.93 -2020-09-16 17:30:00,114.66,65.595,58.183,29.93 -2020-09-16 17:45:00,115.07,65.561,58.183,29.93 -2020-09-16 18:00:00,117.2,65.617,60.141000000000005,29.93 -2020-09-16 18:15:00,116.17,65.419,60.141000000000005,29.93 -2020-09-16 18:30:00,119.01,64.142,60.141000000000005,29.93 -2020-09-16 18:45:00,118.27,68.15,60.141000000000005,29.93 -2020-09-16 19:00:00,116.67,67.969,60.582,29.93 -2020-09-16 19:15:00,116.96,66.834,60.582,29.93 -2020-09-16 19:30:00,113.33,66.178,60.582,29.93 -2020-09-16 19:45:00,115.63,66.4,60.582,29.93 -2020-09-16 20:00:00,104.66,64.4,66.61,29.93 -2020-09-16 20:15:00,107.17,62.825,66.61,29.93 -2020-09-16 20:30:00,104.72,61.527,66.61,29.93 -2020-09-16 20:45:00,104.85,61.146,66.61,29.93 -2020-09-16 21:00:00,98.44,59.425,57.658,29.93 -2020-09-16 21:15:00,92.27,60.768,57.658,29.93 -2020-09-16 21:30:00,95.86,59.723,57.658,29.93 -2020-09-16 21:45:00,94.6,58.926,57.658,29.93 -2020-09-16 22:00:00,90.23,57.67,51.81,29.93 -2020-09-16 22:15:00,84.5,56.826,51.81,29.93 -2020-09-16 22:30:00,82.73,48.071000000000005,51.81,29.93 -2020-09-16 22:45:00,80.31,44.38,51.81,29.93 -2020-09-16 23:00:00,82.5,40.444,42.93600000000001,29.93 -2020-09-16 23:15:00,82.69,40.001999999999995,42.93600000000001,29.93 -2020-09-16 23:30:00,82.91,40.023,42.93600000000001,29.93 -2020-09-16 23:45:00,78.13,39.402,42.93600000000001,29.93 -2020-09-17 00:00:00,79.44,39.347,39.211,29.93 -2020-09-17 00:15:00,80.59,40.09,39.211,29.93 -2020-09-17 00:30:00,78.36,39.903,39.211,29.93 -2020-09-17 00:45:00,75.57,39.747,39.211,29.93 -2020-09-17 01:00:00,79.12,39.88,37.607,29.93 -2020-09-17 01:15:00,78.2,39.145,37.607,29.93 -2020-09-17 01:30:00,77.23,38.2,37.607,29.93 -2020-09-17 01:45:00,74.58,37.333,37.607,29.93 -2020-09-17 02:00:00,78.04,37.611,36.44,29.93 -2020-09-17 02:15:00,79.78,37.494,36.44,29.93 -2020-09-17 02:30:00,76.24,38.041,36.44,29.93 -2020-09-17 02:45:00,75.01,38.82,36.44,29.93 -2020-09-17 03:00:00,77.9,40.855,36.116,29.93 -2020-09-17 03:15:00,79.65,40.934,36.116,29.93 -2020-09-17 03:30:00,81.81,40.917,36.116,29.93 -2020-09-17 03:45:00,78.48,41.401,36.116,29.93 -2020-09-17 04:00:00,87.76,49.50899999999999,37.398,29.93 -2020-09-17 04:15:00,91.21,57.629,37.398,29.93 -2020-09-17 04:30:00,95.34,56.093999999999994,37.398,29.93 -2020-09-17 04:45:00,94.05,57.232,37.398,29.93 -2020-09-17 05:00:00,98.21,78.67699999999999,41.776,29.93 -2020-09-17 05:15:00,104.48,96.00299999999999,41.776,29.93 -2020-09-17 05:30:00,108.42,89.899,41.776,29.93 -2020-09-17 05:45:00,108.7,83.925,41.776,29.93 -2020-09-17 06:00:00,114.23,84.03399999999999,55.61,29.93 -2020-09-17 06:15:00,113.86,86.65299999999999,55.61,29.93 -2020-09-17 06:30:00,116.05,84.93299999999999,55.61,29.93 -2020-09-17 06:45:00,116.34,85.98899999999999,55.61,29.93 -2020-09-17 07:00:00,117.73,85.50200000000001,67.13600000000001,29.93 -2020-09-17 07:15:00,117.01,87.2,67.13600000000001,29.93 -2020-09-17 07:30:00,115.49,86.14299999999999,67.13600000000001,29.93 -2020-09-17 07:45:00,114.64,86.59,67.13600000000001,29.93 -2020-09-17 08:00:00,113.27,83.023,57.55,29.93 -2020-09-17 08:15:00,113.0,84.181,57.55,29.93 -2020-09-17 08:30:00,112.72,82.383,57.55,29.93 -2020-09-17 08:45:00,115.23,82.779,57.55,29.93 -2020-09-17 09:00:00,116.21,77.181,52.931999999999995,29.93 -2020-09-17 09:15:00,118.42,75.3,52.931999999999995,29.93 -2020-09-17 09:30:00,115.37,76.311,52.931999999999995,29.93 -2020-09-17 09:45:00,110.86,76.655,52.931999999999995,29.93 -2020-09-17 10:00:00,114.03,74.156,50.36600000000001,29.93 -2020-09-17 10:15:00,117.04,74.223,50.36600000000001,29.93 -2020-09-17 10:30:00,119.88,73.707,50.36600000000001,29.93 -2020-09-17 10:45:00,114.08,73.994,50.36600000000001,29.93 -2020-09-17 11:00:00,112.85,72.17399999999999,47.893,29.93 -2020-09-17 11:15:00,111.3,73.104,47.893,29.93 -2020-09-17 11:30:00,112.41,73.421,47.893,29.93 -2020-09-17 11:45:00,109.95,73.13,47.893,29.93 -2020-09-17 12:00:00,109.44,70.656,45.271,29.93 -2020-09-17 12:15:00,107.34,70.431,45.271,29.93 -2020-09-17 12:30:00,105.72,69.41,45.271,29.93 -2020-09-17 12:45:00,114.51,69.967,45.271,29.93 -2020-09-17 13:00:00,108.61,69.725,44.351000000000006,29.93 -2020-09-17 13:15:00,107.32,69.892,44.351000000000006,29.93 -2020-09-17 13:30:00,104.8,68.85300000000001,44.351000000000006,29.93 -2020-09-17 13:45:00,105.93,68.209,44.351000000000006,29.93 -2020-09-17 14:00:00,105.83,68.747,44.99,29.93 -2020-09-17 14:15:00,108.76,68.418,44.99,29.93 -2020-09-17 14:30:00,104.88,67.279,44.99,29.93 -2020-09-17 14:45:00,103.7,67.595,44.99,29.93 -2020-09-17 15:00:00,105.59,67.77199999999999,46.869,29.93 -2020-09-17 15:15:00,105.16,66.488,46.869,29.93 -2020-09-17 15:30:00,103.15,65.985,46.869,29.93 -2020-09-17 15:45:00,107.04,64.735,46.869,29.93 -2020-09-17 16:00:00,107.68,65.949,48.902,29.93 -2020-09-17 16:15:00,110.33,65.449,48.902,29.93 -2020-09-17 16:30:00,109.86,66.07600000000001,48.902,29.93 -2020-09-17 16:45:00,111.84,63.827,48.902,29.93 -2020-09-17 17:00:00,114.46,65.133,53.244,29.93 -2020-09-17 17:15:00,113.14,66.313,53.244,29.93 -2020-09-17 17:30:00,113.05,65.952,53.244,29.93 -2020-09-17 17:45:00,114.69,65.947,53.244,29.93 -2020-09-17 18:00:00,115.77,65.985,54.343999999999994,29.93 -2020-09-17 18:15:00,118.59,65.783,54.343999999999994,29.93 -2020-09-17 18:30:00,118.36,64.518,54.343999999999994,29.93 -2020-09-17 18:45:00,120.85,68.518,54.343999999999994,29.93 -2020-09-17 19:00:00,115.71,68.35,54.332,29.93 -2020-09-17 19:15:00,116.59,67.211,54.332,29.93 -2020-09-17 19:30:00,109.14,66.551,54.332,29.93 -2020-09-17 19:45:00,110.22,66.765,54.332,29.93 -2020-09-17 20:00:00,101.81,64.786,58.06,29.93 -2020-09-17 20:15:00,102.55,63.208,58.06,29.93 -2020-09-17 20:30:00,100.73,61.886,58.06,29.93 -2020-09-17 20:45:00,100.68,61.467,58.06,29.93 -2020-09-17 21:00:00,95.01,59.748999999999995,52.411,29.93 -2020-09-17 21:15:00,100.41,61.083,52.411,29.93 -2020-09-17 21:30:00,97.41,60.045,52.411,29.93 -2020-09-17 21:45:00,94.7,59.213,52.411,29.93 -2020-09-17 22:00:00,85.44,57.93899999999999,47.148999999999994,29.93 -2020-09-17 22:15:00,89.95,57.071000000000005,47.148999999999994,29.93 -2020-09-17 22:30:00,89.79,48.309,47.148999999999994,29.93 -2020-09-17 22:45:00,89.53,44.622,47.148999999999994,29.93 -2020-09-17 23:00:00,81.01,40.726,40.814,29.93 -2020-09-17 23:15:00,79.55,40.256,40.814,29.93 -2020-09-17 23:30:00,83.76,40.281,40.814,29.93 -2020-09-17 23:45:00,83.95,39.659,40.814,29.93 -2020-09-18 00:00:00,80.29,38.004,39.153,29.93 -2020-09-18 00:15:00,74.72,38.957,39.153,29.93 -2020-09-18 00:30:00,73.6,38.939,39.153,29.93 -2020-09-18 00:45:00,72.77,39.126,39.153,29.93 -2020-09-18 01:00:00,71.06,38.888000000000005,37.228,29.93 -2020-09-18 01:15:00,72.86,37.991,37.228,29.93 -2020-09-18 01:30:00,71.99,37.521,37.228,29.93 -2020-09-18 01:45:00,72.65,36.501999999999995,37.228,29.93 -2020-09-18 02:00:00,72.83,37.49,35.851,29.93 -2020-09-18 02:15:00,78.45,37.321999999999996,35.851,29.93 -2020-09-18 02:30:00,72.91,38.597,35.851,29.93 -2020-09-18 02:45:00,73.98,38.884,35.851,29.93 -2020-09-18 03:00:00,74.75,41.191,36.54,29.93 -2020-09-18 03:15:00,77.42,40.675,36.54,29.93 -2020-09-18 03:30:00,77.21,40.485,36.54,29.93 -2020-09-18 03:45:00,81.51,41.681000000000004,36.54,29.93 -2020-09-18 04:00:00,90.84,49.988,37.578,29.93 -2020-09-18 04:15:00,91.02,56.937,37.578,29.93 -2020-09-18 04:30:00,86.07,56.161,37.578,29.93 -2020-09-18 04:45:00,92.31,56.513999999999996,37.578,29.93 -2020-09-18 05:00:00,108.17,77.343,40.387,29.93 -2020-09-18 05:15:00,112.85,95.874,40.387,29.93 -2020-09-18 05:30:00,108.76,90.18299999999999,40.387,29.93 -2020-09-18 05:45:00,109.88,83.81,40.387,29.93 -2020-09-18 06:00:00,117.15,84.181,54.668,29.93 -2020-09-18 06:15:00,115.51,86.54899999999999,54.668,29.93 -2020-09-18 06:30:00,115.18,84.565,54.668,29.93 -2020-09-18 06:45:00,116.95,85.958,54.668,29.93 -2020-09-18 07:00:00,118.68,85.72399999999999,63.971000000000004,29.93 -2020-09-18 07:15:00,118.95,88.38600000000001,63.971000000000004,29.93 -2020-09-18 07:30:00,116.43,85.897,63.971000000000004,29.93 -2020-09-18 07:45:00,116.62,85.943,63.971000000000004,29.93 -2020-09-18 08:00:00,114.28,82.63,56.042,29.93 -2020-09-18 08:15:00,112.83,84.12299999999999,56.042,29.93 -2020-09-18 08:30:00,114.36,82.556,56.042,29.93 -2020-09-18 08:45:00,115.55,82.37,56.042,29.93 -2020-09-18 09:00:00,114.17,75.26,52.832,29.93 -2020-09-18 09:15:00,111.77,74.903,52.832,29.93 -2020-09-18 09:30:00,111.15,75.277,52.832,29.93 -2020-09-18 09:45:00,111.61,75.834,52.832,29.93 -2020-09-18 10:00:00,107.89,72.842,50.044,29.93 -2020-09-18 10:15:00,109.25,72.935,50.044,29.93 -2020-09-18 10:30:00,109.02,72.765,50.044,29.93 -2020-09-18 10:45:00,107.6,72.832,50.044,29.93 -2020-09-18 11:00:00,107.22,71.185,49.06100000000001,29.93 -2020-09-18 11:15:00,115.43,71.064,49.06100000000001,29.93 -2020-09-18 11:30:00,114.09,71.685,49.06100000000001,29.93 -2020-09-18 11:45:00,112.5,70.729,49.06100000000001,29.93 -2020-09-18 12:00:00,109.27,68.899,45.595,29.93 -2020-09-18 12:15:00,107.26,67.53399999999999,45.595,29.93 -2020-09-18 12:30:00,111.87,66.678,45.595,29.93 -2020-09-18 12:45:00,112.45,66.866,45.595,29.93 -2020-09-18 13:00:00,107.19,67.291,43.218,29.93 -2020-09-18 13:15:00,111.3,67.846,43.218,29.93 -2020-09-18 13:30:00,109.47,67.354,43.218,29.93 -2020-09-18 13:45:00,112.2,66.903,43.218,29.93 -2020-09-18 14:00:00,112.75,66.477,41.926,29.93 -2020-09-18 14:15:00,113.18,66.402,41.926,29.93 -2020-09-18 14:30:00,113.34,66.488,41.926,29.93 -2020-09-18 14:45:00,112.16,66.43,41.926,29.93 -2020-09-18 15:00:00,107.96,66.34899999999999,43.79,29.93 -2020-09-18 15:15:00,108.95,64.778,43.79,29.93 -2020-09-18 15:30:00,111.25,63.426,43.79,29.93 -2020-09-18 15:45:00,111.89,62.758,43.79,29.93 -2020-09-18 16:00:00,114.19,63.008,45.895,29.93 -2020-09-18 16:15:00,112.94,62.958,45.895,29.93 -2020-09-18 16:30:00,113.82,63.486000000000004,45.895,29.93 -2020-09-18 16:45:00,116.38,60.707,45.895,29.93 -2020-09-18 17:00:00,117.22,63.245,51.36,29.93 -2020-09-18 17:15:00,116.42,64.20100000000001,51.36,29.93 -2020-09-18 17:30:00,115.99,63.861000000000004,51.36,29.93 -2020-09-18 17:45:00,115.41,63.695,51.36,29.93 -2020-09-18 18:00:00,117.73,64.012,52.985,29.93 -2020-09-18 18:15:00,116.7,63.016000000000005,52.985,29.93 -2020-09-18 18:30:00,116.11,61.803000000000004,52.985,29.93 -2020-09-18 18:45:00,115.8,66.096,52.985,29.93 -2020-09-18 19:00:00,113.5,66.872,52.602,29.93 -2020-09-18 19:15:00,108.61,66.538,52.602,29.93 -2020-09-18 19:30:00,106.11,65.805,52.602,29.93 -2020-09-18 19:45:00,104.55,65.138,52.602,29.93 -2020-09-18 20:00:00,95.47,63.067,58.063,29.93 -2020-09-18 20:15:00,94.24,62.063,58.063,29.93 -2020-09-18 20:30:00,92.29,60.351000000000006,58.063,29.93 -2020-09-18 20:45:00,95.23,59.466,58.063,29.93 -2020-09-18 21:00:00,87.91,58.849,50.135,29.93 -2020-09-18 21:15:00,85.57,61.511,50.135,29.93 -2020-09-18 21:30:00,78.26,60.382,50.135,29.93 -2020-09-18 21:45:00,84.38,59.817,50.135,29.93 -2020-09-18 22:00:00,79.5,58.698,45.165,29.93 -2020-09-18 22:15:00,81.75,57.588,45.165,29.93 -2020-09-18 22:30:00,74.47,54.06,45.165,29.93 -2020-09-18 22:45:00,77.94,51.985,45.165,29.93 -2020-09-18 23:00:00,76.49,49.233000000000004,39.121,29.93 -2020-09-18 23:15:00,74.79,47.049,39.121,29.93 -2020-09-18 23:30:00,72.85,45.343999999999994,39.121,29.93 -2020-09-18 23:45:00,71.53,44.448,39.121,29.93 -2020-09-19 00:00:00,71.22,38.38,38.49,29.816 -2020-09-19 00:15:00,70.98,37.655,38.49,29.816 -2020-09-19 00:30:00,62.35,37.674,38.49,29.816 -2020-09-19 00:45:00,70.07,37.529,38.49,29.816 -2020-09-19 01:00:00,68.84,37.658,34.5,29.816 -2020-09-19 01:15:00,66.83,36.938,34.5,29.816 -2020-09-19 01:30:00,59.53,35.755,34.5,29.816 -2020-09-19 01:45:00,60.48,35.583,34.5,29.816 -2020-09-19 02:00:00,61.5,36.045,32.236,29.816 -2020-09-19 02:15:00,67.13,35.221,32.236,29.816 -2020-09-19 02:30:00,59.26,35.586999999999996,32.236,29.816 -2020-09-19 02:45:00,59.5,36.468,32.236,29.816 -2020-09-19 03:00:00,58.35,37.939,32.067,29.816 -2020-09-19 03:15:00,60.56,36.596,32.067,29.816 -2020-09-19 03:30:00,58.82,36.205,32.067,29.816 -2020-09-19 03:45:00,60.46,38.491,32.067,29.816 -2020-09-19 04:00:00,61.29,44.302,33.071,29.816 -2020-09-19 04:15:00,60.56,49.925,33.071,29.816 -2020-09-19 04:30:00,57.39,47.338,33.071,29.816 -2020-09-19 04:45:00,61.32,47.757,33.071,29.816 -2020-09-19 05:00:00,63.99,58.761,33.014,29.816 -2020-09-19 05:15:00,64.16,64.37100000000001,33.014,29.816 -2020-09-19 05:30:00,65.42,59.894,33.014,29.816 -2020-09-19 05:45:00,62.16,58.2,33.014,29.816 -2020-09-19 06:00:00,67.73,71.545,34.628,29.816 -2020-09-19 06:15:00,67.75,83.959,34.628,29.816 -2020-09-19 06:30:00,71.21,78.477,34.628,29.816 -2020-09-19 06:45:00,72.05,75.16,34.628,29.816 -2020-09-19 07:00:00,74.14,72.542,38.871,29.816 -2020-09-19 07:15:00,71.97,73.934,38.871,29.816 -2020-09-19 07:30:00,76.89,73.319,38.871,29.816 -2020-09-19 07:45:00,80.01,75.127,38.871,29.816 -2020-09-19 08:00:00,80.53,73.286,43.293,29.816 -2020-09-19 08:15:00,82.15,75.622,43.293,29.816 -2020-09-19 08:30:00,81.09,74.517,43.293,29.816 -2020-09-19 08:45:00,76.52,75.882,43.293,29.816 -2020-09-19 09:00:00,75.61,71.438,44.559,29.816 -2020-09-19 09:15:00,74.54,71.634,44.559,29.816 -2020-09-19 09:30:00,74.81,72.601,44.559,29.816 -2020-09-19 09:45:00,76.44,72.857,44.559,29.816 -2020-09-19 10:00:00,76.74,70.247,42.091,29.816 -2020-09-19 10:15:00,77.89,70.598,42.091,29.816 -2020-09-19 10:30:00,82.26,70.22800000000001,42.091,29.816 -2020-09-19 10:45:00,79.12,70.435,42.091,29.816 -2020-09-19 11:00:00,78.34,68.741,38.505,29.816 -2020-09-19 11:15:00,81.3,68.98899999999999,38.505,29.816 -2020-09-19 11:30:00,77.75,69.456,38.505,29.816 -2020-09-19 11:45:00,76.77,68.646,38.505,29.816 -2020-09-19 12:00:00,74.59,66.622,35.388000000000005,29.816 -2020-09-19 12:15:00,77.13,66.02600000000001,35.388000000000005,29.816 -2020-09-19 12:30:00,69.95,65.217,35.388000000000005,29.816 -2020-09-19 12:45:00,65.4,65.63600000000001,35.388000000000005,29.816 -2020-09-19 13:00:00,66.49,65.413,31.355999999999998,29.816 -2020-09-19 13:15:00,69.13,64.945,31.355999999999998,29.816 -2020-09-19 13:30:00,67.92,64.436,31.355999999999998,29.816 -2020-09-19 13:45:00,71.32,63.224,31.355999999999998,29.816 -2020-09-19 14:00:00,68.7,63.16,30.522,29.816 -2020-09-19 14:15:00,68.61,62.07899999999999,30.522,29.816 -2020-09-19 14:30:00,70.26,61.327,30.522,29.816 -2020-09-19 14:45:00,70.21,61.659,30.522,29.816 -2020-09-19 15:00:00,71.68,62.038999999999994,34.36,29.816 -2020-09-19 15:15:00,71.93,61.226000000000006,34.36,29.816 -2020-09-19 15:30:00,73.29,60.536,34.36,29.816 -2020-09-19 15:45:00,75.49,59.263999999999996,34.36,29.816 -2020-09-19 16:00:00,78.43,60.763999999999996,39.507,29.816 -2020-09-19 16:15:00,79.18,60.381,39.507,29.816 -2020-09-19 16:30:00,79.14,61.047,39.507,29.816 -2020-09-19 16:45:00,81.7,58.574,39.507,29.816 -2020-09-19 17:00:00,83.48,60.071999999999996,47.151,29.816 -2020-09-19 17:15:00,84.27,60.06100000000001,47.151,29.816 -2020-09-19 17:30:00,85.58,59.604,47.151,29.816 -2020-09-19 17:45:00,85.8,59.68600000000001,47.151,29.816 -2020-09-19 18:00:00,89.34,60.965,50.303999999999995,29.816 -2020-09-19 18:15:00,89.84,61.67100000000001,50.303999999999995,29.816 -2020-09-19 18:30:00,90.7,61.82,50.303999999999995,29.816 -2020-09-19 18:45:00,89.05,62.67,50.303999999999995,29.816 -2020-09-19 19:00:00,87.56,62.681000000000004,50.622,29.816 -2020-09-19 19:15:00,84.6,61.475,50.622,29.816 -2020-09-19 19:30:00,82.62,61.503,50.622,29.816 -2020-09-19 19:45:00,81.68,62.065,50.622,29.816 -2020-09-19 20:00:00,77.1,61.138999999999996,45.391000000000005,29.816 -2020-09-19 20:15:00,73.8,60.276,45.391000000000005,29.816 -2020-09-19 20:30:00,72.52,57.81,45.391000000000005,29.816 -2020-09-19 20:45:00,74.56,58.104,45.391000000000005,29.816 -2020-09-19 21:00:00,70.72,57.077,39.98,29.816 -2020-09-19 21:15:00,71.27,59.6,39.98,29.816 -2020-09-19 21:30:00,68.48,58.958,39.98,29.816 -2020-09-19 21:45:00,68.12,57.851000000000006,39.98,29.816 -2020-09-19 22:00:00,63.93,57.068999999999996,37.53,29.816 -2020-09-19 22:15:00,68.03,56.803000000000004,37.53,29.816 -2020-09-19 22:30:00,62.43,54.72,37.53,29.816 -2020-09-19 22:45:00,64.15,53.43600000000001,37.53,29.816 -2020-09-19 23:00:00,60.71,50.88399999999999,30.97,29.816 -2020-09-19 23:15:00,60.35,48.526,30.97,29.816 -2020-09-19 23:30:00,59.11,48.121,30.97,29.816 -2020-09-19 23:45:00,56.8,46.816,30.97,29.816 -2020-09-20 00:00:00,55.45,39.763000000000005,27.24,29.816 -2020-09-20 00:15:00,55.34,38.111999999999995,27.24,29.816 -2020-09-20 00:30:00,53.87,37.93,27.24,29.816 -2020-09-20 00:45:00,54.21,37.898,27.24,29.816 -2020-09-20 01:00:00,52.57,38.174,25.662,29.816 -2020-09-20 01:15:00,53.16,37.672,25.662,29.816 -2020-09-20 01:30:00,53.67,36.552,25.662,29.816 -2020-09-20 01:45:00,54.29,36.016999999999996,25.662,29.816 -2020-09-20 02:00:00,51.96,36.338,25.67,29.816 -2020-09-20 02:15:00,53.19,35.809,25.67,29.816 -2020-09-20 02:30:00,53.0,36.524,25.67,29.816 -2020-09-20 02:45:00,53.05,37.319,25.67,29.816 -2020-09-20 03:00:00,52.73,39.335,24.258000000000003,29.816 -2020-09-20 03:15:00,53.33,38.053000000000004,24.258000000000003,29.816 -2020-09-20 03:30:00,52.77,37.523,24.258000000000003,29.816 -2020-09-20 03:45:00,53.76,39.198,24.258000000000003,29.816 -2020-09-20 04:00:00,54.65,44.95399999999999,25.051,29.816 -2020-09-20 04:15:00,54.55,50.015,25.051,29.816 -2020-09-20 04:30:00,55.06,48.416000000000004,25.051,29.816 -2020-09-20 04:45:00,55.46,48.582,25.051,29.816 -2020-09-20 05:00:00,56.45,58.891999999999996,25.145,29.816 -2020-09-20 05:15:00,57.48,63.419,25.145,29.816 -2020-09-20 05:30:00,58.07,58.583,25.145,29.816 -2020-09-20 05:45:00,58.21,56.698,25.145,29.816 -2020-09-20 06:00:00,59.41,68.219,26.371,29.816 -2020-09-20 06:15:00,60.9,80.828,26.371,29.816 -2020-09-20 06:30:00,62.42,74.55,26.371,29.816 -2020-09-20 06:45:00,64.42,70.22399999999999,26.371,29.816 -2020-09-20 07:00:00,66.46,68.428,28.756999999999998,29.816 -2020-09-20 07:15:00,67.42,68.416,28.756999999999998,29.816 -2020-09-20 07:30:00,69.0,68.42699999999999,28.756999999999998,29.816 -2020-09-20 07:45:00,71.83,70.008,28.756999999999998,29.816 -2020-09-20 08:00:00,72.34,69.197,32.82,29.816 -2020-09-20 08:15:00,74.03,72.319,32.82,29.816 -2020-09-20 08:30:00,74.41,72.318,32.82,29.816 -2020-09-20 08:45:00,74.79,74.168,32.82,29.816 -2020-09-20 09:00:00,76.91,69.527,35.534,29.816 -2020-09-20 09:15:00,76.22,69.52,35.534,29.816 -2020-09-20 09:30:00,78.51,70.729,35.534,29.816 -2020-09-20 09:45:00,78.9,71.635,35.534,29.816 -2020-09-20 10:00:00,78.27,70.111,35.925,29.816 -2020-09-20 10:15:00,84.18,70.676,35.925,29.816 -2020-09-20 10:30:00,87.27,70.625,35.925,29.816 -2020-09-20 10:45:00,86.96,70.958,35.925,29.816 -2020-09-20 11:00:00,84.99,69.303,37.056,29.816 -2020-09-20 11:15:00,85.58,69.262,37.056,29.816 -2020-09-20 11:30:00,85.55,69.827,37.056,29.816 -2020-09-20 11:45:00,82.98,69.359,37.056,29.816 -2020-09-20 12:00:00,78.15,67.827,33.124,29.816 -2020-09-20 12:15:00,79.24,67.391,33.124,29.816 -2020-09-20 12:30:00,78.19,66.303,33.124,29.816 -2020-09-20 12:45:00,78.17,65.979,33.124,29.816 -2020-09-20 13:00:00,77.34,65.316,29.874000000000002,29.816 -2020-09-20 13:15:00,74.05,65.38,29.874000000000002,29.816 -2020-09-20 13:30:00,74.77,64.042,29.874000000000002,29.816 -2020-09-20 13:45:00,77.63,63.398,29.874000000000002,29.816 -2020-09-20 14:00:00,79.84,64.18,27.302,29.816 -2020-09-20 14:15:00,80.59,63.778999999999996,27.302,29.816 -2020-09-20 14:30:00,80.69,62.596000000000004,27.302,29.816 -2020-09-20 14:45:00,79.0,62.066,27.302,29.816 -2020-09-20 15:00:00,76.77,62.028,27.642,29.816 -2020-09-20 15:15:00,78.69,60.915,27.642,29.816 -2020-09-20 15:30:00,79.78,60.31399999999999,27.642,29.816 -2020-09-20 15:45:00,80.99,59.467,27.642,29.816 -2020-09-20 16:00:00,82.95,60.283,31.945999999999998,29.816 -2020-09-20 16:15:00,83.28,59.808,31.945999999999998,29.816 -2020-09-20 16:30:00,84.6,61.248999999999995,31.945999999999998,29.816 -2020-09-20 16:45:00,89.69,58.915,31.945999999999998,29.816 -2020-09-20 17:00:00,94.49,60.631,40.387,29.816 -2020-09-20 17:15:00,95.66,61.602,40.387,29.816 -2020-09-20 17:30:00,95.71,61.797,40.387,29.816 -2020-09-20 17:45:00,97.43,62.872,40.387,29.816 -2020-09-20 18:00:00,98.66,64.33,44.575,29.816 -2020-09-20 18:15:00,95.42,65.113,44.575,29.816 -2020-09-20 18:30:00,96.3,64.515,44.575,29.816 -2020-09-20 18:45:00,92.61,65.957,44.575,29.816 -2020-09-20 19:00:00,91.79,67.405,45.623999999999995,29.816 -2020-09-20 19:15:00,93.46,65.542,45.623999999999995,29.816 -2020-09-20 19:30:00,95.78,65.34,45.623999999999995,29.816 -2020-09-20 19:45:00,94.24,65.939,45.623999999999995,29.816 -2020-09-20 20:00:00,87.59,65.218,44.583999999999996,29.816 -2020-09-20 20:15:00,90.25,64.521,44.583999999999996,29.816 -2020-09-20 20:30:00,92.85,62.952,44.583999999999996,29.816 -2020-09-20 20:45:00,92.59,61.67100000000001,44.583999999999996,29.816 -2020-09-20 21:00:00,85.14,59.825,39.732,29.816 -2020-09-20 21:15:00,82.41,61.951,39.732,29.816 -2020-09-20 21:30:00,79.04,60.927,39.732,29.816 -2020-09-20 21:45:00,80.63,60.081,39.732,29.816 -2020-09-20 22:00:00,78.14,60.426,38.571,29.816 -2020-09-20 22:15:00,79.55,58.713,38.571,29.816 -2020-09-20 22:30:00,75.33,55.406000000000006,38.571,29.816 -2020-09-20 22:45:00,75.99,52.976000000000006,38.571,29.816 -2020-09-20 23:00:00,74.75,49.496,33.121,29.816 -2020-09-20 23:15:00,77.14,48.525,33.121,29.816 -2020-09-20 23:30:00,75.39,47.949,33.121,29.816 -2020-09-20 23:45:00,71.17,46.997,33.121,29.816 -2020-09-21 00:00:00,63.72,42.257,32.506,29.93 -2020-09-21 00:15:00,71.94,41.973,32.506,29.93 -2020-09-21 00:30:00,71.02,41.553999999999995,32.506,29.93 -2020-09-21 00:45:00,73.89,41.096000000000004,32.506,29.93 -2020-09-21 01:00:00,68.98,41.651,31.121,29.93 -2020-09-21 01:15:00,69.62,41.038000000000004,31.121,29.93 -2020-09-21 01:30:00,73.22,40.213,31.121,29.93 -2020-09-21 01:45:00,73.73,39.638000000000005,31.121,29.93 -2020-09-21 02:00:00,72.86,40.29,29.605999999999998,29.93 -2020-09-21 02:15:00,70.41,39.441,29.605999999999998,29.93 -2020-09-21 02:30:00,75.57,40.343,29.605999999999998,29.93 -2020-09-21 02:45:00,75.89,40.859,29.605999999999998,29.93 -2020-09-21 03:00:00,73.84,43.576,28.124000000000002,29.93 -2020-09-21 03:15:00,72.28,43.278,28.124000000000002,29.93 -2020-09-21 03:30:00,78.86,43.173,28.124000000000002,29.93 -2020-09-21 03:45:00,81.91,44.346000000000004,28.124000000000002,29.93 -2020-09-21 04:00:00,83.6,53.56399999999999,29.743000000000002,29.93 -2020-09-21 04:15:00,81.79,61.896,29.743000000000002,29.93 -2020-09-21 04:30:00,85.13,60.549,29.743000000000002,29.93 -2020-09-21 04:45:00,90.52,61.034,29.743000000000002,29.93 -2020-09-21 05:00:00,99.97,80.40899999999999,36.191,29.93 -2020-09-21 05:15:00,106.86,97.719,36.191,29.93 -2020-09-21 05:30:00,113.92,91.788,36.191,29.93 -2020-09-21 05:45:00,121.46,86.161,36.191,29.93 -2020-09-21 06:00:00,123.22,85.652,55.277,29.93 -2020-09-21 06:15:00,121.57,87.79899999999999,55.277,29.93 -2020-09-21 06:30:00,121.97,86.494,55.277,29.93 -2020-09-21 06:45:00,124.18,88.302,55.277,29.93 -2020-09-21 07:00:00,126.05,87.74700000000001,65.697,29.93 -2020-09-21 07:15:00,123.56,89.73700000000001,65.697,29.93 -2020-09-21 07:30:00,119.15,88.95200000000001,65.697,29.93 -2020-09-21 07:45:00,121.25,90.06200000000001,65.697,29.93 -2020-09-21 08:00:00,122.84,86.54299999999999,57.028,29.93 -2020-09-21 08:15:00,123.58,88.176,57.028,29.93 -2020-09-21 08:30:00,124.68,86.37299999999999,57.028,29.93 -2020-09-21 08:45:00,123.86,87.43,57.028,29.93 -2020-09-21 09:00:00,122.73,81.84100000000001,52.633,29.93 -2020-09-21 09:15:00,122.01,79.57300000000001,52.633,29.93 -2020-09-21 09:30:00,121.3,79.82,52.633,29.93 -2020-09-21 09:45:00,123.09,79.15100000000001,52.633,29.93 -2020-09-21 10:00:00,127.26,77.78,50.647,29.93 -2020-09-21 10:15:00,126.28,78.107,50.647,29.93 -2020-09-21 10:30:00,120.76,77.462,50.647,29.93 -2020-09-21 10:45:00,121.89,76.899,50.647,29.93 -2020-09-21 11:00:00,118.55,74.681,50.245,29.93 -2020-09-21 11:15:00,120.27,75.36399999999999,50.245,29.93 -2020-09-21 11:30:00,121.52,76.82600000000001,50.245,29.93 -2020-09-21 11:45:00,118.95,76.563,50.245,29.93 -2020-09-21 12:00:00,109.74,74.55,46.956,29.93 -2020-09-21 12:15:00,113.88,74.17699999999999,46.956,29.93 -2020-09-21 12:30:00,105.64,72.477,46.956,29.93 -2020-09-21 12:45:00,114.96,72.624,46.956,29.93 -2020-09-21 13:00:00,114.37,72.619,47.383,29.93 -2020-09-21 13:15:00,107.54,71.649,47.383,29.93 -2020-09-21 13:30:00,102.4,70.263,47.383,29.93 -2020-09-21 13:45:00,107.14,70.24600000000001,47.383,29.93 -2020-09-21 14:00:00,122.16,70.2,47.1,29.93 -2020-09-21 14:15:00,123.25,70.017,47.1,29.93 -2020-09-21 14:30:00,111.73,68.586,47.1,29.93 -2020-09-21 14:45:00,113.21,69.455,47.1,29.93 -2020-09-21 15:00:00,114.42,69.688,49.355,29.93 -2020-09-21 15:15:00,113.68,67.744,49.355,29.93 -2020-09-21 15:30:00,115.25,67.443,49.355,29.93 -2020-09-21 15:45:00,112.83,66.139,49.355,29.93 -2020-09-21 16:00:00,116.9,67.553,52.14,29.93 -2020-09-21 16:15:00,113.27,66.914,52.14,29.93 -2020-09-21 16:30:00,113.73,67.6,52.14,29.93 -2020-09-21 16:45:00,116.11,64.986,52.14,29.93 -2020-09-21 17:00:00,119.45,65.829,58.705,29.93 -2020-09-21 17:15:00,118.12,66.80199999999999,58.705,29.93 -2020-09-21 17:30:00,117.64,66.57,58.705,29.93 -2020-09-21 17:45:00,115.33,66.952,58.705,29.93 -2020-09-21 18:00:00,117.55,67.64,59.153,29.93 -2020-09-21 18:15:00,117.76,66.494,59.153,29.93 -2020-09-21 18:30:00,118.86,65.55,59.153,29.93 -2020-09-21 18:45:00,118.16,69.444,59.153,29.93 -2020-09-21 19:00:00,113.92,70.17,61.483000000000004,29.93 -2020-09-21 19:15:00,109.99,68.964,61.483000000000004,29.93 -2020-09-21 19:30:00,107.98,68.619,61.483000000000004,29.93 -2020-09-21 19:45:00,105.49,68.542,61.483000000000004,29.93 -2020-09-21 20:00:00,105.98,66.316,67.55,29.93 -2020-09-21 20:15:00,107.86,65.946,67.55,29.93 -2020-09-21 20:30:00,105.11,64.217,67.55,29.93 -2020-09-21 20:45:00,95.78,63.5,67.55,29.93 -2020-09-21 21:00:00,94.14,61.354,60.026,29.93 -2020-09-21 21:15:00,93.33,63.472,60.026,29.93 -2020-09-21 21:30:00,94.41,62.532,60.026,29.93 -2020-09-21 21:45:00,94.3,61.356,60.026,29.93 -2020-09-21 22:00:00,89.01,59.428000000000004,52.736999999999995,29.93 -2020-09-21 22:15:00,84.04,58.778999999999996,52.736999999999995,29.93 -2020-09-21 22:30:00,83.53,49.756,52.736999999999995,29.93 -2020-09-21 22:45:00,85.82,46.015,52.736999999999995,29.93 -2020-09-21 23:00:00,83.32,42.842,44.408,29.93 -2020-09-21 23:15:00,76.73,41.349,44.408,29.93 -2020-09-21 23:30:00,74.23,41.486000000000004,44.408,29.93 -2020-09-21 23:45:00,81.41,40.847,44.408,29.93 -2020-09-22 00:00:00,79.25,40.692,44.438,29.93 -2020-09-22 00:15:00,79.02,41.415,44.438,29.93 -2020-09-22 00:30:00,71.81,41.271,44.438,29.93 -2020-09-22 00:45:00,70.35,41.129,44.438,29.93 -2020-09-22 01:00:00,78.04,41.229,41.468999999999994,29.93 -2020-09-22 01:15:00,79.59,40.599000000000004,41.468999999999994,29.93 -2020-09-22 01:30:00,77.85,39.745,41.468999999999994,29.93 -2020-09-22 01:45:00,74.14,38.878,41.468999999999994,29.93 -2020-09-22 02:00:00,76.1,39.185,39.708,29.93 -2020-09-22 02:15:00,78.9,39.167,39.708,29.93 -2020-09-22 02:30:00,78.9,39.602,39.708,29.93 -2020-09-22 02:45:00,74.95,40.354,39.708,29.93 -2020-09-22 03:00:00,72.1,42.326,38.919000000000004,29.93 -2020-09-22 03:15:00,77.33,42.497,38.919000000000004,29.93 -2020-09-22 03:30:00,75.89,42.504,38.919000000000004,29.93 -2020-09-22 03:45:00,80.08,42.905,38.919000000000004,29.93 -2020-09-22 04:00:00,83.28,51.184,40.092,29.93 -2020-09-22 04:15:00,83.18,59.461999999999996,40.092,29.93 -2020-09-22 04:30:00,88.24,57.948,40.092,29.93 -2020-09-22 04:45:00,92.26,59.123999999999995,40.092,29.93 -2020-09-22 05:00:00,101.36,81.043,43.713,29.93 -2020-09-22 05:15:00,112.59,98.867,43.713,29.93 -2020-09-22 05:30:00,117.29,92.676,43.713,29.93 -2020-09-22 05:45:00,118.66,86.45299999999999,43.713,29.93 -2020-09-22 06:00:00,117.1,86.402,56.033,29.93 -2020-09-22 06:15:00,118.12,89.12799999999999,56.033,29.93 -2020-09-22 06:30:00,117.39,87.425,56.033,29.93 -2020-09-22 06:45:00,118.72,88.47200000000001,56.033,29.93 -2020-09-22 07:00:00,120.28,87.978,66.003,29.93 -2020-09-22 07:15:00,118.56,89.75299999999999,66.003,29.93 -2020-09-22 07:30:00,117.78,88.869,66.003,29.93 -2020-09-22 07:45:00,117.36,89.32600000000001,66.003,29.93 -2020-09-22 08:00:00,115.63,85.794,57.474,29.93 -2020-09-22 08:15:00,115.97,86.789,57.474,29.93 -2020-09-22 08:30:00,116.15,85.074,57.474,29.93 -2020-09-22 08:45:00,116.14,85.37,57.474,29.93 -2020-09-22 09:00:00,113.46,79.796,51.928000000000004,29.93 -2020-09-22 09:15:00,114.86,77.87100000000001,51.928000000000004,29.93 -2020-09-22 09:30:00,116.65,78.78399999999999,51.928000000000004,29.93 -2020-09-22 09:45:00,117.21,78.98100000000001,51.928000000000004,29.93 -2020-09-22 10:00:00,116.31,76.461,49.46,29.93 -2020-09-22 10:15:00,112.61,76.334,49.46,29.93 -2020-09-22 10:30:00,112.62,75.747,49.46,29.93 -2020-09-22 10:45:00,113.46,75.955,49.46,29.93 -2020-09-22 11:00:00,111.98,74.19800000000001,48.206,29.93 -2020-09-22 11:15:00,107.81,75.045,48.206,29.93 -2020-09-22 11:30:00,113.38,75.354,48.206,29.93 -2020-09-22 11:45:00,106.2,74.97399999999999,48.206,29.93 -2020-09-22 12:00:00,105.03,72.382,46.285,29.93 -2020-09-22 12:15:00,104.5,72.095,46.285,29.93 -2020-09-22 12:30:00,103.2,71.24,46.285,29.93 -2020-09-22 12:45:00,99.21,71.758,46.285,29.93 -2020-09-22 13:00:00,102.59,71.366,46.861999999999995,29.93 -2020-09-22 13:15:00,108.02,71.529,46.861999999999995,29.93 -2020-09-22 13:30:00,103.9,70.479,46.861999999999995,29.93 -2020-09-22 13:45:00,102.03,69.86,46.861999999999995,29.93 -2020-09-22 14:00:00,106.58,70.15899999999999,46.488,29.93 -2020-09-22 14:15:00,105.28,69.903,46.488,29.93 -2020-09-22 14:30:00,101.09,68.925,46.488,29.93 -2020-09-22 14:45:00,102.61,69.22399999999999,46.488,29.93 -2020-09-22 15:00:00,105.33,69.167,48.442,29.93 -2020-09-22 15:15:00,104.23,67.98,48.442,29.93 -2020-09-22 15:30:00,103.53,67.63600000000001,48.442,29.93 -2020-09-22 15:45:00,105.75,66.461,48.442,29.93 -2020-09-22 16:00:00,108.11,67.479,50.397,29.93 -2020-09-22 16:15:00,108.64,67.058,50.397,29.93 -2020-09-22 16:30:00,110.45,67.669,50.397,29.93 -2020-09-22 16:45:00,113.26,65.699,50.397,29.93 -2020-09-22 17:00:00,114.67,66.813,56.668,29.93 -2020-09-22 17:15:00,114.65,68.11,56.668,29.93 -2020-09-22 17:30:00,116.47,67.773,56.668,29.93 -2020-09-22 17:45:00,117.39,67.911,56.668,29.93 -2020-09-22 18:00:00,121.5,67.854,57.957,29.93 -2020-09-22 18:15:00,119.7,67.63600000000001,57.957,29.93 -2020-09-22 18:30:00,121.25,66.432,57.957,29.93 -2020-09-22 18:45:00,119.41,70.4,57.957,29.93 -2020-09-22 19:00:00,117.27,70.289,57.056000000000004,29.93 -2020-09-22 19:15:00,114.03,69.138,57.056000000000004,29.93 -2020-09-22 19:30:00,113.68,68.457,57.056000000000004,29.93 -2020-09-22 19:45:00,108.16,68.626,57.056000000000004,29.93 -2020-09-22 20:00:00,106.04,66.758,64.156,29.93 -2020-09-22 20:15:00,110.06,65.166,64.156,29.93 -2020-09-22 20:30:00,108.07,63.717,64.156,29.93 -2020-09-22 20:45:00,100.9,63.108999999999995,64.156,29.93 -2020-09-22 21:00:00,93.55,61.407,56.507,29.93 -2020-09-22 21:15:00,93.78,62.69,56.507,29.93 -2020-09-22 21:30:00,90.09,61.68899999999999,56.507,29.93 -2020-09-22 21:45:00,92.81,60.684,56.507,29.93 -2020-09-22 22:00:00,88.4,59.316,50.728,29.93 -2020-09-22 22:15:00,90.76,58.328,50.728,29.93 -2020-09-22 22:30:00,83.74,49.538000000000004,50.728,29.93 -2020-09-22 22:45:00,79.35,45.873000000000005,50.728,29.93 -2020-09-22 23:00:00,73.73,42.176,43.556999999999995,29.93 -2020-09-22 23:15:00,74.31,41.556999999999995,43.556999999999995,29.93 -2020-09-22 23:30:00,72.56,41.6,43.556999999999995,29.93 -2020-09-22 23:45:00,73.7,40.976000000000006,43.556999999999995,29.93 -2020-09-23 00:00:00,74.14,40.966,41.151,29.93 -2020-09-23 00:15:00,80.43,41.68600000000001,41.151,29.93 -2020-09-23 00:30:00,80.03,41.549,41.151,29.93 -2020-09-23 00:45:00,79.17,41.41,41.151,29.93 -2020-09-23 01:00:00,72.52,41.504,37.763000000000005,29.93 -2020-09-23 01:15:00,76.54,40.896,37.763000000000005,29.93 -2020-09-23 01:30:00,79.93,40.059,37.763000000000005,29.93 -2020-09-23 01:45:00,81.24,39.193000000000005,37.763000000000005,29.93 -2020-09-23 02:00:00,78.02,39.505,35.615,29.93 -2020-09-23 02:15:00,77.07,39.507,35.615,29.93 -2020-09-23 02:30:00,81.33,39.919000000000004,35.615,29.93 -2020-09-23 02:45:00,81.34,40.667,35.615,29.93 -2020-09-23 03:00:00,77.9,42.626000000000005,35.153,29.93 -2020-09-23 03:15:00,76.25,42.815,35.153,29.93 -2020-09-23 03:30:00,84.12,42.827,35.153,29.93 -2020-09-23 03:45:00,87.89,43.21,35.153,29.93 -2020-09-23 04:00:00,91.84,51.525,36.203,29.93 -2020-09-23 04:15:00,87.47,59.836999999999996,36.203,29.93 -2020-09-23 04:30:00,95.22,58.328,36.203,29.93 -2020-09-23 04:45:00,101.67,59.511,36.203,29.93 -2020-09-23 05:00:00,111.18,81.527,39.922,29.93 -2020-09-23 05:15:00,112.35,99.454,39.922,29.93 -2020-09-23 05:30:00,111.69,93.244,39.922,29.93 -2020-09-23 05:45:00,116.38,86.97,39.922,29.93 -2020-09-23 06:00:00,119.88,86.88600000000001,56.443999999999996,29.93 -2020-09-23 06:15:00,119.76,89.635,56.443999999999996,29.93 -2020-09-23 06:30:00,120.0,87.935,56.443999999999996,29.93 -2020-09-23 06:45:00,121.7,88.979,56.443999999999996,29.93 -2020-09-23 07:00:00,124.88,88.484,68.683,29.93 -2020-09-23 07:15:00,120.09,90.274,68.683,29.93 -2020-09-23 07:30:00,121.21,89.425,68.683,29.93 -2020-09-23 07:45:00,123.12,89.883,68.683,29.93 -2020-09-23 08:00:00,116.84,86.35799999999999,59.003,29.93 -2020-09-23 08:15:00,115.12,87.31700000000001,59.003,29.93 -2020-09-23 08:30:00,115.48,85.62,59.003,29.93 -2020-09-23 08:45:00,115.51,85.897,59.003,29.93 -2020-09-23 09:00:00,114.02,80.328,56.21,29.93 -2020-09-23 09:15:00,114.6,78.39399999999999,56.21,29.93 -2020-09-23 09:30:00,110.5,79.286,56.21,29.93 -2020-09-23 09:45:00,108.97,79.453,56.21,29.93 -2020-09-23 10:00:00,108.11,76.928,52.358999999999995,29.93 -2020-09-23 10:15:00,109.82,76.764,52.358999999999995,29.93 -2020-09-23 10:30:00,110.15,76.161,52.358999999999995,29.93 -2020-09-23 10:45:00,105.93,76.354,52.358999999999995,29.93 -2020-09-23 11:00:00,105.59,74.609,51.161,29.93 -2020-09-23 11:15:00,106.75,75.438,51.161,29.93 -2020-09-23 11:30:00,104.38,75.747,51.161,29.93 -2020-09-23 11:45:00,103.61,75.348,51.161,29.93 -2020-09-23 12:00:00,100.04,72.733,49.119,29.93 -2020-09-23 12:15:00,106.82,72.434,49.119,29.93 -2020-09-23 12:30:00,109.78,71.612,49.119,29.93 -2020-09-23 12:45:00,102.31,72.122,49.119,29.93 -2020-09-23 13:00:00,103.09,71.70100000000001,49.187,29.93 -2020-09-23 13:15:00,103.29,71.862,49.187,29.93 -2020-09-23 13:30:00,102.62,70.81,49.187,29.93 -2020-09-23 13:45:00,105.34,70.196,49.187,29.93 -2020-09-23 14:00:00,107.99,70.447,49.787,29.93 -2020-09-23 14:15:00,105.73,70.204,49.787,29.93 -2020-09-23 14:30:00,107.7,69.259,49.787,29.93 -2020-09-23 14:45:00,109.29,69.555,49.787,29.93 -2020-09-23 15:00:00,108.43,69.45100000000001,51.458999999999996,29.93 -2020-09-23 15:15:00,104.72,68.285,51.458999999999996,29.93 -2020-09-23 15:30:00,107.19,67.971,51.458999999999996,29.93 -2020-09-23 15:45:00,107.85,66.812,51.458999999999996,29.93 -2020-09-23 16:00:00,109.45,67.789,53.663000000000004,29.93 -2020-09-23 16:15:00,108.62,67.385,53.663000000000004,29.93 -2020-09-23 16:30:00,110.5,67.992,53.663000000000004,29.93 -2020-09-23 16:45:00,113.22,66.078,53.663000000000004,29.93 -2020-09-23 17:00:00,116.47,67.153,58.183,29.93 -2020-09-23 17:15:00,114.39,68.475,58.183,29.93 -2020-09-23 17:30:00,116.38,68.142,58.183,29.93 -2020-09-23 17:45:00,117.99,68.31,58.183,29.93 -2020-09-23 18:00:00,119.46,68.234,60.141000000000005,29.93 -2020-09-23 18:15:00,119.27,68.014,60.141000000000005,29.93 -2020-09-23 18:30:00,119.58,66.82,60.141000000000005,29.93 -2020-09-23 18:45:00,119.51,70.78399999999999,60.141000000000005,29.93 -2020-09-23 19:00:00,115.57,70.683,60.582,29.93 -2020-09-23 19:15:00,111.65,69.531,60.582,29.93 -2020-09-23 19:30:00,110.06,68.845,60.582,29.93 -2020-09-23 19:45:00,107.79,69.005,60.582,29.93 -2020-09-23 20:00:00,103.36,67.161,66.61,29.93 -2020-09-23 20:15:00,99.89,65.566,66.61,29.93 -2020-09-23 20:30:00,99.32,64.09,66.61,29.93 -2020-09-23 20:45:00,101.02,63.443000000000005,66.61,29.93 -2020-09-23 21:00:00,98.0,61.744,57.658,29.93 -2020-09-23 21:15:00,99.6,63.016999999999996,57.658,29.93 -2020-09-23 21:30:00,86.71,62.025,57.658,29.93 -2020-09-23 21:45:00,90.43,60.985,57.658,29.93 -2020-09-23 22:00:00,84.37,59.597,51.81,29.93 -2020-09-23 22:15:00,91.09,58.586000000000006,51.81,29.93 -2020-09-23 22:30:00,88.12,49.79,51.81,29.93 -2020-09-23 22:45:00,83.92,46.13,51.81,29.93 -2020-09-23 23:00:00,76.12,42.474,42.93600000000001,29.93 -2020-09-23 23:15:00,75.88,41.823,42.93600000000001,29.93 -2020-09-23 23:30:00,79.32,41.87,42.93600000000001,29.93 -2020-09-23 23:45:00,82.59,41.246,42.93600000000001,29.93 -2020-09-24 00:00:00,79.44,41.243,39.211,29.93 -2020-09-24 00:15:00,76.44,41.958999999999996,39.211,29.93 -2020-09-24 00:30:00,75.48,41.83,39.211,29.93 -2020-09-24 00:45:00,79.62,41.693999999999996,39.211,29.93 -2020-09-24 01:00:00,76.77,41.78,37.607,29.93 -2020-09-24 01:15:00,80.51,41.193000000000005,37.607,29.93 -2020-09-24 01:30:00,72.87,40.375,37.607,29.93 -2020-09-24 01:45:00,79.28,39.509,37.607,29.93 -2020-09-24 02:00:00,78.34,39.827,36.44,29.93 -2020-09-24 02:15:00,78.78,39.849000000000004,36.44,29.93 -2020-09-24 02:30:00,74.7,40.239000000000004,36.44,29.93 -2020-09-24 02:45:00,82.77,40.981,36.44,29.93 -2020-09-24 03:00:00,81.53,42.928000000000004,36.116,29.93 -2020-09-24 03:15:00,79.01,43.135,36.116,29.93 -2020-09-24 03:30:00,78.21,43.151,36.116,29.93 -2020-09-24 03:45:00,82.11,43.516999999999996,36.116,29.93 -2020-09-24 04:00:00,87.36,51.869,37.398,29.93 -2020-09-24 04:15:00,93.6,60.213,37.398,29.93 -2020-09-24 04:30:00,97.83,58.708999999999996,37.398,29.93 -2020-09-24 04:45:00,99.6,59.9,37.398,29.93 -2020-09-24 05:00:00,109.7,82.016,41.776,29.93 -2020-09-24 05:15:00,108.24,100.046,41.776,29.93 -2020-09-24 05:30:00,110.1,93.816,41.776,29.93 -2020-09-24 05:45:00,112.5,87.49,41.776,29.93 -2020-09-24 06:00:00,118.92,87.375,55.61,29.93 -2020-09-24 06:15:00,120.61,90.146,55.61,29.93 -2020-09-24 06:30:00,123.08,88.449,55.61,29.93 -2020-09-24 06:45:00,124.17,89.49,55.61,29.93 -2020-09-24 07:00:00,126.37,88.994,67.13600000000001,29.93 -2020-09-24 07:15:00,125.34,90.79899999999999,67.13600000000001,29.93 -2020-09-24 07:30:00,127.26,89.985,67.13600000000001,29.93 -2020-09-24 07:45:00,127.08,90.443,67.13600000000001,29.93 -2020-09-24 08:00:00,125.35,86.925,57.55,29.93 -2020-09-24 08:15:00,126.55,87.84899999999999,57.55,29.93 -2020-09-24 08:30:00,129.1,86.16799999999999,57.55,29.93 -2020-09-24 08:45:00,130.06,86.425,57.55,29.93 -2020-09-24 09:00:00,128.57,80.861,52.931999999999995,29.93 -2020-09-24 09:15:00,126.84,78.918,52.931999999999995,29.93 -2020-09-24 09:30:00,123.67,79.79,52.931999999999995,29.93 -2020-09-24 09:45:00,127.27,79.92699999999999,52.931999999999995,29.93 -2020-09-24 10:00:00,125.65,77.398,50.36600000000001,29.93 -2020-09-24 10:15:00,124.59,77.194,50.36600000000001,29.93 -2020-09-24 10:30:00,120.94,76.577,50.36600000000001,29.93 -2020-09-24 10:45:00,116.89,76.75399999999999,50.36600000000001,29.93 -2020-09-24 11:00:00,110.52,75.02,47.893,29.93 -2020-09-24 11:15:00,109.17,75.833,47.893,29.93 -2020-09-24 11:30:00,110.97,76.141,47.893,29.93 -2020-09-24 11:45:00,106.21,75.725,47.893,29.93 -2020-09-24 12:00:00,102.53,73.084,45.271,29.93 -2020-09-24 12:15:00,102.03,72.77199999999999,45.271,29.93 -2020-09-24 12:30:00,99.75,71.986,45.271,29.93 -2020-09-24 12:45:00,99.48,72.488,45.271,29.93 -2020-09-24 13:00:00,98.27,72.03699999999999,44.351000000000006,29.93 -2020-09-24 13:15:00,99.53,72.196,44.351000000000006,29.93 -2020-09-24 13:30:00,100.61,71.143,44.351000000000006,29.93 -2020-09-24 13:45:00,102.58,70.532,44.351000000000006,29.93 -2020-09-24 14:00:00,103.51,70.735,44.99,29.93 -2020-09-24 14:15:00,103.08,70.508,44.99,29.93 -2020-09-24 14:30:00,101.16,69.596,44.99,29.93 -2020-09-24 14:45:00,101.81,69.888,44.99,29.93 -2020-09-24 15:00:00,101.94,69.737,46.869,29.93 -2020-09-24 15:15:00,103.21,68.59,46.869,29.93 -2020-09-24 15:30:00,103.97,68.308,46.869,29.93 -2020-09-24 15:45:00,104.84,67.164,46.869,29.93 -2020-09-24 16:00:00,108.09,68.101,48.902,29.93 -2020-09-24 16:15:00,109.23,67.714,48.902,29.93 -2020-09-24 16:30:00,110.09,68.317,48.902,29.93 -2020-09-24 16:45:00,113.09,66.46,48.902,29.93 -2020-09-24 17:00:00,116.14,67.495,53.244,29.93 -2020-09-24 17:15:00,116.08,68.84100000000001,53.244,29.93 -2020-09-24 17:30:00,117.28,68.513,53.244,29.93 -2020-09-24 17:45:00,116.1,68.711,53.244,29.93 -2020-09-24 18:00:00,120.4,68.615,54.343999999999994,29.93 -2020-09-24 18:15:00,120.5,68.393,54.343999999999994,29.93 -2020-09-24 18:30:00,123.4,67.212,54.343999999999994,29.93 -2020-09-24 18:45:00,118.83,71.17,54.343999999999994,29.93 -2020-09-24 19:00:00,115.06,71.08,54.332,29.93 -2020-09-24 19:15:00,112.24,69.925,54.332,29.93 -2020-09-24 19:30:00,114.88,69.235,54.332,29.93 -2020-09-24 19:45:00,110.88,69.387,54.332,29.93 -2020-09-24 20:00:00,107.62,67.565,58.06,29.93 -2020-09-24 20:15:00,108.78,65.968,58.06,29.93 -2020-09-24 20:30:00,104.84,64.46600000000001,58.06,29.93 -2020-09-24 20:45:00,96.86,63.781000000000006,58.06,29.93 -2020-09-24 21:00:00,94.23,62.083999999999996,52.411,29.93 -2020-09-24 21:15:00,89.92,63.346000000000004,52.411,29.93 -2020-09-24 21:30:00,87.79,62.361000000000004,52.411,29.93 -2020-09-24 21:45:00,89.98,61.287,52.411,29.93 -2020-09-24 22:00:00,88.04,59.88,47.148999999999994,29.93 -2020-09-24 22:15:00,89.31,58.845,47.148999999999994,29.93 -2020-09-24 22:30:00,80.71,50.044,47.148999999999994,29.93 -2020-09-24 22:45:00,79.84,46.388000000000005,47.148999999999994,29.93 -2020-09-24 23:00:00,71.75,42.773,40.814,29.93 -2020-09-24 23:15:00,77.77,42.091,40.814,29.93 -2020-09-24 23:30:00,81.26,42.141000000000005,40.814,29.93 -2020-09-24 23:45:00,80.31,41.516999999999996,40.814,29.93 -2020-09-25 00:00:00,74.0,39.914,39.153,29.93 -2020-09-25 00:15:00,72.28,40.838,39.153,29.93 -2020-09-25 00:30:00,77.46,40.879,39.153,29.93 -2020-09-25 00:45:00,78.16,41.085,39.153,29.93 -2020-09-25 01:00:00,76.04,40.797,37.228,29.93 -2020-09-25 01:15:00,73.4,40.051,37.228,29.93 -2020-09-25 01:30:00,76.94,39.709,37.228,29.93 -2020-09-25 01:45:00,79.03,38.69,37.228,29.93 -2020-09-25 02:00:00,75.49,39.719,35.851,29.93 -2020-09-25 02:15:00,75.88,39.689,35.851,29.93 -2020-09-25 02:30:00,78.09,40.806,35.851,29.93 -2020-09-25 02:45:00,74.34,41.058,35.851,29.93 -2020-09-25 03:00:00,73.16,43.275,36.54,29.93 -2020-09-25 03:15:00,77.62,42.89,36.54,29.93 -2020-09-25 03:30:00,83.89,42.731,36.54,29.93 -2020-09-25 03:45:00,88.6,43.809,36.54,29.93 -2020-09-25 04:00:00,88.15,52.363,37.578,29.93 -2020-09-25 04:15:00,90.7,59.54,37.578,29.93 -2020-09-25 04:30:00,93.93,58.795,37.578,29.93 -2020-09-25 04:45:00,97.88,59.202,37.578,29.93 -2020-09-25 05:00:00,100.27,80.708,40.387,29.93 -2020-09-25 05:15:00,109.18,99.95299999999999,40.387,29.93 -2020-09-25 05:30:00,109.6,94.13,40.387,29.93 -2020-09-25 05:45:00,110.57,87.402,40.387,29.93 -2020-09-25 06:00:00,115.32,87.54799999999999,54.668,29.93 -2020-09-25 06:15:00,115.66,90.071,54.668,29.93 -2020-09-25 06:30:00,118.26,88.10700000000001,54.668,29.93 -2020-09-25 06:45:00,117.52,89.484,54.668,29.93 -2020-09-25 07:00:00,120.63,89.242,63.971000000000004,29.93 -2020-09-25 07:15:00,121.05,92.009,63.971000000000004,29.93 -2020-09-25 07:30:00,117.32,89.76299999999999,63.971000000000004,29.93 -2020-09-25 07:45:00,117.02,89.816,63.971000000000004,29.93 -2020-09-25 08:00:00,113.23,86.553,56.042,29.93 -2020-09-25 08:15:00,112.83,87.81,56.042,29.93 -2020-09-25 08:30:00,112.79,86.36,56.042,29.93 -2020-09-25 08:45:00,114.62,86.03399999999999,56.042,29.93 -2020-09-25 09:00:00,110.41,78.957,52.832,29.93 -2020-09-25 09:15:00,113.15,78.538,52.832,29.93 -2020-09-25 09:30:00,115.51,78.775,52.832,29.93 -2020-09-25 09:45:00,121.32,79.123,52.832,29.93 -2020-09-25 10:00:00,122.11,76.09899999999999,50.044,29.93 -2020-09-25 10:15:00,119.95,75.921,50.044,29.93 -2020-09-25 10:30:00,119.89,75.65,50.044,29.93 -2020-09-25 10:45:00,123.44,75.60600000000001,50.044,29.93 -2020-09-25 11:00:00,126.14,74.045,49.06100000000001,29.93 -2020-09-25 11:15:00,126.84,73.806,49.06100000000001,29.93 -2020-09-25 11:30:00,127.73,74.418,49.06100000000001,29.93 -2020-09-25 11:45:00,125.85,73.337,49.06100000000001,29.93 -2020-09-25 12:00:00,124.09,71.339,45.595,29.93 -2020-09-25 12:15:00,125.3,69.887,45.595,29.93 -2020-09-25 12:30:00,123.99,69.266,45.595,29.93 -2020-09-25 12:45:00,122.75,69.4,45.595,29.93 -2020-09-25 13:00:00,119.15,69.617,43.218,29.93 -2020-09-25 13:15:00,119.21,70.164,43.218,29.93 -2020-09-25 13:30:00,117.01,69.656,43.218,29.93 -2020-09-25 13:45:00,117.78,69.24,43.218,29.93 -2020-09-25 14:00:00,116.77,68.476,41.926,29.93 -2020-09-25 14:15:00,115.25,68.501,41.926,29.93 -2020-09-25 14:30:00,113.74,68.818,41.926,29.93 -2020-09-25 14:45:00,110.79,68.735,41.926,29.93 -2020-09-25 15:00:00,110.83,68.325,43.79,29.93 -2020-09-25 15:15:00,108.35,66.892,43.79,29.93 -2020-09-25 15:30:00,109.43,65.762,43.79,29.93 -2020-09-25 15:45:00,113.35,65.20100000000001,43.79,29.93 -2020-09-25 16:00:00,112.61,65.172,45.895,29.93 -2020-09-25 16:15:00,111.78,65.234,45.895,29.93 -2020-09-25 16:30:00,114.66,65.737,45.895,29.93 -2020-09-25 16:45:00,114.16,63.353,45.895,29.93 -2020-09-25 17:00:00,116.51,65.618,51.36,29.93 -2020-09-25 17:15:00,117.46,66.74,51.36,29.93 -2020-09-25 17:30:00,116.53,66.434,51.36,29.93 -2020-09-25 17:45:00,119.69,66.47399999999999,51.36,29.93 -2020-09-25 18:00:00,124.62,66.657,52.985,29.93 -2020-09-25 18:15:00,119.12,65.642,52.985,29.93 -2020-09-25 18:30:00,119.12,64.514,52.985,29.93 -2020-09-25 18:45:00,114.05,68.764,52.985,29.93 -2020-09-25 19:00:00,110.75,69.617,52.602,29.93 -2020-09-25 19:15:00,109.43,69.267,52.602,29.93 -2020-09-25 19:30:00,107.76,68.505,52.602,29.93 -2020-09-25 19:45:00,104.87,67.777,52.602,29.93 -2020-09-25 20:00:00,100.97,65.862,58.063,29.93 -2020-09-25 20:15:00,102.74,64.84,58.063,29.93 -2020-09-25 20:30:00,100.5,62.946999999999996,58.063,29.93 -2020-09-25 20:45:00,93.97,61.794,58.063,29.93 -2020-09-25 21:00:00,88.38,61.198,50.135,29.93 -2020-09-25 21:15:00,87.81,63.786,50.135,29.93 -2020-09-25 21:30:00,85.24,62.715,50.135,29.93 -2020-09-25 21:45:00,86.18,61.906000000000006,50.135,29.93 -2020-09-25 22:00:00,83.96,60.652,45.165,29.93 -2020-09-25 22:15:00,79.17,59.376000000000005,45.165,29.93 -2020-09-25 22:30:00,75.1,55.809,45.165,29.93 -2020-09-25 22:45:00,77.09,53.768,45.165,29.93 -2020-09-25 23:00:00,79.16,51.29600000000001,39.121,29.93 -2020-09-25 23:15:00,75.29,48.898,39.121,29.93 -2020-09-25 23:30:00,70.25,47.217,39.121,29.93 -2020-09-25 23:45:00,67.44,46.32,39.121,29.93 -2020-09-26 00:00:00,64.11,40.303000000000004,38.49,29.816 -2020-09-26 00:15:00,64.22,39.549,38.49,29.816 -2020-09-26 00:30:00,71.12,39.624,38.49,29.816 -2020-09-26 00:45:00,71.01,39.498000000000005,38.49,29.816 -2020-09-26 01:00:00,69.95,39.577,34.5,29.816 -2020-09-26 01:15:00,63.99,39.008,34.5,29.816 -2020-09-26 01:30:00,69.4,37.955,34.5,29.816 -2020-09-26 01:45:00,69.93,37.782,34.5,29.816 -2020-09-26 02:00:00,68.96,38.286,32.236,29.816 -2020-09-26 02:15:00,64.21,37.6,32.236,29.816 -2020-09-26 02:30:00,68.74,37.809,32.236,29.816 -2020-09-26 02:45:00,67.86,38.655,32.236,29.816 -2020-09-26 03:00:00,62.1,40.036,32.067,29.816 -2020-09-26 03:15:00,61.48,38.824,32.067,29.816 -2020-09-26 03:30:00,62.24,38.464,32.067,29.816 -2020-09-26 03:45:00,62.77,40.629,32.067,29.816 -2020-09-26 04:00:00,63.44,46.69,33.071,29.816 -2020-09-26 04:15:00,63.08,52.544,33.071,29.816 -2020-09-26 04:30:00,63.34,49.988,33.071,29.816 -2020-09-26 04:45:00,65.2,50.463,33.071,29.816 -2020-09-26 05:00:00,67.69,62.15,33.014,29.816 -2020-09-26 05:15:00,69.25,68.483,33.014,29.816 -2020-09-26 05:30:00,71.19,63.869,33.014,29.816 -2020-09-26 05:45:00,70.98,61.817,33.014,29.816 -2020-09-26 06:00:00,72.82,74.937,34.628,29.816 -2020-09-26 06:15:00,73.93,87.507,34.628,29.816 -2020-09-26 06:30:00,75.0,82.045,34.628,29.816 -2020-09-26 06:45:00,77.15,78.709,34.628,29.816 -2020-09-26 07:00:00,78.72,76.085,38.871,29.816 -2020-09-26 07:15:00,78.7,77.581,38.871,29.816 -2020-09-26 07:30:00,79.43,77.208,38.871,29.816 -2020-09-26 07:45:00,81.14,79.021,38.871,29.816 -2020-09-26 08:00:00,82.04,77.229,43.293,29.816 -2020-09-26 08:15:00,81.29,79.325,43.293,29.816 -2020-09-26 08:30:00,79.31,78.339,43.293,29.816 -2020-09-26 08:45:00,78.64,79.563,43.293,29.816 -2020-09-26 09:00:00,77.73,75.152,44.559,29.816 -2020-09-26 09:15:00,77.3,75.286,44.559,29.816 -2020-09-26 09:30:00,76.01,76.116,44.559,29.816 -2020-09-26 09:45:00,76.69,76.161,44.559,29.816 -2020-09-26 10:00:00,77.09,73.52,42.091,29.816 -2020-09-26 10:15:00,78.02,73.59899999999999,42.091,29.816 -2020-09-26 10:30:00,79.27,73.126,42.091,29.816 -2020-09-26 10:45:00,75.73,73.221,42.091,29.816 -2020-09-26 11:00:00,74.16,71.61399999999999,38.505,29.816 -2020-09-26 11:15:00,73.22,71.741,38.505,29.816 -2020-09-26 11:30:00,74.17,72.20100000000001,38.505,29.816 -2020-09-26 11:45:00,72.12,71.267,38.505,29.816 -2020-09-26 12:00:00,70.46,69.072,35.388000000000005,29.816 -2020-09-26 12:15:00,67.44,68.39,35.388000000000005,29.816 -2020-09-26 12:30:00,71.03,67.819,35.388000000000005,29.816 -2020-09-26 12:45:00,69.48,68.183,35.388000000000005,29.816 -2020-09-26 13:00:00,63.24,67.752,31.355999999999998,29.816 -2020-09-26 13:15:00,64.45,67.275,31.355999999999998,29.816 -2020-09-26 13:30:00,64.55,66.75,31.355999999999998,29.816 -2020-09-26 13:45:00,63.96,65.571,31.355999999999998,29.816 -2020-09-26 14:00:00,64.09,65.168,30.522,29.816 -2020-09-26 14:15:00,67.34,64.189,30.522,29.816 -2020-09-26 14:30:00,65.35,63.668,30.522,29.816 -2020-09-26 14:45:00,66.06,63.978,30.522,29.816 -2020-09-26 15:00:00,67.79,64.027,34.36,29.816 -2020-09-26 15:15:00,66.51,63.351000000000006,34.36,29.816 -2020-09-26 15:30:00,68.16,62.885,34.36,29.816 -2020-09-26 15:45:00,72.59,61.718999999999994,34.36,29.816 -2020-09-26 16:00:00,75.45,62.938,39.507,29.816 -2020-09-26 16:15:00,77.55,62.669,39.507,29.816 -2020-09-26 16:30:00,79.63,63.308,39.507,29.816 -2020-09-26 16:45:00,83.05,61.232,39.507,29.816 -2020-09-26 17:00:00,85.81,62.456,47.151,29.816 -2020-09-26 17:15:00,86.82,62.61,47.151,29.816 -2020-09-26 17:30:00,88.1,62.18899999999999,47.151,29.816 -2020-09-26 17:45:00,90.04,62.478,47.151,29.816 -2020-09-26 18:00:00,95.33,63.623000000000005,50.303999999999995,29.816 -2020-09-26 18:15:00,94.65,64.312,50.303999999999995,29.816 -2020-09-26 18:30:00,97.77,64.545,50.303999999999995,29.816 -2020-09-26 18:45:00,95.72,65.35300000000001,50.303999999999995,29.816 -2020-09-26 19:00:00,90.07,65.441,50.622,29.816 -2020-09-26 19:15:00,86.83,64.219,50.622,29.816 -2020-09-26 19:30:00,85.33,64.218,50.622,29.816 -2020-09-26 19:45:00,84.12,64.718,50.622,29.816 -2020-09-26 20:00:00,79.3,63.951,45.391000000000005,29.816 -2020-09-26 20:15:00,80.25,63.068000000000005,45.391000000000005,29.816 -2020-09-26 20:30:00,78.57,60.422,45.391000000000005,29.816 -2020-09-26 20:45:00,77.53,60.446000000000005,45.391000000000005,29.816 -2020-09-26 21:00:00,73.77,59.438,39.98,29.816 -2020-09-26 21:15:00,75.16,61.888000000000005,39.98,29.816 -2020-09-26 21:30:00,69.54,61.303999999999995,39.98,29.816 -2020-09-26 21:45:00,69.49,59.95399999999999,39.98,29.816 -2020-09-26 22:00:00,66.64,59.036,37.53,29.816 -2020-09-26 22:15:00,67.12,58.604,37.53,29.816 -2020-09-26 22:30:00,63.4,56.483000000000004,37.53,29.816 -2020-09-26 22:45:00,63.85,55.235,37.53,29.816 -2020-09-26 23:00:00,58.44,52.963,30.97,29.816 -2020-09-26 23:15:00,57.4,50.388000000000005,30.97,29.816 -2020-09-26 23:30:00,57.88,50.007,30.97,29.816 -2020-09-26 23:45:00,57.35,48.701,30.97,29.816 -2020-09-27 00:00:00,58.71,41.699,27.24,29.816 -2020-09-27 00:15:00,55.74,40.016999999999996,27.24,29.816 -2020-09-27 00:30:00,54.56,39.891,27.24,29.816 -2020-09-27 00:45:00,54.16,39.876999999999995,27.24,29.816 -2020-09-27 01:00:00,52.05,40.103,25.662,29.816 -2020-09-27 01:15:00,53.71,39.753,25.662,29.816 -2020-09-27 01:30:00,52.61,38.762,25.662,29.816 -2020-09-27 01:45:00,52.16,38.228,25.662,29.816 -2020-09-27 02:00:00,52.19,38.591,25.67,29.816 -2020-09-27 02:15:00,52.28,38.199,25.67,29.816 -2020-09-27 02:30:00,52.04,38.759,25.67,29.816 -2020-09-27 02:45:00,51.99,39.516,25.67,29.816 -2020-09-27 03:00:00,52.66,41.443000000000005,24.258000000000003,29.816 -2020-09-27 03:15:00,52.96,40.293,24.258000000000003,29.816 -2020-09-27 03:30:00,54.26,39.794000000000004,24.258000000000003,29.816 -2020-09-27 03:45:00,54.89,41.345,24.258000000000003,29.816 -2020-09-27 04:00:00,55.49,47.354,25.051,29.816 -2020-09-27 04:15:00,55.87,52.648999999999994,25.051,29.816 -2020-09-27 04:30:00,55.54,51.083999999999996,25.051,29.816 -2020-09-27 04:45:00,56.78,51.303999999999995,25.051,29.816 -2020-09-27 05:00:00,58.11,62.303999999999995,25.145,29.816 -2020-09-27 05:15:00,58.1,67.563,25.145,29.816 -2020-09-27 05:30:00,58.65,62.586000000000006,25.145,29.816 -2020-09-27 05:45:00,58.18,60.34,25.145,29.816 -2020-09-27 06:00:00,59.68,71.635,26.371,29.816 -2020-09-27 06:15:00,60.43,84.40100000000001,26.371,29.816 -2020-09-27 06:30:00,61.96,78.143,26.371,29.816 -2020-09-27 06:45:00,63.71,73.797,26.371,29.816 -2020-09-27 07:00:00,64.31,71.99600000000001,28.756999999999998,29.816 -2020-09-27 07:15:00,65.55,72.084,28.756999999999998,29.816 -2020-09-27 07:30:00,66.0,72.34,28.756999999999998,29.816 -2020-09-27 07:45:00,66.81,73.921,28.756999999999998,29.816 -2020-09-27 08:00:00,66.27,73.15899999999999,32.82,29.816 -2020-09-27 08:15:00,65.26,76.039,32.82,29.816 -2020-09-27 08:30:00,64.16,76.156,32.82,29.816 -2020-09-27 08:45:00,63.97,77.865,32.82,29.816 -2020-09-27 09:00:00,62.41,73.256,35.534,29.816 -2020-09-27 09:15:00,62.07,73.188,35.534,29.816 -2020-09-27 09:30:00,61.44,74.26,35.534,29.816 -2020-09-27 09:45:00,62.57,74.954,35.534,29.816 -2020-09-27 10:00:00,63.81,73.396,35.925,29.816 -2020-09-27 10:15:00,64.87,73.69,35.925,29.816 -2020-09-27 10:30:00,65.54,73.535,35.925,29.816 -2020-09-27 10:45:00,66.79,73.756,35.925,29.816 -2020-09-27 11:00:00,64.87,72.186,37.056,29.816 -2020-09-27 11:15:00,63.25,72.028,37.056,29.816 -2020-09-27 11:30:00,60.2,72.585,37.056,29.816 -2020-09-27 11:45:00,59.31,71.992,37.056,29.816 -2020-09-27 12:00:00,54.52,70.286,33.124,29.816 -2020-09-27 12:15:00,56.11,69.765,33.124,29.816 -2020-09-27 12:30:00,55.91,68.917,33.124,29.816 -2020-09-27 12:45:00,58.63,68.538,33.124,29.816 -2020-09-27 13:00:00,58.5,67.667,29.874000000000002,29.816 -2020-09-27 13:15:00,55.01,67.723,29.874000000000002,29.816 -2020-09-27 13:30:00,55.43,66.368,29.874000000000002,29.816 -2020-09-27 13:45:00,55.98,65.756,29.874000000000002,29.816 -2020-09-27 14:00:00,57.32,66.19800000000001,27.302,29.816 -2020-09-27 14:15:00,57.14,65.899,27.302,29.816 -2020-09-27 14:30:00,57.98,64.95,27.302,29.816 -2020-09-27 14:45:00,60.21,64.396,27.302,29.816 -2020-09-27 15:00:00,61.57,64.02600000000001,27.642,29.816 -2020-09-27 15:15:00,62.18,63.051,27.642,29.816 -2020-09-27 15:30:00,64.05,62.675,27.642,29.816 -2020-09-27 15:45:00,67.12,61.934,27.642,29.816 -2020-09-27 16:00:00,70.42,62.468,31.945999999999998,29.816 -2020-09-27 16:15:00,73.68,62.107,31.945999999999998,29.816 -2020-09-27 16:30:00,76.58,63.519,31.945999999999998,29.816 -2020-09-27 16:45:00,79.25,61.583999999999996,31.945999999999998,29.816 -2020-09-27 17:00:00,82.98,63.023,40.387,29.816 -2020-09-27 17:15:00,82.75,64.161,40.387,29.816 -2020-09-27 17:30:00,87.05,64.39399999999999,40.387,29.816 -2020-09-27 17:45:00,86.61,65.675,40.387,29.816 -2020-09-27 18:00:00,90.18,67.0,44.575,29.816 -2020-09-27 18:15:00,89.39,67.767,44.575,29.816 -2020-09-27 18:30:00,89.29,67.25399999999999,44.575,29.816 -2020-09-27 18:45:00,87.47,68.656,44.575,29.816 -2020-09-27 19:00:00,91.61,70.178,45.623999999999995,29.816 -2020-09-27 19:15:00,93.17,68.29899999999999,45.623999999999995,29.816 -2020-09-27 19:30:00,92.79,68.07,45.623999999999995,29.816 -2020-09-27 19:45:00,86.34,68.607,45.623999999999995,29.816 -2020-09-27 20:00:00,78.55,68.045,44.583999999999996,29.816 -2020-09-27 20:15:00,81.4,67.33,44.583999999999996,29.816 -2020-09-27 20:30:00,83.71,65.579,44.583999999999996,29.816 -2020-09-27 20:45:00,80.58,64.027,44.583999999999996,29.816 -2020-09-27 21:00:00,84.36,62.199,39.732,29.816 -2020-09-27 21:15:00,89.77,64.25,39.732,29.816 -2020-09-27 21:30:00,86.37,63.286,39.732,29.816 -2020-09-27 21:45:00,80.3,62.198,39.732,29.816 -2020-09-27 22:00:00,75.34,62.406000000000006,38.571,29.816 -2020-09-27 22:15:00,77.9,60.526,38.571,29.816 -2020-09-27 22:30:00,78.22,57.183,38.571,29.816 -2020-09-27 22:45:00,80.64,54.788999999999994,38.571,29.816 -2020-09-27 23:00:00,76.15,51.59,33.121,29.816 -2020-09-27 23:15:00,70.67,50.4,33.121,29.816 -2020-09-27 23:30:00,68.9,49.846000000000004,33.121,29.816 -2020-09-27 23:45:00,69.98,48.894,33.121,29.816 -2020-09-28 00:00:00,72.56,44.205,32.506,29.93 -2020-09-28 00:15:00,73.53,43.888999999999996,32.506,29.93 -2020-09-28 00:30:00,72.62,43.526,32.506,29.93 -2020-09-28 00:45:00,68.54,43.083999999999996,32.506,29.93 -2020-09-28 01:00:00,65.59,43.588,31.121,29.93 -2020-09-28 01:15:00,65.31,43.13,31.121,29.93 -2020-09-28 01:30:00,66.33,42.431999999999995,31.121,29.93 -2020-09-28 01:45:00,66.87,41.858999999999995,31.121,29.93 -2020-09-28 02:00:00,64.01,42.553999999999995,29.605999999999998,29.93 -2020-09-28 02:15:00,69.97,41.842,29.605999999999998,29.93 -2020-09-28 02:30:00,74.06,42.589,29.605999999999998,29.93 -2020-09-28 02:45:00,75.8,43.067,29.605999999999998,29.93 -2020-09-28 03:00:00,72.48,45.693999999999996,28.124000000000002,29.93 -2020-09-28 03:15:00,69.89,45.528999999999996,28.124000000000002,29.93 -2020-09-28 03:30:00,74.11,45.453,28.124000000000002,29.93 -2020-09-28 03:45:00,79.39,46.504,28.124000000000002,29.93 -2020-09-28 04:00:00,83.04,55.977,29.743000000000002,29.93 -2020-09-28 04:15:00,81.76,64.546,29.743000000000002,29.93 -2020-09-28 04:30:00,89.53,63.233000000000004,29.743000000000002,29.93 -2020-09-28 04:45:00,96.21,63.772,29.743000000000002,29.93 -2020-09-28 05:00:00,105.6,83.844,36.191,29.93 -2020-09-28 05:15:00,107.36,101.895,36.191,29.93 -2020-09-28 05:30:00,107.75,95.816,36.191,29.93 -2020-09-28 05:45:00,111.23,89.825,36.191,29.93 -2020-09-28 06:00:00,115.68,89.09299999999999,55.277,29.93 -2020-09-28 06:15:00,115.66,91.397,55.277,29.93 -2020-09-28 06:30:00,117.81,90.111,55.277,29.93 -2020-09-28 06:45:00,119.85,91.897,55.277,29.93 -2020-09-28 07:00:00,122.15,91.338,65.697,29.93 -2020-09-28 07:15:00,122.14,93.427,65.697,29.93 -2020-09-28 07:30:00,121.34,92.88600000000001,65.697,29.93 -2020-09-28 07:45:00,116.32,93.995,65.697,29.93 -2020-09-28 08:00:00,117.15,90.522,57.028,29.93 -2020-09-28 08:15:00,115.61,91.912,57.028,29.93 -2020-09-28 08:30:00,119.14,90.226,57.028,29.93 -2020-09-28 08:45:00,116.91,91.141,57.028,29.93 -2020-09-28 09:00:00,116.01,85.585,52.633,29.93 -2020-09-28 09:15:00,119.67,83.25399999999999,52.633,29.93 -2020-09-28 09:30:00,118.68,83.365,52.633,29.93 -2020-09-28 09:45:00,122.1,82.484,52.633,29.93 -2020-09-28 10:00:00,117.58,81.078,50.647,29.93 -2020-09-28 10:15:00,119.15,81.132,50.647,29.93 -2020-09-28 10:30:00,116.21,80.383,50.647,29.93 -2020-09-28 10:45:00,116.73,79.708,50.647,29.93 -2020-09-28 11:00:00,119.42,77.577,50.245,29.93 -2020-09-28 11:15:00,116.62,78.139,50.245,29.93 -2020-09-28 11:30:00,121.85,79.594,50.245,29.93 -2020-09-28 11:45:00,117.42,79.208,50.245,29.93 -2020-09-28 12:00:00,113.11,77.02,46.956,29.93 -2020-09-28 12:15:00,116.0,76.562,46.956,29.93 -2020-09-28 12:30:00,113.7,75.102,46.956,29.93 -2020-09-28 12:45:00,110.78,75.194,46.956,29.93 -2020-09-28 13:00:00,109.56,74.983,47.383,29.93 -2020-09-28 13:15:00,112.19,74.00399999999999,47.383,29.93 -2020-09-28 13:30:00,112.32,72.598,47.383,29.93 -2020-09-28 13:45:00,113.59,72.613,47.383,29.93 -2020-09-28 14:00:00,115.79,72.227,47.1,29.93 -2020-09-28 14:15:00,115.49,72.146,47.1,29.93 -2020-09-28 14:30:00,114.12,70.952,47.1,29.93 -2020-09-28 14:45:00,114.56,71.797,47.1,29.93 -2020-09-28 15:00:00,117.46,71.695,49.355,29.93 -2020-09-28 15:15:00,116.47,69.889,49.355,29.93 -2020-09-28 15:30:00,114.37,69.814,49.355,29.93 -2020-09-28 15:45:00,114.24,68.618,49.355,29.93 -2020-09-28 16:00:00,115.27,69.747,52.14,29.93 -2020-09-28 16:15:00,117.99,69.223,52.14,29.93 -2020-09-28 16:30:00,117.86,69.88,52.14,29.93 -2020-09-28 16:45:00,120.05,67.665,52.14,29.93 -2020-09-28 17:00:00,122.78,68.229,58.705,29.93 -2020-09-28 17:15:00,121.13,69.37100000000001,58.705,29.93 -2020-09-28 17:30:00,122.96,69.17699999999999,58.705,29.93 -2020-09-28 17:45:00,120.89,69.768,58.705,29.93 -2020-09-28 18:00:00,124.3,70.32,59.153,29.93 -2020-09-28 18:15:00,121.62,69.16,59.153,29.93 -2020-09-28 18:30:00,123.48,68.303,59.153,29.93 -2020-09-28 18:45:00,119.09,72.157,59.153,29.93 -2020-09-28 19:00:00,115.15,72.955,61.483000000000004,29.93 -2020-09-28 19:15:00,109.93,71.735,61.483000000000004,29.93 -2020-09-28 19:30:00,107.66,71.362,61.483000000000004,29.93 -2020-09-28 19:45:00,110.06,71.22399999999999,61.483000000000004,29.93 -2020-09-28 20:00:00,99.87,69.15899999999999,67.55,29.93 -2020-09-28 20:15:00,98.53,68.77,67.55,29.93 -2020-09-28 20:30:00,102.19,66.858,67.55,29.93 -2020-09-28 20:45:00,103.9,65.867,67.55,29.93 -2020-09-28 21:00:00,96.81,63.74,60.026,29.93 -2020-09-28 21:15:00,91.9,65.782,60.026,29.93 -2020-09-28 21:30:00,86.66,64.904,60.026,29.93 -2020-09-28 21:45:00,91.92,63.486999999999995,60.026,29.93 -2020-09-28 22:00:00,89.43,61.42,52.736999999999995,29.93 -2020-09-28 22:15:00,89.06,60.604,52.736999999999995,29.93 -2020-09-28 22:30:00,81.86,51.547,52.736999999999995,29.93 -2020-09-28 22:45:00,86.05,47.843999999999994,52.736999999999995,29.93 -2020-09-28 23:00:00,82.52,44.95,44.408,29.93 -2020-09-28 23:15:00,80.8,43.236000000000004,44.408,29.93 -2020-09-28 23:30:00,76.73,43.395,44.408,29.93 -2020-09-28 23:45:00,79.66,42.756,44.408,29.93 -2020-09-29 00:00:00,77.73,42.65,44.438,29.93 -2020-09-29 00:15:00,76.61,43.342,44.438,29.93 -2020-09-29 00:30:00,76.57,43.253,44.438,29.93 -2020-09-29 00:45:00,78.99,43.126999999999995,44.438,29.93 -2020-09-29 01:00:00,77.92,43.176,41.468999999999994,29.93 -2020-09-29 01:15:00,78.18,42.699,41.468999999999994,29.93 -2020-09-29 01:30:00,74.21,41.974,41.468999999999994,29.93 -2020-09-29 01:45:00,77.34,41.108999999999995,41.468999999999994,29.93 -2020-09-29 02:00:00,78.32,41.458,39.708,29.93 -2020-09-29 02:15:00,77.97,41.577,39.708,29.93 -2020-09-29 02:30:00,78.04,41.858000000000004,39.708,29.93 -2020-09-29 02:45:00,80.85,42.573,39.708,29.93 -2020-09-29 03:00:00,79.93,44.456,38.919000000000004,29.93 -2020-09-29 03:15:00,76.51,44.75899999999999,38.919000000000004,29.93 -2020-09-29 03:30:00,79.49,44.794,38.919000000000004,29.93 -2020-09-29 03:45:00,80.02,45.07,38.919000000000004,29.93 -2020-09-29 04:00:00,89.45,53.608999999999995,40.092,29.93 -2020-09-29 04:15:00,93.05,62.126999999999995,40.092,29.93 -2020-09-29 04:30:00,95.48,60.648,40.092,29.93 -2020-09-29 04:45:00,95.39,61.878,40.092,29.93 -2020-09-29 05:00:00,103.88,84.5,43.713,29.93 -2020-09-29 05:15:00,108.14,103.072,43.713,29.93 -2020-09-29 05:30:00,110.41,96.729,43.713,29.93 -2020-09-29 05:45:00,114.39,90.139,43.713,29.93 -2020-09-29 06:00:00,118.77,89.865,56.033,29.93 -2020-09-29 06:15:00,120.88,92.749,56.033,29.93 -2020-09-29 06:30:00,121.79,91.06299999999999,56.033,29.93 -2020-09-29 06:45:00,123.75,92.088,56.033,29.93 -2020-09-29 07:00:00,126.35,91.59100000000001,66.003,29.93 -2020-09-29 07:15:00,126.55,93.463,66.003,29.93 -2020-09-29 07:30:00,125.28,92.823,66.003,29.93 -2020-09-29 07:45:00,123.7,93.275,66.003,29.93 -2020-09-29 08:00:00,120.71,89.791,57.474,29.93 -2020-09-29 08:15:00,117.0,90.537,57.474,29.93 -2020-09-29 08:30:00,116.25,88.941,57.474,29.93 -2020-09-29 08:45:00,114.5,89.095,57.474,29.93 -2020-09-29 09:00:00,115.58,83.553,51.928000000000004,29.93 -2020-09-29 09:15:00,120.06,81.567,51.928000000000004,29.93 -2020-09-29 09:30:00,116.6,82.34299999999999,51.928000000000004,29.93 -2020-09-29 09:45:00,112.53,82.32700000000001,51.928000000000004,29.93 -2020-09-29 10:00:00,117.82,79.771,49.46,29.93 -2020-09-29 10:15:00,117.6,79.37100000000001,49.46,29.93 -2020-09-29 10:30:00,115.38,78.68,49.46,29.93 -2020-09-29 10:45:00,115.03,78.775,49.46,29.93 -2020-09-29 11:00:00,112.32,77.102,48.206,29.93 -2020-09-29 11:15:00,114.51,77.828,48.206,29.93 -2020-09-29 11:30:00,115.85,78.133,48.206,29.93 -2020-09-29 11:45:00,122.55,77.62899999999999,48.206,29.93 -2020-09-29 12:00:00,121.21,74.861,46.285,29.93 -2020-09-29 12:15:00,123.65,74.48899999999999,46.285,29.93 -2020-09-29 12:30:00,119.98,73.876,46.285,29.93 -2020-09-29 12:45:00,119.13,74.34,46.285,29.93 -2020-09-29 13:00:00,117.91,73.741,46.861999999999995,29.93 -2020-09-29 13:15:00,116.67,73.89399999999999,46.861999999999995,29.93 -2020-09-29 13:30:00,117.65,72.825,46.861999999999995,29.93 -2020-09-29 13:45:00,118.25,72.237,46.861999999999995,29.93 -2020-09-29 14:00:00,115.97,72.195,46.488,29.93 -2020-09-29 14:15:00,115.47,72.04,46.488,29.93 -2020-09-29 14:30:00,114.39,71.3,46.488,29.93 -2020-09-29 14:45:00,114.29,71.57600000000001,46.488,29.93 -2020-09-29 15:00:00,110.86,71.184,48.442,29.93 -2020-09-29 15:15:00,112.31,70.13600000000001,48.442,29.93 -2020-09-29 15:30:00,111.91,70.016,48.442,29.93 -2020-09-29 15:45:00,114.05,68.95,48.442,29.93 -2020-09-29 16:00:00,116.1,69.681,50.397,29.93 -2020-09-29 16:15:00,115.08,69.375,50.397,29.93 -2020-09-29 16:30:00,117.86,69.956,50.397,29.93 -2020-09-29 16:45:00,119.27,68.388,50.397,29.93 -2020-09-29 17:00:00,122.25,69.221,56.668,29.93 -2020-09-29 17:15:00,118.99,70.688,56.668,29.93 -2020-09-29 17:30:00,119.0,70.389,56.668,29.93 -2020-09-29 17:45:00,121.21,70.738,56.668,29.93 -2020-09-29 18:00:00,124.72,70.545,57.957,29.93 -2020-09-29 18:15:00,120.93,70.315,57.957,29.93 -2020-09-29 18:30:00,122.34,69.196,57.957,29.93 -2020-09-29 18:45:00,118.19,73.126,57.957,29.93 -2020-09-29 19:00:00,111.46,73.086,57.056000000000004,29.93 -2020-09-29 19:15:00,107.02,71.922,57.056000000000004,29.93 -2020-09-29 19:30:00,105.82,71.21300000000001,57.056000000000004,29.93 -2020-09-29 19:45:00,104.05,71.321,57.056000000000004,29.93 -2020-09-29 20:00:00,99.51,69.616,64.156,29.93 -2020-09-29 20:15:00,95.64,68.005,64.156,29.93 -2020-09-29 20:30:00,91.07,66.372,64.156,29.93 -2020-09-29 20:45:00,88.43,65.49,64.156,29.93 -2020-09-29 21:00:00,82.9,63.803999999999995,56.507,29.93 -2020-09-29 21:15:00,78.99,65.01100000000001,56.507,29.93 -2020-09-29 21:30:00,76.78,64.074,56.507,29.93 -2020-09-29 21:45:00,75.2,62.826,56.507,29.93 -2020-09-29 22:00:00,71.1,61.318999999999996,50.728,29.93 -2020-09-29 22:15:00,70.7,60.165,50.728,29.93 -2020-09-29 22:30:00,67.54,51.342,50.728,29.93 -2020-09-29 22:45:00,65.87,47.714,50.728,29.93 -2020-09-29 23:00:00,77.01,44.299,43.556999999999995,29.93 -2020-09-29 23:15:00,80.01,43.45399999999999,43.556999999999995,29.93 -2020-09-29 23:30:00,80.68,43.519,43.556999999999995,29.93 -2020-09-29 23:45:00,80.11,42.897,43.556999999999995,29.93 -2020-09-30 00:00:00,75.35,42.93600000000001,41.151,29.93 -2020-09-30 00:15:00,78.11,43.623000000000005,41.151,29.93 -2020-09-30 00:30:00,79.8,43.541000000000004,41.151,29.93 -2020-09-30 00:45:00,81.56,43.416000000000004,41.151,29.93 -2020-09-30 01:00:00,76.14,43.457,37.763000000000005,29.93 -2020-09-30 01:15:00,75.09,43.004,37.763000000000005,29.93 -2020-09-30 01:30:00,75.45,42.298,37.763000000000005,29.93 -2020-09-30 01:45:00,80.02,41.433,37.763000000000005,29.93 -2020-09-30 02:00:00,79.63,41.788000000000004,35.615,29.93 -2020-09-30 02:15:00,78.9,41.925,35.615,29.93 -2020-09-30 02:30:00,76.86,42.18600000000001,35.615,29.93 -2020-09-30 02:45:00,78.72,42.895,35.615,29.93 -2020-09-30 03:00:00,81.85,44.765,35.153,29.93 -2020-09-30 03:15:00,81.74,45.086999999999996,35.153,29.93 -2020-09-30 03:30:00,82.99,45.126000000000005,35.153,29.93 -2020-09-30 03:45:00,83.55,45.383,35.153,29.93 -2020-09-30 04:00:00,88.62,53.961000000000006,36.203,29.93 -2020-09-30 04:15:00,91.38,62.516000000000005,36.203,29.93 -2020-09-30 04:30:00,94.94,61.042,36.203,29.93 -2020-09-30 04:45:00,97.42,62.28,36.203,29.93 -2020-09-30 05:00:00,103.8,85.005,39.922,29.93 -2020-09-30 05:15:00,107.95,103.689,39.922,29.93 -2020-09-30 05:30:00,110.12,97.321,39.922,29.93 -2020-09-30 05:45:00,113.38,90.678,39.922,29.93 -2020-09-30 06:00:00,119.1,90.37100000000001,56.443999999999996,29.93 -2020-09-30 06:15:00,117.38,93.279,56.443999999999996,29.93 -2020-09-30 06:30:00,119.12,91.594,56.443999999999996,29.93 -2020-09-30 06:45:00,120.5,92.615,56.443999999999996,29.93 -2020-09-30 07:00:00,123.29,92.118,68.683,29.93 -2020-09-30 07:15:00,121.03,94.00399999999999,68.683,29.93 -2020-09-30 07:30:00,122.13,93.398,68.683,29.93 -2020-09-30 07:45:00,120.93,93.84700000000001,68.683,29.93 -2020-09-30 08:00:00,117.66,90.37,59.003,29.93 -2020-09-30 08:15:00,117.3,91.08,59.003,29.93 -2020-09-30 08:30:00,116.66,89.5,59.003,29.93 -2020-09-30 08:45:00,116.56,89.633,59.003,29.93 -2020-09-30 09:00:00,115.38,84.096,56.21,29.93 -2020-09-30 09:15:00,115.67,82.101,56.21,29.93 -2020-09-30 09:30:00,115.08,82.85799999999999,56.21,29.93 -2020-09-30 09:45:00,114.96,82.81,56.21,29.93 -2020-09-30 10:00:00,115.1,80.25,52.358999999999995,29.93 -2020-09-30 10:15:00,116.5,79.81,52.358999999999995,29.93 -2020-09-30 10:30:00,113.95,79.10300000000001,52.358999999999995,29.93 -2020-09-30 10:45:00,112.23,79.183,52.358999999999995,29.93 -2020-09-30 11:00:00,108.77,77.523,51.161,29.93 -2020-09-30 11:15:00,108.69,78.23100000000001,51.161,29.93 -2020-09-30 11:30:00,109.39,78.536,51.161,29.93 -2020-09-30 11:45:00,108.48,78.013,51.161,29.93 -2020-09-30 12:00:00,104.28,75.219,49.119,29.93 -2020-09-30 12:15:00,106.05,74.836,49.119,29.93 -2020-09-30 12:30:00,104.62,74.258,49.119,29.93 -2020-09-30 12:45:00,103.69,74.71300000000001,49.119,29.93 -2020-09-30 13:00:00,102.95,74.086,49.187,29.93 -2020-09-30 13:15:00,102.97,74.237,49.187,29.93 -2020-09-30 13:30:00,103.28,73.165,49.187,29.93 -2020-09-30 13:45:00,103.85,72.581,49.187,29.93 -2020-09-30 14:00:00,104.84,72.49,49.787,29.93 -2020-09-30 14:15:00,104.58,72.35,49.787,29.93 -2020-09-30 14:30:00,105.13,71.645,49.787,29.93 -2020-09-30 14:45:00,105.67,71.917,49.787,29.93 -2020-09-30 15:00:00,105.44,71.477,51.458999999999996,29.93 -2020-09-30 15:15:00,106.06,70.44800000000001,51.458999999999996,29.93 -2020-09-30 15:30:00,106.29,70.362,51.458999999999996,29.93 -2020-09-30 15:45:00,107.58,69.31,51.458999999999996,29.93 -2020-09-30 16:00:00,110.43,70.0,53.663000000000004,29.93 -2020-09-30 16:15:00,109.91,69.711,53.663000000000004,29.93 -2020-09-30 16:30:00,111.8,70.28699999999999,53.663000000000004,29.93 -2020-09-30 16:45:00,113.95,68.777,53.663000000000004,29.93 -2020-09-30 17:00:00,117.7,69.568,58.183,29.93 -2020-09-30 17:15:00,116.19,71.06,58.183,29.93 -2020-09-30 17:30:00,119.57,70.767,58.183,29.93 -2020-09-30 17:45:00,120.66,71.14699999999999,58.183,29.93 -2020-09-30 18:00:00,122.31,70.935,60.141000000000005,29.93 -2020-09-30 18:15:00,120.45,70.704,60.141000000000005,29.93 -2020-09-30 18:30:00,121.29,69.597,60.141000000000005,29.93 -2020-09-30 18:45:00,119.4,73.52199999999999,60.141000000000005,29.93 -2020-09-30 19:00:00,116.88,73.491,60.582,29.93 -2020-09-30 19:15:00,115.1,72.325,60.582,29.93 -2020-09-30 19:30:00,111.94,71.613,60.582,29.93 -2020-09-30 19:45:00,110.07,71.71300000000001,60.582,29.93 -2020-09-30 20:00:00,104.26,70.03,66.61,29.93 -2020-09-30 20:15:00,105.15,68.417,66.61,29.93 -2020-09-30 20:30:00,101.51,66.757,66.61,29.93 -2020-09-30 20:45:00,102.47,65.836,66.61,29.93 -2020-09-30 21:00:00,96.11,64.15100000000001,57.658,29.93 -2020-09-30 21:15:00,94.9,65.348,57.658,29.93 -2020-09-30 21:30:00,93.22,64.42,57.658,29.93 -2020-09-30 21:45:00,94.05,63.138000000000005,57.658,29.93 -2020-09-30 22:00:00,89.15,61.61,51.81,29.93 -2020-09-30 22:15:00,86.92,60.433,51.81,29.93 -2020-09-30 22:30:00,83.39,51.606,51.81,29.93 -2020-09-30 22:45:00,81.96,47.983999999999995,51.81,29.93 -2020-09-30 23:00:00,72.81,44.608999999999995,42.93600000000001,29.93 -2020-09-30 23:15:00,74.96,43.731,42.93600000000001,29.93 -2020-09-30 23:30:00,74.25,43.799,42.93600000000001,29.93 -2020-09-30 23:45:00,77.92,43.177,42.93600000000001,29.93 -2020-10-01 00:00:00,74.36,48.013000000000005,42.746,31.349 -2020-10-01 00:15:00,73.35,49.218999999999994,42.746,31.349 -2020-10-01 00:30:00,71.89,48.891000000000005,42.746,31.349 -2020-10-01 00:45:00,74.82,48.773,42.746,31.349 -2020-10-01 01:00:00,74.95,49.074,40.025999999999996,31.349 -2020-10-01 01:15:00,73.4,48.443000000000005,40.025999999999996,31.349 -2020-10-01 01:30:00,70.75,47.641000000000005,40.025999999999996,31.349 -2020-10-01 01:45:00,74.21,47.16,40.025999999999996,31.349 -2020-10-01 02:00:00,74.54,47.581,38.154,31.349 -2020-10-01 02:15:00,75.11,47.598,38.154,31.349 -2020-10-01 02:30:00,70.83,48.211000000000006,38.154,31.349 -2020-10-01 02:45:00,74.98,48.898999999999994,38.154,31.349 -2020-10-01 03:00:00,76.99,51.108999999999995,37.575,31.349 -2020-10-01 03:15:00,78.83,51.843,37.575,31.349 -2020-10-01 03:30:00,75.95,51.895,37.575,31.349 -2020-10-01 03:45:00,81.07,52.646,37.575,31.349 -2020-10-01 04:00:00,86.24,61.338,39.154,31.349 -2020-10-01 04:15:00,88.04,69.964,39.154,31.349 -2020-10-01 04:30:00,85.63,69.25,39.154,31.349 -2020-10-01 04:45:00,92.33,70.865,39.154,31.349 -2020-10-01 05:00:00,98.87,96.057,44.085,31.349 -2020-10-01 05:15:00,108.96,118.06,44.085,31.349 -2020-10-01 05:30:00,116.11,112.14200000000001,44.085,31.349 -2020-10-01 05:45:00,112.83,104.488,44.085,31.349 -2020-10-01 06:00:00,118.1,104.522,57.49,31.349 -2020-10-01 06:15:00,117.62,108.09299999999999,57.49,31.349 -2020-10-01 06:30:00,119.15,106.42200000000001,57.49,31.349 -2020-10-01 06:45:00,121.05,107.11200000000001,57.49,31.349 -2020-10-01 07:00:00,122.34,107.375,73.617,31.349 -2020-10-01 07:15:00,120.54,109.579,73.617,31.349 -2020-10-01 07:30:00,118.69,109.189,73.617,31.349 -2020-10-01 07:45:00,117.8,109.36,73.617,31.349 -2020-10-01 08:00:00,115.95,107.73899999999999,69.281,31.349 -2020-10-01 08:15:00,115.95,108.02799999999999,69.281,31.349 -2020-10-01 08:30:00,122.25,105.654,69.281,31.349 -2020-10-01 08:45:00,124.29,104.889,69.281,31.349 -2020-10-01 09:00:00,122.13,100.23700000000001,63.926,31.349 -2020-10-01 09:15:00,121.05,98.084,63.926,31.349 -2020-10-01 09:30:00,116.55,98.544,63.926,31.349 -2020-10-01 09:45:00,115.32,98.477,63.926,31.349 -2020-10-01 10:00:00,116.93,95.274,59.442,31.349 -2020-10-01 10:15:00,119.48,94.848,59.442,31.349 -2020-10-01 10:30:00,116.82,93.89399999999999,59.442,31.349 -2020-10-01 10:45:00,115.21,93.82700000000001,59.442,31.349 -2020-10-01 11:00:00,110.64,90.531,56.771,31.349 -2020-10-01 11:15:00,110.57,91.235,56.771,31.349 -2020-10-01 11:30:00,114.18,91.44200000000001,56.771,31.349 -2020-10-01 11:45:00,110.72,91.22200000000001,56.771,31.349 -2020-10-01 12:00:00,110.27,87.663,53.701,31.349 -2020-10-01 12:15:00,110.53,87.29899999999999,53.701,31.349 -2020-10-01 12:30:00,110.68,86.45700000000001,53.701,31.349 -2020-10-01 12:45:00,110.33,86.771,53.701,31.349 -2020-10-01 13:00:00,109.27,86.516,52.364,31.349 -2020-10-01 13:15:00,108.61,86.375,52.364,31.349 -2020-10-01 13:30:00,106.82,85.52,52.364,31.349 -2020-10-01 13:45:00,108.3,85.07799999999999,52.364,31.349 -2020-10-01 14:00:00,106.34,84.788,53.419,31.349 -2020-10-01 14:15:00,103.21,85.045,53.419,31.349 -2020-10-01 14:30:00,104.24,84.14200000000001,53.419,31.349 -2020-10-01 14:45:00,101.78,84.021,53.419,31.349 -2020-10-01 15:00:00,102.18,84.177,56.744,31.349 -2020-10-01 15:15:00,105.7,83.725,56.744,31.349 -2020-10-01 15:30:00,109.3,83.95100000000001,56.744,31.349 -2020-10-01 15:45:00,112.38,83.89299999999999,56.744,31.349 -2020-10-01 16:00:00,110.92,83.941,60.458,31.349 -2020-10-01 16:15:00,110.81,83.338,60.458,31.349 -2020-10-01 16:30:00,115.07,84.031,60.458,31.349 -2020-10-01 16:45:00,114.72,82.064,60.458,31.349 -2020-10-01 17:00:00,119.03,82.493,66.295,31.349 -2020-10-01 17:15:00,116.61,83.67299999999999,66.295,31.349 -2020-10-01 17:30:00,118.16,83.4,66.295,31.349 -2020-10-01 17:45:00,121.44,84.021,66.295,31.349 -2020-10-01 18:00:00,125.72,83.735,68.468,31.349 -2020-10-01 18:15:00,122.88,83.59700000000001,68.468,31.349 -2020-10-01 18:30:00,124.48,82.62799999999999,68.468,31.349 -2020-10-01 18:45:00,119.47,86.285,68.468,31.349 -2020-10-01 19:00:00,116.32,86.665,66.39399999999999,31.349 -2020-10-01 19:15:00,113.44,85.539,66.39399999999999,31.349 -2020-10-01 19:30:00,108.44,85.01100000000001,66.39399999999999,31.349 -2020-10-01 19:45:00,109.78,85.054,66.39399999999999,31.349 -2020-10-01 20:00:00,106.35,84.295,63.183,31.349 -2020-10-01 20:15:00,108.46,82.07799999999999,63.183,31.349 -2020-10-01 20:30:00,106.1,81.286,63.183,31.349 -2020-10-01 20:45:00,101.39,80.277,63.183,31.349 -2020-10-01 21:00:00,93.83,78.27,55.133,31.349 -2020-10-01 21:15:00,92.88,78.835,55.133,31.349 -2020-10-01 21:30:00,91.65,77.945,55.133,31.349 -2020-10-01 21:45:00,92.82,76.352,55.133,31.349 -2020-10-01 22:00:00,85.0,73.477,50.111999999999995,31.349 -2020-10-01 22:15:00,85.89,71.318,50.111999999999995,31.349 -2020-10-01 22:30:00,82.6,60.872,50.111999999999995,31.349 -2020-10-01 22:45:00,86.0,55.68899999999999,50.111999999999995,31.349 -2020-10-01 23:00:00,78.43,50.915,44.536,31.349 -2020-10-01 23:15:00,77.59,50.651,44.536,31.349 -2020-10-01 23:30:00,77.83,50.118,44.536,31.349 -2020-10-01 23:45:00,79.72,50.093999999999994,44.536,31.349 -2020-10-02 00:00:00,74.84,46.853,42.291000000000004,31.349 -2020-10-02 00:15:00,76.22,48.257,42.291000000000004,31.349 -2020-10-02 00:30:00,70.57,48.04,42.291000000000004,31.349 -2020-10-02 00:45:00,72.88,48.211000000000006,42.291000000000004,31.349 -2020-10-02 01:00:00,69.56,48.17,41.008,31.349 -2020-10-02 01:15:00,70.58,47.573,41.008,31.349 -2020-10-02 01:30:00,77.02,47.115,41.008,31.349 -2020-10-02 01:45:00,78.7,46.528999999999996,41.008,31.349 -2020-10-02 02:00:00,78.05,47.533,39.521,31.349 -2020-10-02 02:15:00,73.35,47.49,39.521,31.349 -2020-10-02 02:30:00,78.63,48.773,39.521,31.349 -2020-10-02 02:45:00,79.6,49.075,39.521,31.349 -2020-10-02 03:00:00,74.8,51.332,39.812,31.349 -2020-10-02 03:15:00,75.56,51.751000000000005,39.812,31.349 -2020-10-02 03:30:00,79.48,51.661,39.812,31.349 -2020-10-02 03:45:00,85.82,53.034,39.812,31.349 -2020-10-02 04:00:00,90.92,61.923,41.22,31.349 -2020-10-02 04:15:00,87.14,69.571,41.22,31.349 -2020-10-02 04:30:00,91.86,69.50399999999999,41.22,31.349 -2020-10-02 04:45:00,98.29,70.303,41.22,31.349 -2020-10-02 05:00:00,108.33,94.79799999999999,45.115,31.349 -2020-10-02 05:15:00,107.36,118.024,45.115,31.349 -2020-10-02 05:30:00,109.91,112.62,45.115,31.349 -2020-10-02 05:45:00,112.72,104.635,45.115,31.349 -2020-10-02 06:00:00,119.78,104.962,59.06100000000001,31.349 -2020-10-02 06:15:00,119.47,108.075,59.06100000000001,31.349 -2020-10-02 06:30:00,123.95,106.051,59.06100000000001,31.349 -2020-10-02 06:45:00,121.8,107.29899999999999,59.06100000000001,31.349 -2020-10-02 07:00:00,122.66,107.613,71.874,31.349 -2020-10-02 07:15:00,121.44,110.766,71.874,31.349 -2020-10-02 07:30:00,120.73,109.22200000000001,71.874,31.349 -2020-10-02 07:45:00,118.08,108.91799999999999,71.874,31.349 -2020-10-02 08:00:00,116.05,107.29700000000001,68.439,31.349 -2020-10-02 08:15:00,115.68,107.771,68.439,31.349 -2020-10-02 08:30:00,115.03,105.775,68.439,31.349 -2020-10-02 08:45:00,114.17,104.251,68.439,31.349 -2020-10-02 09:00:00,111.59,98.507,65.523,31.349 -2020-10-02 09:15:00,110.49,97.64299999999999,65.523,31.349 -2020-10-02 09:30:00,110.15,97.525,65.523,31.349 -2020-10-02 09:45:00,108.89,97.596,65.523,31.349 -2020-10-02 10:00:00,107.9,93.774,62.005,31.349 -2020-10-02 10:15:00,108.37,93.501,62.005,31.349 -2020-10-02 10:30:00,108.22,92.79,62.005,31.349 -2020-10-02 10:45:00,109.74,92.461,62.005,31.349 -2020-10-02 11:00:00,105.01,89.28200000000001,60.351000000000006,31.349 -2020-10-02 11:15:00,103.83,88.994,60.351000000000006,31.349 -2020-10-02 11:30:00,107.03,89.801,60.351000000000006,31.349 -2020-10-02 11:45:00,102.87,89.085,60.351000000000006,31.349 -2020-10-02 12:00:00,100.19,86.24,55.331,31.349 -2020-10-02 12:15:00,99.6,84.566,55.331,31.349 -2020-10-02 12:30:00,97.98,83.89200000000001,55.331,31.349 -2020-10-02 12:45:00,96.69,84.041,55.331,31.349 -2020-10-02 13:00:00,95.31,84.48899999999999,53.361999999999995,31.349 -2020-10-02 13:15:00,96.32,84.825,53.361999999999995,31.349 -2020-10-02 13:30:00,95.77,84.383,53.361999999999995,31.349 -2020-10-02 13:45:00,96.42,84.069,53.361999999999995,31.349 -2020-10-02 14:00:00,97.78,82.788,51.708,31.349 -2020-10-02 14:15:00,97.81,83.20100000000001,51.708,31.349 -2020-10-02 14:30:00,97.63,83.339,51.708,31.349 -2020-10-02 14:45:00,99.23,83.00299999999999,51.708,31.349 -2020-10-02 15:00:00,99.88,82.859,54.571000000000005,31.349 -2020-10-02 15:15:00,98.98,82.102,54.571000000000005,31.349 -2020-10-02 15:30:00,100.68,81.37100000000001,54.571000000000005,31.349 -2020-10-02 15:45:00,102.59,81.78399999999999,54.571000000000005,31.349 -2020-10-02 16:00:00,107.25,80.862,58.662,31.349 -2020-10-02 16:15:00,107.43,80.667,58.662,31.349 -2020-10-02 16:30:00,108.62,81.304,58.662,31.349 -2020-10-02 16:45:00,109.89,78.92399999999999,58.662,31.349 -2020-10-02 17:00:00,114.07,80.343,65.941,31.349 -2020-10-02 17:15:00,111.49,81.27,65.941,31.349 -2020-10-02 17:30:00,115.35,80.94800000000001,65.941,31.349 -2020-10-02 17:45:00,115.86,81.39699999999999,65.941,31.349 -2020-10-02 18:00:00,122.12,81.46300000000001,65.628,31.349 -2020-10-02 18:15:00,118.93,80.623,65.628,31.349 -2020-10-02 18:30:00,117.78,79.774,65.628,31.349 -2020-10-02 18:45:00,115.24,83.65299999999999,65.628,31.349 -2020-10-02 19:00:00,111.24,84.94,63.662,31.349 -2020-10-02 19:15:00,106.67,84.70299999999999,63.662,31.349 -2020-10-02 19:30:00,105.91,84.031,63.662,31.349 -2020-10-02 19:45:00,102.96,83.294,63.662,31.349 -2020-10-02 20:00:00,92.61,82.48899999999999,61.945,31.349 -2020-10-02 20:15:00,99.16,80.71600000000001,61.945,31.349 -2020-10-02 20:30:00,98.55,79.605,61.945,31.349 -2020-10-02 20:45:00,96.27,78.343,61.945,31.349 -2020-10-02 21:00:00,88.3,77.288,53.903,31.349 -2020-10-02 21:15:00,85.55,78.967,53.903,31.349 -2020-10-02 21:30:00,80.59,78.02,53.903,31.349 -2020-10-02 21:45:00,84.21,76.735,53.903,31.349 -2020-10-02 22:00:00,80.6,74.171,48.403999999999996,31.349 -2020-10-02 22:15:00,79.32,71.794,48.403999999999996,31.349 -2020-10-02 22:30:00,71.59,66.65899999999999,48.403999999999996,31.349 -2020-10-02 22:45:00,70.6,63.413000000000004,48.403999999999996,31.349 -2020-10-02 23:00:00,62.12,59.43899999999999,41.07,31.349 -2020-10-02 23:15:00,61.6,57.461999999999996,41.07,31.349 -2020-10-02 23:30:00,61.56,55.302,41.07,31.349 -2020-10-02 23:45:00,59.87,54.931000000000004,41.07,31.349 -2020-10-03 00:00:00,57.65,47.711000000000006,11.117,31.177 -2020-10-03 00:15:00,57.59,46.246,11.117,31.177 -2020-10-03 00:30:00,56.67,46.058,11.117,31.177 -2020-10-03 00:45:00,56.96,46.294,11.117,31.177 -2020-10-03 01:00:00,56.34,46.769,10.685,31.177 -2020-10-03 01:15:00,56.06,46.481,10.685,31.177 -2020-10-03 01:30:00,55.87,45.493,10.685,31.177 -2020-10-03 01:45:00,55.71,45.202,10.685,31.177 -2020-10-03 02:00:00,55.96,45.67,7.925,31.177 -2020-10-03 02:15:00,56.34,45.118,7.925,31.177 -2020-10-03 02:30:00,56.14,45.926,7.925,31.177 -2020-10-03 02:45:00,56.27,46.731,7.925,31.177 -2020-10-03 03:00:00,55.64,48.928000000000004,7.627999999999999,31.177 -2020-10-03 03:15:00,57.67,48.434,7.627999999999999,31.177 -2020-10-03 03:30:00,57.91,48.034,7.627999999999999,31.177 -2020-10-03 03:45:00,58.8,49.805,7.627999999999999,31.177 -2020-10-03 04:00:00,60.47,55.907,7.986000000000001,31.177 -2020-10-03 04:15:00,59.42,61.435,7.986000000000001,31.177 -2020-10-03 04:30:00,59.0,60.357,7.986000000000001,31.177 -2020-10-03 04:45:00,58.38,60.965,7.986000000000001,31.177 -2020-10-03 05:00:00,59.9,73.63,9.039,31.177 -2020-10-03 05:15:00,59.86,81.95299999999999,9.039,31.177 -2020-10-03 05:30:00,60.28,77.28,9.039,31.177 -2020-10-03 05:45:00,61.97,73.884,9.039,31.177 -2020-10-03 06:00:00,62.0,86.214,10.683,31.177 -2020-10-03 06:15:00,62.94,100.009,10.683,31.177 -2020-10-03 06:30:00,64.88,93.45,10.683,31.177 -2020-10-03 06:45:00,68.16,88.402,10.683,31.177 -2020-10-03 07:00:00,74.5,87.154,14.055,31.177 -2020-10-03 07:15:00,72.95,87.805,14.055,31.177 -2020-10-03 07:30:00,76.05,88.484,14.055,31.177 -2020-10-03 07:45:00,75.81,89.97200000000001,14.055,31.177 -2020-10-03 08:00:00,77.66,91.262,17.652,31.177 -2020-10-03 08:15:00,78.36,93.70299999999999,17.652,31.177 -2020-10-03 08:30:00,76.08,93.544,17.652,31.177 -2020-10-03 08:45:00,77.02,94.595,17.652,31.177 -2020-10-03 09:00:00,76.35,90.97,21.353,31.177 -2020-10-03 09:15:00,79.16,90.64,21.353,31.177 -2020-10-03 09:30:00,78.99,91.32799999999999,21.353,31.177 -2020-10-03 09:45:00,81.23,91.696,21.353,31.177 -2020-10-03 10:00:00,83.68,89.508,23.467,31.177 -2020-10-03 10:15:00,86.8,89.756,23.467,31.177 -2020-10-03 10:30:00,87.14,89.29700000000001,23.467,31.177 -2020-10-03 10:45:00,87.03,89.06,23.467,31.177 -2020-10-03 11:00:00,82.41,86.065,24.539,31.177 -2020-10-03 11:15:00,82.83,85.729,24.539,31.177 -2020-10-03 11:30:00,76.93,86.07799999999999,24.539,31.177 -2020-10-03 11:45:00,78.79,85.66799999999999,24.539,31.177 -2020-10-03 12:00:00,74.79,82.721,21.488000000000003,31.177 -2020-10-03 12:15:00,72.19,82.29799999999999,21.488000000000003,31.177 -2020-10-03 12:30:00,59.91,81.195,21.488000000000003,31.177 -2020-10-03 12:45:00,62.91,80.593,21.488000000000003,31.177 -2020-10-03 13:00:00,61.74,79.922,18.776,31.177 -2020-10-03 13:15:00,59.78,80.102,18.776,31.177 -2020-10-03 13:30:00,66.56,78.882,18.776,31.177 -2020-10-03 13:45:00,70.81,78.37899999999999,18.776,31.177 -2020-10-03 14:00:00,68.47,78.347,17.301,31.177 -2020-10-03 14:15:00,68.4,78.655,17.301,31.177 -2020-10-03 14:30:00,67.72,77.69800000000001,17.301,31.177 -2020-10-03 14:45:00,64.03,76.969,17.301,31.177 -2020-10-03 15:00:00,66.02,76.7,21.236,31.177 -2020-10-03 15:15:00,68.96,76.618,21.236,31.177 -2020-10-03 15:30:00,70.76,76.907,21.236,31.177 -2020-10-03 15:45:00,72.25,77.335,21.236,31.177 -2020-10-03 16:00:00,74.29,77.045,28.31,31.177 -2020-10-03 16:15:00,75.52,76.52199999999999,28.31,31.177 -2020-10-03 16:30:00,78.34,77.89699999999999,28.31,31.177 -2020-10-03 16:45:00,82.8,76.039,28.31,31.177 -2020-10-03 17:00:00,87.35,76.783,41.687,31.177 -2020-10-03 17:15:00,87.12,77.97,41.687,31.177 -2020-10-03 17:30:00,88.97,78.093,41.687,31.177 -2020-10-03 17:45:00,90.28,79.843,41.687,31.177 -2020-10-03 18:00:00,94.76,80.597,49.201,31.177 -2020-10-03 18:15:00,92.25,81.734,49.201,31.177 -2020-10-03 18:30:00,94.32,81.203,49.201,31.177 -2020-10-03 18:45:00,91.48,82.59100000000001,49.201,31.177 -2020-10-03 19:00:00,92.73,84.505,51.937,31.177 -2020-10-03 19:15:00,98.28,83.11,51.937,31.177 -2020-10-03 19:30:00,96.89,82.96,51.937,31.177 -2020-10-03 19:45:00,88.92,83.443,51.937,31.177 -2020-10-03 20:00:00,85.03,84.101,52.617,31.177 -2020-10-03 20:15:00,85.02,83.164,52.617,31.177 -2020-10-03 20:30:00,90.9,82.34700000000001,52.617,31.177 -2020-10-03 20:45:00,91.31,80.497,52.617,31.177 -2020-10-03 21:00:00,85.41,78.417,46.238,31.177 -2020-10-03 21:15:00,84.03,79.649,46.238,31.177 -2020-10-03 21:30:00,86.88,79.069,46.238,31.177 -2020-10-03 21:45:00,86.4,77.541,46.238,31.177 -2020-10-03 22:00:00,81.78,76.17,48.275,31.177 -2020-10-03 22:15:00,78.99,73.67,48.275,31.177 -2020-10-03 22:30:00,80.17,69.319,48.275,31.177 -2020-10-03 22:45:00,79.39,65.98899999999999,48.275,31.177 -2020-10-03 23:00:00,55.75,61.363,38.071999999999996,31.177 -2020-10-03 23:15:00,57.09,60.38399999999999,38.071999999999996,31.177 -2020-10-03 23:30:00,53.87,58.913999999999994,38.071999999999996,31.177 -2020-10-03 23:45:00,56.4,58.196000000000005,38.071999999999996,31.177 -2020-10-04 00:00:00,53.94,48.018,28.229,31.177 -2020-10-04 00:15:00,54.47,46.545,28.229,31.177 -2020-10-04 00:30:00,52.62,46.365,28.229,31.177 -2020-10-04 00:45:00,53.51,46.6,28.229,31.177 -2020-10-04 01:00:00,50.25,47.07899999999999,25.669,31.177 -2020-10-04 01:15:00,52.39,46.812,25.669,31.177 -2020-10-04 01:30:00,51.82,45.841,25.669,31.177 -2020-10-04 01:45:00,51.72,45.548,25.669,31.177 -2020-10-04 02:00:00,51.1,46.023999999999994,24.948,31.177 -2020-10-04 02:15:00,52.15,45.488,24.948,31.177 -2020-10-04 02:30:00,51.41,46.276,24.948,31.177 -2020-10-04 02:45:00,50.99,47.077,24.948,31.177 -2020-10-04 03:00:00,52.2,49.261,24.445,31.177 -2020-10-04 03:15:00,51.81,48.788000000000004,24.445,31.177 -2020-10-04 03:30:00,52.33,48.39,24.445,31.177 -2020-10-04 03:45:00,53.15,50.145,24.445,31.177 -2020-10-04 04:00:00,53.33,56.275,25.839000000000002,31.177 -2020-10-04 04:15:00,53.92,61.833,25.839000000000002,31.177 -2020-10-04 04:30:00,54.43,60.755,25.839000000000002,31.177 -2020-10-04 04:45:00,54.79,61.372,25.839000000000002,31.177 -2020-10-04 05:00:00,57.04,74.122,26.803,31.177 -2020-10-04 05:15:00,56.99,82.527,26.803,31.177 -2020-10-04 05:30:00,58.51,77.84100000000001,26.803,31.177 -2020-10-04 05:45:00,59.57,74.402,26.803,31.177 -2020-10-04 06:00:00,60.65,86.709,28.147,31.177 -2020-10-04 06:15:00,59.54,100.521,28.147,31.177 -2020-10-04 06:30:00,61.12,93.97399999999999,28.147,31.177 -2020-10-04 06:45:00,61.43,88.93,28.147,31.177 -2020-10-04 07:00:00,66.21,87.679,31.116,31.177 -2020-10-04 07:15:00,65.25,88.34700000000001,31.116,31.177 -2020-10-04 07:30:00,64.85,89.059,31.116,31.177 -2020-10-04 07:45:00,65.24,90.551,31.116,31.177 -2020-10-04 08:00:00,63.88,91.851,35.739000000000004,31.177 -2020-10-04 08:15:00,66.44,94.265,35.739000000000004,31.177 -2020-10-04 08:30:00,70.93,94.132,35.739000000000004,31.177 -2020-10-04 08:45:00,67.85,95.15899999999999,35.739000000000004,31.177 -2020-10-04 09:00:00,66.06,91.535,39.455999999999996,31.177 -2020-10-04 09:15:00,67.28,91.199,39.455999999999996,31.177 -2020-10-04 09:30:00,70.83,91.869,39.455999999999996,31.177 -2020-10-04 09:45:00,77.44,92.211,39.455999999999996,31.177 -2020-10-04 10:00:00,78.19,90.01700000000001,41.343999999999994,31.177 -2020-10-04 10:15:00,81.74,90.225,41.343999999999994,31.177 -2020-10-04 10:30:00,83.73,89.74799999999999,41.343999999999994,31.177 -2020-10-04 10:45:00,84.45,89.494,41.343999999999994,31.177 -2020-10-04 11:00:00,83.31,86.509,43.645,31.177 -2020-10-04 11:15:00,81.0,86.15299999999999,43.645,31.177 -2020-10-04 11:30:00,79.77,86.50200000000001,43.645,31.177 -2020-10-04 11:45:00,79.1,86.075,43.645,31.177 -2020-10-04 12:00:00,75.39,83.105,39.796,31.177 -2020-10-04 12:15:00,75.42,82.67200000000001,39.796,31.177 -2020-10-04 12:30:00,74.51,81.604,39.796,31.177 -2020-10-04 12:45:00,74.31,80.998,39.796,31.177 -2020-10-04 13:00:00,73.03,80.295,36.343,31.177 -2020-10-04 13:15:00,72.61,80.479,36.343,31.177 -2020-10-04 13:30:00,73.42,79.259,36.343,31.177 -2020-10-04 13:45:00,73.96,78.757,36.343,31.177 -2020-10-04 14:00:00,72.48,78.671,33.162,31.177 -2020-10-04 14:15:00,72.19,78.99600000000001,33.162,31.177 -2020-10-04 14:30:00,73.52,78.075,33.162,31.177 -2020-10-04 14:45:00,73.96,77.342,33.162,31.177 -2020-10-04 15:00:00,74.74,77.039,33.215,31.177 -2020-10-04 15:15:00,74.08,76.976,33.215,31.177 -2020-10-04 15:30:00,74.78,77.30199999999999,33.215,31.177 -2020-10-04 15:45:00,76.21,77.745,33.215,31.177 -2020-10-04 16:00:00,78.09,77.42,37.385999999999996,31.177 -2020-10-04 16:15:00,79.1,76.916,37.385999999999996,31.177 -2020-10-04 16:30:00,80.57,78.28699999999999,37.385999999999996,31.177 -2020-10-04 16:45:00,82.81,76.484,37.385999999999996,31.177 -2020-10-04 17:00:00,87.51,77.188,46.618,31.177 -2020-10-04 17:15:00,86.86,78.395,46.618,31.177 -2020-10-04 17:30:00,92.1,78.51899999999999,46.618,31.177 -2020-10-04 17:45:00,89.55,80.29,46.618,31.177 -2020-10-04 18:00:00,95.29,81.03,50.111000000000004,31.177 -2020-10-04 18:15:00,88.95,82.15100000000001,50.111000000000004,31.177 -2020-10-04 18:30:00,91.01,81.631,50.111000000000004,31.177 -2020-10-04 18:45:00,87.31,83.012,50.111000000000004,31.177 -2020-10-04 19:00:00,86.3,84.939,50.25,31.177 -2020-10-04 19:15:00,84.42,83.538,50.25,31.177 -2020-10-04 19:30:00,83.14,83.38,50.25,31.177 -2020-10-04 19:45:00,81.46,83.845,50.25,31.177 -2020-10-04 20:00:00,77.95,84.52600000000001,44.265,31.177 -2020-10-04 20:15:00,79.6,83.583,44.265,31.177 -2020-10-04 20:30:00,77.92,82.73899999999999,44.265,31.177 -2020-10-04 20:45:00,78.85,80.859,44.265,31.177 -2020-10-04 21:00:00,77.61,78.781,39.717,31.177 -2020-10-04 21:15:00,77.95,80.00399999999999,39.717,31.177 -2020-10-04 21:30:00,75.4,79.433,39.717,31.177 -2020-10-04 21:45:00,75.62,77.875,39.717,31.177 -2020-10-04 22:00:00,72.93,76.492,39.224000000000004,31.177 -2020-10-04 22:15:00,72.3,73.969,39.224000000000004,31.177 -2020-10-04 22:30:00,69.94,69.63,39.224000000000004,31.177 -2020-10-04 22:45:00,69.71,66.307,39.224000000000004,31.177 -2020-10-04 23:00:00,65.21,61.708999999999996,33.518,31.177 -2020-10-04 23:15:00,66.43,60.7,33.518,31.177 -2020-10-04 23:30:00,65.32,59.232,33.518,31.177 -2020-10-04 23:45:00,65.1,58.507,33.518,31.177 -2020-10-05 00:00:00,66.33,50.821999999999996,34.301,31.349 -2020-10-05 00:15:00,64.68,50.945,34.301,31.349 -2020-10-05 00:30:00,63.44,50.6,34.301,31.349 -2020-10-05 00:45:00,65.02,50.398,34.301,31.349 -2020-10-05 01:00:00,64.78,51.103,34.143,31.349 -2020-10-05 01:15:00,64.46,50.661,34.143,31.349 -2020-10-05 01:30:00,64.07,49.93899999999999,34.143,31.349 -2020-10-05 01:45:00,64.5,49.631,34.143,31.349 -2020-10-05 02:00:00,63.51,50.364,33.650999999999996,31.349 -2020-10-05 02:15:00,65.03,49.815,33.650999999999996,31.349 -2020-10-05 02:30:00,65.36,50.809,33.650999999999996,31.349 -2020-10-05 02:45:00,66.21,51.282,33.650999999999996,31.349 -2020-10-05 03:00:00,69.64,54.224,32.599000000000004,31.349 -2020-10-05 03:15:00,74.23,54.818999999999996,32.599000000000004,31.349 -2020-10-05 03:30:00,75.31,54.718,32.599000000000004,31.349 -2020-10-05 03:45:00,73.63,55.974,32.599000000000004,31.349 -2020-10-05 04:00:00,76.43,65.589,33.785,31.349 -2020-10-05 04:15:00,77.8,74.464,33.785,31.349 -2020-10-05 04:30:00,89.37,73.941,33.785,31.349 -2020-10-05 04:45:00,95.43,74.844,33.785,31.349 -2020-10-05 05:00:00,102.6,97.568,41.285,31.349 -2020-10-05 05:15:00,101.26,119.60700000000001,41.285,31.349 -2020-10-05 05:30:00,105.1,114.088,41.285,31.349 -2020-10-05 05:45:00,112.77,106.70100000000001,41.285,31.349 -2020-10-05 06:00:00,116.26,106.459,60.486000000000004,31.349 -2020-10-05 06:15:00,116.2,109.37,60.486000000000004,31.349 -2020-10-05 06:30:00,117.92,108.182,60.486000000000004,31.349 -2020-10-05 06:45:00,120.49,109.552,60.486000000000004,31.349 -2020-10-05 07:00:00,124.95,109.79,74.012,31.349 -2020-10-05 07:15:00,123.49,112.266,74.012,31.349 -2020-10-05 07:30:00,122.31,112.215,74.012,31.349 -2020-10-05 07:45:00,122.8,112.87799999999999,74.012,31.349 -2020-10-05 08:00:00,122.15,111.291,69.569,31.349 -2020-10-05 08:15:00,123.81,112.141,69.569,31.349 -2020-10-05 08:30:00,125.38,109.84100000000001,69.569,31.349 -2020-10-05 08:45:00,126.19,109.616,69.569,31.349 -2020-10-05 09:00:00,123.98,105.119,66.152,31.349 -2020-10-05 09:15:00,123.63,102.352,66.152,31.349 -2020-10-05 09:30:00,123.4,102.083,66.152,31.349 -2020-10-05 09:45:00,125.12,101.262,66.152,31.349 -2020-10-05 10:00:00,124.46,99.031,62.923,31.349 -2020-10-05 10:15:00,127.71,98.98,62.923,31.349 -2020-10-05 10:30:00,127.77,97.86399999999999,62.923,31.349 -2020-10-05 10:45:00,125.66,97.073,62.923,31.349 -2020-10-05 11:00:00,120.69,93.165,61.522,31.349 -2020-10-05 11:15:00,117.37,93.73,61.522,31.349 -2020-10-05 11:30:00,112.63,95.04799999999999,61.522,31.349 -2020-10-05 11:45:00,108.66,94.689,61.522,31.349 -2020-10-05 12:00:00,102.98,91.74600000000001,58.632,31.349 -2020-10-05 12:15:00,103.41,91.36,58.632,31.349 -2020-10-05 12:30:00,100.84,89.89299999999999,58.632,31.349 -2020-10-05 12:45:00,101.8,89.97,58.632,31.349 -2020-10-05 13:00:00,100.62,89.954,59.06,31.349 -2020-10-05 13:15:00,100.28,89.065,59.06,31.349 -2020-10-05 13:30:00,100.19,87.693,59.06,31.349 -2020-10-05 13:45:00,100.01,87.664,59.06,31.349 -2020-10-05 14:00:00,100.8,86.809,59.791000000000004,31.349 -2020-10-05 14:15:00,101.96,87.161,59.791000000000004,31.349 -2020-10-05 14:30:00,103.14,85.947,59.791000000000004,31.349 -2020-10-05 14:45:00,104.3,86.251,59.791000000000004,31.349 -2020-10-05 15:00:00,107.02,86.544,61.148,31.349 -2020-10-05 15:15:00,104.62,85.551,61.148,31.349 -2020-10-05 15:30:00,105.02,85.93,61.148,31.349 -2020-10-05 15:45:00,104.28,85.939,61.148,31.349 -2020-10-05 16:00:00,105.06,86.02600000000001,66.009,31.349 -2020-10-05 16:15:00,106.92,85.244,66.009,31.349 -2020-10-05 16:30:00,109.95,85.84,66.009,31.349 -2020-10-05 16:45:00,111.32,83.586,66.009,31.349 -2020-10-05 17:00:00,116.22,83.50299999999999,73.683,31.349 -2020-10-05 17:15:00,114.24,84.52600000000001,73.683,31.349 -2020-10-05 17:30:00,117.49,84.211,73.683,31.349 -2020-10-05 17:45:00,122.2,85.152,73.683,31.349 -2020-10-05 18:00:00,125.09,85.385,72.848,31.349 -2020-10-05 18:15:00,121.39,84.57,72.848,31.349 -2020-10-05 18:30:00,120.7,83.915,72.848,31.349 -2020-10-05 18:45:00,118.89,87.323,72.848,31.349 -2020-10-05 19:00:00,119.68,88.385,71.139,31.349 -2020-10-05 19:15:00,117.11,87.249,71.139,31.349 -2020-10-05 19:30:00,112.56,87.075,71.139,31.349 -2020-10-05 19:45:00,108.13,86.844,71.139,31.349 -2020-10-05 20:00:00,101.98,85.89200000000001,69.667,31.349 -2020-10-05 20:15:00,101.73,84.719,69.667,31.349 -2020-10-05 20:30:00,97.75,83.385,69.667,31.349 -2020-10-05 20:45:00,97.25,82.257,69.667,31.349 -2020-10-05 21:00:00,93.19,80.05,61.166000000000004,31.349 -2020-10-05 21:15:00,97.6,81.041,61.166000000000004,31.349 -2020-10-05 21:30:00,94.2,80.37899999999999,61.166000000000004,31.349 -2020-10-05 21:45:00,93.44,78.468,61.166000000000004,31.349 -2020-10-05 22:00:00,85.58,74.764,52.772,31.349 -2020-10-05 22:15:00,82.71,72.807,52.772,31.349 -2020-10-05 22:30:00,81.05,62.21,52.772,31.349 -2020-10-05 22:45:00,84.7,56.94,52.772,31.349 -2020-10-05 23:00:00,82.54,52.706,45.136,31.349 -2020-10-05 23:15:00,82.36,51.802,45.136,31.349 -2020-10-05 23:30:00,74.67,51.42,45.136,31.349 -2020-10-05 23:45:00,79.64,51.446999999999996,45.136,31.349 -2020-10-06 00:00:00,78.11,49.55,47.35,31.349 -2020-10-06 00:15:00,81.09,50.716,47.35,31.349 -2020-10-06 00:30:00,75.23,50.428000000000004,47.35,31.349 -2020-10-06 00:45:00,74.03,50.303999999999995,47.35,31.349 -2020-10-06 01:00:00,70.95,50.623999999999995,43.424,31.349 -2020-10-06 01:15:00,79.65,50.096000000000004,43.424,31.349 -2020-10-06 01:30:00,79.59,49.382,43.424,31.349 -2020-10-06 01:45:00,78.21,48.891999999999996,43.424,31.349 -2020-10-06 02:00:00,72.09,49.352,41.778999999999996,31.349 -2020-10-06 02:15:00,78.09,49.449,41.778999999999996,31.349 -2020-10-06 02:30:00,79.6,49.968999999999994,41.778999999999996,31.349 -2020-10-06 02:45:00,79.98,50.633,41.778999999999996,31.349 -2020-10-06 03:00:00,79.25,52.776,40.771,31.349 -2020-10-06 03:15:00,82.62,53.61,40.771,31.349 -2020-10-06 03:30:00,83.6,53.68,40.771,31.349 -2020-10-06 03:45:00,83.88,54.345,40.771,31.349 -2020-10-06 04:00:00,83.35,63.176,41.816,31.349 -2020-10-06 04:15:00,89.08,71.957,41.816,31.349 -2020-10-06 04:30:00,94.83,71.24600000000001,41.816,31.349 -2020-10-06 04:45:00,100.98,72.905,41.816,31.349 -2020-10-06 05:00:00,99.83,98.514,45.842,31.349 -2020-10-06 05:15:00,101.8,120.931,45.842,31.349 -2020-10-06 05:30:00,108.7,114.943,45.842,31.349 -2020-10-06 05:45:00,110.57,107.079,45.842,31.349 -2020-10-06 06:00:00,117.91,106.995,59.12,31.349 -2020-10-06 06:15:00,116.24,110.652,59.12,31.349 -2020-10-06 06:30:00,118.48,109.045,59.12,31.349 -2020-10-06 06:45:00,119.02,109.751,59.12,31.349 -2020-10-06 07:00:00,123.59,110.00200000000001,70.33,31.349 -2020-10-06 07:15:00,121.19,112.28299999999999,70.33,31.349 -2020-10-06 07:30:00,117.92,112.06200000000001,70.33,31.349 -2020-10-06 07:45:00,117.6,112.25200000000001,70.33,31.349 -2020-10-06 08:00:00,114.16,110.685,67.788,31.349 -2020-10-06 08:15:00,114.34,110.84,67.788,31.349 -2020-10-06 08:30:00,118.79,108.587,67.788,31.349 -2020-10-06 08:45:00,121.22,107.713,67.788,31.349 -2020-10-06 09:00:00,113.61,103.059,62.622,31.349 -2020-10-06 09:15:00,114.17,100.876,62.622,31.349 -2020-10-06 09:30:00,117.63,101.25,62.622,31.349 -2020-10-06 09:45:00,116.96,101.04799999999999,62.622,31.349 -2020-10-06 10:00:00,111.74,97.815,60.887,31.349 -2020-10-06 10:15:00,115.0,97.189,60.887,31.349 -2020-10-06 10:30:00,113.09,96.147,60.887,31.349 -2020-10-06 10:45:00,113.9,95.99799999999999,60.887,31.349 -2020-10-06 11:00:00,115.53,92.74600000000001,59.812,31.349 -2020-10-06 11:15:00,116.95,93.359,59.812,31.349 -2020-10-06 11:30:00,115.24,93.559,59.812,31.349 -2020-10-06 11:45:00,109.97,93.256,59.812,31.349 -2020-10-06 12:00:00,105.42,89.58,56.614,31.349 -2020-10-06 12:15:00,102.97,89.16799999999999,56.614,31.349 -2020-10-06 12:30:00,103.1,88.50299999999999,56.614,31.349 -2020-10-06 12:45:00,106.67,88.796,56.614,31.349 -2020-10-06 13:00:00,103.21,88.37899999999999,56.824,31.349 -2020-10-06 13:15:00,101.73,88.26,56.824,31.349 -2020-10-06 13:30:00,102.74,87.40100000000001,56.824,31.349 -2020-10-06 13:45:00,104.36,86.963,56.824,31.349 -2020-10-06 14:00:00,104.47,86.411,57.623999999999995,31.349 -2020-10-06 14:15:00,105.34,86.749,57.623999999999995,31.349 -2020-10-06 14:30:00,104.12,86.022,57.623999999999995,31.349 -2020-10-06 14:45:00,104.25,85.884,57.623999999999995,31.349 -2020-10-06 15:00:00,104.24,85.866,59.724,31.349 -2020-10-06 15:15:00,105.47,85.515,59.724,31.349 -2020-10-06 15:30:00,105.21,85.925,59.724,31.349 -2020-10-06 15:45:00,107.87,85.944,59.724,31.349 -2020-10-06 16:00:00,110.19,85.816,61.64,31.349 -2020-10-06 16:15:00,113.18,85.307,61.64,31.349 -2020-10-06 16:30:00,112.84,85.98299999999999,61.64,31.349 -2020-10-06 16:45:00,115.02,84.288,61.64,31.349 -2020-10-06 17:00:00,119.5,84.516,68.962,31.349 -2020-10-06 17:15:00,116.33,85.795,68.962,31.349 -2020-10-06 17:30:00,121.99,85.531,68.962,31.349 -2020-10-06 17:45:00,123.39,86.258,68.962,31.349 -2020-10-06 18:00:00,127.05,85.90100000000001,69.149,31.349 -2020-10-06 18:15:00,122.1,85.682,69.149,31.349 -2020-10-06 18:30:00,121.85,84.766,69.149,31.349 -2020-10-06 18:45:00,120.37,88.39,69.149,31.349 -2020-10-06 19:00:00,118.45,88.83200000000001,68.832,31.349 -2020-10-06 19:15:00,118.71,87.679,68.832,31.349 -2020-10-06 19:30:00,115.61,87.10600000000001,68.832,31.349 -2020-10-06 19:45:00,112.12,87.06,68.832,31.349 -2020-10-06 20:00:00,100.95,86.41799999999999,66.403,31.349 -2020-10-06 20:15:00,100.94,84.17299999999999,66.403,31.349 -2020-10-06 20:30:00,98.55,83.243,66.403,31.349 -2020-10-06 20:45:00,98.12,82.089,66.403,31.349 -2020-10-06 21:00:00,91.59,80.08800000000001,57.352,31.349 -2020-10-06 21:15:00,90.82,80.605,57.352,31.349 -2020-10-06 21:30:00,87.87,79.758,57.352,31.349 -2020-10-06 21:45:00,90.21,78.021,57.352,31.349 -2020-10-06 22:00:00,90.01,75.087,51.148999999999994,31.349 -2020-10-06 22:15:00,89.32,72.814,51.148999999999994,31.349 -2020-10-06 22:30:00,85.07,62.431999999999995,51.148999999999994,31.349 -2020-10-06 22:45:00,83.99,57.276,51.148999999999994,31.349 -2020-10-06 23:00:00,78.1,52.643,41.8,31.349 -2020-10-06 23:15:00,82.01,52.229,41.8,31.349 -2020-10-06 23:30:00,84.4,51.70399999999999,41.8,31.349 -2020-10-06 23:45:00,87.64,51.651,41.8,31.349 -2020-10-07 00:00:00,80.25,49.86,42.269,31.349 -2020-10-07 00:15:00,80.19,51.019,42.269,31.349 -2020-10-07 00:30:00,81.39,50.736999999999995,42.269,31.349 -2020-10-07 00:45:00,86.62,50.611999999999995,42.269,31.349 -2020-10-07 01:00:00,82.23,50.937,38.527,31.349 -2020-10-07 01:15:00,79.29,50.428999999999995,38.527,31.349 -2020-10-07 01:30:00,81.05,49.733000000000004,38.527,31.349 -2020-10-07 01:45:00,83.23,49.24100000000001,38.527,31.349 -2020-10-07 02:00:00,83.52,49.708,36.393,31.349 -2020-10-07 02:15:00,82.09,49.821000000000005,36.393,31.349 -2020-10-07 02:30:00,79.19,50.321999999999996,36.393,31.349 -2020-10-07 02:45:00,79.81,50.982,36.393,31.349 -2020-10-07 03:00:00,86.92,53.113,36.167,31.349 -2020-10-07 03:15:00,87.2,53.966,36.167,31.349 -2020-10-07 03:30:00,88.26,54.038999999999994,36.167,31.349 -2020-10-07 03:45:00,86.31,54.68600000000001,36.167,31.349 -2020-10-07 04:00:00,94.04,63.54600000000001,38.092,31.349 -2020-10-07 04:15:00,97.41,72.358,38.092,31.349 -2020-10-07 04:30:00,98.81,71.648,38.092,31.349 -2020-10-07 04:45:00,98.37,73.316,38.092,31.349 -2020-10-07 05:00:00,104.2,99.01,42.268,31.349 -2020-10-07 05:15:00,110.49,121.51100000000001,42.268,31.349 -2020-10-07 05:30:00,112.99,115.508,42.268,31.349 -2020-10-07 05:45:00,120.34,107.602,42.268,31.349 -2020-10-07 06:00:00,123.12,107.494,60.158,31.349 -2020-10-07 06:15:00,115.11,111.17,60.158,31.349 -2020-10-07 06:30:00,121.4,109.574,60.158,31.349 -2020-10-07 06:45:00,121.67,110.28299999999999,60.158,31.349 -2020-10-07 07:00:00,123.41,110.53299999999999,74.792,31.349 -2020-10-07 07:15:00,121.71,112.82700000000001,74.792,31.349 -2020-10-07 07:30:00,121.33,112.64,74.792,31.349 -2020-10-07 07:45:00,119.53,112.833,74.792,31.349 -2020-10-07 08:00:00,115.82,111.277,70.499,31.349 -2020-10-07 08:15:00,116.66,111.404,70.499,31.349 -2020-10-07 08:30:00,116.5,109.17399999999999,70.499,31.349 -2020-10-07 08:45:00,116.09,108.279,70.499,31.349 -2020-10-07 09:00:00,113.61,103.625,68.892,31.349 -2020-10-07 09:15:00,113.03,101.435,68.892,31.349 -2020-10-07 09:30:00,112.32,101.794,68.892,31.349 -2020-10-07 09:45:00,113.24,101.564,68.892,31.349 -2020-10-07 10:00:00,113.52,98.324,66.88600000000001,31.349 -2020-10-07 10:15:00,116.01,97.65799999999999,66.88600000000001,31.349 -2020-10-07 10:30:00,112.9,96.59899999999999,66.88600000000001,31.349 -2020-10-07 10:45:00,113.01,96.432,66.88600000000001,31.349 -2020-10-07 11:00:00,110.74,93.19,66.187,31.349 -2020-10-07 11:15:00,107.17,93.78399999999999,66.187,31.349 -2020-10-07 11:30:00,106.12,93.98299999999999,66.187,31.349 -2020-10-07 11:45:00,106.28,93.664,66.187,31.349 -2020-10-07 12:00:00,103.85,89.963,62.18,31.349 -2020-10-07 12:15:00,104.47,89.54299999999999,62.18,31.349 -2020-10-07 12:30:00,103.29,88.913,62.18,31.349 -2020-10-07 12:45:00,104.27,89.20200000000001,62.18,31.349 -2020-10-07 13:00:00,103.01,88.75399999999999,62.23,31.349 -2020-10-07 13:15:00,102.19,88.63799999999999,62.23,31.349 -2020-10-07 13:30:00,102.91,87.77799999999999,62.23,31.349 -2020-10-07 13:45:00,103.83,87.34,62.23,31.349 -2020-10-07 14:00:00,104.04,86.73700000000001,63.721000000000004,31.349 -2020-10-07 14:15:00,103.67,87.09,63.721000000000004,31.349 -2020-10-07 14:30:00,102.78,86.399,63.721000000000004,31.349 -2020-10-07 14:45:00,102.93,86.258,63.721000000000004,31.349 -2020-10-07 15:00:00,104.88,86.205,66.523,31.349 -2020-10-07 15:15:00,108.17,85.874,66.523,31.349 -2020-10-07 15:30:00,106.16,86.321,66.523,31.349 -2020-10-07 15:45:00,106.9,86.355,66.523,31.349 -2020-10-07 16:00:00,110.44,86.19200000000001,69.679,31.349 -2020-10-07 16:15:00,110.4,85.70200000000001,69.679,31.349 -2020-10-07 16:30:00,112.36,86.374,69.679,31.349 -2020-10-07 16:45:00,114.77,84.734,69.679,31.349 -2020-10-07 17:00:00,117.12,84.92200000000001,75.04,31.349 -2020-10-07 17:15:00,116.68,86.22,75.04,31.349 -2020-10-07 17:30:00,121.96,85.959,75.04,31.349 -2020-10-07 17:45:00,123.54,86.70700000000001,75.04,31.349 -2020-10-07 18:00:00,125.9,86.336,75.915,31.349 -2020-10-07 18:15:00,122.45,86.101,75.915,31.349 -2020-10-07 18:30:00,122.89,85.197,75.915,31.349 -2020-10-07 18:45:00,119.42,88.81299999999999,75.915,31.349 -2020-10-07 19:00:00,114.78,89.26799999999999,74.66,31.349 -2020-10-07 19:15:00,112.06,88.11,74.66,31.349 -2020-10-07 19:30:00,107.91,87.527,74.66,31.349 -2020-10-07 19:45:00,108.91,87.464,74.66,31.349 -2020-10-07 20:00:00,101.7,86.845,71.204,31.349 -2020-10-07 20:15:00,104.07,84.595,71.204,31.349 -2020-10-07 20:30:00,101.57,83.637,71.204,31.349 -2020-10-07 20:45:00,99.17,82.454,71.204,31.349 -2020-10-07 21:00:00,94.53,80.454,61.052,31.349 -2020-10-07 21:15:00,94.88,80.96,61.052,31.349 -2020-10-07 21:30:00,96.49,80.123,61.052,31.349 -2020-10-07 21:45:00,95.82,78.357,61.052,31.349 -2020-10-07 22:00:00,91.81,75.411,54.691,31.349 -2020-10-07 22:15:00,85.9,73.115,54.691,31.349 -2020-10-07 22:30:00,83.52,62.748000000000005,54.691,31.349 -2020-10-07 22:45:00,79.93,57.597,54.691,31.349 -2020-10-07 23:00:00,76.11,52.993,45.18,31.349 -2020-10-07 23:15:00,76.08,52.548,45.18,31.349 -2020-10-07 23:30:00,75.38,52.023999999999994,45.18,31.349 -2020-10-07 23:45:00,79.99,51.966,45.18,31.349 -2020-10-08 00:00:00,79.69,50.172,42.746,31.349 -2020-10-08 00:15:00,79.41,51.321000000000005,42.746,31.349 -2020-10-08 00:30:00,77.72,51.048,42.746,31.349 -2020-10-08 00:45:00,77.1,50.92,42.746,31.349 -2020-10-08 01:00:00,77.16,51.248999999999995,40.025999999999996,31.349 -2020-10-08 01:15:00,79.65,50.761,40.025999999999996,31.349 -2020-10-08 01:30:00,78.99,50.083999999999996,40.025999999999996,31.349 -2020-10-08 01:45:00,73.79,49.59,40.025999999999996,31.349 -2020-10-08 02:00:00,79.29,50.065,38.154,31.349 -2020-10-08 02:15:00,80.26,50.193999999999996,38.154,31.349 -2020-10-08 02:30:00,78.95,50.676,38.154,31.349 -2020-10-08 02:45:00,76.08,51.33,38.154,31.349 -2020-10-08 03:00:00,75.33,53.449,37.575,31.349 -2020-10-08 03:15:00,82.42,54.321999999999996,37.575,31.349 -2020-10-08 03:30:00,84.01,54.4,37.575,31.349 -2020-10-08 03:45:00,86.07,55.028,37.575,31.349 -2020-10-08 04:00:00,84.0,63.916000000000004,39.154,31.349 -2020-10-08 04:15:00,90.23,72.76100000000001,39.154,31.349 -2020-10-08 04:30:00,94.69,72.051,39.154,31.349 -2020-10-08 04:45:00,97.5,73.727,39.154,31.349 -2020-10-08 05:00:00,97.92,99.507,44.085,31.349 -2020-10-08 05:15:00,101.71,122.09299999999999,44.085,31.349 -2020-10-08 05:30:00,107.92,116.074,44.085,31.349 -2020-10-08 05:45:00,111.57,108.126,44.085,31.349 -2020-10-08 06:00:00,116.78,107.995,57.49,31.349 -2020-10-08 06:15:00,114.86,111.68700000000001,57.49,31.349 -2020-10-08 06:30:00,114.18,110.105,57.49,31.349 -2020-10-08 06:45:00,118.63,110.81700000000001,57.49,31.349 -2020-10-08 07:00:00,120.92,111.065,73.617,31.349 -2020-10-08 07:15:00,119.12,113.374,73.617,31.349 -2020-10-08 07:30:00,117.33,113.219,73.617,31.349 -2020-10-08 07:45:00,116.58,113.415,73.617,31.349 -2020-10-08 08:00:00,115.2,111.869,69.281,31.349 -2020-10-08 08:15:00,114.49,111.969,69.281,31.349 -2020-10-08 08:30:00,113.74,109.76299999999999,69.281,31.349 -2020-10-08 08:45:00,113.82,108.845,69.281,31.349 -2020-10-08 09:00:00,111.25,104.189,63.926,31.349 -2020-10-08 09:15:00,110.51,101.995,63.926,31.349 -2020-10-08 09:30:00,110.18,102.336,63.926,31.349 -2020-10-08 09:45:00,110.35,102.079,63.926,31.349 -2020-10-08 10:00:00,108.45,98.833,59.442,31.349 -2020-10-08 10:15:00,109.67,98.12799999999999,59.442,31.349 -2020-10-08 10:30:00,108.62,97.05,59.442,31.349 -2020-10-08 10:45:00,107.19,96.867,59.442,31.349 -2020-10-08 11:00:00,105.31,93.634,56.771,31.349 -2020-10-08 11:15:00,106.63,94.209,56.771,31.349 -2020-10-08 11:30:00,106.21,94.40700000000001,56.771,31.349 -2020-10-08 11:45:00,108.79,94.072,56.771,31.349 -2020-10-08 12:00:00,101.41,90.34700000000001,53.701,31.349 -2020-10-08 12:15:00,101.81,89.917,53.701,31.349 -2020-10-08 12:30:00,99.91,89.323,53.701,31.349 -2020-10-08 12:45:00,100.67,89.609,53.701,31.349 -2020-10-08 13:00:00,99.91,89.12799999999999,52.364,31.349 -2020-10-08 13:15:00,100.85,89.016,52.364,31.349 -2020-10-08 13:30:00,99.77,88.156,52.364,31.349 -2020-10-08 13:45:00,102.06,87.71799999999999,52.364,31.349 -2020-10-08 14:00:00,101.66,87.06200000000001,53.419,31.349 -2020-10-08 14:15:00,102.04,87.431,53.419,31.349 -2020-10-08 14:30:00,101.37,86.77600000000001,53.419,31.349 -2020-10-08 14:45:00,102.03,86.632,53.419,31.349 -2020-10-08 15:00:00,102.38,86.545,56.744,31.349 -2020-10-08 15:15:00,106.15,86.235,56.744,31.349 -2020-10-08 15:30:00,105.14,86.71700000000001,56.744,31.349 -2020-10-08 15:45:00,106.58,86.766,56.744,31.349 -2020-10-08 16:00:00,108.41,86.568,60.458,31.349 -2020-10-08 16:15:00,109.23,86.09700000000001,60.458,31.349 -2020-10-08 16:30:00,111.33,86.765,60.458,31.349 -2020-10-08 16:45:00,112.69,85.179,60.458,31.349 -2020-10-08 17:00:00,117.22,85.32600000000001,66.295,31.349 -2020-10-08 17:15:00,114.98,86.646,66.295,31.349 -2020-10-08 17:30:00,121.72,86.387,66.295,31.349 -2020-10-08 17:45:00,122.79,87.156,66.295,31.349 -2020-10-08 18:00:00,124.63,86.772,68.468,31.349 -2020-10-08 18:15:00,124.71,86.521,68.468,31.349 -2020-10-08 18:30:00,121.3,85.62799999999999,68.468,31.349 -2020-10-08 18:45:00,120.86,89.238,68.468,31.349 -2020-10-08 19:00:00,121.84,89.704,66.39399999999999,31.349 -2020-10-08 19:15:00,118.99,88.54,66.39399999999999,31.349 -2020-10-08 19:30:00,110.25,87.949,66.39399999999999,31.349 -2020-10-08 19:45:00,112.82,87.868,66.39399999999999,31.349 -2020-10-08 20:00:00,104.39,87.273,63.183,31.349 -2020-10-08 20:15:00,104.11,85.01700000000001,63.183,31.349 -2020-10-08 20:30:00,96.44,84.031,63.183,31.349 -2020-10-08 20:45:00,97.74,82.82,63.183,31.349 -2020-10-08 21:00:00,95.47,80.82,55.133,31.349 -2020-10-08 21:15:00,94.29,81.316,55.133,31.349 -2020-10-08 21:30:00,88.11,80.48899999999999,55.133,31.349 -2020-10-08 21:45:00,94.31,78.695,55.133,31.349 -2020-10-08 22:00:00,86.54,75.735,50.111999999999995,31.349 -2020-10-08 22:15:00,84.64,73.417,50.111999999999995,31.349 -2020-10-08 22:30:00,84.73,63.065,50.111999999999995,31.349 -2020-10-08 22:45:00,80.12,57.919,50.111999999999995,31.349 -2020-10-08 23:00:00,82.03,53.343,44.536,31.349 -2020-10-08 23:15:00,83.35,52.867,44.536,31.349 -2020-10-08 23:30:00,82.16,52.345,44.536,31.349 -2020-10-08 23:45:00,78.69,52.281000000000006,44.536,31.349 -2020-10-09 00:00:00,78.1,49.02,42.291000000000004,31.349 -2020-10-09 00:15:00,79.85,50.364,42.291000000000004,31.349 -2020-10-09 00:30:00,79.77,50.202,42.291000000000004,31.349 -2020-10-09 00:45:00,76.69,50.361999999999995,42.291000000000004,31.349 -2020-10-09 01:00:00,73.43,50.349,41.008,31.349 -2020-10-09 01:15:00,80.07,49.895,41.008,31.349 -2020-10-09 01:30:00,78.35,49.56100000000001,41.008,31.349 -2020-10-09 01:45:00,75.18,48.961999999999996,41.008,31.349 -2020-10-09 02:00:00,76.68,50.022,39.521,31.349 -2020-10-09 02:15:00,74.18,50.09,39.521,31.349 -2020-10-09 02:30:00,79.65,51.242,39.521,31.349 -2020-10-09 02:45:00,79.83,51.511,39.521,31.349 -2020-10-09 03:00:00,80.63,53.677,39.812,31.349 -2020-10-09 03:15:00,76.92,54.235,39.812,31.349 -2020-10-09 03:30:00,78.86,54.17,39.812,31.349 -2020-10-09 03:45:00,81.09,55.42,39.812,31.349 -2020-10-09 04:00:00,87.69,64.506,41.22,31.349 -2020-10-09 04:15:00,90.33,72.376,41.22,31.349 -2020-10-09 04:30:00,89.24,72.312,41.22,31.349 -2020-10-09 04:45:00,95.09,73.171,41.22,31.349 -2020-10-09 05:00:00,107.98,98.257,45.115,31.349 -2020-10-09 05:15:00,110.72,122.072,45.115,31.349 -2020-10-09 05:30:00,111.56,116.56299999999999,45.115,31.349 -2020-10-09 05:45:00,111.91,108.28200000000001,45.115,31.349 -2020-10-09 06:00:00,119.82,108.445,59.06100000000001,31.349 -2020-10-09 06:15:00,118.17,111.68,59.06100000000001,31.349 -2020-10-09 06:30:00,118.58,109.745,59.06100000000001,31.349 -2020-10-09 06:45:00,120.01,111.014,59.06100000000001,31.349 -2020-10-09 07:00:00,122.14,111.315,71.874,31.349 -2020-10-09 07:15:00,120.54,114.571,71.874,31.349 -2020-10-09 07:30:00,118.81,113.26100000000001,71.874,31.349 -2020-10-09 07:45:00,118.12,112.98,71.874,31.349 -2020-10-09 08:00:00,116.07,111.43299999999999,68.439,31.349 -2020-10-09 08:15:00,113.32,111.71600000000001,68.439,31.349 -2020-10-09 08:30:00,113.35,109.887,68.439,31.349 -2020-10-09 08:45:00,116.44,108.208,68.439,31.349 -2020-10-09 09:00:00,120.09,102.461,65.523,31.349 -2020-10-09 09:15:00,119.56,101.556,65.523,31.349 -2020-10-09 09:30:00,119.2,101.32,65.523,31.349 -2020-10-09 09:45:00,120.05,101.2,65.523,31.349 -2020-10-09 10:00:00,118.05,97.335,62.005,31.349 -2020-10-09 10:15:00,120.4,96.78399999999999,62.005,31.349 -2020-10-09 10:30:00,117.17,95.949,62.005,31.349 -2020-10-09 10:45:00,113.01,95.501,62.005,31.349 -2020-10-09 11:00:00,109.41,92.38600000000001,60.351000000000006,31.349 -2020-10-09 11:15:00,112.78,91.969,60.351000000000006,31.349 -2020-10-09 11:30:00,116.56,92.76799999999999,60.351000000000006,31.349 -2020-10-09 11:45:00,115.51,91.935,60.351000000000006,31.349 -2020-10-09 12:00:00,112.96,88.92399999999999,55.331,31.349 -2020-10-09 12:15:00,112.0,87.18700000000001,55.331,31.349 -2020-10-09 12:30:00,109.13,86.762,55.331,31.349 -2020-10-09 12:45:00,106.59,86.881,55.331,31.349 -2020-10-09 13:00:00,98.34,87.105,53.361999999999995,31.349 -2020-10-09 13:15:00,98.84,87.469,53.361999999999995,31.349 -2020-10-09 13:30:00,99.07,87.02,53.361999999999995,31.349 -2020-10-09 13:45:00,99.93,86.71,53.361999999999995,31.349 -2020-10-09 14:00:00,99.24,85.06299999999999,51.708,31.349 -2020-10-09 14:15:00,99.81,85.588,51.708,31.349 -2020-10-09 14:30:00,100.03,85.976,51.708,31.349 -2020-10-09 14:45:00,101.58,85.617,51.708,31.349 -2020-10-09 15:00:00,101.74,85.23100000000001,54.571000000000005,31.349 -2020-10-09 15:15:00,104.75,84.615,54.571000000000005,31.349 -2020-10-09 15:30:00,101.76,84.139,54.571000000000005,31.349 -2020-10-09 15:45:00,104.43,84.66,54.571000000000005,31.349 -2020-10-09 16:00:00,106.95,83.49,58.662,31.349 -2020-10-09 16:15:00,108.48,83.429,58.662,31.349 -2020-10-09 16:30:00,109.76,84.04,58.662,31.349 -2020-10-09 16:45:00,111.36,82.041,58.662,31.349 -2020-10-09 17:00:00,113.98,83.177,65.941,31.349 -2020-10-09 17:15:00,116.0,84.243,65.941,31.349 -2020-10-09 17:30:00,116.08,83.93700000000001,65.941,31.349 -2020-10-09 17:45:00,120.05,84.536,65.941,31.349 -2020-10-09 18:00:00,122.43,84.505,65.628,31.349 -2020-10-09 18:15:00,118.95,83.552,65.628,31.349 -2020-10-09 18:30:00,120.14,82.779,65.628,31.349 -2020-10-09 18:45:00,116.46,86.61200000000001,65.628,31.349 -2020-10-09 19:00:00,110.08,87.984,63.662,31.349 -2020-10-09 19:15:00,107.3,87.711,63.662,31.349 -2020-10-09 19:30:00,102.67,86.975,63.662,31.349 -2020-10-09 19:45:00,102.52,86.115,63.662,31.349 -2020-10-09 20:00:00,94.57,85.47399999999999,61.945,31.349 -2020-10-09 20:15:00,92.41,83.66,61.945,31.349 -2020-10-09 20:30:00,93.56,82.355,61.945,31.349 -2020-10-09 20:45:00,88.21,80.892,61.945,31.349 -2020-10-09 21:00:00,83.31,79.843,53.903,31.349 -2020-10-09 21:15:00,83.13,81.453,53.903,31.349 -2020-10-09 21:30:00,83.95,80.569,53.903,31.349 -2020-10-09 21:45:00,86.18,79.085,53.903,31.349 -2020-10-09 22:00:00,80.94,76.436,48.403999999999996,31.349 -2020-10-09 22:15:00,79.92,73.9,48.403999999999996,31.349 -2020-10-09 22:30:00,73.84,68.861,48.403999999999996,31.349 -2020-10-09 22:45:00,69.3,65.65100000000001,48.403999999999996,31.349 -2020-10-09 23:00:00,66.03,61.873999999999995,41.07,31.349 -2020-10-09 23:15:00,66.63,59.684,41.07,31.349 -2020-10-09 23:30:00,71.33,57.535,41.07,31.349 -2020-10-09 23:45:00,72.04,57.123999999999995,41.07,31.349 -2020-10-10 00:00:00,68.05,48.924,38.989000000000004,31.177 -2020-10-10 00:15:00,66.03,48.18899999999999,38.989000000000004,31.177 -2020-10-10 00:30:00,63.47,48.287,38.989000000000004,31.177 -2020-10-10 00:45:00,70.67,48.302,38.989000000000004,31.177 -2020-10-10 01:00:00,68.97,48.708,35.275,31.177 -2020-10-10 01:15:00,68.98,48.229,35.275,31.177 -2020-10-10 01:30:00,62.64,47.24100000000001,35.275,31.177 -2020-10-10 01:45:00,63.19,47.28,35.275,31.177 -2020-10-10 02:00:00,60.49,48.051,32.838,31.177 -2020-10-10 02:15:00,67.91,47.53,32.838,31.177 -2020-10-10 02:30:00,68.09,47.768,32.838,31.177 -2020-10-10 02:45:00,61.18,48.528999999999996,32.838,31.177 -2020-10-10 03:00:00,60.57,50.135,32.418,31.177 -2020-10-10 03:15:00,60.96,49.832,32.418,31.177 -2020-10-10 03:30:00,60.75,49.342,32.418,31.177 -2020-10-10 03:45:00,61.33,51.481,32.418,31.177 -2020-10-10 04:00:00,63.26,57.9,32.099000000000004,31.177 -2020-10-10 04:15:00,62.9,64.293,32.099000000000004,31.177 -2020-10-10 04:30:00,62.36,62.413000000000004,32.099000000000004,31.177 -2020-10-10 04:45:00,64.21,63.248000000000005,32.099000000000004,31.177 -2020-10-10 05:00:00,67.64,77.72,32.926,31.177 -2020-10-10 05:15:00,68.34,87.98899999999999,32.926,31.177 -2020-10-10 05:30:00,67.96,83.508,32.926,31.177 -2020-10-10 05:45:00,69.98,79.889,32.926,31.177 -2020-10-10 06:00:00,70.7,93.516,35.069,31.177 -2020-10-10 06:15:00,73.22,107.594,35.069,31.177 -2020-10-10 06:30:00,74.31,101.949,35.069,31.177 -2020-10-10 06:45:00,77.52,97.90799999999999,35.069,31.177 -2020-10-10 07:00:00,79.57,95.572,40.906,31.177 -2020-10-10 07:15:00,80.64,97.601,40.906,31.177 -2020-10-10 07:30:00,80.5,98.264,40.906,31.177 -2020-10-10 07:45:00,81.73,100.09,40.906,31.177 -2020-10-10 08:00:00,80.79,100.335,46.603,31.177 -2020-10-10 08:15:00,80.92,101.959,46.603,31.177 -2020-10-10 08:30:00,80.69,100.809,46.603,31.177 -2020-10-10 08:45:00,79.3,100.93,46.603,31.177 -2020-10-10 09:00:00,80.93,97.544,49.935,31.177 -2020-10-10 09:15:00,78.7,97.215,49.935,31.177 -2020-10-10 09:30:00,77.39,97.61399999999999,49.935,31.177 -2020-10-10 09:45:00,77.01,97.289,49.935,31.177 -2020-10-10 10:00:00,75.49,93.726,47.585,31.177 -2020-10-10 10:15:00,76.27,93.39399999999999,47.585,31.177 -2020-10-10 10:30:00,75.48,92.43299999999999,47.585,31.177 -2020-10-10 10:45:00,75.32,92.353,47.585,31.177 -2020-10-10 11:00:00,73.13,89.22200000000001,43.376999999999995,31.177 -2020-10-10 11:15:00,72.55,88.932,43.376999999999995,31.177 -2020-10-10 11:30:00,69.49,89.382,43.376999999999995,31.177 -2020-10-10 11:45:00,71.73,88.456,43.376999999999995,31.177 -2020-10-10 12:00:00,67.21,85.07799999999999,40.855,31.177 -2020-10-10 12:15:00,65.23,84.057,40.855,31.177 -2020-10-10 12:30:00,64.52,83.74700000000001,40.855,31.177 -2020-10-10 12:45:00,64.43,83.87899999999999,40.855,31.177 -2020-10-10 13:00:00,62.06,83.459,37.251,31.177 -2020-10-10 13:15:00,63.54,82.611,37.251,31.177 -2020-10-10 13:30:00,64.24,82.051,37.251,31.177 -2020-10-10 13:45:00,65.9,81.27199999999999,37.251,31.177 -2020-10-10 14:00:00,65.04,80.149,38.548,31.177 -2020-10-10 14:15:00,65.98,79.81,38.548,31.177 -2020-10-10 14:30:00,67.11,79.18,38.548,31.177 -2020-10-10 14:45:00,68.17,79.163,38.548,31.177 -2020-10-10 15:00:00,68.93,79.266,42.883,31.177 -2020-10-10 15:15:00,68.68,79.398,42.883,31.177 -2020-10-10 15:30:00,70.26,79.771,42.883,31.177 -2020-10-10 15:45:00,73.92,79.848,42.883,31.177 -2020-10-10 16:00:00,76.34,79.433,48.143,31.177 -2020-10-10 16:15:00,80.43,79.315,48.143,31.177 -2020-10-10 16:30:00,82.57,80.018,48.143,31.177 -2020-10-10 16:45:00,81.96,78.45,48.143,31.177 -2020-10-10 17:00:00,87.07,78.757,55.25,31.177 -2020-10-10 17:15:00,85.61,79.41,55.25,31.177 -2020-10-10 17:30:00,93.1,78.993,55.25,31.177 -2020-10-10 17:45:00,93.78,79.703,55.25,31.177 -2020-10-10 18:00:00,94.81,80.311,57.506,31.177 -2020-10-10 18:15:00,93.4,81.016,57.506,31.177 -2020-10-10 18:30:00,95.37,81.557,57.506,31.177 -2020-10-10 18:45:00,92.73,82.074,57.506,31.177 -2020-10-10 19:00:00,86.72,83.03299999999999,55.528999999999996,31.177 -2020-10-10 19:15:00,83.84,81.98700000000001,55.528999999999996,31.177 -2020-10-10 19:30:00,81.98,81.98100000000001,55.528999999999996,31.177 -2020-10-10 19:45:00,80.54,82.01799999999999,55.528999999999996,31.177 -2020-10-10 20:00:00,77.04,82.738,46.166000000000004,31.177 -2020-10-10 20:15:00,76.13,81.439,46.166000000000004,31.177 -2020-10-10 20:30:00,75.51,79.47399999999999,46.166000000000004,31.177 -2020-10-10 20:45:00,73.93,78.848,46.166000000000004,31.177 -2020-10-10 21:00:00,71.35,77.916,40.406,31.177 -2020-10-10 21:15:00,70.87,79.498,40.406,31.177 -2020-10-10 21:30:00,66.41,79.23100000000001,40.406,31.177 -2020-10-10 21:45:00,65.71,77.248,40.406,31.177 -2020-10-10 22:00:00,61.42,75.122,39.616,31.177 -2020-10-10 22:15:00,62.07,73.71600000000001,39.616,31.177 -2020-10-10 22:30:00,59.56,71.013,39.616,31.177 -2020-10-10 22:45:00,58.47,68.78,39.616,31.177 -2020-10-10 23:00:00,54.74,65.638,32.205,31.177 -2020-10-10 23:15:00,54.08,62.986999999999995,32.205,31.177 -2020-10-10 23:30:00,55.19,61.508,32.205,31.177 -2020-10-10 23:45:00,53.38,60.303999999999995,32.205,31.177 -2020-10-11 00:00:00,50.93,50.198,28.229,31.177 -2020-10-11 00:15:00,51.94,48.662,28.229,31.177 -2020-10-11 00:30:00,50.97,48.536,28.229,31.177 -2020-10-11 00:45:00,51.87,48.757,28.229,31.177 -2020-10-11 01:00:00,49.67,49.263999999999996,25.669,31.177 -2020-10-11 01:15:00,51.23,49.141000000000005,25.669,31.177 -2020-10-11 01:30:00,50.66,48.294,25.669,31.177 -2020-10-11 01:45:00,51.05,47.988,25.669,31.177 -2020-10-11 02:00:00,51.26,48.52,24.948,31.177 -2020-10-11 02:15:00,50.24,48.092,24.948,31.177 -2020-10-11 02:30:00,49.75,48.754,24.948,31.177 -2020-10-11 02:45:00,49.74,49.521,24.948,31.177 -2020-10-11 03:00:00,49.25,51.614,24.445,31.177 -2020-10-11 03:15:00,50.7,51.281000000000006,24.445,31.177 -2020-10-11 03:30:00,51.34,50.907,24.445,31.177 -2020-10-11 03:45:00,51.61,52.536,24.445,31.177 -2020-10-11 04:00:00,52.83,58.86600000000001,25.839000000000002,31.177 -2020-10-11 04:15:00,53.93,64.65,25.839000000000002,31.177 -2020-10-11 04:30:00,53.84,63.577,25.839000000000002,31.177 -2020-10-11 04:45:00,54.0,64.253,25.839000000000002,31.177 -2020-10-11 05:00:00,56.26,77.597,26.803,31.177 -2020-10-11 05:15:00,56.25,86.6,26.803,31.177 -2020-10-11 05:30:00,56.59,81.8,26.803,31.177 -2020-10-11 05:45:00,54.83,78.065,26.803,31.177 -2020-10-11 06:00:00,60.32,90.211,28.147,31.177 -2020-10-11 06:15:00,59.82,104.145,28.147,31.177 -2020-10-11 06:30:00,62.29,97.684,28.147,31.177 -2020-10-11 06:45:00,63.34,92.662,28.147,31.177 -2020-10-11 07:00:00,65.28,91.40100000000001,31.116,31.177 -2020-10-11 07:15:00,66.84,92.166,31.116,31.177 -2020-10-11 07:30:00,67.06,93.11200000000001,31.116,31.177 -2020-10-11 07:45:00,67.82,94.62100000000001,31.116,31.177 -2020-10-11 08:00:00,66.65,95.993,35.739000000000004,31.177 -2020-10-11 08:15:00,66.05,98.213,35.739000000000004,31.177 -2020-10-11 08:30:00,64.97,98.24600000000001,35.739000000000004,31.177 -2020-10-11 08:45:00,64.71,99.119,35.739000000000004,31.177 -2020-10-11 09:00:00,62.3,95.48899999999999,39.455999999999996,31.177 -2020-10-11 09:15:00,61.87,95.111,39.455999999999996,31.177 -2020-10-11 09:30:00,61.94,95.667,39.455999999999996,31.177 -2020-10-11 09:45:00,63.26,95.81700000000001,39.455999999999996,31.177 -2020-10-11 10:00:00,63.21,93.579,41.343999999999994,31.177 -2020-10-11 10:15:00,63.71,93.508,41.343999999999994,31.177 -2020-10-11 10:30:00,64.26,92.906,41.343999999999994,31.177 -2020-10-11 10:45:00,63.77,92.535,41.343999999999994,31.177 -2020-10-11 11:00:00,60.7,89.61200000000001,43.645,31.177 -2020-10-11 11:15:00,59.98,89.12700000000001,43.645,31.177 -2020-10-11 11:30:00,57.95,89.469,43.645,31.177 -2020-10-11 11:45:00,60.21,88.926,43.645,31.177 -2020-10-11 12:00:00,56.47,85.79,39.796,31.177 -2020-10-11 12:15:00,53.94,85.294,39.796,31.177 -2020-10-11 12:30:00,52.59,84.475,39.796,31.177 -2020-10-11 12:45:00,54.32,83.84200000000001,39.796,31.177 -2020-10-11 13:00:00,49.62,82.914,36.343,31.177 -2020-10-11 13:15:00,51.08,83.12700000000001,36.343,31.177 -2020-10-11 13:30:00,51.24,81.898,36.343,31.177 -2020-10-11 13:45:00,52.47,81.398,36.343,31.177 -2020-10-11 14:00:00,52.86,80.949,33.162,31.177 -2020-10-11 14:15:00,54.18,81.385,33.162,31.177 -2020-10-11 14:30:00,54.72,80.714,33.162,31.177 -2020-10-11 14:45:00,57.08,79.959,33.162,31.177 -2020-10-11 15:00:00,61.5,79.414,33.215,31.177 -2020-10-11 15:15:00,61.01,79.492,33.215,31.177 -2020-10-11 15:30:00,61.52,80.07300000000001,33.215,31.177 -2020-10-11 15:45:00,64.89,80.623,33.215,31.177 -2020-10-11 16:00:00,69.86,80.05,37.385999999999996,31.177 -2020-10-11 16:15:00,73.5,79.68,37.385999999999996,31.177 -2020-10-11 16:30:00,72.54,81.023,37.385999999999996,31.177 -2020-10-11 16:45:00,77.12,79.60300000000001,37.385999999999996,31.177 -2020-10-11 17:00:00,81.3,80.021,46.618,31.177 -2020-10-11 17:15:00,82.78,81.369,46.618,31.177 -2020-10-11 17:30:00,89.15,81.513,46.618,31.177 -2020-10-11 17:45:00,88.39,83.434,46.618,31.177 -2020-10-11 18:00:00,91.86,84.07700000000001,50.111000000000004,31.177 -2020-10-11 18:15:00,89.54,85.089,50.111000000000004,31.177 -2020-10-11 18:30:00,91.48,84.645,50.111000000000004,31.177 -2020-10-11 18:45:00,86.46,85.98299999999999,50.111000000000004,31.177 -2020-10-11 19:00:00,81.58,87.99,50.25,31.177 -2020-10-11 19:15:00,87.47,86.554,50.25,31.177 -2020-10-11 19:30:00,87.65,86.333,50.25,31.177 -2020-10-11 19:45:00,84.98,86.675,50.25,31.177 -2020-10-11 20:00:00,82.24,87.521,44.265,31.177 -2020-10-11 20:15:00,88.55,86.537,44.265,31.177 -2020-10-11 20:30:00,87.01,85.499,44.265,31.177 -2020-10-11 20:45:00,88.49,83.41799999999999,44.265,31.177 -2020-10-11 21:00:00,79.77,81.342,39.717,31.177 -2020-10-11 21:15:00,77.18,82.494,39.717,31.177 -2020-10-11 21:30:00,75.52,81.98899999999999,39.717,31.177 -2020-10-11 21:45:00,74.79,80.236,39.717,31.177 -2020-10-11 22:00:00,70.87,78.767,39.224000000000004,31.177 -2020-10-11 22:15:00,77.05,76.087,39.224000000000004,31.177 -2020-10-11 22:30:00,76.79,71.846,39.224000000000004,31.177 -2020-10-11 22:45:00,77.47,68.562,39.224000000000004,31.177 -2020-10-11 23:00:00,67.29,64.157,33.518,31.177 -2020-10-11 23:15:00,67.19,62.933,33.518,31.177 -2020-10-11 23:30:00,72.95,61.476000000000006,33.518,31.177 -2020-10-11 23:45:00,73.21,60.711999999999996,33.518,31.177 -2020-10-12 00:00:00,70.94,53.006,34.301,31.349 -2020-10-12 00:15:00,68.42,53.067,34.301,31.349 -2020-10-12 00:30:00,68.11,52.773999999999994,34.301,31.349 -2020-10-12 00:45:00,72.11,52.558,34.301,31.349 -2020-10-12 01:00:00,70.36,53.288999999999994,34.143,31.349 -2020-10-12 01:15:00,68.12,52.99100000000001,34.143,31.349 -2020-10-12 01:30:00,65.37,52.393,34.143,31.349 -2020-10-12 01:45:00,69.82,52.073,34.143,31.349 -2020-10-12 02:00:00,69.15,52.861999999999995,33.650999999999996,31.349 -2020-10-12 02:15:00,70.12,52.422,33.650999999999996,31.349 -2020-10-12 02:30:00,66.23,53.29,33.650999999999996,31.349 -2020-10-12 02:45:00,70.36,53.729,33.650999999999996,31.349 -2020-10-12 03:00:00,72.15,56.57899999999999,32.599000000000004,31.349 -2020-10-12 03:15:00,72.16,57.313,32.599000000000004,31.349 -2020-10-12 03:30:00,69.17,57.236000000000004,32.599000000000004,31.349 -2020-10-12 03:45:00,76.19,58.367,32.599000000000004,31.349 -2020-10-12 04:00:00,82.36,68.183,33.785,31.349 -2020-10-12 04:15:00,85.74,77.285,33.785,31.349 -2020-10-12 04:30:00,84.49,76.767,33.785,31.349 -2020-10-12 04:45:00,89.3,77.73,33.785,31.349 -2020-10-12 05:00:00,101.52,101.051,41.285,31.349 -2020-10-12 05:15:00,106.64,123.691,41.285,31.349 -2020-10-12 05:30:00,106.95,118.056,41.285,31.349 -2020-10-12 05:45:00,106.85,110.37,41.285,31.349 -2020-10-12 06:00:00,115.15,109.96799999999999,60.486000000000004,31.349 -2020-10-12 06:15:00,115.95,113.00200000000001,60.486000000000004,31.349 -2020-10-12 06:30:00,115.89,111.90100000000001,60.486000000000004,31.349 -2020-10-12 06:45:00,118.2,113.29,60.486000000000004,31.349 -2020-10-12 07:00:00,121.53,113.51899999999999,74.012,31.349 -2020-10-12 07:15:00,122.2,116.09200000000001,74.012,31.349 -2020-10-12 07:30:00,118.03,116.274,74.012,31.349 -2020-10-12 07:45:00,116.52,116.95,74.012,31.349 -2020-10-12 08:00:00,114.57,115.436,69.569,31.349 -2020-10-12 08:15:00,114.1,116.088,69.569,31.349 -2020-10-12 08:30:00,114.31,113.955,69.569,31.349 -2020-10-12 08:45:00,116.52,113.573,69.569,31.349 -2020-10-12 09:00:00,111.0,109.07,66.152,31.349 -2020-10-12 09:15:00,110.6,106.264,66.152,31.349 -2020-10-12 09:30:00,110.4,105.881,66.152,31.349 -2020-10-12 09:45:00,110.21,104.867,66.152,31.349 -2020-10-12 10:00:00,109.5,102.59200000000001,62.923,31.349 -2020-10-12 10:15:00,116.29,102.26299999999999,62.923,31.349 -2020-10-12 10:30:00,112.61,101.021,62.923,31.349 -2020-10-12 10:45:00,114.5,100.115,62.923,31.349 -2020-10-12 11:00:00,111.52,96.26700000000001,61.522,31.349 -2020-10-12 11:15:00,115.75,96.70100000000001,61.522,31.349 -2020-10-12 11:30:00,110.56,98.014,61.522,31.349 -2020-10-12 11:45:00,105.29,97.54,61.522,31.349 -2020-10-12 12:00:00,103.06,94.429,58.632,31.349 -2020-10-12 12:15:00,103.27,93.98200000000001,58.632,31.349 -2020-10-12 12:30:00,99.5,92.764,58.632,31.349 -2020-10-12 12:45:00,102.59,92.81299999999999,58.632,31.349 -2020-10-12 13:00:00,103.02,92.575,59.06,31.349 -2020-10-12 13:15:00,104.16,91.713,59.06,31.349 -2020-10-12 13:30:00,101.81,90.331,59.06,31.349 -2020-10-12 13:45:00,102.12,90.304,59.06,31.349 -2020-10-12 14:00:00,104.85,89.085,59.791000000000004,31.349 -2020-10-12 14:15:00,111.72,89.54899999999999,59.791000000000004,31.349 -2020-10-12 14:30:00,108.5,88.586,59.791000000000004,31.349 -2020-10-12 14:45:00,107.1,88.87,59.791000000000004,31.349 -2020-10-12 15:00:00,107.33,88.921,61.148,31.349 -2020-10-12 15:15:00,107.86,88.06700000000001,61.148,31.349 -2020-10-12 15:30:00,108.23,88.7,61.148,31.349 -2020-10-12 15:45:00,110.3,88.81700000000001,61.148,31.349 -2020-10-12 16:00:00,111.96,88.654,66.009,31.349 -2020-10-12 16:15:00,114.55,88.006,66.009,31.349 -2020-10-12 16:30:00,114.39,88.575,66.009,31.349 -2020-10-12 16:45:00,116.45,86.70299999999999,66.009,31.349 -2020-10-12 17:00:00,117.5,86.335,73.683,31.349 -2020-10-12 17:15:00,116.77,87.499,73.683,31.349 -2020-10-12 17:30:00,118.94,87.204,73.683,31.349 -2020-10-12 17:45:00,119.82,88.29700000000001,73.683,31.349 -2020-10-12 18:00:00,121.77,88.435,72.848,31.349 -2020-10-12 18:15:00,121.95,87.51100000000001,72.848,31.349 -2020-10-12 18:30:00,119.5,86.93299999999999,72.848,31.349 -2020-10-12 18:45:00,116.12,90.29799999999999,72.848,31.349 -2020-10-12 19:00:00,110.92,91.43799999999999,71.139,31.349 -2020-10-12 19:15:00,106.85,90.26799999999999,71.139,31.349 -2020-10-12 19:30:00,103.85,90.03200000000001,71.139,31.349 -2020-10-12 19:45:00,107.99,89.679,71.139,31.349 -2020-10-12 20:00:00,105.84,88.89,69.667,31.349 -2020-10-12 20:15:00,105.89,87.679,69.667,31.349 -2020-10-12 20:30:00,98.58,86.147,69.667,31.349 -2020-10-12 20:45:00,96.33,84.819,69.667,31.349 -2020-10-12 21:00:00,91.25,82.61399999999999,61.166000000000004,31.349 -2020-10-12 21:15:00,90.87,83.53299999999999,61.166000000000004,31.349 -2020-10-12 21:30:00,91.81,82.939,61.166000000000004,31.349 -2020-10-12 21:45:00,92.26,80.832,61.166000000000004,31.349 -2020-10-12 22:00:00,88.19,77.041,52.772,31.349 -2020-10-12 22:15:00,87.73,74.929,52.772,31.349 -2020-10-12 22:30:00,87.11,64.431,52.772,31.349 -2020-10-12 22:45:00,87.25,59.202,52.772,31.349 -2020-10-12 23:00:00,79.67,55.16,45.136,31.349 -2020-10-12 23:15:00,78.21,54.04,45.136,31.349 -2020-10-12 23:30:00,80.76,53.67,45.136,31.349 -2020-10-12 23:45:00,81.41,53.657,45.136,31.349 -2020-10-13 00:00:00,73.81,51.739,47.35,31.349 -2020-10-13 00:15:00,72.3,52.842,47.35,31.349 -2020-10-13 00:30:00,74.12,52.604,47.35,31.349 -2020-10-13 00:45:00,77.97,52.465,47.35,31.349 -2020-10-13 01:00:00,75.1,52.812,43.424,31.349 -2020-10-13 01:15:00,74.15,52.428000000000004,43.424,31.349 -2020-10-13 01:30:00,75.85,51.838,43.424,31.349 -2020-10-13 01:45:00,77.72,51.335,43.424,31.349 -2020-10-13 02:00:00,77.58,51.851000000000006,41.778999999999996,31.349 -2020-10-13 02:15:00,75.84,52.056000000000004,41.778999999999996,31.349 -2020-10-13 02:30:00,75.85,52.452,41.778999999999996,31.349 -2020-10-13 02:45:00,75.3,53.08,41.778999999999996,31.349 -2020-10-13 03:00:00,79.74,55.13399999999999,40.771,31.349 -2020-10-13 03:15:00,78.15,56.108000000000004,40.771,31.349 -2020-10-13 03:30:00,75.52,56.201,40.771,31.349 -2020-10-13 03:45:00,75.48,56.739,40.771,31.349 -2020-10-13 04:00:00,77.47,65.77199999999999,41.816,31.349 -2020-10-13 04:15:00,82.06,74.781,41.816,31.349 -2020-10-13 04:30:00,90.51,74.07600000000001,41.816,31.349 -2020-10-13 04:45:00,97.73,75.794,41.816,31.349 -2020-10-13 05:00:00,105.85,102.00200000000001,45.842,31.349 -2020-10-13 05:15:00,102.75,125.023,45.842,31.349 -2020-10-13 05:30:00,106.37,118.916,45.842,31.349 -2020-10-13 05:45:00,110.98,110.75399999999999,45.842,31.349 -2020-10-13 06:00:00,119.85,110.51,59.12,31.349 -2020-10-13 06:15:00,119.21,114.292,59.12,31.349 -2020-10-13 06:30:00,118.8,112.76899999999999,59.12,31.349 -2020-10-13 06:45:00,121.82,113.495,59.12,31.349 -2020-10-13 07:00:00,123.79,113.73899999999999,70.33,31.349 -2020-10-13 07:15:00,123.79,116.11399999999999,70.33,31.349 -2020-10-13 07:30:00,123.33,116.124,70.33,31.349 -2020-10-13 07:45:00,123.65,116.325,70.33,31.349 -2020-10-13 08:00:00,123.2,114.829,67.788,31.349 -2020-10-13 08:15:00,123.26,114.786,67.788,31.349 -2020-10-13 08:30:00,124.04,112.699,67.788,31.349 -2020-10-13 08:45:00,124.33,111.66799999999999,67.788,31.349 -2020-10-13 09:00:00,122.91,107.008,62.622,31.349 -2020-10-13 09:15:00,121.43,104.785,62.622,31.349 -2020-10-13 09:30:00,119.64,105.04799999999999,62.622,31.349 -2020-10-13 09:45:00,119.0,104.652,62.622,31.349 -2020-10-13 10:00:00,118.75,101.374,60.887,31.349 -2020-10-13 10:15:00,118.55,100.47,60.887,31.349 -2020-10-13 10:30:00,116.94,99.303,60.887,31.349 -2020-10-13 10:45:00,119.41,99.036,60.887,31.349 -2020-10-13 11:00:00,113.99,95.845,59.812,31.349 -2020-10-13 11:15:00,112.18,96.32600000000001,59.812,31.349 -2020-10-13 11:30:00,114.67,96.523,59.812,31.349 -2020-10-13 11:45:00,109.79,96.10600000000001,59.812,31.349 -2020-10-13 12:00:00,105.65,92.26,56.614,31.349 -2020-10-13 12:15:00,104.47,91.789,56.614,31.349 -2020-10-13 12:30:00,103.49,91.37299999999999,56.614,31.349 -2020-10-13 12:45:00,102.45,91.63799999999999,56.614,31.349 -2020-10-13 13:00:00,102.46,91.0,56.824,31.349 -2020-10-13 13:15:00,105.71,90.90700000000001,56.824,31.349 -2020-10-13 13:30:00,106.9,90.038,56.824,31.349 -2020-10-13 13:45:00,109.76,89.601,56.824,31.349 -2020-10-13 14:00:00,110.65,88.68700000000001,57.623999999999995,31.349 -2020-10-13 14:15:00,111.37,89.135,57.623999999999995,31.349 -2020-10-13 14:30:00,111.33,88.661,57.623999999999995,31.349 -2020-10-13 14:45:00,111.96,88.50200000000001,57.623999999999995,31.349 -2020-10-13 15:00:00,111.31,88.243,59.724,31.349 -2020-10-13 15:15:00,107.85,88.03,59.724,31.349 -2020-10-13 15:30:00,108.03,88.694,59.724,31.349 -2020-10-13 15:45:00,111.58,88.821,59.724,31.349 -2020-10-13 16:00:00,111.54,88.443,61.64,31.349 -2020-10-13 16:15:00,111.16,88.069,61.64,31.349 -2020-10-13 16:30:00,113.67,88.71700000000001,61.64,31.349 -2020-10-13 16:45:00,116.95,87.404,61.64,31.349 -2020-10-13 17:00:00,118.92,87.344,68.962,31.349 -2020-10-13 17:15:00,119.99,88.766,68.962,31.349 -2020-10-13 17:30:00,122.98,88.524,68.962,31.349 -2020-10-13 17:45:00,123.02,89.40299999999999,68.962,31.349 -2020-10-13 18:00:00,123.95,88.95,69.149,31.349 -2020-10-13 18:15:00,123.41,88.626,69.149,31.349 -2020-10-13 18:30:00,120.16,87.787,69.149,31.349 -2020-10-13 18:45:00,119.43,91.367,69.149,31.349 -2020-10-13 19:00:00,114.42,91.887,68.832,31.349 -2020-10-13 19:15:00,112.4,90.699,68.832,31.349 -2020-10-13 19:30:00,115.3,90.065,68.832,31.349 -2020-10-13 19:45:00,110.17,89.897,68.832,31.349 -2020-10-13 20:00:00,100.53,89.419,66.403,31.349 -2020-10-13 20:15:00,101.98,87.134,66.403,31.349 -2020-10-13 20:30:00,100.14,86.008,66.403,31.349 -2020-10-13 20:45:00,100.17,84.654,66.403,31.349 -2020-10-13 21:00:00,98.31,82.654,57.352,31.349 -2020-10-13 21:15:00,99.67,83.098,57.352,31.349 -2020-10-13 21:30:00,94.62,82.321,57.352,31.349 -2020-10-13 21:45:00,94.12,80.389,57.352,31.349 -2020-10-13 22:00:00,86.01,77.366,51.148999999999994,31.349 -2020-10-13 22:15:00,88.4,74.939,51.148999999999994,31.349 -2020-10-13 22:30:00,85.44,64.658,51.148999999999994,31.349 -2020-10-13 22:45:00,86.13,59.544,51.148999999999994,31.349 -2020-10-13 23:00:00,77.28,55.103,41.8,31.349 -2020-10-13 23:15:00,80.43,54.472,41.8,31.349 -2020-10-13 23:30:00,81.88,53.957,41.8,31.349 -2020-10-13 23:45:00,80.49,53.865,41.8,31.349 -2020-10-14 00:00:00,73.56,52.053000000000004,42.269,31.349 -2020-10-14 00:15:00,77.84,53.146,42.269,31.349 -2020-10-14 00:30:00,78.77,52.915,42.269,31.349 -2020-10-14 00:45:00,79.64,52.773999999999994,42.269,31.349 -2020-10-14 01:00:00,73.44,53.123999999999995,38.527,31.349 -2020-10-14 01:15:00,70.94,52.76,38.527,31.349 -2020-10-14 01:30:00,68.57,52.188,38.527,31.349 -2020-10-14 01:45:00,76.68,51.684,38.527,31.349 -2020-10-14 02:00:00,78.54,52.208,36.393,31.349 -2020-10-14 02:15:00,78.33,52.428000000000004,36.393,31.349 -2020-10-14 02:30:00,74.42,52.806000000000004,36.393,31.349 -2020-10-14 02:45:00,75.3,53.431000000000004,36.393,31.349 -2020-10-14 03:00:00,80.29,55.471000000000004,36.167,31.349 -2020-10-14 03:15:00,82.02,56.465,36.167,31.349 -2020-10-14 03:30:00,80.68,56.562,36.167,31.349 -2020-10-14 03:45:00,79.09,57.08,36.167,31.349 -2020-10-14 04:00:00,83.44,66.143,38.092,31.349 -2020-10-14 04:15:00,90.73,75.185,38.092,31.349 -2020-10-14 04:30:00,92.79,74.482,38.092,31.349 -2020-10-14 04:45:00,97.44,76.208,38.092,31.349 -2020-10-14 05:00:00,100.81,102.50299999999999,42.268,31.349 -2020-10-14 05:15:00,104.2,125.611,42.268,31.349 -2020-10-14 05:30:00,107.8,119.486,42.268,31.349 -2020-10-14 05:45:00,107.29,111.281,42.268,31.349 -2020-10-14 06:00:00,119.76,111.015,60.158,31.349 -2020-10-14 06:15:00,120.14,114.814,60.158,31.349 -2020-10-14 06:30:00,119.69,113.304,60.158,31.349 -2020-10-14 06:45:00,121.56,114.03200000000001,60.158,31.349 -2020-10-14 07:00:00,125.08,114.275,74.792,31.349 -2020-10-14 07:15:00,123.17,116.663,74.792,31.349 -2020-10-14 07:30:00,121.58,116.706,74.792,31.349 -2020-10-14 07:45:00,120.8,116.906,74.792,31.349 -2020-10-14 08:00:00,118.68,115.421,70.499,31.349 -2020-10-14 08:15:00,118.45,115.34899999999999,70.499,31.349 -2020-10-14 08:30:00,117.08,113.28399999999999,70.499,31.349 -2020-10-14 08:45:00,117.25,112.23,70.499,31.349 -2020-10-14 09:00:00,115.59,107.568,68.892,31.349 -2020-10-14 09:15:00,114.95,105.34,68.892,31.349 -2020-10-14 09:30:00,114.97,105.587,68.892,31.349 -2020-10-14 09:45:00,113.19,105.165,68.892,31.349 -2020-10-14 10:00:00,112.69,101.88,66.88600000000001,31.349 -2020-10-14 10:15:00,113.46,100.93700000000001,66.88600000000001,31.349 -2020-10-14 10:30:00,111.52,99.751,66.88600000000001,31.349 -2020-10-14 10:45:00,111.35,99.469,66.88600000000001,31.349 -2020-10-14 11:00:00,109.19,96.285,66.187,31.349 -2020-10-14 11:15:00,108.97,96.74799999999999,66.187,31.349 -2020-10-14 11:30:00,109.66,96.945,66.187,31.349 -2020-10-14 11:45:00,107.61,96.51100000000001,66.187,31.349 -2020-10-14 12:00:00,105.62,92.641,62.18,31.349 -2020-10-14 12:15:00,107.74,92.162,62.18,31.349 -2020-10-14 12:30:00,102.93,91.781,62.18,31.349 -2020-10-14 12:45:00,105.05,92.044,62.18,31.349 -2020-10-14 13:00:00,103.94,91.37299999999999,62.23,31.349 -2020-10-14 13:15:00,104.45,91.285,62.23,31.349 -2020-10-14 13:30:00,103.05,90.414,62.23,31.349 -2020-10-14 13:45:00,104.96,89.976,62.23,31.349 -2020-10-14 14:00:00,105.25,89.01100000000001,63.721000000000004,31.349 -2020-10-14 14:15:00,105.9,89.475,63.721000000000004,31.349 -2020-10-14 14:30:00,106.58,89.037,63.721000000000004,31.349 -2020-10-14 14:45:00,106.09,88.876,63.721000000000004,31.349 -2020-10-14 15:00:00,106.28,88.58200000000001,66.523,31.349 -2020-10-14 15:15:00,106.7,88.389,66.523,31.349 -2020-10-14 15:30:00,107.34,89.088,66.523,31.349 -2020-10-14 15:45:00,109.23,89.23,66.523,31.349 -2020-10-14 16:00:00,110.31,88.816,69.679,31.349 -2020-10-14 16:15:00,111.71,88.462,69.679,31.349 -2020-10-14 16:30:00,113.73,89.105,69.679,31.349 -2020-10-14 16:45:00,116.27,87.84700000000001,69.679,31.349 -2020-10-14 17:00:00,121.1,87.74600000000001,75.04,31.349 -2020-10-14 17:15:00,119.15,89.189,75.04,31.349 -2020-10-14 17:30:00,125.29,88.95,75.04,31.349 -2020-10-14 17:45:00,126.05,89.851,75.04,31.349 -2020-10-14 18:00:00,126.68,89.385,75.915,31.349 -2020-10-14 18:15:00,123.93,89.046,75.915,31.349 -2020-10-14 18:30:00,123.69,88.21799999999999,75.915,31.349 -2020-10-14 18:45:00,120.41,91.794,75.915,31.349 -2020-10-14 19:00:00,120.5,92.323,74.66,31.349 -2020-10-14 19:15:00,119.72,91.131,74.66,31.349 -2020-10-14 19:30:00,116.45,90.488,74.66,31.349 -2020-10-14 19:45:00,107.96,90.303,74.66,31.349 -2020-10-14 20:00:00,107.34,89.848,71.204,31.349 -2020-10-14 20:15:00,109.49,87.55799999999999,71.204,31.349 -2020-10-14 20:30:00,100.41,86.404,71.204,31.349 -2020-10-14 20:45:00,104.83,85.022,71.204,31.349 -2020-10-14 21:00:00,93.46,83.021,61.052,31.349 -2020-10-14 21:15:00,92.85,83.454,61.052,31.349 -2020-10-14 21:30:00,93.83,82.68700000000001,61.052,31.349 -2020-10-14 21:45:00,95.35,80.72800000000001,61.052,31.349 -2020-10-14 22:00:00,90.21,77.693,54.691,31.349 -2020-10-14 22:15:00,86.19,75.244,54.691,31.349 -2020-10-14 22:30:00,79.18,64.979,54.691,31.349 -2020-10-14 22:45:00,83.68,59.871,54.691,31.349 -2020-10-14 23:00:00,81.26,55.456,45.18,31.349 -2020-10-14 23:15:00,82.45,54.794,45.18,31.349 -2020-10-14 23:30:00,76.29,54.28,45.18,31.349 -2020-10-14 23:45:00,79.49,54.183,45.18,31.349 -2020-10-15 00:00:00,78.17,52.367,42.746,31.349 -2020-10-15 00:15:00,79.69,53.452,42.746,31.349 -2020-10-15 00:30:00,76.7,53.227,42.746,31.349 -2020-10-15 00:45:00,80.0,53.082,42.746,31.349 -2020-10-15 01:00:00,77.04,53.437,40.025999999999996,31.349 -2020-10-15 01:15:00,76.62,53.093999999999994,40.025999999999996,31.349 -2020-10-15 01:30:00,72.38,52.538999999999994,40.025999999999996,31.349 -2020-10-15 01:45:00,72.39,52.033,40.025999999999996,31.349 -2020-10-15 02:00:00,75.25,52.565,38.154,31.349 -2020-10-15 02:15:00,79.25,52.799,38.154,31.349 -2020-10-15 02:30:00,80.42,53.161,38.154,31.349 -2020-10-15 02:45:00,76.0,53.781000000000006,38.154,31.349 -2020-10-15 03:00:00,78.42,55.809,37.575,31.349 -2020-10-15 03:15:00,81.16,56.821000000000005,37.575,31.349 -2020-10-15 03:30:00,82.38,56.92100000000001,37.575,31.349 -2020-10-15 03:45:00,80.84,57.42100000000001,37.575,31.349 -2020-10-15 04:00:00,86.29,66.514,39.154,31.349 -2020-10-15 04:15:00,91.49,75.59,39.154,31.349 -2020-10-15 04:30:00,94.3,74.887,39.154,31.349 -2020-10-15 04:45:00,97.08,76.622,39.154,31.349 -2020-10-15 05:00:00,98.74,103.00299999999999,44.085,31.349 -2020-10-15 05:15:00,105.55,126.2,44.085,31.349 -2020-10-15 05:30:00,107.13,120.055,44.085,31.349 -2020-10-15 05:45:00,111.73,111.80799999999999,44.085,31.349 -2020-10-15 06:00:00,119.93,111.52,57.49,31.349 -2020-10-15 06:15:00,118.79,115.337,57.49,31.349 -2020-10-15 06:30:00,120.03,113.837,57.49,31.349 -2020-10-15 06:45:00,122.37,114.57,57.49,31.349 -2020-10-15 07:00:00,124.75,114.81200000000001,73.617,31.349 -2020-10-15 07:15:00,124.91,117.212,73.617,31.349 -2020-10-15 07:30:00,125.12,117.286,73.617,31.349 -2020-10-15 07:45:00,121.11,117.48700000000001,73.617,31.349 -2020-10-15 08:00:00,118.19,116.01,69.281,31.349 -2020-10-15 08:15:00,117.96,115.90899999999999,69.281,31.349 -2020-10-15 08:30:00,122.14,113.867,69.281,31.349 -2020-10-15 08:45:00,122.14,112.792,69.281,31.349 -2020-10-15 09:00:00,120.75,108.12799999999999,63.926,31.349 -2020-10-15 09:15:00,121.83,105.895,63.926,31.349 -2020-10-15 09:30:00,123.0,106.12700000000001,63.926,31.349 -2020-10-15 09:45:00,123.77,105.677,63.926,31.349 -2020-10-15 10:00:00,117.9,102.385,59.442,31.349 -2020-10-15 10:15:00,119.2,101.40299999999999,59.442,31.349 -2020-10-15 10:30:00,115.6,100.199,59.442,31.349 -2020-10-15 10:45:00,114.68,99.9,59.442,31.349 -2020-10-15 11:00:00,111.42,96.72399999999999,56.771,31.349 -2020-10-15 11:15:00,110.71,97.169,56.771,31.349 -2020-10-15 11:30:00,111.45,97.36399999999999,56.771,31.349 -2020-10-15 11:45:00,110.73,96.916,56.771,31.349 -2020-10-15 12:00:00,108.08,93.021,53.701,31.349 -2020-10-15 12:15:00,108.8,92.53399999999999,53.701,31.349 -2020-10-15 12:30:00,106.76,92.189,53.701,31.349 -2020-10-15 12:45:00,106.52,92.447,53.701,31.349 -2020-10-15 13:00:00,106.01,91.74600000000001,52.364,31.349 -2020-10-15 13:15:00,105.75,91.661,52.364,31.349 -2020-10-15 13:30:00,107.45,90.788,52.364,31.349 -2020-10-15 13:45:00,110.96,90.34899999999999,52.364,31.349 -2020-10-15 14:00:00,110.78,89.334,53.419,31.349 -2020-10-15 14:15:00,109.56,89.81299999999999,53.419,31.349 -2020-10-15 14:30:00,111.28,89.411,53.419,31.349 -2020-10-15 14:45:00,109.87,89.24700000000001,53.419,31.349 -2020-10-15 15:00:00,111.22,88.921,56.744,31.349 -2020-10-15 15:15:00,111.54,88.74600000000001,56.744,31.349 -2020-10-15 15:30:00,111.77,89.48200000000001,56.744,31.349 -2020-10-15 15:45:00,113.05,89.63799999999999,56.744,31.349 -2020-10-15 16:00:00,116.56,89.189,60.458,31.349 -2020-10-15 16:15:00,120.2,88.854,60.458,31.349 -2020-10-15 16:30:00,122.91,89.492,60.458,31.349 -2020-10-15 16:45:00,122.73,88.289,60.458,31.349 -2020-10-15 17:00:00,126.75,88.146,66.295,31.349 -2020-10-15 17:15:00,126.46,89.611,66.295,31.349 -2020-10-15 17:30:00,128.48,89.376,66.295,31.349 -2020-10-15 17:45:00,124.9,90.3,66.295,31.349 -2020-10-15 18:00:00,127.14,89.82,68.468,31.349 -2020-10-15 18:15:00,123.0,89.46700000000001,68.468,31.349 -2020-10-15 18:30:00,124.51,88.649,68.468,31.349 -2020-10-15 18:45:00,120.83,92.22,68.468,31.349 -2020-10-15 19:00:00,114.09,92.759,66.39399999999999,31.349 -2020-10-15 19:15:00,112.02,91.56299999999999,66.39399999999999,31.349 -2020-10-15 19:30:00,107.14,90.911,66.39399999999999,31.349 -2020-10-15 19:45:00,113.12,90.709,66.39399999999999,31.349 -2020-10-15 20:00:00,108.37,90.277,63.183,31.349 -2020-10-15 20:15:00,108.7,87.98200000000001,63.183,31.349 -2020-10-15 20:30:00,99.66,86.8,63.183,31.349 -2020-10-15 20:45:00,101.56,85.389,63.183,31.349 -2020-10-15 21:00:00,93.27,83.387,55.133,31.349 -2020-10-15 21:15:00,93.41,83.809,55.133,31.349 -2020-10-15 21:30:00,93.15,83.053,55.133,31.349 -2020-10-15 21:45:00,94.83,81.067,55.133,31.349 -2020-10-15 22:00:00,90.93,78.02,50.111999999999995,31.349 -2020-10-15 22:15:00,84.87,75.54899999999999,50.111999999999995,31.349 -2020-10-15 22:30:00,80.83,65.3,50.111999999999995,31.349 -2020-10-15 22:45:00,85.9,60.198,50.111999999999995,31.349 -2020-10-15 23:00:00,83.4,55.809,44.536,31.349 -2020-10-15 23:15:00,83.04,55.11600000000001,44.536,31.349 -2020-10-15 23:30:00,78.5,54.603,44.536,31.349 -2020-10-15 23:45:00,78.94,54.5,44.536,31.349 -2020-10-16 00:00:00,78.53,56.543,42.291000000000004,31.349 -2020-10-16 00:15:00,80.34,58.228,42.291000000000004,31.349 -2020-10-16 00:30:00,75.11,57.871,42.291000000000004,31.349 -2020-10-16 00:45:00,78.3,57.95399999999999,42.291000000000004,31.349 -2020-10-16 01:00:00,77.43,58.34,41.008,31.349 -2020-10-16 01:15:00,79.28,57.986000000000004,41.008,31.349 -2020-10-16 01:30:00,77.29,57.566,41.008,31.349 -2020-10-16 01:45:00,76.13,57.258,41.008,31.349 -2020-10-16 02:00:00,78.43,58.57,39.521,31.349 -2020-10-16 02:15:00,78.48,58.61600000000001,39.521,31.349 -2020-10-16 02:30:00,76.3,59.912,39.521,31.349 -2020-10-16 02:45:00,72.93,60.25899999999999,39.521,31.349 -2020-10-16 03:00:00,75.99,62.902,39.812,31.349 -2020-10-16 03:15:00,78.35,63.992,39.812,31.349 -2020-10-16 03:30:00,83.32,64.1,39.812,31.349 -2020-10-16 03:45:00,87.67,65.527,39.812,31.349 -2020-10-16 04:00:00,86.71,75.56,41.22,31.349 -2020-10-16 04:15:00,87.83,84.14,41.22,31.349 -2020-10-16 04:30:00,93.37,84.585,41.22,31.349 -2020-10-16 04:45:00,97.81,85.63799999999999,41.22,31.349 -2020-10-16 05:00:00,105.43,113.375,45.115,31.349 -2020-10-16 05:15:00,108.97,139.797,45.115,31.349 -2020-10-16 05:30:00,110.44,134.631,45.115,31.349 -2020-10-16 05:45:00,116.33,125.77,45.115,31.349 -2020-10-16 06:00:00,121.67,125.60799999999999,59.06100000000001,31.349 -2020-10-16 06:15:00,121.67,129.158,59.06100000000001,31.349 -2020-10-16 06:30:00,123.2,127.425,59.06100000000001,31.349 -2020-10-16 06:45:00,125.24,128.667,59.06100000000001,31.349 -2020-10-16 07:00:00,129.04,129.357,71.874,31.349 -2020-10-16 07:15:00,129.43,132.971,71.874,31.349 -2020-10-16 07:30:00,129.86,132.234,71.874,31.349 -2020-10-16 07:45:00,129.09,131.789,71.874,31.349 -2020-10-16 08:00:00,129.38,131.43,68.439,31.349 -2020-10-16 08:15:00,130.59,131.24200000000002,68.439,31.349 -2020-10-16 08:30:00,135.1,129.144,68.439,31.349 -2020-10-16 08:45:00,135.29,126.51,68.439,31.349 -2020-10-16 09:00:00,133.1,121.61399999999999,65.523,31.349 -2020-10-16 09:15:00,134.37,120.37200000000001,65.523,31.349 -2020-10-16 09:30:00,133.1,119.85799999999999,65.523,31.349 -2020-10-16 09:45:00,136.75,119.541,65.523,31.349 -2020-10-16 10:00:00,133.64,115.68799999999999,62.005,31.349 -2020-10-16 10:15:00,134.38,115.005,62.005,31.349 -2020-10-16 10:30:00,133.95,113.708,62.005,31.349 -2020-10-16 10:45:00,134.02,113.04,62.005,31.349 -2020-10-16 11:00:00,132.18,109.76799999999999,60.351000000000006,31.349 -2020-10-16 11:15:00,131.6,109.25299999999999,60.351000000000006,31.349 -2020-10-16 11:30:00,132.82,110.32799999999999,60.351000000000006,31.349 -2020-10-16 11:45:00,132.96,110.382,60.351000000000006,31.349 -2020-10-16 12:00:00,127.23,107.589,55.331,31.349 -2020-10-16 12:15:00,125.71,105.316,55.331,31.349 -2020-10-16 12:30:00,122.7,105.105,55.331,31.349 -2020-10-16 12:45:00,120.88,105.475,55.331,31.349 -2020-10-16 13:00:00,119.13,106.29700000000001,53.361999999999995,31.349 -2020-10-16 13:15:00,118.48,106.384,53.361999999999995,31.349 -2020-10-16 13:30:00,117.76,105.999,53.361999999999995,31.349 -2020-10-16 13:45:00,117.81,105.741,53.361999999999995,31.349 -2020-10-16 14:00:00,116.71,104.645,51.708,31.349 -2020-10-16 14:15:00,115.79,104.56,51.708,31.349 -2020-10-16 14:30:00,116.75,104.74799999999999,51.708,31.349 -2020-10-16 14:45:00,114.09,104.55,51.708,31.349 -2020-10-16 15:00:00,111.63,103.62700000000001,54.571000000000005,31.349 -2020-10-16 15:15:00,111.74,103.186,54.571000000000005,31.349 -2020-10-16 15:30:00,111.8,102.095,54.571000000000005,31.349 -2020-10-16 15:45:00,112.85,102.43700000000001,54.571000000000005,31.349 -2020-10-16 16:00:00,116.73,102.41799999999999,58.662,31.349 -2020-10-16 16:15:00,115.35,103.176,58.662,31.349 -2020-10-16 16:30:00,120.57,103.56,58.662,31.349 -2020-10-16 16:45:00,121.41,101.693,58.662,31.349 -2020-10-16 17:00:00,125.43,103.272,65.941,31.349 -2020-10-16 17:15:00,124.15,103.835,65.941,31.349 -2020-10-16 17:30:00,126.8,103.678,65.941,31.349 -2020-10-16 17:45:00,124.08,103.572,65.941,31.349 -2020-10-16 18:00:00,125.15,105.102,65.628,31.349 -2020-10-16 18:15:00,120.47,104.225,65.628,31.349 -2020-10-16 18:30:00,119.06,103.037,65.628,31.349 -2020-10-16 18:45:00,118.12,106.52799999999999,65.628,31.349 -2020-10-16 19:00:00,111.76,108.321,63.662,31.349 -2020-10-16 19:15:00,108.6,107.913,63.662,31.349 -2020-10-16 19:30:00,107.6,106.984,63.662,31.349 -2020-10-16 19:45:00,105.8,105.885,63.662,31.349 -2020-10-16 20:00:00,105.65,102.874,61.945,31.349 -2020-10-16 20:15:00,104.08,100.425,61.945,31.349 -2020-10-16 20:30:00,97.94,99.93700000000001,61.945,31.349 -2020-10-16 20:45:00,91.95,98.415,61.945,31.349 -2020-10-16 21:00:00,89.11,95.71700000000001,53.903,31.349 -2020-10-16 21:15:00,85.85,96.61399999999999,53.903,31.349 -2020-10-16 21:30:00,82.94,95.831,53.903,31.349 -2020-10-16 21:45:00,80.74,93.97200000000001,53.903,31.349 -2020-10-16 22:00:00,77.43,89.986,48.403999999999996,31.349 -2020-10-16 22:15:00,76.58,86.50399999999999,48.403999999999996,31.349 -2020-10-16 22:30:00,73.82,80.395,48.403999999999996,31.349 -2020-10-16 22:45:00,73.45,76.143,48.403999999999996,31.349 -2020-10-16 23:00:00,75.53,70.91199999999999,41.07,31.349 -2020-10-16 23:15:00,75.35,69.029,41.07,31.349 -2020-10-16 23:30:00,75.46,66.437,41.07,31.349 -2020-10-16 23:45:00,67.11,66.324,41.07,31.349 -2020-10-17 00:00:00,64.47,56.047,38.989000000000004,31.177 -2020-10-17 00:15:00,67.85,55.284,38.989000000000004,31.177 -2020-10-17 00:30:00,69.98,55.373000000000005,38.989000000000004,31.177 -2020-10-17 00:45:00,71.35,55.461000000000006,38.989000000000004,31.177 -2020-10-17 01:00:00,65.24,56.316,35.275,31.177 -2020-10-17 01:15:00,64.34,55.773999999999994,35.275,31.177 -2020-10-17 01:30:00,64.87,54.731,35.275,31.177 -2020-10-17 01:45:00,69.92,54.907,35.275,31.177 -2020-10-17 02:00:00,67.08,56.114,32.838,31.177 -2020-10-17 02:15:00,64.62,55.611999999999995,32.838,31.177 -2020-10-17 02:30:00,62.67,55.968,32.838,31.177 -2020-10-17 02:45:00,62.07,56.736999999999995,32.838,31.177 -2020-10-17 03:00:00,61.8,59.028999999999996,32.418,31.177 -2020-10-17 03:15:00,61.68,59.211999999999996,32.418,31.177 -2020-10-17 03:30:00,62.25,58.705,32.418,31.177 -2020-10-17 03:45:00,62.17,60.88399999999999,32.418,31.177 -2020-10-17 04:00:00,63.27,68.046,32.099000000000004,31.177 -2020-10-17 04:15:00,63.3,74.992,32.099000000000004,31.177 -2020-10-17 04:30:00,63.92,73.575,32.099000000000004,31.177 -2020-10-17 04:45:00,65.08,74.53,32.099000000000004,31.177 -2020-10-17 05:00:00,68.03,90.771,32.926,31.177 -2020-10-17 05:15:00,68.43,102.831,32.926,31.177 -2020-10-17 05:30:00,69.72,98.57600000000001,32.926,31.177 -2020-10-17 05:45:00,72.43,94.47,32.926,31.177 -2020-10-17 06:00:00,75.18,108.464,35.069,31.177 -2020-10-17 06:15:00,75.93,123.736,35.069,31.177 -2020-10-17 06:30:00,77.23,118.042,35.069,31.177 -2020-10-17 06:45:00,80.22,113.37700000000001,35.069,31.177 -2020-10-17 07:00:00,83.39,111.169,40.906,31.177 -2020-10-17 07:15:00,84.09,113.566,40.906,31.177 -2020-10-17 07:30:00,85.78,114.92299999999999,40.906,31.177 -2020-10-17 07:45:00,87.06,116.913,40.906,31.177 -2020-10-17 08:00:00,87.85,118.645,46.603,31.177 -2020-10-17 08:15:00,88.48,120.234,46.603,31.177 -2020-10-17 08:30:00,88.17,118.999,46.603,31.177 -2020-10-17 08:45:00,89.51,118.406,46.603,31.177 -2020-10-17 09:00:00,88.81,115.679,49.935,31.177 -2020-10-17 09:15:00,91.01,115.045,49.935,31.177 -2020-10-17 09:30:00,92.06,115.214,49.935,31.177 -2020-10-17 09:45:00,91.72,114.764,49.935,31.177 -2020-10-17 10:00:00,86.24,111.156,47.585,31.177 -2020-10-17 10:15:00,83.34,110.669,47.585,31.177 -2020-10-17 10:30:00,82.45,109.304,47.585,31.177 -2020-10-17 10:45:00,81.32,109.196,47.585,31.177 -2020-10-17 11:00:00,79.02,105.931,43.376999999999995,31.177 -2020-10-17 11:15:00,79.49,105.35600000000001,43.376999999999995,31.177 -2020-10-17 11:30:00,76.81,105.913,43.376999999999995,31.177 -2020-10-17 11:45:00,81.02,105.679,43.376999999999995,31.177 -2020-10-17 12:00:00,75.69,102.375,40.855,31.177 -2020-10-17 12:15:00,78.67,100.795,40.855,31.177 -2020-10-17 12:30:00,77.84,100.75200000000001,40.855,31.177 -2020-10-17 12:45:00,75.43,100.959,40.855,31.177 -2020-10-17 13:00:00,74.06,101.12700000000001,37.251,31.177 -2020-10-17 13:15:00,75.51,99.822,37.251,31.177 -2020-10-17 13:30:00,76.5,99.24700000000001,37.251,31.177 -2020-10-17 13:45:00,76.49,98.74799999999999,37.251,31.177 -2020-10-17 14:00:00,73.63,98.32,38.548,31.177 -2020-10-17 14:15:00,76.38,97.464,38.548,31.177 -2020-10-17 14:30:00,77.84,96.46700000000001,38.548,31.177 -2020-10-17 14:45:00,80.65,96.57700000000001,38.548,31.177 -2020-10-17 15:00:00,81.45,96.179,42.883,31.177 -2020-10-17 15:15:00,81.41,96.49600000000001,42.883,31.177 -2020-10-17 15:30:00,83.3,96.42,42.883,31.177 -2020-10-17 15:45:00,84.57,96.435,42.883,31.177 -2020-10-17 16:00:00,85.25,96.794,48.143,31.177 -2020-10-17 16:15:00,84.79,97.71600000000001,48.143,31.177 -2020-10-17 16:30:00,86.19,98.15799999999999,48.143,31.177 -2020-10-17 16:45:00,89.26,96.83,48.143,31.177 -2020-10-17 17:00:00,95.62,97.73299999999999,55.25,31.177 -2020-10-17 17:15:00,96.78,98.31700000000001,55.25,31.177 -2020-10-17 17:30:00,101.35,98.053,55.25,31.177 -2020-10-17 17:45:00,99.12,97.947,55.25,31.177 -2020-10-17 18:00:00,101.19,99.876,57.506,31.177 -2020-10-17 18:15:00,98.31,100.652,57.506,31.177 -2020-10-17 18:30:00,99.49,100.771,57.506,31.177 -2020-10-17 18:45:00,95.84,100.971,57.506,31.177 -2020-10-17 19:00:00,89.41,102.62799999999999,55.528999999999996,31.177 -2020-10-17 19:15:00,87.46,101.51,55.528999999999996,31.177 -2020-10-17 19:30:00,85.9,101.3,55.528999999999996,31.177 -2020-10-17 19:45:00,84.72,100.851,55.528999999999996,31.177 -2020-10-17 20:00:00,80.41,99.40299999999999,46.166000000000004,31.177 -2020-10-17 20:15:00,80.37,97.781,46.166000000000004,31.177 -2020-10-17 20:30:00,79.26,96.693,46.166000000000004,31.177 -2020-10-17 20:45:00,77.14,95.757,46.166000000000004,31.177 -2020-10-17 21:00:00,73.18,93.601,40.406,31.177 -2020-10-17 21:15:00,72.29,94.561,40.406,31.177 -2020-10-17 21:30:00,70.67,94.51,40.406,31.177 -2020-10-17 21:45:00,69.52,92.175,40.406,31.177 -2020-10-17 22:00:00,66.37,88.87700000000001,39.616,31.177 -2020-10-17 22:15:00,65.35,86.779,39.616,31.177 -2020-10-17 22:30:00,63.44,83.772,39.616,31.177 -2020-10-17 22:45:00,62.35,80.665,39.616,31.177 -2020-10-17 23:00:00,58.53,76.434,32.205,31.177 -2020-10-17 23:15:00,56.67,73.855,32.205,31.177 -2020-10-17 23:30:00,56.68,71.44,32.205,31.177 -2020-10-17 23:45:00,56.38,70.208,32.205,31.177 -2020-10-18 00:00:00,52.9,57.243,28.229,31.177 -2020-10-18 00:15:00,53.22,55.765,28.229,31.177 -2020-10-18 00:30:00,52.88,55.606,28.229,31.177 -2020-10-18 00:45:00,53.61,55.98,28.229,31.177 -2020-10-18 01:00:00,51.32,56.903999999999996,25.669,31.177 -2020-10-18 01:15:00,52.64,56.831,25.669,31.177 -2020-10-18 01:30:00,51.62,55.996,25.669,31.177 -2020-10-18 01:45:00,51.85,55.832,25.669,31.177 -2020-10-18 02:00:00,51.91,56.717,24.948,31.177 -2020-10-18 02:15:00,52.54,56.151,24.948,31.177 -2020-10-18 02:30:00,52.65,56.998000000000005,24.948,31.177 -2020-10-18 02:45:00,52.06,57.849,24.948,31.177 -2020-10-18 03:00:00,51.53,60.59,24.445,31.177 -2020-10-18 03:15:00,52.25,60.667,24.445,31.177 -2020-10-18 03:30:00,52.4,60.486999999999995,24.445,31.177 -2020-10-18 03:45:00,52.91,62.228,24.445,31.177 -2020-10-18 04:00:00,54.69,69.267,25.839000000000002,31.177 -2020-10-18 04:15:00,55.62,75.545,25.839000000000002,31.177 -2020-10-18 04:30:00,56.31,74.807,25.839000000000002,31.177 -2020-10-18 04:45:00,56.9,75.675,25.839000000000002,31.177 -2020-10-18 05:00:00,58.65,90.402,26.803,31.177 -2020-10-18 05:15:00,58.63,101.00399999999999,26.803,31.177 -2020-10-18 05:30:00,59.14,96.463,26.803,31.177 -2020-10-18 05:45:00,57.88,92.30799999999999,26.803,31.177 -2020-10-18 06:00:00,62.76,105.06200000000001,28.147,31.177 -2020-10-18 06:15:00,63.62,119.914,28.147,31.177 -2020-10-18 06:30:00,63.69,113.374,28.147,31.177 -2020-10-18 06:45:00,65.7,107.73,28.147,31.177 -2020-10-18 07:00:00,70.03,106.82,31.116,31.177 -2020-10-18 07:15:00,71.46,108.045,31.116,31.177 -2020-10-18 07:30:00,71.58,109.411,31.116,31.177 -2020-10-18 07:45:00,72.74,111.01,31.116,31.177 -2020-10-18 08:00:00,71.27,113.97399999999999,35.739000000000004,31.177 -2020-10-18 08:15:00,71.83,116.021,35.739000000000004,31.177 -2020-10-18 08:30:00,71.64,116.059,35.739000000000004,31.177 -2020-10-18 08:45:00,73.24,116.448,35.739000000000004,31.177 -2020-10-18 09:00:00,73.13,113.434,39.455999999999996,31.177 -2020-10-18 09:15:00,75.2,112.875,39.455999999999996,31.177 -2020-10-18 09:30:00,75.81,113.135,39.455999999999996,31.177 -2020-10-18 09:45:00,78.43,113.03299999999999,39.455999999999996,31.177 -2020-10-18 10:00:00,74.81,110.97200000000001,41.343999999999994,31.177 -2020-10-18 10:15:00,75.06,110.79299999999999,41.343999999999994,31.177 -2020-10-18 10:30:00,75.48,109.82700000000001,41.343999999999994,31.177 -2020-10-18 10:45:00,76.1,109.087,41.343999999999994,31.177 -2020-10-18 11:00:00,75.4,106.171,43.645,31.177 -2020-10-18 11:15:00,70.54,105.47,43.645,31.177 -2020-10-18 11:30:00,68.91,105.75200000000001,43.645,31.177 -2020-10-18 11:45:00,69.28,105.943,43.645,31.177 -2020-10-18 12:00:00,69.75,102.689,39.796,31.177 -2020-10-18 12:15:00,67.11,101.93700000000001,39.796,31.177 -2020-10-18 12:30:00,67.36,101.18799999999999,39.796,31.177 -2020-10-18 12:45:00,69.13,100.594,39.796,31.177 -2020-10-18 13:00:00,64.24,100.186,36.343,31.177 -2020-10-18 13:15:00,62.42,100.39,36.343,31.177 -2020-10-18 13:30:00,63.26,99.26299999999999,36.343,31.177 -2020-10-18 13:45:00,63.85,98.81700000000001,36.343,31.177 -2020-10-18 14:00:00,61.41,98.94,33.162,31.177 -2020-10-18 14:15:00,61.03,98.955,33.162,31.177 -2020-10-18 14:30:00,62.69,98.22399999999999,33.162,31.177 -2020-10-18 14:45:00,64.11,97.681,33.162,31.177 -2020-10-18 15:00:00,66.4,96.44,33.215,31.177 -2020-10-18 15:15:00,66.52,96.898,33.215,31.177 -2020-10-18 15:30:00,68.51,97.12799999999999,33.215,31.177 -2020-10-18 15:45:00,71.34,97.664,33.215,31.177 -2020-10-18 16:00:00,75.08,98.287,37.385999999999996,31.177 -2020-10-18 16:15:00,76.81,98.823,37.385999999999996,31.177 -2020-10-18 16:30:00,79.34,99.815,37.385999999999996,31.177 -2020-10-18 16:45:00,83.18,98.639,37.385999999999996,31.177 -2020-10-18 17:00:00,89.98,99.574,46.618,31.177 -2020-10-18 17:15:00,92.24,100.639,46.618,31.177 -2020-10-18 17:30:00,94.57,100.874,46.618,31.177 -2020-10-18 17:45:00,94.81,102.181,46.618,31.177 -2020-10-18 18:00:00,98.0,104.02799999999999,50.111000000000004,31.177 -2020-10-18 18:15:00,94.97,105.304,50.111000000000004,31.177 -2020-10-18 18:30:00,93.21,104.22200000000001,50.111000000000004,31.177 -2020-10-18 18:45:00,91.12,105.446,50.111000000000004,31.177 -2020-10-18 19:00:00,88.83,107.86,50.25,31.177 -2020-10-18 19:15:00,92.4,106.557,50.25,31.177 -2020-10-18 19:30:00,93.45,106.14,50.25,31.177 -2020-10-18 19:45:00,92.2,106.221,50.25,31.177 -2020-10-18 20:00:00,82.79,104.83200000000001,44.265,31.177 -2020-10-18 20:15:00,85.44,103.654,44.265,31.177 -2020-10-18 20:30:00,87.59,103.538,44.265,31.177 -2020-10-18 20:45:00,91.02,101.215,44.265,31.177 -2020-10-18 21:00:00,88.07,97.631,39.717,31.177 -2020-10-18 21:15:00,83.42,98.124,39.717,31.177 -2020-10-18 21:30:00,80.07,97.94200000000001,39.717,31.177 -2020-10-18 21:45:00,83.72,95.816,39.717,31.177 -2020-10-18 22:00:00,81.94,92.81299999999999,39.224000000000004,31.177 -2020-10-18 22:15:00,82.38,89.552,39.224000000000004,31.177 -2020-10-18 22:30:00,77.0,84.719,39.224000000000004,31.177 -2020-10-18 22:45:00,77.52,80.611,39.224000000000004,31.177 -2020-10-18 23:00:00,75.69,74.82,33.518,31.177 -2020-10-18 23:15:00,75.04,73.737,33.518,31.177 -2020-10-18 23:30:00,72.22,71.502,33.518,31.177 -2020-10-18 23:45:00,70.95,70.789,33.518,31.177 -2020-10-19 00:00:00,72.57,60.35,34.301,31.349 -2020-10-19 00:15:00,72.05,60.687,34.301,31.349 -2020-10-19 00:30:00,71.7,60.415,34.301,31.349 -2020-10-19 00:45:00,68.05,60.333999999999996,34.301,31.349 -2020-10-19 01:00:00,63.81,61.445,34.143,31.349 -2020-10-19 01:15:00,70.57,61.14,34.143,31.349 -2020-10-19 01:30:00,73.46,60.521,34.143,31.349 -2020-10-19 01:45:00,73.96,60.363,34.143,31.349 -2020-10-19 02:00:00,69.68,61.452,33.650999999999996,31.349 -2020-10-19 02:15:00,71.16,61.118,33.650999999999996,31.349 -2020-10-19 02:30:00,74.31,62.191,33.650999999999996,31.349 -2020-10-19 02:45:00,75.73,62.668,33.650999999999996,31.349 -2020-10-19 03:00:00,74.19,66.23100000000001,32.599000000000004,31.349 -2020-10-19 03:15:00,76.4,67.46600000000001,32.599000000000004,31.349 -2020-10-19 03:30:00,80.44,67.487,32.599000000000004,31.349 -2020-10-19 03:45:00,82.75,68.72399999999999,32.599000000000004,31.349 -2020-10-19 04:00:00,83.01,79.33800000000001,33.785,31.349 -2020-10-19 04:15:00,86.46,89.04,33.785,31.349 -2020-10-19 04:30:00,93.16,89.11200000000001,33.785,31.349 -2020-10-19 04:45:00,99.61,90.245,33.785,31.349 -2020-10-19 05:00:00,103.97,115.891,41.285,31.349 -2020-10-19 05:15:00,106.86,141.102,41.285,31.349 -2020-10-19 05:30:00,111.68,135.92700000000002,41.285,31.349 -2020-10-19 05:45:00,123.4,127.571,41.285,31.349 -2020-10-19 06:00:00,130.7,127.085,60.486000000000004,31.349 -2020-10-19 06:15:00,123.9,130.441,60.486000000000004,31.349 -2020-10-19 06:30:00,124.3,129.692,60.486000000000004,31.349 -2020-10-19 06:45:00,125.37,130.83,60.486000000000004,31.349 -2020-10-19 07:00:00,128.39,131.643,74.012,31.349 -2020-10-19 07:15:00,126.92,134.558,74.012,31.349 -2020-10-19 07:30:00,124.7,135.17,74.012,31.349 -2020-10-19 07:45:00,123.89,135.63299999999998,74.012,31.349 -2020-10-19 08:00:00,122.1,135.503,69.569,31.349 -2020-10-19 08:15:00,120.91,135.888,69.569,31.349 -2020-10-19 08:30:00,123.72,133.418,69.569,31.349 -2020-10-19 08:45:00,126.6,132.155,69.569,31.349 -2020-10-19 09:00:00,123.28,128.308,66.152,31.349 -2020-10-19 09:15:00,122.26,125.132,66.152,31.349 -2020-10-19 09:30:00,120.9,124.45,66.152,31.349 -2020-10-19 09:45:00,122.7,123.491,66.152,31.349 -2020-10-19 10:00:00,123.26,121.242,62.923,31.349 -2020-10-19 10:15:00,123.92,120.78200000000001,62.923,31.349 -2020-10-19 10:30:00,124.65,119.12799999999999,62.923,31.349 -2020-10-19 10:45:00,121.74,118.13,62.923,31.349 -2020-10-19 11:00:00,111.45,113.977,61.522,31.349 -2020-10-19 11:15:00,111.72,114.376,61.522,31.349 -2020-10-19 11:30:00,111.64,115.708,61.522,31.349 -2020-10-19 11:45:00,114.51,115.85799999999999,61.522,31.349 -2020-10-19 12:00:00,109.18,113.042,58.632,31.349 -2020-10-19 12:15:00,109.27,112.32799999999999,58.632,31.349 -2020-10-19 12:30:00,119.09,111.34,58.632,31.349 -2020-10-19 12:45:00,120.49,111.61399999999999,58.632,31.349 -2020-10-19 13:00:00,121.81,111.93299999999999,59.06,31.349 -2020-10-19 13:15:00,123.36,111.008,59.06,31.349 -2020-10-19 13:30:00,124.18,109.641,59.06,31.349 -2020-10-19 13:45:00,123.73,109.555,59.06,31.349 -2020-10-19 14:00:00,128.78,108.941,59.791000000000004,31.349 -2020-10-19 14:15:00,127.05,108.83,59.791000000000004,31.349 -2020-10-19 14:30:00,122.62,107.762,59.791000000000004,31.349 -2020-10-19 14:45:00,122.32,107.991,59.791000000000004,31.349 -2020-10-19 15:00:00,121.8,107.624,61.148,31.349 -2020-10-19 15:15:00,124.23,107.045,61.148,31.349 -2020-10-19 15:30:00,120.17,107.131,61.148,31.349 -2020-10-19 15:45:00,122.07,107.24,61.148,31.349 -2020-10-19 16:00:00,125.4,108.13600000000001,66.009,31.349 -2020-10-19 16:15:00,122.23,108.296,66.009,31.349 -2020-10-19 16:30:00,123.96,108.48,66.009,31.349 -2020-10-19 16:45:00,124.66,106.705,66.009,31.349 -2020-10-19 17:00:00,132.19,106.90799999999999,73.683,31.349 -2020-10-19 17:15:00,128.75,107.635,73.683,31.349 -2020-10-19 17:30:00,131.94,107.412,73.683,31.349 -2020-10-19 17:45:00,128.27,107.76,73.683,31.349 -2020-10-19 18:00:00,132.72,109.30799999999999,72.848,31.349 -2020-10-19 18:15:00,126.09,108.596,72.848,31.349 -2020-10-19 18:30:00,127.58,107.54700000000001,72.848,31.349 -2020-10-19 18:45:00,123.85,110.50200000000001,72.848,31.349 -2020-10-19 19:00:00,120.43,111.916,71.139,31.349 -2020-10-19 19:15:00,112.13,110.569,71.139,31.349 -2020-10-19 19:30:00,108.57,110.238,71.139,31.349 -2020-10-19 19:45:00,108.74,109.59,71.139,31.349 -2020-10-19 20:00:00,106.01,106.426,69.667,31.349 -2020-10-19 20:15:00,109.28,104.56700000000001,69.667,31.349 -2020-10-19 20:30:00,106.18,103.68299999999999,69.667,31.349 -2020-10-19 20:45:00,100.16,102.28200000000001,69.667,31.349 -2020-10-19 21:00:00,94.21,98.705,61.166000000000004,31.349 -2020-10-19 21:15:00,95.43,98.78,61.166000000000004,31.349 -2020-10-19 21:30:00,96.14,98.366,61.166000000000004,31.349 -2020-10-19 21:45:00,94.59,95.859,61.166000000000004,31.349 -2020-10-19 22:00:00,89.3,90.444,52.772,31.349 -2020-10-19 22:15:00,84.72,87.365,52.772,31.349 -2020-10-19 22:30:00,86.82,75.70100000000001,52.772,31.349 -2020-10-19 22:45:00,86.53,69.094,52.772,31.349 -2020-10-19 23:00:00,81.21,63.718,45.136,31.349 -2020-10-19 23:15:00,79.44,63.248999999999995,45.136,31.349 -2020-10-19 23:30:00,81.27,62.427,45.136,31.349 -2020-10-19 23:45:00,78.67,62.832,45.136,31.349 -2020-10-20 00:00:00,75.94,59.277,47.35,31.349 -2020-10-20 00:15:00,72.26,60.708999999999996,47.35,31.349 -2020-10-20 00:30:00,77.13,60.317,47.35,31.349 -2020-10-20 00:45:00,79.34,60.123999999999995,47.35,31.349 -2020-10-20 01:00:00,76.83,60.9,43.424,31.349 -2020-10-20 01:15:00,74.74,60.449,43.424,31.349 -2020-10-20 01:30:00,77.46,59.869,43.424,31.349 -2020-10-20 01:45:00,79.29,59.611999999999995,43.424,31.349 -2020-10-20 02:00:00,74.21,60.479,41.778999999999996,31.349 -2020-10-20 02:15:00,72.87,60.657,41.778999999999996,31.349 -2020-10-20 02:30:00,80.67,61.238,41.778999999999996,31.349 -2020-10-20 02:45:00,80.69,61.875,41.778999999999996,31.349 -2020-10-20 03:00:00,84.16,64.58,40.771,31.349 -2020-10-20 03:15:00,76.84,65.876,40.771,31.349 -2020-10-20 03:30:00,81.98,66.119,40.771,31.349 -2020-10-20 03:45:00,85.52,66.896,40.771,31.349 -2020-10-20 04:00:00,88.83,76.83,41.816,31.349 -2020-10-20 04:15:00,86.61,86.4,41.816,31.349 -2020-10-20 04:30:00,89.0,86.262,41.816,31.349 -2020-10-20 04:45:00,93.57,88.22,41.816,31.349 -2020-10-20 05:00:00,103.8,117.08200000000001,45.842,31.349 -2020-10-20 05:15:00,114.96,142.561,45.842,31.349 -2020-10-20 05:30:00,119.33,136.741,45.842,31.349 -2020-10-20 05:45:00,118.64,127.999,45.842,31.349 -2020-10-20 06:00:00,120.99,127.436,59.12,31.349 -2020-10-20 06:15:00,123.0,131.688,59.12,31.349 -2020-10-20 06:30:00,124.14,130.493,59.12,31.349 -2020-10-20 06:45:00,126.4,131.034,59.12,31.349 -2020-10-20 07:00:00,128.62,131.822,70.33,31.349 -2020-10-20 07:15:00,126.71,134.554,70.33,31.349 -2020-10-20 07:30:00,126.14,134.931,70.33,31.349 -2020-10-20 07:45:00,125.14,135.055,70.33,31.349 -2020-10-20 08:00:00,124.17,134.97,67.788,31.349 -2020-10-20 08:15:00,128.23,134.60299999999998,67.788,31.349 -2020-10-20 08:30:00,129.26,132.143,67.788,31.349 -2020-10-20 08:45:00,129.38,130.308,67.788,31.349 -2020-10-20 09:00:00,127.86,126.161,62.622,31.349 -2020-10-20 09:15:00,129.76,123.774,62.622,31.349 -2020-10-20 09:30:00,128.95,123.736,62.622,31.349 -2020-10-20 09:45:00,129.62,123.212,62.622,31.349 -2020-10-20 10:00:00,130.0,120.056,60.887,31.349 -2020-10-20 10:15:00,130.9,118.914,60.887,31.349 -2020-10-20 10:30:00,130.71,117.34899999999999,60.887,31.349 -2020-10-20 10:45:00,129.56,116.9,60.887,31.349 -2020-10-20 11:00:00,126.57,113.57799999999999,59.812,31.349 -2020-10-20 11:15:00,127.65,113.931,59.812,31.349 -2020-10-20 11:30:00,129.33,114.149,59.812,31.349 -2020-10-20 11:45:00,128.71,114.49700000000001,59.812,31.349 -2020-10-20 12:00:00,126.55,110.807,56.614,31.349 -2020-10-20 12:15:00,128.41,109.98,56.614,31.349 -2020-10-20 12:30:00,126.5,109.773,56.614,31.349 -2020-10-20 12:45:00,126.79,110.145,56.614,31.349 -2020-10-20 13:00:00,125.27,110.044,56.824,31.349 -2020-10-20 13:15:00,127.5,109.61200000000001,56.824,31.349 -2020-10-20 13:30:00,127.16,108.911,56.824,31.349 -2020-10-20 13:45:00,125.66,108.56200000000001,56.824,31.349 -2020-10-20 14:00:00,126.58,108.228,57.623999999999995,31.349 -2020-10-20 14:15:00,125.58,108.148,57.623999999999995,31.349 -2020-10-20 14:30:00,125.54,107.60600000000001,57.623999999999995,31.349 -2020-10-20 14:45:00,124.61,107.48700000000001,57.623999999999995,31.349 -2020-10-20 15:00:00,124.48,106.787,59.724,31.349 -2020-10-20 15:15:00,125.53,106.771,59.724,31.349 -2020-10-20 15:30:00,122.51,106.945,59.724,31.349 -2020-10-20 15:45:00,123.47,106.96700000000001,59.724,31.349 -2020-10-20 16:00:00,124.86,107.792,61.64,31.349 -2020-10-20 16:15:00,126.88,108.274,61.64,31.349 -2020-10-20 16:30:00,127.79,108.666,61.64,31.349 -2020-10-20 16:45:00,130.62,107.39299999999999,61.64,31.349 -2020-10-20 17:00:00,132.63,107.946,68.962,31.349 -2020-10-20 17:15:00,134.24,108.882,68.962,31.349 -2020-10-20 17:30:00,132.03,108.838,68.962,31.349 -2020-10-20 17:45:00,129.1,108.991,68.962,31.349 -2020-10-20 18:00:00,128.24,110.06,69.149,31.349 -2020-10-20 18:15:00,127.87,109.694,69.149,31.349 -2020-10-20 18:30:00,123.22,108.37899999999999,69.149,31.349 -2020-10-20 18:45:00,124.82,111.66799999999999,69.149,31.349 -2020-10-20 19:00:00,115.2,112.62100000000001,68.832,31.349 -2020-10-20 19:15:00,110.22,111.197,68.832,31.349 -2020-10-20 19:30:00,108.41,110.40899999999999,68.832,31.349 -2020-10-20 19:45:00,104.68,109.90299999999999,68.832,31.349 -2020-10-20 20:00:00,101.56,107.01299999999999,66.403,31.349 -2020-10-20 20:15:00,101.65,104.178,66.403,31.349 -2020-10-20 20:30:00,100.36,103.81,66.403,31.349 -2020-10-20 20:45:00,100.6,102.27600000000001,66.403,31.349 -2020-10-20 21:00:00,91.23,98.71700000000001,57.352,31.349 -2020-10-20 21:15:00,90.92,98.59700000000001,57.352,31.349 -2020-10-20 21:30:00,88.27,97.89299999999999,57.352,31.349 -2020-10-20 21:45:00,86.17,95.569,57.352,31.349 -2020-10-20 22:00:00,81.6,91.111,51.148999999999994,31.349 -2020-10-20 22:15:00,80.06,87.729,51.148999999999994,31.349 -2020-10-20 22:30:00,78.33,76.27,51.148999999999994,31.349 -2020-10-20 22:45:00,77.72,69.81,51.148999999999994,31.349 -2020-10-20 23:00:00,75.14,64.126,41.8,31.349 -2020-10-20 23:15:00,72.31,63.852,41.8,31.349 -2020-10-20 23:30:00,72.2,62.843,41.8,31.349 -2020-10-20 23:45:00,70.69,63.091,41.8,31.349 -2020-10-21 00:00:00,69.76,59.614,42.269,31.349 -2020-10-21 00:15:00,70.51,61.033,42.269,31.349 -2020-10-21 00:30:00,68.91,60.648,42.269,31.349 -2020-10-21 00:45:00,70.39,60.449,42.269,31.349 -2020-10-21 01:00:00,68.96,61.236999999999995,38.527,31.349 -2020-10-21 01:15:00,69.7,60.805,38.527,31.349 -2020-10-21 01:30:00,66.77,60.242,38.527,31.349 -2020-10-21 01:45:00,69.61,59.981,38.527,31.349 -2020-10-21 02:00:00,69.44,60.858000000000004,36.393,31.349 -2020-10-21 02:15:00,70.57,61.048,36.393,31.349 -2020-10-21 02:30:00,70.25,61.61600000000001,36.393,31.349 -2020-10-21 02:45:00,70.99,62.246,36.393,31.349 -2020-10-21 03:00:00,72.78,64.939,36.167,31.349 -2020-10-21 03:15:00,73.7,66.257,36.167,31.349 -2020-10-21 03:30:00,74.4,66.502,36.167,31.349 -2020-10-21 03:45:00,74.06,67.263,36.167,31.349 -2020-10-21 04:00:00,80.73,77.21600000000001,38.092,31.349 -2020-10-21 04:15:00,83.23,86.816,38.092,31.349 -2020-10-21 04:30:00,94.46,86.675,38.092,31.349 -2020-10-21 04:45:00,98.59,88.64200000000001,38.092,31.349 -2020-10-21 05:00:00,105.32,117.571,42.268,31.349 -2020-10-21 05:15:00,106.7,143.113,42.268,31.349 -2020-10-21 05:30:00,113.14,137.283,42.268,31.349 -2020-10-21 05:45:00,116.18,128.509,42.268,31.349 -2020-10-21 06:00:00,122.3,127.931,60.158,31.349 -2020-10-21 06:15:00,125.24,132.197,60.158,31.349 -2020-10-21 06:30:00,128.18,131.024,60.158,31.349 -2020-10-21 06:45:00,129.46,131.575,60.158,31.349 -2020-10-21 07:00:00,132.09,132.361,74.792,31.349 -2020-10-21 07:15:00,133.19,135.106,74.792,31.349 -2020-10-21 07:30:00,135.44,135.514,74.792,31.349 -2020-10-21 07:45:00,133.65,135.642,74.792,31.349 -2020-10-21 08:00:00,132.41,135.57,70.499,31.349 -2020-10-21 08:15:00,134.22,135.18200000000002,70.499,31.349 -2020-10-21 08:30:00,134.75,132.749,70.499,31.349 -2020-10-21 08:45:00,134.77,130.888,70.499,31.349 -2020-10-21 09:00:00,135.22,126.735,68.892,31.349 -2020-10-21 09:15:00,136.3,124.346,68.892,31.349 -2020-10-21 09:30:00,138.43,124.294,68.892,31.349 -2020-10-21 09:45:00,138.85,123.74600000000001,68.892,31.349 -2020-10-21 10:00:00,138.15,120.583,66.88600000000001,31.349 -2020-10-21 10:15:00,138.15,119.40100000000001,66.88600000000001,31.349 -2020-10-21 10:30:00,137.96,117.815,66.88600000000001,31.349 -2020-10-21 10:45:00,135.02,117.351,66.88600000000001,31.349 -2020-10-21 11:00:00,131.3,114.03200000000001,66.187,31.349 -2020-10-21 11:15:00,131.26,114.366,66.187,31.349 -2020-10-21 11:30:00,131.11,114.583,66.187,31.349 -2020-10-21 11:45:00,132.59,114.916,66.187,31.349 -2020-10-21 12:00:00,129.61,111.206,62.18,31.349 -2020-10-21 12:15:00,129.87,110.37299999999999,62.18,31.349 -2020-10-21 12:30:00,128.91,110.20200000000001,62.18,31.349 -2020-10-21 12:45:00,128.14,110.572,62.18,31.349 -2020-10-21 13:00:00,124.86,110.43700000000001,62.23,31.349 -2020-10-21 13:15:00,121.86,110.012,62.23,31.349 -2020-10-21 13:30:00,123.13,109.31,62.23,31.349 -2020-10-21 13:45:00,120.42,108.958,62.23,31.349 -2020-10-21 14:00:00,118.39,108.573,63.721000000000004,31.349 -2020-10-21 14:15:00,120.77,108.508,63.721000000000004,31.349 -2020-10-21 14:30:00,121.85,108.00299999999999,63.721000000000004,31.349 -2020-10-21 14:45:00,121.34,107.882,63.721000000000004,31.349 -2020-10-21 15:00:00,118.71,107.161,66.523,31.349 -2020-10-21 15:15:00,118.61,107.163,66.523,31.349 -2020-10-21 15:30:00,118.37,107.37700000000001,66.523,31.349 -2020-10-21 15:45:00,117.66,107.412,66.523,31.349 -2020-10-21 16:00:00,117.97,108.20700000000001,69.679,31.349 -2020-10-21 16:15:00,119.99,108.711,69.679,31.349 -2020-10-21 16:30:00,122.09,109.101,69.679,31.349 -2020-10-21 16:45:00,123.57,107.87899999999999,69.679,31.349 -2020-10-21 17:00:00,130.15,108.39,75.04,31.349 -2020-10-21 17:15:00,128.12,109.345,75.04,31.349 -2020-10-21 17:30:00,132.36,109.304,75.04,31.349 -2020-10-21 17:45:00,129.08,109.47200000000001,75.04,31.349 -2020-10-21 18:00:00,130.24,110.53299999999999,75.915,31.349 -2020-10-21 18:15:00,127.7,110.141,75.915,31.349 -2020-10-21 18:30:00,127.89,108.836,75.915,31.349 -2020-10-21 18:45:00,123.32,112.119,75.915,31.349 -2020-10-21 19:00:00,118.23,113.083,74.66,31.349 -2020-10-21 19:15:00,113.94,111.652,74.66,31.349 -2020-10-21 19:30:00,110.24,110.85,74.66,31.349 -2020-10-21 19:45:00,109.15,110.32,74.66,31.349 -2020-10-21 20:00:00,103.44,107.45299999999999,71.204,31.349 -2020-10-21 20:15:00,104.11,104.609,71.204,31.349 -2020-10-21 20:30:00,104.78,104.212,71.204,31.349 -2020-10-21 20:45:00,105.75,102.661,71.204,31.349 -2020-10-21 21:00:00,100.72,99.09899999999999,61.052,31.349 -2020-10-21 21:15:00,95.64,98.96700000000001,61.052,31.349 -2020-10-21 21:30:00,91.76,98.273,61.052,31.349 -2020-10-21 21:45:00,95.11,95.929,61.052,31.349 -2020-10-21 22:00:00,91.39,91.464,54.691,31.349 -2020-10-21 22:15:00,87.48,88.06200000000001,54.691,31.349 -2020-10-21 22:30:00,84.33,76.632,54.691,31.349 -2020-10-21 22:45:00,85.24,70.179,54.691,31.349 -2020-10-21 23:00:00,81.86,64.51,45.18,31.349 -2020-10-21 23:15:00,83.34,64.208,45.18,31.349 -2020-10-21 23:30:00,79.08,63.201,45.18,31.349 -2020-10-21 23:45:00,78.07,63.438,45.18,31.349 -2020-10-22 00:00:00,78.96,59.951,42.746,31.349 -2020-10-22 00:15:00,80.34,61.357,42.746,31.349 -2020-10-22 00:30:00,76.75,60.979,42.746,31.349 -2020-10-22 00:45:00,74.47,60.773,42.746,31.349 -2020-10-22 01:00:00,74.08,61.575,40.025999999999996,31.349 -2020-10-22 01:15:00,78.96,61.161,40.025999999999996,31.349 -2020-10-22 01:30:00,78.92,60.614,40.025999999999996,31.349 -2020-10-22 01:45:00,72.66,60.349,40.025999999999996,31.349 -2020-10-22 02:00:00,72.85,61.236000000000004,38.154,31.349 -2020-10-22 02:15:00,72.18,61.438,38.154,31.349 -2020-10-22 02:30:00,80.12,61.99100000000001,38.154,31.349 -2020-10-22 02:45:00,80.24,62.618,38.154,31.349 -2020-10-22 03:00:00,77.98,65.297,37.575,31.349 -2020-10-22 03:15:00,77.21,66.63600000000001,37.575,31.349 -2020-10-22 03:30:00,76.58,66.88600000000001,37.575,31.349 -2020-10-22 03:45:00,81.48,67.62899999999999,37.575,31.349 -2020-10-22 04:00:00,90.01,77.601,39.154,31.349 -2020-10-22 04:15:00,92.44,87.23,39.154,31.349 -2020-10-22 04:30:00,87.34,87.086,39.154,31.349 -2020-10-22 04:45:00,93.79,89.06200000000001,39.154,31.349 -2020-10-22 05:00:00,105.64,118.059,44.085,31.349 -2020-10-22 05:15:00,114.87,143.665,44.085,31.349 -2020-10-22 05:30:00,114.7,137.82399999999998,44.085,31.349 -2020-10-22 05:45:00,113.54,129.018,44.085,31.349 -2020-10-22 06:00:00,122.12,128.42600000000002,57.49,31.349 -2020-10-22 06:15:00,124.14,132.705,57.49,31.349 -2020-10-22 06:30:00,127.55,131.553,57.49,31.349 -2020-10-22 06:45:00,128.59,132.114,57.49,31.349 -2020-10-22 07:00:00,132.08,132.9,73.617,31.349 -2020-10-22 07:15:00,132.26,135.658,73.617,31.349 -2020-10-22 07:30:00,133.23,136.096,73.617,31.349 -2020-10-22 07:45:00,133.61,136.227,73.617,31.349 -2020-10-22 08:00:00,133.59,136.168,69.281,31.349 -2020-10-22 08:15:00,133.94,135.75799999999998,69.281,31.349 -2020-10-22 08:30:00,133.56,133.351,69.281,31.349 -2020-10-22 08:45:00,134.29,131.466,69.281,31.349 -2020-10-22 09:00:00,132.11,127.307,63.926,31.349 -2020-10-22 09:15:00,134.27,124.915,63.926,31.349 -2020-10-22 09:30:00,133.85,124.851,63.926,31.349 -2020-10-22 09:45:00,133.96,124.27799999999999,63.926,31.349 -2020-10-22 10:00:00,131.38,121.10799999999999,59.442,31.349 -2020-10-22 10:15:00,133.21,119.88600000000001,59.442,31.349 -2020-10-22 10:30:00,132.9,118.28,59.442,31.349 -2020-10-22 10:45:00,132.11,117.79899999999999,59.442,31.349 -2020-10-22 11:00:00,127.4,114.485,56.771,31.349 -2020-10-22 11:15:00,129.2,114.801,56.771,31.349 -2020-10-22 11:30:00,127.65,115.016,56.771,31.349 -2020-10-22 11:45:00,125.62,115.334,56.771,31.349 -2020-10-22 12:00:00,123.46,111.602,53.701,31.349 -2020-10-22 12:15:00,124.88,110.765,53.701,31.349 -2020-10-22 12:30:00,119.09,110.62799999999999,53.701,31.349 -2020-10-22 12:45:00,120.14,110.99799999999999,53.701,31.349 -2020-10-22 13:00:00,122.1,110.82799999999999,52.364,31.349 -2020-10-22 13:15:00,123.26,110.411,52.364,31.349 -2020-10-22 13:30:00,124.34,109.709,52.364,31.349 -2020-10-22 13:45:00,124.93,109.353,52.364,31.349 -2020-10-22 14:00:00,128.1,108.916,53.419,31.349 -2020-10-22 14:15:00,124.78,108.868,53.419,31.349 -2020-10-22 14:30:00,123.07,108.398,53.419,31.349 -2020-10-22 14:45:00,119.7,108.27600000000001,53.419,31.349 -2020-10-22 15:00:00,121.74,107.53399999999999,56.744,31.349 -2020-10-22 15:15:00,119.68,107.554,56.744,31.349 -2020-10-22 15:30:00,119.77,107.806,56.744,31.349 -2020-10-22 15:45:00,118.01,107.85600000000001,56.744,31.349 -2020-10-22 16:00:00,123.58,108.62,60.458,31.349 -2020-10-22 16:15:00,123.95,109.146,60.458,31.349 -2020-10-22 16:30:00,124.24,109.53299999999999,60.458,31.349 -2020-10-22 16:45:00,126.61,108.363,60.458,31.349 -2020-10-22 17:00:00,132.29,108.83200000000001,66.295,31.349 -2020-10-22 17:15:00,131.4,109.807,66.295,31.349 -2020-10-22 17:30:00,130.67,109.76799999999999,66.295,31.349 -2020-10-22 17:45:00,130.55,109.95200000000001,66.295,31.349 -2020-10-22 18:00:00,130.07,111.006,68.468,31.349 -2020-10-22 18:15:00,127.24,110.588,68.468,31.349 -2020-10-22 18:30:00,126.24,109.292,68.468,31.349 -2020-10-22 18:45:00,124.94,112.571,68.468,31.349 -2020-10-22 19:00:00,116.69,113.544,66.39399999999999,31.349 -2020-10-22 19:15:00,113.13,112.10600000000001,66.39399999999999,31.349 -2020-10-22 19:30:00,109.94,111.291,66.39399999999999,31.349 -2020-10-22 19:45:00,109.01,110.73700000000001,66.39399999999999,31.349 -2020-10-22 20:00:00,106.55,107.891,63.183,31.349 -2020-10-22 20:15:00,110.78,105.039,63.183,31.349 -2020-10-22 20:30:00,109.45,104.61399999999999,63.183,31.349 -2020-10-22 20:45:00,102.93,103.04299999999999,63.183,31.349 -2020-10-22 21:00:00,95.75,99.479,55.133,31.349 -2020-10-22 21:15:00,94.53,99.337,55.133,31.349 -2020-10-22 21:30:00,91.45,98.652,55.133,31.349 -2020-10-22 21:45:00,96.05,96.286,55.133,31.349 -2020-10-22 22:00:00,89.93,91.816,50.111999999999995,31.349 -2020-10-22 22:15:00,88.13,88.395,50.111999999999995,31.349 -2020-10-22 22:30:00,89.13,76.995,50.111999999999995,31.349 -2020-10-22 22:45:00,89.9,70.547,50.111999999999995,31.349 -2020-10-22 23:00:00,83.75,64.893,44.536,31.349 -2020-10-22 23:15:00,78.07,64.564,44.536,31.349 -2020-10-22 23:30:00,80.56,63.558,44.536,31.349 -2020-10-22 23:45:00,82.63,63.785,44.536,31.349 -2020-10-23 00:00:00,78.83,58.907,42.291000000000004,31.349 -2020-10-23 00:15:00,76.14,60.5,42.291000000000004,31.349 -2020-10-23 00:30:00,70.38,60.188,42.291000000000004,31.349 -2020-10-23 00:45:00,78.33,60.231,42.291000000000004,31.349 -2020-10-23 01:00:00,77.49,60.708999999999996,41.008,31.349 -2020-10-23 01:15:00,78.38,60.483000000000004,41.008,31.349 -2020-10-23 01:30:00,72.93,60.181999999999995,41.008,31.349 -2020-10-23 01:45:00,73.02,59.847,41.008,31.349 -2020-10-23 02:00:00,71.03,61.23,39.521,31.349 -2020-10-23 02:15:00,73.65,61.361000000000004,39.521,31.349 -2020-10-23 02:30:00,79.52,62.555,39.521,31.349 -2020-10-23 02:45:00,80.33,62.872,39.521,31.349 -2020-10-23 03:00:00,79.49,65.42,39.812,31.349 -2020-10-23 03:15:00,77.2,66.66199999999999,39.812,31.349 -2020-10-23 03:30:00,77.66,66.79,39.812,31.349 -2020-10-23 03:45:00,80.08,68.09899999999999,39.812,31.349 -2020-10-23 04:00:00,93.02,78.267,41.22,31.349 -2020-10-23 04:15:00,92.04,87.04899999999999,41.22,31.349 -2020-10-23 04:30:00,95.88,87.476,41.22,31.349 -2020-10-23 04:45:00,103.64,88.589,41.22,31.349 -2020-10-23 05:00:00,110.56,116.802,45.115,31.349 -2020-10-23 05:15:00,109.64,143.666,45.115,31.349 -2020-10-23 05:30:00,112.58,138.431,45.115,31.349 -2020-10-23 05:45:00,115.81,129.345,45.115,31.349 -2020-10-23 06:00:00,127.62,129.082,59.06100000000001,31.349 -2020-10-23 06:15:00,125.7,132.726,59.06100000000001,31.349 -2020-10-23 06:30:00,129.36,131.142,59.06100000000001,31.349 -2020-10-23 06:45:00,130.72,132.45600000000002,59.06100000000001,31.349 -2020-10-23 07:00:00,132.87,133.134,71.874,31.349 -2020-10-23 07:15:00,132.91,136.845,71.874,31.349 -2020-10-23 07:30:00,132.75,136.32399999999998,71.874,31.349 -2020-10-23 07:45:00,132.39,135.908,71.874,31.349 -2020-10-23 08:00:00,135.33,135.643,68.439,31.349 -2020-10-23 08:15:00,133.18,135.3,68.439,31.349 -2020-10-23 08:30:00,131.71,133.393,68.439,31.349 -2020-10-23 08:45:00,132.74,130.588,68.439,31.349 -2020-10-23 09:00:00,130.86,125.649,65.523,31.349 -2020-10-23 09:15:00,129.44,124.387,65.523,31.349 -2020-10-23 09:30:00,130.21,123.78299999999999,65.523,31.349 -2020-10-23 09:45:00,126.99,123.292,65.523,31.349 -2020-10-23 10:00:00,126.29,119.389,62.005,31.349 -2020-10-23 10:15:00,126.97,118.429,62.005,31.349 -2020-10-23 10:30:00,127.62,116.988,62.005,31.349 -2020-10-23 10:45:00,128.81,116.204,62.005,31.349 -2020-10-23 11:00:00,125.12,112.964,60.351000000000006,31.349 -2020-10-23 11:15:00,124.04,112.315,60.351000000000006,31.349 -2020-10-23 11:30:00,124.64,113.381,60.351000000000006,31.349 -2020-10-23 11:45:00,128.31,113.32799999999999,60.351000000000006,31.349 -2020-10-23 12:00:00,121.36,110.387,55.331,31.349 -2020-10-23 12:15:00,123.71,108.07700000000001,55.331,31.349 -2020-10-23 12:30:00,121.4,108.113,55.331,31.349 -2020-10-23 12:45:00,120.71,108.477,55.331,31.349 -2020-10-23 13:00:00,114.05,109.057,53.361999999999995,31.349 -2020-10-23 13:15:00,112.96,109.195,53.361999999999995,31.349 -2020-10-23 13:30:00,114.06,108.807,53.361999999999995,31.349 -2020-10-23 13:45:00,109.64,108.527,53.361999999999995,31.349 -2020-10-23 14:00:00,109.29,107.06299999999999,51.708,31.349 -2020-10-23 14:15:00,107.91,107.09200000000001,51.708,31.349 -2020-10-23 14:30:00,109.64,107.539,51.708,31.349 -2020-10-23 14:45:00,108.55,107.329,51.708,31.349 -2020-10-23 15:00:00,108.97,106.251,54.571000000000005,31.349 -2020-10-23 15:15:00,110.24,105.94,54.571000000000005,31.349 -2020-10-23 15:30:00,110.25,105.12200000000001,54.571000000000005,31.349 -2020-10-23 15:45:00,111.4,105.56299999999999,54.571000000000005,31.349 -2020-10-23 16:00:00,111.51,105.333,58.662,31.349 -2020-10-23 16:15:00,113.23,106.244,58.662,31.349 -2020-10-23 16:30:00,114.42,106.60799999999999,58.662,31.349 -2020-10-23 16:45:00,118.53,105.10600000000001,58.662,31.349 -2020-10-23 17:00:00,122.49,106.39399999999999,65.941,31.349 -2020-10-23 17:15:00,122.56,107.088,65.941,31.349 -2020-10-23 17:30:00,123.72,106.946,65.941,31.349 -2020-10-23 17:45:00,123.59,106.948,65.941,31.349 -2020-10-23 18:00:00,121.84,108.42299999999999,65.628,31.349 -2020-10-23 18:15:00,121.3,107.361,65.628,31.349 -2020-10-23 18:30:00,117.05,106.244,65.628,31.349 -2020-10-23 18:45:00,113.81,109.695,65.628,31.349 -2020-10-23 19:00:00,107.92,111.56299999999999,63.662,31.349 -2020-10-23 19:15:00,105.21,111.102,63.662,31.349 -2020-10-23 19:30:00,103.36,110.083,63.662,31.349 -2020-10-23 19:45:00,100.53,108.814,63.662,31.349 -2020-10-23 20:00:00,96.19,105.954,61.945,31.349 -2020-10-23 20:15:00,96.91,103.45,61.945,31.349 -2020-10-23 20:30:00,98.96,102.758,61.945,31.349 -2020-10-23 20:45:00,98.21,101.104,61.945,31.349 -2020-10-23 21:00:00,88.95,98.39200000000001,53.903,31.349 -2020-10-23 21:15:00,85.03,99.21700000000001,53.903,31.349 -2020-10-23 21:30:00,86.27,98.49700000000001,53.903,31.349 -2020-10-23 21:45:00,86.36,96.485,53.903,31.349 -2020-10-23 22:00:00,82.11,92.458,48.403999999999996,31.349 -2020-10-23 22:15:00,79.76,88.836,48.403999999999996,31.349 -2020-10-23 22:30:00,78.87,82.929,48.403999999999996,31.349 -2020-10-23 22:45:00,77.66,78.721,48.403999999999996,31.349 -2020-10-23 23:00:00,72.45,73.60300000000001,41.07,31.349 -2020-10-23 23:15:00,66.27,71.525,41.07,31.349 -2020-10-23 23:30:00,71.85,68.943,41.07,31.349 -2020-10-23 23:45:00,72.89,68.757,41.07,31.349 -2020-10-24 00:00:00,69.15,58.409,38.989000000000004,31.177 -2020-10-24 00:15:00,66.21,57.553999999999995,38.989000000000004,31.177 -2020-10-24 00:30:00,66.17,57.687,38.989000000000004,31.177 -2020-10-24 00:45:00,68.56,57.732,38.989000000000004,31.177 -2020-10-24 01:00:00,67.79,58.681000000000004,35.275,31.177 -2020-10-24 01:15:00,63.68,58.266000000000005,35.275,31.177 -2020-10-24 01:30:00,65.18,57.342,35.275,31.177 -2020-10-24 01:45:00,67.86,57.486999999999995,35.275,31.177 -2020-10-24 02:00:00,66.58,58.766999999999996,32.838,31.177 -2020-10-24 02:15:00,64.36,58.35,32.838,31.177 -2020-10-24 02:30:00,61.86,58.606,32.838,31.177 -2020-10-24 02:45:00,66.88,59.343999999999994,32.838,31.177 -2020-10-24 03:00:00,65.58,61.542,32.418,31.177 -2020-10-24 03:15:00,60.76,61.876000000000005,32.418,31.177 -2020-10-24 03:30:00,61.45,61.39,32.418,31.177 -2020-10-24 03:45:00,60.33,63.449,32.418,31.177 -2020-10-24 04:00:00,61.63,70.747,32.099000000000004,31.177 -2020-10-24 04:15:00,61.62,77.895,32.099000000000004,31.177 -2020-10-24 04:30:00,61.95,76.46,32.099000000000004,31.177 -2020-10-24 04:45:00,64.96,77.475,32.099000000000004,31.177 -2020-10-24 05:00:00,66.95,94.19200000000001,32.926,31.177 -2020-10-24 05:15:00,68.94,106.695,32.926,31.177 -2020-10-24 05:30:00,70.32,102.368,32.926,31.177 -2020-10-24 05:45:00,72.01,98.037,32.926,31.177 -2020-10-24 06:00:00,75.35,111.932,35.069,31.177 -2020-10-24 06:15:00,77.38,127.29899999999999,35.069,31.177 -2020-10-24 06:30:00,80.27,121.75399999999999,35.069,31.177 -2020-10-24 06:45:00,82.52,117.161,35.069,31.177 -2020-10-24 07:00:00,84.52,114.94,40.906,31.177 -2020-10-24 07:15:00,86.47,117.434,40.906,31.177 -2020-10-24 07:30:00,88.55,119.00399999999999,40.906,31.177 -2020-10-24 07:45:00,90.46,121.02,40.906,31.177 -2020-10-24 08:00:00,93.09,122.844,46.603,31.177 -2020-10-24 08:15:00,92.39,124.279,46.603,31.177 -2020-10-24 08:30:00,92.69,123.23299999999999,46.603,31.177 -2020-10-24 08:45:00,92.18,122.46799999999999,46.603,31.177 -2020-10-24 09:00:00,92.61,119.697,49.935,31.177 -2020-10-24 09:15:00,95.38,119.044,49.935,31.177 -2020-10-24 09:30:00,92.79,119.12299999999999,49.935,31.177 -2020-10-24 09:45:00,98.37,118.501,49.935,31.177 -2020-10-24 10:00:00,95.5,114.84299999999999,47.585,31.177 -2020-10-24 10:15:00,96.58,114.081,47.585,31.177 -2020-10-24 10:30:00,97.94,112.571,47.585,31.177 -2020-10-24 10:45:00,98.26,112.348,47.585,31.177 -2020-10-24 11:00:00,98.27,109.11399999999999,43.376999999999995,31.177 -2020-10-24 11:15:00,98.66,108.404,43.376999999999995,31.177 -2020-10-24 11:30:00,99.06,108.95299999999999,43.376999999999995,31.177 -2020-10-24 11:45:00,96.15,108.61399999999999,43.376999999999995,31.177 -2020-10-24 12:00:00,91.6,105.161,40.855,31.177 -2020-10-24 12:15:00,91.87,103.545,40.855,31.177 -2020-10-24 12:30:00,93.38,103.74799999999999,40.855,31.177 -2020-10-24 12:45:00,90.21,103.949,40.855,31.177 -2020-10-24 13:00:00,86.6,103.87899999999999,37.251,31.177 -2020-10-24 13:15:00,86.51,102.62299999999999,37.251,31.177 -2020-10-24 13:30:00,85.95,102.045,37.251,31.177 -2020-10-24 13:45:00,85.82,101.522,37.251,31.177 -2020-10-24 14:00:00,86.06,100.728,38.548,31.177 -2020-10-24 14:15:00,86.43,99.986,38.548,31.177 -2020-10-24 14:30:00,86.03,99.24700000000001,38.548,31.177 -2020-10-24 14:45:00,85.75,99.345,38.548,31.177 -2020-10-24 15:00:00,84.72,98.795,42.883,31.177 -2020-10-24 15:15:00,85.56,99.241,42.883,31.177 -2020-10-24 15:30:00,85.6,99.435,42.883,31.177 -2020-10-24 15:45:00,86.3,99.54899999999999,42.883,31.177 -2020-10-24 16:00:00,89.01,99.697,48.143,31.177 -2020-10-24 16:15:00,89.51,100.771,48.143,31.177 -2020-10-24 16:30:00,92.55,101.194,48.143,31.177 -2020-10-24 16:45:00,96.25,100.23100000000001,48.143,31.177 -2020-10-24 17:00:00,102.45,100.84299999999999,55.25,31.177 -2020-10-24 17:15:00,102.68,101.559,55.25,31.177 -2020-10-24 17:30:00,105.3,101.311,55.25,31.177 -2020-10-24 17:45:00,102.74,101.31299999999999,55.25,31.177 -2020-10-24 18:00:00,102.08,103.189,57.506,31.177 -2020-10-24 18:15:00,99.7,103.78200000000001,57.506,31.177 -2020-10-24 18:30:00,98.42,103.971,57.506,31.177 -2020-10-24 18:45:00,96.26,104.133,57.506,31.177 -2020-10-24 19:00:00,91.99,105.861,55.528999999999996,31.177 -2020-10-24 19:15:00,88.78,104.691,55.528999999999996,31.177 -2020-10-24 19:30:00,86.53,104.39200000000001,55.528999999999996,31.177 -2020-10-24 19:45:00,85.01,103.775,55.528999999999996,31.177 -2020-10-24 20:00:00,81.07,102.477,46.166000000000004,31.177 -2020-10-24 20:15:00,81.19,100.8,46.166000000000004,31.177 -2020-10-24 20:30:00,79.06,99.508,46.166000000000004,31.177 -2020-10-24 20:45:00,78.71,98.44,46.166000000000004,31.177 -2020-10-24 21:00:00,74.27,96.27,40.406,31.177 -2020-10-24 21:15:00,73.82,97.156,40.406,31.177 -2020-10-24 21:30:00,69.74,97.17,40.406,31.177 -2020-10-24 21:45:00,70.03,94.685,40.406,31.177 -2020-10-24 22:00:00,66.57,91.34200000000001,39.616,31.177 -2020-10-24 22:15:00,66.52,89.10799999999999,39.616,31.177 -2020-10-24 22:30:00,63.76,86.304,39.616,31.177 -2020-10-24 22:45:00,63.35,83.242,39.616,31.177 -2020-10-24 23:00:00,59.13,79.12100000000001,32.205,31.177 -2020-10-24 23:15:00,57.91,76.347,32.205,31.177 -2020-10-24 23:30:00,58.49,73.942,32.205,31.177 -2020-10-24 23:45:00,57.43,72.638,32.205,31.177 -2020-10-25 00:00:00,54.37,59.602,28.229,31.177 -2020-10-25 00:15:00,54.85,58.032,28.229,31.177 -2020-10-25 00:30:00,53.15,57.915,28.229,31.177 -2020-10-25 00:45:00,53.46,58.245,28.229,31.177 -2020-10-25 01:00:00,52.45,59.261,25.669,31.177 -2020-10-25 01:15:00,53.12,59.316,25.669,31.177 -2020-10-25 01:30:00,52.62,58.598,25.669,31.177 -2020-10-25 01:45:00,53.42,58.406000000000006,25.669,31.177 -2020-10-25 02:00:00,53.47,59.361999999999995,24.948,31.177 -2020-10-25 02:15:00,52.07,58.88,24.948,31.177 -2020-10-25 02:30:00,53.29,59.628,24.948,31.177 -2020-10-25 02:45:00,50.45,60.449,24.948,31.177 -2020-10-25 02:00:00,53.47,59.361999999999995,24.948,31.177 -2020-10-25 02:15:00,52.07,58.88,24.948,31.177 -2020-10-25 02:30:00,53.29,59.628,24.948,31.177 -2020-10-25 02:45:00,50.45,60.449,24.948,31.177 -2020-10-25 03:00:00,51.47,63.097,25.839000000000002,31.177 -2020-10-25 03:15:00,53.26,63.324,25.839000000000002,31.177 -2020-10-25 03:30:00,53.34,63.165,25.839000000000002,31.177 -2020-10-25 03:45:00,54.51,64.78699999999999,25.839000000000002,31.177 -2020-10-25 04:00:00,53.29,71.962,26.803,31.177 -2020-10-25 04:15:00,53.34,78.443,26.803,31.177 -2020-10-25 04:30:00,53.8,77.687,26.803,31.177 -2020-10-25 04:45:00,54.16,78.613,26.803,31.177 -2020-10-25 05:00:00,55.1,93.816,28.147,31.177 -2020-10-25 05:15:00,57.45,104.86200000000001,28.147,31.177 -2020-10-25 05:30:00,57.71,100.24700000000001,28.147,31.177 -2020-10-25 05:45:00,58.69,95.866,28.147,31.177 -2020-10-25 06:00:00,62.27,108.524,31.116,31.177 -2020-10-25 06:15:00,63.1,123.47,31.116,31.177 -2020-10-25 06:30:00,62.46,117.07799999999999,31.116,31.177 -2020-10-25 06:45:00,62.7,111.507,31.116,31.177 -2020-10-25 07:00:00,63.83,110.587,35.739000000000004,31.177 -2020-10-25 07:15:00,68.03,111.905,35.739000000000004,31.177 -2020-10-25 07:30:00,70.45,113.48200000000001,35.739000000000004,31.177 -2020-10-25 07:45:00,73.32,115.104,35.739000000000004,31.177 -2020-10-25 08:00:00,74.3,118.15899999999999,39.455999999999996,31.177 -2020-10-25 08:15:00,75.67,120.051,39.455999999999996,31.177 -2020-10-25 08:30:00,77.85,120.27600000000001,39.455999999999996,31.177 -2020-10-25 08:45:00,79.31,120.493,39.455999999999996,31.177 -2020-10-25 09:00:00,79.61,117.434,41.343999999999994,31.177 -2020-10-25 09:15:00,84.58,116.85700000000001,41.343999999999994,31.177 -2020-10-25 09:30:00,85.64,117.029,41.343999999999994,31.177 -2020-10-25 09:45:00,82.94,116.75399999999999,41.343999999999994,31.177 -2020-10-25 10:00:00,85.77,114.64299999999999,43.645,31.177 -2020-10-25 10:15:00,85.99,114.189,43.645,31.177 -2020-10-25 10:30:00,87.54,113.08,43.645,31.177 -2020-10-25 10:45:00,90.19,112.226,43.645,31.177 -2020-10-25 11:00:00,91.19,109.338,39.796,31.177 -2020-10-25 11:15:00,94.15,108.50299999999999,39.796,31.177 -2020-10-25 11:30:00,95.37,108.779,39.796,31.177 -2020-10-25 11:45:00,98.86,108.865,39.796,31.177 -2020-10-25 12:00:00,91.98,105.462,36.343,31.177 -2020-10-25 12:15:00,91.68,104.677,36.343,31.177 -2020-10-25 12:30:00,88.9,104.17200000000001,36.343,31.177 -2020-10-25 12:45:00,90.13,103.572,36.343,31.177 -2020-10-25 13:00:00,82.09,102.927,33.162,31.177 -2020-10-25 13:15:00,81.4,103.18,33.162,31.177 -2020-10-25 13:30:00,81.38,102.04700000000001,33.162,31.177 -2020-10-25 13:45:00,81.84,101.579,33.162,31.177 -2020-10-25 14:00:00,81.77,101.337,33.215,31.177 -2020-10-25 14:15:00,79.73,101.465,33.215,31.177 -2020-10-25 14:30:00,79.1,100.992,33.215,31.177 -2020-10-25 14:45:00,79.01,100.43799999999999,33.215,31.177 -2020-10-25 15:00:00,79.17,99.04700000000001,37.385999999999996,31.177 -2020-10-25 15:15:00,80.91,99.631,37.385999999999996,31.177 -2020-10-25 15:30:00,81.52,100.13,37.385999999999996,31.177 -2020-10-25 15:45:00,82.75,100.765,37.385999999999996,31.177 -2020-10-25 16:00:00,82.73,101.178,46.618,31.177 -2020-10-25 16:15:00,84.13,101.86399999999999,46.618,31.177 -2020-10-25 16:30:00,88.98,102.837,46.618,31.177 -2020-10-25 16:45:00,90.57,102.025,46.618,31.177 -2020-10-25 17:00:00,95.12,102.66799999999999,50.111000000000004,31.177 -2020-10-25 17:15:00,97.69,103.867,50.111000000000004,31.177 -2020-10-25 17:30:00,96.42,104.118,50.111000000000004,31.177 -2020-10-25 17:45:00,98.46,105.537,50.111000000000004,31.177 -2020-10-25 18:00:00,103.58,107.33200000000001,50.25,31.177 -2020-10-25 18:15:00,101.93,108.426,50.25,31.177 -2020-10-25 18:30:00,102.54,107.414,50.25,31.177 -2020-10-25 18:45:00,100.8,108.6,50.25,31.177 -2020-10-25 19:00:00,96.36,111.086,44.265,31.177 -2020-10-25 19:15:00,94.85,109.73100000000001,44.265,31.177 -2020-10-25 19:30:00,95.47,109.225,44.265,31.177 -2020-10-25 19:45:00,92.72,109.13799999999999,44.265,31.177 -2020-10-25 20:00:00,95.91,107.9,39.717,31.177 -2020-10-25 20:15:00,98.51,106.665,39.717,31.177 -2020-10-25 20:30:00,93.22,106.344,39.717,31.177 -2020-10-25 20:45:00,87.29,103.89200000000001,39.717,31.177 -2020-10-25 21:00:00,89.17,100.29299999999999,39.224000000000004,31.177 -2020-10-25 21:15:00,87.17,100.712,39.224000000000004,31.177 -2020-10-25 21:30:00,90.1,100.595,39.224000000000004,31.177 -2020-10-25 21:45:00,88.38,98.32,39.224000000000004,31.177 -2020-10-25 22:00:00,85.43,95.274,33.518,31.177 -2020-10-25 22:15:00,83.95,91.87799999999999,33.518,31.177 -2020-10-25 22:30:00,78.09,87.24700000000001,33.518,31.177 -2020-10-25 22:45:00,78.18,83.186,33.518,31.177 -2020-10-25 23:00:00,78.0,77.503,33.518,31.177 -2020-10-25 23:15:00,83.24,76.22399999999999,33.518,31.177 -2020-10-25 23:30:00,81.26,73.999,33.518,31.177 -2020-10-25 23:45:00,79.19,73.21600000000001,33.518,31.177 -2020-10-26 00:00:00,70.49,62.706,34.301,31.349 -2020-10-26 00:15:00,74.87,62.949,34.301,31.349 -2020-10-26 00:30:00,78.69,62.718999999999994,34.301,31.349 -2020-10-26 00:45:00,81.84,62.592,34.301,31.349 -2020-10-26 01:00:00,75.6,63.79600000000001,34.143,31.349 -2020-10-26 01:15:00,71.72,63.619,34.143,31.349 -2020-10-26 01:30:00,75.5,63.11600000000001,34.143,31.349 -2020-10-26 01:45:00,77.08,62.928999999999995,34.143,31.349 -2020-10-26 02:00:00,76.26,64.08800000000001,33.650999999999996,31.349 -2020-10-26 02:15:00,72.33,63.838,33.650999999999996,31.349 -2020-10-26 02:30:00,72.88,64.815,33.650999999999996,31.349 -2020-10-26 02:45:00,75.86,65.26100000000001,33.650999999999996,31.349 -2020-10-26 03:00:00,73.71,68.73,32.599000000000004,31.349 -2020-10-26 03:15:00,76.24,70.116,32.599000000000004,31.349 -2020-10-26 03:30:00,71.02,70.158,32.599000000000004,31.349 -2020-10-26 03:45:00,78.2,71.275,32.599000000000004,31.349 -2020-10-26 04:00:00,79.63,82.025,33.785,31.349 -2020-10-26 04:15:00,78.32,91.931,33.785,31.349 -2020-10-26 04:30:00,77.2,91.984,33.785,31.349 -2020-10-26 04:45:00,76.44,93.176,33.785,31.349 -2020-10-26 05:00:00,81.4,119.296,41.285,31.349 -2020-10-26 05:15:00,86.72,144.952,41.285,31.349 -2020-10-26 05:30:00,94.41,139.7,41.285,31.349 -2020-10-26 05:45:00,100.77,131.119,41.285,31.349 -2020-10-26 06:00:00,111.1,130.539,60.486000000000004,31.349 -2020-10-26 06:15:00,109.54,133.99,60.486000000000004,31.349 -2020-10-26 06:30:00,116.42,133.387,60.486000000000004,31.349 -2020-10-26 06:45:00,125.54,134.597,60.486000000000004,31.349 -2020-10-26 07:00:00,128.36,135.40200000000002,74.012,31.349 -2020-10-26 07:15:00,127.02,138.408,74.012,31.349 -2020-10-26 07:30:00,129.02,139.22899999999998,74.012,31.349 -2020-10-26 07:45:00,130.69,139.71200000000002,74.012,31.349 -2020-10-26 08:00:00,133.0,139.673,69.569,31.349 -2020-10-26 08:15:00,130.26,139.901,69.569,31.349 -2020-10-26 08:30:00,131.6,137.61700000000002,69.569,31.349 -2020-10-26 08:45:00,131.65,136.181,69.569,31.349 -2020-10-26 09:00:00,132.1,132.289,66.152,31.349 -2020-10-26 09:15:00,133.34,129.095,66.152,31.349 -2020-10-26 09:30:00,133.68,128.327,66.152,31.349 -2020-10-26 09:45:00,134.8,127.196,66.152,31.349 -2020-10-26 10:00:00,135.34,124.896,62.923,31.349 -2020-10-26 10:15:00,134.92,124.164,62.923,31.349 -2020-10-26 10:30:00,135.66,122.366,62.923,31.349 -2020-10-26 10:45:00,136.84,121.25299999999999,62.923,31.349 -2020-10-26 11:00:00,136.57,117.12899999999999,61.522,31.349 -2020-10-26 11:15:00,138.31,117.39399999999999,61.522,31.349 -2020-10-26 11:30:00,137.5,118.719,61.522,31.349 -2020-10-26 11:45:00,136.55,118.765,61.522,31.349 -2020-10-26 12:00:00,132.39,115.801,58.632,31.349 -2020-10-26 12:15:00,133.44,115.056,58.632,31.349 -2020-10-26 12:30:00,136.05,114.31200000000001,58.632,31.349 -2020-10-26 12:45:00,136.12,114.579,58.632,31.349 -2020-10-26 13:00:00,131.73,114.663,59.06,31.349 -2020-10-26 13:15:00,133.41,113.785,59.06,31.349 -2020-10-26 13:30:00,132.28,112.412,59.06,31.349 -2020-10-26 13:45:00,129.34,112.303,59.06,31.349 -2020-10-26 14:00:00,128.88,111.329,59.791000000000004,31.349 -2020-10-26 14:15:00,130.35,111.32799999999999,59.791000000000004,31.349 -2020-10-26 14:30:00,130.63,110.51799999999999,59.791000000000004,31.349 -2020-10-26 14:45:00,129.71,110.73700000000001,59.791000000000004,31.349 -2020-10-26 15:00:00,133.57,110.221,61.148,31.349 -2020-10-26 15:15:00,130.84,109.76799999999999,61.148,31.349 -2020-10-26 15:30:00,129.48,110.12,61.148,31.349 -2020-10-26 15:45:00,127.89,110.32600000000001,61.148,31.349 -2020-10-26 16:00:00,129.63,111.01299999999999,66.009,31.349 -2020-10-26 16:15:00,130.73,111.325,66.009,31.349 -2020-10-26 16:30:00,128.87,111.488,66.009,31.349 -2020-10-26 16:45:00,131.75,110.07600000000001,66.009,31.349 -2020-10-26 17:00:00,135.6,109.988,73.683,31.349 -2020-10-26 17:15:00,135.29,110.84899999999999,73.683,31.349 -2020-10-26 17:30:00,138.5,110.64399999999999,73.683,31.349 -2020-10-26 17:45:00,138.2,111.103,73.683,31.349 -2020-10-26 18:00:00,139.43,112.59899999999999,72.848,31.349 -2020-10-26 18:15:00,137.29,111.71,72.848,31.349 -2020-10-26 18:30:00,135.93,110.73100000000001,72.848,31.349 -2020-10-26 18:45:00,133.94,113.649,72.848,31.349 -2020-10-26 19:00:00,131.63,115.131,71.139,31.349 -2020-10-26 19:15:00,128.86,113.73299999999999,71.139,31.349 -2020-10-26 19:30:00,126.98,113.314,71.139,31.349 -2020-10-26 19:45:00,125.67,112.5,71.139,31.349 -2020-10-26 20:00:00,117.03,109.485,69.667,31.349 -2020-10-26 20:15:00,114.91,107.57,69.667,31.349 -2020-10-26 20:30:00,114.37,106.48299999999999,69.667,31.349 -2020-10-26 20:45:00,109.01,104.954,69.667,31.349 -2020-10-26 21:00:00,112.26,101.359,61.166000000000004,31.349 -2020-10-26 21:15:00,112.02,101.35799999999999,61.166000000000004,31.349 -2020-10-26 21:30:00,107.75,101.01100000000001,61.166000000000004,31.349 -2020-10-26 21:45:00,102.71,98.35700000000001,61.166000000000004,31.349 -2020-10-26 22:00:00,96.59,92.899,52.772,31.349 -2020-10-26 22:15:00,95.82,89.686,52.772,31.349 -2020-10-26 22:30:00,95.29,78.227,52.772,31.349 -2020-10-26 22:45:00,98.09,71.666,52.772,31.349 -2020-10-26 23:00:00,93.54,66.396,45.136,31.349 -2020-10-26 23:15:00,86.6,65.73100000000001,45.136,31.349 -2020-10-26 23:30:00,84.41,64.919,45.136,31.349 -2020-10-26 23:45:00,88.99,65.25399999999999,45.136,31.349 -2020-10-27 00:00:00,81.74,61.629,47.35,31.349 -2020-10-27 00:15:00,82.4,62.966,47.35,31.349 -2020-10-27 00:30:00,77.99,62.614,47.35,31.349 -2020-10-27 00:45:00,77.23,62.376000000000005,47.35,31.349 -2020-10-27 01:00:00,80.95,63.243,43.424,31.349 -2020-10-27 01:15:00,82.6,62.918,43.424,31.349 -2020-10-27 01:30:00,79.87,62.45399999999999,43.424,31.349 -2020-10-27 01:45:00,72.99,62.169,43.424,31.349 -2020-10-27 02:00:00,72.38,63.107,41.778999999999996,31.349 -2020-10-27 02:15:00,71.66,63.367,41.778999999999996,31.349 -2020-10-27 02:30:00,79.74,63.854,41.778999999999996,31.349 -2020-10-27 02:45:00,81.55,64.459,41.778999999999996,31.349 -2020-10-27 03:00:00,82.6,67.071,40.771,31.349 -2020-10-27 03:15:00,75.83,68.518,40.771,31.349 -2020-10-27 03:30:00,74.84,68.78,40.771,31.349 -2020-10-27 03:45:00,75.64,69.439,40.771,31.349 -2020-10-27 04:00:00,78.97,79.508,41.816,31.349 -2020-10-27 04:15:00,82.85,89.28299999999999,41.816,31.349 -2020-10-27 04:30:00,84.37,89.12799999999999,41.816,31.349 -2020-10-27 04:45:00,85.9,91.14399999999999,41.816,31.349 -2020-10-27 05:00:00,85.7,120.477,45.842,31.349 -2020-10-27 05:15:00,86.54,146.40200000000002,45.842,31.349 -2020-10-27 05:30:00,89.88,140.503,45.842,31.349 -2020-10-27 05:45:00,92.99,131.537,45.842,31.349 -2020-10-27 06:00:00,102.93,130.881,59.12,31.349 -2020-10-27 06:15:00,108.45,135.22899999999998,59.12,31.349 -2020-10-27 06:30:00,113.1,134.179,59.12,31.349 -2020-10-27 06:45:00,115.04,134.792,59.12,31.349 -2020-10-27 07:00:00,122.18,135.57399999999998,70.33,31.349 -2020-10-27 07:15:00,119.35,138.393,70.33,31.349 -2020-10-27 07:30:00,121.17,138.977,70.33,31.349 -2020-10-27 07:45:00,122.32,139.118,70.33,31.349 -2020-10-27 08:00:00,123.86,139.123,67.788,31.349 -2020-10-27 08:15:00,121.9,138.599,67.788,31.349 -2020-10-27 08:30:00,120.05,136.322,67.788,31.349 -2020-10-27 08:45:00,119.09,134.313,67.788,31.349 -2020-10-27 09:00:00,117.83,130.122,62.622,31.349 -2020-10-27 09:15:00,117.56,127.71700000000001,62.622,31.349 -2020-10-27 09:30:00,117.58,127.595,62.622,31.349 -2020-10-27 09:45:00,116.75,126.899,62.622,31.349 -2020-10-27 10:00:00,115.99,123.69200000000001,60.887,31.349 -2020-10-27 10:15:00,115.96,122.279,60.887,31.349 -2020-10-27 10:30:00,114.65,120.57,60.887,31.349 -2020-10-27 10:45:00,115.67,120.009,60.887,31.349 -2020-10-27 11:00:00,114.34,116.712,59.812,31.349 -2020-10-27 11:15:00,114.91,116.93299999999999,59.812,31.349 -2020-10-27 11:30:00,116.28,117.145,59.812,31.349 -2020-10-27 11:45:00,115.75,117.391,59.812,31.349 -2020-10-27 12:00:00,113.14,113.553,56.614,31.349 -2020-10-27 12:15:00,114.82,112.695,56.614,31.349 -2020-10-27 12:30:00,122.4,112.73200000000001,56.614,31.349 -2020-10-27 12:45:00,118.13,113.09700000000001,56.614,31.349 -2020-10-27 13:00:00,120.98,112.76,56.824,31.349 -2020-10-27 13:15:00,123.1,112.37700000000001,56.824,31.349 -2020-10-27 13:30:00,120.06,111.669,56.824,31.349 -2020-10-27 13:45:00,116.95,111.295,56.824,31.349 -2020-10-27 14:00:00,111.93,110.604,57.623999999999995,31.349 -2020-10-27 14:15:00,110.15,110.633,57.623999999999995,31.349 -2020-10-27 14:30:00,114.67,110.348,57.623999999999995,31.349 -2020-10-27 14:45:00,116.3,110.22,57.623999999999995,31.349 -2020-10-27 15:00:00,118.01,109.37299999999999,59.724,31.349 -2020-10-27 15:15:00,119.23,109.48100000000001,59.724,31.349 -2020-10-27 15:30:00,118.98,109.921,59.724,31.349 -2020-10-27 15:45:00,123.51,110.039,59.724,31.349 -2020-10-27 16:00:00,124.34,110.655,61.64,31.349 -2020-10-27 16:15:00,123.37,111.288,61.64,31.349 -2020-10-27 16:30:00,126.21,111.66,61.64,31.349 -2020-10-27 16:45:00,127.32,110.74799999999999,61.64,31.349 -2020-10-27 17:00:00,132.95,111.009,68.962,31.349 -2020-10-27 17:15:00,130.54,112.081,68.962,31.349 -2020-10-27 17:30:00,133.6,112.05799999999999,68.962,31.349 -2020-10-27 17:45:00,132.78,112.322,68.962,31.349 -2020-10-27 18:00:00,133.9,113.34,69.149,31.349 -2020-10-27 18:15:00,131.39,112.79799999999999,69.149,31.349 -2020-10-27 18:30:00,130.49,111.552,69.149,31.349 -2020-10-27 18:45:00,129.9,114.807,69.149,31.349 -2020-10-27 19:00:00,126.61,115.82600000000001,68.832,31.349 -2020-10-27 19:15:00,124.87,114.351,68.832,31.349 -2020-10-27 19:30:00,122.2,113.476,68.832,31.349 -2020-10-27 19:45:00,121.07,112.803,68.832,31.349 -2020-10-27 20:00:00,114.52,110.06200000000001,66.403,31.349 -2020-10-27 20:15:00,112.08,107.171,66.403,31.349 -2020-10-27 20:30:00,108.46,106.601,66.403,31.349 -2020-10-27 20:45:00,105.79,104.941,66.403,31.349 -2020-10-27 21:00:00,98.15,101.363,57.352,31.349 -2020-10-27 21:15:00,94.41,101.166,57.352,31.349 -2020-10-27 21:30:00,92.13,100.529,57.352,31.349 -2020-10-27 21:45:00,91.04,98.061,57.352,31.349 -2020-10-27 22:00:00,84.86,93.559,51.148999999999994,31.349 -2020-10-27 22:15:00,81.56,90.044,51.148999999999994,31.349 -2020-10-27 22:30:00,78.97,78.791,51.148999999999994,31.349 -2020-10-27 22:45:00,75.04,72.378,51.148999999999994,31.349 -2020-10-27 23:00:00,69.33,66.797,41.8,31.349 -2020-10-27 23:15:00,72.04,66.328,41.8,31.349 -2020-10-27 23:30:00,67.62,65.33,41.8,31.349 -2020-10-27 23:45:00,70.34,65.508,41.8,31.349 -2020-10-28 00:00:00,66.64,61.961999999999996,42.269,31.349 -2020-10-28 00:15:00,63.47,63.285,42.269,31.349 -2020-10-28 00:30:00,62.17,62.938,42.269,31.349 -2020-10-28 00:45:00,59.22,62.693000000000005,42.269,31.349 -2020-10-28 01:00:00,59.46,63.573,38.527,31.349 -2020-10-28 01:15:00,59.73,63.266000000000005,38.527,31.349 -2020-10-28 01:30:00,57.69,62.818000000000005,38.527,31.349 -2020-10-28 01:45:00,59.75,62.528,38.527,31.349 -2020-10-28 02:00:00,58.9,63.477,36.393,31.349 -2020-10-28 02:15:00,57.99,63.747,36.393,31.349 -2020-10-28 02:30:00,58.66,64.222,36.393,31.349 -2020-10-28 02:45:00,59.76,64.822,36.393,31.349 -2020-10-28 03:00:00,58.64,67.422,36.167,31.349 -2020-10-28 03:15:00,59.18,68.89,36.167,31.349 -2020-10-28 03:30:00,59.1,69.155,36.167,31.349 -2020-10-28 03:45:00,59.8,69.797,36.167,31.349 -2020-10-28 04:00:00,57.35,79.88600000000001,38.092,31.349 -2020-10-28 04:15:00,60.36,89.689,38.092,31.349 -2020-10-28 04:30:00,61.45,89.531,38.092,31.349 -2020-10-28 04:45:00,62.49,91.555,38.092,31.349 -2020-10-28 05:00:00,64.56,120.95700000000001,42.268,31.349 -2020-10-28 05:15:00,64.41,146.945,42.268,31.349 -2020-10-28 05:30:00,63.43,141.032,42.268,31.349 -2020-10-28 05:45:00,60.47,132.036,42.268,31.349 -2020-10-28 06:00:00,64.37,131.36700000000002,60.158,31.349 -2020-10-28 06:15:00,65.72,135.72799999999998,60.158,31.349 -2020-10-28 06:30:00,65.45,134.7,60.158,31.349 -2020-10-28 06:45:00,65.86,135.322,60.158,31.349 -2020-10-28 07:00:00,68.96,136.10399999999998,74.792,31.349 -2020-10-28 07:15:00,70.01,138.934,74.792,31.349 -2020-10-28 07:30:00,71.67,139.547,74.792,31.349 -2020-10-28 07:45:00,73.31,139.689,74.792,31.349 -2020-10-28 08:00:00,76.29,139.70600000000002,70.499,31.349 -2020-10-28 08:15:00,75.92,139.159,70.499,31.349 -2020-10-28 08:30:00,76.39,136.907,70.499,31.349 -2020-10-28 08:45:00,76.44,134.873,70.499,31.349 -2020-10-28 09:00:00,75.16,130.675,68.892,31.349 -2020-10-28 09:15:00,75.44,128.268,68.892,31.349 -2020-10-28 09:30:00,72.53,128.134,68.892,31.349 -2020-10-28 09:45:00,73.66,127.415,68.892,31.349 -2020-10-28 10:00:00,72.88,124.2,66.88600000000001,31.349 -2020-10-28 10:15:00,69.24,122.749,66.88600000000001,31.349 -2020-10-28 10:30:00,71.4,121.02,66.88600000000001,31.349 -2020-10-28 10:45:00,72.71,120.443,66.88600000000001,31.349 -2020-10-28 11:00:00,72.82,117.149,66.187,31.349 -2020-10-28 11:15:00,74.56,117.351,66.187,31.349 -2020-10-28 11:30:00,75.37,117.56200000000001,66.187,31.349 -2020-10-28 11:45:00,76.16,117.794,66.187,31.349 -2020-10-28 12:00:00,73.91,113.936,62.18,31.349 -2020-10-28 12:15:00,72.6,113.075,62.18,31.349 -2020-10-28 12:30:00,71.55,113.145,62.18,31.349 -2020-10-28 12:45:00,70.09,113.51,62.18,31.349 -2020-10-28 13:00:00,70.36,113.141,62.23,31.349 -2020-10-28 13:15:00,67.51,112.76299999999999,62.23,31.349 -2020-10-28 13:30:00,65.99,112.054,62.23,31.349 -2020-10-28 13:45:00,66.82,111.676,62.23,31.349 -2020-10-28 14:00:00,67.12,110.936,63.721000000000004,31.349 -2020-10-28 14:15:00,67.37,110.98,63.721000000000004,31.349 -2020-10-28 14:30:00,69.07,110.73200000000001,63.721000000000004,31.349 -2020-10-28 14:45:00,72.24,110.602,63.721000000000004,31.349 -2020-10-28 15:00:00,74.87,109.736,66.523,31.349 -2020-10-28 15:15:00,75.32,109.86,66.523,31.349 -2020-10-28 15:30:00,79.14,110.337,66.523,31.349 -2020-10-28 15:45:00,80.15,110.46799999999999,66.523,31.349 -2020-10-28 16:00:00,83.7,111.055,69.679,31.349 -2020-10-28 16:15:00,83.65,111.71,69.679,31.349 -2020-10-28 16:30:00,85.79,112.07799999999999,69.679,31.349 -2020-10-28 16:45:00,87.82,111.21600000000001,69.679,31.349 -2020-10-28 17:00:00,95.0,111.43700000000001,75.04,31.349 -2020-10-28 17:15:00,96.91,112.52799999999999,75.04,31.349 -2020-10-28 17:30:00,100.33,112.508,75.04,31.349 -2020-10-28 17:45:00,101.95,112.79,75.04,31.349 -2020-10-28 18:00:00,102.58,113.801,75.915,31.349 -2020-10-28 18:15:00,101.4,113.235,75.915,31.349 -2020-10-28 18:30:00,100.78,111.999,75.915,31.349 -2020-10-28 18:45:00,99.5,115.25,75.915,31.349 -2020-10-28 19:00:00,96.55,116.27600000000001,74.66,31.349 -2020-10-28 19:15:00,96.95,114.795,74.66,31.349 -2020-10-28 19:30:00,94.44,113.90700000000001,74.66,31.349 -2020-10-28 19:45:00,93.81,113.212,74.66,31.349 -2020-10-28 20:00:00,97.85,110.491,71.204,31.349 -2020-10-28 20:15:00,98.96,107.59299999999999,71.204,31.349 -2020-10-28 20:30:00,93.72,106.994,71.204,31.349 -2020-10-28 20:45:00,96.99,105.316,71.204,31.349 -2020-10-28 21:00:00,88.01,101.735,61.052,31.349 -2020-10-28 21:15:00,91.89,101.527,61.052,31.349 -2020-10-28 21:30:00,86.26,100.899,61.052,31.349 -2020-10-28 21:45:00,85.22,98.413,61.052,31.349 -2020-10-28 22:00:00,82.78,93.904,54.691,31.349 -2020-10-28 22:15:00,84.41,90.37200000000001,54.691,31.349 -2020-10-28 22:30:00,80.28,79.148,54.691,31.349 -2020-10-28 22:45:00,82.44,72.742,54.691,31.349 -2020-10-28 23:00:00,82.46,67.175,45.18,31.349 -2020-10-28 23:15:00,86.27,66.678,45.18,31.349 -2020-10-28 23:30:00,83.78,65.682,45.18,31.349 -2020-10-28 23:45:00,82.95,65.851,45.18,31.349 -2020-10-29 00:00:00,77.65,62.294,42.746,31.349 -2020-10-29 00:15:00,79.71,63.602,42.746,31.349 -2020-10-29 00:30:00,79.87,63.261,42.746,31.349 -2020-10-29 00:45:00,70.04,63.008,42.746,31.349 -2020-10-29 01:00:00,74.52,63.9,40.025999999999996,31.349 -2020-10-29 01:15:00,77.14,63.611000000000004,40.025999999999996,31.349 -2020-10-29 01:30:00,78.1,63.178999999999995,40.025999999999996,31.349 -2020-10-29 01:45:00,74.52,62.885,40.025999999999996,31.349 -2020-10-29 02:00:00,74.6,63.843999999999994,38.154,31.349 -2020-10-29 02:15:00,78.3,64.126,38.154,31.349 -2020-10-29 02:30:00,77.12,64.58800000000001,38.154,31.349 -2020-10-29 02:45:00,73.83,65.185,38.154,31.349 -2020-10-29 03:00:00,77.13,67.771,37.575,31.349 -2020-10-29 03:15:00,78.81,69.26100000000001,37.575,31.349 -2020-10-29 03:30:00,79.06,69.528,37.575,31.349 -2020-10-29 03:45:00,73.2,70.152,37.575,31.349 -2020-10-29 04:00:00,76.0,80.26,39.154,31.349 -2020-10-29 04:15:00,81.59,90.094,39.154,31.349 -2020-10-29 04:30:00,84.79,89.934,39.154,31.349 -2020-10-29 04:45:00,83.0,91.965,39.154,31.349 -2020-10-29 05:00:00,83.0,121.43299999999999,44.085,31.349 -2020-10-29 05:15:00,86.43,147.484,44.085,31.349 -2020-10-29 05:30:00,90.66,141.559,44.085,31.349 -2020-10-29 05:45:00,100.19,132.532,44.085,31.349 -2020-10-29 06:00:00,111.83,131.852,57.49,31.349 -2020-10-29 06:15:00,117.74,136.226,57.49,31.349 -2020-10-29 06:30:00,119.59,135.217,57.49,31.349 -2020-10-29 06:45:00,115.34,135.85,57.49,31.349 -2020-10-29 07:00:00,122.6,136.632,73.617,31.349 -2020-10-29 07:15:00,123.1,139.474,73.617,31.349 -2020-10-29 07:30:00,124.09,140.114,73.617,31.349 -2020-10-29 07:45:00,126.48,140.257,73.617,31.349 -2020-10-29 08:00:00,126.46,140.285,69.281,31.349 -2020-10-29 08:15:00,123.29,139.715,69.281,31.349 -2020-10-29 08:30:00,119.21,137.487,69.281,31.349 -2020-10-29 08:45:00,118.47,135.429,69.281,31.349 -2020-10-29 09:00:00,118.0,131.224,63.926,31.349 -2020-10-29 09:15:00,122.76,128.815,63.926,31.349 -2020-10-29 09:30:00,119.63,128.67,63.926,31.349 -2020-10-29 09:45:00,122.87,127.926,63.926,31.349 -2020-10-29 10:00:00,122.23,124.705,59.442,31.349 -2020-10-29 10:15:00,119.89,123.21600000000001,59.442,31.349 -2020-10-29 10:30:00,124.6,121.46700000000001,59.442,31.349 -2020-10-29 10:45:00,131.0,120.874,59.442,31.349 -2020-10-29 11:00:00,127.83,117.583,56.771,31.349 -2020-10-29 11:15:00,128.86,117.766,56.771,31.349 -2020-10-29 11:30:00,130.16,117.978,56.771,31.349 -2020-10-29 11:45:00,131.01,118.196,56.771,31.349 -2020-10-29 12:00:00,130.57,114.31700000000001,53.701,31.349 -2020-10-29 12:15:00,130.91,113.45200000000001,53.701,31.349 -2020-10-29 12:30:00,133.3,113.556,53.701,31.349 -2020-10-29 12:45:00,130.48,113.921,53.701,31.349 -2020-10-29 13:00:00,133.45,113.51899999999999,52.364,31.349 -2020-10-29 13:15:00,130.71,113.147,52.364,31.349 -2020-10-29 13:30:00,128.95,112.436,52.364,31.349 -2020-10-29 13:45:00,129.8,112.055,52.364,31.349 -2020-10-29 14:00:00,130.29,111.265,53.419,31.349 -2020-10-29 14:15:00,129.67,111.324,53.419,31.349 -2020-10-29 14:30:00,128.02,111.11200000000001,53.419,31.349 -2020-10-29 14:45:00,130.31,110.98299999999999,53.419,31.349 -2020-10-29 15:00:00,127.71,110.096,56.744,31.349 -2020-10-29 15:15:00,126.9,110.236,56.744,31.349 -2020-10-29 15:30:00,126.36,110.75,56.744,31.349 -2020-10-29 15:45:00,125.0,110.89399999999999,56.744,31.349 -2020-10-29 16:00:00,125.03,111.45200000000001,60.458,31.349 -2020-10-29 16:15:00,124.56,112.12799999999999,60.458,31.349 -2020-10-29 16:30:00,124.0,112.494,60.458,31.349 -2020-10-29 16:45:00,128.25,111.682,60.458,31.349 -2020-10-29 17:00:00,134.32,111.861,66.295,31.349 -2020-10-29 17:15:00,137.45,112.973,66.295,31.349 -2020-10-29 17:30:00,135.07,112.95700000000001,66.295,31.349 -2020-10-29 17:45:00,135.2,113.255,66.295,31.349 -2020-10-29 18:00:00,134.97,114.259,68.468,31.349 -2020-10-29 18:15:00,133.97,113.67,68.468,31.349 -2020-10-29 18:30:00,134.41,112.444,68.468,31.349 -2020-10-29 18:45:00,130.82,115.691,68.468,31.349 -2020-10-29 19:00:00,127.46,116.72399999999999,66.39399999999999,31.349 -2020-10-29 19:15:00,126.41,115.23700000000001,66.39399999999999,31.349 -2020-10-29 19:30:00,124.92,114.338,66.39399999999999,31.349 -2020-10-29 19:45:00,123.49,113.619,66.39399999999999,31.349 -2020-10-29 20:00:00,123.79,110.91799999999999,63.183,31.349 -2020-10-29 20:15:00,121.13,108.01299999999999,63.183,31.349 -2020-10-29 20:30:00,115.55,107.385,63.183,31.349 -2020-10-29 20:45:00,110.22,105.69,63.183,31.349 -2020-10-29 21:00:00,106.12,102.105,55.133,31.349 -2020-10-29 21:15:00,108.93,101.885,55.133,31.349 -2020-10-29 21:30:00,108.46,101.26799999999999,55.133,31.349 -2020-10-29 21:45:00,104.99,98.762,55.133,31.349 -2020-10-29 22:00:00,95.45,94.24700000000001,50.111999999999995,31.349 -2020-10-29 22:15:00,94.84,90.696,50.111999999999995,31.349 -2020-10-29 22:30:00,95.34,79.503,50.111999999999995,31.349 -2020-10-29 22:45:00,96.16,73.104,50.111999999999995,31.349 -2020-10-29 23:00:00,90.51,67.551,44.536,31.349 -2020-10-29 23:15:00,87.23,67.025,44.536,31.349 -2020-10-29 23:30:00,86.68,66.032,44.536,31.349 -2020-10-29 23:45:00,87.36,66.191,44.536,31.349 -2020-10-30 00:00:00,85.77,61.242,42.291000000000004,31.349 -2020-10-30 00:15:00,82.09,62.739,42.291000000000004,31.349 -2020-10-30 00:30:00,77.43,62.463,42.291000000000004,31.349 -2020-10-30 00:45:00,82.66,62.458,42.291000000000004,31.349 -2020-10-30 01:00:00,80.41,63.026,41.008,31.349 -2020-10-30 01:15:00,82.12,62.924,41.008,31.349 -2020-10-30 01:30:00,75.47,62.736000000000004,41.008,31.349 -2020-10-30 01:45:00,77.24,62.371,41.008,31.349 -2020-10-30 02:00:00,74.28,63.827,39.521,31.349 -2020-10-30 02:15:00,74.78,64.03699999999999,39.521,31.349 -2020-10-30 02:30:00,79.52,65.142,39.521,31.349 -2020-10-30 02:45:00,81.93,65.428,39.521,31.349 -2020-10-30 03:00:00,80.63,67.885,39.812,31.349 -2020-10-30 03:15:00,75.97,69.27600000000001,39.812,31.349 -2020-10-30 03:30:00,78.26,69.422,39.812,31.349 -2020-10-30 03:45:00,82.39,70.611,39.812,31.349 -2020-10-30 04:00:00,82.18,80.916,41.22,31.349 -2020-10-30 04:15:00,78.3,89.902,41.22,31.349 -2020-10-30 04:30:00,84.06,90.31200000000001,41.22,31.349 -2020-10-30 04:45:00,88.56,91.48200000000001,41.22,31.349 -2020-10-30 05:00:00,92.62,120.163,45.115,31.349 -2020-10-30 05:15:00,89.69,147.474,45.115,31.349 -2020-10-30 05:30:00,95.75,142.15200000000002,45.115,31.349 -2020-10-30 05:45:00,102.23,132.844,45.115,31.349 -2020-10-30 06:00:00,113.59,132.496,59.06100000000001,31.349 -2020-10-30 06:15:00,111.04,136.235,59.06100000000001,31.349 -2020-10-30 06:30:00,113.71,134.79399999999998,59.06100000000001,31.349 -2020-10-30 06:45:00,116.04,136.179,59.06100000000001,31.349 -2020-10-30 07:00:00,119.06,136.855,71.874,31.349 -2020-10-30 07:15:00,120.84,140.64700000000002,71.874,31.349 -2020-10-30 07:30:00,122.72,140.326,71.874,31.349 -2020-10-30 07:45:00,122.52,139.918,71.874,31.349 -2020-10-30 08:00:00,125.5,139.739,68.439,31.349 -2020-10-30 08:15:00,124.47,139.237,68.439,31.349 -2020-10-30 08:30:00,127.07,137.506,68.439,31.349 -2020-10-30 08:45:00,127.1,134.52700000000002,68.439,31.349 -2020-10-30 09:00:00,128.83,129.542,65.523,31.349 -2020-10-30 09:15:00,129.4,128.264,65.523,31.349 -2020-10-30 09:30:00,128.5,127.581,65.523,31.349 -2020-10-30 09:45:00,127.31,126.919,65.523,31.349 -2020-10-30 10:00:00,126.26,122.965,62.005,31.349 -2020-10-30 10:15:00,124.62,121.74,62.005,31.349 -2020-10-30 10:30:00,123.49,120.156,62.005,31.349 -2020-10-30 10:45:00,124.03,119.26,62.005,31.349 -2020-10-30 11:00:00,124.17,116.04299999999999,60.351000000000006,31.349 -2020-10-30 11:15:00,126.28,115.26100000000001,60.351000000000006,31.349 -2020-10-30 11:30:00,123.52,116.325,60.351000000000006,31.349 -2020-10-30 11:45:00,123.86,116.17299999999999,60.351000000000006,31.349 -2020-10-30 12:00:00,121.54,113.084,55.331,31.349 -2020-10-30 12:15:00,125.28,110.75,55.331,31.349 -2020-10-30 12:30:00,124.06,111.024,55.331,31.349 -2020-10-30 12:45:00,121.96,111.383,55.331,31.349 -2020-10-30 13:00:00,118.71,111.73299999999999,53.361999999999995,31.349 -2020-10-30 13:15:00,120.56,111.917,53.361999999999995,31.349 -2020-10-30 13:30:00,118.3,111.51799999999999,53.361999999999995,31.349 -2020-10-30 13:45:00,120.01,111.213,53.361999999999995,31.349 -2020-10-30 14:00:00,117.73,109.399,51.708,31.349 -2020-10-30 14:15:00,118.43,109.535,51.708,31.349 -2020-10-30 14:30:00,118.52,110.236,51.708,31.349 -2020-10-30 14:45:00,119.61,110.02,51.708,31.349 -2020-10-30 15:00:00,120.23,108.8,54.571000000000005,31.349 -2020-10-30 15:15:00,118.83,108.60799999999999,54.571000000000005,31.349 -2020-10-30 15:30:00,118.31,108.04899999999999,54.571000000000005,31.349 -2020-10-30 15:45:00,119.66,108.585,54.571000000000005,31.349 -2020-10-30 16:00:00,120.97,108.147,58.662,31.349 -2020-10-30 16:15:00,120.45,109.209,58.662,31.349 -2020-10-30 16:30:00,122.73,109.552,58.662,31.349 -2020-10-30 16:45:00,126.37,108.40799999999999,58.662,31.349 -2020-10-30 17:00:00,132.24,109.404,65.941,31.349 -2020-10-30 17:15:00,131.66,110.236,65.941,31.349 -2020-10-30 17:30:00,135.32,110.119,65.941,31.349 -2020-10-30 17:45:00,131.92,110.234,65.941,31.349 -2020-10-30 18:00:00,131.8,111.662,65.628,31.349 -2020-10-30 18:15:00,129.88,110.432,65.628,31.349 -2020-10-30 18:30:00,128.86,109.383,65.628,31.349 -2020-10-30 18:45:00,128.89,112.803,65.628,31.349 -2020-10-30 19:00:00,127.22,114.73,63.662,31.349 -2020-10-30 19:15:00,123.33,114.22,63.662,31.349 -2020-10-30 19:30:00,121.1,113.117,63.662,31.349 -2020-10-30 19:45:00,121.23,111.685,63.662,31.349 -2020-10-30 20:00:00,115.04,108.969,61.945,31.349 -2020-10-30 20:15:00,110.74,106.413,61.945,31.349 -2020-10-30 20:30:00,109.01,105.51799999999999,61.945,31.349 -2020-10-30 20:45:00,106.5,103.742,61.945,31.349 -2020-10-30 21:00:00,100.01,101.007,53.903,31.349 -2020-10-30 21:15:00,102.44,101.75200000000001,53.903,31.349 -2020-10-30 21:30:00,100.98,101.102,53.903,31.349 -2020-10-30 21:45:00,94.15,98.95299999999999,53.903,31.349 -2020-10-30 22:00:00,87.77,94.88,48.403999999999996,31.349 -2020-10-30 22:15:00,85.26,91.131,48.403999999999996,31.349 -2020-10-30 22:30:00,84.58,85.432,48.403999999999996,31.349 -2020-10-30 22:45:00,83.7,81.27199999999999,48.403999999999996,31.349 -2020-10-30 23:00:00,82.16,76.253,41.07,31.349 -2020-10-30 23:15:00,81.37,73.979,41.07,31.349 -2020-10-30 23:30:00,73.71,71.40899999999999,41.07,31.349 -2020-10-30 23:45:00,71.13,71.156,41.07,31.349 -2020-10-31 00:00:00,72.45,61.597,38.989000000000004,31.177 -2020-10-31 00:15:00,73.37,59.941,38.989000000000004,31.177 -2020-10-31 00:30:00,73.61,59.854,38.989000000000004,31.177 -2020-10-31 00:45:00,71.83,60.141000000000005,38.989000000000004,31.177 -2020-10-31 01:00:00,68.78,61.233000000000004,35.275,31.177 -2020-10-31 01:15:00,71.23,61.393,35.275,31.177 -2020-10-31 01:30:00,69.97,60.773,35.275,31.177 -2020-10-31 01:45:00,65.93,60.555,35.275,31.177 -2020-10-31 02:00:00,64.99,61.573,32.838,31.177 -2020-10-31 02:15:00,69.96,61.156000000000006,32.838,31.177 -2020-10-31 02:30:00,68.68,61.831,32.838,31.177 -2020-10-31 02:45:00,66.64,62.625,32.838,31.177 -2020-10-31 03:00:00,65.79,65.196,32.418,31.177 -2020-10-31 03:15:00,67.38,65.55199999999999,32.418,31.177 -2020-10-31 03:30:00,67.91,65.406,32.418,31.177 -2020-10-31 03:45:00,63.45,66.92699999999999,32.418,31.177 -2020-10-31 04:00:00,60.12,74.21600000000001,32.099000000000004,31.177 -2020-10-31 04:15:00,61.24,80.874,32.099000000000004,31.177 -2020-10-31 04:30:00,62.55,80.10300000000001,32.099000000000004,31.177 -2020-10-31 04:45:00,62.68,81.078,32.099000000000004,31.177 -2020-10-31 05:00:00,63.12,96.679,32.926,31.177 -2020-10-31 05:15:00,62.57,108.109,32.926,31.177 -2020-10-31 05:30:00,63.2,103.416,32.926,31.177 -2020-10-31 05:45:00,65.37,98.848,32.926,31.177 -2020-10-31 06:00:00,68.19,111.434,35.069,31.177 -2020-10-31 06:15:00,69.79,126.461,35.069,31.177 -2020-10-31 06:30:00,71.11,120.191,35.069,31.177 -2020-10-31 06:45:00,73.82,114.679,35.069,31.177 -2020-10-31 07:00:00,75.79,113.76,40.906,31.177 -2020-10-31 07:15:00,77.22,115.145,40.906,31.177 -2020-10-31 07:30:00,78.86,116.89,40.906,31.177 -2020-10-31 07:45:00,81.1,118.516,40.906,31.177 -2020-10-31 08:00:00,83.23,121.64399999999999,46.603,31.177 -2020-10-31 08:15:00,84.49,123.396,46.603,31.177 -2020-10-31 08:30:00,86.25,123.77,46.603,31.177 -2020-10-31 08:45:00,88.76,123.838,46.603,31.177 -2020-10-31 09:00:00,92.45,120.73899999999999,49.935,31.177 -2020-10-31 09:15:00,93.68,120.148,49.935,31.177 -2020-10-31 09:30:00,94.02,120.255,49.935,31.177 -2020-10-31 09:45:00,94.02,119.835,49.935,31.177 -2020-10-31 10:00:00,92.45,117.68,47.585,31.177 -2020-10-31 10:15:00,93.24,117.001,47.585,31.177 -2020-10-31 10:30:00,92.64,115.77,47.585,31.177 -2020-10-31 10:45:00,92.15,114.821,47.585,31.177 -2020-10-31 11:00:00,93.34,111.95100000000001,43.376999999999995,31.177 -2020-10-31 11:15:00,96.08,111.00299999999999,43.376999999999995,31.177 -2020-10-31 11:30:00,95.83,111.277,43.376999999999995,31.177 -2020-10-31 11:45:00,96.13,111.28,43.376999999999995,31.177 -2020-10-31 12:00:00,95.48,107.751,40.855,31.177 -2020-10-31 12:15:00,95.57,106.947,40.855,31.177 -2020-10-31 12:30:00,92.12,106.645,40.855,31.177 -2020-10-31 12:45:00,91.78,106.042,40.855,31.177 -2020-10-31 13:00:00,88.92,105.20100000000001,37.251,31.177 -2020-10-31 13:15:00,89.25,105.492,37.251,31.177 -2020-10-31 13:30:00,88.99,104.34899999999999,37.251,31.177 -2020-10-31 13:45:00,89.08,103.85700000000001,37.251,31.177 -2020-10-31 14:00:00,86.2,103.321,38.548,31.177 -2020-10-31 14:15:00,87.18,103.538,38.548,31.177 -2020-10-31 14:30:00,86.99,103.285,38.548,31.177 -2020-10-31 14:45:00,87.31,102.726,38.548,31.177 -2020-10-31 15:00:00,87.48,101.215,42.883,31.177 -2020-10-31 15:15:00,87.93,101.897,42.883,31.177 -2020-10-31 15:30:00,87.72,102.617,42.883,31.177 -2020-10-31 15:45:00,88.54,103.33200000000001,42.883,31.177 -2020-10-31 16:00:00,90.83,103.56700000000001,48.143,31.177 -2020-10-31 16:15:00,90.48,104.383,48.143,31.177 -2020-10-31 16:30:00,92.56,105.337,48.143,31.177 -2020-10-31 16:45:00,97.53,104.829,48.143,31.177 -2020-10-31 17:00:00,102.04,105.22399999999999,55.25,31.177 -2020-10-31 17:15:00,100.68,106.541,55.25,31.177 -2020-10-31 17:30:00,102.51,106.81700000000001,55.25,31.177 -2020-10-31 17:45:00,102.66,108.331,55.25,31.177 -2020-10-31 18:00:00,104.1,110.088,57.506,31.177 -2020-10-31 18:15:00,107.0,111.04,57.506,31.177 -2020-10-31 18:30:00,103.91,110.087,57.506,31.177 -2020-10-31 18:45:00,104.55,111.25,57.506,31.177 -2020-10-31 19:00:00,100.55,113.781,55.528999999999996,31.177 -2020-10-31 19:15:00,99.24,112.38600000000001,55.528999999999996,31.177 -2020-10-31 19:30:00,97.68,111.81,55.528999999999996,31.177 -2020-10-31 19:45:00,96.75,111.583,55.528999999999996,31.177 -2020-10-31 20:00:00,91.74,110.46700000000001,46.166000000000004,31.177 -2020-10-31 20:15:00,88.35,109.18799999999999,46.166000000000004,31.177 -2020-10-31 20:30:00,86.31,108.696,46.166000000000004,31.177 -2020-10-31 20:45:00,83.91,106.139,46.166000000000004,31.177 -2020-10-31 21:00:00,80.56,102.51899999999999,40.406,31.177 -2020-10-31 21:15:00,80.4,102.87,40.406,31.177 -2020-10-31 21:30:00,79.05,102.81200000000001,40.406,31.177 -2020-10-31 21:45:00,77.96,100.42200000000001,40.406,31.177 -2020-10-31 22:00:00,75.29,97.337,39.616,31.177 -2020-10-31 22:15:00,74.6,93.835,39.616,31.177 -2020-10-31 22:30:00,71.03,89.384,39.616,31.177 -2020-10-31 22:45:00,70.49,85.363,39.616,31.177 -2020-10-31 23:00:00,67.0,79.763,32.205,31.177 -2020-10-31 23:15:00,66.8,78.317,32.205,31.177 -2020-10-31 23:30:00,64.91,76.102,32.205,31.177 -2020-10-31 23:45:00,63.18,75.262,32.205,31.177 -2020-11-01 00:00:00,58.91,73.844,36.376,32.047 -2020-11-01 00:15:00,57.64,71.598,36.376,32.047 -2020-11-01 00:30:00,58.09,71.771,36.376,32.047 -2020-11-01 00:45:00,56.8,72.655,36.376,32.047 -2020-11-01 01:00:00,53.61,74.10300000000001,32.992,32.047 -2020-11-01 01:15:00,55.48,74.691,32.992,32.047 -2020-11-01 01:30:00,54.86,74.157,32.992,32.047 -2020-11-01 01:45:00,55.56,74.169,32.992,32.047 -2020-11-01 02:00:00,53.33,75.35600000000001,32.327,32.047 -2020-11-01 02:15:00,53.19,74.95,32.327,32.047 -2020-11-01 02:30:00,53.38,75.499,32.327,32.047 -2020-11-01 02:45:00,53.54,76.763,32.327,32.047 -2020-11-01 03:00:00,52.29,79.542,31.169,32.047 -2020-11-01 03:15:00,53.27,79.608,31.169,32.047 -2020-11-01 03:30:00,53.38,80.009,31.169,32.047 -2020-11-01 03:45:00,53.67,81.561,31.169,32.047 -2020-11-01 04:00:00,53.04,90.10600000000001,30.796,32.047 -2020-11-01 04:15:00,53.69,97.82600000000001,30.796,32.047 -2020-11-01 04:30:00,54.71,97.304,30.796,32.047 -2020-11-01 04:45:00,54.7,98.21600000000001,30.796,32.047 -2020-11-01 05:00:00,56.28,114.69200000000001,30.848000000000003,32.047 -2020-11-01 05:15:00,56.84,126.919,30.848000000000003,32.047 -2020-11-01 05:30:00,56.12,122.334,30.848000000000003,32.047 -2020-11-01 05:45:00,57.2,117.79299999999999,30.848000000000003,32.047 -2020-11-01 06:00:00,58.93,131.375,31.166,32.047 -2020-11-01 06:15:00,60.16,148.164,31.166,32.047 -2020-11-01 06:30:00,60.09,141.499,31.166,32.047 -2020-11-01 06:45:00,61.33,135.033,31.166,32.047 -2020-11-01 07:00:00,62.62,134.209,33.527,32.047 -2020-11-01 07:15:00,64.53,135.998,33.527,32.047 -2020-11-01 07:30:00,66.19,138.07299999999998,33.527,32.047 -2020-11-01 07:45:00,69.32,140.029,33.527,32.047 -2020-11-01 08:00:00,72.18,143.476,36.616,32.047 -2020-11-01 08:15:00,73.05,145.618,36.616,32.047 -2020-11-01 08:30:00,75.6,146.314,36.616,32.047 -2020-11-01 08:45:00,76.81,146.583,36.616,32.047 -2020-11-01 09:00:00,78.39,143.313,37.857,32.047 -2020-11-01 09:15:00,79.58,142.33100000000002,37.857,32.047 -2020-11-01 09:30:00,79.36,141.849,37.857,32.047 -2020-11-01 09:45:00,80.15,141.034,37.857,32.047 -2020-11-01 10:00:00,78.79,139.36,36.319,32.047 -2020-11-01 10:15:00,81.18,138.553,36.319,32.047 -2020-11-01 10:30:00,82.06,137.161,36.319,32.047 -2020-11-01 10:45:00,84.37,135.914,36.319,32.047 -2020-11-01 11:00:00,87.44,132.654,37.236999999999995,32.047 -2020-11-01 11:15:00,90.16,131.516,37.236999999999995,32.047 -2020-11-01 11:30:00,92.79,131.694,37.236999999999995,32.047 -2020-11-01 11:45:00,94.47,132.332,37.236999999999995,32.047 -2020-11-01 12:00:00,93.72,128.334,34.871,32.047 -2020-11-01 12:15:00,91.05,127.323,34.871,32.047 -2020-11-01 12:30:00,88.73,126.853,34.871,32.047 -2020-11-01 12:45:00,87.98,126.25399999999999,34.871,32.047 -2020-11-01 13:00:00,81.86,125.57600000000001,29.738000000000003,32.047 -2020-11-01 13:15:00,79.48,125.912,29.738000000000003,32.047 -2020-11-01 13:30:00,78.24,124.734,29.738000000000003,32.047 -2020-11-01 13:45:00,77.77,124.292,29.738000000000003,32.047 -2020-11-01 14:00:00,78.82,124.43,27.333000000000002,32.047 -2020-11-01 14:15:00,77.97,124.331,27.333000000000002,32.047 -2020-11-01 14:30:00,78.18,123.743,27.333000000000002,32.047 -2020-11-01 14:45:00,79.25,123.29,27.333000000000002,32.047 -2020-11-01 15:00:00,79.18,121.579,28.232,32.047 -2020-11-01 15:15:00,79.37,122.45100000000001,28.232,32.047 -2020-11-01 15:30:00,79.55,122.805,28.232,32.047 -2020-11-01 15:45:00,81.75,123.443,28.232,32.047 -2020-11-01 16:00:00,83.82,125.545,32.815,32.047 -2020-11-01 16:15:00,83.89,127.041,32.815,32.047 -2020-11-01 16:30:00,84.8,127.854,32.815,32.047 -2020-11-01 16:45:00,89.87,127.169,32.815,32.047 -2020-11-01 17:00:00,96.6,129.106,43.068999999999996,32.047 -2020-11-01 17:15:00,96.91,130.164,43.068999999999996,32.047 -2020-11-01 17:30:00,99.73,130.485,43.068999999999996,32.047 -2020-11-01 17:45:00,101.95,131.416,43.068999999999996,32.047 -2020-11-01 18:00:00,100.66,134.56799999999998,50.498999999999995,32.047 -2020-11-01 18:15:00,100.99,135.72299999999998,50.498999999999995,32.047 -2020-11-01 18:30:00,97.5,134.084,50.498999999999995,32.047 -2020-11-01 18:45:00,96.13,135.263,50.498999999999995,32.047 -2020-11-01 19:00:00,94.03,137.83700000000002,53.481,32.047 -2020-11-01 19:15:00,94.0,136.382,53.481,32.047 -2020-11-01 19:30:00,92.13,135.606,53.481,32.047 -2020-11-01 19:45:00,92.89,135.071,53.481,32.047 -2020-11-01 20:00:00,90.69,132.186,51.687,32.047 -2020-11-01 20:15:00,94.58,130.61700000000002,51.687,32.047 -2020-11-01 20:30:00,92.24,130.408,51.687,32.047 -2020-11-01 20:45:00,86.66,127.39,51.687,32.047 -2020-11-01 21:00:00,83.37,123.02,47.674,32.047 -2020-11-01 21:15:00,84.21,122.93,47.674,32.047 -2020-11-01 21:30:00,88.7,122.751,47.674,32.047 -2020-11-01 21:45:00,90.47,120.36399999999999,47.674,32.047 -2020-11-01 22:00:00,90.97,116.14,48.178000000000004,32.047 -2020-11-01 22:15:00,86.98,112.27799999999999,48.178000000000004,32.047 -2020-11-01 22:30:00,83.62,106.661,48.178000000000004,32.047 -2020-11-01 22:45:00,82.66,102.23,48.178000000000004,32.047 -2020-11-01 23:00:00,81.93,96.52,42.553999999999995,32.047 -2020-11-01 23:15:00,85.7,94.42200000000001,42.553999999999995,32.047 -2020-11-01 23:30:00,82.06,92.15700000000001,42.553999999999995,32.047 -2020-11-01 23:45:00,78.61,90.99799999999999,42.553999999999995,32.047 -2020-11-02 00:00:00,77.71,77.483,37.177,32.225 -2020-11-02 00:15:00,78.04,77.413,37.177,32.225 -2020-11-02 00:30:00,75.0,77.514,37.177,32.225 -2020-11-02 00:45:00,71.86,77.888,37.177,32.225 -2020-11-02 01:00:00,73.26,79.508,35.358000000000004,32.225 -2020-11-02 01:15:00,75.19,79.788,35.358000000000004,32.225 -2020-11-02 01:30:00,74.29,79.453,35.358000000000004,32.225 -2020-11-02 01:45:00,71.36,79.48899999999999,35.358000000000004,32.225 -2020-11-02 02:00:00,74.46,80.84899999999999,35.03,32.225 -2020-11-02 02:15:00,76.19,80.941,35.03,32.225 -2020-11-02 02:30:00,73.58,81.756,35.03,32.225 -2020-11-02 02:45:00,70.49,82.568,35.03,32.225 -2020-11-02 03:00:00,71.48,86.30799999999999,34.394,32.225 -2020-11-02 03:15:00,76.54,87.72,34.394,32.225 -2020-11-02 03:30:00,78.06,88.242,34.394,32.225 -2020-11-02 03:45:00,72.8,89.243,34.394,32.225 -2020-11-02 04:00:00,77.28,101.759,34.421,32.225 -2020-11-02 04:15:00,80.21,113.29299999999999,34.421,32.225 -2020-11-02 04:30:00,81.33,113.90799999999999,34.421,32.225 -2020-11-02 04:45:00,78.06,115.085,34.421,32.225 -2020-11-02 05:00:00,85.36,144.252,39.435,32.225 -2020-11-02 05:15:00,91.98,173.24200000000002,39.435,32.225 -2020-11-02 05:30:00,96.04,168.166,39.435,32.225 -2020-11-02 05:45:00,95.92,158.836,39.435,32.225 -2020-11-02 06:00:00,104.79,157.326,55.685,32.225 -2020-11-02 06:15:00,114.4,161.115,55.685,32.225 -2020-11-02 06:30:00,121.39,161.122,55.685,32.225 -2020-11-02 06:45:00,125.87,162.344,55.685,32.225 -2020-11-02 07:00:00,126.76,163.525,66.837,32.225 -2020-11-02 07:15:00,126.88,167.03400000000002,66.837,32.225 -2020-11-02 07:30:00,127.09,168.299,66.837,32.225 -2020-11-02 07:45:00,125.37,168.74099999999999,66.837,32.225 -2020-11-02 08:00:00,127.99,168.55700000000002,72.217,32.225 -2020-11-02 08:15:00,126.32,168.81599999999997,72.217,32.225 -2020-11-02 08:30:00,126.89,166.49400000000003,72.217,32.225 -2020-11-02 08:45:00,124.03,164.62900000000002,72.217,32.225 -2020-11-02 09:00:00,123.27,160.44799999999998,66.117,32.225 -2020-11-02 09:15:00,123.92,156.477,66.117,32.225 -2020-11-02 09:30:00,125.15,154.977,66.117,32.225 -2020-11-02 09:45:00,128.93,153.493,66.117,32.225 -2020-11-02 10:00:00,124.84,151.434,62.1,32.225 -2020-11-02 10:15:00,123.92,150.312,62.1,32.225 -2020-11-02 10:30:00,124.83,148.13299999999998,62.1,32.225 -2020-11-02 10:45:00,125.47,146.829,62.1,32.225 -2020-11-02 11:00:00,125.02,141.958,60.021,32.225 -2020-11-02 11:15:00,116.55,142.15,60.021,32.225 -2020-11-02 11:30:00,119.3,143.525,60.021,32.225 -2020-11-02 11:45:00,122.68,144.034,60.021,32.225 -2020-11-02 12:00:00,116.26,140.8,56.75899999999999,32.225 -2020-11-02 12:15:00,116.59,139.82399999999998,56.75899999999999,32.225 -2020-11-02 12:30:00,124.27,139.215,56.75899999999999,32.225 -2020-11-02 12:45:00,119.06,139.694,56.75899999999999,32.225 -2020-11-02 13:00:00,118.02,139.783,56.04600000000001,32.225 -2020-11-02 13:15:00,119.4,138.85399999999998,56.04600000000001,32.225 -2020-11-02 13:30:00,122.02,137.35399999999998,56.04600000000001,32.225 -2020-11-02 13:45:00,119.1,137.218,56.04600000000001,32.225 -2020-11-02 14:00:00,122.77,136.59,55.475,32.225 -2020-11-02 14:15:00,120.69,136.239,55.475,32.225 -2020-11-02 14:30:00,120.41,135.251,55.475,32.225 -2020-11-02 14:45:00,124.04,135.44,55.475,32.225 -2020-11-02 15:00:00,120.94,134.887,57.048,32.225 -2020-11-02 15:15:00,120.7,134.558,57.048,32.225 -2020-11-02 15:30:00,120.66,134.607,57.048,32.225 -2020-11-02 15:45:00,121.41,134.784,57.048,32.225 -2020-11-02 16:00:00,122.05,137.142,59.06,32.225 -2020-11-02 16:15:00,124.08,138.155,59.06,32.225 -2020-11-02 16:30:00,124.36,138.067,59.06,32.225 -2020-11-02 16:45:00,129.23,136.614,59.06,32.225 -2020-11-02 17:00:00,134.05,137.868,65.419,32.225 -2020-11-02 17:15:00,132.55,138.431,65.419,32.225 -2020-11-02 17:30:00,137.22,138.244,65.419,32.225 -2020-11-02 17:45:00,135.22,138.03,65.419,32.225 -2020-11-02 18:00:00,135.07,141.039,69.345,32.225 -2020-11-02 18:15:00,132.86,140.007,69.345,32.225 -2020-11-02 18:30:00,131.02,138.54399999999998,69.345,32.225 -2020-11-02 18:45:00,131.86,141.345,69.345,32.225 -2020-11-02 19:00:00,128.07,142.715,73.825,32.225 -2020-11-02 19:15:00,126.32,140.951,73.825,32.225 -2020-11-02 19:30:00,127.01,140.357,73.825,32.225 -2020-11-02 19:45:00,122.74,139.009,73.825,32.225 -2020-11-02 20:00:00,119.02,134.085,64.027,32.225 -2020-11-02 20:15:00,113.3,131.38299999999998,64.027,32.225 -2020-11-02 20:30:00,108.72,130.102,64.027,32.225 -2020-11-02 20:45:00,106.21,128.234,64.027,32.225 -2020-11-02 21:00:00,107.92,123.986,57.952,32.225 -2020-11-02 21:15:00,109.71,123.275,57.952,32.225 -2020-11-02 21:30:00,108.09,122.71700000000001,57.952,32.225 -2020-11-02 21:45:00,100.41,119.898,57.952,32.225 -2020-11-02 22:00:00,93.26,112.988,53.031000000000006,32.225 -2020-11-02 22:15:00,93.34,108.98299999999999,53.031000000000006,32.225 -2020-11-02 22:30:00,98.42,95.46700000000001,53.031000000000006,32.225 -2020-11-02 22:45:00,95.12,87.84,53.031000000000006,32.225 -2020-11-02 23:00:00,89.39,82.635,45.085,32.225 -2020-11-02 23:15:00,85.21,81.652,45.085,32.225 -2020-11-02 23:30:00,86.99,81.206,45.085,32.225 -2020-11-02 23:45:00,87.54,81.581,45.085,32.225 -2020-11-03 00:00:00,84.2,76.499,42.843,32.225 -2020-11-03 00:15:00,78.55,77.664,42.843,32.225 -2020-11-03 00:30:00,76.57,77.46300000000001,42.843,32.225 -2020-11-03 00:45:00,82.07,77.531,42.843,32.225 -2020-11-03 01:00:00,80.46,78.831,41.542,32.225 -2020-11-03 01:15:00,79.44,78.893,41.542,32.225 -2020-11-03 01:30:00,74.87,78.63,41.542,32.225 -2020-11-03 01:45:00,72.5,78.641,41.542,32.225 -2020-11-03 02:00:00,78.57,79.813,40.19,32.225 -2020-11-03 02:15:00,80.48,80.32300000000001,40.19,32.225 -2020-11-03 02:30:00,80.8,80.593,40.19,32.225 -2020-11-03 02:45:00,74.67,81.544,40.19,32.225 -2020-11-03 03:00:00,71.93,84.294,39.626,32.225 -2020-11-03 03:15:00,79.33,85.59299999999999,39.626,32.225 -2020-11-03 03:30:00,82.08,86.404,39.626,32.225 -2020-11-03 03:45:00,82.13,87.045,39.626,32.225 -2020-11-03 04:00:00,77.08,98.926,40.196999999999996,32.225 -2020-11-03 04:15:00,77.12,110.274,40.196999999999996,32.225 -2020-11-03 04:30:00,82.35,110.641,40.196999999999996,32.225 -2020-11-03 04:45:00,87.06,112.781,40.196999999999996,32.225 -2020-11-03 05:00:00,91.11,145.749,43.378,32.225 -2020-11-03 05:15:00,88.11,174.916,43.378,32.225 -2020-11-03 05:30:00,88.09,168.97,43.378,32.225 -2020-11-03 05:45:00,96.86,159.315,43.378,32.225 -2020-11-03 06:00:00,106.9,157.497,55.691,32.225 -2020-11-03 06:15:00,109.83,162.39700000000002,55.691,32.225 -2020-11-03 06:30:00,115.64,161.89700000000002,55.691,32.225 -2020-11-03 06:45:00,121.32,162.537,55.691,32.225 -2020-11-03 07:00:00,121.08,163.66,65.567,32.225 -2020-11-03 07:15:00,122.41,166.97799999999998,65.567,32.225 -2020-11-03 07:30:00,122.07,167.926,65.567,32.225 -2020-11-03 07:45:00,122.18,168.12400000000002,65.567,32.225 -2020-11-03 08:00:00,123.78,168.005,73.001,32.225 -2020-11-03 08:15:00,123.3,167.40099999999998,73.001,32.225 -2020-11-03 08:30:00,121.01,165.054,73.001,32.225 -2020-11-03 08:45:00,120.18,162.636,73.001,32.225 -2020-11-03 09:00:00,119.27,158.009,67.08800000000001,32.225 -2020-11-03 09:15:00,120.13,155.065,67.08800000000001,32.225 -2020-11-03 09:30:00,119.45,154.263,67.08800000000001,32.225 -2020-11-03 09:45:00,119.38,153.096,67.08800000000001,32.225 -2020-11-03 10:00:00,117.17,150.135,62.803000000000004,32.225 -2020-11-03 10:15:00,116.37,148.19,62.803000000000004,32.225 -2020-11-03 10:30:00,114.86,146.122,62.803000000000004,32.225 -2020-11-03 10:45:00,114.46,145.343,62.803000000000004,32.225 -2020-11-03 11:00:00,115.53,141.503,60.155,32.225 -2020-11-03 11:15:00,116.0,141.577,60.155,32.225 -2020-11-03 11:30:00,114.96,141.749,60.155,32.225 -2020-11-03 11:45:00,115.15,142.586,60.155,32.225 -2020-11-03 12:00:00,114.54,138.3,56.845,32.225 -2020-11-03 12:15:00,113.41,137.136,56.845,32.225 -2020-11-03 12:30:00,116.09,137.35399999999998,56.845,32.225 -2020-11-03 12:45:00,113.87,137.849,56.845,32.225 -2020-11-03 13:00:00,112.05,137.47799999999998,56.163000000000004,32.225 -2020-11-03 13:15:00,113.4,136.88,56.163000000000004,32.225 -2020-11-03 13:30:00,111.98,136.209,56.163000000000004,32.225 -2020-11-03 13:45:00,112.78,135.895,56.163000000000004,32.225 -2020-11-03 14:00:00,114.01,135.56,55.934,32.225 -2020-11-03 14:15:00,114.62,135.273,55.934,32.225 -2020-11-03 14:30:00,114.22,134.879,55.934,32.225 -2020-11-03 14:45:00,116.32,134.763,55.934,32.225 -2020-11-03 15:00:00,118.75,133.835,57.43899999999999,32.225 -2020-11-03 15:15:00,121.12,134.054,57.43899999999999,32.225 -2020-11-03 15:30:00,118.99,134.238,57.43899999999999,32.225 -2020-11-03 15:45:00,120.3,134.248,57.43899999999999,32.225 -2020-11-03 16:00:00,121.23,136.631,59.968999999999994,32.225 -2020-11-03 16:15:00,121.12,138.031,59.968999999999994,32.225 -2020-11-03 16:30:00,124.29,138.269,59.968999999999994,32.225 -2020-11-03 16:45:00,128.38,137.31,59.968999999999994,32.225 -2020-11-03 17:00:00,134.36,138.976,67.428,32.225 -2020-11-03 17:15:00,135.38,139.727,67.428,32.225 -2020-11-03 17:30:00,136.98,139.846,67.428,32.225 -2020-11-03 17:45:00,136.7,139.438,67.428,32.225 -2020-11-03 18:00:00,135.03,142.02700000000002,71.533,32.225 -2020-11-03 18:15:00,133.99,141.156,71.533,32.225 -2020-11-03 18:30:00,132.72,139.4,71.533,32.225 -2020-11-03 18:45:00,132.44,142.667,71.533,32.225 -2020-11-03 19:00:00,129.7,143.67,73.32300000000001,32.225 -2020-11-03 19:15:00,127.73,141.774,73.32300000000001,32.225 -2020-11-03 19:30:00,125.23,140.636,73.32300000000001,32.225 -2020-11-03 19:45:00,124.06,139.406,73.32300000000001,32.225 -2020-11-03 20:00:00,116.4,134.749,64.166,32.225 -2020-11-03 20:15:00,113.06,131.075,64.166,32.225 -2020-11-03 20:30:00,111.89,130.452,64.166,32.225 -2020-11-03 20:45:00,108.23,128.349,64.166,32.225 -2020-11-03 21:00:00,111.71,123.95299999999999,57.891999999999996,32.225 -2020-11-03 21:15:00,112.07,123.279,57.891999999999996,32.225 -2020-11-03 21:30:00,109.48,122.31299999999999,57.891999999999996,32.225 -2020-11-03 21:45:00,100.8,119.70200000000001,57.891999999999996,32.225 -2020-11-03 22:00:00,96.06,113.992,53.242,32.225 -2020-11-03 22:15:00,98.84,109.67299999999999,53.242,32.225 -2020-11-03 22:30:00,98.89,96.368,53.242,32.225 -2020-11-03 22:45:00,97.23,88.929,53.242,32.225 -2020-11-03 23:00:00,87.29,83.465,46.665,32.225 -2020-11-03 23:15:00,90.27,82.43700000000001,46.665,32.225 -2020-11-03 23:30:00,89.3,81.75399999999999,46.665,32.225 -2020-11-03 23:45:00,90.61,81.89,46.665,32.225 -2020-11-04 00:00:00,81.4,76.873,43.16,32.225 -2020-11-04 00:15:00,84.07,78.01899999999999,43.16,32.225 -2020-11-04 00:30:00,85.61,77.822,43.16,32.225 -2020-11-04 00:45:00,83.69,77.87899999999999,43.16,32.225 -2020-11-04 01:00:00,75.16,79.202,40.972,32.225 -2020-11-04 01:15:00,82.28,79.28,40.972,32.225 -2020-11-04 01:30:00,82.05,79.033,40.972,32.225 -2020-11-04 01:45:00,82.13,79.03699999999999,40.972,32.225 -2020-11-04 02:00:00,77.14,80.223,39.749,32.225 -2020-11-04 02:15:00,83.18,80.742,39.749,32.225 -2020-11-04 02:30:00,81.85,81.001,39.749,32.225 -2020-11-04 02:45:00,79.64,81.949,39.749,32.225 -2020-11-04 03:00:00,77.05,84.684,39.422,32.225 -2020-11-04 03:15:00,82.52,86.007,39.422,32.225 -2020-11-04 03:30:00,83.16,86.821,39.422,32.225 -2020-11-04 03:45:00,81.55,87.447,39.422,32.225 -2020-11-04 04:00:00,77.98,99.337,40.505,32.225 -2020-11-04 04:15:00,84.43,110.712,40.505,32.225 -2020-11-04 04:30:00,87.82,111.073,40.505,32.225 -2020-11-04 04:45:00,88.51,113.22,40.505,32.225 -2020-11-04 05:00:00,88.07,146.239,43.397,32.225 -2020-11-04 05:15:00,92.6,175.447,43.397,32.225 -2020-11-04 05:30:00,99.67,169.497,43.397,32.225 -2020-11-04 05:45:00,101.58,159.82,43.397,32.225 -2020-11-04 06:00:00,103.46,157.997,55.218,32.225 -2020-11-04 06:15:00,112.23,162.908,55.218,32.225 -2020-11-04 06:30:00,114.12,162.44,55.218,32.225 -2020-11-04 06:45:00,117.78,163.09799999999998,55.218,32.225 -2020-11-04 07:00:00,121.0,164.22,67.39,32.225 -2020-11-04 07:15:00,123.07,167.551,67.39,32.225 -2020-11-04 07:30:00,121.54,168.52599999999998,67.39,32.225 -2020-11-04 07:45:00,123.46,168.72799999999998,67.39,32.225 -2020-11-04 08:00:00,126.53,168.62400000000002,74.345,32.225 -2020-11-04 08:15:00,124.13,168.00099999999998,74.345,32.225 -2020-11-04 08:30:00,124.39,165.68,74.345,32.225 -2020-11-04 08:45:00,125.06,163.233,74.345,32.225 -2020-11-04 09:00:00,120.85,158.594,69.336,32.225 -2020-11-04 09:15:00,122.69,155.651,69.336,32.225 -2020-11-04 09:30:00,127.17,154.84,69.336,32.225 -2020-11-04 09:45:00,119.89,153.649,69.336,32.225 -2020-11-04 10:00:00,117.85,150.679,64.291,32.225 -2020-11-04 10:15:00,119.47,148.695,64.291,32.225 -2020-11-04 10:30:00,118.23,146.60299999999998,64.291,32.225 -2020-11-04 10:45:00,117.75,145.809,64.291,32.225 -2020-11-04 11:00:00,117.87,141.967,62.20399999999999,32.225 -2020-11-04 11:15:00,117.63,142.02100000000002,62.20399999999999,32.225 -2020-11-04 11:30:00,117.7,142.192,62.20399999999999,32.225 -2020-11-04 11:45:00,119.73,143.015,62.20399999999999,32.225 -2020-11-04 12:00:00,117.89,138.71,59.042,32.225 -2020-11-04 12:15:00,116.62,137.545,59.042,32.225 -2020-11-04 12:30:00,119.41,137.797,59.042,32.225 -2020-11-04 12:45:00,114.95,138.29399999999998,59.042,32.225 -2020-11-04 13:00:00,118.41,137.885,57.907,32.225 -2020-11-04 13:15:00,117.16,137.295,57.907,32.225 -2020-11-04 13:30:00,115.27,136.624,57.907,32.225 -2020-11-04 13:45:00,116.77,136.303,57.907,32.225 -2020-11-04 14:00:00,114.41,135.916,58.358000000000004,32.225 -2020-11-04 14:15:00,113.25,135.64700000000002,58.358000000000004,32.225 -2020-11-04 14:30:00,113.2,135.291,58.358000000000004,32.225 -2020-11-04 14:45:00,116.71,135.17600000000002,58.358000000000004,32.225 -2020-11-04 15:00:00,118.53,134.237,59.348,32.225 -2020-11-04 15:15:00,117.22,134.471,59.348,32.225 -2020-11-04 15:30:00,115.9,134.694,59.348,32.225 -2020-11-04 15:45:00,117.62,134.718,59.348,32.225 -2020-11-04 16:00:00,119.43,137.075,61.413999999999994,32.225 -2020-11-04 16:15:00,119.61,138.499,61.413999999999994,32.225 -2020-11-04 16:30:00,124.61,138.737,61.413999999999994,32.225 -2020-11-04 16:45:00,127.54,137.829,61.413999999999994,32.225 -2020-11-04 17:00:00,135.41,139.454,67.107,32.225 -2020-11-04 17:15:00,134.88,140.226,67.107,32.225 -2020-11-04 17:30:00,134.97,140.349,67.107,32.225 -2020-11-04 17:45:00,134.76,139.954,67.107,32.225 -2020-11-04 18:00:00,134.73,142.542,71.92,32.225 -2020-11-04 18:15:00,133.15,141.637,71.92,32.225 -2020-11-04 18:30:00,132.19,139.892,71.92,32.225 -2020-11-04 18:45:00,131.93,143.155,71.92,32.225 -2020-11-04 19:00:00,128.13,144.165,75.09,32.225 -2020-11-04 19:15:00,126.83,142.259,75.09,32.225 -2020-11-04 19:30:00,125.21,141.106,75.09,32.225 -2020-11-04 19:45:00,126.42,139.845,75.09,32.225 -2020-11-04 20:00:00,120.08,135.208,65.977,32.225 -2020-11-04 20:15:00,113.28,131.525,65.977,32.225 -2020-11-04 20:30:00,111.02,130.87,65.977,32.225 -2020-11-04 20:45:00,112.13,128.757,65.977,32.225 -2020-11-04 21:00:00,108.11,124.35700000000001,58.798,32.225 -2020-11-04 21:15:00,107.66,123.671,58.798,32.225 -2020-11-04 21:30:00,109.28,122.713,58.798,32.225 -2020-11-04 21:45:00,103.93,120.087,58.798,32.225 -2020-11-04 22:00:00,97.92,114.374,54.486000000000004,32.225 -2020-11-04 22:15:00,93.55,110.039,54.486000000000004,32.225 -2020-11-04 22:30:00,95.7,96.777,54.486000000000004,32.225 -2020-11-04 22:45:00,98.22,89.345,54.486000000000004,32.225 -2020-11-04 23:00:00,93.29,83.88600000000001,47.783,32.225 -2020-11-04 23:15:00,92.59,82.83200000000001,47.783,32.225 -2020-11-04 23:30:00,89.1,82.152,47.783,32.225 -2020-11-04 23:45:00,89.25,82.274,47.783,32.225 -2020-11-05 00:00:00,85.13,77.245,43.88,32.225 -2020-11-05 00:15:00,81.55,78.372,43.88,32.225 -2020-11-05 00:30:00,84.52,78.18,43.88,32.225 -2020-11-05 00:45:00,83.95,78.225,43.88,32.225 -2020-11-05 01:00:00,78.92,79.571,42.242,32.225 -2020-11-05 01:15:00,78.1,79.663,42.242,32.225 -2020-11-05 01:30:00,81.46,79.433,42.242,32.225 -2020-11-05 01:45:00,82.78,79.43,42.242,32.225 -2020-11-05 02:00:00,79.05,80.63,40.918,32.225 -2020-11-05 02:15:00,78.82,81.15899999999999,40.918,32.225 -2020-11-05 02:30:00,81.15,81.407,40.918,32.225 -2020-11-05 02:45:00,85.55,82.351,40.918,32.225 -2020-11-05 03:00:00,79.23,85.072,40.411,32.225 -2020-11-05 03:15:00,74.81,86.42,40.411,32.225 -2020-11-05 03:30:00,82.28,87.23700000000001,40.411,32.225 -2020-11-05 03:45:00,82.7,87.84700000000001,40.411,32.225 -2020-11-05 04:00:00,84.49,99.74700000000001,41.246,32.225 -2020-11-05 04:15:00,80.91,111.145,41.246,32.225 -2020-11-05 04:30:00,84.02,111.501,41.246,32.225 -2020-11-05 04:45:00,88.63,113.65700000000001,41.246,32.225 -2020-11-05 05:00:00,89.89,146.725,44.533,32.225 -2020-11-05 05:15:00,85.19,175.975,44.533,32.225 -2020-11-05 05:30:00,88.1,170.021,44.533,32.225 -2020-11-05 05:45:00,93.43,160.321,44.533,32.225 -2020-11-05 06:00:00,102.82,158.494,55.005,32.225 -2020-11-05 06:15:00,110.75,163.417,55.005,32.225 -2020-11-05 06:30:00,115.53,162.97799999999998,55.005,32.225 -2020-11-05 06:45:00,126.41,163.656,55.005,32.225 -2020-11-05 07:00:00,128.69,164.77700000000002,64.597,32.225 -2020-11-05 07:15:00,123.86,168.12,64.597,32.225 -2020-11-05 07:30:00,127.33,169.122,64.597,32.225 -2020-11-05 07:45:00,126.84,169.326,64.597,32.225 -2020-11-05 08:00:00,128.0,169.237,71.71600000000001,32.225 -2020-11-05 08:15:00,129.17,168.595,71.71600000000001,32.225 -2020-11-05 08:30:00,128.65,166.301,71.71600000000001,32.225 -2020-11-05 08:45:00,128.37,163.826,71.71600000000001,32.225 -2020-11-05 09:00:00,127.46,159.174,66.51899999999999,32.225 -2020-11-05 09:15:00,128.89,156.231,66.51899999999999,32.225 -2020-11-05 09:30:00,127.36,155.411,66.51899999999999,32.225 -2020-11-05 09:45:00,127.69,154.197,66.51899999999999,32.225 -2020-11-05 10:00:00,124.33,151.218,63.04,32.225 -2020-11-05 10:15:00,121.71,149.195,63.04,32.225 -2020-11-05 10:30:00,118.24,147.08,63.04,32.225 -2020-11-05 10:45:00,119.63,146.269,63.04,32.225 -2020-11-05 11:00:00,119.67,142.42700000000002,60.998000000000005,32.225 -2020-11-05 11:15:00,125.95,142.46,60.998000000000005,32.225 -2020-11-05 11:30:00,128.57,142.63,60.998000000000005,32.225 -2020-11-05 11:45:00,128.14,143.44,60.998000000000005,32.225 -2020-11-05 12:00:00,125.75,139.116,58.27,32.225 -2020-11-05 12:15:00,124.99,137.951,58.27,32.225 -2020-11-05 12:30:00,126.45,138.237,58.27,32.225 -2020-11-05 12:45:00,127.2,138.736,58.27,32.225 -2020-11-05 13:00:00,125.78,138.29,57.196000000000005,32.225 -2020-11-05 13:15:00,126.04,137.708,57.196000000000005,32.225 -2020-11-05 13:30:00,123.81,137.035,57.196000000000005,32.225 -2020-11-05 13:45:00,124.92,136.709,57.196000000000005,32.225 -2020-11-05 14:00:00,127.64,136.27,57.38399999999999,32.225 -2020-11-05 14:15:00,128.62,136.016,57.38399999999999,32.225 -2020-11-05 14:30:00,130.34,135.69899999999998,57.38399999999999,32.225 -2020-11-05 14:45:00,127.29,135.585,57.38399999999999,32.225 -2020-11-05 15:00:00,129.48,134.634,58.647,32.225 -2020-11-05 15:15:00,129.34,134.884,58.647,32.225 -2020-11-05 15:30:00,127.64,135.14600000000002,58.647,32.225 -2020-11-05 15:45:00,127.96,135.18200000000002,58.647,32.225 -2020-11-05 16:00:00,131.92,137.515,60.083999999999996,32.225 -2020-11-05 16:15:00,131.35,138.964,60.083999999999996,32.225 -2020-11-05 16:30:00,131.61,139.2,60.083999999999996,32.225 -2020-11-05 16:45:00,134.19,138.344,60.083999999999996,32.225 -2020-11-05 17:00:00,137.92,139.92700000000002,65.85600000000001,32.225 -2020-11-05 17:15:00,136.96,140.72,65.85600000000001,32.225 -2020-11-05 17:30:00,137.47,140.84799999999998,65.85600000000001,32.225 -2020-11-05 17:45:00,138.29,140.466,65.85600000000001,32.225 -2020-11-05 18:00:00,139.48,143.053,69.855,32.225 -2020-11-05 18:15:00,134.15,142.115,69.855,32.225 -2020-11-05 18:30:00,133.51,140.38,69.855,32.225 -2020-11-05 18:45:00,132.8,143.64,69.855,32.225 -2020-11-05 19:00:00,131.09,144.657,74.015,32.225 -2020-11-05 19:15:00,127.89,142.741,74.015,32.225 -2020-11-05 19:30:00,128.05,141.57299999999998,74.015,32.225 -2020-11-05 19:45:00,123.88,140.283,74.015,32.225 -2020-11-05 20:00:00,116.5,135.664,65.316,32.225 -2020-11-05 20:15:00,113.48,131.972,65.316,32.225 -2020-11-05 20:30:00,112.84,131.285,65.316,32.225 -2020-11-05 20:45:00,114.31,129.164,65.316,32.225 -2020-11-05 21:00:00,103.83,124.757,58.403999999999996,32.225 -2020-11-05 21:15:00,105.69,124.059,58.403999999999996,32.225 -2020-11-05 21:30:00,103.3,123.11,58.403999999999996,32.225 -2020-11-05 21:45:00,102.93,120.469,58.403999999999996,32.225 -2020-11-05 22:00:00,97.89,114.755,54.092,32.225 -2020-11-05 22:15:00,97.8,110.404,54.092,32.225 -2020-11-05 22:30:00,92.88,97.184,54.092,32.225 -2020-11-05 22:45:00,97.46,89.76,54.092,32.225 -2020-11-05 23:00:00,92.45,84.305,48.18600000000001,32.225 -2020-11-05 23:15:00,91.31,83.226,48.18600000000001,32.225 -2020-11-05 23:30:00,83.3,82.54899999999999,48.18600000000001,32.225 -2020-11-05 23:45:00,84.68,82.65700000000001,48.18600000000001,32.225 -2020-11-06 00:00:00,84.7,76.2,45.18899999999999,32.225 -2020-11-06 00:15:00,85.23,77.523,45.18899999999999,32.225 -2020-11-06 00:30:00,83.88,77.358,45.18899999999999,32.225 -2020-11-06 00:45:00,80.5,77.637,45.18899999999999,32.225 -2020-11-06 01:00:00,80.34,78.648,43.256,32.225 -2020-11-06 01:15:00,81.37,79.095,43.256,32.225 -2020-11-06 01:30:00,77.99,79.031,43.256,32.225 -2020-11-06 01:45:00,77.75,78.985,43.256,32.225 -2020-11-06 02:00:00,79.46,80.635,42.312,32.225 -2020-11-06 02:15:00,81.87,81.078,42.312,32.225 -2020-11-06 02:30:00,75.94,81.99,42.312,32.225 -2020-11-06 02:45:00,73.82,82.675,42.312,32.225 -2020-11-06 03:00:00,72.73,85.07600000000001,41.833,32.225 -2020-11-06 03:15:00,81.36,86.537,41.833,32.225 -2020-11-06 03:30:00,82.16,87.24600000000001,41.833,32.225 -2020-11-06 03:45:00,82.46,88.412,41.833,32.225 -2020-11-06 04:00:00,78.14,100.52,42.732,32.225 -2020-11-06 04:15:00,80.31,111.135,42.732,32.225 -2020-11-06 04:30:00,83.97,112.02799999999999,42.732,32.225 -2020-11-06 04:45:00,89.09,113.204,42.732,32.225 -2020-11-06 05:00:00,92.15,145.32399999999998,46.254,32.225 -2020-11-06 05:15:00,86.95,175.96,46.254,32.225 -2020-11-06 05:30:00,90.34,170.75799999999998,46.254,32.225 -2020-11-06 05:45:00,99.94,160.809,46.254,32.225 -2020-11-06 06:00:00,111.88,159.36700000000002,56.76,32.225 -2020-11-06 06:15:00,114.2,163.43200000000002,56.76,32.225 -2020-11-06 06:30:00,122.58,162.452,56.76,32.225 -2020-11-06 06:45:00,120.37,164.13,56.76,32.225 -2020-11-06 07:00:00,125.85,164.983,66.029,32.225 -2020-11-06 07:15:00,126.83,169.363,66.029,32.225 -2020-11-06 07:30:00,126.69,169.503,66.029,32.225 -2020-11-06 07:45:00,128.85,169.049,66.029,32.225 -2020-11-06 08:00:00,132.52,168.55,73.128,32.225 -2020-11-06 08:15:00,131.81,167.88299999999998,73.128,32.225 -2020-11-06 08:30:00,131.12,166.232,73.128,32.225 -2020-11-06 08:45:00,131.33,162.619,73.128,32.225 -2020-11-06 09:00:00,132.45,157.394,68.23100000000001,32.225 -2020-11-06 09:15:00,134.02,155.541,68.23100000000001,32.225 -2020-11-06 09:30:00,135.36,154.16899999999998,68.23100000000001,32.225 -2020-11-06 09:45:00,135.72,152.999,68.23100000000001,32.225 -2020-11-06 10:00:00,135.71,149.14,64.733,32.225 -2020-11-06 10:15:00,136.19,147.489,64.733,32.225 -2020-11-06 10:30:00,134.9,145.493,64.733,32.225 -2020-11-06 10:45:00,134.66,144.32399999999998,64.733,32.225 -2020-11-06 11:00:00,134.81,140.532,62.0,32.225 -2020-11-06 11:15:00,135.06,139.54399999999998,62.0,32.225 -2020-11-06 11:30:00,134.53,140.829,62.0,32.225 -2020-11-06 11:45:00,137.14,141.335,62.0,32.225 -2020-11-06 12:00:00,134.12,137.924,57.876999999999995,32.225 -2020-11-06 12:15:00,133.37,135.04399999999998,57.876999999999995,32.225 -2020-11-06 12:30:00,132.61,135.516,57.876999999999995,32.225 -2020-11-06 12:45:00,131.3,136.129,57.876999999999995,32.225 -2020-11-06 13:00:00,128.69,136.524,55.585,32.225 -2020-11-06 13:15:00,127.97,136.601,55.585,32.225 -2020-11-06 13:30:00,124.2,136.194,55.585,32.225 -2020-11-06 13:45:00,123.92,135.91299999999998,55.585,32.225 -2020-11-06 14:00:00,118.95,134.342,54.5,32.225 -2020-11-06 14:15:00,120.9,134.113,54.5,32.225 -2020-11-06 14:30:00,121.51,134.691,54.5,32.225 -2020-11-06 14:45:00,120.58,134.575,54.5,32.225 -2020-11-06 15:00:00,122.67,133.238,55.131,32.225 -2020-11-06 15:15:00,118.7,133.108,55.131,32.225 -2020-11-06 15:30:00,121.37,132.126,55.131,32.225 -2020-11-06 15:45:00,120.79,132.526,55.131,32.225 -2020-11-06 16:00:00,122.13,133.756,56.8,32.225 -2020-11-06 16:15:00,122.5,135.602,56.8,32.225 -2020-11-06 16:30:00,127.43,135.842,56.8,32.225 -2020-11-06 16:45:00,129.4,134.688,56.8,32.225 -2020-11-06 17:00:00,133.06,137.007,63.428999999999995,32.225 -2020-11-06 17:15:00,134.26,137.476,63.428999999999995,32.225 -2020-11-06 17:30:00,132.78,137.447,63.428999999999995,32.225 -2020-11-06 17:45:00,131.33,136.857,63.428999999999995,32.225 -2020-11-06 18:00:00,134.08,139.959,67.915,32.225 -2020-11-06 18:15:00,130.5,138.378,67.915,32.225 -2020-11-06 18:30:00,129.8,136.88299999999998,67.915,32.225 -2020-11-06 18:45:00,133.03,140.289,67.915,32.225 -2020-11-06 19:00:00,126.8,142.261,69.428,32.225 -2020-11-06 19:15:00,125.27,141.47899999999998,69.428,32.225 -2020-11-06 19:30:00,122.86,140.039,69.428,32.225 -2020-11-06 19:45:00,124.09,138.034,69.428,32.225 -2020-11-06 20:00:00,114.98,133.422,60.56100000000001,32.225 -2020-11-06 20:15:00,113.0,130.02100000000002,60.56100000000001,32.225 -2020-11-06 20:30:00,109.07,129.093,60.56100000000001,32.225 -2020-11-06 20:45:00,109.58,127.03299999999999,60.56100000000001,32.225 -2020-11-06 21:00:00,102.28,123.459,55.18600000000001,32.225 -2020-11-06 21:15:00,106.27,123.67200000000001,55.18600000000001,32.225 -2020-11-06 21:30:00,104.99,122.706,55.18600000000001,32.225 -2020-11-06 21:45:00,96.99,120.491,55.18600000000001,32.225 -2020-11-06 22:00:00,88.19,115.375,51.433,32.225 -2020-11-06 22:15:00,86.68,110.825,51.433,32.225 -2020-11-06 22:30:00,82.9,103.704,51.433,32.225 -2020-11-06 22:45:00,82.11,98.971,51.433,32.225 -2020-11-06 23:00:00,77.89,93.86200000000001,46.201,32.225 -2020-11-06 23:15:00,81.36,90.863,46.201,32.225 -2020-11-06 23:30:00,75.34,88.525,46.201,32.225 -2020-11-06 23:45:00,74.67,88.12899999999999,46.201,32.225 -2020-11-07 00:00:00,72.4,75.25399999999999,42.576,32.047 -2020-11-07 00:15:00,76.3,73.567,42.576,32.047 -2020-11-07 00:30:00,76.56,74.063,42.576,32.047 -2020-11-07 00:45:00,74.82,74.486,42.576,32.047 -2020-11-07 01:00:00,70.47,76.05,39.34,32.047 -2020-11-07 01:15:00,73.1,76.13,39.34,32.047 -2020-11-07 01:30:00,72.65,75.42,39.34,32.047 -2020-11-07 01:45:00,66.71,75.745,39.34,32.047 -2020-11-07 02:00:00,66.31,77.455,37.582,32.047 -2020-11-07 02:15:00,71.52,77.346,37.582,32.047 -2020-11-07 02:30:00,68.13,77.218,37.582,32.047 -2020-11-07 02:45:00,68.12,78.291,37.582,32.047 -2020-11-07 03:00:00,64.49,80.518,36.523,32.047 -2020-11-07 03:15:00,70.44,80.949,36.523,32.047 -2020-11-07 03:30:00,71.27,80.803,36.523,32.047 -2020-11-07 03:45:00,70.23,82.641,36.523,32.047 -2020-11-07 04:00:00,62.21,91.421,36.347,32.047 -2020-11-07 04:15:00,62.81,100.102,36.347,32.047 -2020-11-07 04:30:00,63.23,98.935,36.347,32.047 -2020-11-07 04:45:00,63.56,99.926,36.347,32.047 -2020-11-07 05:00:00,64.36,118.78299999999999,36.407,32.047 -2020-11-07 05:15:00,65.17,133.07,36.407,32.047 -2020-11-07 05:30:00,64.94,128.732,36.407,32.047 -2020-11-07 05:45:00,64.25,124.027,36.407,32.047 -2020-11-07 06:00:00,70.3,138.67,38.228,32.047 -2020-11-07 06:15:00,70.95,156.255,38.228,32.047 -2020-11-07 06:30:00,68.59,150.749,38.228,32.047 -2020-11-07 06:45:00,70.43,145.471,38.228,32.047 -2020-11-07 07:00:00,75.46,143.015,41.905,32.047 -2020-11-07 07:15:00,76.33,146.082,41.905,32.047 -2020-11-07 07:30:00,78.63,148.593,41.905,32.047 -2020-11-07 07:45:00,81.45,151.06799999999998,41.905,32.047 -2020-11-07 08:00:00,83.9,153.178,46.051,32.047 -2020-11-07 08:15:00,83.65,154.811,46.051,32.047 -2020-11-07 08:30:00,84.05,154.248,46.051,32.047 -2020-11-07 08:45:00,85.96,153.055,46.051,32.047 -2020-11-07 09:00:00,87.34,150.039,46.683,32.047 -2020-11-07 09:15:00,87.81,148.872,46.683,32.047 -2020-11-07 09:30:00,86.74,148.283,46.683,32.047 -2020-11-07 09:45:00,86.17,147.033,46.683,32.047 -2020-11-07 10:00:00,86.08,143.433,44.425,32.047 -2020-11-07 10:15:00,85.25,141.98,44.425,32.047 -2020-11-07 10:30:00,85.52,139.95600000000002,44.425,32.047 -2020-11-07 10:45:00,85.84,139.55,44.425,32.047 -2020-11-07 11:00:00,86.36,135.795,42.148999999999994,32.047 -2020-11-07 11:15:00,87.42,134.597,42.148999999999994,32.047 -2020-11-07 11:30:00,87.9,135.195,42.148999999999994,32.047 -2020-11-07 11:45:00,89.42,135.241,42.148999999999994,32.047 -2020-11-07 12:00:00,86.24,131.194,39.683,32.047 -2020-11-07 12:15:00,84.54,129.049,39.683,32.047 -2020-11-07 12:30:00,83.03,129.739,39.683,32.047 -2020-11-07 12:45:00,82.28,130.041,39.683,32.047 -2020-11-07 13:00:00,80.02,129.766,37.154,32.047 -2020-11-07 13:15:00,79.68,128.201,37.154,32.047 -2020-11-07 13:30:00,78.82,127.529,37.154,32.047 -2020-11-07 13:45:00,78.57,127.15,37.154,32.047 -2020-11-07 14:00:00,77.79,126.416,36.457,32.047 -2020-11-07 14:15:00,78.58,125.419,36.457,32.047 -2020-11-07 14:30:00,78.89,124.588,36.457,32.047 -2020-11-07 14:45:00,80.87,124.78399999999999,36.457,32.047 -2020-11-07 15:00:00,80.77,124.04299999999999,38.257,32.047 -2020-11-07 15:15:00,82.29,124.734,38.257,32.047 -2020-11-07 15:30:00,83.92,124.965,38.257,32.047 -2020-11-07 15:45:00,86.04,125.09299999999999,38.257,32.047 -2020-11-07 16:00:00,87.33,126.383,41.181000000000004,32.047 -2020-11-07 16:15:00,88.36,128.577,41.181000000000004,32.047 -2020-11-07 16:30:00,90.62,128.856,41.181000000000004,32.047 -2020-11-07 16:45:00,95.89,128.364,41.181000000000004,32.047 -2020-11-07 17:00:00,101.97,130.005,46.806000000000004,32.047 -2020-11-07 17:15:00,101.76,130.86700000000002,46.806000000000004,32.047 -2020-11-07 17:30:00,104.34,130.73,46.806000000000004,32.047 -2020-11-07 17:45:00,104.83,130.05,46.806000000000004,32.047 -2020-11-07 18:00:00,105.8,133.376,52.073,32.047 -2020-11-07 18:15:00,105.2,133.58700000000002,52.073,32.047 -2020-11-07 18:30:00,103.89,133.498,52.073,32.047 -2020-11-07 18:45:00,101.96,133.372,52.073,32.047 -2020-11-07 19:00:00,100.94,135.424,53.608000000000004,32.047 -2020-11-07 19:15:00,98.9,133.929,53.608000000000004,32.047 -2020-11-07 19:30:00,97.79,133.262,53.608000000000004,32.047 -2020-11-07 19:45:00,96.56,131.755,53.608000000000004,32.047 -2020-11-07 20:00:00,91.1,128.975,50.265,32.047 -2020-11-07 20:15:00,85.93,126.74799999999999,50.265,32.047 -2020-11-07 20:30:00,85.7,125.228,50.265,32.047 -2020-11-07 20:45:00,83.77,123.581,50.265,32.047 -2020-11-07 21:00:00,79.67,120.964,45.766000000000005,32.047 -2020-11-07 21:15:00,79.69,121.325,45.766000000000005,32.047 -2020-11-07 21:30:00,78.88,121.25399999999999,45.766000000000005,32.047 -2020-11-07 21:45:00,77.61,118.55,45.766000000000005,32.047 -2020-11-07 22:00:00,75.18,114.319,45.97,32.047 -2020-11-07 22:15:00,76.21,111.5,45.97,32.047 -2020-11-07 22:30:00,73.1,108.414,45.97,32.047 -2020-11-07 22:45:00,72.11,105.071,45.97,32.047 -2020-11-07 23:00:00,68.65,101.348,40.415,32.047 -2020-11-07 23:15:00,68.16,97.39200000000001,40.415,32.047 -2020-11-07 23:30:00,64.73,94.814,40.415,32.047 -2020-11-07 23:45:00,63.74,92.92399999999999,40.415,32.047 -2020-11-08 00:00:00,56.78,76.44800000000001,36.376,32.047 -2020-11-08 00:15:00,59.59,74.069,36.376,32.047 -2020-11-08 00:30:00,59.04,74.27,36.376,32.047 -2020-11-08 00:45:00,58.74,75.078,36.376,32.047 -2020-11-08 01:00:00,56.0,76.681,32.992,32.047 -2020-11-08 01:15:00,56.15,77.38,32.992,32.047 -2020-11-08 01:30:00,53.94,76.958,32.992,32.047 -2020-11-08 01:45:00,55.96,76.921,32.992,32.047 -2020-11-08 02:00:00,53.18,78.202,32.327,32.047 -2020-11-08 02:15:00,54.85,77.861,32.327,32.047 -2020-11-08 02:30:00,53.77,78.33800000000001,32.327,32.047 -2020-11-08 02:45:00,54.28,79.574,32.327,32.047 -2020-11-08 03:00:00,54.05,82.25399999999999,31.169,32.047 -2020-11-08 03:15:00,54.15,82.494,31.169,32.047 -2020-11-08 03:30:00,54.49,82.912,31.169,32.047 -2020-11-08 03:45:00,52.1,84.354,31.169,32.047 -2020-11-08 04:00:00,54.3,92.965,30.796,32.047 -2020-11-08 04:15:00,54.34,100.863,30.796,32.047 -2020-11-08 04:30:00,55.34,100.29799999999999,30.796,32.047 -2020-11-08 04:45:00,52.7,101.26799999999999,30.796,32.047 -2020-11-08 05:00:00,55.15,118.09200000000001,30.848000000000003,32.047 -2020-11-08 05:15:00,56.75,130.61,30.848000000000003,32.047 -2020-11-08 05:30:00,56.68,125.994,30.848000000000003,32.047 -2020-11-08 05:45:00,57.37,121.301,30.848000000000003,32.047 -2020-11-08 06:00:00,58.77,134.852,31.166,32.047 -2020-11-08 06:15:00,56.79,151.719,31.166,32.047 -2020-11-08 06:30:00,59.58,145.264,31.166,32.047 -2020-11-08 06:45:00,61.46,138.931,31.166,32.047 -2020-11-08 07:00:00,63.74,138.10299999999998,33.527,32.047 -2020-11-08 07:15:00,64.26,139.97799999999998,33.527,32.047 -2020-11-08 07:30:00,66.51,142.24200000000002,33.527,32.047 -2020-11-08 07:45:00,65.6,144.219,33.527,32.047 -2020-11-08 08:00:00,71.16,147.767,36.616,32.047 -2020-11-08 08:15:00,72.66,149.776,36.616,32.047 -2020-11-08 08:30:00,73.14,150.658,36.616,32.047 -2020-11-08 08:45:00,75.05,150.73,36.616,32.047 -2020-11-08 09:00:00,75.61,147.37,37.857,32.047 -2020-11-08 09:15:00,73.91,146.389,37.857,32.047 -2020-11-08 09:30:00,74.91,145.84799999999998,37.857,32.047 -2020-11-08 09:45:00,74.9,144.869,37.857,32.047 -2020-11-08 10:00:00,75.28,143.132,36.319,32.047 -2020-11-08 10:15:00,81.36,142.055,36.319,32.047 -2020-11-08 10:30:00,83.52,140.497,36.319,32.047 -2020-11-08 10:45:00,84.81,139.138,36.319,32.047 -2020-11-08 11:00:00,89.21,135.871,37.236999999999995,32.047 -2020-11-08 11:15:00,90.66,134.592,37.236999999999995,32.047 -2020-11-08 11:30:00,90.88,134.764,37.236999999999995,32.047 -2020-11-08 11:45:00,89.95,135.306,37.236999999999995,32.047 -2020-11-08 12:00:00,87.53,131.175,34.871,32.047 -2020-11-08 12:15:00,85.32,130.161,34.871,32.047 -2020-11-08 12:30:00,83.34,129.931,34.871,32.047 -2020-11-08 12:45:00,78.63,129.341,34.871,32.047 -2020-11-08 13:00:00,69.57,128.405,29.738000000000003,32.047 -2020-11-08 13:15:00,69.16,128.797,29.738000000000003,32.047 -2020-11-08 13:30:00,66.72,127.609,29.738000000000003,32.047 -2020-11-08 13:45:00,67.62,127.12299999999999,29.738000000000003,32.047 -2020-11-08 14:00:00,66.83,126.906,27.333000000000002,32.047 -2020-11-08 14:15:00,66.82,126.916,27.333000000000002,32.047 -2020-11-08 14:30:00,67.73,126.59700000000001,27.333000000000002,32.047 -2020-11-08 14:45:00,69.57,126.15100000000001,27.333000000000002,32.047 -2020-11-08 15:00:00,71.36,124.36,28.232,32.047 -2020-11-08 15:15:00,70.85,125.339,28.232,32.047 -2020-11-08 15:30:00,72.33,125.96799999999999,28.232,32.047 -2020-11-08 15:45:00,74.18,126.693,28.232,32.047 -2020-11-08 16:00:00,77.95,128.625,32.815,32.047 -2020-11-08 16:15:00,78.12,130.292,32.815,32.047 -2020-11-08 16:30:00,81.11,131.095,32.815,32.047 -2020-11-08 16:45:00,86.31,130.768,32.815,32.047 -2020-11-08 17:00:00,91.61,132.41899999999998,43.068999999999996,32.047 -2020-11-08 17:15:00,92.71,133.623,43.068999999999996,32.047 -2020-11-08 17:30:00,94.77,133.976,43.068999999999996,32.047 -2020-11-08 17:45:00,96.36,135.0,43.068999999999996,32.047 -2020-11-08 18:00:00,97.41,138.14700000000002,50.498999999999995,32.047 -2020-11-08 18:15:00,96.11,139.069,50.498999999999995,32.047 -2020-11-08 18:30:00,96.01,137.498,50.498999999999995,32.047 -2020-11-08 18:45:00,94.28,138.656,50.498999999999995,32.047 -2020-11-08 19:00:00,92.22,141.273,53.481,32.047 -2020-11-08 19:15:00,90.52,139.755,53.481,32.047 -2020-11-08 19:30:00,89.88,138.872,53.481,32.047 -2020-11-08 19:45:00,88.47,138.131,53.481,32.047 -2020-11-08 20:00:00,86.19,135.379,51.687,32.047 -2020-11-08 20:15:00,84.49,133.74200000000002,51.687,32.047 -2020-11-08 20:30:00,83.73,133.315,51.687,32.047 -2020-11-08 20:45:00,83.27,130.233,51.687,32.047 -2020-11-08 21:00:00,79.79,125.823,47.674,32.047 -2020-11-08 21:15:00,80.23,125.645,47.674,32.047 -2020-11-08 21:30:00,79.81,125.53,47.674,32.047 -2020-11-08 21:45:00,80.44,123.037,47.674,32.047 -2020-11-08 22:00:00,78.11,118.802,48.178000000000004,32.047 -2020-11-08 22:15:00,78.45,114.829,48.178000000000004,32.047 -2020-11-08 22:30:00,76.78,109.508,48.178000000000004,32.047 -2020-11-08 22:45:00,77.39,105.12899999999999,48.178000000000004,32.047 -2020-11-08 23:00:00,74.59,99.45,42.553999999999995,32.047 -2020-11-08 23:15:00,73.28,97.175,42.553999999999995,32.047 -2020-11-08 23:30:00,72.41,94.932,42.553999999999995,32.047 -2020-11-08 23:45:00,72.06,93.675,42.553999999999995,32.047 -2020-11-09 00:00:00,68.05,80.07300000000001,37.177,32.225 -2020-11-09 00:15:00,68.1,79.87,37.177,32.225 -2020-11-09 00:30:00,68.17,79.997,37.177,32.225 -2020-11-09 00:45:00,67.31,80.294,37.177,32.225 -2020-11-09 01:00:00,65.98,82.068,35.358000000000004,32.225 -2020-11-09 01:15:00,65.25,82.456,35.358000000000004,32.225 -2020-11-09 01:30:00,64.89,82.23299999999999,35.358000000000004,32.225 -2020-11-09 01:45:00,65.37,82.22,35.358000000000004,32.225 -2020-11-09 02:00:00,63.02,83.67399999999999,35.03,32.225 -2020-11-09 02:15:00,64.11,83.83,35.03,32.225 -2020-11-09 02:30:00,64.54,84.574,35.03,32.225 -2020-11-09 02:45:00,64.76,85.359,35.03,32.225 -2020-11-09 03:00:00,64.28,89.001,34.394,32.225 -2020-11-09 03:15:00,66.01,90.586,34.394,32.225 -2020-11-09 03:30:00,66.41,91.126,34.394,32.225 -2020-11-09 03:45:00,67.37,92.016,34.394,32.225 -2020-11-09 04:00:00,69.97,104.598,34.421,32.225 -2020-11-09 04:15:00,71.09,116.309,34.421,32.225 -2020-11-09 04:30:00,71.91,116.883,34.421,32.225 -2020-11-09 04:45:00,79.32,118.117,34.421,32.225 -2020-11-09 05:00:00,82.71,147.628,39.435,32.225 -2020-11-09 05:15:00,87.16,176.90900000000002,39.435,32.225 -2020-11-09 05:30:00,87.32,171.798,39.435,32.225 -2020-11-09 05:45:00,101.72,162.31799999999998,39.435,32.225 -2020-11-09 06:00:00,110.45,160.78,55.685,32.225 -2020-11-09 06:15:00,113.86,164.645,55.685,32.225 -2020-11-09 06:30:00,115.39,164.861,55.685,32.225 -2020-11-09 06:45:00,118.64,166.217,55.685,32.225 -2020-11-09 07:00:00,122.58,167.396,66.837,32.225 -2020-11-09 07:15:00,122.82,170.988,66.837,32.225 -2020-11-09 07:30:00,126.22,172.438,66.837,32.225 -2020-11-09 07:45:00,125.54,172.898,66.837,32.225 -2020-11-09 08:00:00,127.34,172.813,72.217,32.225 -2020-11-09 08:15:00,127.18,172.938,72.217,32.225 -2020-11-09 08:30:00,126.88,170.8,72.217,32.225 -2020-11-09 08:45:00,127.51,168.736,72.217,32.225 -2020-11-09 09:00:00,128.25,164.46599999999998,66.117,32.225 -2020-11-09 09:15:00,130.74,160.498,66.117,32.225 -2020-11-09 09:30:00,135.41,158.94,66.117,32.225 -2020-11-09 09:45:00,128.44,157.295,66.117,32.225 -2020-11-09 10:00:00,121.64,155.171,62.1,32.225 -2020-11-09 10:15:00,122.64,153.78,62.1,32.225 -2020-11-09 10:30:00,121.37,151.439,62.1,32.225 -2020-11-09 10:45:00,120.12,150.023,62.1,32.225 -2020-11-09 11:00:00,119.17,145.142,60.021,32.225 -2020-11-09 11:15:00,118.05,145.196,60.021,32.225 -2020-11-09 11:30:00,120.45,146.566,60.021,32.225 -2020-11-09 11:45:00,127.24,146.98,60.021,32.225 -2020-11-09 12:00:00,123.12,143.612,56.75899999999999,32.225 -2020-11-09 12:15:00,119.35,142.637,56.75899999999999,32.225 -2020-11-09 12:30:00,119.39,142.264,56.75899999999999,32.225 -2020-11-09 12:45:00,119.84,142.754,56.75899999999999,32.225 -2020-11-09 13:00:00,116.9,142.586,56.04600000000001,32.225 -2020-11-09 13:15:00,116.79,141.71200000000002,56.04600000000001,32.225 -2020-11-09 13:30:00,113.73,140.2,56.04600000000001,32.225 -2020-11-09 13:45:00,114.61,140.019,56.04600000000001,32.225 -2020-11-09 14:00:00,115.9,139.042,55.475,32.225 -2020-11-09 14:15:00,116.58,138.798,55.475,32.225 -2020-11-09 14:30:00,120.75,138.077,55.475,32.225 -2020-11-09 14:45:00,120.18,138.275,55.475,32.225 -2020-11-09 15:00:00,123.17,137.644,57.048,32.225 -2020-11-09 15:15:00,122.33,137.42,57.048,32.225 -2020-11-09 15:30:00,124.39,137.74,57.048,32.225 -2020-11-09 15:45:00,125.72,138.004,57.048,32.225 -2020-11-09 16:00:00,126.17,140.192,59.06,32.225 -2020-11-09 16:15:00,125.85,141.375,59.06,32.225 -2020-11-09 16:30:00,127.02,141.27700000000002,59.06,32.225 -2020-11-09 16:45:00,131.92,140.181,59.06,32.225 -2020-11-09 17:00:00,136.09,141.148,65.419,32.225 -2020-11-09 17:15:00,136.48,141.859,65.419,32.225 -2020-11-09 17:30:00,137.83,141.708,65.419,32.225 -2020-11-09 17:45:00,137.56,141.585,65.419,32.225 -2020-11-09 18:00:00,135.48,144.59,69.345,32.225 -2020-11-09 18:15:00,133.71,143.328,69.345,32.225 -2020-11-09 18:30:00,132.59,141.934,69.345,32.225 -2020-11-09 18:45:00,132.3,144.716,69.345,32.225 -2020-11-09 19:00:00,127.93,146.127,73.825,32.225 -2020-11-09 19:15:00,126.34,144.3,73.825,32.225 -2020-11-09 19:30:00,123.57,143.6,73.825,32.225 -2020-11-09 19:45:00,121.6,142.05,73.825,32.225 -2020-11-09 20:00:00,115.11,137.256,64.027,32.225 -2020-11-09 20:15:00,112.04,134.487,64.027,32.225 -2020-11-09 20:30:00,108.08,132.988,64.027,32.225 -2020-11-09 20:45:00,107.81,131.05700000000002,64.027,32.225 -2020-11-09 21:00:00,107.92,126.76799999999999,57.952,32.225 -2020-11-09 21:15:00,109.06,125.969,57.952,32.225 -2020-11-09 21:30:00,106.65,125.475,57.952,32.225 -2020-11-09 21:45:00,100.41,122.554,57.952,32.225 -2020-11-09 22:00:00,92.6,115.631,53.031000000000006,32.225 -2020-11-09 22:15:00,93.12,111.51899999999999,53.031000000000006,32.225 -2020-11-09 22:30:00,95.32,98.29700000000001,53.031000000000006,32.225 -2020-11-09 22:45:00,94.64,90.72200000000001,53.031000000000006,32.225 -2020-11-09 23:00:00,90.53,85.54799999999999,45.085,32.225 -2020-11-09 23:15:00,89.52,84.38799999999999,45.085,32.225 -2020-11-09 23:30:00,88.09,83.963,45.085,32.225 -2020-11-09 23:45:00,87.29,84.242,45.085,32.225 -2020-11-10 00:00:00,79.63,79.074,42.843,32.225 -2020-11-10 00:15:00,76.93,80.104,42.843,32.225 -2020-11-10 00:30:00,82.65,79.929,42.843,32.225 -2020-11-10 00:45:00,81.56,79.919,42.843,32.225 -2020-11-10 01:00:00,80.25,81.372,41.542,32.225 -2020-11-10 01:15:00,76.77,81.541,41.542,32.225 -2020-11-10 01:30:00,79.55,81.388,41.542,32.225 -2020-11-10 01:45:00,79.66,81.351,41.542,32.225 -2020-11-10 02:00:00,78.05,82.617,40.19,32.225 -2020-11-10 02:15:00,73.84,83.189,40.19,32.225 -2020-11-10 02:30:00,77.2,83.39,40.19,32.225 -2020-11-10 02:45:00,79.47,84.315,40.19,32.225 -2020-11-10 03:00:00,79.27,86.96600000000001,39.626,32.225 -2020-11-10 03:15:00,78.58,88.43700000000001,39.626,32.225 -2020-11-10 03:30:00,80.16,89.265,39.626,32.225 -2020-11-10 03:45:00,80.07,89.79799999999999,39.626,32.225 -2020-11-10 04:00:00,78.72,101.744,40.196999999999996,32.225 -2020-11-10 04:15:00,81.21,113.26899999999999,40.196999999999996,32.225 -2020-11-10 04:30:00,83.65,113.595,40.196999999999996,32.225 -2020-11-10 04:45:00,86.52,115.79,40.196999999999996,32.225 -2020-11-10 05:00:00,87.82,149.101,43.378,32.225 -2020-11-10 05:15:00,90.74,178.55599999999998,43.378,32.225 -2020-11-10 05:30:00,99.8,172.574,43.378,32.225 -2020-11-10 05:45:00,101.83,162.769,43.378,32.225 -2020-11-10 06:00:00,103.85,160.92600000000002,55.691,32.225 -2020-11-10 06:15:00,109.52,165.903,55.691,32.225 -2020-11-10 06:30:00,115.89,165.612,55.691,32.225 -2020-11-10 06:45:00,121.67,166.38299999999998,55.691,32.225 -2020-11-10 07:00:00,125.99,167.50599999999997,65.567,32.225 -2020-11-10 07:15:00,125.23,170.90400000000002,65.567,32.225 -2020-11-10 07:30:00,125.48,172.033,65.567,32.225 -2020-11-10 07:45:00,127.15,172.24599999999998,65.567,32.225 -2020-11-10 08:00:00,130.42,172.225,73.001,32.225 -2020-11-10 08:15:00,129.33,171.486,73.001,32.225 -2020-11-10 08:30:00,128.62,169.31900000000002,73.001,32.225 -2020-11-10 08:45:00,130.72,166.703,73.001,32.225 -2020-11-10 09:00:00,130.86,161.987,67.08800000000001,32.225 -2020-11-10 09:15:00,133.46,159.045,67.08800000000001,32.225 -2020-11-10 09:30:00,134.07,158.188,67.08800000000001,32.225 -2020-11-10 09:45:00,134.92,156.86,67.08800000000001,32.225 -2020-11-10 10:00:00,138.69,153.835,62.803000000000004,32.225 -2020-11-10 10:15:00,136.4,151.625,62.803000000000004,32.225 -2020-11-10 10:30:00,138.3,149.394,62.803000000000004,32.225 -2020-11-10 10:45:00,138.45,148.505,62.803000000000004,32.225 -2020-11-10 11:00:00,138.8,144.653,60.155,32.225 -2020-11-10 11:15:00,140.26,144.589,60.155,32.225 -2020-11-10 11:30:00,138.98,144.757,60.155,32.225 -2020-11-10 11:45:00,138.44,145.502,60.155,32.225 -2020-11-10 12:00:00,136.24,141.084,56.845,32.225 -2020-11-10 12:15:00,132.78,139.921,56.845,32.225 -2020-11-10 12:30:00,132.82,140.374,56.845,32.225 -2020-11-10 12:45:00,133.55,140.88,56.845,32.225 -2020-11-10 13:00:00,133.51,140.255,56.163000000000004,32.225 -2020-11-10 13:15:00,133.18,139.71,56.163000000000004,32.225 -2020-11-10 13:30:00,132.48,139.026,56.163000000000004,32.225 -2020-11-10 13:45:00,135.29,138.667,56.163000000000004,32.225 -2020-11-10 14:00:00,132.64,137.986,55.934,32.225 -2020-11-10 14:15:00,133.0,137.806,55.934,32.225 -2020-11-10 14:30:00,130.66,137.678,55.934,32.225 -2020-11-10 14:45:00,129.66,137.57,55.934,32.225 -2020-11-10 15:00:00,129.09,136.569,57.43899999999999,32.225 -2020-11-10 15:15:00,128.92,136.889,57.43899999999999,32.225 -2020-11-10 15:30:00,125.2,137.341,57.43899999999999,32.225 -2020-11-10 15:45:00,127.27,137.435,57.43899999999999,32.225 -2020-11-10 16:00:00,129.73,139.649,59.968999999999994,32.225 -2020-11-10 16:15:00,128.3,141.219,59.968999999999994,32.225 -2020-11-10 16:30:00,129.86,141.44799999999998,59.968999999999994,32.225 -2020-11-10 16:45:00,133.6,140.843,59.968999999999994,32.225 -2020-11-10 17:00:00,138.8,142.224,67.428,32.225 -2020-11-10 17:15:00,136.91,143.123,67.428,32.225 -2020-11-10 17:30:00,136.54,143.278,67.428,32.225 -2020-11-10 17:45:00,137.56,142.963,67.428,32.225 -2020-11-10 18:00:00,136.51,145.55,71.533,32.225 -2020-11-10 18:15:00,134.26,144.453,71.533,32.225 -2020-11-10 18:30:00,133.81,142.766,71.533,32.225 -2020-11-10 18:45:00,133.71,146.015,71.533,32.225 -2020-11-10 19:00:00,131.4,147.056,73.32300000000001,32.225 -2020-11-10 19:15:00,128.61,145.097,73.32300000000001,32.225 -2020-11-10 19:30:00,126.59,143.855,73.32300000000001,32.225 -2020-11-10 19:45:00,125.18,142.424,73.32300000000001,32.225 -2020-11-10 20:00:00,121.52,137.89600000000002,64.166,32.225 -2020-11-10 20:15:00,115.1,134.157,64.166,32.225 -2020-11-10 20:30:00,113.81,133.317,64.166,32.225 -2020-11-10 20:45:00,112.32,131.153,64.166,32.225 -2020-11-10 21:00:00,107.06,126.714,57.891999999999996,32.225 -2020-11-10 21:15:00,105.3,125.95200000000001,57.891999999999996,32.225 -2020-11-10 21:30:00,102.67,125.04799999999999,57.891999999999996,32.225 -2020-11-10 21:45:00,101.94,122.339,57.891999999999996,32.225 -2020-11-10 22:00:00,98.35,116.615,53.242,32.225 -2020-11-10 22:15:00,100.16,112.191,53.242,32.225 -2020-11-10 22:30:00,98.28,99.18,53.242,32.225 -2020-11-10 22:45:00,96.68,91.795,53.242,32.225 -2020-11-10 23:00:00,88.01,86.35799999999999,46.665,32.225 -2020-11-10 23:15:00,84.04,85.154,46.665,32.225 -2020-11-10 23:30:00,84.59,84.492,46.665,32.225 -2020-11-10 23:45:00,81.05,84.535,46.665,32.225 -2020-11-11 00:00:00,83.4,79.433,43.16,32.225 -2020-11-11 00:15:00,83.26,80.444,43.16,32.225 -2020-11-11 00:30:00,84.67,80.27,43.16,32.225 -2020-11-11 00:45:00,81.96,80.248,43.16,32.225 -2020-11-11 01:00:00,78.35,81.723,40.972,32.225 -2020-11-11 01:15:00,81.15,81.906,40.972,32.225 -2020-11-11 01:30:00,81.08,81.768,40.972,32.225 -2020-11-11 01:45:00,81.16,81.72399999999999,40.972,32.225 -2020-11-11 02:00:00,78.61,83.00299999999999,39.749,32.225 -2020-11-11 02:15:00,80.73,83.584,39.749,32.225 -2020-11-11 02:30:00,81.45,83.777,39.749,32.225 -2020-11-11 02:45:00,79.88,84.698,39.749,32.225 -2020-11-11 03:00:00,77.2,87.337,39.422,32.225 -2020-11-11 03:15:00,82.68,88.831,39.422,32.225 -2020-11-11 03:30:00,82.22,89.661,39.422,32.225 -2020-11-11 03:45:00,83.11,90.179,39.422,32.225 -2020-11-11 04:00:00,83.29,102.134,40.505,32.225 -2020-11-11 04:15:00,85.37,113.684,40.505,32.225 -2020-11-11 04:30:00,86.75,114.00299999999999,40.505,32.225 -2020-11-11 04:45:00,86.34,116.20700000000001,40.505,32.225 -2020-11-11 05:00:00,93.0,149.563,43.397,32.225 -2020-11-11 05:15:00,96.5,179.05900000000003,43.397,32.225 -2020-11-11 05:30:00,96.82,173.071,43.397,32.225 -2020-11-11 05:45:00,95.16,163.246,43.397,32.225 -2020-11-11 06:00:00,104.31,161.401,55.218,32.225 -2020-11-11 06:15:00,112.72,166.389,55.218,32.225 -2020-11-11 06:30:00,122.08,166.125,55.218,32.225 -2020-11-11 06:45:00,124.33,166.916,55.218,32.225 -2020-11-11 07:00:00,126.72,168.04,67.39,32.225 -2020-11-11 07:15:00,123.92,171.447,67.39,32.225 -2020-11-11 07:30:00,127.19,172.601,67.39,32.225 -2020-11-11 07:45:00,125.8,172.813,67.39,32.225 -2020-11-11 08:00:00,126.17,172.80700000000002,74.345,32.225 -2020-11-11 08:15:00,124.97,172.047,74.345,32.225 -2020-11-11 08:30:00,126.2,169.903,74.345,32.225 -2020-11-11 08:45:00,125.23,167.25900000000001,74.345,32.225 -2020-11-11 09:00:00,124.4,162.53,69.336,32.225 -2020-11-11 09:15:00,125.54,159.589,69.336,32.225 -2020-11-11 09:30:00,123.59,158.725,69.336,32.225 -2020-11-11 09:45:00,121.93,157.375,69.336,32.225 -2020-11-11 10:00:00,121.82,154.341,64.291,32.225 -2020-11-11 10:15:00,120.73,152.095,64.291,32.225 -2020-11-11 10:30:00,118.92,149.842,64.291,32.225 -2020-11-11 10:45:00,121.37,148.938,64.291,32.225 -2020-11-11 11:00:00,120.95,145.084,62.20399999999999,32.225 -2020-11-11 11:15:00,122.46,145.001,62.20399999999999,32.225 -2020-11-11 11:30:00,121.56,145.16899999999998,62.20399999999999,32.225 -2020-11-11 11:45:00,121.47,145.9,62.20399999999999,32.225 -2020-11-11 12:00:00,120.37,141.465,59.042,32.225 -2020-11-11 12:15:00,119.79,140.303,59.042,32.225 -2020-11-11 12:30:00,119.63,140.78799999999998,59.042,32.225 -2020-11-11 12:45:00,121.96,141.296,59.042,32.225 -2020-11-11 13:00:00,120.59,140.635,57.907,32.225 -2020-11-11 13:15:00,122.95,140.09799999999998,57.907,32.225 -2020-11-11 13:30:00,118.81,139.411,57.907,32.225 -2020-11-11 13:45:00,117.0,139.046,57.907,32.225 -2020-11-11 14:00:00,116.01,138.31799999999998,58.358000000000004,32.225 -2020-11-11 14:15:00,115.36,138.151,58.358000000000004,32.225 -2020-11-11 14:30:00,116.38,138.061,58.358000000000004,32.225 -2020-11-11 14:45:00,119.55,137.955,58.358000000000004,32.225 -2020-11-11 15:00:00,123.96,136.944,59.348,32.225 -2020-11-11 15:15:00,123.92,137.278,59.348,32.225 -2020-11-11 15:30:00,125.52,137.766,59.348,32.225 -2020-11-11 15:45:00,123.32,137.872,59.348,32.225 -2020-11-11 16:00:00,125.75,140.063,61.413999999999994,32.225 -2020-11-11 16:15:00,126.76,141.656,61.413999999999994,32.225 -2020-11-11 16:30:00,128.31,141.88299999999998,61.413999999999994,32.225 -2020-11-11 16:45:00,133.13,141.327,61.413999999999994,32.225 -2020-11-11 17:00:00,138.86,142.668,67.107,32.225 -2020-11-11 17:15:00,136.54,143.589,67.107,32.225 -2020-11-11 17:30:00,137.81,143.75,67.107,32.225 -2020-11-11 17:45:00,137.09,143.44899999999998,67.107,32.225 -2020-11-11 18:00:00,136.75,146.037,71.92,32.225 -2020-11-11 18:15:00,134.87,144.91,71.92,32.225 -2020-11-11 18:30:00,134.79,143.232,71.92,32.225 -2020-11-11 18:45:00,135.01,146.47899999999998,71.92,32.225 -2020-11-11 19:00:00,130.77,147.524,75.09,32.225 -2020-11-11 19:15:00,128.61,145.55700000000002,75.09,32.225 -2020-11-11 19:30:00,126.23,144.30100000000002,75.09,32.225 -2020-11-11 19:45:00,129.72,142.842,75.09,32.225 -2020-11-11 20:00:00,120.35,138.33,65.977,32.225 -2020-11-11 20:15:00,114.91,134.583,65.977,32.225 -2020-11-11 20:30:00,111.86,133.71200000000002,65.977,32.225 -2020-11-11 20:45:00,111.47,131.542,65.977,32.225 -2020-11-11 21:00:00,106.24,127.095,58.798,32.225 -2020-11-11 21:15:00,111.59,126.32,58.798,32.225 -2020-11-11 21:30:00,109.24,125.426,58.798,32.225 -2020-11-11 21:45:00,110.46,122.704,58.798,32.225 -2020-11-11 22:00:00,100.23,116.978,54.486000000000004,32.225 -2020-11-11 22:15:00,95.43,112.539,54.486000000000004,32.225 -2020-11-11 22:30:00,93.35,99.57,54.486000000000004,32.225 -2020-11-11 22:45:00,97.79,92.194,54.486000000000004,32.225 -2020-11-11 23:00:00,94.38,86.758,47.783,32.225 -2020-11-11 23:15:00,93.93,85.53,47.783,32.225 -2020-11-11 23:30:00,85.88,84.87299999999999,47.783,32.225 -2020-11-11 23:45:00,84.95,84.90299999999999,47.783,32.225 -2020-11-12 00:00:00,85.17,79.789,43.88,32.225 -2020-11-12 00:15:00,87.34,80.78,43.88,32.225 -2020-11-12 00:30:00,85.98,80.609,43.88,32.225 -2020-11-12 00:45:00,80.22,80.575,43.88,32.225 -2020-11-12 01:00:00,83.59,82.071,42.242,32.225 -2020-11-12 01:15:00,84.86,82.26899999999999,42.242,32.225 -2020-11-12 01:30:00,83.06,82.146,42.242,32.225 -2020-11-12 01:45:00,81.74,82.094,42.242,32.225 -2020-11-12 02:00:00,83.52,83.387,40.918,32.225 -2020-11-12 02:15:00,83.31,83.976,40.918,32.225 -2020-11-12 02:30:00,78.25,84.161,40.918,32.225 -2020-11-12 02:45:00,78.19,85.07700000000001,40.918,32.225 -2020-11-12 03:00:00,75.8,87.70299999999999,40.411,32.225 -2020-11-12 03:15:00,78.38,89.221,40.411,32.225 -2020-11-12 03:30:00,82.84,90.053,40.411,32.225 -2020-11-12 03:45:00,85.06,90.555,40.411,32.225 -2020-11-12 04:00:00,83.04,102.51899999999999,41.246,32.225 -2020-11-12 04:15:00,79.36,114.094,41.246,32.225 -2020-11-12 04:30:00,80.43,114.40899999999999,41.246,32.225 -2020-11-12 04:45:00,81.3,116.619,41.246,32.225 -2020-11-12 05:00:00,85.8,150.023,44.533,32.225 -2020-11-12 05:15:00,88.26,179.558,44.533,32.225 -2020-11-12 05:30:00,92.04,173.56400000000002,44.533,32.225 -2020-11-12 05:45:00,97.64,163.719,44.533,32.225 -2020-11-12 06:00:00,113.62,161.872,55.005,32.225 -2020-11-12 06:15:00,116.6,166.87,55.005,32.225 -2020-11-12 06:30:00,120.04,166.635,55.005,32.225 -2020-11-12 06:45:00,120.88,167.44400000000002,55.005,32.225 -2020-11-12 07:00:00,127.95,168.56900000000002,64.597,32.225 -2020-11-12 07:15:00,124.59,171.987,64.597,32.225 -2020-11-12 07:30:00,125.29,173.16299999999998,64.597,32.225 -2020-11-12 07:45:00,127.13,173.375,64.597,32.225 -2020-11-12 08:00:00,129.63,173.38099999999997,71.71600000000001,32.225 -2020-11-12 08:15:00,127.3,172.602,71.71600000000001,32.225 -2020-11-12 08:30:00,127.82,170.482,71.71600000000001,32.225 -2020-11-12 08:45:00,127.07,167.80900000000003,71.71600000000001,32.225 -2020-11-12 09:00:00,123.74,163.067,66.51899999999999,32.225 -2020-11-12 09:15:00,124.7,160.127,66.51899999999999,32.225 -2020-11-12 09:30:00,127.83,159.257,66.51899999999999,32.225 -2020-11-12 09:45:00,129.16,157.885,66.51899999999999,32.225 -2020-11-12 10:00:00,129.07,154.842,63.04,32.225 -2020-11-12 10:15:00,128.54,152.56,63.04,32.225 -2020-11-12 10:30:00,127.42,150.284,63.04,32.225 -2020-11-12 10:45:00,124.95,149.365,63.04,32.225 -2020-11-12 11:00:00,124.62,145.50799999999998,60.998000000000005,32.225 -2020-11-12 11:15:00,124.2,145.406,60.998000000000005,32.225 -2020-11-12 11:30:00,123.72,145.57399999999998,60.998000000000005,32.225 -2020-11-12 11:45:00,125.51,146.29399999999998,60.998000000000005,32.225 -2020-11-12 12:00:00,126.91,141.84,58.27,32.225 -2020-11-12 12:15:00,122.96,140.68,58.27,32.225 -2020-11-12 12:30:00,121.82,141.197,58.27,32.225 -2020-11-12 12:45:00,116.29,141.707,58.27,32.225 -2020-11-12 13:00:00,117.07,141.012,57.196000000000005,32.225 -2020-11-12 13:15:00,119.85,140.481,57.196000000000005,32.225 -2020-11-12 13:30:00,119.33,139.791,57.196000000000005,32.225 -2020-11-12 13:45:00,120.26,139.41899999999998,57.196000000000005,32.225 -2020-11-12 14:00:00,118.83,138.64600000000002,57.38399999999999,32.225 -2020-11-12 14:15:00,120.08,138.493,57.38399999999999,32.225 -2020-11-12 14:30:00,121.28,138.439,57.38399999999999,32.225 -2020-11-12 14:45:00,124.13,138.335,57.38399999999999,32.225 -2020-11-12 15:00:00,125.14,137.315,58.647,32.225 -2020-11-12 15:15:00,123.4,137.661,58.647,32.225 -2020-11-12 15:30:00,122.12,138.186,58.647,32.225 -2020-11-12 15:45:00,123.51,138.30200000000002,58.647,32.225 -2020-11-12 16:00:00,126.72,140.471,60.083999999999996,32.225 -2020-11-12 16:15:00,125.87,142.08700000000002,60.083999999999996,32.225 -2020-11-12 16:30:00,129.87,142.313,60.083999999999996,32.225 -2020-11-12 16:45:00,133.87,141.805,60.083999999999996,32.225 -2020-11-12 17:00:00,137.7,143.105,65.85600000000001,32.225 -2020-11-12 17:15:00,137.13,144.049,65.85600000000001,32.225 -2020-11-12 17:30:00,139.61,144.218,65.85600000000001,32.225 -2020-11-12 17:45:00,138.78,143.93,65.85600000000001,32.225 -2020-11-12 18:00:00,137.47,146.519,69.855,32.225 -2020-11-12 18:15:00,136.57,145.361,69.855,32.225 -2020-11-12 18:30:00,135.22,143.692,69.855,32.225 -2020-11-12 18:45:00,135.89,146.94,69.855,32.225 -2020-11-12 19:00:00,131.65,147.986,74.015,32.225 -2020-11-12 19:15:00,131.85,146.012,74.015,32.225 -2020-11-12 19:30:00,129.37,144.74200000000002,74.015,32.225 -2020-11-12 19:45:00,126.94,143.257,74.015,32.225 -2020-11-12 20:00:00,119.74,138.762,65.316,32.225 -2020-11-12 20:15:00,117.13,135.005,65.316,32.225 -2020-11-12 20:30:00,115.09,134.105,65.316,32.225 -2020-11-12 20:45:00,111.94,131.92600000000002,65.316,32.225 -2020-11-12 21:00:00,107.77,127.473,58.403999999999996,32.225 -2020-11-12 21:15:00,113.2,126.684,58.403999999999996,32.225 -2020-11-12 21:30:00,112.61,125.8,58.403999999999996,32.225 -2020-11-12 21:45:00,110.3,123.066,58.403999999999996,32.225 -2020-11-12 22:00:00,100.12,117.338,54.092,32.225 -2020-11-12 22:15:00,96.26,112.885,54.092,32.225 -2020-11-12 22:30:00,99.58,99.958,54.092,32.225 -2020-11-12 22:45:00,99.58,92.59,54.092,32.225 -2020-11-12 23:00:00,93.92,87.156,48.18600000000001,32.225 -2020-11-12 23:15:00,90.66,85.905,48.18600000000001,32.225 -2020-11-12 23:30:00,82.77,85.25,48.18600000000001,32.225 -2020-11-12 23:45:00,93.39,85.26700000000001,48.18600000000001,32.225 -2020-11-13 00:00:00,88.54,78.727,45.18899999999999,32.225 -2020-11-13 00:15:00,87.54,79.914,45.18899999999999,32.225 -2020-11-13 00:30:00,83.28,79.76899999999999,45.18899999999999,32.225 -2020-11-13 00:45:00,75.68,79.967,45.18899999999999,32.225 -2020-11-13 01:00:00,83.0,81.128,43.256,32.225 -2020-11-13 01:15:00,83.41,81.67699999999999,43.256,32.225 -2020-11-13 01:30:00,80.05,81.719,43.256,32.225 -2020-11-13 01:45:00,78.52,81.625,43.256,32.225 -2020-11-13 02:00:00,74.26,83.368,42.312,32.225 -2020-11-13 02:15:00,81.05,83.87,42.312,32.225 -2020-11-13 02:30:00,84.7,84.721,42.312,32.225 -2020-11-13 02:45:00,85.03,85.37799999999999,42.312,32.225 -2020-11-13 03:00:00,79.15,87.684,41.833,32.225 -2020-11-13 03:15:00,80.84,89.316,41.833,32.225 -2020-11-13 03:30:00,82.96,90.04,41.833,32.225 -2020-11-13 03:45:00,87.43,91.09899999999999,41.833,32.225 -2020-11-13 04:00:00,85.9,103.27,42.732,32.225 -2020-11-13 04:15:00,84.02,114.059,42.732,32.225 -2020-11-13 04:30:00,88.32,114.913,42.732,32.225 -2020-11-13 04:45:00,91.69,116.14200000000001,42.732,32.225 -2020-11-13 05:00:00,90.57,148.593,46.254,32.225 -2020-11-13 05:15:00,89.24,179.515,46.254,32.225 -2020-11-13 05:30:00,100.06,174.269,46.254,32.225 -2020-11-13 05:45:00,105.63,164.176,46.254,32.225 -2020-11-13 06:00:00,111.79,162.717,56.76,32.225 -2020-11-13 06:15:00,111.89,166.858,56.76,32.225 -2020-11-13 06:30:00,118.4,166.08,56.76,32.225 -2020-11-13 06:45:00,122.39,167.889,56.76,32.225 -2020-11-13 07:00:00,129.36,168.747,66.029,32.225 -2020-11-13 07:15:00,127.21,173.19799999999998,66.029,32.225 -2020-11-13 07:30:00,127.28,173.50900000000001,66.029,32.225 -2020-11-13 07:45:00,128.94,173.06,66.029,32.225 -2020-11-13 08:00:00,131.25,172.65400000000002,73.128,32.225 -2020-11-13 08:15:00,129.89,171.84900000000002,73.128,32.225 -2020-11-13 08:30:00,128.17,170.36700000000002,73.128,32.225 -2020-11-13 08:45:00,128.29,166.558,73.128,32.225 -2020-11-13 09:00:00,123.97,161.243,68.23100000000001,32.225 -2020-11-13 09:15:00,128.09,159.393,68.23100000000001,32.225 -2020-11-13 09:30:00,127.96,157.974,68.23100000000001,32.225 -2020-11-13 09:45:00,126.9,156.645,68.23100000000001,32.225 -2020-11-13 10:00:00,123.72,152.725,64.733,32.225 -2020-11-13 10:15:00,124.12,150.817,64.733,32.225 -2020-11-13 10:30:00,121.64,148.661,64.733,32.225 -2020-11-13 10:45:00,122.3,147.386,64.733,32.225 -2020-11-13 11:00:00,119.98,143.577,62.0,32.225 -2020-11-13 11:15:00,121.51,142.455,62.0,32.225 -2020-11-13 11:30:00,120.54,143.74,62.0,32.225 -2020-11-13 11:45:00,120.13,144.156,62.0,32.225 -2020-11-13 12:00:00,119.43,140.618,57.876999999999995,32.225 -2020-11-13 12:15:00,119.97,137.744,57.876999999999995,32.225 -2020-11-13 12:30:00,120.64,138.444,57.876999999999995,32.225 -2020-11-13 12:45:00,119.97,139.069,57.876999999999995,32.225 -2020-11-13 13:00:00,117.26,139.217,55.585,32.225 -2020-11-13 13:15:00,116.98,139.343,55.585,32.225 -2020-11-13 13:30:00,114.0,138.91899999999998,55.585,32.225 -2020-11-13 13:45:00,115.51,138.592,55.585,32.225 -2020-11-13 14:00:00,113.7,136.691,54.5,32.225 -2020-11-13 14:15:00,116.76,136.561,54.5,32.225 -2020-11-13 14:30:00,115.06,137.4,54.5,32.225 -2020-11-13 14:45:00,117.33,137.297,54.5,32.225 -2020-11-13 15:00:00,118.57,135.893,55.131,32.225 -2020-11-13 15:15:00,121.83,135.856,55.131,32.225 -2020-11-13 15:30:00,118.63,135.135,55.131,32.225 -2020-11-13 15:45:00,120.04,135.612,55.131,32.225 -2020-11-13 16:00:00,123.01,136.678,56.8,32.225 -2020-11-13 16:15:00,123.05,138.69,56.8,32.225 -2020-11-13 16:30:00,127.02,138.92,56.8,32.225 -2020-11-13 16:45:00,132.91,138.112,56.8,32.225 -2020-11-13 17:00:00,136.31,140.149,63.428999999999995,32.225 -2020-11-13 17:15:00,134.14,140.769,63.428999999999995,32.225 -2020-11-13 17:30:00,135.6,140.783,63.428999999999995,32.225 -2020-11-13 17:45:00,136.85,140.28799999999998,63.428999999999995,32.225 -2020-11-13 18:00:00,132.99,143.393,67.915,32.225 -2020-11-13 18:15:00,132.55,141.596,67.915,32.225 -2020-11-13 18:30:00,131.85,140.16899999999998,67.915,32.225 -2020-11-13 18:45:00,131.77,143.563,67.915,32.225 -2020-11-13 19:00:00,127.72,145.562,69.428,32.225 -2020-11-13 19:15:00,126.33,144.722,69.428,32.225 -2020-11-13 19:30:00,123.37,143.181,69.428,32.225 -2020-11-13 19:45:00,122.12,140.983,69.428,32.225 -2020-11-13 20:00:00,116.08,136.49200000000002,60.56100000000001,32.225 -2020-11-13 20:15:00,112.51,133.029,60.56100000000001,32.225 -2020-11-13 20:30:00,109.7,131.888,60.56100000000001,32.225 -2020-11-13 20:45:00,109.08,129.773,60.56100000000001,32.225 -2020-11-13 21:00:00,102.38,126.15,55.18600000000001,32.225 -2020-11-13 21:15:00,102.35,126.273,55.18600000000001,32.225 -2020-11-13 21:30:00,103.54,125.37200000000001,55.18600000000001,32.225 -2020-11-13 21:45:00,102.4,123.066,55.18600000000001,32.225 -2020-11-13 22:00:00,94.88,117.936,51.433,32.225 -2020-11-13 22:15:00,90.57,113.288,51.433,32.225 -2020-11-13 22:30:00,83.68,106.458,51.433,32.225 -2020-11-13 22:45:00,88.07,101.781,51.433,32.225 -2020-11-13 23:00:00,87.2,96.691,46.201,32.225 -2020-11-13 23:15:00,86.93,93.52,46.201,32.225 -2020-11-13 23:30:00,81.06,91.205,46.201,32.225 -2020-11-13 23:45:00,75.58,90.72,46.201,32.225 -2020-11-14 00:00:00,73.58,77.764,42.576,32.047 -2020-11-14 00:15:00,74.26,75.94,42.576,32.047 -2020-11-14 00:30:00,76.41,76.453,42.576,32.047 -2020-11-14 00:45:00,75.17,76.795,42.576,32.047 -2020-11-14 01:00:00,67.85,78.506,39.34,32.047 -2020-11-14 01:15:00,73.52,78.689,39.34,32.047 -2020-11-14 01:30:00,72.25,78.084,39.34,32.047 -2020-11-14 01:45:00,73.31,78.359,39.34,32.047 -2020-11-14 02:00:00,65.19,80.163,37.582,32.047 -2020-11-14 02:15:00,71.47,80.111,37.582,32.047 -2020-11-14 02:30:00,72.68,79.926,37.582,32.047 -2020-11-14 02:45:00,72.1,80.97,37.582,32.047 -2020-11-14 03:00:00,65.86,83.103,36.523,32.047 -2020-11-14 03:15:00,72.14,83.70299999999999,36.523,32.047 -2020-11-14 03:30:00,71.64,83.572,36.523,32.047 -2020-11-14 03:45:00,67.64,85.304,36.523,32.047 -2020-11-14 04:00:00,64.63,94.146,36.347,32.047 -2020-11-14 04:15:00,66.11,103.001,36.347,32.047 -2020-11-14 04:30:00,66.46,101.794,36.347,32.047 -2020-11-14 04:45:00,67.22,102.839,36.347,32.047 -2020-11-14 05:00:00,66.75,122.023,36.407,32.047 -2020-11-14 05:15:00,66.43,136.593,36.407,32.047 -2020-11-14 05:30:00,66.52,132.209,36.407,32.047 -2020-11-14 05:45:00,69.84,127.36399999999999,36.407,32.047 -2020-11-14 06:00:00,68.77,141.99200000000002,38.228,32.047 -2020-11-14 06:15:00,71.68,159.651,38.228,32.047 -2020-11-14 06:30:00,74.01,154.347,38.228,32.047 -2020-11-14 06:45:00,75.87,149.19799999999998,38.228,32.047 -2020-11-14 07:00:00,77.55,146.75,41.905,32.047 -2020-11-14 07:15:00,78.66,149.886,41.905,32.047 -2020-11-14 07:30:00,84.59,152.562,41.905,32.047 -2020-11-14 07:45:00,85.21,155.03799999999998,41.905,32.047 -2020-11-14 08:00:00,88.67,157.241,46.051,32.047 -2020-11-14 08:15:00,88.43,158.736,46.051,32.047 -2020-11-14 08:30:00,88.2,158.338,46.051,32.047 -2020-11-14 08:45:00,89.95,156.94899999999998,46.051,32.047 -2020-11-14 09:00:00,90.45,153.843,46.683,32.047 -2020-11-14 09:15:00,92.7,152.679,46.683,32.047 -2020-11-14 09:30:00,89.36,152.045,46.683,32.047 -2020-11-14 09:45:00,91.08,150.639,46.683,32.047 -2020-11-14 10:00:00,92.47,146.975,44.425,32.047 -2020-11-14 10:15:00,89.41,145.27,44.425,32.047 -2020-11-14 10:30:00,89.74,143.088,44.425,32.047 -2020-11-14 10:45:00,89.93,142.576,44.425,32.047 -2020-11-14 11:00:00,88.64,138.803,42.148999999999994,32.047 -2020-11-14 11:15:00,89.78,137.474,42.148999999999994,32.047 -2020-11-14 11:30:00,87.93,138.07,42.148999999999994,32.047 -2020-11-14 11:45:00,90.55,138.03,42.148999999999994,32.047 -2020-11-14 12:00:00,88.09,133.856,39.683,32.047 -2020-11-14 12:15:00,84.91,131.719,39.683,32.047 -2020-11-14 12:30:00,85.92,132.635,39.683,32.047 -2020-11-14 12:45:00,81.63,132.94799999999998,39.683,32.047 -2020-11-14 13:00:00,83.08,132.429,37.154,32.047 -2020-11-14 13:15:00,79.91,130.911,37.154,32.047 -2020-11-14 13:30:00,78.46,130.222,37.154,32.047 -2020-11-14 13:45:00,81.0,129.796,37.154,32.047 -2020-11-14 14:00:00,78.11,128.738,36.457,32.047 -2020-11-14 14:15:00,80.05,127.838,36.457,32.047 -2020-11-14 14:30:00,79.25,127.26700000000001,36.457,32.047 -2020-11-14 14:45:00,81.47,127.476,36.457,32.047 -2020-11-14 15:00:00,82.81,126.669,38.257,32.047 -2020-11-14 15:15:00,83.68,127.45100000000001,38.257,32.047 -2020-11-14 15:30:00,86.67,127.93799999999999,38.257,32.047 -2020-11-14 15:45:00,89.46,128.145,38.257,32.047 -2020-11-14 16:00:00,93.0,129.27100000000002,41.181000000000004,32.047 -2020-11-14 16:15:00,94.17,131.631,41.181000000000004,32.047 -2020-11-14 16:30:00,97.49,131.899,41.181000000000004,32.047 -2020-11-14 16:45:00,98.74,131.75,41.181000000000004,32.047 -2020-11-14 17:00:00,103.86,133.11,46.806000000000004,32.047 -2020-11-14 17:15:00,102.08,134.124,46.806000000000004,32.047 -2020-11-14 17:30:00,106.38,134.031,46.806000000000004,32.047 -2020-11-14 17:45:00,104.65,133.447,46.806000000000004,32.047 -2020-11-14 18:00:00,105.57,136.77700000000002,52.073,32.047 -2020-11-14 18:15:00,107.67,136.77700000000002,52.073,32.047 -2020-11-14 18:30:00,107.18,136.754,52.073,32.047 -2020-11-14 18:45:00,104.68,136.619,52.073,32.047 -2020-11-14 19:00:00,106.23,138.694,53.608000000000004,32.047 -2020-11-14 19:15:00,102.11,137.142,53.608000000000004,32.047 -2020-11-14 19:30:00,101.48,136.377,53.608000000000004,32.047 -2020-11-14 19:45:00,102.58,134.679,53.608000000000004,32.047 -2020-11-14 20:00:00,93.26,132.019,50.265,32.047 -2020-11-14 20:15:00,91.95,129.72899999999998,50.265,32.047 -2020-11-14 20:30:00,89.67,127.99700000000001,50.265,32.047 -2020-11-14 20:45:00,87.38,126.29799999999999,50.265,32.047 -2020-11-14 21:00:00,82.46,123.631,45.766000000000005,32.047 -2020-11-14 21:15:00,82.49,123.90100000000001,45.766000000000005,32.047 -2020-11-14 21:30:00,81.16,123.895,45.766000000000005,32.047 -2020-11-14 21:45:00,81.79,121.103,45.766000000000005,32.047 -2020-11-14 22:00:00,76.57,116.85799999999999,45.97,32.047 -2020-11-14 22:15:00,78.47,113.943,45.97,32.047 -2020-11-14 22:30:00,73.69,111.147,45.97,32.047 -2020-11-14 22:45:00,74.23,107.86,45.97,32.047 -2020-11-14 23:00:00,71.23,104.15299999999999,40.415,32.047 -2020-11-14 23:15:00,73.31,100.02799999999999,40.415,32.047 -2020-11-14 23:30:00,67.49,97.47399999999999,40.415,32.047 -2020-11-14 23:45:00,69.47,95.495,40.415,32.047 -2020-11-15 00:00:00,64.33,78.939,36.376,32.047 -2020-11-15 00:15:00,64.14,76.423,36.376,32.047 -2020-11-15 00:30:00,62.75,76.64,36.376,32.047 -2020-11-15 00:45:00,61.39,77.367,36.376,32.047 -2020-11-15 01:00:00,59.62,79.115,32.992,32.047 -2020-11-15 01:15:00,59.48,79.914,32.992,32.047 -2020-11-15 01:30:00,59.29,79.596,32.992,32.047 -2020-11-15 01:45:00,58.73,79.51,32.992,32.047 -2020-11-15 02:00:00,57.48,80.884,32.327,32.047 -2020-11-15 02:15:00,58.06,80.6,32.327,32.047 -2020-11-15 02:30:00,56.99,81.02,32.327,32.047 -2020-11-15 02:45:00,57.41,82.229,32.327,32.047 -2020-11-15 03:00:00,56.71,84.815,31.169,32.047 -2020-11-15 03:15:00,58.22,85.223,31.169,32.047 -2020-11-15 03:30:00,57.82,85.655,31.169,32.047 -2020-11-15 03:45:00,60.95,86.992,31.169,32.047 -2020-11-15 04:00:00,58.41,95.665,30.796,32.047 -2020-11-15 04:15:00,58.67,103.736,30.796,32.047 -2020-11-15 04:30:00,59.85,103.132,30.796,32.047 -2020-11-15 04:45:00,60.47,104.154,30.796,32.047 -2020-11-15 05:00:00,61.1,121.301,30.848000000000003,32.047 -2020-11-15 05:15:00,62.05,134.10299999999998,30.848000000000003,32.047 -2020-11-15 05:30:00,61.78,129.438,30.848000000000003,32.047 -2020-11-15 05:45:00,62.1,124.605,30.848000000000003,32.047 -2020-11-15 06:00:00,63.73,138.144,31.166,32.047 -2020-11-15 06:15:00,64.63,155.086,31.166,32.047 -2020-11-15 06:30:00,63.71,148.829,31.166,32.047 -2020-11-15 06:45:00,66.0,142.626,31.166,32.047 -2020-11-15 07:00:00,69.28,141.808,33.527,32.047 -2020-11-15 07:15:00,69.23,143.747,33.527,32.047 -2020-11-15 07:30:00,70.66,146.174,33.527,32.047 -2020-11-15 07:45:00,72.74,148.149,33.527,32.047 -2020-11-15 08:00:00,76.18,151.78799999999998,36.616,32.047 -2020-11-15 08:15:00,75.92,153.657,36.616,32.047 -2020-11-15 08:30:00,76.26,154.701,36.616,32.047 -2020-11-15 08:45:00,76.69,154.578,36.616,32.047 -2020-11-15 09:00:00,75.86,151.127,37.857,32.047 -2020-11-15 09:15:00,76.01,150.151,37.857,32.047 -2020-11-15 09:30:00,76.34,149.567,37.857,32.047 -2020-11-15 09:45:00,75.23,148.433,37.857,32.047 -2020-11-15 10:00:00,74.72,146.63299999999998,36.319,32.047 -2020-11-15 10:15:00,76.47,145.306,36.319,32.047 -2020-11-15 10:30:00,77.15,143.592,36.319,32.047 -2020-11-15 10:45:00,81.23,142.128,36.319,32.047 -2020-11-15 11:00:00,80.21,138.842,37.236999999999995,32.047 -2020-11-15 11:15:00,83.25,137.43200000000002,37.236999999999995,32.047 -2020-11-15 11:30:00,84.16,137.60299999999998,37.236999999999995,32.047 -2020-11-15 11:45:00,84.67,138.061,37.236999999999995,32.047 -2020-11-15 12:00:00,81.09,133.804,34.871,32.047 -2020-11-15 12:15:00,79.37,132.8,34.871,32.047 -2020-11-15 12:30:00,75.92,132.793,34.871,32.047 -2020-11-15 12:45:00,80.89,132.215,34.871,32.047 -2020-11-15 13:00:00,77.87,131.03799999999998,29.738000000000003,32.047 -2020-11-15 13:15:00,77.45,131.476,29.738000000000003,32.047 -2020-11-15 13:30:00,80.57,130.268,29.738000000000003,32.047 -2020-11-15 13:45:00,80.75,129.736,29.738000000000003,32.047 -2020-11-15 14:00:00,77.13,129.19799999999998,27.333000000000002,32.047 -2020-11-15 14:15:00,77.57,129.305,27.333000000000002,32.047 -2020-11-15 14:30:00,76.34,129.243,27.333000000000002,32.047 -2020-11-15 14:45:00,81.67,128.811,27.333000000000002,32.047 -2020-11-15 15:00:00,80.78,126.95700000000001,28.232,32.047 -2020-11-15 15:15:00,82.26,128.025,28.232,32.047 -2020-11-15 15:30:00,82.54,128.907,28.232,32.047 -2020-11-15 15:45:00,83.8,129.707,28.232,32.047 -2020-11-15 16:00:00,84.97,131.477,32.815,32.047 -2020-11-15 16:15:00,87.01,133.31,32.815,32.047 -2020-11-15 16:30:00,90.92,134.102,32.815,32.047 -2020-11-15 16:45:00,94.28,134.114,32.815,32.047 -2020-11-15 17:00:00,99.69,135.486,43.068999999999996,32.047 -2020-11-15 17:15:00,99.2,136.842,43.068999999999996,32.047 -2020-11-15 17:30:00,101.41,137.244,43.068999999999996,32.047 -2020-11-15 17:45:00,102.52,138.362,43.068999999999996,32.047 -2020-11-15 18:00:00,103.76,141.516,50.498999999999995,32.047 -2020-11-15 18:15:00,103.31,142.23,50.498999999999995,32.047 -2020-11-15 18:30:00,103.12,140.725,50.498999999999995,32.047 -2020-11-15 18:45:00,100.94,141.876,50.498999999999995,32.047 -2020-11-15 19:00:00,98.74,144.512,53.481,32.047 -2020-11-15 19:15:00,97.83,142.938,53.481,32.047 -2020-11-15 19:30:00,95.48,141.958,53.481,32.047 -2020-11-15 19:45:00,95.27,141.03,53.481,32.047 -2020-11-15 20:00:00,97.93,138.394,51.687,32.047 -2020-11-15 20:15:00,98.82,136.695,51.687,32.047 -2020-11-15 20:30:00,95.61,136.059,51.687,32.047 -2020-11-15 20:45:00,88.72,132.92600000000002,51.687,32.047 -2020-11-15 21:00:00,85.57,128.464,47.674,32.047 -2020-11-15 21:15:00,87.2,128.194,47.674,32.047 -2020-11-15 21:30:00,86.41,128.145,47.674,32.047 -2020-11-15 21:45:00,91.7,125.568,47.674,32.047 -2020-11-15 22:00:00,90.91,121.318,48.178000000000004,32.047 -2020-11-15 22:15:00,94.56,117.251,48.178000000000004,32.047 -2020-11-15 22:30:00,86.94,112.219,48.178000000000004,32.047 -2020-11-15 22:45:00,86.52,107.897,48.178000000000004,32.047 -2020-11-15 23:00:00,86.59,102.23200000000001,42.553999999999995,32.047 -2020-11-15 23:15:00,89.06,99.788,42.553999999999995,32.047 -2020-11-15 23:30:00,87.84,97.57,42.553999999999995,32.047 -2020-11-15 23:45:00,83.38,96.226,42.553999999999995,32.047 -2020-11-16 00:00:00,77.1,99.905,37.177,32.225 -2020-11-16 00:15:00,77.33,98.662,37.177,32.225 -2020-11-16 00:30:00,82.22,99.729,37.177,32.225 -2020-11-16 00:45:00,82.47,101.445,37.177,32.225 -2020-11-16 01:00:00,81.36,102.945,35.358000000000004,32.225 -2020-11-16 01:15:00,75.91,104.265,35.358000000000004,32.225 -2020-11-16 01:30:00,77.02,104.413,35.358000000000004,32.225 -2020-11-16 01:45:00,82.03,104.87100000000001,35.358000000000004,32.225 -2020-11-16 02:00:00,81.18,106.01299999999999,35.03,32.225 -2020-11-16 02:15:00,77.98,106.837,35.03,32.225 -2020-11-16 02:30:00,75.5,107.139,35.03,32.225 -2020-11-16 02:45:00,80.51,108.699,35.03,32.225 -2020-11-16 03:00:00,81.9,112.40299999999999,34.394,32.225 -2020-11-16 03:15:00,83.19,113.646,34.394,32.225 -2020-11-16 03:30:00,82.04,115.22200000000001,34.394,32.225 -2020-11-16 03:45:00,82.89,115.84,34.394,32.225 -2020-11-16 04:00:00,84.77,130.126,34.421,32.225 -2020-11-16 04:15:00,83.73,143.125,34.421,32.225 -2020-11-16 04:30:00,79.15,144.792,34.421,32.225 -2020-11-16 04:45:00,87.58,145.659,34.421,32.225 -2020-11-16 05:00:00,93.5,175.607,39.435,32.225 -2020-11-16 05:15:00,96.13,205.88400000000001,39.435,32.225 -2020-11-16 05:30:00,95.49,202.571,39.435,32.225 -2020-11-16 05:45:00,96.86,193.637,39.435,32.225 -2020-11-16 06:00:00,106.96,190.03,55.685,32.225 -2020-11-16 06:15:00,117.57,193.713,55.685,32.225 -2020-11-16 06:30:00,124.3,195.49400000000003,55.685,32.225 -2020-11-16 06:45:00,128.75,196.998,55.685,32.225 -2020-11-16 07:00:00,127.88,198.408,66.837,32.225 -2020-11-16 07:15:00,130.09,202.535,66.837,32.225 -2020-11-16 07:30:00,131.28,204.43900000000002,66.837,32.225 -2020-11-16 07:45:00,132.13,204.878,66.837,32.225 -2020-11-16 08:00:00,134.59,203.71,72.217,32.225 -2020-11-16 08:15:00,135.13,204.238,72.217,32.225 -2020-11-16 08:30:00,134.93,202.28799999999998,72.217,32.225 -2020-11-16 08:45:00,135.48,199.72,72.217,32.225 -2020-11-16 09:00:00,137.04,194.734,66.117,32.225 -2020-11-16 09:15:00,137.72,189.67,66.117,32.225 -2020-11-16 09:30:00,139.23,186.65099999999998,66.117,32.225 -2020-11-16 09:45:00,140.89,184.546,66.117,32.225 -2020-11-16 10:00:00,140.75,182.533,62.1,32.225 -2020-11-16 10:15:00,140.27,180.21200000000002,62.1,32.225 -2020-11-16 10:30:00,139.75,178.195,62.1,32.225 -2020-11-16 10:45:00,141.87,176.75400000000002,62.1,32.225 -2020-11-16 11:00:00,139.36,173.687,60.021,32.225 -2020-11-16 11:15:00,138.76,173.46599999999998,60.021,32.225 -2020-11-16 11:30:00,136.87,174.088,60.021,32.225 -2020-11-16 11:45:00,137.88,173.037,60.021,32.225 -2020-11-16 12:00:00,136.95,168.87,56.75899999999999,32.225 -2020-11-16 12:15:00,136.17,167.93599999999998,56.75899999999999,32.225 -2020-11-16 12:30:00,138.07,167.206,56.75899999999999,32.225 -2020-11-16 12:45:00,139.07,167.998,56.75899999999999,32.225 -2020-11-16 13:00:00,135.65,167.93099999999998,56.04600000000001,32.225 -2020-11-16 13:15:00,138.73,167.377,56.04600000000001,32.225 -2020-11-16 13:30:00,134.79,165.9,56.04600000000001,32.225 -2020-11-16 13:45:00,133.83,165.859,56.04600000000001,32.225 -2020-11-16 14:00:00,130.83,165.37900000000002,55.475,32.225 -2020-11-16 14:15:00,130.65,165.18099999999998,55.475,32.225 -2020-11-16 14:30:00,129.75,164.22,55.475,32.225 -2020-11-16 14:45:00,129.95,164.2,55.475,32.225 -2020-11-16 15:00:00,130.58,164.608,57.048,32.225 -2020-11-16 15:15:00,129.71,164.543,57.048,32.225 -2020-11-16 15:30:00,129.12,165.127,57.048,32.225 -2020-11-16 15:45:00,129.23,166.125,57.048,32.225 -2020-11-16 16:00:00,130.93,169.43,59.06,32.225 -2020-11-16 16:15:00,132.04,170.313,59.06,32.225 -2020-11-16 16:30:00,136.67,171.088,59.06,32.225 -2020-11-16 16:45:00,138.56,170.58900000000003,59.06,32.225 -2020-11-16 17:00:00,139.38,173.562,65.419,32.225 -2020-11-16 17:15:00,139.96,173.8,65.419,32.225 -2020-11-16 17:30:00,140.06,173.597,65.419,32.225 -2020-11-16 17:45:00,139.57,173.247,65.419,32.225 -2020-11-16 18:00:00,137.5,175.109,69.345,32.225 -2020-11-16 18:15:00,136.2,174.597,69.345,32.225 -2020-11-16 18:30:00,135.18,173.084,69.345,32.225 -2020-11-16 18:45:00,135.88,173.261,69.345,32.225 -2020-11-16 19:00:00,133.06,174.851,73.825,32.225 -2020-11-16 19:15:00,129.71,172.138,73.825,32.225 -2020-11-16 19:30:00,128.36,171.513,73.825,32.225 -2020-11-16 19:45:00,126.9,168.456,73.825,32.225 -2020-11-16 20:00:00,121.58,164.43200000000002,64.027,32.225 -2020-11-16 20:15:00,117.62,160.344,64.027,32.225 -2020-11-16 20:30:00,113.7,156.911,64.027,32.225 -2020-11-16 20:45:00,112.48,154.009,64.027,32.225 -2020-11-16 21:00:00,108.97,152.451,57.952,32.225 -2020-11-16 21:15:00,107.75,150.361,57.952,32.225 -2020-11-16 21:30:00,110.85,148.789,57.952,32.225 -2020-11-16 21:45:00,111.19,146.843,57.952,32.225 -2020-11-16 22:00:00,106.86,138.77200000000002,53.031000000000006,32.225 -2020-11-16 22:15:00,98.64,134.02100000000002,53.031000000000006,32.225 -2020-11-16 22:30:00,94.58,118.351,53.031000000000006,32.225 -2020-11-16 22:45:00,92.11,110.148,53.031000000000006,32.225 -2020-11-16 23:00:00,89.04,105.603,45.085,32.225 -2020-11-16 23:15:00,88.11,104.111,45.085,32.225 -2020-11-16 23:30:00,84.69,104.76700000000001,45.085,32.225 -2020-11-16 23:45:00,83.57,104.964,45.085,32.225 -2020-11-17 00:00:00,84.58,99.30799999999999,42.843,32.225 -2020-11-17 00:15:00,87.16,99.41,42.843,32.225 -2020-11-17 00:30:00,88.47,99.79700000000001,42.843,32.225 -2020-11-17 00:45:00,83.12,100.8,42.843,32.225 -2020-11-17 01:00:00,78.7,102.07799999999999,41.542,32.225 -2020-11-17 01:15:00,84.09,103.046,41.542,32.225 -2020-11-17 01:30:00,84.23,103.331,41.542,32.225 -2020-11-17 01:45:00,83.62,103.946,41.542,32.225 -2020-11-17 02:00:00,76.91,105.01700000000001,40.19,32.225 -2020-11-17 02:15:00,80.46,105.959,40.19,32.225 -2020-11-17 02:30:00,83.38,105.678,40.19,32.225 -2020-11-17 02:45:00,84.48,107.306,40.19,32.225 -2020-11-17 03:00:00,82.24,109.87200000000001,39.626,32.225 -2020-11-17 03:15:00,84.6,110.59299999999999,39.626,32.225 -2020-11-17 03:30:00,86.1,112.57600000000001,39.626,32.225 -2020-11-17 03:45:00,86.14,113.147,39.626,32.225 -2020-11-17 04:00:00,82.44,127.023,40.196999999999996,32.225 -2020-11-17 04:15:00,86.13,139.739,40.196999999999996,32.225 -2020-11-17 04:30:00,89.79,141.108,40.196999999999996,32.225 -2020-11-17 04:45:00,90.47,143.09799999999998,40.196999999999996,32.225 -2020-11-17 05:00:00,88.89,177.57299999999998,43.378,32.225 -2020-11-17 05:15:00,91.86,207.77200000000002,43.378,32.225 -2020-11-17 05:30:00,94.62,203.21400000000003,43.378,32.225 -2020-11-17 05:45:00,98.85,194.155,43.378,32.225 -2020-11-17 06:00:00,105.56,189.748,55.691,32.225 -2020-11-17 06:15:00,112.04,194.85299999999998,55.691,32.225 -2020-11-17 06:30:00,118.42,196.07299999999998,55.691,32.225 -2020-11-17 06:45:00,121.99,197.13400000000001,55.691,32.225 -2020-11-17 07:00:00,126.36,198.41299999999998,65.567,32.225 -2020-11-17 07:15:00,128.77,202.37,65.567,32.225 -2020-11-17 07:30:00,129.41,203.832,65.567,32.225 -2020-11-17 07:45:00,131.36,204.28900000000002,65.567,32.225 -2020-11-17 08:00:00,134.03,203.22099999999998,73.001,32.225 -2020-11-17 08:15:00,133.22,202.782,73.001,32.225 -2020-11-17 08:30:00,137.27,200.732,73.001,32.225 -2020-11-17 08:45:00,136.45,197.748,73.001,32.225 -2020-11-17 09:00:00,137.66,192.072,67.08800000000001,32.225 -2020-11-17 09:15:00,138.23,188.37599999999998,67.08800000000001,32.225 -2020-11-17 09:30:00,141.61,186.05599999999998,67.08800000000001,32.225 -2020-11-17 09:45:00,141.87,183.963,67.08800000000001,32.225 -2020-11-17 10:00:00,142.21,181.206,62.803000000000004,32.225 -2020-11-17 10:15:00,140.92,177.903,62.803000000000004,32.225 -2020-11-17 10:30:00,143.35,176.02200000000002,62.803000000000004,32.225 -2020-11-17 10:45:00,142.09,174.975,62.803000000000004,32.225 -2020-11-17 11:00:00,140.39,173.19299999999998,60.155,32.225 -2020-11-17 11:15:00,139.74,172.726,60.155,32.225 -2020-11-17 11:30:00,140.21,172.148,60.155,32.225 -2020-11-17 11:45:00,140.97,171.627,60.155,32.225 -2020-11-17 12:00:00,139.79,166.22099999999998,56.845,32.225 -2020-11-17 12:15:00,138.99,164.982,56.845,32.225 -2020-11-17 12:30:00,143.01,165.047,56.845,32.225 -2020-11-17 12:45:00,146.71,165.69400000000002,56.845,32.225 -2020-11-17 13:00:00,144.04,165.172,56.163000000000004,32.225 -2020-11-17 13:15:00,138.69,164.601,56.163000000000004,32.225 -2020-11-17 13:30:00,137.01,164.142,56.163000000000004,32.225 -2020-11-17 13:45:00,136.33,164.106,56.163000000000004,32.225 -2020-11-17 14:00:00,136.4,163.898,55.934,32.225 -2020-11-17 14:15:00,130.93,163.82,55.934,32.225 -2020-11-17 14:30:00,127.86,163.495,55.934,32.225 -2020-11-17 14:45:00,127.46,163.289,55.934,32.225 -2020-11-17 15:00:00,129.68,163.296,57.43899999999999,32.225 -2020-11-17 15:15:00,129.91,163.672,57.43899999999999,32.225 -2020-11-17 15:30:00,130.07,164.459,57.43899999999999,32.225 -2020-11-17 15:45:00,132.74,165.16299999999998,57.43899999999999,32.225 -2020-11-17 16:00:00,135.56,168.65099999999998,59.968999999999994,32.225 -2020-11-17 16:15:00,137.0,169.99099999999999,59.968999999999994,32.225 -2020-11-17 16:30:00,137.55,171.27900000000002,59.968999999999994,32.225 -2020-11-17 16:45:00,137.39,171.187,59.968999999999994,32.225 -2020-11-17 17:00:00,139.11,174.64,67.428,32.225 -2020-11-17 17:15:00,139.71,174.99,67.428,32.225 -2020-11-17 17:30:00,139.17,175.31,67.428,32.225 -2020-11-17 17:45:00,137.63,174.801,67.428,32.225 -2020-11-17 18:00:00,135.8,176.44,71.533,32.225 -2020-11-17 18:15:00,134.06,175.666,71.533,32.225 -2020-11-17 18:30:00,133.05,173.852,71.533,32.225 -2020-11-17 18:45:00,133.67,174.7,71.533,32.225 -2020-11-17 19:00:00,130.58,176.188,73.32300000000001,32.225 -2020-11-17 19:15:00,128.02,173.24200000000002,73.32300000000001,32.225 -2020-11-17 19:30:00,125.82,171.97799999999998,73.32300000000001,32.225 -2020-11-17 19:45:00,124.09,168.967,73.32300000000001,32.225 -2020-11-17 20:00:00,119.92,165.153,64.166,32.225 -2020-11-17 20:15:00,115.35,160.27200000000002,64.166,32.225 -2020-11-17 20:30:00,112.08,157.69899999999998,64.166,32.225 -2020-11-17 20:45:00,109.65,154.369,64.166,32.225 -2020-11-17 21:00:00,106.35,152.325,57.891999999999996,32.225 -2020-11-17 21:15:00,101.33,150.787,57.891999999999996,32.225 -2020-11-17 21:30:00,97.94,148.607,57.891999999999996,32.225 -2020-11-17 21:45:00,94.87,146.888,57.891999999999996,32.225 -2020-11-17 22:00:00,90.4,140.35,53.242,32.225 -2020-11-17 22:15:00,87.25,135.31,53.242,32.225 -2020-11-17 22:30:00,83.17,119.822,53.242,32.225 -2020-11-17 22:45:00,81.13,111.868,53.242,32.225 -2020-11-17 23:00:00,77.54,107.215,46.665,32.225 -2020-11-17 23:15:00,75.31,105.156,46.665,32.225 -2020-11-17 23:30:00,73.28,105.50200000000001,46.665,32.225 -2020-11-17 23:45:00,71.49,105.323,46.665,32.225 -2020-11-18 00:00:00,68.06,96.84,43.16,32.225 -2020-11-18 00:15:00,66.65,92.867,43.16,32.225 -2020-11-18 00:30:00,66.05,93.897,43.16,32.225 -2020-11-18 00:45:00,65.38,96.11,43.16,32.225 -2020-11-18 01:00:00,63.81,97.618,40.972,32.225 -2020-11-18 01:15:00,65.53,99.4,40.972,32.225 -2020-11-18 01:30:00,61.92,99.46,40.972,32.225 -2020-11-18 01:45:00,62.1,99.815,40.972,32.225 -2020-11-18 02:00:00,61.67,100.939,39.749,32.225 -2020-11-18 02:15:00,62.09,100.72399999999999,39.749,32.225 -2020-11-18 02:30:00,61.4,100.70299999999999,39.749,32.225 -2020-11-18 02:45:00,61.82,102.81200000000001,39.749,32.225 -2020-11-18 03:00:00,61.2,105.334,39.422,32.225 -2020-11-18 03:15:00,61.6,105.109,39.422,32.225 -2020-11-18 03:30:00,61.32,106.791,39.422,32.225 -2020-11-18 03:45:00,62.03,107.945,39.422,32.225 -2020-11-18 04:00:00,62.95,117.961,40.505,32.225 -2020-11-18 04:15:00,62.82,126.931,40.505,32.225 -2020-11-18 04:30:00,63.09,126.81700000000001,40.505,32.225 -2020-11-18 04:45:00,63.58,127.492,40.505,32.225 -2020-11-18 05:00:00,64.61,142.859,43.397,32.225 -2020-11-18 05:15:00,64.56,154.186,43.397,32.225 -2020-11-18 05:30:00,64.42,150.976,43.397,32.225 -2020-11-18 05:45:00,65.18,147.387,43.397,32.225 -2020-11-18 06:00:00,65.99,160.76,55.218,32.225 -2020-11-18 06:15:00,66.23,178.679,55.218,32.225 -2020-11-18 06:30:00,67.7,173.043,55.218,32.225 -2020-11-18 06:45:00,69.63,166.206,55.218,32.225 -2020-11-18 07:00:00,72.15,165.429,67.39,32.225 -2020-11-18 07:15:00,73.16,168.10299999999998,67.39,32.225 -2020-11-18 07:30:00,73.58,170.863,67.39,32.225 -2020-11-18 07:45:00,76.05,173.437,67.39,32.225 -2020-11-18 08:00:00,79.97,176.707,74.345,32.225 -2020-11-18 08:15:00,81.61,179.26,74.345,32.225 -2020-11-18 08:30:00,82.38,181.017,74.345,32.225 -2020-11-18 08:45:00,84.44,181.19799999999998,74.345,32.225 -2020-11-18 09:00:00,86.73,177.138,69.336,32.225 -2020-11-18 09:15:00,88.15,175.387,69.336,32.225 -2020-11-18 09:30:00,88.01,173.38099999999997,69.336,32.225 -2020-11-18 09:45:00,88.77,171.382,69.336,32.225 -2020-11-18 10:00:00,88.6,170.173,64.291,32.225 -2020-11-18 10:15:00,89.69,168.09,64.291,32.225 -2020-11-18 10:30:00,91.83,166.854,64.291,32.225 -2020-11-18 10:45:00,93.65,165.011,64.291,32.225 -2020-11-18 11:00:00,93.82,164.09099999999998,62.20399999999999,32.225 -2020-11-18 11:15:00,96.88,162.225,62.20399999999999,32.225 -2020-11-18 11:30:00,97.62,161.532,62.20399999999999,32.225 -2020-11-18 11:45:00,98.81,160.72899999999998,62.20399999999999,32.225 -2020-11-18 12:00:00,98.43,155.30100000000002,59.042,32.225 -2020-11-18 12:15:00,96.83,154.36,59.042,32.225 -2020-11-18 12:30:00,94.69,153.64600000000002,59.042,32.225 -2020-11-18 12:45:00,92.52,153.125,59.042,32.225 -2020-11-18 13:00:00,91.17,152.308,57.907,32.225 -2020-11-18 13:15:00,90.28,153.11700000000002,57.907,32.225 -2020-11-18 13:30:00,89.49,152.067,57.907,32.225 -2020-11-18 13:45:00,89.41,151.834,57.907,32.225 -2020-11-18 14:00:00,88.17,151.933,58.358000000000004,32.225 -2020-11-18 14:15:00,87.97,152.22299999999998,58.358000000000004,32.225 -2020-11-18 14:30:00,88.15,151.829,58.358000000000004,32.225 -2020-11-18 14:45:00,89.22,151.511,58.358000000000004,32.225 -2020-11-18 15:00:00,91.04,150.407,59.348,32.225 -2020-11-18 15:15:00,90.98,151.707,59.348,32.225 -2020-11-18 15:30:00,90.33,152.963,59.348,32.225 -2020-11-18 15:45:00,91.75,154.442,59.348,32.225 -2020-11-18 16:00:00,93.83,157.414,61.413999999999994,32.225 -2020-11-18 16:15:00,96.36,159.002,61.413999999999994,32.225 -2020-11-18 16:30:00,97.49,160.732,61.413999999999994,32.225 -2020-11-18 16:45:00,98.72,161.352,61.413999999999994,32.225 -2020-11-18 17:00:00,101.46,164.60299999999998,67.107,32.225 -2020-11-18 17:15:00,103.06,165.655,67.107,32.225 -2020-11-18 17:30:00,107.61,166.00599999999997,67.107,32.225 -2020-11-18 17:45:00,105.53,167.03400000000002,67.107,32.225 -2020-11-18 18:00:00,105.8,168.706,71.92,32.225 -2020-11-18 18:15:00,104.59,170.32,71.92,32.225 -2020-11-18 18:30:00,103.28,168.372,71.92,32.225 -2020-11-18 18:45:00,104.04,167.43,71.92,32.225 -2020-11-18 19:00:00,102.53,170.468,75.09,32.225 -2020-11-18 19:15:00,100.99,168.55,75.09,32.225 -2020-11-18 19:30:00,99.54,167.50900000000001,75.09,32.225 -2020-11-18 19:45:00,98.32,165.204,75.09,32.225 -2020-11-18 20:00:00,101.42,163.47799999999998,65.977,32.225 -2020-11-18 20:15:00,101.77,161.30200000000002,65.977,32.225 -2020-11-18 20:30:00,98.91,159.345,65.977,32.225 -2020-11-18 20:45:00,94.0,155.009,65.977,32.225 -2020-11-18 21:00:00,91.32,153.06799999999998,58.798,32.225 -2020-11-18 21:15:00,94.27,151.904,58.798,32.225 -2020-11-18 21:30:00,94.17,150.993,58.798,32.225 -2020-11-18 21:45:00,90.94,149.516,58.798,32.225 -2020-11-18 22:00:00,87.11,144.303,54.486000000000004,32.225 -2020-11-18 22:15:00,86.53,140.368,54.486000000000004,32.225 -2020-11-18 22:30:00,87.31,133.83,54.486000000000004,32.225 -2020-11-18 22:45:00,83.89,129.859,54.486000000000004,32.225 -2020-11-18 23:00:00,79.96,124.615,47.783,32.225 -2020-11-18 23:15:00,80.17,121.041,47.783,32.225 -2020-11-18 23:30:00,78.39,119.30799999999999,47.783,32.225 -2020-11-18 23:45:00,77.89,117.245,47.783,32.225 -2020-11-19 00:00:00,74.83,100.085,43.88,32.225 -2020-11-19 00:15:00,74.27,100.132,43.88,32.225 -2020-11-19 00:30:00,72.66,100.522,43.88,32.225 -2020-11-19 00:45:00,72.09,101.492,43.88,32.225 -2020-11-19 01:00:00,71.02,102.845,42.242,32.225 -2020-11-19 01:15:00,71.4,103.829,42.242,32.225 -2020-11-19 01:30:00,70.62,104.14,42.242,32.225 -2020-11-19 01:45:00,71.65,104.73,42.242,32.225 -2020-11-19 02:00:00,74.0,105.839,40.918,32.225 -2020-11-19 02:15:00,71.51,106.79,40.918,32.225 -2020-11-19 02:30:00,71.25,106.499,40.918,32.225 -2020-11-19 02:45:00,72.0,108.12299999999999,40.918,32.225 -2020-11-19 03:00:00,71.53,110.661,40.411,32.225 -2020-11-19 03:15:00,71.33,111.44,40.411,32.225 -2020-11-19 03:30:00,71.54,113.429,40.411,32.225 -2020-11-19 03:45:00,73.18,113.98200000000001,40.411,32.225 -2020-11-19 04:00:00,74.7,127.82600000000001,41.246,32.225 -2020-11-19 04:15:00,75.98,140.563,41.246,32.225 -2020-11-19 04:30:00,77.0,141.905,41.246,32.225 -2020-11-19 04:45:00,79.12,143.909,41.246,32.225 -2020-11-19 05:00:00,84.14,178.382,44.533,32.225 -2020-11-19 05:15:00,87.47,208.544,44.533,32.225 -2020-11-19 05:30:00,90.75,204.02200000000002,44.533,32.225 -2020-11-19 05:45:00,96.44,194.972,44.533,32.225 -2020-11-19 06:00:00,104.01,190.593,55.005,32.225 -2020-11-19 06:15:00,109.76,195.706,55.005,32.225 -2020-11-19 06:30:00,116.54,197.018,55.005,32.225 -2020-11-19 06:45:00,120.52,198.15200000000002,55.005,32.225 -2020-11-19 07:00:00,124.39,199.429,64.597,32.225 -2020-11-19 07:15:00,126.36,203.41299999999998,64.597,32.225 -2020-11-19 07:30:00,127.26,204.91,64.597,32.225 -2020-11-19 07:45:00,130.79,205.38299999999998,64.597,32.225 -2020-11-19 08:00:00,133.32,204.34599999999998,71.71600000000001,32.225 -2020-11-19 08:15:00,133.27,203.889,71.71600000000001,32.225 -2020-11-19 08:30:00,133.0,201.88400000000001,71.71600000000001,32.225 -2020-11-19 08:45:00,133.02,198.83599999999998,71.71600000000001,32.225 -2020-11-19 09:00:00,137.0,193.114,66.51899999999999,32.225 -2020-11-19 09:15:00,138.81,189.428,66.51899999999999,32.225 -2020-11-19 09:30:00,139.87,187.102,66.51899999999999,32.225 -2020-11-19 09:45:00,136.56,184.975,66.51899999999999,32.225 -2020-11-19 10:00:00,136.84,182.19400000000002,63.04,32.225 -2020-11-19 10:15:00,136.24,178.824,63.04,32.225 -2020-11-19 10:30:00,136.58,176.892,63.04,32.225 -2020-11-19 10:45:00,138.2,175.81799999999998,63.04,32.225 -2020-11-19 11:00:00,143.48,174.016,60.998000000000005,32.225 -2020-11-19 11:15:00,145.08,173.512,60.998000000000005,32.225 -2020-11-19 11:30:00,141.99,172.93099999999998,60.998000000000005,32.225 -2020-11-19 11:45:00,139.15,172.388,60.998000000000005,32.225 -2020-11-19 12:00:00,137.73,166.959,58.27,32.225 -2020-11-19 12:15:00,136.88,165.732,58.27,32.225 -2020-11-19 12:30:00,137.43,165.851,58.27,32.225 -2020-11-19 12:45:00,136.49,166.507,58.27,32.225 -2020-11-19 13:00:00,134.8,165.90599999999998,57.196000000000005,32.225 -2020-11-19 13:15:00,134.79,165.35,57.196000000000005,32.225 -2020-11-19 13:30:00,132.52,164.889,57.196000000000005,32.225 -2020-11-19 13:45:00,131.77,164.835,57.196000000000005,32.225 -2020-11-19 14:00:00,133.0,164.542,57.38399999999999,32.225 -2020-11-19 14:15:00,133.06,164.49,57.38399999999999,32.225 -2020-11-19 14:30:00,131.21,164.235,57.38399999999999,32.225 -2020-11-19 14:45:00,131.57,164.03900000000002,57.38399999999999,32.225 -2020-11-19 15:00:00,132.6,164.05700000000002,58.647,32.225 -2020-11-19 15:15:00,131.83,164.451,58.647,32.225 -2020-11-19 15:30:00,132.4,165.30900000000003,58.647,32.225 -2020-11-19 15:45:00,133.34,166.02900000000002,58.647,32.225 -2020-11-19 16:00:00,136.61,169.5,60.083999999999996,32.225 -2020-11-19 16:15:00,135.17,170.892,60.083999999999996,32.225 -2020-11-19 16:30:00,137.53,172.18599999999998,60.083999999999996,32.225 -2020-11-19 16:45:00,137.22,172.18200000000002,60.083999999999996,32.225 -2020-11-19 17:00:00,138.52,175.574,65.85600000000001,32.225 -2020-11-19 17:15:00,138.89,175.96900000000002,65.85600000000001,32.225 -2020-11-19 17:30:00,140.31,176.305,65.85600000000001,32.225 -2020-11-19 17:45:00,138.58,175.81,65.85600000000001,32.225 -2020-11-19 18:00:00,136.88,177.47400000000002,69.855,32.225 -2020-11-19 18:15:00,135.08,176.61,69.855,32.225 -2020-11-19 18:30:00,134.94,174.812,69.855,32.225 -2020-11-19 18:45:00,135.05,175.66299999999998,69.855,32.225 -2020-11-19 19:00:00,132.41,177.15200000000002,74.015,32.225 -2020-11-19 19:15:00,129.97,174.18200000000002,74.015,32.225 -2020-11-19 19:30:00,128.17,172.87900000000002,74.015,32.225 -2020-11-19 19:45:00,126.77,169.799,74.015,32.225 -2020-11-19 20:00:00,121.56,166.00799999999998,65.316,32.225 -2020-11-19 20:15:00,116.74,161.10299999999998,65.316,32.225 -2020-11-19 20:30:00,113.64,158.468,65.316,32.225 -2020-11-19 20:45:00,117.52,155.156,65.316,32.225 -2020-11-19 21:00:00,113.74,153.093,58.403999999999996,32.225 -2020-11-19 21:15:00,113.82,151.528,58.403999999999996,32.225 -2020-11-19 21:30:00,108.94,149.357,58.403999999999996,32.225 -2020-11-19 21:45:00,105.09,147.631,58.403999999999996,32.225 -2020-11-19 22:00:00,99.66,141.107,54.092,32.225 -2020-11-19 22:15:00,102.85,136.05100000000002,54.092,32.225 -2020-11-19 22:30:00,100.78,120.677,54.092,32.225 -2020-11-19 22:45:00,99.23,112.73700000000001,54.092,32.225 -2020-11-19 23:00:00,91.21,108.055,48.18600000000001,32.225 -2020-11-19 23:15:00,88.51,105.96700000000001,48.18600000000001,32.225 -2020-11-19 23:30:00,92.47,106.329,48.18600000000001,32.225 -2020-11-19 23:45:00,91.07,106.109,48.18600000000001,32.225 -2020-11-20 00:00:00,87.75,99.23,45.18899999999999,32.225 -2020-11-20 00:15:00,81.05,99.459,45.18899999999999,32.225 -2020-11-20 00:30:00,85.97,99.78200000000001,45.18899999999999,32.225 -2020-11-20 00:45:00,85.53,100.905,45.18899999999999,32.225 -2020-11-20 01:00:00,83.27,101.958,43.256,32.225 -2020-11-20 01:15:00,80.61,103.631,43.256,32.225 -2020-11-20 01:30:00,82.75,103.89,43.256,32.225 -2020-11-20 01:45:00,83.03,104.514,43.256,32.225 -2020-11-20 02:00:00,78.63,105.882,42.312,32.225 -2020-11-20 02:15:00,77.14,106.729,42.312,32.225 -2020-11-20 02:30:00,77.65,107.031,42.312,32.225 -2020-11-20 02:45:00,82.12,108.568,42.312,32.225 -2020-11-20 03:00:00,83.0,110.37899999999999,41.833,32.225 -2020-11-20 03:15:00,81.44,111.771,41.833,32.225 -2020-11-20 03:30:00,78.04,113.704,41.833,32.225 -2020-11-20 03:45:00,81.83,114.689,41.833,32.225 -2020-11-20 04:00:00,85.52,128.736,42.732,32.225 -2020-11-20 04:15:00,86.71,140.985,42.732,32.225 -2020-11-20 04:30:00,82.74,142.685,42.732,32.225 -2020-11-20 04:45:00,85.24,143.602,42.732,32.225 -2020-11-20 05:00:00,87.34,176.903,46.254,32.225 -2020-11-20 05:15:00,95.1,208.50799999999998,46.254,32.225 -2020-11-20 05:30:00,100.38,204.958,46.254,32.225 -2020-11-20 05:45:00,104.5,195.774,46.254,32.225 -2020-11-20 06:00:00,105.66,191.827,56.76,32.225 -2020-11-20 06:15:00,110.32,195.717,56.76,32.225 -2020-11-20 06:30:00,114.29,196.326,56.76,32.225 -2020-11-20 06:45:00,119.4,198.864,56.76,32.225 -2020-11-20 07:00:00,126.14,199.542,66.029,32.225 -2020-11-20 07:15:00,127.73,204.579,66.029,32.225 -2020-11-20 07:30:00,127.93,205.59099999999998,66.029,32.225 -2020-11-20 07:45:00,128.79,205.271,66.029,32.225 -2020-11-20 08:00:00,131.62,203.435,73.128,32.225 -2020-11-20 08:15:00,131.62,202.748,73.128,32.225 -2020-11-20 08:30:00,131.81,201.59400000000002,73.128,32.225 -2020-11-20 08:45:00,132.09,197.12599999999998,73.128,32.225 -2020-11-20 09:00:00,132.08,191.378,68.23100000000001,32.225 -2020-11-20 09:15:00,132.7,188.517,68.23100000000001,32.225 -2020-11-20 09:30:00,130.51,185.7,68.23100000000001,32.225 -2020-11-20 09:45:00,130.25,183.52700000000002,68.23100000000001,32.225 -2020-11-20 10:00:00,127.82,179.71400000000003,64.733,32.225 -2020-11-20 10:15:00,126.85,176.882,64.733,32.225 -2020-11-20 10:30:00,125.62,174.955,64.733,32.225 -2020-11-20 10:45:00,125.03,173.46599999999998,64.733,32.225 -2020-11-20 11:00:00,126.8,171.67,62.0,32.225 -2020-11-20 11:15:00,126.91,170.18599999999998,62.0,32.225 -2020-11-20 11:30:00,124.26,171.074,62.0,32.225 -2020-11-20 11:45:00,122.85,170.40400000000002,62.0,32.225 -2020-11-20 12:00:00,121.61,165.986,57.876999999999995,32.225 -2020-11-20 12:15:00,121.21,162.827,57.876999999999995,32.225 -2020-11-20 12:30:00,121.35,163.131,57.876999999999995,32.225 -2020-11-20 12:45:00,122.36,164.113,57.876999999999995,32.225 -2020-11-20 13:00:00,119.72,164.393,55.585,32.225 -2020-11-20 13:15:00,118.77,164.592,55.585,32.225 -2020-11-20 13:30:00,118.89,164.27200000000002,55.585,32.225 -2020-11-20 13:45:00,117.82,164.204,55.585,32.225 -2020-11-20 14:00:00,119.04,162.74,54.5,32.225 -2020-11-20 14:15:00,118.42,162.615,54.5,32.225 -2020-11-20 14:30:00,118.28,163.089,54.5,32.225 -2020-11-20 14:45:00,119.7,163.05,54.5,32.225 -2020-11-20 15:00:00,119.39,162.639,55.131,32.225 -2020-11-20 15:15:00,120.02,162.61700000000002,55.131,32.225 -2020-11-20 15:30:00,120.71,162.084,55.131,32.225 -2020-11-20 15:45:00,122.19,163.062,55.131,32.225 -2020-11-20 16:00:00,124.56,165.365,56.8,32.225 -2020-11-20 16:15:00,127.81,167.11599999999999,56.8,32.225 -2020-11-20 16:30:00,132.47,168.468,56.8,32.225 -2020-11-20 16:45:00,134.58,168.27900000000002,56.8,32.225 -2020-11-20 17:00:00,135.53,172.09799999999998,63.428999999999995,32.225 -2020-11-20 17:15:00,135.41,172.127,63.428999999999995,32.225 -2020-11-20 17:30:00,135.86,172.21599999999998,63.428999999999995,32.225 -2020-11-20 17:45:00,135.03,171.495,63.428999999999995,32.225 -2020-11-20 18:00:00,133.0,173.782,67.915,32.225 -2020-11-20 18:15:00,132.6,172.382,67.915,32.225 -2020-11-20 18:30:00,132.16,170.923,67.915,32.225 -2020-11-20 18:45:00,133.09,171.83599999999998,67.915,32.225 -2020-11-20 19:00:00,129.97,174.26,69.428,32.225 -2020-11-20 19:15:00,127.95,172.574,69.428,32.225 -2020-11-20 19:30:00,125.39,170.898,69.428,32.225 -2020-11-20 19:45:00,122.11,167.21900000000002,69.428,32.225 -2020-11-20 20:00:00,117.37,163.468,60.56100000000001,32.225 -2020-11-20 20:15:00,113.89,158.686,60.56100000000001,32.225 -2020-11-20 20:30:00,110.74,155.905,60.56100000000001,32.225 -2020-11-20 20:45:00,109.52,152.961,60.56100000000001,32.225 -2020-11-20 21:00:00,106.9,151.546,55.18600000000001,32.225 -2020-11-20 21:15:00,105.87,150.619,55.18600000000001,32.225 -2020-11-20 21:30:00,106.31,148.468,55.18600000000001,32.225 -2020-11-20 21:45:00,103.66,147.249,55.18600000000001,32.225 -2020-11-20 22:00:00,92.56,141.57,51.433,32.225 -2020-11-20 22:15:00,90.8,136.34799999999998,51.433,32.225 -2020-11-20 22:30:00,84.72,127.389,51.433,32.225 -2020-11-20 22:45:00,86.32,122.689,51.433,32.225 -2020-11-20 23:00:00,87.62,117.875,46.201,32.225 -2020-11-20 23:15:00,86.93,113.809,46.201,32.225 -2020-11-20 23:30:00,82.7,112.605,46.201,32.225 -2020-11-20 23:45:00,78.82,111.764,46.201,32.225 -2020-11-21 00:00:00,79.22,97.382,42.576,32.047 -2020-11-21 00:15:00,78.96,93.809,42.576,32.047 -2020-11-21 00:30:00,73.94,95.18799999999999,42.576,32.047 -2020-11-21 00:45:00,70.84,96.777,42.576,32.047 -2020-11-21 01:00:00,71.67,98.469,39.34,32.047 -2020-11-21 01:15:00,74.73,99.413,39.34,32.047 -2020-11-21 01:30:00,74.22,99.094,39.34,32.047 -2020-11-21 01:45:00,71.33,99.74799999999999,39.34,32.047 -2020-11-21 02:00:00,71.97,101.554,37.582,32.047 -2020-11-21 02:15:00,73.0,101.944,37.582,32.047 -2020-11-21 02:30:00,71.44,101.148,37.582,32.047 -2020-11-21 02:45:00,69.8,102.914,37.582,32.047 -2020-11-21 03:00:00,70.35,105.005,36.523,32.047 -2020-11-21 03:15:00,71.12,105.26100000000001,36.523,32.047 -2020-11-21 03:30:00,68.69,105.90799999999999,36.523,32.047 -2020-11-21 03:45:00,65.43,107.25299999999999,36.523,32.047 -2020-11-21 04:00:00,63.81,117.439,36.347,32.047 -2020-11-21 04:15:00,64.05,127.375,36.347,32.047 -2020-11-21 04:30:00,65.13,126.90899999999999,36.347,32.047 -2020-11-21 04:45:00,65.92,127.463,36.347,32.047 -2020-11-21 05:00:00,66.64,145.74,36.407,32.047 -2020-11-21 05:15:00,66.61,159.19,36.407,32.047 -2020-11-21 05:30:00,66.7,156.248,36.407,32.047 -2020-11-21 05:45:00,68.33,152.523,36.407,32.047 -2020-11-21 06:00:00,70.41,166.495,38.228,32.047 -2020-11-21 06:15:00,71.52,185.717,38.228,32.047 -2020-11-21 06:30:00,73.49,181.28099999999998,38.228,32.047 -2020-11-21 06:45:00,75.76,175.635,38.228,32.047 -2020-11-21 07:00:00,79.69,172.74200000000002,41.905,32.047 -2020-11-21 07:15:00,81.93,176.484,41.905,32.047 -2020-11-21 07:30:00,82.59,180.097,41.905,32.047 -2020-11-21 07:45:00,86.02,183.34099999999998,41.905,32.047 -2020-11-21 08:00:00,89.63,184.977,46.051,32.047 -2020-11-21 08:15:00,90.83,187.362,46.051,32.047 -2020-11-21 08:30:00,93.03,187.613,46.051,32.047 -2020-11-21 08:45:00,96.12,185.99200000000002,46.051,32.047 -2020-11-21 09:00:00,100.89,182.237,46.683,32.047 -2020-11-21 09:15:00,98.64,180.114,46.683,32.047 -2020-11-21 09:30:00,100.25,178.16,46.683,32.047 -2020-11-21 09:45:00,100.87,176.032,46.683,32.047 -2020-11-21 10:00:00,100.67,172.535,44.425,32.047 -2020-11-21 10:15:00,99.74,169.87400000000002,44.425,32.047 -2020-11-21 10:30:00,99.32,168.007,44.425,32.047 -2020-11-21 10:45:00,99.73,167.572,44.425,32.047 -2020-11-21 11:00:00,100.59,165.90200000000002,42.148999999999994,32.047 -2020-11-21 11:15:00,101.81,163.94400000000002,42.148999999999994,32.047 -2020-11-21 11:30:00,104.19,163.908,42.148999999999994,32.047 -2020-11-21 11:45:00,103.4,162.507,42.148999999999994,32.047 -2020-11-21 12:00:00,103.31,157.35299999999998,39.683,32.047 -2020-11-21 12:15:00,103.72,154.89600000000002,39.683,32.047 -2020-11-21 12:30:00,101.44,155.484,39.683,32.047 -2020-11-21 12:45:00,101.91,155.91899999999998,39.683,32.047 -2020-11-21 13:00:00,97.83,155.659,37.154,32.047 -2020-11-21 13:15:00,97.45,153.987,37.154,32.047 -2020-11-21 13:30:00,97.31,153.30200000000002,37.154,32.047 -2020-11-21 13:45:00,96.77,153.42,37.154,32.047 -2020-11-21 14:00:00,94.23,152.981,36.457,32.047 -2020-11-21 14:15:00,92.82,152.19899999999998,36.457,32.047 -2020-11-21 14:30:00,91.21,151.05100000000002,36.457,32.047 -2020-11-21 14:45:00,90.74,151.286,36.457,32.047 -2020-11-21 15:00:00,89.08,151.498,38.257,32.047 -2020-11-21 15:15:00,90.29,152.30200000000002,38.257,32.047 -2020-11-21 15:30:00,90.87,153.183,38.257,32.047 -2020-11-21 15:45:00,91.79,154.035,38.257,32.047 -2020-11-21 16:00:00,94.22,155.641,41.181000000000004,32.047 -2020-11-21 16:15:00,97.63,158.055,41.181000000000004,32.047 -2020-11-21 16:30:00,100.73,159.40200000000002,41.181000000000004,32.047 -2020-11-21 16:45:00,102.19,160.024,41.181000000000004,32.047 -2020-11-21 17:00:00,104.89,163.127,46.806000000000004,32.047 -2020-11-21 17:15:00,108.34,164.282,46.806000000000004,32.047 -2020-11-21 17:30:00,107.18,164.275,46.806000000000004,32.047 -2020-11-21 17:45:00,107.64,163.287,46.806000000000004,32.047 -2020-11-21 18:00:00,107.72,165.36599999999999,52.073,32.047 -2020-11-21 18:15:00,107.31,165.763,52.073,32.047 -2020-11-21 18:30:00,105.98,165.696,52.073,32.047 -2020-11-21 18:45:00,105.32,163.127,52.073,32.047 -2020-11-21 19:00:00,103.23,166.097,53.608000000000004,32.047 -2020-11-21 19:15:00,101.82,163.806,53.608000000000004,32.047 -2020-11-21 19:30:00,100.14,162.893,53.608000000000004,32.047 -2020-11-21 19:45:00,98.85,159.30200000000002,53.608000000000004,32.047 -2020-11-21 20:00:00,94.8,157.629,50.265,32.047 -2020-11-21 20:15:00,91.04,154.589,50.265,32.047 -2020-11-21 20:30:00,87.39,151.33,50.265,32.047 -2020-11-21 20:45:00,85.88,148.344,50.265,32.047 -2020-11-21 21:00:00,83.83,148.64700000000002,45.766000000000005,32.047 -2020-11-21 21:15:00,82.44,148.033,45.766000000000005,32.047 -2020-11-21 21:30:00,81.16,146.989,45.766000000000005,32.047 -2020-11-21 21:45:00,82.28,145.325,45.766000000000005,32.047 -2020-11-21 22:00:00,77.41,140.82399999999998,45.97,32.047 -2020-11-21 22:15:00,75.61,137.806,45.97,32.047 -2020-11-21 22:30:00,72.97,134.268,45.97,32.047 -2020-11-21 22:45:00,72.35,131.268,45.97,32.047 -2020-11-21 23:00:00,69.85,128.459,40.415,32.047 -2020-11-21 23:15:00,68.87,123.02,40.415,32.047 -2020-11-21 23:30:00,66.45,120.694,40.415,32.047 -2020-11-21 23:45:00,64.91,117.774,40.415,32.047 -2020-11-22 00:00:00,62.39,98.36399999999999,36.376,32.047 -2020-11-22 00:15:00,61.59,94.28299999999999,36.376,32.047 -2020-11-22 00:30:00,60.39,95.315,36.376,32.047 -2020-11-22 00:45:00,59.43,97.46,36.376,32.047 -2020-11-22 01:00:00,60.22,99.115,32.992,32.047 -2020-11-22 01:15:00,57.85,100.927,32.992,32.047 -2020-11-22 01:30:00,56.88,101.039,32.992,32.047 -2020-11-22 01:45:00,56.3,101.34299999999999,32.992,32.047 -2020-11-22 02:00:00,55.45,102.54299999999999,32.327,32.047 -2020-11-22 02:15:00,55.69,102.346,32.327,32.047 -2020-11-22 02:30:00,55.72,102.307,32.327,32.047 -2020-11-22 02:45:00,55.6,104.40899999999999,32.327,32.047 -2020-11-22 03:00:00,55.22,106.87299999999999,31.169,32.047 -2020-11-22 03:15:00,55.28,106.764,31.169,32.047 -2020-11-22 03:30:00,55.5,108.458,31.169,32.047 -2020-11-22 03:45:00,55.87,109.579,31.169,32.047 -2020-11-22 04:00:00,55.68,119.53,30.796,32.047 -2020-11-22 04:15:00,56.25,128.539,30.796,32.047 -2020-11-22 04:30:00,56.7,128.373,30.796,32.047 -2020-11-22 04:45:00,57.4,129.07399999999998,30.796,32.047 -2020-11-22 05:00:00,57.89,144.434,30.848000000000003,32.047 -2020-11-22 05:15:00,58.33,155.689,30.848000000000003,32.047 -2020-11-22 05:30:00,58.4,152.545,30.848000000000003,32.047 -2020-11-22 05:45:00,58.91,148.976,30.848000000000003,32.047 -2020-11-22 06:00:00,60.42,162.407,31.166,32.047 -2020-11-22 06:15:00,61.02,180.342,31.166,32.047 -2020-11-22 06:30:00,61.68,174.887,31.166,32.047 -2020-11-22 06:45:00,63.19,168.197,31.166,32.047 -2020-11-22 07:00:00,66.58,167.417,33.527,32.047 -2020-11-22 07:15:00,67.92,170.138,33.527,32.047 -2020-11-22 07:30:00,68.4,172.968,33.527,32.047 -2020-11-22 07:45:00,70.27,175.56599999999997,33.527,32.047 -2020-11-22 08:00:00,73.27,178.896,36.616,32.047 -2020-11-22 08:15:00,74.74,181.408,36.616,32.047 -2020-11-22 08:30:00,76.33,183.252,36.616,32.047 -2020-11-22 08:45:00,76.44,183.30700000000002,36.616,32.047 -2020-11-22 09:00:00,77.09,179.15400000000002,37.857,32.047 -2020-11-22 09:15:00,78.76,177.422,37.857,32.047 -2020-11-22 09:30:00,79.57,175.412,37.857,32.047 -2020-11-22 09:45:00,79.12,173.343,37.857,32.047 -2020-11-22 10:00:00,78.1,172.08700000000002,36.319,32.047 -2020-11-22 10:15:00,80.56,169.87400000000002,36.319,32.047 -2020-11-22 10:30:00,83.15,168.53900000000002,36.319,32.047 -2020-11-22 10:45:00,84.7,166.643,36.319,32.047 -2020-11-22 11:00:00,85.59,165.68099999999998,37.236999999999995,32.047 -2020-11-22 11:15:00,87.48,163.744,37.236999999999995,32.047 -2020-11-22 11:30:00,89.9,163.045,37.236999999999995,32.047 -2020-11-22 11:45:00,94.79,162.2,37.236999999999995,32.047 -2020-11-22 12:00:00,90.94,156.726,34.871,32.047 -2020-11-22 12:15:00,89.01,155.812,34.871,32.047 -2020-11-22 12:30:00,86.85,155.20600000000002,34.871,32.047 -2020-11-22 12:45:00,85.53,154.701,34.871,32.047 -2020-11-22 13:00:00,81.64,153.731,29.738000000000003,32.047 -2020-11-22 13:15:00,78.73,154.57,29.738000000000003,32.047 -2020-11-22 13:30:00,78.52,153.511,29.738000000000003,32.047 -2020-11-22 13:45:00,76.68,153.241,29.738000000000003,32.047 -2020-11-22 14:00:00,76.68,153.178,27.333000000000002,32.047 -2020-11-22 14:15:00,75.93,153.518,27.333000000000002,32.047 -2020-11-22 14:30:00,75.96,153.26,27.333000000000002,32.047 -2020-11-22 14:45:00,75.98,152.963,27.333000000000002,32.047 -2020-11-22 15:00:00,80.48,151.885,28.232,32.047 -2020-11-22 15:15:00,77.4,153.216,28.232,32.047 -2020-11-22 15:30:00,79.06,154.611,28.232,32.047 -2020-11-22 15:45:00,81.3,156.118,28.232,32.047 -2020-11-22 16:00:00,84.0,159.056,32.815,32.047 -2020-11-22 16:15:00,86.71,160.746,32.815,32.047 -2020-11-22 16:30:00,91.42,162.487,32.815,32.047 -2020-11-22 16:45:00,94.2,163.279,32.815,32.047 -2020-11-22 17:00:00,97.01,166.412,43.068999999999996,32.047 -2020-11-22 17:15:00,99.13,167.55599999999998,43.068999999999996,32.047 -2020-11-22 17:30:00,106.82,167.94099999999997,43.068999999999996,32.047 -2020-11-22 17:45:00,108.43,168.998,43.068999999999996,32.047 -2020-11-22 18:00:00,106.98,170.72,50.498999999999995,32.047 -2020-11-22 18:15:00,102.7,172.16400000000002,50.498999999999995,32.047 -2020-11-22 18:30:00,103.87,170.24900000000002,50.498999999999995,32.047 -2020-11-22 18:45:00,101.15,169.312,50.498999999999995,32.047 -2020-11-22 19:00:00,101.38,172.34799999999998,53.481,32.047 -2020-11-22 19:15:00,97.91,170.38400000000001,53.481,32.047 -2020-11-22 19:30:00,97.08,169.269,53.481,32.047 -2020-11-22 19:45:00,94.87,166.83,53.481,32.047 -2020-11-22 20:00:00,100.26,165.14700000000002,51.687,32.047 -2020-11-22 20:15:00,100.16,162.92600000000002,51.687,32.047 -2020-11-22 20:30:00,97.79,160.846,51.687,32.047 -2020-11-22 20:45:00,89.12,156.549,51.687,32.047 -2020-11-22 21:00:00,89.33,154.567,47.674,32.047 -2020-11-22 21:15:00,90.04,153.346,47.674,32.047 -2020-11-22 21:30:00,87.6,152.453,47.674,32.047 -2020-11-22 21:45:00,87.83,150.965,47.674,32.047 -2020-11-22 22:00:00,86.54,145.78,48.178000000000004,32.047 -2020-11-22 22:15:00,87.22,141.814,48.178000000000004,32.047 -2020-11-22 22:30:00,85.35,135.501,48.178000000000004,32.047 -2020-11-22 22:45:00,86.7,131.559,48.178000000000004,32.047 -2020-11-22 23:00:00,87.2,126.255,42.553999999999995,32.047 -2020-11-22 23:15:00,88.4,122.626,42.553999999999995,32.047 -2020-11-22 23:30:00,84.48,120.92200000000001,42.553999999999995,32.047 -2020-11-22 23:45:00,81.66,118.785,42.553999999999995,32.047 -2020-11-23 00:00:00,81.01,102.585,37.177,32.225 -2020-11-23 00:15:00,80.79,101.152,37.177,32.225 -2020-11-23 00:30:00,79.11,102.22200000000001,37.177,32.225 -2020-11-23 00:45:00,74.45,103.821,37.177,32.225 -2020-11-23 01:00:00,77.84,105.58,35.358000000000004,32.225 -2020-11-23 01:15:00,77.83,106.954,35.358000000000004,32.225 -2020-11-23 01:30:00,77.76,107.191,35.358000000000004,32.225 -2020-11-23 01:45:00,72.18,107.56299999999999,35.358000000000004,32.225 -2020-11-23 02:00:00,77.53,108.836,35.03,32.225 -2020-11-23 02:15:00,77.99,109.693,35.03,32.225 -2020-11-23 02:30:00,77.7,109.962,35.03,32.225 -2020-11-23 02:45:00,71.51,111.509,35.03,32.225 -2020-11-23 03:00:00,77.86,115.11200000000001,34.394,32.225 -2020-11-23 03:15:00,77.98,116.559,34.394,32.225 -2020-11-23 03:30:00,79.9,118.154,34.394,32.225 -2020-11-23 03:45:00,76.4,118.714,34.394,32.225 -2020-11-23 04:00:00,75.65,132.888,34.421,32.225 -2020-11-23 04:15:00,75.21,145.955,34.421,32.225 -2020-11-23 04:30:00,80.58,147.53,34.421,32.225 -2020-11-23 04:45:00,86.22,148.444,34.421,32.225 -2020-11-23 05:00:00,89.91,178.38099999999997,39.435,32.225 -2020-11-23 05:15:00,93.08,208.532,39.435,32.225 -2020-11-23 05:30:00,91.38,205.338,39.435,32.225 -2020-11-23 05:45:00,101.04,196.43599999999998,39.435,32.225 -2020-11-23 06:00:00,111.88,192.929,55.685,32.225 -2020-11-23 06:15:00,119.66,196.643,55.685,32.225 -2020-11-23 06:30:00,117.56,198.74,55.685,32.225 -2020-11-23 06:45:00,126.52,200.50099999999998,55.685,32.225 -2020-11-23 07:00:00,127.0,201.90599999999998,66.837,32.225 -2020-11-23 07:15:00,130.33,206.11599999999999,66.837,32.225 -2020-11-23 07:30:00,133.16,208.145,66.837,32.225 -2020-11-23 07:45:00,134.79,208.628,66.837,32.225 -2020-11-23 08:00:00,135.1,207.56599999999997,72.217,32.225 -2020-11-23 08:15:00,134.95,208.025,72.217,32.225 -2020-11-23 08:30:00,135.26,206.227,72.217,32.225 -2020-11-23 08:45:00,135.33,203.44,72.217,32.225 -2020-11-23 09:00:00,137.24,198.29,66.117,32.225 -2020-11-23 09:15:00,141.14,193.26,66.117,32.225 -2020-11-23 09:30:00,142.69,190.23,66.117,32.225 -2020-11-23 09:45:00,142.86,188.003,66.117,32.225 -2020-11-23 10:00:00,143.04,185.90900000000002,62.1,32.225 -2020-11-23 10:15:00,143.04,183.359,62.1,32.225 -2020-11-23 10:30:00,143.62,181.167,62.1,32.225 -2020-11-23 10:45:00,139.51,179.63299999999998,62.1,32.225 -2020-11-23 11:00:00,144.08,176.495,60.021,32.225 -2020-11-23 11:15:00,159.0,176.148,60.021,32.225 -2020-11-23 11:30:00,160.47,176.75799999999998,60.021,32.225 -2020-11-23 11:45:00,160.25,175.63299999999998,60.021,32.225 -2020-11-23 12:00:00,147.32,171.385,56.75899999999999,32.225 -2020-11-23 12:15:00,145.08,170.497,56.75899999999999,32.225 -2020-11-23 12:30:00,148.09,169.957,56.75899999999999,32.225 -2020-11-23 12:45:00,145.6,170.778,56.75899999999999,32.225 -2020-11-23 13:00:00,143.46,170.442,56.04600000000001,32.225 -2020-11-23 13:15:00,142.41,169.93900000000002,56.04600000000001,32.225 -2020-11-23 13:30:00,140.37,168.447,56.04600000000001,32.225 -2020-11-23 13:45:00,135.08,168.343,56.04600000000001,32.225 -2020-11-23 14:00:00,135.61,167.577,55.475,32.225 -2020-11-23 14:15:00,135.86,167.467,55.475,32.225 -2020-11-23 14:30:00,135.91,166.745,55.475,32.225 -2020-11-23 14:45:00,136.54,166.763,55.475,32.225 -2020-11-23 15:00:00,136.12,167.21400000000003,57.048,32.225 -2020-11-23 15:15:00,135.68,167.205,57.048,32.225 -2020-11-23 15:30:00,135.08,168.033,57.048,32.225 -2020-11-23 15:45:00,135.81,169.081,57.048,32.225 -2020-11-23 16:00:00,136.9,172.327,59.06,32.225 -2020-11-23 16:15:00,137.68,173.388,59.06,32.225 -2020-11-23 16:30:00,139.13,174.18400000000003,59.06,32.225 -2020-11-23 16:45:00,141.15,173.987,59.06,32.225 -2020-11-23 17:00:00,155.46,176.75400000000002,65.419,32.225 -2020-11-23 17:15:00,157.73,177.153,65.419,32.225 -2020-11-23 17:30:00,158.42,177.005,65.419,32.225 -2020-11-23 17:45:00,145.53,176.706,65.419,32.225 -2020-11-23 18:00:00,137.98,178.655,69.345,32.225 -2020-11-23 18:15:00,139.34,177.84,69.345,32.225 -2020-11-23 18:30:00,138.47,176.386,69.345,32.225 -2020-11-23 18:45:00,139.68,176.57299999999998,69.345,32.225 -2020-11-23 19:00:00,137.89,178.16,73.825,32.225 -2020-11-23 19:15:00,134.19,175.365,73.825,32.225 -2020-11-23 19:30:00,131.82,174.611,73.825,32.225 -2020-11-23 19:45:00,129.59,171.31599999999997,73.825,32.225 -2020-11-23 20:00:00,125.6,167.36900000000003,64.027,32.225 -2020-11-23 20:15:00,119.28,163.202,64.027,32.225 -2020-11-23 20:30:00,122.12,159.554,64.027,32.225 -2020-11-23 20:45:00,121.81,156.717,64.027,32.225 -2020-11-23 21:00:00,118.81,155.09,57.952,32.225 -2020-11-23 21:15:00,109.73,152.90200000000002,57.952,32.225 -2020-11-23 21:30:00,108.05,151.36,57.952,32.225 -2020-11-23 21:45:00,106.57,149.395,57.952,32.225 -2020-11-23 22:00:00,105.12,141.372,53.031000000000006,32.225 -2020-11-23 22:15:00,106.96,136.566,53.031000000000006,32.225 -2020-11-23 22:30:00,104.93,121.29,53.031000000000006,32.225 -2020-11-23 22:45:00,101.2,113.13799999999999,53.031000000000006,32.225 -2020-11-23 23:00:00,92.0,108.491,45.085,32.225 -2020-11-23 23:15:00,94.85,106.9,45.085,32.225 -2020-11-23 23:30:00,94.19,107.60799999999999,45.085,32.225 -2020-11-23 23:45:00,91.56,107.67299999999999,45.085,32.225 -2020-11-24 00:00:00,86.66,101.96,42.843,32.225 -2020-11-24 00:15:00,81.99,101.87299999999999,42.843,32.225 -2020-11-24 00:30:00,80.81,102.262,42.843,32.225 -2020-11-24 00:45:00,83.16,103.147,42.843,32.225 -2020-11-24 01:00:00,86.21,104.68,41.542,32.225 -2020-11-24 01:15:00,86.93,105.70100000000001,41.542,32.225 -2020-11-24 01:30:00,83.03,106.073,41.542,32.225 -2020-11-24 01:45:00,80.91,106.603,41.542,32.225 -2020-11-24 02:00:00,80.28,107.804,40.19,32.225 -2020-11-24 02:15:00,85.04,108.777,40.19,32.225 -2020-11-24 02:30:00,80.94,108.46600000000001,40.19,32.225 -2020-11-24 02:45:00,83.11,110.08,40.19,32.225 -2020-11-24 03:00:00,82.33,112.54700000000001,39.626,32.225 -2020-11-24 03:15:00,81.11,113.471,39.626,32.225 -2020-11-24 03:30:00,80.6,115.473,39.626,32.225 -2020-11-24 03:45:00,81.65,115.988,39.626,32.225 -2020-11-24 04:00:00,89.16,129.751,40.196999999999996,32.225 -2020-11-24 04:15:00,89.98,142.534,40.196999999999996,32.225 -2020-11-24 04:30:00,91.48,143.811,40.196999999999996,32.225 -2020-11-24 04:45:00,88.32,145.847,40.196999999999996,32.225 -2020-11-24 05:00:00,95.04,180.31,43.378,32.225 -2020-11-24 05:15:00,100.05,210.38299999999998,43.378,32.225 -2020-11-24 05:30:00,105.49,205.94099999999997,43.378,32.225 -2020-11-24 05:45:00,104.35,196.915,43.378,32.225 -2020-11-24 06:00:00,111.75,192.609,55.691,32.225 -2020-11-24 06:15:00,115.57,197.745,55.691,32.225 -2020-11-24 06:30:00,120.7,199.278,55.691,32.225 -2020-11-24 06:45:00,125.63,200.59400000000002,55.691,32.225 -2020-11-24 07:00:00,131.53,201.87,65.567,32.225 -2020-11-24 07:15:00,134.38,205.908,65.567,32.225 -2020-11-24 07:30:00,135.59,207.489,65.567,32.225 -2020-11-24 07:45:00,136.05,207.987,65.567,32.225 -2020-11-24 08:00:00,133.21,207.02200000000002,73.001,32.225 -2020-11-24 08:15:00,132.47,206.514,73.001,32.225 -2020-11-24 08:30:00,131.85,204.61,73.001,32.225 -2020-11-24 08:45:00,132.0,201.40599999999998,73.001,32.225 -2020-11-24 09:00:00,133.22,195.56900000000002,67.08800000000001,32.225 -2020-11-24 09:15:00,134.13,191.907,67.08800000000001,32.225 -2020-11-24 09:30:00,136.8,189.577,67.08800000000001,32.225 -2020-11-24 09:45:00,138.03,187.364,67.08800000000001,32.225 -2020-11-24 10:00:00,143.53,184.52599999999998,62.803000000000004,32.225 -2020-11-24 10:15:00,143.26,181.0,62.803000000000004,32.225 -2020-11-24 10:30:00,144.11,178.94400000000002,62.803000000000004,32.225 -2020-11-24 10:45:00,142.0,177.80599999999998,62.803000000000004,32.225 -2020-11-24 11:00:00,145.32,175.952,60.155,32.225 -2020-11-24 11:15:00,159.14,175.36,60.155,32.225 -2020-11-24 11:30:00,159.74,174.77200000000002,60.155,32.225 -2020-11-24 11:45:00,158.94,174.179,60.155,32.225 -2020-11-24 12:00:00,144.91,168.69400000000002,56.845,32.225 -2020-11-24 12:15:00,143.79,167.502,56.845,32.225 -2020-11-24 12:30:00,144.9,167.753,56.845,32.225 -2020-11-24 12:45:00,148.31,168.429,56.845,32.225 -2020-11-24 13:00:00,143.29,167.641,56.163000000000004,32.225 -2020-11-24 13:15:00,142.71,167.11900000000003,56.163000000000004,32.225 -2020-11-24 13:30:00,138.34,166.644,56.163000000000004,32.225 -2020-11-24 13:45:00,137.62,166.546,56.163000000000004,32.225 -2020-11-24 14:00:00,137.28,166.058,55.934,32.225 -2020-11-24 14:15:00,136.5,166.065,55.934,32.225 -2020-11-24 14:30:00,136.48,165.97799999999998,55.934,32.225 -2020-11-24 14:45:00,135.39,165.81,55.934,32.225 -2020-11-24 15:00:00,134.87,165.862,57.43899999999999,32.225 -2020-11-24 15:15:00,134.85,166.291,57.43899999999999,32.225 -2020-11-24 15:30:00,135.23,167.31599999999997,57.43899999999999,32.225 -2020-11-24 15:45:00,134.55,168.06900000000002,57.43899999999999,32.225 -2020-11-24 16:00:00,136.4,171.49900000000002,59.968999999999994,32.225 -2020-11-24 16:15:00,141.88,173.015,59.968999999999994,32.225 -2020-11-24 16:30:00,145.09,174.326,59.968999999999994,32.225 -2020-11-24 16:45:00,146.27,174.53099999999998,59.968999999999994,32.225 -2020-11-24 17:00:00,147.1,177.77900000000002,67.428,32.225 -2020-11-24 17:15:00,160.92,178.29,67.428,32.225 -2020-11-24 17:30:00,161.04,178.67,67.428,32.225 -2020-11-24 17:45:00,161.02,178.213,67.428,32.225 -2020-11-24 18:00:00,147.32,179.94099999999997,71.533,32.225 -2020-11-24 18:15:00,138.99,178.87099999999998,71.533,32.225 -2020-11-24 18:30:00,137.9,177.114,71.533,32.225 -2020-11-24 18:45:00,141.41,177.975,71.533,32.225 -2020-11-24 19:00:00,139.01,179.456,73.32300000000001,32.225 -2020-11-24 19:15:00,136.46,176.43,73.32300000000001,32.225 -2020-11-24 19:30:00,133.33,175.03799999999998,73.32300000000001,32.225 -2020-11-24 19:45:00,132.31,171.794,73.32300000000001,32.225 -2020-11-24 20:00:00,128.54,168.054,64.166,32.225 -2020-11-24 20:15:00,122.92,163.094,64.166,32.225 -2020-11-24 20:30:00,122.74,160.308,64.166,32.225 -2020-11-24 20:45:00,124.43,157.046,64.166,32.225 -2020-11-24 21:00:00,120.21,154.929,57.891999999999996,32.225 -2020-11-24 21:15:00,116.54,153.293,57.891999999999996,32.225 -2020-11-24 21:30:00,111.79,151.145,57.891999999999996,32.225 -2020-11-24 21:45:00,110.12,149.408,57.891999999999996,32.225 -2020-11-24 22:00:00,104.81,142.917,53.242,32.225 -2020-11-24 22:15:00,106.93,137.826,53.242,32.225 -2020-11-24 22:30:00,109.19,122.727,53.242,32.225 -2020-11-24 22:45:00,106.58,114.824,53.242,32.225 -2020-11-24 23:00:00,99.59,110.068,46.665,32.225 -2020-11-24 23:15:00,93.79,107.912,46.665,32.225 -2020-11-24 23:30:00,97.04,108.311,46.665,32.225 -2020-11-24 23:45:00,95.69,108.001,46.665,32.225 -2020-11-25 00:00:00,94.25,102.323,43.16,32.225 -2020-11-25 00:15:00,89.05,102.209,43.16,32.225 -2020-11-25 00:30:00,88.28,102.59700000000001,43.16,32.225 -2020-11-25 00:45:00,90.4,103.465,43.16,32.225 -2020-11-25 01:00:00,88.67,105.03299999999999,40.972,32.225 -2020-11-25 01:15:00,83.25,106.059,40.972,32.225 -2020-11-25 01:30:00,82.33,106.444,40.972,32.225 -2020-11-25 01:45:00,79.08,106.96,40.972,32.225 -2020-11-25 02:00:00,81.52,108.182,39.749,32.225 -2020-11-25 02:15:00,83.98,109.15799999999999,39.749,32.225 -2020-11-25 02:30:00,87.31,108.84299999999999,39.749,32.225 -2020-11-25 02:45:00,88.71,110.45700000000001,39.749,32.225 -2020-11-25 03:00:00,85.46,112.91,39.422,32.225 -2020-11-25 03:15:00,84.79,113.861,39.422,32.225 -2020-11-25 03:30:00,89.21,115.866,39.422,32.225 -2020-11-25 03:45:00,90.74,116.37200000000001,39.422,32.225 -2020-11-25 04:00:00,92.44,130.12,40.505,32.225 -2020-11-25 04:15:00,89.59,142.911,40.505,32.225 -2020-11-25 04:30:00,92.56,144.178,40.505,32.225 -2020-11-25 04:45:00,96.12,146.219,40.505,32.225 -2020-11-25 05:00:00,97.39,180.678,43.397,32.225 -2020-11-25 05:15:00,101.36,210.732,43.397,32.225 -2020-11-25 05:30:00,106.35,206.30599999999998,43.397,32.225 -2020-11-25 05:45:00,111.83,197.285,43.397,32.225 -2020-11-25 06:00:00,112.45,192.995,55.218,32.225 -2020-11-25 06:15:00,119.29,198.136,55.218,32.225 -2020-11-25 06:30:00,122.62,199.71200000000002,55.218,32.225 -2020-11-25 06:45:00,127.32,201.063,55.218,32.225 -2020-11-25 07:00:00,129.42,202.33900000000003,67.39,32.225 -2020-11-25 07:15:00,133.53,206.388,67.39,32.225 -2020-11-25 07:30:00,133.46,207.983,67.39,32.225 -2020-11-25 07:45:00,133.22,208.485,67.39,32.225 -2020-11-25 08:00:00,134.72,207.533,74.345,32.225 -2020-11-25 08:15:00,134.93,207.014,74.345,32.225 -2020-11-25 08:30:00,133.18,205.128,74.345,32.225 -2020-11-25 08:45:00,136.06,201.892,74.345,32.225 -2020-11-25 09:00:00,136.12,196.03400000000002,69.336,32.225 -2020-11-25 09:15:00,136.89,192.37599999999998,69.336,32.225 -2020-11-25 09:30:00,137.83,190.047,69.336,32.225 -2020-11-25 09:45:00,136.21,187.817,69.336,32.225 -2020-11-25 10:00:00,134.1,184.968,64.291,32.225 -2020-11-25 10:15:00,134.21,181.41099999999997,64.291,32.225 -2020-11-25 10:30:00,132.81,179.333,64.291,32.225 -2020-11-25 10:45:00,132.27,178.18200000000002,64.291,32.225 -2020-11-25 11:00:00,130.7,176.317,62.20399999999999,32.225 -2020-11-25 11:15:00,130.65,175.709,62.20399999999999,32.225 -2020-11-25 11:30:00,129.63,175.11900000000003,62.20399999999999,32.225 -2020-11-25 11:45:00,128.59,174.517,62.20399999999999,32.225 -2020-11-25 12:00:00,127.98,169.023,59.042,32.225 -2020-11-25 12:15:00,127.46,167.83700000000002,59.042,32.225 -2020-11-25 12:30:00,129.41,168.113,59.042,32.225 -2020-11-25 12:45:00,127.0,168.794,59.042,32.225 -2020-11-25 13:00:00,126.51,167.97,57.907,32.225 -2020-11-25 13:15:00,126.11,167.454,57.907,32.225 -2020-11-25 13:30:00,126.17,166.975,57.907,32.225 -2020-11-25 13:45:00,126.16,166.868,57.907,32.225 -2020-11-25 14:00:00,128.27,166.345,58.358000000000004,32.225 -2020-11-25 14:15:00,129.25,166.362,58.358000000000004,32.225 -2020-11-25 14:30:00,129.64,166.30700000000002,58.358000000000004,32.225 -2020-11-25 14:45:00,130.02,166.146,58.358000000000004,32.225 -2020-11-25 15:00:00,131.43,166.205,59.348,32.225 -2020-11-25 15:15:00,133.51,166.64,59.348,32.225 -2020-11-25 15:30:00,133.44,167.696,59.348,32.225 -2020-11-25 15:45:00,134.78,168.456,59.348,32.225 -2020-11-25 16:00:00,136.6,171.878,61.413999999999994,32.225 -2020-11-25 16:15:00,139.28,173.418,61.413999999999994,32.225 -2020-11-25 16:30:00,143.76,174.731,61.413999999999994,32.225 -2020-11-25 16:45:00,145.53,174.976,61.413999999999994,32.225 -2020-11-25 17:00:00,146.91,178.197,67.107,32.225 -2020-11-25 17:15:00,147.41,178.731,67.107,32.225 -2020-11-25 17:30:00,147.84,179.12099999999998,67.107,32.225 -2020-11-25 17:45:00,147.01,178.673,67.107,32.225 -2020-11-25 18:00:00,144.4,180.41400000000002,71.92,32.225 -2020-11-25 18:15:00,143.14,179.304,71.92,32.225 -2020-11-25 18:30:00,141.88,177.55700000000002,71.92,32.225 -2020-11-25 18:45:00,142.19,178.42,71.92,32.225 -2020-11-25 19:00:00,141.09,179.89700000000002,75.09,32.225 -2020-11-25 19:15:00,137.11,176.861,75.09,32.225 -2020-11-25 19:30:00,134.84,175.452,75.09,32.225 -2020-11-25 19:45:00,133.69,172.17700000000002,75.09,32.225 -2020-11-25 20:00:00,130.33,168.446,65.977,32.225 -2020-11-25 20:15:00,122.19,163.476,65.977,32.225 -2020-11-25 20:30:00,123.02,160.661,65.977,32.225 -2020-11-25 20:45:00,124.89,157.409,65.977,32.225 -2020-11-25 21:00:00,121.48,155.282,58.798,32.225 -2020-11-25 21:15:00,116.62,153.631,58.798,32.225 -2020-11-25 21:30:00,108.88,151.487,58.798,32.225 -2020-11-25 21:45:00,109.31,149.749,58.798,32.225 -2020-11-25 22:00:00,105.77,143.263,54.486000000000004,32.225 -2020-11-25 22:15:00,109.26,138.168,54.486000000000004,32.225 -2020-11-25 22:30:00,106.25,123.12200000000001,54.486000000000004,32.225 -2020-11-25 22:45:00,104.95,115.227,54.486000000000004,32.225 -2020-11-25 23:00:00,95.13,110.454,47.783,32.225 -2020-11-25 23:15:00,98.94,108.286,47.783,32.225 -2020-11-25 23:30:00,97.56,108.693,47.783,32.225 -2020-11-25 23:45:00,94.42,108.366,47.783,32.225 -2020-11-26 00:00:00,86.96,102.682,43.88,32.225 -2020-11-26 00:15:00,83.82,102.54,43.88,32.225 -2020-11-26 00:30:00,85.5,102.928,43.88,32.225 -2020-11-26 00:45:00,88.72,103.77799999999999,43.88,32.225 -2020-11-26 01:00:00,88.89,105.38,42.242,32.225 -2020-11-26 01:15:00,85.06,106.413,42.242,32.225 -2020-11-26 01:30:00,83.57,106.809,42.242,32.225 -2020-11-26 01:45:00,85.67,107.31299999999999,42.242,32.225 -2020-11-26 02:00:00,86.12,108.552,40.918,32.225 -2020-11-26 02:15:00,83.43,109.53299999999999,40.918,32.225 -2020-11-26 02:30:00,83.05,109.21600000000001,40.918,32.225 -2020-11-26 02:45:00,85.0,110.82700000000001,40.918,32.225 -2020-11-26 03:00:00,85.05,113.26700000000001,40.411,32.225 -2020-11-26 03:15:00,83.54,114.24600000000001,40.411,32.225 -2020-11-26 03:30:00,84.59,116.25299999999999,40.411,32.225 -2020-11-26 03:45:00,88.11,116.75299999999999,40.411,32.225 -2020-11-26 04:00:00,89.54,130.483,41.246,32.225 -2020-11-26 04:15:00,86.6,143.284,41.246,32.225 -2020-11-26 04:30:00,88.88,144.537,41.246,32.225 -2020-11-26 04:45:00,93.86,146.585,41.246,32.225 -2020-11-26 05:00:00,97.17,181.04,44.533,32.225 -2020-11-26 05:15:00,98.12,211.076,44.533,32.225 -2020-11-26 05:30:00,99.16,206.66400000000002,44.533,32.225 -2020-11-26 05:45:00,105.0,197.649,44.533,32.225 -2020-11-26 06:00:00,117.69,193.375,55.005,32.225 -2020-11-26 06:15:00,124.77,198.52,55.005,32.225 -2020-11-26 06:30:00,126.33,200.138,55.005,32.225 -2020-11-26 06:45:00,125.77,201.525,55.005,32.225 -2020-11-26 07:00:00,130.95,202.803,64.597,32.225 -2020-11-26 07:15:00,134.46,206.86,64.597,32.225 -2020-11-26 07:30:00,133.78,208.47,64.597,32.225 -2020-11-26 07:45:00,135.55,208.97400000000002,64.597,32.225 -2020-11-26 08:00:00,136.97,208.035,71.71600000000001,32.225 -2020-11-26 08:15:00,136.62,207.50400000000002,71.71600000000001,32.225 -2020-11-26 08:30:00,135.96,205.636,71.71600000000001,32.225 -2020-11-26 08:45:00,134.99,202.37,71.71600000000001,32.225 -2020-11-26 09:00:00,134.73,196.488,66.51899999999999,32.225 -2020-11-26 09:15:00,134.01,192.83599999999998,66.51899999999999,32.225 -2020-11-26 09:30:00,134.51,190.507,66.51899999999999,32.225 -2020-11-26 09:45:00,133.76,188.261,66.51899999999999,32.225 -2020-11-26 10:00:00,133.11,185.40099999999998,63.04,32.225 -2020-11-26 10:15:00,133.63,181.81599999999997,63.04,32.225 -2020-11-26 10:30:00,132.09,179.71400000000003,63.04,32.225 -2020-11-26 10:45:00,131.91,178.551,63.04,32.225 -2020-11-26 11:00:00,130.31,176.675,60.998000000000005,32.225 -2020-11-26 11:15:00,129.82,176.05,60.998000000000005,32.225 -2020-11-26 11:30:00,129.38,175.459,60.998000000000005,32.225 -2020-11-26 11:45:00,129.19,174.84900000000002,60.998000000000005,32.225 -2020-11-26 12:00:00,129.43,169.345,58.27,32.225 -2020-11-26 12:15:00,129.92,168.167,58.27,32.225 -2020-11-26 12:30:00,130.77,168.467,58.27,32.225 -2020-11-26 12:45:00,128.99,169.15200000000002,58.27,32.225 -2020-11-26 13:00:00,127.51,168.292,57.196000000000005,32.225 -2020-11-26 13:15:00,127.43,167.783,57.196000000000005,32.225 -2020-11-26 13:30:00,128.14,167.3,57.196000000000005,32.225 -2020-11-26 13:45:00,128.96,167.18400000000003,57.196000000000005,32.225 -2020-11-26 14:00:00,131.54,166.625,57.38399999999999,32.225 -2020-11-26 14:15:00,132.48,166.65400000000002,57.38399999999999,32.225 -2020-11-26 14:30:00,133.07,166.63,57.38399999999999,32.225 -2020-11-26 14:45:00,134.6,166.475,57.38399999999999,32.225 -2020-11-26 15:00:00,135.57,166.542,58.647,32.225 -2020-11-26 15:15:00,134.79,166.982,58.647,32.225 -2020-11-26 15:30:00,133.95,168.06900000000002,58.647,32.225 -2020-11-26 15:45:00,134.77,168.833,58.647,32.225 -2020-11-26 16:00:00,135.09,172.248,60.083999999999996,32.225 -2020-11-26 16:15:00,139.08,173.813,60.083999999999996,32.225 -2020-11-26 16:30:00,142.52,175.12900000000002,60.083999999999996,32.225 -2020-11-26 16:45:00,144.11,175.41400000000002,60.083999999999996,32.225 -2020-11-26 17:00:00,145.11,178.605,65.85600000000001,32.225 -2020-11-26 17:15:00,145.39,179.16299999999998,65.85600000000001,32.225 -2020-11-26 17:30:00,144.99,179.56400000000002,65.85600000000001,32.225 -2020-11-26 17:45:00,144.73,179.125,65.85600000000001,32.225 -2020-11-26 18:00:00,142.36,180.87900000000002,69.855,32.225 -2020-11-26 18:15:00,139.12,179.732,69.855,32.225 -2020-11-26 18:30:00,138.76,177.99200000000002,69.855,32.225 -2020-11-26 18:45:00,139.25,178.859,69.855,32.225 -2020-11-26 19:00:00,138.59,180.332,74.015,32.225 -2020-11-26 19:15:00,135.27,177.285,74.015,32.225 -2020-11-26 19:30:00,133.83,175.861,74.015,32.225 -2020-11-26 19:45:00,132.18,172.55599999999998,74.015,32.225 -2020-11-26 20:00:00,127.04,168.832,65.316,32.225 -2020-11-26 20:15:00,124.0,163.852,65.316,32.225 -2020-11-26 20:30:00,120.42,161.009,65.316,32.225 -2020-11-26 20:45:00,117.9,157.766,65.316,32.225 -2020-11-26 21:00:00,116.75,155.628,58.403999999999996,32.225 -2020-11-26 21:15:00,114.04,153.963,58.403999999999996,32.225 -2020-11-26 21:30:00,110.09,151.82299999999998,58.403999999999996,32.225 -2020-11-26 21:45:00,106.75,150.084,58.403999999999996,32.225 -2020-11-26 22:00:00,103.22,143.605,54.092,32.225 -2020-11-26 22:15:00,99.89,138.503,54.092,32.225 -2020-11-26 22:30:00,96.72,123.51100000000001,54.092,32.225 -2020-11-26 22:45:00,95.07,115.624,54.092,32.225 -2020-11-26 23:00:00,93.68,110.834,48.18600000000001,32.225 -2020-11-26 23:15:00,90.11,108.655,48.18600000000001,32.225 -2020-11-26 23:30:00,88.8,109.069,48.18600000000001,32.225 -2020-11-26 23:45:00,89.14,108.726,48.18600000000001,32.225 -2020-11-27 00:00:00,84.43,101.79899999999999,45.18899999999999,32.225 -2020-11-27 00:15:00,89.72,101.839,45.18899999999999,32.225 -2020-11-27 00:30:00,89.24,102.156,45.18899999999999,32.225 -2020-11-27 00:45:00,87.86,103.16,45.18899999999999,32.225 -2020-11-27 01:00:00,81.04,104.459,43.256,32.225 -2020-11-27 01:15:00,79.47,106.179,43.256,32.225 -2020-11-27 01:30:00,83.22,106.521,43.256,32.225 -2020-11-27 01:45:00,85.75,107.06,43.256,32.225 -2020-11-27 02:00:00,86.44,108.556,42.312,32.225 -2020-11-27 02:15:00,83.54,109.431,42.312,32.225 -2020-11-27 02:30:00,79.41,109.71,42.312,32.225 -2020-11-27 02:45:00,79.4,111.234,42.312,32.225 -2020-11-27 03:00:00,80.77,112.949,41.833,32.225 -2020-11-27 03:15:00,88.63,114.539,41.833,32.225 -2020-11-27 03:30:00,90.12,116.492,41.833,32.225 -2020-11-27 03:45:00,88.67,117.42200000000001,41.833,32.225 -2020-11-27 04:00:00,85.04,131.356,42.732,32.225 -2020-11-27 04:15:00,84.49,143.668,42.732,32.225 -2020-11-27 04:30:00,91.48,145.282,42.732,32.225 -2020-11-27 04:45:00,95.37,146.24,42.732,32.225 -2020-11-27 05:00:00,98.6,179.519,46.254,32.225 -2020-11-27 05:15:00,98.74,211.0,46.254,32.225 -2020-11-27 05:30:00,104.82,207.55599999999998,46.254,32.225 -2020-11-27 05:45:00,107.0,198.40900000000002,46.254,32.225 -2020-11-27 06:00:00,109.72,194.56900000000002,56.76,32.225 -2020-11-27 06:15:00,114.28,198.49099999999999,56.76,32.225 -2020-11-27 06:30:00,121.1,199.40200000000002,56.76,32.225 -2020-11-27 06:45:00,125.73,202.19099999999997,56.76,32.225 -2020-11-27 07:00:00,132.85,202.873,66.029,32.225 -2020-11-27 07:15:00,137.07,207.98,66.029,32.225 -2020-11-27 07:30:00,138.18,209.1,66.029,32.225 -2020-11-27 07:45:00,139.13,208.80700000000002,66.029,32.225 -2020-11-27 08:00:00,140.02,207.06799999999998,73.128,32.225 -2020-11-27 08:15:00,141.53,206.30599999999998,73.128,32.225 -2020-11-27 08:30:00,141.95,205.28,73.128,32.225 -2020-11-27 08:45:00,141.74,200.595,73.128,32.225 -2020-11-27 09:00:00,143.12,194.68900000000002,68.23100000000001,32.225 -2020-11-27 09:15:00,144.97,191.862,68.23100000000001,32.225 -2020-11-27 09:30:00,146.38,189.045,68.23100000000001,32.225 -2020-11-27 09:45:00,148.07,186.753,68.23100000000001,32.225 -2020-11-27 10:00:00,148.43,182.864,64.733,32.225 -2020-11-27 10:15:00,149.35,179.82,64.733,32.225 -2020-11-27 10:30:00,148.75,177.725,64.733,32.225 -2020-11-27 10:45:00,149.72,176.15099999999998,64.733,32.225 -2020-11-27 11:00:00,148.49,174.278,62.0,32.225 -2020-11-27 11:15:00,148.43,172.675,62.0,32.225 -2020-11-27 11:30:00,148.91,173.55599999999998,62.0,32.225 -2020-11-27 11:45:00,148.96,172.81900000000002,62.0,32.225 -2020-11-27 12:00:00,148.12,168.327,57.876999999999995,32.225 -2020-11-27 12:15:00,148.75,165.21900000000002,57.876999999999995,32.225 -2020-11-27 12:30:00,151.8,165.7,57.876999999999995,32.225 -2020-11-27 12:45:00,148.18,166.71200000000002,57.876999999999995,32.225 -2020-11-27 13:00:00,147.61,166.737,55.585,32.225 -2020-11-27 13:15:00,145.8,166.979,55.585,32.225 -2020-11-27 13:30:00,143.06,166.637,55.585,32.225 -2020-11-27 13:45:00,142.49,166.505,55.585,32.225 -2020-11-27 14:00:00,140.86,164.783,54.5,32.225 -2020-11-27 14:15:00,140.22,164.737,54.5,32.225 -2020-11-27 14:30:00,139.38,165.44,54.5,32.225 -2020-11-27 14:45:00,139.36,165.44400000000002,54.5,32.225 -2020-11-27 15:00:00,138.46,165.082,55.131,32.225 -2020-11-27 15:15:00,138.42,165.104,55.131,32.225 -2020-11-27 15:30:00,138.56,164.794,55.131,32.225 -2020-11-27 15:45:00,138.86,165.815,55.131,32.225 -2020-11-27 16:00:00,140.34,168.062,56.8,32.225 -2020-11-27 16:15:00,142.71,169.984,56.8,32.225 -2020-11-27 16:30:00,143.85,171.358,56.8,32.225 -2020-11-27 16:45:00,144.15,171.454,56.8,32.225 -2020-11-27 17:00:00,144.16,175.07299999999998,63.428999999999995,32.225 -2020-11-27 17:15:00,144.21,175.265,63.428999999999995,32.225 -2020-11-27 17:30:00,143.91,175.423,63.428999999999995,32.225 -2020-11-27 17:45:00,143.48,174.76,63.428999999999995,32.225 -2020-11-27 18:00:00,141.75,177.138,67.915,32.225 -2020-11-27 18:15:00,141.19,175.46099999999998,67.915,32.225 -2020-11-27 18:30:00,140.31,174.05900000000003,67.915,32.225 -2020-11-27 18:45:00,140.84,174.99200000000002,67.915,32.225 -2020-11-27 19:00:00,139.02,177.395,69.428,32.225 -2020-11-27 19:15:00,136.92,175.63299999999998,69.428,32.225 -2020-11-27 19:30:00,133.97,173.84,69.428,32.225 -2020-11-27 19:45:00,132.93,169.93900000000002,69.428,32.225 -2020-11-27 20:00:00,127.08,166.252,60.56100000000001,32.225 -2020-11-27 20:15:00,123.22,161.39700000000002,60.56100000000001,32.225 -2020-11-27 20:30:00,120.97,158.409,60.56100000000001,32.225 -2020-11-27 20:45:00,121.98,155.536,60.56100000000001,32.225 -2020-11-27 21:00:00,120.28,154.04399999999998,55.18600000000001,32.225 -2020-11-27 21:15:00,115.06,153.016,55.18600000000001,32.225 -2020-11-27 21:30:00,106.27,150.89700000000002,55.18600000000001,32.225 -2020-11-27 21:45:00,104.92,149.668,55.18600000000001,32.225 -2020-11-27 22:00:00,98.21,144.031,51.433,32.225 -2020-11-27 22:15:00,95.41,138.768,51.433,32.225 -2020-11-27 22:30:00,92.29,130.185,51.433,32.225 -2020-11-27 22:45:00,89.5,125.54,51.433,32.225 -2020-11-27 23:00:00,88.76,120.616,46.201,32.225 -2020-11-27 23:15:00,90.76,116.462,46.201,32.225 -2020-11-27 23:30:00,88.25,115.31200000000001,46.201,32.225 -2020-11-27 23:45:00,84.02,114.34899999999999,46.201,32.225 -2020-11-28 00:00:00,77.33,99.921,42.576,32.047 -2020-11-28 00:15:00,75.71,96.16,42.576,32.047 -2020-11-28 00:30:00,79.64,97.53200000000001,42.576,32.047 -2020-11-28 00:45:00,79.58,99.0,42.576,32.047 -2020-11-28 01:00:00,78.45,100.935,39.34,32.047 -2020-11-28 01:15:00,69.57,101.92299999999999,39.34,32.047 -2020-11-28 01:30:00,71.73,101.686,39.34,32.047 -2020-11-28 01:45:00,75.49,102.255,39.34,32.047 -2020-11-28 02:00:00,75.22,104.189,37.582,32.047 -2020-11-28 02:15:00,73.99,104.60799999999999,37.582,32.047 -2020-11-28 02:30:00,67.25,103.791,37.582,32.047 -2020-11-28 02:45:00,71.5,105.54299999999999,37.582,32.047 -2020-11-28 03:00:00,74.56,107.538,36.523,32.047 -2020-11-28 03:15:00,74.51,107.991,36.523,32.047 -2020-11-28 03:30:00,72.04,108.655,36.523,32.047 -2020-11-28 03:45:00,70.18,109.949,36.523,32.047 -2020-11-28 04:00:00,74.75,120.022,36.347,32.047 -2020-11-28 04:15:00,70.48,130.019,36.347,32.047 -2020-11-28 04:30:00,69.82,129.468,36.347,32.047 -2020-11-28 04:45:00,68.36,130.064,36.347,32.047 -2020-11-28 05:00:00,68.09,148.316,36.407,32.047 -2020-11-28 05:15:00,67.78,161.641,36.407,32.047 -2020-11-28 05:30:00,68.17,158.80200000000002,36.407,32.047 -2020-11-28 05:45:00,70.47,155.115,36.407,32.047 -2020-11-28 06:00:00,72.18,169.19400000000002,38.228,32.047 -2020-11-28 06:15:00,75.04,188.45,38.228,32.047 -2020-11-28 06:30:00,76.95,184.31099999999998,38.228,32.047 -2020-11-28 06:45:00,78.95,178.916,38.228,32.047 -2020-11-28 07:00:00,81.61,176.02900000000002,41.905,32.047 -2020-11-28 07:15:00,85.49,179.83700000000002,41.905,32.047 -2020-11-28 07:30:00,86.76,183.553,41.905,32.047 -2020-11-28 07:45:00,89.52,186.821,41.905,32.047 -2020-11-28 08:00:00,92.6,188.55,46.051,32.047 -2020-11-28 08:15:00,93.47,190.86,46.051,32.047 -2020-11-28 08:30:00,94.42,191.234,46.051,32.047 -2020-11-28 08:45:00,96.07,189.398,46.051,32.047 -2020-11-28 09:00:00,97.99,185.484,46.683,32.047 -2020-11-28 09:15:00,98.87,183.395,46.683,32.047 -2020-11-28 09:30:00,100.11,181.44400000000002,46.683,32.047 -2020-11-28 09:45:00,100.75,179.19799999999998,46.683,32.047 -2020-11-28 10:00:00,100.87,175.627,44.425,32.047 -2020-11-28 10:15:00,100.95,172.757,44.425,32.047 -2020-11-28 10:30:00,101.61,170.725,44.425,32.047 -2020-11-28 10:45:00,102.02,170.206,44.425,32.047 -2020-11-28 11:00:00,102.71,168.458,42.148999999999994,32.047 -2020-11-28 11:15:00,102.34,166.38299999999998,42.148999999999994,32.047 -2020-11-28 11:30:00,102.7,166.33900000000003,42.148999999999994,32.047 -2020-11-28 11:45:00,102.53,164.873,42.148999999999994,32.047 -2020-11-28 12:00:00,101.89,159.649,39.683,32.047 -2020-11-28 12:15:00,99.63,157.246,39.683,32.047 -2020-11-28 12:30:00,98.83,158.006,39.683,32.047 -2020-11-28 12:45:00,95.47,158.469,39.683,32.047 -2020-11-28 13:00:00,91.62,157.96,37.154,32.047 -2020-11-28 13:15:00,89.78,156.328,37.154,32.047 -2020-11-28 13:30:00,88.89,155.621,37.154,32.047 -2020-11-28 13:45:00,89.56,155.675,37.154,32.047 -2020-11-28 14:00:00,88.24,154.984,36.457,32.047 -2020-11-28 14:15:00,89.2,154.278,36.457,32.047 -2020-11-28 14:30:00,90.17,153.356,36.457,32.047 -2020-11-28 14:45:00,90.93,153.635,36.457,32.047 -2020-11-28 15:00:00,91.29,153.899,38.257,32.047 -2020-11-28 15:15:00,91.79,154.743,38.257,32.047 -2020-11-28 15:30:00,92.89,155.843,38.257,32.047 -2020-11-28 15:45:00,94.51,156.736,38.257,32.047 -2020-11-28 16:00:00,96.87,158.286,41.181000000000004,32.047 -2020-11-28 16:15:00,100.02,160.869,41.181000000000004,32.047 -2020-11-28 16:30:00,104.43,162.238,41.181000000000004,32.047 -2020-11-28 16:45:00,105.58,163.142,41.181000000000004,32.047 -2020-11-28 17:00:00,107.55,166.046,46.806000000000004,32.047 -2020-11-28 17:15:00,108.65,167.36599999999999,46.806000000000004,32.047 -2020-11-28 17:30:00,109.6,167.429,46.806000000000004,32.047 -2020-11-28 17:45:00,109.96,166.5,46.806000000000004,32.047 -2020-11-28 18:00:00,110.46,168.673,52.073,32.047 -2020-11-28 18:15:00,109.84,168.799,52.073,32.047 -2020-11-28 18:30:00,109.58,168.78900000000002,52.073,32.047 -2020-11-28 18:45:00,109.05,166.24200000000002,52.073,32.047 -2020-11-28 19:00:00,106.97,169.187,53.608000000000004,32.047 -2020-11-28 19:15:00,105.88,166.82299999999998,53.608000000000004,32.047 -2020-11-28 19:30:00,104.51,165.793,53.608000000000004,32.047 -2020-11-28 19:45:00,103.77,161.985,53.608000000000004,32.047 -2020-11-28 20:00:00,99.85,160.374,50.265,32.047 -2020-11-28 20:15:00,95.69,157.26,50.265,32.047 -2020-11-28 20:30:00,93.1,153.798,50.265,32.047 -2020-11-28 20:45:00,91.53,150.88299999999998,50.265,32.047 -2020-11-28 21:00:00,89.7,151.108,45.766000000000005,32.047 -2020-11-28 21:15:00,87.06,150.393,45.766000000000005,32.047 -2020-11-28 21:30:00,85.08,149.381,45.766000000000005,32.047 -2020-11-28 21:45:00,84.12,147.709,45.766000000000005,32.047 -2020-11-28 22:00:00,82.85,143.25,45.97,32.047 -2020-11-28 22:15:00,80.31,140.19299999999998,45.97,32.047 -2020-11-28 22:30:00,77.52,137.02700000000002,45.97,32.047 -2020-11-28 22:45:00,75.91,134.08100000000002,45.97,32.047 -2020-11-28 23:00:00,73.58,131.162,40.415,32.047 -2020-11-28 23:15:00,72.14,125.635,40.415,32.047 -2020-11-28 23:30:00,69.33,123.365,40.415,32.047 -2020-11-28 23:45:00,66.87,120.325,40.415,32.047 -2020-11-29 00:00:00,64.94,100.87299999999999,36.376,32.047 -2020-11-29 00:15:00,62.98,96.604,36.376,32.047 -2020-11-29 00:30:00,61.95,97.626,36.376,32.047 -2020-11-29 00:45:00,60.96,99.65100000000001,36.376,32.047 -2020-11-29 01:00:00,59.8,101.545,32.992,32.047 -2020-11-29 01:15:00,59.26,103.4,32.992,32.047 -2020-11-29 01:30:00,58.37,103.59,32.992,32.047 -2020-11-29 01:45:00,57.51,103.811,32.992,32.047 -2020-11-29 02:00:00,57.27,105.13799999999999,32.327,32.047 -2020-11-29 02:15:00,56.22,104.96799999999999,32.327,32.047 -2020-11-29 02:30:00,55.73,104.90899999999999,32.327,32.047 -2020-11-29 02:45:00,55.26,106.99799999999999,32.327,32.047 -2020-11-29 03:00:00,54.75,109.369,31.169,32.047 -2020-11-29 03:15:00,55.27,109.456,31.169,32.047 -2020-11-29 03:30:00,55.26,111.166,31.169,32.047 -2020-11-29 03:45:00,55.47,112.23700000000001,31.169,32.047 -2020-11-29 04:00:00,56.47,122.075,30.796,32.047 -2020-11-29 04:15:00,56.6,131.143,30.796,32.047 -2020-11-29 04:30:00,56.82,130.894,30.796,32.047 -2020-11-29 04:45:00,57.66,131.634,30.796,32.047 -2020-11-29 05:00:00,58.4,146.967,30.848000000000003,32.047 -2020-11-29 05:15:00,59.09,158.09799999999998,30.848000000000003,32.047 -2020-11-29 05:30:00,59.43,155.056,30.848000000000003,32.047 -2020-11-29 05:45:00,60.08,151.525,30.848000000000003,32.047 -2020-11-29 06:00:00,61.05,165.06400000000002,31.166,32.047 -2020-11-29 06:15:00,61.8,183.03400000000002,31.166,32.047 -2020-11-29 06:30:00,62.33,177.872,31.166,32.047 -2020-11-29 06:45:00,64.49,171.43099999999998,31.166,32.047 -2020-11-29 07:00:00,66.6,170.65900000000002,33.527,32.047 -2020-11-29 07:15:00,68.82,173.44400000000002,33.527,32.047 -2020-11-29 07:30:00,70.6,176.37099999999998,33.527,32.047 -2020-11-29 07:45:00,72.8,178.989,33.527,32.047 -2020-11-29 08:00:00,75.93,182.40900000000002,36.616,32.047 -2020-11-29 08:15:00,78.15,184.84400000000002,36.616,32.047 -2020-11-29 08:30:00,79.59,186.805,36.616,32.047 -2020-11-29 08:45:00,81.98,186.64700000000002,36.616,32.047 -2020-11-29 09:00:00,83.56,182.33700000000002,37.857,32.047 -2020-11-29 09:15:00,85.67,180.64,37.857,32.047 -2020-11-29 09:30:00,86.37,178.63299999999998,37.857,32.047 -2020-11-29 09:45:00,87.65,176.449,37.857,32.047 -2020-11-29 10:00:00,88.71,175.118,36.319,32.047 -2020-11-29 10:15:00,89.33,172.702,36.319,32.047 -2020-11-29 10:30:00,89.75,171.203,36.319,32.047 -2020-11-29 10:45:00,91.28,169.226,36.319,32.047 -2020-11-29 11:00:00,94.21,168.18400000000003,37.236999999999995,32.047 -2020-11-29 11:15:00,98.71,166.132,37.236999999999995,32.047 -2020-11-29 11:30:00,100.96,165.42700000000002,37.236999999999995,32.047 -2020-11-29 11:45:00,103.01,164.52,37.236999999999995,32.047 -2020-11-29 12:00:00,100.88,158.976,34.871,32.047 -2020-11-29 12:15:00,98.94,158.11700000000002,34.871,32.047 -2020-11-29 12:30:00,96.38,157.68,34.871,32.047 -2020-11-29 12:45:00,94.52,157.204,34.871,32.047 -2020-11-29 13:00:00,94.12,155.987,29.738000000000003,32.047 -2020-11-29 13:15:00,92.16,156.864,29.738000000000003,32.047 -2020-11-29 13:30:00,90.98,155.782,29.738000000000003,32.047 -2020-11-29 13:45:00,89.74,155.44899999999998,29.738000000000003,32.047 -2020-11-29 14:00:00,89.32,155.141,27.333000000000002,32.047 -2020-11-29 14:15:00,88.36,155.555,27.333000000000002,32.047 -2020-11-29 14:30:00,90.19,155.519,27.333000000000002,32.047 -2020-11-29 14:45:00,90.43,155.267,27.333000000000002,32.047 -2020-11-29 15:00:00,89.89,154.24200000000002,28.232,32.047 -2020-11-29 15:15:00,90.56,155.61,28.232,32.047 -2020-11-29 15:30:00,91.22,157.219,28.232,32.047 -2020-11-29 15:45:00,92.39,158.764,28.232,32.047 -2020-11-29 16:00:00,95.42,161.649,32.815,32.047 -2020-11-29 16:15:00,96.9,163.506,32.815,32.047 -2020-11-29 16:30:00,98.92,165.269,32.815,32.047 -2020-11-29 16:45:00,101.02,166.33900000000003,32.815,32.047 -2020-11-29 17:00:00,102.53,169.273,43.068999999999996,32.047 -2020-11-29 17:15:00,104.58,170.584,43.068999999999996,32.047 -2020-11-29 17:30:00,105.89,171.041,43.068999999999996,32.047 -2020-11-29 17:45:00,107.7,172.16,43.068999999999996,32.047 -2020-11-29 18:00:00,106.71,173.975,50.498999999999995,32.047 -2020-11-29 18:15:00,105.17,175.155,50.498999999999995,32.047 -2020-11-29 18:30:00,103.9,173.296,50.498999999999995,32.047 -2020-11-29 18:45:00,102.8,172.385,50.498999999999995,32.047 -2020-11-29 19:00:00,101.44,175.391,53.481,32.047 -2020-11-29 19:15:00,99.87,173.355,53.481,32.047 -2020-11-29 19:30:00,98.61,172.127,53.481,32.047 -2020-11-29 19:45:00,96.7,169.475,53.481,32.047 -2020-11-29 20:00:00,95.81,167.84900000000002,51.687,32.047 -2020-11-29 20:15:00,93.42,165.55900000000003,51.687,32.047 -2020-11-29 20:30:00,91.99,163.27700000000002,51.687,32.047 -2020-11-29 20:45:00,90.53,159.05200000000002,51.687,32.047 -2020-11-29 21:00:00,89.47,156.99200000000002,47.674,32.047 -2020-11-29 21:15:00,87.86,155.668,47.674,32.047 -2020-11-29 21:30:00,87.32,154.80700000000002,47.674,32.047 -2020-11-29 21:45:00,87.42,153.313,47.674,32.047 -2020-11-29 22:00:00,87.27,148.168,48.178000000000004,32.047 -2020-11-29 22:15:00,87.13,144.168,48.178000000000004,32.047 -2020-11-29 22:30:00,85.14,138.221,48.178000000000004,32.047 -2020-11-29 22:45:00,83.37,134.334,48.178000000000004,32.047 -2020-11-29 23:00:00,80.39,128.91899999999998,42.553999999999995,32.047 -2020-11-29 23:15:00,78.24,125.204,42.553999999999995,32.047 -2020-11-29 23:30:00,76.63,123.557,42.553999999999995,32.047 -2020-11-29 23:45:00,74.94,121.303,42.553999999999995,32.047 -2020-11-30 00:00:00,70.81,105.06200000000001,37.177,32.225 -2020-11-30 00:15:00,71.25,103.441,37.177,32.225 -2020-11-30 00:30:00,71.29,104.5,37.177,32.225 -2020-11-30 00:45:00,72.06,105.978,37.177,32.225 -2020-11-30 01:00:00,67.48,107.973,35.358000000000004,32.225 -2020-11-30 01:15:00,69.08,109.38799999999999,35.358000000000004,32.225 -2020-11-30 01:30:00,68.47,109.70200000000001,35.358000000000004,32.225 -2020-11-30 01:45:00,68.71,109.99,35.358000000000004,32.225 -2020-11-30 02:00:00,66.0,111.391,35.03,32.225 -2020-11-30 02:15:00,67.54,112.273,35.03,32.225 -2020-11-30 02:30:00,67.4,112.52600000000001,35.03,32.225 -2020-11-30 02:45:00,68.06,114.06,35.03,32.225 -2020-11-30 03:00:00,66.68,117.569,34.394,32.225 -2020-11-30 03:15:00,67.69,119.211,34.394,32.225 -2020-11-30 03:30:00,68.14,120.822,34.394,32.225 -2020-11-30 03:45:00,69.36,121.333,34.394,32.225 -2020-11-30 04:00:00,71.04,135.393,34.421,32.225 -2020-11-30 04:15:00,71.36,148.519,34.421,32.225 -2020-11-30 04:30:00,80.36,150.013,34.421,32.225 -2020-11-30 04:45:00,83.58,150.964,34.421,32.225 -2020-11-30 05:00:00,84.07,180.87099999999998,39.435,32.225 -2020-11-30 05:15:00,83.14,210.899,39.435,32.225 -2020-11-30 05:30:00,93.56,207.80200000000002,39.435,32.225 -2020-11-30 05:45:00,101.91,198.94,39.435,32.225 -2020-11-30 06:00:00,110.42,195.543,55.685,32.225 -2020-11-30 06:15:00,109.5,199.292,55.685,32.225 -2020-11-30 06:30:00,112.78,201.679,55.685,32.225 -2020-11-30 06:45:00,120.16,203.687,55.685,32.225 -2020-11-30 07:00:00,123.28,205.102,66.837,32.225 -2020-11-30 07:15:00,128.77,209.372,66.837,32.225 -2020-11-30 07:30:00,128.06,211.49400000000003,66.837,32.225 -2020-11-30 07:45:00,128.21,211.993,66.837,32.225 -2020-11-30 08:00:00,135.05,211.018,72.217,32.225 -2020-11-30 08:15:00,132.17,211.399,72.217,32.225 -2020-11-30 08:30:00,130.69,209.71200000000002,72.217,32.225 -2020-11-30 08:45:00,130.49,206.71200000000002,72.217,32.225 -2020-11-30 09:00:00,131.71,201.407,66.117,32.225 -2020-11-30 09:15:00,132.93,196.41099999999997,66.117,32.225 -2020-11-30 09:30:00,133.88,193.389,66.117,32.225 -2020-11-30 09:45:00,136.35,191.048,66.117,32.225 -2020-11-30 10:00:00,133.09,188.88,62.1,32.225 -2020-11-30 10:15:00,133.18,186.13,62.1,32.225 -2020-11-30 10:30:00,131.07,183.77599999999998,62.1,32.225 -2020-11-30 10:45:00,130.86,182.16299999999998,62.1,32.225 -2020-11-30 11:00:00,129.58,178.945,60.021,32.225 -2020-11-30 11:15:00,127.7,178.484,60.021,32.225 -2020-11-30 11:30:00,128.06,179.08900000000003,60.021,32.225 -2020-11-30 11:45:00,127.63,177.903,60.021,32.225 -2020-11-30 12:00:00,127.01,173.58900000000003,56.75899999999999,32.225 -2020-11-30 12:15:00,129.44,172.75599999999997,56.75899999999999,32.225 -2020-11-30 12:30:00,126.09,172.38299999999998,56.75899999999999,32.225 -2020-11-30 12:45:00,130.5,173.231,56.75899999999999,32.225 -2020-11-30 13:00:00,127.8,172.65200000000002,56.04600000000001,32.225 -2020-11-30 13:15:00,135.15,172.187,56.04600000000001,32.225 -2020-11-30 13:30:00,133.2,170.669,56.04600000000001,32.225 -2020-11-30 13:45:00,134.94,170.502,56.04600000000001,32.225 -2020-11-30 14:00:00,132.77,169.498,55.475,32.225 -2020-11-30 14:15:00,134.22,169.459,55.475,32.225 -2020-11-30 14:30:00,134.93,168.958,55.475,32.225 -2020-11-30 14:45:00,139.22,169.021,55.475,32.225 -2020-11-30 15:00:00,139.45,169.52599999999998,57.048,32.225 -2020-11-30 15:15:00,138.24,169.551,57.048,32.225 -2020-11-30 15:30:00,137.99,170.58900000000003,57.048,32.225 -2020-11-30 15:45:00,136.61,171.674,57.048,32.225 -2020-11-30 16:00:00,139.97,174.865,59.06,32.225 -2020-11-30 16:15:00,141.95,176.092,59.06,32.225 -2020-11-30 16:30:00,140.58,176.91,59.06,32.225 -2020-11-30 16:45:00,140.15,176.986,59.06,32.225 -2020-11-30 17:00:00,142.38,179.55700000000002,65.419,32.225 -2020-11-30 17:15:00,140.03,180.122,65.419,32.225 -2020-11-30 17:30:00,141.11,180.05200000000002,65.419,32.225 -2020-11-30 17:45:00,140.16,179.81400000000002,65.419,32.225 -2020-11-30 18:00:00,138.78,181.859,69.345,32.225 -2020-11-30 18:15:00,137.07,180.787,69.345,32.225 -2020-11-30 18:30:00,136.41,179.389,69.345,32.225 -2020-11-30 18:45:00,137.66,179.602,69.345,32.225 -2020-11-30 19:00:00,134.46,181.15599999999998,73.825,32.225 -2020-11-30 19:15:00,133.63,178.29,73.825,32.225 -2020-11-30 19:30:00,137.08,177.426,73.825,32.225 -2020-11-30 19:45:00,135.8,173.923,73.825,32.225 -2020-11-30 20:00:00,129.29,170.03,64.027,32.225 -2020-11-30 20:15:00,123.1,165.794,64.027,32.225 -2020-11-30 20:30:00,117.76,161.946,64.027,32.225 -2020-11-30 20:45:00,115.12,159.184,64.027,32.225 -2020-11-30 21:00:00,116.06,157.475,57.952,32.225 -2020-11-30 21:15:00,113.82,155.185,57.952,32.225 -2020-11-30 21:30:00,112.58,153.67600000000002,57.952,32.225 -2020-11-30 21:45:00,105.49,151.708,57.952,32.225 -2020-11-30 22:00:00,101.57,143.72299999999998,53.031000000000006,32.225 -2020-11-30 22:15:00,95.52,138.885,53.031000000000006,32.225 -2020-11-30 22:30:00,97.58,123.971,53.031000000000006,32.225 -2020-11-30 22:45:00,97.01,115.875,53.031000000000006,32.225 -2020-11-30 23:00:00,92.05,111.11399999999999,45.085,32.225 -2020-11-30 23:15:00,89.71,109.441,45.085,32.225 -2020-11-30 23:30:00,83.96,110.206,45.085,32.225 -2020-11-30 23:45:00,81.23,110.156,45.085,32.225 -2020-12-01 00:00:00,77.38,114.376,43.537,32.65 -2020-12-01 00:15:00,76.24,114.65799999999999,43.537,32.65 -2020-12-01 00:30:00,76.87,115.84100000000001,43.537,32.65 -2020-12-01 00:45:00,75.04,117.59700000000001,43.537,32.65 -2020-12-01 01:00:00,73.08,119.316,41.854,32.65 -2020-12-01 01:15:00,73.82,120.051,41.854,32.65 -2020-12-01 01:30:00,71.9,120.405,41.854,32.65 -2020-12-01 01:45:00,73.54,121.234,41.854,32.65 -2020-12-01 02:00:00,71.89,122.501,40.321,32.65 -2020-12-01 02:15:00,73.96,123.98899999999999,40.321,32.65 -2020-12-01 02:30:00,71.76,124.215,40.321,32.65 -2020-12-01 02:45:00,72.0,126.095,40.321,32.65 -2020-12-01 03:00:00,71.75,128.914,39.632,32.65 -2020-12-01 03:15:00,75.34,129.286,39.632,32.65 -2020-12-01 03:30:00,74.29,131.14,39.632,32.65 -2020-12-01 03:45:00,75.41,132.171,39.632,32.65 -2020-12-01 04:00:00,76.26,145.259,40.183,32.65 -2020-12-01 04:15:00,77.11,157.393,40.183,32.65 -2020-12-01 04:30:00,79.19,160.136,40.183,32.65 -2020-12-01 04:45:00,80.44,162.73,40.183,32.65 -2020-12-01 05:00:00,84.76,197.88,43.945,32.65 -2020-12-01 05:15:00,88.06,227.541,43.945,32.65 -2020-12-01 05:30:00,90.98,222.683,43.945,32.65 -2020-12-01 05:45:00,99.38,214.511,43.945,32.65 -2020-12-01 06:00:00,107.58,210.252,56.048,32.65 -2020-12-01 06:15:00,111.62,215.68,56.048,32.65 -2020-12-01 06:30:00,119.23,217.26,56.048,32.65 -2020-12-01 06:45:00,121.67,219.46099999999998,56.048,32.65 -2020-12-01 07:00:00,129.63,218.843,65.74,32.65 -2020-12-01 07:15:00,130.84,223.71400000000003,65.74,32.65 -2020-12-01 07:30:00,137.48,226.422,65.74,32.65 -2020-12-01 07:45:00,137.37,227.78900000000002,65.74,32.65 -2020-12-01 08:00:00,140.6,226.493,72.757,32.65 -2020-12-01 08:15:00,141.1,226.658,72.757,32.65 -2020-12-01 08:30:00,140.35,224.92700000000002,72.757,32.65 -2020-12-01 08:45:00,140.13,222.5,72.757,32.65 -2020-12-01 09:00:00,141.71,216.40599999999998,67.692,32.65 -2020-12-01 09:15:00,141.8,212.893,67.692,32.65 -2020-12-01 09:30:00,142.81,210.30700000000002,67.692,32.65 -2020-12-01 09:45:00,145.16,207.66299999999998,67.692,32.65 -2020-12-01 10:00:00,142.57,203.207,63.506,32.65 -2020-12-01 10:15:00,141.13,199.245,63.506,32.65 -2020-12-01 10:30:00,139.34,197.101,63.506,32.65 -2020-12-01 10:45:00,143.54,195.78,63.506,32.65 -2020-12-01 11:00:00,143.81,194.96099999999998,60.758,32.65 -2020-12-01 11:15:00,146.07,194.06400000000002,60.758,32.65 -2020-12-01 11:30:00,145.51,192.882,60.758,32.65 -2020-12-01 11:45:00,143.54,191.393,60.758,32.65 -2020-12-01 12:00:00,141.07,185.77599999999998,57.519,32.65 -2020-12-01 12:15:00,140.56,184.696,57.519,32.65 -2020-12-01 12:30:00,136.23,184.53,57.519,32.65 -2020-12-01 12:45:00,133.91,185.405,57.519,32.65 -2020-12-01 13:00:00,132.2,184.952,56.46,32.65 -2020-12-01 13:15:00,136.5,184.533,56.46,32.65 -2020-12-01 13:30:00,133.44,184.457,56.46,32.65 -2020-12-01 13:45:00,129.4,184.488,56.46,32.65 -2020-12-01 14:00:00,127.85,183.696,56.207,32.65 -2020-12-01 14:15:00,132.64,184.13400000000001,56.207,32.65 -2020-12-01 14:30:00,135.84,184.32299999999998,56.207,32.65 -2020-12-01 14:45:00,135.32,184.10299999999998,56.207,32.65 -2020-12-01 15:00:00,135.69,184.78400000000002,57.391999999999996,32.65 -2020-12-01 15:15:00,135.61,185.36599999999999,57.391999999999996,32.65 -2020-12-01 15:30:00,133.27,187.30200000000002,57.391999999999996,32.65 -2020-12-01 15:45:00,133.91,189.111,57.391999999999996,32.65 -2020-12-01 16:00:00,137.4,190.207,59.955,32.65 -2020-12-01 16:15:00,139.6,191.11599999999999,59.955,32.65 -2020-12-01 16:30:00,142.04,193.775,59.955,32.65 -2020-12-01 16:45:00,141.31,194.75400000000002,59.955,32.65 -2020-12-01 17:00:00,144.35,197.62,67.063,32.65 -2020-12-01 17:15:00,144.05,197.739,67.063,32.65 -2020-12-01 17:30:00,146.6,198.13,67.063,32.65 -2020-12-01 17:45:00,145.09,197.708,67.063,32.65 -2020-12-01 18:00:00,144.03,198.524,71.477,32.65 -2020-12-01 18:15:00,142.72,196.93200000000002,71.477,32.65 -2020-12-01 18:30:00,142.42,195.355,71.477,32.65 -2020-12-01 18:45:00,141.42,195.035,71.477,32.65 -2020-12-01 19:00:00,139.2,196.077,74.32,32.65 -2020-12-01 19:15:00,138.58,192.56,74.32,32.65 -2020-12-01 19:30:00,136.59,190.588,74.32,32.65 -2020-12-01 19:45:00,136.62,187.38299999999998,74.32,32.65 -2020-12-01 20:00:00,127.68,183.91299999999998,66.157,32.65 -2020-12-01 20:15:00,124.64,178.15099999999998,66.157,32.65 -2020-12-01 20:30:00,120.77,174.831,66.157,32.65 -2020-12-01 20:45:00,119.59,171.986,66.157,32.65 -2020-12-01 21:00:00,113.2,170.00900000000001,59.806000000000004,32.65 -2020-12-01 21:15:00,113.24,168.122,59.806000000000004,32.65 -2020-12-01 21:30:00,115.21,166.013,59.806000000000004,32.65 -2020-12-01 21:45:00,113.56,164.245,59.806000000000004,32.65 -2020-12-01 22:00:00,109.11,157.439,54.785,32.65 -2020-12-01 22:15:00,104.46,151.769,54.785,32.65 -2020-12-01 22:30:00,97.9,136.998,54.785,32.65 -2020-12-01 22:45:00,101.22,128.881,54.785,32.65 -2020-12-01 23:00:00,96.47,123.572,47.176,32.65 -2020-12-01 23:15:00,95.75,121.62100000000001,47.176,32.65 -2020-12-01 23:30:00,88.96,121.59299999999999,47.176,32.65 -2020-12-01 23:45:00,85.14,121.363,47.176,32.65 -2020-12-02 00:00:00,84.73,114.73200000000001,43.42,32.65 -2020-12-02 00:15:00,88.25,114.98200000000001,43.42,32.65 -2020-12-02 00:30:00,88.93,116.162,43.42,32.65 -2020-12-02 00:45:00,86.11,117.9,43.42,32.65 -2020-12-02 01:00:00,82.71,119.66,40.869,32.65 -2020-12-02 01:15:00,87.22,120.396,40.869,32.65 -2020-12-02 01:30:00,85.57,120.758,40.869,32.65 -2020-12-02 01:45:00,81.75,121.573,40.869,32.65 -2020-12-02 02:00:00,83.12,122.861,39.541,32.65 -2020-12-02 02:15:00,84.79,124.352,39.541,32.65 -2020-12-02 02:30:00,82.28,124.575,39.541,32.65 -2020-12-02 02:45:00,82.21,126.456,39.541,32.65 -2020-12-02 03:00:00,84.94,129.262,39.052,32.65 -2020-12-02 03:15:00,86.09,129.664,39.052,32.65 -2020-12-02 03:30:00,83.57,131.52100000000002,39.052,32.65 -2020-12-02 03:45:00,84.34,132.55200000000002,39.052,32.65 -2020-12-02 04:00:00,87.42,145.606,40.36,32.65 -2020-12-02 04:15:00,90.24,157.736,40.36,32.65 -2020-12-02 04:30:00,90.6,160.465,40.36,32.65 -2020-12-02 04:45:00,88.51,163.063,40.36,32.65 -2020-12-02 05:00:00,94.36,198.175,43.133,32.65 -2020-12-02 05:15:00,100.52,227.77700000000002,43.133,32.65 -2020-12-02 05:30:00,105.35,222.95,43.133,32.65 -2020-12-02 05:45:00,105.35,214.801,43.133,32.65 -2020-12-02 06:00:00,109.55,210.567,54.953,32.65 -2020-12-02 06:15:00,115.06,215.998,54.953,32.65 -2020-12-02 06:30:00,123.34,217.628,54.953,32.65 -2020-12-02 06:45:00,127.78,219.878,54.953,32.65 -2020-12-02 07:00:00,134.98,219.26,66.566,32.65 -2020-12-02 07:15:00,137.75,224.141,66.566,32.65 -2020-12-02 07:30:00,136.68,226.858,66.566,32.65 -2020-12-02 07:45:00,138.02,228.231,66.566,32.65 -2020-12-02 08:00:00,141.25,226.949,72.902,32.65 -2020-12-02 08:15:00,138.63,227.109,72.902,32.65 -2020-12-02 08:30:00,137.77,225.389,72.902,32.65 -2020-12-02 08:45:00,136.96,222.929,72.902,32.65 -2020-12-02 09:00:00,134.22,216.808,68.465,32.65 -2020-12-02 09:15:00,138.14,213.30200000000002,68.465,32.65 -2020-12-02 09:30:00,138.14,210.72099999999998,68.465,32.65 -2020-12-02 09:45:00,137.02,208.063,68.465,32.65 -2020-12-02 10:00:00,134.5,203.59900000000002,63.625,32.65 -2020-12-02 10:15:00,134.21,199.612,63.625,32.65 -2020-12-02 10:30:00,134.09,197.44299999999998,63.625,32.65 -2020-12-02 10:45:00,133.17,196.112,63.625,32.65 -2020-12-02 11:00:00,128.69,195.27599999999998,61.628,32.65 -2020-12-02 11:15:00,131.51,194.36599999999999,61.628,32.65 -2020-12-02 11:30:00,130.92,193.18099999999998,61.628,32.65 -2020-12-02 11:45:00,130.63,191.68400000000003,61.628,32.65 -2020-12-02 12:00:00,128.7,186.065,58.708999999999996,32.65 -2020-12-02 12:15:00,125.44,184.99599999999998,58.708999999999996,32.65 -2020-12-02 12:30:00,126.63,184.84900000000002,58.708999999999996,32.65 -2020-12-02 12:45:00,128.48,185.729,58.708999999999996,32.65 -2020-12-02 13:00:00,126.35,185.24,57.373000000000005,32.65 -2020-12-02 13:15:00,128.95,184.826,57.373000000000005,32.65 -2020-12-02 13:30:00,127.1,184.747,57.373000000000005,32.65 -2020-12-02 13:45:00,127.31,184.768,57.373000000000005,32.65 -2020-12-02 14:00:00,125.8,183.947,57.684,32.65 -2020-12-02 14:15:00,128.72,184.392,57.684,32.65 -2020-12-02 14:30:00,128.58,184.61,57.684,32.65 -2020-12-02 14:45:00,128.73,184.4,57.684,32.65 -2020-12-02 15:00:00,132.19,185.09799999999998,58.03,32.65 -2020-12-02 15:15:00,132.73,185.68099999999998,58.03,32.65 -2020-12-02 15:30:00,132.49,187.644,58.03,32.65 -2020-12-02 15:45:00,133.74,189.456,58.03,32.65 -2020-12-02 16:00:00,137.37,190.55200000000002,59.97,32.65 -2020-12-02 16:15:00,138.66,191.484,59.97,32.65 -2020-12-02 16:30:00,141.97,194.15,59.97,32.65 -2020-12-02 16:45:00,142.93,195.16400000000002,59.97,32.65 -2020-12-02 17:00:00,147.26,198.00400000000002,65.661,32.65 -2020-12-02 17:15:00,146.69,198.15099999999998,65.661,32.65 -2020-12-02 17:30:00,147.72,198.554,65.661,32.65 -2020-12-02 17:45:00,146.61,198.139,65.661,32.65 -2020-12-02 18:00:00,144.03,198.97299999999998,70.96300000000001,32.65 -2020-12-02 18:15:00,143.55,197.338,70.96300000000001,32.65 -2020-12-02 18:30:00,141.98,195.77,70.96300000000001,32.65 -2020-12-02 18:45:00,139.97,195.455,70.96300000000001,32.65 -2020-12-02 19:00:00,141.8,196.488,74.133,32.65 -2020-12-02 19:15:00,140.75,192.959,74.133,32.65 -2020-12-02 19:30:00,137.4,190.96900000000002,74.133,32.65 -2020-12-02 19:45:00,137.36,187.734,74.133,32.65 -2020-12-02 20:00:00,130.36,184.267,65.613,32.65 -2020-12-02 20:15:00,122.11,178.49400000000003,65.613,32.65 -2020-12-02 20:30:00,123.19,175.14700000000002,65.613,32.65 -2020-12-02 20:45:00,122.73,172.321,65.613,32.65 -2020-12-02 21:00:00,117.07,170.332,58.583,32.65 -2020-12-02 21:15:00,110.96,168.428,58.583,32.65 -2020-12-02 21:30:00,110.94,166.321,58.583,32.65 -2020-12-02 21:45:00,111.13,164.558,58.583,32.65 -2020-12-02 22:00:00,105.41,157.761,54.411,32.65 -2020-12-02 22:15:00,105.31,152.091,54.411,32.65 -2020-12-02 22:30:00,102.13,137.376,54.411,32.65 -2020-12-02 22:45:00,104.64,129.267,54.411,32.65 -2020-12-02 23:00:00,96.98,123.932,47.878,32.65 -2020-12-02 23:15:00,94.32,121.976,47.878,32.65 -2020-12-02 23:30:00,94.93,121.96,47.878,32.65 -2020-12-02 23:45:00,93.72,121.713,47.878,32.65 -2020-12-03 00:00:00,87.84,115.08200000000001,44.513000000000005,32.65 -2020-12-03 00:15:00,83.11,115.303,44.513000000000005,32.65 -2020-12-03 00:30:00,84.51,116.478,44.513000000000005,32.65 -2020-12-03 00:45:00,87.95,118.196,44.513000000000005,32.65 -2020-12-03 01:00:00,84.16,119.99700000000001,43.169,32.65 -2020-12-03 01:15:00,83.09,120.73299999999999,43.169,32.65 -2020-12-03 01:30:00,85.34,121.10600000000001,43.169,32.65 -2020-12-03 01:45:00,86.49,121.904,43.169,32.65 -2020-12-03 02:00:00,82.06,123.214,41.763999999999996,32.65 -2020-12-03 02:15:00,82.6,124.706,41.763999999999996,32.65 -2020-12-03 02:30:00,85.09,124.931,41.763999999999996,32.65 -2020-12-03 02:45:00,86.07,126.811,41.763999999999996,32.65 -2020-12-03 03:00:00,80.57,129.602,41.155,32.65 -2020-12-03 03:15:00,80.92,130.036,41.155,32.65 -2020-12-03 03:30:00,83.75,131.89700000000002,41.155,32.65 -2020-12-03 03:45:00,87.62,132.925,41.155,32.65 -2020-12-03 04:00:00,89.28,145.94799999999998,41.96,32.65 -2020-12-03 04:15:00,85.37,158.075,41.96,32.65 -2020-12-03 04:30:00,83.55,160.786,41.96,32.65 -2020-12-03 04:45:00,85.67,163.389,41.96,32.65 -2020-12-03 05:00:00,90.67,198.46200000000002,45.206,32.65 -2020-12-03 05:15:00,94.78,228.007,45.206,32.65 -2020-12-03 05:30:00,95.98,223.21200000000002,45.206,32.65 -2020-12-03 05:45:00,101.33,215.085,45.206,32.65 -2020-12-03 06:00:00,109.52,210.877,55.398999999999994,32.65 -2020-12-03 06:15:00,116.92,216.308,55.398999999999994,32.65 -2020-12-03 06:30:00,120.32,217.99,55.398999999999994,32.65 -2020-12-03 06:45:00,124.73,220.28599999999997,55.398999999999994,32.65 -2020-12-03 07:00:00,131.84,219.67,64.627,32.65 -2020-12-03 07:15:00,134.4,224.56099999999998,64.627,32.65 -2020-12-03 07:30:00,137.22,227.28400000000002,64.627,32.65 -2020-12-03 07:45:00,137.69,228.66400000000002,64.627,32.65 -2020-12-03 08:00:00,141.29,227.395,70.895,32.65 -2020-12-03 08:15:00,139.35,227.55,70.895,32.65 -2020-12-03 08:30:00,139.65,225.842,70.895,32.65 -2020-12-03 08:45:00,139.71,223.34900000000002,70.895,32.65 -2020-12-03 09:00:00,139.33,217.199,66.382,32.65 -2020-12-03 09:15:00,140.17,213.701,66.382,32.65 -2020-12-03 09:30:00,140.93,211.125,66.382,32.65 -2020-12-03 09:45:00,141.66,208.455,66.382,32.65 -2020-12-03 10:00:00,143.6,203.981,62.739,32.65 -2020-12-03 10:15:00,145.07,199.96900000000002,62.739,32.65 -2020-12-03 10:30:00,144.64,197.77700000000002,62.739,32.65 -2020-12-03 10:45:00,144.41,196.437,62.739,32.65 -2020-12-03 11:00:00,143.34,195.584,60.843,32.65 -2020-12-03 11:15:00,145.71,194.658,60.843,32.65 -2020-12-03 11:30:00,144.57,193.47099999999998,60.843,32.65 -2020-12-03 11:45:00,144.85,191.968,60.843,32.65 -2020-12-03 12:00:00,142.96,186.34599999999998,58.466,32.65 -2020-12-03 12:15:00,140.5,185.28900000000002,58.466,32.65 -2020-12-03 12:30:00,139.07,185.16,58.466,32.65 -2020-12-03 12:45:00,139.98,186.046,58.466,32.65 -2020-12-03 13:00:00,137.73,185.521,56.883,32.65 -2020-12-03 13:15:00,138.78,185.111,56.883,32.65 -2020-12-03 13:30:00,136.57,185.028,56.883,32.65 -2020-12-03 13:45:00,136.43,185.03799999999998,56.883,32.65 -2020-12-03 14:00:00,135.01,184.19099999999997,56.503,32.65 -2020-12-03 14:15:00,135.23,184.644,56.503,32.65 -2020-12-03 14:30:00,135.78,184.89,56.503,32.65 -2020-12-03 14:45:00,136.83,184.68900000000002,56.503,32.65 -2020-12-03 15:00:00,136.93,185.407,57.803999999999995,32.65 -2020-12-03 15:15:00,136.54,185.989,57.803999999999995,32.65 -2020-12-03 15:30:00,135.85,187.979,57.803999999999995,32.65 -2020-12-03 15:45:00,135.94,189.792,57.803999999999995,32.65 -2020-12-03 16:00:00,139.8,190.887,59.379,32.65 -2020-12-03 16:15:00,140.97,191.84400000000002,59.379,32.65 -2020-12-03 16:30:00,142.86,194.516,59.379,32.65 -2020-12-03 16:45:00,142.14,195.565,59.379,32.65 -2020-12-03 17:00:00,143.33,198.38,64.71600000000001,32.65 -2020-12-03 17:15:00,143.46,198.551,64.71600000000001,32.65 -2020-12-03 17:30:00,145.46,198.96900000000002,64.71600000000001,32.65 -2020-12-03 17:45:00,144.91,198.55900000000003,64.71600000000001,32.65 -2020-12-03 18:00:00,141.72,199.41299999999998,68.803,32.65 -2020-12-03 18:15:00,139.73,197.738,68.803,32.65 -2020-12-03 18:30:00,138.04,196.17700000000002,68.803,32.65 -2020-12-03 18:45:00,139.53,195.868,68.803,32.65 -2020-12-03 19:00:00,136.48,196.892,72.934,32.65 -2020-12-03 19:15:00,136.16,193.352,72.934,32.65 -2020-12-03 19:30:00,132.96,191.345,72.934,32.65 -2020-12-03 19:45:00,132.54,188.079,72.934,32.65 -2020-12-03 20:00:00,124.03,184.614,65.175,32.65 -2020-12-03 20:15:00,120.74,178.831,65.175,32.65 -2020-12-03 20:30:00,117.79,175.456,65.175,32.65 -2020-12-03 20:45:00,115.66,172.65099999999998,65.175,32.65 -2020-12-03 21:00:00,113.13,170.648,58.55,32.65 -2020-12-03 21:15:00,111.13,168.72799999999998,58.55,32.65 -2020-12-03 21:30:00,107.15,166.62099999999998,58.55,32.65 -2020-12-03 21:45:00,104.82,164.864,58.55,32.65 -2020-12-03 22:00:00,98.64,158.077,55.041000000000004,32.65 -2020-12-03 22:15:00,100.35,152.408,55.041000000000004,32.65 -2020-12-03 22:30:00,99.69,137.747,55.041000000000004,32.65 -2020-12-03 22:45:00,99.18,129.645,55.041000000000004,32.65 -2020-12-03 23:00:00,96.32,124.286,48.258,32.65 -2020-12-03 23:15:00,90.21,122.32600000000001,48.258,32.65 -2020-12-03 23:30:00,91.13,122.322,48.258,32.65 -2020-12-03 23:45:00,90.28,122.055,48.258,32.65 -2020-12-04 00:00:00,88.17,114.368,45.02,32.65 -2020-12-04 00:15:00,80.56,114.755,45.02,32.65 -2020-12-04 00:30:00,74.99,115.79,45.02,32.65 -2020-12-04 00:45:00,78.87,117.596,45.02,32.65 -2020-12-04 01:00:00,80.8,119.12799999999999,42.695,32.65 -2020-12-04 01:15:00,81.08,120.788,42.695,32.65 -2020-12-04 01:30:00,79.01,120.94,42.695,32.65 -2020-12-04 01:45:00,77.31,121.831,42.695,32.65 -2020-12-04 02:00:00,74.12,123.24,41.511,32.65 -2020-12-04 02:15:00,74.97,124.619,41.511,32.65 -2020-12-04 02:30:00,79.2,125.36200000000001,41.511,32.65 -2020-12-04 02:45:00,82.28,127.291,41.511,32.65 -2020-12-04 03:00:00,79.37,129.062,41.162,32.65 -2020-12-04 03:15:00,79.26,130.482,41.162,32.65 -2020-12-04 03:30:00,82.2,132.33100000000002,41.162,32.65 -2020-12-04 03:45:00,85.02,133.678,41.162,32.65 -2020-12-04 04:00:00,84.4,146.89600000000002,42.226000000000006,32.65 -2020-12-04 04:15:00,78.87,158.79,42.226000000000006,32.65 -2020-12-04 04:30:00,75.73,161.70600000000002,42.226000000000006,32.65 -2020-12-04 04:45:00,80.98,163.172,42.226000000000006,32.65 -2020-12-04 05:00:00,85.06,196.937,45.597,32.65 -2020-12-04 05:15:00,88.99,227.93,45.597,32.65 -2020-12-04 05:30:00,89.73,224.248,45.597,32.65 -2020-12-04 05:45:00,96.09,216.083,45.597,32.65 -2020-12-04 06:00:00,108.01,212.333,56.263999999999996,32.65 -2020-12-04 06:15:00,112.74,216.285,56.263999999999996,32.65 -2020-12-04 06:30:00,117.29,217.148,56.263999999999996,32.65 -2020-12-04 06:45:00,121.66,221.128,56.263999999999996,32.65 -2020-12-04 07:00:00,130.21,219.666,66.888,32.65 -2020-12-04 07:15:00,129.15,225.585,66.888,32.65 -2020-12-04 07:30:00,132.61,228.15400000000002,66.888,32.65 -2020-12-04 07:45:00,134.61,228.649,66.888,32.65 -2020-12-04 08:00:00,137.01,226.28,73.459,32.65 -2020-12-04 08:15:00,136.94,226.03599999999997,73.459,32.65 -2020-12-04 08:30:00,137.62,225.31599999999997,73.459,32.65 -2020-12-04 08:45:00,137.29,221.213,73.459,32.65 -2020-12-04 09:00:00,138.54,215.50599999999997,69.087,32.65 -2020-12-04 09:15:00,139.96,212.579,69.087,32.65 -2020-12-04 09:30:00,139.56,209.581,69.087,32.65 -2020-12-04 09:45:00,138.84,206.78799999999998,69.087,32.65 -2020-12-04 10:00:00,136.1,201.173,65.404,32.65 -2020-12-04 10:15:00,138.43,197.835,65.404,32.65 -2020-12-04 10:30:00,137.86,195.547,65.404,32.65 -2020-12-04 10:45:00,138.39,193.75599999999997,65.404,32.65 -2020-12-04 11:00:00,136.83,192.87,63.0,32.65 -2020-12-04 11:15:00,137.96,191.03599999999997,63.0,32.65 -2020-12-04 11:30:00,138.11,191.58900000000003,63.0,32.65 -2020-12-04 11:45:00,138.08,190.125,63.0,32.65 -2020-12-04 12:00:00,136.37,185.582,59.083,32.65 -2020-12-04 12:15:00,134.96,182.451,59.083,32.65 -2020-12-04 12:30:00,134.55,182.497,59.083,32.65 -2020-12-04 12:45:00,137.65,183.898,59.083,32.65 -2020-12-04 13:00:00,132.64,184.27200000000002,56.611999999999995,32.65 -2020-12-04 13:15:00,133.9,184.679,56.611999999999995,32.65 -2020-12-04 13:30:00,132.84,184.613,56.611999999999995,32.65 -2020-12-04 13:45:00,133.43,184.551,56.611999999999995,32.65 -2020-12-04 14:00:00,130.52,182.54,55.161,32.65 -2020-12-04 14:15:00,129.92,182.826,55.161,32.65 -2020-12-04 14:30:00,127.64,183.615,55.161,32.65 -2020-12-04 14:45:00,127.22,183.72099999999998,55.161,32.65 -2020-12-04 15:00:00,125.79,183.976,55.583,32.65 -2020-12-04 15:15:00,126.08,184.122,55.583,32.65 -2020-12-04 15:30:00,126.65,184.62599999999998,55.583,32.65 -2020-12-04 15:45:00,131.71,186.58900000000003,55.583,32.65 -2020-12-04 16:00:00,133.56,186.52,57.611999999999995,32.65 -2020-12-04 16:15:00,135.6,187.78900000000002,57.611999999999995,32.65 -2020-12-04 16:30:00,138.73,190.56400000000002,57.611999999999995,32.65 -2020-12-04 16:45:00,136.33,191.52700000000002,57.611999999999995,32.65 -2020-12-04 17:00:00,138.83,194.524,64.14,32.65 -2020-12-04 17:15:00,137.41,194.31099999999998,64.14,32.65 -2020-12-04 17:30:00,138.46,194.424,64.14,32.65 -2020-12-04 17:45:00,138.3,193.78900000000002,64.14,32.65 -2020-12-04 18:00:00,135.16,195.34900000000002,68.086,32.65 -2020-12-04 18:15:00,133.86,193.245,68.086,32.65 -2020-12-04 18:30:00,134.09,192.083,68.086,32.65 -2020-12-04 18:45:00,137.38,191.77700000000002,68.086,32.65 -2020-12-04 19:00:00,132.52,193.69400000000002,69.915,32.65 -2020-12-04 19:15:00,129.24,191.503,69.915,32.65 -2020-12-04 19:30:00,128.95,189.06900000000002,69.915,32.65 -2020-12-04 19:45:00,126.18,185.313,69.915,32.65 -2020-12-04 20:00:00,118.12,181.905,61.695,32.65 -2020-12-04 20:15:00,116.18,176.11900000000003,61.695,32.65 -2020-12-04 20:30:00,113.76,172.675,61.695,32.65 -2020-12-04 20:45:00,111.07,170.445,61.695,32.65 -2020-12-04 21:00:00,107.3,168.935,56.041000000000004,32.65 -2020-12-04 21:15:00,103.46,167.43400000000003,56.041000000000004,32.65 -2020-12-04 21:30:00,100.57,165.37400000000002,56.041000000000004,32.65 -2020-12-04 21:45:00,103.14,164.165,56.041000000000004,32.65 -2020-12-04 22:00:00,98.06,158.365,51.888999999999996,32.65 -2020-12-04 22:15:00,96.92,152.564,51.888999999999996,32.65 -2020-12-04 22:30:00,84.82,144.314,51.888999999999996,32.65 -2020-12-04 22:45:00,84.39,139.736,51.888999999999996,32.65 -2020-12-04 23:00:00,84.2,133.908,45.787,32.65 -2020-12-04 23:15:00,84.93,130.002,45.787,32.65 -2020-12-04 23:30:00,82.36,128.553,45.787,32.65 -2020-12-04 23:45:00,78.57,127.60700000000001,45.787,32.65 -2020-12-05 00:00:00,72.37,111.85600000000001,41.815,32.468 -2020-12-05 00:15:00,73.35,107.964,41.815,32.468 -2020-12-05 00:30:00,73.52,110.323,41.815,32.468 -2020-12-05 00:45:00,69.58,112.825,41.815,32.468 -2020-12-05 01:00:00,65.32,115.024,38.645,32.468 -2020-12-05 01:15:00,67.07,115.698,38.645,32.468 -2020-12-05 01:30:00,70.05,115.344,38.645,32.468 -2020-12-05 01:45:00,72.67,116.0,38.645,32.468 -2020-12-05 02:00:00,67.0,118.118,36.696,32.468 -2020-12-05 02:15:00,65.94,119.133,36.696,32.468 -2020-12-05 02:30:00,62.92,118.76799999999999,36.696,32.468 -2020-12-05 02:45:00,67.89,120.795,36.696,32.468 -2020-12-05 03:00:00,68.09,123.185,35.42,32.468 -2020-12-05 03:15:00,69.91,123.42200000000001,35.42,32.468 -2020-12-05 03:30:00,67.12,123.686,35.42,32.468 -2020-12-05 03:45:00,70.54,125.135,35.42,32.468 -2020-12-05 04:00:00,70.06,134.191,35.167,32.468 -2020-12-05 04:15:00,64.46,143.546,35.167,32.468 -2020-12-05 04:30:00,62.74,144.289,35.167,32.468 -2020-12-05 04:45:00,63.37,145.262,35.167,32.468 -2020-12-05 05:00:00,63.4,163.07299999999998,35.311,32.468 -2020-12-05 05:15:00,63.89,175.081,35.311,32.468 -2020-12-05 05:30:00,64.64,171.774,35.311,32.468 -2020-12-05 05:45:00,66.98,169.051,35.311,32.468 -2020-12-05 06:00:00,68.66,184.03099999999998,37.117,32.468 -2020-12-05 06:15:00,70.86,204.283,37.117,32.468 -2020-12-05 06:30:00,72.62,199.84,37.117,32.468 -2020-12-05 06:45:00,75.93,194.908,37.117,32.468 -2020-12-05 07:00:00,78.46,189.69299999999998,40.948,32.468 -2020-12-05 07:15:00,81.06,194.37400000000002,40.948,32.468 -2020-12-05 07:30:00,83.25,199.646,40.948,32.468 -2020-12-05 07:45:00,85.28,204.113,40.948,32.468 -2020-12-05 08:00:00,88.29,205.796,44.903,32.468 -2020-12-05 08:15:00,88.3,209.168,44.903,32.468 -2020-12-05 08:30:00,89.21,210.06599999999997,44.903,32.468 -2020-12-05 08:45:00,91.96,209.077,44.903,32.468 -2020-12-05 09:00:00,93.43,205.105,46.283,32.468 -2020-12-05 09:15:00,93.03,202.935,46.283,32.468 -2020-12-05 09:30:00,95.57,200.84099999999998,46.283,32.468 -2020-12-05 09:45:00,93.63,198.196,46.283,32.468 -2020-12-05 10:00:00,95.54,192.859,44.103,32.468 -2020-12-05 10:15:00,96.38,189.66,44.103,32.468 -2020-12-05 10:30:00,98.31,187.513,44.103,32.468 -2020-12-05 10:45:00,98.64,187.00599999999997,44.103,32.468 -2020-12-05 11:00:00,101.27,186.32299999999998,42.373999999999995,32.468 -2020-12-05 11:15:00,101.54,183.795,42.373999999999995,32.468 -2020-12-05 11:30:00,99.33,183.24,42.373999999999995,32.468 -2020-12-05 11:45:00,97.85,180.82299999999998,42.373999999999995,32.468 -2020-12-05 12:00:00,99.19,175.40900000000002,39.937,32.468 -2020-12-05 12:15:00,96.78,172.928,39.937,32.468 -2020-12-05 12:30:00,95.3,173.30599999999998,39.937,32.468 -2020-12-05 12:45:00,95.84,173.953,39.937,32.468 -2020-12-05 13:00:00,90.76,173.893,37.138000000000005,32.468 -2020-12-05 13:15:00,88.94,172.267,37.138000000000005,32.468 -2020-12-05 13:30:00,88.02,171.75099999999998,37.138000000000005,32.468 -2020-12-05 13:45:00,84.59,172.145,37.138000000000005,32.468 -2020-12-05 14:00:00,86.03,171.328,36.141999999999996,32.468 -2020-12-05 14:15:00,87.73,171.08599999999998,36.141999999999996,32.468 -2020-12-05 14:30:00,88.66,170.1,36.141999999999996,32.468 -2020-12-05 14:45:00,88.57,170.43400000000003,36.141999999999996,32.468 -2020-12-05 15:00:00,90.45,171.362,37.964,32.468 -2020-12-05 15:15:00,92.3,172.308,37.964,32.468 -2020-12-05 15:30:00,95.92,174.362,37.964,32.468 -2020-12-05 15:45:00,95.54,176.33700000000002,37.964,32.468 -2020-12-05 16:00:00,99.12,175.083,40.699,32.468 -2020-12-05 16:15:00,103.2,177.25900000000001,40.699,32.468 -2020-12-05 16:30:00,101.85,179.989,40.699,32.468 -2020-12-05 16:45:00,102.17,181.863,40.699,32.468 -2020-12-05 17:00:00,105.16,184.262,46.216,32.468 -2020-12-05 17:15:00,104.75,185.71099999999998,46.216,32.468 -2020-12-05 17:30:00,109.26,185.743,46.216,32.468 -2020-12-05 17:45:00,106.26,184.71400000000003,46.216,32.468 -2020-12-05 18:00:00,107.15,185.812,51.123999999999995,32.468 -2020-12-05 18:15:00,107.16,185.459,51.123999999999995,32.468 -2020-12-05 18:30:00,106.1,185.628,51.123999999999995,32.468 -2020-12-05 18:45:00,105.22,182.0,51.123999999999995,32.468 -2020-12-05 19:00:00,103.27,184.81900000000002,52.336000000000006,32.468 -2020-12-05 19:15:00,102.54,182.122,52.336000000000006,32.468 -2020-12-05 19:30:00,101.72,180.421,52.336000000000006,32.468 -2020-12-05 19:45:00,99.84,176.465,52.336000000000006,32.468 -2020-12-05 20:00:00,95.78,175.215,48.825,32.468 -2020-12-05 20:15:00,92.88,171.52599999999998,48.825,32.468 -2020-12-05 20:30:00,90.67,167.706,48.825,32.468 -2020-12-05 20:45:00,89.27,165.101,48.825,32.468 -2020-12-05 21:00:00,84.32,165.80599999999998,43.729,32.468 -2020-12-05 21:15:00,84.83,164.725,43.729,32.468 -2020-12-05 21:30:00,83.33,163.88400000000001,43.729,32.468 -2020-12-05 21:45:00,81.56,162.278,43.729,32.468 -2020-12-05 22:00:00,77.6,157.82299999999998,44.126000000000005,32.468 -2020-12-05 22:15:00,76.48,154.488,44.126000000000005,32.468 -2020-12-05 22:30:00,73.47,152.457,44.126000000000005,32.468 -2020-12-05 22:45:00,72.33,149.74200000000002,44.126000000000005,32.468 -2020-12-05 23:00:00,67.46,146.29399999999998,38.169000000000004,32.468 -2020-12-05 23:15:00,67.5,140.766,38.169000000000004,32.468 -2020-12-05 23:30:00,65.09,137.606,38.169000000000004,32.468 -2020-12-05 23:45:00,63.28,134.237,38.169000000000004,32.468 -2020-12-06 00:00:00,59.2,112.60799999999999,35.232,32.468 -2020-12-06 00:15:00,58.21,108.366,35.232,32.468 -2020-12-06 00:30:00,58.38,110.34700000000001,35.232,32.468 -2020-12-06 00:45:00,57.76,113.522,35.232,32.468 -2020-12-06 01:00:00,53.35,115.618,31.403000000000002,32.468 -2020-12-06 01:15:00,54.31,117.323,31.403000000000002,32.468 -2020-12-06 01:30:00,53.96,117.494,31.403000000000002,32.468 -2020-12-06 01:45:00,53.89,117.824,31.403000000000002,32.468 -2020-12-06 02:00:00,52.08,119.219,30.69,32.468 -2020-12-06 02:15:00,53.48,119.389,30.69,32.468 -2020-12-06 02:30:00,52.62,119.875,30.69,32.468 -2020-12-06 02:45:00,52.89,122.36,30.69,32.468 -2020-12-06 03:00:00,50.89,125.052,29.516,32.468 -2020-12-06 03:15:00,52.01,124.8,29.516,32.468 -2020-12-06 03:30:00,49.54,126.455,29.516,32.468 -2020-12-06 03:45:00,51.95,127.82600000000001,29.516,32.468 -2020-12-06 04:00:00,51.32,136.608,29.148000000000003,32.468 -2020-12-06 04:15:00,52.22,144.953,29.148000000000003,32.468 -2020-12-06 04:30:00,53.06,145.747,29.148000000000003,32.468 -2020-12-06 04:45:00,54.12,146.994,29.148000000000003,32.468 -2020-12-06 05:00:00,54.06,161.283,28.706,32.468 -2020-12-06 05:15:00,55.45,170.83599999999998,28.706,32.468 -2020-12-06 05:30:00,55.14,167.392,28.706,32.468 -2020-12-06 05:45:00,55.66,164.93400000000003,28.706,32.468 -2020-12-06 06:00:00,57.08,179.829,28.771,32.468 -2020-12-06 06:15:00,58.52,198.37599999999998,28.771,32.468 -2020-12-06 06:30:00,60.18,192.88299999999998,28.771,32.468 -2020-12-06 06:45:00,62.27,186.947,28.771,32.468 -2020-12-06 07:00:00,64.58,184.169,31.39,32.468 -2020-12-06 07:15:00,66.66,188.005,31.39,32.468 -2020-12-06 07:30:00,70.38,192.06599999999997,31.39,32.468 -2020-12-06 07:45:00,71.0,195.782,31.39,32.468 -2020-12-06 08:00:00,72.79,199.30599999999998,34.972,32.468 -2020-12-06 08:15:00,75.41,202.59,34.972,32.468 -2020-12-06 08:30:00,74.46,205.142,34.972,32.468 -2020-12-06 08:45:00,78.84,206.12,34.972,32.468 -2020-12-06 09:00:00,80.64,201.72299999999998,36.709,32.468 -2020-12-06 09:15:00,82.63,200.10299999999998,36.709,32.468 -2020-12-06 09:30:00,84.01,197.863,36.709,32.468 -2020-12-06 09:45:00,85.27,195.09799999999998,36.709,32.468 -2020-12-06 10:00:00,87.21,192.24400000000003,35.812,32.468 -2020-12-06 10:15:00,88.37,189.549,35.812,32.468 -2020-12-06 10:30:00,89.09,187.975,35.812,32.468 -2020-12-06 10:45:00,91.13,185.59900000000002,35.812,32.468 -2020-12-06 11:00:00,92.13,185.801,36.746,32.468 -2020-12-06 11:15:00,94.24,183.386,36.746,32.468 -2020-12-06 11:30:00,96.69,181.97799999999998,36.746,32.468 -2020-12-06 11:45:00,97.52,180.15400000000002,36.746,32.468 -2020-12-06 12:00:00,95.11,174.195,35.048,32.468 -2020-12-06 12:15:00,93.73,173.592,35.048,32.468 -2020-12-06 12:30:00,90.61,172.55700000000002,35.048,32.468 -2020-12-06 12:45:00,90.11,172.25,35.048,32.468 -2020-12-06 13:00:00,86.89,171.447,29.987,32.468 -2020-12-06 13:15:00,86.08,172.782,29.987,32.468 -2020-12-06 13:30:00,85.02,172.041,29.987,32.468 -2020-12-06 13:45:00,84.86,171.791,29.987,32.468 -2020-12-06 14:00:00,83.89,171.206,27.21,32.468 -2020-12-06 14:15:00,85.55,172.157,27.21,32.468 -2020-12-06 14:30:00,85.84,172.392,27.21,32.468 -2020-12-06 14:45:00,85.27,172.317,27.21,32.468 -2020-12-06 15:00:00,86.37,171.761,27.726999999999997,32.468 -2020-12-06 15:15:00,86.71,173.438,27.726999999999997,32.468 -2020-12-06 15:30:00,87.73,176.092,27.726999999999997,32.468 -2020-12-06 15:45:00,90.08,178.752,27.726999999999997,32.468 -2020-12-06 16:00:00,91.02,179.32,32.23,32.468 -2020-12-06 16:15:00,92.78,180.62599999999998,32.23,32.468 -2020-12-06 16:30:00,94.77,183.63,32.23,32.468 -2020-12-06 16:45:00,95.94,185.667,32.23,32.468 -2020-12-06 17:00:00,99.97,188.047,42.016999999999996,32.468 -2020-12-06 17:15:00,100.43,189.213,42.016999999999996,32.468 -2020-12-06 17:30:00,101.22,189.55,42.016999999999996,32.468 -2020-12-06 17:45:00,103.06,190.769,42.016999999999996,32.468 -2020-12-06 18:00:00,104.02,191.354,49.338,32.468 -2020-12-06 18:15:00,103.43,192.268,49.338,32.468 -2020-12-06 18:30:00,103.55,190.385,49.338,32.468 -2020-12-06 18:45:00,102.55,188.59400000000002,49.338,32.468 -2020-12-06 19:00:00,101.83,191.08900000000003,52.369,32.468 -2020-12-06 19:15:00,100.33,188.959,52.369,32.468 -2020-12-06 19:30:00,99.34,187.078,52.369,32.468 -2020-12-06 19:45:00,96.53,184.515,52.369,32.468 -2020-12-06 20:00:00,95.12,183.24099999999999,50.405,32.468 -2020-12-06 20:15:00,95.13,180.514,50.405,32.468 -2020-12-06 20:30:00,94.12,177.896,50.405,32.468 -2020-12-06 20:45:00,99.95,174.113,50.405,32.468 -2020-12-06 21:00:00,96.19,172.24400000000003,46.235,32.468 -2020-12-06 21:15:00,96.46,170.52599999999998,46.235,32.468 -2020-12-06 21:30:00,87.84,169.972,46.235,32.468 -2020-12-06 21:45:00,89.67,168.50900000000001,46.235,32.468 -2020-12-06 22:00:00,87.62,162.901,46.861000000000004,32.468 -2020-12-06 22:15:00,90.69,158.804,46.861000000000004,32.468 -2020-12-06 22:30:00,89.86,153.694,46.861000000000004,32.468 -2020-12-06 22:45:00,88.9,150.136,46.861000000000004,32.468 -2020-12-06 23:00:00,78.62,143.899,41.302,32.468 -2020-12-06 23:15:00,77.12,140.21,41.302,32.468 -2020-12-06 23:30:00,79.89,137.859,41.302,32.468 -2020-12-06 23:45:00,77.11,135.356,41.302,32.468 -2020-12-07 00:00:00,72.47,117.10600000000001,37.164,32.65 -2020-12-07 00:15:00,69.76,115.786,37.164,32.65 -2020-12-07 00:30:00,69.85,117.88799999999999,37.164,32.65 -2020-12-07 00:45:00,69.38,120.509,37.164,32.65 -2020-12-07 01:00:00,67.99,122.65899999999999,34.994,32.65 -2020-12-07 01:15:00,70.59,123.839,34.994,32.65 -2020-12-07 01:30:00,73.49,124.073,34.994,32.65 -2020-12-07 01:45:00,70.94,124.50200000000001,34.994,32.65 -2020-12-07 02:00:00,66.53,125.896,34.571,32.65 -2020-12-07 02:15:00,67.94,127.52,34.571,32.65 -2020-12-07 02:30:00,66.77,128.33700000000002,34.571,32.65 -2020-12-07 02:45:00,67.8,130.205,34.571,32.65 -2020-12-07 03:00:00,68.56,134.14700000000002,33.934,32.65 -2020-12-07 03:15:00,68.92,135.562,33.934,32.65 -2020-12-07 03:30:00,72.78,136.951,33.934,32.65 -2020-12-07 03:45:00,77.58,137.773,33.934,32.65 -2020-12-07 04:00:00,78.96,150.85,34.107,32.65 -2020-12-07 04:15:00,76.3,163.312,34.107,32.65 -2020-12-07 04:30:00,75.15,166.274,34.107,32.65 -2020-12-07 04:45:00,76.91,167.683,34.107,32.65 -2020-12-07 05:00:00,80.43,197.60299999999998,39.575,32.65 -2020-12-07 05:15:00,83.47,227.14,39.575,32.65 -2020-12-07 05:30:00,88.42,224.0,39.575,32.65 -2020-12-07 05:45:00,93.74,215.947,39.575,32.65 -2020-12-07 06:00:00,104.42,213.045,56.156000000000006,32.65 -2020-12-07 06:15:00,111.84,216.856,56.156000000000006,32.65 -2020-12-07 06:30:00,115.43,219.375,56.156000000000006,32.65 -2020-12-07 06:45:00,121.15,222.22299999999998,56.156000000000006,32.65 -2020-12-07 07:00:00,126.05,221.801,67.926,32.65 -2020-12-07 07:15:00,129.31,226.882,67.926,32.65 -2020-12-07 07:30:00,132.06,230.178,67.926,32.65 -2020-12-07 07:45:00,131.74,231.34599999999998,67.926,32.65 -2020-12-07 08:00:00,134.22,230.016,72.58,32.65 -2020-12-07 08:15:00,134.5,231.165,72.58,32.65 -2020-12-07 08:30:00,134.15,229.669,72.58,32.65 -2020-12-07 08:45:00,132.35,227.305,72.58,32.65 -2020-12-07 09:00:00,135.85,221.885,66.984,32.65 -2020-12-07 09:15:00,133.39,216.815,66.984,32.65 -2020-12-07 09:30:00,137.13,213.58900000000003,66.984,32.65 -2020-12-07 09:45:00,137.46,211.10299999999998,66.984,32.65 -2020-12-07 10:00:00,137.29,207.167,63.158,32.65 -2020-12-07 10:15:00,137.05,204.125,63.158,32.65 -2020-12-07 10:30:00,137.9,201.66,63.158,32.65 -2020-12-07 10:45:00,135.05,200.014,63.158,32.65 -2020-12-07 11:00:00,137.29,197.605,61.141000000000005,32.65 -2020-12-07 11:15:00,137.89,196.96099999999998,61.141000000000005,32.65 -2020-12-07 11:30:00,136.52,196.918,61.141000000000005,32.65 -2020-12-07 11:45:00,136.73,194.68599999999998,61.141000000000005,32.65 -2020-12-07 12:00:00,135.1,190.422,57.961000000000006,32.65 -2020-12-07 12:15:00,132.49,189.833,57.961000000000006,32.65 -2020-12-07 12:30:00,133.75,189.05700000000002,57.961000000000006,32.65 -2020-12-07 12:45:00,132.35,190.261,57.961000000000006,32.65 -2020-12-07 13:00:00,131.69,190.002,56.843,32.65 -2020-12-07 13:15:00,130.03,189.96599999999998,56.843,32.65 -2020-12-07 13:30:00,129.19,188.69799999999998,56.843,32.65 -2020-12-07 13:45:00,129.62,188.476,56.843,32.65 -2020-12-07 14:00:00,131.03,187.24900000000002,55.992,32.65 -2020-12-07 14:15:00,133.01,187.574,55.992,32.65 -2020-12-07 14:30:00,132.23,187.301,55.992,32.65 -2020-12-07 14:45:00,130.84,187.215,55.992,32.65 -2020-12-07 15:00:00,132.97,188.435,57.523,32.65 -2020-12-07 15:15:00,132.34,188.688,57.523,32.65 -2020-12-07 15:30:00,133.31,190.551,57.523,32.65 -2020-12-07 15:45:00,133.8,192.769,57.523,32.65 -2020-12-07 16:00:00,136.26,193.521,59.471000000000004,32.65 -2020-12-07 16:15:00,137.17,194.09599999999998,59.471000000000004,32.65 -2020-12-07 16:30:00,133.45,196.149,59.471000000000004,32.65 -2020-12-07 16:45:00,141.66,197.045,59.471000000000004,32.65 -2020-12-07 17:00:00,155.57,199.225,65.066,32.65 -2020-12-07 17:15:00,156.59,199.476,65.066,32.65 -2020-12-07 17:30:00,158.11,199.28400000000002,65.066,32.65 -2020-12-07 17:45:00,143.66,199.03099999999998,65.066,32.65 -2020-12-07 18:00:00,137.35,200.05900000000003,69.581,32.65 -2020-12-07 18:15:00,140.33,198.747,69.581,32.65 -2020-12-07 18:30:00,138.53,197.518,69.581,32.65 -2020-12-07 18:45:00,138.89,196.44299999999998,69.581,32.65 -2020-12-07 19:00:00,138.22,197.331,73.771,32.65 -2020-12-07 19:15:00,133.86,194.03,73.771,32.65 -2020-12-07 19:30:00,132.32,192.628,73.771,32.65 -2020-12-07 19:45:00,130.15,189.213,73.771,32.65 -2020-12-07 20:00:00,125.89,185.597,65.035,32.65 -2020-12-07 20:15:00,120.27,180.40099999999998,65.035,32.65 -2020-12-07 20:30:00,116.83,175.91099999999997,65.035,32.65 -2020-12-07 20:45:00,115.19,173.76,65.035,32.65 -2020-12-07 21:00:00,113.15,172.405,58.7,32.65 -2020-12-07 21:15:00,109.2,169.50599999999997,58.7,32.65 -2020-12-07 21:30:00,106.77,168.132,58.7,32.65 -2020-12-07 21:45:00,102.99,166.173,58.7,32.65 -2020-12-07 22:00:00,100.77,157.714,53.888000000000005,32.65 -2020-12-07 22:15:00,98.17,152.30700000000002,53.888000000000005,32.65 -2020-12-07 22:30:00,96.13,137.769,53.888000000000005,32.65 -2020-12-07 22:45:00,92.55,129.42,53.888000000000005,32.65 -2020-12-07 23:00:00,91.82,123.929,45.501999999999995,32.65 -2020-12-07 23:15:00,89.24,122.87299999999999,45.501999999999995,32.65 -2020-12-07 23:30:00,86.63,123.27600000000001,45.501999999999995,32.65 -2020-12-07 23:45:00,83.86,123.38,45.501999999999995,32.65 -2020-12-08 00:00:00,81.48,116.75399999999999,43.537,32.65 -2020-12-08 00:15:00,80.94,116.822,43.537,32.65 -2020-12-08 00:30:00,78.77,117.975,43.537,32.65 -2020-12-08 00:45:00,79.27,119.594,43.537,32.65 -2020-12-08 01:00:00,79.97,121.589,41.854,32.65 -2020-12-08 01:15:00,75.56,122.323,41.854,32.65 -2020-12-08 01:30:00,74.99,122.73700000000001,41.854,32.65 -2020-12-08 01:45:00,74.98,123.461,41.854,32.65 -2020-12-08 02:00:00,75.24,124.875,40.321,32.65 -2020-12-08 02:15:00,76.79,126.37799999999999,40.321,32.65 -2020-12-08 02:30:00,77.69,126.604,40.321,32.65 -2020-12-08 02:45:00,75.39,128.481,40.321,32.65 -2020-12-08 03:00:00,75.09,131.209,39.632,32.65 -2020-12-08 03:15:00,77.11,131.793,39.632,32.65 -2020-12-08 03:30:00,77.43,133.668,39.632,32.65 -2020-12-08 03:45:00,78.5,134.694,39.632,32.65 -2020-12-08 04:00:00,80.28,147.555,40.183,32.65 -2020-12-08 04:15:00,79.41,159.66299999999998,40.183,32.65 -2020-12-08 04:30:00,80.97,162.30100000000002,40.183,32.65 -2020-12-08 04:45:00,83.79,164.922,40.183,32.65 -2020-12-08 05:00:00,87.76,199.80200000000002,43.945,32.65 -2020-12-08 05:15:00,91.47,229.07,43.945,32.65 -2020-12-08 05:30:00,96.61,224.416,43.945,32.65 -2020-12-08 05:45:00,100.78,216.40099999999998,43.945,32.65 -2020-12-08 06:00:00,109.95,212.322,56.048,32.65 -2020-12-08 06:15:00,114.88,217.763,56.048,32.65 -2020-12-08 06:30:00,120.13,219.68400000000003,56.048,32.65 -2020-12-08 06:45:00,125.43,222.21400000000003,56.048,32.65 -2020-12-08 07:00:00,131.43,221.608,65.74,32.65 -2020-12-08 07:15:00,135.23,226.53900000000002,65.74,32.65 -2020-12-08 07:30:00,137.34,229.292,65.74,32.65 -2020-12-08 07:45:00,140.61,230.69,65.74,32.65 -2020-12-08 08:00:00,140.68,229.48,72.757,32.65 -2020-12-08 08:15:00,141.83,229.604,72.757,32.65 -2020-12-08 08:30:00,140.68,227.933,72.757,32.65 -2020-12-08 08:45:00,140.89,225.28400000000002,72.757,32.65 -2020-12-08 09:00:00,137.03,218.998,67.692,32.65 -2020-12-08 09:15:00,139.39,215.53799999999998,67.692,32.65 -2020-12-08 09:30:00,139.92,212.989,67.692,32.65 -2020-12-08 09:45:00,139.63,210.25900000000001,67.692,32.65 -2020-12-08 10:00:00,141.01,205.74200000000002,63.506,32.65 -2020-12-08 10:15:00,141.07,201.618,63.506,32.65 -2020-12-08 10:30:00,142.01,199.31,63.506,32.65 -2020-12-08 10:45:00,148.52,197.928,63.506,32.65 -2020-12-08 11:00:00,159.29,196.99099999999999,60.758,32.65 -2020-12-08 11:15:00,158.54,195.997,60.758,32.65 -2020-12-08 11:30:00,159.27,194.8,60.758,32.65 -2020-12-08 11:45:00,146.55,193.266,60.758,32.65 -2020-12-08 12:00:00,143.87,187.637,57.519,32.65 -2020-12-08 12:15:00,142.59,186.643,57.519,32.65 -2020-12-08 12:30:00,142.23,186.595,57.519,32.65 -2020-12-08 12:45:00,140.71,187.507,57.519,32.65 -2020-12-08 13:00:00,136.17,186.812,56.46,32.65 -2020-12-08 13:15:00,135.08,186.417,56.46,32.65 -2020-12-08 13:30:00,133.39,186.313,56.46,32.65 -2020-12-08 13:45:00,132.97,186.27599999999998,56.46,32.65 -2020-12-08 14:00:00,133.26,185.308,56.207,32.65 -2020-12-08 14:15:00,134.5,185.797,56.207,32.65 -2020-12-08 14:30:00,134.65,186.173,56.207,32.65 -2020-12-08 14:45:00,134.64,186.024,56.207,32.65 -2020-12-08 15:00:00,135.74,186.833,57.391999999999996,32.65 -2020-12-08 15:15:00,137.12,187.408,57.391999999999996,32.65 -2020-12-08 15:30:00,138.16,189.517,57.391999999999996,32.65 -2020-12-08 15:45:00,139.22,191.333,57.391999999999996,32.65 -2020-12-08 16:00:00,144.76,192.426,59.955,32.65 -2020-12-08 16:15:00,147.35,193.497,59.955,32.65 -2020-12-08 16:30:00,147.5,196.205,59.955,32.65 -2020-12-08 16:45:00,149.58,197.412,59.955,32.65 -2020-12-08 17:00:00,161.96,200.109,67.063,32.65 -2020-12-08 17:15:00,162.06,200.412,67.063,32.65 -2020-12-08 17:30:00,163.06,200.90400000000002,67.063,32.65 -2020-12-08 17:45:00,150.37,200.532,67.063,32.65 -2020-12-08 18:00:00,142.45,201.481,71.477,32.65 -2020-12-08 18:15:00,144.58,199.622,71.477,32.65 -2020-12-08 18:30:00,143.42,198.09599999999998,71.477,32.65 -2020-12-08 18:45:00,143.59,197.825,71.477,32.65 -2020-12-08 19:00:00,141.4,198.78900000000002,74.32,32.65 -2020-12-08 19:15:00,138.68,195.19799999999998,74.32,32.65 -2020-12-08 19:30:00,136.14,193.11599999999999,74.32,32.65 -2020-12-08 19:45:00,135.11,189.708,74.32,32.65 -2020-12-08 20:00:00,130.38,186.248,66.157,32.65 -2020-12-08 20:15:00,125.0,180.418,66.157,32.65 -2020-12-08 20:30:00,121.61,176.912,66.157,32.65 -2020-12-08 20:45:00,119.36,174.207,66.157,32.65 -2020-12-08 21:00:00,116.99,172.13299999999998,59.806000000000004,32.65 -2020-12-08 21:15:00,116.17,170.135,59.806000000000004,32.65 -2020-12-08 21:30:00,118.31,168.03,59.806000000000004,32.65 -2020-12-08 21:45:00,115.49,166.30599999999998,59.806000000000004,32.65 -2020-12-08 22:00:00,106.63,159.56,54.785,32.65 -2020-12-08 22:15:00,103.62,153.899,54.785,32.65 -2020-12-08 22:30:00,104.21,139.499,54.785,32.65 -2020-12-08 22:45:00,103.55,131.433,54.785,32.65 -2020-12-08 23:00:00,100.51,125.949,47.176,32.65 -2020-12-08 23:15:00,93.05,123.975,47.176,32.65 -2020-12-08 23:30:00,89.98,124.031,47.176,32.65 -2020-12-08 23:45:00,88.91,123.681,47.176,32.65 -2020-12-09 00:00:00,91.27,117.072,43.42,32.65 -2020-12-09 00:15:00,91.07,117.11,43.42,32.65 -2020-12-09 00:30:00,87.44,118.256,43.42,32.65 -2020-12-09 00:45:00,84.26,119.85700000000001,43.42,32.65 -2020-12-09 01:00:00,86.4,121.887,40.869,32.65 -2020-12-09 01:15:00,87.29,122.62,40.869,32.65 -2020-12-09 01:30:00,87.03,123.04299999999999,40.869,32.65 -2020-12-09 01:45:00,82.74,123.751,40.869,32.65 -2020-12-09 02:00:00,80.31,125.185,39.541,32.65 -2020-12-09 02:15:00,81.19,126.69,39.541,32.65 -2020-12-09 02:30:00,86.0,126.91799999999999,39.541,32.65 -2020-12-09 02:45:00,86.44,128.79399999999998,39.541,32.65 -2020-12-09 03:00:00,85.55,131.509,39.052,32.65 -2020-12-09 03:15:00,80.17,132.123,39.052,32.65 -2020-12-09 03:30:00,84.96,134.0,39.052,32.65 -2020-12-09 03:45:00,88.74,135.02700000000002,39.052,32.65 -2020-12-09 04:00:00,90.1,147.856,40.36,32.65 -2020-12-09 04:15:00,86.33,159.96,40.36,32.65 -2020-12-09 04:30:00,85.2,162.585,40.36,32.65 -2020-12-09 04:45:00,86.88,165.207,40.36,32.65 -2020-12-09 05:00:00,93.26,200.05,43.133,32.65 -2020-12-09 05:15:00,99.1,229.263,43.133,32.65 -2020-12-09 05:30:00,104.98,224.636,43.133,32.65 -2020-12-09 05:45:00,108.07,216.644,43.133,32.65 -2020-12-09 06:00:00,110.28,212.59,54.953,32.65 -2020-12-09 06:15:00,116.51,218.035,54.953,32.65 -2020-12-09 06:30:00,119.87,220.00099999999998,54.953,32.65 -2020-12-09 06:45:00,127.56,222.575,54.953,32.65 -2020-12-09 07:00:00,130.61,221.97299999999998,66.566,32.65 -2020-12-09 07:15:00,131.47,226.91099999999997,66.566,32.65 -2020-12-09 07:30:00,133.34,229.667,66.566,32.65 -2020-12-09 07:45:00,136.34,231.06599999999997,66.566,32.65 -2020-12-09 08:00:00,138.72,229.86599999999999,72.902,32.65 -2020-12-09 08:15:00,140.05,229.984,72.902,32.65 -2020-12-09 08:30:00,140.81,228.317,72.902,32.65 -2020-12-09 08:45:00,140.14,225.637,72.902,32.65 -2020-12-09 09:00:00,141.66,219.325,68.465,32.65 -2020-12-09 09:15:00,142.55,215.872,68.465,32.65 -2020-12-09 09:30:00,144.01,213.329,68.465,32.65 -2020-12-09 09:45:00,148.03,210.588,68.465,32.65 -2020-12-09 10:00:00,148.43,206.063,63.625,32.65 -2020-12-09 10:15:00,148.69,201.92,63.625,32.65 -2020-12-09 10:30:00,147.3,199.59,63.625,32.65 -2020-12-09 10:45:00,150.11,198.201,63.625,32.65 -2020-12-09 11:00:00,165.23,197.245,61.628,32.65 -2020-12-09 11:15:00,167.64,196.24,61.628,32.65 -2020-12-09 11:30:00,171.35,195.041,61.628,32.65 -2020-12-09 11:45:00,158.93,193.50099999999998,61.628,32.65 -2020-12-09 12:00:00,150.69,187.872,58.708999999999996,32.65 -2020-12-09 12:15:00,147.05,186.891,58.708999999999996,32.65 -2020-12-09 12:30:00,147.05,186.858,58.708999999999996,32.65 -2020-12-09 12:45:00,144.87,187.774,58.708999999999996,32.65 -2020-12-09 13:00:00,143.99,187.047,57.373000000000005,32.65 -2020-12-09 13:15:00,143.5,186.655,57.373000000000005,32.65 -2020-12-09 13:30:00,140.33,186.545,57.373000000000005,32.65 -2020-12-09 13:45:00,139.48,186.498,57.373000000000005,32.65 -2020-12-09 14:00:00,139.53,185.511,57.684,32.65 -2020-12-09 14:15:00,138.98,186.005,57.684,32.65 -2020-12-09 14:30:00,138.49,186.405,57.684,32.65 -2020-12-09 14:45:00,137.14,186.267,57.684,32.65 -2020-12-09 15:00:00,135.82,187.095,58.03,32.65 -2020-12-09 15:15:00,135.39,187.666,58.03,32.65 -2020-12-09 15:30:00,138.38,189.798,58.03,32.65 -2020-12-09 15:45:00,138.54,191.613,58.03,32.65 -2020-12-09 16:00:00,139.67,192.706,59.97,32.65 -2020-12-09 16:15:00,145.31,193.799,59.97,32.65 -2020-12-09 16:30:00,147.26,196.513,59.97,32.65 -2020-12-09 16:45:00,151.24,197.75099999999998,59.97,32.65 -2020-12-09 17:00:00,169.05,200.424,65.661,32.65 -2020-12-09 17:15:00,169.17,200.75400000000002,65.661,32.65 -2020-12-09 17:30:00,170.79,201.261,65.661,32.65 -2020-12-09 17:45:00,149.97,200.899,65.661,32.65 -2020-12-09 18:00:00,141.53,201.86599999999999,70.96300000000001,32.65 -2020-12-09 18:15:00,143.4,199.97400000000002,70.96300000000001,32.65 -2020-12-09 18:30:00,142.84,198.456,70.96300000000001,32.65 -2020-12-09 18:45:00,143.61,198.19400000000002,70.96300000000001,32.65 -2020-12-09 19:00:00,142.88,199.144,74.133,32.65 -2020-12-09 19:15:00,140.01,195.545,74.133,32.65 -2020-12-09 19:30:00,138.02,193.44799999999998,74.133,32.65 -2020-12-09 19:45:00,135.99,190.014,74.133,32.65 -2020-12-09 20:00:00,129.82,186.553,65.613,32.65 -2020-12-09 20:15:00,124.78,180.71400000000003,65.613,32.65 -2020-12-09 20:30:00,122.6,177.18400000000003,65.613,32.65 -2020-12-09 20:45:00,120.04,174.5,65.613,32.65 -2020-12-09 21:00:00,116.74,172.41,58.583,32.65 -2020-12-09 21:15:00,113.73,170.396,58.583,32.65 -2020-12-09 21:30:00,111.56,168.293,58.583,32.65 -2020-12-09 21:45:00,112.32,166.574,58.583,32.65 -2020-12-09 22:00:00,111.72,159.83700000000002,54.411,32.65 -2020-12-09 22:15:00,110.88,154.179,54.411,32.65 -2020-12-09 22:30:00,104.66,139.827,54.411,32.65 -2020-12-09 22:45:00,99.54,131.77,54.411,32.65 -2020-12-09 23:00:00,93.47,126.26100000000001,47.878,32.65 -2020-12-09 23:15:00,92.23,124.285,47.878,32.65 -2020-12-09 23:30:00,90.56,124.353,47.878,32.65 -2020-12-09 23:45:00,89.81,123.98700000000001,47.878,32.65 -2020-12-10 00:00:00,92.49,117.383,44.513000000000005,32.65 -2020-12-10 00:15:00,87.7,117.391,44.513000000000005,32.65 -2020-12-10 00:30:00,90.23,118.53200000000001,44.513000000000005,32.65 -2020-12-10 00:45:00,85.04,120.113,44.513000000000005,32.65 -2020-12-10 01:00:00,82.13,122.18,43.169,32.65 -2020-12-10 01:15:00,80.96,122.911,43.169,32.65 -2020-12-10 01:30:00,85.8,123.34,43.169,32.65 -2020-12-10 01:45:00,87.1,124.03299999999999,43.169,32.65 -2020-12-10 02:00:00,87.01,125.48899999999999,41.763999999999996,32.65 -2020-12-10 02:15:00,82.06,126.995,41.763999999999996,32.65 -2020-12-10 02:30:00,85.45,127.22399999999999,41.763999999999996,32.65 -2020-12-10 02:45:00,87.43,129.1,41.763999999999996,32.65 -2020-12-10 03:00:00,87.6,131.804,41.155,32.65 -2020-12-10 03:15:00,83.72,132.446,41.155,32.65 -2020-12-10 03:30:00,87.63,134.326,41.155,32.65 -2020-12-10 03:45:00,90.33,135.352,41.155,32.65 -2020-12-10 04:00:00,91.8,148.15,41.96,32.65 -2020-12-10 04:15:00,88.57,160.25,41.96,32.65 -2020-12-10 04:30:00,87.86,162.861,41.96,32.65 -2020-12-10 04:45:00,87.24,165.486,41.96,32.65 -2020-12-10 05:00:00,94.72,200.29,45.206,32.65 -2020-12-10 05:15:00,98.25,229.452,45.206,32.65 -2020-12-10 05:30:00,98.01,224.84900000000002,45.206,32.65 -2020-12-10 05:45:00,102.63,216.87900000000002,45.206,32.65 -2020-12-10 06:00:00,109.41,212.851,55.398999999999994,32.65 -2020-12-10 06:15:00,116.05,218.298,55.398999999999994,32.65 -2020-12-10 06:30:00,120.99,220.30900000000003,55.398999999999994,32.65 -2020-12-10 06:45:00,125.66,222.928,55.398999999999994,32.65 -2020-12-10 07:00:00,129.75,222.33,64.627,32.65 -2020-12-10 07:15:00,134.39,227.273,64.627,32.65 -2020-12-10 07:30:00,136.07,230.03400000000002,64.627,32.65 -2020-12-10 07:45:00,137.41,231.43200000000002,64.627,32.65 -2020-12-10 08:00:00,138.31,230.24200000000002,70.895,32.65 -2020-12-10 08:15:00,138.27,230.352,70.895,32.65 -2020-12-10 08:30:00,139.4,228.68900000000002,70.895,32.65 -2020-12-10 08:45:00,139.75,225.979,70.895,32.65 -2020-12-10 09:00:00,140.06,219.641,66.382,32.65 -2020-12-10 09:15:00,143.71,216.195,66.382,32.65 -2020-12-10 09:30:00,145.38,213.66,66.382,32.65 -2020-12-10 09:45:00,143.55,210.907,66.382,32.65 -2020-12-10 10:00:00,144.96,206.37400000000002,62.739,32.65 -2020-12-10 10:15:00,143.67,202.21099999999998,62.739,32.65 -2020-12-10 10:30:00,142.44,199.86,62.739,32.65 -2020-12-10 10:45:00,142.02,198.46400000000003,62.739,32.65 -2020-12-10 11:00:00,140.23,197.49099999999999,60.843,32.65 -2020-12-10 11:15:00,141.63,196.47299999999998,60.843,32.65 -2020-12-10 11:30:00,140.83,195.273,60.843,32.65 -2020-12-10 11:45:00,140.68,193.729,60.843,32.65 -2020-12-10 12:00:00,140.94,188.09900000000002,58.466,32.65 -2020-12-10 12:15:00,140.46,187.13,58.466,32.65 -2020-12-10 12:30:00,138.97,187.112,58.466,32.65 -2020-12-10 12:45:00,136.01,188.033,58.466,32.65 -2020-12-10 13:00:00,137.69,187.275,56.883,32.65 -2020-12-10 13:15:00,137.48,186.88400000000001,56.883,32.65 -2020-12-10 13:30:00,132.54,186.77,56.883,32.65 -2020-12-10 13:45:00,133.09,186.713,56.883,32.65 -2020-12-10 14:00:00,135.21,185.706,56.503,32.65 -2020-12-10 14:15:00,136.53,186.206,56.503,32.65 -2020-12-10 14:30:00,137.12,186.63,56.503,32.65 -2020-12-10 14:45:00,137.05,186.502,56.503,32.65 -2020-12-10 15:00:00,137.96,187.34900000000002,57.803999999999995,32.65 -2020-12-10 15:15:00,139.18,187.918,57.803999999999995,32.65 -2020-12-10 15:30:00,136.67,190.06900000000002,57.803999999999995,32.65 -2020-12-10 15:45:00,137.64,191.88400000000001,57.803999999999995,32.65 -2020-12-10 16:00:00,138.45,192.976,59.379,32.65 -2020-12-10 16:15:00,142.96,194.09,59.379,32.65 -2020-12-10 16:30:00,146.32,196.812,59.379,32.65 -2020-12-10 16:45:00,153.38,198.078,59.379,32.65 -2020-12-10 17:00:00,168.95,200.729,64.71600000000001,32.65 -2020-12-10 17:15:00,169.75,201.08599999999998,64.71600000000001,32.65 -2020-12-10 17:30:00,169.32,201.61,64.71600000000001,32.65 -2020-12-10 17:45:00,147.93,201.25599999999997,64.71600000000001,32.65 -2020-12-10 18:00:00,141.13,202.24400000000003,68.803,32.65 -2020-12-10 18:15:00,143.26,200.32,68.803,32.65 -2020-12-10 18:30:00,143.39,198.808,68.803,32.65 -2020-12-10 18:45:00,144.16,198.555,68.803,32.65 -2020-12-10 19:00:00,142.57,199.49099999999999,72.934,32.65 -2020-12-10 19:15:00,140.71,195.882,72.934,32.65 -2020-12-10 19:30:00,137.64,193.773,72.934,32.65 -2020-12-10 19:45:00,135.04,190.31400000000002,72.934,32.65 -2020-12-10 20:00:00,132.42,186.852,65.175,32.65 -2020-12-10 20:15:00,126.79,181.005,65.175,32.65 -2020-12-10 20:30:00,122.81,177.45,65.175,32.65 -2020-12-10 20:45:00,120.88,174.785,65.175,32.65 -2020-12-10 21:00:00,117.89,172.68099999999998,58.55,32.65 -2020-12-10 21:15:00,115.42,170.65,58.55,32.65 -2020-12-10 21:30:00,118.82,168.548,58.55,32.65 -2020-12-10 21:45:00,116.05,166.838,58.55,32.65 -2020-12-10 22:00:00,113.48,160.107,55.041000000000004,32.65 -2020-12-10 22:15:00,110.17,154.452,55.041000000000004,32.65 -2020-12-10 22:30:00,99.6,140.149,55.041000000000004,32.65 -2020-12-10 22:45:00,100.62,132.09799999999998,55.041000000000004,32.65 -2020-12-10 23:00:00,94.51,126.565,48.258,32.65 -2020-12-10 23:15:00,91.88,124.586,48.258,32.65 -2020-12-10 23:30:00,89.58,124.66799999999999,48.258,32.65 -2020-12-10 23:45:00,91.27,124.288,48.258,32.65 -2020-12-11 00:00:00,91.85,116.62899999999999,45.02,32.65 -2020-12-11 00:15:00,90.83,116.805,45.02,32.65 -2020-12-11 00:30:00,85.32,117.803,45.02,32.65 -2020-12-11 00:45:00,82.24,119.473,45.02,32.65 -2020-12-11 01:00:00,79.17,121.26299999999999,42.695,32.65 -2020-12-11 01:15:00,81.0,122.91799999999999,42.695,32.65 -2020-12-11 01:30:00,77.89,123.124,42.695,32.65 -2020-12-11 01:45:00,78.18,123.911,42.695,32.65 -2020-12-11 02:00:00,81.93,125.464,41.511,32.65 -2020-12-11 02:15:00,86.0,126.85700000000001,41.511,32.65 -2020-12-11 02:30:00,86.34,127.60600000000001,41.511,32.65 -2020-12-11 02:45:00,81.69,129.531,41.511,32.65 -2020-12-11 03:00:00,81.72,131.216,41.162,32.65 -2020-12-11 03:15:00,86.02,132.842,41.162,32.65 -2020-12-11 03:30:00,88.54,134.709,41.162,32.65 -2020-12-11 03:45:00,89.73,136.055,41.162,32.65 -2020-12-11 04:00:00,84.52,149.05200000000002,42.226000000000006,32.65 -2020-12-11 04:15:00,82.83,160.917,42.226000000000006,32.65 -2020-12-11 04:30:00,84.73,163.737,42.226000000000006,32.65 -2020-12-11 04:45:00,86.99,165.222,42.226000000000006,32.65 -2020-12-11 05:00:00,89.74,198.715,45.597,32.65 -2020-12-11 05:15:00,93.03,229.33,45.597,32.65 -2020-12-11 05:30:00,96.79,225.83599999999998,45.597,32.65 -2020-12-11 05:45:00,101.33,217.828,45.597,32.65 -2020-12-11 06:00:00,110.09,214.25900000000001,56.263999999999996,32.65 -2020-12-11 06:15:00,118.24,218.227,56.263999999999996,32.65 -2020-12-11 06:30:00,122.75,219.41400000000002,56.263999999999996,32.65 -2020-12-11 06:45:00,127.63,223.713,56.263999999999996,32.65 -2020-12-11 07:00:00,132.56,222.27200000000002,66.888,32.65 -2020-12-11 07:15:00,135.59,228.239,66.888,32.65 -2020-12-11 07:30:00,138.93,230.83900000000003,66.888,32.65 -2020-12-11 07:45:00,140.11,231.35,66.888,32.65 -2020-12-11 08:00:00,140.74,229.05599999999998,73.459,32.65 -2020-12-11 08:15:00,138.35,228.766,73.459,32.65 -2020-12-11 08:30:00,138.94,228.084,73.459,32.65 -2020-12-11 08:45:00,138.68,223.765,73.459,32.65 -2020-12-11 09:00:00,138.76,217.87099999999998,69.087,32.65 -2020-12-11 09:15:00,142.43,214.997,69.087,32.65 -2020-12-11 09:30:00,145.27,212.041,69.087,32.65 -2020-12-11 09:45:00,145.82,209.167,69.087,32.65 -2020-12-11 10:00:00,146.67,203.49599999999998,65.404,32.65 -2020-12-11 10:15:00,146.04,200.011,65.404,32.65 -2020-12-11 10:30:00,146.52,197.567,65.404,32.65 -2020-12-11 10:45:00,146.39,195.722,65.404,32.65 -2020-12-11 11:00:00,144.72,194.715,63.0,32.65 -2020-12-11 11:15:00,144.28,192.791,63.0,32.65 -2020-12-11 11:30:00,145.11,193.333,63.0,32.65 -2020-12-11 11:45:00,143.67,191.829,63.0,32.65 -2020-12-11 12:00:00,143.59,187.28,59.083,32.65 -2020-12-11 12:15:00,143.45,184.239,59.083,32.65 -2020-12-11 12:30:00,142.82,184.391,59.083,32.65 -2020-12-11 12:45:00,140.7,185.827,59.083,32.65 -2020-12-11 13:00:00,139.92,185.97299999999998,56.611999999999995,32.65 -2020-12-11 13:15:00,139.16,186.396,56.611999999999995,32.65 -2020-12-11 13:30:00,136.21,186.297,56.611999999999995,32.65 -2020-12-11 13:45:00,136.82,186.169,56.611999999999995,32.65 -2020-12-11 14:00:00,134.19,184.005,55.161,32.65 -2020-12-11 14:15:00,134.68,184.335,55.161,32.65 -2020-12-11 14:30:00,134.81,185.299,55.161,32.65 -2020-12-11 14:45:00,133.75,185.48,55.161,32.65 -2020-12-11 15:00:00,133.3,185.865,55.583,32.65 -2020-12-11 15:15:00,132.89,185.993,55.583,32.65 -2020-12-11 15:30:00,133.49,186.65400000000002,55.583,32.65 -2020-12-11 15:45:00,133.98,188.61599999999999,55.583,32.65 -2020-12-11 16:00:00,135.78,188.544,57.611999999999995,32.65 -2020-12-11 16:15:00,139.22,189.968,57.611999999999995,32.65 -2020-12-11 16:30:00,141.38,192.791,57.611999999999995,32.65 -2020-12-11 16:45:00,141.75,193.968,57.611999999999995,32.65 -2020-12-11 17:00:00,142.8,196.8,64.14,32.65 -2020-12-11 17:15:00,142.37,196.774,64.14,32.65 -2020-12-11 17:30:00,142.8,196.99900000000002,64.14,32.65 -2020-12-11 17:45:00,141.37,196.421,64.14,32.65 -2020-12-11 18:00:00,139.86,198.11599999999999,68.086,32.65 -2020-12-11 18:15:00,137.98,195.77200000000002,68.086,32.65 -2020-12-11 18:30:00,137.12,194.65900000000002,68.086,32.65 -2020-12-11 18:45:00,137.09,194.41099999999997,68.086,32.65 -2020-12-11 19:00:00,135.72,196.236,69.915,32.65 -2020-12-11 19:15:00,133.39,193.97799999999998,69.915,32.65 -2020-12-11 19:30:00,131.85,191.445,69.915,32.65 -2020-12-11 19:45:00,128.74,187.503,69.915,32.65 -2020-12-11 20:00:00,123.92,184.093,61.695,32.65 -2020-12-11 20:15:00,119.13,178.245,61.695,32.65 -2020-12-11 20:30:00,116.21,174.625,61.695,32.65 -2020-12-11 20:45:00,114.15,172.53400000000002,61.695,32.65 -2020-12-11 21:00:00,114.45,170.922,56.041000000000004,32.65 -2020-12-11 21:15:00,112.95,169.31,56.041000000000004,32.65 -2020-12-11 21:30:00,111.79,167.25400000000002,56.041000000000004,32.65 -2020-12-11 21:45:00,111.52,166.093,56.041000000000004,32.65 -2020-12-11 22:00:00,100.51,160.34799999999998,51.888999999999996,32.65 -2020-12-11 22:15:00,97.98,154.564,51.888999999999996,32.65 -2020-12-11 22:30:00,92.39,146.664,51.888999999999996,32.65 -2020-12-11 22:45:00,92.97,142.139,51.888999999999996,32.65 -2020-12-11 23:00:00,94.85,136.137,45.787,32.65 -2020-12-11 23:15:00,93.72,132.213,45.787,32.65 -2020-12-11 23:30:00,88.87,130.852,45.787,32.65 -2020-12-11 23:45:00,84.74,129.795,45.787,32.65 -2020-12-12 00:00:00,84.97,114.07600000000001,41.815,32.468 -2020-12-12 00:15:00,83.87,109.97399999999999,41.815,32.468 -2020-12-12 00:30:00,79.35,112.294,41.815,32.468 -2020-12-12 00:45:00,76.4,114.661,41.815,32.468 -2020-12-12 01:00:00,78.93,117.113,38.645,32.468 -2020-12-12 01:15:00,79.22,117.779,38.645,32.468 -2020-12-12 01:30:00,74.91,117.477,38.645,32.468 -2020-12-12 01:45:00,70.19,118.03,38.645,32.468 -2020-12-12 02:00:00,69.07,120.29,36.696,32.468 -2020-12-12 02:15:00,68.62,121.31700000000001,36.696,32.468 -2020-12-12 02:30:00,76.58,120.963,36.696,32.468 -2020-12-12 02:45:00,71.16,122.986,36.696,32.468 -2020-12-12 03:00:00,72.83,125.289,35.42,32.468 -2020-12-12 03:15:00,75.73,125.73200000000001,35.42,32.468 -2020-12-12 03:30:00,75.68,126.01299999999999,35.42,32.468 -2020-12-12 03:45:00,71.18,127.463,35.42,32.468 -2020-12-12 04:00:00,69.45,136.298,35.167,32.468 -2020-12-12 04:15:00,68.25,145.624,35.167,32.468 -2020-12-12 04:30:00,69.44,146.27200000000002,35.167,32.468 -2020-12-12 04:45:00,69.89,147.263,35.167,32.468 -2020-12-12 05:00:00,71.14,164.803,35.311,32.468 -2020-12-12 05:15:00,71.23,176.438,35.311,32.468 -2020-12-12 05:30:00,71.29,173.31400000000002,35.311,32.468 -2020-12-12 05:45:00,72.91,170.747,35.311,32.468 -2020-12-12 06:00:00,74.72,185.908,37.117,32.468 -2020-12-12 06:15:00,76.39,206.178,37.117,32.468 -2020-12-12 06:30:00,78.26,202.05200000000002,37.117,32.468 -2020-12-12 06:45:00,80.93,197.43599999999998,37.117,32.468 -2020-12-12 07:00:00,84.33,192.245,40.948,32.468 -2020-12-12 07:15:00,86.73,196.97,40.948,32.468 -2020-12-12 07:30:00,90.02,202.268,40.948,32.468 -2020-12-12 07:45:00,93.49,206.74400000000003,40.948,32.468 -2020-12-12 08:00:00,95.85,208.5,44.903,32.468 -2020-12-12 08:15:00,97.55,211.82299999999998,44.903,32.468 -2020-12-12 08:30:00,99.61,212.753,44.903,32.468 -2020-12-12 08:45:00,103.07,211.549,44.903,32.468 -2020-12-12 09:00:00,104.78,207.393,46.283,32.468 -2020-12-12 09:15:00,105.94,205.275,46.283,32.468 -2020-12-12 09:30:00,106.91,203.227,46.283,32.468 -2020-12-12 09:45:00,107.66,200.5,46.283,32.468 -2020-12-12 10:00:00,108.32,195.109,44.103,32.468 -2020-12-12 10:15:00,109.17,191.769,44.103,32.468 -2020-12-12 10:30:00,109.72,189.468,44.103,32.468 -2020-12-12 10:45:00,110.26,188.91,44.103,32.468 -2020-12-12 11:00:00,111.78,188.105,42.373999999999995,32.468 -2020-12-12 11:15:00,113.31,185.49,42.373999999999995,32.468 -2020-12-12 11:30:00,113.65,184.924,42.373999999999995,32.468 -2020-12-12 11:45:00,113.32,182.46900000000002,42.373999999999995,32.468 -2020-12-12 12:00:00,111.9,177.05200000000002,39.937,32.468 -2020-12-12 12:15:00,111.01,174.662,39.937,32.468 -2020-12-12 12:30:00,108.83,175.142,39.937,32.468 -2020-12-12 12:45:00,106.63,175.82299999999998,39.937,32.468 -2020-12-12 13:00:00,103.27,175.53900000000002,37.138000000000005,32.468 -2020-12-12 13:15:00,101.79,173.928,37.138000000000005,32.468 -2020-12-12 13:30:00,101.3,173.377,37.138000000000005,32.468 -2020-12-12 13:45:00,101.1,173.704,37.138000000000005,32.468 -2020-12-12 14:00:00,100.88,172.74400000000003,36.141999999999996,32.468 -2020-12-12 14:15:00,100.41,172.542,36.141999999999996,32.468 -2020-12-12 14:30:00,100.19,171.72799999999998,36.141999999999996,32.468 -2020-12-12 14:45:00,99.5,172.138,36.141999999999996,32.468 -2020-12-12 15:00:00,98.71,173.196,37.964,32.468 -2020-12-12 15:15:00,98.98,174.12,37.964,32.468 -2020-12-12 15:30:00,99.94,176.325,37.964,32.468 -2020-12-12 15:45:00,100.8,178.297,37.964,32.468 -2020-12-12 16:00:00,104.51,177.041,40.699,32.468 -2020-12-12 16:15:00,107.74,179.368,40.699,32.468 -2020-12-12 16:30:00,108.74,182.148,40.699,32.468 -2020-12-12 16:45:00,109.29,184.231,40.699,32.468 -2020-12-12 17:00:00,110.17,186.467,46.216,32.468 -2020-12-12 17:15:00,110.88,188.104,46.216,32.468 -2020-12-12 17:30:00,111.64,188.24900000000002,46.216,32.468 -2020-12-12 17:45:00,112.51,187.28099999999998,46.216,32.468 -2020-12-12 18:00:00,112.37,188.514,51.123999999999995,32.468 -2020-12-12 18:15:00,112.02,187.929,51.123999999999995,32.468 -2020-12-12 18:30:00,111.33,188.148,51.123999999999995,32.468 -2020-12-12 18:45:00,111.02,184.58,51.123999999999995,32.468 -2020-12-12 19:00:00,110.03,187.303,52.336000000000006,32.468 -2020-12-12 19:15:00,108.32,184.541,52.336000000000006,32.468 -2020-12-12 19:30:00,107.24,182.74400000000003,52.336000000000006,32.468 -2020-12-12 19:45:00,106.61,178.607,52.336000000000006,32.468 -2020-12-12 20:00:00,102.62,177.35299999999998,48.825,32.468 -2020-12-12 20:15:00,97.95,173.604,48.825,32.468 -2020-12-12 20:30:00,96.03,169.61,48.825,32.468 -2020-12-12 20:45:00,94.62,167.145,48.825,32.468 -2020-12-12 21:00:00,92.77,167.74599999999998,43.729,32.468 -2020-12-12 21:15:00,90.0,166.553,43.729,32.468 -2020-12-12 21:30:00,87.78,165.718,43.729,32.468 -2020-12-12 21:45:00,87.21,164.16,43.729,32.468 -2020-12-12 22:00:00,86.33,159.75799999999998,44.126000000000005,32.468 -2020-12-12 22:15:00,84.41,156.444,44.126000000000005,32.468 -2020-12-12 22:30:00,82.37,154.756,44.126000000000005,32.468 -2020-12-12 22:45:00,80.33,152.092,44.126000000000005,32.468 -2020-12-12 23:00:00,76.41,148.47299999999998,38.169000000000004,32.468 -2020-12-12 23:15:00,74.99,142.928,38.169000000000004,32.468 -2020-12-12 23:30:00,72.58,139.857,38.169000000000004,32.468 -2020-12-12 23:45:00,70.05,136.382,38.169000000000004,32.468 -2020-12-13 00:00:00,67.83,114.786,35.232,32.468 -2020-12-13 00:15:00,65.77,110.337,35.232,32.468 -2020-12-13 00:30:00,64.76,112.277,35.232,32.468 -2020-12-13 00:45:00,63.83,115.316,35.232,32.468 -2020-12-13 01:00:00,62.51,117.65799999999999,31.403000000000002,32.468 -2020-12-13 01:15:00,61.48,119.354,31.403000000000002,32.468 -2020-12-13 01:30:00,61.2,119.575,31.403000000000002,32.468 -2020-12-13 01:45:00,60.78,119.804,31.403000000000002,32.468 -2020-12-13 02:00:00,59.95,121.339,30.69,32.468 -2020-12-13 02:15:00,59.57,121.521,30.69,32.468 -2020-12-13 02:30:00,59.18,122.01899999999999,30.69,32.468 -2020-12-13 02:45:00,59.27,124.5,30.69,32.468 -2020-12-13 03:00:00,59.3,127.10700000000001,29.516,32.468 -2020-12-13 03:15:00,59.76,127.05799999999999,29.516,32.468 -2020-12-13 03:30:00,60.59,128.73,29.516,32.468 -2020-12-13 03:45:00,60.29,130.10399999999998,29.516,32.468 -2020-12-13 04:00:00,59.87,138.665,29.148000000000003,32.468 -2020-12-13 04:15:00,59.82,146.981,29.148000000000003,32.468 -2020-12-13 04:30:00,60.61,147.683,29.148000000000003,32.468 -2020-12-13 04:45:00,60.83,148.946,29.148000000000003,32.468 -2020-12-13 05:00:00,61.5,162.963,28.706,32.468 -2020-12-13 05:15:00,62.25,172.148,28.706,32.468 -2020-12-13 05:30:00,63.05,168.88299999999998,28.706,32.468 -2020-12-13 05:45:00,63.76,166.579,28.706,32.468 -2020-12-13 06:00:00,64.65,181.65599999999998,28.771,32.468 -2020-12-13 06:15:00,65.56,200.222,28.771,32.468 -2020-12-13 06:30:00,65.84,195.041,28.771,32.468 -2020-12-13 06:45:00,67.8,189.417,28.771,32.468 -2020-12-13 07:00:00,69.8,186.665,31.39,32.468 -2020-12-13 07:15:00,72.1,190.542,31.39,32.468 -2020-12-13 07:30:00,74.71,194.625,31.39,32.468 -2020-12-13 07:45:00,76.75,198.34400000000002,31.39,32.468 -2020-12-13 08:00:00,78.86,201.938,34.972,32.468 -2020-12-13 08:15:00,81.37,205.171,34.972,32.468 -2020-12-13 08:30:00,82.52,207.74599999999998,34.972,32.468 -2020-12-13 08:45:00,84.69,208.512,34.972,32.468 -2020-12-13 09:00:00,85.83,203.933,36.709,32.468 -2020-12-13 09:15:00,87.39,202.365,36.709,32.468 -2020-12-13 09:30:00,88.29,200.173,36.709,32.468 -2020-12-13 09:45:00,89.37,197.327,36.709,32.468 -2020-12-13 10:00:00,91.42,194.422,35.812,32.468 -2020-12-13 10:15:00,92.02,191.58900000000003,35.812,32.468 -2020-12-13 10:30:00,93.21,189.86599999999999,35.812,32.468 -2020-12-13 10:45:00,95.56,187.44,35.812,32.468 -2020-12-13 11:00:00,97.35,187.52,36.746,32.468 -2020-12-13 11:15:00,99.58,185.02,36.746,32.468 -2020-12-13 11:30:00,99.04,183.602,36.746,32.468 -2020-12-13 11:45:00,101.44,181.74200000000002,36.746,32.468 -2020-12-13 12:00:00,102.29,175.783,35.048,32.468 -2020-12-13 12:15:00,100.68,175.27200000000002,35.048,32.468 -2020-12-13 12:30:00,97.69,174.334,35.048,32.468 -2020-12-13 12:45:00,93.5,174.06099999999998,35.048,32.468 -2020-12-13 13:00:00,93.18,173.04,29.987,32.468 -2020-12-13 13:15:00,91.25,174.38400000000001,29.987,32.468 -2020-12-13 13:30:00,90.27,173.607,29.987,32.468 -2020-12-13 13:45:00,90.93,173.293,29.987,32.468 -2020-12-13 14:00:00,91.2,172.57299999999998,27.21,32.468 -2020-12-13 14:15:00,91.53,173.56,27.21,32.468 -2020-12-13 14:30:00,92.77,173.96400000000003,27.21,32.468 -2020-12-13 14:45:00,92.68,173.96599999999998,27.21,32.468 -2020-12-13 15:00:00,92.95,173.54,27.726999999999997,32.468 -2020-12-13 15:15:00,93.32,175.192,27.726999999999997,32.468 -2020-12-13 15:30:00,93.65,177.99,27.726999999999997,32.468 -2020-12-13 15:45:00,94.82,180.645,27.726999999999997,32.468 -2020-12-13 16:00:00,97.84,181.21,32.23,32.468 -2020-12-13 16:15:00,102.34,182.666,32.23,32.468 -2020-12-13 16:30:00,104.88,185.718,32.23,32.468 -2020-12-13 16:45:00,106.38,187.96200000000002,32.23,32.468 -2020-12-13 17:00:00,108.65,190.179,42.016999999999996,32.468 -2020-12-13 17:15:00,110.19,191.53400000000002,42.016999999999996,32.468 -2020-12-13 17:30:00,112.07,191.988,42.016999999999996,32.468 -2020-12-13 17:45:00,113.2,193.269,42.016999999999996,32.468 -2020-12-13 18:00:00,112.55,193.99099999999999,49.338,32.468 -2020-12-13 18:15:00,110.56,194.68200000000002,49.338,32.468 -2020-12-13 18:30:00,110.25,192.84799999999998,49.338,32.468 -2020-12-13 18:45:00,110.1,191.11900000000003,49.338,32.468 -2020-12-13 19:00:00,108.26,193.512,52.369,32.468 -2020-12-13 19:15:00,106.2,191.321,52.369,32.468 -2020-12-13 19:30:00,105.15,189.34799999999998,52.369,32.468 -2020-12-13 19:45:00,104.42,186.611,52.369,32.468 -2020-12-13 20:00:00,108.33,185.328,50.405,32.468 -2020-12-13 20:15:00,108.05,182.543,50.405,32.468 -2020-12-13 20:30:00,103.92,179.755,50.405,32.468 -2020-12-13 20:45:00,96.6,176.112,50.405,32.468 -2020-12-13 21:00:00,98.84,174.137,46.235,32.468 -2020-12-13 21:15:00,101.2,172.30700000000002,46.235,32.468 -2020-12-13 21:30:00,100.09,171.757,46.235,32.468 -2020-12-13 21:45:00,99.54,170.34599999999998,46.235,32.468 -2020-12-13 22:00:00,91.06,164.78900000000002,46.861000000000004,32.468 -2020-12-13 22:15:00,90.94,160.716,46.861000000000004,32.468 -2020-12-13 22:30:00,85.27,155.94,46.861000000000004,32.468 -2020-12-13 22:45:00,86.11,152.435,46.861000000000004,32.468 -2020-12-13 23:00:00,87.91,146.025,41.302,32.468 -2020-12-13 23:15:00,88.21,142.32299999999998,41.302,32.468 -2020-12-13 23:30:00,84.64,140.062,41.302,32.468 -2020-12-13 23:45:00,77.19,137.455,41.302,32.468 -2020-12-14 00:00:00,73.85,119.242,37.164,32.65 -2020-12-14 00:15:00,76.66,117.71700000000001,37.164,32.65 -2020-12-14 00:30:00,78.78,119.77600000000001,37.164,32.65 -2020-12-14 00:45:00,77.4,122.26100000000001,37.164,32.65 -2020-12-14 01:00:00,68.45,124.65100000000001,34.994,32.65 -2020-12-14 01:15:00,73.71,125.82,34.994,32.65 -2020-12-14 01:30:00,75.05,126.103,34.994,32.65 -2020-12-14 01:45:00,74.17,126.43,34.994,32.65 -2020-12-14 02:00:00,71.84,127.964,34.571,32.65 -2020-12-14 02:15:00,74.01,129.599,34.571,32.65 -2020-12-14 02:30:00,74.73,130.429,34.571,32.65 -2020-12-14 02:45:00,74.65,132.29399999999998,34.571,32.65 -2020-12-14 03:00:00,70.83,136.15200000000002,33.934,32.65 -2020-12-14 03:15:00,76.74,137.769,33.934,32.65 -2020-12-14 03:30:00,78.07,139.173,33.934,32.65 -2020-12-14 03:45:00,77.08,139.999,33.934,32.65 -2020-12-14 04:00:00,73.01,152.859,34.107,32.65 -2020-12-14 04:15:00,78.81,165.28900000000002,34.107,32.65 -2020-12-14 04:30:00,80.92,168.162,34.107,32.65 -2020-12-14 04:45:00,82.24,169.58599999999998,34.107,32.65 -2020-12-14 05:00:00,82.67,199.233,39.575,32.65 -2020-12-14 05:15:00,82.48,228.407,39.575,32.65 -2020-12-14 05:30:00,87.89,225.44099999999997,39.575,32.65 -2020-12-14 05:45:00,93.59,217.542,39.575,32.65 -2020-12-14 06:00:00,104.33,214.821,56.156000000000006,32.65 -2020-12-14 06:15:00,110.84,218.653,56.156000000000006,32.65 -2020-12-14 06:30:00,116.28,221.476,56.156000000000006,32.65 -2020-12-14 06:45:00,125.61,224.635,56.156000000000006,32.65 -2020-12-14 07:00:00,128.28,224.24200000000002,67.926,32.65 -2020-12-14 07:15:00,129.58,229.359,67.926,32.65 -2020-12-14 07:30:00,133.95,232.672,67.926,32.65 -2020-12-14 07:45:00,132.49,233.838,67.926,32.65 -2020-12-14 08:00:00,136.16,232.574,72.58,32.65 -2020-12-14 08:15:00,133.51,233.67,72.58,32.65 -2020-12-14 08:30:00,136.78,232.19,72.58,32.65 -2020-12-14 08:45:00,132.47,229.61599999999999,72.58,32.65 -2020-12-14 09:00:00,134.5,224.016,66.984,32.65 -2020-12-14 09:15:00,136.6,218.998,66.984,32.65 -2020-12-14 09:30:00,141.47,215.822,66.984,32.65 -2020-12-14 09:45:00,137.79,213.25799999999998,66.984,32.65 -2020-12-14 10:00:00,135.32,209.27,63.158,32.65 -2020-12-14 10:15:00,131.67,206.097,63.158,32.65 -2020-12-14 10:30:00,131.48,203.485,63.158,32.65 -2020-12-14 10:45:00,133.72,201.791,63.158,32.65 -2020-12-14 11:00:00,129.21,199.26,61.141000000000005,32.65 -2020-12-14 11:15:00,129.73,198.532,61.141000000000005,32.65 -2020-12-14 11:30:00,131.24,198.482,61.141000000000005,32.65 -2020-12-14 11:45:00,132.76,196.21599999999998,61.141000000000005,32.65 -2020-12-14 12:00:00,129.52,191.954,57.961000000000006,32.65 -2020-12-14 12:15:00,133.74,191.457,57.961000000000006,32.65 -2020-12-14 12:30:00,133.03,190.775,57.961000000000006,32.65 -2020-12-14 12:45:00,135.84,192.012,57.961000000000006,32.65 -2020-12-14 13:00:00,131.88,191.54,56.843,32.65 -2020-12-14 13:15:00,130.95,191.511,56.843,32.65 -2020-12-14 13:30:00,128.48,190.205,56.843,32.65 -2020-12-14 13:45:00,128.95,189.919,56.843,32.65 -2020-12-14 14:00:00,123.91,188.565,55.992,32.65 -2020-12-14 14:15:00,124.92,188.925,55.992,32.65 -2020-12-14 14:30:00,124.35,188.81599999999997,55.992,32.65 -2020-12-14 14:45:00,126.22,188.80700000000002,55.992,32.65 -2020-12-14 15:00:00,127.2,190.158,57.523,32.65 -2020-12-14 15:15:00,128.82,190.382,57.523,32.65 -2020-12-14 15:30:00,126.77,192.38400000000001,57.523,32.65 -2020-12-14 15:45:00,128.99,194.595,57.523,32.65 -2020-12-14 16:00:00,133.74,195.34400000000002,59.471000000000004,32.65 -2020-12-14 16:15:00,135.18,196.06599999999997,59.471000000000004,32.65 -2020-12-14 16:30:00,136.84,198.168,59.471000000000004,32.65 -2020-12-14 16:45:00,137.31,199.264,59.471000000000004,32.65 -2020-12-14 17:00:00,139.82,201.285,65.066,32.65 -2020-12-14 17:15:00,139.13,201.725,65.066,32.65 -2020-12-14 17:30:00,139.59,201.65200000000002,65.066,32.65 -2020-12-14 17:45:00,139.83,201.465,65.066,32.65 -2020-12-14 18:00:00,137.48,202.62900000000002,69.581,32.65 -2020-12-14 18:15:00,135.23,201.102,69.581,32.65 -2020-12-14 18:30:00,134.3,199.922,69.581,32.65 -2020-12-14 18:45:00,134.53,198.91299999999998,69.581,32.65 -2020-12-14 19:00:00,132.27,199.696,73.771,32.65 -2020-12-14 19:15:00,137.65,196.335,73.771,32.65 -2020-12-14 19:30:00,137.55,194.843,73.771,32.65 -2020-12-14 19:45:00,136.21,191.26,73.771,32.65 -2020-12-14 20:00:00,121.11,187.632,65.035,32.65 -2020-12-14 20:15:00,117.82,182.38099999999997,65.035,32.65 -2020-12-14 20:30:00,115.14,177.72400000000002,65.035,32.65 -2020-12-14 20:45:00,115.32,175.71200000000002,65.035,32.65 -2020-12-14 21:00:00,109.37,174.25,58.7,32.65 -2020-12-14 21:15:00,108.96,171.238,58.7,32.65 -2020-12-14 21:30:00,104.73,169.86900000000003,58.7,32.65 -2020-12-14 21:45:00,104.04,167.965,58.7,32.65 -2020-12-14 22:00:00,99.84,159.553,53.888000000000005,32.65 -2020-12-14 22:15:00,96.41,154.173,53.888000000000005,32.65 -2020-12-14 22:30:00,96.15,139.96200000000002,53.888000000000005,32.65 -2020-12-14 22:45:00,97.48,131.666,53.888000000000005,32.65 -2020-12-14 23:00:00,92.99,126.00399999999999,45.501999999999995,32.65 -2020-12-14 23:15:00,90.86,124.936,45.501999999999995,32.65 -2020-12-14 23:30:00,86.06,125.43,45.501999999999995,32.65 -2020-12-14 23:45:00,88.58,125.434,45.501999999999995,32.65 -2020-12-15 00:00:00,83.52,115.656,43.537,32.65 -2020-12-15 00:15:00,83.19,115.315,43.537,32.65 -2020-12-15 00:30:00,81.66,116.205,43.537,32.65 -2020-12-15 00:45:00,84.41,117.449,43.537,32.65 -2020-12-15 01:00:00,80.92,119.626,41.854,32.65 -2020-12-15 01:15:00,78.66,120.473,41.854,32.65 -2020-12-15 01:30:00,78.58,120.975,41.854,32.65 -2020-12-15 01:45:00,80.79,121.521,41.854,32.65 -2020-12-15 02:00:00,78.33,123.03200000000001,40.321,32.65 -2020-12-15 02:15:00,79.13,124.414,40.321,32.65 -2020-12-15 02:30:00,79.46,124.492,40.321,32.65 -2020-12-15 02:45:00,81.65,126.29299999999999,40.321,32.65 -2020-12-15 03:00:00,80.09,128.789,39.632,32.65 -2020-12-15 03:15:00,79.26,129.722,39.632,32.65 -2020-12-15 03:30:00,80.46,131.651,39.632,32.65 -2020-12-15 03:45:00,82.17,132.52100000000002,39.632,32.65 -2020-12-15 04:00:00,82.38,145.236,40.183,32.65 -2020-12-15 04:15:00,81.57,157.416,40.183,32.65 -2020-12-15 04:30:00,85.91,159.6,40.183,32.65 -2020-12-15 04:45:00,85.18,162.086,40.183,32.65 -2020-12-15 05:00:00,85.38,196.30599999999998,43.945,32.65 -2020-12-15 05:15:00,84.75,225.167,43.945,32.65 -2020-12-15 05:30:00,94.66,220.77900000000002,43.945,32.65 -2020-12-15 05:45:00,104.6,212.74599999999998,43.945,32.65 -2020-12-15 06:00:00,114.07,208.825,56.048,32.65 -2020-12-15 06:15:00,115.06,214.197,56.048,32.65 -2020-12-15 06:30:00,115.45,216.41,56.048,32.65 -2020-12-15 06:45:00,118.13,219.02599999999998,56.048,32.65 -2020-12-15 07:00:00,127.23,218.861,65.74,32.65 -2020-12-15 07:15:00,130.09,223.575,65.74,32.65 -2020-12-15 07:30:00,130.79,226.06599999999997,65.74,32.65 -2020-12-15 07:45:00,134.25,227.21,65.74,32.65 -2020-12-15 08:00:00,137.81,226.11599999999999,72.757,32.65 -2020-12-15 08:15:00,135.91,225.97099999999998,72.757,32.65 -2020-12-15 08:30:00,136.55,224.303,72.757,32.65 -2020-12-15 08:45:00,137.31,221.18200000000002,72.757,32.65 -2020-12-15 09:00:00,136.97,214.54,67.692,32.65 -2020-12-15 09:15:00,141.95,211.025,67.692,32.65 -2020-12-15 09:30:00,142.11,208.47,67.692,32.65 -2020-12-15 09:45:00,142.8,205.74200000000002,67.692,32.65 -2020-12-15 10:00:00,141.36,201.498,63.506,32.65 -2020-12-15 10:15:00,141.94,197.08599999999998,63.506,32.65 -2020-12-15 10:30:00,141.49,194.91400000000002,63.506,32.65 -2020-12-15 10:45:00,143.1,193.605,63.506,32.65 -2020-12-15 11:00:00,141.22,192.74099999999999,60.758,32.65 -2020-12-15 11:15:00,142.97,191.713,60.758,32.65 -2020-12-15 11:30:00,142.93,190.668,60.758,32.65 -2020-12-15 11:45:00,141.87,189.172,60.758,32.65 -2020-12-15 12:00:00,141.11,183.533,57.519,32.65 -2020-12-15 12:15:00,141.16,182.61700000000002,57.519,32.65 -2020-12-15 12:30:00,140.9,182.8,57.519,32.65 -2020-12-15 12:45:00,138.4,183.675,57.519,32.65 -2020-12-15 13:00:00,133.81,182.6,56.46,32.65 -2020-12-15 13:15:00,131.95,182.195,56.46,32.65 -2020-12-15 13:30:00,129.26,181.915,56.46,32.65 -2020-12-15 13:45:00,129.67,181.796,56.46,32.65 -2020-12-15 14:00:00,123.7,180.81599999999997,56.207,32.65 -2020-12-15 14:15:00,124.77,181.243,56.207,32.65 -2020-12-15 14:30:00,124.87,181.71400000000003,56.207,32.65 -2020-12-15 14:45:00,125.31,181.653,56.207,32.65 -2020-12-15 15:00:00,127.76,182.535,57.391999999999996,32.65 -2020-12-15 15:15:00,126.63,183.02599999999998,57.391999999999996,32.65 -2020-12-15 15:30:00,126.46,185.03799999999998,57.391999999999996,32.65 -2020-12-15 15:45:00,128.96,186.55,57.391999999999996,32.65 -2020-12-15 16:00:00,131.98,188.59799999999998,59.955,32.65 -2020-12-15 16:15:00,135.15,189.975,59.955,32.65 -2020-12-15 16:30:00,137.94,192.37400000000002,59.955,32.65 -2020-12-15 16:45:00,139.15,193.635,59.955,32.65 -2020-12-15 17:00:00,141.27,196.472,67.063,32.65 -2020-12-15 17:15:00,141.7,197.14700000000002,67.063,32.65 -2020-12-15 17:30:00,143.06,197.852,67.063,32.65 -2020-12-15 17:45:00,142.57,197.611,67.063,32.65 -2020-12-15 18:00:00,140.73,198.834,71.477,32.65 -2020-12-15 18:15:00,139.06,197.072,71.477,32.65 -2020-12-15 18:30:00,137.45,195.517,71.477,32.65 -2020-12-15 18:45:00,137.98,195.32299999999998,71.477,32.65 -2020-12-15 19:00:00,135.69,196.59099999999998,74.32,32.65 -2020-12-15 19:15:00,134.51,193.03599999999997,74.32,32.65 -2020-12-15 19:30:00,132.57,191.079,74.32,32.65 -2020-12-15 19:45:00,131.33,187.28799999999998,74.32,32.65 -2020-12-15 20:00:00,123.93,183.83700000000002,66.157,32.65 -2020-12-15 20:15:00,121.36,178.165,66.157,32.65 -2020-12-15 20:30:00,114.46,174.50599999999997,66.157,32.65 -2020-12-15 20:45:00,115.6,171.75400000000002,66.157,32.65 -2020-12-15 21:00:00,115.82,169.782,59.806000000000004,32.65 -2020-12-15 21:15:00,114.44,167.699,59.806000000000004,32.65 -2020-12-15 21:30:00,113.31,165.55900000000003,59.806000000000004,32.65 -2020-12-15 21:45:00,103.61,163.97,59.806000000000004,32.65 -2020-12-15 22:00:00,102.01,157.408,54.785,32.65 -2020-12-15 22:15:00,98.37,151.947,54.785,32.65 -2020-12-15 22:30:00,92.73,137.92,54.785,32.65 -2020-12-15 22:45:00,94.84,130.05100000000002,54.785,32.65 -2020-12-15 23:00:00,93.0,124.61200000000001,47.176,32.65 -2020-12-15 23:15:00,94.63,122.538,47.176,32.65 -2020-12-15 23:30:00,87.81,122.829,47.176,32.65 -2020-12-15 23:45:00,85.28,122.35,47.176,32.65 -2020-12-16 00:00:00,80.62,115.92399999999999,43.42,32.65 -2020-12-16 00:15:00,83.74,115.554,43.42,32.65 -2020-12-16 00:30:00,81.51,116.43799999999999,43.42,32.65 -2020-12-16 00:45:00,80.18,117.663,43.42,32.65 -2020-12-16 01:00:00,69.83,119.867,40.869,32.65 -2020-12-16 01:15:00,80.0,120.713,40.869,32.65 -2020-12-16 01:30:00,80.76,121.22,40.869,32.65 -2020-12-16 01:45:00,80.19,121.75399999999999,40.869,32.65 -2020-12-16 02:00:00,74.32,123.281,39.541,32.65 -2020-12-16 02:15:00,78.32,124.664,39.541,32.65 -2020-12-16 02:30:00,77.27,124.74799999999999,39.541,32.65 -2020-12-16 02:45:00,80.86,126.546,39.541,32.65 -2020-12-16 03:00:00,75.94,129.032,39.052,32.65 -2020-12-16 03:15:00,79.31,129.991,39.052,32.65 -2020-12-16 03:30:00,79.64,131.922,39.052,32.65 -2020-12-16 03:45:00,82.22,132.792,39.052,32.65 -2020-12-16 04:00:00,79.05,145.48,40.36,32.65 -2020-12-16 04:15:00,81.08,157.658,40.36,32.65 -2020-12-16 04:30:00,85.18,159.833,40.36,32.65 -2020-12-16 04:45:00,82.1,162.319,40.36,32.65 -2020-12-16 05:00:00,83.77,196.507,43.133,32.65 -2020-12-16 05:15:00,87.36,225.327,43.133,32.65 -2020-12-16 05:30:00,91.05,220.956,43.133,32.65 -2020-12-16 05:45:00,95.36,212.94299999999998,43.133,32.65 -2020-12-16 06:00:00,105.17,209.046,54.953,32.65 -2020-12-16 06:15:00,108.16,214.421,54.953,32.65 -2020-12-16 06:30:00,114.63,216.671,54.953,32.65 -2020-12-16 06:45:00,117.72,219.325,54.953,32.65 -2020-12-16 07:00:00,127.82,219.166,66.566,32.65 -2020-12-16 07:15:00,130.45,223.882,66.566,32.65 -2020-12-16 07:30:00,131.15,226.372,66.566,32.65 -2020-12-16 07:45:00,132.85,227.511,66.566,32.65 -2020-12-16 08:00:00,137.7,226.423,72.902,32.65 -2020-12-16 08:15:00,135.94,226.269,72.902,32.65 -2020-12-16 08:30:00,136.44,224.597,72.902,32.65 -2020-12-16 08:45:00,137.62,221.44799999999998,72.902,32.65 -2020-12-16 09:00:00,137.95,214.785,68.465,32.65 -2020-12-16 09:15:00,139.43,211.27599999999998,68.465,32.65 -2020-12-16 09:30:00,140.51,208.729,68.465,32.65 -2020-12-16 09:45:00,139.57,205.99,68.465,32.65 -2020-12-16 10:00:00,137.58,201.74,63.625,32.65 -2020-12-16 10:15:00,137.97,197.31400000000002,63.625,32.65 -2020-12-16 10:30:00,140.2,195.123,63.625,32.65 -2020-12-16 10:45:00,138.04,193.81,63.625,32.65 -2020-12-16 11:00:00,138.03,192.929,61.628,32.65 -2020-12-16 11:15:00,136.32,191.89,61.628,32.65 -2020-12-16 11:30:00,136.53,190.845,61.628,32.65 -2020-12-16 11:45:00,136.0,189.34599999999998,61.628,32.65 -2020-12-16 12:00:00,135.94,183.708,58.708999999999996,32.65 -2020-12-16 12:15:00,135.61,182.80599999999998,58.708999999999996,32.65 -2020-12-16 12:30:00,133.9,182.998,58.708999999999996,32.65 -2020-12-16 12:45:00,135.77,183.877,58.708999999999996,32.65 -2020-12-16 13:00:00,133.66,182.77900000000002,57.373000000000005,32.65 -2020-12-16 13:15:00,133.97,182.372,57.373000000000005,32.65 -2020-12-16 13:30:00,134.94,182.085,57.373000000000005,32.65 -2020-12-16 13:45:00,130.4,181.957,57.373000000000005,32.65 -2020-12-16 14:00:00,129.27,180.96599999999998,57.684,32.65 -2020-12-16 14:15:00,131.13,181.395,57.684,32.65 -2020-12-16 14:30:00,131.55,181.887,57.684,32.65 -2020-12-16 14:45:00,131.65,181.83599999999998,57.684,32.65 -2020-12-16 15:00:00,133.62,182.735,58.03,32.65 -2020-12-16 15:15:00,133.02,183.22,58.03,32.65 -2020-12-16 15:30:00,131.8,185.247,58.03,32.65 -2020-12-16 15:45:00,133.43,186.75799999999998,58.03,32.65 -2020-12-16 16:00:00,137.44,188.804,59.97,32.65 -2020-12-16 16:15:00,138.97,190.2,59.97,32.65 -2020-12-16 16:30:00,140.77,192.604,59.97,32.65 -2020-12-16 16:45:00,140.66,193.891,59.97,32.65 -2020-12-16 17:00:00,143.13,196.707,65.661,32.65 -2020-12-16 17:15:00,142.28,197.408,65.661,32.65 -2020-12-16 17:30:00,143.12,198.132,65.661,32.65 -2020-12-16 17:45:00,142.9,197.90200000000002,65.661,32.65 -2020-12-16 18:00:00,139.93,199.144,70.96300000000001,32.65 -2020-12-16 18:15:00,139.4,197.36,70.96300000000001,32.65 -2020-12-16 18:30:00,138.28,195.812,70.96300000000001,32.65 -2020-12-16 18:45:00,137.34,195.62900000000002,70.96300000000001,32.65 -2020-12-16 19:00:00,135.22,196.88,74.133,32.65 -2020-12-16 19:15:00,133.45,193.31799999999998,74.133,32.65 -2020-12-16 19:30:00,130.36,191.351,74.133,32.65 -2020-12-16 19:45:00,130.37,187.542,74.133,32.65 -2020-12-16 20:00:00,125.93,184.088,65.613,32.65 -2020-12-16 20:15:00,119.64,178.40900000000002,65.613,32.65 -2020-12-16 20:30:00,118.92,174.72799999999998,65.613,32.65 -2020-12-16 20:45:00,115.48,171.995,65.613,32.65 -2020-12-16 21:00:00,115.75,170.007,58.583,32.65 -2020-12-16 21:15:00,117.64,167.907,58.583,32.65 -2020-12-16 21:30:00,113.57,165.769,58.583,32.65 -2020-12-16 21:45:00,107.19,164.188,58.583,32.65 -2020-12-16 22:00:00,102.1,157.631,54.411,32.65 -2020-12-16 22:15:00,102.82,152.17600000000002,54.411,32.65 -2020-12-16 22:30:00,100.28,138.189,54.411,32.65 -2020-12-16 22:45:00,101.94,130.327,54.411,32.65 -2020-12-16 23:00:00,95.99,124.867,47.878,32.65 -2020-12-16 23:15:00,90.51,122.79,47.878,32.65 -2020-12-16 23:30:00,87.38,123.094,47.878,32.65 -2020-12-16 23:45:00,89.89,122.604,47.878,32.65 -2020-12-17 00:00:00,84.21,116.184,44.513000000000005,32.65 -2020-12-17 00:15:00,85.18,115.789,44.513000000000005,32.65 -2020-12-17 00:30:00,74.91,116.663,44.513000000000005,32.65 -2020-12-17 00:45:00,77.85,117.87100000000001,44.513000000000005,32.65 -2020-12-17 01:00:00,72.93,120.101,43.169,32.65 -2020-12-17 01:15:00,73.81,120.945,43.169,32.65 -2020-12-17 01:30:00,79.24,121.45700000000001,43.169,32.65 -2020-12-17 01:45:00,81.74,121.978,43.169,32.65 -2020-12-17 02:00:00,79.9,123.524,41.763999999999996,32.65 -2020-12-17 02:15:00,75.28,124.90799999999999,41.763999999999996,32.65 -2020-12-17 02:30:00,79.95,124.994,41.763999999999996,32.65 -2020-12-17 02:45:00,81.25,126.792,41.763999999999996,32.65 -2020-12-17 03:00:00,79.07,129.269,41.155,32.65 -2020-12-17 03:15:00,76.1,130.252,41.155,32.65 -2020-12-17 03:30:00,80.42,132.184,41.155,32.65 -2020-12-17 03:45:00,81.44,133.056,41.155,32.65 -2020-12-17 04:00:00,76.27,145.717,41.96,32.65 -2020-12-17 04:15:00,77.05,157.893,41.96,32.65 -2020-12-17 04:30:00,82.44,160.058,41.96,32.65 -2020-12-17 04:45:00,82.35,162.546,41.96,32.65 -2020-12-17 05:00:00,84.79,196.699,45.206,32.65 -2020-12-17 05:15:00,87.77,225.481,45.206,32.65 -2020-12-17 05:30:00,92.75,221.127,45.206,32.65 -2020-12-17 05:45:00,94.22,213.13099999999997,45.206,32.65 -2020-12-17 06:00:00,101.61,209.25799999999998,55.398999999999994,32.65 -2020-12-17 06:15:00,107.73,214.637,55.398999999999994,32.65 -2020-12-17 06:30:00,111.51,216.922,55.398999999999994,32.65 -2020-12-17 06:45:00,116.77,219.614,55.398999999999994,32.65 -2020-12-17 07:00:00,125.56,219.46200000000002,64.627,32.65 -2020-12-17 07:15:00,127.94,224.178,64.627,32.65 -2020-12-17 07:30:00,129.03,226.668,64.627,32.65 -2020-12-17 07:45:00,130.58,227.801,64.627,32.65 -2020-12-17 08:00:00,131.85,226.71900000000002,70.895,32.65 -2020-12-17 08:15:00,132.24,226.554,70.895,32.65 -2020-12-17 08:30:00,132.44,224.88,70.895,32.65 -2020-12-17 08:45:00,131.91,221.704,70.895,32.65 -2020-12-17 09:00:00,135.0,215.017,66.382,32.65 -2020-12-17 09:15:00,133.95,211.517,66.382,32.65 -2020-12-17 09:30:00,134.58,208.97799999999998,66.382,32.65 -2020-12-17 09:45:00,134.76,206.22799999999998,66.382,32.65 -2020-12-17 10:00:00,134.7,201.97299999999998,62.739,32.65 -2020-12-17 10:15:00,134.75,197.532,62.739,32.65 -2020-12-17 10:30:00,131.89,195.32299999999998,62.739,32.65 -2020-12-17 10:45:00,131.47,194.005,62.739,32.65 -2020-12-17 11:00:00,130.35,193.108,60.843,32.65 -2020-12-17 11:15:00,130.67,192.05900000000003,60.843,32.65 -2020-12-17 11:30:00,128.97,191.014,60.843,32.65 -2020-12-17 11:45:00,127.33,189.512,60.843,32.65 -2020-12-17 12:00:00,121.37,183.87400000000002,58.466,32.65 -2020-12-17 12:15:00,126.04,182.985,58.466,32.65 -2020-12-17 12:30:00,128.2,183.188,58.466,32.65 -2020-12-17 12:45:00,130.0,184.072,58.466,32.65 -2020-12-17 13:00:00,126.85,182.94799999999998,56.883,32.65 -2020-12-17 13:15:00,126.09,182.54,56.883,32.65 -2020-12-17 13:30:00,125.29,182.247,56.883,32.65 -2020-12-17 13:45:00,126.95,182.11,56.883,32.65 -2020-12-17 14:00:00,126.35,181.108,56.503,32.65 -2020-12-17 14:15:00,127.72,181.54,56.503,32.65 -2020-12-17 14:30:00,124.54,182.05200000000002,56.503,32.65 -2020-12-17 14:45:00,123.37,182.012,56.503,32.65 -2020-12-17 15:00:00,124.4,182.928,57.803999999999995,32.65 -2020-12-17 15:15:00,125.58,183.40599999999998,57.803999999999995,32.65 -2020-12-17 15:30:00,125.0,185.44799999999998,57.803999999999995,32.65 -2020-12-17 15:45:00,124.76,186.956,57.803999999999995,32.65 -2020-12-17 16:00:00,128.21,189.00099999999998,59.379,32.65 -2020-12-17 16:15:00,129.34,190.415,59.379,32.65 -2020-12-17 16:30:00,129.97,192.825,59.379,32.65 -2020-12-17 16:45:00,130.22,194.135,59.379,32.65 -2020-12-17 17:00:00,132.3,196.93099999999998,64.71600000000001,32.65 -2020-12-17 17:15:00,132.66,197.66,64.71600000000001,32.65 -2020-12-17 17:30:00,133.9,198.40200000000002,64.71600000000001,32.65 -2020-12-17 17:45:00,133.14,198.18400000000003,64.71600000000001,32.65 -2020-12-17 18:00:00,130.47,199.445,68.803,32.65 -2020-12-17 18:15:00,129.63,197.641,68.803,32.65 -2020-12-17 18:30:00,128.9,196.09799999999998,68.803,32.65 -2020-12-17 18:45:00,128.16,195.926,68.803,32.65 -2020-12-17 19:00:00,126.35,197.15900000000002,72.934,32.65 -2020-12-17 19:15:00,123.77,193.59099999999998,72.934,32.65 -2020-12-17 19:30:00,122.92,191.61599999999999,72.934,32.65 -2020-12-17 19:45:00,121.49,187.78799999999998,72.934,32.65 -2020-12-17 20:00:00,114.67,184.33,65.175,32.65 -2020-12-17 20:15:00,109.95,178.645,65.175,32.65 -2020-12-17 20:30:00,106.37,174.94400000000002,65.175,32.65 -2020-12-17 20:45:00,104.71,172.22799999999998,65.175,32.65 -2020-12-17 21:00:00,100.41,170.226,58.55,32.65 -2020-12-17 21:15:00,99.67,168.11,58.55,32.65 -2020-12-17 21:30:00,97.77,165.972,58.55,32.65 -2020-12-17 21:45:00,96.78,164.40099999999998,58.55,32.65 -2020-12-17 22:00:00,90.43,157.846,55.041000000000004,32.65 -2020-12-17 22:15:00,88.71,152.398,55.041000000000004,32.65 -2020-12-17 22:30:00,84.97,138.44899999999998,55.041000000000004,32.65 -2020-12-17 22:45:00,82.32,130.597,55.041000000000004,32.65 -2020-12-17 23:00:00,77.33,125.113,48.258,32.65 -2020-12-17 23:15:00,78.58,123.036,48.258,32.65 -2020-12-17 23:30:00,74.54,123.352,48.258,32.65 -2020-12-17 23:45:00,74.17,122.852,48.258,32.65 -2020-12-18 00:00:00,69.93,115.34700000000001,45.02,32.65 -2020-12-18 00:15:00,68.18,115.12299999999999,45.02,32.65 -2020-12-18 00:30:00,67.68,115.87,45.02,32.65 -2020-12-18 00:45:00,67.22,117.18,45.02,32.65 -2020-12-18 01:00:00,62.8,119.12299999999999,42.695,32.65 -2020-12-18 01:15:00,62.98,120.82700000000001,42.695,32.65 -2020-12-18 01:30:00,62.72,121.15299999999999,42.695,32.65 -2020-12-18 01:45:00,63.95,121.755,42.695,32.65 -2020-12-18 02:00:00,61.06,123.43,41.511,32.65 -2020-12-18 02:15:00,62.5,124.70299999999999,41.511,32.65 -2020-12-18 02:30:00,62.92,125.325,41.511,32.65 -2020-12-18 02:45:00,63.6,127.141,41.511,32.65 -2020-12-18 03:00:00,61.83,128.67600000000002,41.162,32.65 -2020-12-18 03:15:00,62.77,130.548,41.162,32.65 -2020-12-18 03:30:00,63.63,132.457,41.162,32.65 -2020-12-18 03:45:00,64.24,133.673,41.162,32.65 -2020-12-18 04:00:00,64.94,146.534,42.226000000000006,32.65 -2020-12-18 04:15:00,66.41,158.416,42.226000000000006,32.65 -2020-12-18 04:30:00,68.08,160.825,42.226000000000006,32.65 -2020-12-18 04:45:00,70.29,162.19299999999998,42.226000000000006,32.65 -2020-12-18 05:00:00,72.72,195.077,45.597,32.65 -2020-12-18 05:15:00,74.61,225.30200000000002,45.597,32.65 -2020-12-18 05:30:00,78.87,222.00799999999998,45.597,32.65 -2020-12-18 05:45:00,83.71,213.953,45.597,32.65 -2020-12-18 06:00:00,92.43,210.528,56.263999999999996,32.65 -2020-12-18 06:15:00,96.81,214.503,56.263999999999996,32.65 -2020-12-18 06:30:00,100.32,215.99,56.263999999999996,32.65 -2020-12-18 06:45:00,104.38,220.27700000000002,56.263999999999996,32.65 -2020-12-18 07:00:00,110.53,219.352,66.888,32.65 -2020-12-18 07:15:00,113.01,225.084,66.888,32.65 -2020-12-18 07:30:00,116.17,227.328,66.888,32.65 -2020-12-18 07:45:00,119.09,227.59599999999998,66.888,32.65 -2020-12-18 08:00:00,121.73,225.487,73.459,32.65 -2020-12-18 08:15:00,120.52,224.96400000000003,73.459,32.65 -2020-12-18 08:30:00,121.35,224.218,73.459,32.65 -2020-12-18 08:45:00,122.72,219.497,73.459,32.65 -2020-12-18 09:00:00,124.32,213.14,69.087,32.65 -2020-12-18 09:15:00,125.38,210.268,69.087,32.65 -2020-12-18 09:30:00,126.56,207.3,69.087,32.65 -2020-12-18 09:45:00,126.98,204.45,69.087,32.65 -2020-12-18 10:00:00,127.19,199.09799999999998,65.404,32.65 -2020-12-18 10:15:00,126.67,195.303,65.404,32.65 -2020-12-18 10:30:00,127.1,193.03099999999998,65.404,32.65 -2020-12-18 10:45:00,125.45,191.282,65.404,32.65 -2020-12-18 11:00:00,123.87,190.359,63.0,32.65 -2020-12-18 11:15:00,125.98,188.398,63.0,32.65 -2020-12-18 11:30:00,126.3,189.011,63.0,32.65 -2020-12-18 11:45:00,124.8,187.51,63.0,32.65 -2020-12-18 12:00:00,123.25,182.92700000000002,59.083,32.65 -2020-12-18 12:15:00,123.46,180.024,59.083,32.65 -2020-12-18 12:30:00,122.58,180.393,59.083,32.65 -2020-12-18 12:45:00,124.82,181.736,59.083,32.65 -2020-12-18 13:00:00,120.54,181.50900000000001,56.611999999999995,32.65 -2020-12-18 13:15:00,119.45,181.887,56.611999999999995,32.65 -2020-12-18 13:30:00,117.01,181.64,56.611999999999995,32.65 -2020-12-18 13:45:00,115.3,181.44799999999998,56.611999999999995,32.65 -2020-12-18 14:00:00,111.85,179.312,55.161,32.65 -2020-12-18 14:15:00,111.13,179.59599999999998,55.161,32.65 -2020-12-18 14:30:00,110.97,180.68599999999998,55.161,32.65 -2020-12-18 14:45:00,110.48,180.91400000000002,55.161,32.65 -2020-12-18 15:00:00,111.97,181.382,55.583,32.65 -2020-12-18 15:15:00,109.45,181.424,55.583,32.65 -2020-12-18 15:30:00,108.82,182.00400000000002,55.583,32.65 -2020-12-18 15:45:00,110.05,183.68400000000003,55.583,32.65 -2020-12-18 16:00:00,114.02,184.56900000000002,57.611999999999995,32.65 -2020-12-18 16:15:00,116.24,186.3,57.611999999999995,32.65 -2020-12-18 16:30:00,116.88,188.799,57.611999999999995,32.65 -2020-12-18 16:45:00,117.32,189.99,57.611999999999995,32.65 -2020-12-18 17:00:00,119.59,193.02,64.14,32.65 -2020-12-18 17:15:00,117.88,193.373,64.14,32.65 -2020-12-18 17:30:00,118.76,193.835,64.14,32.65 -2020-12-18 17:45:00,117.85,193.396,64.14,32.65 -2020-12-18 18:00:00,116.42,195.33700000000002,68.086,32.65 -2020-12-18 18:15:00,115.7,193.104,68.086,32.65 -2020-12-18 18:30:00,115.31,191.945,68.086,32.65 -2020-12-18 18:45:00,114.72,191.793,68.086,32.65 -2020-12-18 19:00:00,112.86,193.90900000000002,69.915,32.65 -2020-12-18 19:15:00,110.63,191.672,69.915,32.65 -2020-12-18 19:30:00,107.94,189.292,69.915,32.65 -2020-12-18 19:45:00,106.94,184.96900000000002,69.915,32.65 -2020-12-18 20:00:00,101.64,181.555,61.695,32.65 -2020-12-18 20:15:00,99.78,175.899,61.695,32.65 -2020-12-18 20:30:00,94.34,172.12099999999998,61.695,32.65 -2020-12-18 20:45:00,92.41,169.93200000000002,61.695,32.65 -2020-12-18 21:00:00,88.08,168.44799999999998,56.041000000000004,32.65 -2020-12-18 21:15:00,86.79,166.792,56.041000000000004,32.65 -2020-12-18 21:30:00,85.7,164.696,56.041000000000004,32.65 -2020-12-18 21:45:00,83.61,163.665,56.041000000000004,32.65 -2020-12-18 22:00:00,79.01,158.058,51.888999999999996,32.65 -2020-12-18 22:15:00,77.65,152.47799999999998,51.888999999999996,32.65 -2020-12-18 22:30:00,75.96,144.877,51.888999999999996,32.65 -2020-12-18 22:45:00,74.55,140.467,51.888999999999996,32.65 -2020-12-18 23:00:00,68.49,134.586,45.787,32.65 -2020-12-18 23:15:00,67.5,130.575,45.787,32.65 -2020-12-18 23:30:00,65.03,129.435,45.787,32.65 -2020-12-18 23:45:00,63.68,128.28,45.787,32.65 -2020-12-19 00:00:00,58.59,112.90299999999999,41.815,32.468 -2020-12-19 00:15:00,56.86,108.542,41.815,32.468 -2020-12-19 00:30:00,56.32,110.538,41.815,32.468 -2020-12-19 00:45:00,55.88,112.488,41.815,32.468 -2020-12-19 01:00:00,53.45,115.075,38.645,32.468 -2020-12-19 01:15:00,53.4,115.85600000000001,38.645,32.468 -2020-12-19 01:30:00,53.25,115.65799999999999,38.645,32.468 -2020-12-19 01:45:00,53.53,116.088,38.645,32.468 -2020-12-19 02:00:00,51.2,118.405,36.696,32.468 -2020-12-19 02:15:00,51.19,119.29299999999999,36.696,32.468 -2020-12-19 02:30:00,51.56,118.825,36.696,32.468 -2020-12-19 02:45:00,51.39,120.76700000000001,36.696,32.468 -2020-12-19 03:00:00,49.17,122.844,35.42,32.468 -2020-12-19 03:15:00,49.88,123.54899999999999,35.42,32.468 -2020-12-19 03:30:00,50.39,123.95100000000001,35.42,32.468 -2020-12-19 03:45:00,50.38,125.331,35.42,32.468 -2020-12-19 04:00:00,50.5,134.138,35.167,32.468 -2020-12-19 04:15:00,51.79,143.55200000000002,35.167,32.468 -2020-12-19 04:30:00,52.07,143.812,35.167,32.468 -2020-12-19 04:45:00,52.89,144.718,35.167,32.468 -2020-12-19 05:00:00,55.09,161.997,35.311,32.468 -2020-12-19 05:15:00,59.51,173.59400000000002,35.311,32.468 -2020-12-19 05:30:00,56.55,170.71599999999998,35.311,32.468 -2020-12-19 05:45:00,59.21,168.06099999999998,35.311,32.468 -2020-12-19 06:00:00,62.57,183.03900000000002,37.117,32.468 -2020-12-19 06:15:00,65.09,202.952,37.117,32.468 -2020-12-19 06:30:00,65.7,199.22299999999998,37.117,32.468 -2020-12-19 06:45:00,67.91,194.838,37.117,32.468 -2020-12-19 07:00:00,72.04,190.25900000000001,40.948,32.468 -2020-12-19 07:15:00,73.9,194.74,40.948,32.468 -2020-12-19 07:30:00,76.28,199.62900000000002,40.948,32.468 -2020-12-19 07:45:00,80.12,203.72299999999998,40.948,32.468 -2020-12-19 08:00:00,84.67,205.49,44.903,32.468 -2020-12-19 08:15:00,84.63,208.417,44.903,32.468 -2020-12-19 08:30:00,85.9,209.208,44.903,32.468 -2020-12-19 08:45:00,89.47,207.513,44.903,32.468 -2020-12-19 09:00:00,91.2,202.946,46.283,32.468 -2020-12-19 09:15:00,91.66,200.81900000000002,46.283,32.468 -2020-12-19 09:30:00,92.64,198.743,46.283,32.468 -2020-12-19 09:45:00,94.43,196.018,46.283,32.468 -2020-12-19 10:00:00,95.05,190.972,44.103,32.468 -2020-12-19 10:15:00,97.92,187.33599999999998,44.103,32.468 -2020-12-19 10:30:00,97.13,185.18900000000002,44.103,32.468 -2020-12-19 10:45:00,98.68,184.658,44.103,32.468 -2020-12-19 11:00:00,98.05,183.915,42.373999999999995,32.468 -2020-12-19 11:15:00,97.08,181.329,42.373999999999995,32.468 -2020-12-19 11:30:00,99.87,180.894,42.373999999999995,32.468 -2020-12-19 11:45:00,100.27,178.51,42.373999999999995,32.468 -2020-12-19 12:00:00,97.52,173.118,39.937,32.468 -2020-12-19 12:15:00,97.76,170.877,39.937,32.468 -2020-12-19 12:30:00,98.11,171.55,39.937,32.468 -2020-12-19 12:45:00,100.55,172.199,39.937,32.468 -2020-12-19 13:00:00,99.76,171.535,37.138000000000005,32.468 -2020-12-19 13:15:00,98.38,169.935,37.138000000000005,32.468 -2020-12-19 13:30:00,95.17,169.263,37.138000000000005,32.468 -2020-12-19 13:45:00,95.3,169.452,37.138000000000005,32.468 -2020-12-19 14:00:00,93.76,168.46900000000002,36.141999999999996,32.468 -2020-12-19 14:15:00,94.4,168.18900000000002,36.141999999999996,32.468 -2020-12-19 14:30:00,93.73,167.553,36.141999999999996,32.468 -2020-12-19 14:45:00,95.27,168.02,36.141999999999996,32.468 -2020-12-19 15:00:00,95.53,169.136,37.964,32.468 -2020-12-19 15:15:00,95.12,169.968,37.964,32.468 -2020-12-19 15:30:00,94.85,172.035,37.964,32.468 -2020-12-19 15:45:00,95.87,173.68400000000003,37.964,32.468 -2020-12-19 16:00:00,102.71,173.486,40.699,32.468 -2020-12-19 16:15:00,100.85,176.049,40.699,32.468 -2020-12-19 16:30:00,103.71,178.514,40.699,32.468 -2020-12-19 16:45:00,102.26,180.572,40.699,32.468 -2020-12-19 17:00:00,105.22,182.958,46.216,32.468 -2020-12-19 17:15:00,103.82,184.842,46.216,32.468 -2020-12-19 17:30:00,107.42,185.225,46.216,32.468 -2020-12-19 17:45:00,106.86,184.43,46.216,32.468 -2020-12-19 18:00:00,106.39,185.953,51.123999999999995,32.468 -2020-12-19 18:15:00,105.15,185.488,51.123999999999995,32.468 -2020-12-19 18:30:00,104.09,185.662,51.123999999999995,32.468 -2020-12-19 18:45:00,103.35,182.18599999999998,51.123999999999995,32.468 -2020-12-19 19:00:00,101.94,185.102,52.336000000000006,32.468 -2020-12-19 19:15:00,100.64,182.34900000000002,52.336000000000006,32.468 -2020-12-19 19:30:00,101.69,180.71,52.336000000000006,32.468 -2020-12-19 19:45:00,98.12,176.26,52.336000000000006,32.468 -2020-12-19 20:00:00,92.73,174.96900000000002,48.825,32.468 -2020-12-19 20:15:00,89.48,171.326,48.825,32.468 -2020-12-19 20:30:00,86.99,167.16099999999997,48.825,32.468 -2020-12-19 20:45:00,85.88,164.67,48.825,32.468 -2020-12-19 21:00:00,82.34,165.27700000000002,43.729,32.468 -2020-12-19 21:15:00,85.85,164.014,43.729,32.468 -2020-12-19 21:30:00,81.94,163.107,43.729,32.468 -2020-12-19 21:45:00,81.18,161.67600000000002,43.729,32.468 -2020-12-19 22:00:00,76.01,157.365,44.126000000000005,32.468 -2020-12-19 22:15:00,75.43,154.187,44.126000000000005,32.468 -2020-12-19 22:30:00,71.47,152.58100000000002,44.126000000000005,32.468 -2020-12-19 22:45:00,70.06,149.986,44.126000000000005,32.468 -2020-12-19 23:00:00,66.49,146.393,38.169000000000004,32.468 -2020-12-19 23:15:00,66.77,140.828,38.169000000000004,32.468 -2020-12-19 23:30:00,64.05,138.111,38.169000000000004,32.468 -2020-12-19 23:45:00,61.94,134.629,38.169000000000004,32.468 -2020-12-20 00:00:00,57.44,113.59899999999999,35.232,32.468 -2020-12-20 00:15:00,55.83,108.861,35.232,32.468 -2020-12-20 00:30:00,55.22,110.48299999999999,35.232,32.468 -2020-12-20 00:45:00,53.65,113.07600000000001,35.232,32.468 -2020-12-20 01:00:00,50.86,115.56200000000001,31.403000000000002,32.468 -2020-12-20 01:15:00,51.31,117.324,31.403000000000002,32.468 -2020-12-20 01:30:00,50.82,117.62100000000001,31.403000000000002,32.468 -2020-12-20 01:45:00,50.65,117.726,31.403000000000002,32.468 -2020-12-20 02:00:00,48.06,119.34700000000001,30.69,32.468 -2020-12-20 02:15:00,48.95,119.454,30.69,32.468 -2020-12-20 02:30:00,49.69,119.81200000000001,30.69,32.468 -2020-12-20 02:45:00,49.72,122.182,30.69,32.468 -2020-12-20 03:00:00,52.26,124.57700000000001,29.516,32.468 -2020-12-20 03:15:00,50.67,124.82,29.516,32.468 -2020-12-20 03:30:00,50.57,126.522,29.516,32.468 -2020-12-20 03:45:00,50.51,127.795,29.516,32.468 -2020-12-20 04:00:00,50.06,136.341,29.148000000000003,32.468 -2020-12-20 04:15:00,50.44,144.77100000000002,29.148000000000003,32.468 -2020-12-20 04:30:00,51.53,145.145,29.148000000000003,32.468 -2020-12-20 04:45:00,52.44,146.28799999999998,29.148000000000003,32.468 -2020-12-20 05:00:00,53.76,160.211,28.706,32.468 -2020-12-20 05:15:00,54.72,169.44299999999998,28.706,32.468 -2020-12-20 05:30:00,54.25,166.403,28.706,32.468 -2020-12-20 05:45:00,55.03,163.986,28.706,32.468 -2020-12-20 06:00:00,57.82,178.773,28.771,32.468 -2020-12-20 06:15:00,58.08,197.097,28.771,32.468 -2020-12-20 06:30:00,59.03,192.31900000000002,28.771,32.468 -2020-12-20 06:45:00,60.79,186.922,28.771,32.468 -2020-12-20 07:00:00,62.77,184.69099999999997,31.39,32.468 -2020-12-20 07:15:00,63.39,188.282,31.39,32.468 -2020-12-20 07:30:00,65.38,192.062,31.39,32.468 -2020-12-20 07:45:00,67.0,195.424,31.39,32.468 -2020-12-20 08:00:00,72.03,198.976,34.972,32.468 -2020-12-20 08:15:00,73.09,201.861,34.972,32.468 -2020-12-20 08:30:00,75.12,204.26,34.972,32.468 -2020-12-20 08:45:00,78.34,204.452,34.972,32.468 -2020-12-20 09:00:00,79.75,199.475,36.709,32.468 -2020-12-20 09:15:00,81.63,197.854,36.709,32.468 -2020-12-20 09:30:00,81.76,195.66099999999997,36.709,32.468 -2020-12-20 09:45:00,83.87,192.864,36.709,32.468 -2020-12-20 10:00:00,85.18,190.226,35.812,32.468 -2020-12-20 10:15:00,86.79,187.08700000000002,35.812,32.468 -2020-12-20 10:30:00,87.22,185.505,35.812,32.468 -2020-12-20 10:45:00,88.97,183.232,35.812,32.468 -2020-12-20 11:00:00,87.56,183.31900000000002,36.746,32.468 -2020-12-20 11:15:00,90.47,180.827,36.746,32.468 -2020-12-20 11:30:00,91.82,179.59799999999998,36.746,32.468 -2020-12-20 11:45:00,93.1,177.797,36.746,32.468 -2020-12-20 12:00:00,92.2,171.933,35.048,32.468 -2020-12-20 12:15:00,91.24,171.46599999999998,35.048,32.468 -2020-12-20 12:30:00,91.52,170.787,35.048,32.468 -2020-12-20 12:45:00,87.78,170.493,35.048,32.468 -2020-12-20 13:00:00,84.85,169.11700000000002,29.987,32.468 -2020-12-20 13:15:00,83.06,170.32299999999998,29.987,32.468 -2020-12-20 13:30:00,80.86,169.38299999999998,29.987,32.468 -2020-12-20 13:45:00,80.54,169.005,29.987,32.468 -2020-12-20 14:00:00,80.42,168.31099999999998,27.21,32.468 -2020-12-20 14:15:00,80.53,169.185,27.21,32.468 -2020-12-20 14:30:00,83.4,169.662,27.21,32.468 -2020-12-20 14:45:00,81.31,169.695,27.21,32.468 -2020-12-20 15:00:00,85.33,169.394,27.726999999999997,32.468 -2020-12-20 15:15:00,82.97,170.889,27.726999999999997,32.468 -2020-12-20 15:30:00,84.51,173.511,27.726999999999997,32.468 -2020-12-20 15:45:00,86.95,175.827,27.726999999999997,32.468 -2020-12-20 16:00:00,90.83,177.327,32.23,32.468 -2020-12-20 16:15:00,91.19,179.05700000000002,32.23,32.468 -2020-12-20 16:30:00,92.7,181.822,32.23,32.468 -2020-12-20 16:45:00,93.89,184.03099999999998,32.23,32.468 -2020-12-20 17:00:00,96.36,186.42700000000002,42.016999999999996,32.468 -2020-12-20 17:15:00,96.89,188.093,42.016999999999996,32.468 -2020-12-20 17:30:00,101.65,188.80599999999998,42.016999999999996,32.468 -2020-12-20 17:45:00,99.7,190.2,42.016999999999996,32.468 -2020-12-20 18:00:00,99.58,191.257,49.338,32.468 -2020-12-20 18:15:00,98.86,192.024,49.338,32.468 -2020-12-20 18:30:00,99.68,190.203,49.338,32.468 -2020-12-20 18:45:00,98.16,188.51,49.338,32.468 -2020-12-20 19:00:00,96.38,191.18099999999998,52.369,32.468 -2020-12-20 19:15:00,95.5,188.947,52.369,32.468 -2020-12-20 19:30:00,94.26,187.13400000000001,52.369,32.468 -2020-12-20 19:45:00,93.64,184.032,52.369,32.468 -2020-12-20 20:00:00,92.2,182.707,50.405,32.468 -2020-12-20 20:15:00,91.3,179.99400000000003,50.405,32.468 -2020-12-20 20:30:00,89.41,177.025,50.405,32.468 -2020-12-20 20:45:00,88.72,173.33700000000002,50.405,32.468 -2020-12-20 21:00:00,82.11,171.449,46.235,32.468 -2020-12-20 21:15:00,79.31,169.55900000000003,46.235,32.468 -2020-12-20 21:30:00,78.23,168.908,46.235,32.468 -2020-12-20 21:45:00,80.71,167.632,46.235,32.468 -2020-12-20 22:00:00,76.48,162.267,46.861000000000004,32.468 -2020-12-20 22:15:00,75.69,158.30200000000002,46.861000000000004,32.468 -2020-12-20 22:30:00,72.53,153.685,46.861000000000004,32.468 -2020-12-20 22:45:00,71.4,150.233,46.861000000000004,32.468 -2020-12-20 23:00:00,67.24,143.93200000000002,41.302,32.468 -2020-12-20 23:15:00,67.09,140.191,41.302,32.468 -2020-12-20 23:30:00,65.09,138.24200000000002,41.302,32.468 -2020-12-20 23:45:00,63.54,135.611,41.302,32.468 -2020-12-21 00:00:00,59.61,117.899,37.164,32.65 -2020-12-21 00:15:00,58.76,116.00200000000001,37.164,32.65 -2020-12-21 00:30:00,55.48,117.723,37.164,32.65 -2020-12-21 00:45:00,58.12,119.76799999999999,37.164,32.65 -2020-12-21 01:00:00,54.85,122.302,34.994,32.65 -2020-12-21 01:15:00,52.98,123.559,34.994,32.65 -2020-12-21 01:30:00,50.94,123.928,34.994,32.65 -2020-12-21 01:45:00,50.8,124.125,34.994,32.65 -2020-12-21 02:00:00,52.33,125.757,34.571,32.65 -2020-12-21 02:15:00,52.41,127.214,34.571,32.65 -2020-12-21 02:30:00,52.65,127.90100000000001,34.571,32.65 -2020-12-21 02:45:00,53.11,129.673,34.571,32.65 -2020-12-21 03:00:00,51.52,133.284,33.934,32.65 -2020-12-21 03:15:00,52.71,135.15,33.934,32.65 -2020-12-21 03:30:00,52.07,136.624,33.934,32.65 -2020-12-21 03:45:00,49.61,137.35299999999998,33.934,32.65 -2020-12-21 04:00:00,53.48,150.143,34.107,32.65 -2020-12-21 04:15:00,52.93,162.64,34.107,32.65 -2020-12-21 04:30:00,53.67,165.072,34.107,32.65 -2020-12-21 04:45:00,54.53,166.38400000000001,34.107,32.65 -2020-12-21 05:00:00,56.42,195.558,39.575,32.65 -2020-12-21 05:15:00,57.68,224.365,39.575,32.65 -2020-12-21 05:30:00,58.83,221.533,39.575,32.65 -2020-12-21 05:45:00,60.34,213.628,39.575,32.65 -2020-12-21 06:00:00,62.76,210.952,56.156000000000006,32.65 -2020-12-21 06:15:00,66.38,214.78599999999997,56.156000000000006,32.65 -2020-12-21 06:30:00,67.63,217.83,56.156000000000006,32.65 -2020-12-21 06:45:00,70.42,221.06,56.156000000000006,32.65 -2020-12-21 07:00:00,74.09,221.109,67.926,32.65 -2020-12-21 07:15:00,75.56,225.983,67.926,32.65 -2020-12-21 07:30:00,78.04,228.984,67.926,32.65 -2020-12-21 07:45:00,81.33,229.912,67.926,32.65 -2020-12-21 08:00:00,85.45,228.74900000000002,72.58,32.65 -2020-12-21 08:15:00,86.9,229.53400000000002,72.58,32.65 -2020-12-21 08:30:00,89.21,228.0,72.58,32.65 -2020-12-21 08:45:00,91.43,225.005,72.58,32.65 -2020-12-21 09:00:00,94.89,219.02200000000002,66.984,32.65 -2020-12-21 09:15:00,97.25,214.018,66.984,32.65 -2020-12-21 09:30:00,101.27,210.845,66.984,32.65 -2020-12-21 09:45:00,99.72,208.222,66.984,32.65 -2020-12-21 10:00:00,101.1,204.55200000000002,63.158,32.65 -2020-12-21 10:15:00,100.36,201.084,63.158,32.65 -2020-12-21 10:30:00,101.56,198.63400000000001,63.158,32.65 -2020-12-21 10:45:00,102.86,196.997,63.158,32.65 -2020-12-21 11:00:00,100.92,194.606,61.141000000000005,32.65 -2020-12-21 11:15:00,101.74,193.829,61.141000000000005,32.65 -2020-12-21 11:30:00,103.83,193.94,61.141000000000005,32.65 -2020-12-21 11:45:00,102.91,191.77200000000002,61.141000000000005,32.65 -2020-12-21 12:00:00,101.04,187.456,57.961000000000006,32.65 -2020-12-21 12:15:00,101.4,187.00900000000001,57.961000000000006,32.65 -2020-12-21 12:30:00,98.37,186.525,57.961000000000006,32.65 -2020-12-21 12:45:00,97.4,187.678,57.961000000000006,32.65 -2020-12-21 13:00:00,94.93,186.868,56.843,32.65 -2020-12-21 13:15:00,92.49,186.717,56.843,32.65 -2020-12-21 13:30:00,90.19,185.27599999999998,56.843,32.65 -2020-12-21 13:45:00,89.94,184.963,56.843,32.65 -2020-12-21 14:00:00,86.88,183.642,55.992,32.65 -2020-12-21 14:15:00,84.1,183.937,55.992,32.65 -2020-12-21 14:30:00,81.84,183.912,55.992,32.65 -2020-12-21 14:45:00,83.32,184.023,55.992,32.65 -2020-12-21 15:00:00,83.47,185.426,57.523,32.65 -2020-12-21 15:15:00,81.79,185.524,57.523,32.65 -2020-12-21 15:30:00,81.2,187.407,57.523,32.65 -2020-12-21 15:45:00,82.37,189.275,57.523,32.65 -2020-12-21 16:00:00,85.28,191.02,59.471000000000004,32.65 -2020-12-21 16:15:00,84.75,192.044,59.471000000000004,32.65 -2020-12-21 16:30:00,86.17,193.86700000000002,59.471000000000004,32.65 -2020-12-21 16:45:00,86.8,194.97,59.471000000000004,32.65 -2020-12-21 17:00:00,89.11,197.155,65.066,32.65 -2020-12-21 17:15:00,90.27,197.953,65.066,32.65 -2020-12-21 17:30:00,92.59,198.148,65.066,32.65 -2020-12-21 17:45:00,92.01,198.112,65.066,32.65 -2020-12-21 18:00:00,92.03,199.575,69.581,32.65 -2020-12-21 18:15:00,92.38,198.145,69.581,32.65 -2020-12-21 18:30:00,91.75,196.93200000000002,69.581,32.65 -2020-12-21 18:45:00,91.35,196.043,69.581,32.65 -2020-12-21 19:00:00,87.77,197.149,73.771,32.65 -2020-12-21 19:15:00,86.86,193.826,73.771,32.65 -2020-12-21 19:30:00,85.1,192.47299999999998,73.771,32.65 -2020-12-21 19:45:00,84.71,188.53799999999998,73.771,32.65 -2020-12-21 20:00:00,81.21,184.893,65.035,32.65 -2020-12-21 20:15:00,80.86,179.843,65.035,32.65 -2020-12-21 20:30:00,79.94,175.08700000000002,65.035,32.65 -2020-12-21 20:45:00,78.91,172.983,65.035,32.65 -2020-12-21 21:00:00,76.0,171.56799999999998,58.7,32.65 -2020-12-21 21:15:00,76.31,168.549,58.7,32.65 -2020-12-21 21:30:00,74.92,167.11900000000003,58.7,32.65 -2020-12-21 21:45:00,74.61,165.36,58.7,32.65 -2020-12-21 22:00:00,72.26,157.161,53.888000000000005,32.65 -2020-12-21 22:15:00,72.03,152.0,53.888000000000005,32.65 -2020-12-21 22:30:00,70.9,138.101,53.888000000000005,32.65 -2020-12-21 22:45:00,70.7,130.013,53.888000000000005,32.65 -2020-12-21 23:00:00,67.92,124.43299999999999,45.501999999999995,32.65 -2020-12-21 23:15:00,65.32,123.19,45.501999999999995,32.65 -2020-12-21 23:30:00,63.5,123.906,45.501999999999995,32.65 -2020-12-21 23:45:00,63.09,123.789,45.501999999999995,32.65 -2020-12-22 00:00:00,77.11,117.387,43.537,32.65 -2020-12-22 00:15:00,75.55,116.86,43.537,32.65 -2020-12-22 00:30:00,74.5,117.693,43.537,32.65 -2020-12-22 00:45:00,75.85,118.81,43.537,32.65 -2020-12-22 01:00:00,74.35,121.161,41.854,32.65 -2020-12-22 01:15:00,72.04,121.991,41.854,32.65 -2020-12-22 01:30:00,70.74,122.525,41.854,32.65 -2020-12-22 01:45:00,72.79,122.985,41.854,32.65 -2020-12-22 02:00:00,71.78,124.613,40.321,32.65 -2020-12-22 02:15:00,72.48,126.00299999999999,40.321,32.65 -2020-12-22 02:30:00,72.39,126.111,40.321,32.65 -2020-12-22 02:45:00,73.21,127.904,40.321,32.65 -2020-12-22 03:00:00,72.62,130.333,39.632,32.65 -2020-12-22 03:15:00,73.58,131.439,39.632,32.65 -2020-12-22 03:30:00,75.36,133.376,39.632,32.65 -2020-12-22 03:45:00,75.07,134.254,39.632,32.65 -2020-12-22 04:00:00,74.68,146.79,40.183,32.65 -2020-12-22 04:15:00,74.32,158.94799999999998,40.183,32.65 -2020-12-22 04:30:00,75.7,161.071,40.183,32.65 -2020-12-22 04:45:00,77.44,163.56,40.183,32.65 -2020-12-22 05:00:00,80.88,197.551,43.945,32.65 -2020-12-22 05:15:00,83.17,226.143,43.945,32.65 -2020-12-22 05:30:00,88.89,221.862,43.945,32.65 -2020-12-22 05:45:00,94.9,213.957,43.945,32.65 -2020-12-22 06:00:00,103.72,210.203,56.048,32.65 -2020-12-22 06:15:00,108.11,215.607,56.048,32.65 -2020-12-22 06:30:00,112.38,218.05200000000002,56.048,32.65 -2020-12-22 06:45:00,116.06,220.926,56.048,32.65 -2020-12-22 07:00:00,122.27,220.813,65.74,32.65 -2020-12-22 07:15:00,126.37,225.525,65.74,32.65 -2020-12-22 07:30:00,128.12,227.997,65.74,32.65 -2020-12-22 07:45:00,131.48,229.09,65.74,32.65 -2020-12-22 08:00:00,133.47,228.032,72.757,32.65 -2020-12-22 08:15:00,133.0,227.81099999999998,72.757,32.65 -2020-12-22 08:30:00,133.5,226.104,72.757,32.65 -2020-12-22 08:45:00,134.21,222.799,72.757,32.65 -2020-12-22 09:00:00,133.97,216.007,67.692,32.65 -2020-12-22 09:15:00,136.46,212.53900000000002,67.692,32.65 -2020-12-22 09:30:00,137.68,210.049,67.692,32.65 -2020-12-22 09:45:00,137.1,207.25099999999998,67.692,32.65 -2020-12-22 10:00:00,137.74,202.968,63.506,32.65 -2020-12-22 10:15:00,137.9,198.468,63.506,32.65 -2020-12-22 10:30:00,137.65,196.17700000000002,63.506,32.65 -2020-12-22 10:45:00,140.41,194.83900000000003,63.506,32.65 -2020-12-22 11:00:00,142.25,193.857,60.758,32.65 -2020-12-22 11:15:00,143.49,192.766,60.758,32.65 -2020-12-22 11:30:00,143.27,191.726,60.758,32.65 -2020-12-22 11:45:00,138.82,190.21099999999998,60.758,32.65 -2020-12-22 12:00:00,137.52,184.581,57.519,32.65 -2020-12-22 12:15:00,137.54,183.763,57.519,32.65 -2020-12-22 12:30:00,137.08,184.00599999999997,57.519,32.65 -2020-12-22 12:45:00,135.61,184.908,57.519,32.65 -2020-12-22 13:00:00,132.97,183.676,56.46,32.65 -2020-12-22 13:15:00,132.28,183.25400000000002,56.46,32.65 -2020-12-22 13:30:00,130.5,182.924,56.46,32.65 -2020-12-22 13:45:00,130.46,182.74599999999998,56.46,32.65 -2020-12-22 14:00:00,129.11,181.707,56.207,32.65 -2020-12-22 14:15:00,129.2,182.144,56.207,32.65 -2020-12-22 14:30:00,127.97,182.748,56.207,32.65 -2020-12-22 14:45:00,128.67,182.766,56.207,32.65 -2020-12-22 15:00:00,128.91,183.767,57.391999999999996,32.65 -2020-12-22 15:15:00,128.69,184.206,57.391999999999996,32.65 -2020-12-22 15:30:00,128.66,186.304,57.391999999999996,32.65 -2020-12-22 15:45:00,129.67,187.796,57.391999999999996,32.65 -2020-12-22 16:00:00,133.28,189.83700000000002,59.955,32.65 -2020-12-22 16:15:00,135.66,191.335,59.955,32.65 -2020-12-22 16:30:00,137.94,193.77200000000002,59.955,32.65 -2020-12-22 16:45:00,139.17,195.19400000000002,59.955,32.65 -2020-12-22 17:00:00,143.78,197.887,67.063,32.65 -2020-12-22 17:15:00,144.03,198.753,67.063,32.65 -2020-12-22 17:30:00,145.49,199.59599999999998,67.063,32.65 -2020-12-22 17:45:00,142.58,199.43900000000002,67.063,32.65 -2020-12-22 18:00:00,139.78,200.797,71.477,32.65 -2020-12-22 18:15:00,138.93,198.907,71.477,32.65 -2020-12-22 18:30:00,137.96,197.396,71.477,32.65 -2020-12-22 18:45:00,138.52,197.283,71.477,32.65 -2020-12-22 19:00:00,134.79,198.418,74.32,32.65 -2020-12-22 19:15:00,134.11,194.825,74.32,32.65 -2020-12-22 19:30:00,134.57,192.81400000000002,74.32,32.65 -2020-12-22 19:45:00,134.19,188.90900000000002,74.32,32.65 -2020-12-22 20:00:00,126.29,185.421,66.157,32.65 -2020-12-22 20:15:00,120.72,179.71200000000002,66.157,32.65 -2020-12-22 20:30:00,116.25,175.917,66.157,32.65 -2020-12-22 20:45:00,114.97,173.28900000000002,66.157,32.65 -2020-12-22 21:00:00,111.39,171.205,59.806000000000004,32.65 -2020-12-22 21:15:00,112.49,169.00799999999998,59.806000000000004,32.65 -2020-12-22 21:30:00,112.51,166.87900000000002,59.806000000000004,32.65 -2020-12-22 21:45:00,108.75,165.354,59.806000000000004,32.65 -2020-12-22 22:00:00,100.85,158.816,54.785,32.65 -2020-12-22 22:15:00,98.46,153.403,54.785,32.65 -2020-12-22 22:30:00,93.77,139.632,54.785,32.65 -2020-12-22 22:45:00,94.39,131.819,54.785,32.65 -2020-12-22 23:00:00,92.62,126.223,47.176,32.65 -2020-12-22 23:15:00,91.43,124.146,47.176,32.65 -2020-12-22 23:30:00,86.04,124.527,47.176,32.65 -2020-12-22 23:45:00,83.32,123.98200000000001,47.176,32.65 -2020-12-23 00:00:00,83.37,117.60700000000001,43.42,32.65 -2020-12-23 00:15:00,83.59,117.055,43.42,32.65 -2020-12-23 00:30:00,83.23,117.87899999999999,43.42,32.65 -2020-12-23 00:45:00,80.94,118.979,43.42,32.65 -2020-12-23 01:00:00,76.7,121.35,40.869,32.65 -2020-12-23 01:15:00,80.48,122.177,40.869,32.65 -2020-12-23 01:30:00,81.54,122.714,40.869,32.65 -2020-12-23 01:45:00,80.75,123.163,40.869,32.65 -2020-12-23 02:00:00,77.53,124.807,39.541,32.65 -2020-12-23 02:15:00,76.71,126.197,39.541,32.65 -2020-12-23 02:30:00,79.2,126.31,39.541,32.65 -2020-12-23 02:45:00,81.57,128.10299999999998,39.541,32.65 -2020-12-23 03:00:00,79.82,130.524,39.052,32.65 -2020-12-23 03:15:00,77.81,131.65200000000002,39.052,32.65 -2020-12-23 03:30:00,79.49,133.59,39.052,32.65 -2020-12-23 03:45:00,83.44,134.471,39.052,32.65 -2020-12-23 04:00:00,82.03,146.98,40.36,32.65 -2020-12-23 04:15:00,80.22,159.136,40.36,32.65 -2020-12-23 04:30:00,80.62,161.252,40.36,32.65 -2020-12-23 04:45:00,83.03,163.74,40.36,32.65 -2020-12-23 05:00:00,87.93,197.69799999999998,43.133,32.65 -2020-12-23 05:15:00,91.08,226.25599999999997,43.133,32.65 -2020-12-23 05:30:00,94.96,221.985,43.133,32.65 -2020-12-23 05:45:00,98.6,214.09900000000002,43.133,32.65 -2020-12-23 06:00:00,105.55,210.36900000000003,54.953,32.65 -2020-12-23 06:15:00,110.85,215.77700000000002,54.953,32.65 -2020-12-23 06:30:00,115.87,218.25099999999998,54.953,32.65 -2020-12-23 06:45:00,120.4,221.162,54.953,32.65 -2020-12-23 07:00:00,126.78,221.05700000000002,66.566,32.65 -2020-12-23 07:15:00,128.65,225.765,66.566,32.65 -2020-12-23 07:30:00,130.99,228.233,66.566,32.65 -2020-12-23 07:45:00,133.38,229.315,66.566,32.65 -2020-12-23 08:00:00,135.54,228.261,72.902,32.65 -2020-12-23 08:15:00,135.89,228.02700000000002,72.902,32.65 -2020-12-23 08:30:00,136.41,226.31099999999998,72.902,32.65 -2020-12-23 08:45:00,136.61,222.982,72.902,32.65 -2020-12-23 09:00:00,137.52,216.169,68.465,32.65 -2020-12-23 09:15:00,138.65,212.708,68.465,32.65 -2020-12-23 09:30:00,139.53,210.229,68.465,32.65 -2020-12-23 09:45:00,140.58,207.421,68.465,32.65 -2020-12-23 10:00:00,139.15,203.13299999999998,63.625,32.65 -2020-12-23 10:15:00,139.36,198.62400000000002,63.625,32.65 -2020-12-23 10:30:00,139.02,196.31799999999998,63.625,32.65 -2020-12-23 10:45:00,138.24,194.97799999999998,63.625,32.65 -2020-12-23 11:00:00,141.5,193.97799999999998,61.628,32.65 -2020-12-23 11:15:00,140.02,192.88,61.628,32.65 -2020-12-23 11:30:00,142.39,191.84,61.628,32.65 -2020-12-23 11:45:00,137.8,190.325,61.628,32.65 -2020-12-23 12:00:00,134.47,184.69799999999998,58.708999999999996,32.65 -2020-12-23 12:15:00,132.86,183.894,58.708999999999996,32.65 -2020-12-23 12:30:00,132.25,184.143,58.708999999999996,32.65 -2020-12-23 12:45:00,133.37,185.047,58.708999999999996,32.65 -2020-12-23 13:00:00,133.19,183.796,57.373000000000005,32.65 -2020-12-23 13:15:00,133.97,183.37,57.373000000000005,32.65 -2020-12-23 13:30:00,132.3,183.033,57.373000000000005,32.65 -2020-12-23 13:45:00,130.97,182.84799999999998,57.373000000000005,32.65 -2020-12-23 14:00:00,130.64,181.804,57.684,32.65 -2020-12-23 14:15:00,130.79,182.24099999999999,57.684,32.65 -2020-12-23 14:30:00,130.4,182.863,57.684,32.65 -2020-12-23 14:45:00,130.0,182.893,57.684,32.65 -2020-12-23 15:00:00,130.36,183.90900000000002,58.03,32.65 -2020-12-23 15:15:00,130.22,184.33900000000003,58.03,32.65 -2020-12-23 15:30:00,129.82,186.446,58.03,32.65 -2020-12-23 15:45:00,131.13,187.935,58.03,32.65 -2020-12-23 16:00:00,133.7,189.97299999999998,59.97,32.65 -2020-12-23 16:15:00,136.31,191.487,59.97,32.65 -2020-12-23 16:30:00,139.13,193.93,59.97,32.65 -2020-12-23 16:45:00,141.42,195.372,59.97,32.65 -2020-12-23 17:00:00,147.76,198.045,65.661,32.65 -2020-12-23 17:15:00,147.93,198.938,65.661,32.65 -2020-12-23 17:30:00,148.05,199.803,65.661,32.65 -2020-12-23 17:45:00,143.23,199.658,65.661,32.65 -2020-12-23 18:00:00,140.17,201.03599999999997,70.96300000000001,32.65 -2020-12-23 18:15:00,139.83,199.13299999999998,70.96300000000001,32.65 -2020-12-23 18:30:00,138.54,197.62900000000002,70.96300000000001,32.65 -2020-12-23 18:45:00,138.83,197.52900000000002,70.96300000000001,32.65 -2020-12-23 19:00:00,136.66,198.641,74.133,32.65 -2020-12-23 19:15:00,134.75,195.046,74.133,32.65 -2020-12-23 19:30:00,133.88,193.02900000000002,74.133,32.65 -2020-12-23 19:45:00,133.25,189.11,74.133,32.65 -2020-12-23 20:00:00,126.72,185.614,65.613,32.65 -2020-12-23 20:15:00,120.6,179.90200000000002,65.613,32.65 -2020-12-23 20:30:00,117.16,176.08900000000003,65.613,32.65 -2020-12-23 20:45:00,115.94,173.47799999999998,65.613,32.65 -2020-12-23 21:00:00,113.09,171.37900000000002,58.583,32.65 -2020-12-23 21:15:00,114.76,169.165,58.583,32.65 -2020-12-23 21:30:00,112.8,167.037,58.583,32.65 -2020-12-23 21:45:00,109.3,165.523,58.583,32.65 -2020-12-23 22:00:00,103.75,158.988,54.411,32.65 -2020-12-23 22:15:00,102.73,153.583,54.411,32.65 -2020-12-23 22:30:00,99.23,139.843,54.411,32.65 -2020-12-23 22:45:00,99.37,132.03799999999998,54.411,32.65 -2020-12-23 23:00:00,94.42,126.421,47.878,32.65 -2020-12-23 23:15:00,89.7,124.345,47.878,32.65 -2020-12-23 23:30:00,86.46,124.74,47.878,32.65 -2020-12-23 23:45:00,87.03,124.18799999999999,47.878,32.65 -2020-12-24 00:00:00,57.0,117.822,44.513000000000005,32.468 -2020-12-24 00:15:00,57.34,117.244,44.513000000000005,32.468 -2020-12-24 00:30:00,56.42,118.05799999999999,44.513000000000005,32.468 -2020-12-24 00:45:00,55.53,119.14,44.513000000000005,32.468 -2020-12-24 01:00:00,52.63,121.53200000000001,43.169,32.468 -2020-12-24 01:15:00,53.35,122.355,43.169,32.468 -2020-12-24 01:30:00,52.36,122.896,43.169,32.468 -2020-12-24 01:45:00,52.48,123.33200000000001,43.169,32.468 -2020-12-24 02:00:00,51.25,124.992,41.763999999999996,32.468 -2020-12-24 02:15:00,52.09,126.383,41.763999999999996,32.468 -2020-12-24 02:30:00,51.45,126.501,41.763999999999996,32.468 -2020-12-24 02:45:00,51.82,128.293,41.763999999999996,32.468 -2020-12-24 03:00:00,51.68,130.705,41.155,32.468 -2020-12-24 03:15:00,52.17,131.857,41.155,32.468 -2020-12-24 03:30:00,52.33,133.796,41.155,32.468 -2020-12-24 03:45:00,53.49,134.678,41.155,32.468 -2020-12-24 04:00:00,54.37,147.165,41.96,32.468 -2020-12-24 04:15:00,54.98,159.316,41.96,32.468 -2020-12-24 04:30:00,55.93,161.425,41.96,32.468 -2020-12-24 04:45:00,57.9,163.912,41.96,32.468 -2020-12-24 05:00:00,61.23,197.83700000000002,45.206,32.468 -2020-12-24 05:15:00,61.7,226.36,45.206,32.468 -2020-12-24 05:30:00,63.74,222.101,45.206,32.468 -2020-12-24 05:45:00,65.72,214.232,45.206,32.468 -2020-12-24 06:00:00,71.25,210.52599999999998,55.398999999999994,32.468 -2020-12-24 06:15:00,73.82,215.94,55.398999999999994,32.468 -2020-12-24 06:30:00,75.73,218.44099999999997,55.398999999999994,32.468 -2020-12-24 06:45:00,79.76,221.386,55.398999999999994,32.468 -2020-12-24 07:00:00,84.31,221.29,64.627,32.468 -2020-12-24 07:15:00,85.26,225.99599999999998,64.627,32.468 -2020-12-24 07:30:00,86.83,228.458,64.627,32.468 -2020-12-24 07:45:00,89.99,229.53,64.627,32.468 -2020-12-24 08:00:00,92.92,228.477,70.895,32.468 -2020-12-24 08:15:00,93.1,228.232,70.895,32.468 -2020-12-24 08:30:00,94.95,226.505,70.895,32.468 -2020-12-24 08:45:00,95.57,223.15200000000002,70.895,32.468 -2020-12-24 09:00:00,99.59,216.31900000000002,66.382,32.468 -2020-12-24 09:15:00,100.3,212.865,66.382,32.468 -2020-12-24 09:30:00,100.82,210.396,66.382,32.468 -2020-12-24 09:45:00,100.23,207.579,66.382,32.468 -2020-12-24 10:00:00,101.06,203.28799999999998,62.739,32.468 -2020-12-24 10:15:00,101.79,198.771,62.739,32.468 -2020-12-24 10:30:00,102.05,196.449,62.739,32.468 -2020-12-24 10:45:00,102.54,195.107,62.739,32.468 -2020-12-24 11:00:00,100.69,194.09,60.843,32.468 -2020-12-24 11:15:00,101.48,192.986,60.843,32.468 -2020-12-24 11:30:00,100.88,191.946,60.843,32.468 -2020-12-24 11:45:00,99.0,190.43,60.843,32.468 -2020-12-24 12:00:00,94.85,184.805,58.466,32.468 -2020-12-24 12:15:00,95.31,184.016,58.466,32.468 -2020-12-24 12:30:00,93.98,184.271,58.466,32.468 -2020-12-24 12:45:00,96.03,185.178,58.466,32.468 -2020-12-24 13:00:00,94.18,183.908,56.883,32.468 -2020-12-24 13:15:00,90.44,183.48,56.883,32.468 -2020-12-24 13:30:00,90.13,183.132,56.883,32.468 -2020-12-24 13:45:00,90.54,182.94,56.883,32.468 -2020-12-24 14:00:00,89.78,181.893,56.503,32.468 -2020-12-24 14:15:00,92.43,182.33,56.503,32.468 -2020-12-24 14:30:00,90.39,182.968,56.503,32.468 -2020-12-24 14:45:00,92.14,183.01,56.503,32.468 -2020-12-24 15:00:00,92.57,184.044,57.803999999999995,32.468 -2020-12-24 15:15:00,93.64,184.463,57.803999999999995,32.468 -2020-12-24 15:30:00,94.37,186.578,57.803999999999995,32.468 -2020-12-24 15:45:00,97.44,188.062,57.803999999999995,32.468 -2020-12-24 16:00:00,103.78,190.1,59.379,32.468 -2020-12-24 16:15:00,107.92,191.628,59.379,32.468 -2020-12-24 16:30:00,106.71,194.077,59.379,32.468 -2020-12-24 16:45:00,107.58,195.53900000000002,59.379,32.468 -2020-12-24 17:00:00,111.26,198.19299999999998,64.71600000000001,32.468 -2020-12-24 17:15:00,110.82,199.113,64.71600000000001,32.468 -2020-12-24 17:30:00,112.07,200.0,64.71600000000001,32.468 -2020-12-24 17:45:00,111.35,199.86700000000002,64.71600000000001,32.468 -2020-12-24 18:00:00,110.75,201.264,68.803,32.468 -2020-12-24 18:15:00,110.62,199.34900000000002,68.803,32.468 -2020-12-24 18:30:00,110.52,197.851,68.803,32.468 -2020-12-24 18:45:00,110.48,197.765,68.803,32.468 -2020-12-24 19:00:00,111.49,198.856,72.934,32.468 -2020-12-24 19:15:00,106.52,195.25599999999997,72.934,32.468 -2020-12-24 19:30:00,104.08,193.234,72.934,32.468 -2020-12-24 19:45:00,102.68,189.304,72.934,32.468 -2020-12-24 20:00:00,96.72,185.8,65.175,32.468 -2020-12-24 20:15:00,96.77,180.084,65.175,32.468 -2020-12-24 20:30:00,91.18,176.25400000000002,65.175,32.468 -2020-12-24 20:45:00,89.83,173.66,65.175,32.468 -2020-12-24 21:00:00,86.22,171.545,58.55,32.468 -2020-12-24 21:15:00,85.58,169.31400000000002,58.55,32.468 -2020-12-24 21:30:00,83.25,167.188,58.55,32.468 -2020-12-24 21:45:00,85.54,165.68599999999998,58.55,32.468 -2020-12-24 22:00:00,76.93,159.151,55.041000000000004,32.468 -2020-12-24 22:15:00,77.34,153.755,55.041000000000004,32.468 -2020-12-24 22:30:00,73.53,140.047,55.041000000000004,32.468 -2020-12-24 22:45:00,72.69,132.249,55.041000000000004,32.468 -2020-12-24 23:00:00,68.02,126.61,48.258,32.468 -2020-12-24 23:15:00,68.11,124.535,48.258,32.468 -2020-12-24 23:30:00,64.77,124.944,48.258,32.468 -2020-12-24 23:45:00,67.67,124.384,48.258,32.468 -2020-12-25 00:00:00,57.87,114.70100000000001,32.311,32.468 -2020-12-25 00:15:00,58.21,109.835,32.311,32.468 -2020-12-25 00:30:00,57.43,111.413,32.311,32.468 -2020-12-25 00:45:00,57.71,113.917,32.311,32.468 -2020-12-25 01:00:00,54.98,116.509,25.569000000000003,32.468 -2020-12-25 01:15:00,55.19,118.25200000000001,25.569000000000003,32.468 -2020-12-25 01:30:00,54.78,118.568,25.569000000000003,32.468 -2020-12-25 01:45:00,53.55,118.613,25.569000000000003,32.468 -2020-12-25 02:00:00,50.76,120.314,21.038,32.468 -2020-12-25 02:15:00,52.54,120.425,21.038,32.468 -2020-12-25 02:30:00,49.88,120.809,21.038,32.468 -2020-12-25 02:45:00,52.68,123.17399999999999,21.038,32.468 -2020-12-25 03:00:00,51.32,125.52600000000001,19.865,32.468 -2020-12-25 03:15:00,51.45,125.884,19.865,32.468 -2020-12-25 03:30:00,52.01,127.59,19.865,32.468 -2020-12-25 03:45:00,52.84,128.874,19.865,32.468 -2020-12-25 04:00:00,52.17,137.297,19.076,32.468 -2020-12-25 04:15:00,52.24,145.708,19.076,32.468 -2020-12-25 04:30:00,53.63,146.046,19.076,32.468 -2020-12-25 04:45:00,54.09,147.187,19.076,32.468 -2020-12-25 05:00:00,53.22,160.945,20.174,32.468 -2020-12-25 05:15:00,54.53,169.99900000000002,20.174,32.468 -2020-12-25 05:30:00,53.56,167.02200000000002,20.174,32.468 -2020-12-25 05:45:00,57.2,164.69400000000002,20.174,32.468 -2020-12-25 06:00:00,57.45,179.6,19.854,32.468 -2020-12-25 06:15:00,58.55,197.949,19.854,32.468 -2020-12-25 06:30:00,59.92,193.317,19.854,32.468 -2020-12-25 06:45:00,61.05,188.095,19.854,32.468 -2020-12-25 07:00:00,63.95,185.90599999999998,23.096999999999998,32.468 -2020-12-25 07:15:00,65.26,189.485,23.096999999999998,32.468 -2020-12-25 07:30:00,66.28,193.239,23.096999999999998,32.468 -2020-12-25 07:45:00,69.33,196.55,23.096999999999998,32.468 -2020-12-25 08:00:00,71.62,200.118,30.849,32.468 -2020-12-25 08:15:00,74.42,202.94400000000002,30.849,32.468 -2020-12-25 08:30:00,76.82,205.296,30.849,32.468 -2020-12-25 08:45:00,78.68,205.364,30.849,32.468 -2020-12-25 09:00:00,81.32,200.285,30.03,32.468 -2020-12-25 09:15:00,83.82,198.69799999999998,30.03,32.468 -2020-12-25 09:30:00,85.11,196.558,30.03,32.468 -2020-12-25 09:45:00,87.16,193.717,30.03,32.468 -2020-12-25 10:00:00,87.91,191.055,27.625999999999998,32.468 -2020-12-25 10:15:00,89.23,187.868,27.625999999999998,32.468 -2020-12-25 10:30:00,91.55,186.21,27.625999999999998,32.468 -2020-12-25 10:45:00,93.17,183.923,27.625999999999998,32.468 -2020-12-25 11:00:00,94.65,183.926,29.03,32.468 -2020-12-25 11:15:00,98.58,181.39700000000002,29.03,32.468 -2020-12-25 11:30:00,100.6,180.172,29.03,32.468 -2020-12-25 11:45:00,100.05,178.365,29.03,32.468 -2020-12-25 12:00:00,95.72,172.512,25.93,32.468 -2020-12-25 12:15:00,92.54,172.11900000000003,25.93,32.468 -2020-12-25 12:30:00,88.4,171.47,25.93,32.468 -2020-12-25 12:45:00,84.51,171.19299999999998,25.93,32.468 -2020-12-25 13:00:00,81.0,169.72099999999998,16.363,32.468 -2020-12-25 13:15:00,80.85,170.907,16.363,32.468 -2020-12-25 13:30:00,80.27,169.92700000000002,16.363,32.468 -2020-12-25 13:45:00,80.22,169.51,16.363,32.468 -2020-12-25 14:00:00,77.57,168.797,14.370999999999999,32.468 -2020-12-25 14:15:00,78.09,169.671,14.370999999999999,32.468 -2020-12-25 14:30:00,77.16,170.231,14.370999999999999,32.468 -2020-12-25 14:45:00,76.87,170.32299999999998,14.370999999999999,32.468 -2020-12-25 15:00:00,77.34,170.106,19.031,32.468 -2020-12-25 15:15:00,76.88,171.554,19.031,32.468 -2020-12-25 15:30:00,76.93,174.22,19.031,32.468 -2020-12-25 15:45:00,78.2,176.516,19.031,32.468 -2020-12-25 16:00:00,81.38,178.011,24.998,32.468 -2020-12-25 16:15:00,82.28,179.81900000000002,24.998,32.468 -2020-12-25 16:30:00,86.93,182.61,24.998,32.468 -2020-12-25 16:45:00,86.17,184.921,24.998,32.468 -2020-12-25 17:00:00,89.63,187.218,35.976,32.468 -2020-12-25 17:15:00,87.98,189.021,35.976,32.468 -2020-12-25 17:30:00,89.65,189.84099999999998,35.976,32.468 -2020-12-25 17:45:00,90.91,191.3,35.976,32.468 -2020-12-25 18:00:00,91.63,192.454,41.513000000000005,32.468 -2020-12-25 18:15:00,90.25,193.15400000000002,41.513000000000005,32.468 -2020-12-25 18:30:00,91.06,191.364,41.513000000000005,32.468 -2020-12-25 18:45:00,91.59,189.735,41.513000000000005,32.468 -2020-12-25 19:00:00,90.53,192.299,45.607,32.468 -2020-12-25 19:15:00,89.44,190.046,45.607,32.468 -2020-12-25 19:30:00,88.41,188.205,45.607,32.468 -2020-12-25 19:45:00,87.49,185.03900000000002,45.607,32.468 -2020-12-25 20:00:00,85.33,183.676,43.372,32.468 -2020-12-25 20:15:00,84.64,180.94400000000002,43.372,32.468 -2020-12-25 20:30:00,83.34,177.888,43.372,32.468 -2020-12-25 20:45:00,82.68,174.28599999999997,43.372,32.468 -2020-12-25 21:00:00,80.07,172.31599999999997,39.458,32.468 -2020-12-25 21:15:00,79.28,170.345,39.458,32.468 -2020-12-25 21:30:00,78.47,169.702,39.458,32.468 -2020-12-25 21:45:00,77.69,168.477,39.458,32.468 -2020-12-25 22:00:00,74.04,163.124,40.15,32.468 -2020-12-25 22:15:00,75.14,159.202,40.15,32.468 -2020-12-25 22:30:00,71.33,154.743,40.15,32.468 -2020-12-25 22:45:00,71.18,151.332,40.15,32.468 -2020-12-25 23:00:00,67.24,144.92,33.876999999999995,32.468 -2020-12-25 23:15:00,66.92,141.184,33.876999999999995,32.468 -2020-12-25 23:30:00,63.35,139.3,33.876999999999995,32.468 -2020-12-25 23:45:00,62.32,136.632,33.876999999999995,32.468 -2020-12-26 00:00:00,57.9,114.9,32.311,32.468 -2020-12-26 00:15:00,58.19,110.01,32.311,32.468 -2020-12-26 00:30:00,57.69,111.57700000000001,32.311,32.468 -2020-12-26 00:45:00,58.18,114.064,32.311,32.468 -2020-12-26 01:00:00,54.2,116.675,25.569000000000003,32.468 -2020-12-26 01:15:00,53.83,118.415,25.569000000000003,32.468 -2020-12-26 01:30:00,54.04,118.73299999999999,25.569000000000003,32.468 -2020-12-26 01:45:00,53.35,118.766,25.569000000000003,32.468 -2020-12-26 02:00:00,50.27,120.48200000000001,21.038,32.468 -2020-12-26 02:15:00,50.84,120.59299999999999,21.038,32.468 -2020-12-26 02:30:00,50.18,120.984,21.038,32.468 -2020-12-26 02:45:00,49.92,123.348,21.038,32.468 -2020-12-26 03:00:00,50.44,125.69200000000001,19.865,32.468 -2020-12-26 03:15:00,51.13,126.073,19.865,32.468 -2020-12-26 03:30:00,51.68,127.77799999999999,19.865,32.468 -2020-12-26 03:45:00,52.19,129.064,19.865,32.468 -2020-12-26 04:00:00,52.65,137.464,19.076,32.468 -2020-12-26 04:15:00,51.74,145.872,19.076,32.468 -2020-12-26 04:30:00,52.08,146.203,19.076,32.468 -2020-12-26 04:45:00,52.91,147.342,19.076,32.468 -2020-12-26 05:00:00,52.87,161.06799999999998,20.174,32.468 -2020-12-26 05:15:00,54.46,170.08900000000003,20.174,32.468 -2020-12-26 05:30:00,54.44,167.12099999999998,20.174,32.468 -2020-12-26 05:45:00,56.77,164.81099999999998,20.174,32.468 -2020-12-26 06:00:00,56.75,179.74099999999999,19.854,32.468 -2020-12-26 06:15:00,60.38,198.097,19.854,32.468 -2020-12-26 06:30:00,58.83,193.49,19.854,32.468 -2020-12-26 06:45:00,59.86,188.3,19.854,32.468 -2020-12-26 07:00:00,62.28,186.122,23.096999999999998,32.468 -2020-12-26 07:15:00,63.68,189.696,23.096999999999998,32.468 -2020-12-26 07:30:00,64.23,193.442,23.096999999999998,32.468 -2020-12-26 07:45:00,69.19,196.74200000000002,23.096999999999998,32.468 -2020-12-26 08:00:00,69.13,200.31099999999998,28.963,32.468 -2020-12-26 08:15:00,74.4,203.125,28.963,32.468 -2020-12-26 08:30:00,73.12,205.46400000000003,28.963,32.468 -2020-12-26 08:45:00,75.14,205.50900000000001,28.963,32.468 -2020-12-26 09:00:00,78.03,200.41099999999997,28.194000000000003,32.468 -2020-12-26 09:15:00,80.29,198.832,28.194000000000003,32.468 -2020-12-26 09:30:00,83.3,196.702,28.194000000000003,32.468 -2020-12-26 09:45:00,81.36,193.852,28.194000000000003,32.468 -2020-12-26 10:00:00,86.11,191.188,25.936999999999998,32.468 -2020-12-26 10:15:00,85.18,187.99400000000003,25.936999999999998,32.468 -2020-12-26 10:30:00,89.16,186.321,25.936999999999998,32.468 -2020-12-26 10:45:00,88.48,184.033,25.936999999999998,32.468 -2020-12-26 11:00:00,92.1,184.018,27.256,32.468 -2020-12-26 11:15:00,93.15,181.483,27.256,32.468 -2020-12-26 11:30:00,95.06,180.26,27.256,32.468 -2020-12-26 11:45:00,97.74,178.452,27.256,32.468 -2020-12-26 12:00:00,92.69,172.60299999999998,24.345,32.468 -2020-12-26 12:15:00,92.99,172.22400000000002,24.345,32.468 -2020-12-26 12:30:00,85.85,171.58,24.345,32.468 -2020-12-26 12:45:00,84.15,171.30599999999998,24.345,32.468 -2020-12-26 13:00:00,84.26,169.81599999999997,15.363,32.468 -2020-12-26 13:15:00,80.45,170.998,15.363,32.468 -2020-12-26 13:30:00,78.78,170.00900000000001,15.363,32.468 -2020-12-26 13:45:00,79.31,169.584,15.363,32.468 -2020-12-26 14:00:00,76.77,168.87099999999998,13.492,32.468 -2020-12-26 14:15:00,76.41,169.743,13.492,32.468 -2020-12-26 14:30:00,76.48,170.31900000000002,13.492,32.468 -2020-12-26 14:45:00,77.52,170.423,13.492,32.468 -2020-12-26 15:00:00,78.64,170.22299999999998,17.868,32.468 -2020-12-26 15:15:00,80.39,171.66,17.868,32.468 -2020-12-26 15:30:00,77.92,174.332,17.868,32.468 -2020-12-26 15:45:00,79.11,176.623,17.868,32.468 -2020-12-26 16:00:00,86.11,178.118,23.47,32.468 -2020-12-26 16:15:00,83.6,179.93900000000002,23.47,32.468 -2020-12-26 16:30:00,87.85,182.736,23.47,32.468 -2020-12-26 16:45:00,86.53,185.065,23.47,32.468 -2020-12-26 17:00:00,89.38,187.34400000000002,33.777,32.468 -2020-12-26 17:15:00,90.4,189.174,33.777,32.468 -2020-12-26 17:30:00,94.34,190.016,33.777,32.468 -2020-12-26 17:45:00,92.08,191.488,33.777,32.468 -2020-12-26 18:00:00,93.83,192.66099999999997,38.975,32.468 -2020-12-26 18:15:00,92.14,193.35299999999998,38.975,32.468 -2020-12-26 18:30:00,92.33,191.56799999999998,38.975,32.468 -2020-12-26 18:45:00,93.19,189.954,38.975,32.468 -2020-12-26 19:00:00,91.96,192.495,42.818999999999996,32.468 -2020-12-26 19:15:00,91.71,190.238,42.818999999999996,32.468 -2020-12-26 19:30:00,90.43,188.393,42.818999999999996,32.468 -2020-12-26 19:45:00,90.65,185.217,42.818999999999996,32.468 -2020-12-26 20:00:00,86.8,183.845,43.372,32.468 -2020-12-26 20:15:00,86.59,181.109,43.372,32.468 -2020-12-26 20:30:00,84.5,178.03799999999998,43.372,32.468 -2020-12-26 20:45:00,83.84,174.453,43.372,32.468 -2020-12-26 21:00:00,79.9,172.46599999999998,39.458,32.468 -2020-12-26 21:15:00,79.31,170.479,39.458,32.468 -2020-12-26 21:30:00,79.36,169.83700000000002,39.458,32.468 -2020-12-26 21:45:00,81.72,168.62400000000002,39.458,32.468 -2020-12-26 22:00:00,74.52,163.27200000000002,40.15,32.468 -2020-12-26 22:15:00,74.0,159.359,40.15,32.468 -2020-12-26 22:30:00,72.07,154.929,40.15,32.468 -2020-12-26 22:45:00,70.15,151.52700000000002,40.15,32.468 -2020-12-26 23:00:00,66.32,145.092,33.876999999999995,32.468 -2020-12-26 23:15:00,66.62,141.359,33.876999999999995,32.468 -2020-12-26 23:30:00,63.94,139.489,33.876999999999995,32.468 -2020-12-26 23:45:00,64.95,136.814,33.876999999999995,32.468 -2020-12-27 00:00:00,56.66,115.09299999999999,35.232,32.468 -2020-12-27 00:15:00,57.29,110.179,35.232,32.468 -2020-12-27 00:30:00,56.01,111.735,35.232,32.468 -2020-12-27 00:45:00,54.37,114.205,35.232,32.468 -2020-12-27 01:00:00,52.25,116.833,31.403000000000002,32.468 -2020-12-27 01:15:00,53.32,118.569,31.403000000000002,32.468 -2020-12-27 01:30:00,52.46,118.88799999999999,31.403000000000002,32.468 -2020-12-27 01:45:00,51.48,118.911,31.403000000000002,32.468 -2020-12-27 02:00:00,49.93,120.641,30.69,32.468 -2020-12-27 02:15:00,51.57,120.75299999999999,30.69,32.468 -2020-12-27 02:30:00,50.82,121.15,30.69,32.468 -2020-12-27 02:45:00,50.77,123.514,30.69,32.468 -2020-12-27 03:00:00,49.34,125.84899999999999,29.516,32.468 -2020-12-27 03:15:00,50.62,126.25200000000001,29.516,32.468 -2020-12-27 03:30:00,51.39,127.959,29.516,32.468 -2020-12-27 03:45:00,51.75,129.248,29.516,32.468 -2020-12-27 04:00:00,50.79,137.624,29.148000000000003,32.468 -2020-12-27 04:15:00,51.03,146.02700000000002,29.148000000000003,32.468 -2020-12-27 04:30:00,51.16,146.35299999999998,29.148000000000003,32.468 -2020-12-27 04:45:00,52.11,147.49,29.148000000000003,32.468 -2020-12-27 05:00:00,52.51,161.184,28.706,32.468 -2020-12-27 05:15:00,53.68,170.172,28.706,32.468 -2020-12-27 05:30:00,52.91,167.213,28.706,32.468 -2020-12-27 05:45:00,54.55,164.921,28.706,32.468 -2020-12-27 06:00:00,55.49,179.87400000000002,28.771,32.468 -2020-12-27 06:15:00,55.76,198.235,28.771,32.468 -2020-12-27 06:30:00,56.15,193.65400000000002,28.771,32.468 -2020-12-27 06:45:00,57.92,188.49599999999998,28.771,32.468 -2020-12-27 07:00:00,60.11,186.328,31.39,32.468 -2020-12-27 07:15:00,61.04,189.898,31.39,32.468 -2020-12-27 07:30:00,65.58,193.636,31.39,32.468 -2020-12-27 07:45:00,65.21,196.923,31.39,32.468 -2020-12-27 08:00:00,66.03,200.493,34.972,32.468 -2020-12-27 08:15:00,66.67,203.295,34.972,32.468 -2020-12-27 08:30:00,68.78,205.62,34.972,32.468 -2020-12-27 08:45:00,72.45,205.642,34.972,32.468 -2020-12-27 09:00:00,73.81,200.525,36.709,32.468 -2020-12-27 09:15:00,75.71,198.952,36.709,32.468 -2020-12-27 09:30:00,75.67,196.835,36.709,32.468 -2020-12-27 09:45:00,76.59,193.976,36.709,32.468 -2020-12-27 10:00:00,77.56,191.308,35.812,32.468 -2020-12-27 10:15:00,79.49,188.108,35.812,32.468 -2020-12-27 10:30:00,81.12,186.422,35.812,32.468 -2020-12-27 10:45:00,83.85,184.13299999999998,35.812,32.468 -2020-12-27 11:00:00,84.02,184.101,36.746,32.468 -2020-12-27 11:15:00,86.47,181.56,36.746,32.468 -2020-12-27 11:30:00,87.71,180.338,36.746,32.468 -2020-12-27 11:45:00,88.37,178.52900000000002,36.746,32.468 -2020-12-27 12:00:00,87.6,172.685,35.048,32.468 -2020-12-27 12:15:00,85.66,172.321,35.048,32.468 -2020-12-27 12:30:00,83.94,171.68,35.048,32.468 -2020-12-27 12:45:00,84.23,171.40900000000002,35.048,32.468 -2020-12-27 13:00:00,81.23,169.90400000000002,29.987,32.468 -2020-12-27 13:15:00,79.67,171.08,29.987,32.468 -2020-12-27 13:30:00,78.24,170.083,29.987,32.468 -2020-12-27 13:45:00,77.15,169.65,29.987,32.468 -2020-12-27 14:00:00,73.27,168.938,27.21,32.468 -2020-12-27 14:15:00,75.35,169.808,27.21,32.468 -2020-12-27 14:30:00,74.83,170.398,27.21,32.468 -2020-12-27 14:45:00,74.81,170.515,27.21,32.468 -2020-12-27 15:00:00,75.04,170.331,27.726999999999997,32.468 -2020-12-27 15:15:00,76.57,171.757,27.726999999999997,32.468 -2020-12-27 15:30:00,77.1,174.43400000000003,27.726999999999997,32.468 -2020-12-27 15:45:00,79.95,176.72,27.726999999999997,32.468 -2020-12-27 16:00:00,85.35,178.213,32.23,32.468 -2020-12-27 16:15:00,85.01,180.049,32.23,32.468 -2020-12-27 16:30:00,85.83,182.852,32.23,32.468 -2020-12-27 16:45:00,87.36,185.197,32.23,32.468 -2020-12-27 17:00:00,89.42,187.457,42.016999999999996,32.468 -2020-12-27 17:15:00,89.72,189.315,42.016999999999996,32.468 -2020-12-27 17:30:00,91.66,190.179,42.016999999999996,32.468 -2020-12-27 17:45:00,92.42,191.665,42.016999999999996,32.468 -2020-12-27 18:00:00,93.13,192.858,49.338,32.468 -2020-12-27 18:15:00,92.27,193.541,49.338,32.468 -2020-12-27 18:30:00,93.04,191.763,49.338,32.468 -2020-12-27 18:45:00,92.9,190.16299999999998,49.338,32.468 -2020-12-27 19:00:00,91.41,192.68,52.369,32.468 -2020-12-27 19:15:00,90.74,190.42,52.369,32.468 -2020-12-27 19:30:00,89.58,188.57299999999998,52.369,32.468 -2020-12-27 19:45:00,88.24,185.388,52.369,32.468 -2020-12-27 20:00:00,84.87,184.005,50.405,32.468 -2020-12-27 20:15:00,84.15,181.267,50.405,32.468 -2020-12-27 20:30:00,82.18,178.18099999999998,50.405,32.468 -2020-12-27 20:45:00,80.95,174.613,50.405,32.468 -2020-12-27 21:00:00,77.99,172.61,46.235,32.468 -2020-12-27 21:15:00,79.18,170.606,46.235,32.468 -2020-12-27 21:30:00,78.7,169.965,46.235,32.468 -2020-12-27 21:45:00,80.23,168.764,46.235,32.468 -2020-12-27 22:00:00,76.73,163.412,46.861000000000004,32.468 -2020-12-27 22:15:00,73.06,159.51,46.861000000000004,32.468 -2020-12-27 22:30:00,70.7,155.107,46.861000000000004,32.468 -2020-12-27 22:45:00,70.0,151.71200000000002,46.861000000000004,32.468 -2020-12-27 23:00:00,65.04,145.257,41.302,32.468 -2020-12-27 23:15:00,65.95,141.525,41.302,32.468 -2020-12-27 23:30:00,64.23,139.66899999999998,41.302,32.468 -2020-12-27 23:45:00,63.33,136.99,41.302,32.468 -2020-12-28 00:00:00,57.03,119.344,37.164,32.468 -2020-12-28 00:15:00,57.21,117.274,37.164,32.468 -2020-12-28 00:30:00,56.31,118.925,37.164,32.468 -2020-12-28 00:45:00,56.35,120.848,37.164,32.468 -2020-12-28 01:00:00,52.26,123.51899999999999,34.994,32.468 -2020-12-28 01:15:00,53.0,124.74799999999999,34.994,32.468 -2020-12-28 01:30:00,52.53,125.137,34.994,32.468 -2020-12-28 01:45:00,52.32,125.25399999999999,34.994,32.468 -2020-12-28 02:00:00,51.03,126.993,34.571,32.468 -2020-12-28 02:15:00,52.03,128.454,34.571,32.468 -2020-12-28 02:30:00,50.99,129.18200000000002,34.571,32.468 -2020-12-28 02:45:00,50.55,130.94799999999998,34.571,32.468 -2020-12-28 03:00:00,49.6,134.501,33.934,32.468 -2020-12-28 03:15:00,51.33,136.524,33.934,32.468 -2020-12-28 03:30:00,50.91,138.001,33.934,32.468 -2020-12-28 03:45:00,51.45,138.749,33.934,32.468 -2020-12-28 04:00:00,51.82,151.371,34.107,32.468 -2020-12-28 04:15:00,52.15,163.84,34.107,32.468 -2020-12-28 04:30:00,53.03,166.226,34.107,32.468 -2020-12-28 04:45:00,54.7,167.53099999999998,34.107,32.468 -2020-12-28 05:00:00,57.21,196.475,39.575,32.468 -2020-12-28 05:15:00,58.21,225.044,39.575,32.468 -2020-12-28 05:30:00,58.82,222.28799999999998,39.575,32.468 -2020-12-28 05:45:00,60.69,214.507,39.575,32.468 -2020-12-28 06:00:00,63.74,211.99599999999998,56.156000000000006,32.468 -2020-12-28 06:15:00,64.22,215.868,56.156000000000006,32.468 -2020-12-28 06:30:00,66.48,219.101,56.156000000000006,32.468 -2020-12-28 06:45:00,67.97,222.567,56.156000000000006,32.468 -2020-12-28 07:00:00,71.66,222.68099999999998,67.926,32.468 -2020-12-28 07:15:00,73.71,227.53,67.926,32.468 -2020-12-28 07:30:00,73.74,230.484,67.926,32.468 -2020-12-28 07:45:00,76.15,231.332,67.926,32.468 -2020-12-28 08:00:00,78.92,230.185,72.58,32.468 -2020-12-28 08:15:00,77.89,230.88400000000001,72.58,32.468 -2020-12-28 08:30:00,79.51,229.27,72.58,32.468 -2020-12-28 08:45:00,81.98,226.108,72.58,32.468 -2020-12-28 09:00:00,84.91,219.989,66.984,32.468 -2020-12-28 09:15:00,86.68,215.032,66.984,32.468 -2020-12-28 09:30:00,86.35,211.93599999999998,66.984,32.468 -2020-12-28 09:45:00,87.57,209.25400000000002,66.984,32.468 -2020-12-28 10:00:00,88.75,205.554,63.158,32.468 -2020-12-28 10:15:00,89.35,202.032,63.158,32.468 -2020-12-28 10:30:00,90.53,199.482,63.158,32.468 -2020-12-28 10:45:00,92.46,197.829,63.158,32.468 -2020-12-28 11:00:00,92.51,195.31900000000002,61.141000000000005,32.468 -2020-12-28 11:15:00,93.89,194.49599999999998,61.141000000000005,32.468 -2020-12-28 11:30:00,95.76,194.61599999999999,61.141000000000005,32.468 -2020-12-28 11:45:00,98.55,192.44299999999998,61.141000000000005,32.468 -2020-12-28 12:00:00,96.46,188.148,57.961000000000006,32.468 -2020-12-28 12:15:00,96.89,187.805,57.961000000000006,32.468 -2020-12-28 12:30:00,94.61,187.355,57.961000000000006,32.468 -2020-12-28 12:45:00,93.99,188.53,57.961000000000006,32.468 -2020-12-28 13:00:00,91.48,187.59599999999998,56.843,32.468 -2020-12-28 13:15:00,89.62,187.41299999999998,56.843,32.468 -2020-12-28 13:30:00,87.6,185.91299999999998,56.843,32.468 -2020-12-28 13:45:00,89.12,185.547,56.843,32.468 -2020-12-28 14:00:00,86.23,184.21599999999998,55.992,32.468 -2020-12-28 14:15:00,84.24,184.503,55.992,32.468 -2020-12-28 14:30:00,84.27,184.58700000000002,55.992,32.468 -2020-12-28 14:45:00,84.15,184.78400000000002,55.992,32.468 -2020-12-28 15:00:00,83.99,186.304,57.523,32.468 -2020-12-28 15:15:00,84.98,186.33,57.523,32.468 -2020-12-28 15:30:00,82.61,188.26,57.523,32.468 -2020-12-28 15:45:00,84.31,190.09599999999998,57.523,32.468 -2020-12-28 16:00:00,90.69,191.83599999999998,59.471000000000004,32.468 -2020-12-28 16:15:00,89.04,192.96099999999998,59.471000000000004,32.468 -2020-12-28 16:30:00,91.46,194.821,59.471000000000004,32.468 -2020-12-28 16:45:00,92.1,196.054,59.471000000000004,32.468 -2020-12-28 17:00:00,95.79,198.107,65.066,32.468 -2020-12-28 17:15:00,96.36,199.09599999999998,65.066,32.468 -2020-12-28 17:30:00,94.64,199.445,65.066,32.468 -2020-12-28 17:45:00,94.08,199.503,65.066,32.468 -2020-12-28 18:00:00,92.03,201.101,69.581,32.468 -2020-12-28 18:15:00,92.63,199.59799999999998,69.581,32.468 -2020-12-28 18:30:00,92.68,198.426,69.581,32.468 -2020-12-28 18:45:00,95.26,197.632,69.581,32.468 -2020-12-28 19:00:00,91.26,198.58,73.771,32.468 -2020-12-28 19:15:00,88.66,195.235,73.771,32.468 -2020-12-28 19:30:00,89.79,193.85,73.771,32.468 -2020-12-28 19:45:00,85.86,189.838,73.771,32.468 -2020-12-28 20:00:00,81.83,186.13400000000001,65.035,32.468 -2020-12-28 20:15:00,80.18,181.06099999999998,65.035,32.468 -2020-12-28 20:30:00,78.48,176.19099999999997,65.035,32.468 -2020-12-28 20:45:00,77.08,174.206,65.035,32.468 -2020-12-28 21:00:00,73.88,172.676,58.7,32.468 -2020-12-28 21:15:00,73.68,169.542,58.7,32.468 -2020-12-28 21:30:00,72.87,168.12400000000002,58.7,32.468 -2020-12-28 21:45:00,72.61,166.44099999999997,58.7,32.468 -2020-12-28 22:00:00,69.98,158.253,53.888000000000005,32.468 -2020-12-28 22:15:00,69.76,153.156,53.888000000000005,32.468 -2020-12-28 22:30:00,68.69,139.464,53.888000000000005,32.468 -2020-12-28 22:45:00,68.64,131.43200000000002,53.888000000000005,32.468 -2020-12-28 23:00:00,64.36,125.7,45.501999999999995,32.468 -2020-12-28 23:15:00,66.25,124.46799999999999,45.501999999999995,32.468 -2020-12-28 23:30:00,64.12,125.277,45.501999999999995,32.468 -2020-12-28 23:45:00,64.06,125.116,45.501999999999995,32.468 -2020-12-29 00:00:00,57.18,118.78299999999999,43.537,32.468 -2020-12-29 00:15:00,56.17,118.086,43.537,32.468 -2020-12-29 00:30:00,56.18,118.84700000000001,43.537,32.468 -2020-12-29 00:45:00,56.31,119.844,43.537,32.468 -2020-12-29 01:00:00,53.79,122.324,41.854,32.468 -2020-12-29 01:15:00,53.88,123.124,41.854,32.468 -2020-12-29 01:30:00,50.49,123.676,41.854,32.468 -2020-12-29 01:45:00,53.7,124.057,41.854,32.468 -2020-12-29 02:00:00,51.98,125.79,40.321,32.468 -2020-12-29 02:15:00,53.31,127.184,40.321,32.468 -2020-12-29 02:30:00,53.66,127.334,40.321,32.468 -2020-12-29 02:45:00,53.8,129.121,40.321,32.468 -2020-12-29 03:00:00,53.3,131.494,39.632,32.468 -2020-12-29 03:15:00,58.73,132.754,39.632,32.468 -2020-12-29 03:30:00,61.45,134.694,39.632,32.468 -2020-12-29 03:45:00,56.91,135.592,39.632,32.468 -2020-12-29 04:00:00,58.6,147.961,40.183,32.468 -2020-12-29 04:15:00,58.92,160.092,40.183,32.468 -2020-12-29 04:30:00,58.73,162.172,40.183,32.468 -2020-12-29 04:45:00,60.76,164.65200000000002,40.183,32.468 -2020-12-29 05:00:00,65.7,198.412,43.945,32.468 -2020-12-29 05:15:00,68.23,226.771,43.945,32.468 -2020-12-29 05:30:00,72.46,222.56099999999998,43.945,32.468 -2020-12-29 05:45:00,78.0,214.78,43.945,32.468 -2020-12-29 06:00:00,86.13,211.19,56.048,32.468 -2020-12-29 06:15:00,90.88,216.63400000000001,56.048,32.468 -2020-12-29 06:30:00,98.39,219.25900000000001,56.048,32.468 -2020-12-29 06:45:00,101.09,222.36700000000002,56.048,32.468 -2020-12-29 07:00:00,109.02,222.32,65.74,32.468 -2020-12-29 07:15:00,110.78,227.003,65.74,32.468 -2020-12-29 07:30:00,111.89,229.425,65.74,32.468 -2020-12-29 07:45:00,116.47,230.43099999999998,65.74,32.468 -2020-12-29 08:00:00,119.28,229.387,72.757,32.468 -2020-12-29 08:15:00,119.18,229.077,72.757,32.468 -2020-12-29 08:30:00,121.46,227.28400000000002,72.757,32.468 -2020-12-29 08:45:00,123.85,223.81599999999997,72.757,32.468 -2020-12-29 09:00:00,126.31,216.889,67.692,32.468 -2020-12-29 09:15:00,127.18,213.46900000000002,67.692,32.468 -2020-12-29 09:30:00,129.54,211.058,67.692,32.468 -2020-12-29 09:45:00,127.09,208.2,67.692,32.468 -2020-12-29 10:00:00,130.14,203.892,63.506,32.468 -2020-12-29 10:15:00,131.8,199.34099999999998,63.506,32.468 -2020-12-29 10:30:00,131.24,196.954,63.506,32.468 -2020-12-29 10:45:00,133.38,195.604,63.506,32.468 -2020-12-29 11:00:00,132.11,194.502,60.758,32.468 -2020-12-29 11:15:00,132.81,193.368,60.758,32.468 -2020-12-29 11:30:00,132.74,192.33700000000002,60.758,32.468 -2020-12-29 11:45:00,132.51,190.82,60.758,32.468 -2020-12-29 12:00:00,133.01,185.213,57.519,32.468 -2020-12-29 12:15:00,132.94,184.5,57.519,32.468 -2020-12-29 12:30:00,132.61,184.77200000000002,57.519,32.468 -2020-12-29 12:45:00,131.32,185.69400000000002,57.519,32.468 -2020-12-29 13:00:00,129.11,184.345,56.46,32.468 -2020-12-29 13:15:00,129.11,183.888,56.46,32.468 -2020-12-29 13:30:00,128.11,183.49900000000002,56.46,32.468 -2020-12-29 13:45:00,128.44,183.268,56.46,32.468 -2020-12-29 14:00:00,129.73,182.227,56.207,32.468 -2020-12-29 14:15:00,128.01,182.65400000000002,56.207,32.468 -2020-12-29 14:30:00,127.57,183.363,56.207,32.468 -2020-12-29 14:45:00,128.05,183.468,56.207,32.468 -2020-12-29 15:00:00,125.11,184.584,57.391999999999996,32.468 -2020-12-29 15:15:00,124.05,184.94799999999998,57.391999999999996,32.468 -2020-12-29 15:30:00,122.28,187.088,57.391999999999996,32.468 -2020-12-29 15:45:00,122.29,188.547,57.391999999999996,32.468 -2020-12-29 16:00:00,126.09,190.58,59.955,32.468 -2020-12-29 16:15:00,127.33,192.178,59.955,32.468 -2020-12-29 16:30:00,131.25,194.65200000000002,59.955,32.468 -2020-12-29 16:45:00,132.28,196.199,59.955,32.468 -2020-12-29 17:00:00,135.14,198.761,67.063,32.468 -2020-12-29 17:15:00,134.64,199.817,67.063,32.468 -2020-12-29 17:30:00,135.54,200.817,67.063,32.468 -2020-12-29 17:45:00,135.22,200.755,67.063,32.468 -2020-12-29 18:00:00,135.98,202.24900000000002,71.477,32.468 -2020-12-29 18:15:00,133.12,200.295,71.477,32.468 -2020-12-29 18:30:00,132.74,198.825,71.477,32.468 -2020-12-29 18:45:00,132.76,198.80900000000003,71.477,32.468 -2020-12-29 19:00:00,129.1,199.782,74.32,32.468 -2020-12-29 19:15:00,131.66,196.169,74.32,32.468 -2020-12-29 19:30:00,131.57,194.13,74.32,32.468 -2020-12-29 19:45:00,134.28,190.15400000000002,74.32,32.468 -2020-12-29 20:00:00,124.16,186.60299999999998,66.157,32.468 -2020-12-29 20:15:00,118.77,180.87400000000002,66.157,32.468 -2020-12-29 20:30:00,114.09,176.968,66.157,32.468 -2020-12-29 20:45:00,113.21,174.458,66.157,32.468 -2020-12-29 21:00:00,104.2,172.25900000000001,59.806000000000004,32.468 -2020-12-29 21:15:00,110.79,169.947,59.806000000000004,32.468 -2020-12-29 21:30:00,106.78,167.829,59.806000000000004,32.468 -2020-12-29 21:45:00,106.31,166.38299999999998,59.806000000000004,32.468 -2020-12-29 22:00:00,95.44,159.85399999999998,54.785,32.468 -2020-12-29 22:15:00,92.96,154.50799999999998,54.785,32.468 -2020-12-29 22:30:00,85.11,140.935,54.785,32.468 -2020-12-29 22:45:00,86.87,133.178,54.785,32.468 -2020-12-29 23:00:00,82.77,127.431,47.176,32.468 -2020-12-29 23:15:00,84.86,125.367,47.176,32.468 -2020-12-29 23:30:00,77.52,125.84200000000001,47.176,32.468 -2020-12-29 23:45:00,78.36,125.257,47.176,32.468 -2020-12-30 00:00:00,81.02,118.954,43.42,32.468 -2020-12-30 00:15:00,81.82,118.23299999999999,43.42,32.468 -2020-12-30 00:30:00,81.73,118.985,43.42,32.468 -2020-12-30 00:45:00,76.13,119.964,43.42,32.468 -2020-12-30 01:00:00,70.28,122.458,40.869,32.468 -2020-12-30 01:15:00,74.3,123.25299999999999,40.869,32.468 -2020-12-30 01:30:00,77.22,123.807,40.869,32.468 -2020-12-30 01:45:00,76.85,124.179,40.869,32.468 -2020-12-30 02:00:00,73.1,125.92399999999999,39.541,32.468 -2020-12-30 02:15:00,70.43,127.319,39.541,32.468 -2020-12-30 02:30:00,71.98,127.475,39.541,32.468 -2020-12-30 02:45:00,76.52,129.263,39.541,32.468 -2020-12-30 03:00:00,75.41,131.627,39.052,32.468 -2020-12-30 03:15:00,74.83,132.908,39.052,32.468 -2020-12-30 03:30:00,72.89,134.84799999999998,39.052,32.468 -2020-12-30 03:45:00,79.01,135.749,39.052,32.468 -2020-12-30 04:00:00,76.82,148.096,40.36,32.468 -2020-12-30 04:15:00,72.95,160.222,40.36,32.468 -2020-12-30 04:30:00,72.14,162.297,40.36,32.468 -2020-12-30 04:45:00,80.94,164.775,40.36,32.468 -2020-12-30 05:00:00,88.48,198.503,43.133,32.468 -2020-12-30 05:15:00,91.18,226.833,43.133,32.468 -2020-12-30 05:30:00,90.88,222.62900000000002,43.133,32.468 -2020-12-30 05:45:00,93.94,214.865,43.133,32.468 -2020-12-30 06:00:00,101.26,211.298,54.953,32.468 -2020-12-30 06:15:00,106.96,216.748,54.953,32.468 -2020-12-30 06:30:00,112.28,219.395,54.953,32.468 -2020-12-30 06:45:00,115.14,222.53400000000002,54.953,32.468 -2020-12-30 07:00:00,123.05,222.49900000000002,66.566,32.468 -2020-12-30 07:15:00,123.6,227.174,66.566,32.468 -2020-12-30 07:30:00,126.82,229.58599999999998,66.566,32.468 -2020-12-30 07:45:00,128.84,230.578,66.566,32.468 -2020-12-30 08:00:00,131.65,229.533,72.902,32.468 -2020-12-30 08:15:00,130.78,229.21,72.902,32.468 -2020-12-30 08:30:00,132.01,227.4,72.902,32.468 -2020-12-30 08:45:00,132.85,223.91099999999997,72.902,32.468 -2020-12-30 09:00:00,134.02,216.967,68.465,32.468 -2020-12-30 09:15:00,135.31,213.55200000000002,68.465,32.468 -2020-12-30 09:30:00,136.11,211.15400000000002,68.465,32.468 -2020-12-30 09:45:00,137.25,208.28900000000002,68.465,32.468 -2020-12-30 10:00:00,135.85,203.97799999999998,63.625,32.468 -2020-12-30 10:15:00,138.58,199.425,63.625,32.468 -2020-12-30 10:30:00,138.23,197.024,63.625,32.468 -2020-12-30 10:45:00,136.57,195.674,63.625,32.468 -2020-12-30 11:00:00,133.24,194.555,61.628,32.468 -2020-12-30 11:15:00,126.44,193.417,61.628,32.468 -2020-12-30 11:30:00,130.71,192.387,61.628,32.468 -2020-12-30 11:45:00,129.54,190.87099999999998,61.628,32.468 -2020-12-30 12:00:00,125.24,185.268,58.708999999999996,32.468 -2020-12-30 12:15:00,124.69,184.571,58.708999999999996,32.468 -2020-12-30 12:30:00,123.95,184.84400000000002,58.708999999999996,32.468 -2020-12-30 12:45:00,129.68,185.769,58.708999999999996,32.468 -2020-12-30 13:00:00,133.73,184.407,57.373000000000005,32.468 -2020-12-30 13:15:00,136.53,183.94400000000002,57.373000000000005,32.468 -2020-12-30 13:30:00,133.6,183.545,57.373000000000005,32.468 -2020-12-30 13:45:00,133.51,183.30599999999998,57.373000000000005,32.468 -2020-12-30 14:00:00,132.59,182.271,57.684,32.468 -2020-12-30 14:15:00,131.17,182.69400000000002,57.684,32.468 -2020-12-30 14:30:00,128.89,183.417,57.684,32.468 -2020-12-30 14:45:00,127.23,183.533,57.684,32.468 -2020-12-30 15:00:00,128.01,184.666,58.03,32.468 -2020-12-30 15:15:00,127.89,185.017,58.03,32.468 -2020-12-30 15:30:00,127.38,187.16,58.03,32.468 -2020-12-30 15:45:00,128.01,188.612,58.03,32.468 -2020-12-30 16:00:00,131.71,190.645,59.97,32.468 -2020-12-30 16:15:00,132.63,192.255,59.97,32.468 -2020-12-30 16:30:00,136.55,194.735,59.97,32.468 -2020-12-30 16:45:00,136.97,196.297,59.97,32.468 -2020-12-30 17:00:00,140.13,198.84099999999998,65.661,32.468 -2020-12-30 17:15:00,138.72,199.924,65.661,32.468 -2020-12-30 17:30:00,136.98,200.94799999999998,65.661,32.468 -2020-12-30 17:45:00,138.66,200.9,65.661,32.468 -2020-12-30 18:00:00,138.81,202.41299999999998,70.96300000000001,32.468 -2020-12-30 18:15:00,137.74,200.455,70.96300000000001,32.468 -2020-12-30 18:30:00,135.58,198.99099999999999,70.96300000000001,32.468 -2020-12-30 18:45:00,136.58,198.989,70.96300000000001,32.468 -2020-12-30 19:00:00,133.41,199.937,74.133,32.468 -2020-12-30 19:15:00,132.16,196.324,74.133,32.468 -2020-12-30 19:30:00,129.15,194.283,74.133,32.468 -2020-12-30 19:45:00,128.43,190.3,74.133,32.468 -2020-12-30 20:00:00,120.97,186.738,65.613,32.468 -2020-12-30 20:15:00,116.68,181.007,65.613,32.468 -2020-12-30 20:30:00,112.92,177.08900000000003,65.613,32.468 -2020-12-30 20:45:00,113.77,174.59599999999998,65.613,32.468 -2020-12-30 21:00:00,108.79,172.378,58.583,32.468 -2020-12-30 21:15:00,113.74,170.051,58.583,32.468 -2020-12-30 21:30:00,111.85,167.933,58.583,32.468 -2020-12-30 21:45:00,107.84,166.5,58.583,32.468 -2020-12-30 22:00:00,97.67,159.97,54.411,32.468 -2020-12-30 22:15:00,98.11,154.636,54.411,32.468 -2020-12-30 22:30:00,96.26,141.086,54.411,32.468 -2020-12-30 22:45:00,94.93,133.338,54.411,32.468 -2020-12-30 23:00:00,90.4,127.57,47.878,32.468 -2020-12-30 23:15:00,82.73,125.509,47.878,32.468 -2020-12-30 23:30:00,77.9,125.99799999999999,47.878,32.468 -2020-12-30 23:45:00,78.08,125.40899999999999,47.878,32.468 -2020-12-31 00:00:00,72.56,119.118,44.513000000000005,32.468 -2020-12-31 00:15:00,75.51,118.375,44.513000000000005,32.468 -2020-12-31 00:30:00,76.2,119.11399999999999,44.513000000000005,32.468 -2020-12-31 00:45:00,79.94,120.07600000000001,44.513000000000005,32.468 -2020-12-31 01:00:00,76.22,122.584,43.169,32.468 -2020-12-31 01:15:00,75.52,123.374,43.169,32.468 -2020-12-31 01:30:00,69.71,123.929,43.169,32.468 -2020-12-31 01:45:00,72.15,124.29,43.169,32.468 -2020-12-31 02:00:00,68.46,126.051,41.763999999999996,32.468 -2020-12-31 02:15:00,68.93,127.444,41.763999999999996,32.468 -2020-12-31 02:30:00,69.13,127.60799999999999,41.763999999999996,32.468 -2020-12-31 02:45:00,71.05,129.394,41.763999999999996,32.468 -2020-12-31 03:00:00,77.24,131.754,41.155,32.468 -2020-12-31 03:15:00,78.88,133.054,41.155,32.468 -2020-12-31 03:30:00,79.6,134.993,41.155,32.468 -2020-12-31 03:45:00,73.47,135.89700000000002,41.155,32.468 -2020-12-31 04:00:00,71.66,148.222,41.96,32.468 -2020-12-31 04:15:00,72.6,160.344,41.96,32.468 -2020-12-31 04:30:00,74.43,162.416,41.96,32.468 -2020-12-31 04:45:00,76.31,164.89,41.96,32.468 -2020-12-31 05:00:00,80.9,198.58599999999998,45.206,32.468 -2020-12-31 05:15:00,83.91,226.886,45.206,32.468 -2020-12-31 05:30:00,88.55,222.68900000000002,45.206,32.468 -2020-12-31 05:45:00,92.98,214.942,45.206,32.468 -2020-12-31 06:00:00,101.92,211.398,55.398999999999994,32.468 -2020-12-31 06:15:00,106.02,216.854,55.398999999999994,32.468 -2020-12-31 06:30:00,110.67,219.52200000000002,55.398999999999994,32.468 -2020-12-31 06:45:00,115.36,222.69,55.398999999999994,32.468 -2020-12-31 07:00:00,121.21,222.667,64.627,32.468 -2020-12-31 07:15:00,125.44,227.334,64.627,32.468 -2020-12-31 07:30:00,127.04,229.737,64.627,32.468 -2020-12-31 07:45:00,129.3,230.713,64.627,32.468 -2020-12-31 08:00:00,131.83,229.668,70.895,32.468 -2020-12-31 08:15:00,129.92,229.331,70.895,32.468 -2020-12-31 08:30:00,130.03,227.505,70.895,32.468 -2020-12-31 08:45:00,129.65,223.993,70.895,32.468 -2020-12-31 09:00:00,130.4,217.032,66.382,32.468 -2020-12-31 09:15:00,132.18,213.62400000000002,66.382,32.468 -2020-12-31 09:30:00,133.68,211.239,66.382,32.468 -2020-12-31 09:45:00,133.99,208.36700000000002,66.382,32.468 -2020-12-31 10:00:00,133.44,204.053,62.739,32.468 -2020-12-31 10:15:00,135.64,199.49599999999998,62.739,32.468 -2020-12-31 10:30:00,134.92,197.084,62.739,32.468 -2020-12-31 10:45:00,136.65,195.734,62.739,32.468 -2020-12-31 11:00:00,136.01,194.59799999999998,60.843,32.468 -2020-12-31 11:15:00,135.6,193.455,60.843,32.468 -2020-12-31 11:30:00,135.49,192.428,60.843,32.468 -2020-12-31 11:45:00,136.56,190.91299999999998,60.843,32.468 -2020-12-31 12:00:00,136.24,185.315,58.466,32.468 -2020-12-31 12:15:00,135.89,184.63299999999998,58.466,32.468 -2020-12-31 12:30:00,133.92,184.908,58.466,32.468 -2020-12-31 12:45:00,134.1,185.834,58.466,32.468 -2020-12-31 13:00:00,130.94,184.46,56.883,32.468 -2020-12-31 13:15:00,129.98,183.99,56.883,32.468 -2020-12-31 13:30:00,129.31,183.582,56.883,32.468 -2020-12-31 13:45:00,127.59,183.33599999999998,56.883,32.468 -2020-12-31 14:00:00,126.5,182.30700000000002,56.503,32.468 -2020-12-31 14:15:00,129.81,182.727,56.503,32.468 -2020-12-31 14:30:00,128.98,183.46099999999998,56.503,32.468 -2020-12-31 14:45:00,127.66,183.59,56.503,32.468 -2020-12-31 15:00:00,131.69,184.74,57.803999999999995,32.468 -2020-12-31 15:15:00,134.08,185.078,57.803999999999995,32.468 -2020-12-31 15:30:00,130.49,187.222,57.803999999999995,32.468 -2020-12-31 15:45:00,132.71,188.668,57.803999999999995,32.468 -2020-12-31 16:00:00,134.12,190.7,59.379,32.468 -2020-12-31 16:15:00,134.79,192.322,59.379,32.468 -2020-12-31 16:30:00,137.68,194.80599999999998,59.379,32.468 -2020-12-31 16:45:00,138.3,196.382,59.379,32.468 -2020-12-31 17:00:00,141.23,198.90900000000002,64.71600000000001,32.468 -2020-12-31 17:15:00,140.55,200.021,64.71600000000001,32.468 -2020-12-31 17:30:00,141.63,201.067,64.71600000000001,32.468 -2020-12-31 17:45:00,141.55,201.035,64.71600000000001,32.468 -2020-12-31 18:00:00,140.02,202.56799999999998,68.803,32.468 -2020-12-31 18:15:00,138.28,200.606,68.803,32.468 -2020-12-31 18:30:00,137.19,199.14700000000002,68.803,32.468 -2020-12-31 18:45:00,137.6,199.16,68.803,32.468 -2020-12-31 19:00:00,134.26,200.084,72.934,32.468 -2020-12-31 19:15:00,133.22,196.468,72.934,32.468 -2020-12-31 19:30:00,134.64,194.42700000000002,72.934,32.468 -2020-12-31 19:45:00,136.88,190.43900000000002,72.934,32.468 -2020-12-31 20:00:00,130.24,186.864,65.175,32.468 -2020-12-31 20:15:00,119.33,181.132,65.175,32.468 -2020-12-31 20:30:00,118.31,177.201,65.175,32.468 -2020-12-31 20:45:00,112.7,174.72400000000002,65.175,32.468 -2020-12-31 21:00:00,107.44,172.49,58.55,32.468 -2020-12-31 21:15:00,112.86,170.146,58.55,32.468 -2020-12-31 21:30:00,111.93,168.03,58.55,32.468 -2020-12-31 21:45:00,108.29,166.609,58.55,32.468 -2020-12-31 22:00:00,98.52,160.079,55.041000000000004,32.468 -2020-12-31 22:15:00,94.85,154.757,55.041000000000004,32.468 -2020-12-31 22:30:00,98.1,141.22899999999998,55.041000000000004,32.468 -2020-12-31 22:45:00,96.62,133.488,55.041000000000004,32.468 -2020-12-31 23:00:00,92.22,127.7,48.258,32.468 -2020-12-31 23:15:00,84.12,125.64200000000001,48.258,32.468 -2020-12-31 23:30:00,79.31,126.145,48.258,32.468 -2020-12-31 23:45:00,83.54,125.553,48.258,32.468 diff --git a/flixopt/config.py b/flixopt/config.py index aaa3b34d2..a98d1dd6f 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -785,6 +785,44 @@ def browser_plotting(cls) -> type[CONFIG]: return cls + @classmethod + def notebook(cls) -> type[CONFIG]: + """Configure for Jupyter notebook environments. + + Optimizes settings for notebook usage: + - Sets plotly renderer to 'notebook' for inline display + - Disables automatic plot.show() calls (notebooks display via _repr_html_) + - Enables INFO-level console logging + - Disables solver console output (too verbose for notebooks) + + Examples: + ```python + # At the start of your notebook + import flixopt as fx + + fx.CONFIG.notebook() + + # Now plots display inline automatically + flow_system.statistics.plot.balance('Heat') # Displays inline + ``` + """ + import plotly.io as pio + + # Set plotly to render inline in notebooks + pio.renderers.default = 'notebook' + + # Disable default show since notebooks render via _repr_html_ + cls.Plotting.default_show = False + + # Light logging - SUCCESS level without too much noise + cls.Logging.enable_console('SUCCESS') + + # Disable solver console output (too verbose for notebooks) + cls.Solving.log_to_console = True + cls.Solving.log_main_results = True + + return cls + @classmethod def load_from_file(cls, config_file: str | Path) -> type[CONFIG]: """Load configuration from YAML file and apply it. diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 0de7b6536..7a71efee9 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -16,6 +16,7 @@ import xarray as xr from . import io as fx_io +from .components import Storage from .config import CONFIG, DEPRECATION_REMOVAL_VERSION from .core import ( ConversionError, @@ -507,6 +508,28 @@ def _update_period_metadata( return dataset + @classmethod + def _update_scenario_metadata(cls, dataset: xr.Dataset) -> xr.Dataset: + """ + Update scenario-related attributes and data variables in dataset based on its scenario index. + + Recomputes or removes scenario weights. This ensures scenario metadata stays synchronized with the actual + scenarios after operations like selection. + + This is analogous to _update_period_metadata() for time-related metadata. + + Args: + dataset: Dataset to update (will be modified in place) + + Returns: + The same dataset with updated scenario-related attributes and data variables + """ + new_scenario_index = dataset.indexes.get('scenario') + if new_scenario_index is None or len(new_scenario_index) <= 1: + dataset.attrs.pop('scenario_weights') + + return dataset + def _create_reference_structure(self) -> tuple[dict, dict[str, xr.DataArray]]: """ Override Interface method to handle FlowSystem-specific serialization. @@ -1001,7 +1024,7 @@ def add_carriers(self, *carriers: Carrier) -> None: CONFIG.Carriers defaults when resolving colors and units for buses. Args: - carrier: A Carrier object defining the carrier properties. + carriers: Carrier objects defining the carrier properties. Raises: RuntimeError: If the FlowSystem is locked (has a solution). @@ -1657,6 +1680,18 @@ def flows(self) -> ElementContainer[Flow]: self._flows_cache = ElementContainer(flows, element_type_name='flows', truncate_repr=10) return self._flows_cache + @property + def storages(self) -> ElementContainer[Storage]: + """All storage components as an ElementContainer. + + Returns: + ElementContainer containing all Storage components in the FlowSystem, + sorted by label for reproducibility. + """ + storages = [c for c in self.components.values() if isinstance(c, Storage)] + storages = sorted(storages, key=lambda s: s.label_full.lower()) + return ElementContainer(storages, element_type_name='storages', truncate_repr=10) + @property def coords(self) -> dict[FlowSystemDimensions, pd.Index]: active_coords = {'time': self.timesteps} diff --git a/flixopt/interface.py b/flixopt/interface.py index 7787eec18..0a9e9424c 100644 --- a/flixopt/interface.py +++ b/flixopt/interface.py @@ -10,6 +10,8 @@ import numpy as np import pandas as pd +import plotly.express as px +import plotly.graph_objects as go import xarray as xr from .config import CONFIG @@ -468,6 +470,93 @@ def transform_data(self) -> None: for piecewise in self.piecewises.values(): piecewise.transform_data() + def plot( + self, + x_flow: str | None = None, + title: str = '', + ) -> go.Figure: + """Plot multi-flow piecewise conversion as X-Y scatter. + + Visualizes the piecewise linear relationships between flows. One flow + is plotted on the X-axis, all others on the Y-axis. Each piece is shown + as a line segment. For data with periods/scenarios, uses faceting. + + Note: + Requires FlowSystem to be connected and transformed (call + flow_system.connect_and_transform() first). + + Args: + x_flow: Flow label to use for X-axis. Defaults to first flow in dict. + title: Plot title. + + Returns: + Plotly Figure with X-Y scatter showing piecewise segments. + + Examples: + >>> flow_system.connect_and_transform() + >>> chp.piecewise_conversion.plot(x_flow='Gas', title='CHP Curves') + """ + if self._flow_system is None: + raise RuntimeError('Component must be part of a FlowSystem to plot.') + if not self._flow_system.connected_and_transformed: + logger.debug('Connecting flow_system for plotting PiecewiseConversion') + self.flow_system.connect_and_transform() + + flow_labels = list(self.piecewises.keys()) + + # Use first flow as X-axis by default, or the specified one + x_label = x_flow if x_flow is not None else flow_labels[0] + if x_label not in flow_labels: + raise ValueError(f"x_flow '{x_label}' not found. Available: {flow_labels}") + + y_flows = [label for label in flow_labels if label != x_label] + if not y_flows: + raise ValueError('Need at least two flows to plot') + + x_piecewise = self.piecewises[x_label] + + # Build xarray Dataset with all piece data, then convert to DataFrame for plotting + datasets = [] + for y_label in y_flows: + y_piecewise = self.piecewises[y_label] + for i, (x_piece, y_piece) in enumerate(zip(x_piecewise, y_piecewise, strict=False)): + # Create Dataset with start and end points as a 'point' dimension + ds = xr.Dataset( + { + x_label: xr.concat([x_piece.start, x_piece.end], dim='point'), + 'output': xr.concat([y_piece.start, y_piece.end], dim='point'), + } + ) + ds = ds.assign_coords(point=['start', 'end']) + ds['variable'] = y_label + ds['piece'] = i + datasets.append(ds) + + combined = xr.concat(datasets, dim='trace') + combined['trace'] = range(len(datasets)) + + # Convert to DataFrame for plotting + df = combined.to_dataframe().reset_index() + + # Determine faceting based on available dimensions + facet_col = 'scenario' if 'scenario' in df.columns and df['scenario'].nunique() > 1 else None + facet_row = 'period' if 'period' in df.columns and df['period'].nunique() > 1 else None + + fig = px.line( + df, + x=x_label, + y='output', + color='variable', + line_group='trace', + facet_col=facet_col, + facet_row=facet_row, + title=title, + markers=True, + ) + + fig.update_layout(yaxis_title='Output' if len(y_flows) > 1 else y_flows[0]) + return fig + @register_class_for_io class PiecewiseEffects(Interface): @@ -688,6 +777,81 @@ def transform_data(self) -> None: for piecewise in self.piecewise_shares.values(): piecewise.transform_data() + def plot(self, title: str = '') -> go.Figure: + """Plot origin vs effect shares as X-Y scatter. + + Visualizes the piecewise linear relationships between the origin variable + and its effect shares. Origin on X-axis, effect shares on Y-axis. + For data with periods/scenarios, uses faceting. + + Note: + Requires FlowSystem to be connected and transformed (call + flow_system.connect_and_transform() first). + + Args: + title: Plot title. + + Returns: + Plotly Figure with X-Y scatter showing piecewise segments. + + Examples: + >>> flow_system.connect_and_transform() + >>> invest_params.piecewise_effects_of_investment.plot(title='Investment Effects') + """ + if self._flow_system is None: + raise RuntimeError('Component must be part of a FlowSystem to plot.') + if not self._flow_system.connected_and_transformed: + logger.debug('Connecting flow_system for plotting PiecewiseEffects') + self.flow_system.connect_and_transform() + + effect_labels = list(self.piecewise_shares.keys()) + if not effect_labels: + raise ValueError('Need at least one effect share to plot') + + # Build xarray Dataset with all piece data, then convert to DataFrame for plotting + datasets = [] + for effect_label in effect_labels: + y_piecewise = self.piecewise_shares[effect_label] + for i, (x_piece, y_piece) in enumerate(zip(self.piecewise_origin, y_piecewise, strict=False)): + ds = xr.Dataset( + { + 'origin': xr.concat([x_piece.start, x_piece.end], dim='point'), + 'share': xr.concat([y_piece.start, y_piece.end], dim='point'), + } + ) + ds = ds.assign_coords(point=['start', 'end']) + ds['effect'] = effect_label + ds['piece'] = i + datasets.append(ds) + + combined = xr.concat(datasets, dim='trace') + combined['trace'] = range(len(datasets)) + + # Convert to DataFrame for plotting + df = combined.to_dataframe().reset_index() + + # Determine faceting based on available dimensions + facet_col = 'scenario' if 'scenario' in df.columns and df['scenario'].nunique() > 1 else None + facet_row = 'period' if 'period' in df.columns and df['period'].nunique() > 1 else None + + fig = px.line( + df, + x='origin', + y='share', + color='effect', + line_group='trace', + facet_col=facet_col, + facet_row=facet_row, + title=title, + markers=True, + ) + + fig.update_layout( + xaxis_title='Origin', + yaxis_title='Effect Share' if len(effect_labels) > 1 else effect_labels[0], + ) + return fig + @register_class_for_io class InvestParameters(Interface): diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 0cdd2f5ba..0ed790f44 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -178,6 +178,10 @@ class PlotResult: data: xr.Dataset figure: go.Figure + def _repr_html_(self) -> str: + """Return HTML representation for Jupyter notebook display.""" + return self.figure.to_html(full_html=False, include_plotlyjs='cdn') + def show(self) -> PlotResult: """Display the figure. Returns self for chaining.""" self.figure.show() @@ -364,6 +368,8 @@ def __init__(self, flow_system: FlowSystem) -> None: # Cached data self._flow_rates: xr.Dataset | None = None self._flow_hours: xr.Dataset | None = None + self._flow_sizes: xr.Dataset | None = None + self._storage_sizes: xr.Dataset | None = None self._sizes: xr.Dataset | None = None self._charge_states: xr.Dataset | None = None self._effect_share_factors: dict[str, dict] | None = None @@ -413,16 +419,36 @@ def flow_hours(self) -> xr.Dataset: return self._flow_hours @property - def sizes(self) -> xr.Dataset: - """All flow sizes as a Dataset with flow labels as variable names.""" + def flow_sizes(self) -> xr.Dataset: + """Flow sizes as a Dataset with flow labels as variable names.""" self._require_solution() - if self._sizes is None: - # Get flow labels to filter only flow sizes (not storage capacity sizes) + if self._flow_sizes is None: flow_labels = set(self._fs.flows.keys()) size_vars = [ v for v in self._fs.solution.data_vars if v.endswith('|size') and v.replace('|size', '') in flow_labels ] - self._sizes = xr.Dataset({v.replace('|size', ''): self._fs.solution[v] for v in size_vars}) + self._flow_sizes = xr.Dataset({v.replace('|size', ''): self._fs.solution[v] for v in size_vars}) + return self._flow_sizes + + @property + def storage_sizes(self) -> xr.Dataset: + """Storage capacity sizes as a Dataset with storage labels as variable names.""" + self._require_solution() + if self._storage_sizes is None: + storage_labels = set(self._fs.storages.keys()) + size_vars = [ + v + for v in self._fs.solution.data_vars + if v.endswith('|size') and v.replace('|size', '') in storage_labels + ] + self._storage_sizes = xr.Dataset({v.replace('|size', ''): self._fs.solution[v] for v in size_vars}) + return self._storage_sizes + + @property + def sizes(self) -> xr.Dataset: + """All investment sizes (flows and storage capacities) as a Dataset.""" + if self._sizes is None: + self._sizes = xr.merge([self.flow_sizes, self.storage_sizes]) return self._sizes @property @@ -1057,7 +1083,7 @@ def flows( for flow in self._fs.flows.values(): # Get bus label (could be string or Bus object) bus_label = flow.bus - comp_label = flow.component.label_full + comp_label = flow.component # start/end filtering based on flow direction if flow.is_input_in_component: @@ -1715,3 +1741,189 @@ def effects( fig.show() return PlotResult(data=combined.to_dataset(name=aspect), figure=fig) + + def charge_states( + self, + storages: str | list[str] | None = None, + *, + select: SelectType | None = None, + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot storage charge states over time. + + Args: + storages: Storage label(s) to plot. If None, plots all storages. + select: xarray-style selection. + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display. + + Returns: + PlotResult with charge state data. + """ + self._stats._require_solution() + ds = self._stats.charge_states + + if storages is not None: + if isinstance(storages, str): + storages = [storages] + ds = ds[[s for s in storages if s in ds]] + + ds = _apply_selection(ds, select) + actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + + fig = _create_line( + ds, + colors=colors, + title='Storage Charge States', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + **plotly_kwargs, + ) + fig.update_yaxes(title_text='Charge State') + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=ds, figure=fig) + + def storage( + self, + storage: str, + *, + select: SelectType | None = None, + unit: Literal['flow_rate', 'flow_hours'] = 'flow_rate', + colors: ColorType | None = None, + charge_state_color: str = 'black', + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot storage operation: balance and charge state in vertically stacked subplots. + + Creates two subplots sharing the x-axis: + - Top: Charging/discharging flows as stacked bars (inputs negative, outputs positive) + - Bottom: Charge state over time as a line + + Args: + storage: Storage component label. + select: xarray-style selection. + unit: 'flow_rate' (power) or 'flow_hours' (energy). + colors: Color specification for flow bars. + charge_state_color: Color for the charge state line overlay. + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display. + + Returns: + PlotResult with combined balance and charge state data. + + Raises: + KeyError: If storage component not found. + ValueError: If component is not a storage. + """ + self._stats._require_solution() + + # Get the storage component + if storage not in self._fs.components: + raise KeyError(f"'{storage}' not found in components") + + component = self._fs.components[storage] + + # Check if it's a storage by looking for charge_state variable + charge_state_var = f'{storage}|charge_state' + if charge_state_var not in self._fs.solution: + raise ValueError(f"'{storage}' is not a storage (no charge_state variable found)") + + # Get flow data + input_labels = [f.label_full for f in component.inputs] + output_labels = [f.label_full for f in component.outputs] + all_labels = input_labels + output_labels + + if unit == 'flow_rate': + ds = self._stats.flow_rates[[lbl for lbl in all_labels if lbl in self._stats.flow_rates]] + else: + ds = self._stats.flow_hours[[lbl for lbl in all_labels if lbl in self._stats.flow_hours]] + + # Negate outputs for balance view (discharging shown as negative) + for label in output_labels: + if label in ds: + ds[label] = -ds[label] + + # Get charge state and add to dataset + charge_state = self._fs.solution[charge_state_var].rename(storage) + ds['charge_state'] = charge_state + + # Apply selection + ds = _apply_selection(ds, select) + actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + + # Build color map + flow_labels = [lbl for lbl in ds.data_vars if lbl != 'charge_state'] + if colors is None: + colors = self._get_color_map_for_balance(storage, flow_labels) + color_map = process_colors(colors, flow_labels) + color_map['charge_state'] = 'black' + + # Convert to long-form DataFrame + df = _dataset_to_long_df(ds) + + # Create figure with facets using px.bar for flows, then add charge_state line + flow_df = df[df['variable'] != 'charge_state'] + charge_df = df[df['variable'] == 'charge_state'] + + fig = px.bar( + flow_df, + x='time', + y='value', + color='variable', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + color_discrete_map=color_map, + title=f'{storage} Operation ({unit})', + **plotly_kwargs, + ) + fig.update_layout(bargap=0, bargroupgap=0) + fig.update_traces(marker_line_width=0) + + # Add charge state as line on secondary y-axis using px.line, then merge traces + if not charge_df.empty: + line_fig = px.line( + charge_df, + x='time', + y='value', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + ) + # Update line traces and add to main figure + for trace in line_fig.data: + trace.name = 'charge_state' + trace.line = dict(color=charge_state_color, width=2) + trace.yaxis = 'y2' + trace.showlegend = True + fig.add_trace(trace) + + # Add secondary y-axis + fig.update_layout( + yaxis2=dict( + title='Charge State', + overlaying='y', + side='right', + showgrid=False, + ) + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=ds, figure=fig) diff --git a/flixopt/transform_accessor.py b/flixopt/transform_accessor.py index bf2a7ed5e..45a33c712 100644 --- a/flixopt/transform_accessor.py +++ b/flixopt/transform_accessor.py @@ -380,6 +380,9 @@ def _dataset_sel( if 'period' in indexers: result = FlowSystem._update_period_metadata(result) + if 'scenario' in indexers: + result = FlowSystem._update_scenario_metadata(result) + return result @classmethod @@ -427,6 +430,9 @@ def _dataset_isel( if 'period' in indexers: result = FlowSystem._update_period_metadata(result) + if 'scenario' in indexers: + result = FlowSystem._update_scenario_metadata(result) + return result @classmethod @@ -530,6 +536,125 @@ def _resample_by_dimension_groups( return xr.merge(resampled_groups, combine_attrs='drop_conflicts') + def fix_sizes( + self, + sizes: xr.Dataset | dict[str, float] | None = None, + decimal_rounding: int | None = 5, + ) -> FlowSystem: + """ + Create a new FlowSystem with investment sizes fixed to specified values. + + This is useful for two-stage optimization workflows: + 1. Solve a sizing problem (possibly resampled for speed) + 2. Fix sizes and solve dispatch at full resolution + + The returned FlowSystem has InvestParameters with fixed_size set, + making those sizes mandatory rather than decision variables. + + Args: + sizes: The sizes to fix. Can be: + - None: Uses sizes from this FlowSystem's solution (must be solved) + - xr.Dataset: Dataset with size variables (e.g., from statistics.sizes) + - dict: Mapping of component names to sizes (e.g., {'Boiler(Q_fu)': 100}) + decimal_rounding: Number of decimal places to round sizes to. + Rounding helps avoid numerical infeasibility. Set to None to disable. + + Returns: + FlowSystem: New FlowSystem with fixed sizes (no solution). + + Raises: + ValueError: If no sizes provided and FlowSystem has no solution. + KeyError: If a specified size doesn't match any InvestParameters. + + Examples: + Two-stage optimization: + + >>> # Stage 1: Size with resampled data + >>> fs_sizing = flow_system.transform.resample('2h') + >>> fs_sizing.optimize(solver) + >>> + >>> # Stage 2: Fix sizes and optimize at full resolution + >>> fs_dispatch = flow_system.transform.fix_sizes(fs_sizing.statistics.sizes) + >>> fs_dispatch.optimize(solver) + + Using a dict: + + >>> fs_fixed = flow_system.transform.fix_sizes( + ... { + ... 'Boiler(Q_fu)': 100, + ... 'Storage': 500, + ... } + ... ) + >>> fs_fixed.optimize(solver) + """ + from .flow_system import FlowSystem + from .interface import InvestParameters + + # Get sizes from solution if not provided + if sizes is None: + if self._fs.solution is None: + raise ValueError( + 'No sizes provided and FlowSystem has no solution. ' + 'Either provide sizes or optimize the FlowSystem first.' + ) + sizes = self._fs.statistics.sizes + + # Convert dict to Dataset format + if isinstance(sizes, dict): + sizes = xr.Dataset({k: xr.DataArray(v) for k, v in sizes.items()}) + + # Apply rounding + if decimal_rounding is not None: + sizes = sizes.round(decimal_rounding) + + # Create copy of FlowSystem + if not self._fs.connected_and_transformed: + self._fs.connect_and_transform() + + ds = self._fs.to_dataset() + new_fs = FlowSystem.from_dataset(ds) + + # Fix sizes in the new FlowSystem's InvestParameters + # Note: statistics.sizes returns keys without '|size' suffix (e.g., 'Boiler(Q_fu)') + # but dicts may have either format + for size_var in sizes.data_vars: + # Normalize: strip '|size' suffix if present + base_name = size_var.replace('|size', '') if size_var.endswith('|size') else size_var + fixed_value = float(sizes[size_var].item()) + + # Find matching element with InvestParameters + found = False + + # Check flows + for flow in new_fs.flows.values(): + if flow.label_full == base_name and isinstance(flow.size, InvestParameters): + flow.size.fixed_size = fixed_value + flow.size.mandatory = True + found = True + logger.debug(f'Fixed size of {base_name} to {fixed_value}') + break + + # Check storage capacity + if not found: + for component in new_fs.components.values(): + if hasattr(component, 'capacity_in_flow_hours'): + if component.label == base_name and isinstance( + component.capacity_in_flow_hours, InvestParameters + ): + component.capacity_in_flow_hours.fixed_size = fixed_value + component.capacity_in_flow_hours.mandatory = True + found = True + logger.debug(f'Fixed size of {base_name} to {fixed_value}') + break + + if not found: + logger.warning( + f'Size variable "{base_name}" not found as InvestParameters in FlowSystem. ' + f'It may be a fixed-size component or the name may not match.' + ) + + return new_fs + # Future methods can be added here: # # def mga(self, alternatives: int = 5) -> FlowSystem: diff --git a/mkdocs.yml b/mkdocs.yml index 278081889..5ce16769e 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -51,16 +51,19 @@ nav: - Roadmap: roadmap.md - Examples: - - Overview: examples/index.md - - Basic Examples: - - examples/00-Minimal Example.md - - examples/01-Basic Example.md - - Operational Optimization: - - examples/02-Complex Example.md - - examples/03-Optimization Modes.md - - Planning & Investment: - - examples/04-Scenarios.md - - examples/05-Two-stage-optimization.md + - Overview: notebooks/index.md + - Getting Started: + - Quickstart: notebooks/01-quickstart.ipynb + - Heat System with Storage: notebooks/02-heat-system.ipynb + - Investment & Planning: + - Investment Optimization: notebooks/03-investment-optimization.ipynb + - Operational Constraints: notebooks/04-operational-constraints.ipynb + - Advanced Modeling: + - Multi-Carrier Systems: notebooks/05-multi-carrier-system.ipynb + - Piecewise Efficiency: notebooks/06-piecewise-efficiency.ipynb + - Scenarios & Scaling: + - Scenarios and Periods: notebooks/07-scenarios-and-periods.ipynb + - Large-Scale Optimization: notebooks/08-large-scale-optimization.ipynb - API Reference: api-reference/ @@ -69,6 +72,7 @@ nav: theme: name: material language: en + custom_dir: docs/overrides palette: # Palette toggle for automatic mode @@ -215,6 +219,12 @@ plugins: - search: separator: '[\s\u200b\-_,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])' + - mkdocs-jupyter: + execute: true # Execute notebooks during build + allow_errors: false + include_source: true + include_requirejs: true + - plotly - table-reader diff --git a/pyproject.toml b/pyproject.toml index bcd31f33c..88691e468 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -105,12 +105,14 @@ docs = [ "mkdocs-include-markdown-plugin==7.2.0", "mkdocs-literate-nav==0.6.2", "mkdocs-plotly-plugin==0.1.3", + "mkdocs-jupyter==0.25.1", "markdown-include==0.8.1", "pymdown-extensions==10.16.1", "pygments==2.19.2", "mike==2.1.3", "mkdocs-git-revision-date-localized-plugin==1.5.0", "mkdocs-minify-plugin==0.8.0", + "notebook>=7.5.0", ] [project.urls] diff --git a/tests/deprecated/test_examples.py b/tests/deprecated/test_examples.py deleted file mode 100644 index 020670552..000000000 --- a/tests/deprecated/test_examples.py +++ /dev/null @@ -1,94 +0,0 @@ -import os -import subprocess -import sys -from contextlib import contextmanager -from pathlib import Path - -import pytest - -# Path to the examples directory -EXAMPLES_DIR = Path(__file__).parent.parent / 'examples' - -# Examples that have dependencies and must run in sequence -DEPENDENT_EXAMPLES = ( - '02_Complex/complex_example.py', - '02_Complex/complex_example_results.py', -) - - -@contextmanager -def working_directory(path): - """Context manager for changing the working directory.""" - original_cwd = os.getcwd() - try: - os.chdir(path) - yield - finally: - os.chdir(original_cwd) - - -@pytest.mark.parametrize( - 'example_script', - sorted( - [p for p in EXAMPLES_DIR.rglob('*.py') if str(p.relative_to(EXAMPLES_DIR)) not in DEPENDENT_EXAMPLES], - key=lambda path: (str(path.parent), path.name), - ), - ids=lambda path: str(path.relative_to(EXAMPLES_DIR)).replace(os.sep, '/'), -) -@pytest.mark.examples -def test_independent_examples(example_script): - """ - Test independent example scripts. - Ensures they run without errors. - Changes the current working directory to the directory of the example script. - Runs them alphabetically. - This imitates behaviour of running the script directly. - """ - with working_directory(example_script.parent): - timeout = 800 - # Set environment variable to disable interactive plotting - env = os.environ.copy() - env['FLIXOPT_CI'] = 'true' - try: - result = subprocess.run( - [sys.executable, example_script.name], - capture_output=True, - text=True, - timeout=timeout, - env=env, - ) - except subprocess.TimeoutExpired: - pytest.fail(f'Script {example_script} timed out after {timeout} seconds') - - assert result.returncode == 0, ( - f'Script {example_script} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' - ) - - -@pytest.mark.examples -def test_dependent_examples(): - """Test examples that must run in order (complex_example.py generates data for complex_example_results.py).""" - for script_path in DEPENDENT_EXAMPLES: - script_full_path = EXAMPLES_DIR / script_path - - with working_directory(script_full_path.parent): - timeout = 600 - # Set environment variable to disable interactive plotting - env = os.environ.copy() - env['FLIXOPT_CI'] = 'true' - try: - result = subprocess.run( - [sys.executable, script_full_path.name], - capture_output=True, - text=True, - timeout=timeout, - env=env, - ) - except subprocess.TimeoutExpired: - pytest.fail(f'Script {script_path} timed out after {timeout} seconds') - - assert result.returncode == 0, f'{script_path} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' - - -if __name__ == '__main__': - pytest.main(['-v', '--disable-warnings', '-m', 'examples']) diff --git a/tests/test_examples.py b/tests/test_examples.py deleted file mode 100644 index 020670552..000000000 --- a/tests/test_examples.py +++ /dev/null @@ -1,94 +0,0 @@ -import os -import subprocess -import sys -from contextlib import contextmanager -from pathlib import Path - -import pytest - -# Path to the examples directory -EXAMPLES_DIR = Path(__file__).parent.parent / 'examples' - -# Examples that have dependencies and must run in sequence -DEPENDENT_EXAMPLES = ( - '02_Complex/complex_example.py', - '02_Complex/complex_example_results.py', -) - - -@contextmanager -def working_directory(path): - """Context manager for changing the working directory.""" - original_cwd = os.getcwd() - try: - os.chdir(path) - yield - finally: - os.chdir(original_cwd) - - -@pytest.mark.parametrize( - 'example_script', - sorted( - [p for p in EXAMPLES_DIR.rglob('*.py') if str(p.relative_to(EXAMPLES_DIR)) not in DEPENDENT_EXAMPLES], - key=lambda path: (str(path.parent), path.name), - ), - ids=lambda path: str(path.relative_to(EXAMPLES_DIR)).replace(os.sep, '/'), -) -@pytest.mark.examples -def test_independent_examples(example_script): - """ - Test independent example scripts. - Ensures they run without errors. - Changes the current working directory to the directory of the example script. - Runs them alphabetically. - This imitates behaviour of running the script directly. - """ - with working_directory(example_script.parent): - timeout = 800 - # Set environment variable to disable interactive plotting - env = os.environ.copy() - env['FLIXOPT_CI'] = 'true' - try: - result = subprocess.run( - [sys.executable, example_script.name], - capture_output=True, - text=True, - timeout=timeout, - env=env, - ) - except subprocess.TimeoutExpired: - pytest.fail(f'Script {example_script} timed out after {timeout} seconds') - - assert result.returncode == 0, ( - f'Script {example_script} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' - ) - - -@pytest.mark.examples -def test_dependent_examples(): - """Test examples that must run in order (complex_example.py generates data for complex_example_results.py).""" - for script_path in DEPENDENT_EXAMPLES: - script_full_path = EXAMPLES_DIR / script_path - - with working_directory(script_full_path.parent): - timeout = 600 - # Set environment variable to disable interactive plotting - env = os.environ.copy() - env['FLIXOPT_CI'] = 'true' - try: - result = subprocess.run( - [sys.executable, script_full_path.name], - capture_output=True, - text=True, - timeout=timeout, - env=env, - ) - except subprocess.TimeoutExpired: - pytest.fail(f'Script {script_path} timed out after {timeout} seconds') - - assert result.returncode == 0, f'{script_path} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' - - -if __name__ == '__main__': - pytest.main(['-v', '--disable-warnings', '-m', 'examples']) diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index 88d92e91f..09f126613 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -170,7 +170,7 @@ class TestStatisticsAccessor: """Tests for flow_system.statistics accessor.""" def test_statistics_sizes_includes_all_flows(self, simple_flow_system, highs_solver): - """Test that statistics.sizes includes all flow sizes (from InvestParameters).""" + """Test that statistics.sizes includes all flow and storage sizes (from InvestParameters).""" simple_flow_system.optimize(highs_solver) sizes = simple_flow_system.statistics.sizes @@ -179,10 +179,12 @@ def test_statistics_sizes_includes_all_flows(self, simple_flow_system, highs_sol # Should have sizes for flows with InvestParameters assert len(sizes.data_vars) > 0 - # Check that all size labels are valid flow labels + # Check that all size labels are valid flow or storage labels flow_labels = [f.label_full for f in simple_flow_system.flows.values()] + storage_labels = [s.label_full for s in simple_flow_system.storages.values()] + valid_labels = flow_labels + storage_labels for label in sizes.data_vars: - assert label in flow_labels, f'Size label {label} should be a valid flow' + assert label in valid_labels, f'Size label {label} should be a valid flow or storage' def test_statistics_sizes_returns_correct_values(self, simple_flow_system, highs_solver): """Test that statistics.sizes returns correct size values.""" From 7775cf1a4987e4671c90d32665c5aebfe761f0cd Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 09:00:27 +0100 Subject: [PATCH 42/88] Change default of Effect.description to '' --- flixopt/effects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flixopt/effects.py b/flixopt/effects.py index a7aae4bf4..cdac7ca7d 100644 --- a/flixopt/effects.py +++ b/flixopt/effects.py @@ -187,7 +187,7 @@ def __init__( self, label: str, unit: str, - description: str, + description: str = '', meta_data: dict | None = None, is_standard: bool = False, is_objective: bool = False, From 8d4a98cbe19817aac42f75a8425e9c78a2d4a491 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 09:47:30 +0100 Subject: [PATCH 43/88] Improve backwards compatability and allow saving the solution directly --- flixopt/results.py | 31 +++++++++++++++++++++------- flixopt/structure.py | 48 +++++++++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 25 deletions(-) diff --git a/flixopt/results.py b/flixopt/results.py index edcbb7a87..976793e0b 100644 --- a/flixopt/results.py +++ b/flixopt/results.py @@ -2,6 +2,7 @@ import copy import datetime +import json import logging import pathlib import warnings @@ -47,6 +48,18 @@ def load_mapping_from_file(path: pathlib.Path) -> dict[str, str | list[str]]: return fx_io.load_config_file(path) +def _get_solution_attr(solution: xr.Dataset, key: str) -> dict: + """Get an attribute from solution, decoding JSON if necessary. + + Solution attrs are stored as JSON strings for netCDF compatibility. + This helper handles both JSON strings and dicts (for backward compatibility). + """ + value = solution.attrs.get(key, {}) + if isinstance(value, str): + return json.loads(value) + return value + + class _FlowSystemRestorationError(Exception): """Exception raised when a FlowSystem cannot be restored from dataset.""" @@ -239,19 +252,25 @@ def __init__( # Create ResultsContainers for better access patterns components_dict = { - label: ComponentResults(self, **infos) for label, infos in self.solution.attrs['Components'].items() + label: ComponentResults(self, **infos) + for label, infos in _get_solution_attr(self.solution, 'Components').items() } self.components = ResultsContainer( elements=components_dict, element_type_name='component results', truncate_repr=10 ) - buses_dict = {label: BusResults(self, **infos) for label, infos in self.solution.attrs['Buses'].items()} + buses_dict = { + label: BusResults(self, **infos) for label, infos in _get_solution_attr(self.solution, 'Buses').items() + } self.buses = ResultsContainer(elements=buses_dict, element_type_name='bus results', truncate_repr=10) - effects_dict = {label: EffectResults(self, **infos) for label, infos in self.solution.attrs['Effects'].items()} + effects_dict = { + label: EffectResults(self, **infos) for label, infos in _get_solution_attr(self.solution, 'Effects').items() + } self.effects = ResultsContainer(elements=effects_dict, element_type_name='effect results', truncate_repr=10) - if 'Flows' not in self.solution.attrs: + flows_attr = _get_solution_attr(self.solution, 'Flows') + if not flows_attr: warnings.warn( 'No Data about flows found in the results. This data is only included since v2.2.0. Some functionality ' 'is not availlable. We recommend to evaluate your results with a version <2.2.0.', @@ -260,9 +279,7 @@ def __init__( flows_dict = {} self._has_flow_data = False else: - flows_dict = { - label: FlowResults(self, **infos) for label, infos in self.solution.attrs.get('Flows', {}).items() - } + flows_dict = {label: FlowResults(self, **infos) for label, infos in flows_attr.items()} self._has_flow_data = True self.flows = ResultsContainer(elements=flows_dict, element_type_name='flow results', truncate_repr=10) diff --git a/flixopt/structure.py b/flixopt/structure.py index 63d028660..536b2a697 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -6,6 +6,7 @@ from __future__ import annotations import inspect +import json import logging import pathlib import re @@ -169,25 +170,36 @@ def solution(self): """Build solution dataset, reindexing to timesteps_extra for consistency.""" solution = super().solution solution['objective'] = self.objective.value + # Store attrs as JSON strings for netCDF compatibility solution.attrs = { - 'Components': { - comp.label_full: comp.submodel.results_structure() - for comp in sorted( - self.flow_system.components.values(), key=lambda component: component.label_full.upper() - ) - }, - 'Buses': { - bus.label_full: bus.submodel.results_structure() - for bus in sorted(self.flow_system.buses.values(), key=lambda bus: bus.label_full.upper()) - }, - 'Effects': { - effect.label_full: effect.submodel.results_structure() - for effect in sorted(self.flow_system.effects.values(), key=lambda effect: effect.label_full.upper()) - }, - 'Flows': { - flow.label_full: flow.submodel.results_structure() - for flow in sorted(self.flow_system.flows.values(), key=lambda flow: flow.label_full.upper()) - }, + 'Components': json.dumps( + { + comp.label_full: comp.submodel.results_structure() + for comp in sorted( + self.flow_system.components.values(), key=lambda component: component.label_full.upper() + ) + } + ), + 'Buses': json.dumps( + { + bus.label_full: bus.submodel.results_structure() + for bus in sorted(self.flow_system.buses.values(), key=lambda bus: bus.label_full.upper()) + } + ), + 'Effects': json.dumps( + { + effect.label_full: effect.submodel.results_structure() + for effect in sorted( + self.flow_system.effects.values(), key=lambda effect: effect.label_full.upper() + ) + } + ), + 'Flows': json.dumps( + { + flow.label_full: flow.submodel.results_structure() + for flow in sorted(self.flow_system.flows.values(), key=lambda flow: flow.label_full.upper()) + } + ), } # Ensure solution is always indexed by timesteps_extra for consistency. # Variables without extra timestep data will have NaN at the final timestep. From d841c7a1cea340d733dfe99cc2f8e9e19dcfc392 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 09:59:45 +0100 Subject: [PATCH 44/88] Re-add old examples and tests --- .pre-commit-config.yaml | 1 + examples/00_Minmal/minimal_example.py | 36 + examples/01_Simple/simple_example.py | 126 + examples/02_Complex/complex_example.py | 207 + .../02_Complex/complex_example_results.py | 38 + .../example_optimization_modes.py | 245 + examples/04_Scenarios/scenario_example.py | 214 + .../two_stage_optimization.py | 186 + examples/resources/Zeitreihen2020.csv | 35137 ++++++++++++++++ tests/deprecated/test_examples.py | 94 + 10 files changed, 36284 insertions(+) create mode 100644 examples/00_Minmal/minimal_example.py create mode 100644 examples/01_Simple/simple_example.py create mode 100644 examples/02_Complex/complex_example.py create mode 100644 examples/02_Complex/complex_example_results.py create mode 100644 examples/03_Optimization_modes/example_optimization_modes.py create mode 100644 examples/04_Scenarios/scenario_example.py create mode 100644 examples/05_Two-stage-optimization/two_stage_optimization.py create mode 100644 examples/resources/Zeitreihen2020.csv create mode 100644 tests/deprecated/test_examples.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 76c32d069..cfe4d0770 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,6 +7,7 @@ repos: - id: check-yaml exclude: ^mkdocs\.yml$ # Skip mkdocs.yml - id: check-added-large-files + exclude: ^examples/resources/Zeitreihen2020\.csv$ - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.12.4 diff --git a/examples/00_Minmal/minimal_example.py b/examples/00_Minmal/minimal_example.py new file mode 100644 index 000000000..207faa9a9 --- /dev/null +++ b/examples/00_Minmal/minimal_example.py @@ -0,0 +1,36 @@ +""" +This script shows how to use the flixopt framework to model a super minimalistic energy system in the most concise way possible. +THis can also be used to create proposals for new features, bug reports etc +""" + +import numpy as np +import pandas as pd + +import flixopt as fx + +if __name__ == '__main__': + fx.CONFIG.silent() + flow_system = fx.FlowSystem(pd.date_range('2020-01-01', periods=3, freq='h')) + + flow_system.add_elements( + fx.Bus('Heat'), + fx.Bus('Gas'), + fx.Effect('Costs', '€', 'Cost', is_standard=True, is_objective=True), + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.5, + thermal_flow=fx.Flow(label='Heat', bus='Heat', size=50), + fuel_flow=fx.Flow(label='Gas', bus='Gas'), + ), + fx.Sink( + 'Sink', + inputs=[fx.Flow(label='Demand', bus='Heat', size=1, fixed_relative_profile=np.array([30, 0, 20]))], + ), + fx.Source( + 'Source', + outputs=[fx.Flow(label='Gas', bus='Gas', size=1000, effects_per_flow_hour=0.04)], + ), + ) + + flow_system.optimize(fx.solvers.HighsSolver(0.01, 60)) + flow_system.statistics.plot.balance('Heat') diff --git a/examples/01_Simple/simple_example.py b/examples/01_Simple/simple_example.py new file mode 100644 index 000000000..b63260ece --- /dev/null +++ b/examples/01_Simple/simple_example.py @@ -0,0 +1,126 @@ +""" +This script shows how to use the flixopt framework to model a simple energy system. +""" + +import numpy as np +import pandas as pd + +import flixopt as fx + +if __name__ == '__main__': + fx.CONFIG.exploring() + + # --- Create Time Series Data --- + # Heat demand profile (e.g., kW) over time and corresponding power prices + heat_demand_per_h = np.array([30, 0, 90, 110, 110, 20, 20, 20, 20]) + power_prices = 1 / 1000 * np.array([80, 80, 80, 80, 80, 80, 80, 80, 80]) + + # Create datetime array starting from '2020-01-01' for the given time period + timesteps = pd.date_range('2020-01-01', periods=len(heat_demand_per_h), freq='h') + flow_system = fx.FlowSystem(timesteps=timesteps) + + # --- Define Energy Buses --- + # These represent nodes, where the used medias are balanced (electricity, heat, and gas) + # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, etc.) + flow_system.add_elements( + fx.Bus(label='Strom', carrier='electricity'), + fx.Bus(label='Fernwärme', carrier='heat'), + fx.Bus(label='Gas', carrier='gas'), + ) + + # --- Define Effects (Objective and CO2 Emissions) --- + # Cost effect: used as the optimization objective --> minimizing costs + costs = fx.Effect( + label='costs', + unit='€', + description='Kosten', + is_standard=True, # standard effect: no explicit value needed for costs + is_objective=True, # Minimizing costs as the optimization objective + share_from_temporal={'CO2': 0.2}, + ) + + # CO2 emissions effect with an associated cost impact + CO2 = fx.Effect( + label='CO2', + unit='kg', + description='CO2_e-Emissionen', + maximum_per_hour=1000, # Max CO2 emissions per hour + ) + + # --- Define Flow System Components --- + # Boiler: Converts fuel (gas) into thermal energy (heat) + boiler = fx.linear_converters.Boiler( + label='Boiler', + thermal_efficiency=0.5, + thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme', size=50, relative_minimum=0.1, relative_maximum=1), + fuel_flow=fx.Flow(label='Q_fu', bus='Gas'), + ) + + # Combined Heat and Power (CHP): Generates both electricity and heat from fuel + chp = fx.linear_converters.CHP( + label='CHP', + thermal_efficiency=0.5, + electrical_efficiency=0.4, + electrical_flow=fx.Flow('P_el', bus='Strom', size=60, relative_minimum=5 / 60), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + # Storage: Energy storage system with charging and discharging capabilities + storage = fx.Storage( + label='Storage', + charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1000), + discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1000), + capacity_in_flow_hours=fx.InvestParameters(effects_of_investment=20, fixed_size=30, mandatory=True), + initial_charge_state=0, # Initial storage state: empty + relative_maximum_charge_state=1 / 100 * np.array([80, 70, 80, 80, 80, 80, 80, 80, 80]), + relative_maximum_final_charge_state=0.8, + eta_charge=0.9, + eta_discharge=1, # Efficiency factors for charging/discharging + relative_loss_per_hour=0.08, # 8% loss per hour. Absolute loss depends on current charge state + prevent_simultaneous_charge_and_discharge=True, # Prevent charging and discharging at the same time + ) + + # Heat Demand Sink: Represents a fixed heat demand profile + heat_sink = fx.Sink( + label='Heat Demand', + inputs=[fx.Flow(label='Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand_per_h)], + ) + + # Gas Source: Gas tariff source with associated costs and CO2 emissions + gas_source = fx.Source( + label='Gastarif', + outputs=[ + fx.Flow(label='Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={costs.label: 0.04, CO2.label: 0.3}) + ], + ) + + # Power Sink: Represents the export of electricity to the grid + power_sink = fx.Sink( + label='Einspeisung', inputs=[fx.Flow(label='P_el', bus='Strom', effects_per_flow_hour=-1 * power_prices)] + ) + + # --- Build the Flow System --- + # Add all defined components and effects to the flow system + flow_system.add_elements(costs, CO2, boiler, storage, chp, heat_sink, gas_source, power_sink) + + # Visualize the flow system for validation purposes + flow_system.topology.plot() + + # --- Define and Solve Optimization --- + flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) + + # --- Analyze Results --- + # Plotting through statistics accessor - returns PlotResult with .data and .figure + flow_system.statistics.plot.balance('Fernwärme') + flow_system.statistics.plot.balance('Storage') + flow_system.statistics.plot.heatmap('CHP(Q_th)') + flow_system.statistics.plot.heatmap('Storage') + + # Access data as xarray Datasets + print(flow_system.statistics.flow_rates) + print(flow_system.statistics.charge_states) + + # Duration curve and effects analysis + flow_system.statistics.plot.duration_curve('Boiler(Q_th)') + print(flow_system.statistics.temporal_effects) diff --git a/examples/02_Complex/complex_example.py b/examples/02_Complex/complex_example.py new file mode 100644 index 000000000..3f38ff954 --- /dev/null +++ b/examples/02_Complex/complex_example.py @@ -0,0 +1,207 @@ +""" +This script shows how to use the flixopt framework to model a more complex energy system. +""" + +import numpy as np +import pandas as pd + +import flixopt as fx + +if __name__ == '__main__': + fx.CONFIG.exploring() + + # --- Experiment Options --- + # Configure options for testing various parameters and behaviors + check_penalty = False + imbalance_penalty = 1e5 + use_chp_with_piecewise_conversion = True + + # --- Define Demand and Price Profiles --- + # Input data for electricity and heat demands, as well as electricity price + electricity_demand = np.array([70, 80, 90, 90, 90, 90, 90, 90, 90]) + heat_demand = ( + np.array([30, 0, 90, 110, 2000, 20, 20, 20, 20]) + if check_penalty + else np.array([30, 0, 90, 110, 110, 20, 20, 20, 20]) + ) + electricity_price = np.array([40, 40, 40, 40, 40, 40, 40, 40, 40]) + + # --- Define the Flow System, that will hold all elements, and the time steps you want to model --- + timesteps = pd.date_range('2020-01-01', periods=len(heat_demand), freq='h') + flow_system = fx.FlowSystem(timesteps) # Create FlowSystem + + # --- Define Energy Buses --- + # Represent node balances (inputs=outputs) for the different energy carriers (electricity, heat, gas) in the system + # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, blue for gas) + flow_system.add_elements( + fx.Bus('Strom', carrier='electricity', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Fernwärme', carrier='heat', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Gas', carrier='gas', imbalance_penalty_per_flow_hour=imbalance_penalty), + ) + + # --- Define Effects --- + # Specify effects related to costs, CO2 emissions, and primary energy consumption + Costs = fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True, share_from_temporal={'CO2': 0.2}) + CO2 = fx.Effect('CO2', 'kg', 'CO2_e-Emissionen') + PE = fx.Effect('PE', 'kWh_PE', 'Primärenergie', maximum_total=3.5e3) + + # --- Define Components --- + # 1. Define Boiler Component + # A gas boiler that converts fuel into thermal output, with investment and on-inactive parameters + Gaskessel = fx.linear_converters.Boiler( + 'Kessel', + thermal_efficiency=0.5, # Efficiency ratio + status_parameters=fx.StatusParameters( + effects_per_active_hour={Costs.label: 0, CO2.label: 1000} + ), # CO2 emissions per hour + thermal_flow=fx.Flow( + label='Q_th', # Thermal output + bus='Fernwärme', # Linked bus + size=fx.InvestParameters( + effects_of_investment=1000, # Fixed investment costs + fixed_size=50, # Fixed size + mandatory=True, # Forced investment + effects_of_investment_per_size={Costs.label: 10, PE.label: 2}, # Specific costs + ), + load_factor_max=1.0, # Maximum load factor (50 kW) + load_factor_min=0.1, # Minimum load factor (5 kW) + relative_minimum=5 / 50, # Minimum part load + relative_maximum=1, # Maximum part load + previous_flow_rate=50, # Previous flow rate + flow_hours_max=1e6, # Total energy flow limit + status_parameters=fx.StatusParameters( + active_hours_min=0, # Minimum operating hours + active_hours_max=1000, # Maximum operating hours + max_uptime=10, # Max consecutive operating hours + min_uptime=np.array([1, 1, 1, 1, 1, 2, 2, 2, 2]), # min consecutive operation hours + max_downtime=10, # Max consecutive inactive hours + effects_per_startup={Costs.label: 0.01}, # Cost per startup + startup_limit=1000, # Max number of starts + ), + ), + fuel_flow=fx.Flow(label='Q_fu', bus='Gas', size=200), + ) + + # 2. Define CHP Unit + # Combined Heat and Power unit that generates both electricity and heat from fuel + bhkw = fx.linear_converters.CHP( + 'BHKW2', + thermal_efficiency=0.5, + electrical_efficiency=0.4, + status_parameters=fx.StatusParameters(effects_per_startup={Costs.label: 0.01}), + electrical_flow=fx.Flow('P_el', bus='Strom', size=60, relative_minimum=5 / 60), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=1e3), + fuel_flow=fx.Flow('Q_fu', bus='Gas', size=1e3, previous_flow_rate=20), # The CHP was ON previously + ) + + # 3. Define CHP with Piecewise Conversion + # This CHP unit uses piecewise conversion for more dynamic behavior over time + P_el = fx.Flow('P_el', bus='Strom', size=60, previous_flow_rate=20) + Q_th = fx.Flow('Q_th', bus='Fernwärme') + Q_fu = fx.Flow('Q_fu', bus='Gas') + piecewise_conversion = fx.PiecewiseConversion( + { + P_el.label: fx.Piecewise([fx.Piece(5, 30), fx.Piece(40, 60)]), + Q_th.label: fx.Piecewise([fx.Piece(6, 35), fx.Piece(45, 100)]), + Q_fu.label: fx.Piecewise([fx.Piece(12, 70), fx.Piece(90, 200)]), + } + ) + + bhkw_2 = fx.LinearConverter( + 'BHKW2', + inputs=[Q_fu], + outputs=[P_el, Q_th], + piecewise_conversion=piecewise_conversion, + status_parameters=fx.StatusParameters(effects_per_startup={Costs.label: 0.01}), + ) + + # 4. Define Storage Component + # Storage with variable size and piecewise investment effects + segmented_investment_effects = fx.PiecewiseEffects( + piecewise_origin=fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), + piecewise_shares={ + Costs.label: fx.Piecewise([fx.Piece(50, 250), fx.Piece(250, 800)]), + PE.label: fx.Piecewise([fx.Piece(5, 25), fx.Piece(25, 100)]), + }, + ) + + speicher = fx.Storage( + 'Speicher', + charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1e4), + discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1e4), + capacity_in_flow_hours=fx.InvestParameters( + piecewise_effects_of_investment=segmented_investment_effects, # Investment effects + mandatory=True, # Forced investment + minimum_size=0, + maximum_size=1000, # Optimizing between 0 and 1000 kWh + ), + initial_charge_state=0, # Initial charge state + maximal_final_charge_state=10, # Maximum final charge state + eta_charge=0.9, + eta_discharge=1, # Charge/discharge efficiency + relative_loss_per_hour=0.08, # Energy loss per hour, relative to current charge state + prevent_simultaneous_charge_and_discharge=True, # Prevent simultaneous charge/discharge + ) + + # 5. Define Sinks and Sources + # 5.a) Heat demand profile + Waermelast = fx.Sink( + 'Wärmelast', + inputs=[ + fx.Flow( + 'Q_th_Last', # Heat sink + bus='Fernwärme', # Linked bus + size=1, + fixed_relative_profile=heat_demand, # Fixed demand profile + ) + ], + ) + + # 5.b) Gas tariff + Gasbezug = fx.Source( + 'Gastarif', + outputs=[ + fx.Flow( + 'Q_Gas', + bus='Gas', # Gas source + size=1000, # Nominal size + effects_per_flow_hour={Costs.label: 0.04, CO2.label: 0.3}, + ) + ], + ) + + # 5.c) Feed-in of electricity + Stromverkauf = fx.Sink( + 'Einspeisung', + inputs=[ + fx.Flow( + 'P_el', + bus='Strom', # Feed-in tariff for electricity + effects_per_flow_hour=-1 * electricity_price, # Negative price for feed-in + ) + ], + ) + + # --- Build FlowSystem --- + # Select components to be included in the flow system + flow_system.add_elements(Costs, CO2, PE, Gaskessel, Waermelast, Gasbezug, Stromverkauf, speicher) + flow_system.add_elements(bhkw_2) if use_chp_with_piecewise_conversion else flow_system.add_elements(bhkw) + + print(flow_system) # Get a string representation of the FlowSystem + try: + flow_system.topology.start_app() # Start the network app + except ImportError as e: + print(f'Network app requires extra dependencies: {e}') + + # --- Solve FlowSystem --- + flow_system.optimize(fx.solvers.HighsSolver(0.01, 60)) + + # --- Results --- + # Save the flow system with solution to file for later analysis + flow_system.to_netcdf('results/complex_example.nc') + + # Plot results using the statistics accessor + flow_system.statistics.plot.heatmap('BHKW2(Q_th)') # Flow label - auto-resolves to flow_rate + flow_system.statistics.plot.balance('BHKW2') + flow_system.statistics.plot.heatmap('Speicher') # Storage label - auto-resolves to charge_state + flow_system.statistics.plot.balance('Fernwärme') diff --git a/examples/02_Complex/complex_example_results.py b/examples/02_Complex/complex_example_results.py new file mode 100644 index 000000000..6978caff1 --- /dev/null +++ b/examples/02_Complex/complex_example_results.py @@ -0,0 +1,38 @@ +""" +This script shows how to load results of a prior optimization and how to analyze them. +""" + +import flixopt as fx + +if __name__ == '__main__': + fx.CONFIG.exploring() + + # --- Load FlowSystem with Solution --- + try: + flow_system = fx.FlowSystem.from_netcdf('results/complex_example.nc') + except FileNotFoundError as e: + raise FileNotFoundError( + f"Results file not found ('results/complex_example.nc'). " + f"Please ensure that the file is generated by running 'complex_example.py'. " + f'Original error: {e}' + ) from e + + # --- Basic overview --- + flow_system.topology.plot() + flow_system.statistics.plot.balance('Fernwärme') + + # --- Detailed Plots --- + # In-depth plot for individual flow rates + flow_system.statistics.plot.heatmap('Wärmelast(Q_th_Last)|flow_rate') + + # Plot balances for all buses + for bus in flow_system.buses.values(): + flow_system.statistics.plot.balance(bus.label).to_html(f'results/{bus.label}--balance.html') + + # --- Plotting internal variables manually --- + flow_system.statistics.plot.heatmap('BHKW2(Q_th)|status') + flow_system.statistics.plot.heatmap('Kessel(Q_th)|status') + + # Access data as DataFrames: + print(flow_system.statistics.flow_rates.to_dataframe()) + print(flow_system.solution.to_dataframe()) diff --git a/examples/03_Optimization_modes/example_optimization_modes.py b/examples/03_Optimization_modes/example_optimization_modes.py new file mode 100644 index 000000000..1f9968357 --- /dev/null +++ b/examples/03_Optimization_modes/example_optimization_modes.py @@ -0,0 +1,245 @@ +""" +This script demonstrates how to use the different calculation types in the flixopt framework +to model the same energy system. The results will be compared to each other. +""" + +import pathlib + +import pandas as pd +import xarray as xr + +import flixopt as fx + + +# Get solutions for plotting for different optimizations +def get_solutions(optimizations: list, variable: str) -> xr.Dataset: + dataarrays = [] + for optimization in optimizations: + if optimization.name == 'Segmented': + # SegmentedOptimization requires special handling to remove overlaps + dataarrays.append(optimization.results.solution_without_overlap(variable).rename(optimization.name)) + else: + # For Full and Clustered, access solution from the flow_system + dataarrays.append(optimization.flow_system.solution[variable].rename(optimization.name)) + return xr.merge(dataarrays, join='outer') + + +if __name__ == '__main__': + fx.CONFIG.exploring() + + # Calculation Types + full, segmented, aggregated = True, True, True + + # Segmented Properties + segment_length, overlap_length = 96, 1 + + # Aggregated Properties + clustering_parameters = fx.ClusteringParameters( + hours_per_period=6, + nr_of_periods=4, + fix_storage_flows=False, + aggregate_data_and_fix_non_binary_vars=True, + percentage_of_period_freedom=0, + penalty_of_period_freedom=0, + ) + keep_extreme_periods = True + imbalance_penalty = 1e5 # or set to None if not needed + + # Data Import + data_import = pd.read_csv( + pathlib.Path(__file__).parent.parent / 'resources' / 'Zeitreihen2020.csv', index_col=0 + ).sort_index() + filtered_data = data_import['2020-01-01':'2020-01-07 23:45:00'] + # filtered_data = data_import[0:500] # Alternatively filter by index + + filtered_data.index = pd.to_datetime(filtered_data.index) + timesteps = filtered_data.index + + # Access specific columns and convert to 1D-numpy array + electricity_demand = filtered_data['P_Netz/MW'].to_numpy() + heat_demand = filtered_data['Q_Netz/MW'].to_numpy() + electricity_price = filtered_data['Strompr.€/MWh'].to_numpy() + gas_price = filtered_data['Gaspr.€/MWh'].to_numpy() + + # TimeSeriesData objects + TS_heat_demand = fx.TimeSeriesData(heat_demand) + TS_electricity_demand = fx.TimeSeriesData(electricity_demand, clustering_weight=0.7) + TS_electricity_price_sell = fx.TimeSeriesData(-(electricity_price - 0.5), clustering_group='p_el') + TS_electricity_price_buy = fx.TimeSeriesData(electricity_price + 0.5, clustering_group='p_el') + + flow_system = fx.FlowSystem(timesteps) + flow_system.add_elements( + fx.Bus('Strom', carrier='electricity', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Fernwärme', carrier='heat', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Gas', carrier='gas', imbalance_penalty_per_flow_hour=imbalance_penalty), + fx.Bus('Kohle', carrier='fuel', imbalance_penalty_per_flow_hour=imbalance_penalty), + ) + + # Effects + costs = fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True) + CO2 = fx.Effect('CO2', 'kg', 'CO2_e-Emissionen') + PE = fx.Effect('PE', 'kWh_PE', 'Primärenergie') + + # Component Definitions + + # 1. Boiler + a_gaskessel = fx.linear_converters.Boiler( + 'Kessel', + thermal_efficiency=0.85, + thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow( + label='Q_fu', + bus='Gas', + size=95, + relative_minimum=12 / 95, + previous_flow_rate=20, + status_parameters=fx.StatusParameters(effects_per_startup=1000), + ), + ) + + # 2. CHP + a_kwk = fx.linear_converters.CHP( + 'BHKW2', + thermal_efficiency=0.58, + electrical_efficiency=0.22, + status_parameters=fx.StatusParameters(effects_per_startup=24000), + electrical_flow=fx.Flow('P_el', bus='Strom', size=200), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme', size=200), + fuel_flow=fx.Flow('Q_fu', bus='Kohle', size=288, relative_minimum=87 / 288, previous_flow_rate=100), + ) + + # 3. Storage + a_speicher = fx.Storage( + 'Speicher', + capacity_in_flow_hours=684, + initial_charge_state=137, + minimal_final_charge_state=137, + maximal_final_charge_state=158, + eta_charge=1, + eta_discharge=1, + relative_loss_per_hour=0.001, + prevent_simultaneous_charge_and_discharge=True, + charging=fx.Flow('Q_th_load', size=137, bus='Fernwärme'), + discharging=fx.Flow('Q_th_unload', size=158, bus='Fernwärme'), + ) + + # 4. Sinks and Sources + # Heat Load Profile + a_waermelast = fx.Sink( + 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=TS_heat_demand)] + ) + + # Electricity Feed-in + a_strom_last = fx.Sink( + 'Stromlast', inputs=[fx.Flow('P_el_Last', bus='Strom', size=1, fixed_relative_profile=TS_electricity_demand)] + ) + + # Gas Tariff + a_gas_tarif = fx.Source( + 'Gastarif', + outputs=[ + fx.Flow('Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={costs.label: gas_price, CO2.label: 0.3}) + ], + ) + + # Coal Tariff + a_kohle_tarif = fx.Source( + 'Kohletarif', + outputs=[fx.Flow('Q_Kohle', bus='Kohle', size=1000, effects_per_flow_hour={costs.label: 4.6, CO2.label: 0.3})], + ) + + # Electricity Tariff and Feed-in + a_strom_einspeisung = fx.Sink( + 'Einspeisung', inputs=[fx.Flow('P_el', bus='Strom', size=1000, effects_per_flow_hour=TS_electricity_price_sell)] + ) + + a_strom_tarif = fx.Source( + 'Stromtarif', + outputs=[ + fx.Flow( + 'P_el', + bus='Strom', + size=1000, + effects_per_flow_hour={costs.label: TS_electricity_price_buy, CO2.label: 0.3}, + ) + ], + ) + + # Flow System Setup + flow_system.add_elements(costs, CO2, PE) + flow_system.add_elements( + a_gaskessel, + a_waermelast, + a_strom_last, + a_gas_tarif, + a_kohle_tarif, + a_strom_einspeisung, + a_strom_tarif, + a_kwk, + a_speicher, + ) + flow_system.topology.plot() + + # Optimizations + optimizations: list[fx.Optimization | fx.ClusteredOptimization | fx.SegmentedOptimization] = [] + + if full: + optimization = fx.Optimization('Full', flow_system.copy()) + optimization.do_modeling() + optimization.solve(fx.solvers.HighsSolver(0.01 / 100, 60)) + optimizations.append(optimization) + + if segmented: + optimization = fx.SegmentedOptimization('Segmented', flow_system.copy(), segment_length, overlap_length) + optimization.do_modeling_and_solve(fx.solvers.HighsSolver(0.01 / 100, 60)) + optimizations.append(optimization) + + if aggregated: + if keep_extreme_periods: + clustering_parameters.time_series_for_high_peaks = [TS_heat_demand] + clustering_parameters.time_series_for_low_peaks = [TS_electricity_demand, TS_heat_demand] + optimization = fx.ClusteredOptimization('Aggregated', flow_system.copy(), clustering_parameters) + optimization.do_modeling() + optimization.solve(fx.solvers.HighsSolver(0.01 / 100, 60)) + optimizations.append(optimization) + + # --- Plotting for comparison --- + fx.plotting.with_plotly( + get_solutions(optimizations, 'Speicher|charge_state'), + mode='line', + title='Charge State Comparison', + ylabel='Charge state', + xlabel='Time in h', + ).write_html('results/Charge State.html') + + fx.plotting.with_plotly( + get_solutions(optimizations, 'BHKW2(Q_th)|flow_rate'), + mode='line', + title='BHKW2(Q_th) Flow Rate Comparison', + ylabel='Flow rate', + xlabel='Time in h', + ).write_html('results/BHKW2 Thermal Power.html') + + fx.plotting.with_plotly( + get_solutions(optimizations, 'costs(temporal)|per_timestep'), + mode='line', + title='Operation Cost Comparison', + ylabel='Costs [€]', + xlabel='Time in h', + ).write_html('results/Operation Costs.html') + + fx.plotting.with_plotly( + get_solutions(optimizations, 'costs(temporal)|per_timestep').sum('time'), + mode='stacked_bar', + title='Total Cost Comparison', + ylabel='Costs [€]', + ).update_layout(barmode='group').write_html('results/Total Costs.html') + + fx.plotting.with_plotly( + pd.DataFrame( + [calc.durations for calc in optimizations], index=[calc.name for calc in optimizations] + ).to_xarray(), + mode='stacked_bar', + ).update_layout(title='Duration Comparison', xaxis_title='Optimization type', yaxis_title='Time (s)').write_html( + 'results/Speed Comparison.html' + ) diff --git a/examples/04_Scenarios/scenario_example.py b/examples/04_Scenarios/scenario_example.py new file mode 100644 index 000000000..820336e93 --- /dev/null +++ b/examples/04_Scenarios/scenario_example.py @@ -0,0 +1,214 @@ +""" +This script shows how to use the flixopt framework to model a simple energy system. +""" + +import numpy as np +import pandas as pd + +import flixopt as fx + +if __name__ == '__main__': + fx.CONFIG.exploring() + + # Create datetime array starting from '2020-01-01' for one week + timesteps = pd.date_range('2020-01-01', periods=24 * 7, freq='h') + scenarios = pd.Index(['Base Case', 'High Demand']) + periods = pd.Index([2020, 2021, 2022]) + + # --- Create Time Series Data --- + # Realistic daily patterns: morning/evening peaks, night/midday lows + np.random.seed(42) + n_hours = len(timesteps) + + # Heat demand: 24-hour patterns (kW) for Base Case and High Demand scenarios + base_daily_pattern = np.array( + [22, 20, 18, 18, 20, 25, 40, 70, 95, 110, 85, 65, 60, 58, 62, 68, 75, 88, 105, 125, 130, 122, 95, 35] + ) + high_daily_pattern = np.array( + [28, 25, 22, 22, 24, 30, 52, 88, 118, 135, 105, 80, 75, 72, 75, 82, 92, 108, 128, 148, 155, 145, 115, 48] + ) + + # Tile and add variation + base_demand = np.tile(base_daily_pattern, n_hours // 24 + 1)[:n_hours] * ( + 1 + np.random.uniform(-0.05, 0.05, n_hours) + ) + high_demand = np.tile(high_daily_pattern, n_hours // 24 + 1)[:n_hours] * ( + 1 + np.random.uniform(-0.07, 0.07, n_hours) + ) + + heat_demand_per_h = pd.DataFrame({'Base Case': base_demand, 'High Demand': high_demand}, index=timesteps) + + # Power prices: hourly factors (night low, peak high) and period escalation (2020-2022) + hourly_price_factors = np.array( + [ + 0.70, + 0.65, + 0.62, + 0.60, + 0.62, + 0.70, + 0.95, + 1.15, + 1.30, + 1.25, + 1.10, + 1.00, + 0.95, + 0.90, + 0.88, + 0.92, + 1.00, + 1.10, + 1.25, + 1.40, + 1.35, + 1.20, + 0.95, + 0.80, + ] + ) + period_base_prices = np.array([0.075, 0.095, 0.135]) # €/kWh for 2020, 2021, 2022 + + price_series = np.zeros((n_hours, 3)) + for period_idx, base_price in enumerate(period_base_prices): + price_series[:, period_idx] = ( + np.tile(hourly_price_factors, n_hours // 24 + 1)[:n_hours] + * base_price + * (1 + np.random.uniform(-0.03, 0.03, n_hours)) + ) + + power_prices = price_series.mean(axis=0) + + # Scenario weights: probability of each scenario occurring + # Base Case: 60% probability, High Demand: 40% probability + scenario_weights = np.array([0.6, 0.4]) + + flow_system = fx.FlowSystem( + timesteps=timesteps, periods=periods, scenarios=scenarios, scenario_weights=scenario_weights + ) + + # --- Define Energy Buses --- + # These represent nodes, where the used medias are balanced (electricity, heat, and gas) + # Carriers provide automatic color assignment in plots (yellow for electricity, red for heat, blue for gas) + flow_system.add_elements( + fx.Bus(label='Strom', carrier='electricity'), + fx.Bus(label='Fernwärme', carrier='heat'), + fx.Bus(label='Gas', carrier='gas'), + ) + + # --- Define Effects (Objective and CO2 Emissions) --- + # Cost effect: used as the optimization objective --> minimizing costs + costs = fx.Effect( + label='costs', + unit='€', + description='Kosten', + is_standard=True, # standard effect: no explicit value needed for costs + is_objective=True, # Minimizing costs as the optimization objective + share_from_temporal={'CO2': 0.2}, # Carbon price: 0.2 €/kg CO2 (e.g., carbon tax) + ) + + # CO2 emissions effect with constraint + # Maximum of 1000 kg CO2/hour represents a regulatory or voluntary emissions limit + CO2 = fx.Effect( + label='CO2', + unit='kg', + description='CO2_e-Emissionen', + maximum_per_hour=1000, # Regulatory emissions limit: 1000 kg CO2/hour + ) + + # --- Define Flow System Components --- + # Boiler: Converts fuel (gas) into thermal energy (heat) + # Modern condensing gas boiler with realistic efficiency + boiler = fx.linear_converters.Boiler( + label='Boiler', + thermal_efficiency=0.92, # Realistic efficiency for modern condensing gas boiler (92%) + thermal_flow=fx.Flow( + label='Q_th', + bus='Fernwärme', + size=100, + relative_minimum=0.1, + relative_maximum=1, + status_parameters=fx.StatusParameters(), + ), + fuel_flow=fx.Flow(label='Q_fu', bus='Gas'), + ) + + # Combined Heat and Power (CHP): Generates both electricity and heat from fuel + # Modern CHP unit with realistic efficiencies (total efficiency ~88%) + chp = fx.linear_converters.CHP( + label='CHP', + thermal_efficiency=0.48, # Realistic thermal efficiency (48%) + electrical_efficiency=0.40, # Realistic electrical efficiency (40%) + electrical_flow=fx.Flow( + 'P_el', bus='Strom', size=80, relative_minimum=5 / 80, status_parameters=fx.StatusParameters() + ), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow('Q_fu', bus='Gas'), + ) + + # Storage: Thermal energy storage system with charging and discharging capabilities + # Realistic thermal storage parameters (e.g., insulated hot water tank) + storage = fx.Storage( + label='Storage', + charging=fx.Flow('Q_th_load', bus='Fernwärme', size=1000), + discharging=fx.Flow('Q_th_unload', bus='Fernwärme', size=1000), + capacity_in_flow_hours=fx.InvestParameters(effects_of_investment=20, fixed_size=30, mandatory=True), + initial_charge_state=0, # Initial storage state: empty + relative_maximum_final_charge_state=np.array([0.8, 0.5, 0.1]), + eta_charge=0.95, # Realistic charging efficiency (~95%) + eta_discharge=0.98, # Realistic discharging efficiency (~98%) + relative_loss_per_hour=np.array([0.008, 0.015]), # Realistic thermal losses: 0.8-1.5% per hour + prevent_simultaneous_charge_and_discharge=True, # Prevent charging and discharging at the same time + ) + + # Heat Demand Sink: Represents a fixed heat demand profile + heat_sink = fx.Sink( + label='Heat Demand', + inputs=[fx.Flow(label='Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand_per_h)], + ) + + # Gas Source: Gas tariff source with associated costs and CO2 emissions + # Realistic gas prices varying by period (reflecting 2020-2022 energy crisis) + # 2020: 0.04 €/kWh, 2021: 0.06 €/kWh, 2022: 0.11 €/kWh + gas_prices_per_period = np.array([0.04, 0.06, 0.11]) + + # CO2 emissions factor for natural gas: ~0.202 kg CO2/kWh (realistic value) + gas_co2_emissions = 0.202 + + gas_source = fx.Source( + label='Gastarif', + outputs=[ + fx.Flow( + label='Q_Gas', + bus='Gas', + size=1000, + effects_per_flow_hour={costs.label: gas_prices_per_period, CO2.label: gas_co2_emissions}, + ) + ], + ) + + # Power Sink: Represents the export of electricity to the grid + power_sink = fx.Sink( + label='Einspeisung', inputs=[fx.Flow(label='P_el', bus='Strom', effects_per_flow_hour=-1 * power_prices)] + ) + + # --- Build the Flow System --- + # Add all defined components and effects to the flow system + flow_system.add_elements(costs, CO2, boiler, storage, chp, heat_sink, gas_source, power_sink) + + # Visualize the flow system for validation purposes + flow_system.topology.plot() + + # --- Define and Solve Optimization --- + flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0, time_limit_seconds=30)) + + # --- Analyze Results --- + # Plotting through statistics accessor - returns PlotResult with .data and .figure + flow_system.statistics.plot.heatmap('CHP(Q_th)') # Flow label - auto-resolves to flow_rate + flow_system.statistics.plot.balance('Fernwärme') + flow_system.statistics.plot.balance('Storage') + flow_system.statistics.plot.heatmap('Storage') # Storage label - auto-resolves to charge_state + + # Access data as xarray Datasets + print(flow_system.statistics.flow_rates) + print(flow_system.statistics.charge_states) diff --git a/examples/05_Two-stage-optimization/two_stage_optimization.py b/examples/05_Two-stage-optimization/two_stage_optimization.py new file mode 100644 index 000000000..3f3278477 --- /dev/null +++ b/examples/05_Two-stage-optimization/two_stage_optimization.py @@ -0,0 +1,186 @@ +""" +This script demonstrates how to use downsampling of a FlowSystem to effectively reduce the size of a model. +This can be very useful when working with large models or during development, +as it can drastically reduce the computational time. +This leads to faster results and easier debugging. +A common use case is to optimize the investments of a model with a downsampled version of the original model, and then fix the computed sizes when calculating the actual dispatch. +While the final optimum might differ from the global optimum, the solving will be much faster. +""" + +import logging +import pathlib +import timeit + +import numpy as np +import pandas as pd +import xarray as xr + +import flixopt as fx + +logger = logging.getLogger('flixopt') + +if __name__ == '__main__': + fx.CONFIG.exploring() + + # Data Import + data_import = pd.read_csv( + pathlib.Path(__file__).parent.parent / 'resources' / 'Zeitreihen2020.csv', index_col=0 + ).sort_index() + filtered_data = data_import[:500] + + filtered_data.index = pd.to_datetime(filtered_data.index) + timesteps = filtered_data.index + + # Access specific columns and convert to 1D-numpy array + electricity_demand = filtered_data['P_Netz/MW'].to_numpy() + heat_demand = filtered_data['Q_Netz/MW'].to_numpy() + electricity_price = filtered_data['Strompr.€/MWh'].to_numpy() + gas_price = filtered_data['Gaspr.€/MWh'].to_numpy() + + flow_system = fx.FlowSystem(timesteps) + # Carriers provide automatic color assignment in plots + flow_system.add_elements( + fx.Bus('Strom', carrier='electricity'), + fx.Bus('Fernwärme', carrier='heat'), + fx.Bus('Gas', carrier='gas'), + fx.Bus('Kohle', carrier='fuel'), + fx.Effect('costs', '€', 'Kosten', is_standard=True, is_objective=True), + fx.Effect('CO2', 'kg', 'CO2_e-Emissionen'), + fx.Effect('PE', 'kWh_PE', 'Primärenergie'), + fx.linear_converters.Boiler( + 'Kessel', + thermal_efficiency=0.85, + thermal_flow=fx.Flow(label='Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow( + label='Q_fu', + bus='Gas', + size=fx.InvestParameters( + effects_of_investment_per_size={'costs': 1_000}, minimum_size=10, maximum_size=600 + ), + relative_minimum=0.2, + previous_flow_rate=20, + status_parameters=fx.StatusParameters(effects_per_startup=300), + ), + ), + fx.linear_converters.CHP( + 'BHKW2', + thermal_efficiency=0.58, + electrical_efficiency=0.22, + status_parameters=fx.StatusParameters(effects_per_startup=1_000, min_uptime=10, min_downtime=10), + electrical_flow=fx.Flow('P_el', bus='Strom'), + thermal_flow=fx.Flow('Q_th', bus='Fernwärme'), + fuel_flow=fx.Flow( + 'Q_fu', + bus='Kohle', + size=fx.InvestParameters( + effects_of_investment_per_size={'costs': 3_000}, minimum_size=10, maximum_size=500 + ), + relative_minimum=0.3, + previous_flow_rate=100, + ), + ), + fx.Storage( + 'Speicher', + capacity_in_flow_hours=fx.InvestParameters( + minimum_size=10, maximum_size=1000, effects_of_investment_per_size={'costs': 60} + ), + initial_charge_state='equals_final', + eta_charge=1, + eta_discharge=1, + relative_loss_per_hour=0.001, + prevent_simultaneous_charge_and_discharge=True, + charging=fx.Flow('Q_th_load', size=200, bus='Fernwärme'), + discharging=fx.Flow('Q_th_unload', size=200, bus='Fernwärme'), + ), + fx.Sink( + 'Wärmelast', inputs=[fx.Flow('Q_th_Last', bus='Fernwärme', size=1, fixed_relative_profile=heat_demand)] + ), + fx.Source( + 'Gastarif', + outputs=[fx.Flow('Q_Gas', bus='Gas', size=1000, effects_per_flow_hour={'costs': gas_price, 'CO2': 0.3})], + ), + fx.Source( + 'Kohletarif', + outputs=[fx.Flow('Q_Kohle', bus='Kohle', size=1000, effects_per_flow_hour={'costs': 4.6, 'CO2': 0.3})], + ), + fx.Source( + 'Einspeisung', + outputs=[ + fx.Flow( + 'P_el', bus='Strom', size=1000, effects_per_flow_hour={'costs': electricity_price + 0.5, 'CO2': 0.3} + ) + ], + ), + fx.Sink( + 'Stromlast', + inputs=[fx.Flow('P_el_Last', bus='Strom', size=1, fixed_relative_profile=electricity_demand)], + ), + fx.Source( + 'Stromtarif', + outputs=[ + fx.Flow('P_el', bus='Strom', size=1000, effects_per_flow_hour={'costs': electricity_price, 'CO2': 0.3}) + ], + ), + ) + + # Separate optimization of flow sizes and dispatch + # Stage 1: Optimize sizes using downsampled (2h) data + start = timeit.default_timer() + calculation_sizing = fx.Optimization('Sizing', flow_system.resample('2h')) + calculation_sizing.do_modeling() + calculation_sizing.solve(fx.solvers.HighsSolver(0.1 / 100, 60)) + timer_sizing = timeit.default_timer() - start + + # Stage 2: Optimize dispatch with fixed sizes from Stage 1 + start = timeit.default_timer() + calculation_dispatch = fx.Optimization('Dispatch', flow_system) + calculation_dispatch.do_modeling() + calculation_dispatch.fix_sizes(calculation_sizing.flow_system.solution) + calculation_dispatch.solve(fx.solvers.HighsSolver(0.1 / 100, 60)) + timer_dispatch = timeit.default_timer() - start + + # Verify sizes were correctly fixed + dispatch_sizes = calculation_dispatch.flow_system.statistics.sizes + sizing_sizes = calculation_sizing.flow_system.statistics.sizes + if np.allclose(dispatch_sizes.to_dataarray(), sizing_sizes.to_dataarray(), rtol=1e-5): + logger.info('Sizes were correctly equalized') + else: + raise RuntimeError('Sizes were not correctly equalized') + + # Combined optimization: optimize both sizes and dispatch together + start = timeit.default_timer() + calculation_combined = fx.Optimization('Combined', flow_system) + calculation_combined.do_modeling() + calculation_combined.solve(fx.solvers.HighsSolver(0.1 / 100, 600)) + timer_combined = timeit.default_timer() - start + + # Comparison of results - access solutions from flow_system + comparison = xr.concat( + [calculation_combined.flow_system.solution, calculation_dispatch.flow_system.solution], dim='mode' + ).assign_coords(mode=['Combined', 'Two-stage']) + comparison['Duration [s]'] = xr.DataArray([timer_combined, timer_sizing + timer_dispatch], dims='mode') + + comparison_main = comparison[ + [ + 'Duration [s]', + 'costs', + 'costs(periodic)', + 'costs(temporal)', + 'BHKW2(Q_fu)|size', + 'Kessel(Q_fu)|size', + 'Speicher|size', + ] + ] + comparison_main = xr.concat( + [ + comparison_main, + ( + (comparison_main.sel(mode='Two-stage') - comparison_main.sel(mode='Combined')) + / comparison_main.sel(mode='Combined') + * 100 + ).assign_coords(mode='Diff [%]'), + ], + dim='mode', + ) + + print(comparison_main.to_pandas().T.round(2)) diff --git a/examples/resources/Zeitreihen2020.csv b/examples/resources/Zeitreihen2020.csv new file mode 100644 index 000000000..9b660ef9c --- /dev/null +++ b/examples/resources/Zeitreihen2020.csv @@ -0,0 +1,35137 @@ +Zeit,P_Netz/MW,Q_Netz/MW,Strompr.€/MWh,Gaspr.€/MWh +2020-01-01 00:00:00,58.39,127.059,7.461,32.459 +2020-01-01 00:15:00,58.36,122.156,7.461,32.459 +2020-01-01 00:30:00,58.11,124.412,7.461,32.459 +2020-01-01 00:45:00,57.71,127.713,7.461,32.459 +2020-01-01 01:00:00,55.53,130.69899999999998,2.65,32.459 +2020-01-01 01:15:00,56.24,132.166,2.65,32.459 +2020-01-01 01:30:00,55.17,132.394,2.65,32.459 +2020-01-01 01:45:00,54.5,132.431,2.65,32.459 +2020-01-01 02:00:00,52.95,134.403,-2.949,32.459 +2020-01-01 02:15:00,51.75,134.755,-2.949,32.459 +2020-01-01 02:30:00,50.7,135.631,-2.949,32.459 +2020-01-01 02:45:00,50.33,138.345,-2.949,32.459 +2020-01-01 03:00:00,47.11,141.071,-3.2680000000000002,32.459 +2020-01-01 03:15:00,49.35,141.319,-3.2680000000000002,32.459 +2020-01-01 03:30:00,48.33,143.024,-3.2680000000000002,32.459 +2020-01-01 03:45:00,48.73,144.697,-3.2680000000000002,32.459 +2020-01-01 04:00:00,46.6,152.569,-3.2680000000000002,32.459 +2020-01-01 04:15:00,47.33,160.688,-3.2680000000000002,32.459 +2020-01-01 04:30:00,47.5,161.673,-3.2680000000000002,32.459 +2020-01-01 04:45:00,48.62,163.165,-3.2680000000000002,32.459 +2020-01-01 05:00:00,49.18,176.398,-3.2680000000000002,32.459 +2020-01-01 05:15:00,50.0,184.233,-3.2680000000000002,32.459 +2020-01-01 05:30:00,50.1,181.12,-3.2680000000000002,32.459 +2020-01-01 05:45:00,50.36,179.642,-3.2680000000000002,32.459 +2020-01-01 06:00:00,50.32,196.364,-3.2680000000000002,32.459 +2020-01-01 06:15:00,50.22,215.918,-3.2680000000000002,32.459 +2020-01-01 06:30:00,52.17,211.0,-3.2680000000000002,32.459 +2020-01-01 06:45:00,54.2,206.111,-3.2680000000000002,32.459 +2020-01-01 07:00:00,55.6,202.635,-3.2680000000000002,32.459 +2020-01-01 07:15:00,55.35,207.093,-3.2680000000000002,32.459 +2020-01-01 07:30:00,55.44,211.667,-3.2680000000000002,32.459 +2020-01-01 07:45:00,55.15,215.882,-3.2680000000000002,32.459 +2020-01-01 08:00:00,56.21,219.793,-2.146,32.459 +2020-01-01 08:15:00,55.94,223.388,-2.146,32.459 +2020-01-01 08:30:00,58.2,226.081,-2.146,32.459 +2020-01-01 08:45:00,56.11,227.016,-2.146,32.459 +2020-01-01 09:00:00,61.62,222.30700000000002,1.7519999999999998,32.459 +2020-01-01 09:15:00,63.5,221.018,1.7519999999999998,32.459 +2020-01-01 09:30:00,64.24,219.09,1.7519999999999998,32.459 +2020-01-01 09:45:00,64.02,215.80700000000002,1.7519999999999998,32.459 +2020-01-01 10:00:00,61.38,212.231,4.19,32.459 +2020-01-01 10:15:00,62.05,209.50099999999998,4.19,32.459 +2020-01-01 10:30:00,61.84,206.963,4.19,32.459 +2020-01-01 10:45:00,65.9,204.111,4.19,32.459 +2020-01-01 11:00:00,67.33,203.37599999999998,5.517,32.459 +2020-01-01 11:15:00,68.34,200.575,5.517,32.459 +2020-01-01 11:30:00,67.43,198.755,5.517,32.459 +2020-01-01 11:45:00,68.73,197.22099999999998,5.517,32.459 +2020-01-01 12:00:00,74.2,191.555,4.27,32.459 +2020-01-01 12:15:00,69.91,191.37,4.27,32.459 +2020-01-01 12:30:00,68.83,190.28799999999998,4.27,32.459 +2020-01-01 12:45:00,70.01,189.851,4.27,32.459 +2020-01-01 13:00:00,69.02,188.09599999999998,3.484,32.459 +2020-01-01 13:15:00,68.68,189.604,3.484,32.459 +2020-01-01 13:30:00,68.45,188.61,3.484,32.459 +2020-01-01 13:45:00,68.18,188.303,3.484,32.459 +2020-01-01 14:00:00,68.94,187.555,2.523,32.459 +2020-01-01 14:15:00,66.1,188.747,2.523,32.459 +2020-01-01 14:30:00,70.61,189.53099999999998,2.523,32.459 +2020-01-01 14:45:00,70.58,189.93,2.523,32.459 +2020-01-01 15:00:00,73.81,189.581,5.667999999999999,32.459 +2020-01-01 15:15:00,69.6,191.454,5.667999999999999,32.459 +2020-01-01 15:30:00,68.66,194.55599999999998,5.667999999999999,32.459 +2020-01-01 15:45:00,71.32,197.227,5.667999999999999,32.459 +2020-01-01 16:00:00,73.3,197.49900000000002,12.109000000000002,32.459 +2020-01-01 16:15:00,77.24,199.38099999999997,12.109000000000002,32.459 +2020-01-01 16:30:00,83.2,202.511,12.109000000000002,32.459 +2020-01-01 16:45:00,86.91,205.047,12.109000000000002,32.459 +2020-01-01 17:00:00,89.85,207.06099999999998,22.824,32.459 +2020-01-01 17:15:00,90.61,208.69799999999998,22.824,32.459 +2020-01-01 17:30:00,92.03,209.25099999999998,22.824,32.459 +2020-01-01 17:45:00,93.49,210.672,22.824,32.459 +2020-01-01 18:00:00,95.17,211.632,21.656,32.459 +2020-01-01 18:15:00,94.51,211.645,21.656,32.459 +2020-01-01 18:30:00,93.87,209.94,21.656,32.459 +2020-01-01 18:45:00,93.48,208.489,21.656,32.459 +2020-01-01 19:00:00,92.14,209.826,19.749000000000002,32.459 +2020-01-01 19:15:00,90.85,207.487,19.749000000000002,32.459 +2020-01-01 19:30:00,89.81,204.959,19.749000000000002,32.459 +2020-01-01 19:45:00,88.14,202.29,19.749000000000002,32.459 +2020-01-01 20:00:00,84.73,200.835,24.274,32.459 +2020-01-01 20:15:00,83.37,197.709,24.274,32.459 +2020-01-01 20:30:00,82.23,194.57299999999998,24.274,32.459 +2020-01-01 20:45:00,80.34,191.52200000000002,24.274,32.459 +2020-01-01 21:00:00,78.43,188.843,23.044,32.459 +2020-01-01 21:15:00,77.95,186.56099999999998,23.044,32.459 +2020-01-01 21:30:00,77.04,186.183,23.044,32.459 +2020-01-01 21:45:00,76.57,184.824,23.044,32.459 +2020-01-01 22:00:00,72.56,178.928,25.155,32.459 +2020-01-01 22:15:00,72.48,174.81799999999998,25.155,32.459 +2020-01-01 22:30:00,70.04,170.76,25.155,32.459 +2020-01-01 22:45:00,67.68,167.32,25.155,32.459 +2020-01-01 23:00:00,59.3,159.845,20.101,32.459 +2020-01-01 23:15:00,63.51,156.17700000000002,20.101,32.459 +2020-01-01 23:30:00,61.08,153.764,20.101,32.459 +2020-01-01 23:45:00,60.81,150.845,20.101,32.459 +2020-01-02 00:00:00,72.56,131.099,38.399,32.641 +2020-01-02 00:15:00,75.51,130.822,38.399,32.641 +2020-01-02 00:30:00,76.2,132.15,38.399,32.641 +2020-01-02 00:45:00,79.94,133.753,38.399,32.641 +2020-01-02 01:00:00,76.22,136.549,36.94,32.641 +2020-01-02 01:15:00,75.52,136.971,36.94,32.641 +2020-01-02 01:30:00,69.71,137.433,36.94,32.641 +2020-01-02 01:45:00,72.15,137.96200000000002,36.94,32.641 +2020-01-02 02:00:00,68.46,139.933,35.275,32.641 +2020-01-02 02:15:00,68.93,141.73,35.275,32.641 +2020-01-02 02:30:00,69.13,142.344,35.275,32.641 +2020-01-02 02:45:00,71.05,144.38,35.275,32.641 +2020-01-02 03:00:00,77.24,147.17700000000002,35.329,32.641 +2020-01-02 03:15:00,78.88,148.17700000000002,35.329,32.641 +2020-01-02 03:30:00,79.6,150.07,35.329,32.641 +2020-01-02 03:45:00,73.47,151.487,35.329,32.641 +2020-01-02 04:00:00,71.66,163.75,36.275,32.641 +2020-01-02 04:15:00,72.6,175.77599999999998,36.275,32.641 +2020-01-02 04:30:00,74.43,178.856,36.275,32.641 +2020-01-02 04:45:00,76.31,181.783,36.275,32.641 +2020-01-02 05:00:00,80.9,217.042,42.193999999999996,32.641 +2020-01-02 05:15:00,83.91,245.78799999999998,42.193999999999996,32.641 +2020-01-02 05:30:00,88.55,241.4,42.193999999999996,32.641 +2020-01-02 05:45:00,92.98,234.083,42.193999999999996,32.641 +2020-01-02 06:00:00,101.92,230.607,56.422,32.641 +2020-01-02 06:15:00,106.02,236.44099999999997,56.422,32.641 +2020-01-02 06:30:00,110.67,239.31400000000002,56.422,32.641 +2020-01-02 06:45:00,115.36,243.33,56.422,32.641 +2020-01-02 07:00:00,121.21,242.197,72.569,32.641 +2020-01-02 07:15:00,125.44,247.68200000000002,72.569,32.641 +2020-01-02 07:30:00,127.04,250.858,72.569,32.641 +2020-01-02 07:45:00,129.3,252.55900000000003,72.569,32.641 +2020-01-02 08:00:00,131.83,251.364,67.704,32.641 +2020-01-02 08:15:00,129.92,251.618,67.704,32.641 +2020-01-02 08:30:00,130.03,249.708,67.704,32.641 +2020-01-02 08:45:00,129.65,246.764,67.704,32.641 +2020-01-02 09:00:00,130.4,240.053,63.434,32.641 +2020-01-02 09:15:00,132.18,236.87900000000002,63.434,32.641 +2020-01-02 09:30:00,133.68,234.63099999999997,63.434,32.641 +2020-01-02 09:45:00,133.99,231.472,63.434,32.641 +2020-01-02 10:00:00,133.44,226.187,61.88399999999999,32.641 +2020-01-02 10:15:00,135.64,221.955,61.88399999999999,32.641 +2020-01-02 10:30:00,134.92,218.68400000000003,61.88399999999999,32.641 +2020-01-02 10:45:00,136.65,216.98,61.88399999999999,32.641 +2020-01-02 11:00:00,136.01,214.97299999999998,61.481,32.641 +2020-01-02 11:15:00,135.6,213.702,61.481,32.641 +2020-01-02 11:30:00,135.49,212.15200000000002,61.481,32.641 +2020-01-02 11:45:00,136.56,210.945,61.481,32.641 +2020-01-02 12:00:00,136.24,205.8,59.527,32.641 +2020-01-02 12:15:00,135.89,205.143,59.527,32.641 +2020-01-02 12:30:00,133.92,205.12400000000002,59.527,32.641 +2020-01-02 12:45:00,134.1,205.96099999999998,59.527,32.641 +2020-01-02 13:00:00,130.94,204.35,58.794,32.641 +2020-01-02 13:15:00,129.98,203.88099999999997,58.794,32.641 +2020-01-02 13:30:00,129.31,203.575,58.794,32.641 +2020-01-02 13:45:00,127.59,203.519,58.794,32.641 +2020-01-02 14:00:00,126.5,202.428,60.32,32.641 +2020-01-02 14:15:00,129.81,203.06900000000002,60.32,32.641 +2020-01-02 14:30:00,128.98,203.95,60.32,32.641 +2020-01-02 14:45:00,127.66,204.167,60.32,32.641 +2020-01-02 15:00:00,131.69,205.303,62.52,32.641 +2020-01-02 15:15:00,134.08,205.93900000000002,62.52,32.641 +2020-01-02 15:30:00,130.49,208.357,62.52,32.641 +2020-01-02 15:45:00,132.71,210.109,62.52,32.641 +2020-01-02 16:00:00,134.12,210.895,64.199,32.641 +2020-01-02 16:15:00,134.79,212.476,64.199,32.641 +2020-01-02 16:30:00,137.68,215.345,64.199,32.641 +2020-01-02 16:45:00,138.3,216.87599999999998,64.199,32.641 +2020-01-02 17:00:00,141.23,219.28900000000002,68.19800000000001,32.641 +2020-01-02 17:15:00,140.55,219.918,68.19800000000001,32.641 +2020-01-02 17:30:00,141.63,220.68200000000002,68.19800000000001,32.641 +2020-01-02 17:45:00,141.55,220.424,68.19800000000001,32.641 +2020-01-02 18:00:00,140.02,221.84400000000002,67.899,32.641 +2020-01-02 18:15:00,138.28,218.955,67.899,32.641 +2020-01-02 18:30:00,137.19,217.683,67.899,32.641 +2020-01-02 18:45:00,137.6,217.707,67.899,32.641 +2020-01-02 19:00:00,134.26,217.453,64.72399999999999,32.641 +2020-01-02 19:15:00,133.22,213.481,64.72399999999999,32.641 +2020-01-02 19:30:00,134.64,210.797,64.72399999999999,32.641 +2020-01-02 19:45:00,136.88,207.28599999999997,64.72399999999999,32.641 +2020-01-02 20:00:00,130.24,203.518,64.062,32.641 +2020-01-02 20:15:00,119.33,197.062,64.062,32.641 +2020-01-02 20:30:00,118.31,192.979,64.062,32.641 +2020-01-02 20:45:00,112.7,191.03099999999998,64.062,32.641 +2020-01-02 21:00:00,107.44,188.12900000000002,57.971000000000004,32.641 +2020-01-02 21:15:00,112.86,185.61900000000003,57.971000000000004,32.641 +2020-01-02 21:30:00,111.93,183.535,57.971000000000004,32.641 +2020-01-02 21:45:00,108.29,181.894,57.971000000000004,32.641 +2020-01-02 22:00:00,98.52,174.86,53.715,32.641 +2020-01-02 22:15:00,94.85,168.98,53.715,32.641 +2020-01-02 22:30:00,98.1,155.042,53.715,32.641 +2020-01-02 22:45:00,96.62,146.733,53.715,32.641 +2020-01-02 23:00:00,92.22,140.148,47.8,32.641 +2020-01-02 23:15:00,84.12,138.344,47.8,32.641 +2020-01-02 23:30:00,79.31,138.518,47.8,32.641 +2020-01-02 23:45:00,83.54,137.971,47.8,32.641 +2020-01-03 00:00:00,83.23,130.233,43.656000000000006,32.641 +2020-01-03 00:15:00,82.94,130.13299999999998,43.656000000000006,32.641 +2020-01-03 00:30:00,78.25,131.279,43.656000000000006,32.641 +2020-01-03 00:45:00,76.9,132.954,43.656000000000006,32.641 +2020-01-03 01:00:00,71.11,135.453,41.263000000000005,32.641 +2020-01-03 01:15:00,78.36,136.91899999999998,41.263000000000005,32.641 +2020-01-03 01:30:00,78.99,137.079,41.263000000000005,32.641 +2020-01-03 01:45:00,77.55,137.732,41.263000000000005,32.641 +2020-01-03 02:00:00,71.19,139.738,40.799,32.641 +2020-01-03 02:15:00,72.17,141.41299999999998,40.799,32.641 +2020-01-03 02:30:00,74.79,142.542,40.799,32.641 +2020-01-03 02:45:00,78.06,144.681,40.799,32.641 +2020-01-03 03:00:00,76.51,146.311,41.398,32.641 +2020-01-03 03:15:00,74.89,148.47,41.398,32.641 +2020-01-03 03:30:00,79.0,150.364,41.398,32.641 +2020-01-03 03:45:00,77.85,152.072,41.398,32.641 +2020-01-03 04:00:00,73.23,164.549,42.38,32.641 +2020-01-03 04:15:00,74.31,176.43200000000002,42.38,32.641 +2020-01-03 04:30:00,74.97,179.67700000000002,42.38,32.641 +2020-01-03 04:45:00,78.19,181.39700000000002,42.38,32.641 +2020-01-03 05:00:00,82.49,215.25400000000002,46.181000000000004,32.641 +2020-01-03 05:15:00,85.31,245.535,46.181000000000004,32.641 +2020-01-03 05:30:00,88.01,242.33599999999998,46.181000000000004,32.641 +2020-01-03 05:45:00,93.72,235.011,46.181000000000004,32.641 +2020-01-03 06:00:00,101.82,232.016,59.33,32.641 +2020-01-03 06:15:00,106.19,236.21900000000002,59.33,32.641 +2020-01-03 06:30:00,110.85,238.166,59.33,32.641 +2020-01-03 06:45:00,115.45,244.024,59.33,32.641 +2020-01-03 07:00:00,122.71,241.924,72.454,32.641 +2020-01-03 07:15:00,123.17,248.451,72.454,32.641 +2020-01-03 07:30:00,125.55,251.585,72.454,32.641 +2020-01-03 07:45:00,128.9,252.31099999999998,72.454,32.641 +2020-01-03 08:00:00,130.12,249.83599999999998,67.175,32.641 +2020-01-03 08:15:00,128.89,249.597,67.175,32.641 +2020-01-03 08:30:00,128.21,248.743,67.175,32.641 +2020-01-03 08:45:00,128.6,244.05900000000003,67.175,32.641 +2020-01-03 09:00:00,128.71,238.011,65.365,32.641 +2020-01-03 09:15:00,131.57,235.324,65.365,32.641 +2020-01-03 09:30:00,133.77,232.672,65.365,32.641 +2020-01-03 09:45:00,136.47,229.359,65.365,32.641 +2020-01-03 10:00:00,135.77,222.843,63.95,32.641 +2020-01-03 10:15:00,137.43,219.39,63.95,32.641 +2020-01-03 10:30:00,136.81,215.986,63.95,32.641 +2020-01-03 10:45:00,137.07,213.808,63.95,32.641 +2020-01-03 11:00:00,136.69,211.75,63.92100000000001,32.641 +2020-01-03 11:15:00,137.82,209.576,63.92100000000001,32.641 +2020-01-03 11:30:00,137.25,209.956,63.92100000000001,32.641 +2020-01-03 11:45:00,136.75,208.86900000000003,63.92100000000001,32.641 +2020-01-03 12:00:00,135.72,204.88400000000001,60.79600000000001,32.641 +2020-01-03 12:15:00,135.16,202.011,60.79600000000001,32.641 +2020-01-03 12:30:00,133.9,202.153,60.79600000000001,32.641 +2020-01-03 12:45:00,134.58,203.607,60.79600000000001,32.641 +2020-01-03 13:00:00,130.87,202.96200000000002,59.393,32.641 +2020-01-03 13:15:00,131.78,203.36,59.393,32.641 +2020-01-03 13:30:00,130.35,203.00799999999998,59.393,32.641 +2020-01-03 13:45:00,131.11,202.855,59.393,32.641 +2020-01-03 14:00:00,130.67,200.58700000000002,57.943999999999996,32.641 +2020-01-03 14:15:00,130.14,201.0,57.943999999999996,32.641 +2020-01-03 14:30:00,129.02,202.34799999999998,57.943999999999996,32.641 +2020-01-03 14:45:00,129.81,202.954,57.943999999999996,32.641 +2020-01-03 15:00:00,130.32,203.59099999999998,60.153999999999996,32.641 +2020-01-03 15:15:00,129.09,203.75099999999998,60.153999999999996,32.641 +2020-01-03 15:30:00,128.33,204.56099999999998,60.153999999999996,32.641 +2020-01-03 15:45:00,128.17,206.41299999999998,60.153999999999996,32.641 +2020-01-03 16:00:00,131.49,205.998,62.933,32.641 +2020-01-03 16:15:00,133.11,207.87400000000002,62.933,32.641 +2020-01-03 16:30:00,134.7,210.864,62.933,32.641 +2020-01-03 16:45:00,133.81,212.332,62.933,32.641 +2020-01-03 17:00:00,137.76,214.84900000000002,68.657,32.641 +2020-01-03 17:15:00,136.16,215.076,68.657,32.641 +2020-01-03 17:30:00,140.54,215.513,68.657,32.641 +2020-01-03 17:45:00,137.57,215.02900000000002,68.657,32.641 +2020-01-03 18:00:00,136.81,217.225,67.111,32.641 +2020-01-03 18:15:00,136.99,213.96900000000002,67.111,32.641 +2020-01-03 18:30:00,135.65,213.13,67.111,32.641 +2020-01-03 18:45:00,136.2,213.142,67.111,32.641 +2020-01-03 19:00:00,132.87,213.791,62.434,32.641 +2020-01-03 19:15:00,131.87,211.248,62.434,32.641 +2020-01-03 19:30:00,132.37,208.11900000000003,62.434,32.641 +2020-01-03 19:45:00,134.77,204.162,62.434,32.641 +2020-01-03 20:00:00,128.17,200.44400000000002,61.763000000000005,32.641 +2020-01-03 20:15:00,120.91,193.95,61.763000000000005,32.641 +2020-01-03 20:30:00,117.84,189.834,61.763000000000005,32.641 +2020-01-03 20:45:00,113.28,188.551,61.763000000000005,32.641 +2020-01-03 21:00:00,110.73,186.10299999999998,56.785,32.641 +2020-01-03 21:15:00,113.2,183.95,56.785,32.641 +2020-01-03 21:30:00,110.05,181.924,56.785,32.641 +2020-01-03 21:45:00,104.45,180.86900000000003,56.785,32.641 +2020-01-03 22:00:00,98.56,174.898,52.693000000000005,32.641 +2020-01-03 22:15:00,102.19,168.90400000000002,52.693000000000005,32.641 +2020-01-03 22:30:00,100.03,161.57,52.693000000000005,32.641 +2020-01-03 22:45:00,96.9,157.013,52.693000000000005,32.641 +2020-01-03 23:00:00,89.83,149.83100000000002,45.443999999999996,32.641 +2020-01-03 23:15:00,91.91,146.02700000000002,45.443999999999996,32.641 +2020-01-03 23:30:00,88.18,144.751,45.443999999999996,32.641 +2020-01-03 23:45:00,85.54,143.495,45.443999999999996,32.641 +2020-01-04 00:00:00,82.22,127.199,44.738,32.459 +2020-01-04 00:15:00,83.18,122.48899999999999,44.738,32.459 +2020-01-04 00:30:00,81.48,125.102,44.738,32.459 +2020-01-04 00:45:00,73.34,127.589,44.738,32.459 +2020-01-04 01:00:00,72.21,130.76,40.303000000000004,32.459 +2020-01-04 01:15:00,77.36,131.101,40.303000000000004,32.459 +2020-01-04 01:30:00,78.27,130.754,40.303000000000004,32.459 +2020-01-04 01:45:00,75.98,131.06799999999998,40.303000000000004,32.459 +2020-01-04 02:00:00,69.25,133.903,38.61,32.459 +2020-01-04 02:15:00,74.64,135.233,38.61,32.459 +2020-01-04 02:30:00,74.85,135.217,38.61,32.459 +2020-01-04 02:45:00,73.61,137.407,38.61,32.459 +2020-01-04 03:00:00,68.1,139.812,37.554,32.459 +2020-01-04 03:15:00,73.13,140.717,37.554,32.459 +2020-01-04 03:30:00,75.4,140.84799999999998,37.554,32.459 +2020-01-04 03:45:00,70.56,142.566,37.554,32.459 +2020-01-04 04:00:00,67.07,150.611,37.176,32.459 +2020-01-04 04:15:00,67.97,159.77100000000002,37.176,32.459 +2020-01-04 04:30:00,67.71,160.769,37.176,32.459 +2020-01-04 04:45:00,68.5,161.921,37.176,32.459 +2020-01-04 05:00:00,67.87,178.856,36.893,32.459 +2020-01-04 05:15:00,67.75,189.139,36.893,32.459 +2020-01-04 05:30:00,66.1,186.215,36.893,32.459 +2020-01-04 05:45:00,67.33,184.52,36.893,32.459 +2020-01-04 06:00:00,69.91,201.26,37.803000000000004,32.459 +2020-01-04 06:15:00,69.0,222.77200000000002,37.803000000000004,32.459 +2020-01-04 06:30:00,69.5,219.078,37.803000000000004,32.459 +2020-01-04 06:45:00,71.88,215.377,37.803000000000004,32.459 +2020-01-04 07:00:00,76.68,209.287,41.086999999999996,32.459 +2020-01-04 07:15:00,77.71,214.53599999999997,41.086999999999996,32.459 +2020-01-04 07:30:00,80.15,220.502,41.086999999999996,32.459 +2020-01-04 07:45:00,83.14,225.497,41.086999999999996,32.459 +2020-01-04 08:00:00,85.43,227.446,48.222,32.459 +2020-01-04 08:15:00,85.69,231.175,48.222,32.459 +2020-01-04 08:30:00,89.46,232.06099999999998,48.222,32.459 +2020-01-04 08:45:00,91.91,230.729,48.222,32.459 +2020-01-04 09:00:00,92.65,226.387,52.791000000000004,32.459 +2020-01-04 09:15:00,93.59,224.49200000000002,52.791000000000004,32.459 +2020-01-04 09:30:00,94.68,222.80200000000002,52.791000000000004,32.459 +2020-01-04 09:45:00,96.53,219.69,52.791000000000004,32.459 +2020-01-04 10:00:00,98.05,213.424,54.341,32.459 +2020-01-04 10:15:00,95.0,210.122,54.341,32.459 +2020-01-04 10:30:00,94.99,206.91099999999997,54.341,32.459 +2020-01-04 10:45:00,92.74,206.176,54.341,32.459 +2020-01-04 11:00:00,96.61,204.363,51.94,32.459 +2020-01-04 11:15:00,100.28,201.382,51.94,32.459 +2020-01-04 11:30:00,99.55,200.535,51.94,32.459 +2020-01-04 11:45:00,98.58,198.36700000000002,51.94,32.459 +2020-01-04 12:00:00,96.09,193.4,50.973,32.459 +2020-01-04 12:15:00,98.67,191.18099999999998,50.973,32.459 +2020-01-04 12:30:00,96.52,191.675,50.973,32.459 +2020-01-04 12:45:00,95.72,192.248,50.973,32.459 +2020-01-04 13:00:00,93.57,191.208,48.06399999999999,32.459 +2020-01-04 13:15:00,92.81,189.408,48.06399999999999,32.459 +2020-01-04 13:30:00,91.55,188.543,48.06399999999999,32.459 +2020-01-04 13:45:00,89.25,188.99,48.06399999999999,32.459 +2020-01-04 14:00:00,89.5,188.077,45.707,32.459 +2020-01-04 14:15:00,89.52,187.99,45.707,32.459 +2020-01-04 14:30:00,90.0,187.408,45.707,32.459 +2020-01-04 14:45:00,91.09,188.234,45.707,32.459 +2020-01-04 15:00:00,91.5,189.60299999999998,47.567,32.459 +2020-01-04 15:15:00,91.94,190.57,47.567,32.459 +2020-01-04 15:30:00,92.53,193.02900000000002,47.567,32.459 +2020-01-04 15:45:00,94.28,194.947,47.567,32.459 +2020-01-04 16:00:00,96.74,193.149,52.031000000000006,32.459 +2020-01-04 16:15:00,95.42,196.053,52.031000000000006,32.459 +2020-01-04 16:30:00,100.94,198.982,52.031000000000006,32.459 +2020-01-04 16:45:00,102.46,201.418,52.031000000000006,32.459 +2020-01-04 17:00:00,105.49,203.416,58.218999999999994,32.459 +2020-01-04 17:15:00,104.81,205.575,58.218999999999994,32.459 +2020-01-04 17:30:00,107.13,205.94299999999998,58.218999999999994,32.459 +2020-01-04 17:45:00,108.26,205.013,58.218999999999994,32.459 +2020-01-04 18:00:00,110.16,206.662,57.65,32.459 +2020-01-04 18:15:00,109.91,205.239,57.65,32.459 +2020-01-04 18:30:00,109.66,205.75799999999998,57.65,32.459 +2020-01-04 18:45:00,109.05,202.394,57.65,32.459 +2020-01-04 19:00:00,107.78,204.105,51.261,32.459 +2020-01-04 19:15:00,103.06,201.082,51.261,32.459 +2020-01-04 19:30:00,101.89,198.71599999999998,51.261,32.459 +2020-01-04 19:45:00,102.31,194.47799999999998,51.261,32.459 +2020-01-04 20:00:00,94.91,193.0,44.068000000000005,32.459 +2020-01-04 20:15:00,93.02,188.81400000000002,44.068000000000005,32.459 +2020-01-04 20:30:00,88.29,184.359,44.068000000000005,32.459 +2020-01-04 20:45:00,87.9,182.563,44.068000000000005,32.459 +2020-01-04 21:00:00,84.51,182.58599999999998,38.861,32.459 +2020-01-04 21:15:00,83.28,180.90400000000002,38.861,32.459 +2020-01-04 21:30:00,82.28,180.18200000000002,38.861,32.459 +2020-01-04 21:45:00,81.25,178.737,38.861,32.459 +2020-01-04 22:00:00,77.7,174.207,39.485,32.459 +2020-01-04 22:15:00,77.25,170.87,39.485,32.459 +2020-01-04 22:30:00,74.24,170.22299999999998,39.485,32.459 +2020-01-04 22:45:00,73.18,167.65200000000002,39.485,32.459 +2020-01-04 23:00:00,68.36,163.07399999999998,32.027,32.459 +2020-01-04 23:15:00,68.86,157.509,32.027,32.459 +2020-01-04 23:30:00,66.13,154.256,32.027,32.459 +2020-01-04 23:45:00,65.23,150.387,32.027,32.459 +2020-01-05 00:00:00,61.83,127.708,26.96,32.459 +2020-01-05 00:15:00,59.65,122.706,26.96,32.459 +2020-01-05 00:30:00,56.73,124.90899999999999,26.96,32.459 +2020-01-05 00:45:00,58.04,128.141,26.96,32.459 +2020-01-05 01:00:00,54.64,131.15200000000002,24.295,32.459 +2020-01-05 01:15:00,53.12,132.619,24.295,32.459 +2020-01-05 01:30:00,54.89,132.84799999999998,24.295,32.459 +2020-01-05 01:45:00,55.39,132.83700000000002,24.295,32.459 +2020-01-05 02:00:00,52.81,134.87,24.268,32.459 +2020-01-05 02:15:00,53.85,135.224,24.268,32.459 +2020-01-05 02:30:00,53.36,136.131,24.268,32.459 +2020-01-05 02:45:00,53.22,138.842,24.268,32.459 +2020-01-05 03:00:00,51.24,141.54,23.373,32.459 +2020-01-05 03:15:00,52.77,141.878,23.373,32.459 +2020-01-05 03:30:00,53.33,143.584,23.373,32.459 +2020-01-05 03:45:00,52.95,145.284,23.373,32.459 +2020-01-05 04:00:00,53.02,153.043,23.874000000000002,32.459 +2020-01-05 04:15:00,54.36,161.123,23.874000000000002,32.459 +2020-01-05 04:30:00,55.19,162.089,23.874000000000002,32.459 +2020-01-05 04:45:00,54.83,163.567,23.874000000000002,32.459 +2020-01-05 05:00:00,56.2,176.618,24.871,32.459 +2020-01-05 05:15:00,57.61,184.28099999999998,24.871,32.459 +2020-01-05 05:30:00,58.05,181.218,24.871,32.459 +2020-01-05 05:45:00,58.68,179.833,24.871,32.459 +2020-01-05 06:00:00,58.97,196.65900000000002,23.84,32.459 +2020-01-05 06:15:00,60.37,216.24099999999999,23.84,32.459 +2020-01-05 06:30:00,60.21,211.415,23.84,32.459 +2020-01-05 06:45:00,60.83,206.671,23.84,32.459 +2020-01-05 07:00:00,63.06,203.24599999999998,27.430999999999997,32.459 +2020-01-05 07:15:00,64.35,207.676,27.430999999999997,32.459 +2020-01-05 07:30:00,66.38,212.19400000000002,27.430999999999997,32.459 +2020-01-05 07:45:00,68.85,216.345,27.430999999999997,32.459 +2020-01-05 08:00:00,71.87,220.25099999999998,33.891999999999996,32.459 +2020-01-05 08:15:00,72.96,223.791,33.891999999999996,32.459 +2020-01-05 08:30:00,75.42,226.391,33.891999999999996,32.459 +2020-01-05 08:45:00,77.7,227.232,33.891999999999996,32.459 +2020-01-05 09:00:00,79.34,222.44799999999998,37.571,32.459 +2020-01-05 09:15:00,79.42,221.187,37.571,32.459 +2020-01-05 09:30:00,80.81,219.317,37.571,32.459 +2020-01-05 09:45:00,82.3,216.00799999999998,37.571,32.459 +2020-01-05 10:00:00,83.72,212.428,40.594,32.459 +2020-01-05 10:15:00,84.02,209.692,40.594,32.459 +2020-01-05 10:30:00,86.92,207.107,40.594,32.459 +2020-01-05 10:45:00,89.06,204.26,40.594,32.459 +2020-01-05 11:00:00,91.79,203.445,44.133,32.459 +2020-01-05 11:15:00,98.14,200.63099999999997,44.133,32.459 +2020-01-05 11:30:00,99.24,198.81799999999998,44.133,32.459 +2020-01-05 11:45:00,100.24,197.28900000000002,44.133,32.459 +2020-01-05 12:00:00,99.8,191.658,41.198,32.459 +2020-01-05 12:15:00,96.2,191.544,41.198,32.459 +2020-01-05 12:30:00,92.34,190.454,41.198,32.459 +2020-01-05 12:45:00,91.8,190.02599999999998,41.198,32.459 +2020-01-05 13:00:00,86.98,188.218,37.014,32.459 +2020-01-05 13:15:00,86.22,189.688,37.014,32.459 +2020-01-05 13:30:00,85.32,188.65200000000002,37.014,32.459 +2020-01-05 13:45:00,85.43,188.31799999999998,37.014,32.459 +2020-01-05 14:00:00,83.74,187.613,34.934,32.459 +2020-01-05 14:15:00,83.86,188.78400000000002,34.934,32.459 +2020-01-05 14:30:00,84.5,189.609,34.934,32.459 +2020-01-05 14:45:00,84.63,190.06799999999998,34.934,32.459 +2020-01-05 15:00:00,85.54,189.8,34.588,32.459 +2020-01-05 15:15:00,85.23,191.607,34.588,32.459 +2020-01-05 15:30:00,84.85,194.704,34.588,32.459 +2020-01-05 15:45:00,85.8,197.34099999999998,34.588,32.459 +2020-01-05 16:00:00,87.47,197.61700000000002,37.874,32.459 +2020-01-05 16:15:00,90.49,199.547,37.874,32.459 +2020-01-05 16:30:00,92.21,202.707,37.874,32.459 +2020-01-05 16:45:00,93.29,205.295,37.874,32.459 +2020-01-05 17:00:00,98.04,207.237,47.303999999999995,32.459 +2020-01-05 17:15:00,97.7,208.99900000000002,47.303999999999995,32.459 +2020-01-05 17:30:00,99.31,209.662,47.303999999999995,32.459 +2020-01-05 17:45:00,100.34,211.15,47.303999999999995,32.459 +2020-01-05 18:00:00,102.25,212.196,48.879,32.459 +2020-01-05 18:15:00,100.54,212.206,48.879,32.459 +2020-01-05 18:30:00,100.22,210.523,48.879,32.459 +2020-01-05 18:45:00,99.47,209.142,48.879,32.459 +2020-01-05 19:00:00,99.14,210.358,44.826,32.459 +2020-01-05 19:15:00,98.01,208.015,44.826,32.459 +2020-01-05 19:30:00,96.07,205.486,44.826,32.459 +2020-01-05 19:45:00,94.14,202.801,44.826,32.459 +2020-01-05 20:00:00,93.2,201.287,40.154,32.459 +2020-01-05 20:15:00,91.82,198.157,40.154,32.459 +2020-01-05 20:30:00,90.16,194.97099999999998,40.154,32.459 +2020-01-05 20:45:00,88.47,191.995,40.154,32.459 +2020-01-05 21:00:00,84.27,189.24099999999999,36.549,32.459 +2020-01-05 21:15:00,84.17,186.889,36.549,32.459 +2020-01-05 21:30:00,84.43,186.51,36.549,32.459 +2020-01-05 21:45:00,85.26,185.207,36.549,32.459 +2020-01-05 22:00:00,83.7,179.30900000000003,37.663000000000004,32.459 +2020-01-05 22:15:00,82.23,175.25599999999997,37.663000000000004,32.459 +2020-01-05 22:30:00,80.43,171.27900000000002,37.663000000000004,32.459 +2020-01-05 22:45:00,79.58,167.87099999999998,37.663000000000004,32.459 +2020-01-05 23:00:00,75.67,160.305,31.945,32.459 +2020-01-05 23:15:00,77.15,156.664,31.945,32.459 +2020-01-05 23:30:00,74.59,154.317,31.945,32.459 +2020-01-05 23:45:00,73.41,151.388,31.945,32.459 +2020-01-06 00:00:00,70.86,132.295,31.533,32.641 +2020-01-06 00:15:00,69.7,130.435,31.533,32.641 +2020-01-06 00:30:00,69.11,132.78799999999998,31.533,32.641 +2020-01-06 00:45:00,68.33,135.447,31.533,32.641 +2020-01-06 01:00:00,67.32,138.469,30.56,32.641 +2020-01-06 01:15:00,67.69,139.35399999999998,30.56,32.641 +2020-01-06 01:30:00,67.44,139.616,30.56,32.641 +2020-01-06 01:45:00,67.1,139.725,30.56,32.641 +2020-01-06 02:00:00,67.52,141.722,29.55,32.641 +2020-01-06 02:15:00,67.29,143.738,29.55,32.641 +2020-01-06 02:30:00,67.05,145.003,29.55,32.641 +2020-01-06 02:45:00,67.2,147.05200000000002,29.55,32.641 +2020-01-06 03:00:00,68.35,151.1,27.059,32.641 +2020-01-06 03:15:00,68.78,153.201,27.059,32.641 +2020-01-06 03:30:00,69.82,154.562,27.059,32.641 +2020-01-06 03:45:00,69.92,155.701,27.059,32.641 +2020-01-06 04:00:00,67.73,167.963,28.384,32.641 +2020-01-06 04:15:00,71.53,180.334,28.384,32.641 +2020-01-06 04:30:00,73.1,183.72799999999998,28.384,32.641 +2020-01-06 04:45:00,76.51,185.351,28.384,32.641 +2020-01-06 05:00:00,81.52,215.055,35.915,32.641 +2020-01-06 05:15:00,84.58,243.92,35.915,32.641 +2020-01-06 05:30:00,89.42,241.291,35.915,32.641 +2020-01-06 05:45:00,94.89,233.987,35.915,32.641 +2020-01-06 06:00:00,103.99,232.019,56.18,32.641 +2020-01-06 06:15:00,110.77,236.107,56.18,32.641 +2020-01-06 06:30:00,116.07,239.75,56.18,32.641 +2020-01-06 06:45:00,119.86,244.24,56.18,32.641 +2020-01-06 07:00:00,126.05,243.37599999999998,70.877,32.641 +2020-01-06 07:15:00,129.26,248.982,70.877,32.641 +2020-01-06 07:30:00,131.09,252.704,70.877,32.641 +2020-01-06 07:45:00,132.63,254.012,70.877,32.641 +2020-01-06 08:00:00,136.79,252.68599999999998,65.65,32.641 +2020-01-06 08:15:00,137.86,253.967,65.65,32.641 +2020-01-06 08:30:00,137.45,252.168,65.65,32.641 +2020-01-06 08:45:00,136.78,249.345,65.65,32.641 +2020-01-06 09:00:00,137.29,243.503,62.037,32.641 +2020-01-06 09:15:00,138.96,238.595,62.037,32.641 +2020-01-06 09:30:00,139.49,235.72099999999998,62.037,32.641 +2020-01-06 09:45:00,139.62,232.888,62.037,32.641 +2020-01-06 10:00:00,140.37,228.12599999999998,60.409,32.641 +2020-01-06 10:15:00,140.63,225.046,60.409,32.641 +2020-01-06 10:30:00,138.89,221.533,60.409,32.641 +2020-01-06 10:45:00,138.54,219.613,60.409,32.641 +2020-01-06 11:00:00,137.59,215.89700000000002,60.211999999999996,32.641 +2020-01-06 11:15:00,138.33,215.011,60.211999999999996,32.641 +2020-01-06 11:30:00,139.52,214.644,60.211999999999996,32.641 +2020-01-06 11:45:00,136.44,212.643,60.211999999999996,32.641 +2020-01-06 12:00:00,137.83,209.015,57.733000000000004,32.641 +2020-01-06 12:15:00,134.41,208.912,57.733000000000004,32.641 +2020-01-06 12:30:00,133.37,208.162,57.733000000000004,32.641 +2020-01-06 12:45:00,131.24,209.385,57.733000000000004,32.641 +2020-01-06 13:00:00,130.49,208.141,58.695,32.641 +2020-01-06 13:15:00,127.09,208.16099999999997,58.695,32.641 +2020-01-06 13:30:00,123.67,206.52900000000002,58.695,32.641 +2020-01-06 13:45:00,127.05,206.16299999999998,58.695,32.641 +2020-01-06 14:00:00,129.68,204.84099999999998,59.505,32.641 +2020-01-06 14:15:00,129.73,205.275,59.505,32.641 +2020-01-06 14:30:00,130.81,205.53400000000002,59.505,32.641 +2020-01-06 14:45:00,131.3,205.83599999999998,59.505,32.641 +2020-01-06 15:00:00,131.31,207.50599999999997,59.946000000000005,32.641 +2020-01-06 15:15:00,131.43,207.78400000000002,59.946000000000005,32.641 +2020-01-06 15:30:00,130.17,209.935,59.946000000000005,32.641 +2020-01-06 15:45:00,131.03,212.113,59.946000000000005,32.641 +2020-01-06 16:00:00,134.41,212.476,61.766999999999996,32.641 +2020-01-06 16:15:00,134.55,213.59400000000002,61.766999999999996,32.641 +2020-01-06 16:30:00,140.59,215.763,61.766999999999996,32.641 +2020-01-06 16:45:00,140.87,217.083,61.766999999999996,32.641 +2020-01-06 17:00:00,140.83,218.85299999999998,67.85600000000001,32.641 +2020-01-06 17:15:00,140.84,219.60299999999998,67.85600000000001,32.641 +2020-01-06 17:30:00,142.16,219.729,67.85600000000001,32.641 +2020-01-06 17:45:00,140.41,219.657,67.85600000000001,32.641 +2020-01-06 18:00:00,137.78,221.21599999999998,64.564,32.641 +2020-01-06 18:15:00,136.67,218.96900000000002,64.564,32.641 +2020-01-06 18:30:00,133.62,218.032,64.564,32.641 +2020-01-06 18:45:00,134.52,217.257,64.564,32.641 +2020-01-06 19:00:00,131.97,216.72299999999998,58.536,32.641 +2020-01-06 19:15:00,129.61,213.06,58.536,32.641 +2020-01-06 19:30:00,131.14,211.083,58.536,32.641 +2020-01-06 19:45:00,133.72,207.54,58.536,32.641 +2020-01-06 20:00:00,128.55,203.563,59.888999999999996,32.641 +2020-01-06 20:15:00,117.39,197.7,59.888999999999996,32.641 +2020-01-06 20:30:00,115.28,192.479,59.888999999999996,32.641 +2020-01-06 20:45:00,111.64,191.25099999999998,59.888999999999996,32.641 +2020-01-06 21:00:00,108.63,189.085,52.652,32.641 +2020-01-06 21:15:00,110.16,185.43099999999998,52.652,32.641 +2020-01-06 21:30:00,111.85,184.145,52.652,32.641 +2020-01-06 21:45:00,110.02,182.327,52.652,32.641 +2020-01-06 22:00:00,103.97,173.459,46.17,32.641 +2020-01-06 22:15:00,101.93,167.895,46.17,32.641 +2020-01-06 22:30:00,100.68,153.954,46.17,32.641 +2020-01-06 22:45:00,97.59,145.379,46.17,32.641 +2020-01-06 23:00:00,90.0,138.627,36.281,32.641 +2020-01-06 23:15:00,87.29,137.92700000000002,36.281,32.641 +2020-01-06 23:30:00,83.89,138.554,36.281,32.641 +2020-01-06 23:45:00,88.74,138.484,36.281,32.641 +2020-01-07 00:00:00,86.26,131.85,38.821999999999996,32.641 +2020-01-07 00:15:00,81.91,131.452,38.821999999999996,32.641 +2020-01-07 00:30:00,81.41,132.71200000000002,38.821999999999996,32.641 +2020-01-07 00:45:00,83.42,134.23,38.821999999999996,32.641 +2020-01-07 01:00:00,82.73,137.08700000000002,36.936,32.641 +2020-01-07 01:15:00,80.08,137.469,36.936,32.641 +2020-01-07 01:30:00,78.9,137.929,36.936,32.641 +2020-01-07 01:45:00,81.69,138.401,36.936,32.641 +2020-01-07 02:00:00,81.57,140.446,34.42,32.641 +2020-01-07 02:15:00,80.71,142.245,34.42,32.641 +2020-01-07 02:30:00,78.77,142.898,34.42,32.641 +2020-01-07 02:45:00,81.99,144.93200000000002,34.42,32.641 +2020-01-07 03:00:00,82.0,147.695,33.585,32.641 +2020-01-07 03:15:00,79.21,148.804,33.585,32.641 +2020-01-07 03:30:00,82.09,150.697,33.585,32.641 +2020-01-07 03:45:00,82.69,152.15,33.585,32.641 +2020-01-07 04:00:00,77.46,164.275,35.622,32.641 +2020-01-07 04:15:00,77.37,176.252,35.622,32.641 +2020-01-07 04:30:00,77.18,179.312,35.622,32.641 +2020-01-07 04:45:00,80.05,182.22,35.622,32.641 +2020-01-07 05:00:00,84.68,217.25599999999997,40.599000000000004,32.641 +2020-01-07 05:15:00,88.21,245.796,40.599000000000004,32.641 +2020-01-07 05:30:00,91.8,241.465,40.599000000000004,32.641 +2020-01-07 05:45:00,96.21,234.25900000000001,40.599000000000004,32.641 +2020-01-07 06:00:00,104.74,230.912,55.203,32.641 +2020-01-07 06:15:00,111.62,236.783,55.203,32.641 +2020-01-07 06:30:00,115.53,239.761,55.203,32.641 +2020-01-07 06:45:00,119.58,243.951,55.203,32.641 +2020-01-07 07:00:00,121.42,242.885,69.029,32.641 +2020-01-07 07:15:00,129.39,248.329,69.029,32.641 +2020-01-07 07:30:00,132.48,251.43200000000002,69.029,32.641 +2020-01-07 07:45:00,134.56,253.047,69.029,32.641 +2020-01-07 08:00:00,136.12,251.842,65.85300000000001,32.641 +2020-01-07 08:15:00,135.08,252.024,65.85300000000001,32.641 +2020-01-07 08:30:00,135.3,249.989,65.85300000000001,32.641 +2020-01-07 08:45:00,134.8,246.93400000000003,65.85300000000001,32.641 +2020-01-07 09:00:00,135.59,240.132,61.566,32.641 +2020-01-07 09:15:00,137.31,236.993,61.566,32.641 +2020-01-07 09:30:00,139.13,234.81900000000002,61.566,32.641 +2020-01-07 09:45:00,138.88,231.628,61.566,32.641 +2020-01-07 10:00:00,138.47,226.34,61.244,32.641 +2020-01-07 10:15:00,136.8,222.109,61.244,32.641 +2020-01-07 10:30:00,135.87,218.78,61.244,32.641 +2020-01-07 10:45:00,136.63,217.085,61.244,32.641 +2020-01-07 11:00:00,136.36,214.982,61.16,32.641 +2020-01-07 11:15:00,139.62,213.697,61.16,32.641 +2020-01-07 11:30:00,138.15,212.15400000000002,61.16,32.641 +2020-01-07 11:45:00,134.33,210.957,61.16,32.641 +2020-01-07 12:00:00,132.11,205.859,59.09,32.641 +2020-01-07 12:15:00,133.48,205.292,59.09,32.641 +2020-01-07 12:30:00,132.6,205.255,59.09,32.641 +2020-01-07 12:45:00,132.01,206.10299999999998,59.09,32.641 +2020-01-07 13:00:00,132.8,204.433,60.21,32.641 +2020-01-07 13:15:00,132.97,203.91299999999998,60.21,32.641 +2020-01-07 13:30:00,131.24,203.553,60.21,32.641 +2020-01-07 13:45:00,130.77,203.46599999999998,60.21,32.641 +2020-01-07 14:00:00,129.75,202.437,60.673,32.641 +2020-01-07 14:15:00,129.53,203.049,60.673,32.641 +2020-01-07 14:30:00,124.81,203.976,60.673,32.641 +2020-01-07 14:45:00,126.69,204.27,60.673,32.641 +2020-01-07 15:00:00,127.02,205.505,62.232,32.641 +2020-01-07 15:15:00,126.96,206.055,62.232,32.641 +2020-01-07 15:30:00,127.74,208.46,62.232,32.641 +2020-01-07 15:45:00,128.19,210.165,62.232,32.641 +2020-01-07 16:00:00,130.28,210.956,63.611999999999995,32.641 +2020-01-07 16:15:00,132.81,212.595,63.611999999999995,32.641 +2020-01-07 16:30:00,135.09,215.49900000000002,63.611999999999995,32.641 +2020-01-07 16:45:00,135.68,217.08900000000003,63.611999999999995,32.641 +2020-01-07 17:00:00,136.74,219.416,70.658,32.641 +2020-01-07 17:15:00,137.73,220.201,70.658,32.641 +2020-01-07 17:30:00,140.3,221.10299999999998,70.658,32.641 +2020-01-07 17:45:00,142.14,220.933,70.658,32.641 +2020-01-07 18:00:00,139.97,222.459,68.361,32.641 +2020-01-07 18:15:00,138.96,219.579,68.361,32.641 +2020-01-07 18:30:00,138.24,218.333,68.361,32.641 +2020-01-07 18:45:00,139.74,218.446,68.361,32.641 +2020-01-07 19:00:00,132.95,218.03900000000002,62.922,32.641 +2020-01-07 19:15:00,131.59,214.065,62.922,32.641 +2020-01-07 19:30:00,137.99,211.38400000000001,62.922,32.641 +2020-01-07 19:45:00,136.02,207.86,62.922,32.641 +2020-01-07 20:00:00,126.68,204.014,63.251999999999995,32.641 +2020-01-07 20:15:00,117.77,197.558,63.251999999999995,32.641 +2020-01-07 20:30:00,114.85,193.41400000000002,63.251999999999995,32.641 +2020-01-07 20:45:00,111.71,191.56,63.251999999999995,32.641 +2020-01-07 21:00:00,108.54,188.565,54.47,32.641 +2020-01-07 21:15:00,108.54,185.96599999999998,54.47,32.641 +2020-01-07 21:30:00,111.64,183.882,54.47,32.641 +2020-01-07 21:45:00,109.59,182.312,54.47,32.641 +2020-01-07 22:00:00,99.32,175.27200000000002,51.12,32.641 +2020-01-07 22:15:00,98.89,169.467,51.12,32.641 +2020-01-07 22:30:00,93.04,155.618,51.12,32.641 +2020-01-07 22:45:00,92.29,147.349,51.12,32.641 +2020-01-07 23:00:00,94.19,140.65200000000002,42.156000000000006,32.641 +2020-01-07 23:15:00,93.18,138.885,42.156000000000006,32.641 +2020-01-07 23:30:00,88.85,139.142,42.156000000000006,32.641 +2020-01-07 23:45:00,80.72,138.58700000000002,42.156000000000006,32.641 +2020-01-08 00:00:00,80.57,131.975,37.192,32.641 +2020-01-08 00:15:00,77.7,131.555,37.192,32.641 +2020-01-08 00:30:00,82.22,132.80200000000002,37.192,32.641 +2020-01-08 00:45:00,83.18,134.30200000000002,37.192,32.641 +2020-01-08 01:00:00,80.31,137.168,32.24,32.641 +2020-01-08 01:15:00,80.35,137.54,32.24,32.641 +2020-01-08 01:30:00,81.14,138.001,32.24,32.641 +2020-01-08 01:45:00,83.23,138.461,32.24,32.641 +2020-01-08 02:00:00,82.4,140.52,30.34,32.641 +2020-01-08 02:15:00,76.87,142.319,30.34,32.641 +2020-01-08 02:30:00,81.52,142.981,30.34,32.641 +2020-01-08 02:45:00,82.44,145.014,30.34,32.641 +2020-01-08 03:00:00,82.38,147.77100000000002,29.129,32.641 +2020-01-08 03:15:00,76.92,148.901,29.129,32.641 +2020-01-08 03:30:00,80.45,150.79399999999998,29.129,32.641 +2020-01-08 03:45:00,83.8,152.255,29.129,32.641 +2020-01-08 04:00:00,82.13,164.354,30.075,32.641 +2020-01-08 04:15:00,80.51,176.32,30.075,32.641 +2020-01-08 04:30:00,79.95,179.37900000000002,30.075,32.641 +2020-01-08 04:45:00,82.2,182.28,30.075,32.641 +2020-01-08 05:00:00,86.19,217.273,35.684,32.641 +2020-01-08 05:15:00,86.69,245.778,35.684,32.641 +2020-01-08 05:30:00,92.91,241.455,35.684,32.641 +2020-01-08 05:45:00,97.02,234.27,35.684,32.641 +2020-01-08 06:00:00,105.5,230.947,51.49,32.641 +2020-01-08 06:15:00,111.76,236.826,51.49,32.641 +2020-01-08 06:30:00,116.68,239.821,51.49,32.641 +2020-01-08 06:45:00,121.17,244.044,51.49,32.641 +2020-01-08 07:00:00,125.64,242.99099999999999,68.242,32.641 +2020-01-08 07:15:00,129.08,248.426,68.242,32.641 +2020-01-08 07:30:00,132.63,251.513,68.242,32.641 +2020-01-08 07:45:00,135.49,253.108,68.242,32.641 +2020-01-08 08:00:00,134.07,251.9,63.619,32.641 +2020-01-08 08:15:00,136.8,252.067,63.619,32.641 +2020-01-08 08:30:00,136.39,250.003,63.619,32.641 +2020-01-08 08:45:00,135.84,246.926,63.619,32.641 +2020-01-08 09:00:00,136.47,240.108,61.333,32.641 +2020-01-08 09:15:00,137.33,236.976,61.333,32.641 +2020-01-08 09:30:00,137.5,234.81799999999998,61.333,32.641 +2020-01-08 09:45:00,137.48,231.62099999999998,61.333,32.641 +2020-01-08 10:00:00,134.72,226.333,59.663000000000004,32.641 +2020-01-08 10:15:00,132.18,222.105,59.663000000000004,32.641 +2020-01-08 10:30:00,130.36,218.767,59.663000000000004,32.641 +2020-01-08 10:45:00,128.21,217.075,59.663000000000004,32.641 +2020-01-08 11:00:00,129.5,214.952,59.771,32.641 +2020-01-08 11:15:00,129.67,213.665,59.771,32.641 +2020-01-08 11:30:00,130.99,212.125,59.771,32.641 +2020-01-08 11:45:00,126.7,210.93099999999998,59.771,32.641 +2020-01-08 12:00:00,126.02,205.842,58.723,32.641 +2020-01-08 12:15:00,124.09,205.294,58.723,32.641 +2020-01-08 12:30:00,124.12,205.25099999999998,58.723,32.641 +2020-01-08 12:45:00,123.16,206.101,58.723,32.641 +2020-01-08 13:00:00,121.39,204.422,58.727,32.641 +2020-01-08 13:15:00,121.87,203.891,58.727,32.641 +2020-01-08 13:30:00,120.34,203.52,58.727,32.641 +2020-01-08 13:45:00,120.5,203.426,58.727,32.641 +2020-01-08 14:00:00,121.17,202.41299999999998,59.803999999999995,32.641 +2020-01-08 14:15:00,121.88,203.019,59.803999999999995,32.641 +2020-01-08 14:30:00,122.69,203.952,59.803999999999995,32.641 +2020-01-08 14:45:00,123.96,204.262,59.803999999999995,32.641 +2020-01-08 15:00:00,124.01,205.516,61.05,32.641 +2020-01-08 15:15:00,124.57,206.048,61.05,32.641 +2020-01-08 15:30:00,121.73,208.44799999999998,61.05,32.641 +2020-01-08 15:45:00,124.55,210.141,61.05,32.641 +2020-01-08 16:00:00,126.01,210.935,64.012,32.641 +2020-01-08 16:15:00,128.33,212.583,64.012,32.641 +2020-01-08 16:30:00,131.93,215.49400000000003,64.012,32.641 +2020-01-08 16:45:00,136.83,217.09400000000002,64.012,32.641 +2020-01-08 17:00:00,138.72,219.403,66.751,32.641 +2020-01-08 17:15:00,141.55,220.22,66.751,32.641 +2020-01-08 17:30:00,141.31,221.15200000000002,66.751,32.641 +2020-01-08 17:45:00,141.4,220.99900000000002,66.751,32.641 +2020-01-08 18:00:00,140.41,222.546,65.91199999999999,32.641 +2020-01-08 18:15:00,138.77,219.672,65.91199999999999,32.641 +2020-01-08 18:30:00,137.47,218.43200000000002,65.91199999999999,32.641 +2020-01-08 18:45:00,137.79,218.563,65.91199999999999,32.641 +2020-01-08 19:00:00,135.13,218.12400000000002,63.324,32.641 +2020-01-08 19:15:00,133.38,214.15,63.324,32.641 +2020-01-08 19:30:00,137.98,211.472,63.324,32.641 +2020-01-08 19:45:00,138.21,207.94799999999998,63.324,32.641 +2020-01-08 20:00:00,130.16,204.08599999999998,63.573,32.641 +2020-01-08 20:15:00,121.28,197.63099999999997,63.573,32.641 +2020-01-08 20:30:00,114.19,193.47799999999998,63.573,32.641 +2020-01-08 20:45:00,114.46,191.641,63.573,32.641 +2020-01-08 21:00:00,111.07,188.627,55.073,32.641 +2020-01-08 21:15:00,113.94,186.01,55.073,32.641 +2020-01-08 21:30:00,114.23,183.926,55.073,32.641 +2020-01-08 21:45:00,109.84,182.37,55.073,32.641 +2020-01-08 22:00:00,103.51,175.329,51.321999999999996,32.641 +2020-01-08 22:15:00,99.13,169.53799999999998,51.321999999999996,32.641 +2020-01-08 22:30:00,95.71,155.703,51.321999999999996,32.641 +2020-01-08 22:45:00,101.09,147.44299999999998,51.321999999999996,32.641 +2020-01-08 23:00:00,97.81,140.725,42.09,32.641 +2020-01-08 23:15:00,93.34,138.966,42.09,32.641 +2020-01-08 23:30:00,90.01,139.239,42.09,32.641 +2020-01-08 23:45:00,90.33,138.685,42.09,32.641 +2020-01-09 00:00:00,89.51,132.093,38.399,32.641 +2020-01-09 00:15:00,88.2,131.65,38.399,32.641 +2020-01-09 00:30:00,82.53,132.88299999999998,38.399,32.641 +2020-01-09 00:45:00,87.05,134.366,38.399,32.641 +2020-01-09 01:00:00,85.85,137.24,36.94,32.641 +2020-01-09 01:15:00,83.8,137.60399999999998,36.94,32.641 +2020-01-09 01:30:00,79.51,138.062,36.94,32.641 +2020-01-09 01:45:00,77.14,138.512,36.94,32.641 +2020-01-09 02:00:00,82.48,140.584,35.275,32.641 +2020-01-09 02:15:00,82.45,142.384,35.275,32.641 +2020-01-09 02:30:00,84.42,143.055,35.275,32.641 +2020-01-09 02:45:00,79.29,145.088,35.275,32.641 +2020-01-09 03:00:00,83.67,147.839,35.329,32.641 +2020-01-09 03:15:00,85.27,148.987,35.329,32.641 +2020-01-09 03:30:00,86.25,150.881,35.329,32.641 +2020-01-09 03:45:00,82.05,152.349,35.329,32.641 +2020-01-09 04:00:00,85.8,164.422,36.275,32.641 +2020-01-09 04:15:00,85.66,176.38,36.275,32.641 +2020-01-09 04:30:00,84.93,179.43599999999998,36.275,32.641 +2020-01-09 04:45:00,85.52,182.334,36.275,32.641 +2020-01-09 05:00:00,88.07,217.282,42.193999999999996,32.641 +2020-01-09 05:15:00,91.08,245.75099999999998,42.193999999999996,32.641 +2020-01-09 05:30:00,94.82,241.43599999999998,42.193999999999996,32.641 +2020-01-09 05:45:00,99.1,234.27200000000002,42.193999999999996,32.641 +2020-01-09 06:00:00,105.02,230.97299999999998,56.422,32.641 +2020-01-09 06:15:00,114.36,236.86,56.422,32.641 +2020-01-09 06:30:00,118.47,239.872,56.422,32.641 +2020-01-09 06:45:00,123.49,244.12599999999998,56.422,32.641 +2020-01-09 07:00:00,128.98,243.08900000000003,72.569,32.641 +2020-01-09 07:15:00,133.18,248.513,72.569,32.641 +2020-01-09 07:30:00,135.84,251.582,72.569,32.641 +2020-01-09 07:45:00,136.0,253.157,72.569,32.641 +2020-01-09 08:00:00,136.35,251.945,67.704,32.641 +2020-01-09 08:15:00,136.41,252.09599999999998,67.704,32.641 +2020-01-09 08:30:00,136.61,250.002,67.704,32.641 +2020-01-09 08:45:00,135.57,246.90599999999998,67.704,32.641 +2020-01-09 09:00:00,134.91,240.072,63.434,32.641 +2020-01-09 09:15:00,135.13,236.947,63.434,32.641 +2020-01-09 09:30:00,132.82,234.805,63.434,32.641 +2020-01-09 09:45:00,134.04,231.602,63.434,32.641 +2020-01-09 10:00:00,133.79,226.315,61.88399999999999,32.641 +2020-01-09 10:15:00,132.44,222.09,61.88399999999999,32.641 +2020-01-09 10:30:00,131.18,218.74200000000002,61.88399999999999,32.641 +2020-01-09 10:45:00,129.86,217.054,61.88399999999999,32.641 +2020-01-09 11:00:00,129.31,214.91099999999997,61.481,32.641 +2020-01-09 11:15:00,129.73,213.62400000000002,61.481,32.641 +2020-01-09 11:30:00,129.62,212.08599999999998,61.481,32.641 +2020-01-09 11:45:00,128.23,210.895,61.481,32.641 +2020-01-09 12:00:00,128.19,205.817,59.527,32.641 +2020-01-09 12:15:00,126.99,205.28599999999997,59.527,32.641 +2020-01-09 12:30:00,126.29,205.238,59.527,32.641 +2020-01-09 12:45:00,125.88,206.08900000000003,59.527,32.641 +2020-01-09 13:00:00,125.21,204.40099999999998,58.794,32.641 +2020-01-09 13:15:00,125.26,203.859,58.794,32.641 +2020-01-09 13:30:00,120.6,203.476,58.794,32.641 +2020-01-09 13:45:00,123.97,203.37599999999998,58.794,32.641 +2020-01-09 14:00:00,127.41,202.38099999999997,60.32,32.641 +2020-01-09 14:15:00,128.59,202.979,60.32,32.641 +2020-01-09 14:30:00,127.7,203.919,60.32,32.641 +2020-01-09 14:45:00,128.7,204.245,60.32,32.641 +2020-01-09 15:00:00,129.88,205.519,62.52,32.641 +2020-01-09 15:15:00,129.65,206.03,62.52,32.641 +2020-01-09 15:30:00,128.81,208.423,62.52,32.641 +2020-01-09 15:45:00,129.3,210.108,62.52,32.641 +2020-01-09 16:00:00,130.58,210.90200000000002,64.199,32.641 +2020-01-09 16:15:00,132.89,212.55900000000003,64.199,32.641 +2020-01-09 16:30:00,135.51,215.477,64.199,32.641 +2020-01-09 16:45:00,138.94,217.085,64.199,32.641 +2020-01-09 17:00:00,140.54,219.38,68.19800000000001,32.641 +2020-01-09 17:15:00,141.52,220.227,68.19800000000001,32.641 +2020-01-09 17:30:00,142.06,221.187,68.19800000000001,32.641 +2020-01-09 17:45:00,142.3,221.053,68.19800000000001,32.641 +2020-01-09 18:00:00,140.27,222.622,67.899,32.641 +2020-01-09 18:15:00,139.4,219.75400000000002,67.899,32.641 +2020-01-09 18:30:00,137.51,218.52,67.899,32.641 +2020-01-09 18:45:00,137.88,218.67,67.899,32.641 +2020-01-09 19:00:00,135.66,218.199,64.72399999999999,32.641 +2020-01-09 19:15:00,133.63,214.226,64.72399999999999,32.641 +2020-01-09 19:30:00,136.63,211.551,64.72399999999999,32.641 +2020-01-09 19:45:00,136.33,208.028,64.72399999999999,32.641 +2020-01-09 20:00:00,130.0,204.149,64.062,32.641 +2020-01-09 20:15:00,120.43,197.695,64.062,32.641 +2020-01-09 20:30:00,115.58,193.532,64.062,32.641 +2020-01-09 20:45:00,114.76,191.713,64.062,32.641 +2020-01-09 21:00:00,111.28,188.68,57.971000000000004,32.641 +2020-01-09 21:15:00,114.3,186.046,57.971000000000004,32.641 +2020-01-09 21:30:00,112.74,183.96200000000002,57.971000000000004,32.641 +2020-01-09 21:45:00,107.12,182.422,57.971000000000004,32.641 +2020-01-09 22:00:00,103.37,175.37599999999998,53.715,32.641 +2020-01-09 22:15:00,97.81,169.60299999999998,53.715,32.641 +2020-01-09 22:30:00,96.27,155.78,53.715,32.641 +2020-01-09 22:45:00,99.06,147.52700000000002,53.715,32.641 +2020-01-09 23:00:00,96.54,140.78799999999998,47.8,32.641 +2020-01-09 23:15:00,90.59,139.037,47.8,32.641 +2020-01-09 23:30:00,83.45,139.326,47.8,32.641 +2020-01-09 23:45:00,85.64,138.773,47.8,32.641 +2020-01-10 00:00:00,84.68,131.172,43.656000000000006,32.641 +2020-01-10 00:15:00,87.29,130.907,43.656000000000006,32.641 +2020-01-10 00:30:00,86.37,131.95600000000002,43.656000000000006,32.641 +2020-01-10 00:45:00,81.92,133.513,43.656000000000006,32.641 +2020-01-10 01:00:00,80.49,136.08100000000002,41.263000000000005,32.641 +2020-01-10 01:15:00,84.15,137.489,41.263000000000005,32.641 +2020-01-10 01:30:00,82.86,137.643,41.263000000000005,32.641 +2020-01-10 01:45:00,80.26,138.219,41.263000000000005,32.641 +2020-01-10 02:00:00,82.41,140.32299999999998,40.799,32.641 +2020-01-10 02:15:00,82.9,142.0,40.799,32.641 +2020-01-10 02:30:00,82.52,143.188,40.799,32.641 +2020-01-10 02:45:00,78.57,145.32399999999998,40.799,32.641 +2020-01-10 03:00:00,82.79,146.91,41.398,32.641 +2020-01-10 03:15:00,83.34,149.214,41.398,32.641 +2020-01-10 03:30:00,81.33,151.107,41.398,32.641 +2020-01-10 03:45:00,83.38,152.868,41.398,32.641 +2020-01-10 04:00:00,84.86,165.15900000000002,42.38,32.641 +2020-01-10 04:15:00,82.09,176.97400000000002,42.38,32.641 +2020-01-10 04:30:00,80.74,180.197,42.38,32.641 +2020-01-10 04:45:00,81.91,181.887,42.38,32.641 +2020-01-10 05:00:00,85.77,215.43599999999998,46.181000000000004,32.641 +2020-01-10 05:15:00,88.51,245.451,46.181000000000004,32.641 +2020-01-10 05:30:00,92.4,242.31599999999997,46.181000000000004,32.641 +2020-01-10 05:45:00,97.86,235.141,46.181000000000004,32.641 +2020-01-10 06:00:00,105.68,232.324,59.33,32.641 +2020-01-10 06:15:00,110.88,236.578,59.33,32.641 +2020-01-10 06:30:00,114.95,238.657,59.33,32.641 +2020-01-10 06:45:00,120.02,244.748,59.33,32.641 +2020-01-10 07:00:00,125.32,242.745,72.454,32.641 +2020-01-10 07:15:00,129.26,249.206,72.454,32.641 +2020-01-10 07:30:00,133.08,252.229,72.454,32.641 +2020-01-10 07:45:00,137.34,252.824,72.454,32.641 +2020-01-10 08:00:00,138.92,250.329,67.175,32.641 +2020-01-10 08:15:00,139.19,249.984,67.175,32.641 +2020-01-10 08:30:00,142.05,248.93900000000002,67.175,32.641 +2020-01-10 08:45:00,139.98,244.104,67.175,32.641 +2020-01-10 09:00:00,139.84,237.938,65.365,32.641 +2020-01-10 09:15:00,142.47,235.299,65.365,32.641 +2020-01-10 09:30:00,143.87,232.75599999999997,65.365,32.641 +2020-01-10 09:45:00,144.34,229.4,65.365,32.641 +2020-01-10 10:00:00,143.86,222.885,63.95,32.641 +2020-01-10 10:15:00,145.24,219.442,63.95,32.641 +2020-01-10 10:30:00,146.08,215.968,63.95,32.641 +2020-01-10 10:45:00,145.52,213.80700000000002,63.95,32.641 +2020-01-10 11:00:00,143.53,211.615,63.92100000000001,32.641 +2020-01-10 11:15:00,144.41,209.428,63.92100000000001,32.641 +2020-01-10 11:30:00,142.84,209.82,63.92100000000001,32.641 +2020-01-10 11:45:00,140.57,208.75099999999998,63.92100000000001,32.641 +2020-01-10 12:00:00,139.98,204.835,60.79600000000001,32.641 +2020-01-10 12:15:00,139.61,202.088,60.79600000000001,32.641 +2020-01-10 12:30:00,138.38,202.197,60.79600000000001,32.641 +2020-01-10 12:45:00,137.77,203.66400000000002,60.79600000000001,32.641 +2020-01-10 13:00:00,135.76,202.949,59.393,32.641 +2020-01-10 13:15:00,137.41,203.271,59.393,32.641 +2020-01-10 13:30:00,133.35,202.84099999999998,59.393,32.641 +2020-01-10 13:45:00,131.39,202.644,59.393,32.641 +2020-01-10 14:00:00,131.97,200.481,57.943999999999996,32.641 +2020-01-10 14:15:00,132.24,200.84900000000002,57.943999999999996,32.641 +2020-01-10 14:30:00,130.8,202.25,57.943999999999996,32.641 +2020-01-10 14:45:00,131.39,202.96599999999998,57.943999999999996,32.641 +2020-01-10 15:00:00,131.3,203.739,60.153999999999996,32.641 +2020-01-10 15:15:00,130.95,203.773,60.153999999999996,32.641 +2020-01-10 15:30:00,130.15,204.55,60.153999999999996,32.641 +2020-01-10 15:45:00,129.69,206.333,60.153999999999996,32.641 +2020-01-10 16:00:00,130.75,205.926,62.933,32.641 +2020-01-10 16:15:00,132.79,207.87400000000002,62.933,32.641 +2020-01-10 16:30:00,135.68,210.912,62.933,32.641 +2020-01-10 16:45:00,137.72,212.451,62.933,32.641 +2020-01-10 17:00:00,139.5,214.852,68.657,32.641 +2020-01-10 17:15:00,139.88,215.297,68.657,32.641 +2020-01-10 17:30:00,142.57,215.93400000000003,68.657,32.641 +2020-01-10 17:45:00,139.22,215.576,68.657,32.641 +2020-01-10 18:00:00,136.73,217.919,67.111,32.641 +2020-01-10 18:15:00,136.11,214.695,67.111,32.641 +2020-01-10 18:30:00,134.73,213.893,67.111,32.641 +2020-01-10 18:45:00,135.6,214.03400000000002,67.111,32.641 +2020-01-10 19:00:00,132.42,214.46200000000002,62.434,32.641 +2020-01-10 19:15:00,130.68,211.921,62.434,32.641 +2020-01-10 19:30:00,135.53,208.804,62.434,32.641 +2020-01-10 19:45:00,135.12,204.845,62.434,32.641 +2020-01-10 20:00:00,127.21,201.00900000000001,61.763000000000005,32.641 +2020-01-10 20:15:00,118.7,194.521,61.763000000000005,32.641 +2020-01-10 20:30:00,112.79,190.331,61.763000000000005,32.641 +2020-01-10 20:45:00,111.77,189.175,61.763000000000005,32.641 +2020-01-10 21:00:00,108.32,186.59400000000002,56.785,32.641 +2020-01-10 21:15:00,110.88,184.317,56.785,32.641 +2020-01-10 21:30:00,102.73,182.29,56.785,32.641 +2020-01-10 21:45:00,100.86,181.33900000000003,56.785,32.641 +2020-01-10 22:00:00,96.64,175.354,52.693000000000005,32.641 +2020-01-10 22:15:00,93.07,169.468,52.693000000000005,32.641 +2020-01-10 22:30:00,92.88,162.24,52.693000000000005,32.641 +2020-01-10 22:45:00,93.82,157.739,52.693000000000005,32.641 +2020-01-10 23:00:00,88.99,150.405,45.443999999999996,32.641 +2020-01-10 23:15:00,89.2,146.657,45.443999999999996,32.641 +2020-01-10 23:30:00,85.72,145.495,45.443999999999996,32.641 +2020-01-10 23:45:00,80.79,144.237,45.443999999999996,32.641 +2020-01-11 00:00:00,75.56,128.079,44.738,32.459 +2020-01-11 00:15:00,80.09,123.209,44.738,32.459 +2020-01-11 00:30:00,80.07,125.723,44.738,32.459 +2020-01-11 00:45:00,77.68,128.094,44.738,32.459 +2020-01-11 01:00:00,71.96,131.326,40.303000000000004,32.459 +2020-01-11 01:15:00,70.77,131.606,40.303000000000004,32.459 +2020-01-11 01:30:00,68.37,131.253,40.303000000000004,32.459 +2020-01-11 01:45:00,68.2,131.491,40.303000000000004,32.459 +2020-01-11 02:00:00,69.18,134.41899999999998,38.61,32.459 +2020-01-11 02:15:00,74.74,135.753,38.61,32.459 +2020-01-11 02:30:00,74.65,135.797,38.61,32.459 +2020-01-11 02:45:00,74.36,137.984,38.61,32.459 +2020-01-11 03:00:00,67.49,140.34799999999998,37.554,32.459 +2020-01-11 03:15:00,72.14,141.393,37.554,32.459 +2020-01-11 03:30:00,74.34,141.52200000000002,37.554,32.459 +2020-01-11 03:45:00,74.02,143.29399999999998,37.554,32.459 +2020-01-11 04:00:00,69.83,151.159,37.176,32.459 +2020-01-11 04:15:00,66.48,160.25,37.176,32.459 +2020-01-11 04:30:00,66.65,161.23,37.176,32.459 +2020-01-11 04:45:00,68.43,162.349,37.176,32.459 +2020-01-11 05:00:00,69.3,178.98,36.893,32.459 +2020-01-11 05:15:00,68.52,189.00599999999997,36.893,32.459 +2020-01-11 05:30:00,68.35,186.139,36.893,32.459 +2020-01-11 05:45:00,69.45,184.59400000000002,36.893,32.459 +2020-01-11 06:00:00,71.01,201.507,37.803000000000004,32.459 +2020-01-11 06:15:00,71.8,223.074,37.803000000000004,32.459 +2020-01-11 06:30:00,72.53,219.50099999999998,37.803000000000004,32.459 +2020-01-11 06:45:00,74.42,216.02700000000002,37.803000000000004,32.459 +2020-01-11 07:00:00,77.16,210.03799999999998,41.086999999999996,32.459 +2020-01-11 07:15:00,79.89,215.21599999999998,41.086999999999996,32.459 +2020-01-11 07:30:00,82.88,221.06599999999997,41.086999999999996,32.459 +2020-01-11 07:45:00,87.25,225.924,41.086999999999996,32.459 +2020-01-11 08:00:00,89.61,227.84799999999998,48.222,32.459 +2020-01-11 08:15:00,91.87,231.47099999999998,48.222,32.459 +2020-01-11 08:30:00,94.54,232.15900000000002,48.222,32.459 +2020-01-11 08:45:00,97.83,230.68099999999998,48.222,32.459 +2020-01-11 09:00:00,99.9,226.22400000000002,52.791000000000004,32.459 +2020-01-11 09:15:00,102.11,224.375,52.791000000000004,32.459 +2020-01-11 09:30:00,103.03,222.796,52.791000000000004,32.459 +2020-01-11 09:45:00,104.11,219.641,52.791000000000004,32.459 +2020-01-11 10:00:00,105.67,213.37900000000002,54.341,32.459 +2020-01-11 10:15:00,106.52,210.09400000000002,54.341,32.459 +2020-01-11 10:30:00,107.3,206.815,54.341,32.459 +2020-01-11 10:45:00,107.94,206.1,54.341,32.459 +2020-01-11 11:00:00,109.65,204.15400000000002,51.94,32.459 +2020-01-11 11:15:00,111.25,201.162,51.94,32.459 +2020-01-11 11:30:00,111.53,200.33,51.94,32.459 +2020-01-11 11:45:00,111.53,198.183,51.94,32.459 +2020-01-11 12:00:00,110.54,193.285,50.973,32.459 +2020-01-11 12:15:00,109.01,191.19299999999998,50.973,32.459 +2020-01-11 12:30:00,105.95,191.648,50.973,32.459 +2020-01-11 12:45:00,104.43,192.233,50.973,32.459 +2020-01-11 13:00:00,101.49,191.13,48.06399999999999,32.459 +2020-01-11 13:15:00,99.78,189.25,48.06399999999999,32.459 +2020-01-11 13:30:00,98.12,188.30700000000002,48.06399999999999,32.459 +2020-01-11 13:45:00,96.61,188.71200000000002,48.06399999999999,32.459 +2020-01-11 14:00:00,95.14,187.91299999999998,45.707,32.459 +2020-01-11 14:15:00,94.37,187.77599999999998,45.707,32.459 +2020-01-11 14:30:00,94.65,187.243,45.707,32.459 +2020-01-11 14:45:00,94.99,188.178,45.707,32.459 +2020-01-11 15:00:00,94.68,189.683,47.567,32.459 +2020-01-11 15:15:00,94.55,190.521,47.567,32.459 +2020-01-11 15:30:00,93.53,192.94,47.567,32.459 +2020-01-11 15:45:00,96.02,194.787,47.567,32.459 +2020-01-11 16:00:00,97.55,192.99599999999998,52.031000000000006,32.459 +2020-01-11 16:15:00,98.75,195.96900000000002,52.031000000000006,32.459 +2020-01-11 16:30:00,102.68,198.946,52.031000000000006,32.459 +2020-01-11 16:45:00,104.37,201.447,52.031000000000006,32.459 +2020-01-11 17:00:00,106.29,203.333,58.218999999999994,32.459 +2020-01-11 17:15:00,107.17,205.708,58.218999999999994,32.459 +2020-01-11 17:30:00,108.36,206.278,58.218999999999994,32.459 +2020-01-11 17:45:00,109.4,205.47799999999998,58.218999999999994,32.459 +2020-01-11 18:00:00,108.57,207.27200000000002,57.65,32.459 +2020-01-11 18:15:00,108.91,205.892,57.65,32.459 +2020-01-11 18:30:00,108.15,206.44799999999998,57.65,32.459 +2020-01-11 18:45:00,107.83,203.21400000000003,57.65,32.459 +2020-01-11 19:00:00,105.71,204.699,51.261,32.459 +2020-01-11 19:15:00,103.93,201.683,51.261,32.459 +2020-01-11 19:30:00,102.6,199.333,51.261,32.459 +2020-01-11 19:45:00,101.86,195.09900000000002,51.261,32.459 +2020-01-11 20:00:00,97.56,193.503,44.068000000000005,32.459 +2020-01-11 20:15:00,92.87,189.32299999999998,44.068000000000005,32.459 +2020-01-11 20:30:00,90.31,184.799,44.068000000000005,32.459 +2020-01-11 20:45:00,88.48,183.128,44.068000000000005,32.459 +2020-01-11 21:00:00,86.43,183.017,38.861,32.459 +2020-01-11 21:15:00,84.3,181.21200000000002,38.861,32.459 +2020-01-11 21:30:00,83.24,180.489,38.861,32.459 +2020-01-11 21:45:00,82.41,179.149,38.861,32.459 +2020-01-11 22:00:00,79.49,174.601,39.485,32.459 +2020-01-11 22:15:00,77.77,171.377,39.485,32.459 +2020-01-11 22:30:00,76.13,170.824,39.485,32.459 +2020-01-11 22:45:00,75.32,168.31,39.485,32.459 +2020-01-11 23:00:00,72.71,163.583,32.027,32.459 +2020-01-11 23:15:00,71.28,158.07399999999998,32.027,32.459 +2020-01-11 23:30:00,69.11,154.937,32.027,32.459 +2020-01-11 23:45:00,66.62,151.07,32.027,32.459 +2020-01-12 00:00:00,64.99,128.533,26.96,32.459 +2020-01-12 00:15:00,63.46,123.37200000000001,26.96,32.459 +2020-01-12 00:30:00,61.72,125.475,26.96,32.459 +2020-01-12 00:45:00,60.63,128.591,26.96,32.459 +2020-01-12 01:00:00,59.84,131.655,24.295,32.459 +2020-01-12 01:15:00,59.13,133.06,24.295,32.459 +2020-01-12 01:30:00,58.42,133.279,24.295,32.459 +2020-01-12 01:45:00,57.74,133.195,24.295,32.459 +2020-01-12 02:00:00,57.23,135.319,24.268,32.459 +2020-01-12 02:15:00,56.86,135.67700000000002,24.268,32.459 +2020-01-12 02:30:00,56.65,136.64600000000002,24.268,32.459 +2020-01-12 02:45:00,56.47,139.35399999999998,24.268,32.459 +2020-01-12 03:00:00,56.4,142.011,23.373,32.459 +2020-01-12 03:15:00,56.47,142.487,23.373,32.459 +2020-01-12 03:30:00,56.48,144.191,23.373,32.459 +2020-01-12 03:45:00,56.69,145.944,23.373,32.459 +2020-01-12 04:00:00,57.05,153.52700000000002,23.874000000000002,32.459 +2020-01-12 04:15:00,56.86,161.537,23.874000000000002,32.459 +2020-01-12 04:30:00,57.57,162.489,23.874000000000002,32.459 +2020-01-12 04:45:00,58.1,163.93400000000003,23.874000000000002,32.459 +2020-01-12 05:00:00,58.61,176.683,24.871,32.459 +2020-01-12 05:15:00,59.09,184.1,24.871,32.459 +2020-01-12 05:30:00,58.93,181.088,24.871,32.459 +2020-01-12 05:45:00,59.64,179.84799999999998,24.871,32.459 +2020-01-12 06:00:00,60.42,196.84599999999998,23.84,32.459 +2020-01-12 06:15:00,60.79,216.484,23.84,32.459 +2020-01-12 06:30:00,60.98,211.77,23.84,32.459 +2020-01-12 06:45:00,62.52,207.247,23.84,32.459 +2020-01-12 07:00:00,64.57,203.924,27.430999999999997,32.459 +2020-01-12 07:15:00,66.17,208.28099999999998,27.430999999999997,32.459 +2020-01-12 07:30:00,67.93,212.678,27.430999999999997,32.459 +2020-01-12 07:45:00,69.79,216.687,27.430999999999997,32.459 +2020-01-12 08:00:00,71.93,220.56599999999997,33.891999999999996,32.459 +2020-01-12 08:15:00,74.46,223.995,33.891999999999996,32.459 +2020-01-12 08:30:00,76.78,226.389,33.891999999999996,32.459 +2020-01-12 08:45:00,78.97,227.08900000000003,33.891999999999996,32.459 +2020-01-12 09:00:00,80.51,222.19299999999998,37.571,32.459 +2020-01-12 09:15:00,81.13,220.979,37.571,32.459 +2020-01-12 09:30:00,81.84,219.22099999999998,37.571,32.459 +2020-01-12 09:45:00,82.37,215.87099999999998,37.571,32.459 +2020-01-12 10:00:00,81.27,212.296,40.594,32.459 +2020-01-12 10:15:00,79.61,209.584,40.594,32.459 +2020-01-12 10:30:00,79.77,206.93400000000003,40.594,32.459 +2020-01-12 10:45:00,85.58,204.109,40.594,32.459 +2020-01-12 11:00:00,86.51,203.16299999999998,44.133,32.459 +2020-01-12 11:15:00,88.46,200.34099999999998,44.133,32.459 +2020-01-12 11:30:00,91.87,198.543,44.133,32.459 +2020-01-12 11:45:00,93.46,197.037,44.133,32.459 +2020-01-12 12:00:00,91.63,191.477,41.198,32.459 +2020-01-12 12:15:00,90.3,191.49099999999999,41.198,32.459 +2020-01-12 12:30:00,88.06,190.357,41.198,32.459 +2020-01-12 12:45:00,86.68,189.94,41.198,32.459 +2020-01-12 13:00:00,85.19,188.076,37.014,32.459 +2020-01-12 13:15:00,83.88,189.463,37.014,32.459 +2020-01-12 13:30:00,82.6,188.347,37.014,32.459 +2020-01-12 13:45:00,82.08,187.97099999999998,37.014,32.459 +2020-01-12 14:00:00,82.67,187.389,34.934,32.459 +2020-01-12 14:15:00,82.79,188.51,34.934,32.459 +2020-01-12 14:30:00,82.64,189.378,34.934,32.459 +2020-01-12 14:45:00,85.76,189.947,34.934,32.459 +2020-01-12 15:00:00,83.46,189.813,34.588,32.459 +2020-01-12 15:15:00,83.64,191.487,34.588,32.459 +2020-01-12 15:30:00,84.7,194.537,34.588,32.459 +2020-01-12 15:45:00,85.25,197.101,34.588,32.459 +2020-01-12 16:00:00,86.79,197.385,37.874,32.459 +2020-01-12 16:15:00,88.0,199.38,37.874,32.459 +2020-01-12 16:30:00,92.21,202.588,37.874,32.459 +2020-01-12 16:45:00,94.95,205.236,37.874,32.459 +2020-01-12 17:00:00,97.3,207.06599999999997,47.303999999999995,32.459 +2020-01-12 17:15:00,99.15,209.045,47.303999999999995,32.459 +2020-01-12 17:30:00,100.86,209.912,47.303999999999995,32.459 +2020-01-12 17:45:00,102.12,211.532,47.303999999999995,32.459 +2020-01-12 18:00:00,102.63,212.722,48.879,32.459 +2020-01-12 18:15:00,102.78,212.78599999999997,48.879,32.459 +2020-01-12 18:30:00,101.93,211.138,48.879,32.459 +2020-01-12 18:45:00,100.6,209.889,48.879,32.459 +2020-01-12 19:00:00,99.22,210.878,44.826,32.459 +2020-01-12 19:15:00,96.93,208.544,44.826,32.459 +2020-01-12 19:30:00,98.09,206.03599999999997,44.826,32.459 +2020-01-12 19:45:00,94.04,203.36,44.826,32.459 +2020-01-12 20:00:00,92.48,201.725,40.154,32.459 +2020-01-12 20:15:00,90.52,198.604,40.154,32.459 +2020-01-12 20:30:00,88.61,195.35299999999998,40.154,32.459 +2020-01-12 20:45:00,86.91,192.50099999999998,40.154,32.459 +2020-01-12 21:00:00,86.27,189.613,36.549,32.459 +2020-01-12 21:15:00,85.53,187.137,36.549,32.459 +2020-01-12 21:30:00,85.67,186.76,36.549,32.459 +2020-01-12 21:45:00,86.26,185.56099999999998,36.549,32.459 +2020-01-12 22:00:00,84.68,179.642,37.663000000000004,32.459 +2020-01-12 22:15:00,84.59,175.704,37.663000000000004,32.459 +2020-01-12 22:30:00,81.91,171.81099999999998,37.663000000000004,32.459 +2020-01-12 22:45:00,80.26,168.46,37.663000000000004,32.459 +2020-01-12 23:00:00,77.38,160.747,31.945,32.459 +2020-01-12 23:15:00,76.18,157.165,31.945,32.459 +2020-01-12 23:30:00,75.03,154.933,31.945,32.459 +2020-01-12 23:45:00,75.75,152.011,31.945,32.459 +2020-01-13 00:00:00,70.95,133.061,31.533,32.641 +2020-01-13 00:15:00,70.9,131.047,31.533,32.641 +2020-01-13 00:30:00,70.47,133.298,31.533,32.641 +2020-01-13 00:45:00,69.99,135.843,31.533,32.641 +2020-01-13 01:00:00,67.64,138.91,30.56,32.641 +2020-01-13 01:15:00,66.93,139.731,30.56,32.641 +2020-01-13 01:30:00,67.33,139.983,30.56,32.641 +2020-01-13 01:45:00,67.11,140.019,30.56,32.641 +2020-01-13 02:00:00,66.76,142.105,29.55,32.641 +2020-01-13 02:15:00,67.45,144.125,29.55,32.641 +2020-01-13 02:30:00,67.68,145.453,29.55,32.641 +2020-01-13 02:45:00,67.43,147.497,29.55,32.641 +2020-01-13 03:00:00,67.66,151.507,27.059,32.641 +2020-01-13 03:15:00,68.77,153.741,27.059,32.641 +2020-01-13 03:30:00,68.92,155.1,27.059,32.641 +2020-01-13 03:45:00,68.84,156.29399999999998,27.059,32.641 +2020-01-13 04:00:00,70.83,168.38299999999998,28.384,32.641 +2020-01-13 04:15:00,73.73,180.68599999999998,28.384,32.641 +2020-01-13 04:30:00,73.75,184.06799999999998,28.384,32.641 +2020-01-13 04:45:00,77.08,185.655,28.384,32.641 +2020-01-13 05:00:00,81.53,215.06400000000002,35.915,32.641 +2020-01-13 05:15:00,84.06,243.69099999999997,35.915,32.641 +2020-01-13 05:30:00,88.5,241.104,35.915,32.641 +2020-01-13 05:45:00,94.62,233.94400000000002,35.915,32.641 +2020-01-13 06:00:00,104.44,232.146,56.18,32.641 +2020-01-13 06:15:00,112.23,236.292,56.18,32.641 +2020-01-13 06:30:00,114.44,240.037,56.18,32.641 +2020-01-13 06:45:00,119.14,244.743,56.18,32.641 +2020-01-13 07:00:00,126.22,243.983,70.877,32.641 +2020-01-13 07:15:00,129.2,249.511,70.877,32.641 +2020-01-13 07:30:00,131.57,253.109,70.877,32.641 +2020-01-13 07:45:00,131.68,254.268,70.877,32.641 +2020-01-13 08:00:00,135.22,252.912,65.65,32.641 +2020-01-13 08:15:00,134.08,254.079,65.65,32.641 +2020-01-13 08:30:00,135.2,252.06799999999998,65.65,32.641 +2020-01-13 08:45:00,132.28,249.106,65.65,32.641 +2020-01-13 09:00:00,133.04,243.158,62.037,32.641 +2020-01-13 09:15:00,133.98,238.296,62.037,32.641 +2020-01-13 09:30:00,132.22,235.535,62.037,32.641 +2020-01-13 09:45:00,130.3,232.66299999999998,62.037,32.641 +2020-01-13 10:00:00,129.71,227.908,60.409,32.641 +2020-01-13 10:15:00,129.27,224.858,60.409,32.641 +2020-01-13 10:30:00,127.57,221.285,60.409,32.641 +2020-01-13 10:45:00,130.5,219.388,60.409,32.641 +2020-01-13 11:00:00,125.92,215.54,60.211999999999996,32.641 +2020-01-13 11:15:00,126.17,214.65,60.211999999999996,32.641 +2020-01-13 11:30:00,125.52,214.301,60.211999999999996,32.641 +2020-01-13 11:45:00,127.51,212.32299999999998,60.211999999999996,32.641 +2020-01-13 12:00:00,124.16,208.769,57.733000000000004,32.641 +2020-01-13 12:15:00,123.73,208.793,57.733000000000004,32.641 +2020-01-13 12:30:00,123.65,207.995,57.733000000000004,32.641 +2020-01-13 12:45:00,119.92,209.227,57.733000000000004,32.641 +2020-01-13 13:00:00,118.02,207.935,58.695,32.641 +2020-01-13 13:15:00,118.69,207.868,58.695,32.641 +2020-01-13 13:30:00,116.48,206.155,58.695,32.641 +2020-01-13 13:45:00,117.81,205.75,58.695,32.641 +2020-01-13 14:00:00,124.13,204.56,59.505,32.641 +2020-01-13 14:15:00,122.13,204.937,59.505,32.641 +2020-01-13 14:30:00,125.07,205.237,59.505,32.641 +2020-01-13 14:45:00,121.35,205.65,59.505,32.641 +2020-01-13 15:00:00,123.98,207.451,59.946000000000005,32.641 +2020-01-13 15:15:00,125.58,207.59400000000002,59.946000000000005,32.641 +2020-01-13 15:30:00,124.7,209.69,59.946000000000005,32.641 +2020-01-13 15:45:00,124.42,211.794,59.946000000000005,32.641 +2020-01-13 16:00:00,126.95,212.16400000000002,61.766999999999996,32.641 +2020-01-13 16:15:00,128.1,213.343,61.766999999999996,32.641 +2020-01-13 16:30:00,133.84,215.56,61.766999999999996,32.641 +2020-01-13 16:45:00,134.97,216.93400000000003,61.766999999999996,32.641 +2020-01-13 17:00:00,137.72,218.595,67.85600000000001,32.641 +2020-01-13 17:15:00,139.22,219.562,67.85600000000001,32.641 +2020-01-13 17:30:00,140.31,219.893,67.85600000000001,32.641 +2020-01-13 17:45:00,138.79,219.953,67.85600000000001,32.641 +2020-01-13 18:00:00,138.41,221.658,64.564,32.641 +2020-01-13 18:15:00,136.09,219.475,64.564,32.641 +2020-01-13 18:30:00,135.55,218.57299999999998,64.564,32.641 +2020-01-13 18:45:00,135.23,217.93200000000002,64.564,32.641 +2020-01-13 19:00:00,132.57,217.167,58.536,32.641 +2020-01-13 19:15:00,131.58,213.516,58.536,32.641 +2020-01-13 19:30:00,129.12,211.56400000000002,58.536,32.641 +2020-01-13 19:45:00,134.32,208.04,58.536,32.641 +2020-01-13 20:00:00,128.64,203.938,59.888999999999996,32.641 +2020-01-13 20:15:00,125.25,198.085,59.888999999999996,32.641 +2020-01-13 20:30:00,116.68,192.804,59.888999999999996,32.641 +2020-01-13 20:45:00,117.43,191.696,59.888999999999996,32.641 +2020-01-13 21:00:00,109.83,189.396,52.652,32.641 +2020-01-13 21:15:00,114.34,185.62,52.652,32.641 +2020-01-13 21:30:00,113.42,184.334,52.652,32.641 +2020-01-13 21:45:00,107.41,182.62400000000002,52.652,32.641 +2020-01-13 22:00:00,100.72,173.732,46.17,32.641 +2020-01-13 22:15:00,98.52,168.285,46.17,32.641 +2020-01-13 22:30:00,100.74,154.417,46.17,32.641 +2020-01-13 22:45:00,100.33,145.899,46.17,32.641 +2020-01-13 23:00:00,94.57,139.002,36.281,32.641 +2020-01-13 23:15:00,89.14,138.363,36.281,32.641 +2020-01-13 23:30:00,91.26,139.106,36.281,32.641 +2020-01-13 23:45:00,91.53,139.046,36.281,32.641 +2020-01-14 00:00:00,87.82,132.558,38.821999999999996,32.641 +2020-01-14 00:15:00,81.82,132.01,38.821999999999996,32.641 +2020-01-14 00:30:00,84.32,133.167,38.821999999999996,32.641 +2020-01-14 00:45:00,87.32,134.571,38.821999999999996,32.641 +2020-01-14 01:00:00,84.42,137.464,36.936,32.641 +2020-01-14 01:15:00,79.89,137.782,36.936,32.641 +2020-01-14 01:30:00,77.82,138.22899999999998,36.936,32.641 +2020-01-14 01:45:00,79.93,138.631,36.936,32.641 +2020-01-14 02:00:00,82.47,140.761,34.42,32.641 +2020-01-14 02:15:00,81.18,142.563,34.42,32.641 +2020-01-14 02:30:00,78.27,143.282,34.42,32.641 +2020-01-14 02:45:00,83.03,145.312,34.42,32.641 +2020-01-14 03:00:00,82.63,148.03799999999998,33.585,32.641 +2020-01-14 03:15:00,80.68,149.27700000000002,33.585,32.641 +2020-01-14 03:30:00,74.84,151.167,33.585,32.641 +2020-01-14 03:45:00,75.84,152.67600000000002,33.585,32.641 +2020-01-14 04:00:00,76.53,164.63299999999998,35.622,32.641 +2020-01-14 04:15:00,77.34,176.54,35.622,32.641 +2020-01-14 04:30:00,78.06,179.59400000000002,35.622,32.641 +2020-01-14 04:45:00,80.59,182.463,35.622,32.641 +2020-01-14 05:00:00,83.73,217.205,40.599000000000004,32.641 +2020-01-14 05:15:00,86.8,245.519,40.599000000000004,32.641 +2020-01-14 05:30:00,90.08,241.22400000000002,40.599000000000004,32.641 +2020-01-14 05:45:00,95.43,234.15900000000002,40.599000000000004,32.641 +2020-01-14 06:00:00,104.29,230.98,55.203,32.641 +2020-01-14 06:15:00,109.76,236.90900000000002,55.203,32.641 +2020-01-14 06:30:00,114.01,239.98,55.203,32.641 +2020-01-14 06:45:00,118.59,244.38,55.203,32.641 +2020-01-14 07:00:00,125.25,243.42,69.029,32.641 +2020-01-14 07:15:00,128.89,248.783,69.029,32.641 +2020-01-14 07:30:00,129.58,251.75599999999997,69.029,32.641 +2020-01-14 07:45:00,135.04,253.217,69.029,32.641 +2020-01-14 08:00:00,137.03,251.979,65.85300000000001,32.641 +2020-01-14 08:15:00,136.03,252.045,65.85300000000001,32.641 +2020-01-14 08:30:00,135.16,249.79,65.85300000000001,32.641 +2020-01-14 08:45:00,132.47,246.59900000000002,65.85300000000001,32.641 +2020-01-14 09:00:00,135.18,239.695,61.566,32.641 +2020-01-14 09:15:00,137.97,236.602,61.566,32.641 +2020-01-14 09:30:00,137.36,234.543,61.566,32.641 +2020-01-14 09:45:00,138.26,231.315,61.566,32.641 +2020-01-14 10:00:00,140.95,226.03599999999997,61.244,32.641 +2020-01-14 10:15:00,144.05,221.83900000000003,61.244,32.641 +2020-01-14 10:30:00,146.07,218.455,61.244,32.641 +2020-01-14 10:45:00,144.01,216.787,61.244,32.641 +2020-01-14 11:00:00,132.46,214.55200000000002,61.16,32.641 +2020-01-14 11:15:00,135.5,213.266,61.16,32.641 +2020-01-14 11:30:00,136.58,211.74099999999999,61.16,32.641 +2020-01-14 11:45:00,138.0,210.571,61.16,32.641 +2020-01-14 12:00:00,137.63,205.547,59.09,32.641 +2020-01-14 12:15:00,135.35,205.107,59.09,32.641 +2020-01-14 12:30:00,134.93,205.018,59.09,32.641 +2020-01-14 12:45:00,134.94,205.87400000000002,59.09,32.641 +2020-01-14 13:00:00,133.76,204.162,60.21,32.641 +2020-01-14 13:15:00,131.09,203.554,60.21,32.641 +2020-01-14 13:30:00,129.61,203.111,60.21,32.641 +2020-01-14 13:45:00,134.96,202.985,60.21,32.641 +2020-01-14 14:00:00,133.08,202.09599999999998,60.673,32.641 +2020-01-14 14:15:00,132.64,202.65099999999998,60.673,32.641 +2020-01-14 14:30:00,131.69,203.612,60.673,32.641 +2020-01-14 14:45:00,133.24,204.018,60.673,32.641 +2020-01-14 15:00:00,134.24,205.382,62.232,32.641 +2020-01-14 15:15:00,133.79,205.793,62.232,32.641 +2020-01-14 15:30:00,132.79,208.138,62.232,32.641 +2020-01-14 15:45:00,132.99,209.766,62.232,32.641 +2020-01-14 16:00:00,134.62,210.56599999999997,63.611999999999995,32.641 +2020-01-14 16:15:00,133.49,212.261,63.611999999999995,32.641 +2020-01-14 16:30:00,136.5,215.21200000000002,63.611999999999995,32.641 +2020-01-14 16:45:00,140.39,216.851,63.611999999999995,32.641 +2020-01-14 17:00:00,141.25,219.071,70.658,32.641 +2020-01-14 17:15:00,141.82,220.072,70.658,32.641 +2020-01-14 17:30:00,142.91,221.18200000000002,70.658,32.641 +2020-01-14 17:45:00,141.94,221.146,70.658,32.641 +2020-01-14 18:00:00,140.95,222.817,68.361,32.641 +2020-01-14 18:15:00,139.33,220.011,68.361,32.641 +2020-01-14 18:30:00,138.51,218.8,68.361,32.641 +2020-01-14 18:45:00,138.78,219.049,68.361,32.641 +2020-01-14 19:00:00,134.6,218.407,62.922,32.641 +2020-01-14 19:15:00,133.06,214.447,62.922,32.641 +2020-01-14 19:30:00,130.38,211.797,62.922,32.641 +2020-01-14 19:45:00,135.52,208.298,62.922,32.641 +2020-01-14 20:00:00,131.04,204.324,63.251999999999995,32.641 +2020-01-14 20:15:00,124.9,197.88099999999997,63.251999999999995,32.641 +2020-01-14 20:30:00,119.8,193.68200000000002,63.251999999999995,32.641 +2020-01-14 20:45:00,113.77,191.946,63.251999999999995,32.641 +2020-01-14 21:00:00,111.04,188.81599999999997,54.47,32.641 +2020-01-14 21:15:00,115.36,186.09599999999998,54.47,32.641 +2020-01-14 21:30:00,114.69,184.012,54.47,32.641 +2020-01-14 21:45:00,110.23,182.55,54.47,32.641 +2020-01-14 22:00:00,103.08,175.484,51.12,32.641 +2020-01-14 22:15:00,98.43,169.798,51.12,32.641 +2020-01-14 22:30:00,97.92,156.011,51.12,32.641 +2020-01-14 22:45:00,100.32,147.8,51.12,32.641 +2020-01-14 23:00:00,96.47,140.96200000000002,42.156000000000006,32.641 +2020-01-14 23:15:00,92.03,139.256,42.156000000000006,32.641 +2020-01-14 23:30:00,86.85,139.628,42.156000000000006,32.641 +2020-01-14 23:45:00,87.06,139.088,42.156000000000006,32.641 +2020-01-15 00:00:00,86.86,132.626,37.192,32.641 +2020-01-15 00:15:00,87.23,132.058,37.192,32.641 +2020-01-15 00:30:00,85.9,133.19799999999998,37.192,32.641 +2020-01-15 00:45:00,82.51,134.589,37.192,32.641 +2020-01-15 01:00:00,83.73,137.483,32.24,32.641 +2020-01-15 01:15:00,83.66,137.791,32.24,32.641 +2020-01-15 01:30:00,80.75,138.233,32.24,32.641 +2020-01-15 01:45:00,76.71,138.627,32.24,32.641 +2020-01-15 02:00:00,83.36,140.768,30.34,32.641 +2020-01-15 02:15:00,84.01,142.57,30.34,32.641 +2020-01-15 02:30:00,81.99,143.299,30.34,32.641 +2020-01-15 02:45:00,77.46,145.328,30.34,32.641 +2020-01-15 03:00:00,75.23,148.05,29.129,32.641 +2020-01-15 03:15:00,76.54,149.305,29.129,32.641 +2020-01-15 03:30:00,77.67,151.195,29.129,32.641 +2020-01-15 03:45:00,77.78,152.713,29.129,32.641 +2020-01-15 04:00:00,83.87,164.64700000000002,30.075,32.641 +2020-01-15 04:15:00,85.62,176.545,30.075,32.641 +2020-01-15 04:30:00,87.03,179.59900000000002,30.075,32.641 +2020-01-15 04:45:00,87.26,182.463,30.075,32.641 +2020-01-15 05:00:00,92.08,217.16400000000002,35.684,32.641 +2020-01-15 05:15:00,95.05,245.451,35.684,32.641 +2020-01-15 05:30:00,93.94,241.158,35.684,32.641 +2020-01-15 05:45:00,97.28,234.112,35.684,32.641 +2020-01-15 06:00:00,105.8,230.955,51.49,32.641 +2020-01-15 06:15:00,110.68,236.893,51.49,32.641 +2020-01-15 06:30:00,116.49,239.972,51.49,32.641 +2020-01-15 06:45:00,120.13,244.398,51.49,32.641 +2020-01-15 07:00:00,127.25,243.456,68.242,32.641 +2020-01-15 07:15:00,130.04,248.804,68.242,32.641 +2020-01-15 07:30:00,133.29,251.75599999999997,68.242,32.641 +2020-01-15 07:45:00,136.04,253.19299999999998,68.242,32.641 +2020-01-15 08:00:00,138.64,251.947,63.619,32.641 +2020-01-15 08:15:00,135.35,251.99599999999998,63.619,32.641 +2020-01-15 08:30:00,135.07,249.706,63.619,32.641 +2020-01-15 08:45:00,135.36,246.498,63.619,32.641 +2020-01-15 09:00:00,138.48,239.581,61.333,32.641 +2020-01-15 09:15:00,137.35,236.493,61.333,32.641 +2020-01-15 09:30:00,139.08,234.452,61.333,32.641 +2020-01-15 09:45:00,139.42,231.21900000000002,61.333,32.641 +2020-01-15 10:00:00,139.42,225.94299999999998,59.663000000000004,32.641 +2020-01-15 10:15:00,139.9,221.75400000000002,59.663000000000004,32.641 +2020-01-15 10:30:00,142.04,218.365,59.663000000000004,32.641 +2020-01-15 10:45:00,143.07,216.702,59.663000000000004,32.641 +2020-01-15 11:00:00,139.95,214.44799999999998,59.771,32.641 +2020-01-15 11:15:00,139.24,213.165,59.771,32.641 +2020-01-15 11:30:00,137.7,211.642,59.771,32.641 +2020-01-15 11:45:00,137.77,210.477,59.771,32.641 +2020-01-15 12:00:00,137.15,205.465,58.723,32.641 +2020-01-15 12:15:00,135.27,205.044,58.723,32.641 +2020-01-15 12:30:00,135.67,204.94400000000002,58.723,32.641 +2020-01-15 12:45:00,137.77,205.801,58.723,32.641 +2020-01-15 13:00:00,136.15,204.08700000000002,58.727,32.641 +2020-01-15 13:15:00,136.78,203.465,58.727,32.641 +2020-01-15 13:30:00,136.5,203.01,58.727,32.641 +2020-01-15 13:45:00,136.87,202.877,58.727,32.641 +2020-01-15 14:00:00,136.85,202.014,59.803999999999995,32.641 +2020-01-15 14:15:00,134.91,202.55900000000003,59.803999999999995,32.641 +2020-01-15 14:30:00,134.1,203.52200000000002,59.803999999999995,32.641 +2020-01-15 14:45:00,135.12,203.94400000000002,59.803999999999995,32.641 +2020-01-15 15:00:00,135.73,205.327,61.05,32.641 +2020-01-15 15:15:00,134.79,205.715,61.05,32.641 +2020-01-15 15:30:00,132.55,208.048,61.05,32.641 +2020-01-15 15:45:00,131.89,209.665,61.05,32.641 +2020-01-15 16:00:00,132.28,210.465,64.012,32.641 +2020-01-15 16:15:00,134.26,212.166,64.012,32.641 +2020-01-15 16:30:00,136.16,215.123,64.012,32.641 +2020-01-15 16:45:00,138.74,216.766,64.012,32.641 +2020-01-15 17:00:00,141.87,218.972,66.751,32.641 +2020-01-15 17:15:00,142.23,220.003,66.751,32.641 +2020-01-15 17:30:00,143.82,221.144,66.751,32.641 +2020-01-15 17:45:00,143.42,221.12900000000002,66.751,32.641 +2020-01-15 18:00:00,142.04,222.82,65.91199999999999,32.641 +2020-01-15 18:15:00,140.16,220.03099999999998,65.91199999999999,32.641 +2020-01-15 18:30:00,139.4,218.824,65.91199999999999,32.641 +2020-01-15 18:45:00,140.52,219.09400000000002,65.91199999999999,32.641 +2020-01-15 19:00:00,137.94,218.416,63.324,32.641 +2020-01-15 19:15:00,133.64,214.46099999999998,63.324,32.641 +2020-01-15 19:30:00,130.94,211.817,63.324,32.641 +2020-01-15 19:45:00,129.29,208.326,63.324,32.641 +2020-01-15 20:00:00,123.9,204.331,63.573,32.641 +2020-01-15 20:15:00,121.7,197.892,63.573,32.641 +2020-01-15 20:30:00,116.5,193.687,63.573,32.641 +2020-01-15 20:45:00,115.14,191.967,63.573,32.641 +2020-01-15 21:00:00,110.98,188.81799999999998,55.073,32.641 +2020-01-15 21:15:00,115.16,186.081,55.073,32.641 +2020-01-15 21:30:00,114.07,183.99599999999998,55.073,32.641 +2020-01-15 21:45:00,110.47,182.551,55.073,32.641 +2020-01-15 22:00:00,101.67,175.48,51.321999999999996,32.641 +2020-01-15 22:15:00,100.33,169.81099999999998,51.321999999999996,32.641 +2020-01-15 22:30:00,96.77,156.029,51.321999999999996,32.641 +2020-01-15 22:45:00,95.32,147.825,51.321999999999996,32.641 +2020-01-15 23:00:00,97.65,140.968,42.09,32.641 +2020-01-15 23:15:00,96.42,139.27200000000002,42.09,32.641 +2020-01-15 23:30:00,91.99,139.661,42.09,32.641 +2020-01-15 23:45:00,86.16,139.125,42.09,32.641 +2020-01-16 00:00:00,87.33,139.56,38.399,32.641 +2020-01-16 00:15:00,88.49,139.33,38.399,32.641 +2020-01-16 00:30:00,88.26,140.88299999999998,38.399,32.641 +2020-01-16 00:45:00,83.0,142.724,38.399,32.641 +2020-01-16 01:00:00,83.99,145.79399999999998,36.94,32.641 +2020-01-16 01:15:00,85.07,145.787,36.94,32.641 +2020-01-16 01:30:00,84.84,146.149,36.94,32.641 +2020-01-16 01:45:00,79.18,146.644,36.94,32.641 +2020-01-16 02:00:00,80.14,148.93200000000002,35.275,32.641 +2020-01-16 02:15:00,85.15,151.02200000000002,35.275,32.641 +2020-01-16 02:30:00,84.32,152.084,35.275,32.641 +2020-01-16 02:45:00,82.42,154.27100000000002,35.275,32.641 +2020-01-16 03:00:00,77.71,157.27,35.329,32.641 +2020-01-16 03:15:00,84.16,158.311,35.329,32.641 +2020-01-16 03:30:00,85.53,160.137,35.329,32.641 +2020-01-16 03:45:00,85.45,162.055,35.329,32.641 +2020-01-16 04:00:00,78.58,173.658,36.275,32.641 +2020-01-16 04:15:00,79.47,185.22099999999998,36.275,32.641 +2020-01-16 04:30:00,81.13,188.989,36.275,32.641 +2020-01-16 04:45:00,82.77,192.137,36.275,32.641 +2020-01-16 05:00:00,86.6,227.294,42.193999999999996,32.641 +2020-01-16 05:15:00,89.37,255.28799999999998,42.193999999999996,32.641 +2020-01-16 05:30:00,93.2,250.99099999999999,42.193999999999996,32.641 +2020-01-16 05:45:00,98.25,244.456,42.193999999999996,32.641 +2020-01-16 06:00:00,106.36,241.44099999999997,56.422,32.641 +2020-01-16 06:15:00,111.91,247.579,56.422,32.641 +2020-01-16 06:30:00,115.81,250.795,56.422,32.641 +2020-01-16 06:45:00,121.56,255.86900000000003,56.422,32.641 +2020-01-16 07:00:00,125.43,254.107,72.569,32.641 +2020-01-16 07:15:00,128.69,259.99,72.569,32.641 +2020-01-16 07:30:00,132.2,263.454,72.569,32.641 +2020-01-16 07:45:00,136.04,265.41200000000003,72.569,32.641 +2020-01-16 08:00:00,137.28,264.069,67.704,32.641 +2020-01-16 08:15:00,136.74,264.55400000000003,67.704,32.641 +2020-01-16 08:30:00,137.81,262.16900000000004,67.704,32.641 +2020-01-16 08:45:00,135.89,259.421,67.704,32.641 +2020-01-16 09:00:00,137.97,252.798,63.434,32.641 +2020-01-16 09:15:00,140.1,249.953,63.434,32.641 +2020-01-16 09:30:00,141.78,248.072,63.434,32.641 +2020-01-16 09:45:00,141.49,244.673,63.434,32.641 +2020-01-16 10:00:00,142.24,238.75599999999997,61.88399999999999,32.641 +2020-01-16 10:15:00,140.48,234.90400000000002,61.88399999999999,32.641 +2020-01-16 10:30:00,140.15,230.903,61.88399999999999,32.641 +2020-01-16 10:45:00,140.59,229.00799999999998,61.88399999999999,32.641 +2020-01-16 11:00:00,140.53,225.988,61.481,32.641 +2020-01-16 11:15:00,141.45,224.646,61.481,32.641 +2020-01-16 11:30:00,141.71,222.722,61.481,32.641 +2020-01-16 11:45:00,139.21,222.058,61.481,32.641 +2020-01-16 12:00:00,136.2,218.021,59.527,32.641 +2020-01-16 12:15:00,135.53,217.612,59.527,32.641 +2020-01-16 12:30:00,135.7,217.34900000000002,59.527,32.641 +2020-01-16 12:45:00,136.9,217.868,59.527,32.641 +2020-01-16 13:00:00,135.4,215.40400000000002,58.794,32.641 +2020-01-16 13:15:00,134.78,214.74099999999999,58.794,32.641 +2020-01-16 13:30:00,132.47,213.917,58.794,32.641 +2020-01-16 13:45:00,132.22,214.22,58.794,32.641 +2020-01-16 14:00:00,128.13,213.833,60.32,32.641 +2020-01-16 14:15:00,126.7,214.40200000000002,60.32,32.641 +2020-01-16 14:30:00,124.84,215.28599999999997,60.32,32.641 +2020-01-16 14:45:00,124.2,215.984,60.32,32.641 +2020-01-16 15:00:00,125.48,216.856,62.52,32.641 +2020-01-16 15:15:00,125.05,217.75799999999998,62.52,32.641 +2020-01-16 15:30:00,126.77,219.547,62.52,32.641 +2020-01-16 15:45:00,129.95,220.50099999999998,62.52,32.641 +2020-01-16 16:00:00,132.47,222.225,64.199,32.641 +2020-01-16 16:15:00,131.37,224.09099999999998,64.199,32.641 +2020-01-16 16:30:00,133.46,226.852,64.199,32.641 +2020-01-16 16:45:00,136.14,228.108,64.199,32.641 +2020-01-16 17:00:00,140.04,230.606,68.19800000000001,32.641 +2020-01-16 17:15:00,139.73,231.262,68.19800000000001,32.641 +2020-01-16 17:30:00,140.43,232.16,68.19800000000001,32.641 +2020-01-16 17:45:00,140.42,231.972,68.19800000000001,32.641 +2020-01-16 18:00:00,138.81,233.65400000000002,67.899,32.641 +2020-01-16 18:15:00,136.53,230.218,67.899,32.641 +2020-01-16 18:30:00,137.16,229.18400000000003,67.899,32.641 +2020-01-16 18:45:00,136.92,229.485,67.899,32.641 +2020-01-16 19:00:00,133.32,227.865,64.72399999999999,32.641 +2020-01-16 19:15:00,131.23,223.705,64.72399999999999,32.641 +2020-01-16 19:30:00,133.3,220.62099999999998,64.72399999999999,32.641 +2020-01-16 19:45:00,135.03,217.56900000000002,64.72399999999999,32.641 +2020-01-16 20:00:00,127.62,213.46200000000002,64.062,32.641 +2020-01-16 20:15:00,119.26,206.58700000000002,64.062,32.641 +2020-01-16 20:30:00,116.31,202.333,64.062,32.641 +2020-01-16 20:45:00,111.77,201.076,64.062,32.641 +2020-01-16 21:00:00,108.51,197.449,57.971000000000004,32.641 +2020-01-16 21:15:00,112.3,194.61,57.971000000000004,32.641 +2020-01-16 21:30:00,110.27,192.56900000000002,57.971000000000004,32.641 +2020-01-16 21:45:00,106.27,190.99400000000003,57.971000000000004,32.641 +2020-01-16 22:00:00,97.28,183.658,53.715,32.641 +2020-01-16 22:15:00,96.36,177.688,53.715,32.641 +2020-01-16 22:30:00,94.99,163.819,53.715,32.641 +2020-01-16 22:45:00,98.2,155.327,53.715,32.641 +2020-01-16 23:00:00,94.28,147.961,47.8,32.641 +2020-01-16 23:15:00,91.98,146.525,47.8,32.641 +2020-01-16 23:30:00,84.84,146.689,47.8,32.641 +2020-01-16 23:45:00,82.59,146.202,47.8,32.641 +2020-01-17 00:00:00,85.95,138.651,43.656000000000006,32.641 +2020-01-17 00:15:00,86.53,138.59799999999998,43.656000000000006,32.641 +2020-01-17 00:30:00,85.43,139.931,43.656000000000006,32.641 +2020-01-17 00:45:00,79.36,141.822,43.656000000000006,32.641 +2020-01-17 01:00:00,80.97,144.585,41.263000000000005,32.641 +2020-01-17 01:15:00,83.5,145.747,41.263000000000005,32.641 +2020-01-17 01:30:00,83.45,145.722,41.263000000000005,32.641 +2020-01-17 01:45:00,80.4,146.374,41.263000000000005,32.641 +2020-01-17 02:00:00,78.23,148.619,40.799,32.641 +2020-01-17 02:15:00,74.91,150.584,40.799,32.641 +2020-01-17 02:30:00,73.54,152.134,40.799,32.641 +2020-01-17 02:45:00,74.37,154.489,40.799,32.641 +2020-01-17 03:00:00,79.04,156.16899999999998,41.398,32.641 +2020-01-17 03:15:00,83.49,158.55200000000002,41.398,32.641 +2020-01-17 03:30:00,84.6,160.399,41.398,32.641 +2020-01-17 03:45:00,82.01,162.561,41.398,32.641 +2020-01-17 04:00:00,77.58,174.391,42.38,32.641 +2020-01-17 04:15:00,78.35,185.93099999999998,42.38,32.641 +2020-01-17 04:30:00,79.29,189.803,42.38,32.641 +2020-01-17 04:45:00,82.16,191.699,42.38,32.641 +2020-01-17 05:00:00,85.97,225.387,46.181000000000004,32.641 +2020-01-17 05:15:00,87.85,254.97799999999998,46.181000000000004,32.641 +2020-01-17 05:30:00,94.06,251.938,46.181000000000004,32.641 +2020-01-17 05:45:00,97.27,245.42700000000002,46.181000000000004,32.641 +2020-01-17 06:00:00,106.38,242.907,59.33,32.641 +2020-01-17 06:15:00,111.42,247.27,59.33,32.641 +2020-01-17 06:30:00,115.82,249.47,59.33,32.641 +2020-01-17 06:45:00,119.88,256.536,59.33,32.641 +2020-01-17 07:00:00,127.7,253.679,72.454,32.641 +2020-01-17 07:15:00,130.26,260.601,72.454,32.641 +2020-01-17 07:30:00,132.73,264.178,72.454,32.641 +2020-01-17 07:45:00,134.99,265.091,72.454,32.641 +2020-01-17 08:00:00,136.8,262.293,67.175,32.641 +2020-01-17 08:15:00,135.31,262.188,67.175,32.641 +2020-01-17 08:30:00,136.28,260.932,67.175,32.641 +2020-01-17 08:45:00,136.61,256.327,67.175,32.641 +2020-01-17 09:00:00,136.32,250.61700000000002,65.365,32.641 +2020-01-17 09:15:00,137.58,248.14,65.365,32.641 +2020-01-17 09:30:00,139.47,245.88400000000001,65.365,32.641 +2020-01-17 09:45:00,139.06,242.29,65.365,32.641 +2020-01-17 10:00:00,137.15,235.06400000000002,63.95,32.641 +2020-01-17 10:15:00,136.31,232.081,63.95,32.641 +2020-01-17 10:30:00,137.15,227.899,63.95,32.641 +2020-01-17 10:45:00,138.46,225.50599999999997,63.95,32.641 +2020-01-17 11:00:00,138.45,222.419,63.92100000000001,32.641 +2020-01-17 11:15:00,140.66,220.19799999999998,63.92100000000001,32.641 +2020-01-17 11:30:00,142.55,220.382,63.92100000000001,32.641 +2020-01-17 11:45:00,141.43,219.925,63.92100000000001,32.641 +2020-01-17 12:00:00,140.64,217.108,60.79600000000001,32.641 +2020-01-17 12:15:00,141.7,214.36599999999999,60.79600000000001,32.641 +2020-01-17 12:30:00,140.79,214.257,60.79600000000001,32.641 +2020-01-17 12:45:00,140.1,215.50099999999998,60.79600000000001,32.641 +2020-01-17 13:00:00,138.62,214.043,59.393,32.641 +2020-01-17 13:15:00,137.23,214.293,59.393,32.641 +2020-01-17 13:30:00,134.36,213.351,59.393,32.641 +2020-01-17 13:45:00,134.11,213.528,59.393,32.641 +2020-01-17 14:00:00,133.51,211.956,57.943999999999996,32.641 +2020-01-17 14:15:00,133.72,212.239,57.943999999999996,32.641 +2020-01-17 14:30:00,131.64,213.493,57.943999999999996,32.641 +2020-01-17 14:45:00,132.21,214.667,57.943999999999996,32.641 +2020-01-17 15:00:00,131.29,215.00400000000002,60.153999999999996,32.641 +2020-01-17 15:15:00,129.71,215.408,60.153999999999996,32.641 +2020-01-17 15:30:00,128.64,215.49900000000002,60.153999999999996,32.641 +2020-01-17 15:45:00,127.96,216.497,60.153999999999996,32.641 +2020-01-17 16:00:00,129.48,217.007,62.933,32.641 +2020-01-17 16:15:00,129.9,219.145,62.933,32.641 +2020-01-17 16:30:00,132.34,222.05,62.933,32.641 +2020-01-17 16:45:00,137.1,223.28400000000002,62.933,32.641 +2020-01-17 17:00:00,139.8,225.78599999999997,68.657,32.641 +2020-01-17 17:15:00,138.22,226.025,68.657,32.641 +2020-01-17 17:30:00,139.12,226.56900000000002,68.657,32.641 +2020-01-17 17:45:00,139.16,226.158,68.657,32.641 +2020-01-17 18:00:00,138.22,228.674,67.111,32.641 +2020-01-17 18:15:00,136.69,224.929,67.111,32.641 +2020-01-17 18:30:00,135.95,224.361,67.111,32.641 +2020-01-17 18:45:00,135.85,224.62599999999998,67.111,32.641 +2020-01-17 19:00:00,132.67,223.908,62.434,32.641 +2020-01-17 19:15:00,129.94,221.23,62.434,32.641 +2020-01-17 19:30:00,127.9,217.68,62.434,32.641 +2020-01-17 19:45:00,126.36,214.235,62.434,32.641 +2020-01-17 20:00:00,119.39,210.176,61.763000000000005,32.641 +2020-01-17 20:15:00,116.31,203.215,61.763000000000005,32.641 +2020-01-17 20:30:00,112.3,198.968,61.763000000000005,32.641 +2020-01-17 20:45:00,109.84,198.465,61.763000000000005,32.641 +2020-01-17 21:00:00,104.58,195.234,56.785,32.641 +2020-01-17 21:15:00,101.37,192.667,56.785,32.641 +2020-01-17 21:30:00,99.26,190.696,56.785,32.641 +2020-01-17 21:45:00,97.84,189.733,56.785,32.641 +2020-01-17 22:00:00,96.2,183.52700000000002,52.693000000000005,32.641 +2020-01-17 22:15:00,91.12,177.456,52.693000000000005,32.641 +2020-01-17 22:30:00,88.41,170.262,52.693000000000005,32.641 +2020-01-17 22:45:00,87.24,165.695,52.693000000000005,32.641 +2020-01-17 23:00:00,83.19,157.593,45.443999999999996,32.641 +2020-01-17 23:15:00,82.01,154.141,45.443999999999996,32.641 +2020-01-17 23:30:00,80.42,152.884,45.443999999999996,32.641 +2020-01-17 23:45:00,79.42,151.662,45.443999999999996,32.641 +2020-01-18 00:00:00,75.81,135.17700000000002,44.738,32.459 +2020-01-18 00:15:00,73.43,130.239,44.738,32.459 +2020-01-18 00:30:00,72.12,133.179,44.738,32.459 +2020-01-18 00:45:00,70.8,136.001,44.738,32.459 +2020-01-18 01:00:00,68.46,139.438,40.303000000000004,32.459 +2020-01-18 01:15:00,68.68,139.34,40.303000000000004,32.459 +2020-01-18 01:30:00,68.0,138.83100000000002,40.303000000000004,32.459 +2020-01-18 01:45:00,67.64,139.023,40.303000000000004,32.459 +2020-01-18 02:00:00,66.26,142.22299999999998,38.61,32.459 +2020-01-18 02:15:00,66.19,143.881,38.61,32.459 +2020-01-18 02:30:00,65.47,144.265,38.61,32.459 +2020-01-18 02:45:00,65.76,146.61,38.61,32.459 +2020-01-18 03:00:00,65.61,149.232,37.554,32.459 +2020-01-18 03:15:00,65.84,150.313,37.554,32.459 +2020-01-18 03:30:00,64.93,150.23,37.554,32.459 +2020-01-18 03:45:00,66.07,152.283,37.554,32.459 +2020-01-18 04:00:00,65.87,159.47899999999998,37.176,32.459 +2020-01-18 04:15:00,66.39,168.15,37.176,32.459 +2020-01-18 04:30:00,65.9,169.74400000000003,37.176,32.459 +2020-01-18 04:45:00,68.46,170.998,37.176,32.459 +2020-01-18 05:00:00,67.62,187.06400000000002,36.893,32.459 +2020-01-18 05:15:00,67.44,195.977,36.893,32.459 +2020-01-18 05:30:00,68.22,193.09,36.893,32.459 +2020-01-18 05:45:00,68.87,192.283,36.893,32.459 +2020-01-18 06:00:00,70.41,210.16299999999998,37.803000000000004,32.459 +2020-01-18 06:15:00,71.3,232.584,37.803000000000004,32.459 +2020-01-18 06:30:00,73.03,228.908,37.803000000000004,32.459 +2020-01-18 06:45:00,75.0,225.896,37.803000000000004,32.459 +2020-01-18 07:00:00,78.98,218.862,41.086999999999996,32.459 +2020-01-18 07:15:00,80.53,224.50599999999997,41.086999999999996,32.459 +2020-01-18 07:30:00,83.81,231.007,41.086999999999996,32.459 +2020-01-18 07:45:00,85.94,236.44799999999998,41.086999999999996,32.459 +2020-01-18 08:00:00,88.7,238.415,48.222,32.459 +2020-01-18 08:15:00,89.91,242.604,48.222,32.459 +2020-01-18 08:30:00,92.41,243.21,48.222,32.459 +2020-01-18 08:45:00,95.69,242.15099999999998,48.222,32.459 +2020-01-18 09:00:00,98.41,238.05700000000002,52.791000000000004,32.459 +2020-01-18 09:15:00,98.48,236.391,52.791000000000004,32.459 +2020-01-18 09:30:00,102.21,235.132,52.791000000000004,32.459 +2020-01-18 09:45:00,100.36,231.793,52.791000000000004,32.459 +2020-01-18 10:00:00,100.12,224.771,54.341,32.459 +2020-01-18 10:15:00,100.75,221.933,54.341,32.459 +2020-01-18 10:30:00,101.87,217.99599999999998,54.341,32.459 +2020-01-18 10:45:00,102.85,217.19299999999998,54.341,32.459 +2020-01-18 11:00:00,101.48,214.399,51.94,32.459 +2020-01-18 11:15:00,103.12,211.248,51.94,32.459 +2020-01-18 11:30:00,103.04,210.08900000000003,51.94,32.459 +2020-01-18 11:45:00,100.05,208.422,51.94,32.459 +2020-01-18 12:00:00,97.04,204.50599999999997,50.973,32.459 +2020-01-18 12:15:00,95.62,202.4,50.973,32.459 +2020-01-18 12:30:00,92.58,202.668,50.973,32.459 +2020-01-18 12:45:00,92.09,202.90200000000002,50.973,32.459 +2020-01-18 13:00:00,90.24,201.095,48.06399999999999,32.459 +2020-01-18 13:15:00,87.19,199.011,48.06399999999999,32.459 +2020-01-18 13:30:00,86.44,197.50099999999998,48.06399999999999,32.459 +2020-01-18 13:45:00,89.07,198.437,48.06399999999999,32.459 +2020-01-18 14:00:00,85.42,198.355,45.707,32.459 +2020-01-18 14:15:00,85.02,198.19299999999998,45.707,32.459 +2020-01-18 14:30:00,88.14,197.393,45.707,32.459 +2020-01-18 14:45:00,88.52,198.765,45.707,32.459 +2020-01-18 15:00:00,88.89,199.88299999999998,47.567,32.459 +2020-01-18 15:15:00,89.04,201.095,47.567,32.459 +2020-01-18 15:30:00,91.84,202.926,47.567,32.459 +2020-01-18 15:45:00,89.9,204.063,47.567,32.459 +2020-01-18 16:00:00,91.8,202.982,52.031000000000006,32.459 +2020-01-18 16:15:00,92.59,206.278,52.031000000000006,32.459 +2020-01-18 16:30:00,94.37,209.09900000000002,52.031000000000006,32.459 +2020-01-18 16:45:00,98.68,211.359,52.031000000000006,32.459 +2020-01-18 17:00:00,104.16,213.451,58.218999999999994,32.459 +2020-01-18 17:15:00,105.49,215.894,58.218999999999994,32.459 +2020-01-18 17:30:00,106.99,216.37900000000002,58.218999999999994,32.459 +2020-01-18 17:45:00,107.98,215.463,58.218999999999994,32.459 +2020-01-18 18:00:00,108.94,217.34,57.65,32.459 +2020-01-18 18:15:00,110.75,215.455,57.65,32.459 +2020-01-18 18:30:00,108.32,216.24099999999999,57.65,32.459 +2020-01-18 18:45:00,107.67,213.148,57.65,32.459 +2020-01-18 19:00:00,105.41,213.674,51.261,32.459 +2020-01-18 19:15:00,104.23,210.55700000000002,51.261,32.459 +2020-01-18 19:30:00,103.1,207.775,51.261,32.459 +2020-01-18 19:45:00,104.08,203.93900000000002,51.261,32.459 +2020-01-18 20:00:00,96.04,202.172,44.068000000000005,32.459 +2020-01-18 20:15:00,93.37,197.706,44.068000000000005,32.459 +2020-01-18 20:30:00,90.26,193.16400000000002,44.068000000000005,32.459 +2020-01-18 20:45:00,88.26,191.99400000000003,44.068000000000005,32.459 +2020-01-18 21:00:00,85.63,191.48,38.861,32.459 +2020-01-18 21:15:00,83.97,189.435,38.861,32.459 +2020-01-18 21:30:00,82.78,188.83599999999998,38.861,32.459 +2020-01-18 21:45:00,81.38,187.49400000000003,38.861,32.459 +2020-01-18 22:00:00,78.87,182.81099999999998,39.485,32.459 +2020-01-18 22:15:00,77.45,179.549,39.485,32.459 +2020-01-18 22:30:00,74.7,179.446,39.485,32.459 +2020-01-18 22:45:00,73.83,176.96,39.485,32.459 +2020-01-18 23:00:00,70.86,171.66400000000002,32.027,32.459 +2020-01-18 23:15:00,70.25,166.322,32.027,32.459 +2020-01-18 23:30:00,67.49,162.817,32.027,32.459 +2020-01-18 23:45:00,66.15,158.811,32.027,32.459 +2020-01-19 00:00:00,63.53,135.497,26.96,32.459 +2020-01-19 00:15:00,61.94,130.341,26.96,32.459 +2020-01-19 00:30:00,60.49,132.85,26.96,32.459 +2020-01-19 00:45:00,59.53,136.483,26.96,32.459 +2020-01-19 01:00:00,58.12,139.71,24.295,32.459 +2020-01-19 01:15:00,58.27,140.829,24.295,32.459 +2020-01-19 01:30:00,57.64,140.945,24.295,32.459 +2020-01-19 01:45:00,57.35,140.821,24.295,32.459 +2020-01-19 02:00:00,56.61,143.149,24.268,32.459 +2020-01-19 02:15:00,56.08,143.701,24.268,32.459 +2020-01-19 02:30:00,55.8,145.066,24.268,32.459 +2020-01-19 02:45:00,56.32,147.996,24.268,32.459 +2020-01-19 03:00:00,55.66,150.884,23.373,32.459 +2020-01-19 03:15:00,55.71,151.326,23.373,32.459 +2020-01-19 03:30:00,55.81,153.001,23.373,32.459 +2020-01-19 03:45:00,56.11,155.10299999999998,23.373,32.459 +2020-01-19 04:00:00,55.85,162.005,23.874000000000002,32.459 +2020-01-19 04:15:00,56.49,169.545,23.874000000000002,32.459 +2020-01-19 04:30:00,57.02,170.997,23.874000000000002,32.459 +2020-01-19 04:45:00,57.49,172.642,23.874000000000002,32.459 +2020-01-19 05:00:00,58.49,184.49599999999998,24.871,32.459 +2020-01-19 05:15:00,58.83,190.658,24.871,32.459 +2020-01-19 05:30:00,58.88,187.644,24.871,32.459 +2020-01-19 05:45:00,59.64,187.18900000000002,24.871,32.459 +2020-01-19 06:00:00,59.96,205.362,23.84,32.459 +2020-01-19 06:15:00,60.41,225.62599999999998,23.84,32.459 +2020-01-19 06:30:00,60.71,220.766,23.84,32.459 +2020-01-19 06:45:00,64.2,216.699,23.84,32.459 +2020-01-19 07:00:00,64.77,212.528,27.430999999999997,32.459 +2020-01-19 07:15:00,65.87,217.419,27.430999999999997,32.459 +2020-01-19 07:30:00,68.27,222.238,27.430999999999997,32.459 +2020-01-19 07:45:00,70.01,226.76,27.430999999999997,32.459 +2020-01-19 08:00:00,72.98,230.78099999999998,33.891999999999996,32.459 +2020-01-19 08:15:00,74.51,234.66099999999997,33.891999999999996,32.459 +2020-01-19 08:30:00,77.33,237.02900000000002,33.891999999999996,32.459 +2020-01-19 08:45:00,79.56,238.33,33.891999999999996,32.459 +2020-01-19 09:00:00,81.57,233.78099999999998,37.571,32.459 +2020-01-19 09:15:00,83.04,232.83599999999998,37.571,32.459 +2020-01-19 09:30:00,86.55,231.352,37.571,32.459 +2020-01-19 09:45:00,86.23,227.72299999999998,37.571,32.459 +2020-01-19 10:00:00,87.7,223.55200000000002,40.594,32.459 +2020-01-19 10:15:00,89.59,221.326,40.594,32.459 +2020-01-19 10:30:00,90.48,218.054,40.594,32.459 +2020-01-19 10:45:00,92.41,214.893,40.594,32.459 +2020-01-19 11:00:00,94.56,213.213,44.133,32.459 +2020-01-19 11:15:00,98.06,210.283,44.133,32.459 +2020-01-19 11:30:00,99.96,208.044,44.133,32.459 +2020-01-19 11:45:00,100.24,207.048,44.133,32.459 +2020-01-19 12:00:00,97.6,202.331,41.198,32.459 +2020-01-19 12:15:00,96.12,202.545,41.198,32.459 +2020-01-19 12:30:00,92.64,201.079,41.198,32.459 +2020-01-19 12:45:00,92.83,200.282,41.198,32.459 +2020-01-19 13:00:00,87.94,197.68400000000003,37.014,32.459 +2020-01-19 13:15:00,87.17,199.167,37.014,32.459 +2020-01-19 13:30:00,85.79,197.56099999999998,37.014,32.459 +2020-01-19 13:45:00,85.29,197.56599999999997,37.014,32.459 +2020-01-19 14:00:00,84.54,197.63099999999997,34.934,32.459 +2020-01-19 14:15:00,83.97,198.785,34.934,32.459 +2020-01-19 14:30:00,84.35,199.588,34.934,32.459 +2020-01-19 14:45:00,85.14,200.653,34.934,32.459 +2020-01-19 15:00:00,84.99,199.99,34.588,32.459 +2020-01-19 15:15:00,84.82,202.16,34.588,32.459 +2020-01-19 15:30:00,85.3,204.67700000000002,34.588,32.459 +2020-01-19 15:45:00,84.88,206.55900000000003,34.588,32.459 +2020-01-19 16:00:00,86.12,207.805,37.874,32.459 +2020-01-19 16:15:00,86.01,210.03400000000002,37.874,32.459 +2020-01-19 16:30:00,87.08,213.02700000000002,37.874,32.459 +2020-01-19 16:45:00,89.57,215.435,37.874,32.459 +2020-01-19 17:00:00,97.87,217.421,47.303999999999995,32.459 +2020-01-19 17:15:00,102.85,219.338,47.303999999999995,32.459 +2020-01-19 17:30:00,105.44,220.085,47.303999999999995,32.459 +2020-01-19 17:45:00,106.76,221.72400000000002,47.303999999999995,32.459 +2020-01-19 18:00:00,106.95,222.90200000000002,48.879,32.459 +2020-01-19 18:15:00,108.0,222.58700000000002,48.879,32.459 +2020-01-19 18:30:00,104.37,221.048,48.879,32.459 +2020-01-19 18:45:00,103.14,220.05900000000003,48.879,32.459 +2020-01-19 19:00:00,101.77,219.907,44.826,32.459 +2020-01-19 19:15:00,99.54,217.583,44.826,32.459 +2020-01-19 19:30:00,98.11,214.65400000000002,44.826,32.459 +2020-01-19 19:45:00,96.83,212.50400000000002,44.826,32.459 +2020-01-19 20:00:00,98.04,210.7,40.154,32.459 +2020-01-19 20:15:00,101.48,207.36900000000003,40.154,32.459 +2020-01-19 20:30:00,97.9,204.132,40.154,32.459 +2020-01-19 20:45:00,89.29,201.812,40.154,32.459 +2020-01-19 21:00:00,89.58,198.354,36.549,32.459 +2020-01-19 21:15:00,86.78,195.61900000000003,36.549,32.459 +2020-01-19 21:30:00,86.94,195.425,36.549,32.459 +2020-01-19 21:45:00,87.39,194.21200000000002,36.549,32.459 +2020-01-19 22:00:00,87.92,187.94099999999997,37.663000000000004,32.459 +2020-01-19 22:15:00,85.91,184.03,37.663000000000004,32.459 +2020-01-19 22:30:00,86.09,180.403,37.663000000000004,32.459 +2020-01-19 22:45:00,90.89,177.109,37.663000000000004,32.459 +2020-01-19 23:00:00,87.77,168.668,31.945,32.459 +2020-01-19 23:15:00,86.14,165.292,31.945,32.459 +2020-01-19 23:30:00,80.64,162.781,31.945,32.459 +2020-01-19 23:45:00,82.46,159.77200000000002,31.945,32.459 +2020-01-20 00:00:00,84.43,140.184,31.533,32.641 +2020-01-20 00:15:00,82.35,138.34799999999998,31.533,32.641 +2020-01-20 00:30:00,79.55,141.045,31.533,32.641 +2020-01-20 00:45:00,74.22,144.09799999999998,31.533,32.641 +2020-01-20 01:00:00,68.93,147.299,30.56,32.641 +2020-01-20 01:15:00,74.43,147.789,30.56,32.641 +2020-01-20 01:30:00,78.16,147.909,30.56,32.641 +2020-01-20 01:45:00,77.86,147.925,30.56,32.641 +2020-01-20 02:00:00,74.11,150.179,29.55,32.641 +2020-01-20 02:15:00,78.18,152.602,29.55,32.641 +2020-01-20 02:30:00,78.02,154.341,29.55,32.641 +2020-01-20 02:45:00,78.43,156.56799999999998,29.55,32.641 +2020-01-20 03:00:00,75.4,160.888,27.059,32.641 +2020-01-20 03:15:00,72.87,163.166,27.059,32.641 +2020-01-20 03:30:00,73.43,164.412,27.059,32.641 +2020-01-20 03:45:00,74.76,165.95,27.059,32.641 +2020-01-20 04:00:00,81.45,177.48,28.384,32.641 +2020-01-20 04:15:00,80.59,189.41,28.384,32.641 +2020-01-20 04:30:00,78.24,193.53599999999997,28.384,32.641 +2020-01-20 04:45:00,80.69,195.301,28.384,32.641 +2020-01-20 05:00:00,85.34,224.606,35.915,32.641 +2020-01-20 05:15:00,87.03,252.854,35.915,32.641 +2020-01-20 05:30:00,92.23,250.43200000000002,35.915,32.641 +2020-01-20 05:45:00,96.51,243.827,35.915,32.641 +2020-01-20 06:00:00,105.11,242.514,56.18,32.641 +2020-01-20 06:15:00,109.59,246.791,56.18,32.641 +2020-01-20 06:30:00,116.86,250.736,56.18,32.641 +2020-01-20 06:45:00,120.28,256.20099999999996,56.18,32.641 +2020-01-20 07:00:00,128.01,254.76,70.877,32.641 +2020-01-20 07:15:00,133.06,260.723,70.877,32.641 +2020-01-20 07:30:00,134.78,264.745,70.877,32.641 +2020-01-20 07:45:00,134.45,266.157,70.877,32.641 +2020-01-20 08:00:00,137.24,264.639,65.65,32.641 +2020-01-20 08:15:00,136.02,266.177,65.65,32.641 +2020-01-20 08:30:00,137.76,263.861,65.65,32.641 +2020-01-20 08:45:00,135.54,261.198,65.65,32.641 +2020-01-20 09:00:00,137.3,255.574,62.037,32.641 +2020-01-20 09:15:00,140.43,250.84400000000002,62.037,32.641 +2020-01-20 09:30:00,141.76,248.355,62.037,32.641 +2020-01-20 09:45:00,141.7,245.425,62.037,32.641 +2020-01-20 10:00:00,140.32,239.98,60.409,32.641 +2020-01-20 10:15:00,143.66,237.407,60.409,32.641 +2020-01-20 10:30:00,143.46,233.18,60.409,32.641 +2020-01-20 10:45:00,142.34,231.155,60.409,32.641 +2020-01-20 11:00:00,141.51,226.299,60.211999999999996,32.641 +2020-01-20 11:15:00,141.96,225.43,60.211999999999996,32.641 +2020-01-20 11:30:00,141.04,224.695,60.211999999999996,32.641 +2020-01-20 11:45:00,140.21,223.153,60.211999999999996,32.641 +2020-01-20 12:00:00,137.28,220.753,57.733000000000004,32.641 +2020-01-20 12:15:00,135.08,220.96900000000002,57.733000000000004,32.641 +2020-01-20 12:30:00,134.0,219.947,57.733000000000004,32.641 +2020-01-20 12:45:00,133.78,220.92700000000002,57.733000000000004,32.641 +2020-01-20 13:00:00,132.27,218.886,58.695,32.641 +2020-01-20 13:15:00,132.8,218.87,58.695,32.641 +2020-01-20 13:30:00,131.49,216.606,58.695,32.641 +2020-01-20 13:45:00,135.03,216.507,58.695,32.641 +2020-01-20 14:00:00,134.0,215.979,59.505,32.641 +2020-01-20 14:15:00,133.27,216.283,59.505,32.641 +2020-01-20 14:30:00,132.16,216.48,59.505,32.641 +2020-01-20 14:45:00,133.29,217.21,59.505,32.641 +2020-01-20 15:00:00,134.34,218.625,59.946000000000005,32.641 +2020-01-20 15:15:00,131.87,219.19099999999997,59.946000000000005,32.641 +2020-01-20 15:30:00,131.59,220.61599999999999,59.946000000000005,32.641 +2020-01-20 15:45:00,130.93,222.04,59.946000000000005,32.641 +2020-01-20 16:00:00,132.11,223.24900000000002,61.766999999999996,32.641 +2020-01-20 16:15:00,130.14,224.595,61.766999999999996,32.641 +2020-01-20 16:30:00,131.7,226.576,61.766999999999996,32.641 +2020-01-20 16:45:00,135.3,227.615,61.766999999999996,32.641 +2020-01-20 17:00:00,141.09,229.46099999999998,67.85600000000001,32.641 +2020-01-20 17:15:00,139.31,230.275,67.85600000000001,32.641 +2020-01-20 17:30:00,138.86,230.47799999999998,67.85600000000001,32.641 +2020-01-20 17:45:00,138.41,230.486,67.85600000000001,32.641 +2020-01-20 18:00:00,138.69,232.252,64.564,32.641 +2020-01-20 18:15:00,137.29,229.68,64.564,32.641 +2020-01-20 18:30:00,136.61,228.98,64.564,32.641 +2020-01-20 18:45:00,137.05,228.43400000000003,64.564,32.641 +2020-01-20 19:00:00,133.91,226.423,58.536,32.641 +2020-01-20 19:15:00,132.7,222.625,58.536,32.641 +2020-01-20 19:30:00,128.93,220.31099999999998,58.536,32.641 +2020-01-20 19:45:00,128.61,217.30700000000002,58.536,32.641 +2020-01-20 20:00:00,121.04,212.972,59.888999999999996,32.641 +2020-01-20 20:15:00,117.83,206.653,59.888999999999996,32.641 +2020-01-20 20:30:00,115.43,201.231,59.888999999999996,32.641 +2020-01-20 20:45:00,114.45,200.747,59.888999999999996,32.641 +2020-01-20 21:00:00,108.29,197.956,52.652,32.641 +2020-01-20 21:15:00,112.06,193.812,52.652,32.641 +2020-01-20 21:30:00,112.01,192.627,52.652,32.641 +2020-01-20 21:45:00,109.57,190.88400000000001,52.652,32.641 +2020-01-20 22:00:00,100.81,181.58599999999998,46.17,32.641 +2020-01-20 22:15:00,98.31,175.95,46.17,32.641 +2020-01-20 22:30:00,96.61,162.003,46.17,32.641 +2020-01-20 22:45:00,99.56,153.227,46.17,32.641 +2020-01-20 23:00:00,96.3,145.66,36.281,32.641 +2020-01-20 23:15:00,94.34,145.513,36.281,32.641 +2020-01-20 23:30:00,84.13,146.162,36.281,32.641 +2020-01-20 23:45:00,85.68,146.227,36.281,32.641 +2020-01-21 00:00:00,88.44,139.76,38.821999999999996,32.641 +2020-01-21 00:15:00,87.49,139.435,38.821999999999996,32.641 +2020-01-21 00:30:00,86.84,140.901,38.821999999999996,32.641 +2020-01-21 00:45:00,82.6,142.671,38.821999999999996,32.641 +2020-01-21 01:00:00,84.63,145.717,36.936,32.641 +2020-01-21 01:15:00,85.35,145.653,36.936,32.641 +2020-01-21 01:30:00,83.29,145.993,36.936,32.641 +2020-01-21 01:45:00,81.04,146.444,36.936,32.641 +2020-01-21 02:00:00,83.81,148.781,34.42,32.641 +2020-01-21 02:15:00,86.37,150.878,34.42,32.641 +2020-01-21 02:30:00,82.71,151.991,34.42,32.641 +2020-01-21 02:45:00,82.96,154.17600000000002,34.42,32.641 +2020-01-21 03:00:00,82.05,157.155,33.585,32.641 +2020-01-21 03:15:00,84.36,158.278,33.585,32.641 +2020-01-21 03:30:00,78.36,160.099,33.585,32.641 +2020-01-21 03:45:00,85.53,162.072,33.585,32.641 +2020-01-21 04:00:00,85.62,173.56400000000002,35.622,32.641 +2020-01-21 04:15:00,85.41,185.06599999999997,35.622,32.641 +2020-01-21 04:30:00,84.33,188.84900000000002,35.622,32.641 +2020-01-21 04:45:00,89.36,191.958,35.622,32.641 +2020-01-21 05:00:00,95.38,226.903,40.599000000000004,32.641 +2020-01-21 05:15:00,91.27,254.767,40.599000000000004,32.641 +2020-01-21 05:30:00,93.24,250.47400000000002,40.599000000000004,32.641 +2020-01-21 05:45:00,98.12,244.033,40.599000000000004,32.641 +2020-01-21 06:00:00,108.67,241.128,55.203,32.641 +2020-01-21 06:15:00,112.52,247.321,55.203,32.641 +2020-01-21 06:30:00,114.67,250.555,55.203,32.641 +2020-01-21 06:45:00,119.03,255.76,55.203,32.641 +2020-01-21 07:00:00,126.8,254.093,69.029,32.641 +2020-01-21 07:15:00,129.56,259.89599999999996,69.029,32.641 +2020-01-21 07:30:00,135.6,263.238,69.029,32.641 +2020-01-21 07:45:00,132.37,265.056,69.029,32.641 +2020-01-21 08:00:00,134.51,263.666,65.85300000000001,32.641 +2020-01-21 08:15:00,134.53,264.052,65.85300000000001,32.641 +2020-01-21 08:30:00,135.3,261.45099999999996,65.85300000000001,32.641 +2020-01-21 08:45:00,136.72,258.621,65.85300000000001,32.641 +2020-01-21 09:00:00,137.69,251.945,61.566,32.641 +2020-01-21 09:15:00,138.99,249.12900000000002,61.566,32.641 +2020-01-21 09:30:00,140.22,247.34099999999998,61.566,32.641 +2020-01-21 09:45:00,141.41,243.92,61.566,32.641 +2020-01-21 10:00:00,138.32,238.024,61.244,32.641 +2020-01-21 10:15:00,140.84,234.231,61.244,32.641 +2020-01-21 10:30:00,140.25,230.209,61.244,32.641 +2020-01-21 10:45:00,139.51,228.35,61.244,32.641 +2020-01-21 11:00:00,139.77,225.236,61.16,32.641 +2020-01-21 11:15:00,140.28,223.91,61.16,32.641 +2020-01-21 11:30:00,141.43,222.003,61.16,32.641 +2020-01-21 11:45:00,141.15,221.368,61.16,32.641 +2020-01-21 12:00:00,137.98,217.40200000000002,59.09,32.641 +2020-01-21 12:15:00,136.33,217.08900000000003,59.09,32.641 +2020-01-21 12:30:00,134.76,216.75599999999997,59.09,32.641 +2020-01-21 12:45:00,135.83,217.27200000000002,59.09,32.641 +2020-01-21 13:00:00,136.03,214.812,60.21,32.641 +2020-01-21 13:15:00,137.42,214.06099999999998,60.21,32.641 +2020-01-21 13:30:00,136.56,213.168,60.21,32.641 +2020-01-21 13:45:00,136.51,213.452,60.21,32.641 +2020-01-21 14:00:00,133.43,213.22400000000002,60.673,32.641 +2020-01-21 14:15:00,132.93,213.732,60.673,32.641 +2020-01-21 14:30:00,131.47,214.611,60.673,32.641 +2020-01-21 14:45:00,132.26,215.398,60.673,32.641 +2020-01-21 15:00:00,133.45,216.356,62.232,32.641 +2020-01-21 15:15:00,131.81,217.135,62.232,32.641 +2020-01-21 15:30:00,129.92,218.83700000000002,62.232,32.641 +2020-01-21 15:45:00,129.62,219.72,62.232,32.641 +2020-01-21 16:00:00,130.89,221.453,63.611999999999995,32.641 +2020-01-21 16:15:00,130.05,223.34099999999998,63.611999999999995,32.641 +2020-01-21 16:30:00,131.99,226.138,63.611999999999995,32.641 +2020-01-21 16:45:00,133.7,227.4,63.611999999999995,32.641 +2020-01-21 17:00:00,141.22,229.834,70.658,32.641 +2020-01-21 17:15:00,139.73,230.655,70.658,32.641 +2020-01-21 17:30:00,139.98,231.72299999999998,70.658,32.641 +2020-01-21 17:45:00,140.83,231.653,70.658,32.641 +2020-01-21 18:00:00,139.47,233.438,68.361,32.641 +2020-01-21 18:15:00,137.77,230.11900000000003,68.361,32.641 +2020-01-21 18:30:00,136.43,229.109,68.361,32.641 +2020-01-21 18:45:00,136.05,229.52200000000002,68.361,32.641 +2020-01-21 19:00:00,132.77,227.708,62.922,32.641 +2020-01-21 19:15:00,131.36,223.574,62.922,32.641 +2020-01-21 19:30:00,136.19,220.53799999999998,62.922,32.641 +2020-01-21 19:45:00,137.49,217.548,62.922,32.641 +2020-01-21 20:00:00,125.64,213.32299999999998,63.251999999999995,32.641 +2020-01-21 20:15:00,119.24,206.47299999999998,63.251999999999995,32.641 +2020-01-21 20:30:00,114.43,202.202,63.251999999999995,32.641 +2020-01-21 20:45:00,114.99,201.021,63.251999999999995,32.641 +2020-01-21 21:00:00,107.66,197.293,54.47,32.641 +2020-01-21 21:15:00,113.17,194.36599999999999,54.47,32.641 +2020-01-21 21:30:00,112.31,192.32,54.47,32.641 +2020-01-21 21:45:00,106.88,190.829,54.47,32.641 +2020-01-21 22:00:00,100.25,183.455,51.12,32.641 +2020-01-21 22:15:00,96.44,177.588,51.12,32.641 +2020-01-21 22:30:00,95.56,163.696,51.12,32.641 +2020-01-21 22:45:00,98.08,155.245,51.12,32.641 +2020-01-21 23:00:00,92.47,147.793,42.156000000000006,32.641 +2020-01-21 23:15:00,91.54,146.417,42.156000000000006,32.641 +2020-01-21 23:30:00,85.61,146.672,42.156000000000006,32.641 +2020-01-21 23:45:00,89.01,146.222,42.156000000000006,32.641 +2020-01-22 00:00:00,85.62,139.774,37.192,32.641 +2020-01-22 00:15:00,81.83,139.43200000000002,37.192,32.641 +2020-01-22 00:30:00,78.79,140.88,37.192,32.641 +2020-01-22 00:45:00,84.5,142.636,37.192,32.641 +2020-01-22 01:00:00,81.61,145.673,32.24,32.641 +2020-01-22 01:15:00,82.94,145.59799999999998,32.24,32.641 +2020-01-22 01:30:00,75.82,145.93200000000002,32.24,32.641 +2020-01-22 01:45:00,81.67,146.376,32.24,32.641 +2020-01-22 02:00:00,79.49,148.722,30.34,32.641 +2020-01-22 02:15:00,76.77,150.81799999999998,30.34,32.641 +2020-01-22 02:30:00,76.68,151.94299999999998,30.34,32.641 +2020-01-22 02:45:00,75.36,154.127,30.34,32.641 +2020-01-22 03:00:00,80.37,157.10399999999998,29.129,32.641 +2020-01-22 03:15:00,81.93,158.24,29.129,32.641 +2020-01-22 03:30:00,80.31,160.061,29.129,32.641 +2020-01-22 03:45:00,81.37,162.04399999999998,29.129,32.641 +2020-01-22 04:00:00,84.25,173.516,30.075,32.641 +2020-01-22 04:15:00,85.11,185.007,30.075,32.641 +2020-01-22 04:30:00,83.8,188.795,30.075,32.641 +2020-01-22 04:45:00,87.55,191.895,30.075,32.641 +2020-01-22 05:00:00,91.73,226.801,35.684,32.641 +2020-01-22 05:15:00,94.75,254.644,35.684,32.641 +2020-01-22 05:30:00,92.38,250.34900000000002,35.684,32.641 +2020-01-22 05:45:00,96.78,243.924,35.684,32.641 +2020-01-22 06:00:00,106.02,241.03900000000002,51.49,32.641 +2020-01-22 06:15:00,111.14,247.24400000000003,51.49,32.641 +2020-01-22 06:30:00,115.37,250.47799999999998,51.49,32.641 +2020-01-22 06:45:00,120.3,255.707,51.49,32.641 +2020-01-22 07:00:00,127.38,254.05900000000003,68.242,32.641 +2020-01-22 07:15:00,127.79,259.843,68.242,32.641 +2020-01-22 07:30:00,130.4,263.16,68.242,32.641 +2020-01-22 07:45:00,128.61,264.947,68.242,32.641 +2020-01-22 08:00:00,135.29,263.547,63.619,32.641 +2020-01-22 08:15:00,132.82,263.91200000000003,63.619,32.641 +2020-01-22 08:30:00,133.56,261.265,63.619,32.641 +2020-01-22 08:45:00,131.49,258.42,63.619,32.641 +2020-01-22 09:00:00,132.7,251.735,61.333,32.641 +2020-01-22 09:15:00,134.67,248.925,61.333,32.641 +2020-01-22 09:30:00,136.96,247.155,61.333,32.641 +2020-01-22 09:45:00,137.72,243.732,61.333,32.641 +2020-01-22 10:00:00,135.4,237.84,59.663000000000004,32.641 +2020-01-22 10:15:00,135.86,234.06,59.663000000000004,32.641 +2020-01-22 10:30:00,135.23,230.037,59.663000000000004,32.641 +2020-01-22 10:45:00,135.61,228.18599999999998,59.663000000000004,32.641 +2020-01-22 11:00:00,134.31,225.054,59.771,32.641 +2020-01-22 11:15:00,134.36,223.733,59.771,32.641 +2020-01-22 11:30:00,133.1,221.829,59.771,32.641 +2020-01-22 11:45:00,129.04,221.201,59.771,32.641 +2020-01-22 12:00:00,125.42,217.24900000000002,58.723,32.641 +2020-01-22 12:15:00,124.01,216.957,58.723,32.641 +2020-01-22 12:30:00,120.56,216.608,58.723,32.641 +2020-01-22 12:45:00,119.44,217.122,58.723,32.641 +2020-01-22 13:00:00,117.85,214.667,58.727,32.641 +2020-01-22 13:15:00,117.79,213.896,58.727,32.641 +2020-01-22 13:30:00,112.65,212.987,58.727,32.641 +2020-01-22 13:45:00,116.56,213.269,58.727,32.641 +2020-01-22 14:00:00,117.4,213.078,59.803999999999995,32.641 +2020-01-22 14:15:00,121.18,213.571,59.803999999999995,32.641 +2020-01-22 14:30:00,122.83,214.44799999999998,59.803999999999995,32.641 +2020-01-22 14:45:00,124.29,215.252,59.803999999999995,32.641 +2020-01-22 15:00:00,121.07,216.226,61.05,32.641 +2020-01-22 15:15:00,118.8,216.98,61.05,32.641 +2020-01-22 15:30:00,120.0,218.66099999999997,61.05,32.641 +2020-01-22 15:45:00,121.57,219.53,61.05,32.641 +2020-01-22 16:00:00,124.33,221.263,64.012,32.641 +2020-01-22 16:15:00,123.18,223.155,64.012,32.641 +2020-01-22 16:30:00,126.48,225.959,64.012,32.641 +2020-01-22 16:45:00,129.37,227.22,64.012,32.641 +2020-01-22 17:00:00,135.39,229.643,66.751,32.641 +2020-01-22 17:15:00,135.01,230.495,66.751,32.641 +2020-01-22 17:30:00,137.03,231.59799999999998,66.751,32.641 +2020-01-22 17:45:00,138.51,231.55200000000002,66.751,32.641 +2020-01-22 18:00:00,137.18,233.358,65.91199999999999,32.641 +2020-01-22 18:15:00,135.84,230.067,65.91199999999999,32.641 +2020-01-22 18:30:00,133.59,229.06,65.91199999999999,32.641 +2020-01-22 18:45:00,134.99,229.49599999999998,65.91199999999999,32.641 +2020-01-22 19:00:00,132.74,227.643,63.324,32.641 +2020-01-22 19:15:00,130.93,223.517,63.324,32.641 +2020-01-22 19:30:00,136.71,220.49200000000002,63.324,32.641 +2020-01-22 19:45:00,135.36,217.517,63.324,32.641 +2020-01-22 20:00:00,124.6,213.267,63.573,32.641 +2020-01-22 20:15:00,117.48,206.424,63.573,32.641 +2020-01-22 20:30:00,112.16,202.15200000000002,63.573,32.641 +2020-01-22 20:45:00,113.32,200.983,63.573,32.641 +2020-01-22 21:00:00,105.36,197.236,55.073,32.641 +2020-01-22 21:15:00,110.61,194.291,55.073,32.641 +2020-01-22 21:30:00,110.22,192.24599999999998,55.073,32.641 +2020-01-22 21:45:00,104.07,190.769,55.073,32.641 +2020-01-22 22:00:00,99.2,183.387,51.321999999999996,32.641 +2020-01-22 22:15:00,94.35,177.542,51.321999999999996,32.641 +2020-01-22 22:30:00,90.06,163.64,51.321999999999996,32.641 +2020-01-22 22:45:00,89.79,155.197,51.321999999999996,32.641 +2020-01-22 23:00:00,82.0,147.72899999999998,42.09,32.641 +2020-01-22 23:15:00,82.55,146.36700000000002,42.09,32.641 +2020-01-22 23:30:00,87.0,146.639,42.09,32.641 +2020-01-22 23:45:00,88.39,146.19899999999998,42.09,32.641 +2020-01-23 00:00:00,83.32,139.778,38.399,32.641 +2020-01-23 00:15:00,78.11,139.42,38.399,32.641 +2020-01-23 00:30:00,80.92,140.849,38.399,32.641 +2020-01-23 00:45:00,83.96,142.593,38.399,32.641 +2020-01-23 01:00:00,80.81,145.619,36.94,32.641 +2020-01-23 01:15:00,75.12,145.533,36.94,32.641 +2020-01-23 01:30:00,75.03,145.861,36.94,32.641 +2020-01-23 01:45:00,72.02,146.297,36.94,32.641 +2020-01-23 02:00:00,77.81,148.651,35.275,32.641 +2020-01-23 02:15:00,79.24,150.75,35.275,32.641 +2020-01-23 02:30:00,80.05,151.886,35.275,32.641 +2020-01-23 02:45:00,75.79,154.06799999999998,35.275,32.641 +2020-01-23 03:00:00,71.98,157.043,35.329,32.641 +2020-01-23 03:15:00,76.32,158.19299999999998,35.329,32.641 +2020-01-23 03:30:00,81.55,160.012,35.329,32.641 +2020-01-23 03:45:00,81.7,162.007,35.329,32.641 +2020-01-23 04:00:00,79.93,173.46,36.275,32.641 +2020-01-23 04:15:00,78.74,184.93900000000002,36.275,32.641 +2020-01-23 04:30:00,85.06,188.732,36.275,32.641 +2020-01-23 04:45:00,87.85,191.82299999999998,36.275,32.641 +2020-01-23 05:00:00,88.57,226.69,42.193999999999996,32.641 +2020-01-23 05:15:00,86.51,254.516,42.193999999999996,32.641 +2020-01-23 05:30:00,89.63,250.215,42.193999999999996,32.641 +2020-01-23 05:45:00,95.12,243.808,42.193999999999996,32.641 +2020-01-23 06:00:00,102.82,240.94299999999998,56.422,32.641 +2020-01-23 06:15:00,109.43,247.16,56.422,32.641 +2020-01-23 06:30:00,111.99,250.392,56.422,32.641 +2020-01-23 06:45:00,117.62,255.642,56.422,32.641 +2020-01-23 07:00:00,125.86,254.014,72.569,32.641 +2020-01-23 07:15:00,132.26,259.78,72.569,32.641 +2020-01-23 07:30:00,134.8,263.07,72.569,32.641 +2020-01-23 07:45:00,132.33,264.827,72.569,32.641 +2020-01-23 08:00:00,134.07,263.414,67.704,32.641 +2020-01-23 08:15:00,132.87,263.758,67.704,32.641 +2020-01-23 08:30:00,136.34,261.065,67.704,32.641 +2020-01-23 08:45:00,132.86,258.20599999999996,67.704,32.641 +2020-01-23 09:00:00,133.61,251.513,63.434,32.641 +2020-01-23 09:15:00,133.41,248.707,63.434,32.641 +2020-01-23 09:30:00,135.43,246.957,63.434,32.641 +2020-01-23 09:45:00,135.05,243.53,63.434,32.641 +2020-01-23 10:00:00,134.75,237.644,61.88399999999999,32.641 +2020-01-23 10:15:00,136.32,233.87900000000002,61.88399999999999,32.641 +2020-01-23 10:30:00,134.68,229.854,61.88399999999999,32.641 +2020-01-23 10:45:00,136.01,228.01,61.88399999999999,32.641 +2020-01-23 11:00:00,136.01,224.862,61.481,32.641 +2020-01-23 11:15:00,134.32,223.547,61.481,32.641 +2020-01-23 11:30:00,130.61,221.64700000000002,61.481,32.641 +2020-01-23 11:45:00,133.98,221.024,61.481,32.641 +2020-01-23 12:00:00,134.51,217.088,59.527,32.641 +2020-01-23 12:15:00,132.67,216.815,59.527,32.641 +2020-01-23 12:30:00,132.94,216.449,59.527,32.641 +2020-01-23 12:45:00,133.32,216.96200000000002,59.527,32.641 +2020-01-23 13:00:00,132.61,214.511,58.794,32.641 +2020-01-23 13:15:00,132.78,213.72099999999998,58.794,32.641 +2020-01-23 13:30:00,128.88,212.799,58.794,32.641 +2020-01-23 13:45:00,128.87,213.078,58.794,32.641 +2020-01-23 14:00:00,127.62,212.922,60.32,32.641 +2020-01-23 14:15:00,129.42,213.40200000000002,60.32,32.641 +2020-01-23 14:30:00,128.31,214.275,60.32,32.641 +2020-01-23 14:45:00,128.39,215.09599999999998,60.32,32.641 +2020-01-23 15:00:00,129.2,216.08700000000002,62.52,32.641 +2020-01-23 15:15:00,128.37,216.81400000000002,62.52,32.641 +2020-01-23 15:30:00,125.84,218.475,62.52,32.641 +2020-01-23 15:45:00,125.84,219.328,62.52,32.641 +2020-01-23 16:00:00,127.22,221.063,64.199,32.641 +2020-01-23 16:15:00,127.3,222.956,64.199,32.641 +2020-01-23 16:30:00,128.99,225.766,64.199,32.641 +2020-01-23 16:45:00,131.38,227.025,64.199,32.641 +2020-01-23 17:00:00,137.71,229.438,68.19800000000001,32.641 +2020-01-23 17:15:00,137.9,230.322,68.19800000000001,32.641 +2020-01-23 17:30:00,140.75,231.459,68.19800000000001,32.641 +2020-01-23 17:45:00,138.94,231.43900000000002,68.19800000000001,32.641 +2020-01-23 18:00:00,139.21,233.265,67.899,32.641 +2020-01-23 18:15:00,140.6,230.005,67.899,32.641 +2020-01-23 18:30:00,135.9,229.002,67.899,32.641 +2020-01-23 18:45:00,134.83,229.46099999999998,67.899,32.641 +2020-01-23 19:00:00,132.4,227.56799999999998,64.72399999999999,32.641 +2020-01-23 19:15:00,130.3,223.447,64.72399999999999,32.641 +2020-01-23 19:30:00,136.27,220.435,64.72399999999999,32.641 +2020-01-23 19:45:00,136.38,217.476,64.72399999999999,32.641 +2020-01-23 20:00:00,124.03,213.202,64.062,32.641 +2020-01-23 20:15:00,118.44,206.364,64.062,32.641 +2020-01-23 20:30:00,114.15,202.092,64.062,32.641 +2020-01-23 20:45:00,111.79,200.937,64.062,32.641 +2020-01-23 21:00:00,107.54,197.17,57.971000000000004,32.641 +2020-01-23 21:15:00,110.3,194.208,57.971000000000004,32.641 +2020-01-23 21:30:00,111.1,192.162,57.971000000000004,32.641 +2020-01-23 21:45:00,106.2,190.703,57.971000000000004,32.641 +2020-01-23 22:00:00,98.72,183.31099999999998,53.715,32.641 +2020-01-23 22:15:00,96.15,177.487,53.715,32.641 +2020-01-23 22:30:00,92.08,163.576,53.715,32.641 +2020-01-23 22:45:00,91.81,155.14,53.715,32.641 +2020-01-23 23:00:00,94.02,147.657,47.8,32.641 +2020-01-23 23:15:00,94.02,146.306,47.8,32.641 +2020-01-23 23:30:00,89.04,146.597,47.8,32.641 +2020-01-23 23:45:00,85.37,146.167,47.8,32.641 +2020-01-24 00:00:00,86.99,138.808,43.656000000000006,32.641 +2020-01-24 00:15:00,84.7,138.631,43.656000000000006,32.641 +2020-01-24 00:30:00,84.43,139.84,43.656000000000006,32.641 +2020-01-24 00:45:00,78.25,141.634,43.656000000000006,32.641 +2020-01-24 01:00:00,78.02,144.345,41.263000000000005,32.641 +2020-01-24 01:15:00,81.93,145.425,41.263000000000005,32.641 +2020-01-24 01:30:00,81.42,145.365,41.263000000000005,32.641 +2020-01-24 01:45:00,76.21,145.961,41.263000000000005,32.641 +2020-01-24 02:00:00,78.49,148.269,40.799,32.641 +2020-01-24 02:15:00,80.51,150.241,40.799,32.641 +2020-01-24 02:30:00,80.14,151.866,40.799,32.641 +2020-01-24 02:45:00,75.42,154.216,40.799,32.641 +2020-01-24 03:00:00,74.46,155.875,41.398,32.641 +2020-01-24 03:15:00,81.27,158.363,41.398,32.641 +2020-01-24 03:30:00,82.2,160.202,41.398,32.641 +2020-01-24 03:45:00,82.59,162.441,41.398,32.641 +2020-01-24 04:00:00,78.55,174.128,42.38,32.641 +2020-01-24 04:15:00,81.62,185.585,42.38,32.641 +2020-01-24 04:30:00,86.32,189.485,42.38,32.641 +2020-01-24 04:45:00,88.91,191.32299999999998,42.38,32.641 +2020-01-24 05:00:00,90.44,224.72799999999998,46.181000000000004,32.641 +2020-01-24 05:15:00,88.25,254.162,46.181000000000004,32.641 +2020-01-24 05:30:00,91.02,251.11,46.181000000000004,32.641 +2020-01-24 05:45:00,95.66,244.72299999999998,46.181000000000004,32.641 +2020-01-24 06:00:00,105.46,242.351,59.33,32.641 +2020-01-24 06:15:00,108.13,246.793,59.33,32.641 +2020-01-24 06:30:00,112.97,249.0,59.33,32.641 +2020-01-24 06:45:00,118.74,256.23400000000004,59.33,32.641 +2020-01-24 07:00:00,125.57,253.513,72.454,32.641 +2020-01-24 07:15:00,127.25,260.314,72.454,32.641 +2020-01-24 07:30:00,132.41,263.71299999999997,72.454,32.641 +2020-01-24 07:45:00,133.17,264.42,72.454,32.641 +2020-01-24 08:00:00,137.53,261.54900000000004,67.175,32.641 +2020-01-24 08:15:00,135.9,261.298,67.175,32.641 +2020-01-24 08:30:00,136.3,259.728,67.175,32.641 +2020-01-24 08:45:00,136.6,255.017,67.175,32.641 +2020-01-24 09:00:00,137.1,249.24099999999999,65.365,32.641 +2020-01-24 09:15:00,138.33,246.803,65.365,32.641 +2020-01-24 09:30:00,139.13,244.678,65.365,32.641 +2020-01-24 09:45:00,139.22,241.058,65.365,32.641 +2020-01-24 10:00:00,138.08,233.864,63.95,32.641 +2020-01-24 10:15:00,138.61,230.97299999999998,63.95,32.641 +2020-01-24 10:30:00,138.28,226.773,63.95,32.641 +2020-01-24 10:45:00,137.57,224.433,63.95,32.641 +2020-01-24 11:00:00,138.32,221.21900000000002,63.92100000000001,32.641 +2020-01-24 11:15:00,138.78,219.02900000000002,63.92100000000001,32.641 +2020-01-24 11:30:00,139.38,219.236,63.92100000000001,32.641 +2020-01-24 11:45:00,138.06,218.825,63.92100000000001,32.641 +2020-01-24 12:00:00,136.09,216.109,60.79600000000001,32.641 +2020-01-24 12:15:00,134.0,213.50099999999998,60.79600000000001,32.641 +2020-01-24 12:30:00,131.28,213.28599999999997,60.79600000000001,32.641 +2020-01-24 12:45:00,132.51,214.524,60.79600000000001,32.641 +2020-01-24 13:00:00,130.47,213.08599999999998,59.393,32.641 +2020-01-24 13:15:00,129.98,213.205,59.393,32.641 +2020-01-24 13:30:00,128.13,212.16400000000002,59.393,32.641 +2020-01-24 13:45:00,128.71,212.31799999999998,59.393,32.641 +2020-01-24 14:00:00,126.8,210.986,57.943999999999996,32.641 +2020-01-24 14:15:00,129.56,211.17700000000002,57.943999999999996,32.641 +2020-01-24 14:30:00,127.19,212.415,57.943999999999996,32.641 +2020-01-24 14:45:00,127.61,213.71200000000002,57.943999999999996,32.641 +2020-01-24 15:00:00,129.17,214.165,60.153999999999996,32.641 +2020-01-24 15:15:00,125.93,214.391,60.153999999999996,32.641 +2020-01-24 15:30:00,127.46,214.347,60.153999999999996,32.641 +2020-01-24 15:45:00,126.28,215.24400000000003,60.153999999999996,32.641 +2020-01-24 16:00:00,127.34,215.765,62.933,32.641 +2020-01-24 16:15:00,126.66,217.925,62.933,32.641 +2020-01-24 16:30:00,128.07,220.878,62.933,32.641 +2020-01-24 16:45:00,131.69,222.109,62.933,32.641 +2020-01-24 17:00:00,137.39,224.52900000000002,68.657,32.641 +2020-01-24 17:15:00,135.66,224.99599999999998,68.657,32.641 +2020-01-24 17:30:00,133.93,225.78099999999998,68.657,32.641 +2020-01-24 17:45:00,135.2,225.53799999999998,68.657,32.641 +2020-01-24 18:00:00,136.43,228.196,67.111,32.641 +2020-01-24 18:15:00,134.39,224.639,67.111,32.641 +2020-01-24 18:30:00,133.68,224.102,67.111,32.641 +2020-01-24 18:45:00,133.53,224.52700000000002,67.111,32.641 +2020-01-24 19:00:00,130.37,223.533,62.434,32.641 +2020-01-24 19:15:00,128.1,220.89700000000002,62.434,32.641 +2020-01-24 19:30:00,130.9,217.423,62.434,32.641 +2020-01-24 19:45:00,136.04,214.078,62.434,32.641 +2020-01-24 20:00:00,125.76,209.85,61.763000000000005,32.641 +2020-01-24 20:15:00,117.6,202.93,61.763000000000005,32.641 +2020-01-24 20:30:00,114.72,198.669,61.763000000000005,32.641 +2020-01-24 20:45:00,110.33,198.265,61.763000000000005,32.641 +2020-01-24 21:00:00,104.51,194.895,56.785,32.641 +2020-01-24 21:15:00,102.91,192.205,56.785,32.641 +2020-01-24 21:30:00,102.15,190.22799999999998,56.785,32.641 +2020-01-24 21:45:00,104.05,189.38099999999997,56.785,32.641 +2020-01-24 22:00:00,99.83,183.11700000000002,52.693000000000005,32.641 +2020-01-24 22:15:00,94.61,177.195,52.693000000000005,32.641 +2020-01-24 22:30:00,89.29,169.947,52.693000000000005,32.641 +2020-01-24 22:45:00,85.86,165.43400000000003,52.693000000000005,32.641 +2020-01-24 23:00:00,82.29,157.219,45.443999999999996,32.641 +2020-01-24 23:15:00,81.42,153.85399999999998,45.443999999999996,32.641 +2020-01-24 23:30:00,80.16,152.725,45.443999999999996,32.641 +2020-01-24 23:45:00,77.47,151.564,45.443999999999996,32.641 +2020-01-25 00:00:00,72.4,135.27200000000002,44.738,32.459 +2020-01-25 00:15:00,71.11,130.214,44.738,32.459 +2020-01-25 00:30:00,72.19,133.029,44.738,32.459 +2020-01-25 00:45:00,70.85,135.756,44.738,32.459 +2020-01-25 01:00:00,71.22,139.132,40.303000000000004,32.459 +2020-01-25 01:15:00,72.27,138.951,40.303000000000004,32.459 +2020-01-25 01:30:00,76.25,138.406,40.303000000000004,32.459 +2020-01-25 01:45:00,75.27,138.54399999999998,40.303000000000004,32.459 +2020-01-25 02:00:00,69.95,141.80200000000002,38.61,32.459 +2020-01-25 02:15:00,68.12,143.468,38.61,32.459 +2020-01-25 02:30:00,65.73,143.929,38.61,32.459 +2020-01-25 02:45:00,65.96,146.268,38.61,32.459 +2020-01-25 03:00:00,64.75,148.87,37.554,32.459 +2020-01-25 03:15:00,65.49,150.054,37.554,32.459 +2020-01-25 03:30:00,64.8,149.96,37.554,32.459 +2020-01-25 03:45:00,65.17,152.093,37.554,32.459 +2020-01-25 04:00:00,64.99,159.15,37.176,32.459 +2020-01-25 04:15:00,65.24,167.739,37.176,32.459 +2020-01-25 04:30:00,65.75,169.365,37.176,32.459 +2020-01-25 04:45:00,66.44,170.56,37.176,32.459 +2020-01-25 05:00:00,66.97,186.34799999999998,36.893,32.459 +2020-01-25 05:15:00,67.29,195.11700000000002,36.893,32.459 +2020-01-25 05:30:00,68.56,192.21200000000002,36.893,32.459 +2020-01-25 05:45:00,69.68,191.523,36.893,32.459 +2020-01-25 06:00:00,69.94,209.548,37.803000000000004,32.459 +2020-01-25 06:15:00,70.69,232.051,37.803000000000004,32.459 +2020-01-25 06:30:00,71.35,228.36900000000003,37.803000000000004,32.459 +2020-01-25 06:45:00,73.5,225.519,37.803000000000004,32.459 +2020-01-25 07:00:00,77.71,218.623,41.086999999999996,32.459 +2020-01-25 07:15:00,78.56,224.142,41.086999999999996,32.459 +2020-01-25 07:30:00,82.94,230.46200000000002,41.086999999999996,32.459 +2020-01-25 07:45:00,84.55,235.69099999999997,41.086999999999996,32.459 +2020-01-25 08:00:00,88.98,237.581,48.222,32.459 +2020-01-25 08:15:00,90.69,241.622,48.222,32.459 +2020-01-25 08:30:00,92.22,241.90599999999998,48.222,32.459 +2020-01-25 08:45:00,95.97,240.745,48.222,32.459 +2020-01-25 09:00:00,98.38,236.59099999999998,52.791000000000004,32.459 +2020-01-25 09:15:00,98.75,234.963,52.791000000000004,32.459 +2020-01-25 09:30:00,99.49,233.83700000000002,52.791000000000004,32.459 +2020-01-25 09:45:00,101.44,230.472,52.791000000000004,32.459 +2020-01-25 10:00:00,102.45,223.484,54.341,32.459 +2020-01-25 10:15:00,103.89,220.745,54.341,32.459 +2020-01-25 10:30:00,102.9,216.793,54.341,32.459 +2020-01-25 10:45:00,104.81,216.046,54.341,32.459 +2020-01-25 11:00:00,103.72,213.127,51.94,32.459 +2020-01-25 11:15:00,105.87,210.00900000000001,51.94,32.459 +2020-01-25 11:30:00,107.38,208.875,51.94,32.459 +2020-01-25 11:45:00,106.98,207.255,51.94,32.459 +2020-01-25 12:00:00,104.05,203.44,50.973,32.459 +2020-01-25 12:15:00,103.31,201.46900000000002,50.973,32.459 +2020-01-25 12:30:00,100.71,201.627,50.973,32.459 +2020-01-25 12:45:00,99.96,201.85299999999998,50.973,32.459 +2020-01-25 13:00:00,97.04,200.072,48.06399999999999,32.459 +2020-01-25 13:15:00,97.34,197.856,48.06399999999999,32.459 +2020-01-25 13:30:00,95.63,196.245,48.06399999999999,32.459 +2020-01-25 13:45:00,94.67,197.16,48.06399999999999,32.459 +2020-01-25 14:00:00,91.46,197.327,45.707,32.459 +2020-01-25 14:15:00,92.11,197.06900000000002,45.707,32.459 +2020-01-25 14:30:00,91.72,196.25,45.707,32.459 +2020-01-25 14:45:00,91.73,197.745,45.707,32.459 +2020-01-25 15:00:00,90.8,198.975,47.567,32.459 +2020-01-25 15:15:00,90.03,200.00599999999997,47.567,32.459 +2020-01-25 15:30:00,89.45,201.695,47.567,32.459 +2020-01-25 15:45:00,88.86,202.729,47.567,32.459 +2020-01-25 16:00:00,90.25,201.65900000000002,52.031000000000006,32.459 +2020-01-25 16:15:00,89.46,204.97400000000002,52.031000000000006,32.459 +2020-01-25 16:30:00,90.4,207.842,52.031000000000006,32.459 +2020-01-25 16:45:00,93.84,210.09400000000002,52.031000000000006,32.459 +2020-01-25 17:00:00,100.62,212.105,58.218999999999994,32.459 +2020-01-25 17:15:00,102.8,214.77700000000002,58.218999999999994,32.459 +2020-01-25 17:30:00,106.7,215.502,58.218999999999994,32.459 +2020-01-25 17:45:00,106.99,214.757,58.218999999999994,32.459 +2020-01-25 18:00:00,107.5,216.775,57.65,32.459 +2020-01-25 18:15:00,107.19,215.09,57.65,32.459 +2020-01-25 18:30:00,109.91,215.905,57.65,32.459 +2020-01-25 18:45:00,105.29,212.97400000000002,57.65,32.459 +2020-01-25 19:00:00,104.0,213.22099999999998,51.261,32.459 +2020-01-25 19:15:00,102.55,210.149,51.261,32.459 +2020-01-25 19:30:00,101.86,207.44799999999998,51.261,32.459 +2020-01-25 19:45:00,102.2,203.72,51.261,32.459 +2020-01-25 20:00:00,94.93,201.78,44.068000000000005,32.459 +2020-01-25 20:15:00,92.01,197.358,44.068000000000005,32.459 +2020-01-25 20:30:00,88.94,192.80700000000002,44.068000000000005,32.459 +2020-01-25 20:45:00,87.29,191.732,44.068000000000005,32.459 +2020-01-25 21:00:00,83.53,191.08,38.861,32.459 +2020-01-25 21:15:00,82.66,188.91299999999998,38.861,32.459 +2020-01-25 21:30:00,80.26,188.308,38.861,32.459 +2020-01-25 21:45:00,80.05,187.084,38.861,32.459 +2020-01-25 22:00:00,77.81,182.33900000000003,39.485,32.459 +2020-01-25 22:15:00,76.34,179.227,39.485,32.459 +2020-01-25 22:30:00,73.65,179.05900000000003,39.485,32.459 +2020-01-25 22:45:00,72.2,176.628,39.485,32.459 +2020-01-25 23:00:00,67.88,171.222,32.027,32.459 +2020-01-25 23:15:00,68.21,165.968,32.027,32.459 +2020-01-25 23:30:00,62.43,162.59,32.027,32.459 +2020-01-25 23:45:00,63.07,158.65,32.027,32.459 +2020-01-26 00:00:00,60.64,135.531,26.96,32.459 +2020-01-26 00:15:00,59.92,130.25799999999998,26.96,32.459 +2020-01-26 00:30:00,59.03,132.641,26.96,32.459 +2020-01-26 00:45:00,58.62,136.18200000000002,26.96,32.459 +2020-01-26 01:00:00,54.93,139.338,24.295,32.459 +2020-01-26 01:15:00,55.99,140.374,24.295,32.459 +2020-01-26 01:30:00,55.67,140.451,24.295,32.459 +2020-01-26 01:45:00,54.2,140.276,24.295,32.459 +2020-01-26 02:00:00,53.39,142.659,24.268,32.459 +2020-01-26 02:15:00,54.08,143.218,24.268,32.459 +2020-01-26 02:30:00,52.98,144.661,24.268,32.459 +2020-01-26 02:45:00,53.02,147.586,24.268,32.459 +2020-01-26 03:00:00,53.08,150.45600000000002,23.373,32.459 +2020-01-26 03:15:00,50.37,150.995,23.373,32.459 +2020-01-26 03:30:00,52.45,152.66,23.373,32.459 +2020-01-26 03:45:00,52.94,154.84,23.373,32.459 +2020-01-26 04:00:00,52.89,161.61,23.874000000000002,32.459 +2020-01-26 04:15:00,53.22,169.06799999999998,23.874000000000002,32.459 +2020-01-26 04:30:00,54.0,170.55700000000002,23.874000000000002,32.459 +2020-01-26 04:45:00,54.34,172.14,23.874000000000002,32.459 +2020-01-26 05:00:00,55.82,183.72400000000002,24.871,32.459 +2020-01-26 05:15:00,56.59,189.75599999999997,24.871,32.459 +2020-01-26 05:30:00,55.44,186.71400000000003,24.871,32.459 +2020-01-26 05:45:00,56.61,186.375,24.871,32.459 +2020-01-26 06:00:00,56.99,204.688,23.84,32.459 +2020-01-26 06:15:00,56.78,225.035,23.84,32.459 +2020-01-26 06:30:00,57.8,220.16099999999997,23.84,32.459 +2020-01-26 06:45:00,58.26,216.248,23.84,32.459 +2020-01-26 07:00:00,61.45,212.21599999999998,27.430999999999997,32.459 +2020-01-26 07:15:00,62.62,216.979,27.430999999999997,32.459 +2020-01-26 07:30:00,64.42,221.612,27.430999999999997,32.459 +2020-01-26 07:45:00,65.23,225.917,27.430999999999997,32.459 +2020-01-26 08:00:00,67.41,229.857,33.891999999999996,32.459 +2020-01-26 08:15:00,70.28,233.58700000000002,33.891999999999996,32.459 +2020-01-26 08:30:00,72.53,235.627,33.891999999999996,32.459 +2020-01-26 08:45:00,74.96,236.83,33.891999999999996,32.459 +2020-01-26 09:00:00,76.29,232.225,37.571,32.459 +2020-01-26 09:15:00,77.45,231.31799999999998,37.571,32.459 +2020-01-26 09:30:00,78.94,229.967,37.571,32.459 +2020-01-26 09:45:00,80.75,226.315,37.571,32.459 +2020-01-26 10:00:00,81.35,222.179,40.594,32.459 +2020-01-26 10:15:00,83.76,220.058,40.594,32.459 +2020-01-26 10:30:00,85.49,216.775,40.594,32.459 +2020-01-26 10:45:00,88.12,213.672,40.594,32.459 +2020-01-26 11:00:00,88.23,211.86900000000003,44.133,32.459 +2020-01-26 11:15:00,92.2,208.975,44.133,32.459 +2020-01-26 11:30:00,92.74,206.762,44.133,32.459 +2020-01-26 11:45:00,93.24,205.81400000000002,44.133,32.459 +2020-01-26 12:00:00,91.73,201.201,41.198,32.459 +2020-01-26 12:15:00,89.36,201.549,41.198,32.459 +2020-01-26 12:30:00,84.83,199.968,41.198,32.459 +2020-01-26 12:45:00,83.74,199.162,41.198,32.459 +2020-01-26 13:00:00,80.41,196.597,37.014,32.459 +2020-01-26 13:15:00,80.17,197.945,37.014,32.459 +2020-01-26 13:30:00,81.07,196.236,37.014,32.459 +2020-01-26 13:45:00,80.59,196.222,37.014,32.459 +2020-01-26 14:00:00,79.11,196.545,34.934,32.459 +2020-01-26 14:15:00,78.6,197.6,34.934,32.459 +2020-01-26 14:30:00,78.67,198.37900000000002,34.934,32.459 +2020-01-26 14:45:00,79.38,199.56599999999997,34.934,32.459 +2020-01-26 15:00:00,79.93,199.014,34.588,32.459 +2020-01-26 15:15:00,78.78,201.0,34.588,32.459 +2020-01-26 15:30:00,78.6,203.368,34.588,32.459 +2020-01-26 15:45:00,77.74,205.146,34.588,32.459 +2020-01-26 16:00:00,80.38,206.40099999999998,37.874,32.459 +2020-01-26 16:15:00,79.54,208.645,37.874,32.459 +2020-01-26 16:30:00,81.49,211.685,37.874,32.459 +2020-01-26 16:45:00,84.68,214.078,37.874,32.459 +2020-01-26 17:00:00,92.75,215.987,47.303999999999995,32.459 +2020-01-26 17:15:00,94.5,218.13099999999997,47.303999999999995,32.459 +2020-01-26 17:30:00,96.47,219.12099999999998,47.303999999999995,32.459 +2020-01-26 17:45:00,98.7,220.93200000000002,47.303999999999995,32.459 +2020-01-26 18:00:00,100.59,222.25099999999998,48.879,32.459 +2020-01-26 18:15:00,99.21,222.146,48.879,32.459 +2020-01-26 18:30:00,99.63,220.636,48.879,32.459 +2020-01-26 18:45:00,98.32,219.80900000000003,48.879,32.459 +2020-01-26 19:00:00,96.9,219.37599999999998,44.826,32.459 +2020-01-26 19:15:00,95.53,217.101,44.826,32.459 +2020-01-26 19:30:00,98.34,214.25599999999997,44.826,32.459 +2020-01-26 19:45:00,100.34,212.222,44.826,32.459 +2020-01-26 20:00:00,98.08,210.243,40.154,32.459 +2020-01-26 20:15:00,89.23,206.959,40.154,32.459 +2020-01-26 20:30:00,88.79,203.717,40.154,32.459 +2020-01-26 20:45:00,85.18,201.489,40.154,32.459 +2020-01-26 21:00:00,83.88,197.894,36.549,32.459 +2020-01-26 21:15:00,90.22,195.03599999999997,36.549,32.459 +2020-01-26 21:30:00,90.09,194.83700000000002,36.549,32.459 +2020-01-26 21:45:00,86.75,193.743,36.549,32.459 +2020-01-26 22:00:00,84.32,187.405,37.663000000000004,32.459 +2020-01-26 22:15:00,87.31,183.648,37.663000000000004,32.459 +2020-01-26 22:30:00,87.15,179.94400000000002,37.663000000000004,32.459 +2020-01-26 22:45:00,85.87,176.705,37.663000000000004,32.459 +2020-01-26 23:00:00,78.89,168.15599999999998,31.945,32.459 +2020-01-26 23:15:00,82.8,164.87,31.945,32.459 +2020-01-26 23:30:00,81.36,162.487,31.945,32.459 +2020-01-26 23:45:00,80.85,159.548,31.945,32.459 +2020-01-27 00:00:00,72.01,140.157,31.533,32.641 +2020-01-27 00:15:00,74.98,138.209,31.533,32.641 +2020-01-27 00:30:00,75.17,140.77700000000002,31.533,32.641 +2020-01-27 00:45:00,73.37,143.741,31.533,32.641 +2020-01-27 01:00:00,65.99,146.861,30.56,32.641 +2020-01-27 01:15:00,72.24,147.267,30.56,32.641 +2020-01-27 01:30:00,72.74,147.346,30.56,32.641 +2020-01-27 01:45:00,73.19,147.313,30.56,32.641 +2020-01-27 02:00:00,68.81,149.619,29.55,32.641 +2020-01-27 02:15:00,72.66,152.05,29.55,32.641 +2020-01-27 02:30:00,73.33,153.86700000000002,29.55,32.641 +2020-01-27 02:45:00,72.31,156.089,29.55,32.641 +2020-01-27 03:00:00,67.49,160.394,27.059,32.641 +2020-01-27 03:15:00,73.56,162.764,27.059,32.641 +2020-01-27 03:30:00,75.02,163.99900000000002,27.059,32.641 +2020-01-27 03:45:00,71.92,165.61599999999999,27.059,32.641 +2020-01-27 04:00:00,66.96,177.02,28.384,32.641 +2020-01-27 04:15:00,68.37,188.86900000000003,28.384,32.641 +2020-01-27 04:30:00,70.66,193.035,28.384,32.641 +2020-01-27 04:45:00,72.68,194.738,28.384,32.641 +2020-01-27 05:00:00,77.25,223.778,35.915,32.641 +2020-01-27 05:15:00,79.29,251.91099999999997,35.915,32.641 +2020-01-27 05:30:00,84.6,249.452,35.915,32.641 +2020-01-27 05:45:00,89.92,242.958,35.915,32.641 +2020-01-27 06:00:00,99.95,241.782,56.18,32.641 +2020-01-27 06:15:00,104.93,246.144,56.18,32.641 +2020-01-27 06:30:00,110.18,250.06400000000002,56.18,32.641 +2020-01-27 06:45:00,113.96,255.674,56.18,32.641 +2020-01-27 07:00:00,121.51,254.377,70.877,32.641 +2020-01-27 07:15:00,123.92,260.205,70.877,32.641 +2020-01-27 07:30:00,123.09,264.038,70.877,32.641 +2020-01-27 07:45:00,125.61,265.228,70.877,32.641 +2020-01-27 08:00:00,127.27,263.626,65.65,32.641 +2020-01-27 08:15:00,127.65,265.01099999999997,65.65,32.641 +2020-01-27 08:30:00,129.37,262.36,65.65,32.641 +2020-01-27 08:45:00,125.27,259.60400000000004,65.65,32.641 +2020-01-27 09:00:00,124.61,253.929,62.037,32.641 +2020-01-27 09:15:00,126.22,249.234,62.037,32.641 +2020-01-27 09:30:00,126.26,246.88,62.037,32.641 +2020-01-27 09:45:00,122.4,243.92700000000002,62.037,32.641 +2020-01-27 10:00:00,124.71,238.52,60.409,32.641 +2020-01-27 10:15:00,124.92,236.058,60.409,32.641 +2020-01-27 10:30:00,126.43,231.824,60.409,32.641 +2020-01-27 10:45:00,127.62,229.86,60.409,32.641 +2020-01-27 11:00:00,128.14,224.88299999999998,60.211999999999996,32.641 +2020-01-27 11:15:00,129.57,224.053,60.211999999999996,32.641 +2020-01-27 11:30:00,130.44,223.34599999999998,60.211999999999996,32.641 +2020-01-27 11:45:00,132.01,221.85299999999998,60.211999999999996,32.641 +2020-01-27 12:00:00,131.87,219.55700000000002,57.733000000000004,32.641 +2020-01-27 12:15:00,130.69,219.908,57.733000000000004,32.641 +2020-01-27 12:30:00,127.99,218.766,57.733000000000004,32.641 +2020-01-27 12:45:00,128.57,219.735,57.733000000000004,32.641 +2020-01-27 13:00:00,127.25,217.735,58.695,32.641 +2020-01-27 13:15:00,127.54,217.582,58.695,32.641 +2020-01-27 13:30:00,126.3,215.213,58.695,32.641 +2020-01-27 13:45:00,124.1,215.097,58.695,32.641 +2020-01-27 14:00:00,120.85,214.834,59.505,32.641 +2020-01-27 14:15:00,122.78,215.037,59.505,32.641 +2020-01-27 14:30:00,121.73,215.206,59.505,32.641 +2020-01-27 14:45:00,122.16,216.058,59.505,32.641 +2020-01-27 15:00:00,122.79,217.581,59.946000000000005,32.641 +2020-01-27 15:15:00,122.37,217.96099999999998,59.946000000000005,32.641 +2020-01-27 15:30:00,120.21,219.23,59.946000000000005,32.641 +2020-01-27 15:45:00,121.58,220.549,59.946000000000005,32.641 +2020-01-27 16:00:00,125.44,221.766,61.766999999999996,32.641 +2020-01-27 16:15:00,124.32,223.122,61.766999999999996,32.641 +2020-01-27 16:30:00,125.38,225.149,61.766999999999996,32.641 +2020-01-27 16:45:00,128.84,226.167,61.766999999999996,32.641 +2020-01-27 17:00:00,134.98,227.94099999999997,67.85600000000001,32.641 +2020-01-27 17:15:00,133.74,228.979,67.85600000000001,32.641 +2020-01-27 17:30:00,134.91,229.42700000000002,67.85600000000001,32.641 +2020-01-27 17:45:00,134.47,229.61,67.85600000000001,32.641 +2020-01-27 18:00:00,134.73,231.514,64.564,32.641 +2020-01-27 18:15:00,131.96,229.16400000000002,64.564,32.641 +2020-01-27 18:30:00,133.73,228.49200000000002,64.564,32.641 +2020-01-27 18:45:00,132.73,228.109,64.564,32.641 +2020-01-27 19:00:00,129.78,225.815,58.536,32.641 +2020-01-27 19:15:00,126.63,222.06799999999998,58.536,32.641 +2020-01-27 19:30:00,126.74,219.84400000000002,58.536,32.641 +2020-01-27 19:45:00,131.0,216.96200000000002,58.536,32.641 +2020-01-27 20:00:00,124.95,212.45,59.888999999999996,32.641 +2020-01-27 20:15:00,116.65,206.18,59.888999999999996,32.641 +2020-01-27 20:30:00,113.27,200.757,59.888999999999996,32.641 +2020-01-27 20:45:00,109.79,200.363,59.888999999999996,32.641 +2020-01-27 21:00:00,104.5,197.43400000000003,52.652,32.641 +2020-01-27 21:15:00,102.34,193.169,52.652,32.641 +2020-01-27 21:30:00,105.41,191.98,52.652,32.641 +2020-01-27 21:45:00,106.02,190.355,52.652,32.641 +2020-01-27 22:00:00,103.67,180.989,46.17,32.641 +2020-01-27 22:15:00,92.1,175.507,46.17,32.641 +2020-01-27 22:30:00,90.73,161.47299999999998,46.17,32.641 +2020-01-27 22:45:00,86.82,152.751,46.17,32.641 +2020-01-27 23:00:00,85.71,145.082,36.281,32.641 +2020-01-27 23:15:00,90.44,145.025,36.281,32.641 +2020-01-27 23:30:00,87.95,145.799,36.281,32.641 +2020-01-27 23:45:00,82.47,145.94,36.281,32.641 +2020-01-28 00:00:00,78.26,139.671,38.821999999999996,32.641 +2020-01-28 00:15:00,75.34,139.238,38.821999999999996,32.641 +2020-01-28 00:30:00,79.52,140.57399999999998,38.821999999999996,32.641 +2020-01-28 00:45:00,82.22,142.25799999999998,38.821999999999996,32.641 +2020-01-28 01:00:00,79.73,145.21200000000002,36.936,32.641 +2020-01-28 01:15:00,76.69,145.066,36.936,32.641 +2020-01-28 01:30:00,75.14,145.361,36.936,32.641 +2020-01-28 01:45:00,76.58,145.766,36.936,32.641 +2020-01-28 02:00:00,79.49,148.15200000000002,34.42,32.641 +2020-01-28 02:15:00,79.78,150.255,34.42,32.641 +2020-01-28 02:30:00,77.63,151.44899999999998,34.42,32.641 +2020-01-28 02:45:00,72.78,153.629,34.42,32.641 +2020-01-28 03:00:00,78.0,156.595,33.585,32.641 +2020-01-28 03:15:00,81.7,157.804,33.585,32.641 +2020-01-28 03:30:00,83.51,159.614,33.585,32.641 +2020-01-28 03:45:00,82.44,161.667,33.585,32.641 +2020-01-28 04:00:00,77.73,173.03900000000002,35.622,32.641 +2020-01-28 04:15:00,84.2,184.46099999999998,35.622,32.641 +2020-01-28 04:30:00,87.03,188.28799999999998,35.622,32.641 +2020-01-28 04:45:00,89.61,191.332,35.622,32.641 +2020-01-28 05:00:00,89.09,226.02,40.599000000000004,32.641 +2020-01-28 05:15:00,87.98,253.782,40.599000000000004,32.641 +2020-01-28 05:30:00,94.26,249.44400000000002,40.599000000000004,32.641 +2020-01-28 05:45:00,98.87,243.109,40.599000000000004,32.641 +2020-01-28 06:00:00,105.04,240.338,55.203,32.641 +2020-01-28 06:15:00,109.62,246.618,55.203,32.641 +2020-01-28 06:30:00,113.28,249.817,55.203,32.641 +2020-01-28 06:45:00,117.53,255.15900000000002,55.203,32.641 +2020-01-28 07:00:00,128.45,253.637,69.029,32.641 +2020-01-28 07:15:00,128.39,259.301,69.029,32.641 +2020-01-28 07:30:00,128.01,262.45099999999996,69.029,32.641 +2020-01-28 07:45:00,129.0,264.04200000000003,69.029,32.641 +2020-01-28 08:00:00,131.4,262.563,65.85300000000001,32.641 +2020-01-28 08:15:00,131.16,262.79400000000004,65.85300000000001,32.641 +2020-01-28 08:30:00,129.91,259.853,65.85300000000001,32.641 +2020-01-28 08:45:00,128.94,256.934,65.85300000000001,32.641 +2020-01-28 09:00:00,130.01,250.21099999999998,61.566,32.641 +2020-01-28 09:15:00,130.06,247.43,61.566,32.641 +2020-01-28 09:30:00,128.11,245.77700000000002,61.566,32.641 +2020-01-28 09:45:00,126.64,242.335,61.566,32.641 +2020-01-28 10:00:00,125.99,236.479,61.244,32.641 +2020-01-28 10:15:00,125.95,232.801,61.244,32.641 +2020-01-28 10:30:00,127.09,228.778,61.244,32.641 +2020-01-28 10:45:00,125.87,226.981,61.244,32.641 +2020-01-28 11:00:00,127.54,223.747,61.16,32.641 +2020-01-28 11:15:00,126.56,222.465,61.16,32.641 +2020-01-28 11:30:00,125.17,220.58599999999998,61.16,32.641 +2020-01-28 11:45:00,127.37,220.002,61.16,32.641 +2020-01-28 12:00:00,124.87,216.142,59.09,32.641 +2020-01-28 12:15:00,123.4,215.963,59.09,32.641 +2020-01-28 12:30:00,122.31,215.505,59.09,32.641 +2020-01-28 12:45:00,119.99,216.01,59.09,32.641 +2020-01-28 13:00:00,117.55,213.6,60.21,32.641 +2020-01-28 13:15:00,119.52,212.706,60.21,32.641 +2020-01-28 13:30:00,119.94,211.708,60.21,32.641 +2020-01-28 13:45:00,117.83,211.977,60.21,32.641 +2020-01-28 14:00:00,115.55,212.02200000000002,60.673,32.641 +2020-01-28 14:15:00,117.18,212.426,60.673,32.641 +2020-01-28 14:30:00,118.0,213.271,60.673,32.641 +2020-01-28 14:45:00,119.26,214.18,60.673,32.641 +2020-01-28 15:00:00,119.6,215.243,62.232,32.641 +2020-01-28 15:15:00,119.97,215.834,62.232,32.641 +2020-01-28 15:30:00,119.48,217.37400000000002,62.232,32.641 +2020-01-28 15:45:00,120.64,218.15,62.232,32.641 +2020-01-28 16:00:00,121.9,219.89,63.611999999999995,32.641 +2020-01-28 16:15:00,122.55,221.785,63.611999999999995,32.641 +2020-01-28 16:30:00,127.29,224.62599999999998,63.611999999999995,32.641 +2020-01-28 16:45:00,127.69,225.864,63.611999999999995,32.641 +2020-01-28 17:00:00,132.53,228.227,70.658,32.641 +2020-01-28 17:15:00,136.01,229.27,70.658,32.641 +2020-01-28 17:30:00,140.13,230.585,70.658,32.641 +2020-01-28 17:45:00,139.21,230.69,70.658,32.641 +2020-01-28 18:00:00,139.49,232.614,68.361,32.641 +2020-01-28 18:15:00,137.64,229.528,68.361,32.641 +2020-01-28 18:30:00,137.81,228.544,68.361,32.641 +2020-01-28 18:45:00,137.16,229.122,68.361,32.641 +2020-01-28 19:00:00,134.44,227.023,62.922,32.641 +2020-01-28 19:15:00,132.06,222.94400000000002,62.922,32.641 +2020-01-28 19:30:00,137.09,220.002,62.922,32.641 +2020-01-28 19:45:00,138.01,217.142,62.922,32.641 +2020-01-28 20:00:00,129.62,212.735,63.251999999999995,32.641 +2020-01-28 20:15:00,119.68,205.938,63.251999999999995,32.641 +2020-01-28 20:30:00,118.14,201.671,63.251999999999995,32.641 +2020-01-28 20:45:00,115.08,200.576,63.251999999999995,32.641 +2020-01-28 21:00:00,112.27,196.71099999999998,54.47,32.641 +2020-01-28 21:15:00,114.93,193.66400000000002,54.47,32.641 +2020-01-28 21:30:00,113.2,191.614,54.47,32.641 +2020-01-28 21:45:00,108.39,190.24,54.47,32.641 +2020-01-28 22:00:00,99.19,182.795,51.12,32.641 +2020-01-28 22:15:00,103.31,177.084,51.12,32.641 +2020-01-28 22:30:00,102.8,163.095,51.12,32.641 +2020-01-28 22:45:00,99.67,154.697,51.12,32.641 +2020-01-28 23:00:00,91.53,147.145,42.156000000000006,32.641 +2020-01-28 23:15:00,92.74,145.862,42.156000000000006,32.641 +2020-01-28 23:30:00,92.86,146.243,42.156000000000006,32.641 +2020-01-28 23:45:00,91.28,145.873,42.156000000000006,32.641 +2020-01-29 00:00:00,85.71,139.624,37.192,32.641 +2020-01-29 00:15:00,85.1,139.17700000000002,37.192,32.641 +2020-01-29 00:30:00,86.49,140.494,37.192,32.641 +2020-01-29 00:45:00,83.22,142.166,37.192,32.641 +2020-01-29 01:00:00,79.05,145.10299999999998,32.24,32.641 +2020-01-29 01:15:00,81.99,144.944,32.24,32.641 +2020-01-29 01:30:00,83.1,145.232,32.24,32.641 +2020-01-29 01:45:00,82.85,145.632,32.24,32.641 +2020-01-29 02:00:00,76.67,148.023,30.34,32.641 +2020-01-29 02:15:00,79.99,150.127,30.34,32.641 +2020-01-29 02:30:00,80.46,151.332,30.34,32.641 +2020-01-29 02:45:00,82.45,153.511,30.34,32.641 +2020-01-29 03:00:00,78.21,156.477,29.129,32.641 +2020-01-29 03:15:00,81.98,157.697,29.129,32.641 +2020-01-29 03:30:00,83.78,159.504,29.129,32.641 +2020-01-29 03:45:00,84.27,161.56799999999998,29.129,32.641 +2020-01-29 04:00:00,79.14,172.926,30.075,32.641 +2020-01-29 04:15:00,81.89,184.338,30.075,32.641 +2020-01-29 04:30:00,86.55,188.173,30.075,32.641 +2020-01-29 04:45:00,86.15,191.208,30.075,32.641 +2020-01-29 05:00:00,85.56,225.864,35.684,32.641 +2020-01-29 05:15:00,86.72,253.618,35.684,32.641 +2020-01-29 05:30:00,89.23,249.269,35.684,32.641 +2020-01-29 05:45:00,94.99,242.946,35.684,32.641 +2020-01-29 06:00:00,105.54,240.192,51.49,32.641 +2020-01-29 06:15:00,109.68,246.484,51.49,32.641 +2020-01-29 06:30:00,113.38,249.673,51.49,32.641 +2020-01-29 06:45:00,116.12,255.03099999999998,51.49,32.641 +2020-01-29 07:00:00,121.07,253.53,68.242,32.641 +2020-01-29 07:15:00,126.34,259.173,68.242,32.641 +2020-01-29 07:30:00,126.89,262.293,68.242,32.641 +2020-01-29 07:45:00,128.53,263.848,68.242,32.641 +2020-01-29 08:00:00,129.79,262.355,63.619,32.641 +2020-01-29 08:15:00,129.69,262.562,63.619,32.641 +2020-01-29 08:30:00,128.46,259.569,63.619,32.641 +2020-01-29 08:45:00,129.7,256.64,63.619,32.641 +2020-01-29 09:00:00,130.75,249.91400000000002,61.333,32.641 +2020-01-29 09:15:00,133.1,247.137,61.333,32.641 +2020-01-29 09:30:00,134.98,245.503,61.333,32.641 +2020-01-29 09:45:00,134.4,242.05900000000003,61.333,32.641 +2020-01-29 10:00:00,132.46,236.209,59.663000000000004,32.641 +2020-01-29 10:15:00,133.39,232.55200000000002,59.663000000000004,32.641 +2020-01-29 10:30:00,133.22,228.53099999999998,59.663000000000004,32.641 +2020-01-29 10:45:00,132.39,226.74400000000003,59.663000000000004,32.641 +2020-01-29 11:00:00,132.31,223.495,59.771,32.641 +2020-01-29 11:15:00,133.12,222.22,59.771,32.641 +2020-01-29 11:30:00,134.86,220.34599999999998,59.771,32.641 +2020-01-29 11:45:00,133.3,219.771,59.771,32.641 +2020-01-29 12:00:00,132.7,215.925,58.723,32.641 +2020-01-29 12:15:00,132.51,215.765,58.723,32.641 +2020-01-29 12:30:00,131.59,215.287,58.723,32.641 +2020-01-29 12:45:00,130.75,215.78900000000002,58.723,32.641 +2020-01-29 13:00:00,129.37,213.39,58.727,32.641 +2020-01-29 13:15:00,129.56,212.47400000000002,58.727,32.641 +2020-01-29 13:30:00,127.85,211.46099999999998,58.727,32.641 +2020-01-29 13:45:00,128.01,211.72799999999998,58.727,32.641 +2020-01-29 14:00:00,127.61,211.81799999999998,59.803999999999995,32.641 +2020-01-29 14:15:00,127.81,212.204,59.803999999999995,32.641 +2020-01-29 14:30:00,127.7,213.043,59.803999999999995,32.641 +2020-01-29 14:45:00,127.4,213.96900000000002,59.803999999999995,32.641 +2020-01-29 15:00:00,128.03,215.045,61.05,32.641 +2020-01-29 15:15:00,127.39,215.608,61.05,32.641 +2020-01-29 15:30:00,128.43,217.12,61.05,32.641 +2020-01-29 15:45:00,124.88,217.88,61.05,32.641 +2020-01-29 16:00:00,126.8,219.623,64.012,32.641 +2020-01-29 16:15:00,126.43,221.516,64.012,32.641 +2020-01-29 16:30:00,130.89,224.363,64.012,32.641 +2020-01-29 16:45:00,131.2,225.593,64.012,32.641 +2020-01-29 17:00:00,135.48,227.94799999999998,66.751,32.641 +2020-01-29 17:15:00,135.19,229.023,66.751,32.641 +2020-01-29 17:30:00,136.26,230.373,66.751,32.641 +2020-01-29 17:45:00,136.97,230.505,66.751,32.641 +2020-01-29 18:00:00,136.56,232.447,65.91199999999999,32.641 +2020-01-29 18:15:00,134.46,229.4,65.91199999999999,32.641 +2020-01-29 18:30:00,136.21,228.42,65.91199999999999,32.641 +2020-01-29 18:45:00,134.51,229.021,65.91199999999999,32.641 +2020-01-29 19:00:00,130.95,226.882,63.324,32.641 +2020-01-29 19:15:00,130.8,222.81099999999998,63.324,32.641 +2020-01-29 19:30:00,128.57,219.885,63.324,32.641 +2020-01-29 19:45:00,133.5,217.047,63.324,32.641 +2020-01-29 20:00:00,127.01,212.614,63.573,32.641 +2020-01-29 20:15:00,117.14,205.825,63.573,32.641 +2020-01-29 20:30:00,114.01,201.562,63.573,32.641 +2020-01-29 20:45:00,109.09,200.477,63.573,32.641 +2020-01-29 21:00:00,107.15,196.59400000000002,55.073,32.641 +2020-01-29 21:15:00,111.75,193.52900000000002,55.073,32.641 +2020-01-29 21:30:00,109.55,191.48,55.073,32.641 +2020-01-29 21:45:00,104.52,190.122,55.073,32.641 +2020-01-29 22:00:00,95.88,182.666,51.321999999999996,32.641 +2020-01-29 22:15:00,96.63,176.979,51.321999999999996,32.641 +2020-01-29 22:30:00,97.76,162.968,51.321999999999996,32.641 +2020-01-29 22:45:00,95.81,154.578,51.321999999999996,32.641 +2020-01-29 23:00:00,89.08,147.014,42.09,32.641 +2020-01-29 23:15:00,83.66,145.744,42.09,32.641 +2020-01-29 23:30:00,86.56,146.143,42.09,32.641 +2020-01-29 23:45:00,88.77,145.786,42.09,32.641 +2020-01-30 00:00:00,82.65,139.567,38.399,32.641 +2020-01-30 00:15:00,78.77,139.108,38.399,32.641 +2020-01-30 00:30:00,76.46,140.406,38.399,32.641 +2020-01-30 00:45:00,81.36,142.06799999999998,38.399,32.641 +2020-01-30 01:00:00,78.58,144.985,36.94,32.641 +2020-01-30 01:15:00,78.21,144.812,36.94,32.641 +2020-01-30 01:30:00,76.11,145.093,36.94,32.641 +2020-01-30 01:45:00,79.6,145.488,36.94,32.641 +2020-01-30 02:00:00,78.45,147.884,35.275,32.641 +2020-01-30 02:15:00,77.62,149.989,35.275,32.641 +2020-01-30 02:30:00,71.61,151.20600000000002,35.275,32.641 +2020-01-30 02:45:00,72.74,153.385,35.275,32.641 +2020-01-30 03:00:00,71.23,156.349,35.329,32.641 +2020-01-30 03:15:00,71.37,157.578,35.329,32.641 +2020-01-30 03:30:00,74.11,159.38299999999998,35.329,32.641 +2020-01-30 03:45:00,80.9,161.459,35.329,32.641 +2020-01-30 04:00:00,82.14,172.805,36.275,32.641 +2020-01-30 04:15:00,83.94,184.206,36.275,32.641 +2020-01-30 04:30:00,79.65,188.05,36.275,32.641 +2020-01-30 04:45:00,79.86,191.074,36.275,32.641 +2020-01-30 05:00:00,84.84,225.699,42.193999999999996,32.641 +2020-01-30 05:15:00,87.97,253.44799999999998,42.193999999999996,32.641 +2020-01-30 05:30:00,91.94,249.08700000000002,42.193999999999996,32.641 +2020-01-30 05:45:00,96.69,242.77599999999998,42.193999999999996,32.641 +2020-01-30 06:00:00,105.79,240.03900000000002,56.422,32.641 +2020-01-30 06:15:00,111.14,246.34400000000002,56.422,32.641 +2020-01-30 06:30:00,115.88,249.519,56.422,32.641 +2020-01-30 06:45:00,119.21,254.891,56.422,32.641 +2020-01-30 07:00:00,127.68,253.41299999999998,72.569,32.641 +2020-01-30 07:15:00,130.37,259.034,72.569,32.641 +2020-01-30 07:30:00,129.83,262.124,72.569,32.641 +2020-01-30 07:45:00,131.25,263.643,72.569,32.641 +2020-01-30 08:00:00,133.61,262.135,67.704,32.641 +2020-01-30 08:15:00,133.19,262.318,67.704,32.641 +2020-01-30 08:30:00,132.87,259.27099999999996,67.704,32.641 +2020-01-30 08:45:00,132.5,256.33299999999997,67.704,32.641 +2020-01-30 09:00:00,132.2,249.60299999999998,63.434,32.641 +2020-01-30 09:15:00,133.4,246.83,63.434,32.641 +2020-01-30 09:30:00,133.88,245.217,63.434,32.641 +2020-01-30 09:45:00,134.13,241.77200000000002,63.434,32.641 +2020-01-30 10:00:00,134.86,235.928,61.88399999999999,32.641 +2020-01-30 10:15:00,134.96,232.292,61.88399999999999,32.641 +2020-01-30 10:30:00,133.39,228.273,61.88399999999999,32.641 +2020-01-30 10:45:00,134.4,226.497,61.88399999999999,32.641 +2020-01-30 11:00:00,133.27,223.232,61.481,32.641 +2020-01-30 11:15:00,134.3,221.965,61.481,32.641 +2020-01-30 11:30:00,136.88,220.09599999999998,61.481,32.641 +2020-01-30 11:45:00,137.03,219.52900000000002,61.481,32.641 +2020-01-30 12:00:00,133.83,215.699,59.527,32.641 +2020-01-30 12:15:00,133.63,215.558,59.527,32.641 +2020-01-30 12:30:00,132.45,215.06,59.527,32.641 +2020-01-30 12:45:00,132.76,215.56,59.527,32.641 +2020-01-30 13:00:00,132.63,213.172,58.794,32.641 +2020-01-30 13:15:00,131.93,212.234,58.794,32.641 +2020-01-30 13:30:00,131.32,211.206,58.794,32.641 +2020-01-30 13:45:00,131.62,211.47099999999998,58.794,32.641 +2020-01-30 14:00:00,130.86,211.605,60.32,32.641 +2020-01-30 14:15:00,130.65,211.976,60.32,32.641 +2020-01-30 14:30:00,129.29,212.80599999999998,60.32,32.641 +2020-01-30 14:45:00,129.11,213.748,60.32,32.641 +2020-01-30 15:00:00,128.71,214.838,62.52,32.641 +2020-01-30 15:15:00,127.59,215.372,62.52,32.641 +2020-01-30 15:30:00,126.25,216.857,62.52,32.641 +2020-01-30 15:45:00,127.28,217.6,62.52,32.641 +2020-01-30 16:00:00,127.19,219.34400000000002,64.199,32.641 +2020-01-30 16:15:00,126.69,221.235,64.199,32.641 +2020-01-30 16:30:00,127.31,224.08700000000002,64.199,32.641 +2020-01-30 16:45:00,129.45,225.31,64.199,32.641 +2020-01-30 17:00:00,133.14,227.657,68.19800000000001,32.641 +2020-01-30 17:15:00,136.81,228.763,68.19800000000001,32.641 +2020-01-30 17:30:00,138.93,230.148,68.19800000000001,32.641 +2020-01-30 17:45:00,139.45,230.30700000000002,68.19800000000001,32.641 +2020-01-30 18:00:00,139.02,232.267,67.899,32.641 +2020-01-30 18:15:00,140.21,229.262,67.899,32.641 +2020-01-30 18:30:00,137.12,228.28400000000002,67.899,32.641 +2020-01-30 18:45:00,137.17,228.91099999999997,67.899,32.641 +2020-01-30 19:00:00,134.6,226.73,64.72399999999999,32.641 +2020-01-30 19:15:00,131.53,222.669,64.72399999999999,32.641 +2020-01-30 19:30:00,136.23,219.75900000000001,64.72399999999999,32.641 +2020-01-30 19:45:00,136.85,216.945,64.72399999999999,32.641 +2020-01-30 20:00:00,129.72,212.484,64.062,32.641 +2020-01-30 20:15:00,119.43,205.704,64.062,32.641 +2020-01-30 20:30:00,117.24,201.445,64.062,32.641 +2020-01-30 20:45:00,114.49,200.37099999999998,64.062,32.641 +2020-01-30 21:00:00,110.45,196.468,57.971000000000004,32.641 +2020-01-30 21:15:00,114.4,193.387,57.971000000000004,32.641 +2020-01-30 21:30:00,113.1,191.33700000000002,57.971000000000004,32.641 +2020-01-30 21:45:00,108.52,189.99599999999998,57.971000000000004,32.641 +2020-01-30 22:00:00,99.82,182.52700000000002,53.715,32.641 +2020-01-30 22:15:00,95.43,176.864,53.715,32.641 +2020-01-30 22:30:00,95.06,162.83100000000002,53.715,32.641 +2020-01-30 22:45:00,97.76,154.44899999999998,53.715,32.641 +2020-01-30 23:00:00,95.28,146.873,47.8,32.641 +2020-01-30 23:15:00,93.83,145.61700000000002,47.8,32.641 +2020-01-30 23:30:00,85.99,146.034,47.8,32.641 +2020-01-30 23:45:00,83.25,145.692,47.8,32.641 +2020-01-31 00:00:00,83.54,138.534,43.656000000000006,32.641 +2020-01-31 00:15:00,86.38,138.262,43.656000000000006,32.641 +2020-01-31 00:30:00,85.86,139.339,43.656000000000006,32.641 +2020-01-31 00:45:00,81.71,141.053,43.656000000000006,32.641 +2020-01-31 01:00:00,75.55,143.645,41.263000000000005,32.641 +2020-01-31 01:15:00,81.11,144.639,41.263000000000005,32.641 +2020-01-31 01:30:00,82.73,144.529,41.263000000000005,32.641 +2020-01-31 01:45:00,83.26,145.086,41.263000000000005,32.641 +2020-01-31 02:00:00,78.12,147.43200000000002,40.799,32.641 +2020-01-31 02:15:00,77.01,149.412,40.799,32.641 +2020-01-31 02:30:00,81.31,151.12,40.799,32.641 +2020-01-31 02:45:00,81.77,153.464,40.799,32.641 +2020-01-31 03:00:00,80.53,155.114,41.398,32.641 +2020-01-31 03:15:00,78.43,157.67700000000002,41.398,32.641 +2020-01-31 03:30:00,83.05,159.502,41.398,32.641 +2020-01-31 03:45:00,85.88,161.82299999999998,41.398,32.641 +2020-01-31 04:00:00,81.83,173.408,42.38,32.641 +2020-01-31 04:15:00,79.91,184.787,42.38,32.641 +2020-01-31 04:30:00,83.03,188.74200000000002,42.38,32.641 +2020-01-31 04:45:00,88.4,190.513,42.38,32.641 +2020-01-31 05:00:00,92.99,223.68099999999998,46.181000000000004,32.641 +2020-01-31 05:15:00,86.2,253.05200000000002,46.181000000000004,32.641 +2020-01-31 05:30:00,87.66,249.93200000000002,46.181000000000004,32.641 +2020-01-31 05:45:00,92.16,243.638,46.181000000000004,32.641 +2020-01-31 06:00:00,100.18,241.388,59.33,32.641 +2020-01-31 06:15:00,103.88,245.922,59.33,32.641 +2020-01-31 06:30:00,107.37,248.06099999999998,59.33,32.641 +2020-01-31 06:45:00,111.97,255.41,59.33,32.641 +2020-01-31 07:00:00,118.81,252.83900000000003,72.454,32.641 +2020-01-31 07:15:00,121.43,259.492,72.454,32.641 +2020-01-31 07:30:00,120.61,262.686,72.454,32.641 +2020-01-31 07:45:00,123.16,263.152,72.454,32.641 +2020-01-31 08:00:00,125.9,260.182,67.175,32.641 +2020-01-31 08:15:00,125.96,259.769,67.175,32.641 +2020-01-31 08:30:00,124.1,257.837,67.175,32.641 +2020-01-31 08:45:00,122.45,253.051,67.175,32.641 +2020-01-31 09:00:00,121.29,247.245,65.365,32.641 +2020-01-31 09:15:00,120.99,244.838,65.365,32.641 +2020-01-31 09:30:00,122.63,242.851,65.365,32.641 +2020-01-31 09:45:00,125.07,239.21400000000003,65.365,32.641 +2020-01-31 10:00:00,125.19,232.065,63.95,32.641 +2020-01-31 10:15:00,123.48,229.30700000000002,63.95,32.641 +2020-01-31 10:30:00,118.43,225.118,63.95,32.641 +2020-01-31 10:45:00,116.42,222.847,63.95,32.641 +2020-01-31 11:00:00,112.88,219.519,63.92100000000001,32.641 +2020-01-31 11:15:00,114.05,217.38099999999997,63.92100000000001,32.641 +2020-01-31 11:30:00,112.59,217.62,63.92100000000001,32.641 +2020-01-31 11:45:00,113.51,217.265,63.92100000000001,32.641 +2020-01-31 12:00:00,110.81,214.657,60.79600000000001,32.641 +2020-01-31 12:15:00,108.51,212.18099999999998,60.79600000000001,32.641 +2020-01-31 12:30:00,110.61,211.828,60.79600000000001,32.641 +2020-01-31 12:45:00,107.4,213.051,60.79600000000001,32.641 +2020-01-31 13:00:00,109.64,211.68400000000003,59.393,32.641 +2020-01-31 13:15:00,114.24,211.65400000000002,59.393,32.641 +2020-01-31 13:30:00,114.13,210.50400000000002,59.393,32.641 +2020-01-31 13:45:00,116.3,210.64700000000002,59.393,32.641 +2020-01-31 14:00:00,114.74,209.613,57.943999999999996,32.641 +2020-01-31 14:15:00,117.45,209.69099999999997,57.943999999999996,32.641 +2020-01-31 14:30:00,113.57,210.88299999999998,57.943999999999996,32.641 +2020-01-31 14:45:00,113.98,212.3,57.943999999999996,32.641 +2020-01-31 15:00:00,114.17,212.85,60.153999999999996,32.641 +2020-01-31 15:15:00,115.31,212.88099999999997,60.153999999999996,32.641 +2020-01-31 15:30:00,115.47,212.65400000000002,60.153999999999996,32.641 +2020-01-31 15:45:00,118.13,213.44,60.153999999999996,32.641 +2020-01-31 16:00:00,117.86,213.96900000000002,62.933,32.641 +2020-01-31 16:15:00,117.65,216.122,62.933,32.641 +2020-01-31 16:30:00,119.13,219.115,62.933,32.641 +2020-01-31 16:45:00,120.48,220.305,62.933,32.641 +2020-01-31 17:00:00,125.21,222.662,68.657,32.641 +2020-01-31 17:15:00,125.41,223.35,68.657,32.641 +2020-01-31 17:30:00,129.61,224.38299999999998,68.657,32.641 +2020-01-31 17:45:00,127.16,224.322,68.657,32.641 +2020-01-31 18:00:00,127.56,227.113,67.111,32.641 +2020-01-31 18:15:00,125.29,223.821,67.111,32.641 +2020-01-31 18:30:00,125.6,223.31,67.111,32.641 +2020-01-31 18:45:00,124.45,223.90200000000002,67.111,32.641 +2020-01-31 19:00:00,121.9,222.61900000000003,62.434,32.641 +2020-01-31 19:15:00,121.13,220.045,62.434,32.641 +2020-01-31 19:30:00,123.82,216.67700000000002,62.434,32.641 +2020-01-31 19:45:00,118.48,213.486,62.434,32.641 +2020-01-31 20:00:00,112.24,209.06799999999998,61.763000000000005,32.641 +2020-01-31 20:15:00,106.36,202.207,61.763000000000005,32.641 +2020-01-31 20:30:00,103.04,197.96599999999998,61.763000000000005,32.641 +2020-01-31 20:45:00,102.41,197.637,61.763000000000005,32.641 +2020-01-31 21:00:00,97.4,194.132,56.785,32.641 +2020-01-31 21:15:00,102.69,191.324,56.785,32.641 +2020-01-31 21:30:00,101.42,189.345,56.785,32.641 +2020-01-31 21:45:00,97.23,188.61700000000002,56.785,32.641 +2020-01-31 22:00:00,90.73,182.27200000000002,52.693000000000005,32.641 +2020-01-31 22:15:00,85.64,176.511,52.693000000000005,32.641 +2020-01-31 22:30:00,87.1,169.132,52.693000000000005,32.641 +2020-01-31 22:45:00,89.23,164.673,52.693000000000005,32.641 +2020-01-31 23:00:00,85.55,156.369,45.443999999999996,32.641 +2020-01-31 23:15:00,83.18,153.1,45.443999999999996,32.641 +2020-01-31 23:30:00,79.02,152.094,45.443999999999996,32.641 +2020-01-31 23:45:00,83.75,151.02700000000002,45.443999999999996,32.641 +2020-02-01 00:00:00,76.71,129.81,42.033,32.431999999999995 +2020-02-01 00:15:00,73.23,124.75399999999999,42.033,32.431999999999995 +2020-02-01 00:30:00,70.83,127.20700000000001,42.033,32.431999999999995 +2020-02-01 00:45:00,74.17,129.618,42.033,32.431999999999995 +2020-02-01 01:00:00,71.69,132.734,38.255,32.431999999999995 +2020-02-01 01:15:00,71.85,132.577,38.255,32.431999999999995 +2020-02-01 01:30:00,67.13,132.036,38.255,32.431999999999995 +2020-02-01 01:45:00,71.17,132.134,38.255,32.431999999999995 +2020-02-01 02:00:00,69.97,135.287,36.404,32.431999999999995 +2020-02-01 02:15:00,69.51,136.813,36.404,32.431999999999995 +2020-02-01 02:30:00,67.27,137.26,36.404,32.431999999999995 +2020-02-01 02:45:00,73.49,139.49,36.404,32.431999999999995 +2020-02-01 03:00:00,69.19,141.94,36.083,32.431999999999995 +2020-02-01 03:15:00,67.7,143.183,36.083,32.431999999999995 +2020-02-01 03:30:00,62.05,143.143,36.083,32.431999999999995 +2020-02-01 03:45:00,63.49,145.23,36.083,32.431999999999995 +2020-02-01 04:00:00,67.97,152.216,36.102,32.431999999999995 +2020-02-01 04:15:00,68.64,160.666,36.102,32.431999999999995 +2020-02-01 04:30:00,65.01,162.115,36.102,32.431999999999995 +2020-02-01 04:45:00,63.87,163.159,36.102,32.431999999999995 +2020-02-01 05:00:00,64.66,178.486,35.284,32.431999999999995 +2020-02-01 05:15:00,65.5,187.328,35.284,32.431999999999995 +2020-02-01 05:30:00,65.69,184.41,35.284,32.431999999999995 +2020-02-01 05:45:00,67.86,183.62,35.284,32.431999999999995 +2020-02-01 06:00:00,69.24,201.104,36.265,32.431999999999995 +2020-02-01 06:15:00,71.37,222.93900000000002,36.265,32.431999999999995 +2020-02-01 06:30:00,71.93,219.313,36.265,32.431999999999995 +2020-02-01 06:45:00,74.95,216.52599999999998,36.265,32.431999999999995 +2020-02-01 07:00:00,78.52,210.303,40.714,32.431999999999995 +2020-02-01 07:15:00,80.13,215.368,40.714,32.431999999999995 +2020-02-01 07:30:00,82.2,221.09,40.714,32.431999999999995 +2020-02-01 07:45:00,85.69,225.72099999999998,40.714,32.431999999999995 +2020-02-01 08:00:00,91.13,227.44099999999997,46.692,32.431999999999995 +2020-02-01 08:15:00,91.12,231.018,46.692,32.431999999999995 +2020-02-01 08:30:00,92.79,230.90099999999998,46.692,32.431999999999995 +2020-02-01 08:45:00,94.88,229.52900000000002,46.692,32.431999999999995 +2020-02-01 09:00:00,97.7,225.294,48.925,32.431999999999995 +2020-02-01 09:15:00,97.76,223.685,48.925,32.431999999999995 +2020-02-01 09:30:00,98.69,222.65200000000002,48.925,32.431999999999995 +2020-02-01 09:45:00,101.05,219.40099999999998,48.925,32.431999999999995 +2020-02-01 10:00:00,101.31,212.862,47.799,32.431999999999995 +2020-02-01 10:15:00,101.73,210.19,47.799,32.431999999999995 +2020-02-01 10:30:00,101.39,206.543,47.799,32.431999999999995 +2020-02-01 10:45:00,106.31,205.921,47.799,32.431999999999995 +2020-02-01 11:00:00,103.02,203.19299999999998,44.309,32.431999999999995 +2020-02-01 11:15:00,103.3,200.252,44.309,32.431999999999995 +2020-02-01 11:30:00,108.4,199.29,44.309,32.431999999999995 +2020-02-01 11:45:00,112.35,197.61900000000003,44.309,32.431999999999995 +2020-02-01 12:00:00,105.64,193.695,42.367,32.431999999999995 +2020-02-01 12:15:00,104.87,191.93599999999998,42.367,32.431999999999995 +2020-02-01 12:30:00,102.75,191.995,42.367,32.431999999999995 +2020-02-01 12:45:00,101.19,192.31900000000002,42.367,32.431999999999995 +2020-02-01 13:00:00,98.77,190.88400000000001,39.036,32.431999999999995 +2020-02-01 13:15:00,102.03,188.609,39.036,32.431999999999995 +2020-02-01 13:30:00,97.87,187.08700000000002,39.036,32.431999999999995 +2020-02-01 13:45:00,97.89,187.785,39.036,32.431999999999995 +2020-02-01 14:00:00,95.54,188.062,37.995,32.431999999999995 +2020-02-01 14:15:00,95.43,187.68599999999998,37.995,32.431999999999995 +2020-02-01 14:30:00,94.24,186.92700000000002,37.995,32.431999999999995 +2020-02-01 14:45:00,95.58,188.394,37.995,32.431999999999995 +2020-02-01 15:00:00,95.01,189.855,40.71,32.431999999999995 +2020-02-01 15:15:00,94.99,190.50799999999998,40.71,32.431999999999995 +2020-02-01 15:30:00,93.2,192.142,40.71,32.431999999999995 +2020-02-01 15:45:00,93.06,193.253,40.71,32.431999999999995 +2020-02-01 16:00:00,95.23,191.983,46.998000000000005,32.431999999999995 +2020-02-01 16:15:00,95.22,195.12099999999998,46.998000000000005,32.431999999999995 +2020-02-01 16:30:00,97.78,198.024,46.998000000000005,32.431999999999995 +2020-02-01 16:45:00,99.14,200.262,46.998000000000005,32.431999999999995 +2020-02-01 17:00:00,105.82,202.077,55.431000000000004,32.431999999999995 +2020-02-01 17:15:00,106.49,204.93599999999998,55.431000000000004,32.431999999999995 +2020-02-01 17:30:00,107.67,205.97799999999998,55.431000000000004,32.431999999999995 +2020-02-01 17:45:00,109.78,205.5,55.431000000000004,32.431999999999995 +2020-02-01 18:00:00,112.26,207.61599999999999,55.989,32.431999999999995 +2020-02-01 18:15:00,110.96,206.43400000000003,55.989,32.431999999999995 +2020-02-01 18:30:00,109.62,207.187,55.989,32.431999999999995 +2020-02-01 18:45:00,108.33,204.48,55.989,32.431999999999995 +2020-02-01 19:00:00,106.53,204.679,50.882,32.431999999999995 +2020-02-01 19:15:00,105.46,201.778,50.882,32.431999999999995 +2020-02-01 19:30:00,104.21,199.399,50.882,32.431999999999995 +2020-02-01 19:45:00,102.98,195.791,50.882,32.431999999999995 +2020-02-01 20:00:00,97.91,193.72299999999998,43.172,32.431999999999995 +2020-02-01 20:15:00,94.51,189.55700000000002,43.172,32.431999999999995 +2020-02-01 20:30:00,91.8,185.125,43.172,32.431999999999995 +2020-02-01 20:45:00,90.04,184.016,43.172,32.431999999999995 +2020-02-01 21:00:00,84.99,183.33900000000003,37.599000000000004,32.431999999999995 +2020-02-01 21:15:00,84.93,181.149,37.599000000000004,32.431999999999995 +2020-02-01 21:30:00,83.67,180.52,37.599000000000004,32.431999999999995 +2020-02-01 21:45:00,82.32,179.476,37.599000000000004,32.431999999999995 +2020-02-01 22:00:00,78.77,174.79,39.047,32.431999999999995 +2020-02-01 22:15:00,79.21,171.956,39.047,32.431999999999995 +2020-02-01 22:30:00,75.78,171.52200000000002,39.047,32.431999999999995 +2020-02-01 22:45:00,74.58,169.205,39.047,32.431999999999995 +2020-02-01 23:00:00,71.15,163.97299999999998,32.339,32.431999999999995 +2020-02-01 23:15:00,70.35,158.893,32.339,32.431999999999995 +2020-02-01 23:30:00,67.66,155.857,32.339,32.431999999999995 +2020-02-01 23:45:00,67.11,152.153,32.339,32.431999999999995 +2020-02-02 00:00:00,63.53,130.029,29.988000000000003,32.431999999999995 +2020-02-02 00:15:00,63.8,124.745,29.988000000000003,32.431999999999995 +2020-02-02 00:30:00,62.55,126.78,29.988000000000003,32.431999999999995 +2020-02-02 00:45:00,61.0,129.969,29.988000000000003,32.431999999999995 +2020-02-02 01:00:00,57.82,132.872,28.531999999999996,32.431999999999995 +2020-02-02 01:15:00,58.55,133.874,28.531999999999996,32.431999999999995 +2020-02-02 01:30:00,58.11,133.923,28.531999999999996,32.431999999999995 +2020-02-02 01:45:00,57.64,133.714,28.531999999999996,32.431999999999995 +2020-02-02 02:00:00,55.93,136.03,27.805999999999997,32.431999999999995 +2020-02-02 02:15:00,56.4,136.515,27.805999999999997,32.431999999999995 +2020-02-02 02:30:00,55.63,137.906,27.805999999999997,32.431999999999995 +2020-02-02 02:45:00,55.85,140.687,27.805999999999997,32.431999999999995 +2020-02-02 03:00:00,54.61,143.411,26.193,32.431999999999995 +2020-02-02 03:15:00,55.42,144.041,26.193,32.431999999999995 +2020-02-02 03:30:00,55.76,145.66,26.193,32.431999999999995 +2020-02-02 03:45:00,55.94,147.775,26.193,32.431999999999995 +2020-02-02 04:00:00,55.92,154.489,27.19,32.431999999999995 +2020-02-02 04:15:00,57.67,161.849,27.19,32.431999999999995 +2020-02-02 04:30:00,57.96,163.20600000000002,27.19,32.431999999999995 +2020-02-02 04:45:00,58.08,164.608,27.19,32.431999999999995 +2020-02-02 05:00:00,58.81,175.93599999999998,28.166999999999998,32.431999999999995 +2020-02-02 05:15:00,60.25,182.16099999999997,28.166999999999998,32.431999999999995 +2020-02-02 05:30:00,60.89,179.095,28.166999999999998,32.431999999999995 +2020-02-02 05:45:00,61.68,178.62599999999998,28.166999999999998,32.431999999999995 +2020-02-02 06:00:00,62.19,196.321,27.16,32.431999999999995 +2020-02-02 06:15:00,62.48,216.12400000000002,27.16,32.431999999999995 +2020-02-02 06:30:00,63.17,211.331,27.16,32.431999999999995 +2020-02-02 06:45:00,64.8,207.49599999999998,27.16,32.431999999999995 +2020-02-02 07:00:00,68.38,204.016,29.578000000000003,32.431999999999995 +2020-02-02 07:15:00,68.86,208.31099999999998,29.578000000000003,32.431999999999995 +2020-02-02 07:30:00,69.25,212.454,29.578000000000003,32.431999999999995 +2020-02-02 07:45:00,71.7,216.199,29.578000000000003,32.431999999999995 +2020-02-02 08:00:00,76.25,219.887,34.650999999999996,32.431999999999995 +2020-02-02 08:15:00,77.74,223.195,34.650999999999996,32.431999999999995 +2020-02-02 08:30:00,79.71,224.77,34.650999999999996,32.431999999999995 +2020-02-02 08:45:00,79.84,225.657,34.650999999999996,32.431999999999995 +2020-02-02 09:00:00,84.28,220.99099999999999,38.080999999999996,32.431999999999995 +2020-02-02 09:15:00,85.13,220.058,38.080999999999996,32.431999999999995 +2020-02-02 09:30:00,86.37,218.822,38.080999999999996,32.431999999999995 +2020-02-02 09:45:00,88.68,215.322,38.080999999999996,32.431999999999995 +2020-02-02 10:00:00,88.73,211.52200000000002,39.934,32.431999999999995 +2020-02-02 10:15:00,89.78,209.44799999999998,39.934,32.431999999999995 +2020-02-02 10:30:00,92.29,206.45,39.934,32.431999999999995 +2020-02-02 10:45:00,94.48,203.609,39.934,32.431999999999995 +2020-02-02 11:00:00,96.74,201.93599999999998,43.74100000000001,32.431999999999995 +2020-02-02 11:15:00,100.32,199.2,43.74100000000001,32.431999999999995 +2020-02-02 11:30:00,102.7,197.222,43.74100000000001,32.431999999999995 +2020-02-02 11:45:00,103.15,196.201,43.74100000000001,32.431999999999995 +2020-02-02 12:00:00,99.58,191.542,40.001999999999995,32.431999999999995 +2020-02-02 12:15:00,98.64,191.982,40.001999999999995,32.431999999999995 +2020-02-02 12:30:00,95.5,190.382,40.001999999999995,32.431999999999995 +2020-02-02 12:45:00,93.0,189.704,40.001999999999995,32.431999999999995 +2020-02-02 13:00:00,90.71,187.521,37.855,32.431999999999995 +2020-02-02 13:15:00,89.28,188.63099999999997,37.855,32.431999999999995 +2020-02-02 13:30:00,87.1,186.988,37.855,32.431999999999995 +2020-02-02 13:45:00,86.01,186.828,37.855,32.431999999999995 +2020-02-02 14:00:00,84.14,187.291,35.946999999999996,32.431999999999995 +2020-02-02 14:15:00,84.33,188.176,35.946999999999996,32.431999999999995 +2020-02-02 14:30:00,83.61,188.908,35.946999999999996,32.431999999999995 +2020-02-02 14:45:00,84.39,190.054,35.946999999999996,32.431999999999995 +2020-02-02 15:00:00,84.93,189.815,35.138000000000005,32.431999999999995 +2020-02-02 15:15:00,84.41,191.359,35.138000000000005,32.431999999999995 +2020-02-02 15:30:00,83.67,193.63299999999998,35.138000000000005,32.431999999999995 +2020-02-02 15:45:00,83.84,195.46,35.138000000000005,32.431999999999995 +2020-02-02 16:00:00,85.14,196.38099999999997,38.672,32.431999999999995 +2020-02-02 16:15:00,85.03,198.49599999999998,38.672,32.431999999999995 +2020-02-02 16:30:00,86.66,201.58599999999998,38.672,32.431999999999995 +2020-02-02 16:45:00,89.42,203.954,38.672,32.431999999999995 +2020-02-02 17:00:00,94.56,205.68900000000002,48.684,32.431999999999995 +2020-02-02 17:15:00,97.47,208.07299999999998,48.684,32.431999999999995 +2020-02-02 17:30:00,99.16,209.385,48.684,32.431999999999995 +2020-02-02 17:45:00,100.99,211.365,48.684,32.431999999999995 +2020-02-02 18:00:00,105.14,212.826,51.568999999999996,32.431999999999995 +2020-02-02 18:15:00,103.39,213.162,51.568999999999996,32.431999999999995 +2020-02-02 18:30:00,106.37,211.679,51.568999999999996,32.431999999999995 +2020-02-02 18:45:00,102.89,210.99400000000003,51.568999999999996,32.431999999999995 +2020-02-02 19:00:00,101.38,210.583,48.608000000000004,32.431999999999995 +2020-02-02 19:15:00,99.21,208.429,48.608000000000004,32.431999999999995 +2020-02-02 19:30:00,98.13,205.91099999999997,48.608000000000004,32.431999999999995 +2020-02-02 19:45:00,98.79,203.928,48.608000000000004,32.431999999999995 +2020-02-02 20:00:00,93.72,201.81799999999998,43.733999999999995,32.431999999999995 +2020-02-02 20:15:00,91.94,198.74400000000003,43.733999999999995,32.431999999999995 +2020-02-02 20:30:00,90.61,195.58700000000002,43.733999999999995,32.431999999999995 +2020-02-02 20:45:00,89.18,193.338,43.733999999999995,32.431999999999995 +2020-02-02 21:00:00,86.51,189.835,39.283,32.431999999999995 +2020-02-02 21:15:00,86.22,186.979,39.283,32.431999999999995 +2020-02-02 21:30:00,86.04,186.727,39.283,32.431999999999995 +2020-02-02 21:45:00,87.9,185.815,39.283,32.431999999999995 +2020-02-02 22:00:00,84.32,179.638,40.111,32.431999999999995 +2020-02-02 22:15:00,85.45,176.153,40.111,32.431999999999995 +2020-02-02 22:30:00,83.23,172.30900000000003,40.111,32.431999999999995 +2020-02-02 22:45:00,82.39,169.19,40.111,32.431999999999995 +2020-02-02 23:00:00,78.06,160.942,35.791,32.431999999999995 +2020-02-02 23:15:00,78.99,157.774,35.791,32.431999999999995 +2020-02-02 23:30:00,76.63,155.68200000000002,35.791,32.431999999999995 +2020-02-02 23:45:00,77.09,152.945,35.791,32.431999999999995 +2020-02-03 00:00:00,72.55,134.424,34.311,32.613 +2020-02-03 00:15:00,73.3,132.341,34.311,32.613 +2020-02-03 00:30:00,72.72,134.543,34.311,32.613 +2020-02-03 00:45:00,71.94,137.173,34.311,32.613 +2020-02-03 01:00:00,69.66,140.04,34.585,32.613 +2020-02-03 01:15:00,70.92,140.44,34.585,32.613 +2020-02-03 01:30:00,70.34,140.496,34.585,32.613 +2020-02-03 01:45:00,70.86,140.424,34.585,32.613 +2020-02-03 02:00:00,69.94,142.671,34.111,32.613 +2020-02-03 02:15:00,71.57,144.918,34.111,32.613 +2020-02-03 02:30:00,70.86,146.672,34.111,32.613 +2020-02-03 02:45:00,72.17,148.778,34.111,32.613 +2020-02-03 03:00:00,71.64,152.88299999999998,32.435,32.613 +2020-02-03 03:15:00,71.9,155.274,32.435,32.613 +2020-02-03 03:30:00,73.09,156.496,32.435,32.613 +2020-02-03 03:45:00,73.72,158.063,32.435,32.613 +2020-02-03 04:00:00,74.52,169.278,33.04,32.613 +2020-02-03 04:15:00,75.25,180.90200000000002,33.04,32.613 +2020-02-03 04:30:00,76.93,184.803,33.04,32.613 +2020-02-03 04:45:00,80.1,186.326,33.04,32.613 +2020-02-03 05:00:00,83.89,214.47799999999998,40.399,32.613 +2020-02-03 05:15:00,86.25,242.049,40.399,32.613 +2020-02-03 05:30:00,91.33,239.489,40.399,32.613 +2020-02-03 05:45:00,95.99,233.071,40.399,32.613 +2020-02-03 06:00:00,104.74,231.924,60.226000000000006,32.613 +2020-02-03 06:15:00,110.75,236.253,60.226000000000006,32.613 +2020-02-03 06:30:00,114.63,239.93900000000002,60.226000000000006,32.613 +2020-02-03 06:45:00,119.48,245.31099999999998,60.226000000000006,32.613 +2020-02-03 07:00:00,129.14,244.451,73.578,32.613 +2020-02-03 07:15:00,130.05,249.81900000000002,73.578,32.613 +2020-02-03 07:30:00,129.17,253.173,73.578,32.613 +2020-02-03 07:45:00,130.1,253.949,73.578,32.613 +2020-02-03 08:00:00,135.43,252.31099999999998,66.58,32.613 +2020-02-03 08:15:00,135.0,253.35,66.58,32.613 +2020-02-03 08:30:00,134.72,250.42,66.58,32.613 +2020-02-03 08:45:00,136.03,247.53799999999998,66.58,32.613 +2020-02-03 09:00:00,138.01,241.83900000000003,62.0,32.613 +2020-02-03 09:15:00,139.79,237.245,62.0,32.613 +2020-02-03 09:30:00,141.36,235.02900000000002,62.0,32.613 +2020-02-03 09:45:00,139.59,232.144,62.0,32.613 +2020-02-03 10:00:00,138.43,227.13400000000001,59.099,32.613 +2020-02-03 10:15:00,138.67,224.736,59.099,32.613 +2020-02-03 10:30:00,137.73,220.82299999999998,59.099,32.613 +2020-02-03 10:45:00,137.82,219.03,59.099,32.613 +2020-02-03 11:00:00,138.07,214.34599999999998,57.729,32.613 +2020-02-03 11:15:00,139.42,213.59,57.729,32.613 +2020-02-03 11:30:00,139.86,213.06599999999997,57.729,32.613 +2020-02-03 11:45:00,140.03,211.54,57.729,32.613 +2020-02-03 12:00:00,139.07,209.048,55.615,32.613 +2020-02-03 12:15:00,138.54,209.49200000000002,55.615,32.613 +2020-02-03 12:30:00,136.96,208.28099999999998,55.615,32.613 +2020-02-03 12:45:00,137.41,209.297,55.615,32.613 +2020-02-03 13:00:00,134.33,207.68,56.515,32.613 +2020-02-03 13:15:00,132.51,207.333,56.515,32.613 +2020-02-03 13:30:00,130.0,205.06400000000002,56.515,32.613 +2020-02-03 13:45:00,128.89,204.83,56.515,32.613 +2020-02-03 14:00:00,128.86,204.725,58.1,32.613 +2020-02-03 14:15:00,127.42,204.808,58.1,32.613 +2020-02-03 14:30:00,127.1,204.94799999999998,58.1,32.613 +2020-02-03 14:45:00,128.03,205.826,58.1,32.613 +2020-02-03 15:00:00,129.69,207.56599999999997,59.801,32.613 +2020-02-03 15:15:00,135.62,207.56099999999998,59.801,32.613 +2020-02-03 15:30:00,130.78,208.795,59.801,32.613 +2020-02-03 15:45:00,132.56,210.171,59.801,32.613 +2020-02-03 16:00:00,130.0,211.095,62.901,32.613 +2020-02-03 16:15:00,128.75,212.358,62.901,32.613 +2020-02-03 16:30:00,126.25,214.46200000000002,62.901,32.613 +2020-02-03 16:45:00,126.93,215.51,62.901,32.613 +2020-02-03 17:00:00,132.31,217.107,70.418,32.613 +2020-02-03 17:15:00,134.91,218.438,70.418,32.613 +2020-02-03 17:30:00,139.16,219.222,70.418,32.613 +2020-02-03 17:45:00,137.81,219.636,70.418,32.613 +2020-02-03 18:00:00,140.89,221.644,71.726,32.613 +2020-02-03 18:15:00,138.81,219.799,71.726,32.613 +2020-02-03 18:30:00,142.27,219.105,71.726,32.613 +2020-02-03 18:45:00,138.78,218.90900000000002,71.726,32.613 +2020-02-03 19:00:00,137.55,216.71,65.997,32.613 +2020-02-03 19:15:00,133.6,213.172,65.997,32.613 +2020-02-03 19:30:00,132.16,211.24599999999998,65.997,32.613 +2020-02-03 19:45:00,130.1,208.445,65.997,32.613 +2020-02-03 20:00:00,123.56,203.873,68.09100000000001,32.613 +2020-02-03 20:15:00,121.51,197.967,68.09100000000001,32.613 +2020-02-03 20:30:00,117.5,192.733,68.09100000000001,32.613 +2020-02-03 20:45:00,116.06,192.24400000000003,68.09100000000001,32.613 +2020-02-03 21:00:00,112.08,189.36900000000003,59.617,32.613 +2020-02-03 21:15:00,119.36,185.173,59.617,32.613 +2020-02-03 21:30:00,115.51,183.97799999999998,59.617,32.613 +2020-02-03 21:45:00,112.17,182.554,59.617,32.613 +2020-02-03 22:00:00,102.03,173.428,54.938,32.613 +2020-02-03 22:15:00,101.13,168.33,54.938,32.613 +2020-02-03 22:30:00,103.23,154.47899999999998,54.938,32.613 +2020-02-03 22:45:00,102.28,146.101,54.938,32.613 +2020-02-03 23:00:00,97.78,138.697,47.43,32.613 +2020-02-03 23:15:00,93.27,138.597,47.43,32.613 +2020-02-03 23:30:00,87.74,139.533,47.43,32.613 +2020-02-03 23:45:00,93.42,139.745,47.43,32.613 +2020-02-04 00:00:00,90.86,133.845,48.354,32.613 +2020-02-04 00:15:00,91.14,133.235,48.354,32.613 +2020-02-04 00:30:00,85.35,134.276,48.354,32.613 +2020-02-04 00:45:00,87.43,135.703,48.354,32.613 +2020-02-04 01:00:00,85.05,138.391,45.68600000000001,32.613 +2020-02-04 01:15:00,86.31,138.264,45.68600000000001,32.613 +2020-02-04 01:30:00,82.43,138.523,45.68600000000001,32.613 +2020-02-04 01:45:00,87.86,138.858,45.68600000000001,32.613 +2020-02-04 02:00:00,86.41,141.167,44.269,32.613 +2020-02-04 02:15:00,87.36,143.13,44.269,32.613 +2020-02-04 02:30:00,82.98,144.28,44.269,32.613 +2020-02-04 02:45:00,87.34,146.35399999999998,44.269,32.613 +2020-02-04 03:00:00,85.37,149.16899999999998,44.187,32.613 +2020-02-04 03:15:00,87.11,150.472,44.187,32.613 +2020-02-04 03:30:00,84.96,152.24200000000002,44.187,32.613 +2020-02-04 03:45:00,83.22,154.197,44.187,32.613 +2020-02-04 04:00:00,82.45,165.356,46.126999999999995,32.613 +2020-02-04 04:15:00,83.66,176.574,46.126999999999995,32.613 +2020-02-04 04:30:00,85.46,180.15099999999998,46.126999999999995,32.613 +2020-02-04 04:45:00,87.52,182.96599999999998,46.126999999999995,32.613 +2020-02-04 05:00:00,92.46,216.549,49.666000000000004,32.613 +2020-02-04 05:15:00,94.39,243.795,49.666000000000004,32.613 +2020-02-04 05:30:00,96.94,239.44099999999997,49.666000000000004,32.613 +2020-02-04 05:45:00,101.07,233.153,49.666000000000004,32.613 +2020-02-04 06:00:00,109.2,230.50799999999998,61.077,32.613 +2020-02-04 06:15:00,111.14,236.672,61.077,32.613 +2020-02-04 06:30:00,117.58,239.65099999999998,61.077,32.613 +2020-02-04 06:45:00,123.45,244.737,61.077,32.613 +2020-02-04 07:00:00,133.3,243.669,74.717,32.613 +2020-02-04 07:15:00,131.29,248.86900000000003,74.717,32.613 +2020-02-04 07:30:00,133.43,251.56799999999998,74.717,32.613 +2020-02-04 07:45:00,133.13,252.69799999999998,74.717,32.613 +2020-02-04 08:00:00,136.35,251.172,69.033,32.613 +2020-02-04 08:15:00,136.11,251.097,69.033,32.613 +2020-02-04 08:30:00,134.66,247.888,69.033,32.613 +2020-02-04 08:45:00,134.24,244.832,69.033,32.613 +2020-02-04 09:00:00,133.77,238.14700000000002,63.113,32.613 +2020-02-04 09:15:00,135.41,235.375,63.113,32.613 +2020-02-04 09:30:00,136.68,233.847,63.113,32.613 +2020-02-04 09:45:00,135.45,230.52900000000002,63.113,32.613 +2020-02-04 10:00:00,134.9,225.05700000000002,61.461999999999996,32.613 +2020-02-04 10:15:00,134.83,221.503,61.461999999999996,32.613 +2020-02-04 10:30:00,135.76,217.795,61.461999999999996,32.613 +2020-02-04 10:45:00,134.18,216.19,61.461999999999996,32.613 +2020-02-04 11:00:00,131.66,213.17,59.614,32.613 +2020-02-04 11:15:00,132.42,211.995,59.614,32.613 +2020-02-04 11:30:00,131.61,210.327,59.614,32.613 +2020-02-04 11:45:00,129.45,209.65900000000002,59.614,32.613 +2020-02-04 12:00:00,126.71,205.668,57.415,32.613 +2020-02-04 12:15:00,125.47,205.61599999999999,57.415,32.613 +2020-02-04 12:30:00,128.08,205.076,57.415,32.613 +2020-02-04 12:45:00,125.59,205.66400000000002,57.415,32.613 +2020-02-04 13:00:00,123.19,203.65400000000002,58.534,32.613 +2020-02-04 13:15:00,122.62,202.643,58.534,32.613 +2020-02-04 13:30:00,119.8,201.68,58.534,32.613 +2020-02-04 13:45:00,120.47,201.791,58.534,32.613 +2020-02-04 14:00:00,121.58,201.998,59.415,32.613 +2020-02-04 14:15:00,123.66,202.265,59.415,32.613 +2020-02-04 14:30:00,122.74,203.05599999999998,59.415,32.613 +2020-02-04 14:45:00,123.25,203.967,59.415,32.613 +2020-02-04 15:00:00,126.72,205.26,62.071999999999996,32.613 +2020-02-04 15:15:00,128.05,205.477,62.071999999999996,32.613 +2020-02-04 15:30:00,126.41,206.958,62.071999999999996,32.613 +2020-02-04 15:45:00,125.03,207.822,62.071999999999996,32.613 +2020-02-04 16:00:00,125.33,209.22799999999998,64.99,32.613 +2020-02-04 16:15:00,124.64,211.00400000000002,64.99,32.613 +2020-02-04 16:30:00,127.25,213.877,64.99,32.613 +2020-02-04 16:45:00,128.17,215.144,64.99,32.613 +2020-02-04 17:00:00,133.12,217.313,72.658,32.613 +2020-02-04 17:15:00,136.25,218.657,72.658,32.613 +2020-02-04 17:30:00,140.8,220.261,72.658,32.613 +2020-02-04 17:45:00,141.04,220.595,72.658,32.613 +2020-02-04 18:00:00,142.74,222.60299999999998,73.645,32.613 +2020-02-04 18:15:00,143.03,220.092,73.645,32.613 +2020-02-04 18:30:00,140.63,219.092,73.645,32.613 +2020-02-04 18:45:00,138.97,219.81400000000002,73.645,32.613 +2020-02-04 19:00:00,135.76,217.78,67.085,32.613 +2020-02-04 19:15:00,134.8,213.929,67.085,32.613 +2020-02-04 19:30:00,140.27,211.31400000000002,67.085,32.613 +2020-02-04 19:45:00,133.39,208.546,67.085,32.613 +2020-02-04 20:00:00,125.17,204.082,66.138,32.613 +2020-02-04 20:15:00,128.55,197.642,66.138,32.613 +2020-02-04 20:30:00,119.49,193.523,66.138,32.613 +2020-02-04 20:45:00,118.62,192.36700000000002,66.138,32.613 +2020-02-04 21:00:00,111.08,188.612,57.512,32.613 +2020-02-04 21:15:00,115.78,185.55599999999998,57.512,32.613 +2020-02-04 21:30:00,115.31,183.541,57.512,32.613 +2020-02-04 21:45:00,112.98,182.362,57.512,32.613 +2020-02-04 22:00:00,101.24,175.079,54.545,32.613 +2020-02-04 22:15:00,101.11,169.757,54.545,32.613 +2020-02-04 22:30:00,101.29,155.946,54.545,32.613 +2020-02-04 22:45:00,102.32,147.877,54.545,32.613 +2020-02-04 23:00:00,97.65,140.57399999999998,48.605,32.613 +2020-02-04 23:15:00,94.45,139.328,48.605,32.613 +2020-02-04 23:30:00,87.36,139.886,48.605,32.613 +2020-02-04 23:45:00,92.55,139.616,48.605,32.613 +2020-02-05 00:00:00,89.46,133.739,45.675,32.613 +2020-02-05 00:15:00,90.37,133.12,45.675,32.613 +2020-02-05 00:30:00,85.45,134.141,45.675,32.613 +2020-02-05 00:45:00,84.27,135.56,45.675,32.613 +2020-02-05 01:00:00,85.32,138.22299999999998,43.015,32.613 +2020-02-05 01:15:00,85.92,138.083,43.015,32.613 +2020-02-05 01:30:00,85.0,138.333,43.015,32.613 +2020-02-05 01:45:00,83.16,138.666,43.015,32.613 +2020-02-05 02:00:00,83.15,140.976,41.0,32.613 +2020-02-05 02:15:00,77.78,142.938,41.0,32.613 +2020-02-05 02:30:00,81.84,144.102,41.0,32.613 +2020-02-05 02:45:00,86.05,146.175,41.0,32.613 +2020-02-05 03:00:00,81.25,148.99200000000002,41.318000000000005,32.613 +2020-02-05 03:15:00,88.66,150.3,41.318000000000005,32.613 +2020-02-05 03:30:00,89.0,152.067,41.318000000000005,32.613 +2020-02-05 03:45:00,89.87,154.033,41.318000000000005,32.613 +2020-02-05 04:00:00,85.75,165.185,42.544,32.613 +2020-02-05 04:15:00,82.09,176.393,42.544,32.613 +2020-02-05 04:30:00,83.82,179.982,42.544,32.613 +2020-02-05 04:45:00,88.66,182.785,42.544,32.613 +2020-02-05 05:00:00,90.45,216.34400000000002,45.161,32.613 +2020-02-05 05:15:00,92.16,243.595,45.161,32.613 +2020-02-05 05:30:00,94.66,239.22400000000002,45.161,32.613 +2020-02-05 05:45:00,100.11,232.94299999999998,45.161,32.613 +2020-02-05 06:00:00,110.31,230.312,61.86600000000001,32.613 +2020-02-05 06:15:00,112.52,236.489,61.86600000000001,32.613 +2020-02-05 06:30:00,118.94,239.447,61.86600000000001,32.613 +2020-02-05 06:45:00,122.35,244.541,61.86600000000001,32.613 +2020-02-05 07:00:00,129.73,243.495,77.814,32.613 +2020-02-05 07:15:00,130.12,248.67,77.814,32.613 +2020-02-05 07:30:00,132.0,251.338,77.814,32.613 +2020-02-05 07:45:00,130.03,252.429,77.814,32.613 +2020-02-05 08:00:00,133.79,250.885,70.251,32.613 +2020-02-05 08:15:00,132.59,250.78599999999997,70.251,32.613 +2020-02-05 08:30:00,134.41,247.52200000000002,70.251,32.613 +2020-02-05 08:45:00,131.14,244.46200000000002,70.251,32.613 +2020-02-05 09:00:00,131.14,237.77700000000002,66.965,32.613 +2020-02-05 09:15:00,131.67,235.00900000000001,66.965,32.613 +2020-02-05 09:30:00,133.35,233.50099999999998,66.965,32.613 +2020-02-05 09:45:00,132.54,230.18200000000002,66.965,32.613 +2020-02-05 10:00:00,133.0,224.718,63.628,32.613 +2020-02-05 10:15:00,130.23,221.18900000000002,63.628,32.613 +2020-02-05 10:30:00,128.04,217.488,63.628,32.613 +2020-02-05 10:45:00,128.01,215.894,63.628,32.613 +2020-02-05 11:00:00,127.57,212.861,62.516999999999996,32.613 +2020-02-05 11:15:00,126.97,211.695,62.516999999999996,32.613 +2020-02-05 11:30:00,127.26,210.033,62.516999999999996,32.613 +2020-02-05 11:45:00,128.78,209.375,62.516999999999996,32.613 +2020-02-05 12:00:00,125.28,205.40099999999998,60.888999999999996,32.613 +2020-02-05 12:15:00,123.86,205.365,60.888999999999996,32.613 +2020-02-05 12:30:00,125.88,204.801,60.888999999999996,32.613 +2020-02-05 12:45:00,122.32,205.387,60.888999999999996,32.613 +2020-02-05 13:00:00,120.11,203.394,61.57899999999999,32.613 +2020-02-05 13:15:00,120.74,202.361,61.57899999999999,32.613 +2020-02-05 13:30:00,121.03,201.382,61.57899999999999,32.613 +2020-02-05 13:45:00,121.19,201.493,61.57899999999999,32.613 +2020-02-05 14:00:00,119.29,201.74900000000002,62.602,32.613 +2020-02-05 14:15:00,121.95,201.998,62.602,32.613 +2020-02-05 14:30:00,121.58,202.77700000000002,62.602,32.613 +2020-02-05 14:45:00,122.34,203.703,62.602,32.613 +2020-02-05 15:00:00,125.21,205.007,64.259,32.613 +2020-02-05 15:15:00,123.42,205.195,64.259,32.613 +2020-02-05 15:30:00,126.69,206.644,64.259,32.613 +2020-02-05 15:45:00,122.86,207.49099999999999,64.259,32.613 +2020-02-05 16:00:00,126.84,208.898,67.632,32.613 +2020-02-05 16:15:00,124.67,210.669,67.632,32.613 +2020-02-05 16:30:00,126.69,213.547,67.632,32.613 +2020-02-05 16:45:00,128.11,214.801,67.632,32.613 +2020-02-05 17:00:00,131.41,216.96400000000003,72.583,32.613 +2020-02-05 17:15:00,135.42,218.33599999999998,72.583,32.613 +2020-02-05 17:30:00,141.15,219.976,72.583,32.613 +2020-02-05 17:45:00,142.13,220.33599999999998,72.583,32.613 +2020-02-05 18:00:00,142.56,222.359,72.744,32.613 +2020-02-05 18:15:00,140.69,219.895,72.744,32.613 +2020-02-05 18:30:00,140.23,218.899,72.744,32.613 +2020-02-05 18:45:00,138.2,219.645,72.744,32.613 +2020-02-05 19:00:00,133.78,217.56900000000002,69.684,32.613 +2020-02-05 19:15:00,135.47,213.73,69.684,32.613 +2020-02-05 19:30:00,139.35,211.13400000000001,69.684,32.613 +2020-02-05 19:45:00,137.95,208.394,69.684,32.613 +2020-02-05 20:00:00,129.71,203.90200000000002,70.036,32.613 +2020-02-05 20:15:00,121.3,197.472,70.036,32.613 +2020-02-05 20:30:00,116.66,193.362,70.036,32.613 +2020-02-05 20:45:00,118.71,192.213,70.036,32.613 +2020-02-05 21:00:00,109.48,188.44,60.431999999999995,32.613 +2020-02-05 21:15:00,115.23,185.36900000000003,60.431999999999995,32.613 +2020-02-05 21:30:00,114.27,183.355,60.431999999999995,32.613 +2020-02-05 21:45:00,111.11,182.192,60.431999999999995,32.613 +2020-02-05 22:00:00,102.57,174.896,56.2,32.613 +2020-02-05 22:15:00,98.72,169.59799999999998,56.2,32.613 +2020-02-05 22:30:00,95.62,155.756,56.2,32.613 +2020-02-05 22:45:00,97.92,147.694,56.2,32.613 +2020-02-05 23:00:00,93.72,140.384,47.927,32.613 +2020-02-05 23:15:00,95.58,139.151,47.927,32.613 +2020-02-05 23:30:00,93.57,139.726,47.927,32.613 +2020-02-05 23:45:00,93.42,139.472,47.927,32.613 +2020-02-06 00:00:00,88.03,133.625,43.794,32.613 +2020-02-06 00:15:00,88.69,132.998,43.794,32.613 +2020-02-06 00:30:00,88.37,134.0,43.794,32.613 +2020-02-06 00:45:00,83.31,135.411,43.794,32.613 +2020-02-06 01:00:00,85.13,138.046,42.397,32.613 +2020-02-06 01:15:00,86.78,137.894,42.397,32.613 +2020-02-06 01:30:00,84.13,138.134,42.397,32.613 +2020-02-06 01:45:00,81.34,138.464,42.397,32.613 +2020-02-06 02:00:00,83.95,140.776,40.010999999999996,32.613 +2020-02-06 02:15:00,85.6,142.738,40.010999999999996,32.613 +2020-02-06 02:30:00,84.94,143.915,40.010999999999996,32.613 +2020-02-06 02:45:00,83.06,145.987,40.010999999999996,32.613 +2020-02-06 03:00:00,85.59,148.806,39.181,32.613 +2020-02-06 03:15:00,88.0,150.118,39.181,32.613 +2020-02-06 03:30:00,87.64,151.882,39.181,32.613 +2020-02-06 03:45:00,86.23,153.86,39.181,32.613 +2020-02-06 04:00:00,87.6,165.005,40.39,32.613 +2020-02-06 04:15:00,83.48,176.203,40.39,32.613 +2020-02-06 04:30:00,84.04,179.805,40.39,32.613 +2020-02-06 04:45:00,86.36,182.597,40.39,32.613 +2020-02-06 05:00:00,90.39,216.13299999999998,45.504,32.613 +2020-02-06 05:15:00,92.47,243.39,45.504,32.613 +2020-02-06 05:30:00,94.94,238.99900000000002,45.504,32.613 +2020-02-06 05:45:00,99.52,232.726,45.504,32.613 +2020-02-06 06:00:00,109.99,230.108,57.748000000000005,32.613 +2020-02-06 06:15:00,113.45,236.298,57.748000000000005,32.613 +2020-02-06 06:30:00,117.48,239.236,57.748000000000005,32.613 +2020-02-06 06:45:00,122.09,244.335,57.748000000000005,32.613 +2020-02-06 07:00:00,130.35,243.31099999999998,72.138,32.613 +2020-02-06 07:15:00,131.22,248.46200000000002,72.138,32.613 +2020-02-06 07:30:00,134.4,251.09599999999998,72.138,32.613 +2020-02-06 07:45:00,135.28,252.148,72.138,32.613 +2020-02-06 08:00:00,138.42,250.588,65.542,32.613 +2020-02-06 08:15:00,139.12,250.46400000000003,65.542,32.613 +2020-02-06 08:30:00,135.68,247.144,65.542,32.613 +2020-02-06 08:45:00,135.18,244.079,65.542,32.613 +2020-02-06 09:00:00,136.0,237.396,60.523,32.613 +2020-02-06 09:15:00,137.89,234.63099999999997,60.523,32.613 +2020-02-06 09:30:00,140.17,233.143,60.523,32.613 +2020-02-06 09:45:00,143.52,229.824,60.523,32.613 +2020-02-06 10:00:00,140.22,224.36900000000003,57.449,32.613 +2020-02-06 10:15:00,141.82,220.864,57.449,32.613 +2020-02-06 10:30:00,141.15,217.17,57.449,32.613 +2020-02-06 10:45:00,141.82,215.588,57.449,32.613 +2020-02-06 11:00:00,140.12,212.542,54.505,32.613 +2020-02-06 11:15:00,141.56,211.387,54.505,32.613 +2020-02-06 11:30:00,142.0,209.731,54.505,32.613 +2020-02-06 11:45:00,141.74,209.082,54.505,32.613 +2020-02-06 12:00:00,141.83,205.12400000000002,51.50899999999999,32.613 +2020-02-06 12:15:00,140.81,205.106,51.50899999999999,32.613 +2020-02-06 12:30:00,138.96,204.518,51.50899999999999,32.613 +2020-02-06 12:45:00,136.26,205.1,51.50899999999999,32.613 +2020-02-06 13:00:00,133.75,203.12599999999998,51.303999999999995,32.613 +2020-02-06 13:15:00,132.36,202.07,51.303999999999995,32.613 +2020-02-06 13:30:00,131.1,201.075,51.303999999999995,32.613 +2020-02-06 13:45:00,131.74,201.18599999999998,51.303999999999995,32.613 +2020-02-06 14:00:00,131.95,201.49400000000003,52.785,32.613 +2020-02-06 14:15:00,131.78,201.72299999999998,52.785,32.613 +2020-02-06 14:30:00,129.87,202.489,52.785,32.613 +2020-02-06 14:45:00,131.48,203.43099999999998,52.785,32.613 +2020-02-06 15:00:00,130.36,204.74599999999998,56.458999999999996,32.613 +2020-02-06 15:15:00,130.85,204.90400000000002,56.458999999999996,32.613 +2020-02-06 15:30:00,132.16,206.32,56.458999999999996,32.613 +2020-02-06 15:45:00,129.54,207.15200000000002,56.458999999999996,32.613 +2020-02-06 16:00:00,131.64,208.558,59.388000000000005,32.613 +2020-02-06 16:15:00,130.67,210.32299999999998,59.388000000000005,32.613 +2020-02-06 16:30:00,131.07,213.205,59.388000000000005,32.613 +2020-02-06 16:45:00,131.83,214.446,59.388000000000005,32.613 +2020-02-06 17:00:00,136.93,216.605,64.462,32.613 +2020-02-06 17:15:00,139.65,218.00400000000002,64.462,32.613 +2020-02-06 17:30:00,141.81,219.679,64.462,32.613 +2020-02-06 17:45:00,143.36,220.06400000000002,64.462,32.613 +2020-02-06 18:00:00,143.08,222.104,65.128,32.613 +2020-02-06 18:15:00,141.76,219.69,65.128,32.613 +2020-02-06 18:30:00,142.88,218.695,65.128,32.613 +2020-02-06 18:45:00,140.14,219.465,65.128,32.613 +2020-02-06 19:00:00,137.45,217.34799999999998,61.316,32.613 +2020-02-06 19:15:00,136.1,213.52,61.316,32.613 +2020-02-06 19:30:00,140.99,210.94400000000002,61.316,32.613 +2020-02-06 19:45:00,140.88,208.235,61.316,32.613 +2020-02-06 20:00:00,130.65,203.713,59.845,32.613 +2020-02-06 20:15:00,123.56,197.295,59.845,32.613 +2020-02-06 20:30:00,119.45,193.192,59.845,32.613 +2020-02-06 20:45:00,118.13,192.05,59.845,32.613 +2020-02-06 21:00:00,110.84,188.26,54.83,32.613 +2020-02-06 21:15:00,117.96,185.175,54.83,32.613 +2020-02-06 21:30:00,117.04,183.16,54.83,32.613 +2020-02-06 21:45:00,112.67,182.015,54.83,32.613 +2020-02-06 22:00:00,101.49,174.704,50.933,32.613 +2020-02-06 22:15:00,101.52,169.43,50.933,32.613 +2020-02-06 22:30:00,97.68,155.55700000000002,50.933,32.613 +2020-02-06 22:45:00,100.63,147.503,50.933,32.613 +2020-02-06 23:00:00,98.2,140.183,45.32899999999999,32.613 +2020-02-06 23:15:00,98.49,138.966,45.32899999999999,32.613 +2020-02-06 23:30:00,93.7,139.555,45.32899999999999,32.613 +2020-02-06 23:45:00,88.78,139.321,45.32899999999999,32.613 +2020-02-07 00:00:00,88.69,132.535,43.74,32.613 +2020-02-07 00:15:00,91.22,132.095,43.74,32.613 +2020-02-07 00:30:00,91.01,132.892,43.74,32.613 +2020-02-07 00:45:00,85.92,134.365,43.74,32.613 +2020-02-07 01:00:00,86.38,136.671,42.555,32.613 +2020-02-07 01:15:00,86.96,137.619,42.555,32.613 +2020-02-07 01:30:00,85.7,137.502,42.555,32.613 +2020-02-07 01:45:00,78.77,137.983,42.555,32.613 +2020-02-07 02:00:00,77.21,140.266,41.68600000000001,32.613 +2020-02-07 02:15:00,78.6,142.107,41.68600000000001,32.613 +2020-02-07 02:30:00,78.82,143.773,41.68600000000001,32.613 +2020-02-07 02:45:00,79.14,145.988,41.68600000000001,32.613 +2020-02-07 03:00:00,80.57,147.57399999999998,42.278999999999996,32.613 +2020-02-07 03:15:00,87.01,150.124,42.278999999999996,32.613 +2020-02-07 03:30:00,88.53,151.899,42.278999999999996,32.613 +2020-02-07 03:45:00,91.75,154.13299999999998,42.278999999999996,32.613 +2020-02-07 04:00:00,81.9,165.515,43.742,32.613 +2020-02-07 04:15:00,81.41,176.655,43.742,32.613 +2020-02-07 04:30:00,83.77,180.39,43.742,32.613 +2020-02-07 04:45:00,85.67,181.968,43.742,32.613 +2020-02-07 05:00:00,89.49,214.108,46.973,32.613 +2020-02-07 05:15:00,90.53,242.95,46.973,32.613 +2020-02-07 05:30:00,95.28,239.739,46.973,32.613 +2020-02-07 05:45:00,99.96,233.467,46.973,32.613 +2020-02-07 06:00:00,110.48,231.317,59.63399999999999,32.613 +2020-02-07 06:15:00,113.13,235.822,59.63399999999999,32.613 +2020-02-07 06:30:00,118.49,237.761,59.63399999999999,32.613 +2020-02-07 06:45:00,122.09,244.732,59.63399999999999,32.613 +2020-02-07 07:00:00,129.43,242.68599999999998,71.631,32.613 +2020-02-07 07:15:00,129.96,248.84,71.631,32.613 +2020-02-07 07:30:00,130.46,251.521,71.631,32.613 +2020-02-07 07:45:00,133.64,251.55700000000002,71.631,32.613 +2020-02-07 08:00:00,137.27,248.618,66.181,32.613 +2020-02-07 08:15:00,133.27,247.94099999999997,66.181,32.613 +2020-02-07 08:30:00,132.95,245.679,66.181,32.613 +2020-02-07 08:45:00,131.08,240.852,66.181,32.613 +2020-02-07 09:00:00,132.18,234.997,63.086000000000006,32.613 +2020-02-07 09:15:00,132.77,232.62599999999998,63.086000000000006,32.613 +2020-02-07 09:30:00,132.22,230.766,63.086000000000006,32.613 +2020-02-07 09:45:00,132.21,227.275,63.086000000000006,32.613 +2020-02-07 10:00:00,132.16,220.571,60.886,32.613 +2020-02-07 10:15:00,134.75,217.90599999999998,60.886,32.613 +2020-02-07 10:30:00,132.78,214.06599999999997,60.886,32.613 +2020-02-07 10:45:00,131.45,212.013,60.886,32.613 +2020-02-07 11:00:00,127.82,208.912,59.391000000000005,32.613 +2020-02-07 11:15:00,128.72,206.90200000000002,59.391000000000005,32.613 +2020-02-07 11:30:00,126.6,207.252,59.391000000000005,32.613 +2020-02-07 11:45:00,125.26,206.785,59.391000000000005,32.613 +2020-02-07 12:00:00,123.4,204.003,56.172,32.613 +2020-02-07 12:15:00,122.69,201.739,56.172,32.613 +2020-02-07 12:30:00,121.83,201.28900000000002,56.172,32.613 +2020-02-07 12:45:00,121.23,202.543,56.172,32.613 +2020-02-07 13:00:00,119.63,201.565,54.406000000000006,32.613 +2020-02-07 13:15:00,119.78,201.37599999999998,54.406000000000006,32.613 +2020-02-07 13:30:00,118.9,200.287,54.406000000000006,32.613 +2020-02-07 13:45:00,118.56,200.28799999999998,54.406000000000006,32.613 +2020-02-07 14:00:00,115.99,199.468,53.578,32.613 +2020-02-07 14:15:00,117.39,199.42700000000002,53.578,32.613 +2020-02-07 14:30:00,118.46,200.57,53.578,32.613 +2020-02-07 14:45:00,121.39,201.94799999999998,53.578,32.613 +2020-02-07 15:00:00,122.71,202.743,56.568999999999996,32.613 +2020-02-07 15:15:00,118.45,202.41299999999998,56.568999999999996,32.613 +2020-02-07 15:30:00,118.49,202.174,56.568999999999996,32.613 +2020-02-07 15:45:00,118.79,203.062,56.568999999999996,32.613 +2020-02-07 16:00:00,120.97,203.285,60.169,32.613 +2020-02-07 16:15:00,123.05,205.308,60.169,32.613 +2020-02-07 16:30:00,121.89,208.31900000000002,60.169,32.613 +2020-02-07 16:45:00,123.97,209.50400000000002,60.169,32.613 +2020-02-07 17:00:00,128.63,211.71099999999998,65.497,32.613 +2020-02-07 17:15:00,131.36,212.703,65.497,32.613 +2020-02-07 17:30:00,135.74,214.044,65.497,32.613 +2020-02-07 17:45:00,136.59,214.21599999999998,65.497,32.613 +2020-02-07 18:00:00,137.38,217.047,65.082,32.613 +2020-02-07 18:15:00,136.53,214.35,65.082,32.613 +2020-02-07 18:30:00,135.49,213.798,65.082,32.613 +2020-02-07 18:45:00,134.69,214.545,65.082,32.613 +2020-02-07 19:00:00,131.86,213.304,60.968,32.613 +2020-02-07 19:15:00,131.03,210.918,60.968,32.613 +2020-02-07 19:30:00,134.97,207.908,60.968,32.613 +2020-02-07 19:45:00,136.65,204.822,60.968,32.613 +2020-02-07 20:00:00,128.29,200.338,61.123000000000005,32.613 +2020-02-07 20:15:00,120.3,193.86,61.123000000000005,32.613 +2020-02-07 20:30:00,116.56,189.77,61.123000000000005,32.613 +2020-02-07 20:45:00,113.11,189.325,61.123000000000005,32.613 +2020-02-07 21:00:00,107.82,185.94299999999998,55.416000000000004,32.613 +2020-02-07 21:15:00,111.91,183.15400000000002,55.416000000000004,32.613 +2020-02-07 21:30:00,109.99,181.205,55.416000000000004,32.613 +2020-02-07 21:45:00,109.63,180.65099999999998,55.416000000000004,32.613 +2020-02-07 22:00:00,99.9,174.41299999999998,51.631,32.613 +2020-02-07 22:15:00,94.38,169.043,51.631,32.613 +2020-02-07 22:30:00,91.58,161.64,51.631,32.613 +2020-02-07 22:45:00,96.88,157.365,51.631,32.613 +2020-02-07 23:00:00,93.8,149.38299999999998,44.898,32.613 +2020-02-07 23:15:00,96.38,146.203,44.898,32.613 +2020-02-07 23:30:00,86.3,145.392,44.898,32.613 +2020-02-07 23:45:00,82.22,144.46200000000002,44.898,32.613 +2020-02-08 00:00:00,76.07,129.066,42.033,32.431999999999995 +2020-02-08 00:15:00,81.2,123.95200000000001,42.033,32.431999999999995 +2020-02-08 00:30:00,83.22,126.271,42.033,32.431999999999995 +2020-02-08 00:45:00,85.24,128.624,42.033,32.431999999999995 +2020-02-08 01:00:00,74.78,131.55700000000002,38.255,32.431999999999995 +2020-02-08 01:15:00,73.72,131.313,38.255,32.431999999999995 +2020-02-08 01:30:00,71.69,130.709,38.255,32.431999999999995 +2020-02-08 01:45:00,80.83,130.78799999999998,38.255,32.431999999999995 +2020-02-08 02:00:00,81.35,133.951,36.404,32.431999999999995 +2020-02-08 02:15:00,79.32,135.47799999999998,36.404,32.431999999999995 +2020-02-08 02:30:00,73.69,136.015,36.404,32.431999999999995 +2020-02-08 02:45:00,72.18,138.24,36.404,32.431999999999995 +2020-02-08 03:00:00,76.73,140.701,36.083,32.431999999999995 +2020-02-08 03:15:00,78.04,141.977,36.083,32.431999999999995 +2020-02-08 03:30:00,75.79,141.916,36.083,32.431999999999995 +2020-02-08 03:45:00,72.95,144.086,36.083,32.431999999999995 +2020-02-08 04:00:00,69.34,151.02,36.102,32.431999999999995 +2020-02-08 04:15:00,69.82,159.40200000000002,36.102,32.431999999999995 +2020-02-08 04:30:00,69.75,160.933,36.102,32.431999999999995 +2020-02-08 04:45:00,73.37,161.901,36.102,32.431999999999995 +2020-02-08 05:00:00,71.6,177.055,35.284,32.431999999999995 +2020-02-08 05:15:00,72.11,185.93599999999998,35.284,32.431999999999995 +2020-02-08 05:30:00,71.73,182.887,35.284,32.431999999999995 +2020-02-08 05:45:00,75.3,182.155,35.284,32.431999999999995 +2020-02-08 06:00:00,74.8,199.732,36.265,32.431999999999995 +2020-02-08 06:15:00,74.36,221.66,36.265,32.431999999999995 +2020-02-08 06:30:00,75.45,217.892,36.265,32.431999999999995 +2020-02-08 06:45:00,77.69,215.15,36.265,32.431999999999995 +2020-02-08 07:00:00,83.57,209.08700000000002,40.714,32.431999999999995 +2020-02-08 07:15:00,87.81,213.976,40.714,32.431999999999995 +2020-02-08 07:30:00,87.5,219.47400000000002,40.714,32.431999999999995 +2020-02-08 07:45:00,88.9,223.83700000000002,40.714,32.431999999999995 +2020-02-08 08:00:00,93.52,225.43400000000003,46.692,32.431999999999995 +2020-02-08 08:15:00,95.5,228.845,46.692,32.431999999999995 +2020-02-08 08:30:00,98.42,228.342,46.692,32.431999999999995 +2020-02-08 08:45:00,100.91,226.93599999999998,46.692,32.431999999999995 +2020-02-08 09:00:00,103.5,222.706,48.925,32.431999999999995 +2020-02-08 09:15:00,103.89,221.12,48.925,32.431999999999995 +2020-02-08 09:30:00,104.75,220.226,48.925,32.431999999999995 +2020-02-08 09:45:00,107.02,216.97299999999998,48.925,32.431999999999995 +2020-02-08 10:00:00,107.36,210.49,47.799,32.431999999999995 +2020-02-08 10:15:00,107.78,207.989,47.799,32.431999999999995 +2020-02-08 10:30:00,108.48,204.386,47.799,32.431999999999995 +2020-02-08 10:45:00,109.57,203.84799999999998,47.799,32.431999999999995 +2020-02-08 11:00:00,108.73,201.024,44.309,32.431999999999995 +2020-02-08 11:15:00,110.59,198.15400000000002,44.309,32.431999999999995 +2020-02-08 11:30:00,111.33,197.233,44.309,32.431999999999995 +2020-02-08 11:45:00,110.89,195.63099999999997,44.309,32.431999999999995 +2020-02-08 12:00:00,108.2,191.81599999999997,42.367,32.431999999999995 +2020-02-08 12:15:00,106.08,190.18,42.367,32.431999999999995 +2020-02-08 12:30:00,103.17,190.074,42.367,32.431999999999995 +2020-02-08 12:45:00,102.67,190.37599999999998,42.367,32.431999999999995 +2020-02-08 13:00:00,98.62,189.06799999999998,39.036,32.431999999999995 +2020-02-08 13:15:00,98.03,186.632,39.036,32.431999999999995 +2020-02-08 13:30:00,95.95,185.00099999999998,39.036,32.431999999999995 +2020-02-08 13:45:00,94.83,185.69799999999998,39.036,32.431999999999995 +2020-02-08 14:00:00,96.32,186.321,37.995,32.431999999999995 +2020-02-08 14:15:00,93.19,185.817,37.995,32.431999999999995 +2020-02-08 14:30:00,93.21,184.97400000000002,37.995,32.431999999999995 +2020-02-08 14:45:00,93.07,186.553,37.995,32.431999999999995 +2020-02-08 15:00:00,92.13,188.085,40.71,32.431999999999995 +2020-02-08 15:15:00,92.1,188.537,40.71,32.431999999999995 +2020-02-08 15:30:00,93.08,189.947,40.71,32.431999999999995 +2020-02-08 15:45:00,94.41,190.942,40.71,32.431999999999995 +2020-02-08 16:00:00,93.8,189.675,46.998000000000005,32.431999999999995 +2020-02-08 16:15:00,94.73,192.775,46.998000000000005,32.431999999999995 +2020-02-08 16:30:00,96.17,195.707,46.998000000000005,32.431999999999995 +2020-02-08 16:45:00,97.61,197.858,46.998000000000005,32.431999999999995 +2020-02-08 17:00:00,102.44,199.639,55.431000000000004,32.431999999999995 +2020-02-08 17:15:00,103.98,202.69299999999998,55.431000000000004,32.431999999999995 +2020-02-08 17:30:00,110.41,203.977,55.431000000000004,32.431999999999995 +2020-02-08 17:45:00,109.38,203.68,55.431000000000004,32.431999999999995 +2020-02-08 18:00:00,111.7,205.91099999999997,55.989,32.431999999999995 +2020-02-08 18:15:00,111.45,205.063,55.989,32.431999999999995 +2020-02-08 18:30:00,109.88,205.833,55.989,32.431999999999995 +2020-02-08 18:45:00,108.49,203.294,55.989,32.431999999999995 +2020-02-08 19:00:00,107.67,203.201,50.882,32.431999999999995 +2020-02-08 19:15:00,106.93,200.38299999999998,50.882,32.431999999999995 +2020-02-08 19:30:00,104.88,198.138,50.882,32.431999999999995 +2020-02-08 19:45:00,102.39,194.731,50.882,32.431999999999995 +2020-02-08 20:00:00,98.25,192.463,43.172,32.431999999999995 +2020-02-08 20:15:00,94.38,188.37400000000002,43.172,32.431999999999995 +2020-02-08 20:30:00,91.97,183.99599999999998,43.172,32.431999999999995 +2020-02-08 20:45:00,89.93,182.93900000000002,43.172,32.431999999999995 +2020-02-08 21:00:00,85.08,182.136,37.599000000000004,32.431999999999995 +2020-02-08 21:15:00,83.97,179.845,37.599000000000004,32.431999999999995 +2020-02-08 21:30:00,82.71,179.21599999999998,37.599000000000004,32.431999999999995 +2020-02-08 21:45:00,82.15,178.28900000000002,37.599000000000004,32.431999999999995 +2020-02-08 22:00:00,77.71,173.505,39.047,32.431999999999995 +2020-02-08 22:15:00,77.18,170.838,39.047,32.431999999999995 +2020-02-08 22:30:00,73.7,170.201,39.047,32.431999999999995 +2020-02-08 22:45:00,72.2,167.93,39.047,32.431999999999995 +2020-02-08 23:00:00,69.4,162.638,32.339,32.431999999999995 +2020-02-08 23:15:00,68.66,157.657,32.339,32.431999999999995 +2020-02-08 23:30:00,65.61,154.733,32.339,32.431999999999995 +2020-02-08 23:45:00,64.73,151.15200000000002,32.339,32.431999999999995 +2020-02-09 00:00:00,61.27,129.226,29.988000000000003,32.431999999999995 +2020-02-09 00:15:00,60.71,123.889,29.988000000000003,32.431999999999995 +2020-02-09 00:30:00,59.99,125.789,29.988000000000003,32.431999999999995 +2020-02-09 00:45:00,59.14,128.922,29.988000000000003,32.431999999999995 +2020-02-09 01:00:00,57.53,131.635,28.531999999999996,32.431999999999995 +2020-02-09 01:15:00,56.93,132.55,28.531999999999996,32.431999999999995 +2020-02-09 01:30:00,57.32,132.533,28.531999999999996,32.431999999999995 +2020-02-09 01:45:00,57.14,132.30700000000002,28.531999999999996,32.431999999999995 +2020-02-09 02:00:00,56.24,134.63,27.805999999999997,32.431999999999995 +2020-02-09 02:15:00,57.09,135.11700000000002,27.805999999999997,32.431999999999995 +2020-02-09 02:30:00,56.53,136.59799999999998,27.805999999999997,32.431999999999995 +2020-02-09 02:45:00,54.95,139.373,27.805999999999997,32.431999999999995 +2020-02-09 03:00:00,54.55,142.111,26.193,32.431999999999995 +2020-02-09 03:15:00,55.28,142.769,26.193,32.431999999999995 +2020-02-09 03:30:00,55.8,144.366,26.193,32.431999999999995 +2020-02-09 03:45:00,56.3,146.563,26.193,32.431999999999995 +2020-02-09 04:00:00,56.5,153.233,27.19,32.431999999999995 +2020-02-09 04:15:00,57.24,160.52700000000002,27.19,32.431999999999995 +2020-02-09 04:30:00,57.91,161.968,27.19,32.431999999999995 +2020-02-09 04:45:00,57.79,163.293,27.19,32.431999999999995 +2020-02-09 05:00:00,58.77,174.454,28.166999999999998,32.431999999999995 +2020-02-09 05:15:00,58.46,180.73,28.166999999999998,32.431999999999995 +2020-02-09 05:30:00,60.97,177.52599999999998,28.166999999999998,32.431999999999995 +2020-02-09 05:45:00,62.39,177.112,28.166999999999998,32.431999999999995 +2020-02-09 06:00:00,60.88,194.896,27.16,32.431999999999995 +2020-02-09 06:15:00,63.92,214.793,27.16,32.431999999999995 +2020-02-09 06:30:00,65.05,209.84799999999998,27.16,32.431999999999995 +2020-02-09 06:45:00,63.69,206.051,27.16,32.431999999999995 +2020-02-09 07:00:00,68.95,202.731,29.578000000000003,32.431999999999995 +2020-02-09 07:15:00,68.37,206.84900000000002,29.578000000000003,32.431999999999995 +2020-02-09 07:30:00,70.21,210.766,29.578000000000003,32.431999999999995 +2020-02-09 07:45:00,72.49,214.237,29.578000000000003,32.431999999999995 +2020-02-09 08:00:00,76.04,217.799,34.650999999999996,32.431999999999995 +2020-02-09 08:15:00,76.96,220.94,34.650999999999996,32.431999999999995 +2020-02-09 08:30:00,77.09,222.12400000000002,34.650999999999996,32.431999999999995 +2020-02-09 08:45:00,77.53,222.98,34.650999999999996,32.431999999999995 +2020-02-09 09:00:00,79.01,218.326,38.080999999999996,32.431999999999995 +2020-02-09 09:15:00,78.77,217.41299999999998,38.080999999999996,32.431999999999995 +2020-02-09 09:30:00,75.58,216.317,38.080999999999996,32.431999999999995 +2020-02-09 09:45:00,79.56,212.81599999999997,38.080999999999996,32.431999999999995 +2020-02-09 10:00:00,81.3,209.075,39.934,32.431999999999995 +2020-02-09 10:15:00,76.81,207.17700000000002,39.934,32.431999999999995 +2020-02-09 10:30:00,79.12,204.226,39.934,32.431999999999995 +2020-02-09 10:45:00,81.4,201.47099999999998,39.934,32.431999999999995 +2020-02-09 11:00:00,84.98,199.705,43.74100000000001,32.431999999999995 +2020-02-09 11:15:00,91.65,197.043,43.74100000000001,32.431999999999995 +2020-02-09 11:30:00,93.87,195.105,43.74100000000001,32.431999999999995 +2020-02-09 11:45:00,94.14,194.15599999999998,43.74100000000001,32.431999999999995 +2020-02-09 12:00:00,89.58,189.606,40.001999999999995,32.431999999999995 +2020-02-09 12:15:00,87.22,190.168,40.001999999999995,32.431999999999995 +2020-02-09 12:30:00,81.41,188.4,40.001999999999995,32.431999999999995 +2020-02-09 12:45:00,83.91,187.699,40.001999999999995,32.431999999999995 +2020-02-09 13:00:00,83.42,185.649,37.855,32.431999999999995 +2020-02-09 13:15:00,83.34,186.597,37.855,32.431999999999995 +2020-02-09 13:30:00,83.38,184.843,37.855,32.431999999999995 +2020-02-09 13:45:00,83.48,184.68400000000003,37.855,32.431999999999995 +2020-02-09 14:00:00,82.03,185.49900000000002,35.946999999999996,32.431999999999995 +2020-02-09 14:15:00,81.11,186.253,35.946999999999996,32.431999999999995 +2020-02-09 14:30:00,80.88,186.899,35.946999999999996,32.431999999999995 +2020-02-09 14:45:00,80.8,188.155,35.946999999999996,32.431999999999995 +2020-02-09 15:00:00,80.61,187.985,35.138000000000005,32.431999999999995 +2020-02-09 15:15:00,81.01,189.326,35.138000000000005,32.431999999999995 +2020-02-09 15:30:00,81.24,191.368,35.138000000000005,32.431999999999995 +2020-02-09 15:45:00,82.18,193.079,35.138000000000005,32.431999999999995 +2020-02-09 16:00:00,84.12,194.005,38.672,32.431999999999995 +2020-02-09 16:15:00,82.75,196.077,38.672,32.431999999999995 +2020-02-09 16:30:00,83.87,199.19400000000002,38.672,32.431999999999995 +2020-02-09 16:45:00,85.94,201.47099999999998,38.672,32.431999999999995 +2020-02-09 17:00:00,91.05,203.174,48.684,32.431999999999995 +2020-02-09 17:15:00,91.88,205.752,48.684,32.431999999999995 +2020-02-09 17:30:00,98.58,207.305,48.684,32.431999999999995 +2020-02-09 17:45:00,98.25,209.468,48.684,32.431999999999995 +2020-02-09 18:00:00,103.28,211.042,51.568999999999996,32.431999999999995 +2020-02-09 18:15:00,100.42,211.72099999999998,51.568999999999996,32.431999999999995 +2020-02-09 18:30:00,104.15,210.25400000000002,51.568999999999996,32.431999999999995 +2020-02-09 18:45:00,100.37,209.738,51.568999999999996,32.431999999999995 +2020-02-09 19:00:00,98.81,209.03599999999997,48.608000000000004,32.431999999999995 +2020-02-09 19:15:00,97.23,206.96599999999998,48.608000000000004,32.431999999999995 +2020-02-09 19:30:00,95.94,204.58599999999998,48.608000000000004,32.431999999999995 +2020-02-09 19:45:00,94.87,202.80900000000003,48.608000000000004,32.431999999999995 +2020-02-09 20:00:00,91.94,200.498,43.733999999999995,32.431999999999995 +2020-02-09 20:15:00,91.17,197.502,43.733999999999995,32.431999999999995 +2020-02-09 20:30:00,89.34,194.40599999999998,43.733999999999995,32.431999999999995 +2020-02-09 20:45:00,90.36,192.203,43.733999999999995,32.431999999999995 +2020-02-09 21:00:00,83.75,188.577,39.283,32.431999999999995 +2020-02-09 21:15:00,84.63,185.62,39.283,32.431999999999995 +2020-02-09 21:30:00,84.54,185.36900000000003,39.283,32.431999999999995 +2020-02-09 21:45:00,87.87,184.575,39.283,32.431999999999995 +2020-02-09 22:00:00,86.37,178.296,40.111,32.431999999999995 +2020-02-09 22:15:00,84.1,174.982,40.111,32.431999999999995 +2020-02-09 22:30:00,80.59,170.921,40.111,32.431999999999995 +2020-02-09 22:45:00,80.15,167.84900000000002,40.111,32.431999999999995 +2020-02-09 23:00:00,76.59,159.545,35.791,32.431999999999995 +2020-02-09 23:15:00,78.67,156.477,35.791,32.431999999999995 +2020-02-09 23:30:00,75.47,154.495,35.791,32.431999999999995 +2020-02-09 23:45:00,74.68,151.886,35.791,32.431999999999995 +2020-02-10 00:00:00,69.25,133.565,34.311,32.613 +2020-02-10 00:15:00,70.25,131.43200000000002,34.311,32.613 +2020-02-10 00:30:00,70.75,133.498,34.311,32.613 +2020-02-10 00:45:00,70.63,136.07399999999998,34.311,32.613 +2020-02-10 01:00:00,69.11,138.743,34.585,32.613 +2020-02-10 01:15:00,68.52,139.054,34.585,32.613 +2020-02-10 01:30:00,68.82,139.04399999999998,34.585,32.613 +2020-02-10 01:45:00,69.91,138.957,34.585,32.613 +2020-02-10 02:00:00,68.03,141.208,34.111,32.613 +2020-02-10 02:15:00,68.74,143.455,34.111,32.613 +2020-02-10 02:30:00,68.09,145.303,34.111,32.613 +2020-02-10 02:45:00,68.85,147.40200000000002,34.111,32.613 +2020-02-10 03:00:00,67.44,151.52200000000002,32.435,32.613 +2020-02-10 03:15:00,68.32,153.937,32.435,32.613 +2020-02-10 03:30:00,69.58,155.138,32.435,32.613 +2020-02-10 03:45:00,70.89,156.787,32.435,32.613 +2020-02-10 04:00:00,71.36,167.96099999999998,33.04,32.613 +2020-02-10 04:15:00,73.21,179.521,33.04,32.613 +2020-02-10 04:30:00,75.25,183.50900000000001,33.04,32.613 +2020-02-10 04:45:00,77.06,184.954,33.04,32.613 +2020-02-10 05:00:00,81.16,212.946,40.399,32.613 +2020-02-10 05:15:00,83.71,240.581,40.399,32.613 +2020-02-10 05:30:00,88.12,237.87599999999998,40.399,32.613 +2020-02-10 05:45:00,91.96,231.50799999999998,40.399,32.613 +2020-02-10 06:00:00,100.85,230.446,60.226000000000006,32.613 +2020-02-10 06:15:00,104.58,234.87099999999998,60.226000000000006,32.613 +2020-02-10 06:30:00,109.61,238.394,60.226000000000006,32.613 +2020-02-10 06:45:00,114.01,243.798,60.226000000000006,32.613 +2020-02-10 07:00:00,123.45,243.1,73.578,32.613 +2020-02-10 07:15:00,122.16,248.285,73.578,32.613 +2020-02-10 07:30:00,126.33,251.41,73.578,32.613 +2020-02-10 07:45:00,124.92,251.91099999999997,73.578,32.613 +2020-02-10 08:00:00,128.37,250.143,66.58,32.613 +2020-02-10 08:15:00,127.45,251.013,66.58,32.613 +2020-02-10 08:30:00,127.24,247.687,66.58,32.613 +2020-02-10 08:45:00,126.73,244.77900000000002,66.58,32.613 +2020-02-10 09:00:00,128.93,239.095,62.0,32.613 +2020-02-10 09:15:00,132.12,234.521,62.0,32.613 +2020-02-10 09:30:00,129.88,232.447,62.0,32.613 +2020-02-10 09:45:00,132.17,229.562,62.0,32.613 +2020-02-10 10:00:00,131.38,224.611,59.099,32.613 +2020-02-10 10:15:00,127.86,222.393,59.099,32.613 +2020-02-10 10:30:00,126.07,218.533,59.099,32.613 +2020-02-10 10:45:00,129.64,216.829,59.099,32.613 +2020-02-10 11:00:00,130.68,212.051,57.729,32.613 +2020-02-10 11:15:00,131.96,211.373,57.729,32.613 +2020-02-10 11:30:00,132.31,210.891,57.729,32.613 +2020-02-10 11:45:00,136.23,209.438,57.729,32.613 +2020-02-10 12:00:00,131.68,207.05599999999998,55.615,32.613 +2020-02-10 12:15:00,132.92,207.62,55.615,32.613 +2020-02-10 12:30:00,134.19,206.238,55.615,32.613 +2020-02-10 12:45:00,129.29,207.23,55.615,32.613 +2020-02-10 13:00:00,125.98,205.753,56.515,32.613 +2020-02-10 13:15:00,124.66,205.24,56.515,32.613 +2020-02-10 13:30:00,124.24,202.86,56.515,32.613 +2020-02-10 13:45:00,128.1,202.62900000000002,56.515,32.613 +2020-02-10 14:00:00,124.97,202.88400000000001,58.1,32.613 +2020-02-10 14:15:00,125.5,202.832,58.1,32.613 +2020-02-10 14:30:00,126.78,202.88299999999998,58.1,32.613 +2020-02-10 14:45:00,128.81,203.86900000000003,58.1,32.613 +2020-02-10 15:00:00,129.17,205.675,59.801,32.613 +2020-02-10 15:15:00,129.48,205.46599999999998,59.801,32.613 +2020-02-10 15:30:00,124.6,206.46400000000003,59.801,32.613 +2020-02-10 15:45:00,123.59,207.72099999999998,59.801,32.613 +2020-02-10 16:00:00,123.44,208.65,62.901,32.613 +2020-02-10 16:15:00,123.28,209.86700000000002,62.901,32.613 +2020-02-10 16:30:00,122.68,211.997,62.901,32.613 +2020-02-10 16:45:00,123.82,212.947,62.901,32.613 +2020-02-10 17:00:00,128.52,214.516,70.418,32.613 +2020-02-10 17:15:00,127.46,216.03799999999998,70.418,32.613 +2020-02-10 17:30:00,135.21,217.065,70.418,32.613 +2020-02-10 17:45:00,135.18,217.66099999999997,70.418,32.613 +2020-02-10 18:00:00,137.86,219.78099999999998,71.726,32.613 +2020-02-10 18:15:00,135.1,218.28900000000002,71.726,32.613 +2020-02-10 18:30:00,134.0,217.61,71.726,32.613 +2020-02-10 18:45:00,133.93,217.583,71.726,32.613 +2020-02-10 19:00:00,132.08,215.093,65.997,32.613 +2020-02-10 19:15:00,130.65,211.641,65.997,32.613 +2020-02-10 19:30:00,130.87,209.857,65.997,32.613 +2020-02-10 19:45:00,134.33,207.269,65.997,32.613 +2020-02-10 20:00:00,125.69,202.49400000000003,68.09100000000001,32.613 +2020-02-10 20:15:00,123.18,196.667,68.09100000000001,32.613 +2020-02-10 20:30:00,113.96,191.49900000000002,68.09100000000001,32.613 +2020-02-10 20:45:00,114.18,191.053,68.09100000000001,32.613 +2020-02-10 21:00:00,108.98,188.05599999999998,59.617,32.613 +2020-02-10 21:15:00,111.78,183.76,59.617,32.613 +2020-02-10 21:30:00,113.19,182.56599999999997,59.617,32.613 +2020-02-10 21:45:00,110.69,181.261,59.617,32.613 +2020-02-10 22:00:00,98.01,172.03099999999998,54.938,32.613 +2020-02-10 22:15:00,97.21,167.104,54.938,32.613 +2020-02-10 22:30:00,96.16,153.02700000000002,54.938,32.613 +2020-02-10 22:45:00,99.73,144.695,54.938,32.613 +2020-02-10 23:00:00,94.89,137.238,47.43,32.613 +2020-02-10 23:15:00,95.68,137.238,47.43,32.613 +2020-02-10 23:30:00,87.21,138.285,47.43,32.613 +2020-02-10 23:45:00,87.28,138.628,47.43,32.613 +2020-02-11 00:00:00,86.73,132.929,48.354,32.613 +2020-02-11 00:15:00,86.67,132.27200000000002,48.354,32.613 +2020-02-11 00:30:00,84.13,133.178,48.354,32.613 +2020-02-11 00:45:00,83.69,134.55200000000002,48.354,32.613 +2020-02-11 01:00:00,83.21,137.034,45.68600000000001,32.613 +2020-02-11 01:15:00,84.29,136.819,45.68600000000001,32.613 +2020-02-11 01:30:00,79.62,137.00799999999998,45.68600000000001,32.613 +2020-02-11 01:45:00,77.48,137.332,45.68600000000001,32.613 +2020-02-11 02:00:00,82.18,139.641,44.269,32.613 +2020-02-11 02:15:00,83.97,141.60399999999998,44.269,32.613 +2020-02-11 02:30:00,82.96,142.84799999999998,44.269,32.613 +2020-02-11 02:45:00,77.71,144.915,44.269,32.613 +2020-02-11 03:00:00,76.55,147.748,44.187,32.613 +2020-02-11 03:15:00,81.43,149.071,44.187,32.613 +2020-02-11 03:30:00,85.46,150.81799999999998,44.187,32.613 +2020-02-11 03:45:00,86.18,152.856,44.187,32.613 +2020-02-11 04:00:00,84.27,163.98,46.126999999999995,32.613 +2020-02-11 04:15:00,84.94,175.13400000000001,46.126999999999995,32.613 +2020-02-11 04:30:00,88.91,178.803,46.126999999999995,32.613 +2020-02-11 04:45:00,90.77,181.537,46.126999999999995,32.613 +2020-02-11 05:00:00,89.12,214.968,49.666000000000004,32.613 +2020-02-11 05:15:00,89.51,242.28799999999998,49.666000000000004,32.613 +2020-02-11 05:30:00,91.15,237.78400000000002,49.666000000000004,32.613 +2020-02-11 05:45:00,95.27,231.54,49.666000000000004,32.613 +2020-02-11 06:00:00,104.24,228.979,61.077,32.613 +2020-02-11 06:15:00,107.46,235.239,61.077,32.613 +2020-02-11 06:30:00,112.26,238.045,61.077,32.613 +2020-02-11 06:45:00,115.29,243.15599999999998,61.077,32.613 +2020-02-11 07:00:00,122.79,242.25,74.717,32.613 +2020-02-11 07:15:00,123.23,247.265,74.717,32.613 +2020-02-11 07:30:00,126.38,249.733,74.717,32.613 +2020-02-11 07:45:00,126.0,250.583,74.717,32.613 +2020-02-11 08:00:00,128.06,248.925,69.033,32.613 +2020-02-11 08:15:00,126.93,248.678,69.033,32.613 +2020-02-11 08:30:00,130.01,245.06900000000002,69.033,32.613 +2020-02-11 08:45:00,126.16,241.99200000000002,69.033,32.613 +2020-02-11 09:00:00,127.51,235.327,63.113,32.613 +2020-02-11 09:15:00,129.21,232.574,63.113,32.613 +2020-02-11 09:30:00,129.61,231.18599999999998,63.113,32.613 +2020-02-11 09:45:00,128.56,227.87099999999998,63.113,32.613 +2020-02-11 10:00:00,125.66,222.46099999999998,61.461999999999996,32.613 +2020-02-11 10:15:00,124.7,219.09099999999998,61.461999999999996,32.613 +2020-02-11 10:30:00,123.35,215.44,61.461999999999996,32.613 +2020-02-11 10:45:00,125.93,213.925,61.461999999999996,32.613 +2020-02-11 11:00:00,119.21,210.815,59.614,32.613 +2020-02-11 11:15:00,119.93,209.72,59.614,32.613 +2020-02-11 11:30:00,119.99,208.093,59.614,32.613 +2020-02-11 11:45:00,121.04,207.5,59.614,32.613 +2020-02-11 12:00:00,115.58,203.62099999999998,57.415,32.613 +2020-02-11 12:15:00,116.2,203.688,57.415,32.613 +2020-02-11 12:30:00,121.86,202.972,57.415,32.613 +2020-02-11 12:45:00,119.33,203.535,57.415,32.613 +2020-02-11 13:00:00,115.97,201.671,58.534,32.613 +2020-02-11 13:15:00,115.16,200.493,58.534,32.613 +2020-02-11 13:30:00,116.39,199.42,58.534,32.613 +2020-02-11 13:45:00,118.38,199.53400000000002,58.534,32.613 +2020-02-11 14:00:00,114.61,200.108,59.415,32.613 +2020-02-11 14:15:00,116.91,200.239,59.415,32.613 +2020-02-11 14:30:00,117.94,200.933,59.415,32.613 +2020-02-11 14:45:00,120.5,201.953,59.415,32.613 +2020-02-11 15:00:00,122.94,203.31099999999998,62.071999999999996,32.613 +2020-02-11 15:15:00,119.07,203.321,62.071999999999996,32.613 +2020-02-11 15:30:00,121.84,204.55900000000003,62.071999999999996,32.613 +2020-02-11 15:45:00,120.06,205.305,62.071999999999996,32.613 +2020-02-11 16:00:00,122.44,206.71400000000003,64.99,32.613 +2020-02-11 16:15:00,120.88,208.44099999999997,64.99,32.613 +2020-02-11 16:30:00,120.1,211.33900000000003,64.99,32.613 +2020-02-11 16:45:00,121.9,212.503,64.99,32.613 +2020-02-11 17:00:00,126.56,214.648,72.658,32.613 +2020-02-11 17:15:00,130.27,216.179,72.658,32.613 +2020-02-11 17:30:00,133.97,218.02700000000002,72.658,32.613 +2020-02-11 17:45:00,133.32,218.545,72.658,32.613 +2020-02-11 18:00:00,135.96,220.662,73.645,32.613 +2020-02-11 18:15:00,134.35,218.513,73.645,32.613 +2020-02-11 18:30:00,137.41,217.52700000000002,73.645,32.613 +2020-02-11 18:45:00,134.9,218.418,73.645,32.613 +2020-02-11 19:00:00,133.28,216.093,67.085,32.613 +2020-02-11 19:15:00,131.07,212.33,67.085,32.613 +2020-02-11 19:30:00,128.99,209.861,67.085,32.613 +2020-02-11 19:45:00,130.79,207.312,67.085,32.613 +2020-02-11 20:00:00,123.69,202.644,66.138,32.613 +2020-02-11 20:15:00,117.11,196.28599999999997,66.138,32.613 +2020-02-11 20:30:00,115.68,192.236,66.138,32.613 +2020-02-11 20:45:00,116.21,191.12,66.138,32.613 +2020-02-11 21:00:00,108.07,187.245,57.512,32.613 +2020-02-11 21:15:00,113.35,184.08900000000003,57.512,32.613 +2020-02-11 21:30:00,113.57,182.076,57.512,32.613 +2020-02-11 21:45:00,109.47,181.015,57.512,32.613 +2020-02-11 22:00:00,100.17,173.62599999999998,54.545,32.613 +2020-02-11 22:15:00,99.34,168.476,54.545,32.613 +2020-02-11 22:30:00,95.56,154.42700000000002,54.545,32.613 +2020-02-11 22:45:00,96.63,146.406,54.545,32.613 +2020-02-11 23:00:00,97.75,139.053,48.605,32.613 +2020-02-11 23:15:00,94.85,137.909,48.605,32.613 +2020-02-11 23:30:00,89.6,138.576,48.605,32.613 +2020-02-11 23:45:00,87.08,138.44,48.605,32.613 +2020-02-12 00:00:00,83.69,132.765,45.675,32.613 +2020-02-12 00:15:00,81.35,132.10399999999998,45.675,32.613 +2020-02-12 00:30:00,81.62,132.99,45.675,32.613 +2020-02-12 00:45:00,87.28,134.359,45.675,32.613 +2020-02-12 01:00:00,85.43,136.80700000000002,43.015,32.613 +2020-02-12 01:15:00,86.31,136.579,43.015,32.613 +2020-02-12 01:30:00,81.81,136.75799999999998,43.015,32.613 +2020-02-12 01:45:00,85.94,137.08,43.015,32.613 +2020-02-12 02:00:00,84.66,139.388,41.0,32.613 +2020-02-12 02:15:00,84.18,141.351,41.0,32.613 +2020-02-12 02:30:00,80.13,142.608,41.0,32.613 +2020-02-12 02:45:00,89.1,144.674,41.0,32.613 +2020-02-12 03:00:00,85.93,147.511,41.318000000000005,32.613 +2020-02-12 03:15:00,86.61,148.835,41.318000000000005,32.613 +2020-02-12 03:30:00,84.88,150.577,41.318000000000005,32.613 +2020-02-12 03:45:00,88.19,152.627,41.318000000000005,32.613 +2020-02-12 04:00:00,87.93,163.749,42.544,32.613 +2020-02-12 04:15:00,84.22,174.896,42.544,32.613 +2020-02-12 04:30:00,85.75,178.579,42.544,32.613 +2020-02-12 04:45:00,92.54,181.30200000000002,42.544,32.613 +2020-02-12 05:00:00,97.5,214.71400000000003,45.161,32.613 +2020-02-12 05:15:00,96.39,242.053,45.161,32.613 +2020-02-12 05:30:00,93.69,237.52200000000002,45.161,32.613 +2020-02-12 05:45:00,97.9,231.282,45.161,32.613 +2020-02-12 06:00:00,105.8,228.73,61.86600000000001,32.613 +2020-02-12 06:15:00,112.45,235.005,61.86600000000001,32.613 +2020-02-12 06:30:00,115.07,237.782,61.86600000000001,32.613 +2020-02-12 06:45:00,119.42,242.891,61.86600000000001,32.613 +2020-02-12 07:00:00,125.77,242.01,77.814,32.613 +2020-02-12 07:15:00,125.17,246.997,77.814,32.613 +2020-02-12 07:30:00,125.81,249.429,77.814,32.613 +2020-02-12 07:45:00,127.26,250.237,77.814,32.613 +2020-02-12 08:00:00,129.7,248.55900000000003,70.251,32.613 +2020-02-12 08:15:00,127.18,248.287,70.251,32.613 +2020-02-12 08:30:00,128.56,244.618,70.251,32.613 +2020-02-12 08:45:00,125.84,241.541,70.251,32.613 +2020-02-12 09:00:00,125.04,234.88099999999997,66.965,32.613 +2020-02-12 09:15:00,127.84,232.13,66.965,32.613 +2020-02-12 09:30:00,126.14,230.763,66.965,32.613 +2020-02-12 09:45:00,126.04,227.449,66.965,32.613 +2020-02-12 10:00:00,123.44,222.047,63.628,32.613 +2020-02-12 10:15:00,124.2,218.708,63.628,32.613 +2020-02-12 10:30:00,123.23,215.067,63.628,32.613 +2020-02-12 10:45:00,121.64,213.56599999999997,63.628,32.613 +2020-02-12 11:00:00,120.34,210.44400000000002,62.516999999999996,32.613 +2020-02-12 11:15:00,122.82,209.362,62.516999999999996,32.613 +2020-02-12 11:30:00,118.97,207.74099999999999,62.516999999999996,32.613 +2020-02-12 11:45:00,119.71,207.16,62.516999999999996,32.613 +2020-02-12 12:00:00,116.2,203.298,60.888999999999996,32.613 +2020-02-12 12:15:00,117.0,203.38,60.888999999999996,32.613 +2020-02-12 12:30:00,116.14,202.638,60.888999999999996,32.613 +2020-02-12 12:45:00,117.32,203.196,60.888999999999996,32.613 +2020-02-12 13:00:00,114.38,201.357,61.57899999999999,32.613 +2020-02-12 13:15:00,115.3,200.15400000000002,61.57899999999999,32.613 +2020-02-12 13:30:00,113.12,199.065,61.57899999999999,32.613 +2020-02-12 13:45:00,117.39,199.18,61.57899999999999,32.613 +2020-02-12 14:00:00,117.12,199.81,62.602,32.613 +2020-02-12 14:15:00,116.5,199.92,62.602,32.613 +2020-02-12 14:30:00,117.79,200.59799999999998,62.602,32.613 +2020-02-12 14:45:00,117.74,201.63299999999998,62.602,32.613 +2020-02-12 15:00:00,118.94,202.998,64.259,32.613 +2020-02-12 15:15:00,120.51,202.979,64.259,32.613 +2020-02-12 15:30:00,117.33,204.179,64.259,32.613 +2020-02-12 15:45:00,117.84,204.908,64.259,32.613 +2020-02-12 16:00:00,118.53,206.317,67.632,32.613 +2020-02-12 16:15:00,121.72,208.03400000000002,67.632,32.613 +2020-02-12 16:30:00,120.12,210.935,67.632,32.613 +2020-02-12 16:45:00,121.93,212.081,67.632,32.613 +2020-02-12 17:00:00,125.32,214.22400000000002,72.583,32.613 +2020-02-12 17:15:00,126.29,215.782,72.583,32.613 +2020-02-12 17:30:00,131.21,217.66400000000002,72.583,32.613 +2020-02-12 17:45:00,134.28,218.209,72.583,32.613 +2020-02-12 18:00:00,137.59,220.34099999999998,72.744,32.613 +2020-02-12 18:15:00,135.78,218.24900000000002,72.744,32.613 +2020-02-12 18:30:00,137.74,217.264,72.744,32.613 +2020-02-12 18:45:00,138.12,218.18099999999998,72.744,32.613 +2020-02-12 19:00:00,134.84,215.812,69.684,32.613 +2020-02-12 19:15:00,131.69,212.063,69.684,32.613 +2020-02-12 19:30:00,130.22,209.61700000000002,69.684,32.613 +2020-02-12 19:45:00,132.79,207.10299999999998,69.684,32.613 +2020-02-12 20:00:00,122.05,202.40400000000002,70.036,32.613 +2020-02-12 20:15:00,117.75,196.06,70.036,32.613 +2020-02-12 20:30:00,118.3,192.02200000000002,70.036,32.613 +2020-02-12 20:45:00,115.96,190.91099999999997,70.036,32.613 +2020-02-12 21:00:00,112.05,187.018,60.431999999999995,32.613 +2020-02-12 21:15:00,114.02,183.84900000000002,60.431999999999995,32.613 +2020-02-12 21:30:00,113.2,181.83599999999998,60.431999999999995,32.613 +2020-02-12 21:45:00,108.74,180.792,60.431999999999995,32.613 +2020-02-12 22:00:00,99.68,173.387,56.2,32.613 +2020-02-12 22:15:00,100.84,168.261,56.2,32.613 +2020-02-12 22:30:00,105.11,154.175,56.2,32.613 +2020-02-12 22:45:00,104.72,146.158,56.2,32.613 +2020-02-12 23:00:00,97.34,138.80100000000002,47.927,32.613 +2020-02-12 23:15:00,89.87,137.672,47.927,32.613 +2020-02-12 23:30:00,93.4,138.35399999999998,47.927,32.613 +2020-02-12 23:45:00,93.96,138.24,47.927,32.613 +2020-02-13 00:00:00,89.19,132.594,43.794,32.613 +2020-02-13 00:15:00,88.82,131.93,43.794,32.613 +2020-02-13 00:30:00,89.62,132.795,43.794,32.613 +2020-02-13 00:45:00,88.21,134.158,43.794,32.613 +2020-02-13 01:00:00,82.63,136.571,42.397,32.613 +2020-02-13 01:15:00,82.36,136.33,42.397,32.613 +2020-02-13 01:30:00,84.87,136.498,42.397,32.613 +2020-02-13 01:45:00,85.58,136.821,42.397,32.613 +2020-02-13 02:00:00,81.21,139.126,40.010999999999996,32.613 +2020-02-13 02:15:00,80.58,141.09,40.010999999999996,32.613 +2020-02-13 02:30:00,84.33,142.36,40.010999999999996,32.613 +2020-02-13 02:45:00,85.66,144.425,40.010999999999996,32.613 +2020-02-13 03:00:00,84.48,147.266,39.181,32.613 +2020-02-13 03:15:00,84.82,148.589,39.181,32.613 +2020-02-13 03:30:00,87.48,150.329,39.181,32.613 +2020-02-13 03:45:00,87.5,152.391,39.181,32.613 +2020-02-13 04:00:00,84.29,163.512,40.39,32.613 +2020-02-13 04:15:00,82.01,174.649,40.39,32.613 +2020-02-13 04:30:00,82.76,178.34900000000002,40.39,32.613 +2020-02-13 04:45:00,84.79,181.05900000000003,40.39,32.613 +2020-02-13 05:00:00,88.04,214.454,45.504,32.613 +2020-02-13 05:15:00,91.08,241.812,45.504,32.613 +2020-02-13 05:30:00,93.75,237.25400000000002,45.504,32.613 +2020-02-13 05:45:00,99.4,231.018,45.504,32.613 +2020-02-13 06:00:00,105.36,228.475,57.748000000000005,32.613 +2020-02-13 06:15:00,108.99,234.764,57.748000000000005,32.613 +2020-02-13 06:30:00,113.77,237.51,57.748000000000005,32.613 +2020-02-13 06:45:00,118.6,242.61700000000002,57.748000000000005,32.613 +2020-02-13 07:00:00,125.32,241.76,72.138,32.613 +2020-02-13 07:15:00,124.14,246.71900000000002,72.138,32.613 +2020-02-13 07:30:00,127.06,249.11700000000002,72.138,32.613 +2020-02-13 07:45:00,125.97,249.882,72.138,32.613 +2020-02-13 08:00:00,128.01,248.18200000000002,65.542,32.613 +2020-02-13 08:15:00,126.31,247.885,65.542,32.613 +2020-02-13 08:30:00,125.65,244.155,65.542,32.613 +2020-02-13 08:45:00,126.67,241.079,65.542,32.613 +2020-02-13 09:00:00,125.47,234.424,60.523,32.613 +2020-02-13 09:15:00,126.89,231.675,60.523,32.613 +2020-02-13 09:30:00,129.73,230.329,60.523,32.613 +2020-02-13 09:45:00,129.88,227.015,60.523,32.613 +2020-02-13 10:00:00,131.24,221.625,57.449,32.613 +2020-02-13 10:15:00,135.05,218.315,57.449,32.613 +2020-02-13 10:30:00,132.88,214.68400000000003,57.449,32.613 +2020-02-13 10:45:00,133.42,213.19799999999998,57.449,32.613 +2020-02-13 11:00:00,134.39,210.065,54.505,32.613 +2020-02-13 11:15:00,130.99,208.99599999999998,54.505,32.613 +2020-02-13 11:30:00,130.46,207.382,54.505,32.613 +2020-02-13 11:45:00,131.92,206.813,54.505,32.613 +2020-02-13 12:00:00,132.04,202.96599999999998,51.50899999999999,32.613 +2020-02-13 12:15:00,132.58,203.065,51.50899999999999,32.613 +2020-02-13 12:30:00,130.4,202.295,51.50899999999999,32.613 +2020-02-13 12:45:00,130.32,202.84900000000002,51.50899999999999,32.613 +2020-02-13 13:00:00,128.38,201.03599999999997,51.303999999999995,32.613 +2020-02-13 13:15:00,128.1,199.808,51.303999999999995,32.613 +2020-02-13 13:30:00,127.22,198.702,51.303999999999995,32.613 +2020-02-13 13:45:00,127.79,198.81900000000002,51.303999999999995,32.613 +2020-02-13 14:00:00,128.62,199.505,52.785,32.613 +2020-02-13 14:15:00,126.84,199.595,52.785,32.613 +2020-02-13 14:30:00,126.35,200.25599999999997,52.785,32.613 +2020-02-13 14:45:00,128.53,201.30599999999998,52.785,32.613 +2020-02-13 15:00:00,129.93,202.678,56.458999999999996,32.613 +2020-02-13 15:15:00,128.24,202.62900000000002,56.458999999999996,32.613 +2020-02-13 15:30:00,126.87,203.79,56.458999999999996,32.613 +2020-02-13 15:45:00,125.33,204.50099999999998,56.458999999999996,32.613 +2020-02-13 16:00:00,127.19,205.91099999999997,59.388000000000005,32.613 +2020-02-13 16:15:00,124.76,207.618,59.388000000000005,32.613 +2020-02-13 16:30:00,125.2,210.52200000000002,59.388000000000005,32.613 +2020-02-13 16:45:00,126.24,211.65,59.388000000000005,32.613 +2020-02-13 17:00:00,130.87,213.791,64.462,32.613 +2020-02-13 17:15:00,132.84,215.37400000000002,64.462,32.613 +2020-02-13 17:30:00,137.45,217.291,64.462,32.613 +2020-02-13 17:45:00,138.46,217.863,64.462,32.613 +2020-02-13 18:00:00,138.81,220.00900000000001,65.128,32.613 +2020-02-13 18:15:00,139.01,217.975,65.128,32.613 +2020-02-13 18:30:00,137.4,216.99200000000002,65.128,32.613 +2020-02-13 18:45:00,137.2,217.93200000000002,65.128,32.613 +2020-02-13 19:00:00,135.8,215.521,61.316,32.613 +2020-02-13 19:15:00,131.56,211.78799999999998,61.316,32.613 +2020-02-13 19:30:00,134.76,209.36599999999999,61.316,32.613 +2020-02-13 19:45:00,138.85,206.887,61.316,32.613 +2020-02-13 20:00:00,128.5,202.157,59.845,32.613 +2020-02-13 20:15:00,118.6,195.827,59.845,32.613 +2020-02-13 20:30:00,113.73,191.801,59.845,32.613 +2020-02-13 20:45:00,114.63,190.69299999999998,59.845,32.613 +2020-02-13 21:00:00,108.1,186.78400000000002,54.83,32.613 +2020-02-13 21:15:00,111.9,183.602,54.83,32.613 +2020-02-13 21:30:00,111.83,181.59,54.83,32.613 +2020-02-13 21:45:00,111.1,180.563,54.83,32.613 +2020-02-13 22:00:00,98.11,173.14,50.933,32.613 +2020-02-13 22:15:00,97.59,168.041,50.933,32.613 +2020-02-13 22:30:00,96.24,153.912,50.933,32.613 +2020-02-13 22:45:00,91.94,145.90200000000002,50.933,32.613 +2020-02-13 23:00:00,90.76,138.541,45.32899999999999,32.613 +2020-02-13 23:15:00,94.89,137.42700000000002,45.32899999999999,32.613 +2020-02-13 23:30:00,92.24,138.123,45.32899999999999,32.613 +2020-02-13 23:45:00,90.49,138.031,45.32899999999999,32.613 +2020-02-14 00:00:00,80.41,131.44799999999998,43.74,32.613 +2020-02-14 00:15:00,85.51,130.975,43.74,32.613 +2020-02-14 00:30:00,87.17,131.634,43.74,32.613 +2020-02-14 00:45:00,86.07,133.062,43.74,32.613 +2020-02-14 01:00:00,76.17,135.139,42.555,32.613 +2020-02-14 01:15:00,80.38,135.996,42.555,32.613 +2020-02-14 01:30:00,83.38,135.805,42.555,32.613 +2020-02-14 01:45:00,82.94,136.282,42.555,32.613 +2020-02-14 02:00:00,77.22,138.555,41.68600000000001,32.613 +2020-02-14 02:15:00,79.25,140.39600000000002,41.68600000000001,32.613 +2020-02-14 02:30:00,82.1,142.158,41.68600000000001,32.613 +2020-02-14 02:45:00,84.42,144.364,41.68600000000001,32.613 +2020-02-14 03:00:00,82.15,145.974,42.278999999999996,32.613 +2020-02-14 03:15:00,82.27,148.532,42.278999999999996,32.613 +2020-02-14 03:30:00,85.54,150.282,42.278999999999996,32.613 +2020-02-14 03:45:00,84.15,152.6,42.278999999999996,32.613 +2020-02-14 04:00:00,80.78,163.96400000000003,43.742,32.613 +2020-02-14 04:15:00,81.02,175.043,43.742,32.613 +2020-02-14 04:30:00,81.93,178.87900000000002,43.742,32.613 +2020-02-14 04:45:00,84.27,180.37400000000002,43.742,32.613 +2020-02-14 05:00:00,87.26,212.38099999999997,46.973,32.613 +2020-02-14 05:15:00,88.2,241.33599999999998,46.973,32.613 +2020-02-14 05:30:00,91.52,237.951,46.973,32.613 +2020-02-14 05:45:00,95.37,231.71099999999998,46.973,32.613 +2020-02-14 06:00:00,102.89,229.63400000000001,59.63399999999999,32.613 +2020-02-14 06:15:00,106.98,234.238,59.63399999999999,32.613 +2020-02-14 06:30:00,110.84,235.976,59.63399999999999,32.613 +2020-02-14 06:45:00,116.04,242.94799999999998,59.63399999999999,32.613 +2020-02-14 07:00:00,122.39,241.06900000000002,71.631,32.613 +2020-02-14 07:15:00,121.91,247.02900000000002,71.631,32.613 +2020-02-14 07:30:00,125.24,249.47099999999998,71.631,32.613 +2020-02-14 07:45:00,123.6,249.21599999999998,71.631,32.613 +2020-02-14 08:00:00,125.27,246.135,66.181,32.613 +2020-02-14 08:15:00,123.65,245.28400000000002,66.181,32.613 +2020-02-14 08:30:00,123.84,242.607,66.181,32.613 +2020-02-14 08:45:00,123.1,237.773,66.181,32.613 +2020-02-14 09:00:00,121.88,231.95,63.086000000000006,32.613 +2020-02-14 09:15:00,127.03,229.597,63.086000000000006,32.613 +2020-02-14 09:30:00,125.21,227.877,63.086000000000006,32.613 +2020-02-14 09:45:00,125.55,224.393,63.086000000000006,32.613 +2020-02-14 10:00:00,120.82,217.755,60.886,32.613 +2020-02-14 10:15:00,120.02,215.28900000000002,60.886,32.613 +2020-02-14 10:30:00,120.71,211.518,60.886,32.613 +2020-02-14 10:45:00,119.38,209.56,60.886,32.613 +2020-02-14 11:00:00,118.72,206.375,59.391000000000005,32.613 +2020-02-14 11:15:00,118.29,204.453,59.391000000000005,32.613 +2020-02-14 11:30:00,117.37,204.847,59.391000000000005,32.613 +2020-02-14 11:45:00,114.65,204.46,59.391000000000005,32.613 +2020-02-14 12:00:00,113.88,201.791,56.172,32.613 +2020-02-14 12:15:00,113.37,199.643,56.172,32.613 +2020-02-14 12:30:00,111.06,199.00900000000001,56.172,32.613 +2020-02-14 12:45:00,114.09,200.232,56.172,32.613 +2020-02-14 13:00:00,109.71,199.421,54.406000000000006,32.613 +2020-02-14 13:15:00,109.48,199.05900000000003,54.406000000000006,32.613 +2020-02-14 13:30:00,108.28,197.857,54.406000000000006,32.613 +2020-02-14 13:45:00,110.11,197.86599999999999,54.406000000000006,32.613 +2020-02-14 14:00:00,112.37,197.43200000000002,53.578,32.613 +2020-02-14 14:15:00,116.73,197.24900000000002,53.578,32.613 +2020-02-14 14:30:00,116.58,198.28400000000002,53.578,32.613 +2020-02-14 14:45:00,115.29,199.769,53.578,32.613 +2020-02-14 15:00:00,113.44,200.61700000000002,56.568999999999996,32.613 +2020-02-14 15:15:00,112.25,200.078,56.568999999999996,32.613 +2020-02-14 15:30:00,111.0,199.579,56.568999999999996,32.613 +2020-02-14 15:45:00,113.13,200.34599999999998,56.568999999999996,32.613 +2020-02-14 16:00:00,114.03,200.571,60.169,32.613 +2020-02-14 16:15:00,115.56,202.53400000000002,60.169,32.613 +2020-02-14 16:30:00,117.3,205.56599999999997,60.169,32.613 +2020-02-14 16:45:00,117.51,206.63299999999998,60.169,32.613 +2020-02-14 17:00:00,123.02,208.825,65.497,32.613 +2020-02-14 17:15:00,123.09,209.998,65.497,32.613 +2020-02-14 17:30:00,125.89,211.582,65.497,32.613 +2020-02-14 17:45:00,129.33,211.94,65.497,32.613 +2020-02-14 18:00:00,131.38,214.87599999999998,65.082,32.613 +2020-02-14 18:15:00,129.52,212.56799999999998,65.082,32.613 +2020-02-14 18:30:00,129.37,212.02700000000002,65.082,32.613 +2020-02-14 18:45:00,130.15,212.945,65.082,32.613 +2020-02-14 19:00:00,127.94,211.408,60.968,32.613 +2020-02-14 19:15:00,128.26,209.11900000000003,60.968,32.613 +2020-02-14 19:30:00,129.49,206.266,60.968,32.613 +2020-02-14 19:45:00,134.25,203.418,60.968,32.613 +2020-02-14 20:00:00,123.84,198.725,61.123000000000005,32.613 +2020-02-14 20:15:00,113.6,192.33599999999998,61.123000000000005,32.613 +2020-02-14 20:30:00,111.96,188.327,61.123000000000005,32.613 +2020-02-14 20:45:00,109.54,187.91299999999998,61.123000000000005,32.613 +2020-02-14 21:00:00,103.24,184.41400000000002,55.416000000000004,32.613 +2020-02-14 21:15:00,107.66,181.52900000000002,55.416000000000004,32.613 +2020-02-14 21:30:00,106.5,179.583,55.416000000000004,32.613 +2020-02-14 21:45:00,100.0,179.14700000000002,55.416000000000004,32.613 +2020-02-14 22:00:00,92.22,172.795,51.631,32.613 +2020-02-14 22:15:00,89.89,167.59900000000002,51.631,32.613 +2020-02-14 22:30:00,87.77,159.931,51.631,32.613 +2020-02-14 22:45:00,89.65,155.7,51.631,32.613 +2020-02-14 23:00:00,81.69,147.679,44.898,32.613 +2020-02-14 23:15:00,87.18,144.605,44.898,32.613 +2020-02-14 23:30:00,86.71,143.9,44.898,32.613 +2020-02-14 23:45:00,86.41,143.115,44.898,32.613 +2020-02-15 00:00:00,79.08,116.521,42.033,32.431999999999995 +2020-02-15 00:15:00,72.83,111.295,42.033,32.431999999999995 +2020-02-15 00:30:00,73.01,112.603,42.033,32.431999999999995 +2020-02-15 00:45:00,78.83,113.965,42.033,32.431999999999995 +2020-02-15 01:00:00,77.6,116.42,38.255,32.431999999999995 +2020-02-15 01:15:00,76.74,116.64299999999999,38.255,32.431999999999995 +2020-02-15 01:30:00,71.1,116.18299999999999,38.255,32.431999999999995 +2020-02-15 01:45:00,68.6,116.26,38.255,32.431999999999995 +2020-02-15 02:00:00,68.99,119.05,36.404,32.431999999999995 +2020-02-15 02:15:00,77.1,119.95700000000001,36.404,32.431999999999995 +2020-02-15 02:30:00,76.22,120.164,36.404,32.431999999999995 +2020-02-15 02:45:00,74.46,122.105,36.404,32.431999999999995 +2020-02-15 03:00:00,68.01,124.14200000000001,36.083,32.431999999999995 +2020-02-15 03:15:00,70.9,125.476,36.083,32.431999999999995 +2020-02-15 03:30:00,76.79,125.72399999999999,36.083,32.431999999999995 +2020-02-15 03:45:00,72.61,127.546,36.083,32.431999999999995 +2020-02-15 04:00:00,70.23,135.398,36.102,32.431999999999995 +2020-02-15 04:15:00,69.29,144.376,36.102,32.431999999999995 +2020-02-15 04:30:00,69.13,144.93200000000002,36.102,32.431999999999995 +2020-02-15 04:45:00,70.59,145.541,36.102,32.431999999999995 +2020-02-15 05:00:00,72.01,161.107,35.284,32.431999999999995 +2020-02-15 05:15:00,73.57,171.671,35.284,32.431999999999995 +2020-02-15 05:30:00,71.26,168.453,35.284,32.431999999999995 +2020-02-15 05:45:00,73.74,166.71900000000002,35.284,32.431999999999995 +2020-02-15 06:00:00,74.58,183.00599999999997,36.265,32.431999999999995 +2020-02-15 06:15:00,75.42,203.584,36.265,32.431999999999995 +2020-02-15 06:30:00,76.43,199.912,36.265,32.431999999999995 +2020-02-15 06:45:00,78.71,196.593,36.265,32.431999999999995 +2020-02-15 07:00:00,80.29,192.623,40.714,32.431999999999995 +2020-02-15 07:15:00,81.02,196.359,40.714,32.431999999999995 +2020-02-15 07:30:00,83.66,200.294,40.714,32.431999999999995 +2020-02-15 07:45:00,87.0,203.146,40.714,32.431999999999995 +2020-02-15 08:00:00,90.02,204.477,46.692,32.431999999999995 +2020-02-15 08:15:00,90.93,206.66299999999998,46.692,32.431999999999995 +2020-02-15 08:30:00,92.08,205.672,46.692,32.431999999999995 +2020-02-15 08:45:00,93.93,203.412,46.692,32.431999999999995 +2020-02-15 09:00:00,96.51,198.43,48.925,32.431999999999995 +2020-02-15 09:15:00,95.91,196.627,48.925,32.431999999999995 +2020-02-15 09:30:00,96.0,195.517,48.925,32.431999999999995 +2020-02-15 09:45:00,96.39,192.588,48.925,32.431999999999995 +2020-02-15 10:00:00,96.58,187.47799999999998,47.799,32.431999999999995 +2020-02-15 10:15:00,96.18,184.49900000000002,47.799,32.431999999999995 +2020-02-15 10:30:00,95.93,182.03599999999997,47.799,32.431999999999995 +2020-02-15 10:45:00,96.38,181.78799999999998,47.799,32.431999999999995 +2020-02-15 11:00:00,98.86,180.104,44.309,32.431999999999995 +2020-02-15 11:15:00,100.22,177.608,44.309,32.431999999999995 +2020-02-15 11:30:00,99.83,177.332,44.309,32.431999999999995 +2020-02-15 11:45:00,98.79,175.109,44.309,32.431999999999995 +2020-02-15 12:00:00,99.97,170.31400000000002,42.367,32.431999999999995 +2020-02-15 12:15:00,98.06,168.968,42.367,32.431999999999995 +2020-02-15 12:30:00,94.95,168.99599999999998,42.367,32.431999999999995 +2020-02-15 12:45:00,93.22,169.708,42.367,32.431999999999995 +2020-02-15 13:00:00,91.16,169.28,39.036,32.431999999999995 +2020-02-15 13:15:00,90.52,166.933,39.036,32.431999999999995 +2020-02-15 13:30:00,89.43,165.641,39.036,32.431999999999995 +2020-02-15 13:45:00,90.29,165.61900000000003,39.036,32.431999999999995 +2020-02-15 14:00:00,88.86,166.04,37.995,32.431999999999995 +2020-02-15 14:15:00,88.98,165.236,37.995,32.431999999999995 +2020-02-15 14:30:00,89.39,164.611,37.995,32.431999999999995 +2020-02-15 14:45:00,92.56,165.851,37.995,32.431999999999995 +2020-02-15 15:00:00,90.72,167.85299999999998,40.71,32.431999999999995 +2020-02-15 15:15:00,93.83,167.59599999999998,40.71,32.431999999999995 +2020-02-15 15:30:00,90.34,169.00400000000002,40.71,32.431999999999995 +2020-02-15 15:45:00,89.96,170.202,40.71,32.431999999999995 +2020-02-15 16:00:00,91.14,169.48,46.998000000000005,32.431999999999995 +2020-02-15 16:15:00,90.96,172.19400000000002,46.998000000000005,32.431999999999995 +2020-02-15 16:30:00,91.81,175.07299999999998,46.998000000000005,32.431999999999995 +2020-02-15 16:45:00,93.73,177.238,46.998000000000005,32.431999999999995 +2020-02-15 17:00:00,98.33,178.832,55.431000000000004,32.431999999999995 +2020-02-15 17:15:00,99.99,182.15599999999998,55.431000000000004,32.431999999999995 +2020-02-15 17:30:00,103.94,184.06900000000002,55.431000000000004,32.431999999999995 +2020-02-15 17:45:00,107.33,184.25099999999998,55.431000000000004,32.431999999999995 +2020-02-15 18:00:00,110.74,186.635,55.989,32.431999999999995 +2020-02-15 18:15:00,108.62,187.128,55.989,32.431999999999995 +2020-02-15 18:30:00,109.33,187.54,55.989,32.431999999999995 +2020-02-15 18:45:00,107.71,185.11,55.989,32.431999999999995 +2020-02-15 19:00:00,106.51,186.041,50.882,32.431999999999995 +2020-02-15 19:15:00,104.82,183.521,50.882,32.431999999999995 +2020-02-15 19:30:00,103.08,182.215,50.882,32.431999999999995 +2020-02-15 19:45:00,102.01,178.392,50.882,32.431999999999995 +2020-02-15 20:00:00,96.44,176.037,43.172,32.431999999999995 +2020-02-15 20:15:00,92.99,172.542,43.172,32.431999999999995 +2020-02-15 20:30:00,90.07,168.233,43.172,32.431999999999995 +2020-02-15 20:45:00,89.39,166.56,43.172,32.431999999999995 +2020-02-15 21:00:00,84.61,166.14,37.599000000000004,32.431999999999995 +2020-02-15 21:15:00,83.31,164.019,37.599000000000004,32.431999999999995 +2020-02-15 21:30:00,82.48,163.214,37.599000000000004,32.431999999999995 +2020-02-15 21:45:00,81.66,162.619,37.599000000000004,32.431999999999995 +2020-02-15 22:00:00,77.87,157.94799999999998,39.047,32.431999999999995 +2020-02-15 22:15:00,76.64,155.707,39.047,32.431999999999995 +2020-02-15 22:30:00,74.14,154.209,39.047,32.431999999999995 +2020-02-15 22:45:00,73.06,152.016,39.047,32.431999999999995 +2020-02-15 23:00:00,69.29,147.38299999999998,32.339,32.431999999999995 +2020-02-15 23:15:00,69.86,142.295,32.339,32.431999999999995 +2020-02-15 23:30:00,65.81,140.22,32.339,32.431999999999995 +2020-02-15 23:45:00,64.83,137.039,32.339,32.431999999999995 +2020-02-16 00:00:00,59.92,116.76700000000001,29.988000000000003,32.431999999999995 +2020-02-16 00:15:00,60.99,111.206,29.988000000000003,32.431999999999995 +2020-02-16 00:30:00,60.45,112.125,29.988000000000003,32.431999999999995 +2020-02-16 00:45:00,59.8,114.161,29.988000000000003,32.431999999999995 +2020-02-16 01:00:00,56.82,116.45,28.531999999999996,32.431999999999995 +2020-02-16 01:15:00,58.25,117.669,28.531999999999996,32.431999999999995 +2020-02-16 01:30:00,57.58,117.70200000000001,28.531999999999996,32.431999999999995 +2020-02-16 01:45:00,56.97,117.46600000000001,28.531999999999996,32.431999999999995 +2020-02-16 02:00:00,55.01,119.524,27.805999999999997,32.431999999999995 +2020-02-16 02:15:00,55.92,119.61399999999999,27.805999999999997,32.431999999999995 +2020-02-16 02:30:00,55.77,120.67200000000001,27.805999999999997,32.431999999999995 +2020-02-16 02:45:00,55.31,123.05799999999999,27.805999999999997,32.431999999999995 +2020-02-16 03:00:00,54.28,125.42200000000001,26.193,32.431999999999995 +2020-02-16 03:15:00,56.05,126.24799999999999,26.193,32.431999999999995 +2020-02-16 03:30:00,55.3,127.836,26.193,32.431999999999995 +2020-02-16 03:45:00,55.85,129.576,26.193,32.431999999999995 +2020-02-16 04:00:00,55.44,137.189,27.19,32.431999999999995 +2020-02-16 04:15:00,56.58,145.164,27.19,32.431999999999995 +2020-02-16 04:30:00,56.86,145.828,27.19,32.431999999999995 +2020-02-16 04:45:00,58.08,146.68,27.19,32.431999999999995 +2020-02-16 05:00:00,58.38,158.819,28.166999999999998,32.431999999999995 +2020-02-16 05:15:00,58.85,167.02900000000002,28.166999999999998,32.431999999999995 +2020-02-16 05:30:00,59.76,163.615,28.166999999999998,32.431999999999995 +2020-02-16 05:45:00,60.47,162.11700000000002,28.166999999999998,32.431999999999995 +2020-02-16 06:00:00,61.37,178.252,27.16,32.431999999999995 +2020-02-16 06:15:00,64.85,197.18900000000002,27.16,32.431999999999995 +2020-02-16 06:30:00,63.55,192.395,27.16,32.431999999999995 +2020-02-16 06:45:00,65.16,188.02,27.16,32.431999999999995 +2020-02-16 07:00:00,68.28,186.46,29.578000000000003,32.431999999999995 +2020-02-16 07:15:00,67.41,189.298,29.578000000000003,32.431999999999995 +2020-02-16 07:30:00,69.82,192.037,29.578000000000003,32.431999999999995 +2020-02-16 07:45:00,72.92,194.109,29.578000000000003,32.431999999999995 +2020-02-16 08:00:00,74.96,197.226,34.650999999999996,32.431999999999995 +2020-02-16 08:15:00,75.92,199.338,34.650999999999996,32.431999999999995 +2020-02-16 08:30:00,77.55,199.925,34.650999999999996,32.431999999999995 +2020-02-16 08:45:00,79.55,199.627,34.650999999999996,32.431999999999995 +2020-02-16 09:00:00,81.5,194.25599999999997,38.080999999999996,32.431999999999995 +2020-02-16 09:15:00,82.17,192.979,38.080999999999996,32.431999999999995 +2020-02-16 09:30:00,83.33,191.74900000000002,38.080999999999996,32.431999999999995 +2020-02-16 09:45:00,84.69,188.739,38.080999999999996,32.431999999999995 +2020-02-16 10:00:00,85.76,186.095,39.934,32.431999999999995 +2020-02-16 10:15:00,85.84,183.66400000000002,39.934,32.431999999999995 +2020-02-16 10:30:00,89.06,181.803,39.934,32.431999999999995 +2020-02-16 10:45:00,89.12,179.768,39.934,32.431999999999995 +2020-02-16 11:00:00,92.11,178.949,43.74100000000001,32.431999999999995 +2020-02-16 11:15:00,95.2,176.582,43.74100000000001,32.431999999999995 +2020-02-16 11:30:00,96.92,175.487,43.74100000000001,32.431999999999995 +2020-02-16 11:45:00,95.96,173.87099999999998,43.74100000000001,32.431999999999995 +2020-02-16 12:00:00,93.67,168.581,40.001999999999995,32.431999999999995 +2020-02-16 12:15:00,92.58,169.065,40.001999999999995,32.431999999999995 +2020-02-16 12:30:00,89.3,167.671,40.001999999999995,32.431999999999995 +2020-02-16 12:45:00,90.13,167.426,40.001999999999995,32.431999999999995 +2020-02-16 13:00:00,84.56,166.325,37.855,32.431999999999995 +2020-02-16 13:15:00,84.84,166.843,37.855,32.431999999999995 +2020-02-16 13:30:00,82.46,165.296,37.855,32.431999999999995 +2020-02-16 13:45:00,82.47,164.67700000000002,37.855,32.431999999999995 +2020-02-16 14:00:00,80.52,165.43,35.946999999999996,32.431999999999995 +2020-02-16 14:15:00,80.46,165.77599999999998,35.946999999999996,32.431999999999995 +2020-02-16 14:30:00,80.76,166.28,35.946999999999996,32.431999999999995 +2020-02-16 14:45:00,80.96,167.1,35.946999999999996,32.431999999999995 +2020-02-16 15:00:00,81.11,167.64,35.138000000000005,32.431999999999995 +2020-02-16 15:15:00,79.85,168.058,35.138000000000005,32.431999999999995 +2020-02-16 15:30:00,79.76,169.99,35.138000000000005,32.431999999999995 +2020-02-16 15:45:00,80.59,171.847,35.138000000000005,32.431999999999995 +2020-02-16 16:00:00,82.28,172.89,38.672,32.431999999999995 +2020-02-16 16:15:00,81.81,174.72099999999998,38.672,32.431999999999995 +2020-02-16 16:30:00,81.95,177.882,38.672,32.431999999999995 +2020-02-16 16:45:00,84.44,180.15599999999998,38.672,32.431999999999995 +2020-02-16 17:00:00,88.25,181.767,48.684,32.431999999999995 +2020-02-16 17:15:00,89.74,184.832,48.684,32.431999999999995 +2020-02-16 17:30:00,92.59,187.075,48.684,32.431999999999995 +2020-02-16 17:45:00,97.75,189.489,48.684,32.431999999999995 +2020-02-16 18:00:00,103.5,191.37400000000002,51.568999999999996,32.431999999999995 +2020-02-16 18:15:00,103.77,193.201,51.568999999999996,32.431999999999995 +2020-02-16 18:30:00,103.86,191.58,51.568999999999996,32.431999999999995 +2020-02-16 18:45:00,101.12,190.97400000000002,51.568999999999996,32.431999999999995 +2020-02-16 19:00:00,100.36,191.597,48.608000000000004,32.431999999999995 +2020-02-16 19:15:00,97.84,189.642,48.608000000000004,32.431999999999995 +2020-02-16 19:30:00,100.63,188.19299999999998,48.608000000000004,32.431999999999995 +2020-02-16 19:45:00,103.68,185.798,48.608000000000004,32.431999999999995 +2020-02-16 20:00:00,99.8,183.389,43.733999999999995,32.431999999999995 +2020-02-16 20:15:00,93.26,180.862,43.733999999999995,32.431999999999995 +2020-02-16 20:30:00,92.18,177.79,43.733999999999995,32.431999999999995 +2020-02-16 20:45:00,90.05,174.91400000000002,43.733999999999995,32.431999999999995 +2020-02-16 21:00:00,87.92,171.957,39.283,32.431999999999995 +2020-02-16 21:15:00,88.88,169.209,39.283,32.431999999999995 +2020-02-16 21:30:00,93.52,168.675,39.283,32.431999999999995 +2020-02-16 21:45:00,95.15,168.239,39.283,32.431999999999995 +2020-02-16 22:00:00,90.26,162.445,40.111,32.431999999999995 +2020-02-16 22:15:00,89.37,159.447,40.111,32.431999999999995 +2020-02-16 22:30:00,90.03,154.82,40.111,32.431999999999995 +2020-02-16 22:45:00,90.58,151.776,40.111,32.431999999999995 +2020-02-16 23:00:00,86.82,144.405,35.791,32.431999999999995 +2020-02-16 23:15:00,85.0,141.168,35.791,32.431999999999995 +2020-02-16 23:30:00,86.25,139.881,35.791,32.431999999999995 +2020-02-16 23:45:00,84.99,137.593,35.791,32.431999999999995 +2020-02-17 00:00:00,81.05,120.693,34.311,32.613 +2020-02-17 00:15:00,80.07,118.045,34.311,32.613 +2020-02-17 00:30:00,81.59,119.06200000000001,34.311,32.613 +2020-02-17 00:45:00,81.45,120.56,34.311,32.613 +2020-02-17 01:00:00,76.96,122.838,34.585,32.613 +2020-02-17 01:15:00,76.08,123.53,34.585,32.613 +2020-02-17 01:30:00,79.32,123.61200000000001,34.585,32.613 +2020-02-17 01:45:00,79.06,123.48700000000001,34.585,32.613 +2020-02-17 02:00:00,75.2,125.52799999999999,34.111,32.613 +2020-02-17 02:15:00,77.83,127.016,34.111,32.613 +2020-02-17 02:30:00,78.92,128.418,34.111,32.613 +2020-02-17 02:45:00,80.45,130.196,34.111,32.613 +2020-02-17 03:00:00,74.01,133.811,32.435,32.613 +2020-02-17 03:15:00,76.74,136.253,32.435,32.613 +2020-02-17 03:30:00,81.58,137.588,32.435,32.613 +2020-02-17 03:45:00,81.79,138.791,32.435,32.613 +2020-02-17 04:00:00,80.2,150.708,33.04,32.613 +2020-02-17 04:15:00,77.79,162.775,33.04,32.613 +2020-02-17 04:30:00,85.23,165.579,33.04,32.613 +2020-02-17 04:45:00,86.55,166.584,33.04,32.613 +2020-02-17 05:00:00,89.34,194.2,40.399,32.613 +2020-02-17 05:15:00,84.87,222.275,40.399,32.613 +2020-02-17 05:30:00,88.55,219.07,40.399,32.613 +2020-02-17 05:45:00,93.5,212.00799999999998,40.399,32.613 +2020-02-17 06:00:00,101.21,210.477,60.226000000000006,32.613 +2020-02-17 06:15:00,106.95,214.78900000000002,60.226000000000006,32.613 +2020-02-17 06:30:00,112.4,217.851,60.226000000000006,32.613 +2020-02-17 06:45:00,116.6,222.146,60.226000000000006,32.613 +2020-02-17 07:00:00,122.33,222.924,73.578,32.613 +2020-02-17 07:15:00,122.39,226.99400000000003,73.578,32.613 +2020-02-17 07:30:00,122.25,228.925,73.578,32.613 +2020-02-17 07:45:00,124.77,228.46599999999998,73.578,32.613 +2020-02-17 08:00:00,129.11,226.765,66.58,32.613 +2020-02-17 08:15:00,127.63,226.747,66.58,32.613 +2020-02-17 08:30:00,123.89,223.28599999999997,66.58,32.613 +2020-02-17 08:45:00,122.13,219.752,66.58,32.613 +2020-02-17 09:00:00,124.23,213.396,62.0,32.613 +2020-02-17 09:15:00,125.02,208.692,62.0,32.613 +2020-02-17 09:30:00,125.32,206.49,62.0,32.613 +2020-02-17 09:45:00,122.32,203.72299999999998,62.0,32.613 +2020-02-17 10:00:00,121.29,200.037,59.099,32.613 +2020-02-17 10:15:00,125.81,197.31599999999997,59.099,32.613 +2020-02-17 10:30:00,124.92,194.606,59.099,32.613 +2020-02-17 10:45:00,127.08,193.273,59.099,32.613 +2020-02-17 11:00:00,122.8,189.91400000000002,57.729,32.613 +2020-02-17 11:15:00,123.95,189.315,57.729,32.613 +2020-02-17 11:30:00,125.08,189.584,57.729,32.613 +2020-02-17 11:45:00,121.96,187.597,57.729,32.613 +2020-02-17 12:00:00,120.65,183.946,55.615,32.613 +2020-02-17 12:15:00,122.1,184.45,55.615,32.613 +2020-02-17 12:30:00,120.86,183.24200000000002,55.615,32.613 +2020-02-17 12:45:00,120.22,184.47099999999998,55.615,32.613 +2020-02-17 13:00:00,118.27,183.98,56.515,32.613 +2020-02-17 13:15:00,119.03,183.113,56.515,32.613 +2020-02-17 13:30:00,118.32,181.043,56.515,32.613 +2020-02-17 13:45:00,117.07,180.481,56.515,32.613 +2020-02-17 14:00:00,115.45,180.667,58.1,32.613 +2020-02-17 14:15:00,118.18,180.386,58.1,32.613 +2020-02-17 14:30:00,118.2,180.34400000000002,58.1,32.613 +2020-02-17 14:45:00,115.44,181.199,58.1,32.613 +2020-02-17 15:00:00,117.71,183.47299999999998,59.801,32.613 +2020-02-17 15:15:00,119.93,182.456,59.801,32.613 +2020-02-17 15:30:00,119.86,183.56599999999997,59.801,32.613 +2020-02-17 15:45:00,115.36,184.96400000000003,59.801,32.613 +2020-02-17 16:00:00,116.04,186.22400000000002,62.901,32.613 +2020-02-17 16:15:00,117.83,187.304,62.901,32.613 +2020-02-17 16:30:00,118.12,189.513,62.901,32.613 +2020-02-17 16:45:00,120.01,190.609,62.901,32.613 +2020-02-17 17:00:00,123.07,192.03900000000002,70.418,32.613 +2020-02-17 17:15:00,128.21,194.203,70.418,32.613 +2020-02-17 17:30:00,127.74,195.93200000000002,70.418,32.613 +2020-02-17 17:45:00,131.41,196.90400000000002,70.418,32.613 +2020-02-17 18:00:00,133.59,199.207,71.726,32.613 +2020-02-17 18:15:00,132.22,198.90099999999998,71.726,32.613 +2020-02-17 18:30:00,134.7,197.90400000000002,71.726,32.613 +2020-02-17 18:45:00,132.33,198.072,71.726,32.613 +2020-02-17 19:00:00,129.8,197.084,65.997,32.613 +2020-02-17 19:15:00,128.73,194.02,65.997,32.613 +2020-02-17 19:30:00,129.34,193.07299999999998,65.997,32.613 +2020-02-17 19:45:00,129.08,189.891,65.997,32.613 +2020-02-17 20:00:00,119.74,185.122,68.09100000000001,32.613 +2020-02-17 20:15:00,116.95,180.209,68.09100000000001,32.613 +2020-02-17 20:30:00,113.25,175.343,68.09100000000001,32.613 +2020-02-17 20:45:00,111.85,174.063,68.09100000000001,32.613 +2020-02-17 21:00:00,106.25,171.602,59.617,32.613 +2020-02-17 21:15:00,111.38,167.703,59.617,32.613 +2020-02-17 21:30:00,111.19,166.368,59.617,32.613 +2020-02-17 21:45:00,107.47,165.453,59.617,32.613 +2020-02-17 22:00:00,100.26,156.791,54.938,32.613 +2020-02-17 22:15:00,96.86,152.559,54.938,32.613 +2020-02-17 22:30:00,93.99,138.485,54.938,32.613 +2020-02-17 22:45:00,92.23,130.718,54.938,32.613 +2020-02-17 23:00:00,85.74,124.1,47.43,32.613 +2020-02-17 23:15:00,87.58,123.447,47.43,32.613 +2020-02-17 23:30:00,86.64,124.87200000000001,47.43,32.613 +2020-02-17 23:45:00,94.27,125.181,47.43,32.613 +2020-02-18 00:00:00,90.43,119.78299999999999,48.354,32.613 +2020-02-18 00:15:00,87.49,118.541,48.354,32.613 +2020-02-18 00:30:00,81.76,118.62799999999999,48.354,32.613 +2020-02-18 00:45:00,80.22,119.175,48.354,32.613 +2020-02-18 01:00:00,84.53,121.22,45.68600000000001,32.613 +2020-02-18 01:15:00,84.82,121.465,45.68600000000001,32.613 +2020-02-18 01:30:00,82.61,121.7,45.68600000000001,32.613 +2020-02-18 01:45:00,78.21,121.87,45.68600000000001,32.613 +2020-02-18 02:00:00,82.26,123.896,44.269,32.613 +2020-02-18 02:15:00,84.76,125.286,44.269,32.613 +2020-02-18 02:30:00,83.23,126.115,44.269,32.613 +2020-02-18 02:45:00,78.58,127.90799999999999,44.269,32.613 +2020-02-18 03:00:00,79.52,130.341,44.187,32.613 +2020-02-18 03:15:00,84.9,131.954,44.187,32.613 +2020-02-18 03:30:00,86.95,133.75799999999998,44.187,32.613 +2020-02-18 03:45:00,85.47,135.149,44.187,32.613 +2020-02-18 04:00:00,80.95,146.857,46.126999999999995,32.613 +2020-02-18 04:15:00,86.03,158.57399999999998,46.126999999999995,32.613 +2020-02-18 04:30:00,90.64,161.08700000000002,46.126999999999995,32.613 +2020-02-18 04:45:00,93.17,163.274,46.126999999999995,32.613 +2020-02-18 05:00:00,95.59,195.803,49.666000000000004,32.613 +2020-02-18 05:15:00,96.2,223.696,49.666000000000004,32.613 +2020-02-18 05:30:00,101.55,218.959,49.666000000000004,32.613 +2020-02-18 05:45:00,105.28,211.90200000000002,49.666000000000004,32.613 +2020-02-18 06:00:00,111.44,209.226,61.077,32.613 +2020-02-18 06:15:00,110.26,215.14700000000002,61.077,32.613 +2020-02-18 06:30:00,113.34,217.54,61.077,32.613 +2020-02-18 06:45:00,118.15,221.449,61.077,32.613 +2020-02-18 07:00:00,124.13,222.07,74.717,32.613 +2020-02-18 07:15:00,123.32,225.953,74.717,32.613 +2020-02-18 07:30:00,123.67,227.312,74.717,32.613 +2020-02-18 07:45:00,124.55,227.015,74.717,32.613 +2020-02-18 08:00:00,129.02,225.399,69.033,32.613 +2020-02-18 08:15:00,128.96,224.354,69.033,32.613 +2020-02-18 08:30:00,129.77,220.667,69.033,32.613 +2020-02-18 08:45:00,127.77,216.868,69.033,32.613 +2020-02-18 09:00:00,129.25,209.703,63.113,32.613 +2020-02-18 09:15:00,133.26,206.56900000000002,63.113,32.613 +2020-02-18 09:30:00,129.51,205.06,63.113,32.613 +2020-02-18 09:45:00,127.42,202.097,63.113,32.613 +2020-02-18 10:00:00,123.91,197.831,61.461999999999996,32.613 +2020-02-18 10:15:00,124.56,194.101,61.461999999999996,32.613 +2020-02-18 10:30:00,124.88,191.581,61.461999999999996,32.613 +2020-02-18 10:45:00,127.18,190.551,61.461999999999996,32.613 +2020-02-18 11:00:00,126.45,188.638,59.614,32.613 +2020-02-18 11:15:00,127.78,187.733,59.614,32.613 +2020-02-18 11:30:00,124.02,186.854,59.614,32.613 +2020-02-18 11:45:00,124.8,185.56099999999998,59.614,32.613 +2020-02-18 12:00:00,119.33,180.585,57.415,32.613 +2020-02-18 12:15:00,122.01,180.7,57.415,32.613 +2020-02-18 12:30:00,121.83,180.183,57.415,32.613 +2020-02-18 12:45:00,118.63,181.13099999999997,57.415,32.613 +2020-02-18 13:00:00,114.34,180.268,58.534,32.613 +2020-02-18 13:15:00,116.38,179.06400000000002,58.534,32.613 +2020-02-18 13:30:00,116.49,178.125,58.534,32.613 +2020-02-18 13:45:00,118.33,177.733,58.534,32.613 +2020-02-18 14:00:00,120.0,178.25900000000001,59.415,32.613 +2020-02-18 14:15:00,120.28,178.108,59.415,32.613 +2020-02-18 14:30:00,120.23,178.66400000000002,59.415,32.613 +2020-02-18 14:45:00,123.79,179.44299999999998,59.415,32.613 +2020-02-18 15:00:00,121.51,181.301,62.071999999999996,32.613 +2020-02-18 15:15:00,120.26,180.593,62.071999999999996,32.613 +2020-02-18 15:30:00,122.85,181.87900000000002,62.071999999999996,32.613 +2020-02-18 15:45:00,121.26,182.873,62.071999999999996,32.613 +2020-02-18 16:00:00,122.32,184.453,64.99,32.613 +2020-02-18 16:15:00,121.34,185.988,64.99,32.613 +2020-02-18 16:30:00,122.1,188.827,64.99,32.613 +2020-02-18 16:45:00,124.58,190.19,64.99,32.613 +2020-02-18 17:00:00,130.96,192.155,72.658,32.613 +2020-02-18 17:15:00,129.03,194.37,72.658,32.613 +2020-02-18 17:30:00,131.39,196.77700000000002,72.658,32.613 +2020-02-18 17:45:00,134.3,197.639,72.658,32.613 +2020-02-18 18:00:00,137.03,199.84099999999998,73.645,32.613 +2020-02-18 18:15:00,135.62,199.113,73.645,32.613 +2020-02-18 18:30:00,134.52,197.81,73.645,32.613 +2020-02-18 18:45:00,134.65,198.78099999999998,73.645,32.613 +2020-02-18 19:00:00,130.82,197.82299999999998,67.085,32.613 +2020-02-18 19:15:00,130.82,194.50099999999998,67.085,32.613 +2020-02-18 19:30:00,138.13,192.917,67.085,32.613 +2020-02-18 19:45:00,138.56,189.81,67.085,32.613 +2020-02-18 20:00:00,126.03,185.172,66.138,32.613 +2020-02-18 20:15:00,119.06,179.63099999999997,66.138,32.613 +2020-02-18 20:30:00,114.73,175.77599999999998,66.138,32.613 +2020-02-18 20:45:00,113.6,173.94299999999998,66.138,32.613 +2020-02-18 21:00:00,107.89,170.787,57.512,32.613 +2020-02-18 21:15:00,114.35,167.757,57.512,32.613 +2020-02-18 21:30:00,113.36,165.707,57.512,32.613 +2020-02-18 21:45:00,111.8,165.03599999999997,57.512,32.613 +2020-02-18 22:00:00,100.85,158.043,54.545,32.613 +2020-02-18 22:15:00,99.95,153.578,54.545,32.613 +2020-02-18 22:30:00,100.92,139.555,54.545,32.613 +2020-02-18 22:45:00,102.09,132.065,54.545,32.613 +2020-02-18 23:00:00,97.23,125.461,48.605,32.613 +2020-02-18 23:15:00,94.48,123.948,48.605,32.613 +2020-02-18 23:30:00,89.92,125.03,48.605,32.613 +2020-02-18 23:45:00,91.19,124.929,48.605,32.613 +2020-02-19 00:00:00,90.06,119.571,45.675,32.613 +2020-02-19 00:15:00,88.18,118.331,45.675,32.613 +2020-02-19 00:30:00,88.53,118.399,45.675,32.613 +2020-02-19 00:45:00,85.32,118.94200000000001,45.675,32.613 +2020-02-19 01:00:00,85.6,120.95299999999999,43.015,32.613 +2020-02-19 01:15:00,87.17,121.185,43.015,32.613 +2020-02-19 01:30:00,86.58,121.40700000000001,43.015,32.613 +2020-02-19 01:45:00,82.82,121.579,43.015,32.613 +2020-02-19 02:00:00,84.77,123.601,41.0,32.613 +2020-02-19 02:15:00,86.47,124.98700000000001,41.0,32.613 +2020-02-19 02:30:00,83.73,125.83200000000001,41.0,32.613 +2020-02-19 02:45:00,83.36,127.624,41.0,32.613 +2020-02-19 03:00:00,86.31,130.064,41.318000000000005,32.613 +2020-02-19 03:15:00,87.22,131.672,41.318000000000005,32.613 +2020-02-19 03:30:00,83.52,133.47,41.318000000000005,32.613 +2020-02-19 03:45:00,86.28,134.872,41.318000000000005,32.613 +2020-02-19 04:00:00,81.82,146.582,42.544,32.613 +2020-02-19 04:15:00,86.0,158.291,42.544,32.613 +2020-02-19 04:30:00,91.07,160.819,42.544,32.613 +2020-02-19 04:45:00,93.83,162.994,42.544,32.613 +2020-02-19 05:00:00,95.03,195.505,45.161,32.613 +2020-02-19 05:15:00,92.61,223.41400000000002,45.161,32.613 +2020-02-19 05:30:00,95.38,218.649,45.161,32.613 +2020-02-19 05:45:00,101.64,211.597,45.161,32.613 +2020-02-19 06:00:00,106.45,208.93200000000002,61.86600000000001,32.613 +2020-02-19 06:15:00,110.83,214.862,61.86600000000001,32.613 +2020-02-19 06:30:00,114.29,217.22099999999998,61.86600000000001,32.613 +2020-02-19 06:45:00,118.12,221.122,61.86600000000001,32.613 +2020-02-19 07:00:00,124.11,221.766,77.814,32.613 +2020-02-19 07:15:00,126.22,225.61900000000003,77.814,32.613 +2020-02-19 07:30:00,128.75,226.94299999999998,77.814,32.613 +2020-02-19 07:45:00,127.24,226.606,77.814,32.613 +2020-02-19 08:00:00,130.4,224.96900000000002,70.251,32.613 +2020-02-19 08:15:00,128.37,223.905,70.251,32.613 +2020-02-19 08:30:00,132.94,220.16299999999998,70.251,32.613 +2020-02-19 08:45:00,130.84,216.36900000000003,70.251,32.613 +2020-02-19 09:00:00,133.42,209.21200000000002,66.965,32.613 +2020-02-19 09:15:00,135.01,206.08,66.965,32.613 +2020-02-19 09:30:00,136.59,204.59099999999998,66.965,32.613 +2020-02-19 09:45:00,138.7,201.63400000000001,66.965,32.613 +2020-02-19 10:00:00,134.17,197.37900000000002,63.628,32.613 +2020-02-19 10:15:00,135.78,193.68099999999998,63.628,32.613 +2020-02-19 10:30:00,135.61,191.174,63.628,32.613 +2020-02-19 10:45:00,136.33,190.16,63.628,32.613 +2020-02-19 11:00:00,134.83,188.235,62.516999999999996,32.613 +2020-02-19 11:15:00,132.88,187.34599999999998,62.516999999999996,32.613 +2020-02-19 11:30:00,130.69,186.47299999999998,62.516999999999996,32.613 +2020-02-19 11:45:00,126.99,185.19299999999998,62.516999999999996,32.613 +2020-02-19 12:00:00,126.05,180.234,60.888999999999996,32.613 +2020-02-19 12:15:00,122.3,180.364,60.888999999999996,32.613 +2020-02-19 12:30:00,119.64,179.81799999999998,60.888999999999996,32.613 +2020-02-19 12:45:00,118.58,180.763,60.888999999999996,32.613 +2020-02-19 13:00:00,115.52,179.93,61.57899999999999,32.613 +2020-02-19 13:15:00,116.57,178.705,61.57899999999999,32.613 +2020-02-19 13:30:00,113.94,177.752,61.57899999999999,32.613 +2020-02-19 13:45:00,115.97,177.36,61.57899999999999,32.613 +2020-02-19 14:00:00,114.21,177.94400000000002,62.602,32.613 +2020-02-19 14:15:00,115.49,177.77200000000002,62.602,32.613 +2020-02-19 14:30:00,115.54,178.308,62.602,32.613 +2020-02-19 14:45:00,118.46,179.09900000000002,62.602,32.613 +2020-02-19 15:00:00,119.72,180.96599999999998,64.259,32.613 +2020-02-19 15:15:00,122.91,180.229,64.259,32.613 +2020-02-19 15:30:00,120.97,181.476,64.259,32.613 +2020-02-19 15:45:00,121.61,182.453,64.259,32.613 +2020-02-19 16:00:00,124.31,184.03400000000002,67.632,32.613 +2020-02-19 16:15:00,123.96,185.55599999999998,67.632,32.613 +2020-02-19 16:30:00,123.8,188.396,67.632,32.613 +2020-02-19 16:45:00,124.67,189.734,67.632,32.613 +2020-02-19 17:00:00,129.4,191.702,72.583,32.613 +2020-02-19 17:15:00,130.26,193.933,72.583,32.613 +2020-02-19 17:30:00,133.14,196.37,72.583,32.613 +2020-02-19 17:45:00,133.67,197.252,72.583,32.613 +2020-02-19 18:00:00,138.63,199.46599999999998,72.744,32.613 +2020-02-19 18:15:00,135.29,198.795,72.744,32.613 +2020-02-19 18:30:00,137.36,197.49099999999999,72.744,32.613 +2020-02-19 18:45:00,134.04,198.484,72.744,32.613 +2020-02-19 19:00:00,131.09,197.487,69.684,32.613 +2020-02-19 19:15:00,130.73,194.18,69.684,32.613 +2020-02-19 19:30:00,136.9,192.62099999999998,69.684,32.613 +2020-02-19 19:45:00,137.66,189.549,69.684,32.613 +2020-02-19 20:00:00,126.33,184.882,70.036,32.613 +2020-02-19 20:15:00,117.21,179.354,70.036,32.613 +2020-02-19 20:30:00,116.21,175.517,70.036,32.613 +2020-02-19 20:45:00,114.1,173.687,70.036,32.613 +2020-02-19 21:00:00,108.92,170.518,60.431999999999995,32.613 +2020-02-19 21:15:00,114.41,167.477,60.431999999999995,32.613 +2020-02-19 21:30:00,113.68,165.428,60.431999999999995,32.613 +2020-02-19 21:45:00,113.09,164.775,60.431999999999995,32.613 +2020-02-19 22:00:00,101.66,157.768,56.2,32.613 +2020-02-19 22:15:00,97.67,153.327,56.2,32.613 +2020-02-19 22:30:00,95.3,139.265,56.2,32.613 +2020-02-19 22:45:00,95.0,131.78,56.2,32.613 +2020-02-19 23:00:00,94.34,125.169,47.927,32.613 +2020-02-19 23:15:00,97.09,123.671,47.927,32.613 +2020-02-19 23:30:00,95.13,124.764,47.927,32.613 +2020-02-19 23:45:00,91.62,124.68700000000001,47.927,32.613 +2020-02-20 00:00:00,84.69,119.354,43.794,32.613 +2020-02-20 00:15:00,87.96,118.113,43.794,32.613 +2020-02-20 00:30:00,88.54,118.163,43.794,32.613 +2020-02-20 00:45:00,87.1,118.70299999999999,43.794,32.613 +2020-02-20 01:00:00,80.45,120.679,42.397,32.613 +2020-02-20 01:15:00,79.74,120.897,42.397,32.613 +2020-02-20 01:30:00,79.29,121.10799999999999,42.397,32.613 +2020-02-20 01:45:00,84.73,121.281,42.397,32.613 +2020-02-20 02:00:00,85.65,123.29799999999999,40.010999999999996,32.613 +2020-02-20 02:15:00,86.23,124.682,40.010999999999996,32.613 +2020-02-20 02:30:00,82.4,125.541,40.010999999999996,32.613 +2020-02-20 02:45:00,80.94,127.333,40.010999999999996,32.613 +2020-02-20 03:00:00,86.23,129.78,39.181,32.613 +2020-02-20 03:15:00,87.78,131.382,39.181,32.613 +2020-02-20 03:30:00,86.6,133.175,39.181,32.613 +2020-02-20 03:45:00,82.73,134.589,39.181,32.613 +2020-02-20 04:00:00,84.08,146.3,40.39,32.613 +2020-02-20 04:15:00,82.86,158.0,40.39,32.613 +2020-02-20 04:30:00,83.77,160.543,40.39,32.613 +2020-02-20 04:45:00,86.58,162.708,40.39,32.613 +2020-02-20 05:00:00,97.42,195.2,45.504,32.613 +2020-02-20 05:15:00,99.75,223.127,45.504,32.613 +2020-02-20 05:30:00,97.65,218.333,45.504,32.613 +2020-02-20 05:45:00,102.13,211.28599999999997,45.504,32.613 +2020-02-20 06:00:00,106.74,208.63,57.748000000000005,32.613 +2020-02-20 06:15:00,110.76,214.57,57.748000000000005,32.613 +2020-02-20 06:30:00,114.34,216.894,57.748000000000005,32.613 +2020-02-20 06:45:00,118.21,220.787,57.748000000000005,32.613 +2020-02-20 07:00:00,123.28,221.452,72.138,32.613 +2020-02-20 07:15:00,123.1,225.27700000000002,72.138,32.613 +2020-02-20 07:30:00,125.66,226.56400000000002,72.138,32.613 +2020-02-20 07:45:00,125.06,226.188,72.138,32.613 +2020-02-20 08:00:00,127.31,224.528,65.542,32.613 +2020-02-20 08:15:00,125.33,223.446,65.542,32.613 +2020-02-20 08:30:00,126.93,219.65,65.542,32.613 +2020-02-20 08:45:00,122.41,215.863,65.542,32.613 +2020-02-20 09:00:00,122.95,208.71200000000002,60.523,32.613 +2020-02-20 09:15:00,123.48,205.582,60.523,32.613 +2020-02-20 09:30:00,123.66,204.113,60.523,32.613 +2020-02-20 09:45:00,123.38,201.16299999999998,60.523,32.613 +2020-02-20 10:00:00,123.79,196.918,57.449,32.613 +2020-02-20 10:15:00,122.44,193.252,57.449,32.613 +2020-02-20 10:30:00,120.99,190.75900000000001,57.449,32.613 +2020-02-20 10:45:00,121.04,189.761,57.449,32.613 +2020-02-20 11:00:00,118.26,187.826,54.505,32.613 +2020-02-20 11:15:00,118.28,186.951,54.505,32.613 +2020-02-20 11:30:00,118.21,186.08599999999998,54.505,32.613 +2020-02-20 11:45:00,117.86,184.82,54.505,32.613 +2020-02-20 12:00:00,116.74,179.87599999999998,51.50899999999999,32.613 +2020-02-20 12:15:00,118.18,180.021,51.50899999999999,32.613 +2020-02-20 12:30:00,118.55,179.447,51.50899999999999,32.613 +2020-02-20 12:45:00,118.61,180.388,51.50899999999999,32.613 +2020-02-20 13:00:00,114.9,179.585,51.303999999999995,32.613 +2020-02-20 13:15:00,115.25,178.33700000000002,51.303999999999995,32.613 +2020-02-20 13:30:00,112.8,177.372,51.303999999999995,32.613 +2020-02-20 13:45:00,116.14,176.981,51.303999999999995,32.613 +2020-02-20 14:00:00,111.39,177.622,52.785,32.613 +2020-02-20 14:15:00,115.64,177.429,52.785,32.613 +2020-02-20 14:30:00,114.88,177.945,52.785,32.613 +2020-02-20 14:45:00,116.2,178.748,52.785,32.613 +2020-02-20 15:00:00,118.06,180.623,56.458999999999996,32.613 +2020-02-20 15:15:00,115.92,179.859,56.458999999999996,32.613 +2020-02-20 15:30:00,115.99,181.065,56.458999999999996,32.613 +2020-02-20 15:45:00,117.51,182.02599999999998,56.458999999999996,32.613 +2020-02-20 16:00:00,117.85,183.607,59.388000000000005,32.613 +2020-02-20 16:15:00,118.3,185.11700000000002,59.388000000000005,32.613 +2020-02-20 16:30:00,122.42,187.958,59.388000000000005,32.613 +2020-02-20 16:45:00,122.43,189.268,59.388000000000005,32.613 +2020-02-20 17:00:00,124.49,191.24099999999999,64.462,32.613 +2020-02-20 17:15:00,125.36,193.489,64.462,32.613 +2020-02-20 17:30:00,131.6,195.954,64.462,32.613 +2020-02-20 17:45:00,131.89,196.857,64.462,32.613 +2020-02-20 18:00:00,138.28,199.081,65.128,32.613 +2020-02-20 18:15:00,136.37,198.468,65.128,32.613 +2020-02-20 18:30:00,138.13,197.16400000000002,65.128,32.613 +2020-02-20 18:45:00,136.19,198.179,65.128,32.613 +2020-02-20 19:00:00,132.24,197.143,61.316,32.613 +2020-02-20 19:15:00,136.06,193.85,61.316,32.613 +2020-02-20 19:30:00,140.35,192.31599999999997,61.316,32.613 +2020-02-20 19:45:00,136.18,189.28099999999998,61.316,32.613 +2020-02-20 20:00:00,124.63,184.584,59.845,32.613 +2020-02-20 20:15:00,117.47,179.071,59.845,32.613 +2020-02-20 20:30:00,115.88,175.25,59.845,32.613 +2020-02-20 20:45:00,113.56,173.425,59.845,32.613 +2020-02-20 21:00:00,109.82,170.24099999999999,54.83,32.613 +2020-02-20 21:15:00,107.49,167.19099999999997,54.83,32.613 +2020-02-20 21:30:00,105.41,165.142,54.83,32.613 +2020-02-20 21:45:00,107.31,164.50900000000001,54.83,32.613 +2020-02-20 22:00:00,98.64,157.486,50.933,32.613 +2020-02-20 22:15:00,102.93,153.07,50.933,32.613 +2020-02-20 22:30:00,103.82,138.967,50.933,32.613 +2020-02-20 22:45:00,105.37,131.486,50.933,32.613 +2020-02-20 23:00:00,94.47,124.87,45.32899999999999,32.613 +2020-02-20 23:15:00,90.46,123.387,45.32899999999999,32.613 +2020-02-20 23:30:00,88.59,124.492,45.32899999999999,32.613 +2020-02-20 23:45:00,88.87,124.436,45.32899999999999,32.613 +2020-02-21 00:00:00,84.07,118.053,43.74,32.613 +2020-02-21 00:15:00,90.99,117.012,43.74,32.613 +2020-02-21 00:30:00,90.98,116.915,43.74,32.613 +2020-02-21 00:45:00,87.5,117.566,43.74,32.613 +2020-02-21 01:00:00,80.73,119.194,42.555,32.613 +2020-02-21 01:15:00,82.69,120.294,42.555,32.613 +2020-02-21 01:30:00,78.88,120.279,42.555,32.613 +2020-02-21 01:45:00,79.85,120.557,42.555,32.613 +2020-02-21 02:00:00,79.02,122.663,41.68600000000001,32.613 +2020-02-21 02:15:00,86.13,123.93,41.68600000000001,32.613 +2020-02-21 02:30:00,87.4,125.331,41.68600000000001,32.613 +2020-02-21 02:45:00,87.01,127.15700000000001,41.68600000000001,32.613 +2020-02-21 03:00:00,80.72,128.641,42.278999999999996,32.613 +2020-02-21 03:15:00,80.62,131.14600000000002,42.278999999999996,32.613 +2020-02-21 03:30:00,82.45,132.915,42.278999999999996,32.613 +2020-02-21 03:45:00,82.52,134.672,42.278999999999996,32.613 +2020-02-21 04:00:00,83.5,146.612,43.742,32.613 +2020-02-21 04:15:00,88.63,158.04399999999998,43.742,32.613 +2020-02-21 04:30:00,94.41,160.84,43.742,32.613 +2020-02-21 04:45:00,95.37,161.859,43.742,32.613 +2020-02-21 05:00:00,94.16,193.079,46.973,32.613 +2020-02-21 05:15:00,92.16,222.521,46.973,32.613 +2020-02-21 05:30:00,94.26,218.762,46.973,32.613 +2020-02-21 05:45:00,99.52,211.65099999999998,46.973,32.613 +2020-02-21 06:00:00,108.6,209.43200000000002,59.63399999999999,32.613 +2020-02-21 06:15:00,111.42,213.935,59.63399999999999,32.613 +2020-02-21 06:30:00,115.46,215.37400000000002,59.63399999999999,32.613 +2020-02-21 06:45:00,117.72,220.855,59.63399999999999,32.613 +2020-02-21 07:00:00,122.43,220.72799999999998,71.631,32.613 +2020-02-21 07:15:00,123.45,225.54,71.631,32.613 +2020-02-21 07:30:00,123.07,226.58900000000003,71.631,32.613 +2020-02-21 07:45:00,124.6,225.299,71.631,32.613 +2020-02-21 08:00:00,127.22,222.543,66.181,32.613 +2020-02-21 08:15:00,125.37,221.072,66.181,32.613 +2020-02-21 08:30:00,126.6,218.17700000000002,66.181,32.613 +2020-02-21 08:45:00,123.25,212.84599999999998,66.181,32.613 +2020-02-21 09:00:00,125.59,206.114,63.086000000000006,32.613 +2020-02-21 09:15:00,125.25,203.579,63.086000000000006,32.613 +2020-02-21 09:30:00,126.21,201.69799999999998,63.086000000000006,32.613 +2020-02-21 09:45:00,128.09,198.653,63.086000000000006,32.613 +2020-02-21 10:00:00,122.61,193.30700000000002,60.886,32.613 +2020-02-21 10:15:00,124.67,190.35299999999998,60.886,32.613 +2020-02-21 10:30:00,125.15,187.81599999999997,60.886,32.613 +2020-02-21 10:45:00,124.81,186.39700000000002,60.886,32.613 +2020-02-21 11:00:00,120.18,184.442,59.391000000000005,32.613 +2020-02-21 11:15:00,120.77,182.68200000000002,59.391000000000005,32.613 +2020-02-21 11:30:00,120.33,183.52599999999998,59.391000000000005,32.613 +2020-02-21 11:45:00,120.04,182.298,59.391000000000005,32.613 +2020-02-21 12:00:00,118.73,178.43900000000002,56.172,32.613 +2020-02-21 12:15:00,118.32,176.53799999999998,56.172,32.613 +2020-02-21 12:30:00,117.18,176.092,56.172,32.613 +2020-02-21 12:45:00,119.34,177.515,56.172,32.613 +2020-02-21 13:00:00,112.77,177.671,54.406000000000006,32.613 +2020-02-21 13:15:00,112.5,177.203,54.406000000000006,32.613 +2020-02-21 13:30:00,111.04,176.26,54.406000000000006,32.613 +2020-02-21 13:45:00,111.47,175.815,54.406000000000006,32.613 +2020-02-21 14:00:00,109.79,175.38299999999998,53.578,32.613 +2020-02-21 14:15:00,110.7,175.00599999999997,53.578,32.613 +2020-02-21 14:30:00,110.76,176.04,53.578,32.613 +2020-02-21 14:45:00,110.95,177.13099999999997,53.578,32.613 +2020-02-21 15:00:00,117.42,178.542,56.568999999999996,32.613 +2020-02-21 15:15:00,120.19,177.31599999999997,56.568999999999996,32.613 +2020-02-21 15:30:00,119.17,176.987,56.568999999999996,32.613 +2020-02-21 15:45:00,115.35,178.092,56.568999999999996,32.613 +2020-02-21 16:00:00,117.52,178.511,60.169,32.613 +2020-02-21 16:15:00,115.01,180.301,60.169,32.613 +2020-02-21 16:30:00,116.7,183.232,60.169,32.613 +2020-02-21 16:45:00,119.87,184.386,60.169,32.613 +2020-02-21 17:00:00,123.86,186.592,65.497,32.613 +2020-02-21 17:15:00,126.26,188.45,65.497,32.613 +2020-02-21 17:30:00,126.38,190.63400000000001,65.497,32.613 +2020-02-21 17:45:00,128.7,191.324,65.497,32.613 +2020-02-21 18:00:00,133.63,194.234,65.082,32.613 +2020-02-21 18:15:00,132.24,193.282,65.082,32.613 +2020-02-21 18:30:00,135.09,192.361,65.082,32.613 +2020-02-21 18:45:00,134.34,193.4,65.082,32.613 +2020-02-21 19:00:00,132.35,193.229,60.968,32.613 +2020-02-21 19:15:00,136.76,191.30200000000002,60.968,32.613 +2020-02-21 19:30:00,136.33,189.387,60.968,32.613 +2020-02-21 19:45:00,136.31,185.921,60.968,32.613 +2020-02-21 20:00:00,121.81,181.247,61.123000000000005,32.613 +2020-02-21 20:15:00,119.79,175.767,61.123000000000005,32.613 +2020-02-21 20:30:00,114.65,171.91400000000002,61.123000000000005,32.613 +2020-02-21 20:45:00,115.4,170.627,61.123000000000005,32.613 +2020-02-21 21:00:00,106.52,167.949,55.416000000000004,32.613 +2020-02-21 21:15:00,104.0,165.347,55.416000000000004,32.613 +2020-02-21 21:30:00,102.97,163.342,55.416000000000004,32.613 +2020-02-21 21:45:00,103.72,163.263,55.416000000000004,32.613 +2020-02-21 22:00:00,97.94,157.187,51.631,32.613 +2020-02-21 22:15:00,94.54,152.662,51.631,32.613 +2020-02-21 22:30:00,92.36,144.856,51.631,32.613 +2020-02-21 22:45:00,96.36,140.861,51.631,32.613 +2020-02-21 23:00:00,96.29,133.83,44.898,32.613 +2020-02-21 23:15:00,93.93,130.423,44.898,32.613 +2020-02-21 23:30:00,87.56,130.07399999999998,44.898,32.613 +2020-02-21 23:45:00,86.86,129.387,44.898,32.613 +2020-02-22 00:00:00,80.69,115.046,42.033,32.431999999999995 +2020-02-22 00:15:00,85.92,109.822,42.033,32.431999999999995 +2020-02-22 00:30:00,86.31,111.001,42.033,32.431999999999995 +2020-02-22 00:45:00,83.99,112.337,42.033,32.431999999999995 +2020-02-22 01:00:00,75.49,114.553,38.255,32.431999999999995 +2020-02-22 01:15:00,77.66,114.685,38.255,32.431999999999995 +2020-02-22 01:30:00,74.25,114.135,38.255,32.431999999999995 +2020-02-22 01:45:00,78.27,114.225,38.255,32.431999999999995 +2020-02-22 02:00:00,80.13,116.98200000000001,36.404,32.431999999999995 +2020-02-22 02:15:00,81.83,117.868,36.404,32.431999999999995 +2020-02-22 02:30:00,77.76,118.184,36.404,32.431999999999995 +2020-02-22 02:45:00,77.53,120.12299999999999,36.404,32.431999999999995 +2020-02-22 03:00:00,76.75,122.20700000000001,36.083,32.431999999999995 +2020-02-22 03:15:00,80.16,123.5,36.083,32.431999999999995 +2020-02-22 03:30:00,80.23,123.714,36.083,32.431999999999995 +2020-02-22 03:45:00,78.0,125.616,36.083,32.431999999999995 +2020-02-22 04:00:00,72.92,133.475,36.102,32.431999999999995 +2020-02-22 04:15:00,73.17,142.395,36.102,32.431999999999995 +2020-02-22 04:30:00,73.24,143.054,36.102,32.431999999999995 +2020-02-22 04:45:00,74.17,143.582,36.102,32.431999999999995 +2020-02-22 05:00:00,74.51,159.02200000000002,35.284,32.431999999999995 +2020-02-22 05:15:00,75.89,169.7,35.284,32.431999999999995 +2020-02-22 05:30:00,75.3,166.28599999999997,35.284,32.431999999999995 +2020-02-22 05:45:00,76.79,164.58599999999998,35.284,32.431999999999995 +2020-02-22 06:00:00,78.47,180.94,36.265,32.431999999999995 +2020-02-22 06:15:00,79.02,201.58900000000003,36.265,32.431999999999995 +2020-02-22 06:30:00,79.89,197.68200000000002,36.265,32.431999999999995 +2020-02-22 06:45:00,80.02,194.308,36.265,32.431999999999995 +2020-02-22 07:00:00,81.54,190.49099999999999,40.714,32.431999999999995 +2020-02-22 07:15:00,85.98,194.023,40.714,32.431999999999995 +2020-02-22 07:30:00,86.18,197.71,40.714,32.431999999999995 +2020-02-22 07:45:00,87.86,200.28400000000002,40.714,32.431999999999995 +2020-02-22 08:00:00,89.81,201.467,46.692,32.431999999999995 +2020-02-22 08:15:00,91.73,203.52200000000002,46.692,32.431999999999995 +2020-02-22 08:30:00,98.01,202.149,46.692,32.431999999999995 +2020-02-22 08:45:00,99.24,199.93,46.692,32.431999999999995 +2020-02-22 09:00:00,102.43,194.99599999999998,48.925,32.431999999999995 +2020-02-22 09:15:00,102.12,193.207,48.925,32.431999999999995 +2020-02-22 09:30:00,102.49,192.239,48.925,32.431999999999995 +2020-02-22 09:45:00,99.78,189.347,48.925,32.431999999999995 +2020-02-22 10:00:00,95.56,184.31099999999998,47.799,32.431999999999995 +2020-02-22 10:15:00,99.82,181.56099999999998,47.799,32.431999999999995 +2020-02-22 10:30:00,100.4,179.19,47.799,32.431999999999995 +2020-02-22 10:45:00,99.55,179.048,47.799,32.431999999999995 +2020-02-22 11:00:00,95.77,177.29,44.309,32.431999999999995 +2020-02-22 11:15:00,95.07,174.896,44.309,32.431999999999995 +2020-02-22 11:30:00,94.71,174.668,44.309,32.431999999999995 +2020-02-22 11:45:00,97.76,172.54,44.309,32.431999999999995 +2020-02-22 12:00:00,92.83,167.857,42.367,32.431999999999995 +2020-02-22 12:15:00,92.41,166.61599999999999,42.367,32.431999999999995 +2020-02-22 12:30:00,88.04,166.44400000000002,42.367,32.431999999999995 +2020-02-22 12:45:00,86.69,167.13400000000001,42.367,32.431999999999995 +2020-02-22 13:00:00,82.02,166.915,39.036,32.431999999999995 +2020-02-22 13:15:00,85.74,164.417,39.036,32.431999999999995 +2020-02-22 13:30:00,79.5,163.02700000000002,39.036,32.431999999999995 +2020-02-22 13:45:00,80.82,163.011,39.036,32.431999999999995 +2020-02-22 14:00:00,78.34,163.83100000000002,37.995,32.431999999999995 +2020-02-22 14:15:00,78.85,162.882,37.995,32.431999999999995 +2020-02-22 14:30:00,80.14,162.118,37.995,32.431999999999995 +2020-02-22 14:45:00,81.7,163.444,37.995,32.431999999999995 +2020-02-22 15:00:00,81.24,165.505,40.71,32.431999999999995 +2020-02-22 15:15:00,82.52,165.051,40.71,32.431999999999995 +2020-02-22 15:30:00,83.61,166.18200000000002,40.71,32.431999999999995 +2020-02-22 15:45:00,85.83,167.262,40.71,32.431999999999995 +2020-02-22 16:00:00,87.34,166.548,46.998000000000005,32.431999999999995 +2020-02-22 16:15:00,91.33,169.175,46.998000000000005,32.431999999999995 +2020-02-22 16:30:00,93.53,172.06,46.998000000000005,32.431999999999995 +2020-02-22 16:45:00,92.11,174.048,46.998000000000005,32.431999999999995 +2020-02-22 17:00:00,99.16,175.66,55.431000000000004,32.431999999999995 +2020-02-22 17:15:00,98.14,179.105,55.431000000000004,32.431999999999995 +2020-02-22 17:30:00,103.35,181.222,55.431000000000004,32.431999999999995 +2020-02-22 17:45:00,104.88,181.547,55.431000000000004,32.431999999999995 +2020-02-22 18:00:00,113.78,184.007,55.989,32.431999999999995 +2020-02-22 18:15:00,112.69,184.90400000000002,55.989,32.431999999999995 +2020-02-22 18:30:00,112.95,185.31,55.989,32.431999999999995 +2020-02-22 18:45:00,112.81,183.035,55.989,32.431999999999995 +2020-02-22 19:00:00,111.89,183.692,50.882,32.431999999999995 +2020-02-22 19:15:00,112.4,181.27599999999998,50.882,32.431999999999995 +2020-02-22 19:30:00,107.62,180.136,50.882,32.431999999999995 +2020-02-22 19:45:00,106.47,176.567,50.882,32.431999999999995 +2020-02-22 20:00:00,101.54,174.00799999999998,43.172,32.431999999999995 +2020-02-22 20:15:00,99.49,170.608,43.172,32.431999999999995 +2020-02-22 20:30:00,96.48,166.41400000000002,43.172,32.431999999999995 +2020-02-22 20:45:00,98.36,164.771,43.172,32.431999999999995 +2020-02-22 21:00:00,91.47,164.25099999999998,37.599000000000004,32.431999999999995 +2020-02-22 21:15:00,90.24,162.063,37.599000000000004,32.431999999999995 +2020-02-22 21:30:00,88.52,161.263,37.599000000000004,32.431999999999995 +2020-02-22 21:45:00,88.73,160.796,37.599000000000004,32.431999999999995 +2020-02-22 22:00:00,85.26,156.02100000000002,39.047,32.431999999999995 +2020-02-22 22:15:00,84.4,153.955,39.047,32.431999999999995 +2020-02-22 22:30:00,81.79,152.175,39.047,32.431999999999995 +2020-02-22 22:45:00,81.3,150.017,39.047,32.431999999999995 +2020-02-22 23:00:00,77.58,145.344,32.339,32.431999999999995 +2020-02-22 23:15:00,77.79,140.363,32.339,32.431999999999995 +2020-02-22 23:30:00,74.96,138.365,32.339,32.431999999999995 +2020-02-22 23:45:00,73.63,135.339,32.339,32.431999999999995 +2020-02-23 00:00:00,70.14,115.244,29.988000000000003,32.431999999999995 +2020-02-23 00:15:00,69.61,109.686,29.988000000000003,32.431999999999995 +2020-02-23 00:30:00,69.59,110.479,29.988000000000003,32.431999999999995 +2020-02-23 00:45:00,69.38,112.488,29.988000000000003,32.431999999999995 +2020-02-23 01:00:00,65.46,114.53399999999999,28.531999999999996,32.431999999999995 +2020-02-23 01:15:00,66.66,115.661,28.531999999999996,32.431999999999995 +2020-02-23 01:30:00,65.52,115.603,28.531999999999996,32.431999999999995 +2020-02-23 01:45:00,65.26,115.382,28.531999999999996,32.431999999999995 +2020-02-23 02:00:00,63.83,117.405,27.805999999999997,32.431999999999995 +2020-02-23 02:15:00,64.64,117.473,27.805999999999997,32.431999999999995 +2020-02-23 02:30:00,63.77,118.64200000000001,27.805999999999997,32.431999999999995 +2020-02-23 02:45:00,64.98,121.022,27.805999999999997,32.431999999999995 +2020-02-23 03:00:00,63.94,123.436,26.193,32.431999999999995 +2020-02-23 03:15:00,64.7,124.21799999999999,26.193,32.431999999999995 +2020-02-23 03:30:00,64.1,125.774,26.193,32.431999999999995 +2020-02-23 03:45:00,64.57,127.594,26.193,32.431999999999995 +2020-02-23 04:00:00,64.91,135.216,27.19,32.431999999999995 +2020-02-23 04:15:00,64.97,143.135,27.19,32.431999999999995 +2020-02-23 04:30:00,65.65,143.904,27.19,32.431999999999995 +2020-02-23 04:45:00,66.48,144.673,27.19,32.431999999999995 +2020-02-23 05:00:00,67.26,156.69,28.166999999999998,32.431999999999995 +2020-02-23 05:15:00,67.76,165.021,28.166999999999998,32.431999999999995 +2020-02-23 05:30:00,68.15,161.405,28.166999999999998,32.431999999999995 +2020-02-23 05:45:00,68.8,159.939,28.166999999999998,32.431999999999995 +2020-02-23 06:00:00,69.41,176.139,27.16,32.431999999999995 +2020-02-23 06:15:00,69.86,195.146,27.16,32.431999999999995 +2020-02-23 06:30:00,70.71,190.112,27.16,32.431999999999995 +2020-02-23 06:45:00,69.95,185.675,27.16,32.431999999999995 +2020-02-23 07:00:00,72.62,184.268,29.578000000000003,32.431999999999995 +2020-02-23 07:15:00,73.12,186.9,29.578000000000003,32.431999999999995 +2020-02-23 07:30:00,74.51,189.389,29.578000000000003,32.431999999999995 +2020-02-23 07:45:00,76.29,191.18200000000002,29.578000000000003,32.431999999999995 +2020-02-23 08:00:00,78.45,194.149,34.650999999999996,32.431999999999995 +2020-02-23 08:15:00,78.33,196.13,34.650999999999996,32.431999999999995 +2020-02-23 08:30:00,78.73,196.333,34.650999999999996,32.431999999999995 +2020-02-23 08:45:00,79.07,196.078,34.650999999999996,32.431999999999995 +2020-02-23 09:00:00,78.69,190.75900000000001,38.080999999999996,32.431999999999995 +2020-02-23 09:15:00,78.31,189.495,38.080999999999996,32.431999999999995 +2020-02-23 09:30:00,78.05,188.407,38.080999999999996,32.431999999999995 +2020-02-23 09:45:00,77.75,185.43599999999998,38.080999999999996,32.431999999999995 +2020-02-23 10:00:00,76.21,182.868,39.934,32.431999999999995 +2020-02-23 10:15:00,75.97,180.67,39.934,32.431999999999995 +2020-02-23 10:30:00,75.82,178.90400000000002,39.934,32.431999999999995 +2020-02-23 10:45:00,76.78,176.976,39.934,32.431999999999995 +2020-02-23 11:00:00,77.47,176.084,43.74100000000001,32.431999999999995 +2020-02-23 11:15:00,80.97,173.822,43.74100000000001,32.431999999999995 +2020-02-23 11:30:00,81.83,172.77700000000002,43.74100000000001,32.431999999999995 +2020-02-23 11:45:00,84.37,171.255,43.74100000000001,32.431999999999995 +2020-02-23 12:00:00,80.33,166.08,40.001999999999995,32.431999999999995 +2020-02-23 12:15:00,75.8,166.668,40.001999999999995,32.431999999999995 +2020-02-23 12:30:00,75.85,165.06900000000002,40.001999999999995,32.431999999999995 +2020-02-23 12:45:00,72.42,164.801,40.001999999999995,32.431999999999995 +2020-02-23 13:00:00,71.1,163.916,37.855,32.431999999999995 +2020-02-23 13:15:00,69.74,164.28099999999998,37.855,32.431999999999995 +2020-02-23 13:30:00,66.49,162.636,37.855,32.431999999999995 +2020-02-23 13:45:00,65.1,162.02700000000002,37.855,32.431999999999995 +2020-02-23 14:00:00,63.85,163.18200000000002,35.946999999999996,32.431999999999995 +2020-02-23 14:15:00,67.63,163.381,35.946999999999996,32.431999999999995 +2020-02-23 14:30:00,65.18,163.741,35.946999999999996,32.431999999999995 +2020-02-23 14:45:00,66.34,164.646,35.946999999999996,32.431999999999995 +2020-02-23 15:00:00,67.38,165.24599999999998,35.138000000000005,32.431999999999995 +2020-02-23 15:15:00,71.0,165.46400000000003,35.138000000000005,32.431999999999995 +2020-02-23 15:30:00,70.06,167.115,35.138000000000005,32.431999999999995 +2020-02-23 15:45:00,71.4,168.856,35.138000000000005,32.431999999999995 +2020-02-23 16:00:00,77.36,169.905,38.672,32.431999999999995 +2020-02-23 16:15:00,75.53,171.645,38.672,32.431999999999995 +2020-02-23 16:30:00,77.71,174.812,38.672,32.431999999999995 +2020-02-23 16:45:00,81.19,176.903,38.672,32.431999999999995 +2020-02-23 17:00:00,88.54,178.53599999999997,48.684,32.431999999999995 +2020-02-23 17:15:00,86.32,181.71900000000002,48.684,32.431999999999995 +2020-02-23 17:30:00,90.78,184.165,48.684,32.431999999999995 +2020-02-23 17:45:00,96.64,186.72099999999998,48.684,32.431999999999995 +2020-02-23 18:00:00,104.83,188.683,51.568999999999996,32.431999999999995 +2020-02-23 18:15:00,107.06,190.919,51.568999999999996,32.431999999999995 +2020-02-23 18:30:00,107.23,189.291,51.568999999999996,32.431999999999995 +2020-02-23 18:45:00,103.85,188.84,51.568999999999996,32.431999999999995 +2020-02-23 19:00:00,101.61,189.18900000000002,48.608000000000004,32.431999999999995 +2020-02-23 19:15:00,102.96,187.34,48.608000000000004,32.431999999999995 +2020-02-23 19:30:00,99.45,186.058,48.608000000000004,32.431999999999995 +2020-02-23 19:45:00,100.59,183.923,48.608000000000004,32.431999999999995 +2020-02-23 20:00:00,105.69,181.30900000000003,43.733999999999995,32.431999999999995 +2020-02-23 20:15:00,97.93,178.87599999999998,43.733999999999995,32.431999999999995 +2020-02-23 20:30:00,93.18,175.926,43.733999999999995,32.431999999999995 +2020-02-23 20:45:00,98.42,173.078,43.733999999999995,32.431999999999995 +2020-02-23 21:00:00,92.64,170.021,39.283,32.431999999999995 +2020-02-23 21:15:00,88.96,167.207,39.283,32.431999999999995 +2020-02-23 21:30:00,90.04,166.68,39.283,32.431999999999995 +2020-02-23 21:45:00,93.24,166.37099999999998,39.283,32.431999999999995 +2020-02-23 22:00:00,98.28,160.47,40.111,32.431999999999995 +2020-02-23 22:15:00,92.33,157.649,40.111,32.431999999999995 +2020-02-23 22:30:00,94.51,152.731,40.111,32.431999999999995 +2020-02-23 22:45:00,91.38,149.721,40.111,32.431999999999995 +2020-02-23 23:00:00,86.18,142.312,35.791,32.431999999999995 +2020-02-23 23:15:00,83.82,139.184,35.791,32.431999999999995 +2020-02-23 23:30:00,84.12,137.974,35.791,32.431999999999995 +2020-02-23 23:45:00,89.48,135.843,35.791,32.431999999999995 +2020-02-24 00:00:00,87.4,119.12100000000001,34.311,32.613 +2020-02-24 00:15:00,85.71,116.48200000000001,34.311,32.613 +2020-02-24 00:30:00,79.25,117.37,34.311,32.613 +2020-02-24 00:45:00,80.11,118.845,34.311,32.613 +2020-02-24 01:00:00,75.53,120.87299999999999,34.585,32.613 +2020-02-24 01:15:00,82.25,121.47399999999999,34.585,32.613 +2020-02-24 01:30:00,82.39,121.463,34.585,32.613 +2020-02-24 01:45:00,83.21,121.355,34.585,32.613 +2020-02-24 02:00:00,78.47,123.35799999999999,34.111,32.613 +2020-02-24 02:15:00,81.62,124.824,34.111,32.613 +2020-02-24 02:30:00,83.49,126.336,34.111,32.613 +2020-02-24 02:45:00,85.86,128.109,34.111,32.613 +2020-02-24 03:00:00,77.68,131.778,32.435,32.613 +2020-02-24 03:15:00,84.84,134.17,32.435,32.613 +2020-02-24 03:30:00,85.17,135.471,32.435,32.613 +2020-02-24 03:45:00,85.91,136.755,32.435,32.613 +2020-02-24 04:00:00,83.63,148.685,33.04,32.613 +2020-02-24 04:15:00,83.89,160.695,33.04,32.613 +2020-02-24 04:30:00,89.11,163.607,33.04,32.613 +2020-02-24 04:45:00,86.29,164.52900000000002,33.04,32.613 +2020-02-24 05:00:00,90.81,192.02599999999998,40.399,32.613 +2020-02-24 05:15:00,91.34,220.23,40.399,32.613 +2020-02-24 05:30:00,95.51,216.81900000000002,40.399,32.613 +2020-02-24 05:45:00,100.68,209.787,40.399,32.613 +2020-02-24 06:00:00,112.19,208.31799999999998,60.226000000000006,32.613 +2020-02-24 06:15:00,114.53,212.699,60.226000000000006,32.613 +2020-02-24 06:30:00,121.55,215.514,60.226000000000006,32.613 +2020-02-24 06:45:00,120.58,219.74099999999999,60.226000000000006,32.613 +2020-02-24 07:00:00,127.09,220.673,73.578,32.613 +2020-02-24 07:15:00,128.48,224.535,73.578,32.613 +2020-02-24 07:30:00,128.83,226.213,73.578,32.613 +2020-02-24 07:45:00,128.43,225.47400000000002,73.578,32.613 +2020-02-24 08:00:00,132.65,223.62099999999998,66.58,32.613 +2020-02-24 08:15:00,130.35,223.472,66.58,32.613 +2020-02-24 08:30:00,132.82,219.62400000000002,66.58,32.613 +2020-02-24 08:45:00,128.9,216.138,66.58,32.613 +2020-02-24 09:00:00,130.95,209.83700000000002,62.0,32.613 +2020-02-24 09:15:00,129.17,205.146,62.0,32.613 +2020-02-24 09:30:00,128.34,203.085,62.0,32.613 +2020-02-24 09:45:00,127.77,200.359,62.0,32.613 +2020-02-24 10:00:00,125.53,196.74900000000002,59.099,32.613 +2020-02-24 10:15:00,127.37,194.266,59.099,32.613 +2020-02-24 10:30:00,123.36,191.65599999999998,59.099,32.613 +2020-02-24 10:45:00,127.17,190.43200000000002,59.099,32.613 +2020-02-24 11:00:00,122.95,187.0,57.729,32.613 +2020-02-24 11:15:00,126.73,186.50900000000001,57.729,32.613 +2020-02-24 11:30:00,127.56,186.827,57.729,32.613 +2020-02-24 11:45:00,123.32,184.93599999999998,57.729,32.613 +2020-02-24 12:00:00,122.5,181.40099999999998,55.615,32.613 +2020-02-24 12:15:00,126.78,182.00599999999997,55.615,32.613 +2020-02-24 12:30:00,127.67,180.593,55.615,32.613 +2020-02-24 12:45:00,124.86,181.798,55.615,32.613 +2020-02-24 13:00:00,122.88,181.528,56.515,32.613 +2020-02-24 13:15:00,123.82,180.50599999999997,56.515,32.613 +2020-02-24 13:30:00,125.65,178.34,56.515,32.613 +2020-02-24 13:45:00,128.04,177.78599999999997,56.515,32.613 +2020-02-24 14:00:00,130.27,178.38099999999997,58.1,32.613 +2020-02-24 14:15:00,128.28,177.951,58.1,32.613 +2020-02-24 14:30:00,131.05,177.762,58.1,32.613 +2020-02-24 14:45:00,130.12,178.701,58.1,32.613 +2020-02-24 15:00:00,130.46,181.032,59.801,32.613 +2020-02-24 15:15:00,131.88,179.815,59.801,32.613 +2020-02-24 15:30:00,129.22,180.639,59.801,32.613 +2020-02-24 15:45:00,129.42,181.919,59.801,32.613 +2020-02-24 16:00:00,129.55,183.18599999999998,62.901,32.613 +2020-02-24 16:15:00,129.72,184.172,62.901,32.613 +2020-02-24 16:30:00,127.89,186.385,62.901,32.613 +2020-02-24 16:45:00,129.96,187.296,62.901,32.613 +2020-02-24 17:00:00,133.58,188.75,70.418,32.613 +2020-02-24 17:15:00,136.65,191.028,70.418,32.613 +2020-02-24 17:30:00,139.14,192.96,70.418,32.613 +2020-02-24 17:45:00,138.19,194.074,70.418,32.613 +2020-02-24 18:00:00,144.78,196.45,71.726,32.613 +2020-02-24 18:15:00,140.22,196.56,71.726,32.613 +2020-02-24 18:30:00,140.06,195.55599999999998,71.726,32.613 +2020-02-24 18:45:00,141.43,195.878,71.726,32.613 +2020-02-24 19:00:00,139.29,194.61599999999999,65.997,32.613 +2020-02-24 19:15:00,138.24,191.66,65.997,32.613 +2020-02-24 19:30:00,144.32,190.885,65.997,32.613 +2020-02-24 19:45:00,141.12,187.96599999999998,65.997,32.613 +2020-02-24 20:00:00,133.01,182.99099999999999,68.09100000000001,32.613 +2020-02-24 20:15:00,125.91,178.175,68.09100000000001,32.613 +2020-02-24 20:30:00,120.23,173.433,68.09100000000001,32.613 +2020-02-24 20:45:00,121.43,172.179,68.09100000000001,32.613 +2020-02-24 21:00:00,114.0,169.61900000000003,59.617,32.613 +2020-02-24 21:15:00,117.58,165.65599999999998,59.617,32.613 +2020-02-24 21:30:00,117.76,164.327,59.617,32.613 +2020-02-24 21:45:00,115.93,163.54,59.617,32.613 +2020-02-24 22:00:00,105.83,154.77,54.938,32.613 +2020-02-24 22:15:00,101.05,150.715,54.938,32.613 +2020-02-24 22:30:00,99.67,136.342,54.938,32.613 +2020-02-24 22:45:00,98.93,128.609,54.938,32.613 +2020-02-24 23:00:00,95.34,121.956,47.43,32.613 +2020-02-24 23:15:00,94.94,121.412,47.43,32.613 +2020-02-24 23:30:00,89.82,122.914,47.43,32.613 +2020-02-24 23:45:00,89.72,123.382,47.43,32.613 +2020-02-25 00:00:00,92.74,118.161,48.354,32.613 +2020-02-25 00:15:00,93.6,116.93299999999999,48.354,32.613 +2020-02-25 00:30:00,94.11,116.89200000000001,48.354,32.613 +2020-02-25 00:45:00,89.59,117.417,48.354,32.613 +2020-02-25 01:00:00,84.84,119.20700000000001,45.68600000000001,32.613 +2020-02-25 01:15:00,86.12,119.359,45.68600000000001,32.613 +2020-02-25 01:30:00,82.8,119.501,45.68600000000001,32.613 +2020-02-25 01:45:00,83.08,119.69,45.68600000000001,32.613 +2020-02-25 02:00:00,84.51,121.675,44.269,32.613 +2020-02-25 02:15:00,87.23,123.042,44.269,32.613 +2020-02-25 02:30:00,89.0,123.98200000000001,44.269,32.613 +2020-02-25 02:45:00,93.75,125.771,44.269,32.613 +2020-02-25 03:00:00,88.41,128.25799999999998,44.187,32.613 +2020-02-25 03:15:00,89.23,129.819,44.187,32.613 +2020-02-25 03:30:00,85.06,131.588,44.187,32.613 +2020-02-25 03:45:00,89.04,133.059,44.187,32.613 +2020-02-25 04:00:00,86.27,144.786,46.126999999999995,32.613 +2020-02-25 04:15:00,86.74,156.446,46.126999999999995,32.613 +2020-02-25 04:30:00,88.33,159.06799999999998,46.126999999999995,32.613 +2020-02-25 04:45:00,91.62,161.172,46.126999999999995,32.613 +2020-02-25 05:00:00,97.3,193.585,49.666000000000004,32.613 +2020-02-25 05:15:00,96.94,221.614,49.666000000000004,32.613 +2020-02-25 05:30:00,101.12,216.666,49.666000000000004,32.613 +2020-02-25 05:45:00,105.3,209.638,49.666000000000004,32.613 +2020-02-25 06:00:00,116.13,207.021,61.077,32.613 +2020-02-25 06:15:00,118.32,213.012,61.077,32.613 +2020-02-25 06:30:00,121.9,215.149,61.077,32.613 +2020-02-25 06:45:00,123.41,218.986,61.077,32.613 +2020-02-25 07:00:00,130.25,219.761,74.717,32.613 +2020-02-25 07:15:00,129.83,223.43400000000003,74.717,32.613 +2020-02-25 07:30:00,131.97,224.53900000000002,74.717,32.613 +2020-02-25 07:45:00,129.74,223.96,74.717,32.613 +2020-02-25 08:00:00,132.69,222.18900000000002,69.033,32.613 +2020-02-25 08:15:00,133.52,221.015,69.033,32.613 +2020-02-25 08:30:00,129.26,216.93599999999998,69.033,32.613 +2020-02-25 08:45:00,128.0,213.18900000000002,69.033,32.613 +2020-02-25 09:00:00,134.63,206.084,63.113,32.613 +2020-02-25 09:15:00,134.74,202.96200000000002,63.113,32.613 +2020-02-25 09:30:00,137.02,201.59400000000002,63.113,32.613 +2020-02-25 09:45:00,135.12,198.675,63.113,32.613 +2020-02-25 10:00:00,127.82,194.487,61.461999999999996,32.613 +2020-02-25 10:15:00,127.61,190.99599999999998,61.461999999999996,32.613 +2020-02-25 10:30:00,124.56,188.578,61.461999999999996,32.613 +2020-02-25 10:45:00,124.47,187.65900000000002,61.461999999999996,32.613 +2020-02-25 11:00:00,120.98,185.67700000000002,59.614,32.613 +2020-02-25 11:15:00,121.56,184.88099999999997,59.614,32.613 +2020-02-25 11:30:00,122.41,184.05200000000002,59.614,32.613 +2020-02-25 11:45:00,121.67,182.856,59.614,32.613 +2020-02-25 12:00:00,121.07,177.997,57.415,32.613 +2020-02-25 12:15:00,120.61,178.21200000000002,57.415,32.613 +2020-02-25 12:30:00,117.95,177.486,57.415,32.613 +2020-02-25 12:45:00,118.6,178.41099999999997,57.415,32.613 +2020-02-25 13:00:00,116.09,177.77200000000002,58.534,32.613 +2020-02-25 13:15:00,116.32,176.41299999999998,58.534,32.613 +2020-02-25 13:30:00,118.93,175.377,58.534,32.613 +2020-02-25 13:45:00,116.93,174.995,58.534,32.613 +2020-02-25 14:00:00,119.27,175.935,59.415,32.613 +2020-02-25 14:15:00,117.11,175.63400000000001,59.415,32.613 +2020-02-25 14:30:00,118.09,176.03900000000002,59.415,32.613 +2020-02-25 14:45:00,119.19,176.899,59.415,32.613 +2020-02-25 15:00:00,121.2,178.81400000000002,62.071999999999996,32.613 +2020-02-25 15:15:00,119.3,177.905,62.071999999999996,32.613 +2020-02-25 15:30:00,119.76,178.90200000000002,62.071999999999996,32.613 +2020-02-25 15:45:00,121.39,179.77700000000002,62.071999999999996,32.613 +2020-02-25 16:00:00,123.07,181.363,64.99,32.613 +2020-02-25 16:15:00,125.94,182.801,64.99,32.613 +2020-02-25 16:30:00,123.48,185.644,64.99,32.613 +2020-02-25 16:45:00,125.86,186.815,64.99,32.613 +2020-02-25 17:00:00,133.26,188.80900000000003,72.658,32.613 +2020-02-25 17:15:00,133.66,191.135,72.658,32.613 +2020-02-25 17:30:00,136.58,193.74400000000003,72.658,32.613 +2020-02-25 17:45:00,134.98,194.747,72.658,32.613 +2020-02-25 18:00:00,142.9,197.021,73.645,32.613 +2020-02-25 18:15:00,140.35,196.71400000000003,73.645,32.613 +2020-02-25 18:30:00,140.6,195.40400000000002,73.645,32.613 +2020-02-25 18:45:00,140.89,196.53,73.645,32.613 +2020-02-25 19:00:00,138.89,195.298,67.085,32.613 +2020-02-25 19:15:00,137.3,192.084,67.085,32.613 +2020-02-25 19:30:00,143.66,190.675,67.085,32.613 +2020-02-25 19:45:00,146.82,187.835,67.085,32.613 +2020-02-25 20:00:00,137.15,182.99099999999999,66.138,32.613 +2020-02-25 20:15:00,124.2,177.548,66.138,32.613 +2020-02-25 20:30:00,125.13,173.822,66.138,32.613 +2020-02-25 20:45:00,122.61,172.012,66.138,32.613 +2020-02-25 21:00:00,114.79,168.75900000000001,57.512,32.613 +2020-02-25 21:15:00,117.9,165.666,57.512,32.613 +2020-02-25 21:30:00,118.78,163.622,57.512,32.613 +2020-02-25 21:45:00,115.59,163.079,57.512,32.613 +2020-02-25 22:00:00,105.29,155.977,54.545,32.613 +2020-02-25 22:15:00,105.73,151.689,54.545,32.613 +2020-02-25 22:30:00,100.32,137.36,54.545,32.613 +2020-02-25 22:45:00,103.78,129.903,54.545,32.613 +2020-02-25 23:00:00,103.37,123.266,48.605,32.613 +2020-02-25 23:15:00,102.21,121.863,48.605,32.613 +2020-02-25 23:30:00,94.38,123.02,48.605,32.613 +2020-02-25 23:45:00,93.16,123.08200000000001,48.605,32.613 +2020-02-26 00:00:00,84.21,117.904,45.675,32.613 +2020-02-26 00:15:00,85.32,116.678,45.675,32.613 +2020-02-26 00:30:00,85.53,116.619,45.675,32.613 +2020-02-26 00:45:00,85.09,117.14299999999999,45.675,32.613 +2020-02-26 01:00:00,86.21,118.89200000000001,43.015,32.613 +2020-02-26 01:15:00,91.24,119.031,43.015,32.613 +2020-02-26 01:30:00,91.43,119.15899999999999,43.015,32.613 +2020-02-26 01:45:00,91.86,119.352,43.015,32.613 +2020-02-26 02:00:00,88.93,121.329,41.0,32.613 +2020-02-26 02:15:00,90.95,122.693,41.0,32.613 +2020-02-26 02:30:00,91.59,123.649,41.0,32.613 +2020-02-26 02:45:00,90.28,125.43700000000001,41.0,32.613 +2020-02-26 03:00:00,90.74,127.93299999999999,41.318000000000005,32.613 +2020-02-26 03:15:00,95.62,129.485,41.318000000000005,32.613 +2020-02-26 03:30:00,92.99,131.248,41.318000000000005,32.613 +2020-02-26 03:45:00,89.88,132.731,41.318000000000005,32.613 +2020-02-26 04:00:00,92.31,144.463,42.544,32.613 +2020-02-26 04:15:00,89.03,156.114,42.544,32.613 +2020-02-26 04:30:00,88.74,158.754,42.544,32.613 +2020-02-26 04:45:00,89.87,160.845,42.544,32.613 +2020-02-26 05:00:00,94.12,193.24400000000003,45.161,32.613 +2020-02-26 05:15:00,95.66,221.297,45.161,32.613 +2020-02-26 05:30:00,99.71,216.31599999999997,45.161,32.613 +2020-02-26 05:45:00,104.02,209.291,45.161,32.613 +2020-02-26 06:00:00,116.54,206.68099999999998,61.86600000000001,32.613 +2020-02-26 06:15:00,119.33,212.68099999999998,61.86600000000001,32.613 +2020-02-26 06:30:00,124.91,214.77900000000002,61.86600000000001,32.613 +2020-02-26 06:45:00,124.25,218.601,61.86600000000001,32.613 +2020-02-26 07:00:00,132.05,219.398,77.814,32.613 +2020-02-26 07:15:00,131.93,223.041,77.814,32.613 +2020-02-26 07:30:00,130.23,224.108,77.814,32.613 +2020-02-26 07:45:00,131.9,223.488,77.814,32.613 +2020-02-26 08:00:00,135.76,221.69299999999998,70.251,32.613 +2020-02-26 08:15:00,134.68,220.50099999999998,70.251,32.613 +2020-02-26 08:30:00,134.89,216.365,70.251,32.613 +2020-02-26 08:45:00,132.39,212.62900000000002,70.251,32.613 +2020-02-26 09:00:00,132.02,205.533,66.965,32.613 +2020-02-26 09:15:00,137.94,202.412,66.965,32.613 +2020-02-26 09:30:00,138.13,201.06400000000002,66.965,32.613 +2020-02-26 09:45:00,140.89,198.15200000000002,66.965,32.613 +2020-02-26 10:00:00,135.54,193.976,63.628,32.613 +2020-02-26 10:15:00,133.05,190.52200000000002,63.628,32.613 +2020-02-26 10:30:00,129.5,188.12099999999998,63.628,32.613 +2020-02-26 10:45:00,130.84,187.217,63.628,32.613 +2020-02-26 11:00:00,122.72,185.227,62.516999999999996,32.613 +2020-02-26 11:15:00,122.07,184.449,62.516999999999996,32.613 +2020-02-26 11:30:00,120.82,183.62599999999998,62.516999999999996,32.613 +2020-02-26 11:45:00,120.99,182.445,62.516999999999996,32.613 +2020-02-26 12:00:00,121.64,177.602,60.888999999999996,32.613 +2020-02-26 12:15:00,119.41,177.832,60.888999999999996,32.613 +2020-02-26 12:30:00,119.83,177.074,60.888999999999996,32.613 +2020-02-26 12:45:00,121.37,177.99599999999998,60.888999999999996,32.613 +2020-02-26 13:00:00,118.3,177.392,61.57899999999999,32.613 +2020-02-26 13:15:00,121.25,176.01,61.57899999999999,32.613 +2020-02-26 13:30:00,119.3,174.96,61.57899999999999,32.613 +2020-02-26 13:45:00,117.57,174.58,61.57899999999999,32.613 +2020-02-26 14:00:00,120.42,175.582,62.602,32.613 +2020-02-26 14:15:00,120.08,175.25900000000001,62.602,32.613 +2020-02-26 14:30:00,127.13,175.64,62.602,32.613 +2020-02-26 14:45:00,123.18,176.512,62.602,32.613 +2020-02-26 15:00:00,124.28,178.433,64.259,32.613 +2020-02-26 15:15:00,121.09,177.495,64.259,32.613 +2020-02-26 15:30:00,121.21,178.44799999999998,64.259,32.613 +2020-02-26 15:45:00,124.4,179.30599999999998,64.259,32.613 +2020-02-26 16:00:00,123.44,180.894,67.632,32.613 +2020-02-26 16:15:00,128.2,182.315,67.632,32.613 +2020-02-26 16:30:00,126.24,185.15900000000002,67.632,32.613 +2020-02-26 16:45:00,129.82,186.3,67.632,32.613 +2020-02-26 17:00:00,132.44,188.3,72.583,32.613 +2020-02-26 17:15:00,132.18,190.64,72.583,32.613 +2020-02-26 17:30:00,138.18,193.27700000000002,72.583,32.613 +2020-02-26 17:45:00,137.44,194.299,72.583,32.613 +2020-02-26 18:00:00,144.08,196.584,72.744,32.613 +2020-02-26 18:15:00,142.07,196.34,72.744,32.613 +2020-02-26 18:30:00,143.05,195.028,72.744,32.613 +2020-02-26 18:45:00,143.25,196.175,72.744,32.613 +2020-02-26 19:00:00,142.61,194.905,69.684,32.613 +2020-02-26 19:15:00,143.22,191.708,69.684,32.613 +2020-02-26 19:30:00,148.53,190.325,69.684,32.613 +2020-02-26 19:45:00,145.96,187.525,69.684,32.613 +2020-02-26 20:00:00,134.53,182.65200000000002,70.036,32.613 +2020-02-26 20:15:00,128.04,177.22299999999998,70.036,32.613 +2020-02-26 20:30:00,123.73,173.518,70.036,32.613 +2020-02-26 20:45:00,122.17,171.71,70.036,32.613 +2020-02-26 21:00:00,116.79,168.44400000000002,60.431999999999995,32.613 +2020-02-26 21:15:00,121.15,165.343,60.431999999999995,32.613 +2020-02-26 21:30:00,120.23,163.3,60.431999999999995,32.613 +2020-02-26 21:45:00,113.68,162.774,60.431999999999995,32.613 +2020-02-26 22:00:00,107.74,155.657,56.2,32.613 +2020-02-26 22:15:00,104.57,151.393,56.2,32.613 +2020-02-26 22:30:00,101.62,137.017,56.2,32.613 +2020-02-26 22:45:00,102.65,129.564,56.2,32.613 +2020-02-26 23:00:00,96.31,122.925,47.927,32.613 +2020-02-26 23:15:00,102.68,121.538,47.927,32.613 +2020-02-26 23:30:00,99.27,122.704,47.927,32.613 +2020-02-26 23:45:00,95.89,122.791,47.927,32.613 +2020-02-27 00:00:00,88.18,117.63799999999999,43.794,32.613 +2020-02-27 00:15:00,88.97,116.417,43.794,32.613 +2020-02-27 00:30:00,90.67,116.34,43.794,32.613 +2020-02-27 00:45:00,87.97,116.863,43.794,32.613 +2020-02-27 01:00:00,93.08,118.571,42.397,32.613 +2020-02-27 01:15:00,91.83,118.697,42.397,32.613 +2020-02-27 01:30:00,90.3,118.811,42.397,32.613 +2020-02-27 01:45:00,86.08,119.008,42.397,32.613 +2020-02-27 02:00:00,85.82,120.977,40.010999999999996,32.613 +2020-02-27 02:15:00,93.94,122.337,40.010999999999996,32.613 +2020-02-27 02:30:00,91.53,123.309,40.010999999999996,32.613 +2020-02-27 02:45:00,92.99,125.09700000000001,40.010999999999996,32.613 +2020-02-27 03:00:00,90.02,127.602,39.181,32.613 +2020-02-27 03:15:00,93.1,129.143,39.181,32.613 +2020-02-27 03:30:00,93.75,130.901,39.181,32.613 +2020-02-27 03:45:00,90.45,132.39600000000002,39.181,32.613 +2020-02-27 04:00:00,93.08,144.13299999999998,40.39,32.613 +2020-02-27 04:15:00,98.7,155.77700000000002,40.39,32.613 +2020-02-27 04:30:00,96.19,158.435,40.39,32.613 +2020-02-27 04:45:00,92.23,160.512,40.39,32.613 +2020-02-27 05:00:00,95.1,192.89700000000002,45.504,32.613 +2020-02-27 05:15:00,97.21,220.97400000000002,45.504,32.613 +2020-02-27 05:30:00,102.16,215.96099999999998,45.504,32.613 +2020-02-27 05:45:00,104.54,208.938,45.504,32.613 +2020-02-27 06:00:00,114.7,206.334,57.748000000000005,32.613 +2020-02-27 06:15:00,118.52,212.34400000000002,57.748000000000005,32.613 +2020-02-27 06:30:00,121.44,214.40099999999998,57.748000000000005,32.613 +2020-02-27 06:45:00,123.95,218.209,57.748000000000005,32.613 +2020-02-27 07:00:00,127.56,219.028,72.138,32.613 +2020-02-27 07:15:00,129.28,222.639,72.138,32.613 +2020-02-27 07:30:00,129.58,223.67,72.138,32.613 +2020-02-27 07:45:00,132.15,223.00799999999998,72.138,32.613 +2020-02-27 08:00:00,134.97,221.19,65.542,32.613 +2020-02-27 08:15:00,134.2,219.979,65.542,32.613 +2020-02-27 08:30:00,131.35,215.787,65.542,32.613 +2020-02-27 08:45:00,126.9,212.06,65.542,32.613 +2020-02-27 09:00:00,124.52,204.975,60.523,32.613 +2020-02-27 09:15:00,124.46,201.856,60.523,32.613 +2020-02-27 09:30:00,126.69,200.528,60.523,32.613 +2020-02-27 09:45:00,127.92,197.623,60.523,32.613 +2020-02-27 10:00:00,125.86,193.459,57.449,32.613 +2020-02-27 10:15:00,123.44,190.041,57.449,32.613 +2020-02-27 10:30:00,125.61,187.658,57.449,32.613 +2020-02-27 10:45:00,126.43,186.771,57.449,32.613 +2020-02-27 11:00:00,122.4,184.77200000000002,54.505,32.613 +2020-02-27 11:15:00,127.71,184.00900000000001,54.505,32.613 +2020-02-27 11:30:00,120.16,183.195,54.505,32.613 +2020-02-27 11:45:00,118.8,182.02900000000002,54.505,32.613 +2020-02-27 12:00:00,117.29,177.203,51.50899999999999,32.613 +2020-02-27 12:15:00,116.79,177.446,51.50899999999999,32.613 +2020-02-27 12:30:00,112.3,176.657,51.50899999999999,32.613 +2020-02-27 12:45:00,115.74,177.57299999999998,51.50899999999999,32.613 +2020-02-27 13:00:00,112.3,177.00599999999997,51.303999999999995,32.613 +2020-02-27 13:15:00,119.69,175.601,51.303999999999995,32.613 +2020-02-27 13:30:00,117.02,174.53799999999998,51.303999999999995,32.613 +2020-02-27 13:45:00,114.97,174.16,51.303999999999995,32.613 +2020-02-27 14:00:00,115.47,175.22400000000002,52.785,32.613 +2020-02-27 14:15:00,115.4,174.87900000000002,52.785,32.613 +2020-02-27 14:30:00,119.74,175.236,52.785,32.613 +2020-02-27 14:45:00,121.19,176.11900000000003,52.785,32.613 +2020-02-27 15:00:00,123.14,178.046,56.458999999999996,32.613 +2020-02-27 15:15:00,116.9,177.079,56.458999999999996,32.613 +2020-02-27 15:30:00,124.45,177.988,56.458999999999996,32.613 +2020-02-27 15:45:00,126.19,178.828,56.458999999999996,32.613 +2020-02-27 16:00:00,128.02,180.417,59.388000000000005,32.613 +2020-02-27 16:15:00,126.16,181.822,59.388000000000005,32.613 +2020-02-27 16:30:00,128.55,184.666,59.388000000000005,32.613 +2020-02-27 16:45:00,130.21,185.77599999999998,59.388000000000005,32.613 +2020-02-27 17:00:00,134.52,187.782,64.462,32.613 +2020-02-27 17:15:00,134.4,190.137,64.462,32.613 +2020-02-27 17:30:00,136.14,192.80200000000002,64.462,32.613 +2020-02-27 17:45:00,140.64,193.84400000000002,64.462,32.613 +2020-02-27 18:00:00,148.99,196.137,65.128,32.613 +2020-02-27 18:15:00,149.31,195.958,65.128,32.613 +2020-02-27 18:30:00,144.63,194.645,65.128,32.613 +2020-02-27 18:45:00,147.88,195.813,65.128,32.613 +2020-02-27 19:00:00,146.09,194.50400000000002,61.316,32.613 +2020-02-27 19:15:00,145.64,191.324,61.316,32.613 +2020-02-27 19:30:00,135.54,189.967,61.316,32.613 +2020-02-27 19:45:00,136.53,187.209,61.316,32.613 +2020-02-27 20:00:00,133.14,182.305,59.845,32.613 +2020-02-27 20:15:00,130.96,176.892,59.845,32.613 +2020-02-27 20:30:00,127.67,173.207,59.845,32.613 +2020-02-27 20:45:00,123.1,171.40099999999998,59.845,32.613 +2020-02-27 21:00:00,118.51,168.123,54.83,32.613 +2020-02-27 21:15:00,116.64,165.014,54.83,32.613 +2020-02-27 21:30:00,116.78,162.971,54.83,32.613 +2020-02-27 21:45:00,116.76,162.464,54.83,32.613 +2020-02-27 22:00:00,106.08,155.33,50.933,32.613 +2020-02-27 22:15:00,104.2,151.092,50.933,32.613 +2020-02-27 22:30:00,106.52,136.667,50.933,32.613 +2020-02-27 22:45:00,108.8,129.218,50.933,32.613 +2020-02-27 23:00:00,101.23,122.57600000000001,45.32899999999999,32.613 +2020-02-27 23:15:00,100.86,121.205,45.32899999999999,32.613 +2020-02-27 23:30:00,97.66,122.382,45.32899999999999,32.613 +2020-02-27 23:45:00,99.21,122.494,45.32899999999999,32.613 +2020-02-28 00:00:00,95.24,116.29,43.74,32.613 +2020-02-28 00:15:00,90.0,115.273,43.74,32.613 +2020-02-28 00:30:00,93.54,115.04799999999999,43.74,32.613 +2020-02-28 00:45:00,93.7,115.684,43.74,32.613 +2020-02-28 01:00:00,86.92,117.04,42.555,32.613 +2020-02-28 01:15:00,89.35,118.04700000000001,42.555,32.613 +2020-02-28 01:30:00,90.93,117.935,42.555,32.613 +2020-02-28 01:45:00,91.4,118.236,42.555,32.613 +2020-02-28 02:00:00,88.43,120.294,41.68600000000001,32.613 +2020-02-28 02:15:00,90.06,121.537,41.68600000000001,32.613 +2020-02-28 02:30:00,89.98,123.05,41.68600000000001,32.613 +2020-02-28 02:45:00,91.98,124.87200000000001,41.68600000000001,32.613 +2020-02-28 03:00:00,85.75,126.415,42.278999999999996,32.613 +2020-02-28 03:15:00,90.33,128.856,42.278999999999996,32.613 +2020-02-28 03:30:00,91.82,130.59,42.278999999999996,32.613 +2020-02-28 03:45:00,92.28,132.428,42.278999999999996,32.613 +2020-02-28 04:00:00,93.53,144.399,43.742,32.613 +2020-02-28 04:15:00,94.58,155.774,43.742,32.613 +2020-02-28 04:30:00,96.07,158.686,43.742,32.613 +2020-02-28 04:45:00,88.54,159.619,43.742,32.613 +2020-02-28 05:00:00,92.18,190.735,46.973,32.613 +2020-02-28 05:15:00,94.1,220.334,46.973,32.613 +2020-02-28 05:30:00,99.17,216.352,46.973,32.613 +2020-02-28 05:45:00,101.77,209.26,46.973,32.613 +2020-02-28 06:00:00,114.52,207.092,59.63399999999999,32.613 +2020-02-28 06:15:00,116.78,211.665,59.63399999999999,32.613 +2020-02-28 06:30:00,121.82,212.828,59.63399999999999,32.613 +2020-02-28 06:45:00,121.41,218.22,59.63399999999999,32.613 +2020-02-28 07:00:00,126.51,218.248,71.631,32.613 +2020-02-28 07:15:00,130.43,222.845,71.631,32.613 +2020-02-28 07:30:00,132.73,223.635,71.631,32.613 +2020-02-28 07:45:00,131.7,222.05599999999998,71.631,32.613 +2020-02-28 08:00:00,137.02,219.141,66.181,32.613 +2020-02-28 08:15:00,131.96,217.541,66.181,32.613 +2020-02-28 08:30:00,136.24,214.248,66.181,32.613 +2020-02-28 08:45:00,130.35,208.982,66.181,32.613 +2020-02-28 09:00:00,130.85,202.32,63.086000000000006,32.613 +2020-02-28 09:15:00,128.0,199.795,63.086000000000006,32.613 +2020-02-28 09:30:00,131.49,198.054,63.086000000000006,32.613 +2020-02-28 09:45:00,128.77,195.05700000000002,63.086000000000006,32.613 +2020-02-28 10:00:00,128.05,189.793,60.886,32.613 +2020-02-28 10:15:00,129.03,187.09,60.886,32.613 +2020-02-28 10:30:00,125.57,184.666,60.886,32.613 +2020-02-28 10:45:00,132.11,183.361,60.886,32.613 +2020-02-28 11:00:00,130.54,181.342,59.391000000000005,32.613 +2020-02-28 11:15:00,127.61,179.697,59.391000000000005,32.613 +2020-02-28 11:30:00,127.14,180.593,59.391000000000005,32.613 +2020-02-28 11:45:00,124.9,179.465,59.391000000000005,32.613 +2020-02-28 12:00:00,122.01,175.725,56.172,32.613 +2020-02-28 12:15:00,126.66,173.922,56.172,32.613 +2020-02-28 12:30:00,120.31,173.257,56.172,32.613 +2020-02-28 12:45:00,122.17,174.65400000000002,56.172,32.613 +2020-02-28 13:00:00,118.8,175.051,54.406000000000006,32.613 +2020-02-28 13:15:00,122.05,174.425,54.406000000000006,32.613 +2020-02-28 13:30:00,121.88,173.385,54.406000000000006,32.613 +2020-02-28 13:45:00,125.01,172.955,54.406000000000006,32.613 +2020-02-28 14:00:00,121.64,172.949,53.578,32.613 +2020-02-28 14:15:00,117.04,172.418,53.578,32.613 +2020-02-28 14:30:00,115.28,173.28900000000002,53.578,32.613 +2020-02-28 14:45:00,116.76,174.46099999999998,53.578,32.613 +2020-02-28 15:00:00,112.41,175.921,56.568999999999996,32.613 +2020-02-28 15:15:00,116.08,174.49099999999999,56.568999999999996,32.613 +2020-02-28 15:30:00,121.56,173.861,56.568999999999996,32.613 +2020-02-28 15:45:00,123.51,174.84599999999998,56.568999999999996,32.613 +2020-02-28 16:00:00,121.03,175.273,60.169,32.613 +2020-02-28 16:15:00,119.77,176.956,60.169,32.613 +2020-02-28 16:30:00,124.79,179.888,60.169,32.613 +2020-02-28 16:45:00,130.53,180.83700000000002,60.169,32.613 +2020-02-28 17:00:00,134.83,183.079,65.497,32.613 +2020-02-28 17:15:00,137.27,185.04,65.497,32.613 +2020-02-28 17:30:00,137.09,187.424,65.497,32.613 +2020-02-28 17:45:00,141.86,188.253,65.497,32.613 +2020-02-28 18:00:00,148.36,191.23,65.082,32.613 +2020-02-28 18:15:00,143.47,190.71599999999998,65.082,32.613 +2020-02-28 18:30:00,142.41,189.78599999999997,65.082,32.613 +2020-02-28 18:45:00,144.94,190.97799999999998,65.082,32.613 +2020-02-28 19:00:00,139.83,190.535,60.968,32.613 +2020-02-28 19:15:00,136.32,188.72099999999998,60.968,32.613 +2020-02-28 19:30:00,138.61,186.987,60.968,32.613 +2020-02-28 19:45:00,138.84,183.80200000000002,60.968,32.613 +2020-02-28 20:00:00,130.09,178.919,61.123000000000005,32.613 +2020-02-28 20:15:00,127.16,173.543,61.123000000000005,32.613 +2020-02-28 20:30:00,122.02,169.83,61.123000000000005,32.613 +2020-02-28 20:45:00,118.31,168.558,61.123000000000005,32.613 +2020-02-28 21:00:00,117.05,165.787,55.416000000000004,32.613 +2020-02-28 21:15:00,114.42,163.128,55.416000000000004,32.613 +2020-02-28 21:30:00,108.61,161.128,55.416000000000004,32.613 +2020-02-28 21:45:00,103.76,161.17600000000002,55.416000000000004,32.613 +2020-02-28 22:00:00,96.68,154.987,51.631,32.613 +2020-02-28 22:15:00,95.08,150.64,51.631,32.613 +2020-02-28 22:30:00,100.47,142.507,51.631,32.613 +2020-02-28 22:45:00,100.52,138.542,51.631,32.613 +2020-02-28 23:00:00,93.73,131.487,44.898,32.613 +2020-02-28 23:15:00,87.45,128.192,44.898,32.613 +2020-02-28 23:30:00,82.28,127.915,44.898,32.613 +2020-02-28 23:45:00,85.88,127.398,44.898,32.613 +2020-02-29 00:00:00,82.24,113.23700000000001,42.033,32.431999999999995 +2020-02-29 00:15:00,85.01,108.041,42.033,32.431999999999995 +2020-02-29 00:30:00,80.52,109.09299999999999,42.033,32.431999999999995 +2020-02-29 00:45:00,80.2,110.416,42.033,32.431999999999995 +2020-02-29 01:00:00,76.23,112.354,38.255,32.431999999999995 +2020-02-29 01:15:00,75.84,112.39200000000001,38.255,32.431999999999995 +2020-02-29 01:30:00,74.66,111.743,38.255,32.431999999999995 +2020-02-29 01:45:00,74.31,111.86,38.255,32.431999999999995 +2020-02-29 02:00:00,77.97,114.565,36.404,32.431999999999995 +2020-02-29 02:15:00,79.13,115.428,36.404,32.431999999999995 +2020-02-29 02:30:00,76.43,115.85600000000001,36.404,32.431999999999995 +2020-02-29 02:45:00,74.31,117.789,36.404,32.431999999999995 +2020-02-29 03:00:00,72.93,119.935,36.083,32.431999999999995 +2020-02-29 03:15:00,71.88,121.161,36.083,32.431999999999995 +2020-02-29 03:30:00,71.31,121.338,36.083,32.431999999999995 +2020-02-29 03:45:00,71.98,123.323,36.083,32.431999999999995 +2020-02-29 04:00:00,72.01,131.215,36.102,32.431999999999995 +2020-02-29 04:15:00,72.24,140.079,36.102,32.431999999999995 +2020-02-29 04:30:00,72.51,140.856,36.102,32.431999999999995 +2020-02-29 04:45:00,73.77,141.296,36.102,32.431999999999995 +2020-02-29 05:00:00,73.63,156.637,35.284,32.431999999999995 +2020-02-29 05:15:00,74.75,167.479,35.284,32.431999999999995 +2020-02-29 05:30:00,75.74,163.838,35.284,32.431999999999995 +2020-02-29 05:45:00,77.0,162.155,35.284,32.431999999999995 +2020-02-29 06:00:00,77.1,178.55700000000002,36.265,32.431999999999995 +2020-02-29 06:15:00,78.45,199.275,36.265,32.431999999999995 +2020-02-29 06:30:00,77.71,195.088,36.265,32.431999999999995 +2020-02-29 06:45:00,79.47,191.61700000000002,36.265,32.431999999999995 +2020-02-29 07:00:00,82.82,187.955,40.714,32.431999999999995 +2020-02-29 07:15:00,85.08,191.27,40.714,32.431999999999995 +2020-02-29 07:30:00,87.37,194.697,40.714,32.431999999999995 +2020-02-29 07:45:00,90.24,196.983,40.714,32.431999999999995 +2020-02-29 08:00:00,94.26,198.00400000000002,46.692,32.431999999999995 +2020-02-29 08:15:00,93.79,199.93099999999998,46.692,32.431999999999995 +2020-02-29 08:30:00,95.57,198.158,46.692,32.431999999999995 +2020-02-29 08:45:00,97.68,196.007,46.692,32.431999999999995 +2020-02-29 09:00:00,99.64,191.146,48.925,32.431999999999995 +2020-02-29 09:15:00,101.64,189.36700000000002,48.925,32.431999999999995 +2020-02-29 09:30:00,101.61,188.537,48.925,32.431999999999995 +2020-02-29 09:45:00,103.34,185.695,48.925,32.431999999999995 +2020-02-29 10:00:00,103.19,180.743,47.799,32.431999999999995 +2020-02-29 10:15:00,103.4,178.24599999999998,47.799,32.431999999999995 +2020-02-29 10:30:00,100.05,175.993,47.799,32.431999999999995 +2020-02-29 10:45:00,101.34,175.965,47.799,32.431999999999995 +2020-02-29 11:00:00,102.61,174.145,44.309,32.431999999999995 +2020-02-29 11:15:00,104.3,171.86900000000003,44.309,32.431999999999995 +2020-02-29 11:30:00,107.59,171.69299999999998,44.309,32.431999999999995 +2020-02-29 11:45:00,110.39,169.666,44.309,32.431999999999995 +2020-02-29 12:00:00,107.28,165.10299999999998,42.367,32.431999999999995 +2020-02-29 12:15:00,108.46,163.957,42.367,32.431999999999995 +2020-02-29 12:30:00,105.82,163.566,42.367,32.431999999999995 +2020-02-29 12:45:00,103.19,164.22799999999998,42.367,32.431999999999995 +2020-02-29 13:00:00,97.8,164.255,39.036,32.431999999999995 +2020-02-29 13:15:00,97.25,161.597,39.036,32.431999999999995 +2020-02-29 13:30:00,95.99,160.111,39.036,32.431999999999995 +2020-02-29 13:45:00,96.33,160.111,39.036,32.431999999999995 +2020-02-29 14:00:00,93.08,161.362,37.995,32.431999999999995 +2020-02-29 14:15:00,93.55,160.257,37.995,32.431999999999995 +2020-02-29 14:30:00,93.15,159.326,37.995,32.431999999999995 +2020-02-29 14:45:00,93.28,160.732,37.995,32.431999999999995 +2020-02-29 15:00:00,92.46,162.841,40.71,32.431999999999995 +2020-02-29 15:15:00,91.85,162.183,40.71,32.431999999999995 +2020-02-29 15:30:00,89.88,163.00799999999998,40.71,32.431999999999995 +2020-02-29 15:45:00,88.72,163.968,40.71,32.431999999999995 +2020-02-29 16:00:00,88.8,163.262,46.998000000000005,32.431999999999995 +2020-02-29 16:15:00,87.64,165.77700000000002,46.998000000000005,32.431999999999995 +2020-02-29 16:30:00,89.92,168.66400000000002,46.998000000000005,32.431999999999995 +2020-02-29 16:45:00,92.75,170.44299999999998,46.998000000000005,32.431999999999995 +2020-02-29 17:00:00,98.43,172.093,55.431000000000004,32.431999999999995 +2020-02-29 17:15:00,99.1,175.64,55.431000000000004,32.431999999999995 +2020-02-29 17:30:00,102.07,177.953,55.431000000000004,32.431999999999995 +2020-02-29 17:45:00,105.39,178.418,55.431000000000004,32.431999999999995 +2020-02-29 18:00:00,110.77,180.94299999999998,55.989,32.431999999999995 +2020-02-29 18:15:00,113.04,182.285,55.989,32.431999999999995 +2020-02-29 18:30:00,114.76,182.68,55.989,32.431999999999995 +2020-02-29 18:45:00,114.16,180.55700000000002,55.989,32.431999999999995 +2020-02-29 19:00:00,112.1,180.942,50.882,32.431999999999995 +2020-02-29 19:15:00,110.76,178.642,50.882,32.431999999999995 +2020-02-29 19:30:00,109.34,177.685,50.882,32.431999999999995 +2020-02-29 19:45:00,110.83,174.40099999999998,50.882,32.431999999999995 +2020-02-29 20:00:00,103.05,171.63400000000001,43.172,32.431999999999995 +2020-02-29 20:15:00,100.21,168.33700000000002,43.172,32.431999999999995 +2020-02-29 20:30:00,97.84,164.28599999999997,43.172,32.431999999999995 +2020-02-29 20:45:00,96.65,162.657,43.172,32.431999999999995 +2020-02-29 21:00:00,90.85,162.047,37.599000000000004,32.431999999999995 +2020-02-29 21:15:00,91.68,159.80200000000002,37.599000000000004,32.431999999999995 +2020-02-29 21:30:00,89.56,159.00799999999998,37.599000000000004,32.431999999999995 +2020-02-29 21:45:00,89.3,158.668,37.599000000000004,32.431999999999995 +2020-02-29 22:00:00,85.48,153.77700000000002,39.047,32.431999999999995 +2020-02-29 22:15:00,84.96,151.89,39.047,32.431999999999995 +2020-02-29 22:30:00,79.47,149.774,39.047,32.431999999999995 +2020-02-29 22:45:00,81.08,147.64600000000002,39.047,32.431999999999995 +2020-02-29 23:00:00,77.22,142.952,32.339,32.431999999999995 +2020-02-29 23:15:00,77.22,138.085,32.339,32.431999999999995 +2020-02-29 23:30:00,75.06,136.158,32.339,32.431999999999995 +2020-02-29 23:45:00,73.54,133.304,32.339,32.431999999999995 +2020-03-01 00:00:00,68.61,114.87200000000001,20.007,31.988000000000003 +2020-03-01 00:15:00,70.53,108.667,20.007,31.988000000000003 +2020-03-01 00:30:00,66.5,108.73299999999999,20.007,31.988000000000003 +2020-03-01 00:45:00,67.58,110.04899999999999,20.007,31.988000000000003 +2020-03-01 01:00:00,65.55,112.008,17.378,31.988000000000003 +2020-03-01 01:15:00,65.75,113.44200000000001,17.378,31.988000000000003 +2020-03-01 01:30:00,65.35,113.366,17.378,31.988000000000003 +2020-03-01 01:45:00,65.61,113.147,17.378,31.988000000000003 +2020-03-01 02:00:00,63.96,115.15,16.145,31.988000000000003 +2020-03-01 02:15:00,64.55,114.846,16.145,31.988000000000003 +2020-03-01 02:30:00,62.76,115.854,16.145,31.988000000000003 +2020-03-01 02:45:00,63.36,118.155,16.145,31.988000000000003 +2020-03-01 03:00:00,62.76,120.616,15.427999999999999,31.988000000000003 +2020-03-01 03:15:00,63.56,121.51,15.427999999999999,31.988000000000003 +2020-03-01 03:30:00,63.25,123.181,15.427999999999999,31.988000000000003 +2020-03-01 03:45:00,63.21,124.824,15.427999999999999,31.988000000000003 +2020-03-01 04:00:00,62.91,133.92700000000002,16.663,31.988000000000003 +2020-03-01 04:15:00,63.35,143.066,16.663,31.988000000000003 +2020-03-01 04:30:00,63.9,143.304,16.663,31.988000000000003 +2020-03-01 04:45:00,63.94,143.76,16.663,31.988000000000003 +2020-03-01 05:00:00,66.16,157.566,17.271,31.988000000000003 +2020-03-01 05:15:00,66.79,168.065,17.271,31.988000000000003 +2020-03-01 05:30:00,66.13,163.91,17.271,31.988000000000003 +2020-03-01 05:45:00,66.68,161.535,17.271,31.988000000000003 +2020-03-01 06:00:00,67.98,178.033,17.612000000000002,31.988000000000003 +2020-03-01 06:15:00,67.63,197.967,17.612000000000002,31.988000000000003 +2020-03-01 06:30:00,66.96,192.521,17.612000000000002,31.988000000000003 +2020-03-01 06:45:00,67.33,187.15599999999998,17.612000000000002,31.988000000000003 +2020-03-01 07:00:00,69.6,187.088,20.88,31.988000000000003 +2020-03-01 07:15:00,70.32,188.924,20.88,31.988000000000003 +2020-03-01 07:30:00,72.12,190.649,20.88,31.988000000000003 +2020-03-01 07:45:00,75.07,191.512,20.88,31.988000000000003 +2020-03-01 08:00:00,79.08,194.41400000000002,25.861,31.988000000000003 +2020-03-01 08:15:00,78.76,195.868,25.861,31.988000000000003 +2020-03-01 08:30:00,77.97,195.63400000000001,25.861,31.988000000000003 +2020-03-01 08:45:00,78.47,194.578,25.861,31.988000000000003 +2020-03-01 09:00:00,77.62,188.77599999999998,27.921999999999997,31.988000000000003 +2020-03-01 09:15:00,77.96,187.282,27.921999999999997,31.988000000000003 +2020-03-01 09:30:00,80.81,186.24200000000002,27.921999999999997,31.988000000000003 +2020-03-01 09:45:00,87.16,183.475,27.921999999999997,31.988000000000003 +2020-03-01 10:00:00,87.22,182.304,29.048000000000002,31.988000000000003 +2020-03-01 10:15:00,85.78,180.335,29.048000000000002,31.988000000000003 +2020-03-01 10:30:00,84.44,178.554,29.048000000000002,31.988000000000003 +2020-03-01 10:45:00,83.32,176.795,29.048000000000002,31.988000000000003 +2020-03-01 11:00:00,83.84,174.87900000000002,32.02,31.988000000000003 +2020-03-01 11:15:00,81.49,172.76,32.02,31.988000000000003 +2020-03-01 11:30:00,83.37,172.18400000000003,32.02,31.988000000000003 +2020-03-01 11:45:00,82.81,171.415,32.02,31.988000000000003 +2020-03-01 12:00:00,79.55,165.91400000000002,28.55,31.988000000000003 +2020-03-01 12:15:00,76.4,166.451,28.55,31.988000000000003 +2020-03-01 12:30:00,72.82,165.06900000000002,28.55,31.988000000000003 +2020-03-01 12:45:00,71.89,164.695,28.55,31.988000000000003 +2020-03-01 13:00:00,68.82,163.696,25.601999999999997,31.988000000000003 +2020-03-01 13:15:00,67.4,163.767,25.601999999999997,31.988000000000003 +2020-03-01 13:30:00,66.06,161.689,25.601999999999997,31.988000000000003 +2020-03-01 13:45:00,65.28,160.939,25.601999999999997,31.988000000000003 +2020-03-01 14:00:00,62.31,162.632,23.916999999999998,31.988000000000003 +2020-03-01 14:15:00,63.97,162.403,23.916999999999998,31.988000000000003 +2020-03-01 14:30:00,64.32,162.54399999999998,23.916999999999998,31.988000000000003 +2020-03-01 14:45:00,66.22,163.375,23.916999999999998,31.988000000000003 +2020-03-01 15:00:00,66.27,163.856,24.064,31.988000000000003 +2020-03-01 15:15:00,67.29,163.786,24.064,31.988000000000003 +2020-03-01 15:30:00,68.58,164.68200000000002,24.064,31.988000000000003 +2020-03-01 15:45:00,70.54,165.767,24.064,31.988000000000003 +2020-03-01 16:00:00,73.29,168.68,28.189,31.988000000000003 +2020-03-01 16:15:00,73.42,170.81400000000002,28.189,31.988000000000003 +2020-03-01 16:30:00,75.75,173.27599999999998,28.189,31.988000000000003 +2020-03-01 16:45:00,78.52,174.707,28.189,31.988000000000003 +2020-03-01 17:00:00,83.11,177.141,37.576,31.988000000000003 +2020-03-01 17:15:00,85.27,180.53900000000002,37.576,31.988000000000003 +2020-03-01 17:30:00,89.46,183.257,37.576,31.988000000000003 +2020-03-01 17:45:00,92.14,185.89,37.576,31.988000000000003 +2020-03-01 18:00:00,100.96,188.957,42.669,31.988000000000003 +2020-03-01 18:15:00,103.27,191.891,42.669,31.988000000000003 +2020-03-01 18:30:00,103.76,190.107,42.669,31.988000000000003 +2020-03-01 18:45:00,102.03,190.166,42.669,31.988000000000003 +2020-03-01 19:00:00,101.46,190.812,43.538999999999994,31.988000000000003 +2020-03-01 19:15:00,100.17,188.94400000000002,43.538999999999994,31.988000000000003 +2020-03-01 19:30:00,98.2,188.227,43.538999999999994,31.988000000000003 +2020-03-01 19:45:00,96.97,185.736,43.538999999999994,31.988000000000003 +2020-03-01 20:00:00,93.91,182.748,37.330999999999996,31.988000000000003 +2020-03-01 20:15:00,93.83,180.495,37.330999999999996,31.988000000000003 +2020-03-01 20:30:00,95.91,177.46200000000002,37.330999999999996,31.988000000000003 +2020-03-01 20:45:00,97.34,173.905,37.330999999999996,31.988000000000003 +2020-03-01 21:00:00,94.5,170.889,33.856,31.988000000000003 +2020-03-01 21:15:00,89.25,168.035,33.856,31.988000000000003 +2020-03-01 21:30:00,88.14,167.192,33.856,31.988000000000003 +2020-03-01 21:45:00,89.58,167.22400000000002,33.856,31.988000000000003 +2020-03-01 22:00:00,93.6,161.214,34.711999999999996,31.988000000000003 +2020-03-01 22:15:00,95.33,158.43200000000002,34.711999999999996,31.988000000000003 +2020-03-01 22:30:00,91.18,152.474,34.711999999999996,31.988000000000003 +2020-03-01 22:45:00,83.29,149.13299999999998,34.711999999999996,31.988000000000003 +2020-03-01 23:00:00,79.65,141.811,29.698,31.988000000000003 +2020-03-01 23:15:00,80.74,138.316,29.698,31.988000000000003 +2020-03-01 23:30:00,78.27,137.503,29.698,31.988000000000003 +2020-03-01 23:45:00,78.56,135.459,29.698,31.988000000000003 +2020-03-02 00:00:00,73.51,118.774,29.983,32.166 +2020-03-02 00:15:00,74.57,115.516,29.983,32.166 +2020-03-02 00:30:00,75.5,115.632,29.983,32.166 +2020-03-02 00:45:00,73.67,116.381,29.983,32.166 +2020-03-02 01:00:00,70.05,118.355,29.122,32.166 +2020-03-02 01:15:00,71.82,119.274,29.122,32.166 +2020-03-02 01:30:00,71.29,119.28299999999999,29.122,32.166 +2020-03-02 01:45:00,72.24,119.164,29.122,32.166 +2020-03-02 02:00:00,70.05,121.193,28.676,32.166 +2020-03-02 02:15:00,71.47,122.126,28.676,32.166 +2020-03-02 02:30:00,70.78,123.491,28.676,32.166 +2020-03-02 02:45:00,71.48,125.18299999999999,28.676,32.166 +2020-03-02 03:00:00,72.12,128.914,26.552,32.166 +2020-03-02 03:15:00,72.82,131.45600000000002,26.552,32.166 +2020-03-02 03:30:00,79.44,132.96200000000002,26.552,32.166 +2020-03-02 03:45:00,81.71,134.03,26.552,32.166 +2020-03-02 04:00:00,82.58,147.67700000000002,27.44,32.166 +2020-03-02 04:15:00,77.82,161.142,27.44,32.166 +2020-03-02 04:30:00,78.23,163.398,27.44,32.166 +2020-03-02 04:45:00,79.38,164.046,27.44,32.166 +2020-03-02 05:00:00,83.72,193.69400000000002,36.825,32.166 +2020-03-02 05:15:00,86.57,224.705,36.825,32.166 +2020-03-02 05:30:00,91.53,220.55200000000002,36.825,32.166 +2020-03-02 05:45:00,96.44,212.40900000000002,36.825,32.166 +2020-03-02 06:00:00,105.65,210.571,56.589,32.166 +2020-03-02 06:15:00,110.56,215.197,56.589,32.166 +2020-03-02 06:30:00,114.34,217.84599999999998,56.589,32.166 +2020-03-02 06:45:00,116.99,221.528,56.589,32.166 +2020-03-02 07:00:00,121.98,223.831,67.49,32.166 +2020-03-02 07:15:00,122.83,227.138,67.49,32.166 +2020-03-02 07:30:00,126.26,227.96599999999998,67.49,32.166 +2020-03-02 07:45:00,128.48,226.40400000000002,67.49,32.166 +2020-03-02 08:00:00,132.44,224.445,60.028,32.166 +2020-03-02 08:15:00,131.31,223.685,60.028,32.166 +2020-03-02 08:30:00,130.5,219.38,60.028,32.166 +2020-03-02 08:45:00,131.43,215.199,60.028,32.166 +2020-03-02 09:00:00,130.52,208.362,55.018,32.166 +2020-03-02 09:15:00,130.5,203.305,55.018,32.166 +2020-03-02 09:30:00,131.0,201.21099999999998,55.018,32.166 +2020-03-02 09:45:00,131.43,198.43,55.018,32.166 +2020-03-02 10:00:00,129.42,196.28799999999998,51.183,32.166 +2020-03-02 10:15:00,130.46,194.028,51.183,32.166 +2020-03-02 10:30:00,130.39,191.372,51.183,32.166 +2020-03-02 10:45:00,130.17,190.128,51.183,32.166 +2020-03-02 11:00:00,128.8,185.782,50.065,32.166 +2020-03-02 11:15:00,130.97,185.44099999999997,50.065,32.166 +2020-03-02 11:30:00,128.5,186.283,50.065,32.166 +2020-03-02 11:45:00,124.59,185.206,50.065,32.166 +2020-03-02 12:00:00,122.07,181.143,48.141999999999996,32.166 +2020-03-02 12:15:00,122.75,181.709,48.141999999999996,32.166 +2020-03-02 12:30:00,118.19,180.388,48.141999999999996,32.166 +2020-03-02 12:45:00,115.54,181.465,48.141999999999996,32.166 +2020-03-02 13:00:00,116.29,181.18,47.887,32.166 +2020-03-02 13:15:00,111.2,179.791,47.887,32.166 +2020-03-02 13:30:00,110.44,177.218,47.887,32.166 +2020-03-02 13:45:00,110.06,176.62,47.887,32.166 +2020-03-02 14:00:00,109.1,177.69,48.571000000000005,32.166 +2020-03-02 14:15:00,110.15,176.90200000000002,48.571000000000005,32.166 +2020-03-02 14:30:00,109.82,176.476,48.571000000000005,32.166 +2020-03-02 14:45:00,112.38,177.563,48.571000000000005,32.166 +2020-03-02 15:00:00,111.64,179.74599999999998,49.937,32.166 +2020-03-02 15:15:00,113.26,178.19299999999998,49.937,32.166 +2020-03-02 15:30:00,112.72,178.34599999999998,49.937,32.166 +2020-03-02 15:45:00,112.81,178.925,49.937,32.166 +2020-03-02 16:00:00,116.61,182.183,52.963,32.166 +2020-03-02 16:15:00,115.99,183.57299999999998,52.963,32.166 +2020-03-02 16:30:00,117.48,185.021,52.963,32.166 +2020-03-02 16:45:00,119.0,185.275,52.963,32.166 +2020-03-02 17:00:00,121.05,187.44,61.163999999999994,32.166 +2020-03-02 17:15:00,122.51,189.97299999999998,61.163999999999994,32.166 +2020-03-02 17:30:00,125.34,192.14,61.163999999999994,32.166 +2020-03-02 17:45:00,127.45,193.295,61.163999999999994,32.166 +2020-03-02 18:00:00,135.41,196.68599999999998,63.788999999999994,32.166 +2020-03-02 18:15:00,136.15,197.328,63.788999999999994,32.166 +2020-03-02 18:30:00,135.28,196.08900000000003,63.788999999999994,32.166 +2020-03-02 18:45:00,134.36,197.226,63.788999999999994,32.166 +2020-03-02 19:00:00,134.74,196.25,63.913000000000004,32.166 +2020-03-02 19:15:00,130.7,193.407,63.913000000000004,32.166 +2020-03-02 19:30:00,131.09,193.16099999999997,63.913000000000004,32.166 +2020-03-02 19:45:00,129.93,189.833,63.913000000000004,32.166 +2020-03-02 20:00:00,119.75,184.363,65.44,32.166 +2020-03-02 20:15:00,118.41,179.88299999999998,65.44,32.166 +2020-03-02 20:30:00,115.33,175.128,65.44,32.166 +2020-03-02 20:45:00,114.14,173.17700000000002,65.44,32.166 +2020-03-02 21:00:00,109.07,170.59400000000002,59.117,32.166 +2020-03-02 21:15:00,111.01,166.644,59.117,32.166 +2020-03-02 21:30:00,109.45,165.047,59.117,32.166 +2020-03-02 21:45:00,107.16,164.585,59.117,32.166 +2020-03-02 22:00:00,100.92,155.52,52.301,32.166 +2020-03-02 22:15:00,97.41,151.71,52.301,32.166 +2020-03-02 22:30:00,99.9,135.923,52.301,32.166 +2020-03-02 22:45:00,100.06,127.88600000000001,52.301,32.166 +2020-03-02 23:00:00,94.69,121.306,44.373000000000005,32.166 +2020-03-02 23:15:00,88.97,120.22200000000001,44.373000000000005,32.166 +2020-03-02 23:30:00,89.49,122.09700000000001,44.373000000000005,32.166 +2020-03-02 23:45:00,90.65,122.587,44.373000000000005,32.166 +2020-03-03 00:00:00,87.69,117.507,44.647,32.166 +2020-03-03 00:15:00,84.07,115.73299999999999,44.647,32.166 +2020-03-03 00:30:00,82.45,115.021,44.647,32.166 +2020-03-03 00:45:00,85.5,114.936,44.647,32.166 +2020-03-03 01:00:00,80.31,116.613,41.433,32.166 +2020-03-03 01:15:00,82.7,117.10600000000001,41.433,32.166 +2020-03-03 01:30:00,78.1,117.24600000000001,41.433,32.166 +2020-03-03 01:45:00,76.78,117.35700000000001,41.433,32.166 +2020-03-03 02:00:00,76.01,119.30799999999999,39.909,32.166 +2020-03-03 02:15:00,76.06,120.281,39.909,32.166 +2020-03-03 02:30:00,76.62,121.045,39.909,32.166 +2020-03-03 02:45:00,81.97,122.792,39.909,32.166 +2020-03-03 03:00:00,84.87,125.315,39.14,32.166 +2020-03-03 03:15:00,86.31,127.15700000000001,39.14,32.166 +2020-03-03 03:30:00,84.73,129.112,39.14,32.166 +2020-03-03 03:45:00,85.5,130.22899999999998,39.14,32.166 +2020-03-03 04:00:00,87.66,143.525,40.015,32.166 +2020-03-03 04:15:00,81.89,156.649,40.015,32.166 +2020-03-03 04:30:00,83.96,158.612,40.015,32.166 +2020-03-03 04:45:00,89.14,160.464,40.015,32.166 +2020-03-03 05:00:00,95.89,195.05900000000003,44.93600000000001,32.166 +2020-03-03 05:15:00,98.73,225.97400000000002,44.93600000000001,32.166 +2020-03-03 05:30:00,97.84,220.359,44.93600000000001,32.166 +2020-03-03 05:45:00,100.51,212.12900000000002,44.93600000000001,32.166 +2020-03-03 06:00:00,109.28,209.315,57.271,32.166 +2020-03-03 06:15:00,112.89,215.521,57.271,32.166 +2020-03-03 06:30:00,115.24,217.46900000000002,57.271,32.166 +2020-03-03 06:45:00,116.92,220.65599999999998,57.271,32.166 +2020-03-03 07:00:00,122.15,222.825,68.352,32.166 +2020-03-03 07:15:00,122.86,225.91299999999998,68.352,32.166 +2020-03-03 07:30:00,126.57,226.18099999999998,68.352,32.166 +2020-03-03 07:45:00,127.79,224.65400000000002,68.352,32.166 +2020-03-03 08:00:00,131.05,222.767,60.717,32.166 +2020-03-03 08:15:00,131.16,220.958,60.717,32.166 +2020-03-03 08:30:00,135.43,216.447,60.717,32.166 +2020-03-03 08:45:00,132.45,211.908,60.717,32.166 +2020-03-03 09:00:00,132.71,204.32299999999998,54.603,32.166 +2020-03-03 09:15:00,132.5,200.79,54.603,32.166 +2020-03-03 09:30:00,134.11,199.454,54.603,32.166 +2020-03-03 09:45:00,133.41,196.642,54.603,32.166 +2020-03-03 10:00:00,133.09,193.778,52.308,32.166 +2020-03-03 10:15:00,132.43,190.52200000000002,52.308,32.166 +2020-03-03 10:30:00,133.18,188.062,52.308,32.166 +2020-03-03 10:45:00,133.76,187.234,52.308,32.166 +2020-03-03 11:00:00,132.89,184.308,51.838,32.166 +2020-03-03 11:15:00,134.16,183.71599999999998,51.838,32.166 +2020-03-03 11:30:00,133.77,183.303,51.838,32.166 +2020-03-03 11:45:00,134.04,182.864,51.838,32.166 +2020-03-03 12:00:00,134.11,177.479,50.375,32.166 +2020-03-03 12:15:00,134.12,177.7,50.375,32.166 +2020-03-03 12:30:00,134.26,177.143,50.375,32.166 +2020-03-03 12:45:00,136.24,178.02,50.375,32.166 +2020-03-03 13:00:00,132.14,177.34099999999998,50.735,32.166 +2020-03-03 13:15:00,140.28,175.817,50.735,32.166 +2020-03-03 13:30:00,140.27,174.355,50.735,32.166 +2020-03-03 13:45:00,138.43,173.81900000000002,50.735,32.166 +2020-03-03 14:00:00,134.59,175.283,50.946000000000005,32.166 +2020-03-03 14:15:00,133.48,174.597,50.946000000000005,32.166 +2020-03-03 14:30:00,134.65,174.787,50.946000000000005,32.166 +2020-03-03 14:45:00,139.12,175.71,50.946000000000005,32.166 +2020-03-03 15:00:00,138.89,177.46400000000003,53.18,32.166 +2020-03-03 15:15:00,136.59,176.313,53.18,32.166 +2020-03-03 15:30:00,133.42,176.609,53.18,32.166 +2020-03-03 15:45:00,137.07,176.822,53.18,32.166 +2020-03-03 16:00:00,138.31,180.324,54.928999999999995,32.166 +2020-03-03 16:15:00,137.5,182.165,54.928999999999995,32.166 +2020-03-03 16:30:00,135.91,184.196,54.928999999999995,32.166 +2020-03-03 16:45:00,136.81,184.774,54.928999999999995,32.166 +2020-03-03 17:00:00,138.14,187.50099999999998,60.913000000000004,32.166 +2020-03-03 17:15:00,138.47,190.11700000000002,60.913000000000004,32.166 +2020-03-03 17:30:00,137.24,192.908,60.913000000000004,32.166 +2020-03-03 17:45:00,134.06,193.915,60.913000000000004,32.166 +2020-03-03 18:00:00,143.82,197.111,62.214,32.166 +2020-03-03 18:15:00,146.3,197.49,62.214,32.166 +2020-03-03 18:30:00,146.08,195.918,62.214,32.166 +2020-03-03 18:45:00,142.83,197.834,62.214,32.166 +2020-03-03 19:00:00,139.19,196.77599999999998,62.38,32.166 +2020-03-03 19:15:00,140.37,193.695,62.38,32.166 +2020-03-03 19:30:00,138.01,192.799,62.38,32.166 +2020-03-03 19:45:00,138.66,189.58599999999998,62.38,32.166 +2020-03-03 20:00:00,130.23,184.28,65.018,32.166 +2020-03-03 20:15:00,123.06,179.03400000000002,65.018,32.166 +2020-03-03 20:30:00,123.81,175.297,65.018,32.166 +2020-03-03 20:45:00,121.62,172.838,65.018,32.166 +2020-03-03 21:00:00,117.63,169.65599999999998,56.416000000000004,32.166 +2020-03-03 21:15:00,108.75,166.425,56.416000000000004,32.166 +2020-03-03 21:30:00,108.4,164.136,56.416000000000004,32.166 +2020-03-03 21:45:00,110.03,163.938,56.416000000000004,32.166 +2020-03-03 22:00:00,107.4,156.55,52.846000000000004,32.166 +2020-03-03 22:15:00,105.11,152.477,52.846000000000004,32.166 +2020-03-03 22:30:00,98.01,136.759,52.846000000000004,32.166 +2020-03-03 22:45:00,100.15,128.994,52.846000000000004,32.166 +2020-03-03 23:00:00,96.08,122.352,44.435,32.166 +2020-03-03 23:15:00,96.98,120.572,44.435,32.166 +2020-03-03 23:30:00,89.43,122.104,44.435,32.166 +2020-03-03 23:45:00,87.12,122.21,44.435,32.166 +2020-03-04 00:00:00,83.92,117.189,42.527,32.166 +2020-03-04 00:15:00,81.31,115.42299999999999,42.527,32.166 +2020-03-04 00:30:00,85.2,114.69200000000001,42.527,32.166 +2020-03-04 00:45:00,87.61,114.60600000000001,42.527,32.166 +2020-03-04 01:00:00,83.3,116.243,38.655,32.166 +2020-03-04 01:15:00,83.96,116.72,38.655,32.166 +2020-03-04 01:30:00,76.44,116.84299999999999,38.655,32.166 +2020-03-04 01:45:00,77.77,116.96,38.655,32.166 +2020-03-04 02:00:00,77.27,118.90100000000001,36.912,32.166 +2020-03-04 02:15:00,79.12,119.867,36.912,32.166 +2020-03-04 02:30:00,84.05,120.65,36.912,32.166 +2020-03-04 02:45:00,84.7,122.397,36.912,32.166 +2020-03-04 03:00:00,84.41,124.934,36.98,32.166 +2020-03-04 03:15:00,86.26,126.76,36.98,32.166 +2020-03-04 03:30:00,87.42,128.709,36.98,32.166 +2020-03-04 03:45:00,87.57,129.838,36.98,32.166 +2020-03-04 04:00:00,83.7,143.138,38.052,32.166 +2020-03-04 04:15:00,88.51,156.252,38.052,32.166 +2020-03-04 04:30:00,91.89,158.232,38.052,32.166 +2020-03-04 04:45:00,93.1,160.07,38.052,32.166 +2020-03-04 05:00:00,91.47,194.645,42.455,32.166 +2020-03-04 05:15:00,91.38,225.574,42.455,32.166 +2020-03-04 05:30:00,94.97,219.925,42.455,32.166 +2020-03-04 05:45:00,95.93,211.703,42.455,32.166 +2020-03-04 06:00:00,106.42,208.898,57.986000000000004,32.166 +2020-03-04 06:15:00,112.03,215.11,57.986000000000004,32.166 +2020-03-04 06:30:00,114.0,217.014,57.986000000000004,32.166 +2020-03-04 06:45:00,116.7,220.18200000000002,57.986000000000004,32.166 +2020-03-04 07:00:00,122.52,222.373,71.868,32.166 +2020-03-04 07:15:00,122.72,225.428,71.868,32.166 +2020-03-04 07:30:00,125.92,225.655,71.868,32.166 +2020-03-04 07:45:00,128.12,224.088,71.868,32.166 +2020-03-04 08:00:00,130.83,222.176,62.225,32.166 +2020-03-04 08:15:00,130.93,220.354,62.225,32.166 +2020-03-04 08:30:00,131.84,215.78599999999997,62.225,32.166 +2020-03-04 08:45:00,131.99,211.262,62.225,32.166 +2020-03-04 09:00:00,133.12,203.688,58.802,32.166 +2020-03-04 09:15:00,134.1,200.15599999999998,58.802,32.166 +2020-03-04 09:30:00,135.91,198.843,58.802,32.166 +2020-03-04 09:45:00,136.01,196.042,58.802,32.166 +2020-03-04 10:00:00,135.9,193.19299999999998,54.122,32.166 +2020-03-04 10:15:00,137.47,189.97799999999998,54.122,32.166 +2020-03-04 10:30:00,136.84,187.53799999999998,54.122,32.166 +2020-03-04 10:45:00,137.85,186.72799999999998,54.122,32.166 +2020-03-04 11:00:00,137.84,183.793,54.368,32.166 +2020-03-04 11:15:00,140.09,183.22099999999998,54.368,32.166 +2020-03-04 11:30:00,140.75,182.81599999999997,54.368,32.166 +2020-03-04 11:45:00,141.22,182.395,54.368,32.166 +2020-03-04 12:00:00,138.17,177.02900000000002,52.74,32.166 +2020-03-04 12:15:00,140.05,177.263,52.74,32.166 +2020-03-04 12:30:00,136.13,176.671,52.74,32.166 +2020-03-04 12:45:00,137.21,177.545,52.74,32.166 +2020-03-04 13:00:00,141.05,176.90599999999998,52.544,32.166 +2020-03-04 13:15:00,139.87,175.361,52.544,32.166 +2020-03-04 13:30:00,125.18,173.886,52.544,32.166 +2020-03-04 13:45:00,130.05,173.352,52.544,32.166 +2020-03-04 14:00:00,125.22,174.88400000000001,53.602,32.166 +2020-03-04 14:15:00,123.48,174.174,53.602,32.166 +2020-03-04 14:30:00,126.37,174.335,53.602,32.166 +2020-03-04 14:45:00,123.47,175.268,53.602,32.166 +2020-03-04 15:00:00,121.69,177.032,55.59,32.166 +2020-03-04 15:15:00,118.75,175.852,55.59,32.166 +2020-03-04 15:30:00,116.12,176.09900000000002,55.59,32.166 +2020-03-04 15:45:00,120.18,176.293,55.59,32.166 +2020-03-04 16:00:00,123.92,179.798,57.586999999999996,32.166 +2020-03-04 16:15:00,124.85,181.62099999999998,57.586999999999996,32.166 +2020-03-04 16:30:00,120.88,183.65099999999998,57.586999999999996,32.166 +2020-03-04 16:45:00,124.56,184.18900000000002,57.586999999999996,32.166 +2020-03-04 17:00:00,128.84,186.928,62.111999999999995,32.166 +2020-03-04 17:15:00,130.98,189.553,62.111999999999995,32.166 +2020-03-04 17:30:00,131.7,192.36900000000003,62.111999999999995,32.166 +2020-03-04 17:45:00,131.94,193.391,62.111999999999995,32.166 +2020-03-04 18:00:00,138.98,196.595,64.605,32.166 +2020-03-04 18:15:00,143.1,197.04,64.605,32.166 +2020-03-04 18:30:00,145.58,195.46400000000003,64.605,32.166 +2020-03-04 18:45:00,139.57,197.40099999999998,64.605,32.166 +2020-03-04 19:00:00,139.2,196.305,65.55199999999999,32.166 +2020-03-04 19:15:00,137.12,193.24200000000002,65.55199999999999,32.166 +2020-03-04 19:30:00,134.82,192.373,65.55199999999999,32.166 +2020-03-04 19:45:00,128.94,189.204,65.55199999999999,32.166 +2020-03-04 20:00:00,125.39,183.868,66.778,32.166 +2020-03-04 20:15:00,122.78,178.637,66.778,32.166 +2020-03-04 20:30:00,118.75,174.926,66.778,32.166 +2020-03-04 20:45:00,115.74,172.472,66.778,32.166 +2020-03-04 21:00:00,113.84,169.278,56.103,32.166 +2020-03-04 21:15:00,111.66,166.042,56.103,32.166 +2020-03-04 21:30:00,107.31,163.753,56.103,32.166 +2020-03-04 21:45:00,108.44,163.576,56.103,32.166 +2020-03-04 22:00:00,103.17,156.173,51.371,32.166 +2020-03-04 22:15:00,102.87,152.128,51.371,32.166 +2020-03-04 22:30:00,93.83,136.359,51.371,32.166 +2020-03-04 22:45:00,94.61,128.59799999999998,51.371,32.166 +2020-03-04 23:00:00,93.52,121.95,42.798,32.166 +2020-03-04 23:15:00,93.24,120.189,42.798,32.166 +2020-03-04 23:30:00,86.27,121.729,42.798,32.166 +2020-03-04 23:45:00,85.18,121.86,42.798,32.166 +2020-03-05 00:00:00,79.97,116.865,39.069,32.166 +2020-03-05 00:15:00,84.04,115.10700000000001,39.069,32.166 +2020-03-05 00:30:00,86.08,114.35799999999999,39.069,32.166 +2020-03-05 00:45:00,83.85,114.272,39.069,32.166 +2020-03-05 01:00:00,75.83,115.867,37.043,32.166 +2020-03-05 01:15:00,75.46,116.329,37.043,32.166 +2020-03-05 01:30:00,75.14,116.435,37.043,32.166 +2020-03-05 01:45:00,77.65,116.557,37.043,32.166 +2020-03-05 02:00:00,79.69,118.488,34.625,32.166 +2020-03-05 02:15:00,80.69,119.448,34.625,32.166 +2020-03-05 02:30:00,78.05,120.249,34.625,32.166 +2020-03-05 02:45:00,76.94,121.99700000000001,34.625,32.166 +2020-03-05 03:00:00,77.22,124.545,33.812,32.166 +2020-03-05 03:15:00,82.54,126.35600000000001,33.812,32.166 +2020-03-05 03:30:00,83.02,128.299,33.812,32.166 +2020-03-05 03:45:00,80.83,129.442,33.812,32.166 +2020-03-05 04:00:00,78.0,142.746,35.236999999999995,32.166 +2020-03-05 04:15:00,80.68,155.84799999999998,35.236999999999995,32.166 +2020-03-05 04:30:00,86.04,157.845,35.236999999999995,32.166 +2020-03-05 04:45:00,87.84,159.67,35.236999999999995,32.166 +2020-03-05 05:00:00,88.83,194.22299999999998,40.375,32.166 +2020-03-05 05:15:00,87.34,225.169,40.375,32.166 +2020-03-05 05:30:00,90.9,219.488,40.375,32.166 +2020-03-05 05:45:00,95.15,211.271,40.375,32.166 +2020-03-05 06:00:00,105.43,208.47400000000002,52.316,32.166 +2020-03-05 06:15:00,108.76,214.69299999999998,52.316,32.166 +2020-03-05 06:30:00,115.44,216.55200000000002,52.316,32.166 +2020-03-05 06:45:00,115.49,219.701,52.316,32.166 +2020-03-05 07:00:00,122.69,221.91299999999998,64.115,32.166 +2020-03-05 07:15:00,123.41,224.935,64.115,32.166 +2020-03-05 07:30:00,125.69,225.12099999999998,64.115,32.166 +2020-03-05 07:45:00,128.28,223.512,64.115,32.166 +2020-03-05 08:00:00,131.57,221.575,55.033,32.166 +2020-03-05 08:15:00,127.69,219.74099999999999,55.033,32.166 +2020-03-05 08:30:00,127.62,215.11599999999999,55.033,32.166 +2020-03-05 08:45:00,124.84,210.609,55.033,32.166 +2020-03-05 09:00:00,122.67,203.046,49.411,32.166 +2020-03-05 09:15:00,118.75,199.516,49.411,32.166 +2020-03-05 09:30:00,118.32,198.22400000000002,49.411,32.166 +2020-03-05 09:45:00,118.04,195.43599999999998,49.411,32.166 +2020-03-05 10:00:00,117.58,192.6,45.82899999999999,32.166 +2020-03-05 10:15:00,119.95,189.429,45.82899999999999,32.166 +2020-03-05 10:30:00,123.89,187.00799999999998,45.82899999999999,32.166 +2020-03-05 10:45:00,127.92,186.218,45.82899999999999,32.166 +2020-03-05 11:00:00,124.66,183.275,44.333,32.166 +2020-03-05 11:15:00,129.25,182.722,44.333,32.166 +2020-03-05 11:30:00,117.7,182.325,44.333,32.166 +2020-03-05 11:45:00,115.76,181.92,44.333,32.166 +2020-03-05 12:00:00,113.86,176.574,42.95,32.166 +2020-03-05 12:15:00,115.98,176.822,42.95,32.166 +2020-03-05 12:30:00,123.05,176.19299999999998,42.95,32.166 +2020-03-05 12:45:00,119.31,177.06400000000002,42.95,32.166 +2020-03-05 13:00:00,116.22,176.468,42.489,32.166 +2020-03-05 13:15:00,117.03,174.90099999999998,42.489,32.166 +2020-03-05 13:30:00,114.34,173.41299999999998,42.489,32.166 +2020-03-05 13:45:00,112.98,172.882,42.489,32.166 +2020-03-05 14:00:00,120.48,174.481,43.448,32.166 +2020-03-05 14:15:00,125.43,173.747,43.448,32.166 +2020-03-05 14:30:00,124.36,173.87900000000002,43.448,32.166 +2020-03-05 14:45:00,124.56,174.821,43.448,32.166 +2020-03-05 15:00:00,120.75,176.59599999999998,45.994,32.166 +2020-03-05 15:15:00,117.53,175.38400000000001,45.994,32.166 +2020-03-05 15:30:00,125.28,175.582,45.994,32.166 +2020-03-05 15:45:00,123.67,175.75900000000001,45.994,32.166 +2020-03-05 16:00:00,124.31,179.269,48.167,32.166 +2020-03-05 16:15:00,121.46,181.071,48.167,32.166 +2020-03-05 16:30:00,123.02,183.101,48.167,32.166 +2020-03-05 16:45:00,120.81,183.59900000000002,48.167,32.166 +2020-03-05 17:00:00,126.49,186.34900000000002,52.637,32.166 +2020-03-05 17:15:00,122.58,188.981,52.637,32.166 +2020-03-05 17:30:00,129.9,191.82299999999998,52.637,32.166 +2020-03-05 17:45:00,131.12,192.859,52.637,32.166 +2020-03-05 18:00:00,136.47,196.07,55.739,32.166 +2020-03-05 18:15:00,136.58,196.582,55.739,32.166 +2020-03-05 18:30:00,142.41,195.00400000000002,55.739,32.166 +2020-03-05 18:45:00,143.42,196.96200000000002,55.739,32.166 +2020-03-05 19:00:00,139.76,195.826,56.36600000000001,32.166 +2020-03-05 19:15:00,135.79,192.78099999999998,56.36600000000001,32.166 +2020-03-05 19:30:00,135.89,191.94099999999997,56.36600000000001,32.166 +2020-03-05 19:45:00,135.03,188.817,56.36600000000001,32.166 +2020-03-05 20:00:00,127.56,183.449,56.338,32.166 +2020-03-05 20:15:00,124.1,178.235,56.338,32.166 +2020-03-05 20:30:00,121.73,174.549,56.338,32.166 +2020-03-05 20:45:00,117.92,172.1,56.338,32.166 +2020-03-05 21:00:00,109.2,168.894,49.894,32.166 +2020-03-05 21:15:00,112.76,165.65400000000002,49.894,32.166 +2020-03-05 21:30:00,110.85,163.363,49.894,32.166 +2020-03-05 21:45:00,109.7,163.209,49.894,32.166 +2020-03-05 22:00:00,101.13,155.79,46.687,32.166 +2020-03-05 22:15:00,103.31,151.773,46.687,32.166 +2020-03-05 22:30:00,97.08,135.952,46.687,32.166 +2020-03-05 22:45:00,93.57,128.194,46.687,32.166 +2020-03-05 23:00:00,85.09,121.542,39.211,32.166 +2020-03-05 23:15:00,84.64,119.8,39.211,32.166 +2020-03-05 23:30:00,87.76,121.34700000000001,39.211,32.166 +2020-03-05 23:45:00,89.95,121.505,39.211,32.166 +2020-03-06 00:00:00,84.63,115.272,36.616,32.166 +2020-03-06 00:15:00,80.02,113.741,36.616,32.166 +2020-03-06 00:30:00,78.58,112.88,36.616,32.166 +2020-03-06 00:45:00,79.97,112.955,36.616,32.166 +2020-03-06 01:00:00,81.81,114.15899999999999,33.799,32.166 +2020-03-06 01:15:00,83.15,115.40899999999999,33.799,32.166 +2020-03-06 01:30:00,81.42,115.375,33.799,32.166 +2020-03-06 01:45:00,77.29,115.573,33.799,32.166 +2020-03-06 02:00:00,77.39,117.697,32.968,32.166 +2020-03-06 02:15:00,82.75,118.53200000000001,32.968,32.166 +2020-03-06 02:30:00,81.3,119.965,32.968,32.166 +2020-03-06 02:45:00,79.68,121.664,32.968,32.166 +2020-03-06 03:00:00,75.05,123.374,33.533,32.166 +2020-03-06 03:15:00,80.07,125.906,33.533,32.166 +2020-03-06 03:30:00,83.67,127.795,33.533,32.166 +2020-03-06 03:45:00,79.45,129.38,33.533,32.166 +2020-03-06 04:00:00,79.38,142.92700000000002,36.102,32.166 +2020-03-06 04:15:00,84.68,155.572,36.102,32.166 +2020-03-06 04:30:00,86.79,157.934,36.102,32.166 +2020-03-06 04:45:00,89.75,158.566,36.102,32.166 +2020-03-06 05:00:00,92.61,191.81799999999998,42.423,32.166 +2020-03-06 05:15:00,88.55,224.35,42.423,32.166 +2020-03-06 05:30:00,92.57,219.692,42.423,32.166 +2020-03-06 05:45:00,95.18,211.36,42.423,32.166 +2020-03-06 06:00:00,105.52,209.019,55.38,32.166 +2020-03-06 06:15:00,109.46,213.859,55.38,32.166 +2020-03-06 06:30:00,110.06,214.83900000000003,55.38,32.166 +2020-03-06 06:45:00,112.44,219.50599999999997,55.38,32.166 +2020-03-06 07:00:00,119.09,221.028,65.929,32.166 +2020-03-06 07:15:00,120.34,225.11900000000003,65.929,32.166 +2020-03-06 07:30:00,122.16,224.828,65.929,32.166 +2020-03-06 07:45:00,120.89,222.30200000000002,65.929,32.166 +2020-03-06 08:00:00,121.85,219.385,57.336999999999996,32.166 +2020-03-06 08:15:00,119.68,217.25400000000002,57.336999999999996,32.166 +2020-03-06 08:30:00,118.65,213.497,57.336999999999996,32.166 +2020-03-06 08:45:00,117.07,207.47099999999998,57.336999999999996,32.166 +2020-03-06 09:00:00,115.36,200.05700000000002,54.226000000000006,32.166 +2020-03-06 09:15:00,114.99,197.328,54.226000000000006,32.166 +2020-03-06 09:30:00,115.37,195.553,54.226000000000006,32.166 +2020-03-06 09:45:00,113.84,192.722,54.226000000000006,32.166 +2020-03-06 10:00:00,112.66,188.787,51.298,32.166 +2020-03-06 10:15:00,112.59,186.301,51.298,32.166 +2020-03-06 10:30:00,112.69,183.907,51.298,32.166 +2020-03-06 10:45:00,112.62,182.697,51.298,32.166 +2020-03-06 11:00:00,113.85,179.75400000000002,50.839,32.166 +2020-03-06 11:15:00,114.18,178.215,50.839,32.166 +2020-03-06 11:30:00,118.13,179.46599999999998,50.839,32.166 +2020-03-06 11:45:00,115.78,178.99900000000002,50.839,32.166 +2020-03-06 12:00:00,110.8,174.774,47.976000000000006,32.166 +2020-03-06 12:15:00,112.96,172.933,47.976000000000006,32.166 +2020-03-06 12:30:00,107.04,172.435,47.976000000000006,32.166 +2020-03-06 12:45:00,113.31,173.696,47.976000000000006,32.166 +2020-03-06 13:00:00,113.56,174.122,46.299,32.166 +2020-03-06 13:15:00,112.83,173.34400000000002,46.299,32.166 +2020-03-06 13:30:00,105.26,171.96599999999998,46.299,32.166 +2020-03-06 13:45:00,104.96,171.417,46.299,32.166 +2020-03-06 14:00:00,107.2,171.88099999999997,44.971000000000004,32.166 +2020-03-06 14:15:00,110.28,171.00900000000001,44.971000000000004,32.166 +2020-03-06 14:30:00,113.01,171.803,44.971000000000004,32.166 +2020-03-06 14:45:00,113.67,172.955,44.971000000000004,32.166 +2020-03-06 15:00:00,114.93,174.264,47.48,32.166 +2020-03-06 15:15:00,115.31,172.56799999999998,47.48,32.166 +2020-03-06 15:30:00,123.49,171.176,47.48,32.166 +2020-03-06 15:45:00,122.8,171.57299999999998,47.48,32.166 +2020-03-06 16:00:00,120.52,173.84599999999998,50.648,32.166 +2020-03-06 16:15:00,118.33,175.97,50.648,32.166 +2020-03-06 16:30:00,123.41,178.06799999999998,50.648,32.166 +2020-03-06 16:45:00,122.27,178.315,50.648,32.166 +2020-03-06 17:00:00,123.95,181.48,56.251000000000005,32.166 +2020-03-06 17:15:00,125.14,183.697,56.251000000000005,32.166 +2020-03-06 17:30:00,127.64,186.27200000000002,56.251000000000005,32.166 +2020-03-06 17:45:00,129.37,187.075,56.251000000000005,32.166 +2020-03-06 18:00:00,132.2,190.96,58.982,32.166 +2020-03-06 18:15:00,134.17,191.049,58.982,32.166 +2020-03-06 18:30:00,139.97,189.84,58.982,32.166 +2020-03-06 18:45:00,137.26,191.862,58.982,32.166 +2020-03-06 19:00:00,138.5,191.671,57.293,32.166 +2020-03-06 19:15:00,136.65,190.049,57.293,32.166 +2020-03-06 19:30:00,132.19,188.83900000000003,57.293,32.166 +2020-03-06 19:45:00,128.54,185.19400000000002,57.293,32.166 +2020-03-06 20:00:00,118.1,179.83599999999998,59.433,32.166 +2020-03-06 20:15:00,120.22,174.738,59.433,32.166 +2020-03-06 20:30:00,116.22,170.981,59.433,32.166 +2020-03-06 20:45:00,116.32,168.983,59.433,32.166 +2020-03-06 21:00:00,108.24,166.416,52.153999999999996,32.166 +2020-03-06 21:15:00,107.96,163.793,52.153999999999996,32.166 +2020-03-06 21:30:00,103.98,161.531,52.153999999999996,32.166 +2020-03-06 21:45:00,100.92,161.953,52.153999999999996,32.166 +2020-03-06 22:00:00,101.26,155.461,47.125,32.166 +2020-03-06 22:15:00,98.2,151.312,47.125,32.166 +2020-03-06 22:30:00,91.48,142.222,47.125,32.166 +2020-03-06 22:45:00,86.47,138.014,47.125,32.166 +2020-03-06 23:00:00,80.32,131.118,41.236000000000004,32.166 +2020-03-06 23:15:00,86.56,127.30799999999999,41.236000000000004,32.166 +2020-03-06 23:30:00,86.05,127.225,41.236000000000004,32.166 +2020-03-06 23:45:00,84.17,126.74600000000001,41.236000000000004,32.166 +2020-03-07 00:00:00,73.36,112.361,36.484,31.988000000000003 +2020-03-07 00:15:00,72.69,106.662,36.484,31.988000000000003 +2020-03-07 00:30:00,73.63,106.99600000000001,36.484,31.988000000000003 +2020-03-07 00:45:00,79.66,107.662,36.484,31.988000000000003 +2020-03-07 01:00:00,75.3,109.476,32.391999999999996,31.988000000000003 +2020-03-07 01:15:00,77.06,109.846,32.391999999999996,31.988000000000003 +2020-03-07 01:30:00,71.97,109.189,32.391999999999996,31.988000000000003 +2020-03-07 01:45:00,68.58,109.354,32.391999999999996,31.988000000000003 +2020-03-07 02:00:00,73.65,112.00200000000001,30.194000000000003,31.988000000000003 +2020-03-07 02:15:00,74.65,112.369,30.194000000000003,31.988000000000003 +2020-03-07 02:30:00,69.35,112.65100000000001,30.194000000000003,31.988000000000003 +2020-03-07 02:45:00,68.86,114.555,30.194000000000003,31.988000000000003 +2020-03-07 03:00:00,66.7,116.7,29.677,31.988000000000003 +2020-03-07 03:15:00,65.75,117.959,29.677,31.988000000000003 +2020-03-07 03:30:00,70.1,118.37299999999999,29.677,31.988000000000003 +2020-03-07 03:45:00,72.68,120.28200000000001,29.677,31.988000000000003 +2020-03-07 04:00:00,68.24,129.653,29.616,31.988000000000003 +2020-03-07 04:15:00,67.2,139.745,29.616,31.988000000000003 +2020-03-07 04:30:00,67.39,139.829,29.616,31.988000000000003 +2020-03-07 04:45:00,67.69,140.015,29.616,31.988000000000003 +2020-03-07 05:00:00,67.99,156.97299999999998,29.625,31.988000000000003 +2020-03-07 05:15:00,67.86,169.953,29.625,31.988000000000003 +2020-03-07 05:30:00,67.93,165.817,29.625,31.988000000000003 +2020-03-07 05:45:00,70.0,163.291,29.625,31.988000000000003 +2020-03-07 06:00:00,71.25,180.298,30.551,31.988000000000003 +2020-03-07 06:15:00,72.04,201.768,30.551,31.988000000000003 +2020-03-07 06:30:00,72.04,197.2,30.551,31.988000000000003 +2020-03-07 06:45:00,72.96,192.865,30.551,31.988000000000003 +2020-03-07 07:00:00,76.51,190.575,34.865,31.988000000000003 +2020-03-07 07:15:00,78.94,193.25799999999998,34.865,31.988000000000003 +2020-03-07 07:30:00,81.32,195.71099999999998,34.865,31.988000000000003 +2020-03-07 07:45:00,83.9,197.054,34.865,31.988000000000003 +2020-03-07 08:00:00,88.57,197.97299999999998,41.456,31.988000000000003 +2020-03-07 08:15:00,89.24,199.271,41.456,31.988000000000003 +2020-03-07 08:30:00,90.68,196.99599999999998,41.456,31.988000000000003 +2020-03-07 08:45:00,94.24,194.13099999999997,41.456,31.988000000000003 +2020-03-07 09:00:00,96.14,188.805,43.001999999999995,31.988000000000003 +2020-03-07 09:15:00,98.61,186.863,43.001999999999995,31.988000000000003 +2020-03-07 09:30:00,102.12,186.041,43.001999999999995,31.988000000000003 +2020-03-07 09:45:00,98.59,183.317,43.001999999999995,31.988000000000003 +2020-03-07 10:00:00,95.01,179.757,42.047,31.988000000000003 +2020-03-07 10:15:00,98.58,177.519,42.047,31.988000000000003 +2020-03-07 10:30:00,95.97,175.25900000000001,42.047,31.988000000000003 +2020-03-07 10:45:00,94.89,175.265,42.047,31.988000000000003 +2020-03-07 11:00:00,95.66,172.479,39.894,31.988000000000003 +2020-03-07 11:15:00,96.05,170.417,39.894,31.988000000000003 +2020-03-07 11:30:00,95.32,170.642,39.894,31.988000000000003 +2020-03-07 11:45:00,95.01,169.364,39.894,31.988000000000003 +2020-03-07 12:00:00,95.78,164.368,38.122,31.988000000000003 +2020-03-07 12:15:00,92.41,163.267,38.122,31.988000000000003 +2020-03-07 12:30:00,86.18,163.02,38.122,31.988000000000003 +2020-03-07 12:45:00,85.12,163.636,38.122,31.988000000000003 +2020-03-07 13:00:00,87.26,163.61,34.645,31.988000000000003 +2020-03-07 13:15:00,86.32,160.77,34.645,31.988000000000003 +2020-03-07 13:30:00,84.06,158.97299999999998,34.645,31.988000000000003 +2020-03-07 13:45:00,83.33,158.702,34.645,31.988000000000003 +2020-03-07 14:00:00,77.3,160.404,33.739000000000004,31.988000000000003 +2020-03-07 14:15:00,74.26,158.83,33.739000000000004,31.988000000000003 +2020-03-07 14:30:00,74.73,157.79399999999998,33.739000000000004,31.988000000000003 +2020-03-07 14:45:00,79.24,159.227,33.739000000000004,31.988000000000003 +2020-03-07 15:00:00,79.87,161.2,35.908,31.988000000000003 +2020-03-07 15:15:00,82.29,160.34,35.908,31.988000000000003 +2020-03-07 15:30:00,82.88,160.406,35.908,31.988000000000003 +2020-03-07 15:45:00,83.16,160.681,35.908,31.988000000000003 +2020-03-07 16:00:00,82.92,162.039,39.249,31.988000000000003 +2020-03-07 16:15:00,82.39,164.894,39.249,31.988000000000003 +2020-03-07 16:30:00,84.42,166.97,39.249,31.988000000000003 +2020-03-07 16:45:00,86.48,168.02700000000002,39.249,31.988000000000003 +2020-03-07 17:00:00,89.54,170.46900000000002,46.045,31.988000000000003 +2020-03-07 17:15:00,90.25,174.037,46.045,31.988000000000003 +2020-03-07 17:30:00,93.17,176.52700000000002,46.045,31.988000000000003 +2020-03-07 17:45:00,96.07,177.01,46.045,31.988000000000003 +2020-03-07 18:00:00,104.2,180.562,48.238,31.988000000000003 +2020-03-07 18:15:00,106.48,182.665,48.238,31.988000000000003 +2020-03-07 18:30:00,104.75,182.90599999999998,48.238,31.988000000000003 +2020-03-07 18:45:00,105.22,181.287,48.238,31.988000000000003 +2020-03-07 19:00:00,104.77,181.752,46.785,31.988000000000003 +2020-03-07 19:15:00,101.74,179.548,46.785,31.988000000000003 +2020-03-07 19:30:00,103.23,179.188,46.785,31.988000000000003 +2020-03-07 19:45:00,99.14,175.61599999999999,46.785,31.988000000000003 +2020-03-07 20:00:00,94.25,172.472,39.830999999999996,31.988000000000003 +2020-03-07 20:15:00,90.48,169.38,39.830999999999996,31.988000000000003 +2020-03-07 20:30:00,88.69,165.206,39.830999999999996,31.988000000000003 +2020-03-07 20:45:00,89.27,163.041,39.830999999999996,31.988000000000003 +2020-03-07 21:00:00,82.31,162.475,34.063,31.988000000000003 +2020-03-07 21:15:00,82.13,160.234,34.063,31.988000000000003 +2020-03-07 21:30:00,81.1,159.189,34.063,31.988000000000003 +2020-03-07 21:45:00,79.97,159.173,34.063,31.988000000000003 +2020-03-07 22:00:00,79.99,153.97299999999998,34.455999999999996,31.988000000000003 +2020-03-07 22:15:00,77.88,152.298,34.455999999999996,31.988000000000003 +2020-03-07 22:30:00,73.56,149.155,34.455999999999996,31.988000000000003 +2020-03-07 22:45:00,72.67,146.81,34.455999999999996,31.988000000000003 +2020-03-07 23:00:00,68.96,142.2,27.840999999999998,31.988000000000003 +2020-03-07 23:15:00,69.09,136.869,27.840999999999998,31.988000000000003 +2020-03-07 23:30:00,65.76,135.38299999999998,27.840999999999998,31.988000000000003 +2020-03-07 23:45:00,64.86,132.614,27.840999999999998,31.988000000000003 +2020-03-08 00:00:00,61.0,112.605,20.007,31.988000000000003 +2020-03-08 00:15:00,61.21,106.455,20.007,31.988000000000003 +2020-03-08 00:30:00,60.15,106.39200000000001,20.007,31.988000000000003 +2020-03-08 00:45:00,60.07,107.709,20.007,31.988000000000003 +2020-03-08 01:00:00,56.47,109.37899999999999,17.378,31.988000000000003 +2020-03-08 01:15:00,57.99,110.706,17.378,31.988000000000003 +2020-03-08 01:30:00,57.0,110.509,17.378,31.988000000000003 +2020-03-08 01:45:00,57.02,110.329,17.378,31.988000000000003 +2020-03-08 02:00:00,55.64,112.262,16.145,31.988000000000003 +2020-03-08 02:15:00,56.91,111.91,16.145,31.988000000000003 +2020-03-08 02:30:00,56.07,113.05,16.145,31.988000000000003 +2020-03-08 02:45:00,56.9,115.353,16.145,31.988000000000003 +2020-03-08 03:00:00,55.26,117.9,15.427999999999999,31.988000000000003 +2020-03-08 03:15:00,55.5,118.68299999999999,15.427999999999999,31.988000000000003 +2020-03-08 03:30:00,53.73,120.31200000000001,15.427999999999999,31.988000000000003 +2020-03-08 03:45:00,55.64,122.04700000000001,15.427999999999999,31.988000000000003 +2020-03-08 04:00:00,55.63,131.18200000000002,16.663,31.988000000000003 +2020-03-08 04:15:00,54.6,140.243,16.663,31.988000000000003 +2020-03-08 04:30:00,57.94,140.602,16.663,31.988000000000003 +2020-03-08 04:45:00,58.3,140.964,16.663,31.988000000000003 +2020-03-08 05:00:00,57.65,154.621,17.271,31.988000000000003 +2020-03-08 05:15:00,59.1,165.231,17.271,31.988000000000003 +2020-03-08 05:30:00,56.61,160.846,17.271,31.988000000000003 +2020-03-08 05:45:00,59.93,158.515,17.271,31.988000000000003 +2020-03-08 06:00:00,60.8,175.07299999999998,17.612000000000002,31.988000000000003 +2020-03-08 06:15:00,60.98,195.047,17.612000000000002,31.988000000000003 +2020-03-08 06:30:00,59.58,189.28799999999998,17.612000000000002,31.988000000000003 +2020-03-08 06:45:00,60.73,183.79,17.612000000000002,31.988000000000003 +2020-03-08 07:00:00,64.07,183.87099999999998,20.88,31.988000000000003 +2020-03-08 07:15:00,64.46,185.475,20.88,31.988000000000003 +2020-03-08 07:30:00,67.14,186.912,20.88,31.988000000000003 +2020-03-08 07:45:00,68.83,187.49099999999999,20.88,31.988000000000003 +2020-03-08 08:00:00,70.55,190.217,25.861,31.988000000000003 +2020-03-08 08:15:00,68.92,191.58599999999998,25.861,31.988000000000003 +2020-03-08 08:30:00,68.33,190.949,25.861,31.988000000000003 +2020-03-08 08:45:00,68.61,190.00599999999997,25.861,31.988000000000003 +2020-03-08 09:00:00,68.42,184.287,27.921999999999997,31.988000000000003 +2020-03-08 09:15:00,68.88,182.803,27.921999999999997,31.988000000000003 +2020-03-08 09:30:00,66.98,181.915,27.921999999999997,31.988000000000003 +2020-03-08 09:45:00,66.66,179.234,27.921999999999997,31.988000000000003 +2020-03-08 10:00:00,63.08,178.157,29.048000000000002,31.988000000000003 +2020-03-08 10:15:00,65.17,176.486,29.048000000000002,31.988000000000003 +2020-03-08 10:30:00,66.69,174.85,29.048000000000002,31.988000000000003 +2020-03-08 10:45:00,68.39,173.22299999999998,29.048000000000002,31.988000000000003 +2020-03-08 11:00:00,71.32,171.245,32.02,31.988000000000003 +2020-03-08 11:15:00,68.73,169.267,32.02,31.988000000000003 +2020-03-08 11:30:00,77.87,168.745,32.02,31.988000000000003 +2020-03-08 11:45:00,71.63,168.09599999999998,32.02,31.988000000000003 +2020-03-08 12:00:00,69.65,162.733,28.55,31.988000000000003 +2020-03-08 12:15:00,64.14,163.364,28.55,31.988000000000003 +2020-03-08 12:30:00,62.02,161.72799999999998,28.55,31.988000000000003 +2020-03-08 12:45:00,62.53,161.333,28.55,31.988000000000003 +2020-03-08 13:00:00,59.46,160.626,25.601999999999997,31.988000000000003 +2020-03-08 13:15:00,59.09,160.545,25.601999999999997,31.988000000000003 +2020-03-08 13:30:00,59.19,158.379,25.601999999999997,31.988000000000003 +2020-03-08 13:45:00,58.93,157.644,25.601999999999997,31.988000000000003 +2020-03-08 14:00:00,57.84,159.814,23.916999999999998,31.988000000000003 +2020-03-08 14:15:00,58.46,159.417,23.916999999999998,31.988000000000003 +2020-03-08 14:30:00,62.93,159.34799999999998,23.916999999999998,31.988000000000003 +2020-03-08 14:45:00,64.38,160.249,23.916999999999998,31.988000000000003 +2020-03-08 15:00:00,64.9,160.799,24.064,31.988000000000003 +2020-03-08 15:15:00,65.65,160.517,24.064,31.988000000000003 +2020-03-08 15:30:00,65.05,161.069,24.064,31.988000000000003 +2020-03-08 15:45:00,64.57,162.025,24.064,31.988000000000003 +2020-03-08 16:00:00,67.33,164.97099999999998,28.189,31.988000000000003 +2020-03-08 16:15:00,68.58,166.96400000000003,28.189,31.988000000000003 +2020-03-08 16:30:00,68.93,169.421,28.189,31.988000000000003 +2020-03-08 16:45:00,71.27,170.572,28.189,31.988000000000003 +2020-03-08 17:00:00,75.95,173.09099999999998,37.576,31.988000000000003 +2020-03-08 17:15:00,76.2,176.542,37.576,31.988000000000003 +2020-03-08 17:30:00,80.05,179.435,37.576,31.988000000000003 +2020-03-08 17:45:00,83.25,182.171,37.576,31.988000000000003 +2020-03-08 18:00:00,91.18,185.28900000000002,42.669,31.988000000000003 +2020-03-08 18:15:00,96.39,188.69400000000002,42.669,31.988000000000003 +2020-03-08 18:30:00,101.38,186.88299999999998,42.669,31.988000000000003 +2020-03-08 18:45:00,99.75,187.09,42.669,31.988000000000003 +2020-03-08 19:00:00,97.87,187.46400000000003,43.538999999999994,31.988000000000003 +2020-03-08 19:15:00,93.75,185.72400000000002,43.538999999999994,31.988000000000003 +2020-03-08 19:30:00,94.16,185.204,43.538999999999994,31.988000000000003 +2020-03-08 19:45:00,89.68,183.025,43.538999999999994,31.988000000000003 +2020-03-08 20:00:00,86.68,179.81799999999998,37.330999999999996,31.988000000000003 +2020-03-08 20:15:00,86.27,177.678,37.330999999999996,31.988000000000003 +2020-03-08 20:30:00,83.87,174.827,37.330999999999996,31.988000000000003 +2020-03-08 20:45:00,83.17,171.297,37.330999999999996,31.988000000000003 +2020-03-08 21:00:00,79.53,168.202,33.856,31.988000000000003 +2020-03-08 21:15:00,80.3,165.315,33.856,31.988000000000003 +2020-03-08 21:30:00,80.55,164.47400000000002,33.856,31.988000000000003 +2020-03-08 21:45:00,85.28,164.655,33.856,31.988000000000003 +2020-03-08 22:00:00,87.48,158.54,34.711999999999996,31.988000000000003 +2020-03-08 22:15:00,88.51,155.951,34.711999999999996,31.988000000000003 +2020-03-08 22:30:00,83.88,149.629,34.711999999999996,31.988000000000003 +2020-03-08 22:45:00,79.79,146.309,34.711999999999996,31.988000000000003 +2020-03-08 23:00:00,77.62,138.95,29.698,31.988000000000003 +2020-03-08 23:15:00,82.04,135.591,29.698,31.988000000000003 +2020-03-08 23:30:00,82.56,134.83100000000002,29.698,31.988000000000003 +2020-03-08 23:45:00,79.6,132.972,29.698,31.988000000000003 +2020-03-09 00:00:00,69.92,116.464,29.983,32.166 +2020-03-09 00:15:00,69.51,113.265,29.983,32.166 +2020-03-09 00:30:00,71.32,113.25399999999999,29.983,32.166 +2020-03-09 00:45:00,76.73,114.006,29.983,32.166 +2020-03-09 01:00:00,74.19,115.686,29.122,32.166 +2020-03-09 01:15:00,73.87,116.49700000000001,29.122,32.166 +2020-03-09 01:30:00,67.47,116.385,29.122,32.166 +2020-03-09 01:45:00,74.37,116.307,29.122,32.166 +2020-03-09 02:00:00,73.55,118.26100000000001,28.676,32.166 +2020-03-09 02:15:00,73.53,119.147,28.676,32.166 +2020-03-09 02:30:00,68.13,120.645,28.676,32.166 +2020-03-09 02:45:00,75.19,122.339,28.676,32.166 +2020-03-09 03:00:00,75.27,126.15799999999999,26.552,32.166 +2020-03-09 03:15:00,74.56,128.586,26.552,32.166 +2020-03-09 03:30:00,73.02,130.048,26.552,32.166 +2020-03-09 03:45:00,77.49,131.209,26.552,32.166 +2020-03-09 04:00:00,77.93,144.89,27.44,32.166 +2020-03-09 04:15:00,76.54,158.27700000000002,27.44,32.166 +2020-03-09 04:30:00,74.57,160.655,27.44,32.166 +2020-03-09 04:45:00,74.33,161.21,27.44,32.166 +2020-03-09 05:00:00,77.36,190.71,36.825,32.166 +2020-03-09 05:15:00,83.26,221.83599999999998,36.825,32.166 +2020-03-09 05:30:00,86.0,217.45,36.825,32.166 +2020-03-09 05:45:00,90.09,209.351,36.825,32.166 +2020-03-09 06:00:00,98.46,207.56799999999998,56.589,32.166 +2020-03-09 06:15:00,105.15,212.236,56.589,32.166 +2020-03-09 06:30:00,108.02,214.56799999999998,56.589,32.166 +2020-03-09 06:45:00,110.16,218.112,56.589,32.166 +2020-03-09 07:00:00,117.31,220.562,67.49,32.166 +2020-03-09 07:15:00,118.79,223.637,67.49,32.166 +2020-03-09 07:30:00,122.33,224.175,67.49,32.166 +2020-03-09 07:45:00,125.44,222.329,67.49,32.166 +2020-03-09 08:00:00,129.3,220.19400000000002,60.028,32.166 +2020-03-09 08:15:00,131.05,219.35,60.028,32.166 +2020-03-09 08:30:00,131.67,214.641,60.028,32.166 +2020-03-09 08:45:00,131.5,210.576,60.028,32.166 +2020-03-09 09:00:00,130.44,203.824,55.018,32.166 +2020-03-09 09:15:00,134.15,198.77900000000002,55.018,32.166 +2020-03-09 09:30:00,133.09,196.834,55.018,32.166 +2020-03-09 09:45:00,134.3,194.14,55.018,32.166 +2020-03-09 10:00:00,134.13,192.09400000000002,51.183,32.166 +2020-03-09 10:15:00,134.12,190.137,51.183,32.166 +2020-03-09 10:30:00,134.67,187.627,51.183,32.166 +2020-03-09 10:45:00,135.0,186.516,51.183,32.166 +2020-03-09 11:00:00,136.7,182.109,50.065,32.166 +2020-03-09 11:15:00,135.2,181.91099999999997,50.065,32.166 +2020-03-09 11:30:00,135.31,182.80700000000002,50.065,32.166 +2020-03-09 11:45:00,135.27,181.85299999999998,50.065,32.166 +2020-03-09 12:00:00,136.04,177.92700000000002,48.141999999999996,32.166 +2020-03-09 12:15:00,132.64,178.58700000000002,48.141999999999996,32.166 +2020-03-09 12:30:00,129.11,177.00799999999998,48.141999999999996,32.166 +2020-03-09 12:45:00,129.79,178.063,48.141999999999996,32.166 +2020-03-09 13:00:00,129.66,178.076,47.887,32.166 +2020-03-09 13:15:00,129.83,176.532,47.887,32.166 +2020-03-09 13:30:00,129.35,173.873,47.887,32.166 +2020-03-09 13:45:00,131.32,173.292,47.887,32.166 +2020-03-09 14:00:00,126.29,174.843,48.571000000000005,32.166 +2020-03-09 14:15:00,126.44,173.885,48.571000000000005,32.166 +2020-03-09 14:30:00,128.22,173.24599999999998,48.571000000000005,32.166 +2020-03-09 14:45:00,126.5,174.40099999999998,48.571000000000005,32.166 +2020-03-09 15:00:00,128.64,176.653,49.937,32.166 +2020-03-09 15:15:00,125.18,174.889,49.937,32.166 +2020-03-09 15:30:00,124.09,174.695,49.937,32.166 +2020-03-09 15:45:00,123.67,175.143,49.937,32.166 +2020-03-09 16:00:00,123.86,178.435,52.963,32.166 +2020-03-09 16:15:00,124.07,179.68099999999998,52.963,32.166 +2020-03-09 16:30:00,120.57,181.12400000000002,52.963,32.166 +2020-03-09 16:45:00,120.89,181.093,52.963,32.166 +2020-03-09 17:00:00,124.22,183.347,61.163999999999994,32.166 +2020-03-09 17:15:00,125.08,185.929,61.163999999999994,32.166 +2020-03-09 17:30:00,129.2,188.269,61.163999999999994,32.166 +2020-03-09 17:45:00,128.13,189.52599999999998,61.163999999999994,32.166 +2020-03-09 18:00:00,133.54,192.96599999999998,63.788999999999994,32.166 +2020-03-09 18:15:00,133.96,194.083,63.788999999999994,32.166 +2020-03-09 18:30:00,130.46,192.81599999999997,63.788999999999994,32.166 +2020-03-09 18:45:00,129.43,194.101,63.788999999999994,32.166 +2020-03-09 19:00:00,129.65,192.855,63.913000000000004,32.166 +2020-03-09 19:15:00,125.51,190.139,63.913000000000004,32.166 +2020-03-09 19:30:00,133.89,190.092,63.913000000000004,32.166 +2020-03-09 19:45:00,132.07,187.08,63.913000000000004,32.166 +2020-03-09 20:00:00,119.33,181.389,65.44,32.166 +2020-03-09 20:15:00,115.81,177.02200000000002,65.44,32.166 +2020-03-09 20:30:00,115.88,172.455,65.44,32.166 +2020-03-09 20:45:00,115.72,170.53,65.44,32.166 +2020-03-09 21:00:00,105.11,167.868,59.117,32.166 +2020-03-09 21:15:00,99.97,163.887,59.117,32.166 +2020-03-09 21:30:00,98.25,162.292,59.117,32.166 +2020-03-09 21:45:00,97.32,161.97799999999998,59.117,32.166 +2020-03-09 22:00:00,92.52,152.808,52.301,32.166 +2020-03-09 22:15:00,93.86,149.191,52.301,32.166 +2020-03-09 22:30:00,94.64,133.034,52.301,32.166 +2020-03-09 22:45:00,93.49,125.016,52.301,32.166 +2020-03-09 23:00:00,89.93,118.40299999999999,44.373000000000005,32.166 +2020-03-09 23:15:00,83.28,117.455,44.373000000000005,32.166 +2020-03-09 23:30:00,82.01,119.383,44.373000000000005,32.166 +2020-03-09 23:45:00,79.61,120.059,44.373000000000005,32.166 +2020-03-10 00:00:00,79.63,115.156,44.647,32.166 +2020-03-10 00:15:00,81.95,113.444,44.647,32.166 +2020-03-10 00:30:00,80.93,112.60600000000001,44.647,32.166 +2020-03-10 00:45:00,77.16,112.525,44.647,32.166 +2020-03-10 01:00:00,70.56,113.905,41.433,32.166 +2020-03-10 01:15:00,76.76,114.289,41.433,32.166 +2020-03-10 01:30:00,76.51,114.307,41.433,32.166 +2020-03-10 01:45:00,79.3,114.46,41.433,32.166 +2020-03-10 02:00:00,73.31,116.336,39.909,32.166 +2020-03-10 02:15:00,73.05,117.262,39.909,32.166 +2020-03-10 02:30:00,69.81,118.15700000000001,39.909,32.166 +2020-03-10 02:45:00,71.57,119.90700000000001,39.909,32.166 +2020-03-10 03:00:00,71.1,122.52,39.14,32.166 +2020-03-10 03:15:00,78.8,124.244,39.14,32.166 +2020-03-10 03:30:00,81.43,126.156,39.14,32.166 +2020-03-10 03:45:00,78.81,127.365,39.14,32.166 +2020-03-10 04:00:00,75.34,140.69799999999998,40.015,32.166 +2020-03-10 04:15:00,74.56,153.744,40.015,32.166 +2020-03-10 04:30:00,80.72,155.83,40.015,32.166 +2020-03-10 04:45:00,85.85,157.588,40.015,32.166 +2020-03-10 05:00:00,89.69,192.037,44.93600000000001,32.166 +2020-03-10 05:15:00,87.41,223.071,44.93600000000001,32.166 +2020-03-10 05:30:00,94.15,217.21900000000002,44.93600000000001,32.166 +2020-03-10 05:45:00,99.31,209.03400000000002,44.93600000000001,32.166 +2020-03-10 06:00:00,108.19,206.273,57.271,32.166 +2020-03-10 06:15:00,106.67,212.52,57.271,32.166 +2020-03-10 06:30:00,105.56,214.145,57.271,32.166 +2020-03-10 06:45:00,110.72,217.18900000000002,57.271,32.166 +2020-03-10 07:00:00,114.85,219.50599999999997,68.352,32.166 +2020-03-10 07:15:00,122.4,222.36,68.352,32.166 +2020-03-10 07:30:00,126.34,222.338,68.352,32.166 +2020-03-10 07:45:00,126.87,220.52700000000002,68.352,32.166 +2020-03-10 08:00:00,121.17,218.46200000000002,60.717,32.166 +2020-03-10 08:15:00,121.73,216.57,60.717,32.166 +2020-03-10 08:30:00,123.57,211.655,60.717,32.166 +2020-03-10 08:45:00,119.88,207.236,60.717,32.166 +2020-03-10 09:00:00,120.24,199.739,54.603,32.166 +2020-03-10 09:15:00,125.53,196.215,54.603,32.166 +2020-03-10 09:30:00,125.18,195.02900000000002,54.603,32.166 +2020-03-10 09:45:00,117.63,192.30599999999998,54.603,32.166 +2020-03-10 10:00:00,122.65,189.53900000000002,52.308,32.166 +2020-03-10 10:15:00,122.53,186.588,52.308,32.166 +2020-03-10 10:30:00,122.83,184.278,52.308,32.166 +2020-03-10 10:45:00,123.85,183.583,52.308,32.166 +2020-03-10 11:00:00,124.85,180.6,51.838,32.166 +2020-03-10 11:15:00,124.63,180.15099999999998,51.838,32.166 +2020-03-10 11:30:00,120.0,179.793,51.838,32.166 +2020-03-10 11:45:00,112.97,179.477,51.838,32.166 +2020-03-10 12:00:00,116.62,174.23,50.375,32.166 +2020-03-10 12:15:00,124.04,174.543,50.375,32.166 +2020-03-10 12:30:00,134.05,173.727,50.375,32.166 +2020-03-10 12:45:00,127.79,174.581,50.375,32.166 +2020-03-10 13:00:00,126.21,174.203,50.735,32.166 +2020-03-10 13:15:00,131.91,172.525,50.735,32.166 +2020-03-10 13:30:00,125.28,170.977,50.735,32.166 +2020-03-10 13:45:00,123.2,170.459,50.735,32.166 +2020-03-10 14:00:00,122.54,172.40599999999998,50.946000000000005,32.166 +2020-03-10 14:15:00,121.23,171.549,50.946000000000005,32.166 +2020-03-10 14:30:00,124.05,171.524,50.946000000000005,32.166 +2020-03-10 14:45:00,124.51,172.513,50.946000000000005,32.166 +2020-03-10 15:00:00,131.26,174.335,53.18,32.166 +2020-03-10 15:15:00,123.68,172.97299999999998,53.18,32.166 +2020-03-10 15:30:00,117.32,172.918,53.18,32.166 +2020-03-10 15:45:00,118.3,173.00099999999998,53.18,32.166 +2020-03-10 16:00:00,122.14,176.535,54.928999999999995,32.166 +2020-03-10 16:15:00,120.8,178.231,54.928999999999995,32.166 +2020-03-10 16:30:00,123.17,180.257,54.928999999999995,32.166 +2020-03-10 16:45:00,120.87,180.545,54.928999999999995,32.166 +2020-03-10 17:00:00,119.71,183.364,60.913000000000004,32.166 +2020-03-10 17:15:00,128.27,186.02700000000002,60.913000000000004,32.166 +2020-03-10 17:30:00,128.23,188.989,60.913000000000004,32.166 +2020-03-10 17:45:00,132.22,190.09599999999998,60.913000000000004,32.166 +2020-03-10 18:00:00,133.86,193.33900000000003,62.214,32.166 +2020-03-10 18:15:00,138.61,194.197,62.214,32.166 +2020-03-10 18:30:00,141.3,192.59599999999998,62.214,32.166 +2020-03-10 18:45:00,137.8,194.65900000000002,62.214,32.166 +2020-03-10 19:00:00,133.97,193.333,62.38,32.166 +2020-03-10 19:15:00,133.09,190.37900000000002,62.38,32.166 +2020-03-10 19:30:00,134.88,189.68400000000003,62.38,32.166 +2020-03-10 19:45:00,130.24,186.79,62.38,32.166 +2020-03-10 20:00:00,124.19,181.265,65.018,32.166 +2020-03-10 20:15:00,120.85,176.13299999999998,65.018,32.166 +2020-03-10 20:30:00,119.04,172.58599999999998,65.018,32.166 +2020-03-10 20:45:00,115.01,170.15200000000002,65.018,32.166 +2020-03-10 21:00:00,110.97,166.892,56.416000000000004,32.166 +2020-03-10 21:15:00,109.67,163.63299999999998,56.416000000000004,32.166 +2020-03-10 21:30:00,108.54,161.345,56.416000000000004,32.166 +2020-03-10 21:45:00,105.86,161.29399999999998,56.416000000000004,32.166 +2020-03-10 22:00:00,98.25,153.8,52.846000000000004,32.166 +2020-03-10 22:15:00,100.43,149.92,52.846000000000004,32.166 +2020-03-10 22:30:00,97.18,133.826,52.846000000000004,32.166 +2020-03-10 22:45:00,91.4,126.08,52.846000000000004,32.166 +2020-03-10 23:00:00,89.03,119.40799999999999,44.435,32.166 +2020-03-10 23:15:00,91.06,117.764,44.435,32.166 +2020-03-10 23:30:00,88.04,119.34700000000001,44.435,32.166 +2020-03-10 23:45:00,81.48,119.641,44.435,32.166 +2020-03-11 00:00:00,75.53,114.79700000000001,42.527,32.166 +2020-03-11 00:15:00,80.59,113.096,42.527,32.166 +2020-03-11 00:30:00,83.26,112.241,42.527,32.166 +2020-03-11 00:45:00,83.5,112.162,42.527,32.166 +2020-03-11 01:00:00,75.29,113.49700000000001,38.655,32.166 +2020-03-11 01:15:00,74.08,113.866,38.655,32.166 +2020-03-11 01:30:00,75.7,113.865,38.655,32.166 +2020-03-11 01:45:00,74.92,114.025,38.655,32.166 +2020-03-11 02:00:00,74.13,115.889,36.912,32.166 +2020-03-11 02:15:00,81.05,116.80799999999999,36.912,32.166 +2020-03-11 02:30:00,80.33,117.723,36.912,32.166 +2020-03-11 02:45:00,79.51,119.47200000000001,36.912,32.166 +2020-03-11 03:00:00,75.06,122.09899999999999,36.98,32.166 +2020-03-11 03:15:00,75.42,123.804,36.98,32.166 +2020-03-11 03:30:00,76.42,125.709,36.98,32.166 +2020-03-11 03:45:00,80.52,126.93299999999999,36.98,32.166 +2020-03-11 04:00:00,84.62,140.27200000000002,38.052,32.166 +2020-03-11 04:15:00,85.72,153.308,38.052,32.166 +2020-03-11 04:30:00,81.45,155.411,38.052,32.166 +2020-03-11 04:45:00,84.39,157.156,38.052,32.166 +2020-03-11 05:00:00,91.07,191.585,42.455,32.166 +2020-03-11 05:15:00,95.13,222.638,42.455,32.166 +2020-03-11 05:30:00,98.48,216.752,42.455,32.166 +2020-03-11 05:45:00,96.19,208.571,42.455,32.166 +2020-03-11 06:00:00,104.58,205.817,57.986000000000004,32.166 +2020-03-11 06:15:00,107.88,212.06900000000002,57.986000000000004,32.166 +2020-03-11 06:30:00,110.59,213.645,57.986000000000004,32.166 +2020-03-11 06:45:00,113.78,216.666,57.986000000000004,32.166 +2020-03-11 07:00:00,118.72,219.00400000000002,71.868,32.166 +2020-03-11 07:15:00,127.45,221.824,71.868,32.166 +2020-03-11 07:30:00,131.59,221.76,71.868,32.166 +2020-03-11 07:45:00,132.28,219.90900000000002,71.868,32.166 +2020-03-11 08:00:00,129.65,217.81900000000002,62.225,32.166 +2020-03-11 08:15:00,131.66,215.915,62.225,32.166 +2020-03-11 08:30:00,130.64,210.942,62.225,32.166 +2020-03-11 08:45:00,131.27,206.542,62.225,32.166 +2020-03-11 09:00:00,134.97,199.05900000000003,58.802,32.166 +2020-03-11 09:15:00,139.13,195.53599999999997,58.802,32.166 +2020-03-11 09:30:00,141.53,194.37099999999998,58.802,32.166 +2020-03-11 09:45:00,138.32,191.662,58.802,32.166 +2020-03-11 10:00:00,134.68,188.90900000000002,54.122,32.166 +2020-03-11 10:15:00,135.2,186.00400000000002,54.122,32.166 +2020-03-11 10:30:00,134.26,183.71599999999998,54.122,32.166 +2020-03-11 10:45:00,133.84,183.042,54.122,32.166 +2020-03-11 11:00:00,133.84,180.051,54.368,32.166 +2020-03-11 11:15:00,136.34,179.623,54.368,32.166 +2020-03-11 11:30:00,134.04,179.273,54.368,32.166 +2020-03-11 11:45:00,134.3,178.97400000000002,54.368,32.166 +2020-03-11 12:00:00,136.13,173.747,52.74,32.166 +2020-03-11 12:15:00,139.12,174.074,52.74,32.166 +2020-03-11 12:30:00,137.79,173.21900000000002,52.74,32.166 +2020-03-11 12:45:00,132.99,174.07,52.74,32.166 +2020-03-11 13:00:00,129.17,173.736,52.544,32.166 +2020-03-11 13:15:00,130.87,172.03599999999997,52.544,32.166 +2020-03-11 13:30:00,132.75,170.476,52.544,32.166 +2020-03-11 13:45:00,134.79,169.96099999999998,52.544,32.166 +2020-03-11 14:00:00,129.47,171.979,53.602,32.166 +2020-03-11 14:15:00,126.72,171.09799999999998,53.602,32.166 +2020-03-11 14:30:00,128.13,171.03900000000002,53.602,32.166 +2020-03-11 14:45:00,124.89,172.03799999999998,53.602,32.166 +2020-03-11 15:00:00,129.33,173.86900000000003,55.59,32.166 +2020-03-11 15:15:00,130.78,172.476,55.59,32.166 +2020-03-11 15:30:00,132.29,172.37,55.59,32.166 +2020-03-11 15:45:00,130.2,172.433,55.59,32.166 +2020-03-11 16:00:00,126.12,175.97400000000002,57.586999999999996,32.166 +2020-03-11 16:15:00,122.31,177.64700000000002,57.586999999999996,32.166 +2020-03-11 16:30:00,122.71,179.671,57.586999999999996,32.166 +2020-03-11 16:45:00,123.16,179.915,57.586999999999996,32.166 +2020-03-11 17:00:00,125.12,182.75099999999998,62.111999999999995,32.166 +2020-03-11 17:15:00,128.58,185.418,62.111999999999995,32.166 +2020-03-11 17:30:00,127.81,188.40200000000002,62.111999999999995,32.166 +2020-03-11 17:45:00,130.41,189.523,62.111999999999995,32.166 +2020-03-11 18:00:00,142.61,192.77200000000002,64.605,32.166 +2020-03-11 18:15:00,140.13,193.701,64.605,32.166 +2020-03-11 18:30:00,143.86,192.095,64.605,32.166 +2020-03-11 18:45:00,134.22,194.179,64.605,32.166 +2020-03-11 19:00:00,135.54,192.81400000000002,65.55199999999999,32.166 +2020-03-11 19:15:00,132.58,189.88,65.55199999999999,32.166 +2020-03-11 19:30:00,135.41,189.21400000000003,65.55199999999999,32.166 +2020-03-11 19:45:00,134.32,186.36900000000003,65.55199999999999,32.166 +2020-03-11 20:00:00,127.68,180.81099999999998,66.778,32.166 +2020-03-11 20:15:00,121.46,175.696,66.778,32.166 +2020-03-11 20:30:00,114.11,172.178,66.778,32.166 +2020-03-11 20:45:00,112.76,169.74599999999998,66.778,32.166 +2020-03-11 21:00:00,103.63,166.476,56.103,32.166 +2020-03-11 21:15:00,103.76,163.215,56.103,32.166 +2020-03-11 21:30:00,107.96,160.925,56.103,32.166 +2020-03-11 21:45:00,109.11,160.89700000000002,56.103,32.166 +2020-03-11 22:00:00,106.52,153.386,51.371,32.166 +2020-03-11 22:15:00,101.13,149.535,51.371,32.166 +2020-03-11 22:30:00,100.38,133.38299999999998,51.371,32.166 +2020-03-11 22:45:00,98.36,125.639,51.371,32.166 +2020-03-11 23:00:00,94.04,118.964,42.798,32.166 +2020-03-11 23:15:00,90.56,117.34100000000001,42.798,32.166 +2020-03-11 23:30:00,90.47,118.929,42.798,32.166 +2020-03-11 23:45:00,92.85,119.251,42.798,32.166 +2020-03-12 00:00:00,90.26,114.434,39.069,32.166 +2020-03-12 00:15:00,83.72,112.744,39.069,32.166 +2020-03-12 00:30:00,85.51,111.87,39.069,32.166 +2020-03-12 00:45:00,85.74,111.79299999999999,39.069,32.166 +2020-03-12 01:00:00,82.15,113.084,37.043,32.166 +2020-03-12 01:15:00,81.61,113.43700000000001,37.043,32.166 +2020-03-12 01:30:00,83.56,113.417,37.043,32.166 +2020-03-12 01:45:00,83.38,113.586,37.043,32.166 +2020-03-12 02:00:00,79.78,115.43700000000001,34.625,32.166 +2020-03-12 02:15:00,79.93,116.348,34.625,32.166 +2020-03-12 02:30:00,80.09,117.28200000000001,34.625,32.166 +2020-03-12 02:45:00,83.47,119.03299999999999,34.625,32.166 +2020-03-12 03:00:00,79.75,121.67200000000001,33.812,32.166 +2020-03-12 03:15:00,83.53,123.359,33.812,32.166 +2020-03-12 03:30:00,85.78,125.258,33.812,32.166 +2020-03-12 03:45:00,86.38,126.495,33.812,32.166 +2020-03-12 04:00:00,83.32,139.841,35.236999999999995,32.166 +2020-03-12 04:15:00,85.25,152.864,35.236999999999995,32.166 +2020-03-12 04:30:00,89.13,154.987,35.236999999999995,32.166 +2020-03-12 04:45:00,87.85,156.718,35.236999999999995,32.166 +2020-03-12 05:00:00,87.66,191.12900000000002,40.375,32.166 +2020-03-12 05:15:00,89.16,222.2,40.375,32.166 +2020-03-12 05:30:00,92.45,216.27900000000002,40.375,32.166 +2020-03-12 05:45:00,94.7,208.10299999999998,40.375,32.166 +2020-03-12 06:00:00,106.37,205.355,52.316,32.166 +2020-03-12 06:15:00,109.43,211.613,52.316,32.166 +2020-03-12 06:30:00,110.52,213.139,52.316,32.166 +2020-03-12 06:45:00,112.03,216.136,52.316,32.166 +2020-03-12 07:00:00,115.95,218.495,64.115,32.166 +2020-03-12 07:15:00,118.25,221.282,64.115,32.166 +2020-03-12 07:30:00,121.19,221.176,64.115,32.166 +2020-03-12 07:45:00,121.25,219.28400000000002,64.115,32.166 +2020-03-12 08:00:00,121.28,217.168,55.033,32.166 +2020-03-12 08:15:00,120.35,215.253,55.033,32.166 +2020-03-12 08:30:00,121.03,210.222,55.033,32.166 +2020-03-12 08:45:00,122.01,205.84099999999998,55.033,32.166 +2020-03-12 09:00:00,121.47,198.373,49.411,32.166 +2020-03-12 09:15:00,118.49,194.851,49.411,32.166 +2020-03-12 09:30:00,119.35,193.707,49.411,32.166 +2020-03-12 09:45:00,117.69,191.012,49.411,32.166 +2020-03-12 10:00:00,118.5,188.274,45.82899999999999,32.166 +2020-03-12 10:15:00,119.49,185.41400000000002,45.82899999999999,32.166 +2020-03-12 10:30:00,118.65,183.149,45.82899999999999,32.166 +2020-03-12 10:45:00,120.54,182.495,45.82899999999999,32.166 +2020-03-12 11:00:00,120.4,179.497,44.333,32.166 +2020-03-12 11:15:00,120.2,179.092,44.333,32.166 +2020-03-12 11:30:00,120.88,178.748,44.333,32.166 +2020-03-12 11:45:00,118.34,178.46900000000002,44.333,32.166 +2020-03-12 12:00:00,117.08,173.262,42.95,32.166 +2020-03-12 12:15:00,116.25,173.6,42.95,32.166 +2020-03-12 12:30:00,115.75,172.706,42.95,32.166 +2020-03-12 12:45:00,109.47,173.554,42.95,32.166 +2020-03-12 13:00:00,108.09,173.266,42.489,32.166 +2020-03-12 13:15:00,115.15,171.544,42.489,32.166 +2020-03-12 13:30:00,115.05,169.97099999999998,42.489,32.166 +2020-03-12 13:45:00,111.73,169.46099999999998,42.489,32.166 +2020-03-12 14:00:00,112.25,171.55,43.448,32.166 +2020-03-12 14:15:00,113.98,170.643,43.448,32.166 +2020-03-12 14:30:00,117.08,170.551,43.448,32.166 +2020-03-12 14:45:00,119.53,171.55900000000003,43.448,32.166 +2020-03-12 15:00:00,118.97,173.39700000000002,45.994,32.166 +2020-03-12 15:15:00,118.68,171.975,45.994,32.166 +2020-03-12 15:30:00,117.13,171.81599999999997,45.994,32.166 +2020-03-12 15:45:00,119.59,171.862,45.994,32.166 +2020-03-12 16:00:00,119.06,175.407,48.167,32.166 +2020-03-12 16:15:00,118.71,177.05700000000002,48.167,32.166 +2020-03-12 16:30:00,116.06,179.081,48.167,32.166 +2020-03-12 16:45:00,116.15,179.28099999999998,48.167,32.166 +2020-03-12 17:00:00,117.1,182.13099999999997,52.637,32.166 +2020-03-12 17:15:00,117.47,184.803,52.637,32.166 +2020-03-12 17:30:00,124.27,187.81,52.637,32.166 +2020-03-12 17:45:00,130.48,188.94400000000002,52.637,32.166 +2020-03-12 18:00:00,135.41,192.19799999999998,55.739,32.166 +2020-03-12 18:15:00,134.81,193.199,55.739,32.166 +2020-03-12 18:30:00,135.02,191.58900000000003,55.739,32.166 +2020-03-12 18:45:00,141.44,193.692,55.739,32.166 +2020-03-12 19:00:00,139.92,192.29,56.36600000000001,32.166 +2020-03-12 19:15:00,135.83,189.375,56.36600000000001,32.166 +2020-03-12 19:30:00,133.89,188.739,56.36600000000001,32.166 +2020-03-12 19:45:00,136.57,185.94099999999997,56.36600000000001,32.166 +2020-03-12 20:00:00,127.47,180.352,56.338,32.166 +2020-03-12 20:15:00,117.38,175.25400000000002,56.338,32.166 +2020-03-12 20:30:00,114.25,171.765,56.338,32.166 +2020-03-12 20:45:00,118.49,169.33599999999998,56.338,32.166 +2020-03-12 21:00:00,110.15,166.05599999999998,49.894,32.166 +2020-03-12 21:15:00,109.53,162.791,49.894,32.166 +2020-03-12 21:30:00,99.6,160.502,49.894,32.166 +2020-03-12 21:45:00,103.89,160.494,49.894,32.166 +2020-03-12 22:00:00,96.79,152.968,46.687,32.166 +2020-03-12 22:15:00,101.17,149.144,46.687,32.166 +2020-03-12 22:30:00,99.91,132.936,46.687,32.166 +2020-03-12 22:45:00,97.37,125.19200000000001,46.687,32.166 +2020-03-12 23:00:00,90.19,118.515,39.211,32.166 +2020-03-12 23:15:00,91.27,116.912,39.211,32.166 +2020-03-12 23:30:00,89.72,118.506,39.211,32.166 +2020-03-12 23:45:00,90.08,118.85600000000001,39.211,32.166 +2020-03-13 00:00:00,79.34,112.801,36.616,32.166 +2020-03-13 00:15:00,81.17,111.344,36.616,32.166 +2020-03-13 00:30:00,84.9,110.35700000000001,36.616,32.166 +2020-03-13 00:45:00,84.62,110.445,36.616,32.166 +2020-03-13 01:00:00,76.48,111.34,33.799,32.166 +2020-03-13 01:15:00,75.14,112.479,33.799,32.166 +2020-03-13 01:30:00,75.63,112.32,33.799,32.166 +2020-03-13 01:45:00,78.52,112.565,33.799,32.166 +2020-03-13 02:00:00,80.3,114.60600000000001,32.968,32.166 +2020-03-13 02:15:00,78.45,115.39399999999999,32.968,32.166 +2020-03-13 02:30:00,75.39,116.959,32.968,32.166 +2020-03-13 02:45:00,74.75,118.661,32.968,32.166 +2020-03-13 03:00:00,80.8,120.464,33.533,32.166 +2020-03-13 03:15:00,81.43,122.869,33.533,32.166 +2020-03-13 03:30:00,80.63,124.714,33.533,32.166 +2020-03-13 03:45:00,76.96,126.39299999999999,33.533,32.166 +2020-03-13 04:00:00,77.78,139.984,36.102,32.166 +2020-03-13 04:15:00,76.01,152.549,36.102,32.166 +2020-03-13 04:30:00,78.16,155.04,36.102,32.166 +2020-03-13 04:45:00,80.35,155.576,36.102,32.166 +2020-03-13 05:00:00,83.6,188.688,42.423,32.166 +2020-03-13 05:15:00,86.08,221.351,42.423,32.166 +2020-03-13 05:30:00,89.34,216.452,42.423,32.166 +2020-03-13 05:45:00,93.73,208.157,42.423,32.166 +2020-03-13 06:00:00,103.64,205.862,55.38,32.166 +2020-03-13 06:15:00,107.57,210.74,55.38,32.166 +2020-03-13 06:30:00,110.64,211.385,55.38,32.166 +2020-03-13 06:45:00,114.48,215.893,55.38,32.166 +2020-03-13 07:00:00,119.66,217.563,65.929,32.166 +2020-03-13 07:15:00,122.04,221.418,65.929,32.166 +2020-03-13 07:30:00,125.84,220.833,65.929,32.166 +2020-03-13 07:45:00,127.92,218.025,65.929,32.166 +2020-03-13 08:00:00,130.98,214.92700000000002,57.336999999999996,32.166 +2020-03-13 08:15:00,131.41,212.718,57.336999999999996,32.166 +2020-03-13 08:30:00,133.25,208.553,57.336999999999996,32.166 +2020-03-13 08:45:00,132.73,202.65900000000002,57.336999999999996,32.166 +2020-03-13 09:00:00,131.91,195.34099999999998,54.226000000000006,32.166 +2020-03-13 09:15:00,133.92,192.61900000000003,54.226000000000006,32.166 +2020-03-13 09:30:00,134.68,190.99200000000002,54.226000000000006,32.166 +2020-03-13 09:45:00,135.73,188.257,54.226000000000006,32.166 +2020-03-13 10:00:00,134.92,184.42,51.298,32.166 +2020-03-13 10:15:00,135.4,182.248,51.298,32.166 +2020-03-13 10:30:00,134.47,180.012,51.298,32.166 +2020-03-13 10:45:00,135.19,178.93900000000002,51.298,32.166 +2020-03-13 11:00:00,135.89,175.94299999999998,50.839,32.166 +2020-03-13 11:15:00,138.7,174.553,50.839,32.166 +2020-03-13 11:30:00,137.93,175.858,50.839,32.166 +2020-03-13 11:45:00,136.68,175.517,50.839,32.166 +2020-03-13 12:00:00,135.2,171.43099999999998,47.976000000000006,32.166 +2020-03-13 12:15:00,133.97,169.679,47.976000000000006,32.166 +2020-03-13 12:30:00,132.57,168.91400000000002,47.976000000000006,32.166 +2020-03-13 12:45:00,133.27,170.15200000000002,47.976000000000006,32.166 +2020-03-13 13:00:00,131.19,170.889,46.299,32.166 +2020-03-13 13:15:00,131.49,169.957,46.299,32.166 +2020-03-13 13:30:00,130.77,168.495,46.299,32.166 +2020-03-13 13:45:00,129.96,167.967,46.299,32.166 +2020-03-13 14:00:00,127.92,168.924,44.971000000000004,32.166 +2020-03-13 14:15:00,127.13,167.878,44.971000000000004,32.166 +2020-03-13 14:30:00,128.48,168.445,44.971000000000004,32.166 +2020-03-13 14:45:00,133.54,169.662,44.971000000000004,32.166 +2020-03-13 15:00:00,132.39,171.033,47.48,32.166 +2020-03-13 15:15:00,129.23,169.125,47.48,32.166 +2020-03-13 15:30:00,123.71,167.375,47.48,32.166 +2020-03-13 15:45:00,127.43,167.642,47.48,32.166 +2020-03-13 16:00:00,125.11,169.949,50.648,32.166 +2020-03-13 16:15:00,125.31,171.919,50.648,32.166 +2020-03-13 16:30:00,131.08,174.01,50.648,32.166 +2020-03-13 16:45:00,131.36,173.954,50.648,32.166 +2020-03-13 17:00:00,133.17,177.222,56.251000000000005,32.166 +2020-03-13 17:15:00,127.14,179.476,56.251000000000005,32.166 +2020-03-13 17:30:00,131.27,182.215,56.251000000000005,32.166 +2020-03-13 17:45:00,129.12,183.114,56.251000000000005,32.166 +2020-03-13 18:00:00,131.24,187.041,58.982,32.166 +2020-03-13 18:15:00,135.17,187.62099999999998,58.982,32.166 +2020-03-13 18:30:00,139.57,186.37900000000002,58.982,32.166 +2020-03-13 18:45:00,139.51,188.546,58.982,32.166 +2020-03-13 19:00:00,133.36,188.09,57.293,32.166 +2020-03-13 19:15:00,128.85,186.59799999999998,57.293,32.166 +2020-03-13 19:30:00,132.49,185.59400000000002,57.293,32.166 +2020-03-13 19:45:00,126.88,182.27900000000002,57.293,32.166 +2020-03-13 20:00:00,119.57,176.699,59.433,32.166 +2020-03-13 20:15:00,115.51,171.71900000000002,59.433,32.166 +2020-03-13 20:30:00,114.29,168.16099999999997,59.433,32.166 +2020-03-13 20:45:00,118.37,166.18200000000002,59.433,32.166 +2020-03-13 21:00:00,112.96,163.543,52.153999999999996,32.166 +2020-03-13 21:15:00,110.25,160.898,52.153999999999996,32.166 +2020-03-13 21:30:00,97.71,158.635,52.153999999999996,32.166 +2020-03-13 21:45:00,100.27,159.203,52.153999999999996,32.166 +2020-03-13 22:00:00,97.93,152.60299999999998,47.125,32.166 +2020-03-13 22:15:00,92.71,148.64700000000002,47.125,32.166 +2020-03-13 22:30:00,96.04,139.16299999999998,47.125,32.166 +2020-03-13 22:45:00,96.36,134.97,47.125,32.166 +2020-03-13 23:00:00,92.48,128.05200000000002,41.236000000000004,32.166 +2020-03-13 23:15:00,86.81,124.382,41.236000000000004,32.166 +2020-03-13 23:30:00,83.75,124.344,41.236000000000004,32.166 +2020-03-13 23:45:00,80.73,124.059,41.236000000000004,32.166 +2020-03-14 00:00:00,77.88,109.852,36.484,31.988000000000003 +2020-03-14 00:15:00,83.78,104.229,36.484,31.988000000000003 +2020-03-14 00:30:00,82.86,104.44,36.484,31.988000000000003 +2020-03-14 00:45:00,81.65,105.12,36.484,31.988000000000003 +2020-03-14 01:00:00,70.41,106.62100000000001,32.391999999999996,31.988000000000003 +2020-03-14 01:15:00,73.58,106.88,32.391999999999996,31.988000000000003 +2020-03-14 01:30:00,71.51,106.098,32.391999999999996,31.988000000000003 +2020-03-14 01:45:00,71.4,106.311,32.391999999999996,31.988000000000003 +2020-03-14 02:00:00,70.84,108.875,30.194000000000003,31.988000000000003 +2020-03-14 02:15:00,70.05,109.193,30.194000000000003,31.988000000000003 +2020-03-14 02:30:00,68.78,109.60700000000001,30.194000000000003,31.988000000000003 +2020-03-14 02:45:00,70.66,111.51299999999999,30.194000000000003,31.988000000000003 +2020-03-14 03:00:00,74.8,113.75299999999999,29.677,31.988000000000003 +2020-03-14 03:15:00,77.05,114.881,29.677,31.988000000000003 +2020-03-14 03:30:00,75.79,115.251,29.677,31.988000000000003 +2020-03-14 03:45:00,74.51,117.256,29.677,31.988000000000003 +2020-03-14 04:00:00,73.14,126.67299999999999,29.616,31.988000000000003 +2020-03-14 04:15:00,76.99,136.685,29.616,31.988000000000003 +2020-03-14 04:30:00,79.29,136.898,29.616,31.988000000000003 +2020-03-14 04:45:00,79.22,136.989,29.616,31.988000000000003 +2020-03-14 05:00:00,73.08,153.809,29.625,31.988000000000003 +2020-03-14 05:15:00,73.44,166.923,29.625,31.988000000000003 +2020-03-14 05:30:00,78.54,162.54399999999998,29.625,31.988000000000003 +2020-03-14 05:45:00,82.22,160.054,29.625,31.988000000000003 +2020-03-14 06:00:00,85.25,177.106,30.551,31.988000000000003 +2020-03-14 06:15:00,78.08,198.613,30.551,31.988000000000003 +2020-03-14 06:30:00,81.79,193.703,30.551,31.988000000000003 +2020-03-14 06:45:00,83.22,189.206,30.551,31.988000000000003 +2020-03-14 07:00:00,89.51,187.062,34.865,31.988000000000003 +2020-03-14 07:15:00,91.04,189.51,34.865,31.988000000000003 +2020-03-14 07:30:00,91.15,191.669,34.865,31.988000000000003 +2020-03-14 07:45:00,90.05,192.73,34.865,31.988000000000003 +2020-03-14 08:00:00,95.18,193.46599999999998,41.456,31.988000000000003 +2020-03-14 08:15:00,100.55,194.687,41.456,31.988000000000003 +2020-03-14 08:30:00,104.99,192.00400000000002,41.456,31.988000000000003 +2020-03-14 08:45:00,103.55,189.274,41.456,31.988000000000003 +2020-03-14 09:00:00,103.12,184.047,43.001999999999995,31.988000000000003 +2020-03-14 09:15:00,109.55,182.112,43.001999999999995,31.988000000000003 +2020-03-14 09:30:00,113.29,181.43599999999998,43.001999999999995,31.988000000000003 +2020-03-14 09:45:00,114.02,178.81,43.001999999999995,31.988000000000003 +2020-03-14 10:00:00,110.04,175.35,42.047,31.988000000000003 +2020-03-14 10:15:00,109.56,173.428,42.047,31.988000000000003 +2020-03-14 10:30:00,115.95,171.328,42.047,31.988000000000003 +2020-03-14 10:45:00,117.43,171.47400000000002,42.047,31.988000000000003 +2020-03-14 11:00:00,116.25,168.637,39.894,31.988000000000003 +2020-03-14 11:15:00,113.56,166.72400000000002,39.894,31.988000000000003 +2020-03-14 11:30:00,120.33,167.00400000000002,39.894,31.988000000000003 +2020-03-14 11:45:00,122.42,165.852,39.894,31.988000000000003 +2020-03-14 12:00:00,112.56,160.997,38.122,31.988000000000003 +2020-03-14 12:15:00,110.8,159.982,38.122,31.988000000000003 +2020-03-14 12:30:00,105.88,159.467,38.122,31.988000000000003 +2020-03-14 12:45:00,104.72,160.058,38.122,31.988000000000003 +2020-03-14 13:00:00,102.48,160.347,34.645,31.988000000000003 +2020-03-14 13:15:00,101.32,157.35299999999998,34.645,31.988000000000003 +2020-03-14 13:30:00,99.94,155.47299999999998,34.645,31.988000000000003 +2020-03-14 13:45:00,98.58,155.225,34.645,31.988000000000003 +2020-03-14 14:00:00,96.86,157.421,33.739000000000004,31.988000000000003 +2020-03-14 14:15:00,96.28,155.673,33.739000000000004,31.988000000000003 +2020-03-14 14:30:00,96.6,154.406,33.739000000000004,31.988000000000003 +2020-03-14 14:45:00,97.2,155.903,33.739000000000004,31.988000000000003 +2020-03-14 15:00:00,96.67,157.937,35.908,31.988000000000003 +2020-03-14 15:15:00,95.72,156.866,35.908,31.988000000000003 +2020-03-14 15:30:00,95.92,156.571,35.908,31.988000000000003 +2020-03-14 15:45:00,95.09,156.715,35.908,31.988000000000003 +2020-03-14 16:00:00,95.88,158.109,39.249,31.988000000000003 +2020-03-14 16:15:00,95.55,160.806,39.249,31.988000000000003 +2020-03-14 16:30:00,95.24,162.874,39.249,31.988000000000003 +2020-03-14 16:45:00,95.42,163.626,39.249,31.988000000000003 +2020-03-14 17:00:00,99.69,166.172,46.045,31.988000000000003 +2020-03-14 17:15:00,99.32,169.774,46.045,31.988000000000003 +2020-03-14 17:30:00,101.07,172.42700000000002,46.045,31.988000000000003 +2020-03-14 17:45:00,102.78,173.00599999999997,46.045,31.988000000000003 +2020-03-14 18:00:00,107.78,176.59599999999998,48.238,31.988000000000003 +2020-03-14 18:15:00,108.04,179.19299999999998,48.238,31.988000000000003 +2020-03-14 18:30:00,111.45,179.40099999999998,48.238,31.988000000000003 +2020-03-14 18:45:00,111.41,177.924,48.238,31.988000000000003 +2020-03-14 19:00:00,111.15,178.12599999999998,46.785,31.988000000000003 +2020-03-14 19:15:00,109.51,176.055,46.785,31.988000000000003 +2020-03-14 19:30:00,108.23,175.903,46.785,31.988000000000003 +2020-03-14 19:45:00,106.14,172.66299999999998,46.785,31.988000000000003 +2020-03-14 20:00:00,101.01,169.296,39.830999999999996,31.988000000000003 +2020-03-14 20:15:00,97.68,166.32299999999998,39.830999999999996,31.988000000000003 +2020-03-14 20:30:00,93.02,162.352,39.830999999999996,31.988000000000003 +2020-03-14 20:45:00,93.19,160.203,39.830999999999996,31.988000000000003 +2020-03-14 21:00:00,89.17,159.56799999999998,34.063,31.988000000000003 +2020-03-14 21:15:00,86.26,157.30700000000002,34.063,31.988000000000003 +2020-03-14 21:30:00,89.1,156.261,34.063,31.988000000000003 +2020-03-14 21:45:00,87.56,156.39,34.063,31.988000000000003 +2020-03-14 22:00:00,82.87,151.08100000000002,34.455999999999996,31.988000000000003 +2020-03-14 22:15:00,83.61,149.59799999999998,34.455999999999996,31.988000000000003 +2020-03-14 22:30:00,77.72,146.056,34.455999999999996,31.988000000000003 +2020-03-14 22:45:00,79.25,143.726,34.455999999999996,31.988000000000003 +2020-03-14 23:00:00,75.28,139.096,27.840999999999998,31.988000000000003 +2020-03-14 23:15:00,72.99,133.905,27.840999999999998,31.988000000000003 +2020-03-14 23:30:00,72.93,132.463,27.840999999999998,31.988000000000003 +2020-03-14 23:45:00,71.64,129.89,27.840999999999998,31.988000000000003 +2020-03-15 00:00:00,66.91,110.05799999999999,20.007,31.988000000000003 +2020-03-15 00:15:00,67.0,103.98700000000001,20.007,31.988000000000003 +2020-03-15 00:30:00,66.54,103.802,20.007,31.988000000000003 +2020-03-15 00:45:00,65.35,105.135,20.007,31.988000000000003 +2020-03-15 01:00:00,62.97,106.49,17.378,31.988000000000003 +2020-03-15 01:15:00,63.28,107.705,17.378,31.988000000000003 +2020-03-15 01:30:00,60.74,107.381,17.378,31.988000000000003 +2020-03-15 01:45:00,63.48,107.251,17.378,31.988000000000003 +2020-03-15 02:00:00,61.21,109.098,16.145,31.988000000000003 +2020-03-15 02:15:00,61.18,108.698,16.145,31.988000000000003 +2020-03-15 02:30:00,60.17,109.969,16.145,31.988000000000003 +2020-03-15 02:45:00,61.4,112.275,16.145,31.988000000000003 +2020-03-15 03:00:00,60.81,114.917,15.427999999999999,31.988000000000003 +2020-03-15 03:15:00,61.75,115.56700000000001,15.427999999999999,31.988000000000003 +2020-03-15 03:30:00,61.32,117.15100000000001,15.427999999999999,31.988000000000003 +2020-03-15 03:45:00,62.75,118.98200000000001,15.427999999999999,31.988000000000003 +2020-03-15 04:00:00,62.97,128.166,16.663,31.988000000000003 +2020-03-15 04:15:00,63.98,137.14700000000002,16.663,31.988000000000003 +2020-03-15 04:30:00,63.98,137.636,16.663,31.988000000000003 +2020-03-15 04:45:00,63.9,137.90200000000002,16.663,31.988000000000003 +2020-03-15 05:00:00,63.92,151.424,17.271,31.988000000000003 +2020-03-15 05:15:00,62.64,162.171,17.271,31.988000000000003 +2020-03-15 05:30:00,63.97,157.541,17.271,31.988000000000003 +2020-03-15 05:45:00,64.06,155.245,17.271,31.988000000000003 +2020-03-15 06:00:00,63.06,171.845,17.612000000000002,31.988000000000003 +2020-03-15 06:15:00,61.28,191.857,17.612000000000002,31.988000000000003 +2020-03-15 06:30:00,58.8,185.75099999999998,17.612000000000002,31.988000000000003 +2020-03-15 06:45:00,61.36,180.08599999999998,17.612000000000002,31.988000000000003 +2020-03-15 07:00:00,63.14,180.313,20.88,31.988000000000003 +2020-03-15 07:15:00,62.27,181.68,20.88,31.988000000000003 +2020-03-15 07:30:00,66.04,182.82299999999998,20.88,31.988000000000003 +2020-03-15 07:45:00,68.94,183.12,20.88,31.988000000000003 +2020-03-15 08:00:00,71.34,185.66299999999998,25.861,31.988000000000003 +2020-03-15 08:15:00,73.91,186.957,25.861,31.988000000000003 +2020-03-15 08:30:00,74.04,185.912,25.861,31.988000000000003 +2020-03-15 08:45:00,74.07,185.106,25.861,31.988000000000003 +2020-03-15 09:00:00,74.58,179.49,27.921999999999997,31.988000000000003 +2020-03-15 09:15:00,73.36,178.012,27.921999999999997,31.988000000000003 +2020-03-15 09:30:00,75.48,177.27,27.921999999999997,31.988000000000003 +2020-03-15 09:45:00,75.64,174.68599999999998,27.921999999999997,31.988000000000003 +2020-03-15 10:00:00,75.27,173.71099999999998,29.048000000000002,31.988000000000003 +2020-03-15 10:15:00,74.22,172.36,29.048000000000002,31.988000000000003 +2020-03-15 10:30:00,73.91,170.886,29.048000000000002,31.988000000000003 +2020-03-15 10:45:00,74.56,169.398,29.048000000000002,31.988000000000003 +2020-03-15 11:00:00,77.3,167.37099999999998,32.02,31.988000000000003 +2020-03-15 11:15:00,80.08,165.544,32.02,31.988000000000003 +2020-03-15 11:30:00,82.09,165.077,32.02,31.988000000000003 +2020-03-15 11:45:00,79.85,164.555,32.02,31.988000000000003 +2020-03-15 12:00:00,78.18,159.333,28.55,31.988000000000003 +2020-03-15 12:15:00,79.4,160.05,28.55,31.988000000000003 +2020-03-15 12:30:00,76.27,158.143,28.55,31.988000000000003 +2020-03-15 12:45:00,75.58,157.72299999999998,28.55,31.988000000000003 +2020-03-15 13:00:00,71.35,157.334,25.601999999999997,31.988000000000003 +2020-03-15 13:15:00,71.38,157.099,25.601999999999997,31.988000000000003 +2020-03-15 13:30:00,70.92,154.85,25.601999999999997,31.988000000000003 +2020-03-15 13:45:00,72.05,154.139,25.601999999999997,31.988000000000003 +2020-03-15 14:00:00,72.64,156.80700000000002,23.916999999999998,31.988000000000003 +2020-03-15 14:15:00,71.93,156.235,23.916999999999998,31.988000000000003 +2020-03-15 14:30:00,71.59,155.931,23.916999999999998,31.988000000000003 +2020-03-15 14:45:00,71.9,156.895,23.916999999999998,31.988000000000003 +2020-03-15 15:00:00,73.94,157.505,24.064,31.988000000000003 +2020-03-15 15:15:00,72.87,157.013,24.064,31.988000000000003 +2020-03-15 15:30:00,73.03,157.2,24.064,31.988000000000003 +2020-03-15 15:45:00,74.33,158.025,24.064,31.988000000000003 +2020-03-15 16:00:00,76.14,161.00799999999998,28.189,31.988000000000003 +2020-03-15 16:15:00,77.61,162.841,28.189,31.988000000000003 +2020-03-15 16:30:00,78.45,165.28900000000002,28.189,31.988000000000003 +2020-03-15 16:45:00,83.21,166.13099999999997,28.189,31.988000000000003 +2020-03-15 17:00:00,85.3,168.75799999999998,37.576,31.988000000000003 +2020-03-15 17:15:00,86.88,172.24,37.576,31.988000000000003 +2020-03-15 17:30:00,88.48,175.292,37.576,31.988000000000003 +2020-03-15 17:45:00,89.58,178.122,37.576,31.988000000000003 +2020-03-15 18:00:00,97.68,181.27700000000002,42.669,31.988000000000003 +2020-03-15 18:15:00,98.02,185.18,42.669,31.988000000000003 +2020-03-15 18:30:00,103.29,183.335,42.669,31.988000000000003 +2020-03-15 18:45:00,103.7,183.683,42.669,31.988000000000003 +2020-03-15 19:00:00,105.01,183.797,43.538999999999994,31.988000000000003 +2020-03-15 19:15:00,102.92,182.188,43.538999999999994,31.988000000000003 +2020-03-15 19:30:00,101.41,181.878,43.538999999999994,31.988000000000003 +2020-03-15 19:45:00,99.98,180.03400000000002,43.538999999999994,31.988000000000003 +2020-03-15 20:00:00,98.07,176.605,37.330999999999996,31.988000000000003 +2020-03-15 20:15:00,98.05,174.584,37.330999999999996,31.988000000000003 +2020-03-15 20:30:00,102.06,171.94,37.330999999999996,31.988000000000003 +2020-03-15 20:45:00,101.51,168.424,37.330999999999996,31.988000000000003 +2020-03-15 21:00:00,92.01,165.261,33.856,31.988000000000003 +2020-03-15 21:15:00,96.09,162.356,33.856,31.988000000000003 +2020-03-15 21:30:00,95.45,161.513,33.856,31.988000000000003 +2020-03-15 21:45:00,98.39,161.839,33.856,31.988000000000003 +2020-03-15 22:00:00,96.08,155.615,34.711999999999996,31.988000000000003 +2020-03-15 22:15:00,93.54,153.219,34.711999999999996,31.988000000000003 +2020-03-15 22:30:00,88.54,146.49200000000002,34.711999999999996,31.988000000000003 +2020-03-15 22:45:00,88.54,143.184,34.711999999999996,31.988000000000003 +2020-03-15 23:00:00,90.01,135.808,29.698,31.988000000000003 +2020-03-15 23:15:00,90.99,132.591,29.698,31.988000000000003 +2020-03-15 23:30:00,88.54,131.872,29.698,31.988000000000003 +2020-03-15 23:45:00,84.36,130.211,29.698,31.988000000000003 +2020-03-16 00:00:00,75.75,98.40299999999999,29.983,32.166 +2020-03-16 00:15:00,83.47,96.28299999999999,29.983,32.166 +2020-03-16 00:30:00,84.42,95.56,29.983,32.166 +2020-03-16 00:45:00,82.25,95.21799999999999,29.983,32.166 +2020-03-16 01:00:00,77.57,96.861,29.122,32.166 +2020-03-16 01:15:00,80.67,97.205,29.122,32.166 +2020-03-16 01:30:00,81.83,96.76299999999999,29.122,32.166 +2020-03-16 01:45:00,81.92,96.56,29.122,32.166 +2020-03-16 02:00:00,76.07,98.52600000000001,28.676,32.166 +2020-03-16 02:15:00,79.7,98.59200000000001,28.676,32.166 +2020-03-16 02:30:00,80.65,100.493,28.676,32.166 +2020-03-16 02:45:00,81.61,101.565,28.676,32.166 +2020-03-16 03:00:00,77.46,105.42399999999999,26.552,32.166 +2020-03-16 03:15:00,79.91,107.682,26.552,32.166 +2020-03-16 03:30:00,82.47,108.404,26.552,32.166 +2020-03-16 03:45:00,82.23,109.36399999999999,26.552,32.166 +2020-03-16 04:00:00,80.26,122.883,27.44,32.166 +2020-03-16 04:15:00,78.08,136.07299999999998,27.44,32.166 +2020-03-16 04:30:00,78.99,137.483,27.44,32.166 +2020-03-16 04:45:00,83.48,138.162,27.44,32.166 +2020-03-16 05:00:00,85.58,168.11,36.825,32.166 +2020-03-16 05:15:00,89.84,199.683,36.825,32.166 +2020-03-16 05:30:00,94.03,193.502,36.825,32.166 +2020-03-16 05:45:00,98.78,184.55700000000002,36.825,32.166 +2020-03-16 06:00:00,104.82,183.747,56.589,32.166 +2020-03-16 06:15:00,108.78,188.298,56.589,32.166 +2020-03-16 06:30:00,111.69,189.327,56.589,32.166 +2020-03-16 06:45:00,114.28,191.799,56.589,32.166 +2020-03-16 07:00:00,119.75,194.726,67.49,32.166 +2020-03-16 07:15:00,118.99,196.967,67.49,32.166 +2020-03-16 07:30:00,121.18,196.90599999999998,67.49,32.166 +2020-03-16 07:45:00,121.94,194.672,67.49,32.166 +2020-03-16 08:00:00,124.7,193.282,60.028,32.166 +2020-03-16 08:15:00,122.52,192.105,60.028,32.166 +2020-03-16 08:30:00,121.4,187.63,60.028,32.166 +2020-03-16 08:45:00,119.86,184.179,60.028,32.166 +2020-03-16 09:00:00,117.82,178.373,55.018,32.166 +2020-03-16 09:15:00,116.63,174.179,55.018,32.166 +2020-03-16 09:30:00,117.73,173.43099999999998,55.018,32.166 +2020-03-16 09:45:00,115.81,171.18599999999998,55.018,32.166 +2020-03-16 10:00:00,113.41,168.915,51.183,32.166 +2020-03-16 10:15:00,116.0,167.81400000000002,51.183,32.166 +2020-03-16 10:30:00,115.46,165.19799999999998,51.183,32.166 +2020-03-16 10:45:00,117.05,164.111,51.183,32.166 +2020-03-16 11:00:00,113.1,158.343,50.065,32.166 +2020-03-16 11:15:00,113.17,158.403,50.065,32.166 +2020-03-16 11:30:00,113.75,160.048,50.065,32.166 +2020-03-16 11:45:00,114.16,160.379,50.065,32.166 +2020-03-16 12:00:00,111.33,156.921,48.141999999999996,32.166 +2020-03-16 12:15:00,113.06,157.437,48.141999999999996,32.166 +2020-03-16 12:30:00,110.37,156.293,48.141999999999996,32.166 +2020-03-16 12:45:00,110.4,157.15200000000002,48.141999999999996,32.166 +2020-03-16 13:00:00,108.44,157.352,47.887,32.166 +2020-03-16 13:15:00,107.98,155.593,47.887,32.166 +2020-03-16 13:30:00,107.97,152.868,47.887,32.166 +2020-03-16 13:45:00,108.56,152.096,47.887,32.166 +2020-03-16 14:00:00,111.41,153.593,48.571000000000005,32.166 +2020-03-16 14:15:00,108.91,152.257,48.571000000000005,32.166 +2020-03-16 14:30:00,108.43,151.621,48.571000000000005,32.166 +2020-03-16 14:45:00,109.18,152.847,48.571000000000005,32.166 +2020-03-16 15:00:00,110.53,154.037,49.937,32.166 +2020-03-16 15:15:00,110.99,152.216,49.937,32.166 +2020-03-16 15:30:00,110.57,151.31,49.937,32.166 +2020-03-16 15:45:00,112.88,150.865,49.937,32.166 +2020-03-16 16:00:00,113.73,154.678,52.963,32.166 +2020-03-16 16:15:00,114.16,156.461,52.963,32.166 +2020-03-16 16:30:00,116.67,156.502,52.963,32.166 +2020-03-16 16:45:00,119.49,155.469,52.963,32.166 +2020-03-16 17:00:00,120.61,156.90200000000002,61.163999999999994,32.166 +2020-03-16 17:15:00,121.52,159.283,61.163999999999994,32.166 +2020-03-16 17:30:00,124.46,161.386,61.163999999999994,32.166 +2020-03-16 17:45:00,126.0,162.251,61.163999999999994,32.166 +2020-03-16 18:00:00,128.25,166.34799999999998,63.788999999999994,32.166 +2020-03-16 18:15:00,128.87,167.03099999999998,63.788999999999994,32.166 +2020-03-16 18:30:00,132.59,165.72,63.788999999999994,32.166 +2020-03-16 18:45:00,135.2,169.049,63.788999999999994,32.166 +2020-03-16 19:00:00,135.47,167.59,63.913000000000004,32.166 +2020-03-16 19:15:00,135.93,165.708,63.913000000000004,32.166 +2020-03-16 19:30:00,136.42,165.69400000000002,63.913000000000004,32.166 +2020-03-16 19:45:00,139.91,163.987,63.913000000000004,32.166 +2020-03-16 20:00:00,131.55,157.97,65.44,32.166 +2020-03-16 20:15:00,123.08,154.694,65.44,32.166 +2020-03-16 20:30:00,115.5,151.886,65.44,32.166 +2020-03-16 20:45:00,115.34,150.49200000000002,65.44,32.166 +2020-03-16 21:00:00,111.28,145.696,59.117,32.166 +2020-03-16 21:15:00,109.77,142.936,59.117,32.166 +2020-03-16 21:30:00,108.18,142.46200000000002,59.117,32.166 +2020-03-16 21:45:00,108.66,141.463,59.117,32.166 +2020-03-16 22:00:00,100.71,133.118,52.301,32.166 +2020-03-16 22:15:00,101.8,129.96,52.301,32.166 +2020-03-16 22:30:00,98.84,115.694,52.301,32.166 +2020-03-16 22:45:00,97.68,108.209,52.301,32.166 +2020-03-16 23:00:00,98.26,101.245,44.373000000000005,32.166 +2020-03-16 23:15:00,99.14,100.038,44.373000000000005,32.166 +2020-03-16 23:30:00,95.57,100.943,44.373000000000005,32.166 +2020-03-16 23:45:00,90.74,101.705,44.373000000000005,32.166 +2020-03-17 00:00:00,83.29,96.788,44.647,32.166 +2020-03-17 00:15:00,85.18,96.06,44.647,32.166 +2020-03-17 00:30:00,88.73,94.814,44.647,32.166 +2020-03-17 00:45:00,90.01,93.965,44.647,32.166 +2020-03-17 01:00:00,86.46,95.25399999999999,41.433,32.166 +2020-03-17 01:15:00,85.81,95.272,41.433,32.166 +2020-03-17 01:30:00,81.39,94.90299999999999,41.433,32.166 +2020-03-17 01:45:00,87.26,94.779,41.433,32.166 +2020-03-17 02:00:00,87.84,96.57700000000001,39.909,32.166 +2020-03-17 02:15:00,88.12,96.916,39.909,32.166 +2020-03-17 02:30:00,80.08,98.25200000000001,39.909,32.166 +2020-03-17 02:45:00,81.87,99.441,39.909,32.166 +2020-03-17 03:00:00,88.39,102.213,39.14,32.166 +2020-03-17 03:15:00,89.75,104.1,39.14,32.166 +2020-03-17 03:30:00,82.45,105.178,39.14,32.166 +2020-03-17 03:45:00,84.57,105.939,39.14,32.166 +2020-03-17 04:00:00,86.69,118.898,40.015,32.166 +2020-03-17 04:15:00,91.6,131.80700000000002,40.015,32.166 +2020-03-17 04:30:00,94.85,132.954,40.015,32.166 +2020-03-17 04:45:00,92.46,134.70600000000002,40.015,32.166 +2020-03-17 05:00:00,92.95,168.956,44.93600000000001,32.166 +2020-03-17 05:15:00,94.92,200.56099999999998,44.93600000000001,32.166 +2020-03-17 05:30:00,98.34,193.25,44.93600000000001,32.166 +2020-03-17 05:45:00,99.36,184.088,44.93600000000001,32.166 +2020-03-17 06:00:00,109.4,182.72,57.271,32.166 +2020-03-17 06:15:00,112.51,188.58599999999998,57.271,32.166 +2020-03-17 06:30:00,114.99,188.97299999999998,57.271,32.166 +2020-03-17 06:45:00,116.99,190.85,57.271,32.166 +2020-03-17 07:00:00,118.61,193.696,68.352,32.166 +2020-03-17 07:15:00,121.29,195.703,68.352,32.166 +2020-03-17 07:30:00,121.0,195.18,68.352,32.166 +2020-03-17 07:45:00,121.45,192.78,68.352,32.166 +2020-03-17 08:00:00,121.87,191.438,60.717,32.166 +2020-03-17 08:15:00,119.41,189.315,60.717,32.166 +2020-03-17 08:30:00,117.8,184.7,60.717,32.166 +2020-03-17 08:45:00,117.14,180.785,60.717,32.166 +2020-03-17 09:00:00,114.19,174.417,54.603,32.166 +2020-03-17 09:15:00,117.59,171.476,54.603,32.166 +2020-03-17 09:30:00,123.71,171.49200000000002,54.603,32.166 +2020-03-17 09:45:00,123.51,169.47299999999998,54.603,32.166 +2020-03-17 10:00:00,123.65,166.34900000000002,52.308,32.166 +2020-03-17 10:15:00,126.87,164.386,52.308,32.166 +2020-03-17 10:30:00,129.22,161.95,52.308,32.166 +2020-03-17 10:45:00,132.76,161.387,52.308,32.166 +2020-03-17 11:00:00,132.25,156.829,51.838,32.166 +2020-03-17 11:15:00,132.0,156.743,51.838,32.166 +2020-03-17 11:30:00,132.65,157.129,51.838,32.166 +2020-03-17 11:45:00,134.64,157.938,51.838,32.166 +2020-03-17 12:00:00,132.83,153.315,50.375,32.166 +2020-03-17 12:15:00,132.99,153.584,50.375,32.166 +2020-03-17 12:30:00,132.12,153.22299999999998,50.375,32.166 +2020-03-17 12:45:00,133.93,154.017,50.375,32.166 +2020-03-17 13:00:00,132.01,153.819,50.735,32.166 +2020-03-17 13:15:00,130.45,152.21200000000002,50.735,32.166 +2020-03-17 13:30:00,124.25,150.447,50.735,32.166 +2020-03-17 13:45:00,128.13,149.58700000000002,50.735,32.166 +2020-03-17 14:00:00,127.73,151.502,50.946000000000005,32.166 +2020-03-17 14:15:00,128.74,150.222,50.946000000000005,32.166 +2020-03-17 14:30:00,128.92,150.161,50.946000000000005,32.166 +2020-03-17 14:45:00,130.63,151.126,50.946000000000005,32.166 +2020-03-17 15:00:00,132.16,151.93,53.18,32.166 +2020-03-17 15:15:00,132.92,150.592,53.18,32.166 +2020-03-17 15:30:00,132.15,149.77,53.18,32.166 +2020-03-17 15:45:00,132.5,149.059,53.18,32.166 +2020-03-17 16:00:00,131.86,153.01,54.928999999999995,32.166 +2020-03-17 16:15:00,131.47,155.187,54.928999999999995,32.166 +2020-03-17 16:30:00,129.12,155.662,54.928999999999995,32.166 +2020-03-17 16:45:00,130.42,155.007,54.928999999999995,32.166 +2020-03-17 17:00:00,131.53,156.974,60.913000000000004,32.166 +2020-03-17 17:15:00,135.08,159.489,60.913000000000004,32.166 +2020-03-17 17:30:00,143.36,162.031,60.913000000000004,32.166 +2020-03-17 17:45:00,144.28,162.69899999999998,60.913000000000004,32.166 +2020-03-17 18:00:00,137.97,166.455,62.214,32.166 +2020-03-17 18:15:00,138.35,167.197,62.214,32.166 +2020-03-17 18:30:00,140.04,165.55599999999998,62.214,32.166 +2020-03-17 18:45:00,139.14,169.495,62.214,32.166 +2020-03-17 19:00:00,138.8,167.745,62.38,32.166 +2020-03-17 19:15:00,134.96,165.702,62.38,32.166 +2020-03-17 19:30:00,135.63,165.108,62.38,32.166 +2020-03-17 19:45:00,132.59,163.565,62.38,32.166 +2020-03-17 20:00:00,123.95,157.756,65.018,32.166 +2020-03-17 20:15:00,121.08,153.566,65.018,32.166 +2020-03-17 20:30:00,114.15,151.616,65.018,32.166 +2020-03-17 20:45:00,114.92,149.891,65.018,32.166 +2020-03-17 21:00:00,114.69,144.774,56.416000000000004,32.166 +2020-03-17 21:15:00,109.67,142.322,56.416000000000004,32.166 +2020-03-17 21:30:00,107.76,141.31,56.416000000000004,32.166 +2020-03-17 21:45:00,105.9,140.57399999999998,56.416000000000004,32.166 +2020-03-17 22:00:00,108.3,133.65,52.846000000000004,32.166 +2020-03-17 22:15:00,108.41,130.213,52.846000000000004,32.166 +2020-03-17 22:30:00,101.96,116.061,52.846000000000004,32.166 +2020-03-17 22:45:00,96.25,108.795,52.846000000000004,32.166 +2020-03-17 23:00:00,91.66,101.624,44.435,32.166 +2020-03-17 23:15:00,90.02,100.15700000000001,44.435,32.166 +2020-03-17 23:30:00,86.99,100.775,44.435,32.166 +2020-03-17 23:45:00,89.71,101.256,44.435,32.166 +2020-03-18 00:00:00,83.73,96.42299999999999,42.527,32.166 +2020-03-18 00:15:00,89.73,95.705,42.527,32.166 +2020-03-18 00:30:00,86.8,94.446,42.527,32.166 +2020-03-18 00:45:00,85.84,93.59899999999999,42.527,32.166 +2020-03-18 01:00:00,80.74,94.855,38.655,32.166 +2020-03-18 01:15:00,80.02,94.855,38.655,32.166 +2020-03-18 01:30:00,85.25,94.46799999999999,38.655,32.166 +2020-03-18 01:45:00,87.28,94.34899999999999,38.655,32.166 +2020-03-18 02:00:00,86.8,96.135,36.912,32.166 +2020-03-18 02:15:00,84.18,96.462,36.912,32.166 +2020-03-18 02:30:00,79.64,97.82,36.912,32.166 +2020-03-18 02:45:00,86.07,99.01100000000001,36.912,32.166 +2020-03-18 03:00:00,88.69,101.79799999999999,36.98,32.166 +2020-03-18 03:15:00,89.95,103.663,36.98,32.166 +2020-03-18 03:30:00,85.36,104.735,36.98,32.166 +2020-03-18 03:45:00,81.81,105.51,36.98,32.166 +2020-03-18 04:00:00,86.79,118.46600000000001,38.052,32.166 +2020-03-18 04:15:00,90.82,131.358,38.052,32.166 +2020-03-18 04:30:00,92.75,132.518,38.052,32.166 +2020-03-18 04:45:00,88.52,134.257,38.052,32.166 +2020-03-18 05:00:00,90.89,168.46599999999998,42.455,32.166 +2020-03-18 05:15:00,92.19,200.058,42.455,32.166 +2020-03-18 05:30:00,96.66,192.72400000000002,42.455,32.166 +2020-03-18 05:45:00,100.78,183.581,42.455,32.166 +2020-03-18 06:00:00,108.49,182.225,57.986000000000004,32.166 +2020-03-18 06:15:00,111.7,188.088,57.986000000000004,32.166 +2020-03-18 06:30:00,114.37,188.43599999999998,57.986000000000004,32.166 +2020-03-18 06:45:00,118.53,190.293,57.986000000000004,32.166 +2020-03-18 07:00:00,124.03,193.15400000000002,71.868,32.166 +2020-03-18 07:15:00,124.83,195.13,71.868,32.166 +2020-03-18 07:30:00,127.19,194.567,71.868,32.166 +2020-03-18 07:45:00,130.33,192.137,71.868,32.166 +2020-03-18 08:00:00,133.17,190.771,62.225,32.166 +2020-03-18 08:15:00,131.53,188.65099999999998,62.225,32.166 +2020-03-18 08:30:00,133.54,183.987,62.225,32.166 +2020-03-18 08:45:00,132.96,180.095,62.225,32.166 +2020-03-18 09:00:00,129.67,173.738,58.802,32.166 +2020-03-18 09:15:00,131.06,170.799,58.802,32.166 +2020-03-18 09:30:00,130.32,170.835,58.802,32.166 +2020-03-18 09:45:00,125.59,168.834,58.802,32.166 +2020-03-18 10:00:00,123.25,165.722,54.122,32.166 +2020-03-18 10:15:00,118.73,163.805,54.122,32.166 +2020-03-18 10:30:00,115.43,161.391,54.122,32.166 +2020-03-18 10:45:00,117.34,160.849,54.122,32.166 +2020-03-18 11:00:00,117.69,156.282,54.368,32.166 +2020-03-18 11:15:00,118.38,156.218,54.368,32.166 +2020-03-18 11:30:00,118.73,156.61,54.368,32.166 +2020-03-18 11:45:00,118.1,157.438,54.368,32.166 +2020-03-18 12:00:00,117.22,152.83700000000002,52.74,32.166 +2020-03-18 12:15:00,117.72,153.116,52.74,32.166 +2020-03-18 12:30:00,117.55,152.716,52.74,32.166 +2020-03-18 12:45:00,115.41,153.509,52.74,32.166 +2020-03-18 13:00:00,116.23,153.35399999999998,52.544,32.166 +2020-03-18 13:15:00,118.56,151.731,52.544,32.166 +2020-03-18 13:30:00,118.92,149.958,52.544,32.166 +2020-03-18 13:45:00,118.2,149.1,52.544,32.166 +2020-03-18 14:00:00,119.88,151.083,53.602,32.166 +2020-03-18 14:15:00,117.8,149.78,53.602,32.166 +2020-03-18 14:30:00,116.98,149.68200000000002,53.602,32.166 +2020-03-18 14:45:00,119.05,150.655,53.602,32.166 +2020-03-18 15:00:00,115.92,151.475,55.59,32.166 +2020-03-18 15:15:00,111.49,150.108,55.59,32.166 +2020-03-18 15:30:00,111.91,149.237,55.59,32.166 +2020-03-18 15:45:00,121.29,148.507,55.59,32.166 +2020-03-18 16:00:00,119.54,152.477,57.586999999999996,32.166 +2020-03-18 16:15:00,120.09,154.63,57.586999999999996,32.166 +2020-03-18 16:30:00,114.99,155.105,57.586999999999996,32.166 +2020-03-18 16:45:00,117.72,154.4,57.586999999999996,32.166 +2020-03-18 17:00:00,122.47,156.395,62.111999999999995,32.166 +2020-03-18 17:15:00,129.68,158.906,62.111999999999995,32.166 +2020-03-18 17:30:00,131.77,161.46200000000002,62.111999999999995,32.166 +2020-03-18 17:45:00,132.41,162.132,62.111999999999995,32.166 +2020-03-18 18:00:00,131.64,165.895,64.605,32.166 +2020-03-18 18:15:00,126.8,166.695,64.605,32.166 +2020-03-18 18:30:00,135.48,165.045,64.605,32.166 +2020-03-18 18:45:00,144.49,169.00099999999998,64.605,32.166 +2020-03-18 19:00:00,144.79,167.22,65.55199999999999,32.166 +2020-03-18 19:15:00,137.82,165.19299999999998,65.55199999999999,32.166 +2020-03-18 19:30:00,133.32,164.62400000000002,65.55199999999999,32.166 +2020-03-18 19:45:00,131.22,163.12,65.55199999999999,32.166 +2020-03-18 20:00:00,129.19,157.282,66.778,32.166 +2020-03-18 20:15:00,125.46,153.107,66.778,32.166 +2020-03-18 20:30:00,120.34,151.188,66.778,32.166 +2020-03-18 20:45:00,117.63,149.47299999999998,66.778,32.166 +2020-03-18 21:00:00,114.44,144.349,56.103,32.166 +2020-03-18 21:15:00,114.71,141.899,56.103,32.166 +2020-03-18 21:30:00,109.71,140.885,56.103,32.166 +2020-03-18 21:45:00,108.39,140.174,56.103,32.166 +2020-03-18 22:00:00,107.26,133.243,51.371,32.166 +2020-03-18 22:15:00,105.38,129.833,51.371,32.166 +2020-03-18 22:30:00,98.14,115.63600000000001,51.371,32.166 +2020-03-18 22:45:00,94.88,108.369,51.371,32.166 +2020-03-18 23:00:00,88.42,101.18700000000001,42.798,32.166 +2020-03-18 23:15:00,89.09,99.745,42.798,32.166 +2020-03-18 23:30:00,91.31,100.363,42.798,32.166 +2020-03-18 23:45:00,92.36,100.868,42.798,32.166 +2020-03-19 00:00:00,87.88,96.053,39.069,32.166 +2020-03-19 00:15:00,85.89,95.34700000000001,39.069,32.166 +2020-03-19 00:30:00,87.68,94.073,39.069,32.166 +2020-03-19 00:45:00,87.98,93.228,39.069,32.166 +2020-03-19 01:00:00,84.61,94.45200000000001,37.043,32.166 +2020-03-19 01:15:00,79.55,94.434,37.043,32.166 +2020-03-19 01:30:00,77.18,94.027,37.043,32.166 +2020-03-19 01:45:00,78.42,93.915,37.043,32.166 +2020-03-19 02:00:00,79.65,95.69,34.625,32.166 +2020-03-19 02:15:00,86.0,96.006,34.625,32.166 +2020-03-19 02:30:00,83.94,97.384,34.625,32.166 +2020-03-19 02:45:00,86.89,98.575,34.625,32.166 +2020-03-19 03:00:00,82.57,101.37899999999999,33.812,32.166 +2020-03-19 03:15:00,86.09,103.221,33.812,32.166 +2020-03-19 03:30:00,88.78,104.287,33.812,32.166 +2020-03-19 03:45:00,86.84,105.07799999999999,33.812,32.166 +2020-03-19 04:00:00,86.04,118.03,35.236999999999995,32.166 +2020-03-19 04:15:00,87.46,130.905,35.236999999999995,32.166 +2020-03-19 04:30:00,90.13,132.077,35.236999999999995,32.166 +2020-03-19 04:45:00,89.22,133.804,35.236999999999995,32.166 +2020-03-19 05:00:00,87.18,167.97099999999998,40.375,32.166 +2020-03-19 05:15:00,92.65,199.551,40.375,32.166 +2020-03-19 05:30:00,91.79,192.196,40.375,32.166 +2020-03-19 05:45:00,99.25,183.07,40.375,32.166 +2020-03-19 06:00:00,101.84,181.726,52.316,32.166 +2020-03-19 06:15:00,108.97,187.58700000000002,52.316,32.166 +2020-03-19 06:30:00,112.26,187.893,52.316,32.166 +2020-03-19 06:45:00,114.99,189.731,52.316,32.166 +2020-03-19 07:00:00,119.6,192.607,64.115,32.166 +2020-03-19 07:15:00,119.74,194.554,64.115,32.166 +2020-03-19 07:30:00,122.99,193.949,64.115,32.166 +2020-03-19 07:45:00,125.11,191.489,64.115,32.166 +2020-03-19 08:00:00,132.62,190.1,55.033,32.166 +2020-03-19 08:15:00,133.14,187.981,55.033,32.166 +2020-03-19 08:30:00,132.06,183.27,55.033,32.166 +2020-03-19 08:45:00,130.67,179.4,55.033,32.166 +2020-03-19 09:00:00,131.44,173.053,49.411,32.166 +2020-03-19 09:15:00,128.19,170.11599999999999,49.411,32.166 +2020-03-19 09:30:00,130.89,170.173,49.411,32.166 +2020-03-19 09:45:00,133.55,168.19299999999998,49.411,32.166 +2020-03-19 10:00:00,135.03,165.09099999999998,45.82899999999999,32.166 +2020-03-19 10:15:00,135.81,163.22,45.82899999999999,32.166 +2020-03-19 10:30:00,135.42,160.829,45.82899999999999,32.166 +2020-03-19 10:45:00,133.48,160.30700000000002,45.82899999999999,32.166 +2020-03-19 11:00:00,134.38,155.732,44.333,32.166 +2020-03-19 11:15:00,136.87,155.691,44.333,32.166 +2020-03-19 11:30:00,136.53,156.089,44.333,32.166 +2020-03-19 11:45:00,135.15,156.935,44.333,32.166 +2020-03-19 12:00:00,134.45,152.355,42.95,32.166 +2020-03-19 12:15:00,132.99,152.64600000000002,42.95,32.166 +2020-03-19 12:30:00,130.93,152.20600000000002,42.95,32.166 +2020-03-19 12:45:00,131.7,152.998,42.95,32.166 +2020-03-19 13:00:00,131.55,152.886,42.489,32.166 +2020-03-19 13:15:00,136.58,151.246,42.489,32.166 +2020-03-19 13:30:00,137.49,149.465,42.489,32.166 +2020-03-19 13:45:00,130.19,148.61,42.489,32.166 +2020-03-19 14:00:00,126.15,150.662,43.448,32.166 +2020-03-19 14:15:00,126.13,149.335,43.448,32.166 +2020-03-19 14:30:00,128.46,149.201,43.448,32.166 +2020-03-19 14:45:00,126.37,150.18,43.448,32.166 +2020-03-19 15:00:00,127.54,151.016,45.994,32.166 +2020-03-19 15:15:00,133.12,149.622,45.994,32.166 +2020-03-19 15:30:00,132.92,148.701,45.994,32.166 +2020-03-19 15:45:00,133.74,147.954,45.994,32.166 +2020-03-19 16:00:00,129.51,151.94,48.167,32.166 +2020-03-19 16:15:00,133.23,154.07,48.167,32.166 +2020-03-19 16:30:00,134.2,154.545,48.167,32.166 +2020-03-19 16:45:00,133.59,153.78799999999998,48.167,32.166 +2020-03-19 17:00:00,130.78,155.813,52.637,32.166 +2020-03-19 17:15:00,129.72,158.317,52.637,32.166 +2020-03-19 17:30:00,130.87,160.888,52.637,32.166 +2020-03-19 17:45:00,140.13,161.56,52.637,32.166 +2020-03-19 18:00:00,142.78,165.331,55.739,32.166 +2020-03-19 18:15:00,139.96,166.188,55.739,32.166 +2020-03-19 18:30:00,137.06,164.53099999999998,55.739,32.166 +2020-03-19 18:45:00,135.97,168.502,55.739,32.166 +2020-03-19 19:00:00,140.2,166.69099999999997,56.36600000000001,32.166 +2020-03-19 19:15:00,139.3,164.68,56.36600000000001,32.166 +2020-03-19 19:30:00,137.47,164.135,56.36600000000001,32.166 +2020-03-19 19:45:00,134.57,162.673,56.36600000000001,32.166 +2020-03-19 20:00:00,124.92,156.805,56.338,32.166 +2020-03-19 20:15:00,122.58,152.644,56.338,32.166 +2020-03-19 20:30:00,124.08,150.756,56.338,32.166 +2020-03-19 20:45:00,121.71,149.05200000000002,56.338,32.166 +2020-03-19 21:00:00,111.74,143.921,49.894,32.166 +2020-03-19 21:15:00,110.78,141.474,49.894,32.166 +2020-03-19 21:30:00,112.46,140.45600000000002,49.894,32.166 +2020-03-19 21:45:00,110.73,139.77100000000002,49.894,32.166 +2020-03-19 22:00:00,106.07,132.833,46.687,32.166 +2020-03-19 22:15:00,102.14,129.44899999999998,46.687,32.166 +2020-03-19 22:30:00,100.56,115.20700000000001,46.687,32.166 +2020-03-19 22:45:00,100.02,107.939,46.687,32.166 +2020-03-19 23:00:00,93.88,100.74600000000001,39.211,32.166 +2020-03-19 23:15:00,92.98,99.32700000000001,39.211,32.166 +2020-03-19 23:30:00,90.87,99.948,39.211,32.166 +2020-03-19 23:45:00,92.97,100.475,39.211,32.166 +2020-03-20 00:00:00,81.31,94.274,36.616,32.166 +2020-03-20 00:15:00,83.1,93.804,36.616,32.166 +2020-03-20 00:30:00,80.74,92.495,36.616,32.166 +2020-03-20 00:45:00,87.41,91.87299999999999,36.616,32.166 +2020-03-20 01:00:00,85.22,92.698,33.799,32.166 +2020-03-20 01:15:00,85.31,93.18799999999999,33.799,32.166 +2020-03-20 01:30:00,79.72,92.814,33.799,32.166 +2020-03-20 01:45:00,79.16,92.711,33.799,32.166 +2020-03-20 02:00:00,75.56,94.837,32.968,32.166 +2020-03-20 02:15:00,78.31,95.037,32.968,32.166 +2020-03-20 02:30:00,84.24,97.10799999999999,32.968,32.166 +2020-03-20 02:45:00,84.88,98.116,32.968,32.166 +2020-03-20 03:00:00,84.31,100.412,33.533,32.166 +2020-03-20 03:15:00,80.11,102.57,33.533,32.166 +2020-03-20 03:30:00,86.07,103.539,33.533,32.166 +2020-03-20 03:45:00,86.71,104.882,33.533,32.166 +2020-03-20 04:00:00,89.04,118.052,36.102,32.166 +2020-03-20 04:15:00,86.87,130.207,36.102,32.166 +2020-03-20 04:30:00,82.36,131.881,36.102,32.166 +2020-03-20 04:45:00,84.69,132.501,36.102,32.166 +2020-03-20 05:00:00,89.4,165.488,42.423,32.166 +2020-03-20 05:15:00,90.87,198.532,42.423,32.166 +2020-03-20 05:30:00,93.45,192.05200000000002,42.423,32.166 +2020-03-20 05:45:00,99.81,182.74599999999998,42.423,32.166 +2020-03-20 06:00:00,105.17,181.84099999999998,55.38,32.166 +2020-03-20 06:15:00,110.26,186.604,55.38,32.166 +2020-03-20 06:30:00,112.63,186.18099999999998,55.38,32.166 +2020-03-20 06:45:00,116.56,189.22299999999998,55.38,32.166 +2020-03-20 07:00:00,123.53,191.669,65.929,32.166 +2020-03-20 07:15:00,124.74,194.675,65.929,32.166 +2020-03-20 07:30:00,128.22,193.28099999999998,65.929,32.166 +2020-03-20 07:45:00,131.67,190.02700000000002,65.929,32.166 +2020-03-20 08:00:00,135.19,187.975,57.336999999999996,32.166 +2020-03-20 08:15:00,135.75,185.748,57.336999999999996,32.166 +2020-03-20 08:30:00,136.9,181.74200000000002,57.336999999999996,32.166 +2020-03-20 08:45:00,138.65,176.588,57.336999999999996,32.166 +2020-03-20 09:00:00,138.65,169.93400000000003,54.226000000000006,32.166 +2020-03-20 09:15:00,141.78,168.017,54.226000000000006,32.166 +2020-03-20 09:30:00,141.41,167.548,54.226000000000006,32.166 +2020-03-20 09:45:00,140.33,165.61,54.226000000000006,32.166 +2020-03-20 10:00:00,137.44,161.526,51.298,32.166 +2020-03-20 10:15:00,138.85,160.215,51.298,32.166 +2020-03-20 10:30:00,139.49,157.942,51.298,32.166 +2020-03-20 10:45:00,140.16,157.05,51.298,32.166 +2020-03-20 11:00:00,135.6,152.503,50.839,32.166 +2020-03-20 11:15:00,134.52,151.446,50.839,32.166 +2020-03-20 11:30:00,136.04,153.204,50.839,32.166 +2020-03-20 11:45:00,132.53,153.84799999999998,50.839,32.166 +2020-03-20 12:00:00,128.08,150.317,47.976000000000006,32.166 +2020-03-20 12:15:00,131.48,148.69899999999998,47.976000000000006,32.166 +2020-03-20 12:30:00,131.48,148.384,47.976000000000006,32.166 +2020-03-20 12:45:00,128.91,149.39600000000002,47.976000000000006,32.166 +2020-03-20 13:00:00,125.64,150.276,46.299,32.166 +2020-03-20 13:15:00,127.45,149.352,46.299,32.166 +2020-03-20 13:30:00,121.83,147.784,46.299,32.166 +2020-03-20 13:45:00,121.45,146.958,46.299,32.166 +2020-03-20 14:00:00,122.13,147.91299999999998,44.971000000000004,32.166 +2020-03-20 14:15:00,122.95,146.52700000000002,44.971000000000004,32.166 +2020-03-20 14:30:00,119.93,147.18,44.971000000000004,32.166 +2020-03-20 14:45:00,118.5,148.24,44.971000000000004,32.166 +2020-03-20 15:00:00,118.31,148.666,47.48,32.166 +2020-03-20 15:15:00,118.3,146.813,47.48,32.166 +2020-03-20 15:30:00,117.43,144.417,47.48,32.166 +2020-03-20 15:45:00,118.9,143.97299999999998,47.48,32.166 +2020-03-20 16:00:00,119.03,146.799,50.648,32.166 +2020-03-20 16:15:00,117.4,149.28,50.648,32.166 +2020-03-20 16:30:00,117.62,149.784,50.648,32.166 +2020-03-20 16:45:00,116.65,148.667,50.648,32.166 +2020-03-20 17:00:00,118.31,151.38299999999998,56.251000000000005,32.166 +2020-03-20 17:15:00,119.69,153.495,56.251000000000005,32.166 +2020-03-20 17:30:00,121.15,155.864,56.251000000000005,32.166 +2020-03-20 17:45:00,124.53,156.298,56.251000000000005,32.166 +2020-03-20 18:00:00,130.12,160.666,58.982,32.166 +2020-03-20 18:15:00,129.06,160.994,58.982,32.166 +2020-03-20 18:30:00,130.46,159.622,58.982,32.166 +2020-03-20 18:45:00,132.02,163.724,58.982,32.166 +2020-03-20 19:00:00,134.39,162.879,57.293,32.166 +2020-03-20 19:15:00,130.14,162.16299999999998,57.293,32.166 +2020-03-20 19:30:00,128.96,161.32399999999998,57.293,32.166 +2020-03-20 19:45:00,127.91,159.238,57.293,32.166 +2020-03-20 20:00:00,121.85,153.34799999999998,59.433,32.166 +2020-03-20 20:15:00,124.01,149.438,59.433,32.166 +2020-03-20 20:30:00,121.62,147.405,59.433,32.166 +2020-03-20 20:45:00,115.58,145.928,59.433,32.166 +2020-03-20 21:00:00,107.59,141.58700000000002,52.153999999999996,32.166 +2020-03-20 21:15:00,107.1,139.983,52.153999999999996,32.166 +2020-03-20 21:30:00,102.66,138.957,52.153999999999996,32.166 +2020-03-20 21:45:00,102.64,138.795,52.153999999999996,32.166 +2020-03-20 22:00:00,95.47,132.6,47.125,32.166 +2020-03-20 22:15:00,92.65,129.063,47.125,32.166 +2020-03-20 22:30:00,94.55,121.314,47.125,32.166 +2020-03-20 22:45:00,96.74,117.149,47.125,32.166 +2020-03-20 23:00:00,91.54,110.07799999999999,41.236000000000004,32.166 +2020-03-20 23:15:00,84.93,106.649,41.236000000000004,32.166 +2020-03-20 23:30:00,83.48,105.56200000000001,41.236000000000004,32.166 +2020-03-20 23:45:00,79.79,105.538,41.236000000000004,32.166 +2020-03-21 00:00:00,76.15,92.06,36.484,31.988000000000003 +2020-03-21 00:15:00,76.52,88.061,36.484,31.988000000000003 +2020-03-21 00:30:00,75.95,87.62700000000001,36.484,31.988000000000003 +2020-03-21 00:45:00,78.77,87.333,36.484,31.988000000000003 +2020-03-21 01:00:00,78.62,88.72,32.391999999999996,31.988000000000003 +2020-03-21 01:15:00,79.74,88.615,32.391999999999996,31.988000000000003 +2020-03-21 01:30:00,75.68,87.559,32.391999999999996,31.988000000000003 +2020-03-21 01:45:00,75.56,87.695,32.391999999999996,31.988000000000003 +2020-03-21 02:00:00,77.03,90.04299999999999,30.194000000000003,31.988000000000003 +2020-03-21 02:15:00,75.94,89.686,30.194000000000003,31.988000000000003 +2020-03-21 02:30:00,75.96,90.661,30.194000000000003,31.988000000000003 +2020-03-21 02:45:00,70.86,92.00399999999999,30.194000000000003,31.988000000000003 +2020-03-21 03:00:00,76.24,94.37,29.677,31.988000000000003 +2020-03-21 03:15:00,77.68,95.339,29.677,31.988000000000003 +2020-03-21 03:30:00,77.67,95.18299999999999,29.677,31.988000000000003 +2020-03-21 03:45:00,73.57,97.11200000000001,29.677,31.988000000000003 +2020-03-21 04:00:00,69.82,106.507,29.616,31.988000000000003 +2020-03-21 04:15:00,70.66,116.397,29.616,31.988000000000003 +2020-03-21 04:30:00,72.22,115.867,29.616,31.988000000000003 +2020-03-21 04:45:00,72.34,116.185,29.616,31.988000000000003 +2020-03-21 05:00:00,73.28,134.24200000000002,29.625,31.988000000000003 +2020-03-21 05:15:00,70.66,149.116,29.625,31.988000000000003 +2020-03-21 05:30:00,72.31,143.395,29.625,31.988000000000003 +2020-03-21 05:45:00,71.97,139.756,29.625,31.988000000000003 +2020-03-21 06:00:00,72.01,156.734,30.551,31.988000000000003 +2020-03-21 06:15:00,74.11,176.644,30.551,31.988000000000003 +2020-03-21 06:30:00,70.85,171.11,30.551,31.988000000000003 +2020-03-21 06:45:00,75.14,166.157,30.551,31.988000000000003 +2020-03-21 07:00:00,77.83,164.997,34.865,31.988000000000003 +2020-03-21 07:15:00,78.22,166.58599999999998,34.865,31.988000000000003 +2020-03-21 07:30:00,79.47,167.74200000000002,34.865,31.988000000000003 +2020-03-21 07:45:00,80.88,167.858,34.865,31.988000000000003 +2020-03-21 08:00:00,82.4,168.946,41.456,31.988000000000003 +2020-03-21 08:15:00,82.02,169.545,41.456,31.988000000000003 +2020-03-21 08:30:00,82.13,166.77,41.456,31.988000000000003 +2020-03-21 08:45:00,83.0,164.435,41.456,31.988000000000003 +2020-03-21 09:00:00,84.22,160.035,43.001999999999995,31.988000000000003 +2020-03-21 09:15:00,84.04,158.866,43.001999999999995,31.988000000000003 +2020-03-21 09:30:00,83.23,159.287,43.001999999999995,31.988000000000003 +2020-03-21 09:45:00,82.37,157.369,43.001999999999995,31.988000000000003 +2020-03-21 10:00:00,81.8,153.608,42.047,31.988000000000003 +2020-03-21 10:15:00,80.91,152.577,42.047,31.988000000000003 +2020-03-21 10:30:00,79.58,150.36700000000002,42.047,31.988000000000003 +2020-03-21 10:45:00,80.21,150.458,42.047,31.988000000000003 +2020-03-21 11:00:00,81.27,145.994,39.894,31.988000000000003 +2020-03-21 11:15:00,82.37,144.628,39.894,31.988000000000003 +2020-03-21 11:30:00,82.93,145.55,39.894,31.988000000000003 +2020-03-21 11:45:00,86.04,145.608,39.894,31.988000000000003 +2020-03-21 12:00:00,81.5,141.393,38.122,31.988000000000003 +2020-03-21 12:15:00,78.76,140.543,38.122,31.988000000000003 +2020-03-21 12:30:00,77.88,140.417,38.122,31.988000000000003 +2020-03-21 12:45:00,78.92,140.98,38.122,31.988000000000003 +2020-03-21 13:00:00,73.16,141.30200000000002,34.645,31.988000000000003 +2020-03-21 13:15:00,75.26,138.506,34.645,31.988000000000003 +2020-03-21 13:30:00,72.49,136.60399999999998,34.645,31.988000000000003 +2020-03-21 13:45:00,72.8,135.825,34.645,31.988000000000003 +2020-03-21 14:00:00,71.82,137.874,33.739000000000004,31.988000000000003 +2020-03-21 14:15:00,68.31,135.69299999999998,33.739000000000004,31.988000000000003 +2020-03-21 14:30:00,69.19,134.681,33.739000000000004,31.988000000000003 +2020-03-21 14:45:00,72.21,136.053,33.739000000000004,31.988000000000003 +2020-03-21 15:00:00,73.63,137.141,35.908,31.988000000000003 +2020-03-21 15:15:00,74.28,136.116,35.908,31.988000000000003 +2020-03-21 15:30:00,72.5,135.011,35.908,31.988000000000003 +2020-03-21 15:45:00,76.03,134.32299999999998,35.908,31.988000000000003 +2020-03-21 16:00:00,78.29,136.875,39.249,31.988000000000003 +2020-03-21 16:15:00,79.04,139.828,39.249,31.988000000000003 +2020-03-21 16:30:00,80.66,140.35,39.249,31.988000000000003 +2020-03-21 16:45:00,82.94,139.906,39.249,31.988000000000003 +2020-03-21 17:00:00,86.08,141.953,46.045,31.988000000000003 +2020-03-21 17:15:00,88.1,144.812,46.045,31.988000000000003 +2020-03-21 17:30:00,90.2,147.079,46.045,31.988000000000003 +2020-03-21 17:45:00,92.79,147.321,46.045,31.988000000000003 +2020-03-21 18:00:00,97.5,151.714,48.238,31.988000000000003 +2020-03-21 18:15:00,97.87,154.032,48.238,31.988000000000003 +2020-03-21 18:30:00,100.71,154.118,48.238,31.988000000000003 +2020-03-21 18:45:00,101.17,154.534,48.238,31.988000000000003 +2020-03-21 19:00:00,107.14,153.971,46.785,31.988000000000003 +2020-03-21 19:15:00,105.31,152.583,46.785,31.988000000000003 +2020-03-21 19:30:00,103.63,152.597,46.785,31.988000000000003 +2020-03-21 19:45:00,103.35,150.908,46.785,31.988000000000003 +2020-03-21 20:00:00,97.14,147.029,39.830999999999996,31.988000000000003 +2020-03-21 20:15:00,94.26,144.661,39.830999999999996,31.988000000000003 +2020-03-21 20:30:00,91.73,142.124,39.830999999999996,31.988000000000003 +2020-03-21 20:45:00,90.18,140.87,39.830999999999996,31.988000000000003 +2020-03-21 21:00:00,84.4,137.915,34.063,31.988000000000003 +2020-03-21 21:15:00,85.72,136.566,34.063,31.988000000000003 +2020-03-21 21:30:00,84.05,136.578,34.063,31.988000000000003 +2020-03-21 21:45:00,83.62,135.95600000000002,34.063,31.988000000000003 +2020-03-21 22:00:00,79.7,130.829,34.455999999999996,31.988000000000003 +2020-03-21 22:15:00,78.84,129.39,34.455999999999996,31.988000000000003 +2020-03-21 22:30:00,73.84,126.485,34.455999999999996,31.988000000000003 +2020-03-21 22:45:00,75.89,123.93,34.455999999999996,31.988000000000003 +2020-03-21 23:00:00,70.82,118.62,27.840999999999998,31.988000000000003 +2020-03-21 23:15:00,70.94,114.022,27.840999999999998,31.988000000000003 +2020-03-21 23:30:00,69.79,112.245,27.840999999999998,31.988000000000003 +2020-03-21 23:45:00,68.39,110.39399999999999,27.840999999999998,31.988000000000003 +2020-03-22 00:00:00,60.08,92.443,20.007,31.988000000000003 +2020-03-22 00:15:00,58.06,87.84200000000001,20.007,31.988000000000003 +2020-03-22 00:30:00,55.51,87.055,20.007,31.988000000000003 +2020-03-22 00:45:00,56.45,87.271,20.007,31.988000000000003 +2020-03-22 01:00:00,54.53,88.59700000000001,17.378,31.988000000000003 +2020-03-22 01:15:00,52.88,89.23700000000001,17.378,31.988000000000003 +2020-03-22 01:30:00,52.07,88.521,17.378,31.988000000000003 +2020-03-22 01:45:00,53.98,88.29799999999999,17.378,31.988000000000003 +2020-03-22 02:00:00,48.89,90.07600000000001,16.145,31.988000000000003 +2020-03-22 02:15:00,53.69,89.28200000000001,16.145,31.988000000000003 +2020-03-22 02:30:00,51.28,90.99600000000001,16.145,31.988000000000003 +2020-03-22 02:45:00,53.95,92.603,16.145,31.988000000000003 +2020-03-22 03:00:00,50.72,95.43799999999999,15.427999999999999,31.988000000000003 +2020-03-22 03:15:00,54.24,96.069,15.427999999999999,31.988000000000003 +2020-03-22 03:30:00,51.64,96.738,15.427999999999999,31.988000000000003 +2020-03-22 03:45:00,51.01,98.361,15.427999999999999,31.988000000000003 +2020-03-22 04:00:00,50.48,107.544,16.663,31.988000000000003 +2020-03-22 04:15:00,51.91,116.501,16.663,31.988000000000003 +2020-03-22 04:30:00,51.98,116.48,16.663,31.988000000000003 +2020-03-22 04:45:00,52.83,116.838,16.663,31.988000000000003 +2020-03-22 05:00:00,51.89,132.247,17.271,31.988000000000003 +2020-03-22 05:15:00,52.74,145.017,17.271,31.988000000000003 +2020-03-22 05:30:00,52.54,139.015,17.271,31.988000000000003 +2020-03-22 05:45:00,54.38,135.485,17.271,31.988000000000003 +2020-03-22 06:00:00,55.46,151.58700000000002,17.612000000000002,31.988000000000003 +2020-03-22 06:15:00,53.48,170.449,17.612000000000002,31.988000000000003 +2020-03-22 06:30:00,55.9,163.799,17.612000000000002,31.988000000000003 +2020-03-22 06:45:00,53.71,157.689,17.612000000000002,31.988000000000003 +2020-03-22 07:00:00,55.53,158.501,20.88,31.988000000000003 +2020-03-22 07:15:00,59.67,158.875,20.88,31.988000000000003 +2020-03-22 07:30:00,62.15,159.44299999999998,20.88,31.988000000000003 +2020-03-22 07:45:00,61.32,158.92700000000002,20.88,31.988000000000003 +2020-03-22 08:00:00,67.05,161.621,25.861,31.988000000000003 +2020-03-22 08:15:00,67.97,162.512,25.861,31.988000000000003 +2020-03-22 08:30:00,69.68,161.264,25.861,31.988000000000003 +2020-03-22 08:45:00,69.61,160.52,25.861,31.988000000000003 +2020-03-22 09:00:00,74.12,155.761,27.921999999999997,31.988000000000003 +2020-03-22 09:15:00,75.03,154.89,27.921999999999997,31.988000000000003 +2020-03-22 09:30:00,74.98,155.334,27.921999999999997,31.988000000000003 +2020-03-22 09:45:00,73.91,153.639,27.921999999999997,31.988000000000003 +2020-03-22 10:00:00,76.48,152.053,29.048000000000002,31.988000000000003 +2020-03-22 10:15:00,73.74,151.536,29.048000000000002,31.988000000000003 +2020-03-22 10:30:00,75.72,149.9,29.048000000000002,31.988000000000003 +2020-03-22 10:45:00,74.12,148.77100000000002,29.048000000000002,31.988000000000003 +2020-03-22 11:00:00,72.15,144.928,32.02,31.988000000000003 +2020-03-22 11:15:00,77.67,143.569,32.02,31.988000000000003 +2020-03-22 11:30:00,77.66,143.93200000000002,32.02,31.988000000000003 +2020-03-22 11:45:00,82.07,144.57399999999998,32.02,31.988000000000003 +2020-03-22 12:00:00,72.99,140.191,28.55,31.988000000000003 +2020-03-22 12:15:00,75.01,140.744,28.55,31.988000000000003 +2020-03-22 12:30:00,71.52,139.441,28.55,31.988000000000003 +2020-03-22 12:45:00,69.58,139.036,28.55,31.988000000000003 +2020-03-22 13:00:00,68.21,138.718,25.601999999999997,31.988000000000003 +2020-03-22 13:15:00,67.52,138.237,25.601999999999997,31.988000000000003 +2020-03-22 13:30:00,66.81,135.855,25.601999999999997,31.988000000000003 +2020-03-22 13:45:00,67.38,134.836,25.601999999999997,31.988000000000003 +2020-03-22 14:00:00,60.59,137.475,23.916999999999998,31.988000000000003 +2020-03-22 14:15:00,59.39,136.376,23.916999999999998,31.988000000000003 +2020-03-22 14:30:00,58.18,136.016,23.916999999999998,31.988000000000003 +2020-03-22 14:45:00,60.55,136.768,23.916999999999998,31.988000000000003 +2020-03-22 15:00:00,59.16,136.64700000000002,24.064,31.988000000000003 +2020-03-22 15:15:00,60.01,136.006,24.064,31.988000000000003 +2020-03-22 15:30:00,56.92,135.28799999999998,24.064,31.988000000000003 +2020-03-22 15:45:00,58.07,135.231,24.064,31.988000000000003 +2020-03-22 16:00:00,61.44,138.836,28.189,31.988000000000003 +2020-03-22 16:15:00,62.16,141.086,28.189,31.988000000000003 +2020-03-22 16:30:00,62.09,142.095,28.189,31.988000000000003 +2020-03-22 16:45:00,63.69,141.726,28.189,31.988000000000003 +2020-03-22 17:00:00,63.44,143.861,37.576,31.988000000000003 +2020-03-22 17:15:00,65.92,146.877,37.576,31.988000000000003 +2020-03-22 17:30:00,69.07,149.62,37.576,31.988000000000003 +2020-03-22 17:45:00,69.42,151.817,37.576,31.988000000000003 +2020-03-22 18:00:00,77.2,155.935,42.669,31.988000000000003 +2020-03-22 18:15:00,75.08,159.263,42.669,31.988000000000003 +2020-03-22 18:30:00,76.8,157.589,42.669,31.988000000000003 +2020-03-22 18:45:00,76.23,159.547,42.669,31.988000000000003 +2020-03-22 19:00:00,79.58,159.303,43.538999999999994,31.988000000000003 +2020-03-22 19:15:00,77.87,158.088,43.538999999999994,31.988000000000003 +2020-03-22 19:30:00,78.53,157.924,43.538999999999994,31.988000000000003 +2020-03-22 19:45:00,80.41,157.30700000000002,43.538999999999994,31.988000000000003 +2020-03-22 20:00:00,79.37,153.393,37.330999999999996,31.988000000000003 +2020-03-22 20:15:00,79.52,151.787,37.330999999999996,31.988000000000003 +2020-03-22 20:30:00,78.47,150.509,37.330999999999996,31.988000000000003 +2020-03-22 20:45:00,77.25,147.811,37.330999999999996,31.988000000000003 +2020-03-22 21:00:00,74.47,142.727,33.856,31.988000000000003 +2020-03-22 21:15:00,73.54,140.791,33.856,31.988000000000003 +2020-03-22 21:30:00,73.03,140.843,33.856,31.988000000000003 +2020-03-22 21:45:00,72.54,140.459,33.856,31.988000000000003 +2020-03-22 22:00:00,69.45,134.984,34.711999999999996,31.988000000000003 +2020-03-22 22:15:00,69.2,132.468,34.711999999999996,31.988000000000003 +2020-03-22 22:30:00,64.59,126.84,34.711999999999996,31.988000000000003 +2020-03-22 22:45:00,67.2,123.23,34.711999999999996,31.988000000000003 +2020-03-22 23:00:00,62.87,115.586,29.698,31.988000000000003 +2020-03-22 23:15:00,62.97,112.869,29.698,31.988000000000003 +2020-03-22 23:30:00,58.12,111.583,29.698,31.988000000000003 +2020-03-22 23:45:00,60.08,110.514,29.698,31.988000000000003 +2020-03-23 00:00:00,82.34,95.79,29.983,32.166 +2020-03-23 00:15:00,83.55,93.75399999999999,29.983,32.166 +2020-03-23 00:30:00,79.21,92.929,29.983,32.166 +2020-03-23 00:45:00,78.16,92.605,29.983,32.166 +2020-03-23 01:00:00,79.25,94.01700000000001,29.122,32.166 +2020-03-23 01:15:00,80.78,94.23700000000001,29.122,32.166 +2020-03-23 01:30:00,76.93,93.65899999999999,29.122,32.166 +2020-03-23 01:45:00,77.19,93.501,29.122,32.166 +2020-03-23 02:00:00,77.95,95.383,28.676,32.166 +2020-03-23 02:15:00,78.39,95.369,28.676,32.166 +2020-03-23 02:30:00,81.25,97.412,28.676,32.166 +2020-03-23 02:45:00,76.31,98.49799999999999,28.676,32.166 +2020-03-23 03:00:00,80.56,102.464,26.552,32.166 +2020-03-23 03:15:00,79.77,104.568,26.552,32.166 +2020-03-23 03:30:00,79.74,105.24799999999999,26.552,32.166 +2020-03-23 03:45:00,77.39,106.31200000000001,26.552,32.166 +2020-03-23 04:00:00,81.0,119.811,27.44,32.166 +2020-03-23 04:15:00,84.58,132.873,27.44,32.166 +2020-03-23 04:30:00,82.05,134.373,27.44,32.166 +2020-03-23 04:45:00,82.35,134.965,27.44,32.166 +2020-03-23 05:00:00,81.8,164.62599999999998,36.825,32.166 +2020-03-23 05:15:00,86.07,196.108,36.825,32.166 +2020-03-23 05:30:00,94.52,189.77700000000002,36.825,32.166 +2020-03-23 05:45:00,100.38,180.954,36.825,32.166 +2020-03-23 06:00:00,108.8,180.22799999999998,56.589,32.166 +2020-03-23 06:15:00,114.59,184.75799999999998,56.589,32.166 +2020-03-23 06:30:00,111.33,185.50099999999998,56.589,32.166 +2020-03-23 06:45:00,111.22,187.83,56.589,32.166 +2020-03-23 07:00:00,120.07,190.862,67.49,32.166 +2020-03-23 07:15:00,121.71,192.895,67.49,32.166 +2020-03-23 07:30:00,125.53,192.547,67.49,32.166 +2020-03-23 07:45:00,126.83,190.105,67.49,32.166 +2020-03-23 08:00:00,132.73,188.553,60.028,32.166 +2020-03-23 08:15:00,130.98,187.391,60.028,32.166 +2020-03-23 08:30:00,131.58,182.579,60.028,32.166 +2020-03-23 08:45:00,133.7,179.28900000000002,60.028,32.166 +2020-03-23 09:00:00,132.55,173.55599999999998,55.018,32.166 +2020-03-23 09:15:00,133.07,169.37900000000002,55.018,32.166 +2020-03-23 09:30:00,135.0,168.774,55.018,32.166 +2020-03-23 09:45:00,134.08,166.667,55.018,32.166 +2020-03-23 10:00:00,129.98,164.472,51.183,32.166 +2020-03-23 10:15:00,130.53,163.696,51.183,32.166 +2020-03-23 10:30:00,128.68,161.246,51.183,32.166 +2020-03-23 10:45:00,130.19,160.298,51.183,32.166 +2020-03-23 11:00:00,126.38,154.475,50.065,32.166 +2020-03-23 11:15:00,128.38,154.691,50.065,32.166 +2020-03-23 11:30:00,129.3,156.38,50.065,32.166 +2020-03-23 11:45:00,130.58,156.843,50.065,32.166 +2020-03-23 12:00:00,126.27,153.531,48.141999999999996,32.166 +2020-03-23 12:15:00,128.79,154.124,48.141999999999996,32.166 +2020-03-23 12:30:00,127.53,152.702,48.141999999999996,32.166 +2020-03-23 12:45:00,127.44,153.553,48.141999999999996,32.166 +2020-03-23 13:00:00,125.66,154.064,47.887,32.166 +2020-03-23 13:15:00,135.19,152.185,47.887,32.166 +2020-03-23 13:30:00,135.03,149.401,47.887,32.166 +2020-03-23 13:45:00,132.18,148.64700000000002,47.887,32.166 +2020-03-23 14:00:00,128.57,150.628,48.571000000000005,32.166 +2020-03-23 14:15:00,127.42,149.127,48.571000000000005,32.166 +2020-03-23 14:30:00,130.25,148.237,48.571000000000005,32.166 +2020-03-23 14:45:00,133.63,149.51,48.571000000000005,32.166 +2020-03-23 15:00:00,134.03,150.812,49.937,32.166 +2020-03-23 15:15:00,132.5,148.795,49.937,32.166 +2020-03-23 15:30:00,125.71,147.537,49.937,32.166 +2020-03-23 15:45:00,123.67,146.966,49.937,32.166 +2020-03-23 16:00:00,123.22,150.901,52.963,32.166 +2020-03-23 16:15:00,127.85,152.52,52.963,32.166 +2020-03-23 16:30:00,129.07,152.556,52.963,32.166 +2020-03-23 16:45:00,128.76,151.165,52.963,32.166 +2020-03-23 17:00:00,126.16,152.803,61.163999999999994,32.166 +2020-03-23 17:15:00,121.94,155.144,61.163999999999994,32.166 +2020-03-23 17:30:00,125.11,157.346,61.163999999999994,32.166 +2020-03-23 17:45:00,128.06,158.218,61.163999999999994,32.166 +2020-03-23 18:00:00,127.94,162.369,63.788999999999994,32.166 +2020-03-23 18:15:00,126.59,163.451,63.788999999999994,32.166 +2020-03-23 18:30:00,126.68,162.086,63.788999999999994,32.166 +2020-03-23 18:45:00,129.76,165.52599999999998,63.788999999999994,32.166 +2020-03-23 19:00:00,131.55,163.859,63.913000000000004,32.166 +2020-03-23 19:15:00,124.43,162.089,63.913000000000004,32.166 +2020-03-23 19:30:00,127.1,162.246,63.913000000000004,32.166 +2020-03-23 19:45:00,128.86,160.82399999999998,63.913000000000004,32.166 +2020-03-23 20:00:00,128.96,154.60299999999998,65.44,32.166 +2020-03-23 20:15:00,120.05,151.42600000000002,65.44,32.166 +2020-03-23 20:30:00,119.49,148.838,65.44,32.166 +2020-03-23 20:45:00,118.33,147.517,65.44,32.166 +2020-03-23 21:00:00,111.59,142.67700000000002,59.117,32.166 +2020-03-23 21:15:00,108.56,139.935,59.117,32.166 +2020-03-23 21:30:00,108.54,139.444,59.117,32.166 +2020-03-23 21:45:00,110.95,138.616,59.117,32.166 +2020-03-23 22:00:00,104.38,130.222,52.301,32.166 +2020-03-23 22:15:00,99.93,127.251,52.301,32.166 +2020-03-23 22:30:00,99.37,112.665,52.301,32.166 +2020-03-23 22:45:00,98.94,105.17399999999999,52.301,32.166 +2020-03-23 23:00:00,93.28,98.132,44.373000000000005,32.166 +2020-03-23 23:15:00,87.35,97.09299999999999,44.373000000000005,32.166 +2020-03-23 23:30:00,90.84,98.01299999999999,44.373000000000005,32.166 +2020-03-23 23:45:00,92.8,98.931,44.373000000000005,32.166 +2020-03-24 00:00:00,87.21,94.149,44.647,32.166 +2020-03-24 00:15:00,81.24,93.507,44.647,32.166 +2020-03-24 00:30:00,77.75,92.161,44.647,32.166 +2020-03-24 00:45:00,80.38,91.33200000000001,44.647,32.166 +2020-03-24 01:00:00,79.49,92.387,41.433,32.166 +2020-03-24 01:15:00,81.5,92.28,41.433,32.166 +2020-03-24 01:30:00,81.05,91.77600000000001,41.433,32.166 +2020-03-24 01:45:00,82.59,91.697,41.433,32.166 +2020-03-24 02:00:00,74.4,93.40899999999999,39.909,32.166 +2020-03-24 02:15:00,83.06,93.669,39.909,32.166 +2020-03-24 02:30:00,82.28,95.147,39.909,32.166 +2020-03-24 02:45:00,84.99,96.35,39.909,32.166 +2020-03-24 03:00:00,80.16,99.23100000000001,39.14,32.166 +2020-03-24 03:15:00,82.68,100.959,39.14,32.166 +2020-03-24 03:30:00,86.24,101.995,39.14,32.166 +2020-03-24 03:45:00,85.57,102.86200000000001,39.14,32.166 +2020-03-24 04:00:00,85.36,115.8,40.015,32.166 +2020-03-24 04:15:00,84.21,128.582,40.015,32.166 +2020-03-24 04:30:00,88.34,129.81799999999998,40.015,32.166 +2020-03-24 04:45:00,83.04,131.484,40.015,32.166 +2020-03-24 05:00:00,83.64,165.446,44.93600000000001,32.166 +2020-03-24 05:15:00,88.14,196.958,44.93600000000001,32.166 +2020-03-24 05:30:00,90.73,189.49900000000002,44.93600000000001,32.166 +2020-03-24 05:45:00,92.93,180.458,44.93600000000001,32.166 +2020-03-24 06:00:00,104.65,179.174,57.271,32.166 +2020-03-24 06:15:00,109.33,185.017,57.271,32.166 +2020-03-24 06:30:00,113.7,185.11599999999999,57.271,32.166 +2020-03-24 06:45:00,113.97,186.847,57.271,32.166 +2020-03-24 07:00:00,123.2,189.797,68.352,32.166 +2020-03-24 07:15:00,124.58,191.597,68.352,32.166 +2020-03-24 07:30:00,126.5,190.78599999999997,68.352,32.166 +2020-03-24 07:45:00,129.13,188.18099999999998,68.352,32.166 +2020-03-24 08:00:00,133.3,186.676,60.717,32.166 +2020-03-24 08:15:00,134.37,184.57,60.717,32.166 +2020-03-24 08:30:00,134.29,179.618,60.717,32.166 +2020-03-24 08:45:00,134.4,175.868,60.717,32.166 +2020-03-24 09:00:00,132.5,169.576,54.603,32.166 +2020-03-24 09:15:00,131.97,166.65,54.603,32.166 +2020-03-24 09:30:00,130.44,166.808,54.603,32.166 +2020-03-24 09:45:00,126.35,164.928,54.603,32.166 +2020-03-24 10:00:00,123.85,161.881,52.308,32.166 +2020-03-24 10:15:00,123.58,160.246,52.308,32.166 +2020-03-24 10:30:00,121.34,157.974,52.308,32.166 +2020-03-24 10:45:00,117.88,157.553,52.308,32.166 +2020-03-24 11:00:00,119.32,152.941,51.838,32.166 +2020-03-24 11:15:00,119.66,153.012,51.838,32.166 +2020-03-24 11:30:00,122.6,153.441,51.838,32.166 +2020-03-24 11:45:00,119.94,154.38299999999998,51.838,32.166 +2020-03-24 12:00:00,116.79,149.907,50.375,32.166 +2020-03-24 12:15:00,116.39,150.251,50.375,32.166 +2020-03-24 12:30:00,117.13,149.612,50.375,32.166 +2020-03-24 12:45:00,113.27,150.39600000000002,50.375,32.166 +2020-03-24 13:00:00,113.92,150.511,50.735,32.166 +2020-03-24 13:15:00,118.49,148.784,50.735,32.166 +2020-03-24 13:30:00,117.98,146.963,50.735,32.166 +2020-03-24 13:45:00,116.71,146.122,50.735,32.166 +2020-03-24 14:00:00,115.13,148.52100000000002,50.946000000000005,32.166 +2020-03-24 14:15:00,113.45,147.077,50.946000000000005,32.166 +2020-03-24 14:30:00,110.95,146.75799999999998,50.946000000000005,32.166 +2020-03-24 14:45:00,110.16,147.769,50.946000000000005,32.166 +2020-03-24 15:00:00,114.6,148.683,53.18,32.166 +2020-03-24 15:15:00,116.6,147.15,53.18,32.166 +2020-03-24 15:30:00,109.45,145.975,53.18,32.166 +2020-03-24 15:45:00,117.18,145.137,53.18,32.166 +2020-03-24 16:00:00,117.12,149.214,54.928999999999995,32.166 +2020-03-24 16:15:00,118.32,151.22299999999998,54.928999999999995,32.166 +2020-03-24 16:30:00,119.29,151.694,54.928999999999995,32.166 +2020-03-24 16:45:00,117.54,150.678,54.928999999999995,32.166 +2020-03-24 17:00:00,119.96,152.85299999999998,60.913000000000004,32.166 +2020-03-24 17:15:00,118.56,155.32399999999998,60.913000000000004,32.166 +2020-03-24 17:30:00,119.39,157.963,60.913000000000004,32.166 +2020-03-24 17:45:00,119.91,158.639,60.913000000000004,32.166 +2020-03-24 18:00:00,123.8,162.444,62.214,32.166 +2020-03-24 18:15:00,123.93,163.588,62.214,32.166 +2020-03-24 18:30:00,123.06,161.892,62.214,32.166 +2020-03-24 18:45:00,120.31,165.94099999999997,62.214,32.166 +2020-03-24 19:00:00,128.27,163.985,62.38,32.166 +2020-03-24 19:15:00,128.22,162.053,62.38,32.166 +2020-03-24 19:30:00,127.86,161.632,62.38,32.166 +2020-03-24 19:45:00,126.09,160.375,62.38,32.166 +2020-03-24 20:00:00,128.41,154.361,65.018,32.166 +2020-03-24 20:15:00,124.95,150.27200000000002,65.018,32.166 +2020-03-24 20:30:00,121.53,148.543,65.018,32.166 +2020-03-24 20:45:00,118.91,146.891,65.018,32.166 +2020-03-24 21:00:00,112.76,141.732,56.416000000000004,32.166 +2020-03-24 21:15:00,116.6,139.299,56.416000000000004,32.166 +2020-03-24 21:30:00,112.66,138.269,56.416000000000004,32.166 +2020-03-24 21:45:00,107.6,137.704,56.416000000000004,32.166 +2020-03-24 22:00:00,104.55,130.731,52.846000000000004,32.166 +2020-03-24 22:15:00,103.78,127.48100000000001,52.846000000000004,32.166 +2020-03-24 22:30:00,102.03,113.005,52.846000000000004,32.166 +2020-03-24 22:45:00,97.36,105.73200000000001,52.846000000000004,32.166 +2020-03-24 23:00:00,93.61,98.484,44.435,32.166 +2020-03-24 23:15:00,97.37,97.18700000000001,44.435,32.166 +2020-03-24 23:30:00,91.61,97.818,44.435,32.166 +2020-03-24 23:45:00,86.1,98.45700000000001,44.435,32.166 +2020-03-25 00:00:00,86.32,93.757,42.527,32.166 +2020-03-25 00:15:00,85.72,93.12899999999999,42.527,32.166 +2020-03-25 00:30:00,83.35,91.76899999999999,42.527,32.166 +2020-03-25 00:45:00,80.67,90.944,42.527,32.166 +2020-03-25 01:00:00,76.45,91.96600000000001,38.655,32.166 +2020-03-25 01:15:00,74.51,91.84,38.655,32.166 +2020-03-25 01:30:00,78.1,91.316,38.655,32.166 +2020-03-25 01:45:00,84.0,91.244,38.655,32.166 +2020-03-25 02:00:00,80.41,92.943,36.912,32.166 +2020-03-25 02:15:00,80.95,93.19200000000001,36.912,32.166 +2020-03-25 02:30:00,75.56,94.69,36.912,32.166 +2020-03-25 02:45:00,79.65,95.89399999999999,36.912,32.166 +2020-03-25 03:00:00,81.67,98.792,36.98,32.166 +2020-03-25 03:15:00,81.92,100.49799999999999,36.98,32.166 +2020-03-25 03:30:00,82.53,101.52600000000001,36.98,32.166 +2020-03-25 03:45:00,81.28,102.40899999999999,36.98,32.166 +2020-03-25 04:00:00,76.87,115.345,38.052,32.166 +2020-03-25 04:15:00,82.91,128.107,38.052,32.166 +2020-03-25 04:30:00,87.12,129.356,38.052,32.166 +2020-03-25 04:45:00,89.8,131.01,38.052,32.166 +2020-03-25 05:00:00,84.78,164.93,42.455,32.166 +2020-03-25 05:15:00,86.31,196.429,42.455,32.166 +2020-03-25 05:30:00,91.91,188.94799999999998,42.455,32.166 +2020-03-25 05:45:00,94.23,179.926,42.455,32.166 +2020-03-25 06:00:00,103.12,178.65200000000002,57.986000000000004,32.166 +2020-03-25 06:15:00,110.12,184.49099999999999,57.986000000000004,32.166 +2020-03-25 06:30:00,113.23,184.548,57.986000000000004,32.166 +2020-03-25 06:45:00,114.61,186.25900000000001,57.986000000000004,32.166 +2020-03-25 07:00:00,121.68,189.222,71.868,32.166 +2020-03-25 07:15:00,122.82,190.99200000000002,71.868,32.166 +2020-03-25 07:30:00,123.06,190.141,71.868,32.166 +2020-03-25 07:45:00,125.56,187.507,71.868,32.166 +2020-03-25 08:00:00,131.42,185.979,62.225,32.166 +2020-03-25 08:15:00,131.94,183.877,62.225,32.166 +2020-03-25 08:30:00,129.5,178.877,62.225,32.166 +2020-03-25 08:45:00,130.38,175.15099999999998,62.225,32.166 +2020-03-25 09:00:00,128.7,168.872,58.802,32.166 +2020-03-25 09:15:00,130.92,165.947,58.802,32.166 +2020-03-25 09:30:00,130.3,166.12400000000002,58.802,32.166 +2020-03-25 09:45:00,129.49,164.265,58.802,32.166 +2020-03-25 10:00:00,129.92,161.23,54.122,32.166 +2020-03-25 10:15:00,129.34,159.642,54.122,32.166 +2020-03-25 10:30:00,131.48,157.39600000000002,54.122,32.166 +2020-03-25 10:45:00,131.23,156.995,54.122,32.166 +2020-03-25 11:00:00,133.57,152.376,54.368,32.166 +2020-03-25 11:15:00,133.01,152.469,54.368,32.166 +2020-03-25 11:30:00,135.91,152.905,54.368,32.166 +2020-03-25 11:45:00,134.24,153.866,54.368,32.166 +2020-03-25 12:00:00,134.65,149.411,52.74,32.166 +2020-03-25 12:15:00,134.3,149.766,52.74,32.166 +2020-03-25 12:30:00,131.7,149.085,52.74,32.166 +2020-03-25 12:45:00,131.3,149.868,52.74,32.166 +2020-03-25 13:00:00,128.24,150.028,52.544,32.166 +2020-03-25 13:15:00,135.9,148.285,52.544,32.166 +2020-03-25 13:30:00,134.63,146.457,52.544,32.166 +2020-03-25 13:45:00,130.07,145.619,52.544,32.166 +2020-03-25 14:00:00,125.5,148.08700000000002,53.602,32.166 +2020-03-25 14:15:00,124.21,146.62,53.602,32.166 +2020-03-25 14:30:00,121.48,146.262,53.602,32.166 +2020-03-25 14:45:00,124.82,147.278,53.602,32.166 +2020-03-25 15:00:00,128.87,148.209,55.59,32.166 +2020-03-25 15:15:00,132.49,146.649,55.59,32.166 +2020-03-25 15:30:00,130.48,145.423,55.59,32.166 +2020-03-25 15:45:00,125.19,144.566,55.59,32.166 +2020-03-25 16:00:00,124.83,148.662,57.586999999999996,32.166 +2020-03-25 16:15:00,120.76,150.645,57.586999999999996,32.166 +2020-03-25 16:30:00,126.07,151.116,57.586999999999996,32.166 +2020-03-25 16:45:00,129.45,150.047,57.586999999999996,32.166 +2020-03-25 17:00:00,129.43,152.254,62.111999999999995,32.166 +2020-03-25 17:15:00,125.36,154.717,62.111999999999995,32.166 +2020-03-25 17:30:00,128.18,157.368,62.111999999999995,32.166 +2020-03-25 17:45:00,127.2,158.043,62.111999999999995,32.166 +2020-03-25 18:00:00,131.15,161.856,64.605,32.166 +2020-03-25 18:15:00,124.35,163.05700000000002,64.605,32.166 +2020-03-25 18:30:00,128.29,161.352,64.605,32.166 +2020-03-25 18:45:00,127.92,165.417,64.605,32.166 +2020-03-25 19:00:00,132.44,163.43200000000002,65.55199999999999,32.166 +2020-03-25 19:15:00,123.83,161.515,65.55199999999999,32.166 +2020-03-25 19:30:00,129.2,161.12,65.55199999999999,32.166 +2020-03-25 19:45:00,131.36,159.905,65.55199999999999,32.166 +2020-03-25 20:00:00,129.62,153.862,66.778,32.166 +2020-03-25 20:15:00,119.8,149.78799999999998,66.778,32.166 +2020-03-25 20:30:00,115.17,148.091,66.778,32.166 +2020-03-25 20:45:00,115.5,146.44899999999998,66.778,32.166 +2020-03-25 21:00:00,109.54,141.285,56.103,32.166 +2020-03-25 21:15:00,115.91,138.856,56.103,32.166 +2020-03-25 21:30:00,110.45,137.822,56.103,32.166 +2020-03-25 21:45:00,111.02,137.282,56.103,32.166 +2020-03-25 22:00:00,101.35,130.30200000000002,51.371,32.166 +2020-03-25 22:15:00,99.56,127.07799999999999,51.371,32.166 +2020-03-25 22:30:00,100.15,112.553,51.371,32.166 +2020-03-25 22:45:00,100.47,105.279,51.371,32.166 +2020-03-25 23:00:00,91.64,98.023,42.798,32.166 +2020-03-25 23:15:00,90.67,96.74799999999999,42.798,32.166 +2020-03-25 23:30:00,91.31,97.381,42.798,32.166 +2020-03-25 23:45:00,89.57,98.04299999999999,42.798,32.166 +2020-03-26 00:00:00,81.94,93.36200000000001,39.069,32.166 +2020-03-26 00:15:00,81.2,92.749,39.069,32.166 +2020-03-26 00:30:00,84.64,91.374,39.069,32.166 +2020-03-26 00:45:00,84.28,90.554,39.069,32.166 +2020-03-26 01:00:00,81.91,91.542,37.043,32.166 +2020-03-26 01:15:00,73.61,91.398,37.043,32.166 +2020-03-26 01:30:00,80.41,90.853,37.043,32.166 +2020-03-26 01:45:00,81.37,90.79,37.043,32.166 +2020-03-26 02:00:00,77.06,92.475,34.625,32.166 +2020-03-26 02:15:00,76.31,92.712,34.625,32.166 +2020-03-26 02:30:00,71.77,94.23,34.625,32.166 +2020-03-26 02:45:00,75.66,95.43700000000001,34.625,32.166 +2020-03-26 03:00:00,77.66,98.35,33.812,32.166 +2020-03-26 03:15:00,81.48,100.03200000000001,33.812,32.166 +2020-03-26 03:30:00,74.62,101.055,33.812,32.166 +2020-03-26 03:45:00,78.13,101.95299999999999,33.812,32.166 +2020-03-26 04:00:00,75.81,114.887,35.236999999999995,32.166 +2020-03-26 04:15:00,75.77,127.63,35.236999999999995,32.166 +2020-03-26 04:30:00,74.86,128.892,35.236999999999995,32.166 +2020-03-26 04:45:00,78.41,130.533,35.236999999999995,32.166 +2020-03-26 05:00:00,84.12,164.412,40.375,32.166 +2020-03-26 05:15:00,86.05,195.898,40.375,32.166 +2020-03-26 05:30:00,87.24,188.39700000000002,40.375,32.166 +2020-03-26 05:45:00,92.96,179.391,40.375,32.166 +2020-03-26 06:00:00,98.47,178.128,52.316,32.166 +2020-03-26 06:15:00,106.48,183.963,52.316,32.166 +2020-03-26 06:30:00,108.98,183.97799999999998,52.316,32.166 +2020-03-26 06:45:00,110.31,185.66400000000002,52.316,32.166 +2020-03-26 07:00:00,119.63,188.642,64.115,32.166 +2020-03-26 07:15:00,121.23,190.38400000000001,64.115,32.166 +2020-03-26 07:30:00,122.47,189.49099999999999,64.115,32.166 +2020-03-26 07:45:00,125.54,186.829,64.115,32.166 +2020-03-26 08:00:00,126.35,185.27700000000002,55.033,32.166 +2020-03-26 08:15:00,127.67,183.18099999999998,55.033,32.166 +2020-03-26 08:30:00,128.36,178.132,55.033,32.166 +2020-03-26 08:45:00,129.96,174.43099999999998,55.033,32.166 +2020-03-26 09:00:00,128.86,168.16400000000002,49.411,32.166 +2020-03-26 09:15:00,126.99,165.24200000000002,49.411,32.166 +2020-03-26 09:30:00,128.41,165.438,49.411,32.166 +2020-03-26 09:45:00,128.5,163.6,49.411,32.166 +2020-03-26 10:00:00,125.96,160.575,45.82899999999999,32.166 +2020-03-26 10:15:00,126.19,159.036,45.82899999999999,32.166 +2020-03-26 10:30:00,122.45,156.815,45.82899999999999,32.166 +2020-03-26 10:45:00,122.6,156.434,45.82899999999999,32.166 +2020-03-26 11:00:00,124.89,151.809,44.333,32.166 +2020-03-26 11:15:00,127.98,151.92600000000002,44.333,32.166 +2020-03-26 11:30:00,126.17,152.36700000000002,44.333,32.166 +2020-03-26 11:45:00,127.4,153.346,44.333,32.166 +2020-03-26 12:00:00,122.97,148.91299999999998,42.95,32.166 +2020-03-26 12:15:00,124.07,149.278,42.95,32.166 +2020-03-26 12:30:00,129.47,148.55700000000002,42.95,32.166 +2020-03-26 12:45:00,132.19,149.338,42.95,32.166 +2020-03-26 13:00:00,126.6,149.54399999999998,42.489,32.166 +2020-03-26 13:15:00,121.2,147.784,42.489,32.166 +2020-03-26 13:30:00,122.77,145.94799999999998,42.489,32.166 +2020-03-26 13:45:00,122.03,145.113,42.489,32.166 +2020-03-26 14:00:00,118.12,147.65200000000002,43.448,32.166 +2020-03-26 14:15:00,120.48,146.16,43.448,32.166 +2020-03-26 14:30:00,124.87,145.765,43.448,32.166 +2020-03-26 14:45:00,124.56,146.787,43.448,32.166 +2020-03-26 15:00:00,122.41,147.733,45.994,32.166 +2020-03-26 15:15:00,117.85,146.145,45.994,32.166 +2020-03-26 15:30:00,118.99,144.86700000000002,45.994,32.166 +2020-03-26 15:45:00,120.98,143.993,45.994,32.166 +2020-03-26 16:00:00,116.33,148.107,48.167,32.166 +2020-03-26 16:15:00,113.12,150.065,48.167,32.166 +2020-03-26 16:30:00,110.23,150.535,48.167,32.166 +2020-03-26 16:45:00,103.8,149.41299999999998,48.167,32.166 +2020-03-26 17:00:00,103.8,151.651,52.637,32.166 +2020-03-26 17:15:00,109.33,154.106,52.637,32.166 +2020-03-26 17:30:00,115.38,156.77100000000002,52.637,32.166 +2020-03-26 17:45:00,118.72,157.446,52.637,32.166 +2020-03-26 18:00:00,121.33,161.264,55.739,32.166 +2020-03-26 18:15:00,118.59,162.52200000000002,55.739,32.166 +2020-03-26 18:30:00,113.07,160.809,55.739,32.166 +2020-03-26 18:45:00,113.68,164.889,55.739,32.166 +2020-03-26 19:00:00,113.24,162.876,56.36600000000001,32.166 +2020-03-26 19:15:00,115.41,160.976,56.36600000000001,32.166 +2020-03-26 19:30:00,121.08,160.605,56.36600000000001,32.166 +2020-03-26 19:45:00,117.92,159.431,56.36600000000001,32.166 +2020-03-26 20:00:00,115.8,153.36,56.338,32.166 +2020-03-26 20:15:00,112.12,149.299,56.338,32.166 +2020-03-26 20:30:00,109.36,147.637,56.338,32.166 +2020-03-26 20:45:00,108.08,146.005,56.338,32.166 +2020-03-26 21:00:00,100.24,140.836,49.894,32.166 +2020-03-26 21:15:00,98.69,138.41,49.894,32.166 +2020-03-26 21:30:00,92.64,137.374,49.894,32.166 +2020-03-26 21:45:00,91.85,136.857,49.894,32.166 +2020-03-26 22:00:00,85.8,129.87,46.687,32.166 +2020-03-26 22:15:00,85.45,126.67299999999999,46.687,32.166 +2020-03-26 22:30:00,78.83,112.09899999999999,46.687,32.166 +2020-03-26 22:45:00,80.03,104.823,46.687,32.166 +2020-03-26 23:00:00,73.44,97.556,39.211,32.166 +2020-03-26 23:15:00,74.45,96.307,39.211,32.166 +2020-03-26 23:30:00,71.79,96.94200000000001,39.211,32.166 +2020-03-26 23:45:00,69.13,97.62700000000001,39.211,32.166 +2020-03-27 00:00:00,81.29,91.55799999999999,36.616,32.166 +2020-03-27 00:15:00,83.4,91.184,36.616,32.166 +2020-03-27 00:30:00,84.17,89.77600000000001,36.616,32.166 +2020-03-27 00:45:00,83.96,89.18,36.616,32.166 +2020-03-27 01:00:00,77.52,89.76700000000001,33.799,32.166 +2020-03-27 01:15:00,76.7,90.131,33.799,32.166 +2020-03-27 01:30:00,76.43,89.62,33.799,32.166 +2020-03-27 01:45:00,77.15,89.56700000000001,33.799,32.166 +2020-03-27 02:00:00,76.99,91.602,32.968,32.166 +2020-03-27 02:15:00,77.28,91.721,32.968,32.166 +2020-03-27 02:30:00,77.43,93.932,32.968,32.166 +2020-03-27 02:45:00,79.33,94.956,32.968,32.166 +2020-03-27 03:00:00,79.5,97.36200000000001,33.533,32.166 +2020-03-27 03:15:00,77.66,99.35600000000001,33.533,32.166 +2020-03-27 03:30:00,81.27,100.28299999999999,33.533,32.166 +2020-03-27 03:45:00,79.74,101.734,33.533,32.166 +2020-03-27 04:00:00,79.68,114.887,36.102,32.166 +2020-03-27 04:15:00,79.42,126.90899999999999,36.102,32.166 +2020-03-27 04:30:00,77.92,128.674,36.102,32.166 +2020-03-27 04:45:00,80.87,129.208,36.102,32.166 +2020-03-27 05:00:00,85.69,161.907,42.423,32.166 +2020-03-27 05:15:00,87.55,194.855,42.423,32.166 +2020-03-27 05:30:00,89.94,188.229,42.423,32.166 +2020-03-27 05:45:00,94.07,179.046,42.423,32.166 +2020-03-27 06:00:00,101.92,178.21599999999998,55.38,32.166 +2020-03-27 06:15:00,105.46,182.955,55.38,32.166 +2020-03-27 06:30:00,108.23,182.237,55.38,32.166 +2020-03-27 06:45:00,111.45,185.12599999999998,55.38,32.166 +2020-03-27 07:00:00,118.3,187.672,65.929,32.166 +2020-03-27 07:15:00,118.8,190.475,65.929,32.166 +2020-03-27 07:30:00,122.1,188.794,65.929,32.166 +2020-03-27 07:45:00,124.3,185.33900000000003,65.929,32.166 +2020-03-27 08:00:00,127.28,183.12400000000002,57.336999999999996,32.166 +2020-03-27 08:15:00,127.22,180.92,57.336999999999996,32.166 +2020-03-27 08:30:00,127.94,176.578,57.336999999999996,32.166 +2020-03-27 08:45:00,128.1,171.59599999999998,57.336999999999996,32.166 +2020-03-27 09:00:00,127.49,165.024,54.226000000000006,32.166 +2020-03-27 09:15:00,128.67,163.12,54.226000000000006,32.166 +2020-03-27 09:30:00,129.09,162.789,54.226000000000006,32.166 +2020-03-27 09:45:00,128.83,160.995,54.226000000000006,32.166 +2020-03-27 10:00:00,127.42,156.991,51.298,32.166 +2020-03-27 10:15:00,127.88,156.01,51.298,32.166 +2020-03-27 10:30:00,126.44,153.909,51.298,32.166 +2020-03-27 10:45:00,127.39,153.159,51.298,32.166 +2020-03-27 11:00:00,126.52,148.564,50.839,32.166 +2020-03-27 11:15:00,127.61,147.666,50.839,32.166 +2020-03-27 11:30:00,125.8,149.467,50.839,32.166 +2020-03-27 11:45:00,125.03,150.244,50.839,32.166 +2020-03-27 12:00:00,122.0,146.861,47.976000000000006,32.166 +2020-03-27 12:15:00,122.03,145.314,47.976000000000006,32.166 +2020-03-27 12:30:00,121.02,144.716,47.976000000000006,32.166 +2020-03-27 12:45:00,120.19,145.718,47.976000000000006,32.166 +2020-03-27 13:00:00,119.24,146.917,46.299,32.166 +2020-03-27 13:15:00,120.7,145.874,46.299,32.166 +2020-03-27 13:30:00,117.46,144.253,46.299,32.166 +2020-03-27 13:45:00,119.26,143.44799999999998,46.299,32.166 +2020-03-27 14:00:00,117.14,144.891,44.971000000000004,32.166 +2020-03-27 14:15:00,113.78,143.339,44.971000000000004,32.166 +2020-03-27 14:30:00,110.02,143.72899999999998,44.971000000000004,32.166 +2020-03-27 14:45:00,113.2,144.83100000000002,44.971000000000004,32.166 +2020-03-27 15:00:00,114.23,145.365,47.48,32.166 +2020-03-27 15:15:00,112.17,143.32,47.48,32.166 +2020-03-27 15:30:00,106.47,140.567,47.48,32.166 +2020-03-27 15:45:00,107.87,139.994,47.48,32.166 +2020-03-27 16:00:00,110.03,142.95,50.648,32.166 +2020-03-27 16:15:00,110.03,145.256,50.648,32.166 +2020-03-27 16:30:00,112.39,145.755,50.648,32.166 +2020-03-27 16:45:00,112.32,144.27,50.648,32.166 +2020-03-27 17:00:00,115.94,147.203,56.251000000000005,32.166 +2020-03-27 17:15:00,116.05,149.262,56.251000000000005,32.166 +2020-03-27 17:30:00,117.7,151.722,56.251000000000005,32.166 +2020-03-27 17:45:00,118.13,152.159,56.251000000000005,32.166 +2020-03-27 18:00:00,121.7,156.57299999999998,58.982,32.166 +2020-03-27 18:15:00,122.86,157.303,58.982,32.166 +2020-03-27 18:30:00,122.89,155.875,58.982,32.166 +2020-03-27 18:45:00,124.43,160.083,58.982,32.166 +2020-03-27 19:00:00,125.7,159.037,57.293,32.166 +2020-03-27 19:15:00,121.2,158.434,57.293,32.166 +2020-03-27 19:30:00,121.4,157.769,57.293,32.166 +2020-03-27 19:45:00,119.95,155.972,57.293,32.166 +2020-03-27 20:00:00,116.48,149.879,59.433,32.166 +2020-03-27 20:15:00,114.79,146.07,59.433,32.166 +2020-03-27 20:30:00,113.96,144.265,59.433,32.166 +2020-03-27 20:45:00,113.11,142.858,59.433,32.166 +2020-03-27 21:00:00,108.02,138.48,52.153999999999996,32.166 +2020-03-27 21:15:00,105.58,136.90200000000002,52.153999999999996,32.166 +2020-03-27 21:30:00,99.98,135.85399999999998,52.153999999999996,32.166 +2020-03-27 21:45:00,100.41,135.86,52.153999999999996,32.166 +2020-03-27 22:00:00,93.64,129.616,47.125,32.166 +2020-03-27 22:15:00,92.04,126.265,47.125,32.166 +2020-03-27 22:30:00,91.62,118.181,47.125,32.166 +2020-03-27 22:45:00,93.54,114.007,47.125,32.166 +2020-03-27 23:00:00,88.63,106.86399999999999,41.236000000000004,32.166 +2020-03-27 23:15:00,85.58,103.60600000000001,41.236000000000004,32.166 +2020-03-27 23:30:00,83.35,102.531,41.236000000000004,32.166 +2020-03-27 23:45:00,81.51,102.666,41.236000000000004,32.166 +2020-03-28 00:00:00,57.71,89.321,36.484,31.988000000000003 +2020-03-28 00:15:00,54.17,85.42,36.484,31.988000000000003 +2020-03-28 00:30:00,56.34,84.88799999999999,36.484,31.988000000000003 +2020-03-28 00:45:00,54.63,84.62299999999999,36.484,31.988000000000003 +2020-03-28 01:00:00,49.06,85.77,32.391999999999996,31.988000000000003 +2020-03-28 01:15:00,52.94,85.538,32.391999999999996,31.988000000000003 +2020-03-28 01:30:00,49.74,84.344,32.391999999999996,31.988000000000003 +2020-03-28 01:45:00,52.99,84.53,32.391999999999996,31.988000000000003 +2020-03-28 02:00:00,51.54,86.786,30.194000000000003,31.988000000000003 +2020-03-28 02:15:00,52.29,86.351,30.194000000000003,31.988000000000003 +2020-03-28 02:30:00,52.34,87.463,30.194000000000003,31.988000000000003 +2020-03-28 02:45:00,50.12,88.823,30.194000000000003,31.988000000000003 +2020-03-28 03:00:00,50.63,91.3,29.677,31.988000000000003 +2020-03-28 03:15:00,47.78,92.103,29.677,31.988000000000003 +2020-03-28 03:30:00,48.43,91.905,29.677,31.988000000000003 +2020-03-28 03:45:00,51.9,93.94200000000001,29.677,31.988000000000003 +2020-03-28 04:00:00,49.36,103.32,29.616,31.988000000000003 +2020-03-28 04:15:00,52.2,113.07700000000001,29.616,31.988000000000003 +2020-03-28 04:30:00,53.04,112.63799999999999,29.616,31.988000000000003 +2020-03-28 04:45:00,51.37,112.87,29.616,31.988000000000003 +2020-03-28 05:00:00,55.2,130.638,29.625,31.988000000000003 +2020-03-28 05:15:00,53.94,145.415,29.625,31.988000000000003 +2020-03-28 05:30:00,57.62,139.55100000000002,29.625,31.988000000000003 +2020-03-28 05:45:00,59.67,136.032,29.625,31.988000000000003 +2020-03-28 06:00:00,60.42,153.085,30.551,31.988000000000003 +2020-03-28 06:15:00,63.03,172.97099999999998,30.551,31.988000000000003 +2020-03-28 06:30:00,60.51,167.139,30.551,31.988000000000003 +2020-03-28 06:45:00,61.22,162.032,30.551,31.988000000000003 +2020-03-28 07:00:00,66.83,160.97,34.865,31.988000000000003 +2020-03-28 07:15:00,68.4,162.357,34.865,31.988000000000003 +2020-03-28 07:30:00,67.37,163.225,34.865,31.988000000000003 +2020-03-28 07:45:00,72.4,163.143,34.865,31.988000000000003 +2020-03-28 08:00:00,72.28,164.06799999999998,41.456,31.988000000000003 +2020-03-28 08:15:00,77.29,164.692,41.456,31.988000000000003 +2020-03-28 08:30:00,80.4,161.583,41.456,31.988000000000003 +2020-03-28 08:45:00,80.83,159.421,41.456,31.988000000000003 +2020-03-28 09:00:00,86.02,155.105,43.001999999999995,31.988000000000003 +2020-03-28 09:15:00,86.55,153.95,43.001999999999995,31.988000000000003 +2020-03-28 09:30:00,87.98,154.50799999999998,43.001999999999995,31.988000000000003 +2020-03-28 09:45:00,89.07,152.734,43.001999999999995,31.988000000000003 +2020-03-28 10:00:00,88.02,149.053,42.047,31.988000000000003 +2020-03-28 10:15:00,91.44,148.35399999999998,42.047,31.988000000000003 +2020-03-28 10:30:00,89.49,146.31799999999998,42.047,31.988000000000003 +2020-03-28 10:45:00,95.01,146.55200000000002,42.047,31.988000000000003 +2020-03-28 11:00:00,94.88,142.039,39.894,31.988000000000003 +2020-03-28 11:15:00,97.49,140.834,39.894,31.988000000000003 +2020-03-28 11:30:00,97.87,141.798,39.894,31.988000000000003 +2020-03-28 11:45:00,97.43,141.989,39.894,31.988000000000003 +2020-03-28 12:00:00,92.61,137.923,38.122,31.988000000000003 +2020-03-28 12:15:00,94.95,137.143,38.122,31.988000000000003 +2020-03-28 12:30:00,90.34,136.732,38.122,31.988000000000003 +2020-03-28 12:45:00,86.38,137.285,38.122,31.988000000000003 +2020-03-28 13:00:00,82.75,137.92700000000002,34.645,31.988000000000003 +2020-03-28 13:15:00,84.34,135.013,34.645,31.988000000000003 +2020-03-28 13:30:00,84.37,133.059,34.645,31.988000000000003 +2020-03-28 13:45:00,84.04,132.303,34.645,31.988000000000003 +2020-03-28 14:00:00,79.67,134.838,33.739000000000004,31.988000000000003 +2020-03-28 14:15:00,81.26,132.49200000000002,33.739000000000004,31.988000000000003 +2020-03-28 14:30:00,79.9,131.214,33.739000000000004,31.988000000000003 +2020-03-28 14:45:00,79.54,132.628,33.739000000000004,31.988000000000003 +2020-03-28 15:00:00,78.41,133.822,35.908,31.988000000000003 +2020-03-28 15:15:00,80.8,132.606,35.908,31.988000000000003 +2020-03-28 15:30:00,80.27,131.143,35.908,31.988000000000003 +2020-03-28 15:45:00,77.77,130.329,35.908,31.988000000000003 +2020-03-28 16:00:00,80.98,133.009,39.249,31.988000000000003 +2020-03-28 16:15:00,80.76,135.78799999999998,39.249,31.988000000000003 +2020-03-28 16:30:00,81.37,136.305,39.249,31.988000000000003 +2020-03-28 16:45:00,79.09,135.488,39.249,31.988000000000003 +2020-03-28 17:00:00,83.53,137.756,46.045,31.988000000000003 +2020-03-28 17:15:00,82.0,140.559,46.045,31.988000000000003 +2020-03-28 17:30:00,86.27,142.915,46.045,31.988000000000003 +2020-03-28 17:45:00,87.5,143.157,46.045,31.988000000000003 +2020-03-28 18:00:00,89.89,147.595,48.238,31.988000000000003 +2020-03-28 18:15:00,89.13,150.316,48.238,31.988000000000003 +2020-03-28 18:30:00,88.57,150.346,48.238,31.988000000000003 +2020-03-28 18:45:00,85.87,150.866,48.238,31.988000000000003 +2020-03-28 19:00:00,91.17,150.105,46.785,31.988000000000003 +2020-03-28 19:15:00,86.77,148.829,46.785,31.988000000000003 +2020-03-28 19:30:00,89.79,149.017,46.785,31.988000000000003 +2020-03-28 19:45:00,91.35,147.619,46.785,31.988000000000003 +2020-03-28 20:00:00,86.33,143.537,39.830999999999996,31.988000000000003 +2020-03-28 20:15:00,86.08,141.27,39.830999999999996,31.988000000000003 +2020-03-28 20:30:00,84.34,138.96200000000002,39.830999999999996,31.988000000000003 +2020-03-28 20:45:00,82.32,137.77700000000002,39.830999999999996,31.988000000000003 +2020-03-28 21:00:00,78.48,134.78799999999998,34.063,31.988000000000003 +2020-03-28 21:15:00,78.09,133.465,34.063,31.988000000000003 +2020-03-28 21:30:00,73.54,133.45600000000002,34.063,31.988000000000003 +2020-03-28 21:45:00,76.09,133.001,34.063,31.988000000000003 +2020-03-28 22:00:00,73.18,127.82700000000001,34.455999999999996,31.988000000000003 +2020-03-28 22:15:00,71.44,126.572,34.455999999999996,31.988000000000003 +2020-03-28 22:30:00,69.55,123.32799999999999,34.455999999999996,31.988000000000003 +2020-03-28 22:45:00,69.05,120.762,34.455999999999996,31.988000000000003 +2020-03-28 23:00:00,66.49,115.384,27.840999999999998,31.988000000000003 +2020-03-28 23:15:00,65.31,110.95700000000001,27.840999999999998,31.988000000000003 +2020-03-28 23:30:00,60.24,109.191,27.840999999999998,31.988000000000003 +2020-03-28 23:45:00,61.54,107.5,27.840999999999998,31.988000000000003 +2020-03-29 00:00:00,63.42,89.681,20.007,31.988000000000003 +2020-03-29 00:15:00,63.84,85.18,20.007,31.988000000000003 +2020-03-29 00:30:00,63.41,84.29700000000001,20.007,31.988000000000003 +2020-03-29 00:45:00,63.81,84.542,20.007,31.988000000000003 +2020-03-29 01:00:00,61.41,85.62700000000001,17.378,31.988000000000003 +2020-03-29 01:15:00,61.91,86.14200000000001,17.378,31.988000000000003 +2020-03-29 01:30:00,61.2,85.287,17.378,31.988000000000003 +2020-03-29 01:45:00,61.64,85.115,17.378,31.988000000000003 +2020-03-29 03:00:00,60.55,92.348,15.427999999999999,31.988000000000003 +2020-03-29 03:15:00,61.96,92.81200000000001,15.427999999999999,31.988000000000003 +2020-03-29 03:30:00,61.93,93.43799999999999,15.427999999999999,31.988000000000003 +2020-03-29 03:45:00,61.8,95.17,15.427999999999999,31.988000000000003 +2020-03-29 04:00:00,62.52,104.337,16.663,31.988000000000003 +2020-03-29 04:15:00,62.17,113.15899999999999,16.663,31.988000000000003 +2020-03-29 04:30:00,61.27,113.23,16.663,31.988000000000003 +2020-03-29 04:45:00,61.62,113.501,16.663,31.988000000000003 +2020-03-29 05:00:00,59.26,128.622,17.271,31.988000000000003 +2020-03-29 05:15:00,61.48,141.29399999999998,17.271,31.988000000000003 +2020-03-29 05:30:00,61.34,135.15,17.271,31.988000000000003 +2020-03-29 05:45:00,61.02,131.74200000000002,17.271,31.988000000000003 +2020-03-29 06:00:00,61.85,147.918,17.612000000000002,31.988000000000003 +2020-03-29 06:15:00,63.29,166.752,17.612000000000002,31.988000000000003 +2020-03-29 06:30:00,64.04,159.804,17.612000000000002,31.988000000000003 +2020-03-29 06:45:00,65.71,153.536,17.612000000000002,31.988000000000003 +2020-03-29 07:00:00,65.1,154.444,20.88,31.988000000000003 +2020-03-29 07:15:00,67.09,154.61700000000002,20.88,31.988000000000003 +2020-03-29 07:30:00,68.29,154.899,20.88,31.988000000000003 +2020-03-29 07:45:00,66.11,154.187,20.88,31.988000000000003 +2020-03-29 08:00:00,70.13,156.718,25.861,31.988000000000003 +2020-03-29 08:15:00,69.2,157.636,25.861,31.988000000000003 +2020-03-29 08:30:00,68.25,156.053,25.861,31.988000000000003 +2020-03-29 08:45:00,67.57,155.486,25.861,31.988000000000003 +2020-03-29 09:00:00,66.99,150.813,27.921999999999997,31.988000000000003 +2020-03-29 09:15:00,65.9,149.954,27.921999999999997,31.988000000000003 +2020-03-29 09:30:00,65.28,150.535,27.921999999999997,31.988000000000003 +2020-03-29 09:45:00,65.68,148.985,27.921999999999997,31.988000000000003 +2020-03-29 10:00:00,66.04,147.47799999999998,29.048000000000002,31.988000000000003 +2020-03-29 10:15:00,67.95,147.296,29.048000000000002,31.988000000000003 +2020-03-29 10:30:00,68.96,145.834,29.048000000000002,31.988000000000003 +2020-03-29 10:45:00,69.67,144.84799999999998,29.048000000000002,31.988000000000003 +2020-03-29 11:00:00,66.38,140.961,32.02,31.988000000000003 +2020-03-29 11:15:00,66.11,139.761,32.02,31.988000000000003 +2020-03-29 11:30:00,60.65,140.167,32.02,31.988000000000003 +2020-03-29 11:45:00,61.22,140.942,32.02,31.988000000000003 +2020-03-29 12:00:00,57.94,136.707,28.55,31.988000000000003 +2020-03-29 12:15:00,57.98,137.329,28.55,31.988000000000003 +2020-03-29 12:30:00,57.03,135.741,28.55,31.988000000000003 +2020-03-29 12:45:00,58.14,135.325,28.55,31.988000000000003 +2020-03-29 13:00:00,56.4,135.33,25.601999999999997,31.988000000000003 +2020-03-29 13:15:00,53.99,134.73,25.601999999999997,31.988000000000003 +2020-03-29 13:30:00,54.04,132.297,25.601999999999997,31.988000000000003 +2020-03-29 13:45:00,55.14,131.30200000000002,25.601999999999997,31.988000000000003 +2020-03-29 14:00:00,58.23,134.429,23.916999999999998,31.988000000000003 +2020-03-29 14:15:00,57.08,133.165,23.916999999999998,31.988000000000003 +2020-03-29 14:30:00,54.64,132.536,23.916999999999998,31.988000000000003 +2020-03-29 14:45:00,59.63,133.328,23.916999999999998,31.988000000000003 +2020-03-29 15:00:00,60.63,133.313,24.064,31.988000000000003 +2020-03-29 15:15:00,61.57,132.48,24.064,31.988000000000003 +2020-03-29 15:30:00,63.18,131.404,24.064,31.988000000000003 +2020-03-29 15:45:00,66.09,131.221,24.064,31.988000000000003 +2020-03-29 16:00:00,70.77,134.955,28.189,31.988000000000003 +2020-03-29 16:15:00,72.49,137.029,28.189,31.988000000000003 +2020-03-29 16:30:00,74.01,138.034,28.189,31.988000000000003 +2020-03-29 16:45:00,75.04,137.291,28.189,31.988000000000003 +2020-03-29 17:00:00,82.83,139.64700000000002,37.576,31.988000000000003 +2020-03-29 17:15:00,84.34,142.606,37.576,31.988000000000003 +2020-03-29 17:30:00,85.73,145.435,37.576,31.988000000000003 +2020-03-29 17:45:00,88.1,147.631,37.576,31.988000000000003 +2020-03-29 18:00:00,92.01,151.79,42.669,31.988000000000003 +2020-03-29 18:15:00,90.43,155.52200000000002,42.669,31.988000000000003 +2020-03-29 18:30:00,93.35,153.791,42.669,31.988000000000003 +2020-03-29 18:45:00,100.38,155.852,42.669,31.988000000000003 +2020-03-29 19:00:00,104.31,155.41299999999998,43.538999999999994,31.988000000000003 +2020-03-29 19:15:00,103.88,154.311,43.538999999999994,31.988000000000003 +2020-03-29 19:30:00,94.49,154.321,43.538999999999994,31.988000000000003 +2020-03-29 19:45:00,95.0,153.996,43.538999999999994,31.988000000000003 +2020-03-29 20:00:00,89.36,149.881,37.330999999999996,31.988000000000003 +2020-03-29 20:15:00,94.08,148.375,37.330999999999996,31.988000000000003 +2020-03-29 20:30:00,95.79,147.328,37.330999999999996,31.988000000000003 +2020-03-29 20:45:00,98.77,144.69799999999998,37.330999999999996,31.988000000000003 +2020-03-29 21:00:00,92.39,139.58100000000002,33.856,31.988000000000003 +2020-03-29 21:15:00,90.85,137.675,33.856,31.988000000000003 +2020-03-29 21:30:00,88.72,137.703,33.856,31.988000000000003 +2020-03-29 21:45:00,86.64,137.485,33.856,31.988000000000003 +2020-03-29 22:00:00,86.5,131.963,34.711999999999996,31.988000000000003 +2020-03-29 22:15:00,89.79,129.631,34.711999999999996,31.988000000000003 +2020-03-29 22:30:00,88.27,123.661,34.711999999999996,31.988000000000003 +2020-03-29 22:45:00,85.25,120.038,34.711999999999996,31.988000000000003 +2020-03-29 23:00:00,76.97,112.32799999999999,29.698,31.988000000000003 +2020-03-29 23:15:00,78.47,109.78299999999999,29.698,31.988000000000003 +2020-03-29 23:30:00,76.39,108.507,29.698,31.988000000000003 +2020-03-29 23:45:00,76.76,107.598,29.698,31.988000000000003 +2020-03-30 00:00:00,74.91,93.007,29.983,32.166 +2020-03-30 00:15:00,74.62,91.073,29.983,32.166 +2020-03-30 00:30:00,74.93,90.152,29.983,32.166 +2020-03-30 00:45:00,74.48,89.861,29.983,32.166 +2020-03-30 01:00:00,72.07,91.03,29.122,32.166 +2020-03-30 01:15:00,73.81,91.124,29.122,32.166 +2020-03-30 01:30:00,74.52,90.40700000000001,29.122,32.166 +2020-03-30 01:45:00,73.97,90.3,29.122,32.166 +2020-03-30 02:00:00,73.49,92.089,28.676,32.166 +2020-03-30 02:15:00,75.66,91.99600000000001,28.676,32.166 +2020-03-30 02:30:00,77.39,94.175,28.676,32.166 +2020-03-30 02:45:00,76.44,95.27600000000001,28.676,32.166 +2020-03-30 03:00:00,75.13,99.355,26.552,32.166 +2020-03-30 03:15:00,76.32,101.29,26.552,32.166 +2020-03-30 03:30:00,77.54,101.928,26.552,32.166 +2020-03-30 03:45:00,79.94,103.101,26.552,32.166 +2020-03-30 04:00:00,82.14,116.584,27.44,32.166 +2020-03-30 04:15:00,84.58,129.511,27.44,32.166 +2020-03-30 04:30:00,89.34,131.10299999999998,27.44,32.166 +2020-03-30 04:45:00,93.84,131.608,27.44,32.166 +2020-03-30 05:00:00,101.97,160.982,36.825,32.166 +2020-03-30 05:15:00,106.72,192.364,36.825,32.166 +2020-03-30 05:30:00,107.82,185.893,36.825,32.166 +2020-03-30 05:45:00,108.72,177.19099999999997,36.825,32.166 +2020-03-30 06:00:00,116.23,176.537,56.589,32.166 +2020-03-30 06:15:00,116.59,181.03900000000002,56.589,32.166 +2020-03-30 06:30:00,119.93,181.482,56.589,32.166 +2020-03-30 06:45:00,121.38,183.65099999999998,56.589,32.166 +2020-03-30 07:00:00,124.55,186.778,67.49,32.166 +2020-03-30 07:15:00,124.25,188.61,67.49,32.166 +2020-03-30 07:30:00,123.4,187.977,67.49,32.166 +2020-03-30 07:45:00,123.32,185.34099999999998,67.49,32.166 +2020-03-30 08:00:00,122.13,183.62599999999998,60.028,32.166 +2020-03-30 08:15:00,121.81,182.493,60.028,32.166 +2020-03-30 08:30:00,123.07,177.347,60.028,32.166 +2020-03-30 08:45:00,122.24,174.237,60.028,32.166 +2020-03-30 09:00:00,119.81,168.592,55.018,32.166 +2020-03-30 09:15:00,120.83,164.426,55.018,32.166 +2020-03-30 09:30:00,120.02,163.955,55.018,32.166 +2020-03-30 09:45:00,120.56,161.996,55.018,32.166 +2020-03-30 10:00:00,117.61,159.881,51.183,32.166 +2020-03-30 10:15:00,118.77,159.44,51.183,32.166 +2020-03-30 10:30:00,118.87,157.166,51.183,32.166 +2020-03-30 10:45:00,120.03,156.362,51.183,32.166 +2020-03-30 11:00:00,116.72,150.494,50.065,32.166 +2020-03-30 11:15:00,118.45,150.871,50.065,32.166 +2020-03-30 11:30:00,116.15,152.602,50.065,32.166 +2020-03-30 11:45:00,116.99,153.19799999999998,50.065,32.166 +2020-03-30 12:00:00,115.58,150.036,48.141999999999996,32.166 +2020-03-30 12:15:00,118.73,150.696,48.141999999999996,32.166 +2020-03-30 12:30:00,119.08,148.989,48.141999999999996,32.166 +2020-03-30 12:45:00,116.73,149.827,48.141999999999996,32.166 +2020-03-30 13:00:00,116.77,150.662,47.887,32.166 +2020-03-30 13:15:00,116.21,148.665,47.887,32.166 +2020-03-30 13:30:00,116.04,145.832,47.887,32.166 +2020-03-30 13:45:00,119.23,145.102,47.887,32.166 +2020-03-30 14:00:00,119.84,147.571,48.571000000000005,32.166 +2020-03-30 14:15:00,118.19,145.906,48.571000000000005,32.166 +2020-03-30 14:30:00,115.09,144.745,48.571000000000005,32.166 +2020-03-30 14:45:00,114.72,146.056,48.571000000000005,32.166 +2020-03-30 15:00:00,113.97,147.463,49.937,32.166 +2020-03-30 15:15:00,115.44,145.256,49.937,32.166 +2020-03-30 15:30:00,117.05,143.638,49.937,32.166 +2020-03-30 15:45:00,117.4,142.941,49.937,32.166 +2020-03-30 16:00:00,119.4,147.00799999999998,52.963,32.166 +2020-03-30 16:15:00,117.12,148.44799999999998,52.963,32.166 +2020-03-30 16:30:00,120.03,148.47899999999998,52.963,32.166 +2020-03-30 16:45:00,120.1,146.713,52.963,32.166 +2020-03-30 17:00:00,122.72,148.575,61.163999999999994,32.166 +2020-03-30 17:15:00,121.92,150.855,61.163999999999994,32.166 +2020-03-30 17:30:00,123.43,153.141,61.163999999999994,32.166 +2020-03-30 17:45:00,123.83,154.01,61.163999999999994,32.166 +2020-03-30 18:00:00,125.34,158.202,63.788999999999994,32.166 +2020-03-30 18:15:00,122.68,159.688,63.788999999999994,32.166 +2020-03-30 18:30:00,124.68,158.264,63.788999999999994,32.166 +2020-03-30 18:45:00,125.28,161.806,63.788999999999994,32.166 +2020-03-30 19:00:00,122.28,159.947,63.913000000000004,32.166 +2020-03-30 19:15:00,118.3,158.28799999999998,63.913000000000004,32.166 +2020-03-30 19:30:00,114.81,158.621,63.913000000000004,32.166 +2020-03-30 19:45:00,112.8,157.49200000000002,63.913000000000004,32.166 +2020-03-30 20:00:00,106.59,151.07,65.44,32.166 +2020-03-30 20:15:00,106.52,147.994,65.44,32.166 +2020-03-30 20:30:00,106.51,145.638,65.44,32.166 +2020-03-30 20:45:00,105.14,144.384,65.44,32.166 +2020-03-30 21:00:00,100.49,139.514,59.117,32.166 +2020-03-30 21:15:00,99.35,136.80100000000002,59.117,32.166 +2020-03-30 21:30:00,95.33,136.287,59.117,32.166 +2020-03-30 21:45:00,94.73,135.624,59.117,32.166 +2020-03-30 22:00:00,91.38,127.18299999999999,52.301,32.166 +2020-03-30 22:15:00,91.17,124.395,52.301,32.166 +2020-03-30 22:30:00,89.5,109.465,52.301,32.166 +2020-03-30 22:45:00,88.98,101.96,52.301,32.166 +2020-03-30 23:00:00,66.74,94.854,44.373000000000005,32.166 +2020-03-30 23:15:00,64.17,93.986,44.373000000000005,32.166 +2020-03-30 23:30:00,64.34,94.916,44.373000000000005,32.166 +2020-03-30 23:45:00,63.43,95.994,44.373000000000005,32.166 +2020-03-31 00:00:00,62.68,91.345,44.647,32.166 +2020-03-31 00:15:00,60.68,90.807,44.647,32.166 +2020-03-31 00:30:00,59.93,89.366,44.647,32.166 +2020-03-31 00:45:00,61.17,88.571,44.647,32.166 +2020-03-31 01:00:00,59.63,89.383,41.433,32.166 +2020-03-31 01:15:00,60.51,89.15,41.433,32.166 +2020-03-31 01:30:00,59.6,88.506,41.433,32.166 +2020-03-31 01:45:00,65.34,88.48,41.433,32.166 +2020-03-31 02:00:00,67.35,90.09700000000001,39.909,32.166 +2020-03-31 02:15:00,70.17,90.27799999999999,39.909,32.166 +2020-03-31 02:30:00,68.14,91.891,39.909,32.166 +2020-03-31 02:45:00,65.63,93.11,39.909,32.166 +2020-03-31 03:00:00,72.05,96.104,39.14,32.166 +2020-03-31 03:15:00,71.12,97.663,39.14,32.166 +2020-03-31 03:30:00,68.78,98.656,39.14,32.166 +2020-03-31 03:45:00,71.02,99.632,39.14,32.166 +2020-03-31 04:00:00,72.64,112.556,40.015,32.166 +2020-03-31 04:15:00,77.31,125.20100000000001,40.015,32.166 +2020-03-31 04:30:00,78.77,126.529,40.015,32.166 +2020-03-31 04:45:00,82.3,128.109,40.015,32.166 +2020-03-31 05:00:00,94.54,161.782,44.93600000000001,32.166 +2020-03-31 05:15:00,98.42,193.196,44.93600000000001,32.166 +2020-03-31 05:30:00,103.0,185.597,44.93600000000001,32.166 +2020-03-31 05:45:00,102.84,176.67700000000002,44.93600000000001,32.166 +2020-03-31 06:00:00,112.12,175.46099999999998,57.271,32.166 +2020-03-31 06:15:00,114.11,181.27599999999998,57.271,32.166 +2020-03-31 06:30:00,120.03,181.074,57.271,32.166 +2020-03-31 06:45:00,120.49,182.643,57.271,32.166 +2020-03-31 07:00:00,123.04,185.68599999999998,68.352,32.166 +2020-03-31 07:15:00,121.38,187.287,68.352,32.166 +2020-03-31 07:30:00,118.56,186.19099999999997,68.352,32.166 +2020-03-31 07:45:00,119.78,183.394,68.352,32.166 +2020-03-31 08:00:00,118.34,181.725,60.717,32.166 +2020-03-31 08:15:00,116.42,179.653,60.717,32.166 +2020-03-31 08:30:00,119.31,174.368,60.717,32.166 +2020-03-31 08:45:00,115.45,170.799,60.717,32.166 +2020-03-31 09:00:00,110.19,164.595,54.603,32.166 +2020-03-31 09:15:00,107.11,161.68,54.603,32.166 +2020-03-31 09:30:00,108.81,161.972,54.603,32.166 +2020-03-31 09:45:00,111.86,160.24,54.603,32.166 +2020-03-31 10:00:00,107.21,157.274,52.308,32.166 +2020-03-31 10:15:00,106.49,155.975,52.308,32.166 +2020-03-31 10:30:00,102.82,153.881,52.308,32.166 +2020-03-31 10:45:00,103.11,153.60299999999998,52.308,32.166 +2020-03-31 11:00:00,103.17,148.94899999999998,51.838,32.166 +2020-03-31 11:15:00,105.15,149.18200000000002,51.838,32.166 +2020-03-31 11:30:00,107.81,149.653,51.838,32.166 +2020-03-31 11:45:00,107.37,150.726,51.838,32.166 +2020-03-31 12:00:00,103.49,146.401,50.375,32.166 +2020-03-31 12:15:00,105.66,146.811,50.375,32.166 +2020-03-31 12:30:00,104.92,145.886,50.375,32.166 +2020-03-31 12:45:00,104.34,146.658,50.375,32.166 +2020-03-31 13:00:00,95.18,147.097,50.735,32.166 +2020-03-31 13:15:00,98.54,145.253,50.735,32.166 +2020-03-31 13:30:00,96.68,143.38299999999998,50.735,32.166 +2020-03-31 13:45:00,93.25,142.56799999999998,50.735,32.166 +2020-03-31 14:00:00,100.54,145.45600000000002,50.946000000000005,32.166 +2020-03-31 14:15:00,105.54,143.846,50.946000000000005,32.166 +2020-03-31 14:30:00,101.06,143.255,50.946000000000005,32.166 +2020-03-31 14:45:00,100.21,144.303,50.946000000000005,32.166 +2020-03-31 15:00:00,103.43,145.321,53.18,32.166 +2020-03-31 15:15:00,106.7,143.6,53.18,32.166 +2020-03-31 15:30:00,103.14,142.063,53.18,32.166 +2020-03-31 15:45:00,104.16,141.099,53.18,32.166 +2020-03-31 16:00:00,108.84,145.308,54.928999999999995,32.166 +2020-03-31 16:15:00,109.82,147.137,54.928999999999995,32.166 +2020-03-31 16:30:00,114.81,147.60299999999998,54.928999999999995,32.166 +2020-03-31 16:45:00,110.58,146.209,54.928999999999995,32.166 +2020-03-31 17:00:00,116.98,148.611,60.913000000000004,32.166 +2020-03-31 17:15:00,117.4,151.02,60.913000000000004,32.166 +2020-03-31 17:30:00,117.54,153.74,60.913000000000004,32.166 +2020-03-31 17:45:00,112.39,154.411,60.913000000000004,32.166 +2020-03-31 18:00:00,119.14,158.256,62.214,32.166 +2020-03-31 18:15:00,118.51,159.803,62.214,32.166 +2020-03-31 18:30:00,117.89,158.049,62.214,32.166 +2020-03-31 18:45:00,116.94,162.19799999999998,62.214,32.166 +2020-03-31 19:00:00,116.89,160.05200000000002,62.38,32.166 +2020-03-31 19:15:00,117.46,158.23,62.38,32.166 +2020-03-31 19:30:00,116.74,157.986,62.38,32.166 +2020-03-31 19:45:00,114.19,157.02200000000002,62.38,32.166 +2020-03-31 20:00:00,107.41,150.808,65.018,32.166 +2020-03-31 20:15:00,106.35,146.821,65.018,32.166 +2020-03-31 20:30:00,107.79,145.326,65.018,32.166 +2020-03-31 20:45:00,101.84,143.74,65.018,32.166 +2020-03-31 21:00:00,91.56,138.55100000000002,56.416000000000004,32.166 +2020-03-31 21:15:00,99.16,136.15,56.416000000000004,32.166 +2020-03-31 21:30:00,94.28,135.096,56.416000000000004,32.166 +2020-03-31 21:45:00,95.13,134.695,56.416000000000004,32.166 +2020-03-31 22:00:00,83.39,127.675,52.846000000000004,32.166 +2020-03-31 22:15:00,86.65,124.60799999999999,52.846000000000004,32.166 +2020-03-31 22:30:00,87.84,109.78200000000001,52.846000000000004,32.166 +2020-03-31 22:45:00,84.34,102.49700000000001,52.846000000000004,32.166 +2020-03-31 23:00:00,75.86,95.185,44.435,32.166 +2020-03-31 23:15:00,71.86,94.06,44.435,32.166 +2020-03-31 23:30:00,74.23,94.70100000000001,44.435,32.166 +2020-03-31 23:45:00,72.45,95.499,44.435,32.166 +2020-04-01 00:00:00,69.69,79.456,39.061,30.736 +2020-04-01 00:15:00,75.94,79.935,39.061,30.736 +2020-04-01 00:30:00,78.31,78.125,39.061,30.736 +2020-04-01 00:45:00,79.1,76.366,39.061,30.736 +2020-04-01 01:00:00,70.26,77.627,35.795,30.736 +2020-04-01 01:15:00,71.06,76.926,35.795,30.736 +2020-04-01 01:30:00,68.96,75.87100000000001,35.795,30.736 +2020-04-01 01:45:00,67.64,75.392,35.795,30.736 +2020-04-01 02:00:00,67.11,77.184,33.316,30.736 +2020-04-01 02:15:00,71.63,76.73899999999999,33.316,30.736 +2020-04-01 02:30:00,68.87,79.04899999999999,33.316,30.736 +2020-04-01 02:45:00,69.72,79.654,33.316,30.736 +2020-04-01 03:00:00,70.41,83.104,32.803000000000004,30.736 +2020-04-01 03:15:00,70.75,85.094,32.803000000000004,30.736 +2020-04-01 03:30:00,72.02,84.946,32.803000000000004,30.736 +2020-04-01 03:45:00,74.47,85.49700000000001,32.803000000000004,30.736 +2020-04-01 04:00:00,78.97,98.23200000000001,34.235,30.736 +2020-04-01 04:15:00,81.76,111.244,34.235,30.736 +2020-04-01 04:30:00,84.98,111.566,34.235,30.736 +2020-04-01 04:45:00,89.2,113.62700000000001,34.235,30.736 +2020-04-01 05:00:00,96.35,149.659,38.65,30.736 +2020-04-01 05:15:00,99.7,183.483,38.65,30.736 +2020-04-01 05:30:00,102.53,173.278,38.65,30.736 +2020-04-01 05:45:00,104.9,162.628,38.65,30.736 +2020-04-01 06:00:00,111.67,163.61700000000002,54.951,30.736 +2020-04-01 06:15:00,109.26,169.40099999999998,54.951,30.736 +2020-04-01 06:30:00,111.94,167.69799999999998,54.951,30.736 +2020-04-01 06:45:00,115.16,168.525,54.951,30.736 +2020-04-01 07:00:00,117.0,171.296,67.328,30.736 +2020-04-01 07:15:00,115.4,172.46400000000003,67.328,30.736 +2020-04-01 07:30:00,113.66,171.299,67.328,30.736 +2020-04-01 07:45:00,114.86,168.247,67.328,30.736 +2020-04-01 08:00:00,114.85,167.385,60.23,30.736 +2020-04-01 08:15:00,112.81,165.22400000000002,60.23,30.736 +2020-04-01 08:30:00,115.93,160.542,60.23,30.736 +2020-04-01 08:45:00,116.76,157.317,60.23,30.736 +2020-04-01 09:00:00,116.8,151.364,56.845,30.736 +2020-04-01 09:15:00,118.8,148.974,56.845,30.736 +2020-04-01 09:30:00,116.67,150.576,56.845,30.736 +2020-04-01 09:45:00,112.16,149.53,56.845,30.736 +2020-04-01 10:00:00,107.33,145.305,53.832,30.736 +2020-04-01 10:15:00,106.59,144.53,53.832,30.736 +2020-04-01 10:30:00,110.06,142.187,53.832,30.736 +2020-04-01 10:45:00,112.49,141.908,53.832,30.736 +2020-04-01 11:00:00,111.37,136.292,53.225,30.736 +2020-04-01 11:15:00,112.05,136.708,53.225,30.736 +2020-04-01 11:30:00,108.51,137.773,53.225,30.736 +2020-04-01 11:45:00,105.82,139.032,53.225,30.736 +2020-04-01 12:00:00,99.92,134.388,50.676,30.736 +2020-04-01 12:15:00,105.63,134.911,50.676,30.736 +2020-04-01 12:30:00,106.93,134.461,50.676,30.736 +2020-04-01 12:45:00,103.6,135.236,50.676,30.736 +2020-04-01 13:00:00,103.07,135.707,50.646,30.736 +2020-04-01 13:15:00,102.9,134.39600000000002,50.646,30.736 +2020-04-01 13:30:00,102.03,132.364,50.646,30.736 +2020-04-01 13:45:00,103.27,131.08700000000002,50.646,30.736 +2020-04-01 14:00:00,105.31,132.503,50.786,30.736 +2020-04-01 14:15:00,102.66,131.495,50.786,30.736 +2020-04-01 14:30:00,103.31,131.606,50.786,30.736 +2020-04-01 14:45:00,96.63,132.4,50.786,30.736 +2020-04-01 15:00:00,93.87,132.792,51.535,30.736 +2020-04-01 15:15:00,93.7,131.388,51.535,30.736 +2020-04-01 15:30:00,99.59,130.69299999999998,51.535,30.736 +2020-04-01 15:45:00,101.6,130.118,51.535,30.736 +2020-04-01 16:00:00,98.99,131.167,53.157,30.736 +2020-04-01 16:15:00,101.34,132.373,53.157,30.736 +2020-04-01 16:30:00,101.19,132.377,53.157,30.736 +2020-04-01 16:45:00,103.38,131.024,53.157,30.736 +2020-04-01 17:00:00,106.1,130.7,57.793,30.736 +2020-04-01 17:15:00,106.86,133.321,57.793,30.736 +2020-04-01 17:30:00,107.36,135.382,57.793,30.736 +2020-04-01 17:45:00,109.06,136.537,57.793,30.736 +2020-04-01 18:00:00,110.87,139.363,59.872,30.736 +2020-04-01 18:15:00,109.26,140.57,59.872,30.736 +2020-04-01 18:30:00,110.29,139.069,59.872,30.736 +2020-04-01 18:45:00,111.93,144.532,59.872,30.736 +2020-04-01 19:00:00,113.65,143.02200000000002,60.17100000000001,30.736 +2020-04-01 19:15:00,109.64,141.8,60.17100000000001,30.736 +2020-04-01 19:30:00,110.52,141.476,60.17100000000001,30.736 +2020-04-01 19:45:00,105.99,141.282,60.17100000000001,30.736 +2020-04-01 20:00:00,102.05,136.425,65.015,30.736 +2020-04-01 20:15:00,107.29,133.08100000000002,65.015,30.736 +2020-04-01 20:30:00,106.45,132.442,65.015,30.736 +2020-04-01 20:45:00,102.76,131.428,65.015,30.736 +2020-04-01 21:00:00,92.13,125.118,57.805,30.736 +2020-04-01 21:15:00,93.99,123.633,57.805,30.736 +2020-04-01 21:30:00,88.08,123.904,57.805,30.736 +2020-04-01 21:45:00,86.39,122.70100000000001,57.805,30.736 +2020-04-01 22:00:00,81.08,116.471,52.115,30.736 +2020-04-01 22:15:00,86.83,113.48200000000001,52.115,30.736 +2020-04-01 22:30:00,86.9,100.95,52.115,30.736 +2020-04-01 22:45:00,86.76,93.775,52.115,30.736 +2020-04-01 23:00:00,76.32,84.93299999999999,42.871,30.736 +2020-04-01 23:15:00,73.01,84.014,42.871,30.736 +2020-04-01 23:30:00,73.23,83.148,42.871,30.736 +2020-04-01 23:45:00,75.85,83.984,42.871,30.736 +2020-04-02 00:00:00,71.82,79.054,39.203,30.736 +2020-04-02 00:15:00,78.53,79.546,39.203,30.736 +2020-04-02 00:30:00,80.03,77.726,39.203,30.736 +2020-04-02 00:45:00,79.26,75.968,39.203,30.736 +2020-04-02 01:00:00,71.4,77.212,37.118,30.736 +2020-04-02 01:15:00,75.84,76.488,37.118,30.736 +2020-04-02 01:30:00,76.57,75.41199999999999,37.118,30.736 +2020-04-02 01:45:00,78.33,74.938,37.118,30.736 +2020-04-02 02:00:00,73.97,76.719,35.647,30.736 +2020-04-02 02:15:00,75.9,76.257,35.647,30.736 +2020-04-02 02:30:00,78.09,78.58800000000001,35.647,30.736 +2020-04-02 02:45:00,78.5,79.19800000000001,35.647,30.736 +2020-04-02 03:00:00,76.84,82.665,34.585,30.736 +2020-04-02 03:15:00,79.44,84.63,34.585,30.736 +2020-04-02 03:30:00,81.12,84.477,34.585,30.736 +2020-04-02 03:45:00,81.18,85.04700000000001,34.585,30.736 +2020-04-02 04:00:00,79.89,97.76100000000001,36.184,30.736 +2020-04-02 04:15:00,81.67,110.743,36.184,30.736 +2020-04-02 04:30:00,83.77,111.07,36.184,30.736 +2020-04-02 04:45:00,87.27,113.12,36.184,30.736 +2020-04-02 05:00:00,96.26,149.07299999999998,41.019,30.736 +2020-04-02 05:15:00,98.79,182.831,41.019,30.736 +2020-04-02 05:30:00,101.22,172.627,41.019,30.736 +2020-04-02 05:45:00,102.52,162.015,41.019,30.736 +2020-04-02 06:00:00,111.5,163.025,53.963,30.736 +2020-04-02 06:15:00,109.85,168.795,53.963,30.736 +2020-04-02 06:30:00,113.43,167.063,53.963,30.736 +2020-04-02 06:45:00,114.03,167.875,53.963,30.736 +2020-04-02 07:00:00,119.23,170.65400000000002,66.512,30.736 +2020-04-02 07:15:00,120.65,171.798,66.512,30.736 +2020-04-02 07:30:00,116.77,170.592,66.512,30.736 +2020-04-02 07:45:00,112.67,167.525,66.512,30.736 +2020-04-02 08:00:00,115.24,166.643,58.86,30.736 +2020-04-02 08:15:00,117.46,164.503,58.86,30.736 +2020-04-02 08:30:00,115.91,159.782,58.86,30.736 +2020-04-02 08:45:00,115.21,156.585,58.86,30.736 +2020-04-02 09:00:00,115.87,150.637,52.156000000000006,30.736 +2020-04-02 09:15:00,114.66,148.252,52.156000000000006,30.736 +2020-04-02 09:30:00,119.53,149.874,52.156000000000006,30.736 +2020-04-02 09:45:00,123.85,148.858,52.156000000000006,30.736 +2020-04-02 10:00:00,118.77,144.639,49.034,30.736 +2020-04-02 10:15:00,126.97,143.914,49.034,30.736 +2020-04-02 10:30:00,125.46,141.596,49.034,30.736 +2020-04-02 10:45:00,123.88,141.338,49.034,30.736 +2020-04-02 11:00:00,122.49,135.713,46.53,30.736 +2020-04-02 11:15:00,116.42,136.153,46.53,30.736 +2020-04-02 11:30:00,110.72,137.222,46.53,30.736 +2020-04-02 11:45:00,120.11,138.501,46.53,30.736 +2020-04-02 12:00:00,118.87,133.88299999999998,43.318000000000005,30.736 +2020-04-02 12:15:00,120.48,134.416,43.318000000000005,30.736 +2020-04-02 12:30:00,117.06,133.922,43.318000000000005,30.736 +2020-04-02 12:45:00,111.35,134.69899999999998,43.318000000000005,30.736 +2020-04-02 13:00:00,111.13,135.213,41.608000000000004,30.736 +2020-04-02 13:15:00,108.37,133.891,41.608000000000004,30.736 +2020-04-02 13:30:00,110.04,131.856,41.608000000000004,30.736 +2020-04-02 13:45:00,110.04,130.58100000000002,41.608000000000004,30.736 +2020-04-02 14:00:00,105.79,132.067,41.786,30.736 +2020-04-02 14:15:00,97.68,131.036,41.786,30.736 +2020-04-02 14:30:00,108.28,131.105,41.786,30.736 +2020-04-02 14:45:00,118.85,131.90200000000002,41.786,30.736 +2020-04-02 15:00:00,124.11,132.321,44.181999999999995,30.736 +2020-04-02 15:15:00,123.02,130.893,44.181999999999995,30.736 +2020-04-02 15:30:00,118.52,130.14700000000002,44.181999999999995,30.736 +2020-04-02 15:45:00,111.31,129.553,44.181999999999995,30.736 +2020-04-02 16:00:00,113.66,130.637,45.956,30.736 +2020-04-02 16:15:00,119.09,131.816,45.956,30.736 +2020-04-02 16:30:00,118.53,131.822,45.956,30.736 +2020-04-02 16:45:00,121.92,130.407,45.956,30.736 +2020-04-02 17:00:00,124.5,130.131,50.702,30.736 +2020-04-02 17:15:00,120.31,132.734,50.702,30.736 +2020-04-02 17:30:00,120.7,134.798,50.702,30.736 +2020-04-02 17:45:00,121.11,135.939,50.702,30.736 +2020-04-02 18:00:00,123.23,138.77700000000002,53.595,30.736 +2020-04-02 18:15:00,120.26,140.024,53.595,30.736 +2020-04-02 18:30:00,115.9,138.511,53.595,30.736 +2020-04-02 18:45:00,114.56,143.986,53.595,30.736 +2020-04-02 19:00:00,121.11,142.455,54.207,30.736 +2020-04-02 19:15:00,119.24,141.243,54.207,30.736 +2020-04-02 19:30:00,117.39,140.938,54.207,30.736 +2020-04-02 19:45:00,107.85,140.776,54.207,30.736 +2020-04-02 20:00:00,108.15,135.892,56.948,30.736 +2020-04-02 20:15:00,111.42,132.55700000000002,56.948,30.736 +2020-04-02 20:30:00,106.44,131.955,56.948,30.736 +2020-04-02 20:45:00,101.23,130.964,56.948,30.736 +2020-04-02 21:00:00,100.35,124.652,52.157,30.736 +2020-04-02 21:15:00,101.03,123.176,52.157,30.736 +2020-04-02 21:30:00,107.53,123.44,52.157,30.736 +2020-04-02 21:45:00,103.46,122.266,52.157,30.736 +2020-04-02 22:00:00,96.94,116.041,47.483000000000004,30.736 +2020-04-02 22:15:00,99.13,113.08,47.483000000000004,30.736 +2020-04-02 22:30:00,96.8,100.515,47.483000000000004,30.736 +2020-04-02 22:45:00,92.58,93.336,47.483000000000004,30.736 +2020-04-02 23:00:00,83.94,84.47,41.978,30.736 +2020-04-02 23:15:00,83.81,83.583,41.978,30.736 +2020-04-02 23:30:00,88.75,82.71600000000001,41.978,30.736 +2020-04-02 23:45:00,87.76,83.568,41.978,30.736 +2020-04-03 00:00:00,76.87,76.975,39.301,30.736 +2020-04-03 00:15:00,73.29,77.727,39.301,30.736 +2020-04-03 00:30:00,70.69,75.961,39.301,30.736 +2020-04-03 00:45:00,72.11,74.514,39.301,30.736 +2020-04-03 01:00:00,75.99,75.328,37.976,30.736 +2020-04-03 01:15:00,77.44,74.82,37.976,30.736 +2020-04-03 01:30:00,73.59,73.983,37.976,30.736 +2020-04-03 01:45:00,79.01,73.439,37.976,30.736 +2020-04-03 02:00:00,73.89,75.78399999999999,37.041,30.736 +2020-04-03 02:15:00,73.49,75.205,37.041,30.736 +2020-04-03 02:30:00,79.15,78.352,37.041,30.736 +2020-04-03 02:45:00,75.85,78.607,37.041,30.736 +2020-04-03 03:00:00,74.11,81.914,37.575,30.736 +2020-04-03 03:15:00,79.18,83.74799999999999,37.575,30.736 +2020-04-03 03:30:00,76.15,83.445,37.575,30.736 +2020-04-03 03:45:00,85.07,84.735,37.575,30.736 +2020-04-03 04:00:00,91.35,97.646,39.058,30.736 +2020-04-03 04:15:00,92.78,109.551,39.058,30.736 +2020-04-03 04:30:00,92.59,110.568,39.058,30.736 +2020-04-03 04:45:00,93.75,111.53399999999999,39.058,30.736 +2020-04-03 05:00:00,102.17,146.35299999999998,43.256,30.736 +2020-04-03 05:15:00,102.67,181.516,43.256,30.736 +2020-04-03 05:30:00,104.0,172.08599999999998,43.256,30.736 +2020-04-03 05:45:00,106.32,161.215,43.256,30.736 +2020-04-03 06:00:00,114.66,162.671,56.093999999999994,30.736 +2020-04-03 06:15:00,113.85,167.59900000000002,56.093999999999994,30.736 +2020-04-03 06:30:00,117.45,165.268,56.093999999999994,30.736 +2020-04-03 06:45:00,116.33,167.011,56.093999999999994,30.736 +2020-04-03 07:00:00,117.74,169.637,66.92699999999999,30.736 +2020-04-03 07:15:00,116.74,171.90900000000002,66.92699999999999,30.736 +2020-04-03 07:30:00,116.53,169.487,66.92699999999999,30.736 +2020-04-03 07:45:00,115.69,165.718,66.92699999999999,30.736 +2020-04-03 08:00:00,114.23,164.50900000000001,60.332,30.736 +2020-04-03 08:15:00,113.28,162.47799999999998,60.332,30.736 +2020-04-03 08:30:00,113.5,158.321,60.332,30.736 +2020-04-03 08:45:00,111.4,154.023,60.332,30.736 +2020-04-03 09:00:00,109.66,147.19899999999998,56.085,30.736 +2020-04-03 09:15:00,109.0,146.171,56.085,30.736 +2020-04-03 09:30:00,107.02,147.174,56.085,30.736 +2020-04-03 09:45:00,107.16,146.306,56.085,30.736 +2020-04-03 10:00:00,105.85,141.186,52.91,30.736 +2020-04-03 10:15:00,107.46,140.898,52.91,30.736 +2020-04-03 10:30:00,105.47,138.81799999999998,52.91,30.736 +2020-04-03 10:45:00,107.79,138.22299999999998,52.91,30.736 +2020-04-03 11:00:00,102.99,132.667,52.278999999999996,30.736 +2020-04-03 11:15:00,101.82,131.98,52.278999999999996,30.736 +2020-04-03 11:30:00,101.04,134.144,52.278999999999996,30.736 +2020-04-03 11:45:00,100.88,135.03,52.278999999999996,30.736 +2020-04-03 12:00:00,96.79,131.445,49.023999999999994,30.736 +2020-04-03 12:15:00,100.16,130.16,49.023999999999994,30.736 +2020-04-03 12:30:00,94.47,129.792,49.023999999999994,30.736 +2020-04-03 12:45:00,100.82,130.594,49.023999999999994,30.736 +2020-04-03 13:00:00,98.58,132.121,46.82,30.736 +2020-04-03 13:15:00,96.92,131.47299999999998,46.82,30.736 +2020-04-03 13:30:00,95.45,129.8,46.82,30.736 +2020-04-03 13:45:00,97.9,128.616,46.82,30.736 +2020-04-03 14:00:00,100.06,128.971,45.756,30.736 +2020-04-03 14:15:00,94.08,127.977,45.756,30.736 +2020-04-03 14:30:00,89.77,129.05200000000002,45.756,30.736 +2020-04-03 14:45:00,89.15,129.773,45.756,30.736 +2020-04-03 15:00:00,99.64,129.828,47.56,30.736 +2020-04-03 15:15:00,97.56,127.941,47.56,30.736 +2020-04-03 15:30:00,100.39,125.76799999999999,47.56,30.736 +2020-04-03 15:45:00,96.0,125.601,47.56,30.736 +2020-04-03 16:00:00,102.98,125.535,49.581,30.736 +2020-04-03 16:15:00,107.36,127.12799999999999,49.581,30.736 +2020-04-03 16:30:00,107.41,127.117,49.581,30.736 +2020-04-03 16:45:00,105.69,125.18799999999999,49.581,30.736 +2020-04-03 17:00:00,111.53,125.978,53.918,30.736 +2020-04-03 17:15:00,114.78,128.192,53.918,30.736 +2020-04-03 17:30:00,110.72,130.119,53.918,30.736 +2020-04-03 17:45:00,114.51,130.999,53.918,30.736 +2020-04-03 18:00:00,121.12,134.387,54.266000000000005,30.736 +2020-04-03 18:15:00,115.78,134.931,54.266000000000005,30.736 +2020-04-03 18:30:00,115.51,133.621,54.266000000000005,30.736 +2020-04-03 18:45:00,117.31,139.316,54.266000000000005,30.736 +2020-04-03 19:00:00,117.9,138.845,54.092,30.736 +2020-04-03 19:15:00,113.83,138.86700000000002,54.092,30.736 +2020-04-03 19:30:00,113.99,138.334,54.092,30.736 +2020-04-03 19:45:00,112.93,137.374,54.092,30.736 +2020-04-03 20:00:00,109.53,132.425,59.038999999999994,30.736 +2020-04-03 20:15:00,98.4,129.518,59.038999999999994,30.736 +2020-04-03 20:30:00,94.66,128.66899999999998,59.038999999999994,30.736 +2020-04-03 20:45:00,99.46,127.654,59.038999999999994,30.736 +2020-04-03 21:00:00,89.12,122.366,53.346000000000004,30.736 +2020-04-03 21:15:00,94.16,122.066,53.346000000000004,30.736 +2020-04-03 21:30:00,91.73,122.272,53.346000000000004,30.736 +2020-04-03 21:45:00,92.13,121.59700000000001,53.346000000000004,30.736 +2020-04-03 22:00:00,84.0,115.95,47.938,30.736 +2020-04-03 22:15:00,85.47,112.79700000000001,47.938,30.736 +2020-04-03 22:30:00,85.97,106.915,47.938,30.736 +2020-04-03 22:45:00,86.43,102.51899999999999,47.938,30.736 +2020-04-03 23:00:00,79.39,94.219,40.266,30.736 +2020-04-03 23:15:00,73.78,91.25299999999999,40.266,30.736 +2020-04-03 23:30:00,75.79,88.464,40.266,30.736 +2020-04-03 23:45:00,76.89,88.825,40.266,30.736 +2020-04-04 00:00:00,74.66,75.469,39.184,30.618000000000002 +2020-04-04 00:15:00,73.9,73.183,39.184,30.618000000000002 +2020-04-04 00:30:00,65.93,71.98100000000001,39.184,30.618000000000002 +2020-04-04 00:45:00,68.89,70.57600000000001,39.184,30.618000000000002 +2020-04-04 01:00:00,71.51,71.94,34.692,30.618000000000002 +2020-04-04 01:15:00,76.86,71.125,34.692,30.618000000000002 +2020-04-04 01:30:00,71.53,69.49,34.692,30.618000000000002 +2020-04-04 01:45:00,68.36,69.517,34.692,30.618000000000002 +2020-04-04 02:00:00,66.58,71.745,32.919000000000004,30.618000000000002 +2020-04-04 02:15:00,62.82,70.472,32.919000000000004,30.618000000000002 +2020-04-04 02:30:00,63.39,72.505,32.919000000000004,30.618000000000002 +2020-04-04 02:45:00,64.96,73.27199999999999,32.919000000000004,30.618000000000002 +2020-04-04 03:00:00,65.71,76.22399999999999,32.024,30.618000000000002 +2020-04-04 03:15:00,63.91,76.88600000000001,32.024,30.618000000000002 +2020-04-04 03:30:00,63.74,75.78699999999999,32.024,30.618000000000002 +2020-04-04 03:45:00,64.35,78.009,32.024,30.618000000000002 +2020-04-04 04:00:00,65.42,87.32600000000001,31.958000000000002,30.618000000000002 +2020-04-04 04:15:00,68.5,97.13600000000001,31.958000000000002,30.618000000000002 +2020-04-04 04:30:00,69.35,95.876,31.958000000000002,30.618000000000002 +2020-04-04 04:45:00,69.44,96.686,31.958000000000002,30.618000000000002 +2020-04-04 05:00:00,72.92,117.115,32.75,30.618000000000002 +2020-04-04 05:15:00,68.32,134.414,32.75,30.618000000000002 +2020-04-04 05:30:00,70.28,126.084,32.75,30.618000000000002 +2020-04-04 05:45:00,69.35,121.125,32.75,30.618000000000002 +2020-04-04 06:00:00,75.32,140.066,34.461999999999996,30.618000000000002 +2020-04-04 06:15:00,76.84,159.474,34.461999999999996,30.618000000000002 +2020-04-04 06:30:00,77.92,152.194,34.461999999999996,30.618000000000002 +2020-04-04 06:45:00,79.19,146.56799999999998,34.461999999999996,30.618000000000002 +2020-04-04 07:00:00,82.21,145.606,37.736,30.618000000000002 +2020-04-04 07:15:00,81.98,146.351,37.736,30.618000000000002 +2020-04-04 07:30:00,81.71,146.433,37.736,30.618000000000002 +2020-04-04 07:45:00,82.74,145.686,37.736,30.618000000000002 +2020-04-04 08:00:00,81.59,147.055,42.34,30.618000000000002 +2020-04-04 08:15:00,81.68,147.328,42.34,30.618000000000002 +2020-04-04 08:30:00,81.19,144.188,42.34,30.618000000000002 +2020-04-04 08:45:00,81.27,142.493,42.34,30.618000000000002 +2020-04-04 09:00:00,78.35,138.297,43.571999999999996,30.618000000000002 +2020-04-04 09:15:00,76.95,138.02700000000002,43.571999999999996,30.618000000000002 +2020-04-04 09:30:00,77.5,139.909,43.571999999999996,30.618000000000002 +2020-04-04 09:45:00,76.01,138.953,43.571999999999996,30.618000000000002 +2020-04-04 10:00:00,74.59,134.138,40.514,30.618000000000002 +2020-04-04 10:15:00,75.0,134.186,40.514,30.618000000000002 +2020-04-04 10:30:00,75.58,132.084,40.514,30.618000000000002 +2020-04-04 10:45:00,74.33,132.252,40.514,30.618000000000002 +2020-04-04 11:00:00,72.45,126.696,36.388000000000005,30.618000000000002 +2020-04-04 11:15:00,71.39,125.946,36.388000000000005,30.618000000000002 +2020-04-04 11:30:00,68.52,127.45,36.388000000000005,30.618000000000002 +2020-04-04 11:45:00,68.28,127.98700000000001,36.388000000000005,30.618000000000002 +2020-04-04 12:00:00,64.47,123.79799999999999,35.217,30.618000000000002 +2020-04-04 12:15:00,63.5,123.37200000000001,35.217,30.618000000000002 +2020-04-04 12:30:00,60.6,123.133,35.217,30.618000000000002 +2020-04-04 12:45:00,61.67,123.70200000000001,35.217,30.618000000000002 +2020-04-04 13:00:00,59.52,124.51700000000001,32.001999999999995,30.618000000000002 +2020-04-04 13:15:00,58.68,122.109,32.001999999999995,30.618000000000002 +2020-04-04 13:30:00,59.1,120.18700000000001,32.001999999999995,30.618000000000002 +2020-04-04 13:45:00,60.24,118.756,32.001999999999995,30.618000000000002 +2020-04-04 14:00:00,58.61,120.09200000000001,31.304000000000002,30.618000000000002 +2020-04-04 14:15:00,58.6,118.131,31.304000000000002,30.618000000000002 +2020-04-04 14:30:00,59.62,117.635,31.304000000000002,30.618000000000002 +2020-04-04 14:45:00,60.05,118.73200000000001,31.304000000000002,30.618000000000002 +2020-04-04 15:00:00,61.39,119.492,34.731,30.618000000000002 +2020-04-04 15:15:00,61.93,118.48299999999999,34.731,30.618000000000002 +2020-04-04 15:30:00,62.76,117.48299999999999,34.731,30.618000000000002 +2020-04-04 15:45:00,65.09,116.90299999999999,34.731,30.618000000000002 +2020-04-04 16:00:00,68.45,117.296,38.769,30.618000000000002 +2020-04-04 16:15:00,69.5,119.079,38.769,30.618000000000002 +2020-04-04 16:30:00,75.03,119.14,38.769,30.618000000000002 +2020-04-04 16:45:00,75.19,117.76299999999999,38.769,30.618000000000002 +2020-04-04 17:00:00,79.59,117.855,44.928000000000004,30.618000000000002 +2020-04-04 17:15:00,80.67,120.13799999999999,44.928000000000004,30.618000000000002 +2020-04-04 17:30:00,82.2,121.93700000000001,44.928000000000004,30.618000000000002 +2020-04-04 17:45:00,83.92,122.765,44.928000000000004,30.618000000000002 +2020-04-04 18:00:00,85.73,126.61399999999999,47.786,30.618000000000002 +2020-04-04 18:15:00,83.59,129.254,47.786,30.618000000000002 +2020-04-04 18:30:00,83.84,129.518,47.786,30.618000000000002 +2020-04-04 18:45:00,85.08,131.211,47.786,30.618000000000002 +2020-04-04 19:00:00,87.47,130.589,47.463,30.618000000000002 +2020-04-04 19:15:00,90.07,129.77700000000002,47.463,30.618000000000002 +2020-04-04 19:30:00,88.24,130.158,47.463,30.618000000000002 +2020-04-04 19:45:00,84.51,130.01,47.463,30.618000000000002 +2020-04-04 20:00:00,81.76,126.954,43.735,30.618000000000002 +2020-04-04 20:15:00,80.12,125.14200000000001,43.735,30.618000000000002 +2020-04-04 20:30:00,76.99,123.64399999999999,43.735,30.618000000000002 +2020-04-04 20:45:00,76.56,123.34,43.735,30.618000000000002 +2020-04-04 21:00:00,70.25,118.79799999999999,40.346,30.618000000000002 +2020-04-04 21:15:00,69.31,118.615,40.346,30.618000000000002 +2020-04-04 21:30:00,66.75,119.72200000000001,40.346,30.618000000000002 +2020-04-04 21:45:00,66.4,118.525,40.346,30.618000000000002 +2020-04-04 22:00:00,62.9,113.759,39.323,30.618000000000002 +2020-04-04 22:15:00,62.01,112.402,39.323,30.618000000000002 +2020-04-04 22:30:00,59.88,110.391,39.323,30.618000000000002 +2020-04-04 22:45:00,58.88,107.417,39.323,30.618000000000002 +2020-04-04 23:00:00,54.7,100.368,33.716,30.618000000000002 +2020-04-04 23:15:00,54.75,96.571,33.716,30.618000000000002 +2020-04-04 23:30:00,52.99,93.90100000000001,33.716,30.618000000000002 +2020-04-04 23:45:00,53.7,92.859,33.716,30.618000000000002 +2020-04-05 00:00:00,49.93,76.092,28.703000000000003,30.618000000000002 +2020-04-05 00:15:00,50.91,72.97800000000001,28.703000000000003,30.618000000000002 +2020-04-05 00:30:00,49.61,71.447,28.703000000000003,30.618000000000002 +2020-04-05 00:45:00,49.78,70.42,28.703000000000003,30.618000000000002 +2020-04-05 01:00:00,48.79,71.824,26.171,30.618000000000002 +2020-04-05 01:15:00,49.86,71.562,26.171,30.618000000000002 +2020-04-05 01:30:00,49.35,70.15,26.171,30.618000000000002 +2020-04-05 01:45:00,49.74,69.775,26.171,30.618000000000002 +2020-04-05 02:00:00,49.25,71.568,25.326999999999998,30.618000000000002 +2020-04-05 02:15:00,49.88,70.153,25.326999999999998,30.618000000000002 +2020-04-05 02:30:00,49.37,72.839,25.326999999999998,30.618000000000002 +2020-04-05 02:45:00,49.41,73.73100000000001,25.326999999999998,30.618000000000002 +2020-04-05 03:00:00,48.8,77.26,24.311999999999998,30.618000000000002 +2020-04-05 03:15:00,49.81,77.726,24.311999999999998,30.618000000000002 +2020-04-05 03:30:00,50.35,77.057,24.311999999999998,30.618000000000002 +2020-04-05 03:45:00,51.13,78.79899999999999,24.311999999999998,30.618000000000002 +2020-04-05 04:00:00,51.43,87.915,25.33,30.618000000000002 +2020-04-05 04:15:00,52.55,96.831,25.33,30.618000000000002 +2020-04-05 04:30:00,54.44,96.38600000000001,25.33,30.618000000000002 +2020-04-05 04:45:00,58.04,97.081,25.33,30.618000000000002 +2020-04-05 05:00:00,57.28,115.42299999999999,25.309,30.618000000000002 +2020-04-05 05:15:00,58.24,130.764,25.309,30.618000000000002 +2020-04-05 05:30:00,55.96,122.105,25.309,30.618000000000002 +2020-04-05 05:45:00,57.4,117.171,25.309,30.618000000000002 +2020-04-05 06:00:00,58.75,134.681,25.945999999999998,30.618000000000002 +2020-04-05 06:15:00,58.9,153.49,25.945999999999998,30.618000000000002 +2020-04-05 06:30:00,59.93,145.111,25.945999999999998,30.618000000000002 +2020-04-05 06:45:00,63.35,138.262,25.945999999999998,30.618000000000002 +2020-04-05 07:00:00,64.84,138.942,27.87,30.618000000000002 +2020-04-05 07:15:00,67.39,138.22799999999998,27.87,30.618000000000002 +2020-04-05 07:30:00,67.1,138.191,27.87,30.618000000000002 +2020-04-05 07:45:00,64.74,136.928,27.87,30.618000000000002 +2020-04-05 08:00:00,65.25,139.78799999999998,32.114000000000004,30.618000000000002 +2020-04-05 08:15:00,65.1,140.642,32.114000000000004,30.618000000000002 +2020-04-05 08:30:00,64.21,139.002,32.114000000000004,30.618000000000002 +2020-04-05 08:45:00,63.33,138.611,32.114000000000004,30.618000000000002 +2020-04-05 09:00:00,64.31,134.07,34.222,30.618000000000002 +2020-04-05 09:15:00,61.83,133.924,34.222,30.618000000000002 +2020-04-05 09:30:00,60.69,135.941,34.222,30.618000000000002 +2020-04-05 09:45:00,60.76,135.444,34.222,30.618000000000002 +2020-04-05 10:00:00,61.17,132.583,34.544000000000004,30.618000000000002 +2020-04-05 10:15:00,63.73,133.114,34.544000000000004,30.618000000000002 +2020-04-05 10:30:00,64.51,131.56,34.544000000000004,30.618000000000002 +2020-04-05 10:45:00,63.78,130.931,34.544000000000004,30.618000000000002 +2020-04-05 11:00:00,60.97,125.81200000000001,36.368,30.618000000000002 +2020-04-05 11:15:00,58.9,124.97,36.368,30.618000000000002 +2020-04-05 11:30:00,56.67,126.111,36.368,30.618000000000002 +2020-04-05 11:45:00,56.1,127.214,36.368,30.618000000000002 +2020-04-05 12:00:00,52.5,123.1,32.433,30.618000000000002 +2020-04-05 12:15:00,54.28,123.76299999999999,32.433,30.618000000000002 +2020-04-05 12:30:00,51.11,122.53399999999999,32.433,30.618000000000002 +2020-04-05 12:45:00,51.46,122.119,32.433,30.618000000000002 +2020-04-05 13:00:00,50.91,122.304,28.971999999999998,30.618000000000002 +2020-04-05 13:15:00,50.33,121.807,28.971999999999998,30.618000000000002 +2020-04-05 13:30:00,49.91,119.228,28.971999999999998,30.618000000000002 +2020-04-05 13:45:00,50.1,117.82600000000001,28.971999999999998,30.618000000000002 +2020-04-05 14:00:00,50.18,119.947,25.531999999999996,30.618000000000002 +2020-04-05 14:15:00,50.22,119.027,25.531999999999996,30.618000000000002 +2020-04-05 14:30:00,50.84,118.82700000000001,25.531999999999996,30.618000000000002 +2020-04-05 14:45:00,51.63,119.15,25.531999999999996,30.618000000000002 +2020-04-05 15:00:00,52.57,118.89200000000001,25.766,30.618000000000002 +2020-04-05 15:15:00,53.17,118.04299999999999,25.766,30.618000000000002 +2020-04-05 15:30:00,54.25,117.337,25.766,30.618000000000002 +2020-04-05 15:45:00,57.67,117.369,25.766,30.618000000000002 +2020-04-05 16:00:00,62.85,118.23899999999999,29.232,30.618000000000002 +2020-04-05 16:15:00,63.15,119.47,29.232,30.618000000000002 +2020-04-05 16:30:00,67.45,120.189,29.232,30.618000000000002 +2020-04-05 16:45:00,71.68,118.87299999999999,29.232,30.618000000000002 +2020-04-05 17:00:00,75.8,119.089,37.431,30.618000000000002 +2020-04-05 17:15:00,78.13,121.87700000000001,37.431,30.618000000000002 +2020-04-05 17:30:00,80.23,124.274,37.431,30.618000000000002 +2020-04-05 17:45:00,80.84,126.838,37.431,30.618000000000002 +2020-04-05 18:00:00,83.42,130.58700000000002,41.251999999999995,30.618000000000002 +2020-04-05 18:15:00,82.93,133.947,41.251999999999995,30.618000000000002 +2020-04-05 18:30:00,85.4,132.678,41.251999999999995,30.618000000000002 +2020-04-05 18:45:00,86.36,135.68,41.251999999999995,30.618000000000002 +2020-04-05 19:00:00,89.34,135.89700000000002,41.784,30.618000000000002 +2020-04-05 19:15:00,96.35,134.91899999999998,41.784,30.618000000000002 +2020-04-05 19:30:00,97.94,135.082,41.784,30.618000000000002 +2020-04-05 19:45:00,90.74,135.688,41.784,30.618000000000002 +2020-04-05 20:00:00,83.74,132.64,40.804,30.618000000000002 +2020-04-05 20:15:00,84.54,131.41299999999998,40.804,30.618000000000002 +2020-04-05 20:30:00,88.61,131.183,40.804,30.618000000000002 +2020-04-05 20:45:00,93.47,129.24200000000002,40.804,30.618000000000002 +2020-04-05 21:00:00,90.23,122.90100000000001,38.379,30.618000000000002 +2020-04-05 21:15:00,85.48,122.161,38.379,30.618000000000002 +2020-04-05 21:30:00,81.64,123.109,38.379,30.618000000000002 +2020-04-05 21:45:00,78.03,122.22,38.379,30.618000000000002 +2020-04-05 22:00:00,72.89,117.758,37.87,30.618000000000002 +2020-04-05 22:15:00,76.43,115.053,37.87,30.618000000000002 +2020-04-05 22:30:00,78.18,110.678,37.87,30.618000000000002 +2020-04-05 22:45:00,78.53,106.478,37.87,30.618000000000002 +2020-04-05 23:00:00,72.6,97.42299999999999,33.332,30.618000000000002 +2020-04-05 23:15:00,69.86,95.53299999999999,33.332,30.618000000000002 +2020-04-05 23:30:00,67.11,93.111,33.332,30.618000000000002 +2020-04-05 23:45:00,71.83,92.75,33.332,30.618000000000002 +2020-04-06 00:00:00,72.06,79.122,34.698,30.736 +2020-04-06 00:15:00,73.34,78.301,34.698,30.736 +2020-04-06 00:30:00,69.38,76.625,34.698,30.736 +2020-04-06 00:45:00,66.41,75.048,34.698,30.736 +2020-04-06 01:00:00,65.32,76.639,32.889,30.736 +2020-04-06 01:15:00,71.76,76.038,32.889,30.736 +2020-04-06 01:30:00,72.41,74.84100000000001,32.889,30.736 +2020-04-06 01:45:00,73.18,74.486,32.889,30.736 +2020-04-06 02:00:00,68.6,76.492,32.06,30.736 +2020-04-06 02:15:00,70.89,75.381,32.06,30.736 +2020-04-06 02:30:00,74.64,78.384,32.06,30.736 +2020-04-06 02:45:00,75.36,78.82,32.06,30.736 +2020-04-06 03:00:00,73.31,83.4,30.515,30.736 +2020-04-06 03:15:00,75.92,85.24799999999999,30.515,30.736 +2020-04-06 03:30:00,80.31,84.79899999999999,30.515,30.736 +2020-04-06 03:45:00,82.56,85.961,30.515,30.736 +2020-04-06 04:00:00,85.18,99.426,31.436,30.736 +2020-04-06 04:15:00,84.27,112.485,31.436,30.736 +2020-04-06 04:30:00,87.01,113.088,31.436,30.736 +2020-04-06 04:45:00,88.33,114.081,31.436,30.736 +2020-04-06 05:00:00,97.35,145.80200000000002,38.997,30.736 +2020-04-06 05:15:00,102.88,179.06,38.997,30.736 +2020-04-06 05:30:00,104.6,169.676,38.997,30.736 +2020-04-06 05:45:00,103.3,159.631,38.997,30.736 +2020-04-06 06:00:00,111.48,160.849,54.97,30.736 +2020-04-06 06:15:00,112.43,165.453,54.97,30.736 +2020-04-06 06:30:00,112.7,164.183,54.97,30.736 +2020-04-06 06:45:00,114.94,165.671,54.97,30.736 +2020-04-06 07:00:00,116.47,168.513,66.032,30.736 +2020-04-06 07:15:00,114.52,169.805,66.032,30.736 +2020-04-06 07:30:00,112.82,168.767,66.032,30.736 +2020-04-06 07:45:00,111.27,166.037,66.032,30.736 +2020-04-06 08:00:00,109.22,165.03599999999997,59.941,30.736 +2020-04-06 08:15:00,108.67,163.886,59.941,30.736 +2020-04-06 08:30:00,107.94,159.04,59.941,30.736 +2020-04-06 08:45:00,106.68,156.61,59.941,30.736 +2020-04-06 09:00:00,105.31,151.07299999999998,54.016000000000005,30.736 +2020-04-06 09:15:00,105.6,147.696,54.016000000000005,30.736 +2020-04-06 09:30:00,104.71,148.596,54.016000000000005,30.736 +2020-04-06 09:45:00,103.31,147.168,54.016000000000005,30.736 +2020-04-06 10:00:00,101.9,144.064,50.63,30.736 +2020-04-06 10:15:00,104.54,144.34799999999998,50.63,30.736 +2020-04-06 10:30:00,103.43,141.99200000000002,50.63,30.736 +2020-04-06 10:45:00,105.54,141.142,50.63,30.736 +2020-04-06 11:00:00,100.25,134.44,49.951,30.736 +2020-04-06 11:15:00,103.21,135.025,49.951,30.736 +2020-04-06 11:30:00,98.48,137.47,49.951,30.736 +2020-04-06 11:45:00,100.55,138.54,49.951,30.736 +2020-04-06 12:00:00,103.01,135.093,46.913000000000004,30.736 +2020-04-06 12:15:00,108.32,135.816,46.913000000000004,30.736 +2020-04-06 12:30:00,107.08,134.238,46.913000000000004,30.736 +2020-04-06 12:45:00,101.4,134.923,46.913000000000004,30.736 +2020-04-06 13:00:00,102.39,136.09,47.093999999999994,30.736 +2020-04-06 13:15:00,101.73,134.179,47.093999999999994,30.736 +2020-04-06 13:30:00,102.31,131.29,47.093999999999994,30.736 +2020-04-06 13:45:00,109.82,130.314,47.093999999999994,30.736 +2020-04-06 14:00:00,111.7,131.673,46.678000000000004,30.736 +2020-04-06 14:15:00,107.6,130.526,46.678000000000004,30.736 +2020-04-06 14:30:00,101.94,129.817,46.678000000000004,30.736 +2020-04-06 14:45:00,103.94,131.03799999999998,46.678000000000004,30.736 +2020-04-06 15:00:00,103.09,131.95600000000002,47.715,30.736 +2020-04-06 15:15:00,104.75,129.77100000000002,47.715,30.736 +2020-04-06 15:30:00,107.02,128.752,47.715,30.736 +2020-04-06 15:45:00,106.7,128.225,47.715,30.736 +2020-04-06 16:00:00,111.87,129.474,49.81100000000001,30.736 +2020-04-06 16:15:00,109.46,130.173,49.81100000000001,30.736 +2020-04-06 16:30:00,112.43,129.903,49.81100000000001,30.736 +2020-04-06 16:45:00,110.12,127.697,49.81100000000001,30.736 +2020-04-06 17:00:00,116.7,127.12899999999999,55.591,30.736 +2020-04-06 17:15:00,115.27,129.43200000000002,55.591,30.736 +2020-04-06 17:30:00,116.49,131.267,55.591,30.736 +2020-04-06 17:45:00,114.97,132.599,55.591,30.736 +2020-04-06 18:00:00,118.43,136.04,56.523,30.736 +2020-04-06 18:15:00,116.2,137.036,56.523,30.736 +2020-04-06 18:30:00,115.3,135.815,56.523,30.736 +2020-04-06 18:45:00,112.64,140.894,56.523,30.736 +2020-04-06 19:00:00,111.96,139.827,56.044,30.736 +2020-04-06 19:15:00,117.29,138.756,56.044,30.736 +2020-04-06 19:30:00,115.88,139.08,56.044,30.736 +2020-04-06 19:45:00,110.57,138.85299999999998,56.044,30.736 +2020-04-06 20:00:00,102.39,133.55,61.715,30.736 +2020-04-06 20:15:00,99.43,131.42600000000002,61.715,30.736 +2020-04-06 20:30:00,100.45,130.275,61.715,30.736 +2020-04-06 20:45:00,98.33,129.54,61.715,30.736 +2020-04-06 21:00:00,101.37,123.23200000000001,56.24,30.736 +2020-04-06 21:15:00,100.59,121.96799999999999,56.24,30.736 +2020-04-06 21:30:00,94.39,122.585,56.24,30.736 +2020-04-06 21:45:00,88.76,121.28200000000001,56.24,30.736 +2020-04-06 22:00:00,84.27,113.863,50.437,30.736 +2020-04-06 22:15:00,87.71,111.35700000000001,50.437,30.736 +2020-04-06 22:30:00,87.15,98.445,50.437,30.736 +2020-04-06 22:45:00,85.4,91.066,50.437,30.736 +2020-04-06 23:00:00,73.0,82.488,42.756,30.736 +2020-04-06 23:15:00,73.24,81.514,42.756,30.736 +2020-04-06 23:30:00,69.53,80.881,42.756,30.736 +2020-04-06 23:45:00,72.17,81.986,42.756,30.736 +2020-04-07 00:00:00,69.6,77.01899999999999,39.857,30.736 +2020-04-07 00:15:00,70.65,77.579,39.857,30.736 +2020-04-07 00:30:00,69.86,75.704,39.857,30.736 +2020-04-07 00:45:00,70.53,73.96600000000001,39.857,30.736 +2020-04-07 01:00:00,69.2,75.119,37.233000000000004,30.736 +2020-04-07 01:15:00,73.23,74.282,37.233000000000004,30.736 +2020-04-07 01:30:00,72.34,73.097,37.233000000000004,30.736 +2020-04-07 01:45:00,73.13,72.648,37.233000000000004,30.736 +2020-04-07 02:00:00,72.15,74.37,35.856,30.736 +2020-04-07 02:15:00,72.53,73.82600000000001,35.856,30.736 +2020-04-07 02:30:00,68.0,76.265,35.856,30.736 +2020-04-07 02:45:00,74.06,76.898,35.856,30.736 +2020-04-07 03:00:00,72.61,80.45100000000001,34.766999999999996,30.736 +2020-04-07 03:15:00,72.94,82.287,34.766999999999996,30.736 +2020-04-07 03:30:00,74.44,82.10799999999999,34.766999999999996,30.736 +2020-04-07 03:45:00,76.22,82.777,34.766999999999996,30.736 +2020-04-07 04:00:00,80.49,95.38600000000001,35.468,30.736 +2020-04-07 04:15:00,82.48,108.21,35.468,30.736 +2020-04-07 04:30:00,85.73,108.561,35.468,30.736 +2020-04-07 04:45:00,90.58,110.554,35.468,30.736 +2020-04-07 05:00:00,100.18,146.112,40.399,30.736 +2020-04-07 05:15:00,102.56,179.535,40.399,30.736 +2020-04-07 05:30:00,104.29,169.34400000000002,40.399,30.736 +2020-04-07 05:45:00,106.96,158.921,40.399,30.736 +2020-04-07 06:00:00,110.4,160.033,54.105,30.736 +2020-04-07 06:15:00,110.63,165.732,54.105,30.736 +2020-04-07 06:30:00,112.93,163.855,54.105,30.736 +2020-04-07 06:45:00,116.12,164.59900000000002,54.105,30.736 +2020-04-07 07:00:00,116.23,167.41099999999997,63.083,30.736 +2020-04-07 07:15:00,115.06,168.44,63.083,30.736 +2020-04-07 07:30:00,115.2,167.024,63.083,30.736 +2020-04-07 07:45:00,113.5,163.887,63.083,30.736 +2020-04-07 08:00:00,110.51,162.91,57.254,30.736 +2020-04-07 08:15:00,109.08,160.877,57.254,30.736 +2020-04-07 08:30:00,109.23,155.965,57.254,30.736 +2020-04-07 08:45:00,109.56,152.909,57.254,30.736 +2020-04-07 09:00:00,107.69,146.993,51.395,30.736 +2020-04-07 09:15:00,108.09,144.628,51.395,30.736 +2020-04-07 09:30:00,104.87,146.349,51.395,30.736 +2020-04-07 09:45:00,106.35,145.477,51.395,30.736 +2020-04-07 10:00:00,103.01,141.299,48.201,30.736 +2020-04-07 10:15:00,102.97,140.826,48.201,30.736 +2020-04-07 10:30:00,100.59,138.631,48.201,30.736 +2020-04-07 10:45:00,102.15,138.48,48.201,30.736 +2020-04-07 11:00:00,99.8,132.81,46.133,30.736 +2020-04-07 11:15:00,99.29,133.372,46.133,30.736 +2020-04-07 11:30:00,97.42,134.46,46.133,30.736 +2020-04-07 11:45:00,99.27,135.839,46.133,30.736 +2020-04-07 12:00:00,102.69,131.346,44.243,30.736 +2020-04-07 12:15:00,103.58,131.928,44.243,30.736 +2020-04-07 12:30:00,101.04,131.215,44.243,30.736 +2020-04-07 12:45:00,96.93,131.998,44.243,30.736 +2020-04-07 13:00:00,95.94,132.735,45.042,30.736 +2020-04-07 13:15:00,97.03,131.35399999999998,45.042,30.736 +2020-04-07 13:30:00,100.96,129.305,45.042,30.736 +2020-04-07 13:45:00,103.24,128.042,45.042,30.736 +2020-04-07 14:00:00,101.28,129.875,44.062,30.736 +2020-04-07 14:15:00,102.93,128.732,44.062,30.736 +2020-04-07 14:30:00,106.26,128.583,44.062,30.736 +2020-04-07 14:45:00,104.54,129.403,44.062,30.736 +2020-04-07 15:00:00,100.32,129.96200000000002,46.461999999999996,30.736 +2020-04-07 15:15:00,100.71,128.40200000000002,46.461999999999996,30.736 +2020-04-07 15:30:00,104.76,127.404,46.461999999999996,30.736 +2020-04-07 15:45:00,106.51,126.71600000000001,46.461999999999996,30.736 +2020-04-07 16:00:00,105.14,127.979,48.802,30.736 +2020-04-07 16:15:00,108.47,129.028,48.802,30.736 +2020-04-07 16:30:00,110.54,129.042,48.802,30.736 +2020-04-07 16:45:00,111.8,127.31,48.802,30.736 +2020-04-07 17:00:00,111.67,127.27799999999999,55.672,30.736 +2020-04-07 17:15:00,118.31,129.785,55.672,30.736 +2020-04-07 17:30:00,117.23,131.864,55.672,30.736 +2020-04-07 17:45:00,116.51,132.929,55.672,30.736 +2020-04-07 18:00:00,113.28,135.825,57.006,30.736 +2020-04-07 18:15:00,116.51,137.267,57.006,30.736 +2020-04-07 18:30:00,115.8,135.695,57.006,30.736 +2020-04-07 18:45:00,116.19,141.224,57.006,30.736 +2020-04-07 19:00:00,111.29,139.591,57.148,30.736 +2020-04-07 19:15:00,116.99,138.437,57.148,30.736 +2020-04-07 19:30:00,116.1,138.225,57.148,30.736 +2020-04-07 19:45:00,113.98,138.225,57.148,30.736 +2020-04-07 20:00:00,104.78,133.197,61.895,30.736 +2020-04-07 20:15:00,109.17,129.917,61.895,30.736 +2020-04-07 20:30:00,105.18,129.49200000000002,61.895,30.736 +2020-04-07 20:45:00,104.44,128.619,61.895,30.736 +2020-04-07 21:00:00,94.22,122.29899999999999,54.78,30.736 +2020-04-07 21:15:00,98.11,120.87200000000001,54.78,30.736 +2020-04-07 21:30:00,95.36,121.095,54.78,30.736 +2020-04-07 21:45:00,95.09,120.073,54.78,30.736 +2020-04-07 22:00:00,82.41,113.87100000000001,50.76,30.736 +2020-04-07 22:15:00,81.69,111.046,50.76,30.736 +2020-04-07 22:30:00,86.54,98.31200000000001,50.76,30.736 +2020-04-07 22:45:00,86.26,91.10600000000001,50.76,30.736 +2020-04-07 23:00:00,79.29,82.12700000000001,44.162,30.736 +2020-04-07 23:15:00,77.16,81.404,44.162,30.736 +2020-04-07 23:30:00,74.84,80.531,44.162,30.736 +2020-04-07 23:45:00,80.07,81.457,44.162,30.736 +2020-04-08 00:00:00,77.66,76.607,39.061,30.736 +2020-04-08 00:15:00,75.81,77.182,39.061,30.736 +2020-04-08 00:30:00,72.88,75.296,39.061,30.736 +2020-04-08 00:45:00,69.77,73.563,39.061,30.736 +2020-04-08 01:00:00,73.18,74.697,35.795,30.736 +2020-04-08 01:15:00,76.79,73.837,35.795,30.736 +2020-04-08 01:30:00,75.5,72.631,35.795,30.736 +2020-04-08 01:45:00,70.46,72.187,35.795,30.736 +2020-04-08 02:00:00,71.43,73.89699999999999,33.316,30.736 +2020-04-08 02:15:00,70.31,73.337,33.316,30.736 +2020-04-08 02:30:00,70.6,75.797,33.316,30.736 +2020-04-08 02:45:00,78.12,76.435,33.316,30.736 +2020-04-08 03:00:00,79.43,80.005,32.803000000000004,30.736 +2020-04-08 03:15:00,79.12,81.814,32.803000000000004,30.736 +2020-04-08 03:30:00,75.54,81.631,32.803000000000004,30.736 +2020-04-08 03:45:00,77.28,82.321,32.803000000000004,30.736 +2020-04-08 04:00:00,80.55,94.90899999999999,34.235,30.736 +2020-04-08 04:15:00,81.61,107.698,34.235,30.736 +2020-04-08 04:30:00,85.38,108.055,34.235,30.736 +2020-04-08 04:45:00,90.05,110.037,34.235,30.736 +2020-04-08 05:00:00,97.97,145.516,38.65,30.736 +2020-04-08 05:15:00,99.52,178.87,38.65,30.736 +2020-04-08 05:30:00,102.97,168.683,38.65,30.736 +2020-04-08 05:45:00,107.04,158.297,38.65,30.736 +2020-04-08 06:00:00,111.56,159.431,54.951,30.736 +2020-04-08 06:15:00,113.89,165.113,54.951,30.736 +2020-04-08 06:30:00,116.9,163.208,54.951,30.736 +2020-04-08 06:45:00,118.83,163.938,54.951,30.736 +2020-04-08 07:00:00,121.7,166.757,67.328,30.736 +2020-04-08 07:15:00,121.52,167.764,67.328,30.736 +2020-04-08 07:30:00,120.53,166.30700000000002,67.328,30.736 +2020-04-08 07:45:00,119.16,163.157,67.328,30.736 +2020-04-08 08:00:00,115.39,162.161,60.23,30.736 +2020-04-08 08:15:00,117.51,160.15,60.23,30.736 +2020-04-08 08:30:00,118.44,155.19899999999998,60.23,30.736 +2020-04-08 08:45:00,119.61,152.173,60.23,30.736 +2020-04-08 09:00:00,120.78,146.264,56.845,30.736 +2020-04-08 09:15:00,122.55,143.903,56.845,30.736 +2020-04-08 09:30:00,122.95,145.643,56.845,30.736 +2020-04-08 09:45:00,122.4,144.80100000000002,56.845,30.736 +2020-04-08 10:00:00,122.17,140.63,53.832,30.736 +2020-04-08 10:15:00,121.08,140.207,53.832,30.736 +2020-04-08 10:30:00,124.05,138.03799999999998,53.832,30.736 +2020-04-08 10:45:00,121.53,137.908,53.832,30.736 +2020-04-08 11:00:00,113.64,132.23,53.225,30.736 +2020-04-08 11:15:00,107.84,132.815,53.225,30.736 +2020-04-08 11:30:00,106.89,133.906,53.225,30.736 +2020-04-08 11:45:00,109.26,135.306,53.225,30.736 +2020-04-08 12:00:00,115.23,130.839,50.676,30.736 +2020-04-08 12:15:00,114.32,131.429,50.676,30.736 +2020-04-08 12:30:00,105.49,130.672,50.676,30.736 +2020-04-08 12:45:00,103.19,131.458,50.676,30.736 +2020-04-08 13:00:00,101.47,132.237,50.646,30.736 +2020-04-08 13:15:00,107.86,130.846,50.646,30.736 +2020-04-08 13:30:00,106.14,128.796,50.646,30.736 +2020-04-08 13:45:00,114.59,127.53399999999999,50.646,30.736 +2020-04-08 14:00:00,122.83,129.437,50.786,30.736 +2020-04-08 14:15:00,123.75,128.27200000000002,50.786,30.736 +2020-04-08 14:30:00,119.06,128.078,50.786,30.736 +2020-04-08 14:45:00,114.36,128.901,50.786,30.736 +2020-04-08 15:00:00,108.95,129.488,51.535,30.736 +2020-04-08 15:15:00,110.42,127.902,51.535,30.736 +2020-04-08 15:30:00,107.51,126.854,51.535,30.736 +2020-04-08 15:45:00,110.73,126.148,51.535,30.736 +2020-04-08 16:00:00,116.16,127.445,53.157,30.736 +2020-04-08 16:15:00,113.87,128.469,53.157,30.736 +2020-04-08 16:30:00,113.4,128.485,53.157,30.736 +2020-04-08 16:45:00,118.97,126.69,53.157,30.736 +2020-04-08 17:00:00,120.55,126.706,57.793,30.736 +2020-04-08 17:15:00,115.72,129.194,57.793,30.736 +2020-04-08 17:30:00,117.9,131.276,57.793,30.736 +2020-04-08 17:45:00,119.34,132.32399999999998,57.793,30.736 +2020-04-08 18:00:00,118.83,135.232,59.872,30.736 +2020-04-08 18:15:00,114.99,136.711,59.872,30.736 +2020-04-08 18:30:00,117.03,135.128,59.872,30.736 +2020-04-08 18:45:00,117.74,140.667,59.872,30.736 +2020-04-08 19:00:00,117.3,139.016,60.17100000000001,30.736 +2020-04-08 19:15:00,117.96,137.872,60.17100000000001,30.736 +2020-04-08 19:30:00,117.33,137.67700000000002,60.17100000000001,30.736 +2020-04-08 19:45:00,114.3,137.71,60.17100000000001,30.736 +2020-04-08 20:00:00,102.99,132.656,65.015,30.736 +2020-04-08 20:15:00,103.02,129.386,65.015,30.736 +2020-04-08 20:30:00,107.09,128.996,65.015,30.736 +2020-04-08 20:45:00,106.0,128.14600000000002,65.015,30.736 +2020-04-08 21:00:00,97.85,121.82600000000001,57.805,30.736 +2020-04-08 21:15:00,90.97,120.40899999999999,57.805,30.736 +2020-04-08 21:30:00,89.79,120.62299999999999,57.805,30.736 +2020-04-08 21:45:00,86.79,119.63,57.805,30.736 +2020-04-08 22:00:00,81.91,113.434,52.115,30.736 +2020-04-08 22:15:00,83.05,110.63600000000001,52.115,30.736 +2020-04-08 22:30:00,86.93,97.867,52.115,30.736 +2020-04-08 22:45:00,87.46,90.656,52.115,30.736 +2020-04-08 23:00:00,83.24,81.655,42.871,30.736 +2020-04-08 23:15:00,77.77,80.96300000000001,42.871,30.736 +2020-04-08 23:30:00,78.21,80.09,42.871,30.736 +2020-04-08 23:45:00,81.71,81.031,42.871,30.736 +2020-04-09 00:00:00,75.02,76.195,39.203,30.736 +2020-04-09 00:15:00,76.58,76.783,39.203,30.736 +2020-04-09 00:30:00,70.26,74.887,39.203,30.736 +2020-04-09 00:45:00,71.93,73.15899999999999,39.203,30.736 +2020-04-09 01:00:00,73.86,74.275,37.118,30.736 +2020-04-09 01:15:00,78.67,73.393,37.118,30.736 +2020-04-09 01:30:00,78.31,72.165,37.118,30.736 +2020-04-09 01:45:00,73.67,71.726,37.118,30.736 +2020-04-09 02:00:00,71.77,73.42399999999999,35.647,30.736 +2020-04-09 02:15:00,74.57,72.848,35.647,30.736 +2020-04-09 02:30:00,78.65,75.328,35.647,30.736 +2020-04-09 02:45:00,79.41,75.971,35.647,30.736 +2020-04-09 03:00:00,73.94,79.559,34.585,30.736 +2020-04-09 03:15:00,75.69,81.342,34.585,30.736 +2020-04-09 03:30:00,76.28,81.153,34.585,30.736 +2020-04-09 03:45:00,77.96,81.862,34.585,30.736 +2020-04-09 04:00:00,84.48,94.429,36.184,30.736 +2020-04-09 04:15:00,90.28,107.18700000000001,36.184,30.736 +2020-04-09 04:30:00,90.56,107.54799999999999,36.184,30.736 +2020-04-09 04:45:00,91.01,109.51899999999999,36.184,30.736 +2020-04-09 05:00:00,97.64,144.918,41.019,30.736 +2020-04-09 05:15:00,101.38,178.203,41.019,30.736 +2020-04-09 05:30:00,106.13,168.021,41.019,30.736 +2020-04-09 05:45:00,108.39,157.672,41.019,30.736 +2020-04-09 06:00:00,111.79,158.826,53.963,30.736 +2020-04-09 06:15:00,114.39,164.495,53.963,30.736 +2020-04-09 06:30:00,116.98,162.559,53.963,30.736 +2020-04-09 06:45:00,121.2,163.276,53.963,30.736 +2020-04-09 07:00:00,121.1,166.09900000000002,66.512,30.736 +2020-04-09 07:15:00,120.6,167.085,66.512,30.736 +2020-04-09 07:30:00,119.91,165.58700000000002,66.512,30.736 +2020-04-09 07:45:00,118.39,162.42600000000002,66.512,30.736 +2020-04-09 08:00:00,117.51,161.411,58.86,30.736 +2020-04-09 08:15:00,117.76,159.423,58.86,30.736 +2020-04-09 08:30:00,121.48,154.435,58.86,30.736 +2020-04-09 08:45:00,121.83,151.436,58.86,30.736 +2020-04-09 09:00:00,120.69,145.533,52.156000000000006,30.736 +2020-04-09 09:15:00,115.59,143.17700000000002,52.156000000000006,30.736 +2020-04-09 09:30:00,110.08,144.937,52.156000000000006,30.736 +2020-04-09 09:45:00,113.84,144.123,52.156000000000006,30.736 +2020-04-09 10:00:00,105.34,139.96200000000002,49.034,30.736 +2020-04-09 10:15:00,105.65,139.588,49.034,30.736 +2020-04-09 10:30:00,104.77,137.445,49.034,30.736 +2020-04-09 10:45:00,105.43,137.336,49.034,30.736 +2020-04-09 11:00:00,100.95,131.65,46.53,30.736 +2020-04-09 11:15:00,102.14,132.259,46.53,30.736 +2020-04-09 11:30:00,101.09,133.35299999999998,46.53,30.736 +2020-04-09 11:45:00,101.76,134.774,46.53,30.736 +2020-04-09 12:00:00,100.18,130.33100000000002,43.318000000000005,30.736 +2020-04-09 12:15:00,105.05,130.931,43.318000000000005,30.736 +2020-04-09 12:30:00,101.1,130.13,43.318000000000005,30.736 +2020-04-09 12:45:00,98.59,130.916,43.318000000000005,30.736 +2020-04-09 13:00:00,98.99,131.74,41.608000000000004,30.736 +2020-04-09 13:15:00,100.83,130.338,41.608000000000004,30.736 +2020-04-09 13:30:00,100.23,128.286,41.608000000000004,30.736 +2020-04-09 13:45:00,97.6,127.027,41.608000000000004,30.736 +2020-04-09 14:00:00,107.53,128.997,41.786,30.736 +2020-04-09 14:15:00,114.19,127.811,41.786,30.736 +2020-04-09 14:30:00,114.7,127.574,41.786,30.736 +2020-04-09 14:45:00,112.0,128.401,41.786,30.736 +2020-04-09 15:00:00,111.51,129.015,44.181999999999995,30.736 +2020-04-09 15:15:00,112.57,127.40299999999999,44.181999999999995,30.736 +2020-04-09 15:30:00,107.02,126.306,44.181999999999995,30.736 +2020-04-09 15:45:00,110.02,125.58,44.181999999999995,30.736 +2020-04-09 16:00:00,117.62,126.913,45.956,30.736 +2020-04-09 16:15:00,115.32,127.911,45.956,30.736 +2020-04-09 16:30:00,113.91,127.928,45.956,30.736 +2020-04-09 16:45:00,115.9,126.07,45.956,30.736 +2020-04-09 17:00:00,120.99,126.135,50.702,30.736 +2020-04-09 17:15:00,120.94,128.60299999999998,50.702,30.736 +2020-04-09 17:30:00,122.61,130.686,50.702,30.736 +2020-04-09 17:45:00,117.98,131.719,50.702,30.736 +2020-04-09 18:00:00,116.45,134.638,53.595,30.736 +2020-04-09 18:15:00,119.67,136.156,53.595,30.736 +2020-04-09 18:30:00,119.28,134.56,53.595,30.736 +2020-04-09 18:45:00,118.54,140.11,53.595,30.736 +2020-04-09 19:00:00,113.55,138.439,54.207,30.736 +2020-04-09 19:15:00,111.16,137.30700000000002,54.207,30.736 +2020-04-09 19:30:00,116.65,137.13,54.207,30.736 +2020-04-09 19:45:00,115.97,137.195,54.207,30.736 +2020-04-09 20:00:00,108.98,132.112,56.948,30.736 +2020-04-09 20:15:00,107.57,128.85299999999998,56.948,30.736 +2020-04-09 20:30:00,101.4,128.499,56.948,30.736 +2020-04-09 20:45:00,106.29,127.67299999999999,56.948,30.736 +2020-04-09 21:00:00,102.08,121.351,52.157,30.736 +2020-04-09 21:15:00,96.68,119.946,52.157,30.736 +2020-04-09 21:30:00,90.04,120.15100000000001,52.157,30.736 +2020-04-09 21:45:00,89.87,119.18700000000001,52.157,30.736 +2020-04-09 22:00:00,90.47,112.99700000000001,47.483000000000004,30.736 +2020-04-09 22:15:00,88.93,110.225,47.483000000000004,30.736 +2020-04-09 22:30:00,83.44,97.421,47.483000000000004,30.736 +2020-04-09 22:45:00,80.92,90.204,47.483000000000004,30.736 +2020-04-09 23:00:00,64.51,81.181,41.978,30.736 +2020-04-09 23:15:00,64.07,80.52199999999999,41.978,30.736 +2020-04-09 23:30:00,61.31,79.64699999999999,41.978,30.736 +2020-04-09 23:45:00,61.8,80.60300000000001,41.978,30.736 +2020-04-10 00:00:00,59.64,74.03399999999999,30.72,30.618000000000002 +2020-04-10 00:15:00,60.38,70.993,30.72,30.618000000000002 +2020-04-10 00:30:00,56.32,69.40899999999999,30.72,30.618000000000002 +2020-04-10 00:45:00,59.16,68.405,30.72,30.618000000000002 +2020-04-10 01:00:00,57.38,69.718,26.553,30.618000000000002 +2020-04-10 01:15:00,57.59,69.342,26.553,30.618000000000002 +2020-04-10 01:30:00,57.08,67.82300000000001,26.553,30.618000000000002 +2020-04-10 01:45:00,58.03,67.472,26.553,30.618000000000002 +2020-04-10 02:00:00,53.88,69.205,22.712,30.618000000000002 +2020-04-10 02:15:00,57.6,67.71,22.712,30.618000000000002 +2020-04-10 02:30:00,54.83,70.5,22.712,30.618000000000002 +2020-04-10 02:45:00,57.8,71.417,22.712,30.618000000000002 +2020-04-10 03:00:00,58.43,75.032,20.511999999999997,30.618000000000002 +2020-04-10 03:15:00,56.11,75.366,20.511999999999997,30.618000000000002 +2020-04-10 03:30:00,59.21,74.673,20.511999999999997,30.618000000000002 +2020-04-10 03:45:00,59.68,76.515,20.511999999999997,30.618000000000002 +2020-04-10 04:00:00,61.34,85.525,19.98,30.618000000000002 +2020-04-10 04:15:00,58.56,94.279,19.98,30.618000000000002 +2020-04-10 04:30:00,61.08,93.85799999999999,19.98,30.618000000000002 +2020-04-10 04:45:00,61.82,94.49600000000001,19.98,30.618000000000002 +2020-04-10 05:00:00,61.78,112.44,22.715,30.618000000000002 +2020-04-10 05:15:00,63.19,127.439,22.715,30.618000000000002 +2020-04-10 05:30:00,63.03,118.79899999999999,22.715,30.618000000000002 +2020-04-10 05:45:00,62.57,114.056,22.715,30.618000000000002 +2020-04-10 06:00:00,63.5,131.666,22.576999999999998,30.618000000000002 +2020-04-10 06:15:00,64.36,150.401,22.576999999999998,30.618000000000002 +2020-04-10 06:30:00,66.27,141.877,22.576999999999998,30.618000000000002 +2020-04-10 06:45:00,66.56,134.958,22.576999999999998,30.618000000000002 +2020-04-10 07:00:00,72.0,135.668,23.541999999999998,30.618000000000002 +2020-04-10 07:15:00,72.94,134.844,23.541999999999998,30.618000000000002 +2020-04-10 07:30:00,72.56,134.6,23.541999999999998,30.618000000000002 +2020-04-10 07:45:00,72.68,133.276,23.541999999999998,30.618000000000002 +2020-04-10 08:00:00,73.27,136.041,23.895,30.618000000000002 +2020-04-10 08:15:00,73.33,137.007,23.895,30.618000000000002 +2020-04-10 08:30:00,72.0,135.178,23.895,30.618000000000002 +2020-04-10 08:45:00,71.59,134.93200000000002,23.895,30.618000000000002 +2020-04-10 09:00:00,63.96,130.424,24.239,30.618000000000002 +2020-04-10 09:15:00,70.6,130.297,24.239,30.618000000000002 +2020-04-10 09:30:00,70.79,132.411,24.239,30.618000000000002 +2020-04-10 09:45:00,73.79,132.059,24.239,30.618000000000002 +2020-04-10 10:00:00,71.11,129.239,21.985,30.618000000000002 +2020-04-10 10:15:00,71.88,130.02,21.985,30.618000000000002 +2020-04-10 10:30:00,72.52,128.593,21.985,30.618000000000002 +2020-04-10 10:45:00,68.48,128.07,21.985,30.618000000000002 +2020-04-10 11:00:00,65.66,122.911,22.093000000000004,30.618000000000002 +2020-04-10 11:15:00,62.4,122.189,22.093000000000004,30.618000000000002 +2020-04-10 11:30:00,60.95,123.34700000000001,22.093000000000004,30.618000000000002 +2020-04-10 11:45:00,61.95,124.551,22.093000000000004,30.618000000000002 +2020-04-10 12:00:00,55.24,120.56299999999999,19.041,30.618000000000002 +2020-04-10 12:15:00,54.22,121.271,19.041,30.618000000000002 +2020-04-10 12:30:00,54.57,119.821,19.041,30.618000000000002 +2020-04-10 12:45:00,58.91,119.413,19.041,30.618000000000002 +2020-04-10 13:00:00,55.07,119.819,12.672,30.618000000000002 +2020-04-10 13:15:00,56.02,119.266,12.672,30.618000000000002 +2020-04-10 13:30:00,52.03,116.676,12.672,30.618000000000002 +2020-04-10 13:45:00,51.25,115.288,12.672,30.618000000000002 +2020-04-10 14:00:00,51.01,117.75200000000001,10.321,30.618000000000002 +2020-04-10 14:15:00,54.91,116.723,10.321,30.618000000000002 +2020-04-10 14:30:00,54.25,116.304,10.321,30.618000000000002 +2020-04-10 14:45:00,50.76,116.64299999999999,10.321,30.618000000000002 +2020-04-10 15:00:00,52.9,116.525,13.478,30.618000000000002 +2020-04-10 15:15:00,55.88,115.546,13.478,30.618000000000002 +2020-04-10 15:30:00,52.88,114.59100000000001,13.478,30.618000000000002 +2020-04-10 15:45:00,57.97,114.529,13.478,30.618000000000002 +2020-04-10 16:00:00,62.6,115.57799999999999,17.623,30.618000000000002 +2020-04-10 16:15:00,64.61,116.676,17.623,30.618000000000002 +2020-04-10 16:30:00,67.2,117.40700000000001,17.623,30.618000000000002 +2020-04-10 16:45:00,69.59,115.771,17.623,30.618000000000002 +2020-04-10 17:00:00,76.4,116.23299999999999,22.64,30.618000000000002 +2020-04-10 17:15:00,75.58,118.92200000000001,22.64,30.618000000000002 +2020-04-10 17:30:00,77.36,121.331,22.64,30.618000000000002 +2020-04-10 17:45:00,75.89,123.815,22.64,30.618000000000002 +2020-04-10 18:00:00,81.02,127.62,29.147,30.618000000000002 +2020-04-10 18:15:00,79.22,131.172,29.147,30.618000000000002 +2020-04-10 18:30:00,80.59,129.843,29.147,30.618000000000002 +2020-04-10 18:45:00,80.5,132.89600000000002,29.147,30.618000000000002 +2020-04-10 19:00:00,84.47,133.018,34.491,30.618000000000002 +2020-04-10 19:15:00,83.92,132.095,34.491,30.618000000000002 +2020-04-10 19:30:00,81.85,132.35,34.491,30.618000000000002 +2020-04-10 19:45:00,81.31,133.11700000000002,34.491,30.618000000000002 +2020-04-10 20:00:00,76.54,129.928,41.368,30.618000000000002 +2020-04-10 20:15:00,76.86,128.756,41.368,30.618000000000002 +2020-04-10 20:30:00,73.31,128.704,41.368,30.618000000000002 +2020-04-10 20:45:00,75.27,126.87899999999999,41.368,30.618000000000002 +2020-04-10 21:00:00,70.24,120.53399999999999,37.605,30.618000000000002 +2020-04-10 21:15:00,71.86,119.846,37.605,30.618000000000002 +2020-04-10 21:30:00,65.09,120.75200000000001,37.605,30.618000000000002 +2020-04-10 21:45:00,68.77,120.009,37.605,30.618000000000002 +2020-04-10 22:00:00,65.32,115.573,36.472,30.618000000000002 +2020-04-10 22:15:00,64.47,113.001,36.472,30.618000000000002 +2020-04-10 22:30:00,62.29,108.45200000000001,36.472,30.618000000000002 +2020-04-10 22:45:00,61.86,104.22399999999999,36.472,30.618000000000002 +2020-04-10 23:00:00,78.85,95.059,31.816,30.618000000000002 +2020-04-10 23:15:00,77.86,93.334,31.816,30.618000000000002 +2020-04-10 23:30:00,74.26,90.906,31.816,30.618000000000002 +2020-04-10 23:45:00,72.92,90.618,31.816,30.618000000000002 +2020-04-11 00:00:00,73.14,72.59,39.184,30.618000000000002 +2020-04-11 00:15:00,74.22,70.405,39.184,30.618000000000002 +2020-04-11 00:30:00,72.87,69.128,39.184,30.618000000000002 +2020-04-11 00:45:00,67.49,67.756,39.184,30.618000000000002 +2020-04-11 01:00:00,70.97,68.992,34.692,30.618000000000002 +2020-04-11 01:15:00,73.16,68.01899999999999,34.692,30.618000000000002 +2020-04-11 01:30:00,71.68,66.232,34.692,30.618000000000002 +2020-04-11 01:45:00,67.54,66.294,34.692,30.618000000000002 +2020-04-11 02:00:00,71.64,68.439,32.919000000000004,30.618000000000002 +2020-04-11 02:15:00,73.62,67.054,32.919000000000004,30.618000000000002 +2020-04-11 02:30:00,69.77,69.232,32.919000000000004,30.618000000000002 +2020-04-11 02:45:00,69.74,70.032,32.919000000000004,30.618000000000002 +2020-04-11 03:00:00,65.86,73.10600000000001,32.024,30.618000000000002 +2020-04-11 03:15:00,64.59,73.584,32.024,30.618000000000002 +2020-04-11 03:30:00,65.11,72.45,32.024,30.618000000000002 +2020-04-11 03:45:00,64.5,74.812,32.024,30.618000000000002 +2020-04-11 04:00:00,65.68,83.98200000000001,31.958000000000002,30.618000000000002 +2020-04-11 04:15:00,66.71,93.564,31.958000000000002,30.618000000000002 +2020-04-11 04:30:00,65.87,92.339,31.958000000000002,30.618000000000002 +2020-04-11 04:45:00,66.99,93.068,31.958000000000002,30.618000000000002 +2020-04-11 05:00:00,67.85,112.939,32.75,30.618000000000002 +2020-04-11 05:15:00,67.86,129.761,32.75,30.618000000000002 +2020-04-11 05:30:00,69.08,121.459,32.75,30.618000000000002 +2020-04-11 05:45:00,71.14,116.765,32.75,30.618000000000002 +2020-04-11 06:00:00,72.48,135.846,34.461999999999996,30.618000000000002 +2020-04-11 06:15:00,75.1,155.151,34.461999999999996,30.618000000000002 +2020-04-11 06:30:00,77.55,147.668,34.461999999999996,30.618000000000002 +2020-04-11 06:45:00,80.71,141.945,34.461999999999996,30.618000000000002 +2020-04-11 07:00:00,82.56,141.024,37.736,30.618000000000002 +2020-04-11 07:15:00,83.76,141.615,37.736,30.618000000000002 +2020-04-11 07:30:00,85.57,141.409,37.736,30.618000000000002 +2020-04-11 07:45:00,88.05,140.57399999999998,37.736,30.618000000000002 +2020-04-11 08:00:00,89.53,141.81,42.34,30.618000000000002 +2020-04-11 08:15:00,90.05,142.239,42.34,30.618000000000002 +2020-04-11 08:30:00,88.35,138.835,42.34,30.618000000000002 +2020-04-11 08:45:00,88.99,137.342,42.34,30.618000000000002 +2020-04-11 09:00:00,80.42,133.192,43.571999999999996,30.618000000000002 +2020-04-11 09:15:00,83.26,132.951,43.571999999999996,30.618000000000002 +2020-04-11 09:30:00,81.39,134.967,43.571999999999996,30.618000000000002 +2020-04-11 09:45:00,76.24,134.215,43.571999999999996,30.618000000000002 +2020-04-11 10:00:00,74.6,129.458,40.514,30.618000000000002 +2020-04-11 10:15:00,75.54,129.858,40.514,30.618000000000002 +2020-04-11 10:30:00,76.68,127.932,40.514,30.618000000000002 +2020-04-11 10:45:00,76.58,128.249,40.514,30.618000000000002 +2020-04-11 11:00:00,73.64,122.635,36.388000000000005,30.618000000000002 +2020-04-11 11:15:00,73.67,122.054,36.388000000000005,30.618000000000002 +2020-04-11 11:30:00,76.9,123.58200000000001,36.388000000000005,30.618000000000002 +2020-04-11 11:45:00,74.29,124.258,36.388000000000005,30.618000000000002 +2020-04-11 12:00:00,69.92,120.24700000000001,35.217,30.618000000000002 +2020-04-11 12:15:00,66.27,119.885,35.217,30.618000000000002 +2020-04-11 12:30:00,67.34,119.337,35.217,30.618000000000002 +2020-04-11 12:45:00,67.73,119.915,35.217,30.618000000000002 +2020-04-11 13:00:00,63.46,121.039,32.001999999999995,30.618000000000002 +2020-04-11 13:15:00,65.05,118.553,32.001999999999995,30.618000000000002 +2020-04-11 13:30:00,61.84,116.615,32.001999999999995,30.618000000000002 +2020-04-11 13:45:00,62.81,115.204,32.001999999999995,30.618000000000002 +2020-04-11 14:00:00,62.8,117.021,31.304000000000002,30.618000000000002 +2020-04-11 14:15:00,63.27,114.906,31.304000000000002,30.618000000000002 +2020-04-11 14:30:00,63.28,114.103,31.304000000000002,30.618000000000002 +2020-04-11 14:45:00,63.54,115.226,31.304000000000002,30.618000000000002 +2020-04-11 15:00:00,63.73,116.178,34.731,30.618000000000002 +2020-04-11 15:15:00,64.31,114.98899999999999,34.731,30.618000000000002 +2020-04-11 15:30:00,66.0,113.639,34.731,30.618000000000002 +2020-04-11 15:45:00,68.73,112.928,34.731,30.618000000000002 +2020-04-11 16:00:00,71.32,113.571,38.769,30.618000000000002 +2020-04-11 16:15:00,71.76,115.17,38.769,30.618000000000002 +2020-04-11 16:30:00,74.69,115.245,38.769,30.618000000000002 +2020-04-11 16:45:00,79.72,113.42200000000001,38.769,30.618000000000002 +2020-04-11 17:00:00,82.56,113.86,44.928000000000004,30.618000000000002 +2020-04-11 17:15:00,80.55,116.00200000000001,44.928000000000004,30.618000000000002 +2020-04-11 17:30:00,82.25,117.81700000000001,44.928000000000004,30.618000000000002 +2020-04-11 17:45:00,84.04,118.53399999999999,44.928000000000004,30.618000000000002 +2020-04-11 18:00:00,86.25,122.461,47.786,30.618000000000002 +2020-04-11 18:15:00,84.53,125.369,47.786,30.618000000000002 +2020-04-11 18:30:00,84.88,125.551,47.786,30.618000000000002 +2020-04-11 18:45:00,85.38,127.315,47.786,30.618000000000002 +2020-04-11 19:00:00,86.2,126.56,47.463,30.618000000000002 +2020-04-11 19:15:00,85.71,125.825,47.463,30.618000000000002 +2020-04-11 19:30:00,86.11,126.334,47.463,30.618000000000002 +2020-04-11 19:45:00,84.4,126.412,47.463,30.618000000000002 +2020-04-11 20:00:00,81.75,123.16,43.735,30.618000000000002 +2020-04-11 20:15:00,80.33,121.42200000000001,43.735,30.618000000000002 +2020-04-11 20:30:00,77.95,120.17399999999999,43.735,30.618000000000002 +2020-04-11 20:45:00,76.55,120.03200000000001,43.735,30.618000000000002 +2020-04-11 21:00:00,71.3,115.48700000000001,40.346,30.618000000000002 +2020-04-11 21:15:00,70.85,115.375,40.346,30.618000000000002 +2020-04-11 21:30:00,68.16,116.42200000000001,40.346,30.618000000000002 +2020-04-11 21:45:00,67.66,115.43,40.346,30.618000000000002 +2020-04-11 22:00:00,63.94,110.7,39.323,30.618000000000002 +2020-04-11 22:15:00,64.14,109.53200000000001,39.323,30.618000000000002 +2020-04-11 22:30:00,61.85,107.27600000000001,39.323,30.618000000000002 +2020-04-11 22:45:00,61.25,104.26299999999999,39.323,30.618000000000002 +2020-04-11 23:00:00,60.08,97.06,33.716,30.618000000000002 +2020-04-11 23:15:00,58.06,93.493,33.716,30.618000000000002 +2020-04-11 23:30:00,55.51,90.814,33.716,30.618000000000002 +2020-04-11 23:45:00,56.45,89.876,33.716,30.618000000000002 +2020-04-12 00:00:00,54.53,73.203,30.72,30.618000000000002 +2020-04-12 00:15:00,52.88,70.192,30.72,30.618000000000002 +2020-04-12 00:30:00,52.07,68.59,30.72,30.618000000000002 +2020-04-12 00:45:00,53.98,67.596,30.72,30.618000000000002 +2020-04-12 01:00:00,48.89,68.872,26.553,30.618000000000002 +2020-04-12 01:15:00,53.69,68.45100000000001,26.553,30.618000000000002 +2020-04-12 01:30:00,51.28,66.889,26.553,30.618000000000002 +2020-04-12 01:45:00,53.95,66.54899999999999,26.553,30.618000000000002 +2020-04-12 02:00:00,50.72,68.258,22.712,30.618000000000002 +2020-04-12 02:15:00,54.24,66.73,22.712,30.618000000000002 +2020-04-12 02:30:00,51.64,69.561,22.712,30.618000000000002 +2020-04-12 02:45:00,51.01,70.486,22.712,30.618000000000002 +2020-04-12 03:00:00,50.48,74.13600000000001,20.511999999999997,30.618000000000002 +2020-04-12 03:15:00,51.91,74.418,20.511999999999997,30.618000000000002 +2020-04-12 03:30:00,51.98,73.71600000000001,20.511999999999997,30.618000000000002 +2020-04-12 03:45:00,52.83,75.598,20.511999999999997,30.618000000000002 +2020-04-12 04:00:00,51.89,84.565,19.98,30.618000000000002 +2020-04-12 04:15:00,52.74,93.25200000000001,19.98,30.618000000000002 +2020-04-12 04:30:00,52.54,92.84100000000001,19.98,30.618000000000002 +2020-04-12 04:45:00,54.38,93.456,19.98,30.618000000000002 +2020-04-12 05:00:00,55.46,111.241,22.715,30.618000000000002 +2020-04-12 05:15:00,53.48,126.101,22.715,30.618000000000002 +2020-04-12 05:30:00,55.9,117.47200000000001,22.715,30.618000000000002 +2020-04-12 05:45:00,53.71,112.805,22.715,30.618000000000002 +2020-04-12 06:00:00,55.53,130.452,22.576999999999998,30.618000000000002 +2020-04-12 06:15:00,59.67,149.158,22.576999999999998,30.618000000000002 +2020-04-12 06:30:00,62.15,140.576,22.576999999999998,30.618000000000002 +2020-04-12 06:45:00,61.32,133.628,22.576999999999998,30.618000000000002 +2020-04-12 07:00:00,67.05,134.34799999999998,23.541999999999998,30.618000000000002 +2020-04-12 07:15:00,67.97,133.483,23.541999999999998,30.618000000000002 +2020-04-12 07:30:00,69.68,133.157,23.541999999999998,30.618000000000002 +2020-04-12 07:45:00,69.61,131.813,23.541999999999998,30.618000000000002 +2020-04-12 08:00:00,74.12,134.54,27.568,30.618000000000002 +2020-04-12 08:15:00,75.03,135.55200000000002,27.568,30.618000000000002 +2020-04-12 08:30:00,74.98,133.65,27.568,30.618000000000002 +2020-04-12 08:45:00,73.91,133.46200000000002,27.568,30.618000000000002 +2020-04-12 09:00:00,76.48,128.969,27.965,30.618000000000002 +2020-04-12 09:15:00,73.74,128.851,27.965,30.618000000000002 +2020-04-12 09:30:00,75.72,130.999,27.965,30.618000000000002 +2020-04-12 09:45:00,74.12,130.707,27.965,30.618000000000002 +2020-04-12 10:00:00,72.15,127.902,25.365,30.618000000000002 +2020-04-12 10:15:00,77.67,128.786,25.365,30.618000000000002 +2020-04-12 10:30:00,77.66,127.40899999999999,25.365,30.618000000000002 +2020-04-12 10:45:00,82.07,126.928,25.365,30.618000000000002 +2020-04-12 11:00:00,72.99,121.75399999999999,25.489,30.618000000000002 +2020-04-12 11:15:00,75.01,121.08,25.489,30.618000000000002 +2020-04-12 11:30:00,71.52,122.244,25.489,30.618000000000002 +2020-04-12 11:45:00,69.58,123.48700000000001,25.489,30.618000000000002 +2020-04-12 12:00:00,68.21,119.55,21.968000000000004,30.618000000000002 +2020-04-12 12:15:00,67.52,120.275,21.968000000000004,30.618000000000002 +2020-04-12 12:30:00,66.81,118.738,21.968000000000004,30.618000000000002 +2020-04-12 12:45:00,67.38,118.333,21.968000000000004,30.618000000000002 +2020-04-12 13:00:00,60.59,118.82600000000001,14.62,30.618000000000002 +2020-04-12 13:15:00,59.39,118.251,14.62,30.618000000000002 +2020-04-12 13:30:00,58.18,115.65799999999999,14.62,30.618000000000002 +2020-04-12 13:45:00,60.55,114.27600000000001,14.62,30.618000000000002 +2020-04-12 14:00:00,59.16,116.87700000000001,11.908,30.618000000000002 +2020-04-12 14:15:00,60.01,115.804,11.908,30.618000000000002 +2020-04-12 14:30:00,56.92,115.295,11.908,30.618000000000002 +2020-04-12 14:45:00,58.07,115.64200000000001,11.908,30.618000000000002 +2020-04-12 15:00:00,61.44,115.57700000000001,15.55,30.618000000000002 +2020-04-12 15:15:00,62.16,114.54899999999999,15.55,30.618000000000002 +2020-04-12 15:30:00,62.09,113.494,15.55,30.618000000000002 +2020-04-12 15:45:00,63.69,113.395,15.55,30.618000000000002 +2020-04-12 16:00:00,63.44,114.516,20.332,30.618000000000002 +2020-04-12 16:15:00,65.92,115.56,20.332,30.618000000000002 +2020-04-12 16:30:00,69.07,116.295,20.332,30.618000000000002 +2020-04-12 16:45:00,69.42,114.53200000000001,20.332,30.618000000000002 +2020-04-12 17:00:00,77.2,115.094,26.121,30.618000000000002 +2020-04-12 17:15:00,75.08,117.742,26.121,30.618000000000002 +2020-04-12 17:30:00,76.8,120.152,26.121,30.618000000000002 +2020-04-12 17:45:00,76.23,122.604,26.121,30.618000000000002 +2020-04-12 18:00:00,79.58,126.429,33.626999999999995,30.618000000000002 +2020-04-12 18:15:00,77.87,130.05700000000002,33.626999999999995,30.618000000000002 +2020-04-12 18:30:00,78.53,128.704,33.626999999999995,30.618000000000002 +2020-04-12 18:45:00,80.41,131.775,33.626999999999995,30.618000000000002 +2020-04-12 19:00:00,79.37,131.862,39.793,30.618000000000002 +2020-04-12 19:15:00,79.52,130.96200000000002,39.793,30.618000000000002 +2020-04-12 19:30:00,78.47,131.251,39.793,30.618000000000002 +2020-04-12 19:45:00,77.25,132.084,39.793,30.618000000000002 +2020-04-12 20:00:00,74.47,128.839,41.368,30.618000000000002 +2020-04-12 20:15:00,73.54,127.68799999999999,41.368,30.618000000000002 +2020-04-12 20:30:00,73.03,127.709,41.368,30.618000000000002 +2020-04-12 20:45:00,72.54,125.928,41.368,30.618000000000002 +2020-04-12 21:00:00,69.45,119.583,37.605,30.618000000000002 +2020-04-12 21:15:00,69.2,118.919,37.605,30.618000000000002 +2020-04-12 21:30:00,64.59,119.805,37.605,30.618000000000002 +2020-04-12 21:45:00,67.2,119.119,37.605,30.618000000000002 +2020-04-12 22:00:00,62.87,114.694,36.472,30.618000000000002 +2020-04-12 22:15:00,62.97,112.175,36.472,30.618000000000002 +2020-04-12 22:30:00,58.12,107.554,36.472,30.618000000000002 +2020-04-12 22:45:00,60.08,103.31299999999999,36.472,30.618000000000002 +2020-04-12 23:00:00,57.22,94.10700000000001,31.816,30.618000000000002 +2020-04-12 23:15:00,57.26,92.449,31.816,30.618000000000002 +2020-04-12 23:30:00,53.07,90.01700000000001,31.816,30.618000000000002 +2020-04-12 23:45:00,55.28,89.759,31.816,30.618000000000002 +2020-04-13 00:00:00,49.89,72.78699999999999,30.72,30.618000000000002 +2020-04-13 00:15:00,53.6,69.791,30.72,30.618000000000002 +2020-04-13 00:30:00,50.52,68.178,30.72,30.618000000000002 +2020-04-13 00:45:00,53.11,67.191,30.72,30.618000000000002 +2020-04-13 01:00:00,47.65,68.449,26.553,30.618000000000002 +2020-04-13 01:15:00,51.91,68.006,26.553,30.618000000000002 +2020-04-13 01:30:00,48.7,66.422,26.553,30.618000000000002 +2020-04-13 01:45:00,51.4,66.087,26.553,30.618000000000002 +2020-04-13 02:00:00,49.72,67.783,22.712,30.618000000000002 +2020-04-13 02:15:00,48.31,66.24,22.712,30.618000000000002 +2020-04-13 02:30:00,50.79,69.09100000000001,22.712,30.618000000000002 +2020-04-13 02:45:00,48.57,70.021,22.712,30.618000000000002 +2020-04-13 03:00:00,51.31,73.689,20.511999999999997,30.618000000000002 +2020-04-13 03:15:00,52.15,73.943,20.511999999999997,30.618000000000002 +2020-04-13 03:30:00,51.38,73.236,20.511999999999997,30.618000000000002 +2020-04-13 03:45:00,54.02,75.139,20.511999999999997,30.618000000000002 +2020-04-13 04:00:00,54.39,84.085,19.98,30.618000000000002 +2020-04-13 04:15:00,55.93,92.73899999999999,19.98,30.618000000000002 +2020-04-13 04:30:00,56.7,92.33200000000001,19.98,30.618000000000002 +2020-04-13 04:45:00,57.44,92.93700000000001,19.98,30.618000000000002 +2020-04-13 05:00:00,58.82,110.641,22.715,30.618000000000002 +2020-04-13 05:15:00,59.57,125.43,22.715,30.618000000000002 +2020-04-13 05:30:00,57.7,116.80799999999999,22.715,30.618000000000002 +2020-04-13 05:45:00,55.37,112.177,22.715,30.618000000000002 +2020-04-13 06:00:00,58.84,129.845,22.576999999999998,30.618000000000002 +2020-04-13 06:15:00,57.13,148.534,22.576999999999998,30.618000000000002 +2020-04-13 06:30:00,60.7,139.924,22.576999999999998,30.618000000000002 +2020-04-13 06:45:00,62.85,132.963,22.576999999999998,30.618000000000002 +2020-04-13 07:00:00,68.7,133.687,23.541999999999998,30.618000000000002 +2020-04-13 07:15:00,68.91,132.80200000000002,23.541999999999998,30.618000000000002 +2020-04-13 07:30:00,66.28,132.436,23.541999999999998,30.618000000000002 +2020-04-13 07:45:00,71.72,131.08,23.541999999999998,30.618000000000002 +2020-04-13 08:00:00,70.13,133.79,23.895,30.618000000000002 +2020-04-13 08:15:00,72.83,134.825,23.895,30.618000000000002 +2020-04-13 08:30:00,69.75,132.886,23.895,30.618000000000002 +2020-04-13 08:45:00,71.31,132.72899999999998,23.895,30.618000000000002 +2020-04-13 09:00:00,67.16,128.24200000000002,24.239,30.618000000000002 +2020-04-13 09:15:00,66.12,128.127,24.239,30.618000000000002 +2020-04-13 09:30:00,64.1,130.295,24.239,30.618000000000002 +2020-04-13 09:45:00,66.42,130.032,24.239,30.618000000000002 +2020-04-13 10:00:00,67.4,127.23700000000001,21.985,30.618000000000002 +2020-04-13 10:15:00,66.6,128.17,21.985,30.618000000000002 +2020-04-13 10:30:00,70.58,126.81700000000001,21.985,30.618000000000002 +2020-04-13 10:45:00,69.07,126.359,21.985,30.618000000000002 +2020-04-13 11:00:00,63.2,121.177,22.093000000000004,30.618000000000002 +2020-04-13 11:15:00,62.5,120.52799999999999,22.093000000000004,30.618000000000002 +2020-04-13 11:30:00,63.4,121.693,22.093000000000004,30.618000000000002 +2020-04-13 11:45:00,71.72,122.95700000000001,22.093000000000004,30.618000000000002 +2020-04-13 12:00:00,63.81,119.045,19.041,30.618000000000002 +2020-04-13 12:15:00,54.06,119.77799999999999,19.041,30.618000000000002 +2020-04-13 12:30:00,54.23,118.197,19.041,30.618000000000002 +2020-04-13 12:45:00,56.47,117.792,19.041,30.618000000000002 +2020-04-13 13:00:00,56.38,118.329,12.672,30.618000000000002 +2020-04-13 13:15:00,51.32,117.744,12.672,30.618000000000002 +2020-04-13 13:30:00,50.09,115.15,12.672,30.618000000000002 +2020-04-13 13:45:00,52.76,113.772,12.672,30.618000000000002 +2020-04-13 14:00:00,50.0,116.441,10.321,30.618000000000002 +2020-04-13 14:15:00,47.98,115.345,10.321,30.618000000000002 +2020-04-13 14:30:00,46.88,114.791,10.321,30.618000000000002 +2020-04-13 14:45:00,51.58,115.14200000000001,10.321,30.618000000000002 +2020-04-13 15:00:00,52.85,115.103,13.478,30.618000000000002 +2020-04-13 15:15:00,53.15,114.051,13.478,30.618000000000002 +2020-04-13 15:30:00,51.27,112.945,13.478,30.618000000000002 +2020-04-13 15:45:00,52.98,112.829,13.478,30.618000000000002 +2020-04-13 16:00:00,57.21,113.985,17.623,30.618000000000002 +2020-04-13 16:15:00,61.89,115.00399999999999,17.623,30.618000000000002 +2020-04-13 16:30:00,63.48,115.741,17.623,30.618000000000002 +2020-04-13 16:45:00,65.1,113.913,17.623,30.618000000000002 +2020-04-13 17:00:00,72.1,114.525,22.64,30.618000000000002 +2020-04-13 17:15:00,73.56,117.152,22.64,30.618000000000002 +2020-04-13 17:30:00,76.1,119.56299999999999,22.64,30.618000000000002 +2020-04-13 17:45:00,77.85,121.99799999999999,22.64,30.618000000000002 +2020-04-13 18:00:00,78.34,125.833,29.147,30.618000000000002 +2020-04-13 18:15:00,78.86,129.499,29.147,30.618000000000002 +2020-04-13 18:30:00,81.38,128.134,29.147,30.618000000000002 +2020-04-13 18:45:00,82.16,131.215,29.147,30.618000000000002 +2020-04-13 19:00:00,86.48,131.284,34.491,30.618000000000002 +2020-04-13 19:15:00,87.39,130.394,34.491,30.618000000000002 +2020-04-13 19:30:00,85.34,130.702,34.491,30.618000000000002 +2020-04-13 19:45:00,84.46,131.567,34.491,30.618000000000002 +2020-04-13 20:00:00,81.57,128.29399999999998,41.368,30.618000000000002 +2020-04-13 20:15:00,80.87,127.15299999999999,41.368,30.618000000000002 +2020-04-13 20:30:00,77.82,127.21,41.368,30.618000000000002 +2020-04-13 20:45:00,80.82,125.45200000000001,41.368,30.618000000000002 +2020-04-13 21:00:00,80.42,119.10700000000001,37.605,30.618000000000002 +2020-04-13 21:15:00,79.52,118.454,37.605,30.618000000000002 +2020-04-13 21:30:00,74.22,119.331,37.605,30.618000000000002 +2020-04-13 21:45:00,76.26,118.67399999999999,37.605,30.618000000000002 +2020-04-13 22:00:00,68.73,114.255,36.472,30.618000000000002 +2020-04-13 22:15:00,70.32,111.76100000000001,36.472,30.618000000000002 +2020-04-13 22:30:00,68.58,107.104,36.472,30.618000000000002 +2020-04-13 22:45:00,70.36,102.85700000000001,36.472,30.618000000000002 +2020-04-13 23:00:00,81.66,93.63,31.816,30.618000000000002 +2020-04-13 23:15:00,81.85,92.005,31.816,30.618000000000002 +2020-04-13 23:30:00,75.45,89.572,31.816,30.618000000000002 +2020-04-13 23:45:00,76.28,89.32799999999999,31.816,30.618000000000002 +2020-04-14 00:00:00,77.57,74.116,39.857,30.736 +2020-04-14 00:15:00,78.7,74.781,39.857,30.736 +2020-04-14 00:30:00,77.84,72.835,39.857,30.736 +2020-04-14 00:45:00,74.5,71.13600000000001,39.857,30.736 +2020-04-14 01:00:00,78.14,72.16,37.233000000000004,30.736 +2020-04-14 01:15:00,79.78,71.166,37.233000000000004,30.736 +2020-04-14 01:30:00,79.36,69.831,37.233000000000004,30.736 +2020-04-14 01:45:00,76.71,69.417,37.233000000000004,30.736 +2020-04-14 02:00:00,79.63,71.053,35.856,30.736 +2020-04-14 02:15:00,80.53,70.399,35.856,30.736 +2020-04-14 02:30:00,77.64,72.979,35.856,30.736 +2020-04-14 02:45:00,77.36,73.646,35.856,30.736 +2020-04-14 03:00:00,80.42,77.32,34.766999999999996,30.736 +2020-04-14 03:15:00,77.51,78.97,34.766999999999996,30.736 +2020-04-14 03:30:00,78.75,78.759,34.766999999999996,30.736 +2020-04-14 03:45:00,85.63,79.569,34.766999999999996,30.736 +2020-04-14 04:00:00,90.63,92.03,35.468,30.736 +2020-04-14 04:15:00,89.42,104.62,35.468,30.736 +2020-04-14 04:30:00,89.05,105.006,35.468,30.736 +2020-04-14 04:45:00,91.92,106.92,35.468,30.736 +2020-04-14 05:00:00,100.81,141.918,40.399,30.736 +2020-04-14 05:15:00,102.84,174.856,40.399,30.736 +2020-04-14 05:30:00,105.47,164.701,40.399,30.736 +2020-04-14 05:45:00,107.4,154.543,40.399,30.736 +2020-04-14 06:00:00,112.59,155.791,54.105,30.736 +2020-04-14 06:15:00,113.37,161.384,54.105,30.736 +2020-04-14 06:30:00,116.15,159.305,54.105,30.736 +2020-04-14 06:45:00,117.75,159.95,54.105,30.736 +2020-04-14 07:00:00,122.9,162.8,63.083,30.736 +2020-04-14 07:15:00,119.48,163.681,63.083,30.736 +2020-04-14 07:30:00,122.96,161.981,63.083,30.736 +2020-04-14 07:45:00,119.45,158.767,63.083,30.736 +2020-04-14 08:00:00,120.93,157.66,57.254,30.736 +2020-04-14 08:15:00,123.65,155.789,57.254,30.736 +2020-04-14 08:30:00,125.42,150.616,57.254,30.736 +2020-04-14 08:45:00,126.12,147.766,57.254,30.736 +2020-04-14 09:00:00,121.6,141.899,51.395,30.736 +2020-04-14 09:15:00,123.45,139.561,51.395,30.736 +2020-04-14 09:30:00,123.95,141.412,51.395,30.736 +2020-04-14 09:45:00,124.96,140.746,51.395,30.736 +2020-04-14 10:00:00,122.16,136.626,48.201,30.736 +2020-04-14 10:15:00,123.54,136.503,48.201,30.736 +2020-04-14 10:30:00,121.52,134.487,48.201,30.736 +2020-04-14 10:45:00,120.31,134.483,48.201,30.736 +2020-04-14 11:00:00,116.44,128.762,46.133,30.736 +2020-04-14 11:15:00,111.12,129.491,46.133,30.736 +2020-04-14 11:30:00,108.43,130.6,46.133,30.736 +2020-04-14 11:45:00,109.42,132.118,46.133,30.736 +2020-04-14 12:00:00,104.93,127.803,44.243,30.736 +2020-04-14 12:15:00,109.73,128.44299999999998,44.243,30.736 +2020-04-14 12:30:00,108.63,127.42299999999999,44.243,30.736 +2020-04-14 12:45:00,105.87,128.214,44.243,30.736 +2020-04-14 13:00:00,99.12,129.259,45.042,30.736 +2020-04-14 13:15:00,98.79,127.802,45.042,30.736 +2020-04-14 13:30:00,104.88,125.742,45.042,30.736 +2020-04-14 13:45:00,105.06,124.499,45.042,30.736 +2020-04-14 14:00:00,104.5,126.81,44.062,30.736 +2020-04-14 14:15:00,101.57,125.516,44.062,30.736 +2020-04-14 14:30:00,96.19,125.055,44.062,30.736 +2020-04-14 14:45:00,96.11,125.898,44.062,30.736 +2020-04-14 15:00:00,107.14,126.646,46.461999999999996,30.736 +2020-04-14 15:15:00,106.37,124.911,46.461999999999996,30.736 +2020-04-14 15:30:00,104.16,123.564,46.461999999999996,30.736 +2020-04-14 15:45:00,104.55,122.74700000000001,46.461999999999996,30.736 +2020-04-14 16:00:00,107.58,124.26,48.802,30.736 +2020-04-14 16:15:00,113.1,125.12299999999999,48.802,30.736 +2020-04-14 16:30:00,111.12,125.152,48.802,30.736 +2020-04-14 16:45:00,110.6,122.97399999999999,48.802,30.736 +2020-04-14 17:00:00,112.54,123.29,55.672,30.736 +2020-04-14 17:15:00,115.47,125.654,55.672,30.736 +2020-04-14 17:30:00,119.06,127.742,55.672,30.736 +2020-04-14 17:45:00,115.7,128.691,55.672,30.736 +2020-04-14 18:00:00,112.52,131.662,57.006,30.736 +2020-04-14 18:15:00,117.42,133.36700000000002,57.006,30.736 +2020-04-14 18:30:00,119.58,131.71200000000002,57.006,30.736 +2020-04-14 18:45:00,117.04,137.30700000000002,57.006,30.736 +2020-04-14 19:00:00,110.56,135.55100000000002,57.148,30.736 +2020-04-14 19:15:00,107.17,134.471,57.148,30.736 +2020-04-14 19:30:00,115.88,134.385,57.148,30.736 +2020-04-14 19:45:00,113.92,134.611,57.148,30.736 +2020-04-14 20:00:00,110.45,129.387,61.895,30.736 +2020-04-14 20:15:00,109.71,126.18299999999999,61.895,30.736 +2020-04-14 20:30:00,100.85,126.009,61.895,30.736 +2020-04-14 20:45:00,108.91,125.295,61.895,30.736 +2020-04-14 21:00:00,103.46,118.976,54.78,30.736 +2020-04-14 21:15:00,102.44,117.626,54.78,30.736 +2020-04-14 21:30:00,93.5,117.785,54.78,30.736 +2020-04-14 21:45:00,87.39,116.962,54.78,30.736 +2020-04-14 22:00:00,87.83,110.8,50.76,30.736 +2020-04-14 22:15:00,90.13,108.15799999999999,50.76,30.736 +2020-04-14 22:30:00,87.92,95.17399999999999,50.76,30.736 +2020-04-14 22:45:00,84.46,87.926,50.76,30.736 +2020-04-14 23:00:00,74.36,78.79899999999999,44.162,30.736 +2020-04-14 23:15:00,76.0,78.307,44.162,30.736 +2020-04-14 23:30:00,74.94,77.425,44.162,30.736 +2020-04-14 23:45:00,73.87,78.453,44.162,30.736 +2020-04-15 00:00:00,70.64,73.699,39.061,30.736 +2020-04-15 00:15:00,72.45,74.37899999999999,39.061,30.736 +2020-04-15 00:30:00,71.26,72.425,39.061,30.736 +2020-04-15 00:45:00,73.44,70.73100000000001,39.061,30.736 +2020-04-15 01:00:00,71.82,71.737,35.795,30.736 +2020-04-15 01:15:00,71.14,70.721,35.795,30.736 +2020-04-15 01:30:00,71.08,69.36399999999999,35.795,30.736 +2020-04-15 01:45:00,72.01,68.956,35.795,30.736 +2020-04-15 02:00:00,70.74,70.58,33.316,30.736 +2020-04-15 02:15:00,70.1,69.90899999999999,33.316,30.736 +2020-04-15 02:30:00,72.27,72.509,33.316,30.736 +2020-04-15 02:45:00,78.4,73.181,33.316,30.736 +2020-04-15 03:00:00,80.61,76.872,32.803000000000004,30.736 +2020-04-15 03:15:00,83.75,78.49600000000001,32.803000000000004,30.736 +2020-04-15 03:30:00,82.05,78.28,32.803000000000004,30.736 +2020-04-15 03:45:00,86.07,79.111,32.803000000000004,30.736 +2020-04-15 04:00:00,88.31,91.54899999999999,34.235,30.736 +2020-04-15 04:15:00,89.49,104.10700000000001,34.235,30.736 +2020-04-15 04:30:00,87.96,104.49600000000001,34.235,30.736 +2020-04-15 04:45:00,93.45,106.40100000000001,34.235,30.736 +2020-04-15 05:00:00,98.18,141.31799999999998,38.65,30.736 +2020-04-15 05:15:00,101.94,174.18400000000003,38.65,30.736 +2020-04-15 05:30:00,105.86,164.03599999999997,38.65,30.736 +2020-04-15 05:45:00,109.69,153.917,38.65,30.736 +2020-04-15 06:00:00,114.65,155.183,54.951,30.736 +2020-04-15 06:15:00,114.16,160.76,54.951,30.736 +2020-04-15 06:30:00,116.39,158.65200000000002,54.951,30.736 +2020-04-15 06:45:00,116.53,159.284,54.951,30.736 +2020-04-15 07:00:00,117.39,162.137,67.328,30.736 +2020-04-15 07:15:00,117.4,162.999,67.328,30.736 +2020-04-15 07:30:00,115.55,161.259,67.328,30.736 +2020-04-15 07:45:00,112.28,158.037,67.328,30.736 +2020-04-15 08:00:00,111.52,156.912,60.23,30.736 +2020-04-15 08:15:00,111.85,155.064,60.23,30.736 +2020-04-15 08:30:00,112.04,149.856,60.23,30.736 +2020-04-15 08:45:00,110.65,147.036,60.23,30.736 +2020-04-15 09:00:00,106.92,141.17600000000002,56.845,30.736 +2020-04-15 09:15:00,107.34,138.842,56.845,30.736 +2020-04-15 09:30:00,106.27,140.71,56.845,30.736 +2020-04-15 09:45:00,106.1,140.07299999999998,56.845,30.736 +2020-04-15 10:00:00,105.75,135.961,53.832,30.736 +2020-04-15 10:15:00,106.27,135.888,53.832,30.736 +2020-04-15 10:30:00,106.67,133.898,53.832,30.736 +2020-04-15 10:45:00,105.02,133.914,53.832,30.736 +2020-04-15 11:00:00,103.38,128.187,53.225,30.736 +2020-04-15 11:15:00,103.27,128.941,53.225,30.736 +2020-04-15 11:30:00,104.28,130.05100000000002,53.225,30.736 +2020-04-15 11:45:00,102.15,131.589,53.225,30.736 +2020-04-15 12:00:00,100.29,127.3,50.676,30.736 +2020-04-15 12:15:00,98.13,127.947,50.676,30.736 +2020-04-15 12:30:00,104.5,126.884,50.676,30.736 +2020-04-15 12:45:00,105.18,127.676,50.676,30.736 +2020-04-15 13:00:00,101.11,128.764,50.646,30.736 +2020-04-15 13:15:00,100.65,127.29700000000001,50.646,30.736 +2020-04-15 13:30:00,102.83,125.236,50.646,30.736 +2020-04-15 13:45:00,103.75,123.99700000000001,50.646,30.736 +2020-04-15 14:00:00,104.03,126.375,50.786,30.736 +2020-04-15 14:15:00,97.55,125.059,50.786,30.736 +2020-04-15 14:30:00,97.21,124.553,50.786,30.736 +2020-04-15 14:45:00,102.82,125.4,50.786,30.736 +2020-04-15 15:00:00,103.26,126.17299999999999,51.535,30.736 +2020-04-15 15:15:00,100.4,124.414,51.535,30.736 +2020-04-15 15:30:00,99.53,123.01799999999999,51.535,30.736 +2020-04-15 15:45:00,104.12,122.182,51.535,30.736 +2020-04-15 16:00:00,104.01,123.73200000000001,53.157,30.736 +2020-04-15 16:15:00,108.96,124.56700000000001,53.157,30.736 +2020-04-15 16:30:00,107.57,124.6,53.157,30.736 +2020-04-15 16:45:00,115.32,122.35799999999999,53.157,30.736 +2020-04-15 17:00:00,116.1,122.72399999999999,57.793,30.736 +2020-04-15 17:15:00,113.72,125.06700000000001,57.793,30.736 +2020-04-15 17:30:00,111.49,127.154,57.793,30.736 +2020-04-15 17:45:00,115.74,128.088,57.793,30.736 +2020-04-15 18:00:00,119.64,131.067,59.872,30.736 +2020-04-15 18:15:00,116.25,132.809,59.872,30.736 +2020-04-15 18:30:00,111.49,131.142,59.872,30.736 +2020-04-15 18:45:00,111.02,136.745,59.872,30.736 +2020-04-15 19:00:00,115.27,134.97299999999998,60.17100000000001,30.736 +2020-04-15 19:15:00,112.47,133.905,60.17100000000001,30.736 +2020-04-15 19:30:00,112.99,133.835,60.17100000000001,30.736 +2020-04-15 19:45:00,112.24,134.093,60.17100000000001,30.736 +2020-04-15 20:00:00,110.1,128.842,65.015,30.736 +2020-04-15 20:15:00,111.51,125.648,65.015,30.736 +2020-04-15 20:30:00,106.08,125.51100000000001,65.015,30.736 +2020-04-15 20:45:00,109.31,124.819,65.015,30.736 +2020-04-15 21:00:00,104.34,118.501,57.805,30.736 +2020-04-15 21:15:00,101.95,117.163,57.805,30.736 +2020-04-15 21:30:00,93.9,117.31200000000001,57.805,30.736 +2020-04-15 21:45:00,86.0,116.51700000000001,57.805,30.736 +2020-04-15 22:00:00,78.84,110.359,52.115,30.736 +2020-04-15 22:15:00,87.14,107.744,52.115,30.736 +2020-04-15 22:30:00,85.74,94.72200000000001,52.115,30.736 +2020-04-15 22:45:00,86.73,87.46799999999999,52.115,30.736 +2020-04-15 23:00:00,77.18,78.321,42.871,30.736 +2020-04-15 23:15:00,76.65,77.863,42.871,30.736 +2020-04-15 23:30:00,76.51,76.979,42.871,30.736 +2020-04-15 23:45:00,79.0,78.02199999999999,42.871,30.736 +2020-04-16 00:00:00,76.59,66.062,39.203,30.736 +2020-04-16 00:15:00,76.53,66.53699999999999,39.203,30.736 +2020-04-16 00:30:00,74.45,64.943,39.203,30.736 +2020-04-16 00:45:00,72.38,63.372,39.203,30.736 +2020-04-16 01:00:00,73.63,63.707,37.118,30.736 +2020-04-16 01:15:00,77.98,63.019,37.118,30.736 +2020-04-16 01:30:00,75.57,61.729,37.118,30.736 +2020-04-16 01:45:00,78.14,61.175,37.118,30.736 +2020-04-16 02:00:00,69.37,62.033,35.647,30.736 +2020-04-16 02:15:00,73.86,61.263000000000005,35.647,30.736 +2020-04-16 02:30:00,69.08,63.718999999999994,35.647,30.736 +2020-04-16 02:45:00,73.63,64.268,35.647,30.736 +2020-04-16 03:00:00,78.41,67.297,34.585,30.736 +2020-04-16 03:15:00,81.88,68.52,34.585,30.736 +2020-04-16 03:30:00,81.3,67.967,34.585,30.736 +2020-04-16 03:45:00,77.39,68.23100000000001,34.585,30.736 +2020-04-16 04:00:00,81.22,80.163,36.184,30.736 +2020-04-16 04:15:00,82.62,92.54,36.184,30.736 +2020-04-16 04:30:00,86.64,92.275,36.184,30.736 +2020-04-16 04:45:00,90.81,94.12799999999999,36.184,30.736 +2020-04-16 05:00:00,97.5,127.575,41.019,30.736 +2020-04-16 05:15:00,101.04,159.359,41.019,30.736 +2020-04-16 05:30:00,104.32,148.222,41.019,30.736 +2020-04-16 05:45:00,104.7,137.95,41.019,30.736 +2020-04-16 06:00:00,111.42,139.596,53.963,30.736 +2020-04-16 06:15:00,111.14,144.635,53.963,30.736 +2020-04-16 06:30:00,112.46,141.951,53.963,30.736 +2020-04-16 06:45:00,111.75,142.252,53.963,30.736 +2020-04-16 07:00:00,113.92,144.352,66.512,30.736 +2020-04-16 07:15:00,113.61,144.842,66.512,30.736 +2020-04-16 07:30:00,113.32,143.05100000000002,66.512,30.736 +2020-04-16 07:45:00,111.01,139.931,66.512,30.736 +2020-04-16 08:00:00,109.42,137.489,58.86,30.736 +2020-04-16 08:15:00,108.68,135.996,58.86,30.736 +2020-04-16 08:30:00,109.43,131.921,58.86,30.736 +2020-04-16 08:45:00,108.55,130.05200000000002,58.86,30.736 +2020-04-16 09:00:00,107.62,123.76799999999999,52.156000000000006,30.736 +2020-04-16 09:15:00,105.64,121.553,52.156000000000006,30.736 +2020-04-16 09:30:00,105.44,123.573,52.156000000000006,30.736 +2020-04-16 09:45:00,105.36,123.007,52.156000000000006,30.736 +2020-04-16 10:00:00,104.88,118.589,49.034,30.736 +2020-04-16 10:15:00,105.52,118.499,49.034,30.736 +2020-04-16 10:30:00,104.66,116.969,49.034,30.736 +2020-04-16 10:45:00,103.7,117.022,49.034,30.736 +2020-04-16 11:00:00,101.79,111.735,46.53,30.736 +2020-04-16 11:15:00,100.62,112.494,46.53,30.736 +2020-04-16 11:30:00,102.26,113.68,46.53,30.736 +2020-04-16 11:45:00,100.98,114.271,46.53,30.736 +2020-04-16 12:00:00,101.74,109.26899999999999,43.318000000000005,30.736 +2020-04-16 12:15:00,100.04,110.089,43.318000000000005,30.736 +2020-04-16 12:30:00,100.71,109.241,43.318000000000005,30.736 +2020-04-16 12:45:00,98.75,109.965,43.318000000000005,30.736 +2020-04-16 13:00:00,96.55,110.53399999999999,41.608000000000004,30.736 +2020-04-16 13:15:00,101.33,109.822,41.608000000000004,30.736 +2020-04-16 13:30:00,105.43,107.68799999999999,41.608000000000004,30.736 +2020-04-16 13:45:00,99.87,106.266,41.608000000000004,30.736 +2020-04-16 14:00:00,104.65,107.289,41.786,30.736 +2020-04-16 14:15:00,103.74,106.805,41.786,30.736 +2020-04-16 14:30:00,99.2,106.686,41.786,30.736 +2020-04-16 14:45:00,96.98,107.146,41.786,30.736 +2020-04-16 15:00:00,97.32,108.044,44.181999999999995,30.736 +2020-04-16 15:15:00,97.34,106.54299999999999,44.181999999999995,30.736 +2020-04-16 15:30:00,96.99,106.125,44.181999999999995,30.736 +2020-04-16 15:45:00,105.87,105.76,44.181999999999995,30.736 +2020-04-16 16:00:00,108.15,105.584,45.956,30.736 +2020-04-16 16:15:00,109.03,105.436,45.956,30.736 +2020-04-16 16:30:00,102.46,105.414,45.956,30.736 +2020-04-16 16:45:00,107.51,103.3,45.956,30.736 +2020-04-16 17:00:00,105.77,102.85,50.702,30.736 +2020-04-16 17:15:00,109.81,105.25399999999999,50.702,30.736 +2020-04-16 17:30:00,116.22,106.64299999999999,50.702,30.736 +2020-04-16 17:45:00,115.39,108.116,50.702,30.736 +2020-04-16 18:00:00,117.78,108.929,53.595,30.736 +2020-04-16 18:15:00,112.22,110.46799999999999,53.595,30.736 +2020-04-16 18:30:00,111.55,109.307,53.595,30.736 +2020-04-16 18:45:00,116.31,114.927,53.595,30.736 +2020-04-16 19:00:00,115.59,113.14,54.207,30.736 +2020-04-16 19:15:00,112.76,112.333,54.207,30.736 +2020-04-16 19:30:00,111.41,112.33,54.207,30.736 +2020-04-16 19:45:00,109.87,112.74,54.207,30.736 +2020-04-16 20:00:00,110.54,110.89399999999999,56.948,30.736 +2020-04-16 20:15:00,108.79,108.249,56.948,30.736 +2020-04-16 20:30:00,106.12,107.178,56.948,30.736 +2020-04-16 20:45:00,100.7,106.319,56.948,30.736 +2020-04-16 21:00:00,100.63,102.01,52.157,30.736 +2020-04-16 21:15:00,99.93,101.508,52.157,30.736 +2020-04-16 21:30:00,96.78,101.87899999999999,52.157,30.736 +2020-04-16 21:45:00,91.01,101.338,52.157,30.736 +2020-04-16 22:00:00,88.24,96.85600000000001,47.483000000000004,30.736 +2020-04-16 22:15:00,90.64,94.991,47.483000000000004,30.736 +2020-04-16 22:30:00,87.26,83.77600000000001,47.483000000000004,30.736 +2020-04-16 22:45:00,83.96,78.098,47.483000000000004,30.736 +2020-04-16 23:00:00,79.47,70.275,41.978,30.736 +2020-04-16 23:15:00,82.32,68.947,41.978,30.736 +2020-04-16 23:30:00,82.51,68.09100000000001,41.978,30.736 +2020-04-16 23:45:00,79.47,68.702,41.978,30.736 +2020-04-17 00:00:00,75.69,63.902,39.301,30.736 +2020-04-17 00:15:00,80.52,64.638,39.301,30.736 +2020-04-17 00:30:00,79.11,63.152,39.301,30.736 +2020-04-17 00:45:00,74.97,61.931000000000004,39.301,30.736 +2020-04-17 01:00:00,76.44,61.839,37.976,30.736 +2020-04-17 01:15:00,78.63,61.181999999999995,37.976,30.736 +2020-04-17 01:30:00,78.54,60.246,37.976,30.736 +2020-04-17 01:45:00,75.92,59.578,37.976,30.736 +2020-04-17 02:00:00,76.67,61.106,37.041,30.736 +2020-04-17 02:15:00,78.96,60.225,37.041,30.736 +2020-04-17 02:30:00,73.71,63.532,37.041,30.736 +2020-04-17 02:45:00,72.47,63.641000000000005,37.041,30.736 +2020-04-17 03:00:00,72.74,66.71300000000001,37.575,30.736 +2020-04-17 03:15:00,77.67,67.558,37.575,30.736 +2020-04-17 03:30:00,81.93,66.829,37.575,30.736 +2020-04-17 03:45:00,82.98,67.883,37.575,30.736 +2020-04-17 04:00:00,85.63,79.98899999999999,39.058,30.736 +2020-04-17 04:15:00,81.63,91.12700000000001,39.058,30.736 +2020-04-17 04:30:00,87.46,91.634,39.058,30.736 +2020-04-17 04:45:00,88.26,92.454,39.058,30.736 +2020-04-17 05:00:00,94.18,124.83,43.256,30.736 +2020-04-17 05:15:00,97.98,157.922,43.256,30.736 +2020-04-17 05:30:00,101.19,147.47299999999998,43.256,30.736 +2020-04-17 05:45:00,104.3,136.907,43.256,30.736 +2020-04-17 06:00:00,109.57,138.972,56.093999999999994,30.736 +2020-04-17 06:15:00,110.1,143.366,56.093999999999994,30.736 +2020-04-17 06:30:00,111.6,140.194,56.093999999999994,30.736 +2020-04-17 06:45:00,112.04,141.218,56.093999999999994,30.736 +2020-04-17 07:00:00,113.63,143.342,66.92699999999999,30.736 +2020-04-17 07:15:00,113.48,144.96,66.92699999999999,30.736 +2020-04-17 07:30:00,114.3,141.72799999999998,66.92699999999999,30.736 +2020-04-17 07:45:00,111.17,138.004,66.92699999999999,30.736 +2020-04-17 08:00:00,109.06,135.482,60.332,30.736 +2020-04-17 08:15:00,108.75,134.251,60.332,30.736 +2020-04-17 08:30:00,108.96,130.61,60.332,30.736 +2020-04-17 08:45:00,111.11,127.825,60.332,30.736 +2020-04-17 09:00:00,107.04,120.291,56.085,30.736 +2020-04-17 09:15:00,107.43,119.624,56.085,30.736 +2020-04-17 09:30:00,106.4,120.985,56.085,30.736 +2020-04-17 09:45:00,106.21,120.639,56.085,30.736 +2020-04-17 10:00:00,104.57,115.45100000000001,52.91,30.736 +2020-04-17 10:15:00,105.96,115.67200000000001,52.91,30.736 +2020-04-17 10:30:00,107.27,114.46600000000001,52.91,30.736 +2020-04-17 10:45:00,103.6,114.225,52.91,30.736 +2020-04-17 11:00:00,104.04,109.054,52.278999999999996,30.736 +2020-04-17 11:15:00,101.25,108.65100000000001,52.278999999999996,30.736 +2020-04-17 11:30:00,100.24,110.637,52.278999999999996,30.736 +2020-04-17 11:45:00,100.36,110.69200000000001,52.278999999999996,30.736 +2020-04-17 12:00:00,98.31,106.641,49.023999999999994,30.736 +2020-04-17 12:15:00,98.3,105.836,49.023999999999994,30.736 +2020-04-17 12:30:00,98.9,105.109,49.023999999999994,30.736 +2020-04-17 12:45:00,96.92,105.68,49.023999999999994,30.736 +2020-04-17 13:00:00,95.35,107.199,46.82,30.736 +2020-04-17 13:15:00,94.15,107.081,46.82,30.736 +2020-04-17 13:30:00,95.45,105.429,46.82,30.736 +2020-04-17 13:45:00,95.7,104.15100000000001,46.82,30.736 +2020-04-17 14:00:00,96.68,104.079,45.756,30.736 +2020-04-17 14:15:00,94.93,103.727,45.756,30.736 +2020-04-17 14:30:00,95.22,104.76,45.756,30.736 +2020-04-17 14:45:00,96.43,104.99799999999999,45.756,30.736 +2020-04-17 15:00:00,98.56,105.598,47.56,30.736 +2020-04-17 15:15:00,96.36,103.66799999999999,47.56,30.736 +2020-04-17 15:30:00,98.86,101.962,47.56,30.736 +2020-04-17 15:45:00,99.49,102.11399999999999,47.56,30.736 +2020-04-17 16:00:00,100.98,100.829,49.581,30.736 +2020-04-17 16:15:00,102.21,101.12700000000001,49.581,30.736 +2020-04-17 16:30:00,103.54,101.053,49.581,30.736 +2020-04-17 16:45:00,105.31,98.324,49.581,30.736 +2020-04-17 17:00:00,109.87,99.141,53.918,30.736 +2020-04-17 17:15:00,105.24,101.18,53.918,30.736 +2020-04-17 17:30:00,108.79,102.488,53.918,30.736 +2020-04-17 17:45:00,108.09,103.699,53.918,30.736 +2020-04-17 18:00:00,109.81,104.992,54.266000000000005,30.736 +2020-04-17 18:15:00,106.31,105.728,54.266000000000005,30.736 +2020-04-17 18:30:00,105.75,104.70200000000001,54.266000000000005,30.736 +2020-04-17 18:45:00,105.56,110.596,54.266000000000005,30.736 +2020-04-17 19:00:00,104.01,109.889,54.092,30.736 +2020-04-17 19:15:00,101.85,110.20700000000001,54.092,30.736 +2020-04-17 19:30:00,103.45,110.035,54.092,30.736 +2020-04-17 19:45:00,104.61,109.553,54.092,30.736 +2020-04-17 20:00:00,101.81,107.604,59.038999999999994,30.736 +2020-04-17 20:15:00,104.72,105.49,59.038999999999994,30.736 +2020-04-17 20:30:00,104.95,104.11200000000001,59.038999999999994,30.736 +2020-04-17 20:45:00,104.9,103.052,59.038999999999994,30.736 +2020-04-17 21:00:00,92.54,99.882,53.346000000000004,30.736 +2020-04-17 21:15:00,89.07,100.73,53.346000000000004,30.736 +2020-04-17 21:30:00,86.36,101.012,53.346000000000004,30.736 +2020-04-17 21:45:00,91.79,100.928,53.346000000000004,30.736 +2020-04-17 22:00:00,87.88,96.88600000000001,47.938,30.736 +2020-04-17 22:15:00,87.19,94.811,47.938,30.736 +2020-04-17 22:30:00,79.25,90.098,47.938,30.736 +2020-04-17 22:45:00,78.07,86.851,47.938,30.736 +2020-04-17 23:00:00,78.74,79.878,40.266,30.736 +2020-04-17 23:15:00,79.25,76.51899999999999,40.266,30.736 +2020-04-17 23:30:00,79.44,73.683,40.266,30.736 +2020-04-17 23:45:00,72.93,73.869,40.266,30.736 +2020-04-18 00:00:00,72.24,62.902,39.184,30.618000000000002 +2020-04-18 00:15:00,74.92,61.023999999999994,39.184,30.618000000000002 +2020-04-18 00:30:00,73.65,59.887,39.184,30.618000000000002 +2020-04-18 00:45:00,71.07,58.537,39.184,30.618000000000002 +2020-04-18 01:00:00,64.33,58.955,34.692,30.618000000000002 +2020-04-18 01:15:00,65.67,58.178000000000004,34.692,30.618000000000002 +2020-04-18 01:30:00,64.17,56.406000000000006,34.692,30.618000000000002 +2020-04-18 01:45:00,68.34,56.482,34.692,30.618000000000002 +2020-04-18 02:00:00,71.5,57.685,32.919000000000004,30.618000000000002 +2020-04-18 02:15:00,72.43,56.059,32.919000000000004,30.618000000000002 +2020-04-18 02:30:00,69.43,58.281000000000006,32.919000000000004,30.618000000000002 +2020-04-18 02:45:00,69.21,58.986000000000004,32.919000000000004,30.618000000000002 +2020-04-18 03:00:00,72.51,61.458999999999996,32.024,30.618000000000002 +2020-04-18 03:15:00,68.08,61.188,32.024,30.618000000000002 +2020-04-18 03:30:00,66.16,59.88399999999999,32.024,30.618000000000002 +2020-04-18 03:45:00,64.76,62.033,32.024,30.618000000000002 +2020-04-18 04:00:00,66.57,70.758,31.958000000000002,30.618000000000002 +2020-04-18 04:15:00,67.33,79.971,31.958000000000002,30.618000000000002 +2020-04-18 04:30:00,66.23,78.243,31.958000000000002,30.618000000000002 +2020-04-18 04:45:00,64.3,78.995,31.958000000000002,30.618000000000002 +2020-04-18 05:00:00,64.93,97.959,32.75,30.618000000000002 +2020-04-18 05:15:00,66.66,114.07,32.75,30.618000000000002 +2020-04-18 05:30:00,67.03,104.89,32.75,30.618000000000002 +2020-04-18 05:45:00,70.54,100.15,32.75,30.618000000000002 +2020-04-18 06:00:00,71.71,118.912,34.461999999999996,30.618000000000002 +2020-04-18 06:15:00,73.46,136.754,34.461999999999996,30.618000000000002 +2020-04-18 06:30:00,75.72,128.946,34.461999999999996,30.618000000000002 +2020-04-18 06:45:00,76.77,123.31,34.461999999999996,30.618000000000002 +2020-04-18 07:00:00,78.94,122.14299999999999,37.736,30.618000000000002 +2020-04-18 07:15:00,78.58,122.23200000000001,37.736,30.618000000000002 +2020-04-18 07:30:00,79.45,121.365,37.736,30.618000000000002 +2020-04-18 07:45:00,80.73,120.3,37.736,30.618000000000002 +2020-04-18 08:00:00,80.41,120.022,42.34,30.618000000000002 +2020-04-18 08:15:00,80.62,120.61,42.34,30.618000000000002 +2020-04-18 08:30:00,79.58,117.786,42.34,30.618000000000002 +2020-04-18 08:45:00,79.67,117.322,42.34,30.618000000000002 +2020-04-18 09:00:00,77.81,112.633,43.571999999999996,30.618000000000002 +2020-04-18 09:15:00,76.73,112.691,43.571999999999996,30.618000000000002 +2020-04-18 09:30:00,75.68,114.87700000000001,43.571999999999996,30.618000000000002 +2020-04-18 09:45:00,75.15,114.365,43.571999999999996,30.618000000000002 +2020-04-18 10:00:00,74.84,109.54700000000001,40.514,30.618000000000002 +2020-04-18 10:15:00,76.04,110.12799999999999,40.514,30.618000000000002 +2020-04-18 10:30:00,76.37,108.82600000000001,40.514,30.618000000000002 +2020-04-18 10:45:00,75.02,109.126,40.514,30.618000000000002 +2020-04-18 11:00:00,73.78,103.92299999999999,36.388000000000005,30.618000000000002 +2020-04-18 11:15:00,72.94,103.676,36.388000000000005,30.618000000000002 +2020-04-18 11:30:00,70.92,105.191,36.388000000000005,30.618000000000002 +2020-04-18 11:45:00,69.83,105.12100000000001,36.388000000000005,30.618000000000002 +2020-04-18 12:00:00,67.19,100.64200000000001,35.217,30.618000000000002 +2020-04-18 12:15:00,67.12,100.725,35.217,30.618000000000002 +2020-04-18 12:30:00,65.58,100.066,35.217,30.618000000000002 +2020-04-18 12:45:00,65.28,100.61399999999999,35.217,30.618000000000002 +2020-04-18 13:00:00,61.25,101.42399999999999,32.001999999999995,30.618000000000002 +2020-04-18 13:15:00,62.76,99.764,32.001999999999995,30.618000000000002 +2020-04-18 13:30:00,62.74,97.959,32.001999999999995,30.618000000000002 +2020-04-18 13:45:00,62.56,96.169,32.001999999999995,30.618000000000002 +2020-04-18 14:00:00,63.31,96.9,31.304000000000002,30.618000000000002 +2020-04-18 14:15:00,63.14,95.477,31.304000000000002,30.618000000000002 +2020-04-18 14:30:00,63.14,95.135,31.304000000000002,30.618000000000002 +2020-04-18 14:45:00,64.8,95.787,31.304000000000002,30.618000000000002 +2020-04-18 15:00:00,65.13,97.071,34.731,30.618000000000002 +2020-04-18 15:15:00,65.05,96.014,34.731,30.618000000000002 +2020-04-18 15:30:00,66.87,95.29700000000001,34.731,30.618000000000002 +2020-04-18 15:45:00,69.39,94.9,34.731,30.618000000000002 +2020-04-18 16:00:00,71.14,94.525,38.769,30.618000000000002 +2020-04-18 16:15:00,72.55,94.76299999999999,38.769,30.618000000000002 +2020-04-18 16:30:00,74.77,94.803,38.769,30.618000000000002 +2020-04-18 16:45:00,76.84,92.49600000000001,38.769,30.618000000000002 +2020-04-18 17:00:00,79.92,92.44,44.928000000000004,30.618000000000002 +2020-04-18 17:15:00,79.83,94.03399999999999,44.928000000000004,30.618000000000002 +2020-04-18 17:30:00,81.4,95.20200000000001,44.928000000000004,30.618000000000002 +2020-04-18 17:45:00,81.53,96.46799999999999,44.928000000000004,30.618000000000002 +2020-04-18 18:00:00,85.84,98.512,47.786,30.618000000000002 +2020-04-18 18:15:00,83.87,101.316,47.786,30.618000000000002 +2020-04-18 18:30:00,81.87,101.869,47.786,30.618000000000002 +2020-04-18 18:45:00,81.6,103.727,47.786,30.618000000000002 +2020-04-18 19:00:00,82.11,102.561,47.463,30.618000000000002 +2020-04-18 19:15:00,80.38,101.963,47.463,30.618000000000002 +2020-04-18 19:30:00,82.61,102.70299999999999,47.463,30.618000000000002 +2020-04-18 19:45:00,81.66,103.302,47.463,30.618000000000002 +2020-04-18 20:00:00,78.44,103.012,43.735,30.618000000000002 +2020-04-18 20:15:00,77.86,101.625,43.735,30.618000000000002 +2020-04-18 20:30:00,76.06,99.522,43.735,30.618000000000002 +2020-04-18 20:45:00,75.04,99.48700000000001,43.735,30.618000000000002 +2020-04-18 21:00:00,69.71,96.571,40.346,30.618000000000002 +2020-04-18 21:15:00,69.85,97.436,40.346,30.618000000000002 +2020-04-18 21:30:00,66.1,98.477,40.346,30.618000000000002 +2020-04-18 21:45:00,66.61,97.851,40.346,30.618000000000002 +2020-04-18 22:00:00,63.91,94.52,39.323,30.618000000000002 +2020-04-18 22:15:00,63.83,93.944,39.323,30.618000000000002 +2020-04-18 22:30:00,61.62,92.242,39.323,30.618000000000002 +2020-04-18 22:45:00,61.98,90.219,39.323,30.618000000000002 +2020-04-18 23:00:00,56.73,84.055,33.716,30.618000000000002 +2020-04-18 23:15:00,56.39,80.14699999999999,33.716,30.618000000000002 +2020-04-18 23:30:00,56.57,78.0,33.716,30.618000000000002 +2020-04-18 23:45:00,57.7,77.148,33.716,30.618000000000002 +2020-04-19 00:00:00,47.91,63.659,28.703000000000003,30.618000000000002 +2020-04-19 00:15:00,49.58,60.85,28.703000000000003,30.618000000000002 +2020-04-19 00:30:00,48.9,59.416000000000004,28.703000000000003,30.618000000000002 +2020-04-19 00:45:00,51.89,58.347,28.703000000000003,30.618000000000002 +2020-04-19 01:00:00,48.88,58.867,26.171,30.618000000000002 +2020-04-19 01:15:00,49.69,58.504,26.171,30.618000000000002 +2020-04-19 01:30:00,47.4,56.879,26.171,30.618000000000002 +2020-04-19 01:45:00,50.6,56.542,26.171,30.618000000000002 +2020-04-19 02:00:00,48.49,57.409,25.326999999999998,30.618000000000002 +2020-04-19 02:15:00,49.54,55.821000000000005,25.326999999999998,30.618000000000002 +2020-04-19 02:30:00,49.42,58.62,25.326999999999998,30.618000000000002 +2020-04-19 02:45:00,49.28,59.363,25.326999999999998,30.618000000000002 +2020-04-19 03:00:00,49.27,62.45399999999999,24.311999999999998,30.618000000000002 +2020-04-19 03:15:00,50.12,62.077,24.311999999999998,30.618000000000002 +2020-04-19 03:30:00,50.56,60.961999999999996,24.311999999999998,30.618000000000002 +2020-04-19 03:45:00,51.01,62.55,24.311999999999998,30.618000000000002 +2020-04-19 04:00:00,52.33,71.09100000000001,25.33,30.618000000000002 +2020-04-19 04:15:00,53.42,79.464,25.33,30.618000000000002 +2020-04-19 04:30:00,54.02,78.689,25.33,30.618000000000002 +2020-04-19 04:45:00,52.87,79.245,25.33,30.618000000000002 +2020-04-19 05:00:00,53.79,96.527,25.309,30.618000000000002 +2020-04-19 05:15:00,55.01,110.838,25.309,30.618000000000002 +2020-04-19 05:30:00,54.77,101.319,25.309,30.618000000000002 +2020-04-19 05:45:00,56.87,96.553,25.309,30.618000000000002 +2020-04-19 06:00:00,58.42,113.615,25.945999999999998,30.618000000000002 +2020-04-19 06:15:00,58.63,131.168,25.945999999999998,30.618000000000002 +2020-04-19 06:30:00,59.65,122.322,25.945999999999998,30.618000000000002 +2020-04-19 06:45:00,61.3,115.475,25.945999999999998,30.618000000000002 +2020-04-19 07:00:00,62.91,115.682,27.87,30.618000000000002 +2020-04-19 07:15:00,63.9,114.219,27.87,30.618000000000002 +2020-04-19 07:30:00,64.4,113.54899999999999,27.87,30.618000000000002 +2020-04-19 07:45:00,63.96,112.075,27.87,30.618000000000002 +2020-04-19 08:00:00,62.93,113.177,32.114000000000004,30.618000000000002 +2020-04-19 08:15:00,62.87,114.525,32.114000000000004,30.618000000000002 +2020-04-19 08:30:00,62.0,113.11399999999999,32.114000000000004,30.618000000000002 +2020-04-19 08:45:00,61.46,113.685,32.114000000000004,30.618000000000002 +2020-04-19 09:00:00,60.12,108.691,34.222,30.618000000000002 +2020-04-19 09:15:00,60.81,108.734,34.222,30.618000000000002 +2020-04-19 09:30:00,59.84,111.131,34.222,30.618000000000002 +2020-04-19 09:45:00,60.52,111.23299999999999,34.222,30.618000000000002 +2020-04-19 10:00:00,60.88,108.11,34.544000000000004,30.618000000000002 +2020-04-19 10:15:00,63.47,109.119,34.544000000000004,30.618000000000002 +2020-04-19 10:30:00,64.28,108.31299999999999,34.544000000000004,30.618000000000002 +2020-04-19 10:45:00,64.13,108.21,34.544000000000004,30.618000000000002 +2020-04-19 11:00:00,60.96,103.27799999999999,36.368,30.618000000000002 +2020-04-19 11:15:00,60.33,102.855,36.368,30.618000000000002 +2020-04-19 11:30:00,57.6,104.197,36.368,30.618000000000002 +2020-04-19 11:45:00,56.64,104.645,36.368,30.618000000000002 +2020-04-19 12:00:00,54.74,100.47,32.433,30.618000000000002 +2020-04-19 12:15:00,53.47,101.291,32.433,30.618000000000002 +2020-04-19 12:30:00,53.55,99.87299999999999,32.433,30.618000000000002 +2020-04-19 12:45:00,53.72,99.48299999999999,32.433,30.618000000000002 +2020-04-19 13:00:00,52.34,99.73100000000001,28.971999999999998,30.618000000000002 +2020-04-19 13:15:00,52.36,99.473,28.971999999999998,30.618000000000002 +2020-04-19 13:30:00,52.22,96.885,28.971999999999998,30.618000000000002 +2020-04-19 13:45:00,53.3,95.381,28.971999999999998,30.618000000000002 +2020-04-19 14:00:00,52.13,97.029,25.531999999999996,30.618000000000002 +2020-04-19 14:15:00,52.55,96.542,25.531999999999996,30.618000000000002 +2020-04-19 14:30:00,52.58,96.13799999999999,25.531999999999996,30.618000000000002 +2020-04-19 14:45:00,53.01,95.916,25.531999999999996,30.618000000000002 +2020-04-19 15:00:00,55.7,96.435,25.766,30.618000000000002 +2020-04-19 15:15:00,59.0,95.31299999999999,25.766,30.618000000000002 +2020-04-19 15:30:00,60.62,94.788,25.766,30.618000000000002 +2020-04-19 15:45:00,65.31,94.945,25.766,30.618000000000002 +2020-04-19 16:00:00,66.6,94.571,29.232,30.618000000000002 +2020-04-19 16:15:00,66.2,94.41799999999999,29.232,30.618000000000002 +2020-04-19 16:30:00,70.78,95.229,29.232,30.618000000000002 +2020-04-19 16:45:00,71.98,92.97,29.232,30.618000000000002 +2020-04-19 17:00:00,74.6,93.13,37.431,30.618000000000002 +2020-04-19 17:15:00,75.63,95.47,37.431,30.618000000000002 +2020-04-19 17:30:00,77.0,97.29899999999999,37.431,30.618000000000002 +2020-04-19 17:45:00,78.99,100.04899999999999,37.431,30.618000000000002 +2020-04-19 18:00:00,82.25,102.135,41.251999999999995,30.618000000000002 +2020-04-19 18:15:00,79.87,105.406,41.251999999999995,30.618000000000002 +2020-04-19 18:30:00,79.78,104.67200000000001,41.251999999999995,30.618000000000002 +2020-04-19 18:45:00,79.99,107.59899999999999,41.251999999999995,30.618000000000002 +2020-04-19 19:00:00,81.9,107.616,41.784,30.618000000000002 +2020-04-19 19:15:00,82.8,106.60600000000001,41.784,30.618000000000002 +2020-04-19 19:30:00,87.07,107.10799999999999,41.784,30.618000000000002 +2020-04-19 19:45:00,85.32,108.184,41.784,30.618000000000002 +2020-04-19 20:00:00,87.59,107.975,40.804,30.618000000000002 +2020-04-19 20:15:00,90.05,107.021,40.804,30.618000000000002 +2020-04-19 20:30:00,90.49,106.132,40.804,30.618000000000002 +2020-04-19 20:45:00,89.62,104.4,40.804,30.618000000000002 +2020-04-19 21:00:00,81.38,100.014,38.379,30.618000000000002 +2020-04-19 21:15:00,84.66,100.369,38.379,30.618000000000002 +2020-04-19 21:30:00,77.57,101.12200000000001,38.379,30.618000000000002 +2020-04-19 21:45:00,78.05,100.834,38.379,30.618000000000002 +2020-04-19 22:00:00,77.86,98.241,37.87,30.618000000000002 +2020-04-19 22:15:00,82.24,96.18799999999999,37.87,30.618000000000002 +2020-04-19 22:30:00,80.13,92.486,37.87,30.618000000000002 +2020-04-19 22:45:00,76.14,89.17200000000001,37.87,30.618000000000002 +2020-04-19 23:00:00,67.84,81.33,33.332,30.618000000000002 +2020-04-19 23:15:00,72.28,79.26100000000001,33.332,30.618000000000002 +2020-04-19 23:30:00,75.58,77.17699999999999,33.332,30.618000000000002 +2020-04-19 23:45:00,73.37,76.899,33.332,30.618000000000002 +2020-04-20 00:00:00,69.74,66.392,34.698,30.736 +2020-04-20 00:15:00,72.46,65.615,34.698,30.736 +2020-04-20 00:30:00,70.41,63.977,34.698,30.736 +2020-04-20 00:45:00,69.96,62.376000000000005,34.698,30.736 +2020-04-20 01:00:00,66.93,63.148,32.889,30.736 +2020-04-20 01:15:00,72.98,62.507,32.889,30.736 +2020-04-20 01:30:00,73.29,61.136,32.889,30.736 +2020-04-20 01:45:00,71.28,60.791000000000004,32.889,30.736 +2020-04-20 02:00:00,68.66,61.93899999999999,32.06,30.736 +2020-04-20 02:15:00,73.7,60.363,32.06,30.736 +2020-04-20 02:30:00,73.14,63.458999999999996,32.06,30.736 +2020-04-20 02:45:00,73.33,63.801,32.06,30.736 +2020-04-20 03:00:00,67.47,67.866,30.515,30.736 +2020-04-20 03:15:00,68.31,68.77,30.515,30.736 +2020-04-20 03:30:00,68.12,67.986,30.515,30.736 +2020-04-20 03:45:00,69.11,69.008,30.515,30.736 +2020-04-20 04:00:00,74.41,81.767,31.436,30.736 +2020-04-20 04:15:00,77.05,94.147,31.436,30.736 +2020-04-20 04:30:00,80.21,94.115,31.436,30.736 +2020-04-20 04:45:00,83.85,94.995,31.436,30.736 +2020-04-20 05:00:00,92.02,124.523,38.997,30.736 +2020-04-20 05:15:00,94.95,155.561,38.997,30.736 +2020-04-20 05:30:00,97.01,145.115,38.997,30.736 +2020-04-20 05:45:00,100.5,135.55100000000002,38.997,30.736 +2020-04-20 06:00:00,105.42,137.136,54.97,30.736 +2020-04-20 06:15:00,107.37,141.161,54.97,30.736 +2020-04-20 06:30:00,110.05,138.94799999999998,54.97,30.736 +2020-04-20 06:45:00,111.02,140.03,54.97,30.736 +2020-04-20 07:00:00,115.16,142.121,66.032,30.736 +2020-04-20 07:15:00,112.2,142.808,66.032,30.736 +2020-04-20 07:30:00,115.55,141.128,66.032,30.736 +2020-04-20 07:45:00,114.85,138.559,66.032,30.736 +2020-04-20 08:00:00,113.82,136.049,59.941,30.736 +2020-04-20 08:15:00,117.57,135.525,59.941,30.736 +2020-04-20 08:30:00,120.95,131.31799999999998,59.941,30.736 +2020-04-20 08:45:00,120.25,130.308,59.941,30.736 +2020-04-20 09:00:00,121.46,124.26299999999999,54.016000000000005,30.736 +2020-04-20 09:15:00,120.31,121.29700000000001,54.016000000000005,30.736 +2020-04-20 09:30:00,119.35,122.581,54.016000000000005,30.736 +2020-04-20 09:45:00,116.25,121.405,54.016000000000005,30.736 +2020-04-20 10:00:00,114.59,118.214,50.63,30.736 +2020-04-20 10:15:00,118.18,118.99600000000001,50.63,30.736 +2020-04-20 10:30:00,111.25,117.441,50.63,30.736 +2020-04-20 10:45:00,112.04,116.792,50.63,30.736 +2020-04-20 11:00:00,118.8,110.635,49.951,30.736 +2020-04-20 11:15:00,119.3,111.428,49.951,30.736 +2020-04-20 11:30:00,123.96,113.979,49.951,30.736 +2020-04-20 11:45:00,126.42,114.51899999999999,49.951,30.736 +2020-04-20 12:00:00,124.57,110.541,46.913000000000004,30.736 +2020-04-20 12:15:00,122.52,111.43799999999999,46.913000000000004,30.736 +2020-04-20 12:30:00,115.69,109.486,46.913000000000004,30.736 +2020-04-20 12:45:00,118.2,109.985,46.913000000000004,30.736 +2020-04-20 13:00:00,113.18,111.163,47.093999999999994,30.736 +2020-04-20 13:15:00,112.18,109.56700000000001,47.093999999999994,30.736 +2020-04-20 13:30:00,112.03,106.774,47.093999999999994,30.736 +2020-04-20 13:45:00,106.19,105.821,47.093999999999994,30.736 +2020-04-20 14:00:00,99.72,106.662,46.678000000000004,30.736 +2020-04-20 14:15:00,107.85,106.13,46.678000000000004,30.736 +2020-04-20 14:30:00,105.99,105.26899999999999,46.678000000000004,30.736 +2020-04-20 14:45:00,95.87,106.25399999999999,46.678000000000004,30.736 +2020-04-20 15:00:00,100.13,107.649,47.715,30.736 +2020-04-20 15:15:00,102.74,105.315,47.715,30.736 +2020-04-20 15:30:00,106.75,104.714,47.715,30.736 +2020-04-20 15:45:00,109.06,104.306,47.715,30.736 +2020-04-20 16:00:00,111.0,104.484,49.81100000000001,30.736 +2020-04-20 16:15:00,110.49,103.917,49.81100000000001,30.736 +2020-04-20 16:30:00,109.82,103.781,49.81100000000001,30.736 +2020-04-20 16:45:00,113.31,100.8,49.81100000000001,30.736 +2020-04-20 17:00:00,114.39,100.116,55.591,30.736 +2020-04-20 17:15:00,113.67,102.141,55.591,30.736 +2020-04-20 17:30:00,113.09,103.419,55.591,30.736 +2020-04-20 17:45:00,114.97,105.07,55.591,30.736 +2020-04-20 18:00:00,116.55,106.62,56.523,30.736 +2020-04-20 18:15:00,113.53,107.551,56.523,30.736 +2020-04-20 18:30:00,111.92,106.67,56.523,30.736 +2020-04-20 18:45:00,111.5,112.01299999999999,56.523,30.736 +2020-04-20 19:00:00,109.89,110.913,56.044,30.736 +2020-04-20 19:15:00,115.06,110.16,56.044,30.736 +2020-04-20 19:30:00,113.63,110.69200000000001,56.044,30.736 +2020-04-20 19:45:00,112.78,110.954,56.044,30.736 +2020-04-20 20:00:00,101.75,108.655,61.715,30.736 +2020-04-20 20:15:00,100.7,107.319,61.715,30.736 +2020-04-20 20:30:00,100.68,105.82600000000001,61.715,30.736 +2020-04-20 20:45:00,100.06,105.12200000000001,61.715,30.736 +2020-04-20 21:00:00,99.18,100.616,56.24,30.736 +2020-04-20 21:15:00,98.71,100.664,56.24,30.736 +2020-04-20 21:30:00,94.69,101.24700000000001,56.24,30.736 +2020-04-20 21:45:00,91.68,100.58200000000001,56.24,30.736 +2020-04-20 22:00:00,88.84,95.15299999999999,50.437,30.736 +2020-04-20 22:15:00,88.96,93.74600000000001,50.437,30.736 +2020-04-20 22:30:00,84.92,82.199,50.437,30.736 +2020-04-20 22:45:00,85.41,76.347,50.437,30.736 +2020-04-20 23:00:00,81.6,68.904,42.756,30.736 +2020-04-20 23:15:00,81.0,67.168,42.756,30.736 +2020-04-20 23:30:00,80.1,66.495,42.756,30.736 +2020-04-20 23:45:00,81.46,67.245,42.756,30.736 +2020-04-21 00:00:00,77.51,64.109,39.857,30.736 +2020-04-21 00:15:00,75.11,64.649,39.857,30.736 +2020-04-21 00:30:00,73.12,63.016999999999996,39.857,30.736 +2020-04-21 00:45:00,78.89,61.471000000000004,39.857,30.736 +2020-04-21 01:00:00,78.67,61.772,37.233000000000004,30.736 +2020-04-21 01:15:00,77.8,60.961000000000006,37.233000000000004,30.736 +2020-04-21 01:30:00,72.87,59.566,37.233000000000004,30.736 +2020-04-21 01:45:00,74.1,59.026,37.233000000000004,30.736 +2020-04-21 02:00:00,78.95,59.831,35.856,30.736 +2020-04-21 02:15:00,78.47,58.976000000000006,35.856,30.736 +2020-04-21 02:30:00,72.53,61.526,35.856,30.736 +2020-04-21 02:45:00,71.94,62.106,35.856,30.736 +2020-04-21 03:00:00,74.86,65.212,34.766999999999996,30.736 +2020-04-21 03:15:00,80.59,66.313,34.766999999999996,30.736 +2020-04-21 03:30:00,83.48,65.743,34.766999999999996,30.736 +2020-04-21 03:45:00,83.58,66.119,34.766999999999996,30.736 +2020-04-21 04:00:00,79.94,77.88,35.468,30.736 +2020-04-21 04:15:00,82.73,90.056,35.468,30.736 +2020-04-21 04:30:00,86.26,89.789,35.468,30.736 +2020-04-21 04:45:00,87.7,91.59100000000001,35.468,30.736 +2020-04-21 05:00:00,95.23,124.53200000000001,40.399,30.736 +2020-04-21 05:15:00,98.1,155.803,40.399,30.736 +2020-04-21 05:30:00,100.01,144.778,40.399,30.736 +2020-04-21 05:45:00,102.09,134.755,40.399,30.736 +2020-04-21 06:00:00,107.66,136.52100000000002,54.105,30.736 +2020-04-21 06:15:00,108.52,141.458,54.105,30.736 +2020-04-21 06:30:00,110.71,138.69,54.105,30.736 +2020-04-21 06:45:00,111.29,138.968,54.105,30.736 +2020-04-21 07:00:00,110.64,141.067,63.083,30.736 +2020-04-21 07:15:00,112.61,141.486,63.083,30.736 +2020-04-21 07:30:00,117.23,139.503,63.083,30.736 +2020-04-21 07:45:00,111.61,136.388,63.083,30.736 +2020-04-21 08:00:00,109.22,133.88299999999998,57.254,30.736 +2020-04-21 08:15:00,106.0,132.562,57.254,30.736 +2020-04-21 08:30:00,108.93,128.343,57.254,30.736 +2020-04-21 08:45:00,111.02,126.616,57.254,30.736 +2020-04-21 09:00:00,108.14,120.348,51.395,30.736 +2020-04-21 09:15:00,111.76,118.16,51.395,30.736 +2020-04-21 09:30:00,112.64,120.26700000000001,51.395,30.736 +2020-04-21 09:45:00,108.02,119.867,51.395,30.736 +2020-04-21 10:00:00,106.08,115.491,48.201,30.736 +2020-04-21 10:15:00,104.55,115.639,48.201,30.736 +2020-04-21 10:30:00,104.69,114.223,48.201,30.736 +2020-04-21 10:45:00,104.67,114.375,48.201,30.736 +2020-04-21 11:00:00,103.29,109.04799999999999,46.133,30.736 +2020-04-21 11:15:00,102.35,109.921,46.133,30.736 +2020-04-21 11:30:00,98.0,111.10700000000001,46.133,30.736 +2020-04-21 11:45:00,100.05,111.792,46.133,30.736 +2020-04-21 12:00:00,95.93,106.93700000000001,44.243,30.736 +2020-04-21 12:15:00,104.04,107.79700000000001,44.243,30.736 +2020-04-21 12:30:00,105.24,106.734,44.243,30.736 +2020-04-21 12:45:00,107.04,107.476,44.243,30.736 +2020-04-21 13:00:00,100.69,108.23700000000001,45.042,30.736 +2020-04-21 13:15:00,99.99,107.499,45.042,30.736 +2020-04-21 13:30:00,104.95,105.37799999999999,45.042,30.736 +2020-04-21 13:45:00,111.42,103.964,45.042,30.736 +2020-04-21 14:00:00,114.25,105.295,44.062,30.736 +2020-04-21 14:15:00,112.57,104.719,44.062,30.736 +2020-04-21 14:30:00,109.07,104.374,44.062,30.736 +2020-04-21 14:45:00,106.59,104.85,44.062,30.736 +2020-04-21 15:00:00,113.59,105.935,46.461999999999996,30.736 +2020-04-21 15:15:00,116.36,104.32,46.461999999999996,30.736 +2020-04-21 15:30:00,115.99,103.68299999999999,46.461999999999996,30.736 +2020-04-21 15:45:00,113.69,103.225,46.461999999999996,30.736 +2020-04-21 16:00:00,109.01,103.26299999999999,48.802,30.736 +2020-04-21 16:15:00,111.19,102.992,48.802,30.736 +2020-04-21 16:30:00,117.84,102.99799999999999,48.802,30.736 +2020-04-21 16:45:00,116.61,100.555,48.802,30.736 +2020-04-21 17:00:00,119.91,100.361,55.672,30.736 +2020-04-21 17:15:00,117.41,102.63799999999999,55.672,30.736 +2020-04-21 17:30:00,119.66,104.00299999999999,55.672,30.736 +2020-04-21 17:45:00,120.44,105.34700000000001,55.672,30.736 +2020-04-21 18:00:00,118.14,106.23299999999999,57.006,30.736 +2020-04-21 18:15:00,114.94,107.87,57.006,30.736 +2020-04-21 18:30:00,117.32,106.64200000000001,57.006,30.736 +2020-04-21 18:45:00,117.13,112.29299999999999,57.006,30.736 +2020-04-21 19:00:00,110.96,110.45100000000001,57.148,30.736 +2020-04-21 19:15:00,108.42,109.675,57.148,30.736 +2020-04-21 19:30:00,113.5,109.726,57.148,30.736 +2020-04-21 19:45:00,116.0,110.249,57.148,30.736 +2020-04-21 20:00:00,107.84,108.26299999999999,61.895,30.736 +2020-04-21 20:15:00,108.53,105.655,61.895,30.736 +2020-04-21 20:30:00,108.46,104.756,61.895,30.736 +2020-04-21 20:45:00,106.57,104.056,61.895,30.736 +2020-04-21 21:00:00,95.96,99.756,54.78,30.736 +2020-04-21 21:15:00,98.48,99.322,54.78,30.736 +2020-04-21 21:30:00,95.81,99.62700000000001,54.78,30.736 +2020-04-21 21:45:00,93.29,99.24,54.78,30.736 +2020-04-21 22:00:00,84.54,94.82799999999999,50.76,30.736 +2020-04-21 22:15:00,88.53,93.089,50.76,30.736 +2020-04-21 22:30:00,86.77,81.759,50.76,30.736 +2020-04-21 22:45:00,86.04,76.04,50.76,30.736 +2020-04-21 23:00:00,75.63,68.074,44.162,30.736 +2020-04-21 23:15:00,72.93,66.936,44.162,30.736 +2020-04-21 23:30:00,77.07,66.072,44.162,30.736 +2020-04-21 23:45:00,80.79,66.721,44.162,30.736 +2020-04-22 00:00:00,77.42,63.72,39.061,30.736 +2020-04-22 00:15:00,75.61,64.27199999999999,39.061,30.736 +2020-04-22 00:30:00,73.58,62.63399999999999,39.061,30.736 +2020-04-22 00:45:00,72.45,61.093,39.061,30.736 +2020-04-22 01:00:00,69.55,61.388000000000005,35.795,30.736 +2020-04-22 01:15:00,76.2,60.552,35.795,30.736 +2020-04-22 01:30:00,70.64,59.136,35.795,30.736 +2020-04-22 01:45:00,71.82,58.599,35.795,30.736 +2020-04-22 02:00:00,71.59,59.394,33.316,30.736 +2020-04-22 02:15:00,78.92,58.523,33.316,30.736 +2020-04-22 02:30:00,78.64,61.091,33.316,30.736 +2020-04-22 02:45:00,78.89,61.676,33.316,30.736 +2020-04-22 03:00:00,80.34,64.79899999999999,32.803000000000004,30.736 +2020-04-22 03:15:00,75.97,65.874,32.803000000000004,30.736 +2020-04-22 03:30:00,72.33,65.30199999999999,32.803000000000004,30.736 +2020-04-22 03:45:00,75.91,65.7,32.803000000000004,30.736 +2020-04-22 04:00:00,78.96,77.42699999999999,34.235,30.736 +2020-04-22 04:15:00,78.93,89.56200000000001,34.235,30.736 +2020-04-22 04:30:00,83.97,89.294,34.235,30.736 +2020-04-22 04:45:00,84.72,91.086,34.235,30.736 +2020-04-22 05:00:00,92.29,123.926,38.65,30.736 +2020-04-22 05:15:00,96.41,155.092,38.65,30.736 +2020-04-22 05:30:00,96.57,144.094,38.65,30.736 +2020-04-22 05:45:00,103.85,134.12,38.65,30.736 +2020-04-22 06:00:00,107.64,135.908,54.951,30.736 +2020-04-22 06:15:00,108.62,140.82299999999998,54.951,30.736 +2020-04-22 06:30:00,111.0,138.041,54.951,30.736 +2020-04-22 06:45:00,110.88,138.314,54.951,30.736 +2020-04-22 07:00:00,112.83,140.412,67.328,30.736 +2020-04-22 07:15:00,112.0,140.819,67.328,30.736 +2020-04-22 07:30:00,110.25,138.798,67.328,30.736 +2020-04-22 07:45:00,108.56,135.684,67.328,30.736 +2020-04-22 08:00:00,105.32,133.16899999999998,60.23,30.736 +2020-04-22 08:15:00,105.49,131.882,60.23,30.736 +2020-04-22 08:30:00,110.55,127.635,60.23,30.736 +2020-04-22 08:45:00,113.42,125.93700000000001,60.23,30.736 +2020-04-22 09:00:00,107.8,119.671,56.845,30.736 +2020-04-22 09:15:00,107.23,117.49,56.845,30.736 +2020-04-22 09:30:00,106.86,119.613,56.845,30.736 +2020-04-22 09:45:00,108.88,119.24600000000001,56.845,30.736 +2020-04-22 10:00:00,117.52,114.87799999999999,53.832,30.736 +2020-04-22 10:15:00,121.69,115.073,53.832,30.736 +2020-04-22 10:30:00,118.62,113.68,53.832,30.736 +2020-04-22 10:45:00,118.16,113.852,53.832,30.736 +2020-04-22 11:00:00,108.04,108.51700000000001,53.225,30.736 +2020-04-22 11:15:00,106.35,109.412,53.225,30.736 +2020-04-22 11:30:00,113.65,110.598,53.225,30.736 +2020-04-22 11:45:00,119.82,111.302,53.225,30.736 +2020-04-22 12:00:00,111.54,106.476,50.676,30.736 +2020-04-22 12:15:00,112.94,107.34299999999999,50.676,30.736 +2020-04-22 12:30:00,106.75,106.238,50.676,30.736 +2020-04-22 12:45:00,107.24,106.98299999999999,50.676,30.736 +2020-04-22 13:00:00,106.99,107.78200000000001,50.646,30.736 +2020-04-22 13:15:00,103.94,107.039,50.646,30.736 +2020-04-22 13:30:00,111.47,104.92,50.646,30.736 +2020-04-22 13:45:00,121.34,103.508,50.646,30.736 +2020-04-22 14:00:00,117.59,104.902,50.786,30.736 +2020-04-22 14:15:00,115.99,104.306,50.786,30.736 +2020-04-22 14:30:00,118.6,103.917,50.786,30.736 +2020-04-22 14:45:00,123.1,104.39399999999999,50.786,30.736 +2020-04-22 15:00:00,122.69,105.51799999999999,51.535,30.736 +2020-04-22 15:15:00,113.87,103.881,51.535,30.736 +2020-04-22 15:30:00,107.0,103.198,51.535,30.736 +2020-04-22 15:45:00,105.01,102.72399999999999,51.535,30.736 +2020-04-22 16:00:00,115.45,102.803,53.157,30.736 +2020-04-22 16:15:00,119.01,102.509,53.157,30.736 +2020-04-22 16:30:00,121.41,102.52,53.157,30.736 +2020-04-22 16:45:00,118.86,100.01100000000001,53.157,30.736 +2020-04-22 17:00:00,126.78,99.868,57.793,30.736 +2020-04-22 17:15:00,124.76,102.12,57.793,30.736 +2020-04-22 17:30:00,124.73,103.48,57.793,30.736 +2020-04-22 17:45:00,117.96,104.79799999999999,57.793,30.736 +2020-04-22 18:00:00,119.79,105.698,59.872,30.736 +2020-04-22 18:15:00,119.56,107.354,59.872,30.736 +2020-04-22 18:30:00,118.02,106.11200000000001,59.872,30.736 +2020-04-22 18:45:00,114.89,111.771,59.872,30.736 +2020-04-22 19:00:00,117.2,109.917,60.17100000000001,30.736 +2020-04-22 19:15:00,115.46,109.146,60.17100000000001,30.736 +2020-04-22 19:30:00,111.46,109.208,60.17100000000001,30.736 +2020-04-22 19:45:00,114.24,109.75299999999999,60.17100000000001,30.736 +2020-04-22 20:00:00,110.05,107.742,65.015,30.736 +2020-04-22 20:15:00,112.02,105.141,65.015,30.736 +2020-04-22 20:30:00,103.59,104.27600000000001,65.015,30.736 +2020-04-22 20:45:00,101.23,103.60600000000001,65.015,30.736 +2020-04-22 21:00:00,101.65,99.30799999999999,57.805,30.736 +2020-04-22 21:15:00,100.48,98.88799999999999,57.805,30.736 +2020-04-22 21:30:00,91.45,99.18,57.805,30.736 +2020-04-22 21:45:00,90.16,98.823,57.805,30.736 +2020-04-22 22:00:00,83.23,94.425,52.115,30.736 +2020-04-22 22:15:00,86.17,92.711,52.115,30.736 +2020-04-22 22:30:00,88.07,81.357,52.115,30.736 +2020-04-22 22:45:00,85.72,75.62899999999999,52.115,30.736 +2020-04-22 23:00:00,77.3,67.635,42.871,30.736 +2020-04-22 23:15:00,76.06,66.535,42.871,30.736 +2020-04-22 23:30:00,81.31,65.67,42.871,30.736 +2020-04-22 23:45:00,81.61,66.325,42.871,30.736 +2020-04-23 00:00:00,77.46,63.331,39.203,30.736 +2020-04-23 00:15:00,73.8,63.897,39.203,30.736 +2020-04-23 00:30:00,72.13,62.251000000000005,39.203,30.736 +2020-04-23 00:45:00,78.28,60.717,39.203,30.736 +2020-04-23 01:00:00,77.24,61.004,37.118,30.736 +2020-04-23 01:15:00,76.9,60.145,37.118,30.736 +2020-04-23 01:30:00,73.05,58.708,37.118,30.736 +2020-04-23 01:45:00,74.2,58.173,37.118,30.736 +2020-04-23 02:00:00,77.66,58.958,35.647,30.736 +2020-04-23 02:15:00,74.79,58.07,35.647,30.736 +2020-04-23 02:30:00,73.24,60.656000000000006,35.647,30.736 +2020-04-23 02:45:00,74.37,61.248000000000005,35.647,30.736 +2020-04-23 03:00:00,74.42,64.38600000000001,34.585,30.736 +2020-04-23 03:15:00,83.44,65.436,34.585,30.736 +2020-04-23 03:30:00,82.78,64.861,34.585,30.736 +2020-04-23 03:45:00,85.04,65.282,34.585,30.736 +2020-04-23 04:00:00,81.36,76.975,36.184,30.736 +2020-04-23 04:15:00,83.4,89.069,36.184,30.736 +2020-04-23 04:30:00,86.65,88.79899999999999,36.184,30.736 +2020-04-23 04:45:00,90.42,90.58200000000001,36.184,30.736 +2020-04-23 05:00:00,96.73,123.321,41.019,30.736 +2020-04-23 05:15:00,99.72,154.384,41.019,30.736 +2020-04-23 05:30:00,104.3,143.409,41.019,30.736 +2020-04-23 05:45:00,108.09,133.485,41.019,30.736 +2020-04-23 06:00:00,115.69,135.297,53.963,30.736 +2020-04-23 06:15:00,112.99,140.192,53.963,30.736 +2020-04-23 06:30:00,117.65,137.392,53.963,30.736 +2020-04-23 06:45:00,114.98,137.661,53.963,30.736 +2020-04-23 07:00:00,122.88,139.759,66.512,30.736 +2020-04-23 07:15:00,119.72,140.15200000000002,66.512,30.736 +2020-04-23 07:30:00,116.23,138.096,66.512,30.736 +2020-04-23 07:45:00,110.91,134.984,66.512,30.736 +2020-04-23 08:00:00,109.73,132.45600000000002,58.86,30.736 +2020-04-23 08:15:00,111.4,131.204,58.86,30.736 +2020-04-23 08:30:00,115.66,126.929,58.86,30.736 +2020-04-23 08:45:00,116.9,125.26,58.86,30.736 +2020-04-23 09:00:00,117.14,118.99799999999999,52.156000000000006,30.736 +2020-04-23 09:15:00,117.82,116.822,52.156000000000006,30.736 +2020-04-23 09:30:00,125.16,118.961,52.156000000000006,30.736 +2020-04-23 09:45:00,126.64,118.62700000000001,52.156000000000006,30.736 +2020-04-23 10:00:00,115.39,114.26899999999999,49.034,30.736 +2020-04-23 10:15:00,107.22,114.51,49.034,30.736 +2020-04-23 10:30:00,110.97,113.139,49.034,30.736 +2020-04-23 10:45:00,105.98,113.331,49.034,30.736 +2020-04-23 11:00:00,110.48,107.988,46.53,30.736 +2020-04-23 11:15:00,109.12,108.90700000000001,46.53,30.736 +2020-04-23 11:30:00,104.52,110.09200000000001,46.53,30.736 +2020-04-23 11:45:00,118.1,110.81299999999999,46.53,30.736 +2020-04-23 12:00:00,100.86,106.01799999999999,43.318000000000005,30.736 +2020-04-23 12:15:00,107.42,106.89200000000001,43.318000000000005,30.736 +2020-04-23 12:30:00,119.08,105.743,43.318000000000005,30.736 +2020-04-23 12:45:00,113.59,106.492,43.318000000000005,30.736 +2020-04-23 13:00:00,105.64,107.32799999999999,41.608000000000004,30.736 +2020-04-23 13:15:00,109.66,106.58,41.608000000000004,30.736 +2020-04-23 13:30:00,107.3,104.464,41.608000000000004,30.736 +2020-04-23 13:45:00,109.96,103.055,41.608000000000004,30.736 +2020-04-23 14:00:00,108.12,104.509,41.786,30.736 +2020-04-23 14:15:00,98.99,103.896,41.786,30.736 +2020-04-23 14:30:00,100.33,103.461,41.786,30.736 +2020-04-23 14:45:00,105.57,103.94200000000001,41.786,30.736 +2020-04-23 15:00:00,105.07,105.101,44.181999999999995,30.736 +2020-04-23 15:15:00,107.35,103.44200000000001,44.181999999999995,30.736 +2020-04-23 15:30:00,99.98,102.71700000000001,44.181999999999995,30.736 +2020-04-23 15:45:00,100.25,102.22399999999999,44.181999999999995,30.736 +2020-04-23 16:00:00,98.86,102.346,45.956,30.736 +2020-04-23 16:15:00,107.63,102.027,45.956,30.736 +2020-04-23 16:30:00,113.08,102.045,45.956,30.736 +2020-04-23 16:45:00,113.6,99.471,45.956,30.736 +2020-04-23 17:00:00,112.41,99.37799999999999,50.702,30.736 +2020-04-23 17:15:00,112.21,101.604,50.702,30.736 +2020-04-23 17:30:00,118.08,102.958,50.702,30.736 +2020-04-23 17:45:00,120.54,104.251,50.702,30.736 +2020-04-23 18:00:00,119.87,105.165,53.595,30.736 +2020-04-23 18:15:00,109.3,106.839,53.595,30.736 +2020-04-23 18:30:00,109.67,105.585,53.595,30.736 +2020-04-23 18:45:00,108.25,111.24799999999999,53.595,30.736 +2020-04-23 19:00:00,107.8,109.385,54.207,30.736 +2020-04-23 19:15:00,105.82,108.62,54.207,30.736 +2020-04-23 19:30:00,107.51,108.69200000000001,54.207,30.736 +2020-04-23 19:45:00,112.01,109.26,54.207,30.736 +2020-04-23 20:00:00,110.19,107.22,56.948,30.736 +2020-04-23 20:15:00,109.28,104.626,56.948,30.736 +2020-04-23 20:30:00,106.75,103.795,56.948,30.736 +2020-04-23 20:45:00,105.41,103.15899999999999,56.948,30.736 +2020-04-23 21:00:00,103.61,98.861,52.157,30.736 +2020-04-23 21:15:00,98.19,98.456,52.157,30.736 +2020-04-23 21:30:00,87.51,98.734,52.157,30.736 +2020-04-23 21:45:00,93.02,98.40700000000001,52.157,30.736 +2020-04-23 22:00:00,90.12,94.023,47.483000000000004,30.736 +2020-04-23 22:15:00,89.7,92.33200000000001,47.483000000000004,30.736 +2020-04-23 22:30:00,83.45,80.955,47.483000000000004,30.736 +2020-04-23 22:45:00,79.56,75.218,47.483000000000004,30.736 +2020-04-23 23:00:00,78.7,67.197,41.978,30.736 +2020-04-23 23:15:00,82.28,66.135,41.978,30.736 +2020-04-23 23:30:00,81.32,65.26899999999999,41.978,30.736 +2020-04-23 23:45:00,80.34,65.931,41.978,30.736 +2020-04-24 00:00:00,72.2,61.173,39.301,30.736 +2020-04-24 00:15:00,76.53,62.001999999999995,39.301,30.736 +2020-04-24 00:30:00,78.65,60.465,39.301,30.736 +2020-04-24 00:45:00,78.84,59.282,39.301,30.736 +2020-04-24 01:00:00,72.93,59.141999999999996,37.976,30.736 +2020-04-24 01:15:00,76.27,58.315,37.976,30.736 +2020-04-24 01:30:00,79.2,57.232,37.976,30.736 +2020-04-24 01:45:00,79.29,56.583999999999996,37.976,30.736 +2020-04-24 02:00:00,75.93,58.038999999999994,37.041,30.736 +2020-04-24 02:15:00,76.43,57.04,37.041,30.736 +2020-04-24 02:30:00,79.9,60.477,37.041,30.736 +2020-04-24 02:45:00,79.92,60.628,37.041,30.736 +2020-04-24 03:00:00,78.47,63.809,37.575,30.736 +2020-04-24 03:15:00,78.54,64.48100000000001,37.575,30.736 +2020-04-24 03:30:00,83.02,63.73,37.575,30.736 +2020-04-24 03:45:00,86.25,64.94,37.575,30.736 +2020-04-24 04:00:00,84.35,76.809,39.058,30.736 +2020-04-24 04:15:00,84.36,87.662,39.058,30.736 +2020-04-24 04:30:00,84.53,88.164,39.058,30.736 +2020-04-24 04:45:00,87.97,88.916,39.058,30.736 +2020-04-24 05:00:00,94.74,120.58200000000001,43.256,30.736 +2020-04-24 05:15:00,98.06,152.952,43.256,30.736 +2020-04-24 05:30:00,101.99,142.67,43.256,30.736 +2020-04-24 05:45:00,104.32,132.45,43.256,30.736 +2020-04-24 06:00:00,110.14,134.679,56.093999999999994,30.736 +2020-04-24 06:15:00,110.92,138.92700000000002,56.093999999999994,30.736 +2020-04-24 06:30:00,115.01,135.642,56.093999999999994,30.736 +2020-04-24 06:45:00,113.33,136.634,56.093999999999994,30.736 +2020-04-24 07:00:00,114.79,138.756,66.92699999999999,30.736 +2020-04-24 07:15:00,114.94,140.278,66.92699999999999,30.736 +2020-04-24 07:30:00,111.87,136.784,66.92699999999999,30.736 +2020-04-24 07:45:00,113.65,133.072,66.92699999999999,30.736 +2020-04-24 08:00:00,111.88,130.465,60.332,30.736 +2020-04-24 08:15:00,111.97,129.475,60.332,30.736 +2020-04-24 08:30:00,116.04,125.63600000000001,60.332,30.736 +2020-04-24 08:45:00,116.96,123.051,60.332,30.736 +2020-04-24 09:00:00,113.47,115.54,56.085,30.736 +2020-04-24 09:15:00,109.61,114.911,56.085,30.736 +2020-04-24 09:30:00,104.73,116.389,56.085,30.736 +2020-04-24 09:45:00,106.39,116.274,56.085,30.736 +2020-04-24 10:00:00,104.8,111.147,52.91,30.736 +2020-04-24 10:15:00,110.96,111.698,52.91,30.736 +2020-04-24 10:30:00,108.8,110.649,52.91,30.736 +2020-04-24 10:45:00,112.42,110.54799999999999,52.91,30.736 +2020-04-24 11:00:00,105.01,105.321,52.278999999999996,30.736 +2020-04-24 11:15:00,106.04,105.079,52.278999999999996,30.736 +2020-04-24 11:30:00,106.23,107.06299999999999,52.278999999999996,30.736 +2020-04-24 11:45:00,105.8,107.24700000000001,52.278999999999996,30.736 +2020-04-24 12:00:00,101.15,103.402,49.023999999999994,30.736 +2020-04-24 12:15:00,100.58,102.65100000000001,49.023999999999994,30.736 +2020-04-24 12:30:00,96.07,101.62299999999999,49.023999999999994,30.736 +2020-04-24 12:45:00,90.58,102.21799999999999,49.023999999999994,30.736 +2020-04-24 13:00:00,91.3,104.00399999999999,46.82,30.736 +2020-04-24 13:15:00,91.72,103.84899999999999,46.82,30.736 +2020-04-24 13:30:00,89.96,102.21700000000001,46.82,30.736 +2020-04-24 13:45:00,90.43,100.95299999999999,46.82,30.736 +2020-04-24 14:00:00,91.03,101.309,45.756,30.736 +2020-04-24 14:15:00,90.38,100.82799999999999,45.756,30.736 +2020-04-24 14:30:00,90.13,101.54700000000001,45.756,30.736 +2020-04-24 14:45:00,87.82,101.804,45.756,30.736 +2020-04-24 15:00:00,88.57,102.664,47.56,30.736 +2020-04-24 15:15:00,89.54,100.579,47.56,30.736 +2020-04-24 15:30:00,90.6,98.565,47.56,30.736 +2020-04-24 15:45:00,93.53,98.59200000000001,47.56,30.736 +2020-04-24 16:00:00,96.08,97.604,49.581,30.736 +2020-04-24 16:15:00,98.58,97.73100000000001,49.581,30.736 +2020-04-24 16:30:00,103.04,97.697,49.581,30.736 +2020-04-24 16:45:00,102.74,94.509,49.581,30.736 +2020-04-24 17:00:00,106.18,95.684,53.918,30.736 +2020-04-24 17:15:00,105.16,97.54299999999999,53.918,30.736 +2020-04-24 17:30:00,105.91,98.814,53.918,30.736 +2020-04-24 17:45:00,107.32,99.845,53.918,30.736 +2020-04-24 18:00:00,107.44,101.23700000000001,54.266000000000005,30.736 +2020-04-24 18:15:00,104.49,102.10700000000001,54.266000000000005,30.736 +2020-04-24 18:30:00,104.57,100.98899999999999,54.266000000000005,30.736 +2020-04-24 18:45:00,103.28,106.92399999999999,54.266000000000005,30.736 +2020-04-24 19:00:00,105.31,106.14399999999999,54.092,30.736 +2020-04-24 19:15:00,99.77,106.50299999999999,54.092,30.736 +2020-04-24 19:30:00,104.65,106.406,54.092,30.736 +2020-04-24 19:45:00,102.74,106.08,54.092,30.736 +2020-04-24 20:00:00,99.02,103.93700000000001,59.038999999999994,30.736 +2020-04-24 20:15:00,105.31,101.875,59.038999999999994,30.736 +2020-04-24 20:30:00,106.75,100.73700000000001,59.038999999999994,30.736 +2020-04-24 20:45:00,103.82,99.896,59.038999999999994,30.736 +2020-04-24 21:00:00,92.72,96.742,53.346000000000004,30.736 +2020-04-24 21:15:00,89.77,97.68700000000001,53.346000000000004,30.736 +2020-04-24 21:30:00,92.29,97.876,53.346000000000004,30.736 +2020-04-24 21:45:00,91.53,98.0,53.346000000000004,30.736 +2020-04-24 22:00:00,86.77,94.05799999999999,47.938,30.736 +2020-04-24 22:15:00,82.96,92.156,47.938,30.736 +2020-04-24 22:30:00,85.15,87.279,47.938,30.736 +2020-04-24 22:45:00,83.5,83.97200000000001,47.938,30.736 +2020-04-24 23:00:00,78.39,76.804,40.266,30.736 +2020-04-24 23:15:00,76.03,73.711,40.266,30.736 +2020-04-24 23:30:00,79.22,70.86399999999999,40.266,30.736 +2020-04-24 23:45:00,77.46,71.1,40.266,30.736 +2020-04-25 00:00:00,72.92,60.177,39.184,30.618000000000002 +2020-04-25 00:15:00,67.06,58.391000000000005,39.184,30.618000000000002 +2020-04-25 00:30:00,65.85,57.206,39.184,30.618000000000002 +2020-04-25 00:45:00,69.65,55.895,39.184,30.618000000000002 +2020-04-25 01:00:00,71.38,56.265,34.692,30.618000000000002 +2020-04-25 01:15:00,72.76,55.318000000000005,34.692,30.618000000000002 +2020-04-25 01:30:00,69.42,53.401,34.692,30.618000000000002 +2020-04-25 01:45:00,71.88,53.498000000000005,34.692,30.618000000000002 +2020-04-25 02:00:00,71.15,54.626000000000005,32.919000000000004,30.618000000000002 +2020-04-25 02:15:00,71.09,52.883,32.919000000000004,30.618000000000002 +2020-04-25 02:30:00,65.69,55.233999999999995,32.919000000000004,30.618000000000002 +2020-04-25 02:45:00,61.4,55.98,32.919000000000004,30.618000000000002 +2020-04-25 03:00:00,64.48,58.56100000000001,32.024,30.618000000000002 +2020-04-25 03:15:00,63.49,58.118,32.024,30.618000000000002 +2020-04-25 03:30:00,63.7,56.793,32.024,30.618000000000002 +2020-04-25 03:45:00,64.2,59.101000000000006,32.024,30.618000000000002 +2020-04-25 04:00:00,64.64,67.586,31.958000000000002,30.618000000000002 +2020-04-25 04:15:00,64.45,76.515,31.958000000000002,30.618000000000002 +2020-04-25 04:30:00,62.58,74.78,31.958000000000002,30.618000000000002 +2020-04-25 04:45:00,61.79,75.464,31.958000000000002,30.618000000000002 +2020-04-25 05:00:00,62.67,93.719,32.75,30.618000000000002 +2020-04-25 05:15:00,63.83,109.10600000000001,32.75,30.618000000000002 +2020-04-25 05:30:00,66.59,100.096,32.75,30.618000000000002 +2020-04-25 05:45:00,66.17,95.70100000000001,32.75,30.618000000000002 +2020-04-25 06:00:00,69.06,114.625,34.461999999999996,30.618000000000002 +2020-04-25 06:15:00,71.02,132.321,34.461999999999996,30.618000000000002 +2020-04-25 06:30:00,71.93,124.402,34.461999999999996,30.618000000000002 +2020-04-25 06:45:00,73.64,118.735,34.461999999999996,30.618000000000002 +2020-04-25 07:00:00,76.52,117.56200000000001,37.736,30.618000000000002 +2020-04-25 07:15:00,76.86,117.56,37.736,30.618000000000002 +2020-04-25 07:30:00,77.45,116.432,37.736,30.618000000000002 +2020-04-25 07:45:00,75.16,115.383,37.736,30.618000000000002 +2020-04-25 08:00:00,75.87,115.021,42.34,30.618000000000002 +2020-04-25 08:15:00,75.01,115.853,42.34,30.618000000000002 +2020-04-25 08:30:00,76.19,112.833,42.34,30.618000000000002 +2020-04-25 08:45:00,75.0,112.568,42.34,30.618000000000002 +2020-04-25 09:00:00,77.22,107.902,43.571999999999996,30.618000000000002 +2020-04-25 09:15:00,74.1,107.99700000000001,43.571999999999996,30.618000000000002 +2020-04-25 09:30:00,74.58,110.29799999999999,43.571999999999996,30.618000000000002 +2020-04-25 09:45:00,72.53,110.01700000000001,43.571999999999996,30.618000000000002 +2020-04-25 10:00:00,70.38,105.26,40.514,30.618000000000002 +2020-04-25 10:15:00,71.83,106.17,40.514,30.618000000000002 +2020-04-25 10:30:00,72.86,105.02600000000001,40.514,30.618000000000002 +2020-04-25 10:45:00,76.31,105.464,40.514,30.618000000000002 +2020-04-25 11:00:00,75.64,100.208,36.388000000000005,30.618000000000002 +2020-04-25 11:15:00,72.22,100.119,36.388000000000005,30.618000000000002 +2020-04-25 11:30:00,70.44,101.631,36.388000000000005,30.618000000000002 +2020-04-25 11:45:00,66.44,101.69,36.388000000000005,30.618000000000002 +2020-04-25 12:00:00,62.4,97.416,35.217,30.618000000000002 +2020-04-25 12:15:00,63.37,97.552,35.217,30.618000000000002 +2020-04-25 12:30:00,62.6,96.59299999999999,35.217,30.618000000000002 +2020-04-25 12:45:00,62.97,97.165,35.217,30.618000000000002 +2020-04-25 13:00:00,66.68,98.23899999999999,32.001999999999995,30.618000000000002 +2020-04-25 13:15:00,66.46,96.544,32.001999999999995,30.618000000000002 +2020-04-25 13:30:00,68.38,94.76,32.001999999999995,30.618000000000002 +2020-04-25 13:45:00,63.86,92.984,32.001999999999995,30.618000000000002 +2020-04-25 14:00:00,65.79,94.14200000000001,31.304000000000002,30.618000000000002 +2020-04-25 14:15:00,65.45,92.59,31.304000000000002,30.618000000000002 +2020-04-25 14:30:00,67.98,91.934,31.304000000000002,30.618000000000002 +2020-04-25 14:45:00,70.14,92.603,31.304000000000002,30.618000000000002 +2020-04-25 15:00:00,73.95,94.147,34.731,30.618000000000002 +2020-04-25 15:15:00,68.45,92.935,34.731,30.618000000000002 +2020-04-25 15:30:00,69.17,91.913,34.731,30.618000000000002 +2020-04-25 15:45:00,71.96,91.391,34.731,30.618000000000002 +2020-04-25 16:00:00,74.03,91.31200000000001,38.769,30.618000000000002 +2020-04-25 16:15:00,73.54,91.38,38.769,30.618000000000002 +2020-04-25 16:30:00,77.94,91.461,38.769,30.618000000000002 +2020-04-25 16:45:00,77.97,88.696,38.769,30.618000000000002 +2020-04-25 17:00:00,79.95,88.99700000000001,44.928000000000004,30.618000000000002 +2020-04-25 17:15:00,79.81,90.412,44.928000000000004,30.618000000000002 +2020-04-25 17:30:00,81.88,91.541,44.928000000000004,30.618000000000002 +2020-04-25 17:45:00,79.84,92.62799999999999,44.928000000000004,30.618000000000002 +2020-04-25 18:00:00,81.95,94.76899999999999,47.786,30.618000000000002 +2020-04-25 18:15:00,80.8,97.704,47.786,30.618000000000002 +2020-04-25 18:30:00,80.62,98.166,47.786,30.618000000000002 +2020-04-25 18:45:00,81.58,100.06200000000001,47.786,30.618000000000002 +2020-04-25 19:00:00,82.25,98.82600000000001,47.463,30.618000000000002 +2020-04-25 19:15:00,81.6,98.26799999999999,47.463,30.618000000000002 +2020-04-25 19:30:00,78.79,99.083,47.463,30.618000000000002 +2020-04-25 19:45:00,81.11,99.837,47.463,30.618000000000002 +2020-04-25 20:00:00,79.47,99.35600000000001,43.735,30.618000000000002 +2020-04-25 20:15:00,80.74,98.01899999999999,43.735,30.618000000000002 +2020-04-25 20:30:00,77.33,96.155,43.735,30.618000000000002 +2020-04-25 20:45:00,77.88,96.339,43.735,30.618000000000002 +2020-04-25 21:00:00,76.72,93.439,40.346,30.618000000000002 +2020-04-25 21:15:00,73.54,94.40100000000001,40.346,30.618000000000002 +2020-04-25 21:30:00,70.17,95.348,40.346,30.618000000000002 +2020-04-25 21:45:00,69.94,94.93,40.346,30.618000000000002 +2020-04-25 22:00:00,66.61,91.697,39.323,30.618000000000002 +2020-04-25 22:15:00,65.99,91.294,39.323,30.618000000000002 +2020-04-25 22:30:00,63.67,89.425,39.323,30.618000000000002 +2020-04-25 22:45:00,62.7,87.34100000000001,39.323,30.618000000000002 +2020-04-25 23:00:00,58.03,80.985,33.716,30.618000000000002 +2020-04-25 23:15:00,58.89,77.345,33.716,30.618000000000002 +2020-04-25 23:30:00,57.34,75.185,33.716,30.618000000000002 +2020-04-25 23:45:00,57.63,74.384,33.716,30.618000000000002 +2020-04-26 00:00:00,53.94,60.93899999999999,28.703000000000003,30.618000000000002 +2020-04-26 00:15:00,54.77,58.223,28.703000000000003,30.618000000000002 +2020-04-26 00:30:00,54.11,56.742,28.703000000000003,30.618000000000002 +2020-04-26 00:45:00,54.48,55.713,28.703000000000003,30.618000000000002 +2020-04-26 01:00:00,53.07,56.185,26.171,30.618000000000002 +2020-04-26 01:15:00,53.77,55.653,26.171,30.618000000000002 +2020-04-26 01:30:00,53.29,53.88399999999999,26.171,30.618000000000002 +2020-04-26 01:45:00,53.5,53.567,26.171,30.618000000000002 +2020-04-26 02:00:00,52.56,54.358999999999995,25.326999999999998,30.618000000000002 +2020-04-26 02:15:00,53.08,52.657,25.326999999999998,30.618000000000002 +2020-04-26 02:30:00,53.0,55.581,25.326999999999998,30.618000000000002 +2020-04-26 02:45:00,53.59,56.367,25.326999999999998,30.618000000000002 +2020-04-26 03:00:00,53.57,59.565,24.311999999999998,30.618000000000002 +2020-04-26 03:15:00,54.44,59.016000000000005,24.311999999999998,30.618000000000002 +2020-04-26 03:30:00,54.58,57.88,24.311999999999998,30.618000000000002 +2020-04-26 03:45:00,54.59,59.626999999999995,24.311999999999998,30.618000000000002 +2020-04-26 04:00:00,55.25,67.928,25.33,30.618000000000002 +2020-04-26 04:15:00,56.11,76.015,25.33,30.618000000000002 +2020-04-26 04:30:00,54.4,75.235,25.33,30.618000000000002 +2020-04-26 04:45:00,54.42,75.722,25.33,30.618000000000002 +2020-04-26 05:00:00,53.23,92.29700000000001,25.309,30.618000000000002 +2020-04-26 05:15:00,54.13,105.882,25.309,30.618000000000002 +2020-04-26 05:30:00,53.73,96.536,25.309,30.618000000000002 +2020-04-26 05:45:00,55.13,92.115,25.309,30.618000000000002 +2020-04-26 06:00:00,56.83,109.336,25.945999999999998,30.618000000000002 +2020-04-26 06:15:00,59.16,126.744,25.945999999999998,30.618000000000002 +2020-04-26 06:30:00,59.67,117.788,25.945999999999998,30.618000000000002 +2020-04-26 06:45:00,60.03,110.90899999999999,25.945999999999998,30.618000000000002 +2020-04-26 07:00:00,62.06,111.11,27.87,30.618000000000002 +2020-04-26 07:15:00,63.4,109.559,27.87,30.618000000000002 +2020-04-26 07:30:00,62.84,108.62899999999999,27.87,30.618000000000002 +2020-04-26 07:45:00,61.39,107.17399999999999,27.87,30.618000000000002 +2020-04-26 08:00:00,61.91,108.194,32.114000000000004,30.618000000000002 +2020-04-26 08:15:00,60.92,109.787,32.114000000000004,30.618000000000002 +2020-04-26 08:30:00,59.14,108.181,32.114000000000004,30.618000000000002 +2020-04-26 08:45:00,58.58,108.95200000000001,32.114000000000004,30.618000000000002 +2020-04-26 09:00:00,57.18,103.98299999999999,34.222,30.618000000000002 +2020-04-26 09:15:00,58.03,104.06200000000001,34.222,30.618000000000002 +2020-04-26 09:30:00,58.37,106.571,34.222,30.618000000000002 +2020-04-26 09:45:00,60.08,106.904,34.222,30.618000000000002 +2020-04-26 10:00:00,59.48,103.84200000000001,34.544000000000004,30.618000000000002 +2020-04-26 10:15:00,60.83,105.178,34.544000000000004,30.618000000000002 +2020-04-26 10:30:00,61.23,104.53,34.544000000000004,30.618000000000002 +2020-04-26 10:45:00,61.1,104.56299999999999,34.544000000000004,30.618000000000002 +2020-04-26 11:00:00,62.69,99.581,36.368,30.618000000000002 +2020-04-26 11:15:00,58.41,99.315,36.368,30.618000000000002 +2020-04-26 11:30:00,56.55,100.654,36.368,30.618000000000002 +2020-04-26 11:45:00,57.98,101.229,36.368,30.618000000000002 +2020-04-26 12:00:00,52.84,97.259,32.433,30.618000000000002 +2020-04-26 12:15:00,51.83,98.132,32.433,30.618000000000002 +2020-04-26 12:30:00,49.53,96.414,32.433,30.618000000000002 +2020-04-26 12:45:00,50.89,96.04799999999999,32.433,30.618000000000002 +2020-04-26 13:00:00,45.96,96.559,28.971999999999998,30.618000000000002 +2020-04-26 13:15:00,46.59,96.266,28.971999999999998,30.618000000000002 +2020-04-26 13:30:00,46.54,93.7,28.971999999999998,30.618000000000002 +2020-04-26 13:45:00,49.1,92.21,28.971999999999998,30.618000000000002 +2020-04-26 14:00:00,49.36,94.28200000000001,25.531999999999996,30.618000000000002 +2020-04-26 14:15:00,47.82,93.669,25.531999999999996,30.618000000000002 +2020-04-26 14:30:00,46.91,92.95,25.531999999999996,30.618000000000002 +2020-04-26 14:45:00,50.24,92.745,25.531999999999996,30.618000000000002 +2020-04-26 15:00:00,48.5,93.521,25.766,30.618000000000002 +2020-04-26 15:15:00,49.38,92.24700000000001,25.766,30.618000000000002 +2020-04-26 15:30:00,52.0,91.41799999999999,25.766,30.618000000000002 +2020-04-26 15:45:00,56.72,91.45100000000001,25.766,30.618000000000002 +2020-04-26 16:00:00,58.03,91.37200000000001,29.232,30.618000000000002 +2020-04-26 16:15:00,58.12,91.04899999999999,29.232,30.618000000000002 +2020-04-26 16:30:00,61.98,91.90100000000001,29.232,30.618000000000002 +2020-04-26 16:45:00,66.32,89.185,29.232,30.618000000000002 +2020-04-26 17:00:00,69.92,89.704,37.431,30.618000000000002 +2020-04-26 17:15:00,72.25,91.865,37.431,30.618000000000002 +2020-04-26 17:30:00,71.68,93.652,37.431,30.618000000000002 +2020-04-26 17:45:00,72.65,96.22200000000001,37.431,30.618000000000002 +2020-04-26 18:00:00,74.1,98.405,41.251999999999995,30.618000000000002 +2020-04-26 18:15:00,73.58,101.804,41.251999999999995,30.618000000000002 +2020-04-26 18:30:00,79.83,100.978,41.251999999999995,30.618000000000002 +2020-04-26 18:45:00,81.73,103.944,41.251999999999995,30.618000000000002 +2020-04-26 19:00:00,82.6,103.89399999999999,41.784,30.618000000000002 +2020-04-26 19:15:00,74.77,102.92299999999999,41.784,30.618000000000002 +2020-04-26 19:30:00,78.18,103.49700000000001,41.784,30.618000000000002 +2020-04-26 19:45:00,82.92,104.728,41.784,30.618000000000002 +2020-04-26 20:00:00,80.12,104.32799999999999,40.804,30.618000000000002 +2020-04-26 20:15:00,79.67,103.42299999999999,40.804,30.618000000000002 +2020-04-26 20:30:00,83.74,102.774,40.804,30.618000000000002 +2020-04-26 20:45:00,87.56,101.26,40.804,30.618000000000002 +2020-04-26 21:00:00,86.73,96.89200000000001,38.379,30.618000000000002 +2020-04-26 21:15:00,77.37,97.345,38.379,30.618000000000002 +2020-04-26 21:30:00,78.96,98.001,38.379,30.618000000000002 +2020-04-26 21:45:00,72.49,97.919,38.379,30.618000000000002 +2020-04-26 22:00:00,71.02,95.426,37.87,30.618000000000002 +2020-04-26 22:15:00,74.6,93.542,37.87,30.618000000000002 +2020-04-26 22:30:00,74.46,89.67299999999999,37.87,30.618000000000002 +2020-04-26 22:45:00,77.49,86.29799999999999,37.87,30.618000000000002 +2020-04-26 23:00:00,67.34,78.266,33.332,30.618000000000002 +2020-04-26 23:15:00,67.41,76.46300000000001,33.332,30.618000000000002 +2020-04-26 23:30:00,65.25,74.368,33.332,30.618000000000002 +2020-04-26 23:45:00,71.84,74.14,33.332,30.618000000000002 +2020-04-27 00:00:00,65.34,63.676,34.698,30.736 +2020-04-27 00:15:00,68.11,62.993,34.698,30.736 +2020-04-27 00:30:00,62.17,61.31,34.698,30.736 +2020-04-27 00:45:00,65.5,59.75,34.698,30.736 +2020-04-27 01:00:00,67.94,60.476000000000006,32.889,30.736 +2020-04-27 01:15:00,68.09,59.667,32.889,30.736 +2020-04-27 01:30:00,64.87,58.151,32.889,30.736 +2020-04-27 01:45:00,62.39,57.826,32.889,30.736 +2020-04-27 02:00:00,60.51,58.898999999999994,32.06,30.736 +2020-04-27 02:15:00,61.52,57.211000000000006,32.06,30.736 +2020-04-27 02:30:00,63.11,60.428999999999995,32.06,30.736 +2020-04-27 02:45:00,65.0,60.816,32.06,30.736 +2020-04-27 03:00:00,70.94,64.986,30.515,30.736 +2020-04-27 03:15:00,71.15,65.718,30.515,30.736 +2020-04-27 03:30:00,66.39,64.915,30.515,30.736 +2020-04-27 03:45:00,68.04,66.095,30.515,30.736 +2020-04-27 04:00:00,69.68,78.61399999999999,31.436,30.736 +2020-04-27 04:15:00,70.3,90.708,31.436,30.736 +2020-04-27 04:30:00,70.44,90.67,31.436,30.736 +2020-04-27 04:45:00,74.91,91.48200000000001,31.436,30.736 +2020-04-27 05:00:00,81.04,120.303,38.997,30.736 +2020-04-27 05:15:00,85.59,150.614,38.997,30.736 +2020-04-27 05:30:00,88.32,140.344,38.997,30.736 +2020-04-27 05:45:00,87.62,131.126,38.997,30.736 +2020-04-27 06:00:00,93.16,132.86700000000002,54.97,30.736 +2020-04-27 06:15:00,90.44,136.747,54.97,30.736 +2020-04-27 06:30:00,94.92,134.424,54.97,30.736 +2020-04-27 06:45:00,93.91,135.476,54.97,30.736 +2020-04-27 07:00:00,97.72,137.559,66.032,30.736 +2020-04-27 07:15:00,94.82,138.159,66.032,30.736 +2020-04-27 07:30:00,94.52,136.225,66.032,30.736 +2020-04-27 07:45:00,94.9,133.67700000000002,66.032,30.736 +2020-04-27 08:00:00,92.49,131.08700000000002,59.941,30.736 +2020-04-27 08:15:00,91.85,130.80700000000002,59.941,30.736 +2020-04-27 08:30:00,93.31,126.40799999999999,59.941,30.736 +2020-04-27 08:45:00,92.94,125.59700000000001,59.941,30.736 +2020-04-27 09:00:00,92.84,119.57600000000001,54.016000000000005,30.736 +2020-04-27 09:15:00,91.53,116.648,54.016000000000005,30.736 +2020-04-27 09:30:00,89.3,118.041,54.016000000000005,30.736 +2020-04-27 09:45:00,89.57,117.095,54.016000000000005,30.736 +2020-04-27 10:00:00,89.14,113.96600000000001,50.63,30.736 +2020-04-27 10:15:00,98.83,115.074,50.63,30.736 +2020-04-27 10:30:00,93.52,113.675,50.63,30.736 +2020-04-27 10:45:00,89.12,113.164,50.63,30.736 +2020-04-27 11:00:00,89.55,106.956,49.951,30.736 +2020-04-27 11:15:00,91.6,107.90700000000001,49.951,30.736 +2020-04-27 11:30:00,86.24,110.45299999999999,49.951,30.736 +2020-04-27 11:45:00,87.15,111.12,49.951,30.736 +2020-04-27 12:00:00,88.45,107.34700000000001,46.913000000000004,30.736 +2020-04-27 12:15:00,99.89,108.29299999999999,46.913000000000004,30.736 +2020-04-27 12:30:00,92.92,106.042,46.913000000000004,30.736 +2020-04-27 12:45:00,89.09,106.566,46.913000000000004,30.736 +2020-04-27 13:00:00,96.03,108.00299999999999,47.093999999999994,30.736 +2020-04-27 13:15:00,84.25,106.37299999999999,47.093999999999994,30.736 +2020-04-27 13:30:00,77.31,103.604,47.093999999999994,30.736 +2020-04-27 13:45:00,88.26,102.666,47.093999999999994,30.736 +2020-04-27 14:00:00,85.89,103.928,46.678000000000004,30.736 +2020-04-27 14:15:00,80.66,103.271,46.678000000000004,30.736 +2020-04-27 14:30:00,80.46,102.094,46.678000000000004,30.736 +2020-04-27 14:45:00,81.74,103.096,46.678000000000004,30.736 +2020-04-27 15:00:00,82.97,104.74700000000001,47.715,30.736 +2020-04-27 15:15:00,81.62,102.262,47.715,30.736 +2020-04-27 15:30:00,82.55,101.359,47.715,30.736 +2020-04-27 15:45:00,85.7,100.82799999999999,47.715,30.736 +2020-04-27 16:00:00,85.53,101.301,49.81100000000001,30.736 +2020-04-27 16:15:00,85.86,100.56299999999999,49.81100000000001,30.736 +2020-04-27 16:30:00,88.12,100.47,49.81100000000001,30.736 +2020-04-27 16:45:00,89.52,97.03399999999999,49.81100000000001,30.736 +2020-04-27 17:00:00,93.73,96.706,55.591,30.736 +2020-04-27 17:15:00,92.69,98.552,55.591,30.736 +2020-04-27 17:30:00,95.38,99.787,55.591,30.736 +2020-04-27 17:45:00,94.15,101.258,55.591,30.736 +2020-04-27 18:00:00,95.38,102.904,56.523,30.736 +2020-04-27 18:15:00,92.93,103.962,56.523,30.736 +2020-04-27 18:30:00,92.0,102.98899999999999,56.523,30.736 +2020-04-27 18:45:00,90.2,108.369,56.523,30.736 +2020-04-27 19:00:00,90.92,107.20299999999999,56.044,30.736 +2020-04-27 19:15:00,86.2,106.48899999999999,56.044,30.736 +2020-04-27 19:30:00,85.27,107.094,56.044,30.736 +2020-04-27 19:45:00,86.87,107.507,56.044,30.736 +2020-04-27 20:00:00,84.36,105.01899999999999,61.715,30.736 +2020-04-27 20:15:00,83.51,103.73299999999999,61.715,30.736 +2020-04-27 20:30:00,80.49,102.479,61.715,30.736 +2020-04-27 20:45:00,78.45,101.991,61.715,30.736 +2020-04-27 21:00:00,72.63,97.50399999999999,56.24,30.736 +2020-04-27 21:15:00,73.27,97.652,56.24,30.736 +2020-04-27 21:30:00,68.74,98.13600000000001,56.24,30.736 +2020-04-27 21:45:00,67.7,97.67399999999999,56.24,30.736 +2020-04-27 22:00:00,63.52,92.344,50.437,30.736 +2020-04-27 22:15:00,63.05,91.10600000000001,50.437,30.736 +2020-04-27 22:30:00,60.88,79.39,50.437,30.736 +2020-04-27 22:45:00,60.19,73.476,50.437,30.736 +2020-04-27 23:00:00,81.41,65.845,42.756,30.736 +2020-04-27 23:15:00,80.65,64.377,42.756,30.736 +2020-04-27 23:30:00,78.41,63.692,42.756,30.736 +2020-04-27 23:45:00,78.52,64.492,42.756,30.736 +2020-04-28 00:00:00,77.46,61.4,39.857,30.736 +2020-04-28 00:15:00,76.93,62.035,39.857,30.736 +2020-04-28 00:30:00,76.12,60.358000000000004,39.857,30.736 +2020-04-28 00:45:00,76.92,58.856,39.857,30.736 +2020-04-28 01:00:00,78.02,59.108999999999995,37.233000000000004,30.736 +2020-04-28 01:15:00,78.26,58.13,37.233000000000004,30.736 +2020-04-28 01:30:00,75.49,56.593,37.233000000000004,30.736 +2020-04-28 01:45:00,75.85,56.073,37.233000000000004,30.736 +2020-04-28 02:00:00,78.67,56.803000000000004,35.856,30.736 +2020-04-28 02:15:00,78.88,55.836999999999996,35.856,30.736 +2020-04-28 02:30:00,73.42,58.508,35.856,30.736 +2020-04-28 02:45:00,73.56,59.13,35.856,30.736 +2020-04-28 03:00:00,74.82,62.342,34.766999999999996,30.736 +2020-04-28 03:15:00,76.05,63.271,34.766999999999996,30.736 +2020-04-28 03:30:00,79.51,62.683,34.766999999999996,30.736 +2020-04-28 03:45:00,83.12,63.217,34.766999999999996,30.736 +2020-04-28 04:00:00,84.91,74.73899999999999,35.468,30.736 +2020-04-28 04:15:00,84.94,86.62700000000001,35.468,30.736 +2020-04-28 04:30:00,87.14,86.353,35.468,30.736 +2020-04-28 04:45:00,88.32,88.088,35.468,30.736 +2020-04-28 05:00:00,95.45,120.323,40.399,30.736 +2020-04-28 05:15:00,98.01,150.866,40.399,30.736 +2020-04-28 05:30:00,100.42,140.02200000000002,40.399,30.736 +2020-04-28 05:45:00,102.69,130.343,40.399,30.736 +2020-04-28 06:00:00,107.5,132.263,54.105,30.736 +2020-04-28 06:15:00,108.18,137.054,54.105,30.736 +2020-04-28 06:30:00,110.19,134.178,54.105,30.736 +2020-04-28 06:45:00,110.95,134.42600000000002,54.105,30.736 +2020-04-28 07:00:00,112.62,136.516,63.083,30.736 +2020-04-28 07:15:00,112.53,136.851,63.083,30.736 +2020-04-28 07:30:00,113.87,134.61700000000002,63.083,30.736 +2020-04-28 07:45:00,112.32,131.526,63.083,30.736 +2020-04-28 08:00:00,110.21,128.942,57.254,30.736 +2020-04-28 08:15:00,108.73,127.866,57.254,30.736 +2020-04-28 08:30:00,109.99,123.456,57.254,30.736 +2020-04-28 08:45:00,111.24,121.929,57.254,30.736 +2020-04-28 09:00:00,110.59,115.686,51.395,30.736 +2020-04-28 09:15:00,110.8,113.535,51.395,30.736 +2020-04-28 09:30:00,110.96,115.749,51.395,30.736 +2020-04-28 09:45:00,110.3,115.579,51.395,30.736 +2020-04-28 10:00:00,108.23,111.265,48.201,30.736 +2020-04-28 10:15:00,110.0,111.735,48.201,30.736 +2020-04-28 10:30:00,108.55,110.477,48.201,30.736 +2020-04-28 10:45:00,108.8,110.765,48.201,30.736 +2020-04-28 11:00:00,106.28,105.389,46.133,30.736 +2020-04-28 11:15:00,105.09,106.42,46.133,30.736 +2020-04-28 11:30:00,103.75,107.59899999999999,46.133,30.736 +2020-04-28 11:45:00,106.98,108.41,46.133,30.736 +2020-04-28 12:00:00,106.37,103.759,44.243,30.736 +2020-04-28 12:15:00,109.77,104.667,44.243,30.736 +2020-04-28 12:30:00,108.48,103.306,44.243,30.736 +2020-04-28 12:45:00,108.19,104.073,44.243,30.736 +2020-04-28 13:00:00,104.13,105.09,45.042,30.736 +2020-04-28 13:15:00,103.69,104.32,45.042,30.736 +2020-04-28 13:30:00,104.39,102.223,45.042,30.736 +2020-04-28 13:45:00,106.18,100.82600000000001,45.042,30.736 +2020-04-28 14:00:00,111.13,102.575,44.062,30.736 +2020-04-28 14:15:00,109.93,101.874,44.062,30.736 +2020-04-28 14:30:00,107.35,101.215,44.062,30.736 +2020-04-28 14:45:00,104.4,101.706,44.062,30.736 +2020-04-28 15:00:00,109.65,103.045,46.461999999999996,30.736 +2020-04-28 15:15:00,109.95,101.281,46.461999999999996,30.736 +2020-04-28 15:30:00,109.44,100.34299999999999,46.461999999999996,30.736 +2020-04-28 15:45:00,108.73,99.764,46.461999999999996,30.736 +2020-04-28 16:00:00,108.15,100.094,48.802,30.736 +2020-04-28 16:15:00,109.08,99.656,48.802,30.736 +2020-04-28 16:30:00,111.59,99.704,48.802,30.736 +2020-04-28 16:45:00,112.11,96.806,48.802,30.736 +2020-04-28 17:00:00,114.23,96.969,55.672,30.736 +2020-04-28 17:15:00,114.12,99.066,55.672,30.736 +2020-04-28 17:30:00,116.32,100.38799999999999,55.672,30.736 +2020-04-28 17:45:00,115.06,101.552,55.672,30.736 +2020-04-28 18:00:00,116.52,102.531,57.006,30.736 +2020-04-28 18:15:00,116.37,104.29299999999999,57.006,30.736 +2020-04-28 18:30:00,116.22,102.975,57.006,30.736 +2020-04-28 18:45:00,113.05,108.661,57.006,30.736 +2020-04-28 19:00:00,109.57,106.756,57.148,30.736 +2020-04-28 19:15:00,107.41,106.01799999999999,57.148,30.736 +2020-04-28 19:30:00,111.56,106.139,57.148,30.736 +2020-04-28 19:45:00,110.69,106.81299999999999,57.148,30.736 +2020-04-28 20:00:00,106.84,104.641,61.895,30.736 +2020-04-28 20:15:00,104.83,102.081,61.895,30.736 +2020-04-28 20:30:00,102.09,101.42,61.895,30.736 +2020-04-28 20:45:00,105.29,100.936,61.895,30.736 +2020-04-28 21:00:00,99.4,96.655,54.78,30.736 +2020-04-28 21:15:00,99.25,96.321,54.78,30.736 +2020-04-28 21:30:00,93.24,96.527,54.78,30.736 +2020-04-28 21:45:00,89.26,96.34100000000001,54.78,30.736 +2020-04-28 22:00:00,87.28,92.029,50.76,30.736 +2020-04-28 22:15:00,89.13,90.45700000000001,50.76,30.736 +2020-04-28 22:30:00,86.27,78.956,50.76,30.736 +2020-04-28 22:45:00,83.49,73.17399999999999,50.76,30.736 +2020-04-28 23:00:00,71.4,65.023,44.162,30.736 +2020-04-28 23:15:00,70.29,64.152,44.162,30.736 +2020-04-28 23:30:00,75.32,63.277,44.162,30.736 +2020-04-28 23:45:00,78.15,63.973,44.162,30.736 +2020-04-29 00:00:00,73.93,61.016999999999996,39.061,30.736 +2020-04-29 00:15:00,68.61,61.667,39.061,30.736 +2020-04-29 00:30:00,69.83,59.983999999999995,39.061,30.736 +2020-04-29 00:45:00,74.41,58.489,39.061,30.736 +2020-04-29 01:00:00,73.44,58.735,35.795,30.736 +2020-04-29 01:15:00,71.44,57.733000000000004,35.795,30.736 +2020-04-29 01:30:00,73.21,56.176,35.795,30.736 +2020-04-29 01:45:00,74.77,55.658,35.795,30.736 +2020-04-29 02:00:00,72.45,56.379,33.316,30.736 +2020-04-29 02:15:00,65.54,55.397,33.316,30.736 +2020-04-29 02:30:00,66.56,58.082,33.316,30.736 +2020-04-29 02:45:00,70.87,58.713,33.316,30.736 +2020-04-29 03:00:00,70.07,61.93899999999999,32.803000000000004,30.736 +2020-04-29 03:15:00,76.58,62.843,32.803000000000004,30.736 +2020-04-29 03:30:00,78.46,62.253,32.803000000000004,30.736 +2020-04-29 03:45:00,77.53,62.809,32.803000000000004,30.736 +2020-04-29 04:00:00,79.53,74.297,34.235,30.736 +2020-04-29 04:15:00,80.34,86.14399999999999,34.235,30.736 +2020-04-29 04:30:00,82.42,85.869,34.235,30.736 +2020-04-29 04:45:00,86.48,87.594,34.235,30.736 +2020-04-29 05:00:00,93.77,119.73,38.65,30.736 +2020-04-29 05:15:00,97.73,150.167,38.65,30.736 +2020-04-29 05:30:00,101.06,139.352,38.65,30.736 +2020-04-29 05:45:00,102.22,129.722,38.65,30.736 +2020-04-29 06:00:00,110.99,131.662,54.951,30.736 +2020-04-29 06:15:00,110.65,136.43200000000002,54.951,30.736 +2020-04-29 06:30:00,113.7,133.542,54.951,30.736 +2020-04-29 06:45:00,116.43,133.786,54.951,30.736 +2020-04-29 07:00:00,121.5,135.873,67.328,30.736 +2020-04-29 07:15:00,121.34,136.19899999999998,67.328,30.736 +2020-04-29 07:30:00,121.78,133.929,67.328,30.736 +2020-04-29 07:45:00,122.25,130.845,67.328,30.736 +2020-04-29 08:00:00,122.93,128.249,60.23,30.736 +2020-04-29 08:15:00,125.82,127.21,60.23,30.736 +2020-04-29 08:30:00,127.65,122.774,60.23,30.736 +2020-04-29 08:45:00,128.25,121.274,60.23,30.736 +2020-04-29 09:00:00,129.04,115.035,56.845,30.736 +2020-04-29 09:15:00,129.51,112.889,56.845,30.736 +2020-04-29 09:30:00,126.37,115.118,56.845,30.736 +2020-04-29 09:45:00,124.86,114.979,56.845,30.736 +2020-04-29 10:00:00,121.63,110.675,53.832,30.736 +2020-04-29 10:15:00,121.03,111.19,53.832,30.736 +2020-04-29 10:30:00,122.36,109.954,53.832,30.736 +2020-04-29 10:45:00,116.08,110.26100000000001,53.832,30.736 +2020-04-29 11:00:00,109.95,104.87799999999999,53.225,30.736 +2020-04-29 11:15:00,114.24,105.931,53.225,30.736 +2020-04-29 11:30:00,109.62,107.11,53.225,30.736 +2020-04-29 11:45:00,101.59,107.93799999999999,53.225,30.736 +2020-04-29 12:00:00,99.09,103.316,50.676,30.736 +2020-04-29 12:15:00,97.93,104.23,50.676,30.736 +2020-04-29 12:30:00,97.46,102.82700000000001,50.676,30.736 +2020-04-29 12:45:00,105.95,103.596,50.676,30.736 +2020-04-29 13:00:00,105.96,104.65100000000001,50.646,30.736 +2020-04-29 13:15:00,108.82,103.876,50.646,30.736 +2020-04-29 13:30:00,106.36,101.78200000000001,50.646,30.736 +2020-04-29 13:45:00,107.35,100.38799999999999,50.646,30.736 +2020-04-29 14:00:00,108.22,102.194,50.786,30.736 +2020-04-29 14:15:00,105.88,101.476,50.786,30.736 +2020-04-29 14:30:00,100.87,100.773,50.786,30.736 +2020-04-29 14:45:00,97.81,101.265,50.786,30.736 +2020-04-29 15:00:00,99.63,102.64,51.535,30.736 +2020-04-29 15:15:00,95.3,100.855,51.535,30.736 +2020-04-29 15:30:00,104.15,99.876,51.535,30.736 +2020-04-29 15:45:00,108.0,99.28,51.535,30.736 +2020-04-29 16:00:00,107.58,99.65299999999999,53.157,30.736 +2020-04-29 16:15:00,105.42,99.19,53.157,30.736 +2020-04-29 16:30:00,106.46,99.243,53.157,30.736 +2020-04-29 16:45:00,108.12,96.28399999999999,53.157,30.736 +2020-04-29 17:00:00,109.38,96.49600000000001,57.793,30.736 +2020-04-29 17:15:00,106.94,98.56700000000001,57.793,30.736 +2020-04-29 17:30:00,107.97,99.882,57.793,30.736 +2020-04-29 17:45:00,107.1,101.01899999999999,57.793,30.736 +2020-04-29 18:00:00,108.18,102.01299999999999,59.872,30.736 +2020-04-29 18:15:00,106.95,103.79,59.872,30.736 +2020-04-29 18:30:00,114.64,102.459,59.872,30.736 +2020-04-29 18:45:00,114.76,108.149,59.872,30.736 +2020-04-29 19:00:00,112.55,106.23700000000001,60.17100000000001,30.736 +2020-04-29 19:15:00,104.09,105.50299999999999,60.17100000000001,30.736 +2020-04-29 19:30:00,105.95,105.635,60.17100000000001,30.736 +2020-04-29 19:45:00,108.76,106.331,60.17100000000001,30.736 +2020-04-29 20:00:00,102.11,104.131,65.015,30.736 +2020-04-29 20:15:00,102.79,101.57799999999999,65.015,30.736 +2020-04-29 20:30:00,101.29,100.95100000000001,65.015,30.736 +2020-04-29 20:45:00,104.92,100.49700000000001,65.015,30.736 +2020-04-29 21:00:00,99.96,96.219,57.805,30.736 +2020-04-29 21:15:00,99.95,95.9,57.805,30.736 +2020-04-29 21:30:00,91.66,96.09100000000001,57.805,30.736 +2020-04-29 21:45:00,92.16,95.932,57.805,30.736 +2020-04-29 22:00:00,89.14,91.635,52.115,30.736 +2020-04-29 22:15:00,89.74,90.085,52.115,30.736 +2020-04-29 22:30:00,84.06,78.56,52.115,30.736 +2020-04-29 22:45:00,79.26,72.768,52.115,30.736 +2020-04-29 23:00:00,72.0,64.59100000000001,42.871,30.736 +2020-04-29 23:15:00,77.84,63.75899999999999,42.871,30.736 +2020-04-29 23:30:00,81.54,62.883,42.871,30.736 +2020-04-29 23:45:00,81.39,63.585,42.871,30.736 +2020-04-30 00:00:00,75.37,60.636,39.203,30.736 +2020-04-30 00:15:00,69.88,61.299,39.203,30.736 +2020-04-30 00:30:00,76.11,59.611999999999995,39.203,30.736 +2020-04-30 00:45:00,78.46,58.123000000000005,39.203,30.736 +2020-04-30 01:00:00,76.07,58.363,37.118,30.736 +2020-04-30 01:15:00,74.99,57.338,37.118,30.736 +2020-04-30 01:30:00,69.98,55.761,37.118,30.736 +2020-04-30 01:45:00,72.88,55.246,37.118,30.736 +2020-04-30 02:00:00,77.43,55.956,35.647,30.736 +2020-04-30 02:15:00,77.87,54.958999999999996,35.647,30.736 +2020-04-30 02:30:00,70.93,57.66,35.647,30.736 +2020-04-30 02:45:00,72.1,58.297,35.647,30.736 +2020-04-30 03:00:00,71.36,61.538000000000004,34.585,30.736 +2020-04-30 03:15:00,72.29,62.419,34.585,30.736 +2020-04-30 03:30:00,75.56,61.825,34.585,30.736 +2020-04-30 03:45:00,75.33,62.405,34.585,30.736 +2020-04-30 04:00:00,79.58,73.857,36.184,30.736 +2020-04-30 04:15:00,81.32,85.664,36.184,30.736 +2020-04-30 04:30:00,83.16,85.387,36.184,30.736 +2020-04-30 04:45:00,86.22,87.103,36.184,30.736 +2020-04-30 05:00:00,94.0,119.139,41.019,30.736 +2020-04-30 05:15:00,94.93,149.472,41.019,30.736 +2020-04-30 05:30:00,98.47,138.685,41.019,30.736 +2020-04-30 05:45:00,103.17,129.10299999999998,41.019,30.736 +2020-04-30 06:00:00,110.4,131.064,53.963,30.736 +2020-04-30 06:15:00,111.54,135.813,53.963,30.736 +2020-04-30 06:30:00,114.87,132.909,53.963,30.736 +2020-04-30 06:45:00,116.61,133.149,53.963,30.736 +2020-04-30 07:00:00,121.28,135.233,66.512,30.736 +2020-04-30 07:15:00,121.03,135.549,66.512,30.736 +2020-04-30 07:30:00,122.18,133.245,66.512,30.736 +2020-04-30 07:45:00,121.34,130.166,66.512,30.736 +2020-04-30 08:00:00,120.47,127.561,58.86,30.736 +2020-04-30 08:15:00,121.39,126.557,58.86,30.736 +2020-04-30 08:30:00,122.76,122.095,58.86,30.736 +2020-04-30 08:45:00,121.08,120.624,58.86,30.736 +2020-04-30 09:00:00,121.88,114.389,52.156000000000006,30.736 +2020-04-30 09:15:00,123.85,112.24799999999999,52.156000000000006,30.736 +2020-04-30 09:30:00,124.67,114.49,52.156000000000006,30.736 +2020-04-30 09:45:00,124.74,114.385,52.156000000000006,30.736 +2020-04-30 10:00:00,125.1,110.089,49.034,30.736 +2020-04-30 10:15:00,125.31,110.649,49.034,30.736 +2020-04-30 10:30:00,126.21,109.434,49.034,30.736 +2020-04-30 10:45:00,124.71,109.76,49.034,30.736 +2020-04-30 11:00:00,121.6,104.37200000000001,46.53,30.736 +2020-04-30 11:15:00,123.88,105.447,46.53,30.736 +2020-04-30 11:30:00,120.2,106.624,46.53,30.736 +2020-04-30 11:45:00,119.8,107.46799999999999,46.53,30.736 +2020-04-30 12:00:00,110.03,102.876,43.318000000000005,30.736 +2020-04-30 12:15:00,106.44,103.795,43.318000000000005,30.736 +2020-04-30 12:30:00,100.78,102.351,43.318000000000005,30.736 +2020-04-30 12:45:00,99.22,103.12299999999999,43.318000000000005,30.736 +2020-04-30 13:00:00,106.85,104.212,41.608000000000004,30.736 +2020-04-30 13:15:00,112.1,103.434,41.608000000000004,30.736 +2020-04-30 13:30:00,101.38,101.345,41.608000000000004,30.736 +2020-04-30 13:45:00,100.96,99.954,41.608000000000004,30.736 +2020-04-30 14:00:00,101.38,101.816,41.786,30.736 +2020-04-30 14:15:00,104.57,101.083,41.786,30.736 +2020-04-30 14:30:00,102.6,100.335,41.786,30.736 +2020-04-30 14:45:00,105.7,100.82799999999999,41.786,30.736 +2020-04-30 15:00:00,101.95,102.238,44.181999999999995,30.736 +2020-04-30 15:15:00,104.28,100.432,44.181999999999995,30.736 +2020-04-30 15:30:00,101.87,99.412,44.181999999999995,30.736 +2020-04-30 15:45:00,103.04,98.79899999999999,44.181999999999995,30.736 +2020-04-30 16:00:00,109.28,99.213,45.956,30.736 +2020-04-30 16:15:00,109.2,98.727,45.956,30.736 +2020-04-30 16:30:00,110.26,98.787,45.956,30.736 +2020-04-30 16:45:00,111.89,95.76299999999999,45.956,30.736 +2020-04-30 17:00:00,113.27,96.027,50.702,30.736 +2020-04-30 17:15:00,113.08,98.072,50.702,30.736 +2020-04-30 17:30:00,112.36,99.37899999999999,50.702,30.736 +2020-04-30 17:45:00,111.24,100.491,50.702,30.736 +2020-04-30 18:00:00,111.37,101.49600000000001,53.595,30.736 +2020-04-30 18:15:00,110.86,103.29,53.595,30.736 +2020-04-30 18:30:00,118.75,101.945,53.595,30.736 +2020-04-30 18:45:00,118.09,107.64,53.595,30.736 +2020-04-30 19:00:00,113.08,105.721,54.207,30.736 +2020-04-30 19:15:00,103.48,104.993,54.207,30.736 +2020-04-30 19:30:00,104.39,105.134,54.207,30.736 +2020-04-30 19:45:00,104.48,105.85,54.207,30.736 +2020-04-30 20:00:00,102.44,103.625,56.948,30.736 +2020-04-30 20:15:00,99.4,101.079,56.948,30.736 +2020-04-30 20:30:00,98.53,100.484,56.948,30.736 +2020-04-30 20:45:00,100.91,100.059,56.948,30.736 +2020-04-30 21:00:00,92.46,95.787,52.157,30.736 +2020-04-30 21:15:00,95.11,95.48200000000001,52.157,30.736 +2020-04-30 21:30:00,94.9,95.65799999999999,52.157,30.736 +2020-04-30 21:45:00,93.18,95.525,52.157,30.736 +2020-04-30 22:00:00,90.2,91.242,47.483000000000004,30.736 +2020-04-30 22:15:00,83.38,89.715,47.483000000000004,30.736 +2020-04-30 22:30:00,79.85,78.164,47.483000000000004,30.736 +2020-04-30 22:45:00,83.09,72.363,47.483000000000004,30.736 +2020-04-30 23:00:00,58.59,64.16199999999999,41.978,30.736 +2020-04-30 23:15:00,56.65,63.367,41.978,30.736 +2020-04-30 23:30:00,56.38,62.49100000000001,41.978,30.736 +2020-04-30 23:45:00,55.11,63.199,41.978,30.736 +2020-05-01 00:00:00,50.49,50.163000000000004,18.527,29.662 +2020-05-01 00:15:00,53.64,47.663999999999994,18.527,29.662 +2020-05-01 00:30:00,52.6,46.467,18.527,29.662 +2020-05-01 00:45:00,52.95,45.35,18.527,29.662 +2020-05-01 01:00:00,48.0,45.506,16.348,29.662 +2020-05-01 01:15:00,51.98,45.135,16.348,29.662 +2020-05-01 01:30:00,48.94,43.453,16.348,29.662 +2020-05-01 01:45:00,52.32,43.106,16.348,29.662 +2020-05-01 02:00:00,51.36,43.566,12.581,29.662 +2020-05-01 02:15:00,51.11,41.968,12.581,29.662 +2020-05-01 02:30:00,48.05,44.556999999999995,12.581,29.662 +2020-05-01 02:45:00,47.72,45.224,12.581,29.662 +2020-05-01 03:00:00,48.95,48.13399999999999,10.712,29.662 +2020-05-01 03:15:00,50.28,46.619,10.712,29.662 +2020-05-01 03:30:00,50.66,45.36600000000001,10.712,29.662 +2020-05-01 03:45:00,51.81,46.526,10.712,29.662 +2020-05-01 04:00:00,53.03,54.876000000000005,9.084,29.662 +2020-05-01 04:15:00,54.27,62.676,9.084,29.662 +2020-05-01 04:30:00,51.73,61.516999999999996,9.084,29.662 +2020-05-01 04:45:00,51.01,61.666000000000004,9.084,29.662 +2020-05-01 05:00:00,49.69,76.642,9.388,29.662 +2020-05-01 05:15:00,52.41,87.50299999999999,9.388,29.662 +2020-05-01 05:30:00,52.41,77.738,9.388,29.662 +2020-05-01 05:45:00,50.98,74.282,9.388,29.662 +2020-05-01 06:00:00,55.06,89.3,11.109000000000002,29.662 +2020-05-01 06:15:00,53.68,104.529,11.109000000000002,29.662 +2020-05-01 06:30:00,58.38,96.056,11.109000000000002,29.662 +2020-05-01 06:45:00,60.23,89.587,11.109000000000002,29.662 +2020-05-01 07:00:00,61.8,89.125,13.77,29.662 +2020-05-01 07:15:00,63.86,86.988,13.77,29.662 +2020-05-01 07:30:00,65.25,85.859,13.77,29.662 +2020-05-01 07:45:00,66.17,84.554,13.77,29.662 +2020-05-01 08:00:00,67.11,83.42200000000001,12.868,29.662 +2020-05-01 08:15:00,66.63,85.50299999999999,12.868,29.662 +2020-05-01 08:30:00,67.33,84.87100000000001,12.868,29.662 +2020-05-01 08:45:00,66.74,86.586,12.868,29.662 +2020-05-01 09:00:00,67.45,81.148,12.804,29.662 +2020-05-01 09:15:00,68.21,81.42699999999999,12.804,29.662 +2020-05-01 09:30:00,67.2,84.065,12.804,29.662 +2020-05-01 09:45:00,68.2,84.78399999999999,12.804,29.662 +2020-05-01 10:00:00,69.04,81.47,11.029000000000002,29.662 +2020-05-01 10:15:00,69.41,82.72200000000001,11.029000000000002,29.662 +2020-05-01 10:30:00,70.12,82.583,11.029000000000002,29.662 +2020-05-01 10:45:00,66.61,82.947,11.029000000000002,29.662 +2020-05-01 11:00:00,57.19,79.26,11.681,29.662 +2020-05-01 11:15:00,57.35,79.181,11.681,29.662 +2020-05-01 11:30:00,54.68,80.666,11.681,29.662 +2020-05-01 11:45:00,54.35,80.57,11.681,29.662 +2020-05-01 12:00:00,52.36,78.047,8.915,29.662 +2020-05-01 12:15:00,56.13,78.738,8.915,29.662 +2020-05-01 12:30:00,51.09,77.492,8.915,29.662 +2020-05-01 12:45:00,50.81,77.333,8.915,29.662 +2020-05-01 13:00:00,49.83,78.273,5.4639999999999995,29.662 +2020-05-01 13:15:00,45.08,78.259,5.4639999999999995,29.662 +2020-05-01 13:30:00,46.19,75.832,5.4639999999999995,29.662 +2020-05-01 13:45:00,47.46,74.252,5.4639999999999995,29.662 +2020-05-01 14:00:00,49.01,76.367,3.2939999999999996,29.662 +2020-05-01 14:15:00,48.35,75.575,3.2939999999999996,29.662 +2020-05-01 14:30:00,45.56,75.003,3.2939999999999996,29.662 +2020-05-01 14:45:00,48.43,74.546,3.2939999999999996,29.662 +2020-05-01 15:00:00,49.06,75.21,4.689,29.662 +2020-05-01 15:15:00,49.67,73.595,4.689,29.662 +2020-05-01 15:30:00,51.56,72.592,4.689,29.662 +2020-05-01 15:45:00,53.04,71.998,4.689,29.662 +2020-05-01 16:00:00,55.11,72.08,7.732,29.662 +2020-05-01 16:15:00,59.46,71.52,7.732,29.662 +2020-05-01 16:30:00,62.16,72.118,7.732,29.662 +2020-05-01 16:45:00,62.3,69.263,7.732,29.662 +2020-05-01 17:00:00,67.83,70.095,17.558,29.662 +2020-05-01 17:15:00,72.29,71.555,17.558,29.662 +2020-05-01 17:30:00,72.68,72.794,17.558,29.662 +2020-05-01 17:45:00,73.94,74.653,17.558,29.662 +2020-05-01 18:00:00,75.38,75.821,24.763,29.662 +2020-05-01 18:15:00,74.58,78.516,24.763,29.662 +2020-05-01 18:30:00,75.18,77.906,24.763,29.662 +2020-05-01 18:45:00,75.67,80.471,24.763,29.662 +2020-05-01 19:00:00,79.11,79.535,29.633000000000003,29.662 +2020-05-01 19:15:00,84.51,78.283,29.633000000000003,29.662 +2020-05-01 19:30:00,85.92,78.82,29.633000000000003,29.662 +2020-05-01 19:45:00,82.48,79.994,29.633000000000003,29.662 +2020-05-01 20:00:00,83.91,80.059,38.826,29.662 +2020-05-01 20:15:00,81.16,79.312,38.826,29.662 +2020-05-01 20:30:00,79.77,77.578,38.826,29.662 +2020-05-01 20:45:00,88.48,76.283,38.826,29.662 +2020-05-01 21:00:00,88.98,74.173,37.751,29.662 +2020-05-01 21:15:00,88.97,75.696,37.751,29.662 +2020-05-01 21:30:00,78.96,76.152,37.751,29.662 +2020-05-01 21:45:00,81.17,76.479,37.751,29.662 +2020-05-01 22:00:00,73.75,76.163,39.799,29.662 +2020-05-01 22:15:00,80.27,74.783,39.799,29.662 +2020-05-01 22:30:00,81.01,72.372,39.799,29.662 +2020-05-01 22:45:00,80.12,70.10600000000001,39.799,29.662 +2020-05-01 23:00:00,80.75,64.072,33.686,29.662 +2020-05-01 23:15:00,77.21,61.755,33.686,29.662 +2020-05-01 23:30:00,72.86,60.244,33.686,29.662 +2020-05-01 23:45:00,74.22,59.806999999999995,33.686,29.662 +2020-05-02 00:00:00,67.4,48.595,42.833999999999996,29.662 +2020-05-02 00:15:00,71.63,47.126000000000005,42.833999999999996,29.662 +2020-05-02 00:30:00,75.66,46.176,42.833999999999996,29.662 +2020-05-02 00:45:00,76.11,44.898999999999994,42.833999999999996,29.662 +2020-05-02 01:00:00,72.31,44.903999999999996,37.859,29.662 +2020-05-02 01:15:00,70.22,44.23,37.859,29.662 +2020-05-02 01:30:00,73.08,42.45,37.859,29.662 +2020-05-02 01:45:00,73.7,42.513999999999996,37.859,29.662 +2020-05-02 02:00:00,66.85,43.174,35.327,29.662 +2020-05-02 02:15:00,66.49,41.31100000000001,35.327,29.662 +2020-05-02 02:30:00,68.26,43.461000000000006,35.327,29.662 +2020-05-02 02:45:00,66.14,44.196999999999996,35.327,29.662 +2020-05-02 03:00:00,65.71,46.493,34.908,29.662 +2020-05-02 03:15:00,66.15,44.941,34.908,29.662 +2020-05-02 03:30:00,67.61,43.762,34.908,29.662 +2020-05-02 03:45:00,68.7,45.599,34.908,29.662 +2020-05-02 04:00:00,69.79,54.015,34.84,29.662 +2020-05-02 04:15:00,67.03,62.473,34.84,29.662 +2020-05-02 04:30:00,66.17,60.231,34.84,29.662 +2020-05-02 04:45:00,67.69,60.641999999999996,34.84,29.662 +2020-05-02 05:00:00,69.51,76.563,34.222,29.662 +2020-05-02 05:15:00,70.18,88.72,34.222,29.662 +2020-05-02 05:30:00,69.35,79.377,34.222,29.662 +2020-05-02 05:45:00,71.72,76.12100000000001,34.222,29.662 +2020-05-02 06:00:00,73.67,93.12,35.515,29.662 +2020-05-02 06:15:00,73.73,108.242,35.515,29.662 +2020-05-02 06:30:00,75.39,100.70299999999999,35.515,29.662 +2020-05-02 06:45:00,76.42,95.399,35.515,29.662 +2020-05-02 07:00:00,79.28,93.88799999999999,39.687,29.662 +2020-05-02 07:15:00,77.96,93.337,39.687,29.662 +2020-05-02 07:30:00,78.31,91.61399999999999,39.687,29.662 +2020-05-02 07:45:00,79.86,90.62100000000001,39.687,29.662 +2020-05-02 08:00:00,80.34,88.26799999999999,44.9,29.662 +2020-05-02 08:15:00,78.9,89.515,44.9,29.662 +2020-05-02 08:30:00,78.61,87.58,44.9,29.662 +2020-05-02 08:45:00,79.87,88.637,44.9,29.662 +2020-05-02 09:00:00,76.21,83.447,45.724,29.662 +2020-05-02 09:15:00,75.76,83.902,45.724,29.662 +2020-05-02 09:30:00,75.2,86.28399999999999,45.724,29.662 +2020-05-02 09:45:00,75.61,86.314,45.724,29.662 +2020-05-02 10:00:00,75.42,81.66199999999999,43.123999999999995,29.662 +2020-05-02 10:15:00,76.95,82.645,43.123999999999995,29.662 +2020-05-02 10:30:00,77.79,82.12200000000001,43.123999999999995,29.662 +2020-05-02 10:45:00,76.44,82.48899999999999,43.123999999999995,29.662 +2020-05-02 11:00:00,72.26,78.703,40.255,29.662 +2020-05-02 11:15:00,71.56,78.921,40.255,29.662 +2020-05-02 11:30:00,69.64,80.362,40.255,29.662 +2020-05-02 11:45:00,69.91,79.851,40.255,29.662 +2020-05-02 12:00:00,65.59,76.855,38.582,29.662 +2020-05-02 12:15:00,66.22,77.22399999999999,38.582,29.662 +2020-05-02 12:30:00,64.72,76.383,38.582,29.662 +2020-05-02 12:45:00,64.95,77.09,38.582,29.662 +2020-05-02 13:00:00,62.78,78.554,36.043,29.662 +2020-05-02 13:15:00,62.25,77.737,36.043,29.662 +2020-05-02 13:30:00,62.59,76.217,36.043,29.662 +2020-05-02 13:45:00,62.56,74.087,36.043,29.662 +2020-05-02 14:00:00,61.85,75.279,35.216,29.662 +2020-05-02 14:15:00,62.08,73.669,35.216,29.662 +2020-05-02 14:30:00,62.24,73.452,35.216,29.662 +2020-05-02 14:45:00,62.4,73.947,35.216,29.662 +2020-05-02 15:00:00,62.97,75.17399999999999,36.759,29.662 +2020-05-02 15:15:00,63.02,73.821,36.759,29.662 +2020-05-02 15:30:00,63.12,72.676,36.759,29.662 +2020-05-02 15:45:00,64.76,71.574,36.759,29.662 +2020-05-02 16:00:00,68.0,72.26,40.086,29.662 +2020-05-02 16:15:00,68.86,71.86399999999999,40.086,29.662 +2020-05-02 16:30:00,71.22,71.62,40.086,29.662 +2020-05-02 16:45:00,74.4,68.60300000000001,40.086,29.662 +2020-05-02 17:00:00,79.85,69.22399999999999,44.876999999999995,29.662 +2020-05-02 17:15:00,79.81,69.649,44.876999999999995,29.662 +2020-05-02 17:30:00,80.79,70.16199999999999,44.876999999999995,29.662 +2020-05-02 17:45:00,81.12,70.793,44.876999999999995,29.662 +2020-05-02 18:00:00,83.13,71.803,47.056000000000004,29.662 +2020-05-02 18:15:00,81.4,74.316,47.056000000000004,29.662 +2020-05-02 18:30:00,81.48,74.656,47.056000000000004,29.662 +2020-05-02 18:45:00,82.35,76.45,47.056000000000004,29.662 +2020-05-02 19:00:00,81.48,74.001,45.57,29.662 +2020-05-02 19:15:00,79.11,73.41,45.57,29.662 +2020-05-02 19:30:00,78.9,74.202,45.57,29.662 +2020-05-02 19:45:00,79.86,75.236,45.57,29.662 +2020-05-02 20:00:00,81.06,75.092,41.685,29.662 +2020-05-02 20:15:00,80.73,74.097,41.685,29.662 +2020-05-02 20:30:00,80.18,71.314,41.685,29.662 +2020-05-02 20:45:00,80.23,71.797,41.685,29.662 +2020-05-02 21:00:00,75.92,70.756,39.576,29.662 +2020-05-02 21:15:00,76.58,72.755,39.576,29.662 +2020-05-02 21:30:00,73.98,73.593,39.576,29.662 +2020-05-02 21:45:00,73.06,73.62,39.576,29.662 +2020-05-02 22:00:00,69.29,72.173,39.068000000000005,29.662 +2020-05-02 22:15:00,69.76,72.399,39.068000000000005,29.662 +2020-05-02 22:30:00,67.03,71.508,39.068000000000005,29.662 +2020-05-02 22:45:00,66.09,70.529,39.068000000000005,29.662 +2020-05-02 23:00:00,64.59,65.696,32.06,29.662 +2020-05-02 23:15:00,62.92,61.768,32.06,29.662 +2020-05-02 23:30:00,62.13,60.387,32.06,29.662 +2020-05-02 23:45:00,61.12,59.508,32.06,29.662 +2020-05-03 00:00:00,56.25,49.497,28.825,29.662 +2020-05-03 00:15:00,59.42,47.018,28.825,29.662 +2020-05-03 00:30:00,55.48,45.813,28.825,29.662 +2020-05-03 00:45:00,57.9,44.705,28.825,29.662 +2020-05-03 01:00:00,55.98,44.872,25.995,29.662 +2020-05-03 01:15:00,56.5,44.451,25.995,29.662 +2020-05-03 01:30:00,53.94,42.732,25.995,29.662 +2020-05-03 01:45:00,55.87,42.38399999999999,25.995,29.662 +2020-05-03 02:00:00,55.81,42.83,24.394000000000002,29.662 +2020-05-03 02:15:00,56.25,41.198,24.394000000000002,29.662 +2020-05-03 02:30:00,55.72,43.818000000000005,24.394000000000002,29.662 +2020-05-03 02:45:00,55.33,44.498999999999995,24.394000000000002,29.662 +2020-05-03 03:00:00,51.94,47.433,22.916999999999998,29.662 +2020-05-03 03:15:00,55.79,45.878,22.916999999999998,29.662 +2020-05-03 03:30:00,56.34,44.623999999999995,22.916999999999998,29.662 +2020-05-03 03:45:00,56.91,45.833,22.916999999999998,29.662 +2020-05-03 04:00:00,57.32,54.089,23.576999999999998,29.662 +2020-05-03 04:15:00,55.6,61.795,23.576999999999998,29.662 +2020-05-03 04:30:00,55.41,60.622,23.576999999999998,29.662 +2020-05-03 04:45:00,55.04,60.756,23.576999999999998,29.662 +2020-05-03 05:00:00,56.02,75.493,22.730999999999998,29.662 +2020-05-03 05:15:00,56.44,86.085,22.730999999999998,29.662 +2020-05-03 05:30:00,56.1,76.407,22.730999999999998,29.662 +2020-05-03 05:45:00,56.79,73.071,22.730999999999998,29.662 +2020-05-03 06:00:00,57.69,88.141,22.34,29.662 +2020-05-03 06:15:00,57.57,103.32,22.34,29.662 +2020-05-03 06:30:00,58.58,94.846,22.34,29.662 +2020-05-03 06:45:00,59.95,88.39299999999999,22.34,29.662 +2020-05-03 07:00:00,61.08,87.919,24.691999999999997,29.662 +2020-05-03 07:15:00,61.55,85.772,24.691999999999997,29.662 +2020-05-03 07:30:00,61.04,84.58,24.691999999999997,29.662 +2020-05-03 07:45:00,61.04,83.305,24.691999999999997,29.662 +2020-05-03 08:00:00,61.08,82.164,29.340999999999998,29.662 +2020-05-03 08:15:00,62.23,84.333,29.340999999999998,29.662 +2020-05-03 08:30:00,61.79,83.662,29.340999999999998,29.662 +2020-05-03 08:45:00,60.97,85.425,29.340999999999998,29.662 +2020-05-03 09:00:00,59.6,79.984,30.788,29.662 +2020-05-03 09:15:00,59.67,80.277,30.788,29.662 +2020-05-03 09:30:00,59.03,82.943,30.788,29.662 +2020-05-03 09:45:00,59.85,83.73,30.788,29.662 +2020-05-03 10:00:00,60.2,80.434,30.158,29.662 +2020-05-03 10:15:00,61.9,81.768,30.158,29.662 +2020-05-03 10:30:00,63.99,81.663,30.158,29.662 +2020-05-03 10:45:00,64.7,82.06200000000001,30.158,29.662 +2020-05-03 11:00:00,62.24,78.36,32.056,29.662 +2020-05-03 11:15:00,59.36,78.319,32.056,29.662 +2020-05-03 11:30:00,54.19,79.796,32.056,29.662 +2020-05-03 11:45:00,55.34,79.73100000000001,32.056,29.662 +2020-05-03 12:00:00,52.93,77.274,28.671999999999997,29.662 +2020-05-03 12:15:00,52.8,77.979,28.671999999999997,29.662 +2020-05-03 12:30:00,49.69,76.653,28.671999999999997,29.662 +2020-05-03 12:45:00,47.47,76.506,28.671999999999997,29.662 +2020-05-03 13:00:00,45.23,77.5,23.171,29.662 +2020-05-03 13:15:00,43.21,77.488,23.171,29.662 +2020-05-03 13:30:00,45.06,75.075,23.171,29.662 +2020-05-03 13:45:00,46.0,73.49600000000001,23.171,29.662 +2020-05-03 14:00:00,46.8,75.712,19.11,29.662 +2020-05-03 14:15:00,46.46,74.891,19.11,29.662 +2020-05-03 14:30:00,45.78,74.235,19.11,29.662 +2020-05-03 14:45:00,46.36,73.783,19.11,29.662 +2020-05-03 15:00:00,48.14,74.539,19.689,29.662 +2020-05-03 15:15:00,48.74,72.88600000000001,19.689,29.662 +2020-05-03 15:30:00,49.3,71.814,19.689,29.662 +2020-05-03 15:45:00,51.69,71.186,19.689,29.662 +2020-05-03 16:00:00,55.94,71.361,22.875,29.662 +2020-05-03 16:15:00,57.49,70.76100000000001,22.875,29.662 +2020-05-03 16:30:00,59.74,71.37899999999999,22.875,29.662 +2020-05-03 16:45:00,64.35,68.4,22.875,29.662 +2020-05-03 17:00:00,68.62,69.329,33.884,29.662 +2020-05-03 17:15:00,69.55,70.735,33.884,29.662 +2020-05-03 17:30:00,71.62,71.954,33.884,29.662 +2020-05-03 17:45:00,72.87,73.748,33.884,29.662 +2020-05-03 18:00:00,76.29,74.952,38.453,29.662 +2020-05-03 18:15:00,74.34,77.643,38.453,29.662 +2020-05-03 18:30:00,74.52,77.007,38.453,29.662 +2020-05-03 18:45:00,74.5,79.578,38.453,29.662 +2020-05-03 19:00:00,80.75,78.635,39.221,29.662 +2020-05-03 19:15:00,82.66,77.384,39.221,29.662 +2020-05-03 19:30:00,83.29,77.925,39.221,29.662 +2020-05-03 19:45:00,75.88,79.12100000000001,39.221,29.662 +2020-05-03 20:00:00,79.39,79.132,37.871,29.662 +2020-05-03 20:15:00,79.33,78.392,37.871,29.662 +2020-05-03 20:30:00,79.68,76.717,37.871,29.662 +2020-05-03 20:45:00,81.36,75.5,37.871,29.662 +2020-05-03 21:00:00,87.04,73.398,36.465,29.662 +2020-05-03 21:15:00,90.9,74.95,36.465,29.662 +2020-05-03 21:30:00,84.7,75.37,36.465,29.662 +2020-05-03 21:45:00,81.23,75.756,36.465,29.662 +2020-05-03 22:00:00,78.55,75.484,36.092,29.662 +2020-05-03 22:15:00,82.23,74.148,36.092,29.662 +2020-05-03 22:30:00,81.02,71.717,36.092,29.662 +2020-05-03 22:45:00,76.17,69.429,36.092,29.662 +2020-05-03 23:00:00,72.51,63.32899999999999,31.013,29.662 +2020-05-03 23:15:00,74.86,61.097,31.013,29.662 +2020-05-03 23:30:00,75.21,59.583999999999996,31.013,29.662 +2020-05-03 23:45:00,74.48,59.146,31.013,29.662 +2020-05-04 00:00:00,69.6,51.836999999999996,31.174,29.775 +2020-05-04 00:15:00,72.1,51.037,31.174,29.775 +2020-05-04 00:30:00,73.55,49.571999999999996,31.174,29.775 +2020-05-04 00:45:00,72.62,47.968999999999994,31.174,29.775 +2020-05-04 01:00:00,67.74,48.449,29.663,29.775 +2020-05-04 01:15:00,66.22,47.828,29.663,29.775 +2020-05-04 01:30:00,70.56,46.394,29.663,29.775 +2020-05-04 01:45:00,73.57,46.01,29.663,29.775 +2020-05-04 02:00:00,73.5,46.79600000000001,28.793000000000003,29.775 +2020-05-04 02:15:00,69.89,44.87,28.793000000000003,29.775 +2020-05-04 02:30:00,68.85,47.751000000000005,28.793000000000003,29.775 +2020-05-04 02:45:00,73.7,48.104,28.793000000000003,29.775 +2020-05-04 03:00:00,73.78,51.895,27.728,29.775 +2020-05-04 03:15:00,70.78,51.468,27.728,29.775 +2020-05-04 03:30:00,74.92,50.652,27.728,29.775 +2020-05-04 03:45:00,71.42,51.328,27.728,29.775 +2020-05-04 04:00:00,75.17,63.512,29.266,29.775 +2020-05-04 04:15:00,76.56,74.935,29.266,29.775 +2020-05-04 04:30:00,80.37,74.154,29.266,29.775 +2020-05-04 04:45:00,84.87,74.626,29.266,29.775 +2020-05-04 05:00:00,91.28,99.954,37.889,29.775 +2020-05-04 05:15:00,95.44,125.398,37.889,29.775 +2020-05-04 05:30:00,98.76,114.611,37.889,29.775 +2020-05-04 05:45:00,100.67,106.984,37.889,29.775 +2020-05-04 06:00:00,103.98,108.009,55.485,29.775 +2020-05-04 06:15:00,105.43,110.87700000000001,55.485,29.775 +2020-05-04 06:30:00,106.87,108.288,55.485,29.775 +2020-05-04 06:45:00,108.09,109.04,55.485,29.775 +2020-05-04 07:00:00,108.57,110.086,65.765,29.775 +2020-05-04 07:15:00,107.31,110.166,65.765,29.775 +2020-05-04 07:30:00,106.72,107.994,65.765,29.775 +2020-05-04 07:45:00,105.4,106.05799999999999,65.765,29.775 +2020-05-04 08:00:00,104.99,101.705,56.745,29.775 +2020-05-04 08:15:00,103.93,102.205,56.745,29.775 +2020-05-04 08:30:00,104.33,99.277,56.745,29.775 +2020-05-04 08:45:00,103.33,100.006,56.745,29.775 +2020-05-04 09:00:00,102.16,93.492,53.321999999999996,29.775 +2020-05-04 09:15:00,101.67,91.12200000000001,53.321999999999996,29.775 +2020-05-04 09:30:00,101.56,92.71799999999999,53.321999999999996,29.775 +2020-05-04 09:45:00,101.91,91.898,53.321999999999996,29.775 +2020-05-04 10:00:00,101.39,88.725,51.309,29.775 +2020-05-04 10:15:00,101.65,89.86200000000001,51.309,29.775 +2020-05-04 10:30:00,101.66,89.089,51.309,29.775 +2020-05-04 10:45:00,101.33,88.617,51.309,29.775 +2020-05-04 11:00:00,101.22,84.113,50.415,29.775 +2020-05-04 11:15:00,98.86,85.01899999999999,50.415,29.775 +2020-05-04 11:30:00,98.41,87.557,50.415,29.775 +2020-05-04 11:45:00,97.54,87.715,50.415,29.775 +2020-05-04 12:00:00,97.03,84.945,48.273,29.775 +2020-05-04 12:15:00,95.22,85.738,48.273,29.775 +2020-05-04 12:30:00,95.04,83.7,48.273,29.775 +2020-05-04 12:45:00,94.65,84.18700000000001,48.273,29.775 +2020-05-04 13:00:00,93.91,86.016,48.452,29.775 +2020-05-04 13:15:00,94.72,84.79299999999999,48.452,29.775 +2020-05-04 13:30:00,93.9,82.296,48.452,29.775 +2020-05-04 13:45:00,94.22,81.383,48.452,29.775 +2020-05-04 14:00:00,96.6,82.76899999999999,48.35,29.775 +2020-05-04 14:15:00,94.21,82.103,48.35,29.775 +2020-05-04 14:30:00,94.03,81.062,48.35,29.775 +2020-05-04 14:45:00,93.5,82.105,48.35,29.775 +2020-05-04 15:00:00,92.87,83.38600000000001,48.838,29.775 +2020-05-04 15:15:00,93.09,80.695,48.838,29.775 +2020-05-04 15:30:00,94.12,79.807,48.838,29.775 +2020-05-04 15:45:00,96.9,78.626,48.838,29.775 +2020-05-04 16:00:00,97.74,79.515,50.873000000000005,29.775 +2020-05-04 16:15:00,97.79,78.64699999999999,50.873000000000005,29.775 +2020-05-04 16:30:00,102.74,78.398,50.873000000000005,29.775 +2020-05-04 16:45:00,102.67,74.907,50.873000000000005,29.775 +2020-05-04 17:00:00,105.47,74.95100000000001,56.637,29.775 +2020-05-04 17:15:00,105.44,76.24,56.637,29.775 +2020-05-04 17:30:00,106.23,76.945,56.637,29.775 +2020-05-04 17:45:00,107.54,77.82600000000001,56.637,29.775 +2020-05-04 18:00:00,108.37,78.27,56.35,29.775 +2020-05-04 18:15:00,107.47,78.734,56.35,29.775 +2020-05-04 18:30:00,113.16,77.749,56.35,29.775 +2020-05-04 18:45:00,114.56,83.012,56.35,29.775 +2020-05-04 19:00:00,111.01,81.166,56.023,29.775 +2020-05-04 19:15:00,98.89,80.538,56.023,29.775 +2020-05-04 19:30:00,101.05,80.969,56.023,29.775 +2020-05-04 19:45:00,98.85,81.399,56.023,29.775 +2020-05-04 20:00:00,97.88,79.572,62.372,29.775 +2020-05-04 20:15:00,103.11,79.016,62.372,29.775 +2020-05-04 20:30:00,108.62,77.098,62.372,29.775 +2020-05-04 20:45:00,107.25,76.679,62.372,29.775 +2020-05-04 21:00:00,93.21,74.293,57.516999999999996,29.775 +2020-05-04 21:15:00,90.29,75.783,57.516999999999996,29.775 +2020-05-04 21:30:00,87.29,76.21,57.516999999999996,29.775 +2020-05-04 21:45:00,93.2,76.271,57.516999999999996,29.775 +2020-05-04 22:00:00,88.85,73.393,51.823,29.775 +2020-05-04 22:15:00,88.88,73.15899999999999,51.823,29.775 +2020-05-04 22:30:00,83.03,63.908,51.823,29.775 +2020-05-04 22:45:00,81.21,59.86,51.823,29.775 +2020-05-04 23:00:00,80.18,54.06100000000001,43.832,29.775 +2020-05-04 23:15:00,81.63,51.527,43.832,29.775 +2020-05-04 23:30:00,78.05,50.97,43.832,29.775 +2020-05-04 23:45:00,75.22,51.051,43.832,29.775 +2020-05-05 00:00:00,76.0,49.474,42.371,29.775 +2020-05-05 00:15:00,79.2,49.869,42.371,29.775 +2020-05-05 00:30:00,77.68,48.63,42.371,29.775 +2020-05-05 00:45:00,75.02,47.31100000000001,42.371,29.775 +2020-05-05 01:00:00,77.48,47.3,39.597,29.775 +2020-05-05 01:15:00,78.55,46.585,39.597,29.775 +2020-05-05 01:30:00,78.09,45.091,39.597,29.775 +2020-05-05 01:45:00,74.26,44.409,39.597,29.775 +2020-05-05 02:00:00,77.89,44.806999999999995,38.298,29.775 +2020-05-05 02:15:00,78.97,43.738,38.298,29.775 +2020-05-05 02:30:00,73.18,46.115,38.298,29.775 +2020-05-05 02:45:00,74.65,46.74,38.298,29.775 +2020-05-05 03:00:00,72.05,49.676,37.884,29.775 +2020-05-05 03:15:00,72.97,49.666000000000004,37.884,29.775 +2020-05-05 03:30:00,81.18,48.996,37.884,29.775 +2020-05-05 03:45:00,86.82,48.886,37.884,29.775 +2020-05-05 04:00:00,86.35,59.956,39.442,29.775 +2020-05-05 04:15:00,80.15,71.218,39.442,29.775 +2020-05-05 04:30:00,82.91,70.225,39.442,29.775 +2020-05-05 04:45:00,86.29,71.503,39.442,29.775 +2020-05-05 05:00:00,93.14,99.67200000000001,43.608000000000004,29.775 +2020-05-05 05:15:00,96.1,125.415,43.608000000000004,29.775 +2020-05-05 05:30:00,99.08,114.31700000000001,43.608000000000004,29.775 +2020-05-05 05:45:00,102.21,106.15799999999999,43.608000000000004,29.775 +2020-05-05 06:00:00,105.73,107.665,54.99100000000001,29.775 +2020-05-05 06:15:00,105.97,111.215,54.99100000000001,29.775 +2020-05-05 06:30:00,106.51,108.149,54.99100000000001,29.775 +2020-05-05 06:45:00,106.79,108.066,54.99100000000001,29.775 +2020-05-05 07:00:00,108.05,109.16,66.217,29.775 +2020-05-05 07:15:00,107.67,108.979,66.217,29.775 +2020-05-05 07:30:00,106.25,106.595,66.217,29.775 +2020-05-05 07:45:00,104.55,103.98200000000001,66.217,29.775 +2020-05-05 08:00:00,102.47,99.61399999999999,60.151,29.775 +2020-05-05 08:15:00,101.53,99.43299999999999,60.151,29.775 +2020-05-05 08:30:00,101.82,96.552,60.151,29.775 +2020-05-05 08:45:00,102.85,96.48899999999999,60.151,29.775 +2020-05-05 09:00:00,103.32,89.926,53.873000000000005,29.775 +2020-05-05 09:15:00,101.69,88.057,53.873000000000005,29.775 +2020-05-05 09:30:00,99.95,90.448,53.873000000000005,29.775 +2020-05-05 09:45:00,102.43,90.609,53.873000000000005,29.775 +2020-05-05 10:00:00,101.34,86.17399999999999,51.417,29.775 +2020-05-05 10:15:00,102.24,86.82799999999999,51.417,29.775 +2020-05-05 10:30:00,102.25,86.163,51.417,29.775 +2020-05-05 10:45:00,102.01,86.572,51.417,29.775 +2020-05-05 11:00:00,98.68,82.649,50.43600000000001,29.775 +2020-05-05 11:15:00,99.53,83.743,50.43600000000001,29.775 +2020-05-05 11:30:00,98.28,84.958,50.43600000000001,29.775 +2020-05-05 11:45:00,97.89,85.07700000000001,50.43600000000001,29.775 +2020-05-05 12:00:00,97.44,81.642,47.468,29.775 +2020-05-05 12:15:00,100.02,82.514,47.468,29.775 +2020-05-05 12:30:00,104.48,81.36,47.468,29.775 +2020-05-05 12:45:00,103.25,82.234,47.468,29.775 +2020-05-05 13:00:00,98.15,83.67200000000001,48.453,29.775 +2020-05-05 13:15:00,97.89,83.62799999999999,48.453,29.775 +2020-05-05 13:30:00,98.63,81.594,48.453,29.775 +2020-05-05 13:45:00,96.77,80.05199999999999,48.453,29.775 +2020-05-05 14:00:00,101.19,81.928,48.435,29.775 +2020-05-05 14:15:00,102.3,81.167,48.435,29.775 +2020-05-05 14:30:00,106.02,80.582,48.435,29.775 +2020-05-05 14:45:00,96.9,81.017,48.435,29.775 +2020-05-05 15:00:00,96.46,82.051,49.966,29.775 +2020-05-05 15:15:00,96.66,80.153,49.966,29.775 +2020-05-05 15:30:00,101.42,79.169,49.966,29.775 +2020-05-05 15:45:00,102.58,78.059,49.966,29.775 +2020-05-05 16:00:00,102.74,78.64699999999999,51.184,29.775 +2020-05-05 16:15:00,101.99,78.009,51.184,29.775 +2020-05-05 16:30:00,104.08,77.745,51.184,29.775 +2020-05-05 16:45:00,110.91,74.844,51.184,29.775 +2020-05-05 17:00:00,111.11,75.308,56.138999999999996,29.775 +2020-05-05 17:15:00,110.09,76.896,56.138999999999996,29.775 +2020-05-05 17:30:00,109.87,77.51899999999999,56.138999999999996,29.775 +2020-05-05 17:45:00,109.83,78.067,56.138999999999996,29.775 +2020-05-05 18:00:00,116.18,77.743,57.038000000000004,29.775 +2020-05-05 18:15:00,114.49,79.166,57.038000000000004,29.775 +2020-05-05 18:30:00,112.35,77.851,57.038000000000004,29.775 +2020-05-05 18:45:00,106.65,83.26299999999999,57.038000000000004,29.775 +2020-05-05 19:00:00,104.1,80.51100000000001,56.492,29.775 +2020-05-05 19:15:00,101.34,79.92399999999999,56.492,29.775 +2020-05-05 19:30:00,108.09,79.952,56.492,29.775 +2020-05-05 19:45:00,108.89,80.669,56.492,29.775 +2020-05-05 20:00:00,106.25,79.186,62.534,29.775 +2020-05-05 20:15:00,101.8,77.277,62.534,29.775 +2020-05-05 20:30:00,98.86,75.78699999999999,62.534,29.775 +2020-05-05 20:45:00,99.69,75.52600000000001,62.534,29.775 +2020-05-05 21:00:00,99.28,73.567,55.506,29.775 +2020-05-05 21:15:00,98.12,74.248,55.506,29.775 +2020-05-05 21:30:00,92.99,74.533,55.506,29.775 +2020-05-05 21:45:00,88.48,74.859,55.506,29.775 +2020-05-05 22:00:00,87.66,72.74600000000001,51.472,29.775 +2020-05-05 22:15:00,89.2,72.176,51.472,29.775 +2020-05-05 22:30:00,85.37,63.177,51.472,29.775 +2020-05-05 22:45:00,84.36,59.214,51.472,29.775 +2020-05-05 23:00:00,81.88,52.781000000000006,44.593,29.775 +2020-05-05 23:15:00,80.29,51.196000000000005,44.593,29.775 +2020-05-05 23:30:00,81.46,50.50899999999999,44.593,29.775 +2020-05-05 23:45:00,77.25,50.575,44.593,29.775 +2020-05-06 00:00:00,71.85,49.147,41.978,29.775 +2020-05-06 00:15:00,78.55,49.553000000000004,41.978,29.775 +2020-05-06 00:30:00,77.81,48.31,41.978,29.775 +2020-05-06 00:45:00,77.29,46.997,41.978,29.775 +2020-05-06 01:00:00,73.94,46.992,38.59,29.775 +2020-05-06 01:15:00,78.49,46.251999999999995,38.59,29.775 +2020-05-06 01:30:00,78.56,44.74100000000001,38.59,29.775 +2020-05-06 01:45:00,76.62,44.058,38.59,29.775 +2020-05-06 02:00:00,73.33,44.446999999999996,36.23,29.775 +2020-05-06 02:15:00,78.33,43.364,36.23,29.775 +2020-05-06 02:30:00,77.82,45.753,36.23,29.775 +2020-05-06 02:45:00,72.36,46.386,36.23,29.775 +2020-05-06 03:00:00,70.81,49.335,35.867,29.775 +2020-05-06 03:15:00,72.19,49.305,35.867,29.775 +2020-05-06 03:30:00,73.52,48.63399999999999,35.867,29.775 +2020-05-06 03:45:00,75.1,48.548,35.867,29.775 +2020-05-06 04:00:00,78.39,59.571999999999996,36.75,29.775 +2020-05-06 04:15:00,78.83,70.78699999999999,36.75,29.775 +2020-05-06 04:30:00,81.3,69.78699999999999,36.75,29.775 +2020-05-06 04:45:00,84.96,71.058,36.75,29.775 +2020-05-06 05:00:00,93.15,99.10799999999999,40.461,29.775 +2020-05-06 05:15:00,95.53,124.71799999999999,40.461,29.775 +2020-05-06 05:30:00,97.79,113.664,40.461,29.775 +2020-05-06 05:45:00,101.14,105.565,40.461,29.775 +2020-05-06 06:00:00,106.4,107.095,55.481,29.775 +2020-05-06 06:15:00,106.6,110.62100000000001,55.481,29.775 +2020-05-06 06:30:00,108.89,107.556,55.481,29.775 +2020-05-06 06:45:00,109.94,107.48100000000001,55.481,29.775 +2020-05-06 07:00:00,114.39,108.568,68.45,29.775 +2020-05-06 07:15:00,107.66,108.384,68.45,29.775 +2020-05-06 07:30:00,105.69,105.969,68.45,29.775 +2020-05-06 07:45:00,106.74,103.374,68.45,29.775 +2020-05-06 08:00:00,103.47,99.00200000000001,60.885,29.775 +2020-05-06 08:15:00,101.98,98.86399999999999,60.885,29.775 +2020-05-06 08:30:00,104.01,95.965,60.885,29.775 +2020-05-06 08:45:00,102.48,95.925,60.885,29.775 +2020-05-06 09:00:00,101.52,89.361,56.887,29.775 +2020-05-06 09:15:00,101.65,87.49799999999999,56.887,29.775 +2020-05-06 09:30:00,101.44,89.904,56.887,29.775 +2020-05-06 09:45:00,104.08,90.09700000000001,56.887,29.775 +2020-05-06 10:00:00,109.12,85.67200000000001,54.401,29.775 +2020-05-06 10:15:00,110.04,86.36399999999999,54.401,29.775 +2020-05-06 10:30:00,109.63,85.71600000000001,54.401,29.775 +2020-05-06 10:45:00,105.76,86.14200000000001,54.401,29.775 +2020-05-06 11:00:00,105.77,82.212,53.678000000000004,29.775 +2020-05-06 11:15:00,105.27,83.325,53.678000000000004,29.775 +2020-05-06 11:30:00,108.22,84.535,53.678000000000004,29.775 +2020-05-06 11:45:00,101.7,84.671,53.678000000000004,29.775 +2020-05-06 12:00:00,98.23,81.267,51.68,29.775 +2020-05-06 12:15:00,98.72,82.146,51.68,29.775 +2020-05-06 12:30:00,99.41,80.953,51.68,29.775 +2020-05-06 12:45:00,104.66,81.832,51.68,29.775 +2020-05-06 13:00:00,100.13,83.296,51.263000000000005,29.775 +2020-05-06 13:15:00,102.95,83.25200000000001,51.263000000000005,29.775 +2020-05-06 13:30:00,97.84,81.226,51.263000000000005,29.775 +2020-05-06 13:45:00,96.57,79.685,51.263000000000005,29.775 +2020-05-06 14:00:00,96.82,81.609,51.107,29.775 +2020-05-06 14:15:00,95.84,80.835,51.107,29.775 +2020-05-06 14:30:00,96.81,80.208,51.107,29.775 +2020-05-06 14:45:00,93.98,80.645,51.107,29.775 +2020-05-06 15:00:00,94.2,81.723,51.498000000000005,29.775 +2020-05-06 15:15:00,93.38,79.808,51.498000000000005,29.775 +2020-05-06 15:30:00,95.59,78.79,51.498000000000005,29.775 +2020-05-06 15:45:00,98.49,77.665,51.498000000000005,29.775 +2020-05-06 16:00:00,101.69,78.296,53.376999999999995,29.775 +2020-05-06 16:15:00,101.79,77.641,53.376999999999995,29.775 +2020-05-06 16:30:00,102.02,77.387,53.376999999999995,29.775 +2020-05-06 16:45:00,100.4,74.425,53.376999999999995,29.775 +2020-05-06 17:00:00,102.39,74.937,56.965,29.775 +2020-05-06 17:15:00,101.21,76.498,56.965,29.775 +2020-05-06 17:30:00,100.01,77.111,56.965,29.775 +2020-05-06 17:45:00,102.1,77.626,56.965,29.775 +2020-05-06 18:00:00,104.0,77.32,58.231,29.775 +2020-05-06 18:15:00,104.34,78.742,58.231,29.775 +2020-05-06 18:30:00,105.4,77.414,58.231,29.775 +2020-05-06 18:45:00,103.72,82.82700000000001,58.231,29.775 +2020-05-06 19:00:00,102.23,80.072,58.865,29.775 +2020-05-06 19:15:00,97.93,79.486,58.865,29.775 +2020-05-06 19:30:00,95.7,79.515,58.865,29.775 +2020-05-06 19:45:00,96.66,80.242,58.865,29.775 +2020-05-06 20:00:00,95.25,78.734,65.605,29.775 +2020-05-06 20:15:00,98.04,76.829,65.605,29.775 +2020-05-06 20:30:00,91.55,75.367,65.605,29.775 +2020-05-06 20:45:00,91.56,75.143,65.605,29.775 +2020-05-06 21:00:00,82.99,73.189,58.083999999999996,29.775 +2020-05-06 21:15:00,81.12,73.88600000000001,58.083999999999996,29.775 +2020-05-06 21:30:00,78.05,74.15100000000001,58.083999999999996,29.775 +2020-05-06 21:45:00,75.34,74.505,58.083999999999996,29.775 +2020-05-06 22:00:00,70.55,72.414,53.243,29.775 +2020-05-06 22:15:00,70.4,71.865,53.243,29.775 +2020-05-06 22:30:00,68.32,62.855,53.243,29.775 +2020-05-06 22:45:00,66.71,58.88,53.243,29.775 +2020-05-06 23:00:00,76.44,52.417,44.283,29.775 +2020-05-06 23:15:00,77.93,50.872,44.283,29.775 +2020-05-06 23:30:00,80.4,50.187,44.283,29.775 +2020-05-06 23:45:00,79.81,50.251999999999995,44.283,29.775 +2020-05-07 00:00:00,73.78,48.823,40.219,29.775 +2020-05-07 00:15:00,72.71,49.239,40.219,29.775 +2020-05-07 00:30:00,73.87,47.994,40.219,29.775 +2020-05-07 00:45:00,77.01,46.685,40.219,29.775 +2020-05-07 01:00:00,74.22,46.685,37.959,29.775 +2020-05-07 01:15:00,73.3,45.92100000000001,37.959,29.775 +2020-05-07 01:30:00,72.97,44.391999999999996,37.959,29.775 +2020-05-07 01:45:00,74.22,43.708999999999996,37.959,29.775 +2020-05-07 02:00:00,75.92,44.092,36.113,29.775 +2020-05-07 02:15:00,74.19,42.993,36.113,29.775 +2020-05-07 02:30:00,72.07,45.396,36.113,29.775 +2020-05-07 02:45:00,74.15,46.036,36.113,29.775 +2020-05-07 03:00:00,74.4,48.995,35.546,29.775 +2020-05-07 03:15:00,77.16,48.946000000000005,35.546,29.775 +2020-05-07 03:30:00,76.61,48.275,35.546,29.775 +2020-05-07 03:45:00,78.26,48.214,35.546,29.775 +2020-05-07 04:00:00,79.9,59.19,37.169000000000004,29.775 +2020-05-07 04:15:00,80.7,70.359,37.169000000000004,29.775 +2020-05-07 04:30:00,83.75,69.352,37.169000000000004,29.775 +2020-05-07 04:45:00,87.24,70.615,37.169000000000004,29.775 +2020-05-07 05:00:00,95.0,98.54899999999999,41.233000000000004,29.775 +2020-05-07 05:15:00,97.6,124.024,41.233000000000004,29.775 +2020-05-07 05:30:00,100.93,113.01700000000001,41.233000000000004,29.775 +2020-05-07 05:45:00,104.36,104.975,41.233000000000004,29.775 +2020-05-07 06:00:00,111.07,106.531,52.57,29.775 +2020-05-07 06:15:00,111.79,110.03200000000001,52.57,29.775 +2020-05-07 06:30:00,115.27,106.96700000000001,52.57,29.775 +2020-05-07 06:45:00,116.41,106.9,52.57,29.775 +2020-05-07 07:00:00,121.35,107.98,64.53,29.775 +2020-05-07 07:15:00,120.69,107.794,64.53,29.775 +2020-05-07 07:30:00,120.64,105.34899999999999,64.53,29.775 +2020-05-07 07:45:00,119.58,102.771,64.53,29.775 +2020-05-07 08:00:00,118.88,98.395,55.911,29.775 +2020-05-07 08:15:00,119.04,98.3,55.911,29.775 +2020-05-07 08:30:00,120.65,95.383,55.911,29.775 +2020-05-07 08:45:00,121.31,95.367,55.911,29.775 +2020-05-07 09:00:00,120.75,88.802,50.949,29.775 +2020-05-07 09:15:00,121.94,86.946,50.949,29.775 +2020-05-07 09:30:00,124.2,89.363,50.949,29.775 +2020-05-07 09:45:00,125.86,89.59,50.949,29.775 +2020-05-07 10:00:00,123.35,85.17299999999999,48.136,29.775 +2020-05-07 10:15:00,121.67,85.905,48.136,29.775 +2020-05-07 10:30:00,122.7,85.274,48.136,29.775 +2020-05-07 10:45:00,121.37,85.71700000000001,48.136,29.775 +2020-05-07 11:00:00,120.01,81.78,46.643,29.775 +2020-05-07 11:15:00,119.7,82.912,46.643,29.775 +2020-05-07 11:30:00,116.44,84.117,46.643,29.775 +2020-05-07 11:45:00,120.55,84.266,46.643,29.775 +2020-05-07 12:00:00,114.26,80.895,44.098,29.775 +2020-05-07 12:15:00,115.33,81.78,44.098,29.775 +2020-05-07 12:30:00,115.25,80.548,44.098,29.775 +2020-05-07 12:45:00,111.95,81.433,44.098,29.775 +2020-05-07 13:00:00,111.66,82.92299999999999,43.717,29.775 +2020-05-07 13:15:00,115.79,82.87899999999999,43.717,29.775 +2020-05-07 13:30:00,112.84,80.861,43.717,29.775 +2020-05-07 13:45:00,113.94,79.32,43.717,29.775 +2020-05-07 14:00:00,112.73,81.293,44.218999999999994,29.775 +2020-05-07 14:15:00,110.34,80.506,44.218999999999994,29.775 +2020-05-07 14:30:00,109.63,79.837,44.218999999999994,29.775 +2020-05-07 14:45:00,110.46,80.277,44.218999999999994,29.775 +2020-05-07 15:00:00,109.7,81.399,46.159,29.775 +2020-05-07 15:15:00,111.05,79.46600000000001,46.159,29.775 +2020-05-07 15:30:00,108.64,78.415,46.159,29.775 +2020-05-07 15:45:00,109.14,77.273,46.159,29.775 +2020-05-07 16:00:00,109.78,77.95100000000001,47.115,29.775 +2020-05-07 16:15:00,111.93,77.275,47.115,29.775 +2020-05-07 16:30:00,114.03,77.032,47.115,29.775 +2020-05-07 16:45:00,114.16,74.009,47.115,29.775 +2020-05-07 17:00:00,114.59,74.568,50.827,29.775 +2020-05-07 17:15:00,113.02,76.104,50.827,29.775 +2020-05-07 17:30:00,114.7,76.706,50.827,29.775 +2020-05-07 17:45:00,114.23,77.19,50.827,29.775 +2020-05-07 18:00:00,114.07,76.90100000000001,52.586000000000006,29.775 +2020-05-07 18:15:00,110.01,78.32,52.586000000000006,29.775 +2020-05-07 18:30:00,114.3,76.979,52.586000000000006,29.775 +2020-05-07 18:45:00,113.58,82.39299999999999,52.586000000000006,29.775 +2020-05-07 19:00:00,112.14,79.639,51.886,29.775 +2020-05-07 19:15:00,106.35,79.051,51.886,29.775 +2020-05-07 19:30:00,105.41,79.083,51.886,29.775 +2020-05-07 19:45:00,106.24,79.819,51.886,29.775 +2020-05-07 20:00:00,105.1,78.285,56.162,29.775 +2020-05-07 20:15:00,103.7,76.383,56.162,29.775 +2020-05-07 20:30:00,103.6,74.949,56.162,29.775 +2020-05-07 20:45:00,103.67,74.764,56.162,29.775 +2020-05-07 21:00:00,98.44,72.814,53.023,29.775 +2020-05-07 21:15:00,98.45,73.525,53.023,29.775 +2020-05-07 21:30:00,93.13,73.773,53.023,29.775 +2020-05-07 21:45:00,94.44,74.152,53.023,29.775 +2020-05-07 22:00:00,88.82,72.084,49.303999999999995,29.775 +2020-05-07 22:15:00,86.68,71.556,49.303999999999995,29.775 +2020-05-07 22:30:00,83.38,62.534,49.303999999999995,29.775 +2020-05-07 22:45:00,84.4,58.549,49.303999999999995,29.775 +2020-05-07 23:00:00,58.37,52.053999999999995,43.409,29.775 +2020-05-07 23:15:00,57.74,50.552,43.409,29.775 +2020-05-07 23:30:00,55.82,49.86600000000001,43.409,29.775 +2020-05-07 23:45:00,54.77,49.93,43.409,29.775 +2020-05-08 00:00:00,53.24,46.693000000000005,39.884,29.775 +2020-05-08 00:15:00,54.19,47.361999999999995,39.884,29.775 +2020-05-08 00:30:00,54.32,46.278999999999996,39.884,29.775 +2020-05-08 00:45:00,55.58,45.352,39.884,29.775 +2020-05-08 01:00:00,52.76,44.941,37.658,29.775 +2020-05-08 01:15:00,53.95,44.012,37.658,29.775 +2020-05-08 01:30:00,54.34,42.949,37.658,29.775 +2020-05-08 01:45:00,53.53,42.105,37.658,29.775 +2020-05-08 02:00:00,52.96,43.25,36.707,29.775 +2020-05-08 02:15:00,54.39,42.055,36.707,29.775 +2020-05-08 02:30:00,54.97,45.31399999999999,36.707,29.775 +2020-05-08 02:45:00,54.2,45.437,36.707,29.775 +2020-05-08 03:00:00,55.31,48.655,37.025,29.775 +2020-05-08 03:15:00,56.15,47.978,37.025,29.775 +2020-05-08 03:30:00,57.39,47.113,37.025,29.775 +2020-05-08 03:45:00,59.16,47.886,37.025,29.775 +2020-05-08 04:00:00,61.87,59.01,38.349000000000004,29.775 +2020-05-08 04:15:00,63.45,68.811,38.349000000000004,29.775 +2020-05-08 04:30:00,66.08,68.631,38.349000000000004,29.775 +2020-05-08 04:45:00,68.24,68.958,38.349000000000004,29.775 +2020-05-08 05:00:00,72.24,95.93,41.565,29.775 +2020-05-08 05:15:00,73.47,122.565,41.565,29.775 +2020-05-08 05:30:00,76.45,112.135,41.565,29.775 +2020-05-08 05:45:00,79.96,103.76799999999999,41.565,29.775 +2020-05-08 06:00:00,84.65,105.696,53.861000000000004,29.775 +2020-05-08 06:15:00,86.18,108.787,53.861000000000004,29.775 +2020-05-08 06:30:00,88.73,105.376,53.861000000000004,29.775 +2020-05-08 06:45:00,89.53,105.786,53.861000000000004,29.775 +2020-05-08 07:00:00,93.58,107.083,63.497,29.775 +2020-05-08 07:15:00,92.57,107.986,63.497,29.775 +2020-05-08 07:30:00,92.28,103.915,63.497,29.775 +2020-05-08 07:45:00,92.57,100.859,63.497,29.775 +2020-05-08 08:00:00,92.12,96.67299999999999,55.43899999999999,29.775 +2020-05-08 08:15:00,93.47,96.991,55.43899999999999,29.775 +2020-05-08 08:30:00,95.97,94.354,55.43899999999999,29.775 +2020-05-08 08:45:00,98.27,93.648,55.43899999999999,29.775 +2020-05-08 09:00:00,97.16,85.48,52.132,29.775 +2020-05-08 09:15:00,97.44,85.31700000000001,52.132,29.775 +2020-05-08 09:30:00,96.52,87.052,52.132,29.775 +2020-05-08 09:45:00,93.66,87.565,52.132,29.775 +2020-05-08 10:00:00,90.57,82.54700000000001,49.881,29.775 +2020-05-08 10:15:00,90.43,83.43799999999999,49.881,29.775 +2020-05-08 10:30:00,92.89,83.205,49.881,29.775 +2020-05-08 10:45:00,92.64,83.412,49.881,29.775 +2020-05-08 11:00:00,87.14,79.635,49.396,29.775 +2020-05-08 11:15:00,84.45,79.61,49.396,29.775 +2020-05-08 11:30:00,82.3,81.271,49.396,29.775 +2020-05-08 11:45:00,84.56,80.74600000000001,49.396,29.775 +2020-05-08 12:00:00,85.34,78.204,46.7,29.775 +2020-05-08 12:15:00,87.59,77.72800000000001,46.7,29.775 +2020-05-08 12:30:00,82.79,76.611,46.7,29.775 +2020-05-08 12:45:00,84.03,77.154,46.7,29.775 +2020-05-08 13:00:00,86.69,79.491,44.05,29.775 +2020-05-08 13:15:00,90.34,79.928,44.05,29.775 +2020-05-08 13:30:00,92.17,78.503,44.05,29.775 +2020-05-08 13:45:00,91.91,77.16,44.05,29.775 +2020-05-08 14:00:00,91.0,78.111,42.805,29.775 +2020-05-08 14:15:00,87.13,77.55199999999999,42.805,29.775 +2020-05-08 14:30:00,85.29,78.155,42.805,29.775 +2020-05-08 14:45:00,85.31,78.226,42.805,29.775 +2020-05-08 15:00:00,81.82,79.128,44.36600000000001,29.775 +2020-05-08 15:15:00,80.11,76.816,44.36600000000001,29.775 +2020-05-08 15:30:00,79.41,74.672,44.36600000000001,29.775 +2020-05-08 15:45:00,79.63,74.131,44.36600000000001,29.775 +2020-05-08 16:00:00,80.31,73.779,46.928999999999995,29.775 +2020-05-08 16:15:00,83.58,73.572,46.928999999999995,29.775 +2020-05-08 16:30:00,85.81,73.242,46.928999999999995,29.775 +2020-05-08 16:45:00,88.21,69.52600000000001,46.928999999999995,29.775 +2020-05-08 17:00:00,90.9,71.516,51.468,29.775 +2020-05-08 17:15:00,90.29,72.729,51.468,29.775 +2020-05-08 17:30:00,91.83,73.315,51.468,29.775 +2020-05-08 17:45:00,93.13,73.54899999999999,51.468,29.775 +2020-05-08 18:00:00,95.38,73.646,52.58,29.775 +2020-05-08 18:15:00,93.36,74.184,52.58,29.775 +2020-05-08 18:30:00,94.59,72.903,52.58,29.775 +2020-05-08 18:45:00,91.5,78.64,52.58,29.775 +2020-05-08 19:00:00,88.14,76.949,52.183,29.775 +2020-05-08 19:15:00,85.24,77.32600000000001,52.183,29.775 +2020-05-08 19:30:00,84.68,77.257,52.183,29.775 +2020-05-08 19:45:00,85.55,77.033,52.183,29.775 +2020-05-08 20:00:00,86.18,75.357,58.497,29.775 +2020-05-08 20:15:00,86.8,74.078,58.497,29.775 +2020-05-08 20:30:00,85.42,72.279,58.497,29.775 +2020-05-08 20:45:00,84.39,71.708,58.497,29.775 +2020-05-08 21:00:00,79.14,70.98,54.731,29.775 +2020-05-08 21:15:00,78.08,73.17699999999999,54.731,29.775 +2020-05-08 21:30:00,75.44,73.305,54.731,29.775 +2020-05-08 21:45:00,73.8,74.07300000000001,54.731,29.775 +2020-05-08 22:00:00,69.96,72.279,51.386,29.775 +2020-05-08 22:15:00,70.53,71.528,51.386,29.775 +2020-05-08 22:30:00,67.66,68.579,51.386,29.775 +2020-05-08 22:45:00,66.61,66.559,51.386,29.775 +2020-05-08 23:00:00,62.1,61.192,44.463,29.775 +2020-05-08 23:15:00,61.96,57.783,44.463,29.775 +2020-05-08 23:30:00,61.24,55.128,44.463,29.775 +2020-05-08 23:45:00,61.9,54.85,44.463,29.775 +2020-05-09 00:00:00,59.19,46.31399999999999,42.833999999999996,29.662 +2020-05-09 00:15:00,59.48,44.915,42.833999999999996,29.662 +2020-05-09 00:30:00,58.27,43.941,42.833999999999996,29.662 +2020-05-09 00:45:00,58.41,42.702,42.833999999999996,29.662 +2020-05-09 01:00:00,56.44,42.744,37.859,29.662 +2020-05-09 01:15:00,57.02,41.898999999999994,37.859,29.662 +2020-05-09 01:30:00,54.39,39.994,37.859,29.662 +2020-05-09 01:45:00,57.37,40.054,37.859,29.662 +2020-05-09 02:00:00,56.57,40.662,35.327,29.662 +2020-05-09 02:15:00,57.32,38.695,35.327,29.662 +2020-05-09 02:30:00,56.09,40.938,35.327,29.662 +2020-05-09 02:45:00,56.5,41.725,35.327,29.662 +2020-05-09 03:00:00,56.74,44.101000000000006,34.908,29.662 +2020-05-09 03:15:00,57.04,42.413999999999994,34.908,29.662 +2020-05-09 03:30:00,57.73,41.23,34.908,29.662 +2020-05-09 03:45:00,58.65,43.236000000000004,34.908,29.662 +2020-05-09 04:00:00,56.1,51.325,34.84,29.662 +2020-05-09 04:15:00,58.39,59.455,34.84,29.662 +2020-05-09 04:30:00,58.62,57.167,34.84,29.662 +2020-05-09 04:45:00,58.93,57.523,34.84,29.662 +2020-05-09 05:00:00,59.13,72.622,34.222,29.662 +2020-05-09 05:15:00,58.29,83.84100000000001,34.222,29.662 +2020-05-09 05:30:00,61.65,74.814,34.222,29.662 +2020-05-09 05:45:00,64.49,71.96600000000001,34.222,29.662 +2020-05-09 06:00:00,67.16,89.139,35.515,29.662 +2020-05-09 06:15:00,68.9,104.09200000000001,35.515,29.662 +2020-05-09 06:30:00,67.17,96.552,35.515,29.662 +2020-05-09 06:45:00,72.7,91.306,35.515,29.662 +2020-05-09 07:00:00,71.59,89.74700000000001,39.687,29.662 +2020-05-09 07:15:00,75.04,89.178,39.687,29.662 +2020-05-09 07:30:00,77.56,87.242,39.687,29.662 +2020-05-09 07:45:00,81.67,86.36399999999999,39.687,29.662 +2020-05-09 08:00:00,83.62,83.985,44.9,29.662 +2020-05-09 08:15:00,84.5,85.53399999999999,44.9,29.662 +2020-05-09 08:30:00,84.0,83.471,44.9,29.662 +2020-05-09 08:45:00,81.6,84.695,44.9,29.662 +2020-05-09 09:00:00,79.98,79.499,45.724,29.662 +2020-05-09 09:15:00,82.69,79.999,45.724,29.662 +2020-05-09 09:30:00,76.88,82.469,45.724,29.662 +2020-05-09 09:45:00,80.32,82.73200000000001,45.724,29.662 +2020-05-09 10:00:00,74.68,78.143,43.123999999999995,29.662 +2020-05-09 10:15:00,75.87,79.402,43.123999999999995,29.662 +2020-05-09 10:30:00,75.83,78.999,43.123999999999995,29.662 +2020-05-09 10:45:00,76.14,79.484,43.123999999999995,29.662 +2020-05-09 11:00:00,72.08,75.645,40.255,29.662 +2020-05-09 11:15:00,70.62,75.997,40.255,29.662 +2020-05-09 11:30:00,73.05,77.406,40.255,29.662 +2020-05-09 11:45:00,75.89,76.999,40.255,29.662 +2020-05-09 12:00:00,76.78,74.229,38.582,29.662 +2020-05-09 12:15:00,71.51,74.643,38.582,29.662 +2020-05-09 12:30:00,73.06,73.529,38.582,29.662 +2020-05-09 12:45:00,72.57,74.273,38.582,29.662 +2020-05-09 13:00:00,70.0,75.922,36.043,29.662 +2020-05-09 13:15:00,68.54,75.10600000000001,36.043,29.662 +2020-05-09 13:30:00,62.42,73.637,36.043,29.662 +2020-05-09 13:45:00,66.38,71.518,36.043,29.662 +2020-05-09 14:00:00,70.51,73.04899999999999,35.216,29.662 +2020-05-09 14:15:00,77.12,71.347,35.216,29.662 +2020-05-09 14:30:00,70.75,70.837,35.216,29.662 +2020-05-09 14:45:00,67.87,71.348,35.216,29.662 +2020-05-09 15:00:00,69.68,72.88600000000001,36.759,29.662 +2020-05-09 15:15:00,71.0,71.407,36.759,29.662 +2020-05-09 15:30:00,71.64,70.027,36.759,29.662 +2020-05-09 15:45:00,74.81,68.809,36.759,29.662 +2020-05-09 16:00:00,75.54,69.814,40.086,29.662 +2020-05-09 16:15:00,71.72,69.282,40.086,29.662 +2020-05-09 16:30:00,75.34,69.111,40.086,29.662 +2020-05-09 16:45:00,76.17,65.67,40.086,29.662 +2020-05-09 17:00:00,77.72,66.625,44.876999999999995,29.662 +2020-05-09 17:15:00,79.16,66.865,44.876999999999995,29.662 +2020-05-09 17:30:00,79.96,67.304,44.876999999999995,29.662 +2020-05-09 17:45:00,80.99,67.714,44.876999999999995,29.662 +2020-05-09 18:00:00,80.0,68.844,47.056000000000004,29.662 +2020-05-09 18:15:00,82.8,71.342,47.056000000000004,29.662 +2020-05-09 18:30:00,81.66,71.592,47.056000000000004,29.662 +2020-05-09 18:45:00,82.41,73.399,47.056000000000004,29.662 +2020-05-09 19:00:00,80.39,70.936,45.57,29.662 +2020-05-09 19:15:00,77.08,70.343,45.57,29.662 +2020-05-09 19:30:00,74.71,71.15100000000001,45.57,29.662 +2020-05-09 19:45:00,78.23,72.253,45.57,29.662 +2020-05-09 20:00:00,78.77,71.929,41.685,29.662 +2020-05-09 20:15:00,79.72,70.954,41.685,29.662 +2020-05-09 20:30:00,78.87,68.374,41.685,29.662 +2020-05-09 20:45:00,78.23,69.122,41.685,29.662 +2020-05-09 21:00:00,76.02,68.109,39.576,29.662 +2020-05-09 21:15:00,74.79,70.21300000000001,39.576,29.662 +2020-05-09 21:30:00,70.34,70.922,39.576,29.662 +2020-05-09 21:45:00,72.16,71.14399999999999,39.576,29.662 +2020-05-09 22:00:00,69.44,69.848,39.068000000000005,29.662 +2020-05-09 22:15:00,66.81,70.223,39.068000000000005,29.662 +2020-05-09 22:30:00,65.84,69.253,39.068000000000005,29.662 +2020-05-09 22:45:00,65.64,68.2,39.068000000000005,29.662 +2020-05-09 23:00:00,58.1,63.147,32.06,29.662 +2020-05-09 23:15:00,61.56,59.51,32.06,29.662 +2020-05-09 23:30:00,59.59,58.13,32.06,29.662 +2020-05-09 23:45:00,61.11,57.242,32.06,29.662 +2020-05-10 00:00:00,56.26,47.231,28.825,29.662 +2020-05-10 00:15:00,56.19,44.821000000000005,28.825,29.662 +2020-05-10 00:30:00,56.2,43.593999999999994,28.825,29.662 +2020-05-10 00:45:00,56.93,42.525,28.825,29.662 +2020-05-10 01:00:00,54.42,42.729,25.995,29.662 +2020-05-10 01:15:00,55.57,42.137,25.995,29.662 +2020-05-10 01:30:00,54.8,40.296,25.995,29.662 +2020-05-10 01:45:00,54.72,39.944,25.995,29.662 +2020-05-10 02:00:00,53.8,40.336,24.394000000000002,29.662 +2020-05-10 02:15:00,53.93,38.604,24.394000000000002,29.662 +2020-05-10 02:30:00,54.27,41.316,24.394000000000002,29.662 +2020-05-10 02:45:00,53.34,42.047,24.394000000000002,29.662 +2020-05-10 03:00:00,53.35,45.059,22.916999999999998,29.662 +2020-05-10 03:15:00,53.77,43.37,22.916999999999998,29.662 +2020-05-10 03:30:00,55.05,42.111999999999995,22.916999999999998,29.662 +2020-05-10 03:45:00,55.75,43.489,22.916999999999998,29.662 +2020-05-10 04:00:00,53.43,51.42,23.576999999999998,29.662 +2020-05-10 04:15:00,53.2,58.799,23.576999999999998,29.662 +2020-05-10 04:30:00,52.95,57.58,23.576999999999998,29.662 +2020-05-10 04:45:00,53.86,57.659,23.576999999999998,29.662 +2020-05-10 05:00:00,53.48,71.578,22.730999999999998,29.662 +2020-05-10 05:15:00,54.32,81.235,22.730999999999998,29.662 +2020-05-10 05:30:00,53.89,71.875,22.730999999999998,29.662 +2020-05-10 05:45:00,54.74,68.944,22.730999999999998,29.662 +2020-05-10 06:00:00,56.84,84.185,22.34,29.662 +2020-05-10 06:15:00,56.42,99.195,22.34,29.662 +2020-05-10 06:30:00,57.71,90.72200000000001,22.34,29.662 +2020-05-10 06:45:00,58.61,84.32700000000001,22.34,29.662 +2020-05-10 07:00:00,59.27,83.804,24.691999999999997,29.662 +2020-05-10 07:15:00,59.67,81.642,24.691999999999997,29.662 +2020-05-10 07:30:00,59.68,80.24,24.691999999999997,29.662 +2020-05-10 07:45:00,60.06,79.082,24.691999999999997,29.662 +2020-05-10 08:00:00,59.38,77.918,29.340999999999998,29.662 +2020-05-10 08:15:00,59.29,80.388,29.340999999999998,29.662 +2020-05-10 08:30:00,59.52,79.59,29.340999999999998,29.662 +2020-05-10 08:45:00,58.7,81.51899999999999,29.340999999999998,29.662 +2020-05-10 09:00:00,56.6,76.072,30.788,29.662 +2020-05-10 09:15:00,57.08,76.41,30.788,29.662 +2020-05-10 09:30:00,57.77,79.16199999999999,30.788,29.662 +2020-05-10 09:45:00,60.07,80.18,30.788,29.662 +2020-05-10 10:00:00,59.67,76.94800000000001,30.158,29.662 +2020-05-10 10:15:00,60.32,78.554,30.158,29.662 +2020-05-10 10:30:00,60.97,78.569,30.158,29.662 +2020-05-10 10:45:00,61.22,79.084,30.158,29.662 +2020-05-10 11:00:00,58.46,75.331,32.056,29.662 +2020-05-10 11:15:00,58.18,75.423,32.056,29.662 +2020-05-10 11:30:00,55.24,76.867,32.056,29.662 +2020-05-10 11:45:00,55.54,76.905,32.056,29.662 +2020-05-10 12:00:00,53.33,74.672,28.671999999999997,29.662 +2020-05-10 12:15:00,54.51,75.421,28.671999999999997,29.662 +2020-05-10 12:30:00,50.53,73.825,28.671999999999997,29.662 +2020-05-10 12:45:00,50.54,73.71300000000001,28.671999999999997,29.662 +2020-05-10 13:00:00,47.4,74.889,23.171,29.662 +2020-05-10 13:15:00,45.4,74.87899999999999,23.171,29.662 +2020-05-10 13:30:00,46.65,72.51899999999999,23.171,29.662 +2020-05-10 13:45:00,48.47,70.95,23.171,29.662 +2020-05-10 14:00:00,49.27,73.501,19.11,29.662 +2020-05-10 14:15:00,48.56,72.59100000000001,19.11,29.662 +2020-05-10 14:30:00,47.46,71.642,19.11,29.662 +2020-05-10 14:45:00,47.02,71.206,19.11,29.662 +2020-05-10 15:00:00,46.47,72.26899999999999,19.689,29.662 +2020-05-10 15:15:00,45.86,70.492,19.689,29.662 +2020-05-10 15:30:00,47.51,69.187,19.689,29.662 +2020-05-10 15:45:00,49.12,68.445,19.689,29.662 +2020-05-10 16:00:00,54.26,68.936,22.875,29.662 +2020-05-10 16:15:00,59.43,68.202,22.875,29.662 +2020-05-10 16:30:00,61.12,68.893,22.875,29.662 +2020-05-10 16:45:00,64.01,65.495,22.875,29.662 +2020-05-10 17:00:00,66.15,66.755,33.884,29.662 +2020-05-10 17:15:00,65.55,67.977,33.884,29.662 +2020-05-10 17:30:00,68.01,69.122,33.884,29.662 +2020-05-10 17:45:00,69.14,70.696,33.884,29.662 +2020-05-10 18:00:00,71.22,72.01899999999999,38.453,29.662 +2020-05-10 18:15:00,71.38,74.692,38.453,29.662 +2020-05-10 18:30:00,71.35,73.967,38.453,29.662 +2020-05-10 18:45:00,72.02,76.55,38.453,29.662 +2020-05-10 19:00:00,71.05,75.596,39.221,29.662 +2020-05-10 19:15:00,71.32,74.34100000000001,39.221,29.662 +2020-05-10 19:30:00,76.1,74.89699999999999,39.221,29.662 +2020-05-10 19:45:00,79.65,76.161,39.221,29.662 +2020-05-10 20:00:00,78.39,75.993,37.871,29.662 +2020-05-10 20:15:00,77.6,75.27199999999999,37.871,29.662 +2020-05-10 20:30:00,79.29,73.798,37.871,29.662 +2020-05-10 20:45:00,79.19,72.845,37.871,29.662 +2020-05-10 21:00:00,79.14,70.771,36.465,29.662 +2020-05-10 21:15:00,79.16,72.43,36.465,29.662 +2020-05-10 21:30:00,76.86,72.72,36.465,29.662 +2020-05-10 21:45:00,77.71,73.296,36.465,29.662 +2020-05-10 22:00:00,72.23,73.175,36.092,29.662 +2020-05-10 22:15:00,73.28,71.986,36.092,29.662 +2020-05-10 22:30:00,71.29,69.47399999999999,36.092,29.662 +2020-05-10 22:45:00,72.19,67.111,36.092,29.662 +2020-05-10 23:00:00,66.3,60.795,31.013,29.662 +2020-05-10 23:15:00,67.7,58.853,31.013,29.662 +2020-05-10 23:30:00,66.26,57.341,31.013,29.662 +2020-05-10 23:45:00,66.87,56.893,31.013,29.662 +2020-05-11 00:00:00,68.36,49.586999999999996,31.174,29.775 +2020-05-11 00:15:00,71.71,48.857,31.174,29.775 +2020-05-11 00:30:00,71.93,47.37,31.174,29.775 +2020-05-11 00:45:00,68.14,45.806999999999995,31.174,29.775 +2020-05-11 01:00:00,62.71,46.325,29.663,29.775 +2020-05-11 01:15:00,63.59,45.534,29.663,29.775 +2020-05-11 01:30:00,63.09,43.979,29.663,29.775 +2020-05-11 01:45:00,66.91,43.59,29.663,29.775 +2020-05-11 02:00:00,71.05,44.325,28.793000000000003,29.775 +2020-05-11 02:15:00,71.22,42.299,28.793000000000003,29.775 +2020-05-11 02:30:00,67.29,45.268,28.793000000000003,29.775 +2020-05-11 02:45:00,64.47,45.673,28.793000000000003,29.775 +2020-05-11 03:00:00,65.55,49.538999999999994,27.728,29.775 +2020-05-11 03:15:00,66.79,48.979,27.728,29.775 +2020-05-11 03:30:00,67.95,48.162,27.728,29.775 +2020-05-11 03:45:00,74.12,49.006,27.728,29.775 +2020-05-11 04:00:00,80.04,60.865,29.266,29.775 +2020-05-11 04:15:00,81.67,71.962,29.266,29.775 +2020-05-11 04:30:00,80.33,71.131,29.266,29.775 +2020-05-11 04:45:00,81.18,71.55199999999999,29.266,29.775 +2020-05-11 05:00:00,89.03,96.06299999999999,37.889,29.775 +2020-05-11 05:15:00,93.69,120.575,37.889,29.775 +2020-05-11 05:30:00,95.84,110.10700000000001,37.889,29.775 +2020-05-11 05:45:00,103.12,102.885,37.889,29.775 +2020-05-11 06:00:00,109.88,104.07799999999999,55.485,29.775 +2020-05-11 06:15:00,110.72,106.779,55.485,29.775 +2020-05-11 06:30:00,107.23,104.19200000000001,55.485,29.775 +2020-05-11 06:45:00,105.05,105.00299999999999,55.485,29.775 +2020-05-11 07:00:00,107.77,106.0,65.765,29.775 +2020-05-11 07:15:00,109.31,106.066,65.765,29.775 +2020-05-11 07:30:00,106.64,103.68700000000001,65.765,29.775 +2020-05-11 07:45:00,108.08,101.87200000000001,65.765,29.775 +2020-05-11 08:00:00,112.88,97.49700000000001,56.745,29.775 +2020-05-11 08:15:00,110.39,98.29700000000001,56.745,29.775 +2020-05-11 08:30:00,108.45,95.244,56.745,29.775 +2020-05-11 08:45:00,105.26,96.137,56.745,29.775 +2020-05-11 09:00:00,105.56,89.617,53.321999999999996,29.775 +2020-05-11 09:15:00,103.65,87.292,53.321999999999996,29.775 +2020-05-11 09:30:00,103.56,88.97200000000001,53.321999999999996,29.775 +2020-05-11 09:45:00,106.22,88.381,53.321999999999996,29.775 +2020-05-11 10:00:00,102.45,85.273,51.309,29.775 +2020-05-11 10:15:00,103.67,86.678,51.309,29.775 +2020-05-11 10:30:00,103.32,86.024,51.309,29.775 +2020-05-11 10:45:00,101.26,85.666,51.309,29.775 +2020-05-11 11:00:00,99.43,81.113,50.415,29.775 +2020-05-11 11:15:00,98.15,82.15100000000001,50.415,29.775 +2020-05-11 11:30:00,98.64,84.656,50.415,29.775 +2020-05-11 11:45:00,96.79,84.916,50.415,29.775 +2020-05-11 12:00:00,96.52,82.369,48.273,29.775 +2020-05-11 12:15:00,96.68,83.20299999999999,48.273,29.775 +2020-05-11 12:30:00,95.66,80.89699999999999,48.273,29.775 +2020-05-11 12:45:00,95.11,81.42,48.273,29.775 +2020-05-11 13:00:00,94.53,83.427,48.452,29.775 +2020-05-11 13:15:00,101.79,82.205,48.452,29.775 +2020-05-11 13:30:00,101.81,79.762,48.452,29.775 +2020-05-11 13:45:00,100.1,78.861,48.452,29.775 +2020-05-11 14:00:00,93.14,80.579,48.35,29.775 +2020-05-11 14:15:00,93.8,79.82300000000001,48.35,29.775 +2020-05-11 14:30:00,92.72,78.492,48.35,29.775 +2020-05-11 14:45:00,95.44,79.55,48.35,29.775 +2020-05-11 15:00:00,93.18,81.13600000000001,48.838,29.775 +2020-05-11 15:15:00,91.76,78.321,48.838,29.775 +2020-05-11 15:30:00,93.36,77.204,48.838,29.775 +2020-05-11 15:45:00,94.72,75.90899999999999,48.838,29.775 +2020-05-11 16:00:00,95.88,77.11399999999999,50.873000000000005,29.775 +2020-05-11 16:15:00,96.96,76.11,50.873000000000005,29.775 +2020-05-11 16:30:00,99.03,75.937,50.873000000000005,29.775 +2020-05-11 16:45:00,101.19,72.03,50.873000000000005,29.775 +2020-05-11 17:00:00,103.98,72.402,56.637,29.775 +2020-05-11 17:15:00,104.09,73.51,56.637,29.775 +2020-05-11 17:30:00,105.88,74.139,56.637,29.775 +2020-05-11 17:45:00,105.66,74.80199999999999,56.637,29.775 +2020-05-11 18:00:00,106.65,75.36399999999999,56.35,29.775 +2020-05-11 18:15:00,105.32,75.806,56.35,29.775 +2020-05-11 18:30:00,112.4,74.733,56.35,29.775 +2020-05-11 18:45:00,113.9,80.008,56.35,29.775 +2020-05-11 19:00:00,103.24,78.153,56.023,29.775 +2020-05-11 19:15:00,99.4,77.52,56.023,29.775 +2020-05-11 19:30:00,100.03,77.965,56.023,29.775 +2020-05-11 19:45:00,99.47,78.46300000000001,56.023,29.775 +2020-05-11 20:00:00,100.76,76.457,62.372,29.775 +2020-05-11 20:15:00,98.44,75.921,62.372,29.775 +2020-05-11 20:30:00,97.74,74.20100000000001,62.372,29.775 +2020-05-11 20:45:00,96.87,74.044,62.372,29.775 +2020-05-11 21:00:00,95.03,71.687,57.516999999999996,29.775 +2020-05-11 21:15:00,93.92,73.28399999999999,57.516999999999996,29.775 +2020-05-11 21:30:00,95.99,73.58,57.516999999999996,29.775 +2020-05-11 21:45:00,94.93,73.828,57.516999999999996,29.775 +2020-05-11 22:00:00,89.61,71.101,51.823,29.775 +2020-05-11 22:15:00,82.35,71.01100000000001,51.823,29.775 +2020-05-11 22:30:00,85.45,61.678999999999995,51.823,29.775 +2020-05-11 22:45:00,85.91,57.555,51.823,29.775 +2020-05-11 23:00:00,82.2,51.543,43.832,29.775 +2020-05-11 23:15:00,78.11,49.298,43.832,29.775 +2020-05-11 23:30:00,80.04,48.743,43.832,29.775 +2020-05-11 23:45:00,81.09,48.815,43.832,29.775 +2020-05-12 00:00:00,78.75,47.239,42.371,29.775 +2020-05-12 00:15:00,74.73,47.705,42.371,29.775 +2020-05-12 00:30:00,75.86,46.446000000000005,42.371,29.775 +2020-05-12 00:45:00,79.25,45.168,42.371,29.775 +2020-05-12 01:00:00,77.81,45.195,39.597,29.775 +2020-05-12 01:15:00,76.91,44.31100000000001,39.597,29.775 +2020-05-12 01:30:00,71.67,42.696999999999996,39.597,29.775 +2020-05-12 01:45:00,78.35,42.011,39.597,29.775 +2020-05-12 02:00:00,78.21,42.357,38.298,29.775 +2020-05-12 02:15:00,77.57,41.191,38.298,29.775 +2020-05-12 02:30:00,70.31,43.653,38.298,29.775 +2020-05-12 02:45:00,70.29,44.328,38.298,29.775 +2020-05-12 03:00:00,71.96,47.341,37.884,29.775 +2020-05-12 03:15:00,73.12,47.2,37.884,29.775 +2020-05-12 03:30:00,74.65,46.527,37.884,29.775 +2020-05-12 03:45:00,76.43,46.586000000000006,37.884,29.775 +2020-05-12 04:00:00,82.71,57.331,39.442,29.775 +2020-05-12 04:15:00,87.45,68.267,39.442,29.775 +2020-05-12 04:30:00,90.35,67.226,39.442,29.775 +2020-05-12 04:45:00,87.36,68.453,39.442,29.775 +2020-05-12 05:00:00,92.61,95.80799999999999,43.608000000000004,29.775 +2020-05-12 05:15:00,95.01,120.62100000000001,43.608000000000004,29.775 +2020-05-12 05:30:00,97.1,109.846,43.608000000000004,29.775 +2020-05-12 05:45:00,99.06,102.089,43.608000000000004,29.775 +2020-05-12 06:00:00,104.0,103.76,54.99100000000001,29.775 +2020-05-12 06:15:00,104.83,107.14399999999999,54.99100000000001,29.775 +2020-05-12 06:30:00,107.38,104.08200000000001,54.99100000000001,29.775 +2020-05-12 06:45:00,107.97,104.059,54.99100000000001,29.775 +2020-05-12 07:00:00,108.87,105.101,66.217,29.775 +2020-05-12 07:15:00,110.38,104.91,66.217,29.775 +2020-05-12 07:30:00,109.05,102.322,66.217,29.775 +2020-05-12 07:45:00,113.65,99.833,66.217,29.775 +2020-05-12 08:00:00,108.2,95.444,60.151,29.775 +2020-05-12 08:15:00,103.72,95.56299999999999,60.151,29.775 +2020-05-12 08:30:00,103.77,92.559,60.151,29.775 +2020-05-12 08:45:00,104.97,92.65899999999999,60.151,29.775 +2020-05-12 09:00:00,109.3,86.09100000000001,53.873000000000005,29.775 +2020-05-12 09:15:00,106.31,84.264,53.873000000000005,29.775 +2020-05-12 09:30:00,107.3,86.738,53.873000000000005,29.775 +2020-05-12 09:45:00,105.8,87.12700000000001,53.873000000000005,29.775 +2020-05-12 10:00:00,103.34,82.756,51.417,29.775 +2020-05-12 10:15:00,109.67,83.676,51.417,29.775 +2020-05-12 10:30:00,105.75,83.12700000000001,51.417,29.775 +2020-05-12 10:45:00,108.2,83.65,51.417,29.775 +2020-05-12 11:00:00,106.71,79.682,50.43600000000001,29.775 +2020-05-12 11:15:00,107.35,80.905,50.43600000000001,29.775 +2020-05-12 11:30:00,110.29,82.086,50.43600000000001,29.775 +2020-05-12 11:45:00,120.56,82.305,50.43600000000001,29.775 +2020-05-12 12:00:00,127.19,79.093,47.468,29.775 +2020-05-12 12:15:00,125.28,80.00399999999999,47.468,29.775 +2020-05-12 12:30:00,115.59,78.583,47.468,29.775 +2020-05-12 12:45:00,116.61,79.493,47.468,29.775 +2020-05-12 13:00:00,118.57,81.10600000000001,48.453,29.775 +2020-05-12 13:15:00,118.1,81.064,48.453,29.775 +2020-05-12 13:30:00,109.12,79.085,48.453,29.775 +2020-05-12 13:45:00,111.48,77.554,48.453,29.775 +2020-05-12 14:00:00,124.56,79.757,48.435,29.775 +2020-05-12 14:15:00,123.29,78.90899999999999,48.435,29.775 +2020-05-12 14:30:00,118.12,78.03399999999999,48.435,29.775 +2020-05-12 14:45:00,118.02,78.485,48.435,29.775 +2020-05-12 15:00:00,121.42,79.819,49.966,29.775 +2020-05-12 15:15:00,120.43,77.8,49.966,29.775 +2020-05-12 15:30:00,116.21,76.589,49.966,29.775 +2020-05-12 15:45:00,114.12,75.368,49.966,29.775 +2020-05-12 16:00:00,113.27,76.267,51.184,29.775 +2020-05-12 16:15:00,110.03,75.498,51.184,29.775 +2020-05-12 16:30:00,113.31,75.309,51.184,29.775 +2020-05-12 16:45:00,110.3,71.995,51.184,29.775 +2020-05-12 17:00:00,113.37,72.785,56.138999999999996,29.775 +2020-05-12 17:15:00,113.49,74.193,56.138999999999996,29.775 +2020-05-12 17:30:00,116.69,74.74,56.138999999999996,29.775 +2020-05-12 17:45:00,114.28,75.071,56.138999999999996,29.775 +2020-05-12 18:00:00,119.23,74.863,57.038000000000004,29.775 +2020-05-12 18:15:00,118.62,76.265,57.038000000000004,29.775 +2020-05-12 18:30:00,115.63,74.863,57.038000000000004,29.775 +2020-05-12 18:45:00,111.37,80.283,57.038000000000004,29.775 +2020-05-12 19:00:00,112.68,77.525,56.492,29.775 +2020-05-12 19:15:00,112.7,76.933,56.492,29.775 +2020-05-12 19:30:00,108.78,76.973,56.492,29.775 +2020-05-12 19:45:00,103.96,77.756,56.492,29.775 +2020-05-12 20:00:00,102.83,76.097,62.534,29.775 +2020-05-12 20:15:00,99.27,74.208,62.534,29.775 +2020-05-12 20:30:00,100.18,72.914,62.534,29.775 +2020-05-12 20:45:00,106.01,72.91199999999999,62.534,29.775 +2020-05-12 21:00:00,98.91,70.986,55.506,29.775 +2020-05-12 21:15:00,97.97,71.77199999999999,55.506,29.775 +2020-05-12 21:30:00,90.65,71.925,55.506,29.775 +2020-05-12 21:45:00,87.9,72.434,55.506,29.775 +2020-05-12 22:00:00,89.08,70.472,51.472,29.775 +2020-05-12 22:15:00,88.65,70.043,51.472,29.775 +2020-05-12 22:30:00,85.02,60.961000000000006,51.472,29.775 +2020-05-12 22:45:00,79.11,56.92100000000001,51.472,29.775 +2020-05-12 23:00:00,74.3,50.28,44.593,29.775 +2020-05-12 23:15:00,77.56,48.982,44.593,29.775 +2020-05-12 23:30:00,74.7,48.299,44.593,29.775 +2020-05-12 23:45:00,74.02,48.355,44.593,29.775 +2020-05-13 00:00:00,77.65,46.93,41.978,29.775 +2020-05-13 00:15:00,79.78,47.406000000000006,41.978,29.775 +2020-05-13 00:30:00,79.02,46.145,41.978,29.775 +2020-05-13 00:45:00,74.67,44.873000000000005,41.978,29.775 +2020-05-13 01:00:00,70.45,44.906000000000006,38.59,29.775 +2020-05-13 01:15:00,75.07,43.998999999999995,38.59,29.775 +2020-05-13 01:30:00,76.59,42.369,38.59,29.775 +2020-05-13 01:45:00,78.3,41.681000000000004,38.59,29.775 +2020-05-13 02:00:00,73.41,42.021,36.23,29.775 +2020-05-13 02:15:00,70.67,40.841,36.23,29.775 +2020-05-13 02:30:00,69.26,43.31399999999999,36.23,29.775 +2020-05-13 02:45:00,70.7,43.997,36.23,29.775 +2020-05-13 03:00:00,72.64,47.019,35.867,29.775 +2020-05-13 03:15:00,72.13,46.858999999999995,35.867,29.775 +2020-05-13 03:30:00,73.68,46.188,35.867,29.775 +2020-05-13 03:45:00,77.49,46.271,35.867,29.775 +2020-05-13 04:00:00,80.21,56.97,36.75,29.775 +2020-05-13 04:15:00,87.8,67.86,36.75,29.775 +2020-05-13 04:30:00,91.75,66.811,36.75,29.775 +2020-05-13 04:45:00,96.22,68.03,36.75,29.775 +2020-05-13 05:00:00,96.43,95.272,40.461,29.775 +2020-05-13 05:15:00,98.98,119.954,40.461,29.775 +2020-05-13 05:30:00,102.79,109.227,40.461,29.775 +2020-05-13 05:45:00,105.22,101.527,40.461,29.775 +2020-05-13 06:00:00,111.07,103.219,55.481,29.775 +2020-05-13 06:15:00,111.37,106.58,55.481,29.775 +2020-05-13 06:30:00,115.97,103.52,55.481,29.775 +2020-05-13 06:45:00,119.83,103.505,55.481,29.775 +2020-05-13 07:00:00,123.06,104.54,68.45,29.775 +2020-05-13 07:15:00,124.82,104.348,68.45,29.775 +2020-05-13 07:30:00,124.87,101.734,68.45,29.775 +2020-05-13 07:45:00,126.18,99.264,68.45,29.775 +2020-05-13 08:00:00,124.84,94.87200000000001,60.885,29.775 +2020-05-13 08:15:00,125.61,95.03299999999999,60.885,29.775 +2020-05-13 08:30:00,127.05,92.01299999999999,60.885,29.775 +2020-05-13 08:45:00,130.24,92.135,60.885,29.775 +2020-05-13 09:00:00,129.22,85.56700000000001,56.887,29.775 +2020-05-13 09:15:00,132.69,83.745,56.887,29.775 +2020-05-13 09:30:00,132.0,86.23,56.887,29.775 +2020-05-13 09:45:00,133.26,86.65,56.887,29.775 +2020-05-13 10:00:00,132.15,82.288,54.401,29.775 +2020-05-13 10:15:00,133.61,83.245,54.401,29.775 +2020-05-13 10:30:00,132.7,82.713,54.401,29.775 +2020-05-13 10:45:00,129.86,83.25200000000001,54.401,29.775 +2020-05-13 11:00:00,125.77,79.27600000000001,53.678000000000004,29.775 +2020-05-13 11:15:00,124.22,80.518,53.678000000000004,29.775 +2020-05-13 11:30:00,132.15,81.693,53.678000000000004,29.775 +2020-05-13 11:45:00,134.23,81.925,53.678000000000004,29.775 +2020-05-13 12:00:00,133.92,78.745,51.68,29.775 +2020-05-13 12:15:00,126.49,79.66,51.68,29.775 +2020-05-13 12:30:00,126.47,78.203,51.68,29.775 +2020-05-13 12:45:00,126.1,79.117,51.68,29.775 +2020-05-13 13:00:00,122.35,80.75399999999999,51.263000000000005,29.775 +2020-05-13 13:15:00,121.6,80.712,51.263000000000005,29.775 +2020-05-13 13:30:00,115.7,78.74,51.263000000000005,29.775 +2020-05-13 13:45:00,116.2,77.212,51.263000000000005,29.775 +2020-05-13 14:00:00,122.46,79.46,51.107,29.775 +2020-05-13 14:15:00,118.59,78.6,51.107,29.775 +2020-05-13 14:30:00,107.28,77.684,51.107,29.775 +2020-05-13 14:45:00,98.18,78.138,51.107,29.775 +2020-05-13 15:00:00,97.87,79.513,51.498000000000005,29.775 +2020-05-13 15:15:00,105.19,77.479,51.498000000000005,29.775 +2020-05-13 15:30:00,108.25,76.236,51.498000000000005,29.775 +2020-05-13 15:45:00,112.75,74.999,51.498000000000005,29.775 +2020-05-13 16:00:00,115.28,75.942,53.376999999999995,29.775 +2020-05-13 16:15:00,121.08,75.155,53.376999999999995,29.775 +2020-05-13 16:30:00,127.19,74.976,53.376999999999995,29.775 +2020-05-13 16:45:00,124.65,71.605,53.376999999999995,29.775 +2020-05-13 17:00:00,116.0,72.441,56.965,29.775 +2020-05-13 17:15:00,118.64,73.824,56.965,29.775 +2020-05-13 17:30:00,119.77,74.36,56.965,29.775 +2020-05-13 17:45:00,121.03,74.661,56.965,29.775 +2020-05-13 18:00:00,116.2,74.469,58.231,29.775 +2020-05-13 18:15:00,110.61,75.866,58.231,29.775 +2020-05-13 18:30:00,111.68,74.452,58.231,29.775 +2020-05-13 18:45:00,115.74,79.872,58.231,29.775 +2020-05-13 19:00:00,115.72,77.115,58.865,29.775 +2020-05-13 19:15:00,108.85,76.52199999999999,58.865,29.775 +2020-05-13 19:30:00,105.3,76.563,58.865,29.775 +2020-05-13 19:45:00,108.65,77.355,58.865,29.775 +2020-05-13 20:00:00,108.52,75.672,65.605,29.775 +2020-05-13 20:15:00,107.64,73.78399999999999,65.605,29.775 +2020-05-13 20:30:00,103.12,72.518,65.605,29.775 +2020-05-13 20:45:00,101.58,72.55199999999999,65.605,29.775 +2020-05-13 21:00:00,99.72,70.63,58.083999999999996,29.775 +2020-05-13 21:15:00,98.92,71.432,58.083999999999996,29.775 +2020-05-13 21:30:00,96.57,71.565,58.083999999999996,29.775 +2020-05-13 21:45:00,89.44,72.09899999999999,58.083999999999996,29.775 +2020-05-13 22:00:00,85.38,70.156,53.243,29.775 +2020-05-13 22:15:00,89.96,69.749,53.243,29.775 +2020-05-13 22:30:00,86.78,60.653,53.243,29.775 +2020-05-13 22:45:00,85.75,56.601000000000006,53.243,29.775 +2020-05-13 23:00:00,75.39,49.934,44.283,29.775 +2020-05-13 23:15:00,74.31,48.676,44.283,29.775 +2020-05-13 23:30:00,74.53,47.994,44.283,29.775 +2020-05-13 23:45:00,72.86,48.048,44.283,29.775 +2020-05-14 00:00:00,69.32,46.623000000000005,40.219,29.775 +2020-05-14 00:15:00,70.84,47.11,40.219,29.775 +2020-05-14 00:30:00,69.79,45.847,40.219,29.775 +2020-05-14 00:45:00,70.68,44.582,40.219,29.775 +2020-05-14 01:00:00,70.16,44.619,37.959,29.775 +2020-05-14 01:15:00,69.63,43.68899999999999,37.959,29.775 +2020-05-14 01:30:00,70.15,42.043,37.959,29.775 +2020-05-14 01:45:00,70.69,41.355,37.959,29.775 +2020-05-14 02:00:00,69.83,41.687,36.113,29.775 +2020-05-14 02:15:00,70.46,40.495,36.113,29.775 +2020-05-14 02:30:00,71.03,42.979,36.113,29.775 +2020-05-14 02:45:00,70.72,43.668,36.113,29.775 +2020-05-14 03:00:00,71.24,46.7,35.546,29.775 +2020-05-14 03:15:00,72.5,46.523999999999994,35.546,29.775 +2020-05-14 03:30:00,73.71,45.853,35.546,29.775 +2020-05-14 03:45:00,75.65,45.958999999999996,35.546,29.775 +2020-05-14 04:00:00,79.12,56.613,37.169000000000004,29.775 +2020-05-14 04:15:00,79.46,67.456,37.169000000000004,29.775 +2020-05-14 04:30:00,82.89,66.40100000000001,37.169000000000004,29.775 +2020-05-14 04:45:00,85.82,67.613,37.169000000000004,29.775 +2020-05-14 05:00:00,95.94,94.743,41.233000000000004,29.775 +2020-05-14 05:15:00,98.55,119.294,41.233000000000004,29.775 +2020-05-14 05:30:00,99.72,108.61399999999999,41.233000000000004,29.775 +2020-05-14 05:45:00,102.92,100.969,41.233000000000004,29.775 +2020-05-14 06:00:00,110.05,102.68299999999999,52.57,29.775 +2020-05-14 06:15:00,112.59,106.021,52.57,29.775 +2020-05-14 06:30:00,116.11,102.962,52.57,29.775 +2020-05-14 06:45:00,118.57,102.956,52.57,29.775 +2020-05-14 07:00:00,121.86,103.98200000000001,64.53,29.775 +2020-05-14 07:15:00,122.71,103.792,64.53,29.775 +2020-05-14 07:30:00,123.27,101.15100000000001,64.53,29.775 +2020-05-14 07:45:00,125.08,98.7,64.53,29.775 +2020-05-14 08:00:00,124.66,94.306,55.911,29.775 +2020-05-14 08:15:00,124.04,94.51,55.911,29.775 +2020-05-14 08:30:00,126.3,91.473,55.911,29.775 +2020-05-14 08:45:00,127.75,91.618,55.911,29.775 +2020-05-14 09:00:00,125.81,85.04799999999999,50.949,29.775 +2020-05-14 09:15:00,127.78,83.234,50.949,29.775 +2020-05-14 09:30:00,127.51,85.727,50.949,29.775 +2020-05-14 09:45:00,129.58,86.179,50.949,29.775 +2020-05-14 10:00:00,129.11,81.82600000000001,48.136,29.775 +2020-05-14 10:15:00,129.29,82.819,48.136,29.775 +2020-05-14 10:30:00,129.5,82.303,48.136,29.775 +2020-05-14 10:45:00,130.85,82.85600000000001,48.136,29.775 +2020-05-14 11:00:00,127.65,78.875,46.643,29.775 +2020-05-14 11:15:00,126.84,80.135,46.643,29.775 +2020-05-14 11:30:00,124.7,81.304,46.643,29.775 +2020-05-14 11:45:00,126.76,81.54899999999999,46.643,29.775 +2020-05-14 12:00:00,124.85,78.4,44.098,29.775 +2020-05-14 12:15:00,122.87,79.321,44.098,29.775 +2020-05-14 12:30:00,122.4,77.82600000000001,44.098,29.775 +2020-05-14 12:45:00,118.93,78.745,44.098,29.775 +2020-05-14 13:00:00,117.21,80.405,43.717,29.775 +2020-05-14 13:15:00,120.11,80.363,43.717,29.775 +2020-05-14 13:30:00,119.68,78.4,43.717,29.775 +2020-05-14 13:45:00,123.45,76.874,43.717,29.775 +2020-05-14 14:00:00,125.18,79.166,44.218999999999994,29.775 +2020-05-14 14:15:00,124.9,78.294,44.218999999999994,29.775 +2020-05-14 14:30:00,118.8,77.33800000000001,44.218999999999994,29.775 +2020-05-14 14:45:00,111.7,77.794,44.218999999999994,29.775 +2020-05-14 15:00:00,111.77,79.21,46.159,29.775 +2020-05-14 15:15:00,115.84,77.15899999999999,46.159,29.775 +2020-05-14 15:30:00,116.18,75.887,46.159,29.775 +2020-05-14 15:45:00,115.11,74.634,46.159,29.775 +2020-05-14 16:00:00,111.0,75.619,47.115,29.775 +2020-05-14 16:15:00,111.54,74.814,47.115,29.775 +2020-05-14 16:30:00,116.27,74.64699999999999,47.115,29.775 +2020-05-14 16:45:00,116.72,71.22,47.115,29.775 +2020-05-14 17:00:00,114.96,72.101,50.827,29.775 +2020-05-14 17:15:00,108.11,73.459,50.827,29.775 +2020-05-14 17:30:00,108.02,73.984,50.827,29.775 +2020-05-14 17:45:00,108.53,74.25399999999999,50.827,29.775 +2020-05-14 18:00:00,109.63,74.078,52.586000000000006,29.775 +2020-05-14 18:15:00,108.24,75.471,52.586000000000006,29.775 +2020-05-14 18:30:00,113.52,74.045,52.586000000000006,29.775 +2020-05-14 18:45:00,109.72,79.467,52.586000000000006,29.775 +2020-05-14 19:00:00,112.3,76.709,51.886,29.775 +2020-05-14 19:15:00,106.96,76.115,51.886,29.775 +2020-05-14 19:30:00,106.72,76.158,51.886,29.775 +2020-05-14 19:45:00,107.78,76.959,51.886,29.775 +2020-05-14 20:00:00,105.58,75.251,56.162,29.775 +2020-05-14 20:15:00,99.35,73.365,56.162,29.775 +2020-05-14 20:30:00,102.93,72.126,56.162,29.775 +2020-05-14 20:45:00,105.28,72.195,56.162,29.775 +2020-05-14 21:00:00,103.12,70.278,53.023,29.775 +2020-05-14 21:15:00,99.97,71.095,53.023,29.775 +2020-05-14 21:30:00,93.22,71.209,53.023,29.775 +2020-05-14 21:45:00,93.97,71.766,53.023,29.775 +2020-05-14 22:00:00,90.52,69.846,49.303999999999995,29.775 +2020-05-14 22:15:00,90.9,69.455,49.303999999999995,29.775 +2020-05-14 22:30:00,84.63,60.348,49.303999999999995,29.775 +2020-05-14 22:45:00,88.26,56.285,49.303999999999995,29.775 +2020-05-14 23:00:00,82.53,49.589,43.409,29.775 +2020-05-14 23:15:00,81.52,48.373000000000005,43.409,29.775 +2020-05-14 23:30:00,75.59,47.691,43.409,29.775 +2020-05-14 23:45:00,81.48,47.743,43.409,29.775 +2020-05-15 00:00:00,78.17,44.512,39.884,29.775 +2020-05-15 00:15:00,78.44,45.251999999999995,39.884,29.775 +2020-05-15 00:30:00,73.49,44.153,39.884,29.775 +2020-05-15 00:45:00,78.17,43.27,39.884,29.775 +2020-05-15 01:00:00,78.18,42.896,37.658,29.775 +2020-05-15 01:15:00,78.15,41.803000000000004,37.658,29.775 +2020-05-15 01:30:00,71.38,40.624,37.658,29.775 +2020-05-15 01:45:00,77.87,39.775999999999996,37.658,29.775 +2020-05-15 02:00:00,77.41,40.869,36.707,29.775 +2020-05-15 02:15:00,78.35,39.583,36.707,29.775 +2020-05-15 02:30:00,73.66,42.92,36.707,29.775 +2020-05-15 02:45:00,70.89,43.092,36.707,29.775 +2020-05-15 03:00:00,72.47,46.383,37.025,29.775 +2020-05-15 03:15:00,72.41,45.57899999999999,37.025,29.775 +2020-05-15 03:30:00,73.92,44.714,37.025,29.775 +2020-05-15 03:45:00,77.06,45.655,37.025,29.775 +2020-05-15 04:00:00,81.51,56.457,38.349000000000004,29.775 +2020-05-15 04:15:00,79.37,65.932,38.349000000000004,29.775 +2020-05-15 04:30:00,82.59,65.705,38.349000000000004,29.775 +2020-05-15 04:45:00,85.66,65.982,38.349000000000004,29.775 +2020-05-15 05:00:00,95.76,92.154,41.565,29.775 +2020-05-15 05:15:00,97.85,117.869,41.565,29.775 +2020-05-15 05:30:00,101.38,107.76899999999999,41.565,29.775 +2020-05-15 05:45:00,103.44,99.796,41.565,29.775 +2020-05-15 06:00:00,108.63,101.87700000000001,53.861000000000004,29.775 +2020-05-15 06:15:00,111.05,104.807,53.861000000000004,29.775 +2020-05-15 06:30:00,114.06,101.404,53.861000000000004,29.775 +2020-05-15 06:45:00,116.5,101.876,53.861000000000004,29.775 +2020-05-15 07:00:00,118.58,103.118,63.497,29.775 +2020-05-15 07:15:00,119.62,104.01899999999999,63.497,29.775 +2020-05-15 07:30:00,123.22,99.75399999999999,63.497,29.775 +2020-05-15 07:45:00,121.51,96.83,63.497,29.775 +2020-05-15 08:00:00,120.07,92.62799999999999,55.43899999999999,29.775 +2020-05-15 08:15:00,120.52,93.241,55.43899999999999,29.775 +2020-05-15 08:30:00,121.85,90.48700000000001,55.43899999999999,29.775 +2020-05-15 08:45:00,123.22,89.939,55.43899999999999,29.775 +2020-05-15 09:00:00,120.17,81.768,52.132,29.775 +2020-05-15 09:15:00,120.79,81.646,52.132,29.775 +2020-05-15 09:30:00,120.3,83.456,52.132,29.775 +2020-05-15 09:45:00,121.98,84.19,52.132,29.775 +2020-05-15 10:00:00,122.01,79.236,49.881,29.775 +2020-05-15 10:15:00,122.16,80.387,49.881,29.775 +2020-05-15 10:30:00,125.08,80.267,49.881,29.775 +2020-05-15 10:45:00,121.4,80.583,49.881,29.775 +2020-05-15 11:00:00,118.56,76.764,49.396,29.775 +2020-05-15 11:15:00,117.53,76.866,49.396,29.775 +2020-05-15 11:30:00,115.03,78.49,49.396,29.775 +2020-05-15 11:45:00,117.11,78.059,49.396,29.775 +2020-05-15 12:00:00,113.62,75.738,46.7,29.775 +2020-05-15 12:15:00,112.54,75.296,46.7,29.775 +2020-05-15 12:30:00,109.67,73.919,46.7,29.775 +2020-05-15 12:45:00,110.33,74.495,46.7,29.775 +2020-05-15 13:00:00,105.34,76.998,44.05,29.775 +2020-05-15 13:15:00,104.26,77.437,44.05,29.775 +2020-05-15 13:30:00,101.89,76.069,44.05,29.775 +2020-05-15 13:45:00,103.1,74.741,44.05,29.775 +2020-05-15 14:00:00,99.61,76.006,42.805,29.775 +2020-05-15 14:15:00,96.97,75.365,42.805,29.775 +2020-05-15 14:30:00,94.75,75.683,42.805,29.775 +2020-05-15 14:45:00,93.73,75.768,42.805,29.775 +2020-05-15 15:00:00,96.11,76.961,44.36600000000001,29.775 +2020-05-15 15:15:00,94.15,74.533,44.36600000000001,29.775 +2020-05-15 15:30:00,94.02,72.171,44.36600000000001,29.775 +2020-05-15 15:45:00,94.72,71.51899999999999,44.36600000000001,29.775 +2020-05-15 16:00:00,96.97,71.47399999999999,46.928999999999995,29.775 +2020-05-15 16:15:00,96.61,71.137,46.928999999999995,29.775 +2020-05-15 16:30:00,99.35,70.885,46.928999999999995,29.775 +2020-05-15 16:45:00,100.89,66.767,46.928999999999995,29.775 +2020-05-15 17:00:00,107.94,69.078,51.468,29.775 +2020-05-15 17:15:00,103.98,70.115,51.468,29.775 +2020-05-15 17:30:00,103.89,70.623,51.468,29.775 +2020-05-15 17:45:00,105.25,70.645,51.468,29.775 +2020-05-15 18:00:00,106.7,70.852,52.58,29.775 +2020-05-15 18:15:00,104.83,71.363,52.58,29.775 +2020-05-15 18:30:00,111.99,69.997,52.58,29.775 +2020-05-15 18:45:00,112.9,75.74,52.58,29.775 +2020-05-15 19:00:00,111.75,74.04899999999999,52.183,29.775 +2020-05-15 19:15:00,103.98,74.419,52.183,29.775 +2020-05-15 19:30:00,101.92,74.359,52.183,29.775 +2020-05-15 19:45:00,98.71,74.2,52.183,29.775 +2020-05-15 20:00:00,97.62,72.35,58.497,29.775 +2020-05-15 20:15:00,103.82,71.09,58.497,29.775 +2020-05-15 20:30:00,102.75,69.482,58.497,29.775 +2020-05-15 20:45:00,100.04,69.16199999999999,58.497,29.775 +2020-05-15 21:00:00,88.18,68.469,54.731,29.775 +2020-05-15 21:15:00,88.72,70.771,54.731,29.775 +2020-05-15 21:30:00,85.61,70.765,54.731,29.775 +2020-05-15 21:45:00,83.9,71.708,54.731,29.775 +2020-05-15 22:00:00,82.78,70.062,51.386,29.775 +2020-05-15 22:15:00,84.75,69.445,51.386,29.775 +2020-05-15 22:30:00,82.82,66.408,51.386,29.775 +2020-05-15 22:45:00,80.16,64.311,51.386,29.775 +2020-05-15 23:00:00,71.33,58.746,44.463,29.775 +2020-05-15 23:15:00,70.6,55.622,44.463,29.775 +2020-05-15 23:30:00,69.36,52.972,44.463,29.775 +2020-05-15 23:45:00,70.97,52.681000000000004,44.463,29.775 +2020-05-16 00:00:00,74.15,36.794000000000004,42.833999999999996,29.662 +2020-05-16 00:15:00,73.98,35.758,42.833999999999996,29.662 +2020-05-16 00:30:00,71.46,34.895,42.833999999999996,29.662 +2020-05-16 00:45:00,69.22,33.669000000000004,42.833999999999996,29.662 +2020-05-16 01:00:00,72.75,33.125,37.859,29.662 +2020-05-16 01:15:00,75.46,32.548,37.859,29.662 +2020-05-16 01:30:00,69.76,30.769000000000002,37.859,29.662 +2020-05-16 01:45:00,65.29,30.721,37.859,29.662 +2020-05-16 02:00:00,67.91,30.855,35.327,29.662 +2020-05-16 02:15:00,70.65,28.666,35.327,29.662 +2020-05-16 02:30:00,70.38,30.735,35.327,29.662 +2020-05-16 02:45:00,64.65,31.566,35.327,29.662 +2020-05-16 03:00:00,63.24,33.628,34.908,29.662 +2020-05-16 03:15:00,64.63,30.669,34.908,29.662 +2020-05-16 03:30:00,65.46,29.659000000000002,34.908,29.662 +2020-05-16 03:45:00,65.23,31.218000000000004,34.908,29.662 +2020-05-16 04:00:00,62.15,39.24,34.84,29.662 +2020-05-16 04:15:00,61.52,47.104,34.84,29.662 +2020-05-16 04:30:00,61.86,43.983999999999995,34.84,29.662 +2020-05-16 04:45:00,62.99,44.071999999999996,34.84,29.662 +2020-05-16 05:00:00,64.2,57.34,34.222,29.662 +2020-05-16 05:15:00,64.4,64.827,34.222,29.662 +2020-05-16 05:30:00,63.92,55.413999999999994,34.222,29.662 +2020-05-16 05:45:00,66.28,53.871,34.222,29.662 +2020-05-16 06:00:00,69.14,69.734,35.515,29.662 +2020-05-16 06:15:00,69.45,82.39299999999999,35.515,29.662 +2020-05-16 06:30:00,71.81,75.32300000000001,35.515,29.662 +2020-05-16 06:45:00,72.47,70.584,35.515,29.662 +2020-05-16 07:00:00,73.5,68.16199999999999,39.687,29.662 +2020-05-16 07:15:00,74.27,67.108,39.687,29.662 +2020-05-16 07:30:00,75.61,64.484,39.687,29.662 +2020-05-16 07:45:00,78.65,63.838,39.687,29.662 +2020-05-16 08:00:00,77.98,59.902,44.9,29.662 +2020-05-16 08:15:00,77.32,62.077,44.9,29.662 +2020-05-16 08:30:00,76.53,61.327,44.9,29.662 +2020-05-16 08:45:00,77.34,63.946000000000005,44.9,29.662 +2020-05-16 09:00:00,78.57,61.705,45.724,29.662 +2020-05-16 09:15:00,78.98,62.68899999999999,45.724,29.662 +2020-05-16 09:30:00,74.87,65.62899999999999,45.724,29.662 +2020-05-16 09:45:00,76.27,66.71600000000001,45.724,29.662 +2020-05-16 10:00:00,78.95,63.416000000000004,43.123999999999995,29.662 +2020-05-16 10:15:00,81.25,64.873,43.123999999999995,29.662 +2020-05-16 10:30:00,84.8,64.884,43.123999999999995,29.662 +2020-05-16 10:45:00,82.3,65.693,43.123999999999995,29.662 +2020-05-16 11:00:00,82.79,61.979,40.255,29.662 +2020-05-16 11:15:00,83.53,62.608000000000004,40.255,29.662 +2020-05-16 11:30:00,79.48,64.295,40.255,29.662 +2020-05-16 11:45:00,74.97,64.98,40.255,29.662 +2020-05-16 12:00:00,68.37,60.761,38.582,29.662 +2020-05-16 12:15:00,68.21,60.949,38.582,29.662 +2020-05-16 12:30:00,66.19,60.332,38.582,29.662 +2020-05-16 12:45:00,65.99,61.598,38.582,29.662 +2020-05-16 13:00:00,65.29,62.047,36.043,29.662 +2020-05-16 13:15:00,66.66,62.114,36.043,29.662 +2020-05-16 13:30:00,65.2,60.93,36.043,29.662 +2020-05-16 13:45:00,65.57,58.292,36.043,29.662 +2020-05-16 14:00:00,65.77,58.663999999999994,35.216,29.662 +2020-05-16 14:15:00,65.43,56.394,35.216,29.662 +2020-05-16 14:30:00,67.17,56.395,35.216,29.662 +2020-05-16 14:45:00,69.52,56.943000000000005,35.216,29.662 +2020-05-16 15:00:00,68.76,57.736000000000004,36.759,29.662 +2020-05-16 15:15:00,70.34,55.881,36.759,29.662 +2020-05-16 15:30:00,68.44,53.98,36.759,29.662 +2020-05-16 15:45:00,69.99,51.562,36.759,29.662 +2020-05-16 16:00:00,72.09,54.672,40.086,29.662 +2020-05-16 16:15:00,70.51,54.178000000000004,40.086,29.662 +2020-05-16 16:30:00,72.95,53.538000000000004,40.086,29.662 +2020-05-16 16:45:00,72.75,49.865,40.086,29.662 +2020-05-16 17:00:00,75.24,52.239,44.876999999999995,29.662 +2020-05-16 17:15:00,76.28,51.114,44.876999999999995,29.662 +2020-05-16 17:30:00,78.78,50.931000000000004,44.876999999999995,29.662 +2020-05-16 17:45:00,80.15,50.091,44.876999999999995,29.662 +2020-05-16 18:00:00,84.39,54.299,47.056000000000004,29.662 +2020-05-16 18:15:00,81.11,56.321000000000005,47.056000000000004,29.662 +2020-05-16 18:30:00,81.76,55.763000000000005,47.056000000000004,29.662 +2020-05-16 18:45:00,84.97,57.4,47.056000000000004,29.662 +2020-05-16 19:00:00,81.21,57.782,45.57,29.662 +2020-05-16 19:15:00,78.11,56.823,45.57,29.662 +2020-05-16 19:30:00,77.61,57.25899999999999,45.57,29.662 +2020-05-16 19:45:00,76.99,58.424,45.57,29.662 +2020-05-16 20:00:00,76.78,57.797,41.685,29.662 +2020-05-16 20:15:00,77.96,57.528,41.685,29.662 +2020-05-16 20:30:00,77.7,55.493,41.685,29.662 +2020-05-16 20:45:00,79.72,56.248000000000005,41.685,29.662 +2020-05-16 21:00:00,74.4,54.181999999999995,39.576,29.662 +2020-05-16 21:15:00,73.65,57.01,39.576,29.662 +2020-05-16 21:30:00,70.78,58.263000000000005,39.576,29.662 +2020-05-16 21:45:00,71.05,58.636,39.576,29.662 +2020-05-16 22:00:00,66.23,56.073,39.068000000000005,29.662 +2020-05-16 22:15:00,66.59,57.24100000000001,39.068000000000005,29.662 +2020-05-16 22:30:00,64.33,56.806000000000004,39.068000000000005,29.662 +2020-05-16 22:45:00,63.23,55.815,39.068000000000005,29.662 +2020-05-16 23:00:00,59.53,51.784,32.06,29.662 +2020-05-16 23:15:00,59.33,47.72,32.06,29.662 +2020-05-16 23:30:00,58.61,46.766000000000005,32.06,29.662 +2020-05-16 23:45:00,58.55,45.958,32.06,29.662 +2020-05-17 00:00:00,55.99,37.921,28.825,29.662 +2020-05-17 00:15:00,56.4,35.736999999999995,28.825,29.662 +2020-05-17 00:30:00,55.85,34.657,28.825,29.662 +2020-05-17 00:45:00,55.56,33.474000000000004,28.825,29.662 +2020-05-17 01:00:00,53.93,33.169000000000004,25.995,29.662 +2020-05-17 01:15:00,54.71,32.666,25.995,29.662 +2020-05-17 01:30:00,54.49,30.851,25.995,29.662 +2020-05-17 01:45:00,53.85,30.375,25.995,29.662 +2020-05-17 02:00:00,53.53,30.426,24.394000000000002,29.662 +2020-05-17 02:15:00,54.42,28.711,24.394000000000002,29.662 +2020-05-17 02:30:00,54.27,31.146,24.394000000000002,29.662 +2020-05-17 02:45:00,53.9,31.805999999999997,24.394000000000002,29.662 +2020-05-17 03:00:00,54.33,34.554,22.916999999999998,29.662 +2020-05-17 03:15:00,54.73,31.721,22.916999999999998,29.662 +2020-05-17 03:30:00,56.27,30.311,22.916999999999998,29.662 +2020-05-17 03:45:00,54.77,31.133000000000003,22.916999999999998,29.662 +2020-05-17 04:00:00,51.22,39.014,23.576999999999998,29.662 +2020-05-17 04:15:00,51.74,46.203,23.576999999999998,29.662 +2020-05-17 04:30:00,50.38,44.345,23.576999999999998,29.662 +2020-05-17 04:45:00,50.63,44.044,23.576999999999998,29.662 +2020-05-17 05:00:00,49.16,56.647,22.730999999999998,29.662 +2020-05-17 05:15:00,49.68,62.77,22.730999999999998,29.662 +2020-05-17 05:30:00,49.0,53.008,22.730999999999998,29.662 +2020-05-17 05:45:00,49.52,51.318999999999996,22.730999999999998,29.662 +2020-05-17 06:00:00,50.22,64.92699999999999,22.34,29.662 +2020-05-17 06:15:00,50.56,78.017,22.34,29.662 +2020-05-17 06:30:00,50.65,70.086,22.34,29.662 +2020-05-17 06:45:00,51.26,64.217,22.34,29.662 +2020-05-17 07:00:00,51.72,62.525,24.691999999999997,29.662 +2020-05-17 07:15:00,52.05,59.75899999999999,24.691999999999997,29.662 +2020-05-17 07:30:00,52.11,58.062,24.691999999999997,29.662 +2020-05-17 07:45:00,51.69,57.25899999999999,24.691999999999997,29.662 +2020-05-17 08:00:00,52.0,54.4,29.340999999999998,29.662 +2020-05-17 08:15:00,51.74,57.711000000000006,29.340999999999998,29.662 +2020-05-17 08:30:00,50.65,58.111000000000004,29.340999999999998,29.662 +2020-05-17 08:45:00,50.24,61.091,29.340999999999998,29.662 +2020-05-17 09:00:00,49.9,58.648999999999994,30.788,29.662 +2020-05-17 09:15:00,50.08,59.297,30.788,29.662 +2020-05-17 09:30:00,49.35,62.619,30.788,29.662 +2020-05-17 09:45:00,49.73,64.649,30.788,29.662 +2020-05-17 10:00:00,51.82,62.388000000000005,30.158,29.662 +2020-05-17 10:15:00,54.08,64.119,30.158,29.662 +2020-05-17 10:30:00,54.15,64.479,30.158,29.662 +2020-05-17 10:45:00,54.12,65.82300000000001,30.158,29.662 +2020-05-17 11:00:00,50.69,61.978,32.056,29.662 +2020-05-17 11:15:00,49.03,62.24,32.056,29.662 +2020-05-17 11:30:00,44.51,64.207,32.056,29.662 +2020-05-17 11:45:00,46.44,65.27199999999999,32.056,29.662 +2020-05-17 12:00:00,43.04,61.916000000000004,28.671999999999997,29.662 +2020-05-17 12:15:00,42.65,61.971000000000004,28.671999999999997,29.662 +2020-05-17 12:30:00,41.87,61.183,28.671999999999997,29.662 +2020-05-17 12:45:00,41.91,61.653999999999996,28.671999999999997,29.662 +2020-05-17 13:00:00,41.33,61.688,23.171,29.662 +2020-05-17 13:15:00,41.6,61.905,23.171,29.662 +2020-05-17 13:30:00,42.2,59.663000000000004,23.171,29.662 +2020-05-17 13:45:00,41.31,57.903999999999996,23.171,29.662 +2020-05-17 14:00:00,42.39,59.47,19.11,29.662 +2020-05-17 14:15:00,42.99,57.854,19.11,29.662 +2020-05-17 14:30:00,43.09,56.96,19.11,29.662 +2020-05-17 14:45:00,43.63,56.438,19.11,29.662 +2020-05-17 15:00:00,44.32,57.077,19.689,29.662 +2020-05-17 15:15:00,44.44,54.631,19.689,29.662 +2020-05-17 15:30:00,44.86,52.67100000000001,19.689,29.662 +2020-05-17 15:45:00,47.06,50.652,19.689,29.662 +2020-05-17 16:00:00,49.45,52.661,22.875,29.662 +2020-05-17 16:15:00,50.16,52.172,22.875,29.662 +2020-05-17 16:30:00,52.1,52.534,22.875,29.662 +2020-05-17 16:45:00,55.36,48.893,22.875,29.662 +2020-05-17 17:00:00,60.0,51.653,33.884,29.662 +2020-05-17 17:15:00,60.6,51.835,33.884,29.662 +2020-05-17 17:30:00,65.61,52.448,33.884,29.662 +2020-05-17 17:45:00,64.53,52.451,33.884,29.662 +2020-05-17 18:00:00,68.54,57.073,38.453,29.662 +2020-05-17 18:15:00,66.66,58.964,38.453,29.662 +2020-05-17 18:30:00,69.58,57.735,38.453,29.662 +2020-05-17 18:45:00,66.98,59.857,38.453,29.662 +2020-05-17 19:00:00,68.34,62.187,39.221,29.662 +2020-05-17 19:15:00,67.78,60.285,39.221,29.662 +2020-05-17 19:30:00,66.98,60.448,39.221,29.662 +2020-05-17 19:45:00,67.29,61.458999999999996,39.221,29.662 +2020-05-17 20:00:00,68.66,61.008,37.871,29.662 +2020-05-17 20:15:00,68.42,60.806000000000004,37.871,29.662 +2020-05-17 20:30:00,71.45,59.808,37.871,29.662 +2020-05-17 20:45:00,70.32,58.785,37.871,29.662 +2020-05-17 21:00:00,68.35,56.067,36.465,29.662 +2020-05-17 21:15:00,67.62,58.501999999999995,36.465,29.662 +2020-05-17 21:30:00,65.42,59.177,36.465,29.662 +2020-05-17 21:45:00,64.94,59.942,36.465,29.662 +2020-05-17 22:00:00,61.02,59.086000000000006,36.092,29.662 +2020-05-17 22:15:00,61.21,58.535,36.092,29.662 +2020-05-17 22:30:00,59.51,56.996,36.092,29.662 +2020-05-17 22:45:00,58.72,54.622,36.092,29.662 +2020-05-17 23:00:00,70.52,49.718,31.013,29.662 +2020-05-17 23:15:00,70.67,47.265,31.013,29.662 +2020-05-17 23:30:00,71.07,45.965,31.013,29.662 +2020-05-17 23:45:00,71.64,45.471000000000004,31.013,29.662 +2020-05-18 00:00:00,69.55,39.926,31.174,29.775 +2020-05-18 00:15:00,70.53,39.082,31.174,29.775 +2020-05-18 00:30:00,69.8,37.664,31.174,29.775 +2020-05-18 00:45:00,70.41,36.007,31.174,29.775 +2020-05-18 01:00:00,68.21,36.088,29.663,29.775 +2020-05-18 01:15:00,68.54,35.468,29.663,29.775 +2020-05-18 01:30:00,70.13,33.989000000000004,29.663,29.775 +2020-05-18 01:45:00,71.47,33.439,29.663,29.775 +2020-05-18 02:00:00,71.14,33.912,28.793000000000003,29.775 +2020-05-18 02:15:00,70.93,31.521,28.793000000000003,29.775 +2020-05-18 02:30:00,70.27,34.186,28.793000000000003,29.775 +2020-05-18 02:45:00,71.97,34.594,28.793000000000003,29.775 +2020-05-18 03:00:00,71.3,38.082,27.728,29.775 +2020-05-18 03:15:00,70.0,36.243,27.728,29.775 +2020-05-18 03:30:00,70.97,35.424,27.728,29.775 +2020-05-18 03:45:00,73.44,35.727,27.728,29.775 +2020-05-18 04:00:00,77.39,47.346000000000004,29.266,29.775 +2020-05-18 04:15:00,78.56,58.068999999999996,29.266,29.775 +2020-05-18 04:30:00,79.66,56.18600000000001,29.266,29.775 +2020-05-18 04:45:00,83.67,56.26,29.266,29.775 +2020-05-18 05:00:00,91.78,78.305,37.889,29.775 +2020-05-18 05:15:00,95.73,97.86399999999999,37.889,29.775 +2020-05-18 05:30:00,97.75,86.74700000000001,37.889,29.775 +2020-05-18 05:45:00,99.8,81.139,37.889,29.775 +2020-05-18 06:00:00,105.24,81.69,55.485,29.775 +2020-05-18 06:15:00,107.97,83.287,55.485,29.775 +2020-05-18 06:30:00,108.48,80.672,55.485,29.775 +2020-05-18 06:45:00,108.17,81.521,55.485,29.775 +2020-05-18 07:00:00,108.28,80.867,65.765,29.775 +2020-05-18 07:15:00,108.08,80.506,65.765,29.775 +2020-05-18 07:30:00,108.87,77.82,65.765,29.775 +2020-05-18 07:45:00,109.39,76.815,65.765,29.775 +2020-05-18 08:00:00,109.39,71.055,56.745,29.775 +2020-05-18 08:15:00,107.51,72.851,56.745,29.775 +2020-05-18 08:30:00,106.6,71.499,56.745,29.775 +2020-05-18 08:45:00,105.11,74.01100000000001,56.745,29.775 +2020-05-18 09:00:00,104.7,70.43,53.321999999999996,29.775 +2020-05-18 09:15:00,104.4,68.692,53.321999999999996,29.775 +2020-05-18 09:30:00,104.55,70.94800000000001,53.321999999999996,29.775 +2020-05-18 09:45:00,105.86,70.934,53.321999999999996,29.775 +2020-05-18 10:00:00,104.56,68.959,51.309,29.775 +2020-05-18 10:15:00,105.63,70.516,51.309,29.775 +2020-05-18 10:30:00,106.46,70.271,51.309,29.775 +2020-05-18 10:45:00,105.73,70.328,51.309,29.775 +2020-05-18 11:00:00,103.62,66.137,50.415,29.775 +2020-05-18 11:15:00,102.43,67.071,50.415,29.775 +2020-05-18 11:30:00,102.2,69.97800000000001,50.415,29.775 +2020-05-18 11:45:00,100.97,71.42699999999999,50.415,29.775 +2020-05-18 12:00:00,99.99,67.039,48.273,29.775 +2020-05-18 12:15:00,99.53,67.203,48.273,29.775 +2020-05-18 12:30:00,97.76,65.457,48.273,29.775 +2020-05-18 12:45:00,98.7,66.28,48.273,29.775 +2020-05-18 13:00:00,96.87,67.222,48.452,29.775 +2020-05-18 13:15:00,99.09,66.321,48.452,29.775 +2020-05-18 13:30:00,97.98,64.128,48.452,29.775 +2020-05-18 13:45:00,98.34,63.196999999999996,48.452,29.775 +2020-05-18 14:00:00,96.84,63.848,48.35,29.775 +2020-05-18 14:15:00,97.88,62.621,48.35,29.775 +2020-05-18 14:30:00,97.61,61.413999999999994,48.35,29.775 +2020-05-18 14:45:00,97.53,62.787,48.35,29.775 +2020-05-18 15:00:00,95.98,63.553000000000004,48.838,29.775 +2020-05-18 15:15:00,94.89,60.226000000000006,48.838,29.775 +2020-05-18 15:30:00,96.64,58.75899999999999,48.838,29.775 +2020-05-18 15:45:00,97.73,56.178000000000004,48.838,29.775 +2020-05-18 16:00:00,99.47,59.169,50.873000000000005,29.775 +2020-05-18 16:15:00,100.16,58.563,50.873000000000005,29.775 +2020-05-18 16:30:00,103.58,58.114,50.873000000000005,29.775 +2020-05-18 16:45:00,103.44,54.181999999999995,50.873000000000005,29.775 +2020-05-18 17:00:00,105.33,55.906000000000006,56.637,29.775 +2020-05-18 17:15:00,106.15,56.206,56.637,29.775 +2020-05-18 17:30:00,106.58,56.32899999999999,56.637,29.775 +2020-05-18 17:45:00,107.9,55.603,56.637,29.775 +2020-05-18 18:00:00,107.24,59.253,56.35,29.775 +2020-05-18 18:15:00,106.38,58.951,56.35,29.775 +2020-05-18 18:30:00,111.23,57.136,56.35,29.775 +2020-05-18 18:45:00,112.74,62.372,56.35,29.775 +2020-05-18 19:00:00,107.03,64.04899999999999,56.023,29.775 +2020-05-18 19:15:00,99.04,63.17100000000001,56.023,29.775 +2020-05-18 19:30:00,100.51,63.076,56.023,29.775 +2020-05-18 19:45:00,98.68,63.343999999999994,56.023,29.775 +2020-05-18 20:00:00,97.75,61.221000000000004,62.372,29.775 +2020-05-18 20:15:00,100.39,61.84,62.372,29.775 +2020-05-18 20:30:00,101.96,60.983000000000004,62.372,29.775 +2020-05-18 20:45:00,101.2,60.535,62.372,29.775 +2020-05-18 21:00:00,94.45,57.338,57.516999999999996,29.775 +2020-05-18 21:15:00,93.17,59.972,57.516999999999996,29.775 +2020-05-18 21:30:00,92.14,60.852,57.516999999999996,29.775 +2020-05-18 21:45:00,93.04,61.336000000000006,57.516999999999996,29.775 +2020-05-18 22:00:00,87.62,58.005,51.823,29.775 +2020-05-18 22:15:00,84.34,59.095,51.823,29.775 +2020-05-18 22:30:00,84.14,51.568999999999996,51.823,29.775 +2020-05-18 22:45:00,84.14,48.211000000000006,51.823,29.775 +2020-05-18 23:00:00,65.96,43.48,43.832,29.775 +2020-05-18 23:15:00,68.87,40.029,43.832,29.775 +2020-05-18 23:30:00,68.41,39.236,43.832,29.775 +2020-05-18 23:45:00,64.7,38.741,43.832,29.775 +2020-05-19 00:00:00,62.8,37.38,42.371,29.775 +2020-05-19 00:15:00,66.9,37.645,42.371,29.775 +2020-05-19 00:30:00,66.25,36.715,42.371,29.775 +2020-05-19 00:45:00,63.82,35.619,42.371,29.775 +2020-05-19 01:00:00,61.03,35.165,39.597,29.775 +2020-05-19 01:15:00,66.87,34.537,39.597,29.775 +2020-05-19 01:30:00,67.1,32.953,39.597,29.775 +2020-05-19 01:45:00,66.73,31.971999999999998,39.597,29.775 +2020-05-19 02:00:00,63.92,31.985,38.298,29.775 +2020-05-19 02:15:00,67.6,30.656,38.298,29.775 +2020-05-19 02:30:00,66.14,32.842,38.298,29.775 +2020-05-19 02:45:00,65.87,33.571999999999996,38.298,29.775 +2020-05-19 03:00:00,63.27,36.298,37.884,29.775 +2020-05-19 03:15:00,69.81,35.164,37.884,29.775 +2020-05-19 03:30:00,72.41,34.414,37.884,29.775 +2020-05-19 03:45:00,66.55,33.728,37.884,29.775 +2020-05-19 04:00:00,67.08,44.04600000000001,39.442,29.775 +2020-05-19 04:15:00,68.59,54.656000000000006,39.442,29.775 +2020-05-19 04:30:00,73.0,52.583,39.442,29.775 +2020-05-19 04:45:00,76.72,53.357,39.442,29.775 +2020-05-19 05:00:00,85.35,77.723,43.608000000000004,29.775 +2020-05-19 05:15:00,88.34,97.675,43.608000000000004,29.775 +2020-05-19 05:30:00,91.29,86.52,43.608000000000004,29.775 +2020-05-19 05:45:00,94.03,80.278,43.608000000000004,29.775 +2020-05-19 06:00:00,99.55,81.65100000000001,54.99100000000001,29.775 +2020-05-19 06:15:00,99.82,83.715,54.99100000000001,29.775 +2020-05-19 06:30:00,100.65,80.687,54.99100000000001,29.775 +2020-05-19 06:45:00,100.88,80.633,54.99100000000001,29.775 +2020-05-19 07:00:00,103.61,80.07600000000001,66.217,29.775 +2020-05-19 07:15:00,103.66,79.44800000000001,66.217,29.775 +2020-05-19 07:30:00,103.58,76.64399999999999,66.217,29.775 +2020-05-19 07:45:00,101.83,74.78399999999999,66.217,29.775 +2020-05-19 08:00:00,102.87,68.985,60.151,29.775 +2020-05-19 08:15:00,101.22,70.19800000000001,60.151,29.775 +2020-05-19 08:30:00,101.29,68.957,60.151,29.775 +2020-05-19 08:45:00,100.42,70.559,60.151,29.775 +2020-05-19 09:00:00,103.99,67.12100000000001,53.873000000000005,29.775 +2020-05-19 09:15:00,100.42,65.592,53.873000000000005,29.775 +2020-05-19 09:30:00,100.05,68.646,53.873000000000005,29.775 +2020-05-19 09:45:00,101.34,69.88,53.873000000000005,29.775 +2020-05-19 10:00:00,100.74,66.505,51.417,29.775 +2020-05-19 10:15:00,102.9,67.732,51.417,29.775 +2020-05-19 10:30:00,103.08,67.561,51.417,29.775 +2020-05-19 10:45:00,102.7,68.632,51.417,29.775 +2020-05-19 11:00:00,103.54,64.76,50.43600000000001,29.775 +2020-05-19 11:15:00,99.89,66.014,50.43600000000001,29.775 +2020-05-19 11:30:00,99.47,67.587,50.43600000000001,29.775 +2020-05-19 11:45:00,100.32,68.785,50.43600000000001,29.775 +2020-05-19 12:00:00,97.16,63.95399999999999,47.468,29.775 +2020-05-19 12:15:00,97.84,64.34,47.468,29.775 +2020-05-19 12:30:00,97.67,63.512,47.468,29.775 +2020-05-19 12:45:00,98.46,64.913,47.468,29.775 +2020-05-19 13:00:00,96.91,65.453,48.453,29.775 +2020-05-19 13:15:00,99.44,66.146,48.453,29.775 +2020-05-19 13:30:00,97.7,64.196,48.453,29.775 +2020-05-19 13:45:00,98.33,62.413000000000004,48.453,29.775 +2020-05-19 14:00:00,97.24,63.581,48.435,29.775 +2020-05-19 14:15:00,95.83,62.196000000000005,48.435,29.775 +2020-05-19 14:30:00,96.03,61.394,48.435,29.775 +2020-05-19 14:45:00,95.48,62.022,48.435,29.775 +2020-05-19 15:00:00,94.77,62.601000000000006,49.966,29.775 +2020-05-19 15:15:00,94.41,60.18600000000001,49.966,29.775 +2020-05-19 15:30:00,96.22,58.551,49.966,29.775 +2020-05-19 15:45:00,94.47,56.185,49.966,29.775 +2020-05-19 16:00:00,94.85,58.66,51.184,29.775 +2020-05-19 16:15:00,96.76,58.223,51.184,29.775 +2020-05-19 16:30:00,99.86,57.58,51.184,29.775 +2020-05-19 16:45:00,104.67,54.323,51.184,29.775 +2020-05-19 17:00:00,103.7,56.407,56.138999999999996,29.775 +2020-05-19 17:15:00,102.17,57.08,56.138999999999996,29.775 +2020-05-19 17:30:00,106.22,56.923,56.138999999999996,29.775 +2020-05-19 17:45:00,104.6,55.821999999999996,56.138999999999996,29.775 +2020-05-19 18:00:00,106.74,58.563,57.038000000000004,29.775 +2020-05-19 18:15:00,105.62,59.54600000000001,57.038000000000004,29.775 +2020-05-19 18:30:00,113.35,57.408,57.038000000000004,29.775 +2020-05-19 18:45:00,112.87,62.621,57.038000000000004,29.775 +2020-05-19 19:00:00,108.17,63.18899999999999,56.492,29.775 +2020-05-19 19:15:00,98.13,62.423,56.492,29.775 +2020-05-19 19:30:00,97.16,61.989,56.492,29.775 +2020-05-19 19:45:00,103.23,62.583999999999996,56.492,29.775 +2020-05-19 20:00:00,95.97,60.846000000000004,62.534,29.775 +2020-05-19 20:15:00,100.72,59.967,62.534,29.775 +2020-05-19 20:30:00,104.92,59.372,62.534,29.775 +2020-05-19 20:45:00,104.57,59.255,62.534,29.775 +2020-05-19 21:00:00,94.39,56.748999999999995,55.506,29.775 +2020-05-19 21:15:00,97.34,58.178999999999995,55.506,29.775 +2020-05-19 21:30:00,94.26,59.06,55.506,29.775 +2020-05-19 21:45:00,93.63,59.801,55.506,29.775 +2020-05-19 22:00:00,84.19,56.99,51.472,29.775 +2020-05-19 22:15:00,82.79,57.728,51.472,29.775 +2020-05-19 22:30:00,80.26,50.5,51.472,29.775 +2020-05-19 22:45:00,86.14,47.177,51.472,29.775 +2020-05-19 23:00:00,84.68,41.677,44.593,29.775 +2020-05-19 23:15:00,80.74,39.588,44.593,29.775 +2020-05-19 23:30:00,76.55,38.729,44.593,29.775 +2020-05-19 23:45:00,76.25,38.312,44.593,29.775 +2020-05-20 00:00:00,78.51,37.128,41.978,29.775 +2020-05-20 00:15:00,80.48,37.399,41.978,29.775 +2020-05-20 00:30:00,78.67,36.468,41.978,29.775 +2020-05-20 00:45:00,72.51,35.376,41.978,29.775 +2020-05-20 01:00:00,71.79,34.94,38.59,29.775 +2020-05-20 01:15:00,77.65,34.286,38.59,29.775 +2020-05-20 01:30:00,78.37,32.689,38.59,29.775 +2020-05-20 01:45:00,79.71,31.704,38.59,29.775 +2020-05-20 02:00:00,73.24,31.713,36.23,29.775 +2020-05-20 02:15:00,78.37,30.373,36.23,29.775 +2020-05-20 02:30:00,79.12,32.566,36.23,29.775 +2020-05-20 02:45:00,77.08,33.304,36.23,29.775 +2020-05-20 03:00:00,75.21,36.037,35.867,29.775 +2020-05-20 03:15:00,78.88,34.891999999999996,35.867,29.775 +2020-05-20 03:30:00,81.38,34.144,35.867,29.775 +2020-05-20 03:45:00,80.54,33.484,35.867,29.775 +2020-05-20 04:00:00,75.73,43.74100000000001,36.75,29.775 +2020-05-20 04:15:00,76.72,54.297,36.75,29.775 +2020-05-20 04:30:00,80.9,52.211000000000006,36.75,29.775 +2020-05-20 04:45:00,86.16,52.978,36.75,29.775 +2020-05-20 05:00:00,93.21,77.21,40.461,29.775 +2020-05-20 05:15:00,95.42,96.999,40.461,29.775 +2020-05-20 05:30:00,99.77,85.91,40.461,29.775 +2020-05-20 05:45:00,101.34,79.735,40.461,29.775 +2020-05-20 06:00:00,101.76,81.133,55.481,29.775 +2020-05-20 06:15:00,101.28,83.171,55.481,29.775 +2020-05-20 06:30:00,104.28,80.161,55.481,29.775 +2020-05-20 06:45:00,105.05,80.12899999999999,55.481,29.775 +2020-05-20 07:00:00,108.2,79.56,68.45,29.775 +2020-05-20 07:15:00,107.22,78.939,68.45,29.775 +2020-05-20 07:30:00,107.19,76.111,68.45,29.775 +2020-05-20 07:45:00,106.77,74.281,68.45,29.775 +2020-05-20 08:00:00,105.12,68.487,60.885,29.775 +2020-05-20 08:15:00,105.19,69.749,60.885,29.775 +2020-05-20 08:30:00,106.79,68.49600000000001,60.885,29.775 +2020-05-20 08:45:00,108.41,70.115,60.885,29.775 +2020-05-20 09:00:00,104.53,66.671,56.887,29.775 +2020-05-20 09:15:00,106.56,65.149,56.887,29.775 +2020-05-20 09:30:00,106.98,68.21300000000001,56.887,29.775 +2020-05-20 09:45:00,110.81,69.48,56.887,29.775 +2020-05-20 10:00:00,109.87,66.115,54.401,29.775 +2020-05-20 10:15:00,111.92,67.375,54.401,29.775 +2020-05-20 10:30:00,110.2,67.215,54.401,29.775 +2020-05-20 10:45:00,106.45,68.29899999999999,54.401,29.775 +2020-05-20 11:00:00,111.94,64.417,53.678000000000004,29.775 +2020-05-20 11:15:00,116.47,65.687,53.678000000000004,29.775 +2020-05-20 11:30:00,120.29,67.253,53.678000000000004,29.775 +2020-05-20 11:45:00,127.5,68.46,53.678000000000004,29.775 +2020-05-20 12:00:00,130.45,63.667,51.68,29.775 +2020-05-20 12:15:00,131.65,64.06,51.68,29.775 +2020-05-20 12:30:00,128.54,63.196000000000005,51.68,29.775 +2020-05-20 12:45:00,128.89,64.604,51.68,29.775 +2020-05-20 13:00:00,124.02,65.156,51.263000000000005,29.775 +2020-05-20 13:15:00,125.19,65.852,51.263000000000005,29.775 +2020-05-20 13:30:00,125.37,63.912,51.263000000000005,29.775 +2020-05-20 13:45:00,129.7,62.131,51.263000000000005,29.775 +2020-05-20 14:00:00,127.75,63.336000000000006,51.107,29.775 +2020-05-20 14:15:00,134.43,61.942,51.107,29.775 +2020-05-20 14:30:00,131.56,61.101000000000006,51.107,29.775 +2020-05-20 14:45:00,129.26,61.735,51.107,29.775 +2020-05-20 15:00:00,125.84,62.364,51.498000000000005,29.775 +2020-05-20 15:15:00,123.48,59.934,51.498000000000005,29.775 +2020-05-20 15:30:00,119.44,58.276,51.498000000000005,29.775 +2020-05-20 15:45:00,121.38,55.893,51.498000000000005,29.775 +2020-05-20 16:00:00,119.62,58.416000000000004,53.376999999999995,29.775 +2020-05-20 16:15:00,114.06,57.964,53.376999999999995,29.775 +2020-05-20 16:30:00,110.26,57.338,53.376999999999995,29.775 +2020-05-20 16:45:00,113.71,54.028,53.376999999999995,29.775 +2020-05-20 17:00:00,121.74,56.156000000000006,56.965,29.775 +2020-05-20 17:15:00,122.25,56.806999999999995,56.965,29.775 +2020-05-20 17:30:00,123.94,56.637,56.965,29.775 +2020-05-20 17:45:00,119.22,55.5,56.965,29.775 +2020-05-20 18:00:00,119.16,58.25899999999999,58.231,29.775 +2020-05-20 18:15:00,116.54,59.221000000000004,58.231,29.775 +2020-05-20 18:30:00,114.14,57.071000000000005,58.231,29.775 +2020-05-20 18:45:00,115.86,62.284,58.231,29.775 +2020-05-20 19:00:00,116.25,62.854,58.865,29.775 +2020-05-20 19:15:00,109.47,62.081,58.865,29.775 +2020-05-20 19:30:00,102.19,61.643,58.865,29.775 +2020-05-20 19:45:00,100.8,62.236000000000004,58.865,29.775 +2020-05-20 20:00:00,104.57,60.473,65.605,29.775 +2020-05-20 20:15:00,101.8,59.593999999999994,65.605,29.775 +2020-05-20 20:30:00,104.21,59.021,65.605,29.775 +2020-05-20 20:45:00,107.81,58.949,65.605,29.775 +2020-05-20 21:00:00,100.78,56.446999999999996,58.083999999999996,29.775 +2020-05-20 21:15:00,99.92,57.891999999999996,58.083999999999996,29.775 +2020-05-20 21:30:00,96.61,58.748000000000005,58.083999999999996,29.775 +2020-05-20 21:45:00,94.94,59.515,58.083999999999996,29.775 +2020-05-20 22:00:00,89.31,56.731,53.243,29.775 +2020-05-20 22:15:00,87.09,57.488,53.243,29.775 +2020-05-20 22:30:00,87.82,50.25899999999999,53.243,29.775 +2020-05-20 22:45:00,88.26,46.924,53.243,29.775 +2020-05-20 23:00:00,63.05,41.388999999999996,44.283,29.775 +2020-05-20 23:15:00,62.09,39.345,44.283,29.775 +2020-05-20 23:30:00,60.51,38.489000000000004,44.283,29.775 +2020-05-20 23:45:00,60.15,38.064,44.283,29.775 +2020-05-21 00:00:00,58.01,36.91,18.527,29.662 +2020-05-21 00:15:00,57.28,34.745,18.527,29.662 +2020-05-21 00:30:00,56.86,33.663000000000004,18.527,29.662 +2020-05-21 00:45:00,56.38,32.498000000000005,18.527,29.662 +2020-05-21 01:00:00,54.83,32.263000000000005,16.348,29.662 +2020-05-21 01:15:00,54.78,31.66,16.348,29.662 +2020-05-21 01:30:00,54.4,29.784000000000002,16.348,29.662 +2020-05-21 01:45:00,54.27,29.289,16.348,29.662 +2020-05-21 02:00:00,53.37,29.329,12.581,29.662 +2020-05-21 02:15:00,53.99,27.565,12.581,29.662 +2020-05-21 02:30:00,52.98,30.034000000000002,12.581,29.662 +2020-05-21 02:45:00,55.47,30.726999999999997,12.581,29.662 +2020-05-21 03:00:00,53.56,33.503,10.712,29.662 +2020-05-21 03:15:00,54.49,30.621,10.712,29.662 +2020-05-21 03:30:00,57.11,29.22,10.712,29.662 +2020-05-21 03:45:00,55.48,30.15,10.712,29.662 +2020-05-21 04:00:00,58.06,37.786,9.084,29.662 +2020-05-21 04:15:00,53.75,44.758,9.084,29.662 +2020-05-21 04:30:00,52.67,42.848,9.084,29.662 +2020-05-21 04:45:00,55.12,42.523,9.084,29.662 +2020-05-21 05:00:00,51.91,54.581,9.388,29.662 +2020-05-21 05:15:00,52.73,60.053000000000004,9.388,29.662 +2020-05-21 05:30:00,55.46,50.553999999999995,9.388,29.662 +2020-05-21 05:45:00,54.71,49.13399999999999,9.388,29.662 +2020-05-21 06:00:00,55.97,62.847,11.109000000000002,29.662 +2020-05-21 06:15:00,58.32,75.834,11.109000000000002,29.662 +2020-05-21 06:30:00,57.09,67.965,11.109000000000002,29.662 +2020-05-21 06:45:00,58.87,62.187,11.109000000000002,29.662 +2020-05-21 07:00:00,60.26,60.449,13.77,29.662 +2020-05-21 07:15:00,63.31,57.713,13.77,29.662 +2020-05-21 07:30:00,59.48,55.919,13.77,29.662 +2020-05-21 07:45:00,59.47,55.233000000000004,13.77,29.662 +2020-05-21 08:00:00,59.73,52.391999999999996,12.868,29.662 +2020-05-21 08:15:00,58.67,55.902,12.868,29.662 +2020-05-21 08:30:00,63.81,56.254,12.868,29.662 +2020-05-21 08:45:00,58.75,59.305,12.868,29.662 +2020-05-21 09:00:00,58.3,56.836000000000006,12.804,29.662 +2020-05-21 09:15:00,58.24,57.516999999999996,12.804,29.662 +2020-05-21 09:30:00,57.56,60.875,12.804,29.662 +2020-05-21 09:45:00,61.45,63.036,12.804,29.662 +2020-05-21 10:00:00,57.46,60.818000000000005,11.029000000000002,29.662 +2020-05-21 10:15:00,57.46,62.676,11.029000000000002,29.662 +2020-05-21 10:30:00,60.42,63.08,11.029000000000002,29.662 +2020-05-21 10:45:00,58.0,64.479,11.029000000000002,29.662 +2020-05-21 11:00:00,58.01,60.6,11.681,29.662 +2020-05-21 11:15:00,54.19,60.924,11.681,29.662 +2020-05-21 11:30:00,54.54,62.856,11.681,29.662 +2020-05-21 11:45:00,55.05,63.966,11.681,29.662 +2020-05-21 12:00:00,55.16,60.76,8.915,29.662 +2020-05-21 12:15:00,53.37,60.842,8.915,29.662 +2020-05-21 12:30:00,51.32,59.909,8.915,29.662 +2020-05-21 12:45:00,50.61,60.408,8.915,29.662 +2020-05-21 13:00:00,50.98,60.489,5.4639999999999995,29.662 +2020-05-21 13:15:00,52.85,60.721000000000004,5.4639999999999995,29.662 +2020-05-21 13:30:00,48.58,58.523,5.4639999999999995,29.662 +2020-05-21 13:45:00,49.76,56.766000000000005,5.4639999999999995,29.662 +2020-05-21 14:00:00,51.52,58.485,3.2939999999999996,29.662 +2020-05-21 14:15:00,57.07,56.833999999999996,3.2939999999999996,29.662 +2020-05-21 14:30:00,64.25,55.785,3.2939999999999996,29.662 +2020-05-21 14:45:00,65.85,55.278999999999996,3.2939999999999996,29.662 +2020-05-21 15:00:00,66.73,56.126999999999995,4.689,29.662 +2020-05-21 15:15:00,60.8,53.618,4.689,29.662 +2020-05-21 15:30:00,61.9,51.562,4.689,29.662 +2020-05-21 15:45:00,64.07,49.477,4.689,29.662 +2020-05-21 16:00:00,65.13,51.675,7.732,29.662 +2020-05-21 16:15:00,66.81,51.131,7.732,29.662 +2020-05-21 16:30:00,64.74,51.558,7.732,29.662 +2020-05-21 16:45:00,64.19,47.702,7.732,29.662 +2020-05-21 17:00:00,65.06,50.641999999999996,17.558,29.662 +2020-05-21 17:15:00,66.43,50.731,17.558,29.662 +2020-05-21 17:30:00,69.39,51.294,17.558,29.662 +2020-05-21 17:45:00,71.08,51.156000000000006,17.558,29.662 +2020-05-21 18:00:00,71.37,55.849,24.763,29.662 +2020-05-21 18:15:00,70.43,57.653999999999996,24.763,29.662 +2020-05-21 18:30:00,73.17,56.379,24.763,29.662 +2020-05-21 18:45:00,70.48,58.501000000000005,24.763,29.662 +2020-05-21 19:00:00,69.9,60.832,29.633000000000003,29.662 +2020-05-21 19:15:00,68.76,58.906000000000006,29.633000000000003,29.662 +2020-05-21 19:30:00,69.06,59.05,29.633000000000003,29.662 +2020-05-21 19:45:00,71.41,60.059,29.633000000000003,29.662 +2020-05-21 20:00:00,69.15,59.508,38.826,29.662 +2020-05-21 20:15:00,71.39,59.303999999999995,38.826,29.662 +2020-05-21 20:30:00,74.95,58.396,38.826,29.662 +2020-05-21 20:45:00,71.98,57.552,38.826,29.662 +2020-05-21 21:00:00,71.11,54.851000000000006,37.751,29.662 +2020-05-21 21:15:00,67.66,57.343999999999994,37.751,29.662 +2020-05-21 21:30:00,65.62,57.926,37.751,29.662 +2020-05-21 21:45:00,65.41,58.792,37.751,29.662 +2020-05-21 22:00:00,62.1,58.045,39.799,29.662 +2020-05-21 22:15:00,64.81,57.568999999999996,39.799,29.662 +2020-05-21 22:30:00,60.51,56.025,39.799,29.662 +2020-05-21 22:45:00,60.78,53.603,39.799,29.662 +2020-05-21 23:00:00,83.53,48.56,33.686,29.662 +2020-05-21 23:15:00,79.71,46.288999999999994,33.686,29.662 +2020-05-21 23:30:00,76.64,45.003,33.686,29.662 +2020-05-21 23:45:00,81.28,44.475,33.686,29.662 +2020-05-22 00:00:00,78.78,34.703,39.884,29.662 +2020-05-22 00:15:00,78.38,35.232,39.884,29.662 +2020-05-22 00:30:00,75.8,34.53,39.884,29.662 +2020-05-22 00:45:00,78.88,33.875,39.884,29.662 +2020-05-22 01:00:00,78.43,33.044000000000004,37.658,29.662 +2020-05-22 01:15:00,76.96,31.963,37.658,29.662 +2020-05-22 01:30:00,72.09,30.969,37.658,29.662 +2020-05-22 01:45:00,77.86,29.756999999999998,37.658,29.662 +2020-05-22 02:00:00,78.9,30.668000000000003,36.707,29.662 +2020-05-22 02:15:00,79.75,29.229,36.707,29.662 +2020-05-22 02:30:00,75.51,32.335,36.707,29.662 +2020-05-22 02:45:00,79.05,32.449,36.707,29.662 +2020-05-22 03:00:00,80.35,35.719,37.025,29.662 +2020-05-22 03:15:00,80.81,33.605,37.025,29.662 +2020-05-22 03:30:00,76.91,32.632,37.025,29.662 +2020-05-22 03:45:00,75.74,32.927,37.025,29.662 +2020-05-22 04:00:00,76.89,43.244,38.349000000000004,29.662 +2020-05-22 04:15:00,77.58,52.16,38.349000000000004,29.662 +2020-05-22 04:30:00,80.22,51.0,38.349000000000004,29.662 +2020-05-22 04:45:00,84.77,50.898,38.349000000000004,29.662 +2020-05-22 05:00:00,93.82,74.133,41.565,29.662 +2020-05-22 05:15:00,95.9,94.82,41.565,29.662 +2020-05-22 05:30:00,97.7,84.27,41.565,29.662 +2020-05-22 05:45:00,97.74,77.786,41.565,29.662 +2020-05-22 06:00:00,104.46,79.546,53.861000000000004,29.662 +2020-05-22 06:15:00,105.11,81.39,53.861000000000004,29.662 +2020-05-22 06:30:00,106.02,78.183,53.861000000000004,29.662 +2020-05-22 06:45:00,108.42,78.407,53.861000000000004,29.662 +2020-05-22 07:00:00,109.92,78.263,63.497,29.662 +2020-05-22 07:15:00,110.85,78.738,63.497,29.662 +2020-05-22 07:30:00,113.49,73.98100000000001,63.497,29.662 +2020-05-22 07:45:00,111.86,71.819,63.497,29.662 +2020-05-22 08:00:00,107.87,66.528,55.43899999999999,29.662 +2020-05-22 08:15:00,106.09,68.429,55.43899999999999,29.662 +2020-05-22 08:30:00,104.97,67.28,55.43899999999999,29.662 +2020-05-22 08:45:00,109.12,68.445,55.43899999999999,29.662 +2020-05-22 09:00:00,104.41,62.928000000000004,52.132,29.662 +2020-05-22 09:15:00,102.77,63.343,52.132,29.662 +2020-05-22 09:30:00,103.2,65.684,52.132,29.662 +2020-05-22 09:45:00,105.1,67.34899999999999,52.132,29.662 +2020-05-22 10:00:00,108.85,63.57,49.881,29.662 +2020-05-22 10:15:00,114.42,64.851,49.881,29.662 +2020-05-22 10:30:00,116.06,65.205,49.881,29.662 +2020-05-22 10:45:00,112.9,66.123,49.881,29.662 +2020-05-22 11:00:00,116.37,62.451,49.396,29.662 +2020-05-22 11:15:00,116.42,62.535,49.396,29.662 +2020-05-22 11:30:00,115.65,64.168,49.396,29.662 +2020-05-22 11:45:00,114.92,64.525,49.396,29.662 +2020-05-22 12:00:00,111.62,60.479,46.7,29.662 +2020-05-22 12:15:00,106.84,59.778,46.7,29.662 +2020-05-22 12:30:00,102.56,58.99100000000001,46.7,29.662 +2020-05-22 12:45:00,98.4,59.821000000000005,46.7,29.662 +2020-05-22 13:00:00,94.96,61.16,44.05,29.662 +2020-05-22 13:15:00,96.61,62.23,44.05,29.662 +2020-05-22 13:30:00,93.79,61.045,44.05,29.662 +2020-05-22 13:45:00,92.84,59.531000000000006,44.05,29.662 +2020-05-22 14:00:00,91.24,59.794,42.805,29.662 +2020-05-22 14:15:00,93.29,58.739,42.805,29.662 +2020-05-22 14:30:00,91.88,59.32899999999999,42.805,29.662 +2020-05-22 14:45:00,93.09,59.412,42.805,29.662 +2020-05-22 15:00:00,93.45,59.95399999999999,44.36600000000001,29.662 +2020-05-22 15:15:00,95.82,57.167,44.36600000000001,29.662 +2020-05-22 15:30:00,97.12,54.571000000000005,44.36600000000001,29.662 +2020-05-22 15:45:00,97.8,52.891000000000005,44.36600000000001,29.662 +2020-05-22 16:00:00,96.53,54.466,46.928999999999995,29.662 +2020-05-22 16:15:00,103.21,54.513999999999996,46.928999999999995,29.662 +2020-05-22 16:30:00,104.3,53.775,46.928999999999995,29.662 +2020-05-22 16:45:00,104.51,49.604,46.928999999999995,29.662 +2020-05-22 17:00:00,103.54,53.474,51.468,29.662 +2020-05-22 17:15:00,101.79,53.823,51.468,29.662 +2020-05-22 17:30:00,102.58,53.708,51.468,29.662 +2020-05-22 17:45:00,104.14,52.295,51.468,29.662 +2020-05-22 18:00:00,106.35,55.326,52.58,29.662 +2020-05-22 18:15:00,103.1,55.269,52.58,29.662 +2020-05-22 18:30:00,102.56,53.086000000000006,52.58,29.662 +2020-05-22 18:45:00,105.35,58.692,52.58,29.662 +2020-05-22 19:00:00,107.38,60.31399999999999,52.183,29.662 +2020-05-22 19:15:00,103.6,60.376000000000005,52.183,29.662 +2020-05-22 19:30:00,98.21,59.898999999999994,52.183,29.662 +2020-05-22 19:45:00,98.34,59.427,52.183,29.662 +2020-05-22 20:00:00,94.72,57.468999999999994,58.497,29.662 +2020-05-22 20:15:00,95.77,57.34,58.497,29.662 +2020-05-22 20:30:00,98.16,56.342,58.497,29.662 +2020-05-22 20:45:00,96.69,55.707,58.497,29.662 +2020-05-22 21:00:00,97.63,54.568000000000005,54.731,29.662 +2020-05-22 21:15:00,97.68,57.72,54.731,29.662 +2020-05-22 21:30:00,90.83,58.396,54.731,29.662 +2020-05-22 21:45:00,86.47,59.52,54.731,29.662 +2020-05-22 22:00:00,80.55,56.864,51.386,29.662 +2020-05-22 22:15:00,84.38,57.391000000000005,51.386,29.662 +2020-05-22 22:30:00,86.27,56.013000000000005,51.386,29.662 +2020-05-22 22:45:00,84.62,54.208999999999996,51.386,29.662 +2020-05-22 23:00:00,74.96,50.117,44.463,29.662 +2020-05-22 23:15:00,74.35,46.266000000000005,44.463,29.662 +2020-05-22 23:30:00,71.21,43.38,44.463,29.662 +2020-05-22 23:45:00,76.73,42.683,44.463,29.662 +2020-05-23 00:00:00,75.7,35.035,42.833999999999996,29.662 +2020-05-23 00:15:00,76.89,34.034,42.833999999999996,29.662 +2020-05-23 00:30:00,71.1,33.168,42.833999999999996,29.662 +2020-05-23 00:45:00,75.4,31.974,42.833999999999996,29.662 +2020-05-23 01:00:00,73.52,31.552,37.859,29.662 +2020-05-23 01:15:00,74.62,30.799,37.859,29.662 +2020-05-23 01:30:00,68.8,28.918000000000003,37.859,29.662 +2020-05-23 01:45:00,73.9,28.836,37.859,29.662 +2020-05-23 02:00:00,72.13,28.951,35.327,29.662 +2020-05-23 02:15:00,73.48,26.677,35.327,29.662 +2020-05-23 02:30:00,66.65,28.805,35.327,29.662 +2020-05-23 02:45:00,65.13,29.693,35.327,29.662 +2020-05-23 03:00:00,66.59,31.802,34.908,29.662 +2020-05-23 03:15:00,64.97,28.761,34.908,29.662 +2020-05-23 03:30:00,65.86,27.765,34.908,29.662 +2020-05-23 03:45:00,65.45,29.511999999999997,34.908,29.662 +2020-05-23 04:00:00,63.35,37.108000000000004,34.84,29.662 +2020-05-23 04:15:00,63.76,44.592,34.84,29.662 +2020-05-23 04:30:00,62.96,41.382,34.84,29.662 +2020-05-23 04:45:00,64.33,41.43,34.84,29.662 +2020-05-23 05:00:00,67.52,53.748000000000005,34.222,29.662 +2020-05-23 05:15:00,67.85,60.097,34.222,29.662 +2020-05-23 05:30:00,68.35,51.146,34.222,29.662 +2020-05-23 05:45:00,68.82,50.068999999999996,34.222,29.662 +2020-05-23 06:00:00,72.79,66.115,35.515,29.662 +2020-05-23 06:15:00,71.8,78.594,35.515,29.662 +2020-05-23 06:30:00,73.05,71.634,35.515,29.662 +2020-05-23 06:45:00,75.09,67.053,35.515,29.662 +2020-05-23 07:00:00,76.2,64.55199999999999,39.687,29.662 +2020-05-23 07:15:00,76.2,63.553000000000004,39.687,29.662 +2020-05-23 07:30:00,77.52,60.75899999999999,39.687,29.662 +2020-05-23 07:45:00,79.58,60.32,39.687,29.662 +2020-05-23 08:00:00,78.67,56.416000000000004,44.9,29.662 +2020-05-23 08:15:00,78.07,58.93600000000001,44.9,29.662 +2020-05-23 08:30:00,78.21,58.104,44.9,29.662 +2020-05-23 08:45:00,78.09,60.843,44.9,29.662 +2020-05-23 09:00:00,76.63,58.558,45.724,29.662 +2020-05-23 09:15:00,76.47,59.595,45.724,29.662 +2020-05-23 09:30:00,75.4,62.603,45.724,29.662 +2020-05-23 09:45:00,75.15,63.916000000000004,45.724,29.662 +2020-05-23 10:00:00,75.82,60.69,43.123999999999995,29.662 +2020-05-23 10:15:00,76.15,62.368,43.123999999999995,29.662 +2020-05-23 10:30:00,76.53,62.45399999999999,43.123999999999995,29.662 +2020-05-23 10:45:00,75.37,63.36,43.123999999999995,29.662 +2020-05-23 11:00:00,75.31,59.586999999999996,40.255,29.662 +2020-05-23 11:15:00,77.04,60.324,40.255,29.662 +2020-05-23 11:30:00,77.44,61.949,40.255,29.662 +2020-05-23 11:45:00,74.8,62.708999999999996,40.255,29.662 +2020-05-23 12:00:00,69.86,58.754,38.582,29.662 +2020-05-23 12:15:00,69.32,58.985,38.582,29.662 +2020-05-23 12:30:00,71.91,58.121,38.582,29.662 +2020-05-23 12:45:00,70.49,59.434,38.582,29.662 +2020-05-23 13:00:00,69.63,59.963,36.043,29.662 +2020-05-23 13:15:00,73.6,60.055,36.043,29.662 +2020-05-23 13:30:00,72.67,58.946999999999996,36.043,29.662 +2020-05-23 13:45:00,69.34,56.317,36.043,29.662 +2020-05-23 14:00:00,67.9,56.952,35.216,29.662 +2020-05-23 14:15:00,68.87,54.621,35.216,29.662 +2020-05-23 14:30:00,69.82,54.353,35.216,29.662 +2020-05-23 14:45:00,66.18,54.928999999999995,35.216,29.662 +2020-05-23 15:00:00,71.76,56.085,36.759,29.662 +2020-05-23 15:15:00,72.55,54.121,36.759,29.662 +2020-05-23 15:30:00,72.31,52.053000000000004,36.759,29.662 +2020-05-23 15:45:00,71.95,49.521,36.759,29.662 +2020-05-23 16:00:00,71.37,52.958,40.086,29.662 +2020-05-23 16:15:00,71.22,52.37,40.086,29.662 +2020-05-23 16:30:00,71.77,51.843999999999994,40.086,29.662 +2020-05-23 16:45:00,72.93,47.797,40.086,29.662 +2020-05-23 17:00:00,75.81,50.486000000000004,44.876999999999995,29.662 +2020-05-23 17:15:00,77.15,49.199,44.876999999999995,29.662 +2020-05-23 17:30:00,81.73,48.926,44.876999999999995,29.662 +2020-05-23 17:45:00,83.0,47.845,44.876999999999995,29.662 +2020-05-23 18:00:00,82.3,52.175,47.056000000000004,29.662 +2020-05-23 18:15:00,80.93,54.047,47.056000000000004,29.662 +2020-05-23 18:30:00,81.66,53.409,47.056000000000004,29.662 +2020-05-23 18:45:00,81.46,55.044,47.056000000000004,29.662 +2020-05-23 19:00:00,79.51,55.43,45.57,29.662 +2020-05-23 19:15:00,76.63,54.428999999999995,45.57,29.662 +2020-05-23 19:30:00,75.8,54.83,45.57,29.662 +2020-05-23 19:45:00,75.75,55.99,45.57,29.662 +2020-05-23 20:00:00,75.77,55.193000000000005,41.685,29.662 +2020-05-23 20:15:00,75.2,54.916000000000004,41.685,29.662 +2020-05-23 20:30:00,78.48,53.038999999999994,41.685,29.662 +2020-05-23 20:45:00,77.87,54.102,41.685,29.662 +2020-05-23 21:00:00,75.6,52.068999999999996,39.576,29.662 +2020-05-23 21:15:00,75.41,54.998999999999995,39.576,29.662 +2020-05-23 21:30:00,72.51,56.086999999999996,39.576,29.662 +2020-05-23 21:45:00,71.96,56.635,39.576,29.662 +2020-05-23 22:00:00,68.93,54.263000000000005,39.068000000000005,29.662 +2020-05-23 22:15:00,68.33,55.56,39.068000000000005,29.662 +2020-05-23 22:30:00,65.26,55.118,39.068000000000005,29.662 +2020-05-23 22:45:00,65.06,54.041000000000004,39.068000000000005,29.662 +2020-05-23 23:00:00,61.85,49.77,32.06,29.662 +2020-05-23 23:15:00,61.41,46.022,32.06,29.662 +2020-05-23 23:30:00,61.34,45.095,32.06,29.662 +2020-05-23 23:45:00,59.43,44.225,32.06,29.662 +2020-05-24 00:00:00,57.13,36.184,28.825,29.662 +2020-05-24 00:15:00,57.97,34.035,28.825,29.662 +2020-05-24 00:30:00,57.26,32.953,28.825,29.662 +2020-05-24 00:45:00,57.6,31.803,28.825,29.662 +2020-05-24 01:00:00,55.3,31.62,25.995,29.662 +2020-05-24 01:15:00,56.86,30.941999999999997,25.995,29.662 +2020-05-24 01:30:00,56.68,29.026999999999997,25.995,29.662 +2020-05-24 01:45:00,56.48,28.518,25.995,29.662 +2020-05-24 02:00:00,54.98,28.549,24.394000000000002,29.662 +2020-05-24 02:15:00,55.67,26.753,24.394000000000002,29.662 +2020-05-24 02:30:00,55.71,29.241999999999997,24.394000000000002,29.662 +2020-05-24 02:45:00,54.51,29.96,24.394000000000002,29.662 +2020-05-24 03:00:00,54.2,32.754,22.916999999999998,29.662 +2020-05-24 03:15:00,54.33,29.838,22.916999999999998,29.662 +2020-05-24 03:30:00,55.39,28.445999999999998,22.916999999999998,29.662 +2020-05-24 03:45:00,53.97,29.454,22.916999999999998,29.662 +2020-05-24 04:00:00,51.59,36.912,23.576999999999998,29.662 +2020-05-24 04:15:00,52.43,43.722,23.576999999999998,29.662 +2020-05-24 04:30:00,52.07,41.773999999999994,23.576999999999998,29.662 +2020-05-24 04:45:00,52.18,41.433,23.576999999999998,29.662 +2020-05-24 05:00:00,52.38,53.093999999999994,22.730999999999998,29.662 +2020-05-24 05:15:00,51.01,58.086999999999996,22.730999999999998,29.662 +2020-05-24 05:30:00,51.44,48.788000000000004,22.730999999999998,29.662 +2020-05-24 05:45:00,50.26,47.56100000000001,22.730999999999998,29.662 +2020-05-24 06:00:00,55.4,61.348,22.34,29.662 +2020-05-24 06:15:00,56.11,74.26,22.34,29.662 +2020-05-24 06:30:00,56.5,66.44,22.34,29.662 +2020-05-24 06:45:00,58.7,60.73,22.34,29.662 +2020-05-24 07:00:00,60.0,58.957,24.691999999999997,29.662 +2020-05-24 07:15:00,62.28,56.248999999999995,24.691999999999997,29.662 +2020-05-24 07:30:00,63.86,54.387,24.691999999999997,29.662 +2020-05-24 07:45:00,66.28,53.792,24.691999999999997,29.662 +2020-05-24 08:00:00,68.02,50.965,29.340999999999998,29.662 +2020-05-24 08:15:00,69.85,54.619,29.340999999999998,29.662 +2020-05-24 08:30:00,70.34,54.93600000000001,29.340999999999998,29.662 +2020-05-24 08:45:00,69.19,58.036,29.340999999999998,29.662 +2020-05-24 09:00:00,64.38,55.551,30.788,29.662 +2020-05-24 09:15:00,64.98,56.251999999999995,30.788,29.662 +2020-05-24 09:30:00,61.61,59.635,30.788,29.662 +2020-05-24 09:45:00,58.24,61.888999999999996,30.788,29.662 +2020-05-24 10:00:00,59.37,59.70399999999999,30.158,29.662 +2020-05-24 10:15:00,60.65,61.652,30.158,29.662 +2020-05-24 10:30:00,62.09,62.085,30.158,29.662 +2020-05-24 10:45:00,62.05,63.525,30.158,29.662 +2020-05-24 11:00:00,62.17,59.622,32.056,29.662 +2020-05-24 11:15:00,59.81,59.99100000000001,32.056,29.662 +2020-05-24 11:30:00,55.31,61.896,32.056,29.662 +2020-05-24 11:45:00,55.01,63.036,32.056,29.662 +2020-05-24 12:00:00,56.12,59.94,28.671999999999997,29.662 +2020-05-24 12:15:00,58.46,60.038000000000004,28.671999999999997,29.662 +2020-05-24 12:30:00,58.98,59.003,28.671999999999997,29.662 +2020-05-24 12:45:00,61.98,59.52,28.671999999999997,29.662 +2020-05-24 13:00:00,60.62,59.632,23.171,29.662 +2020-05-24 13:15:00,61.12,59.873000000000005,23.171,29.662 +2020-05-24 13:30:00,56.46,57.708999999999996,23.171,29.662 +2020-05-24 13:45:00,56.65,55.956,23.171,29.662 +2020-05-24 14:00:00,56.1,57.781000000000006,19.11,29.662 +2020-05-24 14:15:00,58.99,56.107,19.11,29.662 +2020-05-24 14:30:00,64.84,54.945,19.11,29.662 +2020-05-24 14:45:00,70.09,54.452,19.11,29.662 +2020-05-24 15:00:00,72.58,55.449,19.689,29.662 +2020-05-24 15:15:00,73.17,52.895,19.689,29.662 +2020-05-24 15:30:00,74.8,50.771,19.689,29.662 +2020-05-24 15:45:00,76.05,48.638999999999996,19.689,29.662 +2020-05-24 16:00:00,84.67,50.972,22.875,29.662 +2020-05-24 16:15:00,87.35,50.39,22.875,29.662 +2020-05-24 16:30:00,87.69,50.867,22.875,29.662 +2020-05-24 16:45:00,83.03,46.857,22.875,29.662 +2020-05-24 17:00:00,83.2,49.927,33.884,29.662 +2020-05-24 17:15:00,80.98,49.951,33.884,29.662 +2020-05-24 17:30:00,82.32,50.475,33.884,29.662 +2020-05-24 17:45:00,86.46,50.239,33.884,29.662 +2020-05-24 18:00:00,88.05,54.983000000000004,38.453,29.662 +2020-05-24 18:15:00,84.96,56.722,38.453,29.662 +2020-05-24 18:30:00,81.33,55.413999999999994,38.453,29.662 +2020-05-24 18:45:00,80.49,57.535,38.453,29.662 +2020-05-24 19:00:00,83.33,59.87,39.221,29.662 +2020-05-24 19:15:00,81.36,57.926,39.221,29.662 +2020-05-24 19:30:00,79.76,58.052,39.221,29.662 +2020-05-24 19:45:00,80.78,59.06,39.221,29.662 +2020-05-24 20:00:00,82.2,58.438,37.871,29.662 +2020-05-24 20:15:00,82.3,58.229,37.871,29.662 +2020-05-24 20:30:00,83.51,57.387,37.871,29.662 +2020-05-24 20:45:00,83.49,56.669,37.871,29.662 +2020-05-24 21:00:00,81.41,53.983999999999995,36.465,29.662 +2020-05-24 21:15:00,82.26,56.519,36.465,29.662 +2020-05-24 21:30:00,75.32,57.03,36.465,29.662 +2020-05-24 21:45:00,76.43,57.966,36.465,29.662 +2020-05-24 22:00:00,74.5,57.299,36.092,29.662 +2020-05-24 22:15:00,78.91,56.873999999999995,36.092,29.662 +2020-05-24 22:30:00,80.16,55.325,36.092,29.662 +2020-05-24 22:45:00,79.85,52.865,36.092,29.662 +2020-05-24 23:00:00,71.49,47.725,31.013,29.662 +2020-05-24 23:15:00,69.19,45.586999999999996,31.013,29.662 +2020-05-24 23:30:00,73.1,44.315,31.013,29.662 +2020-05-24 23:45:00,75.16,43.761,31.013,29.662 +2020-05-25 00:00:00,73.04,38.211999999999996,31.174,29.775 +2020-05-25 00:15:00,71.45,37.404,31.174,29.775 +2020-05-25 00:30:00,65.82,35.985,31.174,29.775 +2020-05-25 00:45:00,65.94,34.361,31.174,29.775 +2020-05-25 01:00:00,68.21,34.563,29.663,29.775 +2020-05-25 01:15:00,73.16,33.77,29.663,29.775 +2020-05-25 01:30:00,73.49,32.193000000000005,29.663,29.775 +2020-05-25 01:45:00,70.92,31.61,29.663,29.775 +2020-05-25 02:00:00,67.31,32.065,28.793000000000003,29.775 +2020-05-25 02:15:00,72.78,29.594,28.793000000000003,29.775 +2020-05-25 02:30:00,74.32,32.31,28.793000000000003,29.775 +2020-05-25 02:45:00,74.35,32.775999999999996,28.793000000000003,29.775 +2020-05-25 03:00:00,69.78,36.306999999999995,27.728,29.775 +2020-05-25 03:15:00,68.47,34.389,27.728,29.775 +2020-05-25 03:30:00,69.86,33.588,27.728,29.775 +2020-05-25 03:45:00,70.1,34.076,27.728,29.775 +2020-05-25 04:00:00,73.53,45.273999999999994,29.266,29.775 +2020-05-25 04:15:00,73.54,55.622,29.266,29.775 +2020-05-25 04:30:00,77.68,53.648,29.266,29.775 +2020-05-25 04:45:00,81.3,53.683,29.266,29.775 +2020-05-25 05:00:00,89.03,74.794,37.889,29.775 +2020-05-25 05:15:00,93.31,93.23,37.889,29.775 +2020-05-25 05:30:00,95.72,82.57700000000001,37.889,29.775 +2020-05-25 05:45:00,98.49,77.42699999999999,37.889,29.775 +2020-05-25 06:00:00,99.46,78.153,55.485,29.775 +2020-05-25 06:15:00,104.22,79.572,55.485,29.775 +2020-05-25 06:30:00,105.6,77.07,55.485,29.775 +2020-05-25 06:45:00,106.6,78.078,55.485,29.775 +2020-05-25 07:00:00,108.35,77.343,65.765,29.775 +2020-05-25 07:15:00,107.73,77.042,65.765,29.775 +2020-05-25 07:30:00,107.92,74.193,65.765,29.775 +2020-05-25 07:45:00,108.55,73.4,65.765,29.775 +2020-05-25 08:00:00,106.16,67.673,56.745,29.775 +2020-05-25 08:15:00,106.57,69.807,56.745,29.775 +2020-05-25 08:30:00,107.31,68.376,56.745,29.775 +2020-05-25 08:45:00,106.93,71.00399999999999,56.745,29.775 +2020-05-25 09:00:00,106.44,67.383,53.321999999999996,29.775 +2020-05-25 09:15:00,106.7,65.695,53.321999999999996,29.775 +2020-05-25 09:30:00,105.96,68.01100000000001,53.321999999999996,29.775 +2020-05-25 09:45:00,105.74,68.217,53.321999999999996,29.775 +2020-05-25 10:00:00,106.53,66.318,51.309,29.775 +2020-05-25 10:15:00,109.6,68.087,51.309,29.775 +2020-05-25 10:30:00,108.78,67.915,51.309,29.775 +2020-05-25 10:45:00,107.84,68.066,51.309,29.775 +2020-05-25 11:00:00,105.05,63.818000000000005,50.415,29.775 +2020-05-25 11:15:00,103.48,64.858,50.415,29.775 +2020-05-25 11:30:00,101.34,67.70100000000001,50.415,29.775 +2020-05-25 11:45:00,101.35,69.223,50.415,29.775 +2020-05-25 12:00:00,100.54,65.095,48.273,29.775 +2020-05-25 12:15:00,101.38,65.3,48.273,29.775 +2020-05-25 12:30:00,99.35,63.31,48.273,29.775 +2020-05-25 12:45:00,101.48,64.178,48.273,29.775 +2020-05-25 13:00:00,100.53,65.195,48.452,29.775 +2020-05-25 13:15:00,101.37,64.317,48.452,29.775 +2020-05-25 13:30:00,99.07,62.199,48.452,29.775 +2020-05-25 13:45:00,100.17,61.278999999999996,48.452,29.775 +2020-05-25 14:00:00,99.77,62.183,48.35,29.775 +2020-05-25 14:15:00,102.24,60.898999999999994,48.35,29.775 +2020-05-25 14:30:00,103.48,59.428000000000004,48.35,29.775 +2020-05-25 14:45:00,101.43,60.82899999999999,48.35,29.775 +2020-05-25 15:00:00,101.0,61.948,48.838,29.775 +2020-05-25 15:15:00,97.03,58.513000000000005,48.838,29.775 +2020-05-25 15:30:00,98.64,56.886,48.838,29.775 +2020-05-25 15:45:00,101.34,54.193999999999996,48.838,29.775 +2020-05-25 16:00:00,101.37,57.505,50.873000000000005,29.775 +2020-05-25 16:15:00,103.25,56.806999999999995,50.873000000000005,29.775 +2020-05-25 16:30:00,106.69,56.475,50.873000000000005,29.775 +2020-05-25 16:45:00,106.5,52.178000000000004,50.873000000000005,29.775 +2020-05-25 17:00:00,107.1,54.208999999999996,56.637,29.775 +2020-05-25 17:15:00,111.13,54.353,56.637,29.775 +2020-05-25 17:30:00,110.99,54.388000000000005,56.637,29.775 +2020-05-25 17:45:00,111.14,53.427,56.637,29.775 +2020-05-25 18:00:00,108.96,57.196999999999996,56.35,29.775 +2020-05-25 18:15:00,105.76,56.744,56.35,29.775 +2020-05-25 18:30:00,113.14,54.85,56.35,29.775 +2020-05-25 18:45:00,116.77,60.083,56.35,29.775 +2020-05-25 19:00:00,108.64,61.768,56.023,29.775 +2020-05-25 19:15:00,98.73,60.848,56.023,29.775 +2020-05-25 19:30:00,103.11,60.716,56.023,29.775 +2020-05-25 19:45:00,99.07,60.978,56.023,29.775 +2020-05-25 20:00:00,96.44,58.687,62.372,29.775 +2020-05-25 20:15:00,103.82,59.299,62.372,29.775 +2020-05-25 20:30:00,106.27,58.593999999999994,62.372,29.775 +2020-05-25 20:45:00,103.64,58.45,62.372,29.775 +2020-05-25 21:00:00,96.06,55.285,57.516999999999996,29.775 +2020-05-25 21:15:00,96.57,58.018,57.516999999999996,29.775 +2020-05-25 21:30:00,96.34,58.732,57.516999999999996,29.775 +2020-05-25 21:45:00,96.09,59.38399999999999,57.516999999999996,29.775 +2020-05-25 22:00:00,89.25,56.24,51.823,29.775 +2020-05-25 22:15:00,83.2,57.45399999999999,51.823,29.775 +2020-05-25 22:30:00,87.35,49.917,51.823,29.775 +2020-05-25 22:45:00,89.63,46.472,51.823,29.775 +2020-05-25 23:00:00,82.93,41.511,43.832,29.775 +2020-05-25 23:15:00,75.55,38.372,43.832,29.775 +2020-05-25 23:30:00,79.33,37.609,43.832,29.775 +2020-05-25 23:45:00,82.15,37.052,43.832,29.775 +2020-05-26 00:00:00,77.88,35.689,42.371,29.775 +2020-05-26 00:15:00,75.1,35.991,42.371,29.775 +2020-05-26 00:30:00,78.04,35.06,42.371,29.775 +2020-05-26 00:45:00,78.89,33.999,42.371,29.775 +2020-05-26 01:00:00,77.82,33.665,39.597,29.775 +2020-05-26 01:15:00,76.09,32.865,39.597,29.775 +2020-05-26 01:30:00,78.26,31.186,39.597,29.775 +2020-05-26 01:45:00,79.73,30.171999999999997,39.597,29.775 +2020-05-26 02:00:00,79.78,30.166999999999998,38.298,29.775 +2020-05-26 02:15:00,76.12,28.761999999999997,38.298,29.775 +2020-05-26 02:30:00,79.45,30.995,38.298,29.775 +2020-05-26 02:45:00,81.63,31.781999999999996,38.298,29.775 +2020-05-26 03:00:00,78.81,34.551,37.884,29.775 +2020-05-26 03:15:00,75.75,33.34,37.884,29.775 +2020-05-26 03:30:00,80.4,32.609,37.884,29.775 +2020-05-26 03:45:00,82.09,32.106,37.884,29.775 +2020-05-26 04:00:00,81.49,42.005,39.442,29.775 +2020-05-26 04:15:00,78.42,52.242,39.442,29.775 +2020-05-26 04:30:00,81.46,50.07899999999999,39.442,29.775 +2020-05-26 04:45:00,86.44,50.81399999999999,39.442,29.775 +2020-05-26 05:00:00,92.93,74.25399999999999,43.608000000000004,29.775 +2020-05-26 05:15:00,95.98,93.09100000000001,43.608000000000004,29.775 +2020-05-26 05:30:00,97.87,82.4,43.608000000000004,29.775 +2020-05-26 05:45:00,100.97,76.611,43.608000000000004,29.775 +2020-05-26 06:00:00,104.23,78.155,54.99100000000001,29.775 +2020-05-26 06:15:00,106.17,80.044,54.99100000000001,29.775 +2020-05-26 06:30:00,107.29,77.12899999999999,54.99100000000001,29.775 +2020-05-26 06:45:00,108.62,77.236,54.99100000000001,29.775 +2020-05-26 07:00:00,111.63,76.596,66.217,29.775 +2020-05-26 07:15:00,109.37,76.031,66.217,29.775 +2020-05-26 07:30:00,108.15,73.069,66.217,29.775 +2020-05-26 07:45:00,107.28,71.422,66.217,29.775 +2020-05-26 08:00:00,105.84,65.657,60.151,29.775 +2020-05-26 08:15:00,107.1,67.205,60.151,29.775 +2020-05-26 08:30:00,107.63,65.885,60.151,29.775 +2020-05-26 08:45:00,105.85,67.601,60.151,29.775 +2020-05-26 09:00:00,106.2,64.122,53.873000000000005,29.775 +2020-05-26 09:15:00,106.76,62.643,53.873000000000005,29.775 +2020-05-26 09:30:00,106.29,65.755,53.873000000000005,29.775 +2020-05-26 09:45:00,107.29,67.207,53.873000000000005,29.775 +2020-05-26 10:00:00,107.68,63.907,51.417,29.775 +2020-05-26 10:15:00,108.29,65.344,51.417,29.775 +2020-05-26 10:30:00,107.02,65.244,51.417,29.775 +2020-05-26 10:45:00,106.79,66.407,51.417,29.775 +2020-05-26 11:00:00,103.4,62.48,50.43600000000001,29.775 +2020-05-26 11:15:00,103.94,63.838,50.43600000000001,29.775 +2020-05-26 11:30:00,107.61,65.347,50.43600000000001,29.775 +2020-05-26 11:45:00,110.51,66.61399999999999,50.43600000000001,29.775 +2020-05-26 12:00:00,108.4,62.042,47.468,29.775 +2020-05-26 12:15:00,103.09,62.467,47.468,29.775 +2020-05-26 12:30:00,104.04,61.398,47.468,29.775 +2020-05-26 12:45:00,101.49,62.843,47.468,29.775 +2020-05-26 13:00:00,102.78,63.45399999999999,48.453,29.775 +2020-05-26 13:15:00,107.92,64.171,48.453,29.775 +2020-05-26 13:30:00,112.42,62.297,48.453,29.775 +2020-05-26 13:45:00,112.14,60.523999999999994,48.453,29.775 +2020-05-26 14:00:00,110.26,61.941,48.435,29.775 +2020-05-26 14:15:00,105.71,60.5,48.435,29.775 +2020-05-26 14:30:00,111.81,59.43600000000001,48.435,29.775 +2020-05-26 14:45:00,112.96,60.092,48.435,29.775 +2020-05-26 15:00:00,112.99,61.018,49.966,29.775 +2020-05-26 15:15:00,110.34,58.498000000000005,49.966,29.775 +2020-05-26 15:30:00,113.39,56.705,49.966,29.775 +2020-05-26 15:45:00,116.68,54.229,49.966,29.775 +2020-05-26 16:00:00,118.92,57.022,51.184,29.775 +2020-05-26 16:15:00,115.17,56.494,51.184,29.775 +2020-05-26 16:30:00,114.9,55.968,51.184,29.775 +2020-05-26 16:45:00,120.29,52.354,51.184,29.775 +2020-05-26 17:00:00,120.37,54.74,56.138999999999996,29.775 +2020-05-26 17:15:00,116.21,55.26,56.138999999999996,29.775 +2020-05-26 17:30:00,111.59,55.015,56.138999999999996,29.775 +2020-05-26 17:45:00,120.21,53.681000000000004,56.138999999999996,29.775 +2020-05-26 18:00:00,122.33,56.542,57.038000000000004,29.775 +2020-05-26 18:15:00,115.55,57.373000000000005,57.038000000000004,29.775 +2020-05-26 18:30:00,110.43,55.159,57.038000000000004,29.775 +2020-05-26 18:45:00,113.6,60.367,57.038000000000004,29.775 +2020-05-26 19:00:00,113.25,60.945,56.492,29.775 +2020-05-26 19:15:00,105.86,60.135,56.492,29.775 +2020-05-26 19:30:00,105.79,59.665,56.492,29.775 +2020-05-26 19:45:00,100.27,60.254,56.492,29.775 +2020-05-26 20:00:00,101.3,58.349,62.534,29.775 +2020-05-26 20:15:00,105.86,57.463,62.534,29.775 +2020-05-26 20:30:00,107.47,57.018,62.534,29.775 +2020-05-26 20:45:00,104.42,57.199,62.534,29.775 +2020-05-26 21:00:00,97.23,54.727,55.506,29.775 +2020-05-26 21:15:00,102.65,56.256,55.506,29.775 +2020-05-26 21:30:00,99.18,56.97,55.506,29.775 +2020-05-26 21:45:00,96.09,57.873999999999995,55.506,29.775 +2020-05-26 22:00:00,85.21,55.248000000000005,51.472,29.775 +2020-05-26 22:15:00,90.23,56.108999999999995,51.472,29.775 +2020-05-26 22:30:00,91.74,48.865,51.472,29.775 +2020-05-26 22:45:00,88.76,45.456,51.472,29.775 +2020-05-26 23:00:00,79.55,39.731,44.593,29.775 +2020-05-26 23:15:00,79.85,37.953,44.593,29.775 +2020-05-26 23:30:00,86.2,37.123000000000005,44.593,29.775 +2020-05-26 23:45:00,87.91,36.645,44.593,29.775 +2020-05-27 00:00:00,78.67,35.461999999999996,41.978,29.775 +2020-05-27 00:15:00,76.21,35.769,41.978,29.775 +2020-05-27 00:30:00,74.83,34.839,41.978,29.775 +2020-05-27 00:45:00,82.21,33.784,41.978,29.775 +2020-05-27 01:00:00,79.98,33.466,38.59,29.775 +2020-05-27 01:15:00,79.27,32.641999999999996,38.59,29.775 +2020-05-27 01:30:00,75.92,30.951,38.59,29.775 +2020-05-27 01:45:00,75.33,29.930999999999997,38.59,29.775 +2020-05-27 02:00:00,79.93,29.924,36.23,29.775 +2020-05-27 02:15:00,81.78,28.51,36.23,29.775 +2020-05-27 02:30:00,78.49,30.748,36.23,29.775 +2020-05-27 02:45:00,76.39,31.541999999999998,36.23,29.775 +2020-05-27 03:00:00,74.78,34.317,35.867,29.775 +2020-05-27 03:15:00,81.81,33.095,35.867,29.775 +2020-05-27 03:30:00,83.72,32.368,35.867,29.775 +2020-05-27 03:45:00,84.2,31.891,35.867,29.775 +2020-05-27 04:00:00,80.31,41.731,36.75,29.775 +2020-05-27 04:15:00,79.3,51.916000000000004,36.75,29.775 +2020-05-27 04:30:00,80.69,49.742,36.75,29.775 +2020-05-27 04:45:00,85.87,50.47,36.75,29.775 +2020-05-27 05:00:00,92.63,73.78399999999999,40.461,29.775 +2020-05-27 05:15:00,97.73,92.46600000000001,40.461,29.775 +2020-05-27 05:30:00,101.04,81.842,40.461,29.775 +2020-05-27 05:45:00,102.83,76.115,40.461,29.775 +2020-05-27 06:00:00,108.55,77.681,55.481,29.775 +2020-05-27 06:15:00,111.03,79.547,55.481,29.775 +2020-05-27 06:30:00,114.05,76.648,55.481,29.775 +2020-05-27 06:45:00,116.14,76.777,55.481,29.775 +2020-05-27 07:00:00,118.55,76.126,68.45,29.775 +2020-05-27 07:15:00,117.45,75.571,68.45,29.775 +2020-05-27 07:30:00,116.41,72.589,68.45,29.775 +2020-05-27 07:45:00,115.84,70.972,68.45,29.775 +2020-05-27 08:00:00,115.67,65.21300000000001,60.885,29.775 +2020-05-27 08:15:00,117.03,66.808,60.885,29.775 +2020-05-27 08:30:00,117.65,65.476,60.885,29.775 +2020-05-27 08:45:00,116.56,67.208,60.885,29.775 +2020-05-27 09:00:00,113.89,63.724,56.887,29.775 +2020-05-27 09:15:00,113.51,62.251000000000005,56.887,29.775 +2020-05-27 09:30:00,110.46,65.37,56.887,29.775 +2020-05-27 09:45:00,113.38,66.851,56.887,29.775 +2020-05-27 10:00:00,111.51,63.56100000000001,54.401,29.775 +2020-05-27 10:15:00,109.58,65.025,54.401,29.775 +2020-05-27 10:30:00,110.08,64.936,54.401,29.775 +2020-05-27 10:45:00,111.45,66.111,54.401,29.775 +2020-05-27 11:00:00,116.34,62.177,53.678000000000004,29.775 +2020-05-27 11:15:00,116.28,63.548,53.678000000000004,29.775 +2020-05-27 11:30:00,120.85,65.04899999999999,53.678000000000004,29.775 +2020-05-27 11:45:00,119.2,66.324,53.678000000000004,29.775 +2020-05-27 12:00:00,113.31,61.788000000000004,51.68,29.775 +2020-05-27 12:15:00,114.74,62.218,51.68,29.775 +2020-05-27 12:30:00,110.65,61.11600000000001,51.68,29.775 +2020-05-27 12:45:00,108.47,62.567,51.68,29.775 +2020-05-27 13:00:00,109.49,63.18600000000001,51.263000000000005,29.775 +2020-05-27 13:15:00,113.95,63.903999999999996,51.263000000000005,29.775 +2020-05-27 13:30:00,118.69,62.041000000000004,51.263000000000005,29.775 +2020-05-27 13:45:00,116.61,60.272,51.263000000000005,29.775 +2020-05-27 14:00:00,106.92,61.72,51.107,29.775 +2020-05-27 14:15:00,103.29,60.273,51.107,29.775 +2020-05-27 14:30:00,103.58,59.173,51.107,29.775 +2020-05-27 14:45:00,101.55,59.833999999999996,51.107,29.775 +2020-05-27 15:00:00,101.02,60.805,51.498000000000005,29.775 +2020-05-27 15:15:00,106.26,58.272,51.498000000000005,29.775 +2020-05-27 15:30:00,108.1,56.458,51.498000000000005,29.775 +2020-05-27 15:45:00,106.97,53.967,51.498000000000005,29.775 +2020-05-27 16:00:00,104.58,56.803000000000004,53.376999999999995,29.775 +2020-05-27 16:15:00,112.71,56.263000000000005,53.376999999999995,29.775 +2020-05-27 16:30:00,115.07,55.753,53.376999999999995,29.775 +2020-05-27 16:45:00,117.58,52.091,53.376999999999995,29.775 +2020-05-27 17:00:00,113.92,54.519,56.965,29.775 +2020-05-27 17:15:00,109.55,55.019,56.965,29.775 +2020-05-27 17:30:00,110.79,54.761,56.965,29.775 +2020-05-27 17:45:00,117.21,53.397,56.965,29.775 +2020-05-27 18:00:00,119.07,56.273,58.231,29.775 +2020-05-27 18:15:00,116.37,57.083,58.231,29.775 +2020-05-27 18:30:00,110.78,54.858000000000004,58.231,29.775 +2020-05-27 18:45:00,111.25,60.065,58.231,29.775 +2020-05-27 19:00:00,112.51,60.646,58.865,29.775 +2020-05-27 19:15:00,110.24,59.83,58.865,29.775 +2020-05-27 19:30:00,106.93,59.354,58.865,29.775 +2020-05-27 19:45:00,104.44,59.942,58.865,29.775 +2020-05-27 20:00:00,106.22,58.015,65.605,29.775 +2020-05-27 20:15:00,109.79,57.128,65.605,29.775 +2020-05-27 20:30:00,105.72,56.702,65.605,29.775 +2020-05-27 20:45:00,106.65,56.923,65.605,29.775 +2020-05-27 21:00:00,103.35,54.456,58.083999999999996,29.775 +2020-05-27 21:15:00,102.42,55.998999999999995,58.083999999999996,29.775 +2020-05-27 21:30:00,96.73,56.688,58.083999999999996,29.775 +2020-05-27 21:45:00,90.01,57.614,58.083999999999996,29.775 +2020-05-27 22:00:00,84.55,55.013999999999996,53.243,29.775 +2020-05-27 22:15:00,92.14,55.89,53.243,29.775 +2020-05-27 22:30:00,90.68,48.641999999999996,53.243,29.775 +2020-05-27 22:45:00,91.0,45.221000000000004,53.243,29.775 +2020-05-27 23:00:00,84.6,39.466,44.283,29.775 +2020-05-27 23:15:00,85.5,37.732,44.283,29.775 +2020-05-27 23:30:00,85.54,36.907,44.283,29.775 +2020-05-27 23:45:00,79.34,36.42,44.283,29.775 +2020-05-28 00:00:00,77.91,35.239000000000004,40.219,29.775 +2020-05-28 00:15:00,80.31,35.55,40.219,29.775 +2020-05-28 00:30:00,82.35,34.621,40.219,29.775 +2020-05-28 00:45:00,82.17,33.571,40.219,29.775 +2020-05-28 01:00:00,73.42,33.269,37.959,29.775 +2020-05-28 01:15:00,73.91,32.423,37.959,29.775 +2020-05-28 01:30:00,80.25,30.72,37.959,29.775 +2020-05-28 01:45:00,80.75,29.695,37.959,29.775 +2020-05-28 02:00:00,78.89,29.686,36.113,29.775 +2020-05-28 02:15:00,76.48,28.261999999999997,36.113,29.775 +2020-05-28 02:30:00,73.17,30.505,36.113,29.775 +2020-05-28 02:45:00,71.76,31.307,36.113,29.775 +2020-05-28 03:00:00,82.48,34.086,35.546,29.775 +2020-05-28 03:15:00,81.95,32.857,35.546,29.775 +2020-05-28 03:30:00,83.28,32.132,35.546,29.775 +2020-05-28 03:45:00,79.02,31.68,35.546,29.775 +2020-05-28 04:00:00,76.6,41.464,37.169000000000004,29.775 +2020-05-28 04:15:00,77.69,51.595,37.169000000000004,29.775 +2020-05-28 04:30:00,81.45,49.409,37.169000000000004,29.775 +2020-05-28 04:45:00,85.59,50.132,37.169000000000004,29.775 +2020-05-28 05:00:00,91.9,73.321,41.233000000000004,29.775 +2020-05-28 05:15:00,94.79,91.84899999999999,41.233000000000004,29.775 +2020-05-28 05:30:00,97.76,81.291,41.233000000000004,29.775 +2020-05-28 05:45:00,101.42,75.626,41.233000000000004,29.775 +2020-05-28 06:00:00,106.7,77.21300000000001,52.57,29.775 +2020-05-28 06:15:00,107.83,79.056,52.57,29.775 +2020-05-28 06:30:00,107.22,76.17399999999999,52.57,29.775 +2020-05-28 06:45:00,108.72,76.32600000000001,52.57,29.775 +2020-05-28 07:00:00,112.97,75.663,64.53,29.775 +2020-05-28 07:15:00,113.42,75.118,64.53,29.775 +2020-05-28 07:30:00,111.88,72.117,64.53,29.775 +2020-05-28 07:45:00,110.47,70.532,64.53,29.775 +2020-05-28 08:00:00,108.25,64.778,55.911,29.775 +2020-05-28 08:15:00,109.2,66.418,55.911,29.775 +2020-05-28 08:30:00,108.89,65.07600000000001,55.911,29.775 +2020-05-28 08:45:00,108.36,66.82300000000001,55.911,29.775 +2020-05-28 09:00:00,108.84,63.333999999999996,50.949,29.775 +2020-05-28 09:15:00,109.6,61.867,50.949,29.775 +2020-05-28 09:30:00,109.68,64.991,50.949,29.775 +2020-05-28 09:45:00,109.89,66.501,50.949,29.775 +2020-05-28 10:00:00,109.06,63.222,48.136,29.775 +2020-05-28 10:15:00,109.02,64.71300000000001,48.136,29.775 +2020-05-28 10:30:00,108.21,64.633,48.136,29.775 +2020-05-28 10:45:00,110.76,65.82,48.136,29.775 +2020-05-28 11:00:00,110.74,61.88,46.643,29.775 +2020-05-28 11:15:00,114.54,63.265,46.643,29.775 +2020-05-28 11:30:00,116.21,64.755,46.643,29.775 +2020-05-28 11:45:00,112.65,66.04,46.643,29.775 +2020-05-28 12:00:00,108.35,61.538999999999994,44.098,29.775 +2020-05-28 12:15:00,107.22,61.972,44.098,29.775 +2020-05-28 12:30:00,101.85,60.839,44.098,29.775 +2020-05-28 12:45:00,104.76,62.294,44.098,29.775 +2020-05-28 13:00:00,104.61,62.92100000000001,43.717,29.775 +2020-05-28 13:15:00,106.42,63.643,43.717,29.775 +2020-05-28 13:30:00,104.67,61.792,43.717,29.775 +2020-05-28 13:45:00,106.86,60.025,43.717,29.775 +2020-05-28 14:00:00,109.05,61.505,44.218999999999994,29.775 +2020-05-28 14:15:00,109.96,60.051,44.218999999999994,29.775 +2020-05-28 14:30:00,111.04,58.915,44.218999999999994,29.775 +2020-05-28 14:45:00,111.45,59.58,44.218999999999994,29.775 +2020-05-28 15:00:00,114.19,60.596000000000004,46.159,29.775 +2020-05-28 15:15:00,116.88,58.05,46.159,29.775 +2020-05-28 15:30:00,117.36,56.215,46.159,29.775 +2020-05-28 15:45:00,118.28,53.708999999999996,46.159,29.775 +2020-05-28 16:00:00,120.09,56.588,47.115,29.775 +2020-05-28 16:15:00,117.02,56.037,47.115,29.775 +2020-05-28 16:30:00,117.12,55.543,47.115,29.775 +2020-05-28 16:45:00,115.03,51.835,47.115,29.775 +2020-05-28 17:00:00,115.21,54.302,50.827,29.775 +2020-05-28 17:15:00,114.26,54.784,50.827,29.775 +2020-05-28 17:30:00,113.32,54.513999999999996,50.827,29.775 +2020-05-28 17:45:00,113.31,53.118,50.827,29.775 +2020-05-28 18:00:00,114.29,56.00899999999999,52.586000000000006,29.775 +2020-05-28 18:15:00,111.81,56.798,52.586000000000006,29.775 +2020-05-28 18:30:00,113.58,54.565,52.586000000000006,29.775 +2020-05-28 18:45:00,111.62,59.769,52.586000000000006,29.775 +2020-05-28 19:00:00,107.16,60.352,51.886,29.775 +2020-05-28 19:15:00,104.15,59.531000000000006,51.886,29.775 +2020-05-28 19:30:00,103.5,59.049,51.886,29.775 +2020-05-28 19:45:00,102.04,59.635,51.886,29.775 +2020-05-28 20:00:00,100.18,57.68600000000001,56.162,29.775 +2020-05-28 20:15:00,101.47,56.798,56.162,29.775 +2020-05-28 20:30:00,103.36,56.391000000000005,56.162,29.775 +2020-05-28 20:45:00,99.21,56.652,56.162,29.775 +2020-05-28 21:00:00,100.34,54.191,53.023,29.775 +2020-05-28 21:15:00,99.7,55.746,53.023,29.775 +2020-05-28 21:30:00,97.4,56.413000000000004,53.023,29.775 +2020-05-28 21:45:00,98.85,57.358000000000004,53.023,29.775 +2020-05-28 22:00:00,89.45,54.783,49.303999999999995,29.775 +2020-05-28 22:15:00,90.82,55.674,49.303999999999995,29.775 +2020-05-28 22:30:00,91.85,48.423,49.303999999999995,29.775 +2020-05-28 22:45:00,92.06,44.99,49.303999999999995,29.775 +2020-05-28 23:00:00,82.98,39.205999999999996,43.409,29.775 +2020-05-28 23:15:00,78.65,37.515,43.409,29.775 +2020-05-28 23:30:00,84.66,36.694,43.409,29.775 +2020-05-28 23:45:00,83.7,36.199,43.409,29.775 +2020-05-29 00:00:00,82.83,33.088,39.884,29.775 +2020-05-29 00:15:00,79.0,33.650999999999996,39.884,29.775 +2020-05-29 00:30:00,76.64,32.953,39.884,29.775 +2020-05-29 00:45:00,75.71,32.335,39.884,29.775 +2020-05-29 01:00:00,75.93,31.62,37.658,29.775 +2020-05-29 01:15:00,75.57,30.374000000000002,37.658,29.775 +2020-05-29 01:30:00,74.04,29.29,37.658,29.775 +2020-05-29 01:45:00,79.8,28.044,37.658,29.775 +2020-05-29 02:00:00,80.93,28.939,36.707,29.775 +2020-05-29 02:15:00,81.07,27.433000000000003,36.707,29.775 +2020-05-29 02:30:00,74.85,30.576,36.707,29.775 +2020-05-29 02:45:00,77.58,30.746,36.707,29.775 +2020-05-29 03:00:00,83.0,34.054,37.025,29.775 +2020-05-29 03:15:00,79.28,31.87,37.025,29.775 +2020-05-29 03:30:00,78.44,30.916999999999998,37.025,29.775 +2020-05-29 03:45:00,80.42,31.393,37.025,29.775 +2020-05-29 04:00:00,86.4,41.3,38.349000000000004,29.775 +2020-05-29 04:15:00,88.81,49.849,38.349000000000004,29.775 +2020-05-29 04:30:00,85.87,48.602,38.349000000000004,29.775 +2020-05-29 04:45:00,86.7,48.461000000000006,38.349000000000004,29.775 +2020-05-29 05:00:00,92.38,70.797,41.565,29.775 +2020-05-29 05:15:00,96.58,90.395,41.565,29.775 +2020-05-29 05:30:00,99.6,80.309,41.565,29.775 +2020-05-29 05:45:00,103.24,74.263,41.565,29.775 +2020-05-29 06:00:00,109.02,76.183,53.861000000000004,29.775 +2020-05-29 06:15:00,107.63,77.858,53.861000000000004,29.775 +2020-05-29 06:30:00,108.54,74.766,53.861000000000004,29.775 +2020-05-29 06:45:00,109.06,75.15100000000001,53.861000000000004,29.775 +2020-05-29 07:00:00,110.54,74.923,63.497,29.775 +2020-05-29 07:15:00,108.76,75.47,63.497,29.775 +2020-05-29 07:30:00,108.91,70.567,63.497,29.775 +2020-05-29 07:45:00,107.71,68.62,63.497,29.775 +2020-05-29 08:00:00,107.34,63.365,55.43899999999999,29.775 +2020-05-29 08:15:00,109.81,65.593,55.43899999999999,29.775 +2020-05-29 08:30:00,113.11,64.368,55.43899999999999,29.775 +2020-05-29 08:45:00,111.74,65.642,55.43899999999999,29.775 +2020-05-29 09:00:00,109.3,60.086999999999996,52.132,29.775 +2020-05-29 09:15:00,107.72,60.547,52.132,29.775 +2020-05-29 09:30:00,107.65,62.937,52.132,29.775 +2020-05-29 09:45:00,106.88,64.81,52.132,29.775 +2020-05-29 10:00:00,108.37,61.106,49.881,29.775 +2020-05-29 10:15:00,108.93,62.585,49.881,29.775 +2020-05-29 10:30:00,106.62,63.006,49.881,29.775 +2020-05-29 10:45:00,106.59,64.012,49.881,29.775 +2020-05-29 11:00:00,105.28,60.29,49.396,29.775 +2020-05-29 11:15:00,105.09,60.472,49.396,29.775 +2020-05-29 11:30:00,105.21,62.038999999999994,49.396,29.775 +2020-05-29 11:45:00,107.75,62.458999999999996,49.396,29.775 +2020-05-29 12:00:00,107.33,58.667,46.7,29.775 +2020-05-29 12:15:00,107.68,57.998999999999995,46.7,29.775 +2020-05-29 12:30:00,104.99,56.981,46.7,29.775 +2020-05-29 12:45:00,108.45,57.851000000000006,46.7,29.775 +2020-05-29 13:00:00,103.8,59.25,44.05,29.775 +2020-05-29 13:15:00,104.04,60.341,44.05,29.775 +2020-05-29 13:30:00,98.47,59.233000000000004,44.05,29.775 +2020-05-29 13:45:00,98.7,57.733999999999995,44.05,29.775 +2020-05-29 14:00:00,101.02,58.231,42.805,29.775 +2020-05-29 14:15:00,107.75,57.125,42.805,29.775 +2020-05-29 14:30:00,112.27,57.461000000000006,42.805,29.775 +2020-05-29 14:45:00,112.96,57.571000000000005,42.805,29.775 +2020-05-29 15:00:00,112.92,58.443000000000005,44.36600000000001,29.775 +2020-05-29 15:15:00,113.34,55.558,44.36600000000001,29.775 +2020-05-29 15:30:00,113.29,52.812,44.36600000000001,29.775 +2020-05-29 15:45:00,113.64,51.027,44.36600000000001,29.775 +2020-05-29 16:00:00,113.52,52.907,46.928999999999995,29.775 +2020-05-29 16:15:00,114.14,52.87,46.928999999999995,29.775 +2020-05-29 16:30:00,113.45,52.247,46.928999999999995,29.775 +2020-05-29 16:45:00,114.36,47.736000000000004,46.928999999999995,29.775 +2020-05-29 17:00:00,114.25,51.898,51.468,29.775 +2020-05-29 17:15:00,112.86,52.104,51.468,29.775 +2020-05-29 17:30:00,111.56,51.902,51.468,29.775 +2020-05-29 17:45:00,111.54,50.268,51.468,29.775 +2020-05-29 18:00:00,112.16,53.412,52.58,29.775 +2020-05-29 18:15:00,107.98,53.203,52.58,29.775 +2020-05-29 18:30:00,107.39,50.948,52.58,29.775 +2020-05-29 18:45:00,106.01,56.54600000000001,52.58,29.775 +2020-05-29 19:00:00,102.16,58.183,52.183,29.775 +2020-05-29 19:15:00,99.93,58.201,52.183,29.775 +2020-05-29 19:30:00,97.8,57.68600000000001,52.183,29.775 +2020-05-29 19:45:00,97.65,57.207,52.183,29.775 +2020-05-29 20:00:00,95.98,55.088,58.497,29.775 +2020-05-29 20:15:00,94.76,54.951,58.497,29.775 +2020-05-29 20:30:00,96.05,54.095,58.497,29.775 +2020-05-29 20:45:00,94.03,53.744,58.497,29.775 +2020-05-29 21:00:00,89.57,52.641999999999996,54.731,29.775 +2020-05-29 21:15:00,90.47,55.89,54.731,29.775 +2020-05-29 21:30:00,93.37,56.398999999999994,54.731,29.775 +2020-05-29 21:45:00,92.72,57.673,54.731,29.775 +2020-05-29 22:00:00,88.91,55.195,51.386,29.775 +2020-05-29 22:15:00,88.07,55.836999999999996,51.386,29.775 +2020-05-29 22:30:00,87.69,54.43600000000001,51.386,29.775 +2020-05-29 22:45:00,85.16,52.544,51.386,29.775 +2020-05-29 23:00:00,77.14,48.243,44.463,29.775 +2020-05-29 23:15:00,77.25,44.698,44.463,29.775 +2020-05-29 23:30:00,80.76,41.843999999999994,44.463,29.775 +2020-05-29 23:45:00,79.05,41.086000000000006,44.463,29.775 +2020-05-30 00:00:00,76.42,33.446,42.833999999999996,29.662 +2020-05-30 00:15:00,70.78,32.48,42.833999999999996,29.662 +2020-05-30 00:30:00,68.05,31.618000000000002,42.833999999999996,29.662 +2020-05-30 00:45:00,68.33,30.462,42.833999999999996,29.662 +2020-05-30 01:00:00,68.06,30.156,37.859,29.662 +2020-05-30 01:15:00,67.11,29.238000000000003,37.859,29.662 +2020-05-30 01:30:00,65.83,27.27,37.859,29.662 +2020-05-30 01:45:00,66.87,27.154,37.859,29.662 +2020-05-30 02:00:00,69.9,27.255,35.327,29.662 +2020-05-30 02:15:00,73.43,24.915,35.327,29.662 +2020-05-30 02:30:00,73.36,27.076999999999998,35.327,29.662 +2020-05-30 02:45:00,69.26,28.019000000000002,35.327,29.662 +2020-05-30 03:00:00,65.65,30.165,34.908,29.662 +2020-05-30 03:15:00,65.73,27.055,34.908,29.662 +2020-05-30 03:30:00,66.22,26.081999999999997,34.908,29.662 +2020-05-30 03:45:00,64.96,28.008000000000003,34.908,29.662 +2020-05-30 04:00:00,63.16,35.196999999999996,34.84,29.662 +2020-05-30 04:15:00,63.06,42.316,34.84,29.662 +2020-05-30 04:30:00,60.91,39.02,34.84,29.662 +2020-05-30 04:45:00,65.06,39.03,34.84,29.662 +2020-05-30 05:00:00,64.16,50.458,34.222,29.662 +2020-05-30 05:15:00,65.68,55.727,34.222,29.662 +2020-05-30 05:30:00,66.81,47.24,34.222,29.662 +2020-05-30 05:45:00,68.98,46.597,34.222,29.662 +2020-05-30 06:00:00,71.04,62.797,35.515,29.662 +2020-05-30 06:15:00,72.65,75.111,35.515,29.662 +2020-05-30 06:30:00,72.85,68.265,35.515,29.662 +2020-05-30 06:45:00,75.19,63.847,35.515,29.662 +2020-05-30 07:00:00,78.59,61.262,39.687,29.662 +2020-05-30 07:15:00,80.62,60.335,39.687,29.662 +2020-05-30 07:30:00,84.57,57.398999999999994,39.687,29.662 +2020-05-30 07:45:00,86.6,57.178000000000004,39.687,29.662 +2020-05-30 08:00:00,86.67,53.312,44.9,29.662 +2020-05-30 08:15:00,86.66,56.153999999999996,44.9,29.662 +2020-05-30 08:30:00,87.74,55.246,44.9,29.662 +2020-05-30 08:45:00,88.34,58.092,44.9,29.662 +2020-05-30 09:00:00,88.31,55.77,45.724,29.662 +2020-05-30 09:15:00,89.73,56.852,45.724,29.662 +2020-05-30 09:30:00,90.73,59.906000000000006,45.724,29.662 +2020-05-30 09:45:00,90.92,61.423,45.724,29.662 +2020-05-30 10:00:00,90.8,58.273999999999994,43.123999999999995,29.662 +2020-05-30 10:15:00,91.47,60.143,43.123999999999995,29.662 +2020-05-30 10:30:00,90.99,60.29600000000001,43.123999999999995,29.662 +2020-05-30 10:45:00,93.34,61.288000000000004,43.123999999999995,29.662 +2020-05-30 11:00:00,92.41,57.467,40.255,29.662 +2020-05-30 11:15:00,90.73,58.301,40.255,29.662 +2020-05-30 11:30:00,88.51,59.858999999999995,40.255,29.662 +2020-05-30 11:45:00,87.44,60.681000000000004,40.255,29.662 +2020-05-30 12:00:00,84.12,56.977,38.582,29.662 +2020-05-30 12:15:00,84.24,57.239,38.582,29.662 +2020-05-30 12:30:00,83.18,56.147,38.582,29.662 +2020-05-30 12:45:00,81.0,57.498999999999995,38.582,29.662 +2020-05-30 13:00:00,79.85,58.083999999999996,36.043,29.662 +2020-05-30 13:15:00,84.69,58.198,36.043,29.662 +2020-05-30 13:30:00,83.22,57.165,36.043,29.662 +2020-05-30 13:45:00,79.43,54.551,36.043,29.662 +2020-05-30 14:00:00,77.05,55.413999999999994,35.216,29.662 +2020-05-30 14:15:00,77.16,53.035,35.216,29.662 +2020-05-30 14:30:00,76.32,52.515,35.216,29.662 +2020-05-30 14:45:00,76.2,53.118,35.216,29.662 +2020-05-30 15:00:00,77.38,54.601000000000006,36.759,29.662 +2020-05-30 15:15:00,76.91,52.538000000000004,36.759,29.662 +2020-05-30 15:30:00,75.07,50.324,36.759,29.662 +2020-05-30 15:45:00,72.67,47.688,36.759,29.662 +2020-05-30 16:00:00,73.75,51.426,40.086,29.662 +2020-05-30 16:15:00,77.63,50.755,40.086,29.662 +2020-05-30 16:30:00,77.61,50.346000000000004,40.086,29.662 +2020-05-30 16:45:00,79.19,45.966,40.086,29.662 +2020-05-30 17:00:00,80.06,48.941,44.876999999999995,29.662 +2020-05-30 17:15:00,80.99,47.513999999999996,44.876999999999995,29.662 +2020-05-30 17:30:00,81.71,47.153999999999996,44.876999999999995,29.662 +2020-05-30 17:45:00,82.2,45.856,44.876999999999995,29.662 +2020-05-30 18:00:00,84.63,50.298,47.056000000000004,29.662 +2020-05-30 18:15:00,85.41,52.016999999999996,47.056000000000004,29.662 +2020-05-30 18:30:00,82.68,51.31,47.056000000000004,29.662 +2020-05-30 18:45:00,82.12,52.935,47.056000000000004,29.662 +2020-05-30 19:00:00,81.55,53.339,45.57,29.662 +2020-05-30 19:15:00,78.78,52.294,45.57,29.662 +2020-05-30 19:30:00,77.84,52.655,45.57,29.662 +2020-05-30 19:45:00,77.76,53.809,45.57,29.662 +2020-05-30 20:00:00,73.8,52.851000000000006,41.685,29.662 +2020-05-30 20:15:00,77.24,52.566,41.685,29.662 +2020-05-30 20:30:00,78.75,50.82899999999999,41.685,29.662 +2020-05-30 20:45:00,79.95,52.173,41.685,29.662 +2020-05-30 21:00:00,76.15,50.175,39.576,29.662 +2020-05-30 21:15:00,75.58,53.202,39.576,29.662 +2020-05-30 21:30:00,73.83,54.123000000000005,39.576,29.662 +2020-05-30 21:45:00,73.25,54.816,39.576,29.662 +2020-05-30 22:00:00,69.37,52.62,39.068000000000005,29.662 +2020-05-30 22:15:00,70.64,54.028999999999996,39.068000000000005,29.662 +2020-05-30 22:30:00,66.88,53.56100000000001,39.068000000000005,29.662 +2020-05-30 22:45:00,65.37,52.398999999999994,39.068000000000005,29.662 +2020-05-30 23:00:00,61.82,47.92100000000001,32.06,29.662 +2020-05-30 23:15:00,61.6,44.477,32.06,29.662 +2020-05-30 23:30:00,60.72,43.583999999999996,32.06,29.662 +2020-05-30 23:45:00,59.52,42.652,32.06,29.662 +2020-05-31 00:00:00,58.29,34.622,28.825,29.662 +2020-05-31 00:15:00,58.97,32.507,28.825,29.662 +2020-05-31 00:30:00,58.75,31.43,28.825,29.662 +2020-05-31 00:45:00,58.69,30.32,28.825,29.662 +2020-05-31 01:00:00,56.94,30.25,25.995,29.662 +2020-05-31 01:15:00,57.91,29.410999999999998,25.995,29.662 +2020-05-31 01:30:00,54.43,27.41,25.995,29.662 +2020-05-31 01:45:00,57.82,26.866,25.995,29.662 +2020-05-31 02:00:00,57.05,26.883000000000003,24.394000000000002,29.662 +2020-05-31 02:15:00,57.16,25.024,24.394000000000002,29.662 +2020-05-31 02:30:00,57.04,27.545,24.394000000000002,29.662 +2020-05-31 02:45:00,57.15,28.318,24.394000000000002,29.662 +2020-05-31 03:00:00,56.31,31.146,22.916999999999998,29.662 +2020-05-31 03:15:00,56.76,28.165,22.916999999999998,29.662 +2020-05-31 03:30:00,57.63,26.795,22.916999999999998,29.662 +2020-05-31 03:45:00,57.02,27.980999999999998,22.916999999999998,29.662 +2020-05-31 04:00:00,54.07,35.034,23.576999999999998,29.662 +2020-05-31 04:15:00,53.44,41.483000000000004,23.576999999999998,29.662 +2020-05-31 04:30:00,52.41,39.448,23.576999999999998,29.662 +2020-05-31 04:45:00,52.3,39.071999999999996,23.576999999999998,29.662 +2020-05-31 05:00:00,51.54,49.851000000000006,22.730999999999998,29.662 +2020-05-31 05:15:00,50.75,53.773999999999994,22.730999999999998,29.662 +2020-05-31 05:30:00,50.89,44.93899999999999,22.730999999999998,29.662 +2020-05-31 05:45:00,52.44,44.14,22.730999999999998,29.662 +2020-05-31 06:00:00,54.87,58.076,22.34,29.662 +2020-05-31 06:15:00,54.95,70.82600000000001,22.34,29.662 +2020-05-31 06:30:00,56.67,63.121,22.34,29.662 +2020-05-31 06:45:00,59.11,57.573,22.34,29.662 +2020-05-31 07:00:00,60.32,55.717,24.691999999999997,29.662 +2020-05-31 07:15:00,62.84,53.083,24.691999999999997,29.662 +2020-05-31 07:30:00,62.65,51.083999999999996,24.691999999999997,29.662 +2020-05-31 07:45:00,62.23,50.706,24.691999999999997,29.662 +2020-05-31 08:00:00,63.06,47.919,29.340999999999998,29.662 +2020-05-31 08:15:00,62.23,51.89,29.340999999999998,29.662 +2020-05-31 08:30:00,64.21,52.13399999999999,29.340999999999998,29.662 +2020-05-31 08:45:00,65.4,55.338,29.340999999999998,29.662 +2020-05-31 09:00:00,62.96,52.817,30.788,29.662 +2020-05-31 09:15:00,61.99,53.562,30.788,29.662 +2020-05-31 09:30:00,59.44,56.989,30.788,29.662 +2020-05-31 09:45:00,62.19,59.445,30.788,29.662 +2020-05-31 10:00:00,62.46,57.333999999999996,30.158,29.662 +2020-05-31 10:15:00,62.53,59.471000000000004,30.158,29.662 +2020-05-31 10:30:00,63.05,59.968999999999994,30.158,29.662 +2020-05-31 10:45:00,65.84,61.492,30.158,29.662 +2020-05-31 11:00:00,61.04,57.544,32.056,29.662 +2020-05-31 11:15:00,61.5,58.008,32.056,29.662 +2020-05-31 11:30:00,63.18,59.845,32.056,29.662 +2020-05-31 11:45:00,61.81,61.044,32.056,29.662 +2020-05-31 12:00:00,59.18,58.198,28.671999999999997,29.662 +2020-05-31 12:15:00,59.97,58.324,28.671999999999997,29.662 +2020-05-31 12:30:00,55.08,57.066,28.671999999999997,29.662 +2020-05-31 12:45:00,55.72,57.618,28.671999999999997,29.662 +2020-05-31 13:00:00,57.1,57.784,23.171,29.662 +2020-05-31 13:15:00,57.89,58.04600000000001,23.171,29.662 +2020-05-31 13:30:00,60.84,55.958,23.171,29.662 +2020-05-31 13:45:00,58.45,54.222,23.171,29.662 +2020-05-31 14:00:00,55.33,56.27,19.11,29.662 +2020-05-31 14:15:00,57.48,54.55,19.11,29.662 +2020-05-31 14:30:00,55.43,53.14,19.11,29.662 +2020-05-31 14:45:00,56.24,52.672,19.11,29.662 +2020-05-31 15:00:00,56.35,53.988,19.689,29.662 +2020-05-31 15:15:00,59.22,51.339,19.689,29.662 +2020-05-31 15:30:00,57.36,49.071999999999996,19.689,29.662 +2020-05-31 15:45:00,59.35,46.838,19.689,29.662 +2020-05-31 16:00:00,63.4,49.468,22.875,29.662 +2020-05-31 16:15:00,64.4,48.803999999999995,22.875,29.662 +2020-05-31 16:30:00,66.23,49.398999999999994,22.875,29.662 +2020-05-31 16:45:00,67.91,45.062,22.875,29.662 +2020-05-31 17:00:00,72.6,48.413999999999994,33.884,29.662 +2020-05-31 17:15:00,71.61,48.3,33.884,29.662 +2020-05-31 17:30:00,75.13,48.739,33.884,29.662 +2020-05-31 17:45:00,76.52,48.29,33.884,29.662 +2020-05-31 18:00:00,79.29,53.143,38.453,29.662 +2020-05-31 18:15:00,79.24,54.731,38.453,29.662 +2020-05-31 18:30:00,79.41,53.353,38.453,29.662 +2020-05-31 18:45:00,83.37,55.465,38.453,29.662 +2020-05-31 19:00:00,80.11,57.818000000000005,39.221,29.662 +2020-05-31 19:15:00,85.23,55.82899999999999,39.221,29.662 +2020-05-31 19:30:00,84.73,55.917,39.221,29.662 +2020-05-31 19:45:00,86.55,56.916000000000004,39.221,29.662 +2020-05-31 20:00:00,86.5,56.137,37.871,29.662 +2020-05-31 20:15:00,86.56,55.92,37.871,29.662 +2020-05-31 20:30:00,87.79,55.214,37.871,29.662 +2020-05-31 20:45:00,86.92,54.773999999999994,37.871,29.662 +2020-05-31 21:00:00,81.05,52.123999999999995,36.465,29.662 +2020-05-31 21:15:00,84.64,54.754,36.465,29.662 +2020-05-31 21:30:00,78.67,55.098,36.465,29.662 +2020-05-31 21:45:00,78.8,56.174,36.465,29.662 +2020-05-31 22:00:00,77.15,55.681999999999995,36.092,29.662 +2020-05-31 22:15:00,82.27,55.36600000000001,36.092,29.662 +2020-05-31 22:30:00,81.25,53.788000000000004,36.092,29.662 +2020-05-31 22:45:00,78.71,51.242,36.092,29.662 +2020-05-31 23:00:00,54.1,45.903999999999996,31.013,29.662 +2020-05-31 23:15:00,55.38,44.067,31.013,29.662 +2020-05-31 23:30:00,54.63,42.828,31.013,29.662 +2020-05-31 23:45:00,53.74,42.213,31.013,29.662 +2020-06-01 00:00:00,52.35,28.079,19.295,29.17 +2020-06-01 00:15:00,52.65,26.704,19.295,29.17 +2020-06-01 00:30:00,52.03,25.386999999999997,19.295,29.17 +2020-06-01 00:45:00,52.09,24.485,19.295,29.17 +2020-06-01 01:00:00,50.91,24.236,15.365,29.17 +2020-06-01 01:15:00,52.12,23.596,15.365,29.17 +2020-06-01 01:30:00,50.95,21.804000000000002,15.365,29.17 +2020-06-01 01:45:00,51.01,21.910999999999998,15.365,29.17 +2020-06-01 02:00:00,50.17,21.433000000000003,13.03,29.17 +2020-06-01 02:15:00,50.81,19.726,13.03,29.17 +2020-06-01 02:30:00,50.97,22.149,13.03,29.17 +2020-06-01 02:45:00,51.9,22.715999999999998,13.03,29.17 +2020-06-01 03:00:00,51.98,24.44,13.46,29.17 +2020-06-01 03:15:00,52.07,21.471,13.46,29.17 +2020-06-01 03:30:00,52.7,20.089000000000002,13.46,29.17 +2020-06-01 03:45:00,49.25,20.781,13.46,29.17 +2020-06-01 04:00:00,51.66,26.259,13.305,29.17 +2020-06-01 04:15:00,51.17,32.0,13.305,29.17 +2020-06-01 04:30:00,48.48,29.869,13.305,29.17 +2020-06-01 04:45:00,50.55,29.331999999999997,13.305,29.17 +2020-06-01 05:00:00,48.78,38.022,13.482000000000001,29.17 +2020-06-01 05:15:00,47.36,39.586,13.482000000000001,29.17 +2020-06-01 05:30:00,50.13,31.343000000000004,13.482000000000001,29.17 +2020-06-01 05:45:00,50.0,31.281,13.482000000000001,29.17 +2020-06-01 06:00:00,51.06,43.007,14.677999999999999,29.17 +2020-06-01 06:15:00,50.92,53.478,14.677999999999999,29.17 +2020-06-01 06:30:00,51.78,46.945,14.677999999999999,29.17 +2020-06-01 06:45:00,52.65,42.336999999999996,14.677999999999999,29.17 +2020-06-01 07:00:00,54.68,42.636,18.473,29.17 +2020-06-01 07:15:00,53.98,40.101,18.473,29.17 +2020-06-01 07:30:00,53.67,38.333,18.473,29.17 +2020-06-01 07:45:00,54.26,38.079,18.473,29.17 +2020-06-01 08:00:00,54.22,38.016,18.142,29.17 +2020-06-01 08:15:00,53.58,41.693999999999996,18.142,29.17 +2020-06-01 08:30:00,52.87,42.685,18.142,29.17 +2020-06-01 08:45:00,53.28,45.778999999999996,18.142,29.17 +2020-06-01 09:00:00,50.94,42.258,19.148,29.17 +2020-06-01 09:15:00,51.9,43.126999999999995,19.148,29.17 +2020-06-01 09:30:00,47.84,46.728,19.148,29.17 +2020-06-01 09:45:00,51.24,49.751999999999995,19.148,29.17 +2020-06-01 10:00:00,53.22,45.975,17.139,29.17 +2020-06-01 10:15:00,55.99,47.87,17.139,29.17 +2020-06-01 10:30:00,57.89,48.418,17.139,29.17 +2020-06-01 10:45:00,57.81,50.29600000000001,17.139,29.17 +2020-06-01 11:00:00,53.25,45.78,18.037,29.17 +2020-06-01 11:15:00,51.93,46.23,18.037,29.17 +2020-06-01 11:30:00,49.85,48.203,18.037,29.17 +2020-06-01 11:45:00,49.1,49.861000000000004,18.037,29.17 +2020-06-01 12:00:00,46.61,47.415,16.559,29.17 +2020-06-01 12:15:00,46.04,47.076,16.559,29.17 +2020-06-01 12:30:00,44.13,46.448,16.559,29.17 +2020-06-01 12:45:00,44.13,47.167,16.559,29.17 +2020-06-01 13:00:00,43.0,47.331,13.697000000000001,29.17 +2020-06-01 13:15:00,42.54,47.643,13.697000000000001,29.17 +2020-06-01 13:30:00,42.78,45.68899999999999,13.697000000000001,29.17 +2020-06-01 13:45:00,44.17,44.308,13.697000000000001,29.17 +2020-06-01 14:00:00,44.11,46.63399999999999,12.578,29.17 +2020-06-01 14:15:00,43.14,44.994,12.578,29.17 +2020-06-01 14:30:00,44.66,43.99,12.578,29.17 +2020-06-01 14:45:00,44.56,43.341,12.578,29.17 +2020-06-01 15:00:00,47.23,44.93899999999999,14.425999999999998,29.17 +2020-06-01 15:15:00,46.69,42.405,14.425999999999998,29.17 +2020-06-01 15:30:00,50.96,40.277,14.425999999999998,29.17 +2020-06-01 15:45:00,50.68,38.414,14.425999999999998,29.17 +2020-06-01 16:00:00,52.39,40.319,18.287,29.17 +2020-06-01 16:15:00,55.05,39.81,18.287,29.17 +2020-06-01 16:30:00,57.45,39.958,18.287,29.17 +2020-06-01 16:45:00,61.38,36.124,18.287,29.17 +2020-06-01 17:00:00,65.43,39.303000000000004,24.461,29.17 +2020-06-01 17:15:00,66.16,38.798,24.461,29.17 +2020-06-01 17:30:00,68.01,38.955999999999996,24.461,29.17 +2020-06-01 17:45:00,69.86,38.388000000000005,24.461,29.17 +2020-06-01 18:00:00,71.38,42.556000000000004,31.44,29.17 +2020-06-01 18:15:00,71.03,43.601000000000006,31.44,29.17 +2020-06-01 18:30:00,73.56,42.254,31.44,29.17 +2020-06-01 18:45:00,79.8,43.708999999999996,31.44,29.17 +2020-06-01 19:00:00,80.73,46.256,34.859,29.17 +2020-06-01 19:15:00,73.32,44.074,34.859,29.17 +2020-06-01 19:30:00,73.38,43.883,34.859,29.17 +2020-06-01 19:45:00,70.97,44.55,34.859,29.17 +2020-06-01 20:00:00,73.37,44.213,42.937,29.17 +2020-06-01 20:15:00,81.13,44.318999999999996,42.937,29.17 +2020-06-01 20:30:00,83.24,43.968,42.937,29.17 +2020-06-01 20:45:00,81.93,43.483999999999995,42.937,29.17 +2020-06-01 21:00:00,74.91,41.38399999999999,39.795,29.17 +2020-06-01 21:15:00,74.14,44.074,39.795,29.17 +2020-06-01 21:30:00,74.04,44.778999999999996,39.795,29.17 +2020-06-01 21:45:00,70.96,45.748999999999995,39.795,29.17 +2020-06-01 22:00:00,72.4,44.92100000000001,41.108000000000004,29.17 +2020-06-01 22:15:00,76.24,45.008,41.108000000000004,29.17 +2020-06-01 22:30:00,72.97,43.971000000000004,41.108000000000004,29.17 +2020-06-01 22:45:00,68.25,41.247,41.108000000000004,29.17 +2020-06-01 23:00:00,75.51,37.607,33.82,29.17 +2020-06-01 23:15:00,76.08,35.554,33.82,29.17 +2020-06-01 23:30:00,75.77,34.259,33.82,29.17 +2020-06-01 23:45:00,75.39,33.885,33.82,29.17 +2020-06-02 00:00:00,72.23,27.486,44.625,29.28 +2020-06-02 00:15:00,72.85,28.073,44.625,29.28 +2020-06-02 00:30:00,72.81,27.004,44.625,29.28 +2020-06-02 00:45:00,72.9,26.359,44.625,29.28 +2020-06-02 01:00:00,72.66,25.963,41.733000000000004,29.28 +2020-06-02 01:15:00,73.01,25.336,41.733000000000004,29.28 +2020-06-02 01:30:00,71.48,23.773000000000003,41.733000000000004,29.28 +2020-06-02 01:45:00,71.71,23.325,41.733000000000004,29.28 +2020-06-02 02:00:00,71.14,22.816,39.872,29.28 +2020-06-02 02:15:00,72.89,21.364,39.872,29.28 +2020-06-02 02:30:00,72.11,23.55,39.872,29.28 +2020-06-02 02:45:00,72.88,24.247,39.872,29.28 +2020-06-02 03:00:00,72.62,25.929000000000002,38.711,29.28 +2020-06-02 03:15:00,73.57,24.605999999999998,38.711,29.28 +2020-06-02 03:30:00,74.97,23.865,38.711,29.28 +2020-06-02 03:45:00,74.58,23.045,38.711,29.28 +2020-06-02 04:00:00,76.34,30.565,39.823,29.28 +2020-06-02 04:15:00,80.5,39.384,39.823,29.28 +2020-06-02 04:30:00,80.66,36.830999999999996,39.823,29.28 +2020-06-02 04:45:00,85.79,37.228,39.823,29.28 +2020-06-02 05:00:00,99.7,55.825,43.228,29.28 +2020-06-02 05:15:00,105.56,69.34,43.228,29.28 +2020-06-02 05:30:00,108.46,59.775,43.228,29.28 +2020-06-02 05:45:00,108.08,55.667,43.228,29.28 +2020-06-02 06:00:00,115.07,57.045,54.316,29.28 +2020-06-02 06:15:00,119.43,57.893,54.316,29.28 +2020-06-02 06:30:00,122.79,55.489,54.316,29.28 +2020-06-02 06:45:00,121.32,55.802,54.316,29.28 +2020-06-02 07:00:00,119.92,56.843,65.758,29.28 +2020-06-02 07:15:00,127.93,56.339,65.758,29.28 +2020-06-02 07:30:00,129.28,53.638999999999996,65.758,29.28 +2020-06-02 07:45:00,129.07,52.556999999999995,65.758,29.28 +2020-06-02 08:00:00,127.22,49.989,57.983000000000004,29.28 +2020-06-02 08:15:00,131.77,51.858999999999995,57.983000000000004,29.28 +2020-06-02 08:30:00,134.36,51.706,57.983000000000004,29.28 +2020-06-02 08:45:00,133.94,53.798,57.983000000000004,29.28 +2020-06-02 09:00:00,128.31,49.465,52.653,29.28 +2020-06-02 09:15:00,126.41,48.339,52.653,29.28 +2020-06-02 09:30:00,129.84,51.693999999999996,52.653,29.28 +2020-06-02 09:45:00,130.52,53.861000000000004,52.653,29.28 +2020-06-02 10:00:00,129.02,49.056999999999995,51.408,29.28 +2020-06-02 10:15:00,128.01,50.575,51.408,29.28 +2020-06-02 10:30:00,124.54,50.652,51.408,29.28 +2020-06-02 10:45:00,130.5,52.098,51.408,29.28 +2020-06-02 11:00:00,130.58,47.683,51.913000000000004,29.28 +2020-06-02 11:15:00,129.85,48.934,51.913000000000004,29.28 +2020-06-02 11:30:00,124.12,50.481,51.913000000000004,29.28 +2020-06-02 11:45:00,123.31,52.216,51.913000000000004,29.28 +2020-06-02 12:00:00,125.14,48.06100000000001,49.508,29.28 +2020-06-02 12:15:00,122.36,48.11600000000001,49.508,29.28 +2020-06-02 12:30:00,118.37,47.354,49.508,29.28 +2020-06-02 12:45:00,115.76,48.853,49.508,29.28 +2020-06-02 13:00:00,120.83,49.547,50.007,29.28 +2020-06-02 13:15:00,121.9,50.588,50.007,29.28 +2020-06-02 13:30:00,116.48,48.832,50.007,29.28 +2020-06-02 13:45:00,110.09,47.396,50.007,29.28 +2020-06-02 14:00:00,109.79,49.284,49.778999999999996,29.28 +2020-06-02 14:15:00,111.56,47.966,49.778999999999996,29.28 +2020-06-02 14:30:00,112.09,47.093999999999994,49.778999999999996,29.28 +2020-06-02 14:45:00,114.29,47.645,49.778999999999996,29.28 +2020-06-02 15:00:00,110.48,48.917,51.559,29.28 +2020-06-02 15:15:00,103.02,46.593999999999994,51.559,29.28 +2020-06-02 15:30:00,100.93,44.923,51.559,29.28 +2020-06-02 15:45:00,105.33,42.842,51.559,29.28 +2020-06-02 16:00:00,105.0,45.167,53.531000000000006,29.28 +2020-06-02 16:15:00,105.3,44.769,53.531000000000006,29.28 +2020-06-02 16:30:00,106.76,43.912,53.531000000000006,29.28 +2020-06-02 16:45:00,111.6,40.665,53.531000000000006,29.28 +2020-06-02 17:00:00,113.3,43.038999999999994,59.497,29.28 +2020-06-02 17:15:00,109.25,43.193000000000005,59.497,29.28 +2020-06-02 17:30:00,106.26,42.56,59.497,29.28 +2020-06-02 17:45:00,108.2,41.12,59.497,29.28 +2020-06-02 18:00:00,110.8,43.38,59.861999999999995,29.28 +2020-06-02 18:15:00,114.43,43.85,59.861999999999995,29.28 +2020-06-02 18:30:00,111.78,41.553999999999995,59.861999999999995,29.28 +2020-06-02 18:45:00,107.85,45.961000000000006,59.861999999999995,29.28 +2020-06-02 19:00:00,102.8,46.961999999999996,60.989,29.28 +2020-06-02 19:15:00,105.39,46.086000000000006,60.989,29.28 +2020-06-02 19:30:00,98.65,45.317,60.989,29.28 +2020-06-02 19:45:00,98.03,45.648,60.989,29.28 +2020-06-02 20:00:00,95.94,44.276,68.35600000000001,29.28 +2020-06-02 20:15:00,101.74,44.063,68.35600000000001,29.28 +2020-06-02 20:30:00,101.49,44.187,68.35600000000001,29.28 +2020-06-02 20:45:00,102.03,44.443000000000005,68.35600000000001,29.28 +2020-06-02 21:00:00,92.62,42.57,59.251000000000005,29.28 +2020-06-02 21:15:00,92.31,44.255,59.251000000000005,29.28 +2020-06-02 21:30:00,87.58,45.371,59.251000000000005,29.28 +2020-06-02 21:45:00,86.58,46.31399999999999,59.251000000000005,29.28 +2020-06-02 22:00:00,81.88,43.613,54.736999999999995,29.28 +2020-06-02 22:15:00,80.55,45.158,54.736999999999995,29.28 +2020-06-02 22:30:00,78.5,39.465,54.736999999999995,29.28 +2020-06-02 22:45:00,77.43,36.318000000000005,54.736999999999995,29.28 +2020-06-02 23:00:00,74.39,32.014,46.806999999999995,29.28 +2020-06-02 23:15:00,74.81,30.081,46.806999999999995,29.28 +2020-06-02 23:30:00,74.8,28.956999999999997,46.806999999999995,29.28 +2020-06-02 23:45:00,73.41,28.416999999999998,46.806999999999995,29.28 +2020-06-03 00:00:00,70.04,27.325,43.824,29.28 +2020-06-03 00:15:00,71.56,27.914,43.824,29.28 +2020-06-03 00:30:00,68.67,26.846,43.824,29.28 +2020-06-03 00:45:00,70.95,26.205,43.824,29.28 +2020-06-03 01:00:00,71.49,25.829,39.86,29.28 +2020-06-03 01:15:00,71.44,25.180999999999997,39.86,29.28 +2020-06-03 01:30:00,70.05,23.608,39.86,29.28 +2020-06-03 01:45:00,70.5,23.154,39.86,29.28 +2020-06-03 02:00:00,70.07,22.645,37.931999999999995,29.28 +2020-06-03 02:15:00,71.93,21.186999999999998,37.931999999999995,29.28 +2020-06-03 02:30:00,70.28,23.375,37.931999999999995,29.28 +2020-06-03 02:45:00,70.45,24.079,37.931999999999995,29.28 +2020-06-03 03:00:00,71.64,25.763,37.579,29.28 +2020-06-03 03:15:00,72.7,24.436999999999998,37.579,29.28 +2020-06-03 03:30:00,72.09,23.701,37.579,29.28 +2020-06-03 03:45:00,72.31,22.904,37.579,29.28 +2020-06-03 04:00:00,76.85,30.365,37.931999999999995,29.28 +2020-06-03 04:15:00,80.4,39.134,37.931999999999995,29.28 +2020-06-03 04:30:00,88.31,36.568000000000005,37.931999999999995,29.28 +2020-06-03 04:45:00,93.4,36.96,37.931999999999995,29.28 +2020-06-03 05:00:00,94.29,55.43600000000001,40.942,29.28 +2020-06-03 05:15:00,98.54,68.80199999999999,40.942,29.28 +2020-06-03 05:30:00,101.92,59.305,40.942,29.28 +2020-06-03 05:45:00,106.14,55.255,40.942,29.28 +2020-06-03 06:00:00,113.26,56.653,56.516999999999996,29.28 +2020-06-03 06:15:00,112.2,57.481,56.516999999999996,29.28 +2020-06-03 06:30:00,106.99,55.099,56.516999999999996,29.28 +2020-06-03 06:45:00,110.19,55.44,56.516999999999996,29.28 +2020-06-03 07:00:00,113.12,56.468999999999994,71.707,29.28 +2020-06-03 07:15:00,116.27,55.978,71.707,29.28 +2020-06-03 07:30:00,115.88,53.263000000000005,71.707,29.28 +2020-06-03 07:45:00,113.15,52.215,71.707,29.28 +2020-06-03 08:00:00,113.28,49.655,61.17,29.28 +2020-06-03 08:15:00,115.37,51.568000000000005,61.17,29.28 +2020-06-03 08:30:00,116.39,51.406000000000006,61.17,29.28 +2020-06-03 08:45:00,112.02,53.507,61.17,29.28 +2020-06-03 09:00:00,110.21,49.167,57.282,29.28 +2020-06-03 09:15:00,113.3,48.047,57.282,29.28 +2020-06-03 09:30:00,110.77,51.406000000000006,57.282,29.28 +2020-06-03 09:45:00,112.52,53.597,57.282,29.28 +2020-06-03 10:00:00,114.37,48.805,54.026,29.28 +2020-06-03 10:15:00,114.82,50.343,54.026,29.28 +2020-06-03 10:30:00,116.42,50.426,54.026,29.28 +2020-06-03 10:45:00,116.13,51.88,54.026,29.28 +2020-06-03 11:00:00,109.87,47.458,54.277,29.28 +2020-06-03 11:15:00,104.76,48.72,54.277,29.28 +2020-06-03 11:30:00,108.82,50.256,54.277,29.28 +2020-06-03 11:45:00,108.87,51.997,54.277,29.28 +2020-06-03 12:00:00,106.62,47.876000000000005,52.552,29.28 +2020-06-03 12:15:00,102.67,47.937,52.552,29.28 +2020-06-03 12:30:00,98.68,47.147,52.552,29.28 +2020-06-03 12:45:00,105.85,48.65,52.552,29.28 +2020-06-03 13:00:00,107.79,49.343999999999994,52.111999999999995,29.28 +2020-06-03 13:15:00,108.61,50.388000000000005,52.111999999999995,29.28 +2020-06-03 13:30:00,102.26,48.643,52.111999999999995,29.28 +2020-06-03 13:45:00,104.72,47.208,52.111999999999995,29.28 +2020-06-03 14:00:00,111.64,49.123000000000005,52.066,29.28 +2020-06-03 14:15:00,108.26,47.799,52.066,29.28 +2020-06-03 14:30:00,108.8,46.897,52.066,29.28 +2020-06-03 14:45:00,103.39,47.453,52.066,29.28 +2020-06-03 15:00:00,103.63,48.77,52.523999999999994,29.28 +2020-06-03 15:15:00,105.44,46.435,52.523999999999994,29.28 +2020-06-03 15:30:00,104.72,44.748999999999995,52.523999999999994,29.28 +2020-06-03 15:45:00,100.41,42.653999999999996,52.523999999999994,29.28 +2020-06-03 16:00:00,100.42,45.018,54.101000000000006,29.28 +2020-06-03 16:15:00,110.51,44.611000000000004,54.101000000000006,29.28 +2020-06-03 16:30:00,111.07,43.773999999999994,54.101000000000006,29.28 +2020-06-03 16:45:00,109.26,40.488,54.101000000000006,29.28 +2020-06-03 17:00:00,104.98,42.896,58.155,29.28 +2020-06-03 17:15:00,111.12,43.037,58.155,29.28 +2020-06-03 17:30:00,114.79,42.395,58.155,29.28 +2020-06-03 17:45:00,115.69,40.927,58.155,29.28 +2020-06-03 18:00:00,108.75,43.202,60.205,29.28 +2020-06-03 18:15:00,112.12,43.644,60.205,29.28 +2020-06-03 18:30:00,114.87,41.341,60.205,29.28 +2020-06-03 18:45:00,113.03,45.747,60.205,29.28 +2020-06-03 19:00:00,104.74,46.748999999999995,61.568999999999996,29.28 +2020-06-03 19:15:00,99.58,45.865,61.568999999999996,29.28 +2020-06-03 19:30:00,104.58,45.088,61.568999999999996,29.28 +2020-06-03 19:45:00,104.49,45.413999999999994,61.568999999999996,29.28 +2020-06-03 20:00:00,102.46,44.022,68.145,29.28 +2020-06-03 20:15:00,95.88,43.805,68.145,29.28 +2020-06-03 20:30:00,95.33,43.943999999999996,68.145,29.28 +2020-06-03 20:45:00,95.16,44.238,68.145,29.28 +2020-06-03 21:00:00,92.82,42.37,59.696000000000005,29.28 +2020-06-03 21:15:00,92.05,44.066,59.696000000000005,29.28 +2020-06-03 21:30:00,89.64,45.158,59.696000000000005,29.28 +2020-06-03 21:45:00,88.21,46.118,59.696000000000005,29.28 +2020-06-03 22:00:00,83.59,43.44,54.861999999999995,29.28 +2020-06-03 22:15:00,82.97,44.998000000000005,54.861999999999995,29.28 +2020-06-03 22:30:00,81.26,39.305,54.861999999999995,29.28 +2020-06-03 22:45:00,80.33,36.147,54.861999999999995,29.28 +2020-06-03 23:00:00,75.58,31.816999999999997,45.568000000000005,29.28 +2020-06-03 23:15:00,75.33,29.924,45.568000000000005,29.28 +2020-06-03 23:30:00,74.44,28.808000000000003,45.568000000000005,29.28 +2020-06-03 23:45:00,73.46,28.256999999999998,45.568000000000005,29.28 +2020-06-04 00:00:00,73.36,27.168000000000003,40.181,29.28 +2020-06-04 00:15:00,73.36,27.758000000000003,40.181,29.28 +2020-06-04 00:30:00,72.26,26.691999999999997,40.181,29.28 +2020-06-04 00:45:00,74.73,26.054000000000002,40.181,29.28 +2020-06-04 01:00:00,71.88,25.698,38.296,29.28 +2020-06-04 01:15:00,72.5,25.03,38.296,29.28 +2020-06-04 01:30:00,71.31,23.448,38.296,29.28 +2020-06-04 01:45:00,71.5,22.986,38.296,29.28 +2020-06-04 02:00:00,71.83,22.479,36.575,29.28 +2020-06-04 02:15:00,71.45,21.015,36.575,29.28 +2020-06-04 02:30:00,71.1,23.204,36.575,29.28 +2020-06-04 02:45:00,71.42,23.915,36.575,29.28 +2020-06-04 03:00:00,73.16,25.601,36.394,29.28 +2020-06-04 03:15:00,72.99,24.271,36.394,29.28 +2020-06-04 03:30:00,71.02,23.54,36.394,29.28 +2020-06-04 03:45:00,73.01,22.767,36.394,29.28 +2020-06-04 04:00:00,77.6,30.171,37.207,29.28 +2020-06-04 04:15:00,77.75,38.889,37.207,29.28 +2020-06-04 04:30:00,88.08,36.309,37.207,29.28 +2020-06-04 04:45:00,93.23,36.698,37.207,29.28 +2020-06-04 05:00:00,94.94,55.053999999999995,40.713,29.28 +2020-06-04 05:15:00,96.67,68.271,40.713,29.28 +2020-06-04 05:30:00,104.59,58.843999999999994,40.713,29.28 +2020-06-04 05:45:00,107.94,54.852,40.713,29.28 +2020-06-04 06:00:00,112.46,56.268,50.952,29.28 +2020-06-04 06:15:00,109.5,57.075,50.952,29.28 +2020-06-04 06:30:00,108.67,54.715,50.952,29.28 +2020-06-04 06:45:00,109.33,55.085,50.952,29.28 +2020-06-04 07:00:00,110.44,56.102,64.88,29.28 +2020-06-04 07:15:00,109.83,55.625,64.88,29.28 +2020-06-04 07:30:00,113.96,52.897,64.88,29.28 +2020-06-04 07:45:00,116.37,51.881,64.88,29.28 +2020-06-04 08:00:00,114.22,49.33,55.133,29.28 +2020-06-04 08:15:00,107.51,51.283,55.133,29.28 +2020-06-04 08:30:00,112.36,51.113,55.133,29.28 +2020-06-04 08:45:00,109.8,53.223,55.133,29.28 +2020-06-04 09:00:00,114.08,48.876000000000005,48.912,29.28 +2020-06-04 09:15:00,119.39,47.761,48.912,29.28 +2020-06-04 09:30:00,116.25,51.125,48.912,29.28 +2020-06-04 09:45:00,110.92,53.34,48.912,29.28 +2020-06-04 10:00:00,107.25,48.559,45.968999999999994,29.28 +2020-06-04 10:15:00,107.81,50.117,45.968999999999994,29.28 +2020-06-04 10:30:00,113.72,50.20399999999999,45.968999999999994,29.28 +2020-06-04 10:45:00,116.8,51.668,45.968999999999994,29.28 +2020-06-04 11:00:00,117.17,47.239,44.067,29.28 +2020-06-04 11:15:00,109.05,48.511,44.067,29.28 +2020-06-04 11:30:00,110.66,50.037,44.067,29.28 +2020-06-04 11:45:00,105.85,51.783,44.067,29.28 +2020-06-04 12:00:00,111.23,47.696999999999996,41.501000000000005,29.28 +2020-06-04 12:15:00,113.61,47.762,41.501000000000005,29.28 +2020-06-04 12:30:00,110.92,46.945,41.501000000000005,29.28 +2020-06-04 12:45:00,102.91,48.453,41.501000000000005,29.28 +2020-06-04 13:00:00,102.85,49.145,41.117,29.28 +2020-06-04 13:15:00,107.65,50.192,41.117,29.28 +2020-06-04 13:30:00,107.87,48.458,41.117,29.28 +2020-06-04 13:45:00,112.9,47.026,41.117,29.28 +2020-06-04 14:00:00,99.93,48.964,41.492,29.28 +2020-06-04 14:15:00,105.4,47.635,41.492,29.28 +2020-06-04 14:30:00,103.85,46.70399999999999,41.492,29.28 +2020-06-04 14:45:00,104.92,47.266000000000005,41.492,29.28 +2020-06-04 15:00:00,109.26,48.626000000000005,43.711999999999996,29.28 +2020-06-04 15:15:00,110.94,46.278,43.711999999999996,29.28 +2020-06-04 15:30:00,109.79,44.57899999999999,43.711999999999996,29.28 +2020-06-04 15:45:00,112.69,42.47,43.711999999999996,29.28 +2020-06-04 16:00:00,114.07,44.871,45.446000000000005,29.28 +2020-06-04 16:15:00,109.19,44.458,45.446000000000005,29.28 +2020-06-04 16:30:00,114.59,43.638999999999996,45.446000000000005,29.28 +2020-06-04 16:45:00,116.07,40.316,45.446000000000005,29.28 +2020-06-04 17:00:00,115.34,42.75899999999999,48.803000000000004,29.28 +2020-06-04 17:15:00,110.62,42.886,48.803000000000004,29.28 +2020-06-04 17:30:00,108.75,42.233999999999995,48.803000000000004,29.28 +2020-06-04 17:45:00,116.09,40.74,48.803000000000004,29.28 +2020-06-04 18:00:00,113.07,43.028,51.167,29.28 +2020-06-04 18:15:00,111.11,43.445,51.167,29.28 +2020-06-04 18:30:00,108.92,41.133,51.167,29.28 +2020-06-04 18:45:00,115.29,45.537,51.167,29.28 +2020-06-04 19:00:00,113.15,46.541000000000004,52.486000000000004,29.28 +2020-06-04 19:15:00,104.97,45.648999999999994,52.486000000000004,29.28 +2020-06-04 19:30:00,105.27,44.864,52.486000000000004,29.28 +2020-06-04 19:45:00,105.77,45.185,52.486000000000004,29.28 +2020-06-04 20:00:00,104.54,43.773999999999994,59.635,29.28 +2020-06-04 20:15:00,99.31,43.553999999999995,59.635,29.28 +2020-06-04 20:30:00,96.07,43.706,59.635,29.28 +2020-06-04 20:45:00,96.72,44.038000000000004,59.635,29.28 +2020-06-04 21:00:00,93.51,42.174,54.353,29.28 +2020-06-04 21:15:00,91.29,43.881,54.353,29.28 +2020-06-04 21:30:00,89.16,44.949,54.353,29.28 +2020-06-04 21:45:00,87.45,45.925,54.353,29.28 +2020-06-04 22:00:00,83.88,43.271,49.431999999999995,29.28 +2020-06-04 22:15:00,83.67,44.842,49.431999999999995,29.28 +2020-06-04 22:30:00,80.79,39.148,49.431999999999995,29.28 +2020-06-04 22:45:00,82.95,35.979,49.431999999999995,29.28 +2020-06-04 23:00:00,77.09,31.623,42.872,29.28 +2020-06-04 23:15:00,76.4,29.77,42.872,29.28 +2020-06-04 23:30:00,76.03,28.66,42.872,29.28 +2020-06-04 23:45:00,75.13,28.1,42.872,29.28 +2020-06-05 00:00:00,72.68,25.186999999999998,39.819,29.28 +2020-06-05 00:15:00,74.39,26.006,39.819,29.28 +2020-06-05 00:30:00,73.39,25.189,39.819,29.28 +2020-06-05 00:45:00,72.85,24.973000000000003,39.819,29.28 +2020-06-05 01:00:00,73.16,24.238000000000003,37.797,29.28 +2020-06-05 01:15:00,73.41,23.063000000000002,37.797,29.28 +2020-06-05 01:30:00,71.51,22.136999999999997,37.797,29.28 +2020-06-05 01:45:00,72.07,21.439,37.797,29.28 +2020-06-05 02:00:00,71.82,21.836,36.905,29.28 +2020-06-05 02:15:00,72.76,20.305,36.905,29.28 +2020-06-05 02:30:00,72.71,23.339000000000002,36.905,29.28 +2020-06-05 02:45:00,73.05,23.405,36.905,29.28 +2020-06-05 03:00:00,73.18,25.739,37.1,29.28 +2020-06-05 03:15:00,74.33,23.340999999999998,37.1,29.28 +2020-06-05 03:30:00,73.58,22.383000000000003,37.1,29.28 +2020-06-05 03:45:00,74.46,22.509,37.1,29.28 +2020-06-05 04:00:00,78.21,30.009,37.882,29.28 +2020-06-05 04:15:00,84.39,37.158,37.882,29.28 +2020-06-05 04:30:00,85.9,35.499,37.882,29.28 +2020-06-05 04:45:00,92.12,35.150999999999996,37.882,29.28 +2020-06-05 05:00:00,94.15,52.801,40.777,29.28 +2020-06-05 05:15:00,96.53,66.937,40.777,29.28 +2020-06-05 05:30:00,98.78,57.873000000000005,40.777,29.28 +2020-06-05 05:45:00,105.4,53.503,40.777,29.28 +2020-06-05 06:00:00,110.45,55.2,55.528,29.28 +2020-06-05 06:15:00,115.64,55.998999999999995,55.528,29.28 +2020-06-05 06:30:00,113.37,53.525,55.528,29.28 +2020-06-05 06:45:00,113.78,53.961000000000006,55.528,29.28 +2020-06-05 07:00:00,117.75,55.501999999999995,67.749,29.28 +2020-06-05 07:15:00,116.94,56.013000000000005,67.749,29.28 +2020-06-05 07:30:00,113.93,51.391999999999996,67.749,29.28 +2020-06-05 07:45:00,110.35,50.114,67.749,29.28 +2020-06-05 08:00:00,109.2,48.199,57.55,29.28 +2020-06-05 08:15:00,110.52,50.788000000000004,57.55,29.28 +2020-06-05 08:30:00,122.31,50.622,57.55,29.28 +2020-06-05 08:45:00,120.12,52.435,57.55,29.28 +2020-06-05 09:00:00,121.23,45.938,52.588,29.28 +2020-06-05 09:15:00,117.3,46.71,52.588,29.28 +2020-06-05 09:30:00,116.81,49.378,52.588,29.28 +2020-06-05 09:45:00,121.98,51.972,52.588,29.28 +2020-06-05 10:00:00,119.87,46.911,49.772,29.28 +2020-06-05 10:15:00,116.15,48.356,49.772,29.28 +2020-06-05 10:30:00,115.85,48.961999999999996,49.772,29.28 +2020-06-05 10:45:00,117.93,50.29600000000001,49.772,29.28 +2020-06-05 11:00:00,114.69,46.1,49.226000000000006,29.28 +2020-06-05 11:15:00,113.17,46.253,49.226000000000006,29.28 +2020-06-05 11:30:00,105.0,47.621,49.226000000000006,29.28 +2020-06-05 11:45:00,103.88,48.471000000000004,49.226000000000006,29.28 +2020-06-05 12:00:00,100.79,44.951,45.705,29.28 +2020-06-05 12:15:00,102.92,44.177,45.705,29.28 +2020-06-05 12:30:00,99.51,43.463,45.705,29.28 +2020-06-05 12:45:00,100.37,44.29,45.705,29.28 +2020-06-05 13:00:00,99.89,45.646,43.133,29.28 +2020-06-05 13:15:00,99.79,46.958,43.133,29.28 +2020-06-05 13:30:00,100.88,45.986999999999995,43.133,29.28 +2020-06-05 13:45:00,99.87,44.84,43.133,29.28 +2020-06-05 14:00:00,99.86,45.912,41.989,29.28 +2020-06-05 14:15:00,97.26,44.972,41.989,29.28 +2020-06-05 14:30:00,96.34,45.495,41.989,29.28 +2020-06-05 14:45:00,94.99,45.443999999999996,41.989,29.28 +2020-06-05 15:00:00,95.46,46.718,43.728,29.28 +2020-06-05 15:15:00,98.1,44.083999999999996,43.728,29.28 +2020-06-05 15:30:00,95.79,41.667,43.728,29.28 +2020-06-05 15:45:00,95.92,40.283,43.728,29.28 +2020-06-05 16:00:00,97.42,41.795,45.93899999999999,29.28 +2020-06-05 16:15:00,100.06,41.875,45.93899999999999,29.28 +2020-06-05 16:30:00,99.13,40.913000000000004,45.93899999999999,29.28 +2020-06-05 16:45:00,101.84,36.795,45.93899999999999,29.28 +2020-06-05 17:00:00,103.81,40.939,50.488,29.28 +2020-06-05 17:15:00,103.47,40.846,50.488,29.28 +2020-06-05 17:30:00,103.83,40.308,50.488,29.28 +2020-06-05 17:45:00,104.89,38.606,50.488,29.28 +2020-06-05 18:00:00,103.73,41.031000000000006,52.408,29.28 +2020-06-05 18:15:00,103.19,40.478,52.408,29.28 +2020-06-05 18:30:00,102.75,38.1,52.408,29.28 +2020-06-05 18:45:00,103.29,42.903999999999996,52.408,29.28 +2020-06-05 19:00:00,98.83,44.846000000000004,52.736000000000004,29.28 +2020-06-05 19:15:00,95.61,44.645,52.736000000000004,29.28 +2020-06-05 19:30:00,93.94,43.871,52.736000000000004,29.28 +2020-06-05 19:45:00,93.79,43.167,52.736000000000004,29.28 +2020-06-05 20:00:00,92.15,41.589,59.68,29.28 +2020-06-05 20:15:00,92.31,42.13,59.68,29.28 +2020-06-05 20:30:00,91.82,41.824,59.68,29.28 +2020-06-05 20:45:00,92.41,41.468999999999994,59.68,29.28 +2020-06-05 21:00:00,89.29,40.918,54.343999999999994,29.28 +2020-06-05 21:15:00,87.29,44.281000000000006,54.343999999999994,29.28 +2020-06-05 21:30:00,84.11,45.185,54.343999999999994,29.28 +2020-06-05 21:45:00,83.05,46.424,54.343999999999994,29.28 +2020-06-05 22:00:00,79.44,43.754,49.672,29.28 +2020-06-05 22:15:00,78.6,45.085,49.672,29.28 +2020-06-05 22:30:00,77.06,44.566,49.672,29.28 +2020-06-05 22:45:00,75.8,42.548,49.672,29.28 +2020-06-05 23:00:00,72.07,39.743,42.065,29.28 +2020-06-05 23:15:00,72.18,36.24,42.065,29.28 +2020-06-05 23:30:00,71.31,33.249,42.065,29.28 +2020-06-05 23:45:00,70.36,32.497,42.065,29.28 +2020-06-06 00:00:00,67.51,25.941999999999997,38.829,29.17 +2020-06-06 00:15:00,67.86,25.7,38.829,29.17 +2020-06-06 00:30:00,67.41,24.565,38.829,29.17 +2020-06-06 00:45:00,67.72,23.725,38.829,29.17 +2020-06-06 01:00:00,66.82,23.335,34.63,29.17 +2020-06-06 01:15:00,67.25,22.605999999999998,34.63,29.17 +2020-06-06 01:30:00,65.85,20.85,34.63,29.17 +2020-06-06 01:45:00,66.09,21.315,34.63,29.17 +2020-06-06 02:00:00,64.68,20.839000000000002,32.465,29.17 +2020-06-06 02:15:00,64.57,18.511,32.465,29.17 +2020-06-06 02:30:00,64.68,20.68,32.465,29.17 +2020-06-06 02:45:00,64.25,21.514,32.465,29.17 +2020-06-06 03:00:00,64.14,22.599,31.925,29.17 +2020-06-06 03:15:00,65.0,19.414,31.925,29.17 +2020-06-06 03:30:00,65.09,18.62,31.925,29.17 +2020-06-06 03:45:00,67.6,20.195,31.925,29.17 +2020-06-06 04:00:00,70.16,25.434,31.309,29.17 +2020-06-06 04:15:00,70.62,31.435,31.309,29.17 +2020-06-06 04:30:00,63.11,27.958000000000002,31.309,29.17 +2020-06-06 04:45:00,65.22,27.819000000000003,31.309,29.17 +2020-06-06 05:00:00,67.91,36.066,30.323,29.17 +2020-06-06 05:15:00,67.72,37.842,30.323,29.17 +2020-06-06 05:30:00,69.31,30.338,30.323,29.17 +2020-06-06 05:45:00,71.04,30.802,30.323,29.17 +2020-06-06 06:00:00,75.65,44.887,31.438000000000002,29.17 +2020-06-06 06:15:00,80.98,54.621,31.438000000000002,29.17 +2020-06-06 06:30:00,84.8,48.958999999999996,31.438000000000002,29.17 +2020-06-06 06:45:00,83.47,45.533,31.438000000000002,29.17 +2020-06-06 07:00:00,78.85,45.275,34.891999999999996,29.17 +2020-06-06 07:15:00,78.38,44.446999999999996,34.891999999999996,29.17 +2020-06-06 07:30:00,79.02,41.507,34.891999999999996,29.17 +2020-06-06 07:45:00,80.34,41.519,34.891999999999996,29.17 +2020-06-06 08:00:00,81.61,40.611999999999995,39.608000000000004,29.17 +2020-06-06 08:15:00,82.54,43.39,39.608000000000004,29.17 +2020-06-06 08:30:00,81.42,43.358000000000004,39.608000000000004,29.17 +2020-06-06 08:45:00,81.09,46.385,39.608000000000004,29.17 +2020-06-06 09:00:00,79.87,42.973,40.894,29.17 +2020-06-06 09:15:00,87.56,44.285,40.894,29.17 +2020-06-06 09:30:00,87.68,47.515,40.894,29.17 +2020-06-06 09:45:00,83.66,49.722,40.894,29.17 +2020-06-06 10:00:00,80.88,45.253,39.525,29.17 +2020-06-06 10:15:00,87.29,47.07,39.525,29.17 +2020-06-06 10:30:00,83.73,47.373999999999995,39.525,29.17 +2020-06-06 10:45:00,83.72,48.521,39.525,29.17 +2020-06-06 11:00:00,84.12,44.211000000000006,36.718,29.17 +2020-06-06 11:15:00,90.83,45.122,36.718,29.17 +2020-06-06 11:30:00,94.67,46.63,36.718,29.17 +2020-06-06 11:45:00,94.56,48.016999999999996,36.718,29.17 +2020-06-06 12:00:00,91.99,44.79600000000001,35.688,29.17 +2020-06-06 12:15:00,90.46,44.895,35.688,29.17 +2020-06-06 12:30:00,88.8,44.06399999999999,35.688,29.17 +2020-06-06 12:45:00,87.54,45.498999999999995,35.688,29.17 +2020-06-06 13:00:00,85.74,46.00899999999999,32.858000000000004,29.17 +2020-06-06 13:15:00,87.07,46.6,32.858000000000004,29.17 +2020-06-06 13:30:00,87.33,45.77,32.858000000000004,29.17 +2020-06-06 13:45:00,86.83,43.407,32.858000000000004,29.17 +2020-06-06 14:00:00,86.15,44.693999999999996,31.738000000000003,29.17 +2020-06-06 14:15:00,84.56,42.516000000000005,31.738000000000003,29.17 +2020-06-06 14:30:00,81.7,42.419,31.738000000000003,29.17 +2020-06-06 14:45:00,80.31,42.846000000000004,31.738000000000003,29.17 +2020-06-06 15:00:00,80.41,44.662,34.35,29.17 +2020-06-06 15:15:00,79.49,42.766000000000005,34.35,29.17 +2020-06-06 15:30:00,79.47,40.687,34.35,29.17 +2020-06-06 15:45:00,79.76,38.425,34.35,29.17 +2020-06-06 16:00:00,80.07,41.907,37.522,29.17 +2020-06-06 16:15:00,79.03,41.225,37.522,29.17 +2020-06-06 16:30:00,80.08,40.488,37.522,29.17 +2020-06-06 16:45:00,81.23,36.4,37.522,29.17 +2020-06-06 17:00:00,82.36,39.404,42.498000000000005,29.17 +2020-06-06 17:15:00,81.67,37.425,42.498000000000005,29.17 +2020-06-06 17:30:00,81.82,36.743,42.498000000000005,29.17 +2020-06-06 17:45:00,84.04,35.443000000000005,42.498000000000005,29.17 +2020-06-06 18:00:00,84.14,39.175,44.701,29.17 +2020-06-06 18:15:00,83.83,40.357,44.701,29.17 +2020-06-06 18:30:00,84.61,39.39,44.701,29.17 +2020-06-06 18:45:00,84.06,40.567,44.701,29.17 +2020-06-06 19:00:00,81.29,41.091,45.727,29.17 +2020-06-06 19:15:00,78.62,39.875,45.727,29.17 +2020-06-06 19:30:00,76.78,39.896,45.727,29.17 +2020-06-06 19:45:00,75.72,40.85,45.727,29.17 +2020-06-06 20:00:00,74.89,40.242,43.391000000000005,29.17 +2020-06-06 20:15:00,74.17,40.381,43.391000000000005,29.17 +2020-06-06 20:30:00,74.7,39.22,43.391000000000005,29.17 +2020-06-06 20:45:00,74.33,40.624,43.391000000000005,29.17 +2020-06-06 21:00:00,71.59,38.898,41.231,29.17 +2020-06-06 21:15:00,69.93,41.982,41.231,29.17 +2020-06-06 21:30:00,68.91,43.161,41.231,29.17 +2020-06-06 21:45:00,68.03,43.858999999999995,41.231,29.17 +2020-06-06 22:00:00,64.54,41.316,40.798,29.17 +2020-06-06 22:15:00,64.33,43.133,40.798,29.17 +2020-06-06 22:30:00,62.24,42.849,40.798,29.17 +2020-06-06 22:45:00,62.62,41.352,40.798,29.17 +2020-06-06 23:00:00,58.66,38.109,34.402,29.17 +2020-06-06 23:15:00,58.11,34.889,34.402,29.17 +2020-06-06 23:30:00,56.97,34.075,34.402,29.17 +2020-06-06 23:45:00,56.18,33.421,34.402,29.17 +2020-06-07 00:00:00,54.78,27.147,30.171,29.17 +2020-06-07 00:15:00,55.23,25.78,30.171,29.17 +2020-06-07 00:30:00,54.07,24.471999999999998,30.171,29.17 +2020-06-07 00:45:00,54.14,23.596999999999998,30.171,29.17 +2020-06-07 01:00:00,52.67,23.464000000000002,27.15,29.17 +2020-06-07 01:15:00,52.85,22.699,27.15,29.17 +2020-06-07 01:30:00,52.59,20.854,27.15,29.17 +2020-06-07 01:45:00,52.21,20.92,27.15,29.17 +2020-06-07 02:00:00,50.98,20.448,25.403000000000002,29.17 +2020-06-07 02:15:00,51.38,18.707,25.403000000000002,29.17 +2020-06-07 02:30:00,50.88,21.136,25.403000000000002,29.17 +2020-06-07 02:45:00,51.13,21.745,25.403000000000002,29.17 +2020-06-07 03:00:00,50.84,23.48,23.386999999999997,29.17 +2020-06-07 03:15:00,51.71,20.49,23.386999999999997,29.17 +2020-06-07 03:30:00,52.75,19.136,23.386999999999997,29.17 +2020-06-07 03:45:00,50.92,19.973,23.386999999999997,29.17 +2020-06-07 04:00:00,50.55,25.101,23.941999999999997,29.17 +2020-06-07 04:15:00,51.55,30.546,23.941999999999997,29.17 +2020-06-07 04:30:00,51.6,28.333000000000002,23.941999999999997,29.17 +2020-06-07 04:45:00,52.09,27.774,23.941999999999997,29.17 +2020-06-07 05:00:00,53.72,35.75,23.026,29.17 +2020-06-07 05:15:00,54.12,36.433,23.026,29.17 +2020-06-07 05:30:00,55.59,28.6,23.026,29.17 +2020-06-07 05:45:00,57.85,28.881,23.026,29.17 +2020-06-07 06:00:00,59.26,40.721,23.223000000000003,29.17 +2020-06-07 06:15:00,60.63,51.071999999999996,23.223000000000003,29.17 +2020-06-07 06:30:00,62.83,44.669,23.223000000000003,29.17 +2020-06-07 06:45:00,64.38,40.23,23.223000000000003,29.17 +2020-06-07 07:00:00,65.6,40.458,24.968000000000004,29.17 +2020-06-07 07:15:00,66.44,38.01,24.968000000000004,29.17 +2020-06-07 07:30:00,68.26,36.156,24.968000000000004,29.17 +2020-06-07 07:45:00,68.77,36.098,24.968000000000004,29.17 +2020-06-07 08:00:00,69.95,36.086,29.131,29.17 +2020-06-07 08:15:00,69.53,40.012,29.131,29.17 +2020-06-07 08:30:00,69.54,40.953,29.131,29.17 +2020-06-07 08:45:00,69.78,44.098,29.131,29.17 +2020-06-07 09:00:00,70.2,40.535,29.904,29.17 +2020-06-07 09:15:00,72.11,41.438,29.904,29.17 +2020-06-07 09:30:00,74.06,45.06399999999999,29.904,29.17 +2020-06-07 09:45:00,74.87,48.231,29.904,29.17 +2020-06-07 10:00:00,77.19,44.516000000000005,28.943,29.17 +2020-06-07 10:15:00,78.39,46.53,28.943,29.17 +2020-06-07 10:30:00,77.62,47.106,28.943,29.17 +2020-06-07 10:45:00,75.28,49.04,28.943,29.17 +2020-06-07 11:00:00,71.31,44.483999999999995,31.682,29.17 +2020-06-07 11:15:00,70.31,44.994,31.682,29.17 +2020-06-07 11:30:00,70.0,46.903,31.682,29.17 +2020-06-07 11:45:00,67.85,48.593,31.682,29.17 +2020-06-07 12:00:00,64.35,46.353,27.315,29.17 +2020-06-07 12:15:00,61.2,46.038000000000004,27.315,29.17 +2020-06-07 12:30:00,57.59,45.248999999999995,27.315,29.17 +2020-06-07 12:45:00,59.18,45.997,27.315,29.17 +2020-06-07 13:00:00,59.01,46.153,23.894000000000002,29.17 +2020-06-07 13:15:00,55.2,46.481,23.894000000000002,29.17 +2020-06-07 13:30:00,57.81,44.589,23.894000000000002,29.17 +2020-06-07 13:45:00,60.26,43.223,23.894000000000002,29.17 +2020-06-07 14:00:00,57.88,45.69,21.148000000000003,29.17 +2020-06-07 14:15:00,64.49,44.026,21.148000000000003,29.17 +2020-06-07 14:30:00,66.8,42.846000000000004,21.148000000000003,29.17 +2020-06-07 14:45:00,67.65,42.228,21.148000000000003,29.17 +2020-06-07 15:00:00,67.87,44.083,21.229,29.17 +2020-06-07 15:15:00,65.72,41.477,21.229,29.17 +2020-06-07 15:30:00,59.62,39.268,21.229,29.17 +2020-06-07 15:45:00,60.76,37.325,21.229,29.17 +2020-06-07 16:00:00,62.45,39.453,25.037,29.17 +2020-06-07 16:15:00,63.37,38.900999999999996,25.037,29.17 +2020-06-07 16:30:00,66.59,39.158,25.037,29.17 +2020-06-07 16:45:00,70.11,35.108000000000004,25.037,29.17 +2020-06-07 17:00:00,72.96,38.486,37.11,29.17 +2020-06-07 17:15:00,76.34,37.903,37.11,29.17 +2020-06-07 17:30:00,79.24,38.003,37.11,29.17 +2020-06-07 17:45:00,81.88,37.28,37.11,29.17 +2020-06-07 18:00:00,83.72,41.528999999999996,42.215,29.17 +2020-06-07 18:15:00,79.56,42.415,42.215,29.17 +2020-06-07 18:30:00,76.0,41.022,42.215,29.17 +2020-06-07 18:45:00,78.65,42.47,42.215,29.17 +2020-06-07 19:00:00,79.38,45.026,44.383,29.17 +2020-06-07 19:15:00,79.12,42.795,44.383,29.17 +2020-06-07 19:30:00,79.25,42.556999999999995,44.383,29.17 +2020-06-07 19:45:00,78.61,43.195,44.383,29.17 +2020-06-07 20:00:00,79.46,42.74,43.426,29.17 +2020-06-07 20:15:00,79.03,42.831,43.426,29.17 +2020-06-07 20:30:00,79.41,42.56100000000001,43.426,29.17 +2020-06-07 20:45:00,81.82,42.298,43.426,29.17 +2020-06-07 21:00:00,81.38,40.224000000000004,42.265,29.17 +2020-06-07 21:15:00,80.43,42.977,42.265,29.17 +2020-06-07 21:30:00,78.77,43.54,42.265,29.17 +2020-06-07 21:45:00,77.29,44.605,42.265,29.17 +2020-06-07 22:00:00,73.8,43.917,42.26,29.17 +2020-06-07 22:15:00,72.46,44.08,42.26,29.17 +2020-06-07 22:30:00,70.72,43.038999999999994,42.26,29.17 +2020-06-07 22:45:00,70.73,40.247,42.26,29.17 +2020-06-07 23:00:00,68.68,36.454,36.609,29.17 +2020-06-07 23:15:00,69.16,34.64,36.609,29.17 +2020-06-07 23:30:00,67.02,33.389,36.609,29.17 +2020-06-07 23:45:00,67.56,32.952,36.609,29.17 +2020-06-08 00:00:00,65.18,28.81,34.611,29.28 +2020-06-08 00:15:00,65.79,28.454,34.611,29.28 +2020-06-08 00:30:00,66.1,26.794,34.611,29.28 +2020-06-08 00:45:00,66.13,25.502,34.611,29.28 +2020-06-08 01:00:00,64.79,25.755,33.552,29.28 +2020-06-08 01:15:00,65.06,24.938000000000002,33.552,29.28 +2020-06-08 01:30:00,65.24,23.433000000000003,33.552,29.28 +2020-06-08 01:45:00,65.35,23.410999999999998,33.552,29.28 +2020-06-08 02:00:00,65.58,23.37,32.351,29.28 +2020-06-08 02:15:00,67.8,20.785999999999998,32.351,29.28 +2020-06-08 02:30:00,73.54,23.4,32.351,29.28 +2020-06-08 02:45:00,74.8,23.823,32.351,29.28 +2020-06-08 03:00:00,71.75,26.151999999999997,30.793000000000003,29.28 +2020-06-08 03:15:00,68.21,23.986,30.793000000000003,29.28 +2020-06-08 03:30:00,68.19,23.261999999999997,30.793000000000003,29.28 +2020-06-08 03:45:00,75.1,23.634,30.793000000000003,29.28 +2020-06-08 04:00:00,76.21,32.04,31.274,29.28 +2020-06-08 04:15:00,81.8,40.582,31.274,29.28 +2020-06-08 04:30:00,81.13,38.092,31.274,29.28 +2020-06-08 04:45:00,84.34,37.895,31.274,29.28 +2020-06-08 05:00:00,91.59,53.857,37.75,29.28 +2020-06-08 05:15:00,94.96,65.925,37.75,29.28 +2020-06-08 05:30:00,96.35,56.716,37.75,29.28 +2020-06-08 05:45:00,103.22,53.645,37.75,29.28 +2020-06-08 06:00:00,115.44,54.214,55.36,29.28 +2020-06-08 06:15:00,117.66,54.621,55.36,29.28 +2020-06-08 06:30:00,119.09,52.708999999999996,55.36,29.28 +2020-06-08 06:45:00,118.2,54.078,55.36,29.28 +2020-06-08 07:00:00,122.59,54.916000000000004,65.87,29.28 +2020-06-08 07:15:00,126.53,54.75899999999999,65.87,29.28 +2020-06-08 07:30:00,126.58,52.008,65.87,29.28 +2020-06-08 07:45:00,117.45,52.041000000000004,65.87,29.28 +2020-06-08 08:00:00,116.82,49.583,55.695,29.28 +2020-06-08 08:15:00,124.15,52.214,55.695,29.28 +2020-06-08 08:30:00,127.09,51.86600000000001,55.695,29.28 +2020-06-08 08:45:00,129.96,54.918,55.695,29.28 +2020-06-08 09:00:00,127.9,50.291000000000004,50.881,29.28 +2020-06-08 09:15:00,127.73,49.188,50.881,29.28 +2020-06-08 09:30:00,129.88,51.846000000000004,50.881,29.28 +2020-06-08 09:45:00,128.32,52.891000000000005,50.881,29.28 +2020-06-08 10:00:00,125.16,49.513999999999996,49.138000000000005,29.28 +2020-06-08 10:15:00,119.84,51.376000000000005,49.138000000000005,29.28 +2020-06-08 10:30:00,116.84,51.43899999999999,49.138000000000005,29.28 +2020-06-08 10:45:00,124.11,51.953,49.138000000000005,29.28 +2020-06-08 11:00:00,126.44,47.358000000000004,49.178000000000004,29.28 +2020-06-08 11:15:00,121.8,48.31100000000001,49.178000000000004,29.28 +2020-06-08 11:30:00,117.6,50.997,49.178000000000004,29.28 +2020-06-08 11:45:00,113.89,53.128,49.178000000000004,29.28 +2020-06-08 12:00:00,106.1,49.479,47.698,29.28 +2020-06-08 12:15:00,110.89,49.273999999999994,47.698,29.28 +2020-06-08 12:30:00,105.06,47.468999999999994,47.698,29.28 +2020-06-08 12:45:00,103.24,48.36,47.698,29.28 +2020-06-08 13:00:00,104.28,49.425,48.104,29.28 +2020-06-08 13:15:00,105.35,48.79,48.104,29.28 +2020-06-08 13:30:00,102.99,47.021,48.104,29.28 +2020-06-08 13:45:00,106.17,46.507,48.104,29.28 +2020-06-08 14:00:00,104.77,48.076,48.53,29.28 +2020-06-08 14:15:00,99.17,46.91,48.53,29.28 +2020-06-08 14:30:00,100.05,45.497,48.53,29.28 +2020-06-08 14:45:00,101.1,46.841,48.53,29.28 +2020-06-08 15:00:00,100.5,48.551,49.351000000000006,29.28 +2020-06-08 15:15:00,97.86,45.243,49.351000000000006,29.28 +2020-06-08 15:30:00,98.11,43.674,49.351000000000006,29.28 +2020-06-08 15:45:00,102.17,41.217,49.351000000000006,29.28 +2020-06-08 16:00:00,104.3,44.405,51.44,29.28 +2020-06-08 16:15:00,106.98,43.84,51.44,29.28 +2020-06-08 16:30:00,105.78,43.396,51.44,29.28 +2020-06-08 16:45:00,107.49,39.226,51.44,29.28 +2020-06-08 17:00:00,108.2,41.544,56.868,29.28 +2020-06-08 17:15:00,108.56,41.22,56.868,29.28 +2020-06-08 17:30:00,108.83,40.895,56.868,29.28 +2020-06-08 17:45:00,109.18,39.635,56.868,29.28 +2020-06-08 18:00:00,108.41,42.896,57.229,29.28 +2020-06-08 18:15:00,107.9,41.818999999999996,57.229,29.28 +2020-06-08 18:30:00,107.3,39.758,57.229,29.28 +2020-06-08 18:45:00,105.82,44.278,57.229,29.28 +2020-06-08 19:00:00,103.74,46.408,57.744,29.28 +2020-06-08 19:15:00,100.22,45.333999999999996,57.744,29.28 +2020-06-08 19:30:00,98.33,44.78,57.744,29.28 +2020-06-08 19:45:00,97.62,44.755,57.744,29.28 +2020-06-08 20:00:00,95.68,42.876000000000005,66.05199999999999,29.28 +2020-06-08 20:15:00,95.32,44.086999999999996,66.05199999999999,29.28 +2020-06-08 20:30:00,96.73,44.168,66.05199999999999,29.28 +2020-06-08 20:45:00,96.53,44.285,66.05199999999999,29.28 +2020-06-08 21:00:00,91.82,41.66,59.396,29.28 +2020-06-08 21:15:00,91.66,44.745,59.396,29.28 +2020-06-08 21:30:00,89.92,45.61,59.396,29.28 +2020-06-08 21:45:00,88.61,46.43600000000001,59.396,29.28 +2020-06-08 22:00:00,83.94,43.571000000000005,53.06,29.28 +2020-06-08 22:15:00,83.74,45.533,53.06,29.28 +2020-06-08 22:30:00,81.28,39.543,53.06,29.28 +2020-06-08 22:45:00,80.11,36.312,53.06,29.28 +2020-06-08 23:00:00,74.81,32.603,46.148,29.28 +2020-06-08 23:15:00,76.9,29.473000000000003,46.148,29.28 +2020-06-08 23:30:00,73.41,28.424,46.148,29.28 +2020-06-08 23:45:00,75.06,27.683000000000003,46.148,29.28 +2020-06-09 00:00:00,71.41,26.438000000000002,44.625,29.28 +2020-06-09 00:15:00,73.02,27.034000000000002,44.625,29.28 +2020-06-09 00:30:00,70.5,25.976999999999997,44.625,29.28 +2020-06-09 00:45:00,73.38,25.364,44.625,29.28 +2020-06-09 01:00:00,72.8,25.099,41.733000000000004,29.28 +2020-06-09 01:15:00,73.38,24.331999999999997,41.733000000000004,29.28 +2020-06-09 01:30:00,72.4,22.71,41.733000000000004,29.28 +2020-06-09 01:45:00,72.79,22.215,41.733000000000004,29.28 +2020-06-09 02:00:00,70.58,21.713,39.872,29.28 +2020-06-09 02:15:00,72.27,20.226,39.872,29.28 +2020-06-09 02:30:00,80.49,22.413,39.872,29.28 +2020-06-09 02:45:00,80.75,23.159000000000002,39.872,29.28 +2020-06-09 03:00:00,78.25,24.851,38.711,29.28 +2020-06-09 03:15:00,73.94,23.508000000000003,38.711,29.28 +2020-06-09 03:30:00,77.01,22.8,38.711,29.28 +2020-06-09 03:45:00,74.49,22.145,38.711,29.28 +2020-06-09 04:00:00,77.74,29.266,39.823,29.28 +2020-06-09 04:15:00,79.76,37.743,39.823,29.28 +2020-06-09 04:30:00,82.3,35.097,39.823,29.28 +2020-06-09 04:45:00,87.15,35.468,39.823,29.28 +2020-06-09 05:00:00,96.24,53.251000000000005,43.228,29.28 +2020-06-09 05:15:00,100.0,65.757,43.228,29.28 +2020-06-09 05:30:00,103.94,56.667,43.228,29.28 +2020-06-09 05:45:00,105.25,52.95,43.228,29.28 +2020-06-09 06:00:00,114.5,54.452,54.316,29.28 +2020-06-09 06:15:00,116.55,55.166000000000004,54.316,29.28 +2020-06-09 06:30:00,110.99,52.913000000000004,54.316,29.28 +2020-06-09 06:45:00,112.3,53.423,54.316,29.28 +2020-06-09 07:00:00,121.18,54.379,65.758,29.28 +2020-06-09 07:15:00,120.41,53.98,65.758,29.28 +2020-06-09 07:30:00,115.9,51.185,65.758,29.28 +2020-06-09 07:45:00,116.85,50.333999999999996,65.758,29.28 +2020-06-09 08:00:00,118.19,47.826,57.983000000000004,29.28 +2020-06-09 08:15:00,119.82,49.976000000000006,57.983000000000004,29.28 +2020-06-09 08:30:00,115.93,49.765,57.983000000000004,29.28 +2020-06-09 08:45:00,114.08,51.917,57.983000000000004,29.28 +2020-06-09 09:00:00,112.79,47.534,52.653,29.28 +2020-06-09 09:15:00,113.07,46.446999999999996,52.653,29.28 +2020-06-09 09:30:00,113.8,49.825,52.653,29.28 +2020-06-09 09:45:00,113.95,52.155,52.653,29.28 +2020-06-09 10:00:00,112.65,47.425,51.408,29.28 +2020-06-09 10:15:00,115.45,49.073,51.408,29.28 +2020-06-09 10:30:00,121.75,49.181999999999995,51.408,29.28 +2020-06-09 10:45:00,124.45,50.68899999999999,51.408,29.28 +2020-06-09 11:00:00,118.76,46.229,51.913000000000004,29.28 +2020-06-09 11:15:00,118.38,47.549,51.913000000000004,29.28 +2020-06-09 11:30:00,118.73,49.02,51.913000000000004,29.28 +2020-06-09 11:45:00,120.94,50.788999999999994,51.913000000000004,29.28 +2020-06-09 12:00:00,115.6,46.87,49.508,29.28 +2020-06-09 12:15:00,114.07,46.952,49.508,29.28 +2020-06-09 12:30:00,115.92,46.006,49.508,29.28 +2020-06-09 12:45:00,116.36,47.536,49.508,29.28 +2020-06-09 13:00:00,114.4,48.217,50.007,29.28 +2020-06-09 13:15:00,114.3,49.275,50.007,29.28 +2020-06-09 13:30:00,114.18,47.592,50.007,29.28 +2020-06-09 13:45:00,114.22,46.174,50.007,29.28 +2020-06-09 14:00:00,109.09,48.222,49.778999999999996,29.28 +2020-06-09 14:15:00,106.54,46.875,49.778999999999996,29.28 +2020-06-09 14:30:00,113.2,45.803999999999995,49.778999999999996,29.28 +2020-06-09 14:45:00,112.19,46.391000000000005,49.778999999999996,29.28 +2020-06-09 15:00:00,108.09,47.952,51.559,29.28 +2020-06-09 15:15:00,101.97,45.549,51.559,29.28 +2020-06-09 15:30:00,104.39,43.786,51.559,29.28 +2020-06-09 15:45:00,107.82,41.613,51.559,29.28 +2020-06-09 16:00:00,106.35,44.193000000000005,53.531000000000006,29.28 +2020-06-09 16:15:00,101.43,43.746,53.531000000000006,29.28 +2020-06-09 16:30:00,105.03,43.018,53.531000000000006,29.28 +2020-06-09 16:45:00,106.03,39.527,53.531000000000006,29.28 +2020-06-09 17:00:00,112.45,42.126999999999995,59.497,29.28 +2020-06-09 17:15:00,115.83,42.196000000000005,59.497,29.28 +2020-06-09 17:30:00,116.3,41.498000000000005,59.497,29.28 +2020-06-09 17:45:00,110.26,39.883,59.497,29.28 +2020-06-09 18:00:00,106.4,42.235,59.861999999999995,29.28 +2020-06-09 18:15:00,108.44,42.52,59.861999999999995,29.28 +2020-06-09 18:30:00,112.57,40.175,59.861999999999995,29.28 +2020-06-09 18:45:00,113.13,44.573,59.861999999999995,29.28 +2020-06-09 19:00:00,106.86,45.585,60.989,29.28 +2020-06-09 19:15:00,103.42,44.653,60.989,29.28 +2020-06-09 19:30:00,98.81,43.82899999999999,60.989,29.28 +2020-06-09 19:45:00,99.4,44.125,60.989,29.28 +2020-06-09 20:00:00,95.84,42.619,68.35600000000001,29.28 +2020-06-09 20:15:00,94.92,42.388000000000005,68.35600000000001,29.28 +2020-06-09 20:30:00,94.19,42.602,68.35600000000001,29.28 +2020-06-09 20:45:00,94.35,43.11,68.35600000000001,29.28 +2020-06-09 21:00:00,90.98,41.266999999999996,59.251000000000005,29.28 +2020-06-09 21:15:00,89.1,43.023999999999994,59.251000000000005,29.28 +2020-06-09 21:30:00,86.25,43.975,59.251000000000005,29.28 +2020-06-09 21:45:00,86.55,45.022,59.251000000000005,29.28 +2020-06-09 22:00:00,82.28,42.479,54.736999999999995,29.28 +2020-06-09 22:15:00,80.43,44.108999999999995,54.736999999999995,29.28 +2020-06-09 22:30:00,78.68,38.405,54.736999999999995,29.28 +2020-06-09 22:45:00,78.71,35.179,54.736999999999995,29.28 +2020-06-09 23:00:00,74.03,30.709,46.806999999999995,29.28 +2020-06-09 23:15:00,74.01,29.048000000000002,46.806999999999995,29.28 +2020-06-09 23:30:00,74.25,27.978,46.806999999999995,29.28 +2020-06-09 23:45:00,73.65,27.365,46.806999999999995,29.28 +2020-06-10 00:00:00,69.28,26.302,43.824,29.28 +2020-06-10 00:15:00,71.2,26.901,43.824,29.28 +2020-06-10 00:30:00,66.99,25.846,43.824,29.28 +2020-06-10 00:45:00,71.61,25.239,43.824,29.28 +2020-06-10 01:00:00,69.8,24.991,39.86,29.28 +2020-06-10 01:15:00,71.05,24.204,39.86,29.28 +2020-06-10 01:30:00,70.29,22.575,39.86,29.28 +2020-06-10 01:45:00,71.08,22.073,39.86,29.28 +2020-06-10 02:00:00,69.28,21.573,37.931999999999995,29.28 +2020-06-10 02:15:00,70.6,20.082,37.931999999999995,29.28 +2020-06-10 02:30:00,77.94,22.269000000000002,37.931999999999995,29.28 +2020-06-10 02:45:00,78.48,23.021,37.931999999999995,29.28 +2020-06-10 03:00:00,76.46,24.714000000000002,37.579,29.28 +2020-06-10 03:15:00,74.28,23.369,37.579,29.28 +2020-06-10 03:30:00,73.07,22.666,37.579,29.28 +2020-06-10 03:45:00,74.4,22.034000000000002,37.579,29.28 +2020-06-10 04:00:00,78.61,29.1,37.931999999999995,29.28 +2020-06-10 04:15:00,78.12,37.53,37.931999999999995,29.28 +2020-06-10 04:30:00,82.15,34.872,37.931999999999995,29.28 +2020-06-10 04:45:00,86.72,35.239000000000004,37.931999999999995,29.28 +2020-06-10 05:00:00,95.11,52.913000000000004,40.942,29.28 +2020-06-10 05:15:00,101.05,65.282,40.942,29.28 +2020-06-10 05:30:00,107.89,56.26,40.942,29.28 +2020-06-10 05:45:00,112.89,52.593,40.942,29.28 +2020-06-10 06:00:00,115.77,54.111999999999995,56.516999999999996,29.28 +2020-06-10 06:15:00,116.7,54.808,56.516999999999996,29.28 +2020-06-10 06:30:00,120.98,52.577,56.516999999999996,29.28 +2020-06-10 06:45:00,121.83,53.114,56.516999999999996,29.28 +2020-06-10 07:00:00,121.07,54.059,71.707,29.28 +2020-06-10 07:15:00,116.29,53.674,71.707,29.28 +2020-06-10 07:30:00,121.13,50.87,71.707,29.28 +2020-06-10 07:45:00,119.6,50.05,71.707,29.28 +2020-06-10 08:00:00,120.93,47.552,61.17,29.28 +2020-06-10 08:15:00,117.32,49.738,61.17,29.28 +2020-06-10 08:30:00,118.76,49.519,61.17,29.28 +2020-06-10 08:45:00,116.95,51.678000000000004,61.17,29.28 +2020-06-10 09:00:00,124.86,47.288999999999994,57.282,29.28 +2020-06-10 09:15:00,121.0,46.206,57.282,29.28 +2020-06-10 09:30:00,126.65,49.588,57.282,29.28 +2020-06-10 09:45:00,128.01,51.937,57.282,29.28 +2020-06-10 10:00:00,127.44,47.218,54.026,29.28 +2020-06-10 10:15:00,119.72,48.883,54.026,29.28 +2020-06-10 10:30:00,121.47,48.994,54.026,29.28 +2020-06-10 10:45:00,128.3,50.51,54.026,29.28 +2020-06-10 11:00:00,132.15,46.044,54.277,29.28 +2020-06-10 11:15:00,127.14,47.372,54.277,29.28 +2020-06-10 11:30:00,117.1,48.833999999999996,54.277,29.28 +2020-06-10 11:45:00,114.36,50.605,54.277,29.28 +2020-06-10 12:00:00,120.41,46.718999999999994,52.552,29.28 +2020-06-10 12:15:00,123.17,46.803999999999995,52.552,29.28 +2020-06-10 12:30:00,122.08,45.833999999999996,52.552,29.28 +2020-06-10 12:45:00,120.6,47.368,52.552,29.28 +2020-06-10 13:00:00,118.16,48.044,52.111999999999995,29.28 +2020-06-10 13:15:00,119.23,49.104,52.111999999999995,29.28 +2020-06-10 13:30:00,117.97,47.431000000000004,52.111999999999995,29.28 +2020-06-10 13:45:00,113.38,46.016999999999996,52.111999999999995,29.28 +2020-06-10 14:00:00,112.33,48.085,52.066,29.28 +2020-06-10 14:15:00,108.78,46.735,52.066,29.28 +2020-06-10 14:30:00,112.6,45.636,52.066,29.28 +2020-06-10 14:45:00,111.92,46.229,52.066,29.28 +2020-06-10 15:00:00,110.0,47.827,52.523999999999994,29.28 +2020-06-10 15:15:00,106.57,45.413999999999994,52.523999999999994,29.28 +2020-06-10 15:30:00,108.24,43.638999999999996,52.523999999999994,29.28 +2020-06-10 15:45:00,110.6,41.455,52.523999999999994,29.28 +2020-06-10 16:00:00,112.33,44.068000000000005,54.101000000000006,29.28 +2020-06-10 16:15:00,110.81,43.615,54.101000000000006,29.28 +2020-06-10 16:30:00,111.57,42.906000000000006,54.101000000000006,29.28 +2020-06-10 16:45:00,118.23,39.384,54.101000000000006,29.28 +2020-06-10 17:00:00,119.5,42.012,58.155,29.28 +2020-06-10 17:15:00,116.37,42.07,58.155,29.28 +2020-06-10 17:30:00,117.51,41.364,58.155,29.28 +2020-06-10 17:45:00,114.99,39.728,58.155,29.28 +2020-06-10 18:00:00,121.59,42.092,60.205,29.28 +2020-06-10 18:15:00,119.08,42.352,60.205,29.28 +2020-06-10 18:30:00,115.11,40.0,60.205,29.28 +2020-06-10 18:45:00,110.65,44.397,60.205,29.28 +2020-06-10 19:00:00,108.16,45.411,61.568999999999996,29.28 +2020-06-10 19:15:00,108.06,44.47,61.568999999999996,29.28 +2020-06-10 19:30:00,106.76,43.638999999999996,61.568999999999996,29.28 +2020-06-10 19:45:00,103.49,43.93,61.568999999999996,29.28 +2020-06-10 20:00:00,96.17,42.407,68.145,29.28 +2020-06-10 20:15:00,96.64,42.173,68.145,29.28 +2020-06-10 20:30:00,95.52,42.398999999999994,68.145,29.28 +2020-06-10 20:45:00,94.92,42.938,68.145,29.28 +2020-06-10 21:00:00,90.77,41.101000000000006,59.696000000000005,29.28 +2020-06-10 21:15:00,90.39,42.868,59.696000000000005,29.28 +2020-06-10 21:30:00,86.63,43.795,59.696000000000005,29.28 +2020-06-10 21:45:00,85.83,44.854,59.696000000000005,29.28 +2020-06-10 22:00:00,81.02,42.332,54.861999999999995,29.28 +2020-06-10 22:15:00,79.98,43.971000000000004,54.861999999999995,29.28 +2020-06-10 22:30:00,77.22,38.265,54.861999999999995,29.28 +2020-06-10 22:45:00,76.83,35.029,54.861999999999995,29.28 +2020-06-10 23:00:00,73.12,30.535999999999998,45.568000000000005,29.28 +2020-06-10 23:15:00,75.38,28.914,45.568000000000005,29.28 +2020-06-10 23:30:00,74.71,27.851999999999997,45.568000000000005,29.28 +2020-06-10 23:45:00,75.2,27.229,45.568000000000005,29.28 +2020-06-11 00:00:00,70.41,26.171999999999997,40.181,29.28 +2020-06-11 00:15:00,70.82,26.772,40.181,29.28 +2020-06-11 00:30:00,70.59,25.719,40.181,29.28 +2020-06-11 00:45:00,70.45,25.116999999999997,40.181,29.28 +2020-06-11 01:00:00,69.57,24.886,38.296,29.28 +2020-06-11 01:15:00,70.14,24.081,38.296,29.28 +2020-06-11 01:30:00,68.96,22.445,38.296,29.28 +2020-06-11 01:45:00,69.74,21.936999999999998,38.296,29.28 +2020-06-11 02:00:00,69.81,21.438000000000002,36.575,29.28 +2020-06-11 02:15:00,69.88,19.944000000000003,36.575,29.28 +2020-06-11 02:30:00,70.09,22.129,36.575,29.28 +2020-06-11 02:45:00,76.04,22.886999999999997,36.575,29.28 +2020-06-11 03:00:00,79.84,24.581,36.394,29.28 +2020-06-11 03:15:00,79.7,23.234,36.394,29.28 +2020-06-11 03:30:00,74.17,22.535,36.394,29.28 +2020-06-11 03:45:00,76.38,21.927,36.394,29.28 +2020-06-11 04:00:00,75.88,28.939,37.207,29.28 +2020-06-11 04:15:00,78.09,37.323,37.207,29.28 +2020-06-11 04:30:00,82.26,34.653,37.207,29.28 +2020-06-11 04:45:00,86.97,35.016,37.207,29.28 +2020-06-11 05:00:00,94.99,52.582,40.713,29.28 +2020-06-11 05:15:00,100.23,64.817,40.713,29.28 +2020-06-11 05:30:00,106.76,55.861000000000004,40.713,29.28 +2020-06-11 05:45:00,111.82,52.246,40.713,29.28 +2020-06-11 06:00:00,116.83,53.778999999999996,50.952,29.28 +2020-06-11 06:15:00,112.43,54.458,50.952,29.28 +2020-06-11 06:30:00,113.1,52.248000000000005,50.952,29.28 +2020-06-11 06:45:00,118.36,52.81399999999999,50.952,29.28 +2020-06-11 07:00:00,124.46,53.745,64.88,29.28 +2020-06-11 07:15:00,126.91,53.378,64.88,29.28 +2020-06-11 07:30:00,121.71,50.56100000000001,64.88,29.28 +2020-06-11 07:45:00,118.85,49.775,64.88,29.28 +2020-06-11 08:00:00,123.62,47.285,55.133,29.28 +2020-06-11 08:15:00,123.22,49.50899999999999,55.133,29.28 +2020-06-11 08:30:00,122.66,49.281000000000006,55.133,29.28 +2020-06-11 08:45:00,116.59,51.448,55.133,29.28 +2020-06-11 09:00:00,119.41,47.053000000000004,48.912,29.28 +2020-06-11 09:15:00,123.06,45.975,48.912,29.28 +2020-06-11 09:30:00,124.81,49.357,48.912,29.28 +2020-06-11 09:45:00,122.25,51.726000000000006,48.912,29.28 +2020-06-11 10:00:00,123.12,47.016999999999996,45.968999999999994,29.28 +2020-06-11 10:15:00,122.31,48.696999999999996,45.968999999999994,29.28 +2020-06-11 10:30:00,124.76,48.813,45.968999999999994,29.28 +2020-06-11 10:45:00,121.0,50.336999999999996,45.968999999999994,29.28 +2020-06-11 11:00:00,114.05,45.86600000000001,44.067,29.28 +2020-06-11 11:15:00,112.2,47.202,44.067,29.28 +2020-06-11 11:30:00,108.33,48.652,44.067,29.28 +2020-06-11 11:45:00,108.51,50.427,44.067,29.28 +2020-06-11 12:00:00,109.52,46.573,41.501000000000005,29.28 +2020-06-11 12:15:00,106.82,46.66,41.501000000000005,29.28 +2020-06-11 12:30:00,106.48,45.667,41.501000000000005,29.28 +2020-06-11 12:45:00,100.88,47.20399999999999,41.501000000000005,29.28 +2020-06-11 13:00:00,95.77,47.875,41.117,29.28 +2020-06-11 13:15:00,95.82,48.938,41.117,29.28 +2020-06-11 13:30:00,100.99,47.275,41.117,29.28 +2020-06-11 13:45:00,104.58,45.864,41.117,29.28 +2020-06-11 14:00:00,103.94,47.951,41.492,29.28 +2020-06-11 14:15:00,100.72,46.599,41.492,29.28 +2020-06-11 14:30:00,97.94,45.475,41.492,29.28 +2020-06-11 14:45:00,99.64,46.071000000000005,41.492,29.28 +2020-06-11 15:00:00,99.53,47.706,43.711999999999996,29.28 +2020-06-11 15:15:00,97.45,45.283,43.711999999999996,29.28 +2020-06-11 15:30:00,94.25,43.497,43.711999999999996,29.28 +2020-06-11 15:45:00,100.3,41.3,43.711999999999996,29.28 +2020-06-11 16:00:00,103.4,43.946000000000005,45.446000000000005,29.28 +2020-06-11 16:15:00,100.4,43.488,45.446000000000005,29.28 +2020-06-11 16:30:00,100.04,42.797,45.446000000000005,29.28 +2020-06-11 16:45:00,101.12,39.244,45.446000000000005,29.28 +2020-06-11 17:00:00,110.22,41.901,48.803000000000004,29.28 +2020-06-11 17:15:00,110.07,41.951,48.803000000000004,29.28 +2020-06-11 17:30:00,113.51,41.235,48.803000000000004,29.28 +2020-06-11 17:45:00,106.59,39.578,48.803000000000004,29.28 +2020-06-11 18:00:00,104.74,41.95399999999999,51.167,29.28 +2020-06-11 18:15:00,106.72,42.18899999999999,51.167,29.28 +2020-06-11 18:30:00,107.72,39.83,51.167,29.28 +2020-06-11 18:45:00,102.99,44.225,51.167,29.28 +2020-06-11 19:00:00,99.51,45.243,52.486000000000004,29.28 +2020-06-11 19:15:00,103.25,44.294,52.486000000000004,29.28 +2020-06-11 19:30:00,105.06,43.455,52.486000000000004,29.28 +2020-06-11 19:45:00,97.36,43.74100000000001,52.486000000000004,29.28 +2020-06-11 20:00:00,101.57,42.2,59.635,29.28 +2020-06-11 20:15:00,101.54,41.964,59.635,29.28 +2020-06-11 20:30:00,100.96,42.202,59.635,29.28 +2020-06-11 20:45:00,96.25,42.772,59.635,29.28 +2020-06-11 21:00:00,92.74,40.939,54.353,29.28 +2020-06-11 21:15:00,89.61,42.716,54.353,29.28 +2020-06-11 21:30:00,87.7,43.619,54.353,29.28 +2020-06-11 21:45:00,94.37,44.69,54.353,29.28 +2020-06-11 22:00:00,89.15,42.188,49.431999999999995,29.28 +2020-06-11 22:15:00,88.41,43.838,49.431999999999995,29.28 +2020-06-11 22:30:00,80.58,38.126999999999995,49.431999999999995,29.28 +2020-06-11 22:45:00,80.98,34.881,49.431999999999995,29.28 +2020-06-11 23:00:00,82.25,30.368000000000002,42.872,29.28 +2020-06-11 23:15:00,83.85,28.783,42.872,29.28 +2020-06-11 23:30:00,79.67,27.729,42.872,29.28 +2020-06-11 23:45:00,74.85,27.095,42.872,29.28 +2020-06-12 00:00:00,71.36,24.219,39.819,29.28 +2020-06-12 00:15:00,72.66,25.046999999999997,39.819,29.28 +2020-06-12 00:30:00,77.04,24.245,39.819,29.28 +2020-06-12 00:45:00,78.71,24.064,39.819,29.28 +2020-06-12 01:00:00,74.65,23.453000000000003,37.797,29.28 +2020-06-12 01:15:00,72.83,22.143,37.797,29.28 +2020-06-12 01:30:00,71.34,21.164,37.797,29.28 +2020-06-12 01:45:00,78.24,20.419,37.797,29.28 +2020-06-12 02:00:00,77.22,20.825,36.905,29.28 +2020-06-12 02:15:00,75.15,19.269000000000002,36.905,29.28 +2020-06-12 02:30:00,76.1,22.295,36.905,29.28 +2020-06-12 02:45:00,72.39,22.408,36.905,29.28 +2020-06-12 03:00:00,77.81,24.747,37.1,29.28 +2020-06-12 03:15:00,79.33,22.335,37.1,29.28 +2020-06-12 03:30:00,78.33,21.410999999999998,37.1,29.28 +2020-06-12 03:45:00,74.64,21.698,37.1,29.28 +2020-06-12 04:00:00,77.34,28.813000000000002,37.882,29.28 +2020-06-12 04:15:00,84.37,35.63,37.882,29.28 +2020-06-12 04:30:00,86.71,33.882,37.882,29.28 +2020-06-12 04:45:00,88.82,33.51,37.882,29.28 +2020-06-12 05:00:00,89.4,50.383,40.777,29.28 +2020-06-12 05:15:00,93.53,63.548,40.777,29.28 +2020-06-12 05:30:00,98.42,54.953,40.777,29.28 +2020-06-12 05:45:00,98.91,50.955,40.777,29.28 +2020-06-12 06:00:00,102.82,52.763000000000005,55.528,29.28 +2020-06-12 06:15:00,102.95,53.437,55.528,29.28 +2020-06-12 06:30:00,110.8,51.111999999999995,55.528,29.28 +2020-06-12 06:45:00,112.79,51.744,55.528,29.28 +2020-06-12 07:00:00,116.91,53.201,67.749,29.28 +2020-06-12 07:15:00,107.11,53.821000000000005,67.749,29.28 +2020-06-12 07:30:00,104.05,49.117,67.749,29.28 +2020-06-12 07:45:00,103.9,48.068999999999996,67.749,29.28 +2020-06-12 08:00:00,106.28,46.215,57.55,29.28 +2020-06-12 08:15:00,102.7,49.07,57.55,29.28 +2020-06-12 08:30:00,109.84,48.847,57.55,29.28 +2020-06-12 08:45:00,110.15,50.713,57.55,29.28 +2020-06-12 09:00:00,108.4,44.169,52.588,29.28 +2020-06-12 09:15:00,103.04,44.977,52.588,29.28 +2020-06-12 09:30:00,109.97,47.66,52.588,29.28 +2020-06-12 09:45:00,108.51,50.403999999999996,52.588,29.28 +2020-06-12 10:00:00,107.23,45.416000000000004,49.772,29.28 +2020-06-12 10:15:00,105.95,46.98,49.772,29.28 +2020-06-12 10:30:00,114.2,47.611999999999995,49.772,29.28 +2020-06-12 10:45:00,115.09,49.004,49.772,29.28 +2020-06-12 11:00:00,112.1,44.768,49.226000000000006,29.28 +2020-06-12 11:15:00,107.96,44.983999999999995,49.226000000000006,29.28 +2020-06-12 11:30:00,105.26,46.276,49.226000000000006,29.28 +2020-06-12 11:45:00,103.17,47.152,49.226000000000006,29.28 +2020-06-12 12:00:00,101.7,43.861000000000004,45.705,29.28 +2020-06-12 12:15:00,103.75,43.108999999999995,45.705,29.28 +2020-06-12 12:30:00,102.31,42.221000000000004,45.705,29.28 +2020-06-12 12:45:00,102.28,43.075,45.705,29.28 +2020-06-12 13:00:00,98.03,44.407,43.133,29.28 +2020-06-12 13:15:00,98.2,45.735,43.133,29.28 +2020-06-12 13:30:00,97.7,44.833999999999996,43.133,29.28 +2020-06-12 13:45:00,99.86,43.71,43.133,29.28 +2020-06-12 14:00:00,100.43,44.925,41.989,29.28 +2020-06-12 14:15:00,103.53,43.963,41.989,29.28 +2020-06-12 14:30:00,105.57,44.29600000000001,41.989,29.28 +2020-06-12 14:45:00,108.6,44.278999999999996,41.989,29.28 +2020-06-12 15:00:00,107.88,45.821999999999996,43.728,29.28 +2020-06-12 15:15:00,108.67,43.114,43.728,29.28 +2020-06-12 15:30:00,108.56,40.613,43.728,29.28 +2020-06-12 15:45:00,108.51,39.143,43.728,29.28 +2020-06-12 16:00:00,107.02,40.894,45.93899999999999,29.28 +2020-06-12 16:15:00,107.22,40.931,45.93899999999999,29.28 +2020-06-12 16:30:00,106.33,40.096,45.93899999999999,29.28 +2020-06-12 16:45:00,105.53,35.755,45.93899999999999,29.28 +2020-06-12 17:00:00,105.78,40.11,50.488,29.28 +2020-06-12 17:15:00,104.46,39.942,50.488,29.28 +2020-06-12 17:30:00,104.33,39.343,50.488,29.28 +2020-06-12 17:45:00,106.02,37.482,50.488,29.28 +2020-06-12 18:00:00,104.89,39.993,52.408,29.28 +2020-06-12 18:15:00,103.14,39.260999999999996,52.408,29.28 +2020-06-12 18:30:00,102.14,36.836999999999996,52.408,29.28 +2020-06-12 18:45:00,101.78,41.63,52.408,29.28 +2020-06-12 19:00:00,98.46,43.586999999999996,52.736000000000004,29.28 +2020-06-12 19:15:00,94.32,43.331,52.736000000000004,29.28 +2020-06-12 19:30:00,94.61,42.503,52.736000000000004,29.28 +2020-06-12 19:45:00,91.52,41.763999999999996,52.736000000000004,29.28 +2020-06-12 20:00:00,89.27,40.058,59.68,29.28 +2020-06-12 20:15:00,91.99,40.582,59.68,29.28 +2020-06-12 20:30:00,88.8,40.359,59.68,29.28 +2020-06-12 20:45:00,88.94,40.238,59.68,29.28 +2020-06-12 21:00:00,86.4,39.718,54.343999999999994,29.28 +2020-06-12 21:15:00,85.82,43.148,54.343999999999994,29.28 +2020-06-12 21:30:00,83.13,43.888999999999996,54.343999999999994,29.28 +2020-06-12 21:45:00,84.05,45.218,54.343999999999994,29.28 +2020-06-12 22:00:00,77.72,42.698,49.672,29.28 +2020-06-12 22:15:00,77.94,44.105,49.672,29.28 +2020-06-12 22:30:00,74.99,43.566,49.672,29.28 +2020-06-12 22:45:00,76.11,41.47,49.672,29.28 +2020-06-12 23:00:00,70.24,38.516,42.065,29.28 +2020-06-12 23:15:00,69.98,35.275999999999996,42.065,29.28 +2020-06-12 23:30:00,69.72,32.342,42.065,29.28 +2020-06-12 23:45:00,69.07,31.518,42.065,29.28 +2020-06-13 00:00:00,64.84,25.0,38.829,29.17 +2020-06-13 00:15:00,66.33,24.767,38.829,29.17 +2020-06-13 00:30:00,65.93,23.649,38.829,29.17 +2020-06-13 00:45:00,64.97,22.844,38.829,29.17 +2020-06-13 01:00:00,64.06,22.574,34.63,29.17 +2020-06-13 01:15:00,64.21,21.715,34.63,29.17 +2020-06-13 01:30:00,62.98,19.908,34.63,29.17 +2020-06-13 01:45:00,63.23,20.326,34.63,29.17 +2020-06-13 02:00:00,62.58,19.86,32.465,29.17 +2020-06-13 02:15:00,62.35,17.509,32.465,29.17 +2020-06-13 02:30:00,62.98,19.667,32.465,29.17 +2020-06-13 02:45:00,62.07,20.549,32.465,29.17 +2020-06-13 03:00:00,63.84,21.636999999999997,31.925,29.17 +2020-06-13 03:15:00,70.97,18.439,31.925,29.17 +2020-06-13 03:30:00,65.1,17.679000000000002,31.925,29.17 +2020-06-13 03:45:00,63.54,19.415,31.925,29.17 +2020-06-13 04:00:00,61.45,24.273000000000003,31.309,29.17 +2020-06-13 04:15:00,69.01,29.947,31.309,29.17 +2020-06-13 04:30:00,69.89,26.381,31.309,29.17 +2020-06-13 04:45:00,70.47,26.219,31.309,29.17 +2020-06-13 05:00:00,64.5,33.701,30.323,29.17 +2020-06-13 05:15:00,66.69,34.52,30.323,29.17 +2020-06-13 05:30:00,66.77,27.484,30.323,29.17 +2020-06-13 05:45:00,69.87,28.311999999999998,30.323,29.17 +2020-06-13 06:00:00,75.11,42.504,31.438000000000002,29.17 +2020-06-13 06:15:00,75.75,52.11600000000001,31.438000000000002,29.17 +2020-06-13 06:30:00,84.06,46.602,31.438000000000002,29.17 +2020-06-13 06:45:00,87.29,43.371,31.438000000000002,29.17 +2020-06-13 07:00:00,86.33,43.028,34.891999999999996,29.17 +2020-06-13 07:15:00,87.6,42.312,34.891999999999996,29.17 +2020-06-13 07:30:00,90.91,39.294000000000004,34.891999999999996,29.17 +2020-06-13 07:45:00,93.57,39.534,34.891999999999996,29.17 +2020-06-13 08:00:00,94.56,38.69,39.608000000000004,29.17 +2020-06-13 08:15:00,92.12,41.727,39.608000000000004,29.17 +2020-06-13 08:30:00,96.32,41.638999999999996,39.608000000000004,29.17 +2020-06-13 08:45:00,97.62,44.715,39.608000000000004,29.17 +2020-06-13 09:00:00,91.24,41.26,40.894,29.17 +2020-06-13 09:15:00,87.74,42.605,40.894,29.17 +2020-06-13 09:30:00,87.68,45.849,40.894,29.17 +2020-06-13 09:45:00,84.6,48.202,40.894,29.17 +2020-06-13 10:00:00,79.46,43.803999999999995,39.525,29.17 +2020-06-13 10:15:00,84.16,45.736000000000004,39.525,29.17 +2020-06-13 10:30:00,89.39,46.066,39.525,29.17 +2020-06-13 10:45:00,89.77,47.268,39.525,29.17 +2020-06-13 11:00:00,91.12,42.92,36.718,29.17 +2020-06-13 11:15:00,93.16,43.891999999999996,36.718,29.17 +2020-06-13 11:30:00,86.51,45.324,36.718,29.17 +2020-06-13 11:45:00,84.34,46.735,36.718,29.17 +2020-06-13 12:00:00,79.65,43.74,35.688,29.17 +2020-06-13 12:15:00,73.18,43.858000000000004,35.688,29.17 +2020-06-13 12:30:00,70.87,42.857,35.688,29.17 +2020-06-13 12:45:00,71.71,44.318999999999996,35.688,29.17 +2020-06-13 13:00:00,72.51,44.803000000000004,32.858000000000004,29.17 +2020-06-13 13:15:00,73.91,45.407,32.858000000000004,29.17 +2020-06-13 13:30:00,70.81,44.647,32.858000000000004,29.17 +2020-06-13 13:45:00,71.46,42.306000000000004,32.858000000000004,29.17 +2020-06-13 14:00:00,65.58,43.733000000000004,31.738000000000003,29.17 +2020-06-13 14:15:00,67.67,41.534,31.738000000000003,29.17 +2020-06-13 14:30:00,66.02,41.251000000000005,31.738000000000003,29.17 +2020-06-13 14:45:00,69.44,41.713,31.738000000000003,29.17 +2020-06-13 15:00:00,69.59,43.79,34.35,29.17 +2020-06-13 15:15:00,68.57,41.821000000000005,34.35,29.17 +2020-06-13 15:30:00,70.63,39.661,34.35,29.17 +2020-06-13 15:45:00,70.47,37.313,34.35,29.17 +2020-06-13 16:00:00,70.88,41.03,37.522,29.17 +2020-06-13 16:15:00,69.13,40.306999999999995,37.522,29.17 +2020-06-13 16:30:00,70.38,39.698,37.522,29.17 +2020-06-13 16:45:00,72.18,35.393,37.522,29.17 +2020-06-13 17:00:00,75.53,38.603,42.498000000000005,29.17 +2020-06-13 17:15:00,75.43,36.553000000000004,42.498000000000005,29.17 +2020-06-13 17:30:00,76.48,35.812,42.498000000000005,29.17 +2020-06-13 17:45:00,78.84,34.356,42.498000000000005,29.17 +2020-06-13 18:00:00,80.38,38.174,44.701,29.17 +2020-06-13 18:15:00,80.49,39.178000000000004,44.701,29.17 +2020-06-13 18:30:00,83.97,38.166,44.701,29.17 +2020-06-13 18:45:00,81.48,39.333,44.701,29.17 +2020-06-13 19:00:00,81.9,39.872,45.727,29.17 +2020-06-13 19:15:00,76.64,38.601,45.727,29.17 +2020-06-13 19:30:00,75.82,38.568000000000005,45.727,29.17 +2020-06-13 19:45:00,78.53,39.488,45.727,29.17 +2020-06-13 20:00:00,74.72,38.754,43.391000000000005,29.17 +2020-06-13 20:15:00,76.21,38.875,43.391000000000005,29.17 +2020-06-13 20:30:00,72.61,37.795,43.391000000000005,29.17 +2020-06-13 20:45:00,72.49,39.428000000000004,43.391000000000005,29.17 +2020-06-13 21:00:00,71.31,37.734,41.231,29.17 +2020-06-13 21:15:00,69.62,40.884,41.231,29.17 +2020-06-13 21:30:00,68.99,41.898999999999994,41.231,29.17 +2020-06-13 21:45:00,65.8,42.681000000000004,41.231,29.17 +2020-06-13 22:00:00,61.94,40.286,40.798,29.17 +2020-06-13 22:15:00,62.44,42.176,40.798,29.17 +2020-06-13 22:30:00,60.41,41.869,40.798,29.17 +2020-06-13 22:45:00,59.47,40.296,40.798,29.17 +2020-06-13 23:00:00,56.53,36.909,34.402,29.17 +2020-06-13 23:15:00,56.79,33.949,34.402,29.17 +2020-06-13 23:30:00,56.94,33.191,34.402,29.17 +2020-06-13 23:45:00,56.32,32.468,34.402,29.17 +2020-06-14 00:00:00,52.28,26.233,30.171,29.17 +2020-06-14 00:15:00,53.6,24.875,30.171,29.17 +2020-06-14 00:30:00,49.61,23.584,30.171,29.17 +2020-06-14 00:45:00,51.87,22.745,30.171,29.17 +2020-06-14 01:00:00,50.13,22.730999999999998,27.15,29.17 +2020-06-14 01:15:00,51.9,21.837,27.15,29.17 +2020-06-14 01:30:00,50.98,19.942999999999998,27.15,29.17 +2020-06-14 01:45:00,51.2,19.963,27.15,29.17 +2020-06-14 02:00:00,49.19,19.500999999999998,25.403000000000002,29.17 +2020-06-14 02:15:00,49.45,17.74,25.403000000000002,29.17 +2020-06-14 02:30:00,46.81,20.155,25.403000000000002,29.17 +2020-06-14 02:45:00,49.86,20.811,25.403000000000002,29.17 +2020-06-14 03:00:00,48.72,22.546999999999997,23.386999999999997,29.17 +2020-06-14 03:15:00,49.41,19.547,23.386999999999997,29.17 +2020-06-14 03:30:00,49.29,18.229,23.386999999999997,29.17 +2020-06-14 03:45:00,48.21,19.223,23.386999999999997,29.17 +2020-06-14 04:00:00,46.3,23.975,23.941999999999997,29.17 +2020-06-14 04:15:00,49.49,29.096999999999998,23.941999999999997,29.17 +2020-06-14 04:30:00,49.02,26.796999999999997,23.941999999999997,29.17 +2020-06-14 04:45:00,51.15,26.214000000000002,23.941999999999997,29.17 +2020-06-14 05:00:00,52.15,33.439,23.026,29.17 +2020-06-14 05:15:00,52.37,33.179,23.026,29.17 +2020-06-14 05:30:00,51.73,25.811,23.026,29.17 +2020-06-14 05:45:00,51.3,26.45,23.026,29.17 +2020-06-14 06:00:00,55.97,38.391,23.223000000000003,29.17 +2020-06-14 06:15:00,56.52,48.623999999999995,23.223000000000003,29.17 +2020-06-14 06:30:00,57.52,42.369,23.223000000000003,29.17 +2020-06-14 06:45:00,56.72,38.123000000000005,23.223000000000003,29.17 +2020-06-14 07:00:00,58.51,38.266999999999996,24.968000000000004,29.17 +2020-06-14 07:15:00,64.2,35.931999999999995,24.968000000000004,29.17 +2020-06-14 07:30:00,64.55,34.004,24.968000000000004,29.17 +2020-06-14 07:45:00,59.52,34.175,24.968000000000004,29.17 +2020-06-14 08:00:00,60.05,34.224000000000004,29.131,29.17 +2020-06-14 08:15:00,60.54,38.406,29.131,29.17 +2020-06-14 08:30:00,59.86,39.29,29.131,29.17 +2020-06-14 08:45:00,59.75,42.483999999999995,29.131,29.17 +2020-06-14 09:00:00,55.4,38.879,29.904,29.17 +2020-06-14 09:15:00,59.64,39.813,29.904,29.17 +2020-06-14 09:30:00,58.18,43.45,29.904,29.17 +2020-06-14 09:45:00,60.74,46.76,29.904,29.17 +2020-06-14 10:00:00,65.21,43.11600000000001,28.943,29.17 +2020-06-14 10:15:00,69.62,45.239,28.943,29.17 +2020-06-14 10:30:00,76.14,45.839,28.943,29.17 +2020-06-14 10:45:00,76.23,47.826,28.943,29.17 +2020-06-14 11:00:00,72.62,43.235,31.682,29.17 +2020-06-14 11:15:00,66.42,43.803999999999995,31.682,29.17 +2020-06-14 11:30:00,63.36,45.636,31.682,29.17 +2020-06-14 11:45:00,64.54,47.348,31.682,29.17 +2020-06-14 12:00:00,58.01,45.331,27.315,29.17 +2020-06-14 12:15:00,62.22,45.035,27.315,29.17 +2020-06-14 12:30:00,67.96,44.08,27.315,29.17 +2020-06-14 12:45:00,72.55,44.851000000000006,27.315,29.17 +2020-06-14 13:00:00,70.76,44.978,23.894000000000002,29.17 +2020-06-14 13:15:00,65.86,45.318000000000005,23.894000000000002,29.17 +2020-06-14 13:30:00,52.16,43.497,23.894000000000002,29.17 +2020-06-14 13:45:00,56.73,42.155,23.894000000000002,29.17 +2020-06-14 14:00:00,56.02,44.756,21.148000000000003,29.17 +2020-06-14 14:15:00,58.16,43.071999999999996,21.148000000000003,29.17 +2020-06-14 14:30:00,59.65,41.708999999999996,21.148000000000003,29.17 +2020-06-14 14:45:00,66.92,41.126999999999995,21.148000000000003,29.17 +2020-06-14 15:00:00,72.76,43.235,21.229,29.17 +2020-06-14 15:15:00,75.07,40.558,21.229,29.17 +2020-06-14 15:30:00,73.16,38.271,21.229,29.17 +2020-06-14 15:45:00,75.74,36.243,21.229,29.17 +2020-06-14 16:00:00,74.37,38.602,25.037,29.17 +2020-06-14 16:15:00,75.85,38.010999999999996,25.037,29.17 +2020-06-14 16:30:00,76.68,38.395,25.037,29.17 +2020-06-14 16:45:00,79.86,34.135,25.037,29.17 +2020-06-14 17:00:00,80.06,37.714,37.11,29.17 +2020-06-14 17:15:00,75.98,37.064,37.11,29.17 +2020-06-14 17:30:00,76.02,37.105,37.11,29.17 +2020-06-14 17:45:00,75.92,36.233000000000004,37.11,29.17 +2020-06-14 18:00:00,79.59,40.564,42.215,29.17 +2020-06-14 18:15:00,78.09,41.273999999999994,42.215,29.17 +2020-06-14 18:30:00,79.69,39.839,42.215,29.17 +2020-06-14 18:45:00,80.19,41.276,42.215,29.17 +2020-06-14 19:00:00,81.77,43.848,44.383,29.17 +2020-06-14 19:15:00,78.54,41.562,44.383,29.17 +2020-06-14 19:30:00,77.06,41.271,44.383,29.17 +2020-06-14 19:45:00,76.9,41.873999999999995,44.383,29.17 +2020-06-14 20:00:00,77.81,41.295,43.426,29.17 +2020-06-14 20:15:00,77.47,41.37,43.426,29.17 +2020-06-14 20:30:00,78.68,41.177,43.426,29.17 +2020-06-14 20:45:00,80.51,41.136,43.426,29.17 +2020-06-14 21:00:00,78.65,39.095,42.265,29.17 +2020-06-14 21:15:00,80.2,41.913999999999994,42.265,29.17 +2020-06-14 21:30:00,77.65,42.313,42.265,29.17 +2020-06-14 21:45:00,77.23,43.458,42.265,29.17 +2020-06-14 22:00:00,72.55,42.913999999999994,42.26,29.17 +2020-06-14 22:15:00,73.29,43.146,42.26,29.17 +2020-06-14 22:30:00,72.39,42.07899999999999,42.26,29.17 +2020-06-14 22:45:00,72.99,39.211,42.26,29.17 +2020-06-14 23:00:00,66.65,35.281,36.609,29.17 +2020-06-14 23:15:00,66.5,33.724000000000004,36.609,29.17 +2020-06-14 23:30:00,66.47,32.531,36.609,29.17 +2020-06-14 23:45:00,66.58,32.023,36.609,29.17 +2020-06-15 00:00:00,63.68,27.921999999999997,34.611,29.28 +2020-06-15 00:15:00,66.57,27.576,34.611,29.28 +2020-06-15 00:30:00,66.22,25.934,34.611,29.28 +2020-06-15 00:45:00,67.82,24.68,34.611,29.28 +2020-06-15 01:00:00,66.38,25.049,33.552,29.28 +2020-06-15 01:15:00,63.83,24.105,33.552,29.28 +2020-06-15 01:30:00,65.85,22.554000000000002,33.552,29.28 +2020-06-15 01:45:00,63.4,22.485,33.552,29.28 +2020-06-15 02:00:00,64.21,22.454,32.351,29.28 +2020-06-15 02:15:00,65.04,19.855,32.351,29.28 +2020-06-15 02:30:00,65.8,22.451,32.351,29.28 +2020-06-15 02:45:00,71.81,22.92,32.351,29.28 +2020-06-15 03:00:00,71.74,25.247,30.793000000000003,29.28 +2020-06-15 03:15:00,73.07,23.074,30.793000000000003,29.28 +2020-06-15 03:30:00,67.77,22.386999999999997,30.793000000000003,29.28 +2020-06-15 03:45:00,68.94,22.915,30.793000000000003,29.28 +2020-06-15 04:00:00,70.83,30.949,31.274,29.28 +2020-06-15 04:15:00,72.74,39.173,31.274,29.28 +2020-06-15 04:30:00,76.76,36.596,31.274,29.28 +2020-06-15 04:45:00,82.08,36.376999999999995,31.274,29.28 +2020-06-15 05:00:00,88.23,51.6,37.75,29.28 +2020-06-15 05:15:00,92.27,62.74100000000001,37.75,29.28 +2020-06-15 05:30:00,94.48,53.993,37.75,29.28 +2020-06-15 05:45:00,97.09,51.272,37.75,29.28 +2020-06-15 06:00:00,102.24,51.938,55.36,29.28 +2020-06-15 06:15:00,111.18,52.23,55.36,29.28 +2020-06-15 06:30:00,115.52,50.466,55.36,29.28 +2020-06-15 06:45:00,117.34,52.028,55.36,29.28 +2020-06-15 07:00:00,115.83,52.782,65.87,29.28 +2020-06-15 07:15:00,114.27,52.74100000000001,65.87,29.28 +2020-06-15 07:30:00,122.7,49.918,65.87,29.28 +2020-06-15 07:45:00,120.92,50.178999999999995,65.87,29.28 +2020-06-15 08:00:00,119.84,47.783,55.695,29.28 +2020-06-15 08:15:00,111.36,50.665,55.695,29.28 +2020-06-15 08:30:00,110.75,50.261,55.695,29.28 +2020-06-15 08:45:00,113.47,53.36,55.695,29.28 +2020-06-15 09:00:00,117.2,48.68899999999999,50.881,29.28 +2020-06-15 09:15:00,116.73,47.618,50.881,29.28 +2020-06-15 09:30:00,110.25,50.285,50.881,29.28 +2020-06-15 09:45:00,118.14,51.467,50.881,29.28 +2020-06-15 10:00:00,117.56,48.161,49.138000000000005,29.28 +2020-06-15 10:15:00,114.82,50.128,49.138000000000005,29.28 +2020-06-15 10:30:00,113.15,50.214,49.138000000000005,29.28 +2020-06-15 10:45:00,110.62,50.78,49.138000000000005,29.28 +2020-06-15 11:00:00,110.55,46.151,49.178000000000004,29.28 +2020-06-15 11:15:00,113.2,47.161,49.178000000000004,29.28 +2020-06-15 11:30:00,114.7,49.771,49.178000000000004,29.28 +2020-06-15 11:45:00,107.65,51.922,49.178000000000004,29.28 +2020-06-15 12:00:00,103.58,48.492,47.698,29.28 +2020-06-15 12:15:00,100.76,48.303000000000004,47.698,29.28 +2020-06-15 12:30:00,98.31,46.336000000000006,47.698,29.28 +2020-06-15 12:45:00,100.35,47.248000000000005,47.698,29.28 +2020-06-15 13:00:00,98.72,48.282,48.104,29.28 +2020-06-15 13:15:00,97.1,47.658,48.104,29.28 +2020-06-15 13:30:00,98.57,45.958,48.104,29.28 +2020-06-15 13:45:00,100.45,45.47,48.104,29.28 +2020-06-15 14:00:00,109.23,47.168,48.53,29.28 +2020-06-15 14:15:00,107.1,45.983999999999995,48.53,29.28 +2020-06-15 14:30:00,105.45,44.391000000000005,48.53,29.28 +2020-06-15 14:45:00,107.37,45.77,48.53,29.28 +2020-06-15 15:00:00,105.82,47.726000000000006,49.351000000000006,29.28 +2020-06-15 15:15:00,101.42,44.35,49.351000000000006,29.28 +2020-06-15 15:30:00,93.89,42.706,49.351000000000006,29.28 +2020-06-15 15:45:00,102.39,40.167,49.351000000000006,29.28 +2020-06-15 16:00:00,103.23,43.58,51.44,29.28 +2020-06-15 16:15:00,103.03,42.976000000000006,51.44,29.28 +2020-06-15 16:30:00,103.38,42.66,51.44,29.28 +2020-06-15 16:45:00,105.31,38.287,51.44,29.28 +2020-06-15 17:00:00,110.64,40.8,56.868,29.28 +2020-06-15 17:15:00,108.12,40.414,56.868,29.28 +2020-06-15 17:30:00,107.45,40.03,56.868,29.28 +2020-06-15 17:45:00,108.12,38.626,56.868,29.28 +2020-06-15 18:00:00,107.0,41.968,57.229,29.28 +2020-06-15 18:15:00,105.19,40.717,57.229,29.28 +2020-06-15 18:30:00,103.36,38.615,57.229,29.28 +2020-06-15 18:45:00,103.93,43.123999999999995,57.229,29.28 +2020-06-15 19:00:00,101.36,45.273,57.744,29.28 +2020-06-15 19:15:00,97.27,44.143,57.744,29.28 +2020-06-15 19:30:00,94.43,43.535,57.744,29.28 +2020-06-15 19:45:00,94.45,43.476000000000006,57.744,29.28 +2020-06-15 20:00:00,93.01,41.475,66.05199999999999,29.28 +2020-06-15 20:15:00,93.07,42.67,66.05199999999999,29.28 +2020-06-15 20:30:00,92.72,42.825,66.05199999999999,29.28 +2020-06-15 20:45:00,92.0,43.159,66.05199999999999,29.28 +2020-06-15 21:00:00,90.53,40.566,59.396,29.28 +2020-06-15 21:15:00,89.26,43.715,59.396,29.28 +2020-06-15 21:30:00,86.15,44.418,59.396,29.28 +2020-06-15 21:45:00,83.94,45.318999999999996,59.396,29.28 +2020-06-15 22:00:00,79.53,42.593999999999994,53.06,29.28 +2020-06-15 22:15:00,79.12,44.623999999999995,53.06,29.28 +2020-06-15 22:30:00,76.82,38.604,53.06,29.28 +2020-06-15 22:45:00,77.6,35.296,53.06,29.28 +2020-06-15 23:00:00,71.23,31.458000000000002,46.148,29.28 +2020-06-15 23:15:00,71.79,28.58,46.148,29.28 +2020-06-15 23:30:00,73.2,27.590999999999998,46.148,29.28 +2020-06-15 23:45:00,71.26,26.781,46.148,29.28 +2020-06-16 00:00:00,68.96,24.359,44.625,29.28 +2020-06-16 00:15:00,69.29,25.055999999999997,44.625,29.28 +2020-06-16 00:30:00,68.44,23.929000000000002,44.625,29.28 +2020-06-16 00:45:00,68.79,23.45,44.625,29.28 +2020-06-16 01:00:00,66.84,23.256,41.733000000000004,29.28 +2020-06-16 01:15:00,68.54,22.443,41.733000000000004,29.28 +2020-06-16 01:30:00,67.64,20.79,41.733000000000004,29.28 +2020-06-16 01:45:00,68.65,20.428,41.733000000000004,29.28 +2020-06-16 02:00:00,68.14,19.965999999999998,39.872,29.28 +2020-06-16 02:15:00,67.92,18.408,39.872,29.28 +2020-06-16 02:30:00,67.69,20.671999999999997,39.872,29.28 +2020-06-16 02:45:00,68.5,21.430999999999997,39.872,29.28 +2020-06-16 03:00:00,68.84,23.045,38.711,29.28 +2020-06-16 03:15:00,70.43,21.794,38.711,29.28 +2020-06-16 03:30:00,71.46,21.061999999999998,38.711,29.28 +2020-06-16 03:45:00,71.24,20.377,38.711,29.28 +2020-06-16 04:00:00,78.78,26.963,39.823,29.28 +2020-06-16 04:15:00,83.37,34.927,39.823,29.28 +2020-06-16 04:30:00,86.33,32.236999999999995,39.823,29.28 +2020-06-16 04:45:00,84.83,32.514,39.823,29.28 +2020-06-16 05:00:00,89.13,48.638999999999996,43.228,29.28 +2020-06-16 05:15:00,95.5,59.591,43.228,29.28 +2020-06-16 05:30:00,102.96,51.088,43.228,29.28 +2020-06-16 05:45:00,106.21,47.806999999999995,43.228,29.28 +2020-06-16 06:00:00,110.04,49.923,54.316,29.28 +2020-06-16 06:15:00,106.31,50.313,54.316,29.28 +2020-06-16 06:30:00,112.22,48.407,54.316,29.28 +2020-06-16 06:45:00,116.7,49.299,54.316,29.28 +2020-06-16 07:00:00,118.4,50.067,65.758,29.28 +2020-06-16 07:15:00,114.45,49.853,65.758,29.28 +2020-06-16 07:30:00,120.01,47.098,65.758,29.28 +2020-06-16 07:45:00,121.47,46.503,65.758,29.28 +2020-06-16 08:00:00,122.52,43.562,57.983000000000004,29.28 +2020-06-16 08:15:00,120.87,46.042,57.983000000000004,29.28 +2020-06-16 08:30:00,119.62,46.19,57.983000000000004,29.28 +2020-06-16 08:45:00,120.59,48.538000000000004,57.983000000000004,29.28 +2020-06-16 09:00:00,119.48,43.669,52.653,29.28 +2020-06-16 09:15:00,115.43,42.684,52.653,29.28 +2020-06-16 09:30:00,115.25,46.261,52.653,29.28 +2020-06-16 09:45:00,119.15,48.981,52.653,29.28 +2020-06-16 10:00:00,124.46,43.623000000000005,51.408,29.28 +2020-06-16 10:15:00,124.81,45.39,51.408,29.28 +2020-06-16 10:30:00,116.98,45.55,51.408,29.28 +2020-06-16 10:45:00,119.25,47.229,51.408,29.28 +2020-06-16 11:00:00,119.52,43.428000000000004,51.913000000000004,29.28 +2020-06-16 11:15:00,106.77,44.788000000000004,51.913000000000004,29.28 +2020-06-16 11:30:00,105.75,46.257,51.913000000000004,29.28 +2020-06-16 11:45:00,111.19,48.073,51.913000000000004,29.28 +2020-06-16 12:00:00,110.92,44.413000000000004,49.508,29.28 +2020-06-16 12:15:00,110.35,44.346000000000004,49.508,29.28 +2020-06-16 12:30:00,105.59,43.29,49.508,29.28 +2020-06-16 12:45:00,115.07,44.753,49.508,29.28 +2020-06-16 13:00:00,112.54,45.398,50.007,29.28 +2020-06-16 13:15:00,111.53,46.568999999999996,50.007,29.28 +2020-06-16 13:30:00,107.86,44.854,50.007,29.28 +2020-06-16 13:45:00,113.1,43.668,50.007,29.28 +2020-06-16 14:00:00,111.48,45.714,49.778999999999996,29.28 +2020-06-16 14:15:00,108.96,44.407,49.778999999999996,29.28 +2020-06-16 14:30:00,105.74,43.292,49.778999999999996,29.28 +2020-06-16 14:45:00,106.26,43.869,49.778999999999996,29.28 +2020-06-16 15:00:00,102.33,45.617,51.559,29.28 +2020-06-16 15:15:00,103.42,43.174,51.559,29.28 +2020-06-16 15:30:00,111.85,41.39,51.559,29.28 +2020-06-16 15:45:00,116.04,39.3,51.559,29.28 +2020-06-16 16:00:00,111.53,42.037,53.531000000000006,29.28 +2020-06-16 16:15:00,109.87,41.598,53.531000000000006,29.28 +2020-06-16 16:30:00,107.38,40.802,53.531000000000006,29.28 +2020-06-16 16:45:00,111.98,37.24,53.531000000000006,29.28 +2020-06-16 17:00:00,113.93,40.24,59.497,29.28 +2020-06-16 17:15:00,112.65,40.22,59.497,29.28 +2020-06-16 17:30:00,108.82,39.359,59.497,29.28 +2020-06-16 17:45:00,114.35,37.766,59.497,29.28 +2020-06-16 18:00:00,115.88,40.343,59.861999999999995,29.28 +2020-06-16 18:15:00,116.48,40.538000000000004,59.861999999999995,29.28 +2020-06-16 18:30:00,107.47,38.215,59.861999999999995,29.28 +2020-06-16 18:45:00,107.61,42.318000000000005,59.861999999999995,29.28 +2020-06-16 19:00:00,111.62,42.979,60.989,29.28 +2020-06-16 19:15:00,106.07,42.001000000000005,60.989,29.28 +2020-06-16 19:30:00,102.41,41.065,60.989,29.28 +2020-06-16 19:45:00,95.32,41.147,60.989,29.28 +2020-06-16 20:00:00,92.13,38.826,68.35600000000001,29.28 +2020-06-16 20:15:00,94.97,38.798,68.35600000000001,29.28 +2020-06-16 20:30:00,91.06,39.229,68.35600000000001,29.28 +2020-06-16 20:45:00,94.21,39.921,68.35600000000001,29.28 +2020-06-16 21:00:00,89.7,38.23,59.251000000000005,29.28 +2020-06-16 21:15:00,89.12,40.126999999999995,59.251000000000005,29.28 +2020-06-16 21:30:00,86.59,41.136,59.251000000000005,29.28 +2020-06-16 21:45:00,85.8,42.263999999999996,59.251000000000005,29.28 +2020-06-16 22:00:00,81.71,39.696,54.736999999999995,29.28 +2020-06-16 22:15:00,82.26,41.648,54.736999999999995,29.28 +2020-06-16 22:30:00,79.77,36.277,54.736999999999995,29.28 +2020-06-16 22:45:00,81.67,32.983000000000004,54.736999999999995,29.28 +2020-06-16 23:00:00,74.51,28.76,46.806999999999995,29.28 +2020-06-16 23:15:00,74.79,27.148000000000003,46.806999999999995,29.28 +2020-06-16 23:30:00,82.15,25.996,46.806999999999995,29.28 +2020-06-16 23:45:00,74.96,25.283,46.806999999999995,29.28 +2020-06-17 00:00:00,70.38,24.259,43.824,29.28 +2020-06-17 00:15:00,71.92,24.956,43.824,29.28 +2020-06-17 00:30:00,70.72,23.831999999999997,43.824,29.28 +2020-06-17 00:45:00,71.52,23.358,43.824,29.28 +2020-06-17 01:00:00,69.75,23.180999999999997,39.86,29.28 +2020-06-17 01:15:00,70.66,22.351999999999997,39.86,29.28 +2020-06-17 01:30:00,70.25,20.694000000000003,39.86,29.28 +2020-06-17 01:45:00,70.36,20.323,39.86,29.28 +2020-06-17 02:00:00,69.85,19.865,37.931999999999995,29.28 +2020-06-17 02:15:00,69.97,18.305999999999997,37.931999999999995,29.28 +2020-06-17 02:30:00,77.19,20.566,37.931999999999995,29.28 +2020-06-17 02:45:00,79.52,21.33,37.931999999999995,29.28 +2020-06-17 03:00:00,75.47,22.943,37.579,29.28 +2020-06-17 03:15:00,71.44,21.693,37.579,29.28 +2020-06-17 03:30:00,73.65,20.968000000000004,37.579,29.28 +2020-06-17 03:45:00,74.61,20.305,37.579,29.28 +2020-06-17 04:00:00,75.19,26.839000000000002,37.931999999999995,29.28 +2020-06-17 04:15:00,77.28,34.758,37.931999999999995,29.28 +2020-06-17 04:30:00,80.23,32.056,37.931999999999995,29.28 +2020-06-17 04:45:00,86.39,32.33,37.931999999999995,29.28 +2020-06-17 05:00:00,92.75,48.354,40.942,29.28 +2020-06-17 05:15:00,94.78,59.178000000000004,40.942,29.28 +2020-06-17 05:30:00,102.45,50.743,40.942,29.28 +2020-06-17 05:45:00,103.25,47.508,40.942,29.28 +2020-06-17 06:00:00,109.39,49.636,56.516999999999996,29.28 +2020-06-17 06:15:00,108.76,50.011,56.516999999999996,29.28 +2020-06-17 06:30:00,106.58,48.129,56.516999999999996,29.28 +2020-06-17 06:45:00,115.87,49.049,56.516999999999996,29.28 +2020-06-17 07:00:00,120.05,49.805,71.707,29.28 +2020-06-17 07:15:00,118.84,49.608999999999995,71.707,29.28 +2020-06-17 07:30:00,112.36,46.847,71.707,29.28 +2020-06-17 07:45:00,116.82,46.285,71.707,29.28 +2020-06-17 08:00:00,118.62,43.354,61.17,29.28 +2020-06-17 08:15:00,120.54,45.867,61.17,29.28 +2020-06-17 08:30:00,112.25,46.007,61.17,29.28 +2020-06-17 08:45:00,110.41,48.36,61.17,29.28 +2020-06-17 09:00:00,112.65,43.483999999999995,57.282,29.28 +2020-06-17 09:15:00,116.01,42.503,57.282,29.28 +2020-06-17 09:30:00,115.28,46.07899999999999,57.282,29.28 +2020-06-17 09:45:00,117.39,48.817,57.282,29.28 +2020-06-17 10:00:00,119.51,43.468,54.026,29.28 +2020-06-17 10:15:00,118.12,45.247,54.026,29.28 +2020-06-17 10:30:00,115.99,45.409,54.026,29.28 +2020-06-17 10:45:00,112.31,47.093999999999994,54.026,29.28 +2020-06-17 11:00:00,117.86,43.288999999999994,54.277,29.28 +2020-06-17 11:15:00,118.81,44.655,54.277,29.28 +2020-06-17 11:30:00,112.48,46.113,54.277,29.28 +2020-06-17 11:45:00,106.68,47.93,54.277,29.28 +2020-06-17 12:00:00,107.8,44.3,52.552,29.28 +2020-06-17 12:15:00,109.75,44.235,52.552,29.28 +2020-06-17 12:30:00,109.97,43.158,52.552,29.28 +2020-06-17 12:45:00,106.0,44.623000000000005,52.552,29.28 +2020-06-17 13:00:00,99.76,45.25899999999999,52.111999999999995,29.28 +2020-06-17 13:15:00,101.66,46.431999999999995,52.111999999999995,29.28 +2020-06-17 13:30:00,106.4,44.727,52.111999999999995,29.28 +2020-06-17 13:45:00,109.32,43.545,52.111999999999995,29.28 +2020-06-17 14:00:00,108.0,45.607,52.066,29.28 +2020-06-17 14:15:00,102.64,44.297,52.066,29.28 +2020-06-17 14:30:00,105.38,43.159,52.066,29.28 +2020-06-17 14:45:00,107.65,43.742,52.066,29.28 +2020-06-17 15:00:00,106.16,45.522,52.523999999999994,29.28 +2020-06-17 15:15:00,98.78,43.071000000000005,52.523999999999994,29.28 +2020-06-17 15:30:00,97.44,41.277,52.523999999999994,29.28 +2020-06-17 15:45:00,102.09,39.176,52.523999999999994,29.28 +2020-06-17 16:00:00,102.74,41.942,54.101000000000006,29.28 +2020-06-17 16:15:00,111.61,41.501000000000005,54.101000000000006,29.28 +2020-06-17 16:30:00,112.07,40.723,54.101000000000006,29.28 +2020-06-17 16:45:00,111.13,37.138000000000005,54.101000000000006,29.28 +2020-06-17 17:00:00,107.3,40.161,58.155,29.28 +2020-06-17 17:15:00,106.07,40.135,58.155,29.28 +2020-06-17 17:30:00,109.67,39.269,58.155,29.28 +2020-06-17 17:45:00,109.22,37.658,58.155,29.28 +2020-06-17 18:00:00,115.64,40.247,60.205,29.28 +2020-06-17 18:15:00,115.65,40.415,60.205,29.28 +2020-06-17 18:30:00,112.11,38.086999999999996,60.205,29.28 +2020-06-17 18:45:00,108.54,42.19,60.205,29.28 +2020-06-17 19:00:00,111.91,42.853,61.568999999999996,29.28 +2020-06-17 19:15:00,107.65,41.867,61.568999999999996,29.28 +2020-06-17 19:30:00,104.81,40.923,61.568999999999996,29.28 +2020-06-17 19:45:00,100.79,41.0,61.568999999999996,29.28 +2020-06-17 20:00:00,95.94,38.662,68.145,29.28 +2020-06-17 20:15:00,95.76,38.63,68.145,29.28 +2020-06-17 20:30:00,95.13,39.07,68.145,29.28 +2020-06-17 20:45:00,95.74,39.789,68.145,29.28 +2020-06-17 21:00:00,93.35,38.104,59.696000000000005,29.28 +2020-06-17 21:15:00,92.86,40.008,59.696000000000005,29.28 +2020-06-17 21:30:00,90.82,40.994,59.696000000000005,29.28 +2020-06-17 21:45:00,88.68,42.13,59.696000000000005,29.28 +2020-06-17 22:00:00,84.2,39.58,54.861999999999995,29.28 +2020-06-17 22:15:00,84.82,41.541000000000004,54.861999999999995,29.28 +2020-06-17 22:30:00,81.78,36.164,54.861999999999995,29.28 +2020-06-17 22:45:00,80.67,32.86,54.861999999999995,29.28 +2020-06-17 23:00:00,74.94,28.62,45.568000000000005,29.28 +2020-06-17 23:15:00,76.51,27.043000000000003,45.568000000000005,29.28 +2020-06-17 23:30:00,75.84,25.903000000000002,45.568000000000005,29.28 +2020-06-17 23:45:00,75.6,25.178,45.568000000000005,29.28 +2020-06-18 00:00:00,73.4,24.163,40.181,29.28 +2020-06-18 00:15:00,72.87,24.86,40.181,29.28 +2020-06-18 00:30:00,72.34,23.739,40.181,29.28 +2020-06-18 00:45:00,73.84,23.271,40.181,29.28 +2020-06-18 01:00:00,71.31,23.109,38.296,29.28 +2020-06-18 01:15:00,72.98,22.264,38.296,29.28 +2020-06-18 01:30:00,73.12,20.601999999999997,38.296,29.28 +2020-06-18 01:45:00,72.86,20.224,38.296,29.28 +2020-06-18 02:00:00,72.69,19.769000000000002,36.575,29.28 +2020-06-18 02:15:00,73.69,18.209,36.575,29.28 +2020-06-18 02:30:00,80.7,20.464000000000002,36.575,29.28 +2020-06-18 02:45:00,81.54,21.235,36.575,29.28 +2020-06-18 03:00:00,76.54,22.845,36.394,29.28 +2020-06-18 03:15:00,74.22,21.598000000000003,36.394,29.28 +2020-06-18 03:30:00,74.27,20.877,36.394,29.28 +2020-06-18 03:45:00,75.37,20.236,36.394,29.28 +2020-06-18 04:00:00,78.58,26.719,37.207,29.28 +2020-06-18 04:15:00,77.79,34.595,37.207,29.28 +2020-06-18 04:30:00,81.29,31.881,37.207,29.28 +2020-06-18 04:45:00,87.9,32.150999999999996,37.207,29.28 +2020-06-18 05:00:00,91.79,48.077,40.713,29.28 +2020-06-18 05:15:00,94.18,58.776,40.713,29.28 +2020-06-18 05:30:00,102.83,50.407,40.713,29.28 +2020-06-18 05:45:00,105.92,47.218999999999994,40.713,29.28 +2020-06-18 06:00:00,112.75,49.357,50.952,29.28 +2020-06-18 06:15:00,110.24,49.718999999999994,50.952,29.28 +2020-06-18 06:30:00,106.85,47.858000000000004,50.952,29.28 +2020-06-18 06:45:00,108.84,48.808,50.952,29.28 +2020-06-18 07:00:00,116.96,49.552,64.88,29.28 +2020-06-18 07:15:00,117.84,49.375,64.88,29.28 +2020-06-18 07:30:00,118.78,46.605,64.88,29.28 +2020-06-18 07:45:00,110.21,46.077,64.88,29.28 +2020-06-18 08:00:00,112.37,43.156000000000006,55.133,29.28 +2020-06-18 08:15:00,120.59,45.7,55.133,29.28 +2020-06-18 08:30:00,116.62,45.832,55.133,29.28 +2020-06-18 08:45:00,113.88,48.188,55.133,29.28 +2020-06-18 09:00:00,111.01,43.306000000000004,48.912,29.28 +2020-06-18 09:15:00,116.08,42.32899999999999,48.912,29.28 +2020-06-18 09:30:00,116.1,45.903999999999996,48.912,29.28 +2020-06-18 09:45:00,110.88,48.659,48.912,29.28 +2020-06-18 10:00:00,111.72,43.321000000000005,45.968999999999994,29.28 +2020-06-18 10:15:00,116.87,45.11,45.968999999999994,29.28 +2020-06-18 10:30:00,119.29,45.273999999999994,45.968999999999994,29.28 +2020-06-18 10:45:00,117.36,46.965,45.968999999999994,29.28 +2020-06-18 11:00:00,115.58,43.156000000000006,44.067,29.28 +2020-06-18 11:15:00,108.97,44.528,44.067,29.28 +2020-06-18 11:30:00,104.55,45.975,44.067,29.28 +2020-06-18 11:45:00,104.96,47.792,44.067,29.28 +2020-06-18 12:00:00,117.07,44.193000000000005,41.501000000000005,29.28 +2020-06-18 12:15:00,118.98,44.129,41.501000000000005,29.28 +2020-06-18 12:30:00,111.45,43.032,41.501000000000005,29.28 +2020-06-18 12:45:00,105.65,44.498999999999995,41.501000000000005,29.28 +2020-06-18 13:00:00,107.61,45.126000000000005,41.117,29.28 +2020-06-18 13:15:00,111.84,46.298,41.117,29.28 +2020-06-18 13:30:00,112.94,44.604,41.117,29.28 +2020-06-18 13:45:00,114.13,43.426,41.117,29.28 +2020-06-18 14:00:00,110.3,45.501999999999995,41.492,29.28 +2020-06-18 14:15:00,112.76,44.191,41.492,29.28 +2020-06-18 14:30:00,115.17,43.031000000000006,41.492,29.28 +2020-06-18 14:45:00,117.92,43.619,41.492,29.28 +2020-06-18 15:00:00,115.32,45.431000000000004,43.711999999999996,29.28 +2020-06-18 15:15:00,123.12,42.968999999999994,43.711999999999996,29.28 +2020-06-18 15:30:00,122.03,41.169,43.711999999999996,29.28 +2020-06-18 15:45:00,118.04,39.056999999999995,43.711999999999996,29.28 +2020-06-18 16:00:00,118.78,41.851000000000006,45.446000000000005,29.28 +2020-06-18 16:15:00,112.38,41.406000000000006,45.446000000000005,29.28 +2020-06-18 16:30:00,118.25,40.647,45.446000000000005,29.28 +2020-06-18 16:45:00,122.87,37.039,45.446000000000005,29.28 +2020-06-18 17:00:00,115.45,40.086999999999996,48.803000000000004,29.28 +2020-06-18 17:15:00,111.22,40.056,48.803000000000004,29.28 +2020-06-18 17:30:00,107.59,39.183,48.803000000000004,29.28 +2020-06-18 17:45:00,109.13,37.556999999999995,48.803000000000004,29.28 +2020-06-18 18:00:00,114.28,40.154,51.167,29.28 +2020-06-18 18:15:00,108.94,40.298,51.167,29.28 +2020-06-18 18:30:00,104.66,37.966,51.167,29.28 +2020-06-18 18:45:00,108.51,42.067,51.167,29.28 +2020-06-18 19:00:00,107.19,42.733000000000004,52.486000000000004,29.28 +2020-06-18 19:15:00,97.5,41.736999999999995,52.486000000000004,29.28 +2020-06-18 19:30:00,95.56,40.787,52.486000000000004,29.28 +2020-06-18 19:45:00,94.72,40.857,52.486000000000004,29.28 +2020-06-18 20:00:00,92.52,38.503,59.635,29.28 +2020-06-18 20:15:00,92.24,38.47,59.635,29.28 +2020-06-18 20:30:00,92.21,38.916,59.635,29.28 +2020-06-18 20:45:00,92.12,39.663000000000004,59.635,29.28 +2020-06-18 21:00:00,90.57,37.983000000000004,54.353,29.28 +2020-06-18 21:15:00,89.89,39.894,54.353,29.28 +2020-06-18 21:30:00,85.01,40.857,54.353,29.28 +2020-06-18 21:45:00,85.71,42.0,54.353,29.28 +2020-06-18 22:00:00,80.59,39.469,49.431999999999995,29.28 +2020-06-18 22:15:00,80.6,41.437,49.431999999999995,29.28 +2020-06-18 22:30:00,78.43,36.054,49.431999999999995,29.28 +2020-06-18 22:45:00,78.92,32.741,49.431999999999995,29.28 +2020-06-18 23:00:00,74.17,28.486,42.872,29.28 +2020-06-18 23:15:00,75.08,26.943,42.872,29.28 +2020-06-18 23:30:00,71.55,25.811,42.872,29.28 +2020-06-18 23:45:00,74.47,25.078000000000003,42.872,29.28 +2020-06-19 00:00:00,71.17,22.217,39.819,29.28 +2020-06-19 00:15:00,70.01,23.143,39.819,29.28 +2020-06-19 00:30:00,67.45,22.285999999999998,39.819,29.28 +2020-06-19 00:45:00,69.33,22.254,39.819,29.28 +2020-06-19 01:00:00,66.99,21.705,37.797,29.28 +2020-06-19 01:15:00,71.13,20.305,37.797,29.28 +2020-06-19 01:30:00,76.08,19.335,37.797,29.28 +2020-06-19 01:45:00,76.62,18.707,37.797,29.28 +2020-06-19 02:00:00,72.72,19.19,36.905,29.28 +2020-06-19 02:15:00,76.55,17.572,36.905,29.28 +2020-06-19 02:30:00,75.24,20.678,36.905,29.28 +2020-06-19 02:45:00,72.74,20.775,36.905,29.28 +2020-06-19 03:00:00,70.27,23.093000000000004,37.1,29.28 +2020-06-19 03:15:00,72.1,20.705,37.1,29.28 +2020-06-19 03:30:00,71.55,19.752,37.1,29.28 +2020-06-19 03:45:00,73.4,20.027,37.1,29.28 +2020-06-19 04:00:00,75.24,26.611,37.882,29.28 +2020-06-19 04:15:00,77.24,32.875,37.882,29.28 +2020-06-19 04:30:00,79.93,31.11,37.882,29.28 +2020-06-19 04:45:00,81.23,30.662,37.882,29.28 +2020-06-19 05:00:00,90.71,45.931000000000004,40.777,29.28 +2020-06-19 05:15:00,98.92,57.556000000000004,40.777,29.28 +2020-06-19 05:30:00,104.38,49.518,40.777,29.28 +2020-06-19 05:45:00,106.32,45.928999999999995,40.777,29.28 +2020-06-19 06:00:00,107.95,48.331,55.528,29.28 +2020-06-19 06:15:00,110.49,48.743,55.528,29.28 +2020-06-19 06:30:00,109.88,46.794,55.528,29.28 +2020-06-19 06:45:00,113.13,47.756,55.528,29.28 +2020-06-19 07:00:00,124.83,49.074,67.749,29.28 +2020-06-19 07:15:00,124.36,49.885,67.749,29.28 +2020-06-19 07:30:00,123.58,45.167,67.749,29.28 +2020-06-19 07:45:00,117.62,44.401,67.749,29.28 +2020-06-19 08:00:00,115.83,42.183,57.55,29.28 +2020-06-19 08:15:00,118.6,45.393,57.55,29.28 +2020-06-19 08:30:00,123.82,45.49100000000001,57.55,29.28 +2020-06-19 08:45:00,128.81,47.595,57.55,29.28 +2020-06-19 09:00:00,126.71,40.461999999999996,52.588,29.28 +2020-06-19 09:15:00,114.96,41.42100000000001,52.588,29.28 +2020-06-19 09:30:00,122.02,44.286,52.588,29.28 +2020-06-19 09:45:00,127.81,47.428999999999995,52.588,29.28 +2020-06-19 10:00:00,122.67,41.851000000000006,49.772,29.28 +2020-06-19 10:15:00,122.54,43.483000000000004,49.772,29.28 +2020-06-19 10:30:00,122.79,44.187,49.772,29.28 +2020-06-19 10:45:00,121.18,45.756,49.772,29.28 +2020-06-19 11:00:00,122.52,42.196999999999996,49.226000000000006,29.28 +2020-06-19 11:15:00,124.31,42.438,49.226000000000006,29.28 +2020-06-19 11:30:00,125.71,43.64,49.226000000000006,29.28 +2020-06-19 11:45:00,123.32,44.515,49.226000000000006,29.28 +2020-06-19 12:00:00,114.63,41.446999999999996,45.705,29.28 +2020-06-19 12:15:00,122.04,40.604,45.705,29.28 +2020-06-19 12:30:00,117.45,39.614000000000004,45.705,29.28 +2020-06-19 12:45:00,117.38,40.341,45.705,29.28 +2020-06-19 13:00:00,106.5,41.613,43.133,29.28 +2020-06-19 13:15:00,107.87,43.023,43.133,29.28 +2020-06-19 13:30:00,118.64,42.123999999999995,43.133,29.28 +2020-06-19 13:45:00,120.24,41.25,43.133,29.28 +2020-06-19 14:00:00,114.0,42.461999999999996,41.989,29.28 +2020-06-19 14:15:00,101.38,41.568000000000005,41.989,29.28 +2020-06-19 14:30:00,104.98,41.913000000000004,41.989,29.28 +2020-06-19 14:45:00,100.54,41.845,41.989,29.28 +2020-06-19 15:00:00,102.98,43.575,43.728,29.28 +2020-06-19 15:15:00,95.22,40.839,43.728,29.28 +2020-06-19 15:30:00,100.15,38.366,43.728,29.28 +2020-06-19 15:45:00,103.04,37.007,43.728,29.28 +2020-06-19 16:00:00,102.24,38.91,45.93899999999999,29.28 +2020-06-19 16:15:00,97.18,38.972,45.93899999999999,29.28 +2020-06-19 16:30:00,99.11,38.058,45.93899999999999,29.28 +2020-06-19 16:45:00,103.2,33.641999999999996,45.93899999999999,29.28 +2020-06-19 17:00:00,108.34,38.445,50.488,29.28 +2020-06-19 17:15:00,102.87,38.21,50.488,29.28 +2020-06-19 17:30:00,103.68,37.475,50.488,29.28 +2020-06-19 17:45:00,106.28,35.653,50.488,29.28 +2020-06-19 18:00:00,106.78,38.35,52.408,29.28 +2020-06-19 18:15:00,100.21,37.504,52.408,29.28 +2020-06-19 18:30:00,105.97,35.091,52.408,29.28 +2020-06-19 18:45:00,105.56,39.607,52.408,29.28 +2020-06-19 19:00:00,102.94,41.207,52.736000000000004,29.28 +2020-06-19 19:15:00,96.06,40.876999999999995,52.736000000000004,29.28 +2020-06-19 19:30:00,98.92,39.952,52.736000000000004,29.28 +2020-06-19 19:45:00,97.55,38.978,52.736000000000004,29.28 +2020-06-19 20:00:00,95.78,36.455999999999996,59.68,29.28 +2020-06-19 20:15:00,97.37,37.21,59.68,29.28 +2020-06-19 20:30:00,92.83,37.177,59.68,29.28 +2020-06-19 20:45:00,91.07,37.179,59.68,29.28 +2020-06-19 21:00:00,94.6,36.84,54.343999999999994,29.28 +2020-06-19 21:15:00,92.39,40.45,54.343999999999994,29.28 +2020-06-19 21:30:00,85.76,41.243,54.343999999999994,29.28 +2020-06-19 21:45:00,83.91,42.629,54.343999999999994,29.28 +2020-06-19 22:00:00,82.56,40.035,49.672,29.28 +2020-06-19 22:15:00,84.43,41.754,49.672,29.28 +2020-06-19 22:30:00,80.48,41.489,49.672,29.28 +2020-06-19 22:45:00,74.58,39.236,49.672,29.28 +2020-06-19 23:00:00,68.57,36.621,42.065,29.28 +2020-06-19 23:15:00,75.75,33.433,42.065,29.28 +2020-06-19 23:30:00,75.04,30.408,42.065,29.28 +2020-06-19 23:45:00,71.81,29.502,42.065,29.28 +2020-06-20 00:00:00,66.09,23.177,38.829,29.17 +2020-06-20 00:15:00,61.95,23.165,38.829,29.17 +2020-06-20 00:30:00,69.46,21.93,38.829,29.17 +2020-06-20 00:45:00,70.54,21.221,38.829,29.17 +2020-06-20 01:00:00,69.8,21.002,34.63,29.17 +2020-06-20 01:15:00,64.85,20.109,34.63,29.17 +2020-06-20 01:30:00,62.76,18.302,34.63,29.17 +2020-06-20 01:45:00,68.84,18.891,34.63,29.17 +2020-06-20 02:00:00,66.79,18.442,32.465,29.17 +2020-06-20 02:15:00,62.57,16.019000000000002,32.465,29.17 +2020-06-20 02:30:00,62.89,18.262,32.465,29.17 +2020-06-20 02:45:00,62.21,19.153,32.465,29.17 +2020-06-20 03:00:00,63.7,20.147000000000002,31.925,29.17 +2020-06-20 03:15:00,68.4,16.994,31.925,29.17 +2020-06-20 03:30:00,69.28,16.274,31.925,29.17 +2020-06-20 03:45:00,66.18,18.046,31.925,29.17 +2020-06-20 04:00:00,64.28,22.455,31.309,29.17 +2020-06-20 04:15:00,67.18,27.634,31.309,29.17 +2020-06-20 04:30:00,67.69,24.068,31.309,29.17 +2020-06-20 04:45:00,65.96,23.858,31.309,29.17 +2020-06-20 05:00:00,64.27,29.932,30.323,29.17 +2020-06-20 05:15:00,63.38,29.461,30.323,29.17 +2020-06-20 05:30:00,66.59,23.021,30.323,29.17 +2020-06-20 05:45:00,73.18,24.226,30.323,29.17 +2020-06-20 06:00:00,77.68,38.798,31.438000000000002,29.17 +2020-06-20 06:15:00,75.5,47.883,31.438000000000002,29.17 +2020-06-20 06:30:00,73.46,42.826,31.438000000000002,29.17 +2020-06-20 06:45:00,70.8,40.108000000000004,31.438000000000002,29.17 +2020-06-20 07:00:00,78.74,39.754,34.891999999999996,29.17 +2020-06-20 07:15:00,82.01,39.227,34.891999999999996,29.17 +2020-06-20 07:30:00,82.18,36.159,34.891999999999996,29.17 +2020-06-20 07:45:00,82.18,36.577,34.891999999999996,29.17 +2020-06-20 08:00:00,80.59,35.275,39.608000000000004,29.17 +2020-06-20 08:15:00,79.69,38.524,39.608000000000004,29.17 +2020-06-20 08:30:00,85.25,38.698,39.608000000000004,29.17 +2020-06-20 08:45:00,92.26,41.931000000000004,39.608000000000004,29.17 +2020-06-20 09:00:00,94.83,37.946,40.894,29.17 +2020-06-20 09:15:00,91.28,39.433,40.894,29.17 +2020-06-20 09:30:00,90.28,42.839,40.894,29.17 +2020-06-20 09:45:00,90.39,45.566,40.894,29.17 +2020-06-20 10:00:00,96.46,40.611,39.525,29.17 +2020-06-20 10:15:00,102.27,42.614,39.525,29.17 +2020-06-20 10:30:00,103.51,42.993,39.525,29.17 +2020-06-20 10:45:00,99.42,44.306000000000004,39.525,29.17 +2020-06-20 11:00:00,94.12,40.628,36.718,29.17 +2020-06-20 11:15:00,91.99,41.68600000000001,36.718,29.17 +2020-06-20 11:30:00,90.43,43.083999999999996,36.718,29.17 +2020-06-20 11:45:00,91.18,44.558,36.718,29.17 +2020-06-20 12:00:00,88.9,41.86600000000001,35.688,29.17 +2020-06-20 12:15:00,87.4,41.9,35.688,29.17 +2020-06-20 12:30:00,86.31,40.782,35.688,29.17 +2020-06-20 12:45:00,85.13,42.178999999999995,35.688,29.17 +2020-06-20 13:00:00,84.77,42.562,32.858000000000004,29.17 +2020-06-20 13:15:00,85.22,43.309,32.858000000000004,29.17 +2020-06-20 13:30:00,84.09,42.575,32.858000000000004,29.17 +2020-06-20 13:45:00,82.67,40.41,32.858000000000004,29.17 +2020-06-20 14:00:00,81.43,41.786,31.738000000000003,29.17 +2020-06-20 14:15:00,81.85,39.626,31.738000000000003,29.17 +2020-06-20 14:30:00,81.06,39.414,31.738000000000003,29.17 +2020-06-20 14:45:00,82.67,39.839,31.738000000000003,29.17 +2020-06-20 15:00:00,82.96,42.092,34.35,29.17 +2020-06-20 15:15:00,80.52,40.094,34.35,29.17 +2020-06-20 15:30:00,81.22,37.909,34.35,29.17 +2020-06-20 15:45:00,82.66,35.633,34.35,29.17 +2020-06-20 16:00:00,85.43,39.605,37.522,29.17 +2020-06-20 16:15:00,84.06,38.836999999999996,37.522,29.17 +2020-06-20 16:30:00,83.74,38.161,37.522,29.17 +2020-06-20 16:45:00,84.53,33.751999999999995,37.522,29.17 +2020-06-20 17:00:00,86.97,37.381,42.498000000000005,29.17 +2020-06-20 17:15:00,87.28,35.118,42.498000000000005,29.17 +2020-06-20 17:30:00,88.27,34.24,42.498000000000005,29.17 +2020-06-20 17:45:00,87.85,32.866,42.498000000000005,29.17 +2020-06-20 18:00:00,88.24,36.915,44.701,29.17 +2020-06-20 18:15:00,86.6,37.805,44.701,29.17 +2020-06-20 18:30:00,88.94,36.808,44.701,29.17 +2020-06-20 18:45:00,84.9,37.689,44.701,29.17 +2020-06-20 19:00:00,81.63,37.759,45.727,29.17 +2020-06-20 19:15:00,76.92,36.394,45.727,29.17 +2020-06-20 19:30:00,78.37,36.266999999999996,45.727,29.17 +2020-06-20 19:45:00,75.8,37.018,45.727,29.17 +2020-06-20 20:00:00,74.14,35.438,43.391000000000005,29.17 +2020-06-20 20:15:00,71.76,35.691,43.391000000000005,29.17 +2020-06-20 20:30:00,72.4,34.777,43.391000000000005,29.17 +2020-06-20 20:45:00,71.24,36.609,43.391000000000005,29.17 +2020-06-20 21:00:00,70.11,34.961,41.231,29.17 +2020-06-20 21:15:00,68.91,38.260999999999996,41.231,29.17 +2020-06-20 21:30:00,66.55,39.293,41.231,29.17 +2020-06-20 21:45:00,64.82,40.121,41.231,29.17 +2020-06-20 22:00:00,64.11,37.602,40.798,29.17 +2020-06-20 22:15:00,62.69,39.724000000000004,40.798,29.17 +2020-06-20 22:30:00,62.16,39.457,40.798,29.17 +2020-06-20 22:45:00,58.77,37.674,40.798,29.17 +2020-06-20 23:00:00,54.05,34.529,34.402,29.17 +2020-06-20 23:15:00,54.66,31.689,34.402,29.17 +2020-06-20 23:30:00,53.59,30.991,34.402,29.17 +2020-06-20 23:45:00,53.51,30.281999999999996,34.402,29.17 +2020-06-21 00:00:00,51.37,24.479,30.171,29.17 +2020-06-21 00:15:00,51.6,23.31,30.171,29.17 +2020-06-21 00:30:00,51.28,21.910999999999998,30.171,29.17 +2020-06-21 00:45:00,50.78,21.142,30.171,29.17 +2020-06-21 01:00:00,47.84,21.191,27.15,29.17 +2020-06-21 01:15:00,50.1,20.225,27.15,29.17 +2020-06-21 01:30:00,49.76,18.312,27.15,29.17 +2020-06-21 01:45:00,49.33,18.498,27.15,29.17 +2020-06-21 02:00:00,48.37,18.084,25.403000000000002,29.17 +2020-06-21 02:15:00,48.73,16.308,25.403000000000002,29.17 +2020-06-21 02:30:00,48.89,18.782,25.403000000000002,29.17 +2020-06-21 02:45:00,48.92,19.419,25.403000000000002,29.17 +2020-06-21 03:00:00,48.71,21.072,23.386999999999997,29.17 +2020-06-21 03:15:00,49.4,18.149,23.386999999999997,29.17 +2020-06-21 03:30:00,50.71,16.795,23.386999999999997,29.17 +2020-06-21 03:45:00,50.44,17.798,23.386999999999997,29.17 +2020-06-21 04:00:00,49.72,22.112,23.941999999999997,29.17 +2020-06-21 04:15:00,50.86,26.76,23.941999999999997,29.17 +2020-06-21 04:30:00,51.2,24.508000000000003,23.941999999999997,29.17 +2020-06-21 04:45:00,52.17,23.851999999999997,23.941999999999997,29.17 +2020-06-21 05:00:00,52.67,29.799,23.026,29.17 +2020-06-21 05:15:00,53.27,28.311,23.026,29.17 +2020-06-21 05:30:00,54.64,21.53,23.026,29.17 +2020-06-21 05:45:00,56.86,22.523000000000003,23.026,29.17 +2020-06-21 06:00:00,58.47,34.766999999999996,23.223000000000003,29.17 +2020-06-21 06:15:00,59.86,44.56100000000001,23.223000000000003,29.17 +2020-06-21 06:30:00,61.63,38.775,23.223000000000003,29.17 +2020-06-21 06:45:00,63.3,35.046,23.223000000000003,29.17 +2020-06-21 07:00:00,66.04,35.114000000000004,24.968000000000004,29.17 +2020-06-21 07:15:00,66.82,32.942,24.968000000000004,29.17 +2020-06-21 07:30:00,67.37,31.054000000000002,24.968000000000004,29.17 +2020-06-21 07:45:00,67.58,31.428,24.968000000000004,29.17 +2020-06-21 08:00:00,66.37,30.988000000000003,29.131,29.17 +2020-06-21 08:15:00,68.59,35.423,29.131,29.17 +2020-06-21 08:30:00,65.93,36.542,29.131,29.17 +2020-06-21 08:45:00,64.07,39.815,29.131,29.17 +2020-06-21 09:00:00,66.26,35.691,29.904,29.17 +2020-06-21 09:15:00,65.59,36.727,29.904,29.17 +2020-06-21 09:30:00,63.46,40.547,29.904,29.17 +2020-06-21 09:45:00,64.99,44.266000000000005,29.904,29.17 +2020-06-21 10:00:00,69.22,39.995,28.943,29.17 +2020-06-21 10:15:00,70.76,42.17,28.943,29.17 +2020-06-21 10:30:00,72.73,42.803000000000004,28.943,29.17 +2020-06-21 10:45:00,73.48,45.013999999999996,28.943,29.17 +2020-06-21 11:00:00,70.43,41.044,31.682,29.17 +2020-06-21 11:15:00,67.81,41.674,31.682,29.17 +2020-06-21 11:30:00,68.94,43.528999999999996,31.682,29.17 +2020-06-21 11:45:00,70.2,45.287,31.682,29.17 +2020-06-21 12:00:00,72.15,43.645,27.315,29.17 +2020-06-21 12:15:00,71.91,43.158,27.315,29.17 +2020-06-21 12:30:00,70.77,42.159,27.315,29.17 +2020-06-21 12:45:00,71.96,42.878,27.315,29.17 +2020-06-21 13:00:00,67.38,42.913000000000004,23.894000000000002,29.17 +2020-06-21 13:15:00,68.77,43.246,23.894000000000002,29.17 +2020-06-21 13:30:00,67.21,41.412,23.894000000000002,29.17 +2020-06-21 13:45:00,64.71,40.32,23.894000000000002,29.17 +2020-06-21 14:00:00,59.95,42.907,21.148000000000003,29.17 +2020-06-21 14:15:00,61.83,41.231,21.148000000000003,29.17 +2020-06-21 14:30:00,64.05,39.84,21.148000000000003,29.17 +2020-06-21 14:45:00,66.51,39.191,21.148000000000003,29.17 +2020-06-21 15:00:00,65.17,41.54,21.229,29.17 +2020-06-21 15:15:00,65.5,38.769,21.229,29.17 +2020-06-21 15:30:00,67.43,36.427,21.229,29.17 +2020-06-21 15:45:00,68.84,34.457,21.229,29.17 +2020-06-21 16:00:00,69.3,36.935,25.037,29.17 +2020-06-21 16:15:00,70.82,36.345,25.037,29.17 +2020-06-21 16:30:00,76.2,36.694,25.037,29.17 +2020-06-21 16:45:00,75.99,32.335,25.037,29.17 +2020-06-21 17:00:00,79.94,36.341,37.11,29.17 +2020-06-21 17:15:00,79.54,35.556,37.11,29.17 +2020-06-21 17:30:00,79.33,35.486,37.11,29.17 +2020-06-21 17:45:00,79.29,34.625,37.11,29.17 +2020-06-21 18:00:00,82.67,39.243,42.215,29.17 +2020-06-21 18:15:00,79.05,39.774,42.215,29.17 +2020-06-21 18:30:00,78.46,38.423,42.215,29.17 +2020-06-21 18:45:00,78.31,39.51,42.215,29.17 +2020-06-21 19:00:00,79.89,41.713,44.383,29.17 +2020-06-21 19:15:00,78.41,39.275,44.383,29.17 +2020-06-21 19:30:00,76.51,38.885999999999996,44.383,29.17 +2020-06-21 19:45:00,76.7,39.255,44.383,29.17 +2020-06-21 20:00:00,77.36,37.827,43.426,29.17 +2020-06-21 20:15:00,76.94,37.992,43.426,29.17 +2020-06-21 20:30:00,78.36,37.949,43.426,29.17 +2020-06-21 20:45:00,78.33,38.084,43.426,29.17 +2020-06-21 21:00:00,77.45,36.18,42.265,29.17 +2020-06-21 21:15:00,76.37,39.157,42.265,29.17 +2020-06-21 21:30:00,74.61,39.539,42.265,29.17 +2020-06-21 21:45:00,74.02,40.735,42.265,29.17 +2020-06-21 22:00:00,72.94,40.181,42.26,29.17 +2020-06-21 22:15:00,71.13,40.609,42.26,29.17 +2020-06-21 22:30:00,69.5,39.675,42.26,29.17 +2020-06-21 22:45:00,73.05,36.58,42.26,29.17 +2020-06-21 23:00:00,65.27,32.983000000000004,36.609,29.17 +2020-06-21 23:15:00,66.55,31.525,36.609,29.17 +2020-06-21 23:30:00,65.95,30.346,36.609,29.17 +2020-06-21 23:45:00,64.51,29.828000000000003,36.609,29.17 +2020-06-22 00:00:00,62.06,26.113000000000003,34.611,29.28 +2020-06-22 00:15:00,63.43,25.878,34.611,29.28 +2020-06-22 00:30:00,63.24,24.111,34.611,29.28 +2020-06-22 00:45:00,62.85,22.93,34.611,29.28 +2020-06-22 01:00:00,61.06,23.374000000000002,33.552,29.28 +2020-06-22 01:15:00,62.06,22.379,33.552,29.28 +2020-06-22 01:30:00,62.07,20.820999999999998,33.552,29.28 +2020-06-22 01:45:00,62.34,20.910999999999998,33.552,29.28 +2020-06-22 02:00:00,61.38,20.945,32.351,29.28 +2020-06-22 02:15:00,62.36,18.246,32.351,29.28 +2020-06-22 02:30:00,62.99,20.894000000000002,32.351,29.28 +2020-06-22 02:45:00,69.91,21.36,32.351,29.28 +2020-06-22 03:00:00,71.83,23.574,30.793000000000003,29.28 +2020-06-22 03:15:00,74.38,21.448,30.793000000000003,29.28 +2020-06-22 03:30:00,68.44,20.76,30.793000000000003,29.28 +2020-06-22 03:45:00,72.17,21.3,30.793000000000003,29.28 +2020-06-22 04:00:00,73.67,28.855999999999998,31.274,29.28 +2020-06-22 04:15:00,81.48,36.568000000000005,31.274,29.28 +2020-06-22 04:30:00,85.31,33.944,31.274,29.28 +2020-06-22 04:45:00,87.89,33.66,31.274,29.28 +2020-06-22 05:00:00,90.15,47.393,37.75,29.28 +2020-06-22 05:15:00,92.28,57.013000000000005,37.75,29.28 +2020-06-22 05:30:00,98.06,48.794,37.75,29.28 +2020-06-22 05:45:00,104.24,46.501000000000005,37.75,29.28 +2020-06-22 06:00:00,114.07,47.684,55.36,29.28 +2020-06-22 06:15:00,113.59,47.718999999999994,55.36,29.28 +2020-06-22 06:30:00,120.64,46.295,55.36,29.28 +2020-06-22 06:45:00,117.35,48.265,55.36,29.28 +2020-06-22 07:00:00,125.32,48.82,65.87,29.28 +2020-06-22 07:15:00,124.38,48.982,65.87,29.28 +2020-06-22 07:30:00,123.8,46.201,65.87,29.28 +2020-06-22 07:45:00,120.42,46.763999999999996,65.87,29.28 +2020-06-22 08:00:00,127.99,43.946999999999996,55.695,29.28 +2020-06-22 08:15:00,124.81,47.11,55.695,29.28 +2020-06-22 08:30:00,122.97,47.053000000000004,55.695,29.28 +2020-06-22 08:45:00,126.89,50.353,55.695,29.28 +2020-06-22 09:00:00,125.76,45.153999999999996,50.881,29.28 +2020-06-22 09:15:00,128.65,44.243,50.881,29.28 +2020-06-22 09:30:00,129.68,47.093,50.881,29.28 +2020-06-22 09:45:00,120.54,48.583999999999996,50.881,29.28 +2020-06-22 10:00:00,114.39,44.678999999999995,49.138000000000005,29.28 +2020-06-22 10:15:00,122.56,46.699,49.138000000000005,29.28 +2020-06-22 10:30:00,122.96,46.832,49.138000000000005,29.28 +2020-06-22 10:45:00,125.29,47.528,49.138000000000005,29.28 +2020-06-22 11:00:00,120.65,43.623000000000005,49.178000000000004,29.28 +2020-06-22 11:15:00,114.96,44.631,49.178000000000004,29.28 +2020-06-22 11:30:00,112.14,47.236000000000004,49.178000000000004,29.28 +2020-06-22 11:45:00,104.36,49.468999999999994,49.178000000000004,29.28 +2020-06-22 12:00:00,104.38,46.236000000000004,47.698,29.28 +2020-06-22 12:15:00,103.64,45.858000000000004,47.698,29.28 +2020-06-22 12:30:00,103.64,43.793,47.698,29.28 +2020-06-22 12:45:00,102.45,44.586999999999996,47.698,29.28 +2020-06-22 13:00:00,96.63,45.56100000000001,48.104,29.28 +2020-06-22 13:15:00,99.66,44.949,48.104,29.28 +2020-06-22 13:30:00,103.52,43.265,48.104,29.28 +2020-06-22 13:45:00,107.28,43.06399999999999,48.104,29.28 +2020-06-22 14:00:00,103.1,44.723,48.53,29.28 +2020-06-22 14:15:00,98.24,43.601000000000006,48.53,29.28 +2020-06-22 14:30:00,97.96,41.998999999999995,48.53,29.28 +2020-06-22 14:45:00,98.66,43.403,48.53,29.28 +2020-06-22 15:00:00,96.96,45.501000000000005,49.351000000000006,29.28 +2020-06-22 15:15:00,95.96,42.066,49.351000000000006,29.28 +2020-06-22 15:30:00,103.76,40.439,49.351000000000006,29.28 +2020-06-22 15:45:00,101.27,37.955999999999996,49.351000000000006,29.28 +2020-06-22 16:00:00,100.46,41.551,51.44,29.28 +2020-06-22 16:15:00,102.13,40.983999999999995,51.44,29.28 +2020-06-22 16:30:00,101.46,40.643,51.44,29.28 +2020-06-22 16:45:00,101.72,36.227,51.44,29.28 +2020-06-22 17:00:00,104.77,39.12,56.868,29.28 +2020-06-22 17:15:00,101.5,38.658,56.868,29.28 +2020-06-22 17:30:00,104.47,38.171,56.868,29.28 +2020-06-22 17:45:00,106.24,36.828,56.868,29.28 +2020-06-22 18:00:00,107.49,40.416,57.229,29.28 +2020-06-22 18:15:00,104.01,38.998000000000005,57.229,29.28 +2020-06-22 18:30:00,102.52,36.928000000000004,57.229,29.28 +2020-06-22 18:45:00,102.38,41.181000000000004,57.229,29.28 +2020-06-22 19:00:00,100.87,43.022,57.744,29.28 +2020-06-22 19:15:00,100.34,41.828,57.744,29.28 +2020-06-22 19:30:00,96.04,41.091,57.744,29.28 +2020-06-22 19:45:00,97.08,40.805,57.744,29.28 +2020-06-22 20:00:00,93.07,37.99,66.05199999999999,29.28 +2020-06-22 20:15:00,93.95,39.416,66.05199999999999,29.28 +2020-06-22 20:30:00,95.77,39.804,66.05199999999999,29.28 +2020-06-22 20:45:00,99.45,40.259,66.05199999999999,29.28 +2020-06-22 21:00:00,94.07,37.760999999999996,59.396,29.28 +2020-06-22 21:15:00,93.7,41.123999999999995,59.396,29.28 +2020-06-22 21:30:00,90.26,41.853,59.396,29.28 +2020-06-22 21:45:00,88.36,42.81,59.396,29.28 +2020-06-22 22:00:00,84.6,40.099000000000004,53.06,29.28 +2020-06-22 22:15:00,85.31,42.441,53.06,29.28 +2020-06-22 22:30:00,82.83,36.732,53.06,29.28 +2020-06-22 22:45:00,81.6,33.37,53.06,29.28 +2020-06-22 23:00:00,76.8,29.838,46.148,29.28 +2020-06-22 23:15:00,77.46,26.904,46.148,29.28 +2020-06-22 23:30:00,78.9,25.831999999999997,46.148,29.28 +2020-06-22 23:45:00,78.36,24.899,46.148,29.28 +2020-06-23 00:00:00,73.53,23.746,44.625,29.28 +2020-06-23 00:15:00,75.33,24.444000000000003,44.625,29.28 +2020-06-23 00:30:00,74.92,23.34,44.625,29.28 +2020-06-23 00:45:00,74.6,22.901,44.625,29.28 +2020-06-23 01:00:00,73.27,22.811999999999998,41.733000000000004,29.28 +2020-06-23 01:15:00,75.07,21.89,41.733000000000004,29.28 +2020-06-23 01:30:00,73.73,20.209,41.733000000000004,29.28 +2020-06-23 01:45:00,74.21,19.797,41.733000000000004,29.28 +2020-06-23 02:00:00,73.89,19.355999999999998,39.872,29.28 +2020-06-23 02:15:00,73.43,17.804000000000002,39.872,29.28 +2020-06-23 02:30:00,80.85,20.026,39.872,29.28 +2020-06-23 02:45:00,82.26,20.824,39.872,29.28 +2020-06-23 03:00:00,78.93,22.423000000000002,38.711,29.28 +2020-06-23 03:15:00,75.46,21.189,38.711,29.28 +2020-06-23 03:30:00,78.81,20.5,38.711,29.28 +2020-06-23 03:45:00,76.4,19.961,38.711,29.28 +2020-06-23 04:00:00,84.82,26.201,39.823,29.28 +2020-06-23 04:15:00,90.66,33.869,39.823,29.28 +2020-06-23 04:30:00,92.85,31.098000000000003,39.823,29.28 +2020-06-23 04:45:00,92.53,31.357,39.823,29.28 +2020-06-23 05:00:00,96.07,46.823,43.228,29.28 +2020-06-23 05:15:00,98.92,56.934,43.228,29.28 +2020-06-23 05:30:00,106.98,48.886,43.228,29.28 +2020-06-23 05:45:00,113.0,45.909,43.228,29.28 +2020-06-23 06:00:00,118.57,48.091,54.316,29.28 +2020-06-23 06:15:00,120.37,48.391999999999996,54.316,29.28 +2020-06-23 06:30:00,119.5,46.638999999999996,54.316,29.28 +2020-06-23 06:45:00,123.82,47.731,54.316,29.28 +2020-06-23 07:00:00,124.88,48.418,65.758,29.28 +2020-06-23 07:15:00,122.94,48.336000000000006,65.758,29.28 +2020-06-23 07:30:00,120.91,45.54,65.758,29.28 +2020-06-23 07:45:00,125.1,45.174,65.758,29.28 +2020-06-23 08:00:00,122.4,42.302,57.983000000000004,29.28 +2020-06-23 08:15:00,118.74,44.994,57.983000000000004,29.28 +2020-06-23 08:30:00,118.28,45.086000000000006,57.983000000000004,29.28 +2020-06-23 08:45:00,122.7,47.455,57.983000000000004,29.28 +2020-06-23 09:00:00,122.76,42.547,52.653,29.28 +2020-06-23 09:15:00,122.01,41.583999999999996,52.653,29.28 +2020-06-23 09:30:00,120.53,45.15,52.653,29.28 +2020-06-23 09:45:00,118.95,47.977,52.653,29.28 +2020-06-23 10:00:00,130.1,42.687,51.408,29.28 +2020-06-23 10:15:00,123.77,44.523,51.408,29.28 +2020-06-23 10:30:00,123.38,44.691,51.408,29.28 +2020-06-23 10:45:00,116.88,46.407,51.408,29.28 +2020-06-23 11:00:00,116.32,42.581,51.913000000000004,29.28 +2020-06-23 11:15:00,111.31,43.983000000000004,51.913000000000004,29.28 +2020-06-23 11:30:00,115.49,45.371,51.913000000000004,29.28 +2020-06-23 11:45:00,107.36,47.188,51.913000000000004,29.28 +2020-06-23 12:00:00,107.78,43.729,49.508,29.28 +2020-06-23 12:15:00,112.97,43.67,49.508,29.28 +2020-06-23 12:30:00,115.46,42.479,49.508,29.28 +2020-06-23 12:45:00,111.06,43.953,49.508,29.28 +2020-06-23 13:00:00,110.37,44.533,50.007,29.28 +2020-06-23 13:15:00,106.59,45.705,50.007,29.28 +2020-06-23 13:30:00,108.56,44.053999999999995,50.007,29.28 +2020-06-23 13:45:00,117.29,42.903,50.007,29.28 +2020-06-23 14:00:00,107.17,45.04,49.778999999999996,29.28 +2020-06-23 14:15:00,109.31,43.724,49.778999999999996,29.28 +2020-06-23 14:30:00,107.16,42.458999999999996,49.778999999999996,29.28 +2020-06-23 14:45:00,97.6,43.075,49.778999999999996,29.28 +2020-06-23 15:00:00,108.88,45.023,51.559,29.28 +2020-06-23 15:15:00,109.4,42.522,51.559,29.28 +2020-06-23 15:30:00,106.06,40.688,51.559,29.28 +2020-06-23 15:45:00,108.71,38.524,51.559,29.28 +2020-06-23 16:00:00,110.94,41.452,53.531000000000006,29.28 +2020-06-23 16:15:00,110.74,40.99100000000001,53.531000000000006,29.28 +2020-06-23 16:30:00,113.66,40.326,53.531000000000006,29.28 +2020-06-23 16:45:00,109.97,36.621,53.531000000000006,29.28 +2020-06-23 17:00:00,116.03,39.773,59.497,29.28 +2020-06-23 17:15:00,115.14,39.727,59.497,29.28 +2020-06-23 17:30:00,117.22,38.826,59.497,29.28 +2020-06-23 17:45:00,112.66,37.13,59.497,29.28 +2020-06-23 18:00:00,114.14,39.775,59.861999999999995,29.28 +2020-06-23 18:15:00,114.54,39.8,59.861999999999995,29.28 +2020-06-23 18:30:00,116.69,37.45,59.861999999999995,29.28 +2020-06-23 18:45:00,112.08,41.543,59.861999999999995,29.28 +2020-06-23 19:00:00,104.05,42.224,60.989,29.28 +2020-06-23 19:15:00,100.72,41.187,60.989,29.28 +2020-06-23 19:30:00,98.01,40.196999999999996,60.989,29.28 +2020-06-23 19:45:00,97.06,40.241,60.989,29.28 +2020-06-23 20:00:00,96.0,37.812,68.35600000000001,29.28 +2020-06-23 20:15:00,96.1,37.766,68.35600000000001,29.28 +2020-06-23 20:30:00,95.0,38.244,68.35600000000001,29.28 +2020-06-23 20:45:00,98.48,39.116,68.35600000000001,29.28 +2020-06-23 21:00:00,95.1,37.458,59.251000000000005,29.28 +2020-06-23 21:15:00,93.78,39.403,59.251000000000005,29.28 +2020-06-23 21:30:00,89.52,40.253,59.251000000000005,29.28 +2020-06-23 21:45:00,88.7,41.42,59.251000000000005,29.28 +2020-06-23 22:00:00,83.01,38.971,54.736999999999995,29.28 +2020-06-23 22:15:00,84.33,40.971000000000004,54.736999999999995,29.28 +2020-06-23 22:30:00,82.74,35.55,54.736999999999995,29.28 +2020-06-23 22:45:00,81.15,32.186,54.736999999999995,29.28 +2020-06-23 23:00:00,78.29,27.874000000000002,46.806999999999995,29.28 +2020-06-23 23:15:00,77.68,26.494,46.806999999999995,29.28 +2020-06-23 23:30:00,76.77,25.414,46.806999999999995,29.28 +2020-06-23 23:45:00,75.36,24.633000000000003,46.806999999999995,29.28 +2020-06-24 00:00:00,72.75,23.675,43.824,29.28 +2020-06-24 00:15:00,73.59,24.374000000000002,43.824,29.28 +2020-06-24 00:30:00,73.6,23.273000000000003,43.824,29.28 +2020-06-24 00:45:00,73.92,22.840999999999998,43.824,29.28 +2020-06-24 01:00:00,72.73,22.764,39.86,29.28 +2020-06-24 01:15:00,73.28,21.828000000000003,39.86,29.28 +2020-06-24 01:30:00,72.51,20.145,39.86,29.28 +2020-06-24 01:45:00,73.33,19.726,39.86,29.28 +2020-06-24 02:00:00,77.46,19.287,37.931999999999995,29.28 +2020-06-24 02:15:00,82.15,17.739,37.931999999999995,29.28 +2020-06-24 02:30:00,81.13,19.952,37.931999999999995,29.28 +2020-06-24 02:45:00,74.48,20.756999999999998,37.931999999999995,29.28 +2020-06-24 03:00:00,77.13,22.351999999999997,37.579,29.28 +2020-06-24 03:15:00,76.09,21.122,37.579,29.28 +2020-06-24 03:30:00,76.54,20.439,37.579,29.28 +2020-06-24 03:45:00,76.21,19.92,37.579,29.28 +2020-06-24 04:00:00,84.58,26.114,37.931999999999995,29.28 +2020-06-24 04:15:00,88.31,33.742,37.931999999999995,29.28 +2020-06-24 04:30:00,92.93,30.961,37.931999999999995,29.28 +2020-06-24 04:45:00,91.92,31.218000000000004,37.931999999999995,29.28 +2020-06-24 05:00:00,95.34,46.599,40.942,29.28 +2020-06-24 05:15:00,98.24,56.599,40.942,29.28 +2020-06-24 05:30:00,101.16,48.613,40.942,29.28 +2020-06-24 05:45:00,103.36,45.676,40.942,29.28 +2020-06-24 06:00:00,111.68,47.864,56.516999999999996,29.28 +2020-06-24 06:15:00,116.87,48.153999999999996,56.516999999999996,29.28 +2020-06-24 06:30:00,116.87,46.42100000000001,56.516999999999996,29.28 +2020-06-24 06:45:00,117.03,47.542,56.516999999999996,29.28 +2020-06-24 07:00:00,116.69,48.217,71.707,29.28 +2020-06-24 07:15:00,116.48,48.155,71.707,29.28 +2020-06-24 07:30:00,116.84,45.356,71.707,29.28 +2020-06-24 07:45:00,112.07,45.023,71.707,29.28 +2020-06-24 08:00:00,109.37,42.161,61.17,29.28 +2020-06-24 08:15:00,108.4,44.878,61.17,29.28 +2020-06-24 08:30:00,114.26,44.963,61.17,29.28 +2020-06-24 08:45:00,114.72,47.333,61.17,29.28 +2020-06-24 09:00:00,112.86,42.42,57.282,29.28 +2020-06-24 09:15:00,108.55,41.458999999999996,57.282,29.28 +2020-06-24 09:30:00,118.09,45.023,57.282,29.28 +2020-06-24 09:45:00,123.97,47.863,57.282,29.28 +2020-06-24 10:00:00,122.12,42.582,54.026,29.28 +2020-06-24 10:15:00,117.01,44.424,54.026,29.28 +2020-06-24 10:30:00,123.16,44.593,54.026,29.28 +2020-06-24 10:45:00,121.18,46.31399999999999,54.026,29.28 +2020-06-24 11:00:00,123.52,42.483999999999995,54.277,29.28 +2020-06-24 11:15:00,117.69,43.891000000000005,54.277,29.28 +2020-06-24 11:30:00,115.43,45.269,54.277,29.28 +2020-06-24 11:45:00,119.14,47.083999999999996,54.277,29.28 +2020-06-24 12:00:00,124.99,43.653,52.552,29.28 +2020-06-24 12:15:00,127.32,43.593,52.552,29.28 +2020-06-24 12:30:00,126.8,42.385,52.552,29.28 +2020-06-24 12:45:00,117.73,43.86,52.552,29.28 +2020-06-24 13:00:00,101.49,44.428999999999995,52.111999999999995,29.28 +2020-06-24 13:15:00,105.29,45.601000000000006,52.111999999999995,29.28 +2020-06-24 13:30:00,116.19,43.958,52.111999999999995,29.28 +2020-06-24 13:45:00,110.54,42.81100000000001,52.111999999999995,29.28 +2020-06-24 14:00:00,99.9,44.958999999999996,52.066,29.28 +2020-06-24 14:15:00,102.05,43.643,52.066,29.28 +2020-06-24 14:30:00,110.45,42.358000000000004,52.066,29.28 +2020-06-24 14:45:00,109.15,42.979,52.066,29.28 +2020-06-24 15:00:00,108.94,44.952,52.523999999999994,29.28 +2020-06-24 15:15:00,101.7,42.445,52.523999999999994,29.28 +2020-06-24 15:30:00,107.34,40.605,52.523999999999994,29.28 +2020-06-24 15:45:00,106.1,38.431999999999995,52.523999999999994,29.28 +2020-06-24 16:00:00,104.67,41.382,54.101000000000006,29.28 +2020-06-24 16:15:00,105.58,40.921,54.101000000000006,29.28 +2020-06-24 16:30:00,112.42,40.273,54.101000000000006,29.28 +2020-06-24 16:45:00,110.04,36.552,54.101000000000006,29.28 +2020-06-24 17:00:00,111.19,39.722,58.155,29.28 +2020-06-24 17:15:00,108.5,39.675,58.155,29.28 +2020-06-24 17:30:00,112.41,38.77,58.155,29.28 +2020-06-24 17:45:00,117.25,37.063,58.155,29.28 +2020-06-24 18:00:00,116.0,39.716,60.205,29.28 +2020-06-24 18:15:00,111.3,39.717,60.205,29.28 +2020-06-24 18:30:00,108.34,37.365,60.205,29.28 +2020-06-24 18:45:00,107.8,41.457,60.205,29.28 +2020-06-24 19:00:00,103.84,42.141000000000005,61.568999999999996,29.28 +2020-06-24 19:15:00,101.09,41.096000000000004,61.568999999999996,29.28 +2020-06-24 19:30:00,102.04,40.098,61.568999999999996,29.28 +2020-06-24 19:45:00,97.68,40.138000000000005,61.568999999999996,29.28 +2020-06-24 20:00:00,95.61,37.694,68.145,29.28 +2020-06-24 20:15:00,94.76,37.645,68.145,29.28 +2020-06-24 20:30:00,94.42,38.129,68.145,29.28 +2020-06-24 20:45:00,94.83,39.023,68.145,29.28 +2020-06-24 21:00:00,96.89,37.37,59.696000000000005,29.28 +2020-06-24 21:15:00,94.06,39.32,59.696000000000005,29.28 +2020-06-24 21:30:00,90.13,40.148,59.696000000000005,29.28 +2020-06-24 21:45:00,88.79,41.318000000000005,59.696000000000005,29.28 +2020-06-24 22:00:00,84.68,38.884,54.861999999999995,29.28 +2020-06-24 22:15:00,87.11,40.889,54.861999999999995,29.28 +2020-06-24 22:30:00,84.09,35.459,54.861999999999995,29.28 +2020-06-24 22:45:00,84.16,32.086,54.861999999999995,29.28 +2020-06-24 23:00:00,79.54,27.765,45.568000000000005,29.28 +2020-06-24 23:15:00,76.73,26.414,45.568000000000005,29.28 +2020-06-24 23:30:00,75.86,25.346,45.568000000000005,29.28 +2020-06-24 23:45:00,78.52,24.555999999999997,45.568000000000005,29.28 +2020-06-25 00:00:00,75.55,23.608,40.181,29.28 +2020-06-25 00:15:00,75.77,24.307,40.181,29.28 +2020-06-25 00:30:00,72.44,23.21,40.181,29.28 +2020-06-25 00:45:00,75.39,22.784000000000002,40.181,29.28 +2020-06-25 01:00:00,72.29,22.72,38.296,29.28 +2020-06-25 01:15:00,74.01,21.771,38.296,29.28 +2020-06-25 01:30:00,72.67,20.085,38.296,29.28 +2020-06-25 01:45:00,72.74,19.66,38.296,29.28 +2020-06-25 02:00:00,73.25,19.224,36.575,29.28 +2020-06-25 02:15:00,74.48,17.678,36.575,29.28 +2020-06-25 02:30:00,74.61,19.884,36.575,29.28 +2020-06-25 02:45:00,74.51,20.693,36.575,29.28 +2020-06-25 03:00:00,75.05,22.285,36.394,29.28 +2020-06-25 03:15:00,76.2,21.059,36.394,29.28 +2020-06-25 03:30:00,83.01,20.384,36.394,29.28 +2020-06-25 03:45:00,85.84,19.883,36.394,29.28 +2020-06-25 04:00:00,80.84,26.031999999999996,37.207,29.28 +2020-06-25 04:15:00,81.65,33.622,37.207,29.28 +2020-06-25 04:30:00,84.58,30.829,37.207,29.28 +2020-06-25 04:45:00,88.67,31.086,37.207,29.28 +2020-06-25 05:00:00,97.63,46.383,40.713,29.28 +2020-06-25 05:15:00,98.52,56.276,40.713,29.28 +2020-06-25 05:30:00,107.02,48.352,40.713,29.28 +2020-06-25 05:45:00,107.47,45.452,40.713,29.28 +2020-06-25 06:00:00,115.01,47.646,50.952,29.28 +2020-06-25 06:15:00,111.77,47.926,50.952,29.28 +2020-06-25 06:30:00,117.15,46.214,50.952,29.28 +2020-06-25 06:45:00,118.68,47.363,50.952,29.28 +2020-06-25 07:00:00,115.38,48.026,64.88,29.28 +2020-06-25 07:15:00,114.08,47.983000000000004,64.88,29.28 +2020-06-25 07:30:00,113.71,45.181999999999995,64.88,29.28 +2020-06-25 07:45:00,114.99,44.88,64.88,29.28 +2020-06-25 08:00:00,113.05,42.027,55.133,29.28 +2020-06-25 08:15:00,112.54,44.771,55.133,29.28 +2020-06-25 08:30:00,110.54,44.848,55.133,29.28 +2020-06-25 08:45:00,116.65,47.22,55.133,29.28 +2020-06-25 09:00:00,118.67,42.302,48.912,29.28 +2020-06-25 09:15:00,119.01,41.343,48.912,29.28 +2020-06-25 09:30:00,116.77,44.903999999999996,48.912,29.28 +2020-06-25 09:45:00,122.25,47.756,48.912,29.28 +2020-06-25 10:00:00,123.53,42.483000000000004,45.968999999999994,29.28 +2020-06-25 10:15:00,129.33,44.333,45.968999999999994,29.28 +2020-06-25 10:30:00,122.87,44.501000000000005,45.968999999999994,29.28 +2020-06-25 10:45:00,119.98,46.227,45.968999999999994,29.28 +2020-06-25 11:00:00,120.33,42.395,44.067,29.28 +2020-06-25 11:15:00,118.71,43.806000000000004,44.067,29.28 +2020-06-25 11:30:00,112.17,45.172,44.067,29.28 +2020-06-25 11:45:00,113.06,46.986999999999995,44.067,29.28 +2020-06-25 12:00:00,123.41,43.581,41.501000000000005,29.28 +2020-06-25 12:15:00,127.98,43.521,41.501000000000005,29.28 +2020-06-25 12:30:00,129.51,42.29600000000001,41.501000000000005,29.28 +2020-06-25 12:45:00,125.72,43.772,41.501000000000005,29.28 +2020-06-25 13:00:00,119.23,44.33,41.117,29.28 +2020-06-25 13:15:00,120.12,45.5,41.117,29.28 +2020-06-25 13:30:00,125.64,43.867,41.117,29.28 +2020-06-25 13:45:00,128.35,42.726000000000006,41.117,29.28 +2020-06-25 14:00:00,128.81,44.882,41.492,29.28 +2020-06-25 14:15:00,125.95,43.567,41.492,29.28 +2020-06-25 14:30:00,120.48,42.263999999999996,41.492,29.28 +2020-06-25 14:45:00,120.88,42.89,41.492,29.28 +2020-06-25 15:00:00,123.63,44.88399999999999,43.711999999999996,29.28 +2020-06-25 15:15:00,121.05,42.37,43.711999999999996,29.28 +2020-06-25 15:30:00,122.08,40.525999999999996,43.711999999999996,29.28 +2020-06-25 15:45:00,120.83,38.344,43.711999999999996,29.28 +2020-06-25 16:00:00,127.83,41.317,45.446000000000005,29.28 +2020-06-25 16:15:00,122.67,40.853,45.446000000000005,29.28 +2020-06-25 16:30:00,122.29,40.224000000000004,45.446000000000005,29.28 +2020-06-25 16:45:00,126.06,36.488,45.446000000000005,29.28 +2020-06-25 17:00:00,123.94,39.675,48.803000000000004,29.28 +2020-06-25 17:15:00,123.31,39.628,48.803000000000004,29.28 +2020-06-25 17:30:00,120.34,38.719,48.803000000000004,29.28 +2020-06-25 17:45:00,114.21,37.001,48.803000000000004,29.28 +2020-06-25 18:00:00,118.99,39.661,51.167,29.28 +2020-06-25 18:15:00,118.56,39.641,51.167,29.28 +2020-06-25 18:30:00,119.87,37.286,51.167,29.28 +2020-06-25 18:45:00,112.47,41.376000000000005,51.167,29.28 +2020-06-25 19:00:00,107.94,42.06399999999999,52.486000000000004,29.28 +2020-06-25 19:15:00,104.55,41.011,52.486000000000004,29.28 +2020-06-25 19:30:00,102.42,40.006,52.486000000000004,29.28 +2020-06-25 19:45:00,103.35,40.04,52.486000000000004,29.28 +2020-06-25 20:00:00,97.55,37.582,59.635,29.28 +2020-06-25 20:15:00,97.58,37.531,59.635,29.28 +2020-06-25 20:30:00,98.76,38.021,59.635,29.28 +2020-06-25 20:45:00,98.12,38.935,59.635,29.28 +2020-06-25 21:00:00,96.92,37.287,54.353,29.28 +2020-06-25 21:15:00,92.89,39.243,54.353,29.28 +2020-06-25 21:30:00,90.17,40.049,54.353,29.28 +2020-06-25 21:45:00,88.89,41.221000000000004,54.353,29.28 +2020-06-25 22:00:00,85.17,38.8,49.431999999999995,29.28 +2020-06-25 22:15:00,84.56,40.81,49.431999999999995,29.28 +2020-06-25 22:30:00,81.54,35.371,49.431999999999995,29.28 +2020-06-25 22:45:00,80.23,31.987,49.431999999999995,29.28 +2020-06-25 23:00:00,78.24,27.659000000000002,42.872,29.28 +2020-06-25 23:15:00,77.2,26.339000000000002,42.872,29.28 +2020-06-25 23:30:00,76.09,25.281999999999996,42.872,29.28 +2020-06-25 23:45:00,74.95,24.483,42.872,29.28 +2020-06-26 00:00:00,73.91,21.691,39.819,29.28 +2020-06-26 00:15:00,73.66,22.618000000000002,39.819,29.28 +2020-06-26 00:30:00,73.5,21.787,39.819,29.28 +2020-06-26 00:45:00,73.41,21.796999999999997,39.819,29.28 +2020-06-26 01:00:00,72.61,21.344,37.797,29.28 +2020-06-26 01:15:00,73.69,19.842,37.797,29.28 +2020-06-26 01:30:00,73.2,18.852,37.797,29.28 +2020-06-26 01:45:00,73.02,18.176,37.797,29.28 +2020-06-26 02:00:00,77.1,18.678,36.905,29.28 +2020-06-26 02:15:00,81.05,17.077,36.905,29.28 +2020-06-26 02:30:00,79.47,20.13,36.905,29.28 +2020-06-26 02:45:00,73.65,20.267,36.905,29.28 +2020-06-26 03:00:00,76.43,22.564,37.1,29.28 +2020-06-26 03:15:00,75.3,20.2,37.1,29.28 +2020-06-26 03:30:00,76.44,19.292,37.1,29.28 +2020-06-26 03:45:00,77.02,19.705,37.1,29.28 +2020-06-26 04:00:00,77.12,25.962,37.882,29.28 +2020-06-26 04:15:00,84.19,31.944000000000003,37.882,29.28 +2020-06-26 04:30:00,91.07,30.104,37.882,29.28 +2020-06-26 04:45:00,88.15,29.641,37.882,29.28 +2020-06-26 05:00:00,93.96,44.298,40.777,29.28 +2020-06-26 05:15:00,96.44,55.133,40.777,29.28 +2020-06-26 05:30:00,99.55,47.538000000000004,40.777,29.28 +2020-06-26 05:45:00,102.21,44.23,40.777,29.28 +2020-06-26 06:00:00,105.49,46.681999999999995,55.528,29.28 +2020-06-26 06:15:00,106.56,47.016000000000005,55.528,29.28 +2020-06-26 06:30:00,111.38,45.214,55.528,29.28 +2020-06-26 06:45:00,113.94,46.373000000000005,55.528,29.28 +2020-06-26 07:00:00,119.24,47.61,67.749,29.28 +2020-06-26 07:15:00,120.18,48.556999999999995,67.749,29.28 +2020-06-26 07:30:00,118.22,43.81100000000001,67.749,29.28 +2020-06-26 07:45:00,111.2,43.27,67.749,29.28 +2020-06-26 08:00:00,111.58,41.121,57.55,29.28 +2020-06-26 08:15:00,114.37,44.523999999999994,57.55,29.28 +2020-06-26 08:30:00,114.99,44.568000000000005,57.55,29.28 +2020-06-26 08:45:00,113.74,46.685,57.55,29.28 +2020-06-26 09:00:00,109.16,39.516999999999996,52.588,29.28 +2020-06-26 09:15:00,113.26,40.493,52.588,29.28 +2020-06-26 09:30:00,112.71,43.34,52.588,29.28 +2020-06-26 09:45:00,110.41,46.576,52.588,29.28 +2020-06-26 10:00:00,105.72,41.063,49.772,29.28 +2020-06-26 10:15:00,112.85,42.751000000000005,49.772,29.28 +2020-06-26 10:30:00,112.6,43.458,49.772,29.28 +2020-06-26 10:45:00,111.95,45.062,49.772,29.28 +2020-06-26 11:00:00,106.15,41.48,49.226000000000006,29.28 +2020-06-26 11:15:00,102.95,41.75899999999999,49.226000000000006,29.28 +2020-06-26 11:30:00,108.99,42.881,49.226000000000006,29.28 +2020-06-26 11:45:00,107.29,43.751000000000005,49.226000000000006,29.28 +2020-06-26 12:00:00,102.93,40.873000000000005,45.705,29.28 +2020-06-26 12:15:00,97.81,40.031,45.705,29.28 +2020-06-26 12:30:00,99.61,38.917,45.705,29.28 +2020-06-26 12:45:00,101.18,39.65,45.705,29.28 +2020-06-26 13:00:00,99.27,40.851,43.133,29.28 +2020-06-26 13:15:00,96.97,42.258,43.133,29.28 +2020-06-26 13:30:00,91.8,41.42,43.133,29.28 +2020-06-26 13:45:00,90.58,40.583,43.133,29.28 +2020-06-26 14:00:00,89.92,41.871,41.989,29.28 +2020-06-26 14:15:00,91.04,40.973,41.989,29.28 +2020-06-26 14:30:00,96.86,41.178999999999995,41.989,29.28 +2020-06-26 14:45:00,96.54,41.148999999999994,41.989,29.28 +2020-06-26 15:00:00,96.12,43.053999999999995,43.728,29.28 +2020-06-26 15:15:00,92.58,40.266,43.728,29.28 +2020-06-26 15:30:00,92.76,37.751999999999995,43.728,29.28 +2020-06-26 15:45:00,99.14,36.326,43.728,29.28 +2020-06-26 16:00:00,102.55,38.402,45.93899999999999,29.28 +2020-06-26 16:15:00,102.02,38.446,45.93899999999999,29.28 +2020-06-26 16:30:00,97.83,37.661,45.93899999999999,29.28 +2020-06-26 16:45:00,104.14,33.126,45.93899999999999,29.28 +2020-06-26 17:00:00,107.5,38.062,50.488,29.28 +2020-06-26 17:15:00,108.79,37.815,50.488,29.28 +2020-06-26 17:30:00,102.7,37.045,50.488,29.28 +2020-06-26 17:45:00,108.93,35.137,50.488,29.28 +2020-06-26 18:00:00,110.72,37.895,52.408,29.28 +2020-06-26 18:15:00,106.92,36.888000000000005,52.408,29.28 +2020-06-26 18:30:00,100.88,34.454,52.408,29.28 +2020-06-26 18:45:00,99.23,38.957,52.408,29.28 +2020-06-26 19:00:00,92.97,40.580999999999996,52.736000000000004,29.28 +2020-06-26 19:15:00,93.69,40.194,52.736000000000004,29.28 +2020-06-26 19:30:00,98.71,39.216,52.736000000000004,29.28 +2020-06-26 19:45:00,97.1,38.205,52.736000000000004,29.28 +2020-06-26 20:00:00,93.03,35.582,59.68,29.28 +2020-06-26 20:15:00,87.14,36.32,59.68,29.28 +2020-06-26 20:30:00,89.87,36.326,59.68,29.28 +2020-06-26 20:45:00,87.72,36.488,59.68,29.28 +2020-06-26 21:00:00,86.85,36.183,54.343999999999994,29.28 +2020-06-26 21:15:00,86.7,39.836,54.343999999999994,29.28 +2020-06-26 21:30:00,87.8,40.472,54.343999999999994,29.28 +2020-06-26 21:45:00,87.75,41.882,54.343999999999994,29.28 +2020-06-26 22:00:00,84.36,39.395,49.672,29.28 +2020-06-26 22:15:00,81.7,41.153,49.672,29.28 +2020-06-26 22:30:00,76.68,40.829,49.672,29.28 +2020-06-26 22:45:00,74.71,38.507,49.672,29.28 +2020-06-26 23:00:00,71.08,35.825,42.065,29.28 +2020-06-26 23:15:00,71.04,32.855,42.065,29.28 +2020-06-26 23:30:00,66.37,29.904,42.065,29.28 +2020-06-26 23:45:00,69.55,28.935,42.065,29.28 +2020-06-27 00:00:00,65.06,22.680999999999997,38.829,29.17 +2020-06-27 00:15:00,66.26,22.67,38.829,29.17 +2020-06-27 00:30:00,67.1,21.462,38.829,29.17 +2020-06-27 00:45:00,66.18,20.795,38.829,29.17 +2020-06-27 01:00:00,63.32,20.668000000000003,34.63,29.17 +2020-06-27 01:15:00,71.54,19.678,34.63,29.17 +2020-06-27 01:30:00,69.12,17.852,34.63,29.17 +2020-06-27 01:45:00,70.08,18.394000000000002,34.63,29.17 +2020-06-27 02:00:00,62.8,17.964000000000002,32.465,29.17 +2020-06-27 02:15:00,62.11,15.561,32.465,29.17 +2020-06-27 02:30:00,65.37,17.749000000000002,32.465,29.17 +2020-06-27 02:45:00,68.43,18.676,32.465,29.17 +2020-06-27 03:00:00,68.92,19.649,31.925,29.17 +2020-06-27 03:15:00,68.83,16.522000000000002,31.925,29.17 +2020-06-27 03:30:00,65.01,15.847999999999999,31.925,29.17 +2020-06-27 03:45:00,60.82,17.756,31.925,29.17 +2020-06-27 04:00:00,61.0,21.845,31.309,29.17 +2020-06-27 04:15:00,68.68,26.747,31.309,29.17 +2020-06-27 04:30:00,68.89,23.107,31.309,29.17 +2020-06-27 04:45:00,67.89,22.884,31.309,29.17 +2020-06-27 05:00:00,63.25,28.361,30.323,29.17 +2020-06-27 05:15:00,62.79,27.12,30.323,29.17 +2020-06-27 05:30:00,67.71,21.116,30.323,29.17 +2020-06-27 05:45:00,71.77,22.594,30.323,29.17 +2020-06-27 06:00:00,75.97,37.208,31.438000000000002,29.17 +2020-06-27 06:15:00,71.83,46.221000000000004,31.438000000000002,29.17 +2020-06-27 06:30:00,70.47,41.309,31.438000000000002,29.17 +2020-06-27 06:45:00,72.75,38.786,31.438000000000002,29.17 +2020-06-27 07:00:00,76.92,38.353,34.891999999999996,29.17 +2020-06-27 07:15:00,77.53,37.963,34.891999999999996,29.17 +2020-06-27 07:30:00,75.96,34.871,34.891999999999996,29.17 +2020-06-27 07:45:00,74.03,35.513000000000005,34.891999999999996,29.17 +2020-06-27 08:00:00,75.68,34.279,39.608000000000004,29.17 +2020-06-27 08:15:00,76.83,37.715,39.608000000000004,29.17 +2020-06-27 08:30:00,81.14,37.835,39.608000000000004,29.17 +2020-06-27 08:45:00,76.55,41.08,39.608000000000004,29.17 +2020-06-27 09:00:00,72.19,37.061,40.894,29.17 +2020-06-27 09:15:00,77.15,38.563,40.894,29.17 +2020-06-27 09:30:00,77.14,41.949,40.894,29.17 +2020-06-27 09:45:00,75.67,44.763999999999996,40.894,29.17 +2020-06-27 10:00:00,75.84,39.874,39.525,29.17 +2020-06-27 10:15:00,73.35,41.927,39.525,29.17 +2020-06-27 10:30:00,70.92,42.309,39.525,29.17 +2020-06-27 10:45:00,72.03,43.653999999999996,39.525,29.17 +2020-06-27 11:00:00,67.93,39.957,36.718,29.17 +2020-06-27 11:15:00,67.39,41.049,36.718,29.17 +2020-06-27 11:30:00,68.26,42.368,36.718,29.17 +2020-06-27 11:45:00,65.04,43.833,36.718,29.17 +2020-06-27 12:00:00,61.59,41.327,35.688,29.17 +2020-06-27 12:15:00,61.46,41.361999999999995,35.688,29.17 +2020-06-27 12:30:00,59.79,40.125,35.688,29.17 +2020-06-27 12:45:00,61.07,41.525,35.688,29.17 +2020-06-27 13:00:00,56.5,41.835,32.858000000000004,29.17 +2020-06-27 13:15:00,57.59,42.577,32.858000000000004,29.17 +2020-06-27 13:30:00,57.29,41.902,32.858000000000004,29.17 +2020-06-27 13:45:00,57.27,39.775999999999996,32.858000000000004,29.17 +2020-06-27 14:00:00,56.82,41.222,31.738000000000003,29.17 +2020-06-27 14:15:00,57.12,39.06,31.738000000000003,29.17 +2020-06-27 14:30:00,57.83,38.715,31.738000000000003,29.17 +2020-06-27 14:45:00,60.56,39.176,31.738000000000003,29.17 +2020-06-27 15:00:00,59.67,41.595,34.35,29.17 +2020-06-27 15:15:00,59.31,39.548,34.35,29.17 +2020-06-27 15:30:00,60.2,37.325,34.35,29.17 +2020-06-27 15:45:00,61.46,34.984,34.35,29.17 +2020-06-27 16:00:00,62.44,39.122,37.522,29.17 +2020-06-27 16:15:00,63.64,38.339,37.522,29.17 +2020-06-27 16:30:00,66.31,37.792,37.522,29.17 +2020-06-27 16:45:00,67.86,33.27,37.522,29.17 +2020-06-27 17:00:00,70.65,37.027,42.498000000000005,29.17 +2020-06-27 17:15:00,71.24,34.755,42.498000000000005,29.17 +2020-06-27 17:30:00,73.98,33.844,42.498000000000005,29.17 +2020-06-27 17:45:00,75.04,32.39,42.498000000000005,29.17 +2020-06-27 18:00:00,77.44,36.498000000000005,44.701,29.17 +2020-06-27 18:15:00,76.21,37.229,44.701,29.17 +2020-06-27 18:30:00,76.3,36.213,44.701,29.17 +2020-06-27 18:45:00,76.3,37.082,44.701,29.17 +2020-06-27 19:00:00,76.28,37.175,45.727,29.17 +2020-06-27 19:15:00,73.26,35.755,45.727,29.17 +2020-06-27 19:30:00,72.4,35.575,45.727,29.17 +2020-06-27 19:45:00,70.94,36.29,45.727,29.17 +2020-06-27 20:00:00,71.82,34.611,43.391000000000005,29.17 +2020-06-27 20:15:00,71.23,34.848,43.391000000000005,29.17 +2020-06-27 20:30:00,71.26,33.97,43.391000000000005,29.17 +2020-06-27 20:45:00,72.04,35.955999999999996,43.391000000000005,29.17 +2020-06-27 21:00:00,74.06,34.341,41.231,29.17 +2020-06-27 21:15:00,74.57,37.683,41.231,29.17 +2020-06-27 21:30:00,70.48,38.56,41.231,29.17 +2020-06-27 21:45:00,70.41,39.407,41.231,29.17 +2020-06-27 22:00:00,62.13,36.991,40.798,29.17 +2020-06-27 22:15:00,64.93,39.149,40.798,29.17 +2020-06-27 22:30:00,60.41,38.819,40.798,29.17 +2020-06-27 22:45:00,62.8,36.968,40.798,29.17 +2020-06-27 23:00:00,59.35,33.760999999999996,34.402,29.17 +2020-06-27 23:15:00,59.05,31.136999999999997,34.402,29.17 +2020-06-27 23:30:00,58.0,30.514,34.402,29.17 +2020-06-27 23:45:00,57.81,29.741999999999997,34.402,29.17 +2020-06-28 00:00:00,52.34,24.013,30.171,29.17 +2020-06-28 00:15:00,55.36,22.846,30.171,29.17 +2020-06-28 00:30:00,54.45,21.474,30.171,29.17 +2020-06-28 00:45:00,54.19,20.747,30.171,29.17 +2020-06-28 01:00:00,53.18,20.885,27.15,29.17 +2020-06-28 01:15:00,50.44,19.824,27.15,29.17 +2020-06-28 01:30:00,52.82,17.895,27.15,29.17 +2020-06-28 01:45:00,53.02,18.034000000000002,27.15,29.17 +2020-06-28 02:00:00,52.68,17.64,25.403000000000002,29.17 +2020-06-28 02:15:00,52.39,15.887,25.403000000000002,29.17 +2020-06-28 02:30:00,52.08,18.303,25.403000000000002,29.17 +2020-06-28 02:45:00,52.53,18.977,25.403000000000002,29.17 +2020-06-28 03:00:00,52.73,20.605999999999998,23.386999999999997,29.17 +2020-06-28 03:15:00,53.01,17.711,23.386999999999997,29.17 +2020-06-28 03:30:00,52.27,16.403,23.386999999999997,29.17 +2020-06-28 03:45:00,52.48,17.54,23.386999999999997,29.17 +2020-06-28 04:00:00,51.85,21.539,23.941999999999997,29.17 +2020-06-28 04:15:00,51.64,25.916999999999998,23.941999999999997,29.17 +2020-06-28 04:30:00,52.18,23.593000000000004,23.941999999999997,29.17 +2020-06-28 04:45:00,52.88,22.923000000000002,23.941999999999997,29.17 +2020-06-28 05:00:00,52.47,28.29,23.026,29.17 +2020-06-28 05:15:00,52.43,26.049,23.026,29.17 +2020-06-28 05:30:00,49.33,19.701,23.026,29.17 +2020-06-28 05:45:00,52.47,20.958000000000002,23.026,29.17 +2020-06-28 06:00:00,53.34,33.241,23.223000000000003,29.17 +2020-06-28 06:15:00,53.67,42.965,23.223000000000003,29.17 +2020-06-28 06:30:00,54.36,37.324,23.223000000000003,29.17 +2020-06-28 06:45:00,54.97,33.788000000000004,23.223000000000003,29.17 +2020-06-28 07:00:00,54.97,33.775,24.968000000000004,29.17 +2020-06-28 07:15:00,54.23,31.741999999999997,24.968000000000004,29.17 +2020-06-28 07:30:00,53.95,29.835,24.968000000000004,29.17 +2020-06-28 07:45:00,53.99,30.430999999999997,24.968000000000004,29.17 +2020-06-28 08:00:00,54.31,30.06,29.131,29.17 +2020-06-28 08:15:00,53.99,34.674,29.131,29.17 +2020-06-28 08:30:00,54.29,35.741,29.131,29.17 +2020-06-28 08:45:00,55.38,39.021,29.131,29.17 +2020-06-28 09:00:00,53.19,34.866,29.904,29.17 +2020-06-28 09:15:00,54.67,35.915,29.904,29.17 +2020-06-28 09:30:00,54.92,39.713,29.904,29.17 +2020-06-28 09:45:00,55.03,43.516000000000005,29.904,29.17 +2020-06-28 10:00:00,56.5,39.309,28.943,29.17 +2020-06-28 10:15:00,57.14,41.528999999999996,28.943,29.17 +2020-06-28 10:30:00,58.29,42.163000000000004,28.943,29.17 +2020-06-28 10:45:00,58.46,44.405,28.943,29.17 +2020-06-28 11:00:00,57.77,40.417,31.682,29.17 +2020-06-28 11:15:00,55.17,41.08,31.682,29.17 +2020-06-28 11:30:00,54.11,42.855,31.682,29.17 +2020-06-28 11:45:00,54.05,44.603,31.682,29.17 +2020-06-28 12:00:00,52.24,43.143,27.315,29.17 +2020-06-28 12:15:00,54.17,42.653999999999996,27.315,29.17 +2020-06-28 12:30:00,51.79,41.54,27.315,29.17 +2020-06-28 12:45:00,52.87,42.261,27.315,29.17 +2020-06-28 13:00:00,48.04,42.218999999999994,23.894000000000002,29.17 +2020-06-28 13:15:00,48.71,42.547,23.894000000000002,29.17 +2020-06-28 13:30:00,47.9,40.772,23.894000000000002,29.17 +2020-06-28 13:45:00,51.51,39.719,23.894000000000002,29.17 +2020-06-28 14:00:00,51.52,42.372,21.148000000000003,29.17 +2020-06-28 14:15:00,49.54,40.695,21.148000000000003,29.17 +2020-06-28 14:30:00,49.02,39.174,21.148000000000003,29.17 +2020-06-28 14:45:00,52.42,38.562,21.148000000000003,29.17 +2020-06-28 15:00:00,52.14,41.068000000000005,21.229,29.17 +2020-06-28 15:15:00,52.45,38.25,21.229,29.17 +2020-06-28 15:30:00,53.38,35.873000000000005,21.229,29.17 +2020-06-28 15:45:00,50.9,33.839,21.229,29.17 +2020-06-28 16:00:00,52.91,36.479,25.037,29.17 +2020-06-28 16:15:00,55.27,35.875,25.037,29.17 +2020-06-28 16:30:00,56.98,36.352,25.037,29.17 +2020-06-28 16:45:00,61.07,31.888,25.037,29.17 +2020-06-28 17:00:00,63.55,36.014,37.11,29.17 +2020-06-28 17:15:00,65.49,35.226,37.11,29.17 +2020-06-28 17:30:00,66.42,35.125,37.11,29.17 +2020-06-28 17:45:00,67.75,34.19,37.11,29.17 +2020-06-28 18:00:00,72.02,38.864000000000004,42.215,29.17 +2020-06-28 18:15:00,71.79,39.239000000000004,42.215,29.17 +2020-06-28 18:30:00,71.81,37.871,42.215,29.17 +2020-06-28 18:45:00,73.23,38.946,42.215,29.17 +2020-06-28 19:00:00,75.51,41.174,44.383,29.17 +2020-06-28 19:15:00,72.91,38.681,44.383,29.17 +2020-06-28 19:30:00,72.05,38.239000000000004,44.383,29.17 +2020-06-28 19:45:00,71.62,38.571999999999996,44.383,29.17 +2020-06-28 20:00:00,72.23,37.048,43.426,29.17 +2020-06-28 20:15:00,72.93,37.198,43.426,29.17 +2020-06-28 20:30:00,75.71,37.187,43.426,29.17 +2020-06-28 20:45:00,76.24,37.47,43.426,29.17 +2020-06-28 21:00:00,79.17,35.599000000000004,42.265,29.17 +2020-06-28 21:15:00,79.66,38.616,42.265,29.17 +2020-06-28 21:30:00,77.53,38.846,42.265,29.17 +2020-06-28 21:45:00,76.34,40.054,42.265,29.17 +2020-06-28 22:00:00,71.7,39.599000000000004,42.26,29.17 +2020-06-28 22:15:00,73.09,40.06,42.26,29.17 +2020-06-28 22:30:00,70.56,39.058,42.26,29.17 +2020-06-28 22:45:00,71.0,35.898,42.26,29.17 +2020-06-28 23:00:00,64.44,32.248000000000005,36.609,29.17 +2020-06-28 23:15:00,64.62,30.998,36.609,29.17 +2020-06-28 23:30:00,61.55,29.895,36.609,29.17 +2020-06-28 23:45:00,63.88,29.316,36.609,29.17 +2020-06-29 00:00:00,66.83,25.676,34.611,29.28 +2020-06-29 00:15:00,67.56,25.444000000000003,34.611,29.28 +2020-06-29 00:30:00,66.99,23.704,34.611,29.28 +2020-06-29 00:45:00,65.2,22.566,34.611,29.28 +2020-06-29 01:00:00,61.33,23.096,33.552,29.28 +2020-06-29 01:15:00,61.25,22.009,33.552,29.28 +2020-06-29 01:30:00,68.73,20.438,33.552,29.28 +2020-06-29 01:45:00,69.26,20.480999999999998,33.552,29.28 +2020-06-29 02:00:00,67.73,20.535999999999998,32.351,29.28 +2020-06-29 02:15:00,64.1,17.863,32.351,29.28 +2020-06-29 02:30:00,65.25,20.449,32.351,29.28 +2020-06-29 02:45:00,62.46,20.95,32.351,29.28 +2020-06-29 03:00:00,63.93,23.139,30.793000000000003,29.28 +2020-06-29 03:15:00,64.66,21.044,30.793000000000003,29.28 +2020-06-29 03:30:00,64.42,20.402,30.793000000000003,29.28 +2020-06-29 03:45:00,65.17,21.073,30.793000000000003,29.28 +2020-06-29 04:00:00,69.29,28.322,31.274,29.28 +2020-06-29 04:15:00,69.39,35.769,31.274,29.28 +2020-06-29 04:30:00,73.21,33.074,31.274,29.28 +2020-06-29 04:45:00,76.37,32.777,31.274,29.28 +2020-06-29 05:00:00,84.05,45.946999999999996,37.75,29.28 +2020-06-29 05:15:00,89.26,54.832,37.75,29.28 +2020-06-29 05:30:00,91.77,47.041000000000004,37.75,29.28 +2020-06-29 05:45:00,100.7,45.004,37.75,29.28 +2020-06-29 06:00:00,106.18,46.221000000000004,55.36,29.28 +2020-06-29 06:15:00,104.78,46.18899999999999,55.36,29.28 +2020-06-29 06:30:00,101.12,44.909,55.36,29.28 +2020-06-29 06:45:00,106.27,47.068999999999996,55.36,29.28 +2020-06-29 07:00:00,110.35,47.54600000000001,65.87,29.28 +2020-06-29 07:15:00,106.69,47.847,65.87,29.28 +2020-06-29 07:30:00,102.74,45.05,65.87,29.28 +2020-06-29 07:45:00,98.31,45.833999999999996,65.87,29.28 +2020-06-29 08:00:00,101.86,43.085,55.695,29.28 +2020-06-29 08:15:00,104.63,46.422,55.695,29.28 +2020-06-29 08:30:00,103.4,46.312,55.695,29.28 +2020-06-29 08:45:00,98.22,49.619,55.695,29.28 +2020-06-29 09:00:00,97.83,44.388000000000005,50.881,29.28 +2020-06-29 09:15:00,98.5,43.49100000000001,50.881,29.28 +2020-06-29 09:30:00,97.26,46.31399999999999,50.881,29.28 +2020-06-29 09:45:00,99.53,47.886,50.881,29.28 +2020-06-29 10:00:00,105.48,44.043,49.138000000000005,29.28 +2020-06-29 10:15:00,107.62,46.105,49.138000000000005,29.28 +2020-06-29 10:30:00,106.69,46.236999999999995,49.138000000000005,29.28 +2020-06-29 10:45:00,101.86,46.96,49.138000000000005,29.28 +2020-06-29 11:00:00,108.46,43.041000000000004,49.178000000000004,29.28 +2020-06-29 11:15:00,104.0,44.08,49.178000000000004,29.28 +2020-06-29 11:30:00,102.52,46.606,49.178000000000004,29.28 +2020-06-29 11:45:00,97.39,48.825,49.178000000000004,29.28 +2020-06-29 12:00:00,95.56,45.77,47.698,29.28 +2020-06-29 12:15:00,98.26,45.39,47.698,29.28 +2020-06-29 12:30:00,92.89,43.213,47.698,29.28 +2020-06-29 12:45:00,91.17,44.008,47.698,29.28 +2020-06-29 13:00:00,90.56,44.903,48.104,29.28 +2020-06-29 13:15:00,91.19,44.283,48.104,29.28 +2020-06-29 13:30:00,93.09,42.658,48.104,29.28 +2020-06-29 13:45:00,90.72,42.498000000000005,48.104,29.28 +2020-06-29 14:00:00,92.67,44.217,48.53,29.28 +2020-06-29 14:15:00,90.61,43.095,48.53,29.28 +2020-06-29 14:30:00,89.74,41.367,48.53,29.28 +2020-06-29 14:45:00,89.22,42.806999999999995,48.53,29.28 +2020-06-29 15:00:00,92.79,45.053999999999995,49.351000000000006,29.28 +2020-06-29 15:15:00,89.48,41.575,49.351000000000006,29.28 +2020-06-29 15:30:00,89.59,39.916,49.351000000000006,29.28 +2020-06-29 15:45:00,91.17,37.37,49.351000000000006,29.28 +2020-06-29 16:00:00,92.45,41.121,51.44,29.28 +2020-06-29 16:15:00,93.63,40.543,51.44,29.28 +2020-06-29 16:30:00,98.96,40.327,51.44,29.28 +2020-06-29 16:45:00,97.02,35.815,51.44,29.28 +2020-06-29 17:00:00,99.29,38.823,56.868,29.28 +2020-06-29 17:15:00,99.23,38.361,56.868,29.28 +2020-06-29 17:30:00,99.19,37.845,56.868,29.28 +2020-06-29 17:45:00,102.14,36.434,56.868,29.28 +2020-06-29 18:00:00,102.78,40.075,57.229,29.28 +2020-06-29 18:15:00,101.5,38.505,57.229,29.28 +2020-06-29 18:30:00,103.73,36.42,57.229,29.28 +2020-06-29 18:45:00,102.37,40.659,57.229,29.28 +2020-06-29 19:00:00,99.56,42.528,57.744,29.28 +2020-06-29 19:15:00,95.89,41.278,57.744,29.28 +2020-06-29 19:30:00,96.63,40.488,57.744,29.28 +2020-06-29 19:45:00,92.86,40.168,57.744,29.28 +2020-06-29 20:00:00,91.91,37.258,66.05199999999999,29.28 +2020-06-29 20:15:00,90.4,38.671,66.05199999999999,29.28 +2020-06-29 20:30:00,93.06,39.088,66.05199999999999,29.28 +2020-06-29 20:45:00,90.78,39.683,66.05199999999999,29.28 +2020-06-29 21:00:00,92.65,37.217,59.396,29.28 +2020-06-29 21:15:00,88.69,40.618,59.396,29.28 +2020-06-29 21:30:00,86.02,41.196000000000005,59.396,29.28 +2020-06-29 21:45:00,84.23,42.163000000000004,59.396,29.28 +2020-06-29 22:00:00,80.64,39.546,53.06,29.28 +2020-06-29 22:15:00,79.82,41.918,53.06,29.28 +2020-06-29 22:30:00,78.02,36.138000000000005,53.06,29.28 +2020-06-29 22:45:00,80.24,32.711,53.06,29.28 +2020-06-29 23:00:00,73.65,29.131,46.148,29.28 +2020-06-29 23:15:00,74.02,26.403000000000002,46.148,29.28 +2020-06-29 23:30:00,72.94,25.406999999999996,46.148,29.28 +2020-06-29 23:45:00,71.27,24.415,46.148,29.28 +2020-06-30 00:00:00,72.03,23.34,44.625,29.28 +2020-06-30 00:15:00,69.91,24.04,44.625,29.28 +2020-06-30 00:30:00,68.65,22.963,44.625,29.28 +2020-06-30 00:45:00,71.12,22.569000000000003,44.625,29.28 +2020-06-30 01:00:00,68.89,22.561,41.733000000000004,29.28 +2020-06-30 01:15:00,68.91,21.552,41.733000000000004,29.28 +2020-06-30 01:30:00,69.21,19.86,41.733000000000004,29.28 +2020-06-30 01:45:00,72.69,19.401,41.733000000000004,29.28 +2020-06-30 02:00:00,69.55,18.98,39.872,29.28 +2020-06-30 02:15:00,70.67,17.457,39.872,29.28 +2020-06-30 02:30:00,77.04,19.615,39.872,29.28 +2020-06-30 02:45:00,77.77,20.448,39.872,29.28 +2020-06-30 03:00:00,73.56,22.02,38.711,29.28 +2020-06-30 03:15:00,71.83,20.819000000000003,38.711,29.28 +2020-06-30 03:30:00,74.59,20.177,38.711,29.28 +2020-06-30 03:45:00,72.48,19.767,38.711,29.28 +2020-06-30 04:00:00,73.67,25.706,39.823,29.28 +2020-06-30 04:15:00,76.58,33.113,39.823,29.28 +2020-06-30 04:30:00,78.87,30.273000000000003,39.823,29.28 +2020-06-30 04:45:00,84.64,30.521,39.823,29.28 +2020-06-30 05:00:00,90.01,45.441,43.228,29.28 +2020-06-30 05:15:00,94.67,54.836000000000006,43.228,29.28 +2020-06-30 05:30:00,100.35,47.21,43.228,29.28 +2020-06-30 05:45:00,104.12,44.481,43.228,29.28 +2020-06-30 06:00:00,104.34,46.69,54.316,29.28 +2020-06-30 06:15:00,106.09,46.928999999999995,54.316,29.28 +2020-06-30 06:30:00,104.25,45.317,54.316,29.28 +2020-06-30 06:45:00,111.24,46.6,54.316,29.28 +2020-06-30 07:00:00,112.68,47.207,65.758,29.28 +2020-06-30 07:15:00,112.93,47.266000000000005,65.758,29.28 +2020-06-30 07:30:00,106.91,44.458999999999996,65.758,29.28 +2020-06-30 07:45:00,109.59,44.313,65.758,29.28 +2020-06-30 08:00:00,108.14,41.508,57.983000000000004,29.28 +2020-06-30 08:15:00,105.14,44.367,57.983000000000004,29.28 +2020-06-30 08:30:00,102.56,44.407,57.983000000000004,29.28 +2020-06-30 08:45:00,109.58,46.778999999999996,57.983000000000004,29.28 +2020-06-30 09:00:00,108.83,41.842,52.653,29.28 +2020-06-30 09:15:00,107.0,40.89,52.653,29.28 +2020-06-30 09:30:00,102.96,44.428000000000004,52.653,29.28 +2020-06-30 09:45:00,100.07,47.33,52.653,29.28 +2020-06-30 10:00:00,106.46,42.102,51.408,29.28 +2020-06-30 10:15:00,108.26,43.974,51.408,29.28 +2020-06-30 10:30:00,109.08,44.14,51.408,29.28 +2020-06-30 10:45:00,106.82,45.883,51.408,29.28 +2020-06-30 11:00:00,100.17,42.043,51.913000000000004,29.28 +2020-06-30 11:15:00,103.91,43.474,51.913000000000004,29.28 +2020-06-30 11:30:00,106.58,44.784,51.913000000000004,29.28 +2020-06-30 11:45:00,101.37,46.586000000000006,51.913000000000004,29.28 +2020-06-30 12:00:00,98.37,43.301,49.508,29.28 +2020-06-30 12:15:00,96.43,43.236999999999995,49.508,29.28 +2020-06-30 12:30:00,100.54,41.938,49.508,29.28 +2020-06-30 12:45:00,100.76,43.412,49.508,29.28 +2020-06-30 13:00:00,99.12,43.91,50.007,29.28 +2020-06-30 13:15:00,93.41,45.073,50.007,29.28 +2020-06-30 13:30:00,100.0,43.479,50.007,29.28 +2020-06-30 13:45:00,100.4,42.37,50.007,29.28 +2020-06-30 14:00:00,101.59,44.562,49.778999999999996,29.28 +2020-06-30 14:15:00,93.92,43.248000000000005,49.778999999999996,29.28 +2020-06-30 14:30:00,98.79,41.861000000000004,49.778999999999996,29.28 +2020-06-30 14:45:00,99.07,42.513000000000005,49.778999999999996,29.28 +2020-06-30 15:00:00,98.76,44.603,51.559,29.28 +2020-06-30 15:15:00,96.36,42.058,51.559,29.28 +2020-06-30 15:30:00,97.72,40.195,51.559,29.28 +2020-06-30 15:45:00,100.74,37.971,51.559,29.28 +2020-06-30 16:00:00,101.72,41.047,53.531000000000006,29.28 +2020-06-30 16:15:00,97.36,40.577,53.531000000000006,29.28 +2020-06-30 16:30:00,100.31,40.037,53.531000000000006,29.28 +2020-06-30 16:45:00,100.27,36.243,53.531000000000006,29.28 +2020-06-30 17:00:00,108.34,39.504,59.497,29.28 +2020-06-30 17:15:00,109.28,39.463,59.497,29.28 +2020-06-30 17:30:00,107.79,38.535,59.497,29.28 +2020-06-30 17:45:00,105.96,36.778,59.497,29.28 +2020-06-30 18:00:00,107.94,39.473,59.861999999999995,29.28 +2020-06-30 18:15:00,109.77,39.347,59.861999999999995,29.28 +2020-06-30 18:30:00,112.0,36.985,59.861999999999995,29.28 +2020-06-30 18:45:00,107.95,41.065,59.861999999999995,29.28 +2020-06-30 19:00:00,102.45,41.773,60.989,29.28 +2020-06-30 19:15:00,102.48,40.681999999999995,60.989,29.28 +2020-06-30 19:30:00,105.3,39.64,60.989,29.28 +2020-06-30 19:45:00,101.39,39.65,60.989,29.28 +2020-06-30 20:00:00,93.96,37.129,68.35600000000001,29.28 +2020-06-30 20:15:00,92.47,37.068000000000005,68.35600000000001,29.28 +2020-06-30 20:30:00,92.77,37.573,68.35600000000001,29.28 +2020-06-30 20:45:00,95.45,38.578,68.35600000000001,29.28 +2020-06-30 21:00:00,91.73,36.955,59.251000000000005,29.28 +2020-06-30 21:15:00,91.24,38.936,59.251000000000005,29.28 +2020-06-30 21:30:00,89.56,39.635,59.251000000000005,29.28 +2020-06-30 21:45:00,87.06,40.806,59.251000000000005,29.28 +2020-06-30 22:00:00,82.92,38.446999999999996,54.736999999999995,29.28 +2020-06-30 22:15:00,83.13,40.474000000000004,54.736999999999995,29.28 +2020-06-30 22:30:00,79.39,34.979,54.736999999999995,29.28 +2020-06-30 22:45:00,78.5,31.551,54.736999999999995,29.28 +2020-06-30 23:00:00,75.71,27.199,46.806999999999995,29.28 +2020-06-30 23:15:00,75.56,26.018,46.806999999999995,29.28 +2020-06-30 23:30:00,74.43,25.016,46.806999999999995,29.28 +2020-06-30 23:45:00,73.31,24.177,46.806999999999995,29.28 +2020-07-01 00:00:00,70.43,18.788,42.195,29.509 +2020-07-01 00:15:00,71.7,19.662,42.195,29.509 +2020-07-01 00:30:00,70.95,18.385,42.195,29.509 +2020-07-01 00:45:00,71.27,18.276,42.195,29.509 +2020-07-01 01:00:00,69.68,18.217,38.82,29.509 +2020-07-01 01:15:00,70.95,17.452,38.82,29.509 +2020-07-01 01:30:00,71.25,15.89,38.82,29.509 +2020-07-01 01:45:00,71.45,15.93,38.82,29.509 +2020-07-01 02:00:00,70.66,15.644,37.023,29.509 +2020-07-01 02:15:00,70.4,14.513,37.023,29.509 +2020-07-01 02:30:00,71.19,16.352999999999998,37.023,29.509 +2020-07-01 02:45:00,71.81,17.062,37.023,29.509 +2020-07-01 03:00:00,72.87,18.293,36.818000000000005,29.509 +2020-07-01 03:15:00,71.24,17.483,36.818000000000005,29.509 +2020-07-01 03:30:00,72.47,16.722,36.818000000000005,29.509 +2020-07-01 03:45:00,73.77,15.866,36.818000000000005,29.509 +2020-07-01 04:00:00,79.37,20.849,37.495,29.509 +2020-07-01 04:15:00,83.66,27.185,37.495,29.509 +2020-07-01 04:30:00,85.87,24.576,37.495,29.509 +2020-07-01 04:45:00,82.08,24.599,37.495,29.509 +2020-07-01 05:00:00,87.68,37.652,39.858000000000004,29.509 +2020-07-01 05:15:00,91.0,45.316,39.858000000000004,29.509 +2020-07-01 05:30:00,94.48,39.075,39.858000000000004,29.509 +2020-07-01 05:45:00,96.89,36.391999999999996,39.858000000000004,29.509 +2020-07-01 06:00:00,102.46,37.272,52.867,29.509 +2020-07-01 06:15:00,102.72,36.881,52.867,29.509 +2020-07-01 06:30:00,102.82,36.024,52.867,29.509 +2020-07-01 06:45:00,103.56,37.891999999999996,52.867,29.509 +2020-07-01 07:00:00,106.17,38.054,66.061,29.509 +2020-07-01 07:15:00,107.32,38.36,66.061,29.509 +2020-07-01 07:30:00,103.25,36.042,66.061,29.509 +2020-07-01 07:45:00,105.44,36.064,66.061,29.509 +2020-07-01 08:00:00,102.77,31.921,58.532,29.509 +2020-07-01 08:15:00,106.3,34.949,58.532,29.509 +2020-07-01 08:30:00,109.35,36.171,58.532,29.509 +2020-07-01 08:45:00,110.17,38.823,58.532,29.509 +2020-07-01 09:00:00,107.3,32.952,56.047,29.509 +2020-07-01 09:15:00,102.83,32.253,56.047,29.509 +2020-07-01 09:30:00,105.13,36.139,56.047,29.509 +2020-07-01 09:45:00,108.99,39.617,56.047,29.509 +2020-07-01 10:00:00,108.91,36.763000000000005,53.823,29.509 +2020-07-01 10:15:00,111.42,38.422,53.823,29.509 +2020-07-01 10:30:00,107.94,38.482,53.823,29.509 +2020-07-01 10:45:00,106.69,39.787,53.823,29.509 +2020-07-01 11:00:00,108.14,37.555,54.184,29.509 +2020-07-01 11:15:00,107.34,38.873000000000005,54.184,29.509 +2020-07-01 11:30:00,103.63,40.246,54.184,29.509 +2020-07-01 11:45:00,99.79,41.605,54.184,29.509 +2020-07-01 12:00:00,101.32,36.647,52.628,29.509 +2020-07-01 12:15:00,105.42,36.146,52.628,29.509 +2020-07-01 12:30:00,103.81,35.018,52.628,29.509 +2020-07-01 12:45:00,100.08,36.165,52.628,29.509 +2020-07-01 13:00:00,97.35,36.506,52.31,29.509 +2020-07-01 13:15:00,99.57,37.897,52.31,29.509 +2020-07-01 13:30:00,102.34,36.091,52.31,29.509 +2020-07-01 13:45:00,101.61,35.67,52.31,29.509 +2020-07-01 14:00:00,97.36,37.439,52.278999999999996,29.509 +2020-07-01 14:15:00,95.86,36.361,52.278999999999996,29.509 +2020-07-01 14:30:00,94.71,35.399,52.278999999999996,29.509 +2020-07-01 14:45:00,102.25,35.926,52.278999999999996,29.509 +2020-07-01 15:00:00,101.58,37.861999999999995,53.306999999999995,29.509 +2020-07-01 15:15:00,106.6,35.504,53.306999999999995,29.509 +2020-07-01 15:30:00,109.06,33.898,53.306999999999995,29.509 +2020-07-01 15:45:00,110.7,32.225,53.306999999999995,29.509 +2020-07-01 16:00:00,104.2,34.999,55.358999999999995,29.509 +2020-07-01 16:15:00,100.24,34.702,55.358999999999995,29.509 +2020-07-01 16:30:00,107.63,33.689,55.358999999999995,29.509 +2020-07-01 16:45:00,110.17,30.451999999999998,55.358999999999995,29.509 +2020-07-01 17:00:00,110.35,34.147,59.211999999999996,29.509 +2020-07-01 17:15:00,104.03,34.079,59.211999999999996,29.509 +2020-07-01 17:30:00,107.88,32.936,59.211999999999996,29.509 +2020-07-01 17:45:00,108.5,31.721,59.211999999999996,29.509 +2020-07-01 18:00:00,113.12,34.732,60.403999999999996,29.509 +2020-07-01 18:15:00,112.56,34.763000000000005,60.403999999999996,29.509 +2020-07-01 18:30:00,109.0,32.714,60.403999999999996,29.509 +2020-07-01 18:45:00,106.69,35.778,60.403999999999996,29.509 +2020-07-01 19:00:00,103.85,36.946999999999996,60.993,29.509 +2020-07-01 19:15:00,104.5,36.014,60.993,29.509 +2020-07-01 19:30:00,99.49,34.96,60.993,29.509 +2020-07-01 19:45:00,102.64,34.247,60.993,29.509 +2020-07-01 20:00:00,93.35,31.489,66.6,29.509 +2020-07-01 20:15:00,92.62,31.057,66.6,29.509 +2020-07-01 20:30:00,94.73,31.609,66.6,29.509 +2020-07-01 20:45:00,92.77,32.135999999999996,66.6,29.509 +2020-07-01 21:00:00,93.61,30.487,59.855,29.509 +2020-07-01 21:15:00,91.43,32.09,59.855,29.509 +2020-07-01 21:30:00,88.22,33.063,59.855,29.509 +2020-07-01 21:45:00,86.19,34.155,59.855,29.509 +2020-07-01 22:00:00,82.68,31.27,54.942,29.509 +2020-07-01 22:15:00,82.47,33.906,54.942,29.509 +2020-07-01 22:30:00,79.33,29.747,54.942,29.509 +2020-07-01 22:45:00,79.58,26.566999999999997,54.942,29.509 +2020-07-01 23:00:00,76.55,23.329,46.056000000000004,29.509 +2020-07-01 23:15:00,75.74,21.73,46.056000000000004,29.509 +2020-07-01 23:30:00,76.51,20.483,46.056000000000004,29.509 +2020-07-01 23:45:00,75.37,19.579,46.056000000000004,29.509 +2020-07-02 00:00:00,71.27,18.766,40.859,29.509 +2020-07-02 00:15:00,75.23,19.639,40.859,29.509 +2020-07-02 00:30:00,72.87,18.366,40.859,29.509 +2020-07-02 00:45:00,72.99,18.262,40.859,29.509 +2020-07-02 01:00:00,73.16,18.214000000000002,39.06,29.509 +2020-07-02 01:15:00,71.58,17.437,39.06,29.509 +2020-07-02 01:30:00,70.03,15.875,39.06,29.509 +2020-07-02 01:45:00,71.6,15.907,39.06,29.509 +2020-07-02 02:00:00,71.98,15.627,37.592,29.509 +2020-07-02 02:15:00,72.45,14.513,37.592,29.509 +2020-07-02 02:30:00,71.95,16.332,37.592,29.509 +2020-07-02 02:45:00,73.87,17.044,37.592,29.509 +2020-07-02 03:00:00,73.17,18.271,37.416,29.509 +2020-07-02 03:15:00,73.55,17.469,37.416,29.509 +2020-07-02 03:30:00,74.45,16.714000000000002,37.416,29.509 +2020-07-02 03:45:00,76.07,15.876,37.416,29.509 +2020-07-02 04:00:00,85.78,20.818,38.176,29.509 +2020-07-02 04:15:00,84.85,27.118000000000002,38.176,29.509 +2020-07-02 04:30:00,81.2,24.5,38.176,29.509 +2020-07-02 04:45:00,82.99,24.521,38.176,29.509 +2020-07-02 05:00:00,91.83,37.501999999999995,41.203,29.509 +2020-07-02 05:15:00,92.7,45.07,41.203,29.509 +2020-07-02 05:30:00,93.71,38.889,41.203,29.509 +2020-07-02 05:45:00,100.65,36.238,41.203,29.509 +2020-07-02 06:00:00,111.15,37.12,51.09,29.509 +2020-07-02 06:15:00,112.6,36.724000000000004,51.09,29.509 +2020-07-02 06:30:00,107.72,35.889,51.09,29.509 +2020-07-02 06:45:00,109.61,37.786,51.09,29.509 +2020-07-02 07:00:00,106.92,37.939,63.541000000000004,29.509 +2020-07-02 07:15:00,111.87,38.266,63.541000000000004,29.509 +2020-07-02 07:30:00,113.84,35.949,63.541000000000004,29.509 +2020-07-02 07:45:00,113.44,36.0,63.541000000000004,29.509 +2020-07-02 08:00:00,107.91,31.868000000000002,55.65,29.509 +2020-07-02 08:15:00,107.55,34.914,55.65,29.509 +2020-07-02 08:30:00,114.18,36.126,55.65,29.509 +2020-07-02 08:45:00,115.94,38.775,55.65,29.509 +2020-07-02 09:00:00,110.22,32.898,51.833999999999996,29.509 +2020-07-02 09:15:00,109.29,32.201,51.833999999999996,29.509 +2020-07-02 09:30:00,107.38,36.082,51.833999999999996,29.509 +2020-07-02 09:45:00,111.58,39.568000000000005,51.833999999999996,29.509 +2020-07-02 10:00:00,112.97,36.721,49.70399999999999,29.509 +2020-07-02 10:15:00,113.92,38.382,49.70399999999999,29.509 +2020-07-02 10:30:00,108.83,38.439,49.70399999999999,29.509 +2020-07-02 10:45:00,113.08,39.747,49.70399999999999,29.509 +2020-07-02 11:00:00,112.65,37.512,48.593999999999994,29.509 +2020-07-02 11:15:00,108.39,38.832,48.593999999999994,29.509 +2020-07-02 11:30:00,105.46,40.194,48.593999999999994,29.509 +2020-07-02 11:45:00,103.74,41.549,48.593999999999994,29.509 +2020-07-02 12:00:00,102.28,36.616,46.275,29.509 +2020-07-02 12:15:00,112.02,36.114000000000004,46.275,29.509 +2020-07-02 12:30:00,110.12,34.974000000000004,46.275,29.509 +2020-07-02 12:45:00,111.95,36.118,46.275,29.509 +2020-07-02 13:00:00,108.93,36.444,45.803000000000004,29.509 +2020-07-02 13:15:00,104.36,37.830999999999996,45.803000000000004,29.509 +2020-07-02 13:30:00,111.63,36.033,45.803000000000004,29.509 +2020-07-02 13:45:00,108.98,35.619,45.803000000000004,29.509 +2020-07-02 14:00:00,114.1,37.393,46.251999999999995,29.509 +2020-07-02 14:15:00,102.95,36.316,46.251999999999995,29.509 +2020-07-02 14:30:00,101.66,35.339,46.251999999999995,29.509 +2020-07-02 14:45:00,108.11,35.873000000000005,46.251999999999995,29.509 +2020-07-02 15:00:00,117.54,37.826,48.309,29.509 +2020-07-02 15:15:00,115.68,35.461,48.309,29.509 +2020-07-02 15:30:00,115.1,33.853,48.309,29.509 +2020-07-02 15:45:00,108.35,32.172,48.309,29.509 +2020-07-02 16:00:00,106.86,34.964,49.681999999999995,29.509 +2020-07-02 16:15:00,116.47,34.668,49.681999999999995,29.509 +2020-07-02 16:30:00,115.12,33.673,49.681999999999995,29.509 +2020-07-02 16:45:00,115.58,30.432,49.681999999999995,29.509 +2020-07-02 17:00:00,113.83,34.135999999999996,53.086000000000006,29.509 +2020-07-02 17:15:00,108.49,34.075,53.086000000000006,29.509 +2020-07-02 17:30:00,108.27,32.933,53.086000000000006,29.509 +2020-07-02 17:45:00,110.25,31.714000000000002,53.086000000000006,29.509 +2020-07-02 18:00:00,117.44,34.733000000000004,54.038999999999994,29.509 +2020-07-02 18:15:00,113.72,34.743,54.038999999999994,29.509 +2020-07-02 18:30:00,110.69,32.695,54.038999999999994,29.509 +2020-07-02 18:45:00,103.51,35.757,54.038999999999994,29.509 +2020-07-02 19:00:00,99.92,36.928000000000004,53.408,29.509 +2020-07-02 19:15:00,95.01,35.986999999999995,53.408,29.509 +2020-07-02 19:30:00,95.4,34.926,53.408,29.509 +2020-07-02 19:45:00,91.38,34.207,53.408,29.509 +2020-07-02 20:00:00,91.86,31.435,55.309,29.509 +2020-07-02 20:15:00,89.76,31.002,55.309,29.509 +2020-07-02 20:30:00,90.27,31.554000000000002,55.309,29.509 +2020-07-02 20:45:00,93.88,32.098,55.309,29.509 +2020-07-02 21:00:00,88.63,30.451999999999998,51.585,29.509 +2020-07-02 21:15:00,87.77,32.058,51.585,29.509 +2020-07-02 21:30:00,87.98,33.01,51.585,29.509 +2020-07-02 21:45:00,85.55,34.099000000000004,51.585,29.509 +2020-07-02 22:00:00,81.55,31.225,48.006,29.509 +2020-07-02 22:15:00,79.87,33.864000000000004,48.006,29.509 +2020-07-02 22:30:00,78.85,29.693,48.006,29.509 +2020-07-02 22:45:00,80.14,26.506,48.006,29.509 +2020-07-02 23:00:00,74.23,23.264,42.309,29.509 +2020-07-02 23:15:00,74.85,21.691999999999997,42.309,29.509 +2020-07-02 23:30:00,74.97,20.459,42.309,29.509 +2020-07-02 23:45:00,73.89,19.547,42.309,29.509 +2020-07-03 00:00:00,70.93,16.918,39.649,29.509 +2020-07-03 00:15:00,74.24,18.007,39.649,29.509 +2020-07-03 00:30:00,70.69,17.027,39.649,29.509 +2020-07-03 00:45:00,71.66,17.366,39.649,29.509 +2020-07-03 01:00:00,70.83,16.942,37.744,29.509 +2020-07-03 01:15:00,71.09,15.489,37.744,29.509 +2020-07-03 01:30:00,73.13,14.683,37.744,29.509 +2020-07-03 01:45:00,70.01,14.513,37.744,29.509 +2020-07-03 02:00:00,69.99,15.138,36.965,29.509 +2020-07-03 02:15:00,72.95,14.513,36.965,29.509 +2020-07-03 02:30:00,70.26,16.631,36.965,29.509 +2020-07-03 02:45:00,72.71,16.631,36.965,29.509 +2020-07-03 03:00:00,71.77,18.701,37.678000000000004,29.509 +2020-07-03 03:15:00,71.51,16.611,37.678000000000004,29.509 +2020-07-03 03:30:00,76.38,15.615,37.678000000000004,29.509 +2020-07-03 03:45:00,80.75,15.698,37.678000000000004,29.509 +2020-07-03 04:00:00,85.8,20.732,38.591,29.509 +2020-07-03 04:15:00,79.97,25.381,38.591,29.509 +2020-07-03 04:30:00,79.88,23.738000000000003,38.591,29.509 +2020-07-03 04:45:00,87.51,23.125999999999998,38.591,29.509 +2020-07-03 05:00:00,88.68,35.584,40.666,29.509 +2020-07-03 05:15:00,99.92,44.004,40.666,29.509 +2020-07-03 05:30:00,102.65,38.053000000000004,40.666,29.509 +2020-07-03 05:45:00,105.28,34.976,40.666,29.509 +2020-07-03 06:00:00,112.07,36.077,51.784,29.509 +2020-07-03 06:15:00,109.3,35.889,51.784,29.509 +2020-07-03 06:30:00,114.85,35.047,51.784,29.509 +2020-07-03 06:45:00,117.65,36.794000000000004,51.784,29.509 +2020-07-03 07:00:00,118.78,37.632,61.383,29.509 +2020-07-03 07:15:00,114.49,38.888000000000005,61.383,29.509 +2020-07-03 07:30:00,122.05,34.546,61.383,29.509 +2020-07-03 07:45:00,121.0,34.44,61.383,29.509 +2020-07-03 08:00:00,120.65,31.176,55.272,29.509 +2020-07-03 08:15:00,115.76,34.957,55.272,29.509 +2020-07-03 08:30:00,118.63,36.018,55.272,29.509 +2020-07-03 08:45:00,124.55,38.578,55.272,29.509 +2020-07-03 09:00:00,124.35,30.26,53.506,29.509 +2020-07-03 09:15:00,123.23,31.552,53.506,29.509 +2020-07-03 09:30:00,117.79,34.724000000000004,53.506,29.509 +2020-07-03 09:45:00,124.21,38.628,53.506,29.509 +2020-07-03 10:00:00,124.18,35.675,51.363,29.509 +2020-07-03 10:15:00,125.33,37.067,51.363,29.509 +2020-07-03 10:30:00,113.6,37.708,51.363,29.509 +2020-07-03 10:45:00,112.47,38.94,51.363,29.509 +2020-07-03 11:00:00,117.84,36.973,51.043,29.509 +2020-07-03 11:15:00,119.54,37.192,51.043,29.509 +2020-07-03 11:30:00,114.56,38.071,51.043,29.509 +2020-07-03 11:45:00,111.63,38.407,51.043,29.509 +2020-07-03 12:00:00,106.04,33.891999999999996,47.52,29.509 +2020-07-03 12:15:00,110.61,32.827,47.52,29.509 +2020-07-03 12:30:00,107.32,31.789,47.52,29.509 +2020-07-03 12:45:00,103.64,32.069,47.52,29.509 +2020-07-03 13:00:00,101.08,32.958,45.494,29.509 +2020-07-03 13:15:00,99.8,34.49,45.494,29.509 +2020-07-03 13:30:00,95.66,33.538000000000004,45.494,29.509 +2020-07-03 13:45:00,101.57,33.458,45.494,29.509 +2020-07-03 14:00:00,98.0,34.446999999999996,43.883,29.509 +2020-07-03 14:15:00,99.34,33.841,43.883,29.509 +2020-07-03 14:30:00,102.34,34.419000000000004,43.883,29.509 +2020-07-03 14:45:00,107.73,34.214,43.883,29.509 +2020-07-03 15:00:00,109.4,36.125,45.714,29.509 +2020-07-03 15:15:00,106.77,33.525,45.714,29.509 +2020-07-03 15:30:00,104.22,31.396,45.714,29.509 +2020-07-03 15:45:00,105.17,30.504,45.714,29.509 +2020-07-03 16:00:00,101.31,32.468,48.222,29.509 +2020-07-03 16:15:00,98.01,32.68,48.222,29.509 +2020-07-03 16:30:00,102.98,31.509,48.222,29.509 +2020-07-03 16:45:00,107.56,27.44,48.222,29.509 +2020-07-03 17:00:00,110.19,32.964,52.619,29.509 +2020-07-03 17:15:00,103.65,32.747,52.619,29.509 +2020-07-03 17:30:00,108.81,31.796,52.619,29.509 +2020-07-03 17:45:00,110.01,30.412,52.619,29.509 +2020-07-03 18:00:00,107.36,33.431,52.99,29.509 +2020-07-03 18:15:00,103.91,32.449,52.99,29.509 +2020-07-03 18:30:00,105.74,30.276,52.99,29.509 +2020-07-03 18:45:00,106.53,33.777,52.99,29.509 +2020-07-03 19:00:00,100.94,35.813,51.923,29.509 +2020-07-03 19:15:00,91.66,35.426,51.923,29.509 +2020-07-03 19:30:00,95.59,34.438,51.923,29.509 +2020-07-03 19:45:00,96.63,32.675,51.923,29.509 +2020-07-03 20:00:00,95.47,29.728,56.238,29.509 +2020-07-03 20:15:00,91.08,30.12,56.238,29.509 +2020-07-03 20:30:00,87.72,30.166,56.238,29.509 +2020-07-03 20:45:00,93.25,29.855,56.238,29.509 +2020-07-03 21:00:00,93.94,29.558000000000003,52.426,29.509 +2020-07-03 21:15:00,91.58,32.889,52.426,29.509 +2020-07-03 21:30:00,84.87,33.661,52.426,29.509 +2020-07-03 21:45:00,81.0,34.939,52.426,29.509 +2020-07-03 22:00:00,81.22,31.889,48.196000000000005,29.509 +2020-07-03 22:15:00,83.92,34.275999999999996,48.196000000000005,29.509 +2020-07-03 22:30:00,81.87,34.796,48.196000000000005,29.509 +2020-07-03 22:45:00,78.52,32.36,48.196000000000005,29.509 +2020-07-03 23:00:00,69.31,30.891,41.71,29.509 +2020-07-03 23:15:00,70.51,27.789,41.71,29.509 +2020-07-03 23:30:00,75.91,24.73,41.71,29.509 +2020-07-03 23:45:00,74.86,23.709,41.71,29.509 +2020-07-04 00:00:00,71.28,18.308,41.105,29.398000000000003 +2020-07-04 00:15:00,66.58,18.862000000000002,41.105,29.398000000000003 +2020-07-04 00:30:00,68.4,17.344,41.105,29.398000000000003 +2020-07-04 00:45:00,72.06,16.899,41.105,29.398000000000003 +2020-07-04 01:00:00,70.88,16.746,36.934,29.398000000000003 +2020-07-04 01:15:00,68.8,15.936,36.934,29.398000000000003 +2020-07-04 01:30:00,62.1,14.513,36.934,29.398000000000003 +2020-07-04 01:45:00,61.89,15.368,36.934,29.398000000000003 +2020-07-04 02:00:00,61.38,15.015999999999998,34.782,29.398000000000003 +2020-07-04 02:15:00,61.18,14.513,34.782,29.398000000000003 +2020-07-04 02:30:00,67.97,14.918,34.782,29.398000000000003 +2020-07-04 02:45:00,68.39,15.735999999999999,34.782,29.398000000000003 +2020-07-04 03:00:00,67.7,16.349,34.489000000000004,29.398000000000003 +2020-07-04 03:15:00,65.75,14.513,34.489000000000004,29.398000000000003 +2020-07-04 03:30:00,69.36,14.513,34.489000000000004,29.398000000000003 +2020-07-04 03:45:00,67.53,14.645,34.489000000000004,29.398000000000003 +2020-07-04 04:00:00,64.42,17.846,34.111,29.398000000000003 +2020-07-04 04:15:00,60.03,21.635,34.111,29.398000000000003 +2020-07-04 04:30:00,62.56,18.337,34.111,29.398000000000003 +2020-07-04 04:45:00,68.6,18.028,34.111,29.398000000000003 +2020-07-04 05:00:00,69.39,22.414,33.283,29.398000000000003 +2020-07-04 05:15:00,67.18,20.141,33.283,29.398000000000003 +2020-07-04 05:30:00,62.58,15.806,33.283,29.398000000000003 +2020-07-04 05:45:00,66.37,17.168,33.283,29.398000000000003 +2020-07-04 06:00:00,67.09,29.13,33.653,29.398000000000003 +2020-07-04 06:15:00,70.36,36.363,33.653,29.398000000000003 +2020-07-04 06:30:00,75.13,32.815,33.653,29.398000000000003 +2020-07-04 06:45:00,76.55,31.62,33.653,29.398000000000003 +2020-07-04 07:00:00,74.19,31.340999999999998,36.732,29.398000000000003 +2020-07-04 07:15:00,69.0,31.328000000000003,36.732,29.398000000000003 +2020-07-04 07:30:00,75.39,28.43,36.732,29.398000000000003 +2020-07-04 07:45:00,78.46,29.125999999999998,36.732,29.398000000000003 +2020-07-04 08:00:00,78.82,26.471,41.318999999999996,29.398000000000003 +2020-07-04 08:15:00,75.62,29.854,41.318999999999996,29.398000000000003 +2020-07-04 08:30:00,72.05,30.805,41.318999999999996,29.398000000000003 +2020-07-04 08:45:00,72.92,34.181999999999995,41.318999999999996,29.398000000000003 +2020-07-04 09:00:00,75.51,29.045,43.195,29.398000000000003 +2020-07-04 09:15:00,75.93,30.805,43.195,29.398000000000003 +2020-07-04 09:30:00,76.19,34.44,43.195,29.398000000000003 +2020-07-04 09:45:00,69.16,37.868,43.195,29.398000000000003 +2020-07-04 10:00:00,68.23,35.586999999999996,41.843999999999994,29.398000000000003 +2020-07-04 10:15:00,68.67,37.345,41.843999999999994,29.398000000000003 +2020-07-04 10:30:00,72.15,37.611999999999995,41.843999999999994,29.398000000000003 +2020-07-04 10:45:00,69.35,38.399,41.843999999999994,29.398000000000003 +2020-07-04 11:00:00,67.52,36.268,39.035,29.398000000000003 +2020-07-04 11:15:00,67.46,37.444,39.035,29.398000000000003 +2020-07-04 11:30:00,65.74,38.674,39.035,29.398000000000003 +2020-07-04 11:45:00,64.54,39.766999999999996,39.035,29.398000000000003 +2020-07-04 12:00:00,62.25,35.786,38.001,29.398000000000003 +2020-07-04 12:15:00,60.77,35.577,38.001,29.398000000000003 +2020-07-04 12:30:00,60.3,34.369,38.001,29.398000000000003 +2020-07-04 12:45:00,59.23,35.464,38.001,29.398000000000003 +2020-07-04 13:00:00,57.7,35.444,34.747,29.398000000000003 +2020-07-04 13:15:00,57.19,36.525999999999996,34.747,29.398000000000003 +2020-07-04 13:30:00,57.53,35.806,34.747,29.398000000000003 +2020-07-04 13:45:00,57.64,34.283,34.747,29.398000000000003 +2020-07-04 14:00:00,57.47,35.258,33.434,29.398000000000003 +2020-07-04 14:15:00,57.5,33.368,33.434,29.398000000000003 +2020-07-04 14:30:00,57.46,33.594,33.434,29.398000000000003 +2020-07-04 14:45:00,58.13,33.887,33.434,29.398000000000003 +2020-07-04 15:00:00,59.46,36.232,35.921,29.398000000000003 +2020-07-04 15:15:00,59.91,34.321,35.921,29.398000000000003 +2020-07-04 15:30:00,60.67,32.314,35.921,29.398000000000003 +2020-07-04 15:45:00,61.72,30.444000000000003,35.921,29.398000000000003 +2020-07-04 16:00:00,63.63,34.691,39.427,29.398000000000003 +2020-07-04 16:15:00,64.21,33.919000000000004,39.427,29.398000000000003 +2020-07-04 16:30:00,69.13,33.007,39.427,29.398000000000003 +2020-07-04 16:45:00,69.2,28.857,39.427,29.398000000000003 +2020-07-04 17:00:00,69.91,33.164,44.096000000000004,29.398000000000003 +2020-07-04 17:15:00,72.05,30.614,44.096000000000004,29.398000000000003 +2020-07-04 17:30:00,73.58,29.529,44.096000000000004,29.398000000000003 +2020-07-04 17:45:00,75.0,28.683000000000003,44.096000000000004,29.398000000000003 +2020-07-04 18:00:00,76.84,33.131,43.931000000000004,29.398000000000003 +2020-07-04 18:15:00,76.16,33.784,43.931000000000004,29.398000000000003 +2020-07-04 18:30:00,76.26,32.959,43.931000000000004,29.398000000000003 +2020-07-04 18:45:00,77.12,33.004,43.931000000000004,29.398000000000003 +2020-07-04 19:00:00,75.57,33.28,42.187,29.398000000000003 +2020-07-04 19:15:00,72.31,31.864,42.187,29.398000000000003 +2020-07-04 19:30:00,71.21,31.631999999999998,42.187,29.398000000000003 +2020-07-04 19:45:00,70.88,31.693,42.187,29.398000000000003 +2020-07-04 20:00:00,70.25,29.52,38.315,29.398000000000003 +2020-07-04 20:15:00,69.83,29.163,38.315,29.398000000000003 +2020-07-04 20:30:00,69.99,28.314,38.315,29.398000000000003 +2020-07-04 20:45:00,70.95,29.953000000000003,38.315,29.398000000000003 +2020-07-04 21:00:00,71.53,28.039,36.843,29.398000000000003 +2020-07-04 21:15:00,71.29,30.995,36.843,29.398000000000003 +2020-07-04 21:30:00,70.14,31.895,36.843,29.398000000000003 +2020-07-04 21:45:00,68.61,32.623000000000005,36.843,29.398000000000003 +2020-07-04 22:00:00,66.07,29.506999999999998,37.260999999999996,29.398000000000003 +2020-07-04 22:15:00,66.0,32.06,37.260999999999996,29.398000000000003 +2020-07-04 22:30:00,62.91,31.948,37.260999999999996,29.398000000000003 +2020-07-04 22:45:00,62.98,29.82,37.260999999999996,29.398000000000003 +2020-07-04 23:00:00,59.32,27.59,32.148,29.398000000000003 +2020-07-04 23:15:00,58.95,25.004,32.148,29.398000000000003 +2020-07-04 23:30:00,58.24,24.543000000000003,32.148,29.398000000000003 +2020-07-04 23:45:00,57.81,23.965999999999998,32.148,29.398000000000003 +2020-07-05 00:00:00,55.67,19.707,28.905,29.398000000000003 +2020-07-05 00:15:00,55.37,19.081,28.905,29.398000000000003 +2020-07-05 00:30:00,54.85,17.43,28.905,29.398000000000003 +2020-07-05 00:45:00,54.72,16.848,28.905,29.398000000000003 +2020-07-05 01:00:00,53.6,16.983,26.906999999999996,29.398000000000003 +2020-07-05 01:15:00,53.84,15.994000000000002,26.906999999999996,29.398000000000003 +2020-07-05 01:30:00,54.02,14.513,26.906999999999996,29.398000000000003 +2020-07-05 01:45:00,54.04,14.877,26.906999999999996,29.398000000000003 +2020-07-05 02:00:00,53.25,14.642000000000001,25.938000000000002,29.398000000000003 +2020-07-05 02:15:00,53.53,14.513,25.938000000000002,29.398000000000003 +2020-07-05 02:30:00,53.44,15.464,25.938000000000002,29.398000000000003 +2020-07-05 02:45:00,52.89,15.967,25.938000000000002,29.398000000000003 +2020-07-05 03:00:00,52.29,17.232,24.693,29.398000000000003 +2020-07-05 03:15:00,53.06,14.776,24.693,29.398000000000003 +2020-07-05 03:30:00,52.75,14.513,24.693,29.398000000000003 +2020-07-05 03:45:00,51.46,14.513,24.693,29.398000000000003 +2020-07-05 04:00:00,51.22,17.359,25.683000000000003,29.398000000000003 +2020-07-05 04:15:00,51.09,20.709,25.683000000000003,29.398000000000003 +2020-07-05 04:30:00,50.47,18.782,25.683000000000003,29.398000000000003 +2020-07-05 04:45:00,51.05,17.98,25.683000000000003,29.398000000000003 +2020-07-05 05:00:00,50.86,22.613000000000003,26.023000000000003,29.398000000000003 +2020-07-05 05:15:00,50.47,19.552,26.023000000000003,29.398000000000003 +2020-07-05 05:30:00,48.1,14.87,26.023000000000003,29.398000000000003 +2020-07-05 05:45:00,51.33,15.972000000000001,26.023000000000003,29.398000000000003 +2020-07-05 06:00:00,51.68,25.519000000000002,25.834,29.398000000000003 +2020-07-05 06:15:00,51.55,33.667,25.834,29.398000000000003 +2020-07-05 06:30:00,52.79,29.468000000000004,25.834,29.398000000000003 +2020-07-05 06:45:00,53.9,27.323,25.834,29.398000000000003 +2020-07-05 07:00:00,53.77,27.261999999999997,27.765,29.398000000000003 +2020-07-05 07:15:00,53.67,25.614,27.765,29.398000000000003 +2020-07-05 07:30:00,52.11,24.101,27.765,29.398000000000003 +2020-07-05 07:45:00,54.99,24.828000000000003,27.765,29.398000000000003 +2020-07-05 08:00:00,55.61,22.898000000000003,31.357,29.398000000000003 +2020-07-05 08:15:00,55.39,27.529,31.357,29.398000000000003 +2020-07-05 08:30:00,56.12,29.285999999999998,31.357,29.398000000000003 +2020-07-05 08:45:00,56.36,32.464,31.357,29.398000000000003 +2020-07-05 09:00:00,57.17,27.238000000000003,33.238,29.398000000000003 +2020-07-05 09:15:00,57.85,28.448,33.238,29.398000000000003 +2020-07-05 09:30:00,60.75,32.537,33.238,29.398000000000003 +2020-07-05 09:45:00,58.0,37.027,33.238,29.398000000000003 +2020-07-05 10:00:00,61.54,35.167,34.22,29.398000000000003 +2020-07-05 10:15:00,62.53,37.032,34.22,29.398000000000003 +2020-07-05 10:30:00,60.64,37.488,34.22,29.398000000000003 +2020-07-05 10:45:00,64.41,39.474000000000004,34.22,29.398000000000003 +2020-07-05 11:00:00,63.97,36.913000000000004,36.298,29.398000000000003 +2020-07-05 11:15:00,62.55,37.61,36.298,29.398000000000003 +2020-07-05 11:30:00,61.59,39.439,36.298,29.398000000000003 +2020-07-05 11:45:00,61.53,40.755,36.298,29.398000000000003 +2020-07-05 12:00:00,58.57,37.967,33.52,29.398000000000003 +2020-07-05 12:15:00,59.34,36.952,33.52,29.398000000000003 +2020-07-05 12:30:00,56.89,36.068000000000005,33.52,29.398000000000003 +2020-07-05 12:45:00,56.14,36.559,33.52,29.398000000000003 +2020-07-05 13:00:00,56.09,36.25,30.12,29.398000000000003 +2020-07-05 13:15:00,58.54,36.499,30.12,29.398000000000003 +2020-07-05 13:30:00,53.91,34.625,30.12,29.398000000000003 +2020-07-05 13:45:00,54.48,34.336999999999996,30.12,29.398000000000003 +2020-07-05 14:00:00,53.1,36.564,27.233,29.398000000000003 +2020-07-05 14:15:00,52.56,35.042,27.233,29.398000000000003 +2020-07-05 14:30:00,53.24,33.861999999999995,27.233,29.398000000000003 +2020-07-05 14:45:00,53.16,33.063,27.233,29.398000000000003 +2020-07-05 15:00:00,52.17,35.689,27.468000000000004,29.398000000000003 +2020-07-05 15:15:00,53.08,32.861999999999995,27.468000000000004,29.398000000000003 +2020-07-05 15:30:00,52.72,30.621,27.468000000000004,29.398000000000003 +2020-07-05 15:45:00,52.87,28.991999999999997,27.468000000000004,29.398000000000003 +2020-07-05 16:00:00,58.7,31.435,30.8,29.398000000000003 +2020-07-05 16:15:00,59.41,30.967,30.8,29.398000000000003 +2020-07-05 16:30:00,58.69,31.108,30.8,29.398000000000003 +2020-07-05 16:45:00,63.11,27.015,30.8,29.398000000000003 +2020-07-05 17:00:00,67.05,31.717,37.806,29.398000000000003 +2020-07-05 17:15:00,64.23,30.783,37.806,29.398000000000003 +2020-07-05 17:30:00,65.25,30.528000000000002,37.806,29.398000000000003 +2020-07-05 17:45:00,68.4,29.974,37.806,29.398000000000003 +2020-07-05 18:00:00,72.02,35.104,40.766,29.398000000000003 +2020-07-05 18:15:00,71.05,35.239000000000004,40.766,29.398000000000003 +2020-07-05 18:30:00,71.03,34.275999999999996,40.766,29.398000000000003 +2020-07-05 18:45:00,71.01,34.335,40.766,29.398000000000003 +2020-07-05 19:00:00,71.74,36.906,41.163000000000004,29.398000000000003 +2020-07-05 19:15:00,70.17,34.306999999999995,41.163000000000004,29.398000000000003 +2020-07-05 19:30:00,70.19,33.819,41.163000000000004,29.398000000000003 +2020-07-05 19:45:00,70.61,33.332,41.163000000000004,29.398000000000003 +2020-07-05 20:00:00,70.45,31.316,39.885999999999996,29.398000000000003 +2020-07-05 20:15:00,71.14,30.765,39.885999999999996,29.398000000000003 +2020-07-05 20:30:00,75.63,30.69,39.885999999999996,29.398000000000003 +2020-07-05 20:45:00,75.49,30.666,39.885999999999996,29.398000000000003 +2020-07-05 21:00:00,75.9,28.771,38.900999999999996,29.398000000000003 +2020-07-05 21:15:00,76.48,31.448,38.900999999999996,29.398000000000003 +2020-07-05 21:30:00,74.17,31.642,38.900999999999996,29.398000000000003 +2020-07-05 21:45:00,73.12,32.73,38.900999999999996,29.398000000000003 +2020-07-05 22:00:00,70.17,31.783,39.806999999999995,29.398000000000003 +2020-07-05 22:15:00,70.35,32.641999999999996,39.806999999999995,29.398000000000003 +2020-07-05 22:30:00,68.44,32.145,39.806999999999995,29.398000000000003 +2020-07-05 22:45:00,68.89,28.736,39.806999999999995,29.398000000000003 +2020-07-05 23:00:00,66.69,26.328000000000003,35.564,29.398000000000003 +2020-07-05 23:15:00,65.66,24.987,35.564,29.398000000000003 +2020-07-05 23:30:00,64.82,23.948,35.564,29.398000000000003 +2020-07-05 23:45:00,63.72,23.485,35.564,29.398000000000003 +2020-07-06 00:00:00,62.93,21.053,36.578,29.509 +2020-07-06 00:15:00,62.05,21.09,36.578,29.509 +2020-07-06 00:30:00,61.97,19.039,36.578,29.509 +2020-07-06 00:45:00,61.79,18.081,36.578,29.509 +2020-07-06 01:00:00,61.64,18.625,35.292,29.509 +2020-07-06 01:15:00,60.91,17.667,35.292,29.509 +2020-07-06 01:30:00,60.67,16.254,35.292,29.509 +2020-07-06 01:45:00,59.95,16.808,35.292,29.509 +2020-07-06 02:00:00,61.3,17.049,34.319,29.509 +2020-07-06 02:15:00,61.83,14.513,34.319,29.509 +2020-07-06 02:30:00,62.07,16.898,34.319,29.509 +2020-07-06 02:45:00,62.17,17.285,34.319,29.509 +2020-07-06 03:00:00,65.43,19.002,33.13,29.509 +2020-07-06 03:15:00,64.03,17.215,33.13,29.509 +2020-07-06 03:30:00,65.09,16.549,33.13,29.509 +2020-07-06 03:45:00,65.84,16.95,33.13,29.509 +2020-07-06 04:00:00,67.57,23.045,33.851,29.509 +2020-07-06 04:15:00,68.87,29.180999999999997,33.851,29.509 +2020-07-06 04:30:00,71.48,26.636999999999997,33.851,29.509 +2020-07-06 04:45:00,75.03,26.21,33.851,29.509 +2020-07-06 05:00:00,80.19,37.529,38.718,29.509 +2020-07-06 05:15:00,84.78,44.1,38.718,29.509 +2020-07-06 05:30:00,88.76,37.885,38.718,29.509 +2020-07-06 05:45:00,91.27,36.103,38.718,29.509 +2020-07-06 06:00:00,94.97,35.835,51.648999999999994,29.509 +2020-07-06 06:15:00,100.81,35.295,51.648999999999994,29.509 +2020-07-06 06:30:00,107.42,34.845,51.648999999999994,29.509 +2020-07-06 06:45:00,109.2,37.764,51.648999999999994,29.509 +2020-07-06 07:00:00,100.07,37.709,60.159,29.509 +2020-07-06 07:15:00,99.42,38.38,60.159,29.509 +2020-07-06 07:30:00,109.47,36.021,60.159,29.509 +2020-07-06 07:45:00,108.74,37.223,60.159,29.509 +2020-07-06 08:00:00,103.48,33.216,53.8,29.509 +2020-07-06 08:15:00,101.9,36.735,53.8,29.509 +2020-07-06 08:30:00,102.67,37.72,53.8,29.509 +2020-07-06 08:45:00,102.51,41.309,53.8,29.509 +2020-07-06 09:00:00,108.05,34.997,50.583,29.509 +2020-07-06 09:15:00,108.16,34.559,50.583,29.509 +2020-07-06 09:30:00,103.79,37.734,50.583,29.509 +2020-07-06 09:45:00,100.1,39.804,50.583,29.509 +2020-07-06 10:00:00,100.26,38.406,49.11600000000001,29.509 +2020-07-06 10:15:00,98.97,40.135999999999996,49.11600000000001,29.509 +2020-07-06 10:30:00,101.45,40.166,49.11600000000001,29.509 +2020-07-06 10:45:00,105.24,40.429,49.11600000000001,29.509 +2020-07-06 11:00:00,115.14,38.292,49.056000000000004,29.509 +2020-07-06 11:15:00,114.12,39.161,49.056000000000004,29.509 +2020-07-06 11:30:00,109.51,41.618,49.056000000000004,29.509 +2020-07-06 11:45:00,107.16,43.486999999999995,49.056000000000004,29.509 +2020-07-06 12:00:00,98.95,38.736,47.227,29.509 +2020-07-06 12:15:00,97.34,37.839,47.227,29.509 +2020-07-06 12:30:00,94.65,35.788000000000004,47.227,29.509 +2020-07-06 12:45:00,94.35,36.159,47.227,29.509 +2020-07-06 13:00:00,95.56,36.779,47.006,29.509 +2020-07-06 13:15:00,94.55,36.189,47.006,29.509 +2020-07-06 13:30:00,93.02,34.541,47.006,29.509 +2020-07-06 13:45:00,98.7,35.205999999999996,47.006,29.509 +2020-07-06 14:00:00,95.14,36.535,47.19,29.509 +2020-07-06 14:15:00,91.16,35.689,47.19,29.509 +2020-07-06 14:30:00,89.41,34.361999999999995,47.19,29.509 +2020-07-06 14:45:00,88.76,35.762,47.19,29.509 +2020-07-06 15:00:00,87.58,37.905,47.846000000000004,29.509 +2020-07-06 15:15:00,88.49,34.553000000000004,47.846000000000004,29.509 +2020-07-06 15:30:00,88.04,33.184,47.846000000000004,29.509 +2020-07-06 15:45:00,88.3,31.066999999999997,47.846000000000004,29.509 +2020-07-06 16:00:00,88.8,34.711999999999996,49.641000000000005,29.509 +2020-07-06 16:15:00,90.56,34.364000000000004,49.641000000000005,29.509 +2020-07-06 16:30:00,93.03,33.887,49.641000000000005,29.509 +2020-07-06 16:45:00,95.66,29.892,49.641000000000005,29.509 +2020-07-06 17:00:00,98.75,33.438,54.133,29.509 +2020-07-06 17:15:00,99.58,32.971,54.133,29.509 +2020-07-06 17:30:00,99.52,32.346,54.133,29.509 +2020-07-06 17:45:00,99.38,31.47,54.133,29.509 +2020-07-06 18:00:00,99.13,35.501999999999995,53.761,29.509 +2020-07-06 18:15:00,101.41,33.836999999999996,53.761,29.509 +2020-07-06 18:30:00,101.33,32.049,53.761,29.509 +2020-07-06 18:45:00,99.47,35.366,53.761,29.509 +2020-07-06 19:00:00,96.1,37.764,53.923,29.509 +2020-07-06 19:15:00,92.71,36.589,53.923,29.509 +2020-07-06 19:30:00,92.02,35.689,53.923,29.509 +2020-07-06 19:45:00,92.82,34.603,53.923,29.509 +2020-07-06 20:00:00,91.58,31.381,58.786,29.509 +2020-07-06 20:15:00,89.83,32.415,58.786,29.509 +2020-07-06 20:30:00,90.8,32.982,58.786,29.509 +2020-07-06 20:45:00,90.9,33.107,58.786,29.509 +2020-07-06 21:00:00,88.74,30.525,54.591,29.509 +2020-07-06 21:15:00,87.51,33.721,54.591,29.509 +2020-07-06 21:30:00,85.2,34.366,54.591,29.509 +2020-07-06 21:45:00,83.29,35.247,54.591,29.509 +2020-07-06 22:00:00,80.54,32.321999999999996,51.551,29.509 +2020-07-06 22:15:00,79.21,35.305,51.551,29.509 +2020-07-06 22:30:00,78.44,30.779,51.551,29.509 +2020-07-06 22:45:00,76.79,27.581999999999997,51.551,29.509 +2020-07-06 23:00:00,75.39,25.141,44.716,29.509 +2020-07-06 23:15:00,74.53,21.991,44.716,29.509 +2020-07-06 23:30:00,74.57,20.794,44.716,29.509 +2020-07-06 23:45:00,72.99,19.643,44.716,29.509 +2020-07-07 00:00:00,71.53,18.721,43.01,29.509 +2020-07-07 00:15:00,70.84,19.582,43.01,29.509 +2020-07-07 00:30:00,71.39,18.327,43.01,29.509 +2020-07-07 00:45:00,70.56,18.253,43.01,29.509 +2020-07-07 01:00:00,71.2,18.25,40.687,29.509 +2020-07-07 01:15:00,70.9,17.422,40.687,29.509 +2020-07-07 01:30:00,70.33,15.867,40.687,29.509 +2020-07-07 01:45:00,70.39,15.862,40.687,29.509 +2020-07-07 02:00:00,70.97,15.605,39.554,29.509 +2020-07-07 02:15:00,70.84,14.513,39.554,29.509 +2020-07-07 02:30:00,77.92,16.289,39.554,29.509 +2020-07-07 02:45:00,78.65,17.02,39.554,29.509 +2020-07-07 03:00:00,75.67,18.214000000000002,38.958,29.509 +2020-07-07 03:15:00,70.77,17.46,38.958,29.509 +2020-07-07 03:30:00,74.81,16.742,38.958,29.509 +2020-07-07 03:45:00,74.03,15.989,38.958,29.509 +2020-07-07 04:00:00,77.7,20.735,39.783,29.509 +2020-07-07 04:15:00,82.93,26.872,39.783,29.509 +2020-07-07 04:30:00,86.8,24.212,39.783,29.509 +2020-07-07 04:45:00,87.2,24.226999999999997,39.783,29.509 +2020-07-07 05:00:00,87.99,36.885999999999996,42.281000000000006,29.509 +2020-07-07 05:15:00,95.27,44.023999999999994,42.281000000000006,29.509 +2020-07-07 05:30:00,96.03,38.126999999999995,42.281000000000006,29.509 +2020-07-07 05:45:00,100.96,35.614000000000004,42.281000000000006,29.509 +2020-07-07 06:00:00,111.3,36.497,50.801,29.509 +2020-07-07 06:15:00,114.63,36.082,50.801,29.509 +2020-07-07 06:30:00,116.56,35.349000000000004,50.801,29.509 +2020-07-07 06:45:00,116.13,37.391,50.801,29.509 +2020-07-07 07:00:00,116.59,37.498000000000005,60.202,29.509 +2020-07-07 07:15:00,121.92,37.93,60.202,29.509 +2020-07-07 07:30:00,124.36,35.623000000000005,60.202,29.509 +2020-07-07 07:45:00,123.71,35.817,60.202,29.509 +2020-07-07 08:00:00,119.38,31.735,54.461000000000006,29.509 +2020-07-07 08:15:00,124.37,34.859,54.461000000000006,29.509 +2020-07-07 08:30:00,128.67,36.022,54.461000000000006,29.509 +2020-07-07 08:45:00,130.1,38.647,54.461000000000006,29.509 +2020-07-07 09:00:00,129.85,32.748000000000005,50.753,29.509 +2020-07-07 09:15:00,128.0,32.054,50.753,29.509 +2020-07-07 09:30:00,130.61,35.906,50.753,29.509 +2020-07-07 09:45:00,129.99,39.417,50.753,29.509 +2020-07-07 10:00:00,122.45,36.611999999999995,49.703,29.509 +2020-07-07 10:15:00,120.63,38.272,49.703,29.509 +2020-07-07 10:30:00,122.78,38.313,49.703,29.509 +2020-07-07 10:45:00,123.45,39.629,49.703,29.509 +2020-07-07 11:00:00,128.68,37.385,49.42100000000001,29.509 +2020-07-07 11:15:00,125.65,38.714,49.42100000000001,29.509 +2020-07-07 11:30:00,122.76,40.018,49.42100000000001,29.509 +2020-07-07 11:45:00,121.95,41.35,49.42100000000001,29.509 +2020-07-07 12:00:00,118.98,36.525999999999996,47.155,29.509 +2020-07-07 12:15:00,125.09,36.022,47.155,29.509 +2020-07-07 12:30:00,122.87,34.824,47.155,29.509 +2020-07-07 12:45:00,119.92,35.959,47.155,29.509 +2020-07-07 13:00:00,121.51,36.201,47.515,29.509 +2020-07-07 13:15:00,124.02,37.568000000000005,47.515,29.509 +2020-07-07 13:30:00,121.3,35.8,47.515,29.509 +2020-07-07 13:45:00,120.45,35.42,47.515,29.509 +2020-07-07 14:00:00,111.95,37.211,47.575,29.509 +2020-07-07 14:15:00,112.15,36.14,47.575,29.509 +2020-07-07 14:30:00,118.73,35.104,47.575,29.509 +2020-07-07 14:45:00,117.88,35.671,47.575,29.509 +2020-07-07 15:00:00,112.52,37.69,48.903,29.509 +2020-07-07 15:15:00,106.84,35.296,48.903,29.509 +2020-07-07 15:30:00,107.4,33.681999999999995,48.903,29.509 +2020-07-07 15:45:00,99.77,31.961,48.903,29.509 +2020-07-07 16:00:00,96.93,34.83,50.218999999999994,29.509 +2020-07-07 16:15:00,106.09,34.543,50.218999999999994,29.509 +2020-07-07 16:30:00,106.41,33.641,50.218999999999994,29.509 +2020-07-07 16:45:00,104.59,30.386999999999997,50.218999999999994,29.509 +2020-07-07 17:00:00,99.96,34.125,55.396,29.509 +2020-07-07 17:15:00,103.8,34.11,55.396,29.509 +2020-07-07 17:30:00,100.99,32.974000000000004,55.396,29.509 +2020-07-07 17:45:00,102.8,31.754,55.396,29.509 +2020-07-07 18:00:00,108.74,34.804,55.583999999999996,29.509 +2020-07-07 18:15:00,108.95,34.722,55.583999999999996,29.509 +2020-07-07 18:30:00,107.59,32.679,55.583999999999996,29.509 +2020-07-07 18:45:00,103.26,35.739000000000004,55.583999999999996,29.509 +2020-07-07 19:00:00,99.07,36.917,56.071000000000005,29.509 +2020-07-07 19:15:00,94.57,35.938,56.071000000000005,29.509 +2020-07-07 19:30:00,92.99,34.843,56.071000000000005,29.509 +2020-07-07 19:45:00,92.6,34.101,56.071000000000005,29.509 +2020-07-07 20:00:00,91.59,31.27,61.55,29.509 +2020-07-07 20:15:00,90.41,30.826999999999998,61.55,29.509 +2020-07-07 20:30:00,90.06,31.373,61.55,29.509 +2020-07-07 20:45:00,90.65,31.985,61.55,29.509 +2020-07-07 21:00:00,90.29,30.355999999999998,55.94,29.509 +2020-07-07 21:15:00,88.11,31.968000000000004,55.94,29.509 +2020-07-07 21:30:00,85.72,32.819,55.94,29.509 +2020-07-07 21:45:00,84.05,33.887,55.94,29.509 +2020-07-07 22:00:00,82.01,31.055,52.857,29.509 +2020-07-07 22:15:00,79.35,33.702,52.857,29.509 +2020-07-07 22:30:00,77.27,29.464000000000002,52.857,29.509 +2020-07-07 22:45:00,75.9,26.239,52.857,29.509 +2020-07-07 23:00:00,73.88,23.0,46.04,29.509 +2020-07-07 23:15:00,72.06,21.55,46.04,29.509 +2020-07-07 23:30:00,71.73,20.384,46.04,29.509 +2020-07-07 23:45:00,70.42,19.437,46.04,29.509 +2020-07-08 00:00:00,68.87,18.723,42.195,29.509 +2020-07-08 00:15:00,68.28,19.582,42.195,29.509 +2020-07-08 00:30:00,67.17,18.331,42.195,29.509 +2020-07-08 00:45:00,67.5,18.262,42.195,29.509 +2020-07-08 01:00:00,68.65,18.267,38.82,29.509 +2020-07-08 01:15:00,68.23,17.430999999999997,38.82,29.509 +2020-07-08 01:30:00,67.33,15.877,38.82,29.509 +2020-07-08 01:45:00,67.32,15.865,38.82,29.509 +2020-07-08 02:00:00,67.95,15.613,37.023,29.509 +2020-07-08 02:15:00,67.93,14.513,37.023,29.509 +2020-07-08 02:30:00,75.12,16.292,37.023,29.509 +2020-07-08 02:45:00,73.61,17.028,37.023,29.509 +2020-07-08 03:00:00,77.07,18.215,36.818000000000005,29.509 +2020-07-08 03:15:00,72.12,17.471,36.818000000000005,29.509 +2020-07-08 03:30:00,73.91,16.761,36.818000000000005,29.509 +2020-07-08 03:45:00,71.79,16.022000000000002,36.818000000000005,29.509 +2020-07-08 04:00:00,77.39,20.733,37.495,29.509 +2020-07-08 04:15:00,82.0,26.840999999999998,37.495,29.509 +2020-07-08 04:30:00,84.87,24.173000000000002,37.495,29.509 +2020-07-08 04:45:00,83.56,24.188000000000002,37.495,29.509 +2020-07-08 05:00:00,86.92,36.789,39.858000000000004,29.509 +2020-07-08 05:15:00,93.46,43.852,39.858000000000004,29.509 +2020-07-08 05:30:00,93.59,38.008,39.858000000000004,29.509 +2020-07-08 05:45:00,96.52,35.519,39.858000000000004,29.509 +2020-07-08 06:00:00,99.68,36.399,52.867,29.509 +2020-07-08 06:15:00,102.4,35.982,52.867,29.509 +2020-07-08 06:30:00,108.54,35.269,52.867,29.509 +2020-07-08 06:45:00,113.47,37.338,52.867,29.509 +2020-07-08 07:00:00,108.0,37.436,66.061,29.509 +2020-07-08 07:15:00,102.54,37.89,66.061,29.509 +2020-07-08 07:30:00,100.01,35.586,66.061,29.509 +2020-07-08 07:45:00,101.07,35.809,66.061,29.509 +2020-07-08 08:00:00,108.39,31.736,58.532,29.509 +2020-07-08 08:15:00,116.1,34.872,58.532,29.509 +2020-07-08 08:30:00,117.34,36.025,58.532,29.509 +2020-07-08 08:45:00,115.72,38.645,58.532,29.509 +2020-07-08 09:00:00,111.76,32.743,56.047,29.509 +2020-07-08 09:15:00,108.9,32.047,56.047,29.509 +2020-07-08 09:30:00,108.08,35.893,56.047,29.509 +2020-07-08 09:45:00,116.56,39.406,56.047,29.509 +2020-07-08 10:00:00,120.29,36.609,53.823,29.509 +2020-07-08 10:15:00,118.95,38.266999999999996,53.823,29.509 +2020-07-08 10:30:00,112.11,38.305,53.823,29.509 +2020-07-08 10:45:00,109.74,39.623000000000005,53.823,29.509 +2020-07-08 11:00:00,109.06,37.376999999999995,54.184,29.509 +2020-07-08 11:15:00,108.4,38.705999999999996,54.184,29.509 +2020-07-08 11:30:00,105.6,40.0,54.184,29.509 +2020-07-08 11:45:00,107.2,41.326,54.184,29.509 +2020-07-08 12:00:00,114.53,36.522,52.628,29.509 +2020-07-08 12:15:00,112.75,36.016,52.628,29.509 +2020-07-08 12:30:00,101.99,34.808,52.628,29.509 +2020-07-08 12:45:00,99.23,35.94,52.628,29.509 +2020-07-08 13:00:00,100.2,36.167,52.31,29.509 +2020-07-08 13:15:00,102.73,37.527,52.31,29.509 +2020-07-08 13:30:00,102.61,35.765,52.31,29.509 +2020-07-08 13:45:00,102.47,35.391999999999996,52.31,29.509 +2020-07-08 14:00:00,116.5,37.185,52.278999999999996,29.509 +2020-07-08 14:15:00,112.73,36.115,52.278999999999996,29.509 +2020-07-08 14:30:00,108.85,35.069,52.278999999999996,29.509 +2020-07-08 14:45:00,109.45,35.644,52.278999999999996,29.509 +2020-07-08 15:00:00,101.37,37.671,53.306999999999995,29.509 +2020-07-08 15:15:00,100.94,35.272,53.306999999999995,29.509 +2020-07-08 15:30:00,99.62,33.659,53.306999999999995,29.509 +2020-07-08 15:45:00,97.35,31.93,53.306999999999995,29.509 +2020-07-08 16:00:00,93.45,34.812,55.358999999999995,29.509 +2020-07-08 16:15:00,94.89,34.528,55.358999999999995,29.509 +2020-07-08 16:30:00,98.99,33.643,55.358999999999995,29.509 +2020-07-08 16:45:00,99.62,30.389,55.358999999999995,29.509 +2020-07-08 17:00:00,98.93,34.132,59.211999999999996,29.509 +2020-07-08 17:15:00,98.18,34.126999999999995,59.211999999999996,29.509 +2020-07-08 17:30:00,98.72,32.994,59.211999999999996,29.509 +2020-07-08 17:45:00,100.38,31.776999999999997,59.211999999999996,29.509 +2020-07-08 18:00:00,99.58,34.832,60.403999999999996,29.509 +2020-07-08 18:15:00,99.0,34.734,60.403999999999996,29.509 +2020-07-08 18:30:00,100.18,32.691,60.403999999999996,29.509 +2020-07-08 18:45:00,98.99,35.751999999999995,60.403999999999996,29.509 +2020-07-08 19:00:00,96.37,36.931999999999995,60.993,29.509 +2020-07-08 19:15:00,92.43,35.945,60.993,29.509 +2020-07-08 19:30:00,91.2,34.844,60.993,29.509 +2020-07-08 19:45:00,90.88,34.098,60.993,29.509 +2020-07-08 20:00:00,90.29,31.255,66.6,29.509 +2020-07-08 20:15:00,88.95,30.811,66.6,29.509 +2020-07-08 20:30:00,89.13,31.355999999999998,66.6,29.509 +2020-07-08 20:45:00,91.03,31.976999999999997,66.6,29.509 +2020-07-08 21:00:00,89.33,30.351999999999997,59.855,29.509 +2020-07-08 21:15:00,87.63,31.965999999999998,59.855,29.509 +2020-07-08 21:30:00,85.13,32.796,59.855,29.509 +2020-07-08 21:45:00,83.76,33.858000000000004,59.855,29.509 +2020-07-08 22:00:00,81.36,31.031999999999996,54.942,29.509 +2020-07-08 22:15:00,79.43,33.68,54.942,29.509 +2020-07-08 22:30:00,76.01,29.427,54.942,29.509 +2020-07-08 22:45:00,74.2,26.193,54.942,29.509 +2020-07-08 23:00:00,74.17,22.959,46.056000000000004,29.509 +2020-07-08 23:15:00,72.84,21.531999999999996,46.056000000000004,29.509 +2020-07-08 23:30:00,72.63,20.379,46.056000000000004,29.509 +2020-07-08 23:45:00,72.27,19.425,46.056000000000004,29.509 +2020-07-09 00:00:00,70.77,18.729,40.859,29.509 +2020-07-09 00:15:00,69.68,19.587,40.859,29.509 +2020-07-09 00:30:00,68.62,18.339000000000002,40.859,29.509 +2020-07-09 00:45:00,68.26,18.276,40.859,29.509 +2020-07-09 01:00:00,68.62,18.287,39.06,29.509 +2020-07-09 01:15:00,67.79,17.444000000000003,39.06,29.509 +2020-07-09 01:30:00,66.52,15.892000000000001,39.06,29.509 +2020-07-09 01:45:00,67.76,15.872,39.06,29.509 +2020-07-09 02:00:00,68.72,15.626,37.592,29.509 +2020-07-09 02:15:00,67.64,14.513,37.592,29.509 +2020-07-09 02:30:00,67.33,16.301,37.592,29.509 +2020-07-09 02:45:00,67.89,17.039,37.592,29.509 +2020-07-09 03:00:00,69.13,18.219,37.416,29.509 +2020-07-09 03:15:00,70.24,17.485,37.416,29.509 +2020-07-09 03:30:00,71.26,16.783,37.416,29.509 +2020-07-09 03:45:00,72.08,16.06,37.416,29.509 +2020-07-09 04:00:00,76.24,20.737,38.176,29.509 +2020-07-09 04:15:00,75.02,26.815,38.176,29.509 +2020-07-09 04:30:00,77.62,24.14,38.176,29.509 +2020-07-09 04:45:00,80.21,24.154,38.176,29.509 +2020-07-09 05:00:00,85.53,36.703,41.203,29.509 +2020-07-09 05:15:00,89.78,43.691,41.203,29.509 +2020-07-09 05:30:00,93.38,37.9,41.203,29.509 +2020-07-09 05:45:00,101.99,35.434,41.203,29.509 +2020-07-09 06:00:00,106.23,36.31,51.09,29.509 +2020-07-09 06:15:00,109.0,35.891999999999996,51.09,29.509 +2020-07-09 06:30:00,106.78,35.196999999999996,51.09,29.509 +2020-07-09 06:45:00,104.81,37.294000000000004,51.09,29.509 +2020-07-09 07:00:00,106.36,37.384,63.541000000000004,29.509 +2020-07-09 07:15:00,110.69,37.859,63.541000000000004,29.509 +2020-07-09 07:30:00,112.06,35.56,63.541000000000004,29.509 +2020-07-09 07:45:00,118.5,35.809,63.541000000000004,29.509 +2020-07-09 08:00:00,121.66,31.746,55.65,29.509 +2020-07-09 08:15:00,122.22,34.893,55.65,29.509 +2020-07-09 08:30:00,118.81,36.037,55.65,29.509 +2020-07-09 08:45:00,116.9,38.649,55.65,29.509 +2020-07-09 09:00:00,117.8,32.743,51.833999999999996,29.509 +2020-07-09 09:15:00,120.31,32.048,51.833999999999996,29.509 +2020-07-09 09:30:00,120.69,35.887,51.833999999999996,29.509 +2020-07-09 09:45:00,124.35,39.402,51.833999999999996,29.509 +2020-07-09 10:00:00,130.54,36.613,49.70399999999999,29.509 +2020-07-09 10:15:00,131.59,38.268,49.70399999999999,29.509 +2020-07-09 10:30:00,127.98,38.302,49.70399999999999,29.509 +2020-07-09 10:45:00,122.86,39.621,49.70399999999999,29.509 +2020-07-09 11:00:00,122.53,37.374,48.593999999999994,29.509 +2020-07-09 11:15:00,121.63,38.705,48.593999999999994,29.509 +2020-07-09 11:30:00,121.85,39.986,48.593999999999994,29.509 +2020-07-09 11:45:00,120.39,41.306999999999995,48.593999999999994,29.509 +2020-07-09 12:00:00,120.74,36.523,46.275,29.509 +2020-07-09 12:15:00,120.27,36.015,46.275,29.509 +2020-07-09 12:30:00,117.63,34.798,46.275,29.509 +2020-07-09 12:45:00,114.26,35.927,46.275,29.509 +2020-07-09 13:00:00,109.73,36.135999999999996,45.803000000000004,29.509 +2020-07-09 13:15:00,108.7,37.491,45.803000000000004,29.509 +2020-07-09 13:30:00,113.78,35.734,45.803000000000004,29.509 +2020-07-09 13:45:00,117.0,35.368,45.803000000000004,29.509 +2020-07-09 14:00:00,110.72,37.163000000000004,46.251999999999995,29.509 +2020-07-09 14:15:00,111.27,36.095,46.251999999999995,29.509 +2020-07-09 14:30:00,112.08,35.039,46.251999999999995,29.509 +2020-07-09 14:45:00,109.67,35.62,46.251999999999995,29.509 +2020-07-09 15:00:00,109.08,37.655,48.309,29.509 +2020-07-09 15:15:00,104.89,35.251,48.309,29.509 +2020-07-09 15:30:00,100.7,33.638000000000005,48.309,29.509 +2020-07-09 15:45:00,104.1,31.903000000000002,48.309,29.509 +2020-07-09 16:00:00,103.6,34.797,49.681999999999995,29.509 +2020-07-09 16:15:00,105.47,34.515,49.681999999999995,29.509 +2020-07-09 16:30:00,100.69,33.648,49.681999999999995,29.509 +2020-07-09 16:45:00,101.97,30.396,49.681999999999995,29.509 +2020-07-09 17:00:00,103.65,34.143,53.086000000000006,29.509 +2020-07-09 17:15:00,103.74,34.149,53.086000000000006,29.509 +2020-07-09 17:30:00,105.78,33.018,53.086000000000006,29.509 +2020-07-09 17:45:00,108.82,31.804000000000002,53.086000000000006,29.509 +2020-07-09 18:00:00,108.39,34.865,54.038999999999994,29.509 +2020-07-09 18:15:00,108.03,34.75,54.038999999999994,29.509 +2020-07-09 18:30:00,106.59,32.711,54.038999999999994,29.509 +2020-07-09 18:45:00,103.0,35.77,54.038999999999994,29.509 +2020-07-09 19:00:00,100.88,36.952,53.408,29.509 +2020-07-09 19:15:00,97.96,35.959,53.408,29.509 +2020-07-09 19:30:00,94.18,34.851,53.408,29.509 +2020-07-09 19:45:00,92.67,34.101,53.408,29.509 +2020-07-09 20:00:00,90.99,31.249000000000002,55.309,29.509 +2020-07-09 20:15:00,90.23,30.802,55.309,29.509 +2020-07-09 20:30:00,90.8,31.345,55.309,29.509 +2020-07-09 20:45:00,92.1,31.975,55.309,29.509 +2020-07-09 21:00:00,89.34,30.354,51.585,29.509 +2020-07-09 21:15:00,87.34,31.968000000000004,51.585,29.509 +2020-07-09 21:30:00,84.56,32.778,51.585,29.509 +2020-07-09 21:45:00,83.79,33.833,51.585,29.509 +2020-07-09 22:00:00,80.79,31.013,48.006,29.509 +2020-07-09 22:15:00,78.88,33.661,48.006,29.509 +2020-07-09 22:30:00,76.76,29.392,48.006,29.509 +2020-07-09 22:45:00,75.3,26.151999999999997,48.006,29.509 +2020-07-09 23:00:00,73.05,22.921,42.309,29.509 +2020-07-09 23:15:00,72.92,21.516,42.309,29.509 +2020-07-09 23:30:00,71.81,20.377,42.309,29.509 +2020-07-09 23:45:00,70.78,19.418,42.309,29.509 +2020-07-10 00:00:00,75.87,16.908,39.649,29.509 +2020-07-10 00:15:00,78.17,17.980999999999998,39.649,29.509 +2020-07-10 00:30:00,75.85,17.027,39.649,29.509 +2020-07-10 00:45:00,71.62,17.408,39.649,29.509 +2020-07-10 01:00:00,69.81,17.038,37.744,29.509 +2020-07-10 01:15:00,68.97,15.522,37.744,29.509 +2020-07-10 01:30:00,67.92,14.729000000000001,37.744,29.509 +2020-07-10 01:45:00,69.22,14.513,37.744,29.509 +2020-07-10 02:00:00,68.97,15.165999999999999,36.965,29.509 +2020-07-10 02:15:00,71.25,14.513,36.965,29.509 +2020-07-10 02:30:00,75.07,16.63,36.965,29.509 +2020-07-10 02:45:00,74.85,16.655,36.965,29.509 +2020-07-10 03:00:00,75.76,18.677,37.678000000000004,29.509 +2020-07-10 03:15:00,71.23,16.657,37.678000000000004,29.509 +2020-07-10 03:30:00,77.96,15.714,37.678000000000004,29.509 +2020-07-10 03:45:00,73.99,15.908,37.678000000000004,29.509 +2020-07-10 04:00:00,73.54,20.688000000000002,38.591,29.509 +2020-07-10 04:15:00,74.61,25.119,38.591,29.509 +2020-07-10 04:30:00,77.28,23.421,38.591,29.509 +2020-07-10 04:45:00,79.7,22.803,38.591,29.509 +2020-07-10 05:00:00,86.23,34.849000000000004,40.666,29.509 +2020-07-10 05:15:00,91.4,42.71,40.666,29.509 +2020-07-10 05:30:00,95.84,37.144,40.666,29.509 +2020-07-10 05:45:00,103.23,34.24,40.666,29.509 +2020-07-10 06:00:00,106.94,35.33,51.784,29.509 +2020-07-10 06:15:00,106.98,35.125,51.784,29.509 +2020-07-10 06:30:00,107.3,34.42,51.784,29.509 +2020-07-10 06:45:00,110.82,36.363,51.784,29.509 +2020-07-10 07:00:00,103.93,37.14,61.383,29.509 +2020-07-10 07:15:00,103.93,38.543,61.383,29.509 +2020-07-10 07:30:00,100.62,34.223,61.383,29.509 +2020-07-10 07:45:00,107.12,34.312,61.383,29.509 +2020-07-10 08:00:00,114.53,31.116999999999997,55.272,29.509 +2020-07-10 08:15:00,110.12,34.992,55.272,29.509 +2020-07-10 08:30:00,106.93,35.983000000000004,55.272,29.509 +2020-07-10 08:45:00,109.04,38.505,55.272,29.509 +2020-07-10 09:00:00,114.76,30.16,53.506,29.509 +2020-07-10 09:15:00,113.51,31.453000000000003,53.506,29.509 +2020-07-10 09:30:00,110.89,34.580999999999996,53.506,29.509 +2020-07-10 09:45:00,107.02,38.509,53.506,29.509 +2020-07-10 10:00:00,113.21,35.611,51.363,29.509 +2020-07-10 10:15:00,111.84,36.994,51.363,29.509 +2020-07-10 10:30:00,112.42,37.61,51.363,29.509 +2020-07-10 10:45:00,110.71,38.852,51.363,29.509 +2020-07-10 11:00:00,112.67,36.874,51.043,29.509 +2020-07-10 11:15:00,113.11,37.103,51.043,29.509 +2020-07-10 11:30:00,107.88,37.903,51.043,29.509 +2020-07-10 11:45:00,109.91,38.202,51.043,29.509 +2020-07-10 12:00:00,111.54,33.830999999999996,47.52,29.509 +2020-07-10 12:15:00,112.77,32.756,47.52,29.509 +2020-07-10 12:30:00,109.24,31.646,47.52,29.509 +2020-07-10 12:45:00,105.69,31.91,47.52,29.509 +2020-07-10 13:00:00,106.61,32.681,45.494,29.509 +2020-07-10 13:15:00,112.86,34.179,45.494,29.509 +2020-07-10 13:30:00,115.59,33.268,45.494,29.509 +2020-07-10 13:45:00,109.93,33.236999999999995,45.494,29.509 +2020-07-10 14:00:00,105.89,34.242,43.883,29.509 +2020-07-10 14:15:00,101.49,33.646,43.883,29.509 +2020-07-10 14:30:00,95.86,34.148,43.883,29.509 +2020-07-10 14:45:00,97.16,33.991,43.883,29.509 +2020-07-10 15:00:00,94.55,35.974000000000004,45.714,29.509 +2020-07-10 15:15:00,89.18,33.336999999999996,45.714,29.509 +2020-07-10 15:30:00,91.05,31.205,45.714,29.509 +2020-07-10 15:45:00,100.25,30.261999999999997,45.714,29.509 +2020-07-10 16:00:00,97.71,32.321999999999996,48.222,29.509 +2020-07-10 16:15:00,101.07,32.548,48.222,29.509 +2020-07-10 16:30:00,98.92,31.503,48.222,29.509 +2020-07-10 16:45:00,98.38,27.433000000000003,48.222,29.509 +2020-07-10 17:00:00,103.96,32.991,52.619,29.509 +2020-07-10 17:15:00,105.3,32.848,52.619,29.509 +2020-07-10 17:30:00,104.89,31.909000000000002,52.619,29.509 +2020-07-10 17:45:00,101.36,30.537,52.619,29.509 +2020-07-10 18:00:00,102.68,33.596,52.99,29.509 +2020-07-10 18:15:00,105.55,32.494,52.99,29.509 +2020-07-10 18:30:00,106.3,30.329,52.99,29.509 +2020-07-10 18:45:00,103.31,33.828,52.99,29.509 +2020-07-10 19:00:00,97.76,35.876,51.923,29.509 +2020-07-10 19:15:00,92.42,35.438,51.923,29.509 +2020-07-10 19:30:00,92.95,34.405,51.923,29.509 +2020-07-10 19:45:00,97.4,32.611,51.923,29.509 +2020-07-10 20:00:00,95.69,29.585,56.238,29.509 +2020-07-10 20:15:00,92.52,29.965999999999998,56.238,29.509 +2020-07-10 20:30:00,86.88,30.0,56.238,29.509 +2020-07-10 20:45:00,87.29,29.768,56.238,29.509 +2020-07-10 21:00:00,83.47,29.494,52.426,29.509 +2020-07-10 21:15:00,83.93,32.832,52.426,29.509 +2020-07-10 21:30:00,80.36,33.465,52.426,29.509 +2020-07-10 21:45:00,84.98,34.704,52.426,29.509 +2020-07-10 22:00:00,82.87,31.701999999999998,48.196000000000005,29.509 +2020-07-10 22:15:00,79.75,34.096,48.196000000000005,29.509 +2020-07-10 22:30:00,73.88,34.513000000000005,48.196000000000005,29.509 +2020-07-10 22:45:00,70.67,32.027,48.196000000000005,29.509 +2020-07-10 23:00:00,71.98,30.574,41.71,29.509 +2020-07-10 23:15:00,75.31,27.635,41.71,29.509 +2020-07-10 23:30:00,73.88,24.671999999999997,41.71,29.509 +2020-07-10 23:45:00,69.5,23.603,41.71,29.509 +2020-07-11 00:00:00,66.78,18.323,41.105,29.398000000000003 +2020-07-11 00:15:00,65.61,18.863,41.105,29.398000000000003 +2020-07-11 00:30:00,68.91,17.372,41.105,29.398000000000003 +2020-07-11 00:45:00,71.3,16.97,41.105,29.398000000000003 +2020-07-11 01:00:00,71.31,16.866,36.934,29.398000000000003 +2020-07-11 01:15:00,66.13,15.995999999999999,36.934,29.398000000000003 +2020-07-11 01:30:00,62.39,14.513,36.934,29.398000000000003 +2020-07-11 01:45:00,65.34,15.394,36.934,29.398000000000003 +2020-07-11 02:00:00,69.2,15.074000000000002,34.782,29.398000000000003 +2020-07-11 02:15:00,69.08,14.513,34.782,29.398000000000003 +2020-07-11 02:30:00,66.46,14.948,34.782,29.398000000000003 +2020-07-11 02:45:00,61.07,15.79,34.782,29.398000000000003 +2020-07-11 03:00:00,61.65,16.352,34.489000000000004,29.398000000000003 +2020-07-11 03:15:00,67.74,14.513,34.489000000000004,29.398000000000003 +2020-07-11 03:30:00,68.92,14.513,34.489000000000004,29.398000000000003 +2020-07-11 03:45:00,67.2,14.882,34.489000000000004,29.398000000000003 +2020-07-11 04:00:00,61.39,17.837,34.111,29.398000000000003 +2020-07-11 04:15:00,62.51,21.416,34.111,29.398000000000003 +2020-07-11 04:30:00,67.0,18.064,34.111,29.398000000000003 +2020-07-11 04:45:00,68.68,17.75,34.111,29.398000000000003 +2020-07-11 05:00:00,67.76,21.743000000000002,33.283,29.398000000000003 +2020-07-11 05:15:00,65.79,18.933,33.283,29.398000000000003 +2020-07-11 05:30:00,71.55,14.975999999999999,33.283,29.398000000000003 +2020-07-11 05:45:00,73.19,16.502,33.283,29.398000000000003 +2020-07-11 06:00:00,72.98,28.447,33.653,29.398000000000003 +2020-07-11 06:15:00,70.87,35.666,33.653,29.398000000000003 +2020-07-11 06:30:00,69.27,32.253,33.653,29.398000000000003 +2020-07-11 06:45:00,72.03,31.250999999999998,33.653,29.398000000000003 +2020-07-11 07:00:00,78.34,30.91,36.732,29.398000000000003 +2020-07-11 07:15:00,79.62,31.045,36.732,29.398000000000003 +2020-07-11 07:30:00,79.34,28.175,36.732,29.398000000000003 +2020-07-11 07:45:00,76.51,29.061,36.732,29.398000000000003 +2020-07-11 08:00:00,81.35,26.475,41.318999999999996,29.398000000000003 +2020-07-11 08:15:00,81.1,29.944000000000003,41.318999999999996,29.398000000000003 +2020-07-11 08:30:00,79.87,30.825,41.318999999999996,29.398000000000003 +2020-07-11 08:45:00,74.11,34.164,41.318999999999996,29.398000000000003 +2020-07-11 09:00:00,76.56,29.0,43.195,29.398000000000003 +2020-07-11 09:15:00,73.1,30.758000000000003,43.195,29.398000000000003 +2020-07-11 09:30:00,79.0,34.347,43.195,29.398000000000003 +2020-07-11 09:45:00,80.51,37.795,43.195,29.398000000000003 +2020-07-11 10:00:00,81.2,35.568000000000005,41.843999999999994,29.398000000000003 +2020-07-11 10:15:00,76.6,37.312,41.843999999999994,29.398000000000003 +2020-07-11 10:30:00,80.08,37.554,41.843999999999994,29.398000000000003 +2020-07-11 10:45:00,79.57,38.348,41.843999999999994,29.398000000000003 +2020-07-11 11:00:00,72.28,36.21,39.035,29.398000000000003 +2020-07-11 11:15:00,72.4,37.393,39.035,29.398000000000003 +2020-07-11 11:30:00,66.56,38.545,39.035,29.398000000000003 +2020-07-11 11:45:00,64.38,39.599000000000004,39.035,29.398000000000003 +2020-07-11 12:00:00,63.06,35.757,38.001,29.398000000000003 +2020-07-11 12:15:00,61.1,35.538000000000004,38.001,29.398000000000003 +2020-07-11 12:30:00,60.22,34.263000000000005,38.001,29.398000000000003 +2020-07-11 12:45:00,59.31,35.336999999999996,38.001,29.398000000000003 +2020-07-11 13:00:00,58.37,35.196999999999996,34.747,29.398000000000003 +2020-07-11 13:15:00,58.07,36.245,34.747,29.398000000000003 +2020-07-11 13:30:00,57.74,35.563,34.747,29.398000000000003 +2020-07-11 13:45:00,57.83,34.092,34.747,29.398000000000003 +2020-07-11 14:00:00,58.61,35.078,33.434,29.398000000000003 +2020-07-11 14:15:00,58.61,33.199,33.434,29.398000000000003 +2020-07-11 14:30:00,59.59,33.353,33.434,29.398000000000003 +2020-07-11 14:45:00,60.3,33.694,33.434,29.398000000000003 +2020-07-11 15:00:00,61.37,36.101,35.921,29.398000000000003 +2020-07-11 15:15:00,61.08,34.154,35.921,29.398000000000003 +2020-07-11 15:30:00,61.78,32.147,35.921,29.398000000000003 +2020-07-11 15:45:00,62.97,30.228,35.921,29.398000000000003 +2020-07-11 16:00:00,64.97,34.564,39.427,29.398000000000003 +2020-07-11 16:15:00,65.55,33.809,39.427,29.398000000000003 +2020-07-11 16:30:00,67.43,33.021,39.427,29.398000000000003 +2020-07-11 16:45:00,69.59,28.877,39.427,29.398000000000003 +2020-07-11 17:00:00,71.58,33.213,44.096000000000004,29.398000000000003 +2020-07-11 17:15:00,72.95,30.74,44.096000000000004,29.398000000000003 +2020-07-11 17:30:00,74.4,29.671,44.096000000000004,29.398000000000003 +2020-07-11 17:45:00,76.23,28.840999999999998,44.096000000000004,29.398000000000003 +2020-07-11 18:00:00,76.65,33.328,43.931000000000004,29.398000000000003 +2020-07-11 18:15:00,76.76,33.864000000000004,43.931000000000004,29.398000000000003 +2020-07-11 18:30:00,77.06,33.051,43.931000000000004,29.398000000000003 +2020-07-11 18:45:00,77.28,33.094,43.931000000000004,29.398000000000003 +2020-07-11 19:00:00,75.61,33.381,42.187,29.398000000000003 +2020-07-11 19:15:00,73.06,31.915,42.187,29.398000000000003 +2020-07-11 19:30:00,72.09,31.64,42.187,29.398000000000003 +2020-07-11 19:45:00,72.06,31.671,42.187,29.398000000000003 +2020-07-11 20:00:00,71.02,29.423000000000002,38.315,29.398000000000003 +2020-07-11 20:15:00,70.88,29.055,38.315,29.398000000000003 +2020-07-11 20:30:00,71.67,28.191999999999997,38.315,29.398000000000003 +2020-07-11 20:45:00,73.05,29.901999999999997,38.315,29.398000000000003 +2020-07-11 21:00:00,72.16,28.011999999999997,36.843,29.398000000000003 +2020-07-11 21:15:00,70.77,30.971999999999998,36.843,29.398000000000003 +2020-07-11 21:30:00,69.19,31.735,36.843,29.398000000000003 +2020-07-11 21:45:00,68.12,32.418,36.843,29.398000000000003 +2020-07-11 22:00:00,65.88,29.346,37.260999999999996,29.398000000000003 +2020-07-11 22:15:00,64.83,31.903000000000002,37.260999999999996,29.398000000000003 +2020-07-11 22:30:00,63.5,31.685,37.260999999999996,29.398000000000003 +2020-07-11 22:45:00,61.86,29.505,37.260999999999996,29.398000000000003 +2020-07-11 23:00:00,60.37,27.302,32.148,29.398000000000003 +2020-07-11 23:15:00,59.02,24.873,32.148,29.398000000000003 +2020-07-11 23:30:00,58.04,24.506999999999998,32.148,29.398000000000003 +2020-07-11 23:45:00,57.38,23.886,32.148,29.398000000000003 +2020-07-12 00:00:00,56.58,19.749000000000002,28.905,29.398000000000003 +2020-07-12 00:15:00,55.15,19.109,28.905,29.398000000000003 +2020-07-12 00:30:00,55.08,17.485,28.905,29.398000000000003 +2020-07-12 00:45:00,55.02,16.945,28.905,29.398000000000003 +2020-07-12 01:00:00,54.63,17.125999999999998,26.906999999999996,29.398000000000003 +2020-07-12 01:15:00,54.08,16.081,26.906999999999996,29.398000000000003 +2020-07-12 01:30:00,54.07,14.513,26.906999999999996,29.398000000000003 +2020-07-12 01:45:00,53.22,14.932,26.906999999999996,29.398000000000003 +2020-07-12 02:00:00,53.3,14.73,25.938000000000002,29.398000000000003 +2020-07-12 02:15:00,52.94,14.513,25.938000000000002,29.398000000000003 +2020-07-12 02:30:00,53.05,15.523,25.938000000000002,29.398000000000003 +2020-07-12 02:45:00,52.79,16.05,25.938000000000002,29.398000000000003 +2020-07-12 03:00:00,53.08,17.264,24.693,29.398000000000003 +2020-07-12 03:15:00,52.25,14.882,24.693,29.398000000000003 +2020-07-12 03:30:00,52.6,14.513,24.693,29.398000000000003 +2020-07-12 03:45:00,52.24,14.513,24.693,29.398000000000003 +2020-07-12 04:00:00,51.42,17.385,25.683000000000003,29.398000000000003 +2020-07-12 04:15:00,51.0,20.531,25.683000000000003,29.398000000000003 +2020-07-12 04:30:00,50.5,18.554000000000002,25.683000000000003,29.398000000000003 +2020-07-12 04:45:00,50.97,17.746,25.683000000000003,29.398000000000003 +2020-07-12 05:00:00,51.24,22.005,26.023000000000003,29.398000000000003 +2020-07-12 05:15:00,51.43,18.430999999999997,26.023000000000003,29.398000000000003 +2020-07-12 05:30:00,51.69,14.513,26.023000000000003,29.398000000000003 +2020-07-12 05:45:00,52.25,15.375,26.023000000000003,29.398000000000003 +2020-07-12 06:00:00,52.24,24.9,25.834,29.398000000000003 +2020-07-12 06:15:00,52.9,33.04,25.834,29.398000000000003 +2020-07-12 06:30:00,53.7,28.971,25.834,29.398000000000003 +2020-07-12 06:45:00,55.15,27.016,25.834,29.398000000000003 +2020-07-12 07:00:00,54.82,26.895,27.765,29.398000000000003 +2020-07-12 07:15:00,55.23,25.395,27.765,29.398000000000003 +2020-07-12 07:30:00,56.51,23.913,27.765,29.398000000000003 +2020-07-12 07:45:00,57.17,24.826999999999998,27.765,29.398000000000003 +2020-07-12 08:00:00,55.26,22.965,31.357,29.398000000000003 +2020-07-12 08:15:00,55.02,27.676,31.357,29.398000000000003 +2020-07-12 08:30:00,54.22,29.362,31.357,29.398000000000003 +2020-07-12 08:45:00,55.5,32.498000000000005,31.357,29.398000000000003 +2020-07-12 09:00:00,56.55,27.249000000000002,33.238,29.398000000000003 +2020-07-12 09:15:00,54.44,28.454,33.238,29.398000000000003 +2020-07-12 09:30:00,53.99,32.496,33.238,29.398000000000003 +2020-07-12 09:45:00,54.89,37.0,33.238,29.398000000000003 +2020-07-12 10:00:00,55.54,35.193000000000005,34.22,29.398000000000003 +2020-07-12 10:15:00,57.68,37.039,34.22,29.398000000000003 +2020-07-12 10:30:00,59.4,37.47,34.22,29.398000000000003 +2020-07-12 10:45:00,58.87,39.461,34.22,29.398000000000003 +2020-07-12 11:00:00,56.65,36.895,36.298,29.398000000000003 +2020-07-12 11:15:00,55.61,37.598,36.298,29.398000000000003 +2020-07-12 11:30:00,53.69,39.349000000000004,36.298,29.398000000000003 +2020-07-12 11:45:00,51.82,40.623000000000005,36.298,29.398000000000003 +2020-07-12 12:00:00,49.79,37.971,33.52,29.398000000000003 +2020-07-12 12:15:00,48.34,36.944,33.52,29.398000000000003 +2020-07-12 12:30:00,47.06,35.995,33.52,29.398000000000003 +2020-07-12 12:45:00,46.84,36.466,33.52,29.398000000000003 +2020-07-12 13:00:00,45.47,36.035,30.12,29.398000000000003 +2020-07-12 13:15:00,44.9,36.248000000000005,30.12,29.398000000000003 +2020-07-12 13:30:00,46.01,34.412,30.12,29.398000000000003 +2020-07-12 13:45:00,48.63,34.175,30.12,29.398000000000003 +2020-07-12 14:00:00,47.77,36.409,27.233,29.398000000000003 +2020-07-12 14:15:00,50.67,34.899,27.233,29.398000000000003 +2020-07-12 14:30:00,49.51,33.652,27.233,29.398000000000003 +2020-07-12 14:45:00,50.09,32.899,27.233,29.398000000000003 +2020-07-12 15:00:00,49.11,35.577,27.468000000000004,29.398000000000003 +2020-07-12 15:15:00,51.61,32.717,27.468000000000004,29.398000000000003 +2020-07-12 15:30:00,52.28,30.478,27.468000000000004,29.398000000000003 +2020-07-12 15:45:00,54.69,28.804000000000002,27.468000000000004,29.398000000000003 +2020-07-12 16:00:00,56.69,31.328000000000003,30.8,29.398000000000003 +2020-07-12 16:15:00,57.79,30.877,30.8,29.398000000000003 +2020-07-12 16:30:00,60.36,31.142,30.8,29.398000000000003 +2020-07-12 16:45:00,62.51,27.061999999999998,30.8,29.398000000000003 +2020-07-12 17:00:00,64.81,31.787,37.806,29.398000000000003 +2020-07-12 17:15:00,65.45,30.935,37.806,29.398000000000003 +2020-07-12 17:30:00,67.71,30.695999999999998,37.806,29.398000000000003 +2020-07-12 17:45:00,68.61,30.166999999999998,37.806,29.398000000000003 +2020-07-12 18:00:00,71.24,35.333,40.766,29.398000000000003 +2020-07-12 18:15:00,71.8,35.356,40.766,29.398000000000003 +2020-07-12 18:30:00,72.57,34.407,40.766,29.398000000000003 +2020-07-12 18:45:00,72.89,34.463,40.766,29.398000000000003 +2020-07-12 19:00:00,72.83,37.047,41.163000000000004,29.398000000000003 +2020-07-12 19:15:00,71.76,34.399,41.163000000000004,29.398000000000003 +2020-07-12 19:30:00,70.93,33.869,41.163000000000004,29.398000000000003 +2020-07-12 19:45:00,71.3,33.354,41.163000000000004,29.398000000000003 +2020-07-12 20:00:00,68.86,31.265,39.885999999999996,29.398000000000003 +2020-07-12 20:15:00,69.89,30.703000000000003,39.885999999999996,29.398000000000003 +2020-07-12 20:30:00,71.35,30.611,39.885999999999996,29.398000000000003 +2020-07-12 20:45:00,74.04,30.651,39.885999999999996,29.398000000000003 +2020-07-12 21:00:00,76.76,28.779,38.900999999999996,29.398000000000003 +2020-07-12 21:15:00,76.45,31.459,38.900999999999996,29.398000000000003 +2020-07-12 21:30:00,75.21,31.52,38.900999999999996,29.398000000000003 +2020-07-12 21:45:00,73.92,32.556,38.900999999999996,29.398000000000003 +2020-07-12 22:00:00,72.32,31.649,39.806999999999995,29.398000000000003 +2020-07-12 22:15:00,71.26,32.507,39.806999999999995,29.398000000000003 +2020-07-12 22:30:00,70.12,31.899,39.806999999999995,29.398000000000003 +2020-07-12 22:45:00,69.17,28.441999999999997,39.806999999999995,29.398000000000003 +2020-07-12 23:00:00,66.25,26.066999999999997,35.564,29.398000000000003 +2020-07-12 23:15:00,66.98,24.875999999999998,35.564,29.398000000000003 +2020-07-12 23:30:00,67.33,23.935,35.564,29.398000000000003 +2020-07-12 23:45:00,65.65,23.429000000000002,35.564,29.398000000000003 +2020-07-13 00:00:00,63.25,21.121,36.578,29.509 +2020-07-13 00:15:00,63.73,21.145,36.578,29.509 +2020-07-13 00:30:00,63.24,19.121,36.578,29.509 +2020-07-13 00:45:00,64.24,18.207,36.578,29.509 +2020-07-13 01:00:00,62.98,18.792,35.292,29.509 +2020-07-13 01:15:00,64.06,17.78,35.292,29.509 +2020-07-13 01:30:00,62.35,16.386,35.292,29.509 +2020-07-13 01:45:00,62.1,16.892,35.292,29.509 +2020-07-13 02:00:00,62.13,17.167,34.319,29.509 +2020-07-13 02:15:00,63.93,14.513,34.319,29.509 +2020-07-13 02:30:00,62.7,16.987000000000002,34.319,29.509 +2020-07-13 02:45:00,68.66,17.396,34.319,29.509 +2020-07-13 03:00:00,71.71,19.061,33.13,29.509 +2020-07-13 03:15:00,70.72,17.35,33.13,29.509 +2020-07-13 03:30:00,68.96,16.737000000000002,33.13,29.509 +2020-07-13 03:45:00,68.2,17.241,33.13,29.509 +2020-07-13 04:00:00,71.65,23.105999999999998,33.851,29.509 +2020-07-13 04:15:00,75.48,29.046,33.851,29.509 +2020-07-13 04:30:00,81.43,26.454,33.851,29.509 +2020-07-13 04:45:00,88.04,26.021,33.851,29.509 +2020-07-13 05:00:00,87.82,36.985,38.718,29.509 +2020-07-13 05:15:00,92.38,43.06399999999999,38.718,29.509 +2020-07-13 05:30:00,92.03,37.214,38.718,29.509 +2020-07-13 05:45:00,94.27,35.575,38.718,29.509 +2020-07-13 06:00:00,105.23,35.279,51.648999999999994,29.509 +2020-07-13 06:15:00,111.06,34.735,51.648999999999994,29.509 +2020-07-13 06:30:00,115.27,34.412,51.648999999999994,29.509 +2020-07-13 06:45:00,111.43,37.519,51.648999999999994,29.509 +2020-07-13 07:00:00,115.92,37.404,60.159,29.509 +2020-07-13 07:15:00,114.27,38.225,60.159,29.509 +2020-07-13 07:30:00,121.23,35.899,60.159,29.509 +2020-07-13 07:45:00,121.9,37.286,60.159,29.509 +2020-07-13 08:00:00,121.83,33.344,53.8,29.509 +2020-07-13 08:15:00,117.34,36.936,53.8,29.509 +2020-07-13 08:30:00,119.03,37.851,53.8,29.509 +2020-07-13 08:45:00,125.58,41.396,53.8,29.509 +2020-07-13 09:00:00,127.01,35.063,50.583,29.509 +2020-07-13 09:15:00,124.63,34.619,50.583,29.509 +2020-07-13 09:30:00,120.25,37.743,50.583,29.509 +2020-07-13 09:45:00,127.67,39.821999999999996,50.583,29.509 +2020-07-13 10:00:00,129.63,38.476,49.11600000000001,29.509 +2020-07-13 10:15:00,127.89,40.185,49.11600000000001,29.509 +2020-07-13 10:30:00,123.11,40.189,49.11600000000001,29.509 +2020-07-13 10:45:00,122.39,40.455,49.11600000000001,29.509 +2020-07-13 11:00:00,118.84,38.315,49.056000000000004,29.509 +2020-07-13 11:15:00,121.61,39.187,49.056000000000004,29.509 +2020-07-13 11:30:00,114.5,41.566,49.056000000000004,29.509 +2020-07-13 11:45:00,110.96,43.393,49.056000000000004,29.509 +2020-07-13 12:00:00,107.31,38.772,47.227,29.509 +2020-07-13 12:15:00,105.66,37.86,47.227,29.509 +2020-07-13 12:30:00,102.31,35.75,47.227,29.509 +2020-07-13 12:45:00,93.18,36.098,47.227,29.509 +2020-07-13 13:00:00,92.65,36.595,47.006,29.509 +2020-07-13 13:15:00,92.56,35.967,47.006,29.509 +2020-07-13 13:30:00,91.16,34.355,47.006,29.509 +2020-07-13 13:45:00,91.85,35.071999999999996,47.006,29.509 +2020-07-13 14:00:00,90.82,36.405,47.19,29.509 +2020-07-13 14:15:00,91.72,35.571999999999996,47.19,29.509 +2020-07-13 14:30:00,90.69,34.181999999999995,47.19,29.509 +2020-07-13 14:45:00,90.03,35.629,47.19,29.509 +2020-07-13 15:00:00,93.94,37.814,47.846000000000004,29.509 +2020-07-13 15:15:00,99.23,34.43,47.846000000000004,29.509 +2020-07-13 15:30:00,95.18,33.066,47.846000000000004,29.509 +2020-07-13 15:45:00,96.44,30.903000000000002,47.846000000000004,29.509 +2020-07-13 16:00:00,96.49,34.625,49.641000000000005,29.509 +2020-07-13 16:15:00,95.72,34.295,49.641000000000005,29.509 +2020-07-13 16:30:00,96.85,33.941,49.641000000000005,29.509 +2020-07-13 16:45:00,94.4,29.968000000000004,49.641000000000005,29.509 +2020-07-13 17:00:00,98.43,33.529,54.133,29.509 +2020-07-13 17:15:00,98.75,33.147,54.133,29.509 +2020-07-13 17:30:00,99.74,32.542,54.133,29.509 +2020-07-13 17:45:00,98.7,31.698,54.133,29.509 +2020-07-13 18:00:00,102.1,35.762,53.761,29.509 +2020-07-13 18:15:00,99.07,33.991,53.761,29.509 +2020-07-13 18:30:00,100.45,32.218,53.761,29.509 +2020-07-13 18:45:00,100.43,35.531,53.761,29.509 +2020-07-13 19:00:00,97.31,37.945,53.923,29.509 +2020-07-13 19:15:00,93.81,36.722,53.923,29.509 +2020-07-13 19:30:00,93.3,35.78,53.923,29.509 +2020-07-13 19:45:00,91.72,34.668,53.923,29.509 +2020-07-13 20:00:00,90.68,31.375,58.786,29.509 +2020-07-13 20:15:00,90.77,32.399,58.786,29.509 +2020-07-13 20:30:00,90.87,32.946,58.786,29.509 +2020-07-13 20:45:00,91.51,33.126999999999995,58.786,29.509 +2020-07-13 21:00:00,89.62,30.568,54.591,29.509 +2020-07-13 21:15:00,88.41,33.764,54.591,29.509 +2020-07-13 21:30:00,85.66,34.279,54.591,29.509 +2020-07-13 21:45:00,85.22,35.104,54.591,29.509 +2020-07-13 22:00:00,79.21,32.213,51.551,29.509 +2020-07-13 22:15:00,80.28,35.194,51.551,29.509 +2020-07-13 22:30:00,79.16,30.554000000000002,51.551,29.509 +2020-07-13 22:45:00,78.47,27.307,51.551,29.509 +2020-07-13 23:00:00,72.96,24.906999999999996,44.716,29.509 +2020-07-13 23:15:00,73.07,21.904,44.716,29.509 +2020-07-13 23:30:00,69.81,20.805,44.716,29.509 +2020-07-13 23:45:00,72.76,19.611,44.716,29.509 +2020-07-14 00:00:00,67.54,18.816,43.01,29.509 +2020-07-14 00:15:00,69.07,19.663,43.01,29.509 +2020-07-14 00:30:00,66.45,18.436,43.01,29.509 +2020-07-14 00:45:00,70.02,18.406,43.01,29.509 +2020-07-14 01:00:00,69.42,18.439,40.687,29.509 +2020-07-14 01:15:00,69.69,17.563,40.687,29.509 +2020-07-14 01:30:00,67.81,16.028,40.687,29.509 +2020-07-14 01:45:00,69.25,15.975999999999999,40.687,29.509 +2020-07-14 02:00:00,68.49,15.753,39.554,29.509 +2020-07-14 02:15:00,69.32,14.513,39.554,29.509 +2020-07-14 02:30:00,69.78,16.408,39.554,29.509 +2020-07-14 02:45:00,69.55,17.16,39.554,29.509 +2020-07-14 03:00:00,70.53,18.301,38.958,29.509 +2020-07-14 03:15:00,71.95,17.624000000000002,38.958,29.509 +2020-07-14 03:30:00,71.88,16.959,38.958,29.509 +2020-07-14 03:45:00,75.76,16.305,38.958,29.509 +2020-07-14 04:00:00,74.52,20.831999999999997,39.783,29.509 +2020-07-14 04:15:00,75.95,26.779,39.783,29.509 +2020-07-14 04:30:00,79.03,24.072,39.783,29.509 +2020-07-14 04:45:00,81.77,24.083000000000002,39.783,29.509 +2020-07-14 05:00:00,88.06,36.406,42.281000000000006,29.509 +2020-07-14 05:15:00,90.34,43.077,42.281000000000006,29.509 +2020-07-14 05:30:00,92.69,37.535,42.281000000000006,29.509 +2020-07-14 05:45:00,98.51,35.157,42.281000000000006,29.509 +2020-07-14 06:00:00,109.3,36.005,50.801,29.509 +2020-07-14 06:15:00,108.62,35.589,50.801,29.509 +2020-07-14 06:30:00,105.84,34.981,50.801,29.509 +2020-07-14 06:45:00,105.08,37.208,50.801,29.509 +2020-07-14 07:00:00,116.07,37.256,60.202,29.509 +2020-07-14 07:15:00,115.56,37.838,60.202,29.509 +2020-07-14 07:30:00,111.32,35.568000000000005,60.202,29.509 +2020-07-14 07:45:00,103.14,35.945,60.202,29.509 +2020-07-14 08:00:00,106.06,31.928,54.461000000000006,29.509 +2020-07-14 08:15:00,103.57,35.115,54.461000000000006,29.509 +2020-07-14 08:30:00,103.42,36.209,54.461000000000006,29.509 +2020-07-14 08:45:00,106.65,38.788000000000004,54.461000000000006,29.509 +2020-07-14 09:00:00,110.63,32.869,50.753,29.509 +2020-07-14 09:15:00,110.97,32.167,50.753,29.509 +2020-07-14 09:30:00,104.6,35.965,50.753,29.509 +2020-07-14 09:45:00,103.21,39.481,50.753,29.509 +2020-07-14 10:00:00,108.94,36.727,49.703,29.509 +2020-07-14 10:15:00,110.62,38.361,49.703,29.509 +2020-07-14 10:30:00,109.15,38.375,49.703,29.509 +2020-07-14 10:45:00,102.77,39.693000000000005,49.703,29.509 +2020-07-14 11:00:00,100.68,37.448,49.42100000000001,29.509 +2020-07-14 11:15:00,104.47,38.778,49.42100000000001,29.509 +2020-07-14 11:30:00,103.85,40.007,49.42100000000001,29.509 +2020-07-14 11:45:00,104.68,41.293,49.42100000000001,29.509 +2020-07-14 12:00:00,101.13,36.594,47.155,29.509 +2020-07-14 12:15:00,100.12,36.073,47.155,29.509 +2020-07-14 12:30:00,97.38,34.82,47.155,29.509 +2020-07-14 12:45:00,103.21,35.93,47.155,29.509 +2020-07-14 13:00:00,104.0,36.05,47.515,29.509 +2020-07-14 13:15:00,102.08,37.375,47.515,29.509 +2020-07-14 13:30:00,96.92,35.641,47.515,29.509 +2020-07-14 13:45:00,97.9,35.316,47.515,29.509 +2020-07-14 14:00:00,96.33,37.105,47.575,29.509 +2020-07-14 14:15:00,101.9,36.049,47.575,29.509 +2020-07-14 14:30:00,99.58,34.953,47.575,29.509 +2020-07-14 14:45:00,98.18,35.567,47.575,29.509 +2020-07-14 15:00:00,93.03,37.619,48.903,29.509 +2020-07-14 15:15:00,90.27,35.195,48.903,29.509 +2020-07-14 15:30:00,93.61,33.589,48.903,29.509 +2020-07-14 15:45:00,99.29,31.824,48.903,29.509 +2020-07-14 16:00:00,102.48,34.764,50.218999999999994,29.509 +2020-07-14 16:15:00,101.61,34.497,50.218999999999994,29.509 +2020-07-14 16:30:00,97.93,33.715,50.218999999999994,29.509 +2020-07-14 16:45:00,99.0,30.489,50.218999999999994,29.509 +2020-07-14 17:00:00,100.95,34.236999999999995,55.396,29.509 +2020-07-14 17:15:00,101.47,34.311,55.396,29.509 +2020-07-14 17:30:00,101.51,33.196999999999996,55.396,29.509 +2020-07-14 17:45:00,104.76,32.015,55.396,29.509 +2020-07-14 18:00:00,107.85,35.096,55.583999999999996,29.509 +2020-07-14 18:15:00,108.01,34.913000000000004,55.583999999999996,29.509 +2020-07-14 18:30:00,105.94,32.885999999999996,55.583999999999996,29.509 +2020-07-14 18:45:00,101.24,35.943000000000005,55.583999999999996,29.509 +2020-07-14 19:00:00,102.79,37.137,56.071000000000005,29.509 +2020-07-14 19:15:00,102.8,36.111,56.071000000000005,29.509 +2020-07-14 19:30:00,101.74,34.975,56.071000000000005,29.509 +2020-07-14 19:45:00,95.47,34.209,56.071000000000005,29.509 +2020-07-14 20:00:00,91.86,31.309,61.55,29.509 +2020-07-14 20:15:00,91.07,30.857,61.55,29.509 +2020-07-14 20:30:00,91.99,31.381,61.55,29.509 +2020-07-14 20:45:00,93.25,32.04,61.55,29.509 +2020-07-14 21:00:00,90.18,30.436,55.94,29.509 +2020-07-14 21:15:00,89.36,32.047,55.94,29.509 +2020-07-14 21:30:00,86.61,32.768,55.94,29.509 +2020-07-14 21:45:00,85.12,33.775,55.94,29.509 +2020-07-14 22:00:00,80.32,30.973000000000003,52.857,29.509 +2020-07-14 22:15:00,79.79,33.615,52.857,29.509 +2020-07-14 22:30:00,78.37,29.256999999999998,52.857,29.509 +2020-07-14 22:45:00,77.97,25.984,52.857,29.509 +2020-07-14 23:00:00,72.49,22.794,46.04,29.509 +2020-07-14 23:15:00,73.85,21.485,46.04,29.509 +2020-07-14 23:30:00,70.65,20.417,46.04,29.509 +2020-07-14 23:45:00,72.46,19.43,46.04,29.509 +2020-07-15 00:00:00,70.34,18.844,42.195,29.509 +2020-07-15 00:15:00,71.25,19.69,42.195,29.509 +2020-07-15 00:30:00,70.44,18.468,42.195,29.509 +2020-07-15 00:45:00,70.41,18.444000000000003,42.195,29.509 +2020-07-15 01:00:00,67.46,18.48,38.82,29.509 +2020-07-15 01:15:00,68.86,17.599,38.82,29.509 +2020-07-15 01:30:00,67.2,16.067999999999998,38.82,29.509 +2020-07-15 01:45:00,67.83,16.009,38.82,29.509 +2020-07-15 02:00:00,66.75,15.790999999999999,37.023,29.509 +2020-07-15 02:15:00,67.72,14.513,37.023,29.509 +2020-07-15 02:30:00,67.76,16.441,37.023,29.509 +2020-07-15 02:45:00,67.84,17.197,37.023,29.509 +2020-07-15 03:00:00,66.87,18.329,36.818000000000005,29.509 +2020-07-15 03:15:00,71.03,17.664,36.818000000000005,29.509 +2020-07-15 03:30:00,71.12,17.007,36.818000000000005,29.509 +2020-07-15 03:45:00,72.97,16.365,36.818000000000005,29.509 +2020-07-15 04:00:00,73.68,20.866,37.495,29.509 +2020-07-15 04:15:00,76.29,26.789,37.495,29.509 +2020-07-15 04:30:00,80.11,24.078000000000003,37.495,29.509 +2020-07-15 04:45:00,84.96,24.088,37.495,29.509 +2020-07-15 05:00:00,87.78,36.374,39.858000000000004,29.509 +2020-07-15 05:15:00,87.33,42.99100000000001,39.858000000000004,29.509 +2020-07-15 05:30:00,94.23,37.495,39.858000000000004,29.509 +2020-07-15 05:45:00,94.63,35.131,39.858000000000004,29.509 +2020-07-15 06:00:00,100.78,35.971,52.867,29.509 +2020-07-15 06:15:00,108.9,35.558,52.867,29.509 +2020-07-15 06:30:00,110.63,34.966,52.867,29.509 +2020-07-15 06:45:00,111.18,37.216,52.867,29.509 +2020-07-15 07:00:00,105.52,37.258,66.061,29.509 +2020-07-15 07:15:00,103.46,37.86,66.061,29.509 +2020-07-15 07:30:00,103.47,35.599000000000004,66.061,29.509 +2020-07-15 07:45:00,102.77,35.999,66.061,29.509 +2020-07-15 08:00:00,103.23,31.991,58.532,29.509 +2020-07-15 08:15:00,108.72,35.184,58.532,29.509 +2020-07-15 08:30:00,110.2,36.266999999999996,58.532,29.509 +2020-07-15 08:45:00,110.41,38.838,58.532,29.509 +2020-07-15 09:00:00,110.93,32.918,56.047,29.509 +2020-07-15 09:15:00,114.49,32.213,56.047,29.509 +2020-07-15 09:30:00,113.05,36.003,56.047,29.509 +2020-07-15 09:45:00,111.8,39.516999999999996,56.047,29.509 +2020-07-15 10:00:00,110.53,36.769,53.823,29.509 +2020-07-15 10:15:00,113.38,38.397,53.823,29.509 +2020-07-15 10:30:00,118.08,38.407,53.823,29.509 +2020-07-15 10:45:00,119.14,39.724000000000004,53.823,29.509 +2020-07-15 11:00:00,114.85,37.48,54.184,29.509 +2020-07-15 11:15:00,105.35,38.809,54.184,29.509 +2020-07-15 11:30:00,107.75,40.027,54.184,29.509 +2020-07-15 11:45:00,104.65,41.305,54.184,29.509 +2020-07-15 12:00:00,101.57,36.622,52.628,29.509 +2020-07-15 12:15:00,102.98,36.098,52.628,29.509 +2020-07-15 12:30:00,101.37,34.839,52.628,29.509 +2020-07-15 12:45:00,100.1,35.945,52.628,29.509 +2020-07-15 13:00:00,95.13,36.046,52.31,29.509 +2020-07-15 13:15:00,97.79,37.365,52.31,29.509 +2020-07-15 13:30:00,92.09,35.635,52.31,29.509 +2020-07-15 13:45:00,93.99,35.318000000000005,52.31,29.509 +2020-07-15 14:00:00,91.96,37.105,52.278999999999996,29.509 +2020-07-15 14:15:00,93.66,36.051,52.278999999999996,29.509 +2020-07-15 14:30:00,93.43,34.949,52.278999999999996,29.509 +2020-07-15 14:45:00,94.43,35.57,52.278999999999996,29.509 +2020-07-15 15:00:00,90.17,37.62,53.306999999999995,29.509 +2020-07-15 15:15:00,89.69,35.193000000000005,53.306999999999995,29.509 +2020-07-15 15:30:00,94.34,33.59,53.306999999999995,29.509 +2020-07-15 15:45:00,93.63,31.82,53.306999999999995,29.509 +2020-07-15 16:00:00,94.82,34.765,55.358999999999995,29.509 +2020-07-15 16:15:00,96.19,34.501999999999995,55.358999999999995,29.509 +2020-07-15 16:30:00,95.74,33.736999999999995,55.358999999999995,29.509 +2020-07-15 16:45:00,96.06,30.52,55.358999999999995,29.509 +2020-07-15 17:00:00,98.6,34.265,59.211999999999996,29.509 +2020-07-15 17:15:00,98.46,34.354,59.211999999999996,29.509 +2020-07-15 17:30:00,98.19,33.245,59.211999999999996,29.509 +2020-07-15 17:45:00,101.1,32.071999999999996,59.211999999999996,29.509 +2020-07-15 18:00:00,101.97,35.156,60.403999999999996,29.509 +2020-07-15 18:15:00,100.51,34.96,60.403999999999996,29.509 +2020-07-15 18:30:00,99.62,32.937,60.403999999999996,29.509 +2020-07-15 18:45:00,99.61,35.994,60.403999999999996,29.509 +2020-07-15 19:00:00,96.67,37.191,60.993,29.509 +2020-07-15 19:15:00,92.57,36.158,60.993,29.509 +2020-07-15 19:30:00,91.19,35.016999999999996,60.993,29.509 +2020-07-15 19:45:00,90.05,34.249,60.993,29.509 +2020-07-15 20:00:00,89.39,31.340999999999998,66.6,29.509 +2020-07-15 20:15:00,89.79,30.886999999999997,66.6,29.509 +2020-07-15 20:30:00,90.48,31.406999999999996,66.6,29.509 +2020-07-15 20:45:00,94.33,32.068000000000005,66.6,29.509 +2020-07-15 21:00:00,89.0,30.467,59.855,29.509 +2020-07-15 21:15:00,90.24,32.078,59.855,29.509 +2020-07-15 21:30:00,86.46,32.781,59.855,29.509 +2020-07-15 21:45:00,84.69,33.777,59.855,29.509 +2020-07-15 22:00:00,80.58,30.976999999999997,54.942,29.509 +2020-07-15 22:15:00,79.78,33.615,54.942,29.509 +2020-07-15 22:30:00,77.4,29.239,54.942,29.509 +2020-07-15 22:45:00,76.55,25.959,54.942,29.509 +2020-07-15 23:00:00,70.55,22.781,46.056000000000004,29.509 +2020-07-15 23:15:00,73.75,21.489,46.056000000000004,29.509 +2020-07-15 23:30:00,72.68,20.434,46.056000000000004,29.509 +2020-07-15 23:45:00,71.83,19.444000000000003,46.056000000000004,29.509 +2020-07-16 00:00:00,68.4,17.695999999999998,40.859,29.509 +2020-07-16 00:15:00,69.33,18.609,40.859,29.509 +2020-07-16 00:30:00,69.21,17.279,40.859,29.509 +2020-07-16 00:45:00,69.57,17.358,40.859,29.509 +2020-07-16 01:00:00,66.81,17.385,39.06,29.509 +2020-07-16 01:15:00,69.01,16.565,39.06,29.509 +2020-07-16 01:30:00,67.69,15.054,39.06,29.509 +2020-07-16 01:45:00,68.28,15.171,39.06,29.509 +2020-07-16 02:00:00,68.0,15.002,37.592,29.509 +2020-07-16 02:15:00,67.65,14.513,37.592,29.509 +2020-07-16 02:30:00,67.91,15.694,37.592,29.509 +2020-07-16 02:45:00,69.21,16.421,37.592,29.509 +2020-07-16 03:00:00,68.8,17.433,37.416,29.509 +2020-07-16 03:15:00,69.64,16.917,37.416,29.509 +2020-07-16 03:30:00,71.41,16.209,37.416,29.509 +2020-07-16 03:45:00,74.92,15.402999999999999,37.416,29.509 +2020-07-16 04:00:00,75.15,19.62,38.176,29.509 +2020-07-16 04:15:00,76.88,25.261999999999997,38.176,29.509 +2020-07-16 04:30:00,76.66,22.57,38.176,29.509 +2020-07-16 04:45:00,80.18,22.496,38.176,29.509 +2020-07-16 05:00:00,87.87,34.303000000000004,41.203,29.509 +2020-07-16 05:15:00,89.57,40.372,41.203,29.509 +2020-07-16 05:30:00,96.26,35.325,41.203,29.509 +2020-07-16 05:45:00,101.5,32.945,41.203,29.509 +2020-07-16 06:00:00,107.07,33.306,51.09,29.509 +2020-07-16 06:15:00,102.95,32.66,51.09,29.509 +2020-07-16 06:30:00,101.95,32.357,51.09,29.509 +2020-07-16 06:45:00,107.07,34.909,51.09,29.509 +2020-07-16 07:00:00,109.85,34.71,63.541000000000004,29.509 +2020-07-16 07:15:00,107.55,35.439,63.541000000000004,29.509 +2020-07-16 07:30:00,105.46,33.343,63.541000000000004,29.509 +2020-07-16 07:45:00,99.9,33.835,63.541000000000004,29.509 +2020-07-16 08:00:00,103.71,29.159000000000002,55.65,29.509 +2020-07-16 08:15:00,106.39,32.507,55.65,29.509 +2020-07-16 08:30:00,107.35,34.055,55.65,29.509 +2020-07-16 08:45:00,103.5,36.774,55.65,29.509 +2020-07-16 09:00:00,99.32,32.482,51.833999999999996,29.509 +2020-07-16 09:15:00,101.09,32.001999999999995,51.833999999999996,29.509 +2020-07-16 09:30:00,106.4,35.815,51.833999999999996,29.509 +2020-07-16 09:45:00,112.1,39.141,51.833999999999996,29.509 +2020-07-16 10:00:00,113.34,36.639,49.70399999999999,29.509 +2020-07-16 10:15:00,103.53,38.18,49.70399999999999,29.509 +2020-07-16 10:30:00,108.61,38.09,49.70399999999999,29.509 +2020-07-16 10:45:00,110.26,39.092,49.70399999999999,29.509 +2020-07-16 11:00:00,107.49,36.751999999999995,48.593999999999994,29.509 +2020-07-16 11:15:00,101.65,38.056999999999995,48.593999999999994,29.509 +2020-07-16 11:30:00,99.95,39.297,48.593999999999994,29.509 +2020-07-16 11:45:00,105.9,40.42,48.593999999999994,29.509 +2020-07-16 12:00:00,104.35,34.999,46.275,29.509 +2020-07-16 12:15:00,106.27,34.306999999999995,46.275,29.509 +2020-07-16 12:30:00,97.52,33.074,46.275,29.509 +2020-07-16 12:45:00,98.65,34.076,46.275,29.509 +2020-07-16 13:00:00,102.47,34.053000000000004,45.803000000000004,29.509 +2020-07-16 13:15:00,104.02,35.477,45.803000000000004,29.509 +2020-07-16 13:30:00,100.98,33.608000000000004,45.803000000000004,29.509 +2020-07-16 13:45:00,94.53,33.578,45.803000000000004,29.509 +2020-07-16 14:00:00,96.85,35.39,46.251999999999995,29.509 +2020-07-16 14:15:00,96.71,34.388000000000005,46.251999999999995,29.509 +2020-07-16 14:30:00,99.91,33.429,46.251999999999995,29.509 +2020-07-16 14:45:00,99.62,34.041,46.251999999999995,29.509 +2020-07-16 15:00:00,96.59,36.379,48.309,29.509 +2020-07-16 15:15:00,93.27,34.016999999999996,48.309,29.509 +2020-07-16 15:30:00,95.88,32.552,48.309,29.509 +2020-07-16 15:45:00,100.36,30.926,48.309,29.509 +2020-07-16 16:00:00,100.07,33.31,49.681999999999995,29.509 +2020-07-16 16:15:00,95.77,33.111,49.681999999999995,29.509 +2020-07-16 16:30:00,98.62,32.172,49.681999999999995,29.509 +2020-07-16 16:45:00,100.86,29.104,49.681999999999995,29.509 +2020-07-16 17:00:00,105.52,33.069,53.086000000000006,29.509 +2020-07-16 17:15:00,107.45,33.188,53.086000000000006,29.509 +2020-07-16 17:30:00,104.16,32.003,53.086000000000006,29.509 +2020-07-16 17:45:00,103.07,31.022,53.086000000000006,29.509 +2020-07-16 18:00:00,101.84,34.315,54.038999999999994,29.509 +2020-07-16 18:15:00,100.31,34.167,54.038999999999994,29.509 +2020-07-16 18:30:00,100.5,32.226,54.038999999999994,29.509 +2020-07-16 18:45:00,106.08,34.979,54.038999999999994,29.509 +2020-07-16 19:00:00,105.9,36.38,53.408,29.509 +2020-07-16 19:15:00,102.77,35.374,53.408,29.509 +2020-07-16 19:30:00,96.1,34.2,53.408,29.509 +2020-07-16 19:45:00,95.11,33.135,53.408,29.509 +2020-07-16 20:00:00,91.57,30.674,55.309,29.509 +2020-07-16 20:15:00,94.42,29.885,55.309,29.509 +2020-07-16 20:30:00,93.02,30.358,55.309,29.509 +2020-07-16 20:45:00,93.42,30.788,55.309,29.509 +2020-07-16 21:00:00,91.2,29.548000000000002,51.585,29.509 +2020-07-16 21:15:00,90.29,30.741999999999997,51.585,29.509 +2020-07-16 21:30:00,87.58,31.38,51.585,29.509 +2020-07-16 21:45:00,86.37,32.32,51.585,29.509 +2020-07-16 22:00:00,81.95,29.609,48.006,29.509 +2020-07-16 22:15:00,81.66,32.455,48.006,29.509 +2020-07-16 22:30:00,79.46,28.267,48.006,29.509 +2020-07-16 22:45:00,80.13,25.146,48.006,29.509 +2020-07-16 23:00:00,75.25,21.895,42.309,29.509 +2020-07-16 23:15:00,75.85,20.484,42.309,29.509 +2020-07-16 23:30:00,74.85,19.387,42.309,29.509 +2020-07-16 23:45:00,73.27,18.362000000000002,42.309,29.509 +2020-07-17 00:00:00,69.67,15.872,39.649,29.509 +2020-07-17 00:15:00,72.11,17.002,39.649,29.509 +2020-07-17 00:30:00,72.27,15.982999999999999,39.649,29.509 +2020-07-17 00:45:00,72.1,16.518,39.649,29.509 +2020-07-17 01:00:00,69.69,16.156,37.744,29.509 +2020-07-17 01:15:00,70.44,14.607000000000001,37.744,29.509 +2020-07-17 01:30:00,70.83,14.513,37.744,29.509 +2020-07-17 01:45:00,73.34,14.513,37.744,29.509 +2020-07-17 02:00:00,70.32,14.565999999999999,36.965,29.509 +2020-07-17 02:15:00,70.93,14.513,36.965,29.509 +2020-07-17 02:30:00,70.09,16.064,36.965,29.509 +2020-07-17 02:45:00,69.59,16.048,36.965,29.509 +2020-07-17 03:00:00,70.93,17.969,37.678000000000004,29.509 +2020-07-17 03:15:00,72.45,16.085,37.678000000000004,29.509 +2020-07-17 03:30:00,74.49,15.127,37.678000000000004,29.509 +2020-07-17 03:45:00,74.49,15.26,37.678000000000004,29.509 +2020-07-17 04:00:00,76.78,19.583,38.591,29.509 +2020-07-17 04:15:00,83.05,23.531999999999996,38.591,29.509 +2020-07-17 04:30:00,83.79,21.848000000000003,38.591,29.509 +2020-07-17 04:45:00,82.32,21.16,38.591,29.509 +2020-07-17 05:00:00,92.53,32.51,40.666,29.509 +2020-07-17 05:15:00,93.78,39.453,40.666,29.509 +2020-07-17 05:30:00,99.45,34.591,40.666,29.509 +2020-07-17 05:45:00,102.94,31.750999999999998,40.666,29.509 +2020-07-17 06:00:00,108.29,32.311,51.784,29.509 +2020-07-17 06:15:00,101.27,31.945999999999998,51.784,29.509 +2020-07-17 06:30:00,101.61,31.660999999999998,51.784,29.509 +2020-07-17 06:45:00,108.21,33.99,51.784,29.509 +2020-07-17 07:00:00,112.7,34.54,61.383,29.509 +2020-07-17 07:15:00,110.87,36.194,61.383,29.509 +2020-07-17 07:30:00,107.13,31.997,61.383,29.509 +2020-07-17 07:45:00,105.72,32.355,61.383,29.509 +2020-07-17 08:00:00,109.76,28.636,55.272,29.509 +2020-07-17 08:15:00,109.09,32.758,55.272,29.509 +2020-07-17 08:30:00,106.95,34.098,55.272,29.509 +2020-07-17 08:45:00,103.14,36.793,55.272,29.509 +2020-07-17 09:00:00,105.78,29.919,53.506,29.509 +2020-07-17 09:15:00,106.52,31.503,53.506,29.509 +2020-07-17 09:30:00,107.91,34.588,53.506,29.509 +2020-07-17 09:45:00,105.7,38.348,53.506,29.509 +2020-07-17 10:00:00,103.69,35.79,51.363,29.509 +2020-07-17 10:15:00,108.86,37.004,51.363,29.509 +2020-07-17 10:30:00,108.56,37.53,51.363,29.509 +2020-07-17 10:45:00,105.22,38.471,51.363,29.509 +2020-07-17 11:00:00,99.4,36.409,51.043,29.509 +2020-07-17 11:15:00,104.69,36.599000000000004,51.043,29.509 +2020-07-17 11:30:00,105.83,37.249,51.043,29.509 +2020-07-17 11:45:00,105.9,37.297,51.043,29.509 +2020-07-17 12:00:00,97.56,32.258,47.52,29.509 +2020-07-17 12:15:00,96.68,31.066,47.52,29.509 +2020-07-17 12:30:00,91.93,29.941999999999997,47.52,29.509 +2020-07-17 12:45:00,92.95,30.011999999999997,47.52,29.509 +2020-07-17 13:00:00,96.42,30.528000000000002,45.494,29.509 +2020-07-17 13:15:00,97.53,32.061,45.494,29.509 +2020-07-17 13:30:00,94.43,31.075,45.494,29.509 +2020-07-17 13:45:00,91.76,31.401999999999997,45.494,29.509 +2020-07-17 14:00:00,92.13,32.44,43.883,29.509 +2020-07-17 14:15:00,90.45,31.94,43.883,29.509 +2020-07-17 14:30:00,91.4,32.594,43.883,29.509 +2020-07-17 14:45:00,93.5,32.418,43.883,29.509 +2020-07-17 15:00:00,94.71,34.715,45.714,29.509 +2020-07-17 15:15:00,95.27,32.129,45.714,29.509 +2020-07-17 15:30:00,88.29,30.189,45.714,29.509 +2020-07-17 15:45:00,92.07,29.386,45.714,29.509 +2020-07-17 16:00:00,91.83,30.943,48.222,29.509 +2020-07-17 16:15:00,100.32,31.264,48.222,29.509 +2020-07-17 16:30:00,98.96,30.133000000000003,48.222,29.509 +2020-07-17 16:45:00,102.8,26.223000000000003,48.222,29.509 +2020-07-17 17:00:00,96.41,32.058,52.619,29.509 +2020-07-17 17:15:00,97.39,32.042,52.619,29.509 +2020-07-17 17:30:00,96.03,31.074,52.619,29.509 +2020-07-17 17:45:00,101.63,29.944000000000003,52.619,29.509 +2020-07-17 18:00:00,104.59,33.204,52.99,29.509 +2020-07-17 18:15:00,104.12,32.05,52.99,29.509 +2020-07-17 18:30:00,99.36,29.965999999999998,52.99,29.509 +2020-07-17 18:45:00,95.42,33.177,52.99,29.509 +2020-07-17 19:00:00,99.76,35.439,51.923,29.509 +2020-07-17 19:15:00,99.09,34.96,51.923,29.509 +2020-07-17 19:30:00,93.72,33.879,51.923,29.509 +2020-07-17 19:45:00,89.16,31.75,51.923,29.509 +2020-07-17 20:00:00,86.65,29.105999999999998,56.238,29.509 +2020-07-17 20:15:00,91.65,29.175,56.238,29.509 +2020-07-17 20:30:00,91.6,29.116999999999997,56.238,29.509 +2020-07-17 20:45:00,89.51,28.627,56.238,29.509 +2020-07-17 21:00:00,81.75,28.764,52.426,29.509 +2020-07-17 21:15:00,84.05,31.724,52.426,29.509 +2020-07-17 21:30:00,85.59,32.179,52.426,29.509 +2020-07-17 21:45:00,85.67,33.286,52.426,29.509 +2020-07-17 22:00:00,79.08,30.348000000000003,48.196000000000005,29.509 +2020-07-17 22:15:00,73.88,32.935,48.196000000000005,29.509 +2020-07-17 22:30:00,71.96,33.379,48.196000000000005,29.509 +2020-07-17 22:45:00,70.94,30.925,48.196000000000005,29.509 +2020-07-17 23:00:00,69.13,29.535999999999998,41.71,29.509 +2020-07-17 23:15:00,72.96,26.595,41.71,29.509 +2020-07-17 23:30:00,74.34,23.662,41.71,29.509 +2020-07-17 23:45:00,73.55,22.548000000000002,41.71,29.509 +2020-07-18 00:00:00,64.97,17.482,41.105,29.398000000000003 +2020-07-18 00:15:00,64.83,18.22,41.105,29.398000000000003 +2020-07-18 00:30:00,69.52,16.590999999999998,41.105,29.398000000000003 +2020-07-18 00:45:00,69.35,16.285,41.105,29.398000000000003 +2020-07-18 01:00:00,67.98,16.169,36.934,29.398000000000003 +2020-07-18 01:15:00,63.54,15.332,36.934,29.398000000000003 +2020-07-18 01:30:00,65.47,14.513,36.934,29.398000000000003 +2020-07-18 01:45:00,67.32,14.98,36.934,29.398000000000003 +2020-07-18 02:00:00,66.36,14.703,34.782,29.398000000000003 +2020-07-18 02:15:00,62.18,14.513,34.782,29.398000000000003 +2020-07-18 02:30:00,60.75,14.605,34.782,29.398000000000003 +2020-07-18 02:45:00,66.16,15.431,34.782,29.398000000000003 +2020-07-18 03:00:00,65.84,15.811,34.489000000000004,29.398000000000003 +2020-07-18 03:15:00,67.15,14.513,34.489000000000004,29.398000000000003 +2020-07-18 03:30:00,60.47,14.513,34.489000000000004,29.398000000000003 +2020-07-18 03:45:00,66.51,14.547,34.489000000000004,29.398000000000003 +2020-07-18 04:00:00,65.6,17.13,34.111,29.398000000000003 +2020-07-18 04:15:00,60.82,20.293,34.111,29.398000000000003 +2020-07-18 04:30:00,65.33,16.974,34.111,29.398000000000003 +2020-07-18 04:45:00,61.82,16.62,34.111,29.398000000000003 +2020-07-18 05:00:00,61.13,20.213,33.283,29.398000000000003 +2020-07-18 05:15:00,60.73,16.794,33.283,29.398000000000003 +2020-07-18 05:30:00,62.16,14.513,33.283,29.398000000000003 +2020-07-18 05:45:00,66.61,15.129000000000001,33.283,29.398000000000003 +2020-07-18 06:00:00,72.23,26.281,33.653,29.398000000000003 +2020-07-18 06:15:00,71.83,33.03,33.653,29.398000000000003 +2020-07-18 06:30:00,69.3,30.125,33.653,29.398000000000003 +2020-07-18 06:45:00,68.38,29.725,33.653,29.398000000000003 +2020-07-18 07:00:00,73.72,29.413,36.732,29.398000000000003 +2020-07-18 07:15:00,77.89,29.795,36.732,29.398000000000003 +2020-07-18 07:30:00,79.76,26.998,36.732,29.398000000000003 +2020-07-18 07:45:00,78.08,28.014,36.732,29.398000000000003 +2020-07-18 08:00:00,79.55,24.814,41.318999999999996,29.398000000000003 +2020-07-18 08:15:00,85.3,28.331999999999997,41.318999999999996,29.398000000000003 +2020-07-18 08:30:00,84.34,29.479,41.318999999999996,29.398000000000003 +2020-07-18 08:45:00,82.38,32.879,41.318999999999996,29.398000000000003 +2020-07-18 09:00:00,79.5,29.301,43.195,29.398000000000003 +2020-07-18 09:15:00,79.99,31.334,43.195,29.398000000000003 +2020-07-18 09:30:00,88.35,34.856,43.195,29.398000000000003 +2020-07-18 09:45:00,91.53,38.098,43.195,29.398000000000003 +2020-07-18 10:00:00,87.81,36.235,41.843999999999994,29.398000000000003 +2020-07-18 10:15:00,83.2,37.816,41.843999999999994,29.398000000000003 +2020-07-18 10:30:00,84.65,37.939,41.843999999999994,29.398000000000003 +2020-07-18 10:45:00,92.01,38.341,41.843999999999994,29.398000000000003 +2020-07-18 11:00:00,88.51,36.077,39.035,29.398000000000003 +2020-07-18 11:15:00,83.11,37.3,39.035,29.398000000000003 +2020-07-18 11:30:00,78.1,38.375,39.035,29.398000000000003 +2020-07-18 11:45:00,76.27,39.258,39.035,29.398000000000003 +2020-07-18 12:00:00,74.23,34.78,38.001,29.398000000000003 +2020-07-18 12:15:00,71.26,34.455,38.001,29.398000000000003 +2020-07-18 12:30:00,65.03,33.147,38.001,29.398000000000003 +2020-07-18 12:45:00,61.3,34.099000000000004,38.001,29.398000000000003 +2020-07-18 13:00:00,60.24,33.71,34.747,29.398000000000003 +2020-07-18 13:15:00,62.03,34.865,34.747,29.398000000000003 +2020-07-18 13:30:00,65.18,34.141,34.747,29.398000000000003 +2020-07-18 13:45:00,70.0,32.931999999999995,34.747,29.398000000000003 +2020-07-18 14:00:00,72.75,33.854,33.434,29.398000000000003 +2020-07-18 14:15:00,74.53,32.037,33.434,29.398000000000003 +2020-07-18 14:30:00,77.56,32.413000000000004,33.434,29.398000000000003 +2020-07-18 14:45:00,79.82,32.749,33.434,29.398000000000003 +2020-07-18 15:00:00,79.73,35.416,35.921,29.398000000000003 +2020-07-18 15:15:00,78.71,33.518,35.921,29.398000000000003 +2020-07-18 15:30:00,78.58,31.645,35.921,29.398000000000003 +2020-07-18 15:45:00,78.43,29.824,35.921,29.398000000000003 +2020-07-18 16:00:00,77.97,33.81,39.427,29.398000000000003 +2020-07-18 16:15:00,75.31,33.069,39.427,29.398000000000003 +2020-07-18 16:30:00,75.91,32.207,39.427,29.398000000000003 +2020-07-18 16:45:00,77.36,28.189,39.427,29.398000000000003 +2020-07-18 17:00:00,78.24,32.734,44.096000000000004,29.398000000000003 +2020-07-18 17:15:00,78.03,30.230999999999998,44.096000000000004,29.398000000000003 +2020-07-18 17:30:00,78.44,29.135,44.096000000000004,29.398000000000003 +2020-07-18 17:45:00,80.13,28.595,44.096000000000004,29.398000000000003 +2020-07-18 18:00:00,79.23,33.352,43.931000000000004,29.398000000000003 +2020-07-18 18:15:00,78.26,33.839,43.931000000000004,29.398000000000003 +2020-07-18 18:30:00,77.24,33.111,43.931000000000004,29.398000000000003 +2020-07-18 18:45:00,76.69,32.857,43.931000000000004,29.398000000000003 +2020-07-18 19:00:00,73.66,33.239000000000004,42.187,29.398000000000003 +2020-07-18 19:15:00,71.27,31.711,42.187,29.398000000000003 +2020-07-18 19:30:00,70.94,31.392,42.187,29.398000000000003 +2020-07-18 19:45:00,71.36,31.168000000000003,42.187,29.398000000000003 +2020-07-18 20:00:00,71.01,29.235,38.315,29.398000000000003 +2020-07-18 20:15:00,72.39,28.453000000000003,38.315,29.398000000000003 +2020-07-18 20:30:00,72.9,27.475,38.315,29.398000000000003 +2020-07-18 20:45:00,72.58,29.005,38.315,29.398000000000003 +2020-07-18 21:00:00,71.06,27.381,36.843,29.398000000000003 +2020-07-18 21:15:00,70.83,29.934,36.843,29.398000000000003 +2020-07-18 21:30:00,68.87,30.485,36.843,29.398000000000003 +2020-07-18 21:45:00,68.49,31.026,36.843,29.398000000000003 +2020-07-18 22:00:00,65.43,27.968000000000004,37.260999999999996,29.398000000000003 +2020-07-18 22:15:00,65.56,30.64,37.260999999999996,29.398000000000003 +2020-07-18 22:30:00,63.24,30.226,37.260999999999996,29.398000000000003 +2020-07-18 22:45:00,62.82,28.031999999999996,37.260999999999996,29.398000000000003 +2020-07-18 23:00:00,57.26,25.816999999999997,32.148,29.398000000000003 +2020-07-18 23:15:00,59.35,23.447,32.148,29.398000000000003 +2020-07-18 23:30:00,58.36,23.248,32.148,29.398000000000003 +2020-07-18 23:45:00,57.61,22.671,32.148,29.398000000000003 +2020-07-19 00:00:00,55.61,18.977,28.905,29.398000000000003 +2020-07-19 00:15:00,55.79,18.499000000000002,28.905,29.398000000000003 +2020-07-19 00:30:00,54.68,16.748,28.905,29.398000000000003 +2020-07-19 00:45:00,54.38,16.272000000000002,28.905,29.398000000000003 +2020-07-19 01:00:00,51.87,16.452,26.906999999999996,29.398000000000003 +2020-07-19 01:15:00,53.39,15.395999999999999,26.906999999999996,29.398000000000003 +2020-07-19 01:30:00,53.69,14.513,26.906999999999996,29.398000000000003 +2020-07-19 01:45:00,53.75,14.513,26.906999999999996,29.398000000000003 +2020-07-19 02:00:00,52.09,14.513,25.938000000000002,29.398000000000003 +2020-07-19 02:15:00,52.77,14.513,25.938000000000002,29.398000000000003 +2020-07-19 02:30:00,52.15,15.205,25.938000000000002,29.398000000000003 +2020-07-19 02:45:00,52.3,15.685,25.938000000000002,29.398000000000003 +2020-07-19 03:00:00,51.95,16.727999999999998,24.693,29.398000000000003 +2020-07-19 03:15:00,52.28,14.535,24.693,29.398000000000003 +2020-07-19 03:30:00,53.32,14.513,24.693,29.398000000000003 +2020-07-19 03:45:00,53.05,14.513,24.693,29.398000000000003 +2020-07-19 04:00:00,52.24,16.62,25.683000000000003,29.398000000000003 +2020-07-19 04:15:00,51.65,19.378,25.683000000000003,29.398000000000003 +2020-07-19 04:30:00,51.6,17.485,25.683000000000003,29.398000000000003 +2020-07-19 04:45:00,52.23,16.61,25.683000000000003,29.398000000000003 +2020-07-19 05:00:00,51.43,20.625,26.023000000000003,29.398000000000003 +2020-07-19 05:15:00,51.17,16.522000000000002,26.023000000000003,29.398000000000003 +2020-07-19 05:30:00,51.75,14.513,26.023000000000003,29.398000000000003 +2020-07-19 05:45:00,52.6,14.513,26.023000000000003,29.398000000000003 +2020-07-19 06:00:00,54.27,22.829,25.834,29.398000000000003 +2020-07-19 06:15:00,54.5,30.6,25.834,29.398000000000003 +2020-07-19 06:30:00,55.07,27.053,25.834,29.398000000000003 +2020-07-19 06:45:00,57.47,25.699,25.834,29.398000000000003 +2020-07-19 07:00:00,59.13,25.54,27.765,29.398000000000003 +2020-07-19 07:15:00,59.65,24.248,27.765,29.398000000000003 +2020-07-19 07:30:00,60.2,22.959,27.765,29.398000000000003 +2020-07-19 07:45:00,60.84,24.031999999999996,27.765,29.398000000000003 +2020-07-19 08:00:00,61.14,21.519000000000002,31.357,29.398000000000003 +2020-07-19 08:15:00,58.21,26.334,31.357,29.398000000000003 +2020-07-19 08:30:00,57.28,28.247,31.357,29.398000000000003 +2020-07-19 08:45:00,58.82,31.338,31.357,29.398000000000003 +2020-07-19 09:00:00,59.11,27.697,33.238,29.398000000000003 +2020-07-19 09:15:00,60.1,29.121,33.238,29.398000000000003 +2020-07-19 09:30:00,59.77,33.126,33.238,29.398000000000003 +2020-07-19 09:45:00,62.12,37.48,33.238,29.398000000000003 +2020-07-19 10:00:00,62.62,35.931,34.22,29.398000000000003 +2020-07-19 10:15:00,63.28,37.588,34.22,29.398000000000003 +2020-07-19 10:30:00,63.94,37.878,34.22,29.398000000000003 +2020-07-19 10:45:00,63.69,39.635,34.22,29.398000000000003 +2020-07-19 11:00:00,63.64,36.87,36.298,29.398000000000003 +2020-07-19 11:15:00,65.93,37.582,36.298,29.398000000000003 +2020-07-19 11:30:00,62.62,39.328,36.298,29.398000000000003 +2020-07-19 11:45:00,61.61,40.412,36.298,29.398000000000003 +2020-07-19 12:00:00,60.44,37.195,33.52,29.398000000000003 +2020-07-19 12:15:00,58.9,35.936,33.52,29.398000000000003 +2020-07-19 12:30:00,58.57,35.041,33.52,29.398000000000003 +2020-07-19 12:45:00,56.89,35.4,33.52,29.398000000000003 +2020-07-19 13:00:00,54.98,34.747,30.12,29.398000000000003 +2020-07-19 13:15:00,53.24,34.882,30.12,29.398000000000003 +2020-07-19 13:30:00,51.7,32.954,30.12,29.398000000000003 +2020-07-19 13:45:00,54.52,33.073,30.12,29.398000000000003 +2020-07-19 14:00:00,54.96,35.285,27.233,29.398000000000003 +2020-07-19 14:15:00,52.39,33.801,27.233,29.398000000000003 +2020-07-19 14:30:00,50.08,32.659,27.233,29.398000000000003 +2020-07-19 14:45:00,49.54,31.871,27.233,29.398000000000003 +2020-07-19 15:00:00,51.32,34.882,27.468000000000004,29.398000000000003 +2020-07-19 15:15:00,51.02,32.001,27.468000000000004,29.398000000000003 +2020-07-19 15:30:00,52.26,29.862,27.468000000000004,29.398000000000003 +2020-07-19 15:45:00,52.6,28.27,27.468000000000004,29.398000000000003 +2020-07-19 16:00:00,56.74,30.274,30.8,29.398000000000003 +2020-07-19 16:15:00,57.44,29.891,30.8,29.398000000000003 +2020-07-19 16:30:00,60.95,30.116999999999997,30.8,29.398000000000003 +2020-07-19 16:45:00,61.94,26.168000000000003,30.8,29.398000000000003 +2020-07-19 17:00:00,67.22,31.125999999999998,37.806,29.398000000000003 +2020-07-19 17:15:00,71.64,30.329,37.806,29.398000000000003 +2020-07-19 17:30:00,73.51,30.09,37.806,29.398000000000003 +2020-07-19 17:45:00,74.82,29.78,37.806,29.398000000000003 +2020-07-19 18:00:00,75.5,35.266,40.766,29.398000000000003 +2020-07-19 18:15:00,73.22,35.173,40.766,29.398000000000003 +2020-07-19 18:30:00,72.29,34.387,40.766,29.398000000000003 +2020-07-19 18:45:00,72.76,34.076,40.766,29.398000000000003 +2020-07-19 19:00:00,74.69,36.863,41.163000000000004,29.398000000000003 +2020-07-19 19:15:00,73.14,34.086,41.163000000000004,29.398000000000003 +2020-07-19 19:30:00,71.41,33.510999999999996,41.163000000000004,29.398000000000003 +2020-07-19 19:45:00,72.67,32.666,41.163000000000004,29.398000000000003 +2020-07-19 20:00:00,73.53,30.916,39.885999999999996,29.398000000000003 +2020-07-19 20:15:00,75.2,29.899,39.885999999999996,29.398000000000003 +2020-07-19 20:30:00,76.95,29.673000000000002,39.885999999999996,29.398000000000003 +2020-07-19 20:45:00,76.76,29.506,39.885999999999996,29.398000000000003 +2020-07-19 21:00:00,74.32,28.004,38.900999999999996,29.398000000000003 +2020-07-19 21:15:00,74.99,30.284000000000002,38.900999999999996,29.398000000000003 +2020-07-19 21:30:00,73.19,30.101999999999997,38.900999999999996,29.398000000000003 +2020-07-19 21:45:00,71.17,30.999000000000002,38.900999999999996,29.398000000000003 +2020-07-19 22:00:00,66.49,30.218000000000004,39.806999999999995,29.398000000000003 +2020-07-19 22:15:00,68.96,31.16,39.806999999999995,29.398000000000003 +2020-07-19 22:30:00,67.63,30.438000000000002,39.806999999999995,29.398000000000003 +2020-07-19 22:45:00,67.17,26.953000000000003,39.806999999999995,29.398000000000003 +2020-07-19 23:00:00,62.05,24.655,35.564,29.398000000000003 +2020-07-19 23:15:00,63.9,23.502,35.564,29.398000000000003 +2020-07-19 23:30:00,62.49,22.683000000000003,35.564,29.398000000000003 +2020-07-19 23:45:00,62.2,22.201,35.564,29.398000000000003 +2020-07-20 00:00:00,60.09,20.273,36.578,29.509 +2020-07-20 00:15:00,60.71,20.372,36.578,29.509 +2020-07-20 00:30:00,59.91,18.199,36.578,29.509 +2020-07-20 00:45:00,60.28,17.354,36.578,29.509 +2020-07-20 01:00:00,58.64,17.95,35.292,29.509 +2020-07-20 01:15:00,58.78,16.954,35.292,29.509 +2020-07-20 01:30:00,59.4,15.62,35.292,29.509 +2020-07-20 01:45:00,58.95,16.297,35.292,29.509 +2020-07-20 02:00:00,58.17,16.67,34.319,29.509 +2020-07-20 02:15:00,59.43,14.513,34.319,29.509 +2020-07-20 02:30:00,65.62,16.453,34.319,29.509 +2020-07-20 02:45:00,68.61,16.833,34.319,29.509 +2020-07-20 03:00:00,68.25,18.299,33.13,29.509 +2020-07-20 03:15:00,63.19,16.746,33.13,29.509 +2020-07-20 03:30:00,64.3,16.148,33.13,29.509 +2020-07-20 03:45:00,71.14,16.613,33.13,29.509 +2020-07-20 04:00:00,74.7,22.09,33.851,29.509 +2020-07-20 04:15:00,76.07,27.603,33.851,29.509 +2020-07-20 04:30:00,72.95,24.997,33.851,29.509 +2020-07-20 04:45:00,78.22,24.505,33.851,29.509 +2020-07-20 05:00:00,83.67,34.926,38.718,29.509 +2020-07-20 05:15:00,86.56,40.138000000000005,38.718,29.509 +2020-07-20 05:30:00,86.91,34.939,38.718,29.509 +2020-07-20 05:45:00,96.34,33.38,38.718,29.509 +2020-07-20 06:00:00,101.08,32.46,51.648999999999994,29.509 +2020-07-20 06:15:00,103.96,31.761999999999997,51.648999999999994,29.509 +2020-07-20 06:30:00,100.97,31.808000000000003,51.648999999999994,29.509 +2020-07-20 06:45:00,101.61,35.384,51.648999999999994,29.509 +2020-07-20 07:00:00,101.25,34.973,60.159,29.509 +2020-07-20 07:15:00,101.47,36.051,60.159,29.509 +2020-07-20 07:30:00,105.36,33.915,60.159,29.509 +2020-07-20 07:45:00,106.42,35.589,60.159,29.509 +2020-07-20 08:00:00,107.88,31.041,53.8,29.509 +2020-07-20 08:15:00,105.6,34.771,53.8,29.509 +2020-07-20 08:30:00,101.05,36.065,53.8,29.509 +2020-07-20 08:45:00,107.78,39.739000000000004,53.8,29.509 +2020-07-20 09:00:00,106.48,34.959,50.583,29.509 +2020-07-20 09:15:00,103.76,34.821,50.583,29.509 +2020-07-20 09:30:00,100.88,37.909,50.583,29.509 +2020-07-20 09:45:00,97.4,39.689,50.583,29.509 +2020-07-20 10:00:00,103.26,38.675,49.11600000000001,29.509 +2020-07-20 10:15:00,107.19,40.2,49.11600000000001,29.509 +2020-07-20 10:30:00,105.63,40.084,49.11600000000001,29.509 +2020-07-20 10:45:00,97.62,39.985,49.11600000000001,29.509 +2020-07-20 11:00:00,97.57,37.84,49.056000000000004,29.509 +2020-07-20 11:15:00,103.01,38.643,49.056000000000004,29.509 +2020-07-20 11:30:00,102.55,40.983000000000004,49.056000000000004,29.509 +2020-07-20 11:45:00,105.27,42.663999999999994,49.056000000000004,29.509 +2020-07-20 12:00:00,98.29,37.333,47.227,29.509 +2020-07-20 12:15:00,99.49,36.194,47.227,29.509 +2020-07-20 12:30:00,97.27,34.074,47.227,29.509 +2020-07-20 12:45:00,96.77,34.235,47.227,29.509 +2020-07-20 13:00:00,95.98,34.484,47.006,29.509 +2020-07-20 13:15:00,91.51,33.8,47.006,29.509 +2020-07-20 13:30:00,91.54,32.129,47.006,29.509 +2020-07-20 13:45:00,91.45,33.25,47.006,29.509 +2020-07-20 14:00:00,91.7,34.586,47.19,29.509 +2020-07-20 14:15:00,91.78,33.838,47.19,29.509 +2020-07-20 14:30:00,88.92,32.577,47.19,29.509 +2020-07-20 14:45:00,90.77,34.091,47.19,29.509 +2020-07-20 15:00:00,87.71,36.536,47.846000000000004,29.509 +2020-07-20 15:15:00,88.74,33.169000000000004,47.846000000000004,29.509 +2020-07-20 15:30:00,89.17,31.98,47.846000000000004,29.509 +2020-07-20 15:45:00,88.84,29.899,47.846000000000004,29.509 +2020-07-20 16:00:00,89.26,33.132,49.641000000000005,29.509 +2020-07-20 16:15:00,89.55,32.911,49.641000000000005,29.509 +2020-07-20 16:30:00,91.94,32.528,49.641000000000005,29.509 +2020-07-20 16:45:00,94.53,28.75,49.641000000000005,29.509 +2020-07-20 17:00:00,95.39,32.519,54.133,29.509 +2020-07-20 17:15:00,94.5,32.255,54.133,29.509 +2020-07-20 17:30:00,96.79,31.66,54.133,29.509 +2020-07-20 17:45:00,98.25,31.088,54.133,29.509 +2020-07-20 18:00:00,98.64,35.414,53.761,29.509 +2020-07-20 18:15:00,97.32,33.545,53.761,29.509 +2020-07-20 18:30:00,97.45,31.878,53.761,29.509 +2020-07-20 18:45:00,96.82,34.93,53.761,29.509 +2020-07-20 19:00:00,93.5,37.611,53.923,29.509 +2020-07-20 19:15:00,90.15,36.361,53.923,29.509 +2020-07-20 19:30:00,89.51,35.339,53.923,29.509 +2020-07-20 19:45:00,89.22,33.908,53.923,29.509 +2020-07-20 20:00:00,86.74,31.003,58.786,29.509 +2020-07-20 20:15:00,87.84,31.72,58.786,29.509 +2020-07-20 20:30:00,88.62,32.219,58.786,29.509 +2020-07-20 20:45:00,88.28,32.134,58.786,29.509 +2020-07-20 21:00:00,86.92,29.896,54.591,29.509 +2020-07-20 21:15:00,85.22,32.747,54.591,29.509 +2020-07-20 21:30:00,80.97,33.064,54.591,29.509 +2020-07-20 21:45:00,80.99,33.756,54.591,29.509 +2020-07-20 22:00:00,74.55,31.004,51.551,29.509 +2020-07-20 22:15:00,75.32,34.176,51.551,29.509 +2020-07-20 22:30:00,74.29,29.589000000000002,51.551,29.509 +2020-07-20 22:45:00,72.88,26.478,51.551,29.509 +2020-07-20 23:00:00,68.65,24.109,44.716,29.509 +2020-07-20 23:15:00,69.81,20.999000000000002,44.716,29.509 +2020-07-20 23:30:00,68.67,19.935,44.716,29.509 +2020-07-20 23:45:00,67.93,18.665,44.716,29.509 +2020-07-21 00:00:00,63.82,17.929000000000002,43.01,29.509 +2020-07-21 00:15:00,65.39,18.83,43.01,29.509 +2020-07-21 00:30:00,64.02,17.522000000000002,43.01,29.509 +2020-07-21 00:45:00,64.2,17.633,43.01,29.509 +2020-07-21 01:00:00,64.16,17.659000000000002,40.687,29.509 +2020-07-21 01:15:00,65.18,16.822,40.687,29.509 +2020-07-21 01:30:00,64.43,15.337,40.687,29.509 +2020-07-21 01:45:00,65.07,15.425,40.687,29.509 +2020-07-21 02:00:00,63.66,15.28,39.554,29.509 +2020-07-21 02:15:00,65.32,14.513,39.554,29.509 +2020-07-21 02:30:00,72.4,15.956,39.554,29.509 +2020-07-21 02:45:00,73.53,16.692,39.554,29.509 +2020-07-21 03:00:00,68.84,17.657,38.958,29.509 +2020-07-21 03:15:00,66.73,17.21,38.958,29.509 +2020-07-21 03:30:00,70.8,16.541,38.958,29.509 +2020-07-21 03:45:00,75.24,15.792,38.958,29.509 +2020-07-21 04:00:00,77.83,19.896,39.783,29.509 +2020-07-21 04:15:00,79.77,25.436,39.783,29.509 +2020-07-21 04:30:00,76.2,22.725,39.783,29.509 +2020-07-21 04:45:00,78.11,22.65,39.783,29.509 +2020-07-21 05:00:00,86.55,34.32,42.281000000000006,29.509 +2020-07-21 05:15:00,88.52,40.176,42.281000000000006,29.509 +2020-07-21 05:30:00,90.48,35.345,42.281000000000006,29.509 +2020-07-21 05:45:00,99.68,33.008,42.281000000000006,29.509 +2020-07-21 06:00:00,105.81,33.314,50.801,29.509 +2020-07-21 06:15:00,105.55,32.696,50.801,29.509 +2020-07-21 06:30:00,99.73,32.465,50.801,29.509 +2020-07-21 06:45:00,103.62,35.137,50.801,29.509 +2020-07-21 07:00:00,102.74,34.907,60.202,29.509 +2020-07-21 07:15:00,100.9,35.742,60.202,29.509 +2020-07-21 07:30:00,99.85,33.693000000000005,60.202,29.509 +2020-07-21 07:45:00,99.38,34.294000000000004,60.202,29.509 +2020-07-21 08:00:00,99.42,29.659000000000002,54.461000000000006,29.509 +2020-07-21 08:15:00,99.3,33.006,54.461000000000006,29.509 +2020-07-21 08:30:00,105.13,34.493,54.461000000000006,29.509 +2020-07-21 08:45:00,106.32,37.162,54.461000000000006,29.509 +2020-07-21 09:00:00,105.96,32.863,50.753,29.509 +2020-07-21 09:15:00,101.04,32.369,50.753,29.509 +2020-07-21 09:30:00,99.71,36.133,50.753,29.509 +2020-07-21 09:45:00,98.06,39.431999999999995,50.753,29.509 +2020-07-21 10:00:00,97.74,36.961999999999996,49.703,29.509 +2020-07-21 10:15:00,100.93,38.46,49.703,29.509 +2020-07-21 10:30:00,104.39,38.344,49.703,29.509 +2020-07-21 10:45:00,104.51,39.336999999999996,49.703,29.509 +2020-07-21 11:00:00,102.28,37.006,49.42100000000001,29.509 +2020-07-21 11:15:00,99.28,38.304,49.42100000000001,29.509 +2020-07-21 11:30:00,95.02,39.493,49.42100000000001,29.509 +2020-07-21 11:45:00,101.89,40.571,49.42100000000001,29.509 +2020-07-21 12:00:00,99.86,35.217,47.155,29.509 +2020-07-21 12:15:00,95.66,34.506,47.155,29.509 +2020-07-21 12:30:00,93.76,33.255,47.155,29.509 +2020-07-21 12:45:00,93.59,34.227,47.155,29.509 +2020-07-21 13:00:00,92.33,34.104,47.515,29.509 +2020-07-21 13:15:00,91.18,35.485,47.515,29.509 +2020-07-21 13:30:00,89.86,33.629,47.515,29.509 +2020-07-21 13:45:00,90.0,33.645,47.515,29.509 +2020-07-21 14:00:00,90.09,35.437,47.575,29.509 +2020-07-21 14:15:00,92.68,34.449,47.575,29.509 +2020-07-21 14:30:00,90.15,33.472,47.575,29.509 +2020-07-21 14:45:00,88.28,34.118,47.575,29.509 +2020-07-21 15:00:00,88.62,36.428000000000004,48.903,29.509 +2020-07-21 15:15:00,88.99,34.052,48.903,29.509 +2020-07-21 15:30:00,89.61,32.603,48.903,29.509 +2020-07-21 15:45:00,91.36,30.955,48.903,29.509 +2020-07-21 16:00:00,93.5,33.351,50.218999999999994,29.509 +2020-07-21 16:15:00,91.9,33.176,50.218999999999994,29.509 +2020-07-21 16:30:00,94.2,32.317,50.218999999999994,29.509 +2020-07-21 16:45:00,95.32,29.316,50.218999999999994,29.509 +2020-07-21 17:00:00,95.98,33.25,55.396,29.509 +2020-07-21 17:15:00,97.01,33.464,55.396,29.509 +2020-07-21 17:30:00,98.47,32.316,55.396,29.509 +2020-07-21 17:45:00,99.18,31.405,55.396,29.509 +2020-07-21 18:00:00,98.99,34.709,55.583999999999996,29.509 +2020-07-21 18:15:00,99.15,34.52,55.583999999999996,29.509 +2020-07-21 18:30:00,101.85,32.603,55.583999999999996,29.509 +2020-07-21 18:45:00,98.64,35.358000000000004,55.583999999999996,29.509 +2020-07-21 19:00:00,97.79,36.768,56.071000000000005,29.509 +2020-07-21 19:15:00,91.91,35.734,56.071000000000005,29.509 +2020-07-21 19:30:00,90.5,34.538000000000004,56.071000000000005,29.509 +2020-07-21 19:45:00,89.8,33.467,56.071000000000005,29.509 +2020-07-21 20:00:00,87.79,30.967,61.55,29.509 +2020-07-21 20:15:00,91.21,30.176,61.55,29.509 +2020-07-21 20:30:00,90.1,30.614,61.55,29.509 +2020-07-21 20:45:00,90.93,31.037,61.55,29.509 +2020-07-21 21:00:00,86.27,29.811999999999998,55.94,29.509 +2020-07-21 21:15:00,86.42,30.99,55.94,29.509 +2020-07-21 21:30:00,83.72,31.548000000000002,55.94,29.509 +2020-07-21 21:45:00,82.77,32.415,55.94,29.509 +2020-07-21 22:00:00,76.63,29.698,52.857,29.509 +2020-07-21 22:15:00,77.71,32.525999999999996,52.857,29.509 +2020-07-21 22:30:00,75.72,28.224,52.857,29.509 +2020-07-21 22:45:00,76.32,25.078000000000003,52.857,29.509 +2020-07-21 23:00:00,71.02,21.905,46.04,29.509 +2020-07-21 23:15:00,71.7,20.565,46.04,29.509 +2020-07-21 23:30:00,70.36,19.544,46.04,29.509 +2020-07-21 23:45:00,70.53,18.503,46.04,29.509 +2020-07-22 00:00:00,67.59,17.987000000000002,42.195,29.509 +2020-07-22 00:15:00,68.74,18.885,42.195,29.509 +2020-07-22 00:30:00,66.81,17.581,42.195,29.509 +2020-07-22 00:45:00,67.64,17.7,42.195,29.509 +2020-07-22 01:00:00,66.47,17.722,38.82,29.509 +2020-07-22 01:15:00,67.91,16.884,38.82,29.509 +2020-07-22 01:30:00,65.56,15.405999999999999,38.82,29.509 +2020-07-22 01:45:00,66.27,15.485999999999999,38.82,29.509 +2020-07-22 02:00:00,64.97,15.347999999999999,37.023,29.509 +2020-07-22 02:15:00,72.4,14.513,37.023,29.509 +2020-07-22 02:30:00,74.12,16.021,37.023,29.509 +2020-07-22 02:45:00,73.22,16.758,37.023,29.509 +2020-07-22 03:00:00,66.46,17.713,36.818000000000005,29.509 +2020-07-22 03:15:00,75.15,17.28,36.818000000000005,29.509 +2020-07-22 03:30:00,76.71,16.618,36.818000000000005,29.509 +2020-07-22 03:45:00,78.64,15.88,36.818000000000005,29.509 +2020-07-22 04:00:00,77.87,19.965,37.495,29.509 +2020-07-22 04:15:00,72.77,25.488000000000003,37.495,29.509 +2020-07-22 04:30:00,76.27,22.774,37.495,29.509 +2020-07-22 04:45:00,81.51,22.7,37.495,29.509 +2020-07-22 05:00:00,85.93,34.351,39.858000000000004,29.509 +2020-07-22 05:15:00,89.79,40.176,39.858000000000004,29.509 +2020-07-22 05:30:00,98.41,35.385,39.858000000000004,29.509 +2020-07-22 05:45:00,102.38,33.051,39.858000000000004,29.509 +2020-07-22 06:00:00,107.43,33.343,52.867,29.509 +2020-07-22 06:15:00,101.45,32.733000000000004,52.867,29.509 +2020-07-22 06:30:00,105.73,32.514,52.867,29.509 +2020-07-22 06:45:00,102.48,35.209,52.867,29.509 +2020-07-22 07:00:00,105.43,34.973,66.061,29.509 +2020-07-22 07:15:00,109.7,35.829,66.061,29.509 +2020-07-22 07:30:00,109.95,33.79,66.061,29.509 +2020-07-22 07:45:00,108.67,34.412,66.061,29.509 +2020-07-22 08:00:00,103.21,29.785,58.532,29.509 +2020-07-22 08:15:00,103.06,33.128,58.532,29.509 +2020-07-22 08:30:00,103.46,34.603,58.532,29.509 +2020-07-22 08:45:00,102.16,37.262,58.532,29.509 +2020-07-22 09:00:00,103.55,32.961999999999996,56.047,29.509 +2020-07-22 09:15:00,112.12,32.464,56.047,29.509 +2020-07-22 09:30:00,113.73,36.217,56.047,29.509 +2020-07-22 09:45:00,114.83,39.509,56.047,29.509 +2020-07-22 10:00:00,106.75,37.044000000000004,53.823,29.509 +2020-07-22 10:15:00,110.2,38.532,53.823,29.509 +2020-07-22 10:30:00,111.64,38.41,53.823,29.509 +2020-07-22 10:45:00,111.39,39.402,53.823,29.509 +2020-07-22 11:00:00,107.68,37.074,54.184,29.509 +2020-07-22 11:15:00,106.1,38.369,54.184,29.509 +2020-07-22 11:30:00,109.13,39.548,54.184,29.509 +2020-07-22 11:45:00,107.03,40.616,54.184,29.509 +2020-07-22 12:00:00,105.01,35.274,52.628,29.509 +2020-07-22 12:15:00,102.07,34.558,52.628,29.509 +2020-07-22 12:30:00,96.47,33.306,52.628,29.509 +2020-07-22 12:45:00,97.11,34.27,52.628,29.509 +2020-07-22 13:00:00,97.9,34.126999999999995,52.31,29.509 +2020-07-22 13:15:00,101.75,35.499,52.31,29.509 +2020-07-22 13:30:00,97.86,33.644,52.31,29.509 +2020-07-22 13:45:00,95.02,33.67,52.31,29.509 +2020-07-22 14:00:00,94.83,35.455999999999996,52.278999999999996,29.509 +2020-07-22 14:15:00,98.49,34.472,52.278999999999996,29.509 +2020-07-22 14:30:00,95.78,33.493,52.278999999999996,29.509 +2020-07-22 14:45:00,94.64,34.146,52.278999999999996,29.509 +2020-07-22 15:00:00,92.12,36.445,53.306999999999995,29.509 +2020-07-22 15:15:00,93.44,34.067,53.306999999999995,29.509 +2020-07-22 15:30:00,92.66,32.624,53.306999999999995,29.509 +2020-07-22 15:45:00,95.61,30.971999999999998,53.306999999999995,29.509 +2020-07-22 16:00:00,95.06,33.367,55.358999999999995,29.509 +2020-07-22 16:15:00,96.05,33.196,55.358999999999995,29.509 +2020-07-22 16:30:00,96.79,32.354,55.358999999999995,29.509 +2020-07-22 16:45:00,97.88,29.37,55.358999999999995,29.509 +2020-07-22 17:00:00,99.85,33.293,59.211999999999996,29.509 +2020-07-22 17:15:00,99.72,33.529,59.211999999999996,29.509 +2020-07-22 17:30:00,100.86,32.388000000000005,59.211999999999996,29.509 +2020-07-22 17:45:00,101.07,31.495,59.211999999999996,29.509 +2020-07-22 18:00:00,101.72,34.8,60.403999999999996,29.509 +2020-07-22 18:15:00,102.59,34.605,60.403999999999996,29.509 +2020-07-22 18:30:00,100.5,32.693000000000005,60.403999999999996,29.509 +2020-07-22 18:45:00,100.9,35.45,60.403999999999996,29.509 +2020-07-22 19:00:00,97.19,36.861,60.993,29.509 +2020-07-22 19:15:00,97.17,35.821999999999996,60.993,29.509 +2020-07-22 19:30:00,92.14,34.623000000000005,60.993,29.509 +2020-07-22 19:45:00,91.77,33.551,60.993,29.509 +2020-07-22 20:00:00,90.35,31.044,66.6,29.509 +2020-07-22 20:15:00,91.78,30.253,66.6,29.509 +2020-07-22 20:30:00,95.13,30.684,66.6,29.509 +2020-07-22 20:45:00,92.78,31.101999999999997,66.6,29.509 +2020-07-22 21:00:00,90.14,29.88,59.855,29.509 +2020-07-22 21:15:00,88.39,31.054000000000002,59.855,29.509 +2020-07-22 21:30:00,85.36,31.596,59.855,29.509 +2020-07-22 21:45:00,84.32,32.446,59.855,29.509 +2020-07-22 22:00:00,79.02,29.726,54.942,29.509 +2020-07-22 22:15:00,78.99,32.55,54.942,29.509 +2020-07-22 22:30:00,76.96,28.224,54.942,29.509 +2020-07-22 22:45:00,79.38,25.072,54.942,29.509 +2020-07-22 23:00:00,71.81,21.918000000000003,46.056000000000004,29.509 +2020-07-22 23:15:00,73.46,20.590999999999998,46.056000000000004,29.509 +2020-07-22 23:30:00,72.52,19.585,46.056000000000004,29.509 +2020-07-22 23:45:00,71.69,18.542,46.056000000000004,29.509 +2020-07-23 00:00:00,68.3,18.047,40.859,29.509 +2020-07-23 00:15:00,70.02,18.944000000000003,40.859,29.509 +2020-07-23 00:30:00,68.78,17.644000000000002,40.859,29.509 +2020-07-23 00:45:00,69.1,17.771,40.859,29.509 +2020-07-23 01:00:00,68.25,17.789,39.06,29.509 +2020-07-23 01:15:00,68.94,16.949,39.06,29.509 +2020-07-23 01:30:00,67.5,15.479000000000001,39.06,29.509 +2020-07-23 01:45:00,67.58,15.552999999999999,39.06,29.509 +2020-07-23 02:00:00,66.85,15.42,37.592,29.509 +2020-07-23 02:15:00,71.03,14.513,37.592,29.509 +2020-07-23 02:30:00,76.38,16.089000000000002,37.592,29.509 +2020-07-23 02:45:00,76.3,16.827,37.592,29.509 +2020-07-23 03:00:00,71.84,17.772000000000002,37.416,29.509 +2020-07-23 03:15:00,72.28,17.354,37.416,29.509 +2020-07-23 03:30:00,79.96,16.701,37.416,29.509 +2020-07-23 03:45:00,81.25,15.972000000000001,37.416,29.509 +2020-07-23 04:00:00,80.97,20.04,38.176,29.509 +2020-07-23 04:15:00,74.82,25.546,38.176,29.509 +2020-07-23 04:30:00,77.22,22.83,38.176,29.509 +2020-07-23 04:45:00,84.81,22.756999999999998,38.176,29.509 +2020-07-23 05:00:00,87.82,34.391,41.203,29.509 +2020-07-23 05:15:00,95.47,40.189,41.203,29.509 +2020-07-23 05:30:00,100.21,35.435,41.203,29.509 +2020-07-23 05:45:00,104.43,33.103,41.203,29.509 +2020-07-23 06:00:00,105.17,33.383,51.09,29.509 +2020-07-23 06:15:00,102.39,32.779,51.09,29.509 +2020-07-23 06:30:00,107.01,32.573,51.09,29.509 +2020-07-23 06:45:00,109.32,35.289,51.09,29.509 +2020-07-23 07:00:00,113.51,35.048,63.541000000000004,29.509 +2020-07-23 07:15:00,107.64,35.925,63.541000000000004,29.509 +2020-07-23 07:30:00,106.21,33.898,63.541000000000004,29.509 +2020-07-23 07:45:00,107.98,34.539,63.541000000000004,29.509 +2020-07-23 08:00:00,109.58,29.919,55.65,29.509 +2020-07-23 08:15:00,109.46,33.257,55.65,29.509 +2020-07-23 08:30:00,109.2,34.72,55.65,29.509 +2020-07-23 08:45:00,111.06,37.368,55.65,29.509 +2020-07-23 09:00:00,111.53,33.069,51.833999999999996,29.509 +2020-07-23 09:15:00,109.8,32.566,51.833999999999996,29.509 +2020-07-23 09:30:00,107.6,36.308,51.833999999999996,29.509 +2020-07-23 09:45:00,106.21,39.592,51.833999999999996,29.509 +2020-07-23 10:00:00,111.27,37.133,49.70399999999999,29.509 +2020-07-23 10:15:00,114.48,38.61,49.70399999999999,29.509 +2020-07-23 10:30:00,116.26,38.482,49.70399999999999,29.509 +2020-07-23 10:45:00,112.02,39.472,49.70399999999999,29.509 +2020-07-23 11:00:00,112.26,37.147,48.593999999999994,29.509 +2020-07-23 11:15:00,110.11,38.439,48.593999999999994,29.509 +2020-07-23 11:30:00,107.88,39.608000000000004,48.593999999999994,29.509 +2020-07-23 11:45:00,103.41,40.667,48.593999999999994,29.509 +2020-07-23 12:00:00,100.19,35.335,46.275,29.509 +2020-07-23 12:15:00,101.53,34.614000000000004,46.275,29.509 +2020-07-23 12:30:00,98.55,33.36,46.275,29.509 +2020-07-23 12:45:00,97.18,34.318000000000005,46.275,29.509 +2020-07-23 13:00:00,95.62,34.154,45.803000000000004,29.509 +2020-07-23 13:15:00,94.73,35.516,45.803000000000004,29.509 +2020-07-23 13:30:00,96.45,33.664,45.803000000000004,29.509 +2020-07-23 13:45:00,95.72,33.7,45.803000000000004,29.509 +2020-07-23 14:00:00,95.01,35.48,46.251999999999995,29.509 +2020-07-23 14:15:00,93.53,34.498000000000005,46.251999999999995,29.509 +2020-07-23 14:30:00,92.34,33.518,46.251999999999995,29.509 +2020-07-23 14:45:00,91.59,34.177,46.251999999999995,29.509 +2020-07-23 15:00:00,90.99,36.466,48.309,29.509 +2020-07-23 15:15:00,91.91,34.086,48.309,29.509 +2020-07-23 15:30:00,92.29,32.647,48.309,29.509 +2020-07-23 15:45:00,98.7,30.991999999999997,48.309,29.509 +2020-07-23 16:00:00,94.54,33.385,49.681999999999995,29.509 +2020-07-23 16:15:00,95.86,33.22,49.681999999999995,29.509 +2020-07-23 16:30:00,97.35,32.391999999999996,49.681999999999995,29.509 +2020-07-23 16:45:00,99.16,29.426,49.681999999999995,29.509 +2020-07-23 17:00:00,99.71,33.339,53.086000000000006,29.509 +2020-07-23 17:15:00,100.72,33.598,53.086000000000006,29.509 +2020-07-23 17:30:00,104.23,32.466,53.086000000000006,29.509 +2020-07-23 17:45:00,102.39,31.589000000000002,53.086000000000006,29.509 +2020-07-23 18:00:00,103.82,34.895,54.038999999999994,29.509 +2020-07-23 18:15:00,102.29,34.695,54.038999999999994,29.509 +2020-07-23 18:30:00,102.15,32.79,54.038999999999994,29.509 +2020-07-23 18:45:00,101.8,35.545,54.038999999999994,29.509 +2020-07-23 19:00:00,98.33,36.96,53.408,29.509 +2020-07-23 19:15:00,94.82,35.916,53.408,29.509 +2020-07-23 19:30:00,93.96,34.714,53.408,29.509 +2020-07-23 19:45:00,92.17,33.641,53.408,29.509 +2020-07-23 20:00:00,91.92,31.128,55.309,29.509 +2020-07-23 20:15:00,92.98,30.337,55.309,29.509 +2020-07-23 20:30:00,94.08,30.759,55.309,29.509 +2020-07-23 20:45:00,96.13,31.17,55.309,29.509 +2020-07-23 21:00:00,89.56,29.951999999999998,51.585,29.509 +2020-07-23 21:15:00,88.93,31.123,51.585,29.509 +2020-07-23 21:30:00,84.47,31.65,51.585,29.509 +2020-07-23 21:45:00,83.82,32.483000000000004,51.585,29.509 +2020-07-23 22:00:00,79.54,29.758000000000003,48.006,29.509 +2020-07-23 22:15:00,79.02,32.576,48.006,29.509 +2020-07-23 22:30:00,77.0,28.225,48.006,29.509 +2020-07-23 22:45:00,76.14,25.069000000000003,48.006,29.509 +2020-07-23 23:00:00,71.58,21.935,42.309,29.509 +2020-07-23 23:15:00,73.24,20.619,42.309,29.509 +2020-07-23 23:30:00,70.94,19.628,42.309,29.509 +2020-07-23 23:45:00,70.55,18.584,42.309,29.509 +2020-07-24 00:00:00,68.03,16.248,39.649,29.509 +2020-07-24 00:15:00,69.75,17.363,39.649,29.509 +2020-07-24 00:30:00,68.38,16.374000000000002,39.649,29.509 +2020-07-24 00:45:00,68.41,16.957,39.649,29.509 +2020-07-24 01:00:00,66.25,16.582,37.744,29.509 +2020-07-24 01:15:00,67.66,15.015,37.744,29.509 +2020-07-24 01:30:00,66.78,14.513,37.744,29.509 +2020-07-24 01:45:00,67.15,14.513,37.744,29.509 +2020-07-24 02:00:00,66.84,15.012,36.965,29.509 +2020-07-24 02:15:00,67.65,14.513,36.965,29.509 +2020-07-24 02:30:00,73.02,16.486,36.965,29.509 +2020-07-24 02:45:00,75.8,16.48,36.965,29.509 +2020-07-24 03:00:00,71.52,18.334,37.678000000000004,29.509 +2020-07-24 03:15:00,70.7,16.549,37.678000000000004,29.509 +2020-07-24 03:30:00,77.5,15.645999999999999,37.678000000000004,29.509 +2020-07-24 03:45:00,79.57,15.852,37.678000000000004,29.509 +2020-07-24 04:00:00,80.0,20.035999999999998,38.591,29.509 +2020-07-24 04:15:00,75.24,23.857,38.591,29.509 +2020-07-24 04:30:00,76.43,22.151999999999997,38.591,29.509 +2020-07-24 04:45:00,79.48,21.465,38.591,29.509 +2020-07-24 05:00:00,87.6,32.664,40.666,29.509 +2020-07-24 05:15:00,90.22,39.36,40.666,29.509 +2020-07-24 05:30:00,93.14,34.783,40.666,29.509 +2020-07-24 05:45:00,91.92,31.98,40.666,29.509 +2020-07-24 06:00:00,106.2,32.453,51.784,29.509 +2020-07-24 06:15:00,107.22,32.135,51.784,29.509 +2020-07-24 06:30:00,110.0,31.943,51.784,29.509 +2020-07-24 06:45:00,107.88,34.431999999999995,51.784,29.509 +2020-07-24 07:00:00,114.31,34.941,61.383,29.509 +2020-07-24 07:15:00,115.72,36.741,61.383,29.509 +2020-07-24 07:30:00,112.69,32.617,61.383,29.509 +2020-07-24 07:45:00,107.73,33.121,61.383,29.509 +2020-07-24 08:00:00,109.58,29.456,55.272,29.509 +2020-07-24 08:15:00,115.15,33.56,55.272,29.509 +2020-07-24 08:30:00,122.28,34.815,55.272,29.509 +2020-07-24 08:45:00,123.43,37.437,55.272,29.509 +2020-07-24 09:00:00,124.99,30.558000000000003,53.506,29.509 +2020-07-24 09:15:00,124.06,32.117,53.506,29.509 +2020-07-24 09:30:00,113.17,35.128,53.506,29.509 +2020-07-24 09:45:00,102.68,38.842,53.506,29.509 +2020-07-24 10:00:00,108.12,36.326,51.363,29.509 +2020-07-24 10:15:00,109.83,37.472,51.363,29.509 +2020-07-24 10:30:00,109.0,37.959,51.363,29.509 +2020-07-24 10:45:00,104.36,38.887,51.363,29.509 +2020-07-24 11:00:00,106.38,36.842,51.043,29.509 +2020-07-24 11:15:00,106.17,37.016999999999996,51.043,29.509 +2020-07-24 11:30:00,105.41,37.599000000000004,51.043,29.509 +2020-07-24 11:45:00,102.94,37.579,51.043,29.509 +2020-07-24 12:00:00,101.2,32.623000000000005,47.52,29.509 +2020-07-24 12:15:00,101.62,31.401999999999997,47.52,29.509 +2020-07-24 12:30:00,104.8,30.261,47.52,29.509 +2020-07-24 12:45:00,107.68,30.285,47.52,29.509 +2020-07-24 13:00:00,109.01,30.66,45.494,29.509 +2020-07-24 13:15:00,111.33,32.129,45.494,29.509 +2020-07-24 13:30:00,109.44,31.159000000000002,45.494,29.509 +2020-07-24 13:45:00,103.01,31.551,45.494,29.509 +2020-07-24 14:00:00,93.71,32.553000000000004,43.883,29.509 +2020-07-24 14:15:00,95.41,32.075,43.883,29.509 +2020-07-24 14:30:00,104.39,32.713,43.883,29.509 +2020-07-24 14:45:00,101.16,32.585,43.883,29.509 +2020-07-24 15:00:00,96.2,34.821,45.714,29.509 +2020-07-24 15:15:00,94.94,32.219,45.714,29.509 +2020-07-24 15:30:00,91.29,30.305999999999997,45.714,29.509 +2020-07-24 15:45:00,89.73,29.476,45.714,29.509 +2020-07-24 16:00:00,90.1,31.035999999999998,48.222,29.509 +2020-07-24 16:15:00,94.51,31.392,48.222,29.509 +2020-07-24 16:30:00,101.04,30.37,48.222,29.509 +2020-07-24 16:45:00,100.07,26.570999999999998,48.222,29.509 +2020-07-24 17:00:00,103.96,32.347,52.619,29.509 +2020-07-24 17:15:00,101.89,32.475,52.619,29.509 +2020-07-24 17:30:00,100.32,31.561,52.619,29.509 +2020-07-24 17:45:00,99.63,30.541999999999998,52.619,29.509 +2020-07-24 18:00:00,100.58,33.814,52.99,29.509 +2020-07-24 18:15:00,97.61,32.611999999999995,52.99,29.509 +2020-07-24 18:30:00,96.16,30.566,52.99,29.509 +2020-07-24 18:45:00,95.07,33.78,52.99,29.509 +2020-07-24 19:00:00,91.05,36.055,51.923,29.509 +2020-07-24 19:15:00,89.09,35.54,51.923,29.509 +2020-07-24 19:30:00,87.63,34.434,51.923,29.509 +2020-07-24 19:45:00,86.2,32.297,51.923,29.509 +2020-07-24 20:00:00,85.56,29.603,56.238,29.509 +2020-07-24 20:15:00,85.67,29.671,56.238,29.509 +2020-07-24 20:30:00,86.67,29.561,56.238,29.509 +2020-07-24 20:45:00,85.85,29.044,56.238,29.509 +2020-07-24 21:00:00,80.66,29.201999999999998,52.426,29.509 +2020-07-24 21:15:00,79.89,32.137,52.426,29.509 +2020-07-24 21:30:00,76.38,32.484,52.426,29.509 +2020-07-24 21:45:00,77.28,33.479,52.426,29.509 +2020-07-24 22:00:00,72.52,30.523000000000003,48.196000000000005,29.509 +2020-07-24 22:15:00,73.32,33.078,48.196000000000005,29.509 +2020-07-24 22:30:00,71.32,33.355,48.196000000000005,29.509 +2020-07-24 22:45:00,70.83,30.868000000000002,48.196000000000005,29.509 +2020-07-24 23:00:00,64.51,29.603,41.71,29.509 +2020-07-24 23:15:00,66.35,26.752,41.71,29.509 +2020-07-24 23:30:00,63.12,23.924,41.71,29.509 +2020-07-24 23:45:00,64.62,22.791,41.71,29.509 +2020-07-25 00:00:00,60.52,17.883,41.105,29.398000000000003 +2020-07-25 00:15:00,63.43,18.605999999999998,41.105,29.398000000000003 +2020-07-25 00:30:00,61.73,17.007,41.105,29.398000000000003 +2020-07-25 00:45:00,60.92,16.749000000000002,41.105,29.398000000000003 +2020-07-25 01:00:00,58.7,16.616,36.934,29.398000000000003 +2020-07-25 01:15:00,60.36,15.764000000000001,36.934,29.398000000000003 +2020-07-25 01:30:00,59.34,14.513,36.934,29.398000000000003 +2020-07-25 01:45:00,59.81,15.419,36.934,29.398000000000003 +2020-07-25 02:00:00,63.49,15.175999999999998,34.782,29.398000000000003 +2020-07-25 02:15:00,67.28,14.513,34.782,29.398000000000003 +2020-07-25 02:30:00,64.51,15.055,34.782,29.398000000000003 +2020-07-25 02:45:00,58.8,15.890999999999998,34.782,29.398000000000003 +2020-07-25 03:00:00,58.48,16.201,34.489000000000004,29.398000000000003 +2020-07-25 03:15:00,60.49,14.513,34.489000000000004,29.398000000000003 +2020-07-25 03:30:00,60.97,14.513,34.489000000000004,29.398000000000003 +2020-07-25 03:45:00,67.24,15.163,34.489000000000004,29.398000000000003 +2020-07-25 04:00:00,67.49,17.617,34.111,29.398000000000003 +2020-07-25 04:15:00,64.17,20.659000000000002,34.111,29.398000000000003 +2020-07-25 04:30:00,56.16,17.320999999999998,34.111,29.398000000000003 +2020-07-25 04:45:00,60.64,16.969,34.111,29.398000000000003 +2020-07-25 05:00:00,64.22,20.432000000000002,33.283,29.398000000000003 +2020-07-25 05:15:00,62.07,16.791,33.283,29.398000000000003 +2020-07-25 05:30:00,66.1,14.513,33.283,29.398000000000003 +2020-07-25 05:45:00,71.54,15.429,33.283,29.398000000000003 +2020-07-25 06:00:00,72.53,26.487,33.653,29.398000000000003 +2020-07-25 06:15:00,71.91,33.288000000000004,33.653,29.398000000000003 +2020-07-25 06:30:00,69.01,30.473000000000003,33.653,29.398000000000003 +2020-07-25 06:45:00,69.56,30.228,33.653,29.398000000000003 +2020-07-25 07:00:00,73.11,29.875999999999998,36.732,29.398000000000003 +2020-07-25 07:15:00,76.36,30.405,36.732,29.398000000000003 +2020-07-25 07:30:00,78.06,27.684,36.732,29.398000000000003 +2020-07-25 07:45:00,80.04,28.840999999999998,36.732,29.398000000000003 +2020-07-25 08:00:00,77.09,25.694000000000003,41.318999999999996,29.398000000000003 +2020-07-25 08:15:00,79.78,29.186,41.318999999999996,29.398000000000003 +2020-07-25 08:30:00,80.24,30.247,41.318999999999996,29.398000000000003 +2020-07-25 08:45:00,80.25,33.574,41.318999999999996,29.398000000000003 +2020-07-25 09:00:00,76.95,29.991999999999997,43.195,29.398000000000003 +2020-07-25 09:15:00,80.1,31.998,43.195,29.398000000000003 +2020-07-25 09:30:00,78.95,35.445,43.195,29.398000000000003 +2020-07-25 09:45:00,77.75,38.635999999999996,43.195,29.398000000000003 +2020-07-25 10:00:00,76.41,36.813,41.843999999999994,29.398000000000003 +2020-07-25 10:15:00,81.4,38.321999999999996,41.843999999999994,29.398000000000003 +2020-07-25 10:30:00,76.14,38.407,41.843999999999994,29.398000000000003 +2020-07-25 10:45:00,74.84,38.793,41.843999999999994,29.398000000000003 +2020-07-25 11:00:00,74.35,36.548,39.035,29.398000000000003 +2020-07-25 11:15:00,74.37,37.754,39.035,29.398000000000003 +2020-07-25 11:30:00,82.18,38.760999999999996,39.035,29.398000000000003 +2020-07-25 11:45:00,79.36,39.576,39.035,29.398000000000003 +2020-07-25 12:00:00,73.47,35.176,38.001,29.398000000000003 +2020-07-25 12:15:00,71.39,34.818000000000005,38.001,29.398000000000003 +2020-07-25 12:30:00,73.92,33.497,38.001,29.398000000000003 +2020-07-25 12:45:00,73.51,34.403,38.001,29.398000000000003 +2020-07-25 13:00:00,62.75,33.873000000000005,34.747,29.398000000000003 +2020-07-25 13:15:00,60.52,34.961,34.747,29.398000000000003 +2020-07-25 13:30:00,64.66,34.251,34.747,29.398000000000003 +2020-07-25 13:45:00,71.77,33.11,34.747,29.398000000000003 +2020-07-25 14:00:00,74.39,33.992,33.434,29.398000000000003 +2020-07-25 14:15:00,80.98,32.196,33.434,29.398000000000003 +2020-07-25 14:30:00,77.88,32.56,33.434,29.398000000000003 +2020-07-25 14:45:00,74.01,32.943000000000005,33.434,29.398000000000003 +2020-07-25 15:00:00,67.72,35.54,35.921,29.398000000000003 +2020-07-25 15:15:00,63.96,33.629,35.921,29.398000000000003 +2020-07-25 15:30:00,60.29,31.785,35.921,29.398000000000003 +2020-07-25 15:45:00,70.07,29.939,35.921,29.398000000000003 +2020-07-25 16:00:00,80.46,33.92,39.427,29.398000000000003 +2020-07-25 16:15:00,81.09,33.215,39.427,29.398000000000003 +2020-07-25 16:30:00,81.48,32.46,39.427,29.398000000000003 +2020-07-25 16:45:00,81.44,28.561,39.427,29.398000000000003 +2020-07-25 17:00:00,83.25,33.041,44.096000000000004,29.398000000000003 +2020-07-25 17:15:00,81.38,30.686,44.096000000000004,29.398000000000003 +2020-07-25 17:30:00,81.62,29.645,44.096000000000004,29.398000000000003 +2020-07-25 17:45:00,80.18,29.224,44.096000000000004,29.398000000000003 +2020-07-25 18:00:00,82.87,33.99,43.931000000000004,29.398000000000003 +2020-07-25 18:15:00,82.76,34.434,43.931000000000004,29.398000000000003 +2020-07-25 18:30:00,83.27,33.746,43.931000000000004,29.398000000000003 +2020-07-25 18:45:00,81.38,33.495,43.931000000000004,29.398000000000003 +2020-07-25 19:00:00,79.1,33.891999999999996,42.187,29.398000000000003 +2020-07-25 19:15:00,73.98,32.328,42.187,29.398000000000003 +2020-07-25 19:30:00,74.69,31.985,42.187,29.398000000000003 +2020-07-25 19:45:00,73.47,31.756999999999998,42.187,29.398000000000003 +2020-07-25 20:00:00,74.38,29.776,38.315,29.398000000000003 +2020-07-25 20:15:00,74.87,28.994,38.315,29.398000000000003 +2020-07-25 20:30:00,74.53,27.961,38.315,29.398000000000003 +2020-07-25 20:45:00,73.21,29.456,38.315,29.398000000000003 +2020-07-25 21:00:00,69.25,27.854,36.843,29.398000000000003 +2020-07-25 21:15:00,69.72,30.38,36.843,29.398000000000003 +2020-07-25 21:30:00,66.85,30.825,36.843,29.398000000000003 +2020-07-25 21:45:00,66.91,31.249000000000002,36.843,29.398000000000003 +2020-07-25 22:00:00,63.87,28.166999999999998,37.260999999999996,29.398000000000003 +2020-07-25 22:15:00,65.21,30.805999999999997,37.260999999999996,29.398000000000003 +2020-07-25 22:30:00,60.75,30.22,37.260999999999996,29.398000000000003 +2020-07-25 22:45:00,62.66,27.993000000000002,37.260999999999996,29.398000000000003 +2020-07-25 23:00:00,57.37,25.910999999999998,32.148,29.398000000000003 +2020-07-25 23:15:00,58.97,23.625,32.148,29.398000000000003 +2020-07-25 23:30:00,57.29,23.531,32.148,29.398000000000003 +2020-07-25 23:45:00,57.1,22.938000000000002,32.148,29.398000000000003 +2020-07-26 00:00:00,52.63,19.403,28.905,29.398000000000003 +2020-07-26 00:15:00,55.31,18.910999999999998,28.905,29.398000000000003 +2020-07-26 00:30:00,54.02,17.189,28.905,29.398000000000003 +2020-07-26 00:45:00,54.11,16.762999999999998,28.905,29.398000000000003 +2020-07-26 01:00:00,51.5,16.92,26.906999999999996,29.398000000000003 +2020-07-26 01:15:00,52.88,15.854000000000001,26.906999999999996,29.398000000000003 +2020-07-26 01:30:00,53.34,14.513,26.906999999999996,29.398000000000003 +2020-07-26 01:45:00,53.47,14.937999999999999,26.906999999999996,29.398000000000003 +2020-07-26 02:00:00,55.77,14.847000000000001,25.938000000000002,29.398000000000003 +2020-07-26 02:15:00,52.74,14.513,25.938000000000002,29.398000000000003 +2020-07-26 02:30:00,51.94,15.683,25.938000000000002,29.398000000000003 +2020-07-26 02:45:00,52.62,16.17,25.938000000000002,29.398000000000003 +2020-07-26 03:00:00,52.69,17.144000000000002,24.693,29.398000000000003 +2020-07-26 03:15:00,52.83,15.054,24.693,29.398000000000003 +2020-07-26 03:30:00,53.82,14.513,24.693,29.398000000000003 +2020-07-26 03:45:00,53.8,14.713,24.693,29.398000000000003 +2020-07-26 04:00:00,53.27,17.141,25.683000000000003,29.398000000000003 +2020-07-26 04:15:00,52.43,19.784000000000002,25.683000000000003,29.398000000000003 +2020-07-26 04:30:00,51.66,17.875999999999998,25.683000000000003,29.398000000000003 +2020-07-26 04:45:00,52.2,17.003,25.683000000000003,29.398000000000003 +2020-07-26 05:00:00,51.2,20.91,26.023000000000003,29.398000000000003 +2020-07-26 05:15:00,51.8,16.61,26.023000000000003,29.398000000000003 +2020-07-26 05:30:00,52.03,14.513,26.023000000000003,29.398000000000003 +2020-07-26 05:45:00,52.83,14.56,26.023000000000003,29.398000000000003 +2020-07-26 06:00:00,54.33,23.101,25.834,29.398000000000003 +2020-07-26 06:15:00,54.38,30.927,25.834,29.398000000000003 +2020-07-26 06:30:00,54.62,27.465999999999998,25.834,29.398000000000003 +2020-07-26 06:45:00,55.22,26.263,25.834,29.398000000000003 +2020-07-26 07:00:00,57.6,26.066,27.765,29.398000000000003 +2020-07-26 07:15:00,56.19,24.92,27.765,29.398000000000003 +2020-07-26 07:30:00,57.26,23.711,27.765,29.398000000000003 +2020-07-26 07:45:00,57.26,24.921,27.765,29.398000000000003 +2020-07-26 08:00:00,55.54,22.46,31.357,29.398000000000003 +2020-07-26 08:15:00,55.35,27.239,31.357,29.398000000000003 +2020-07-26 08:30:00,54.77,29.068,31.357,29.398000000000003 +2020-07-26 08:45:00,57.54,32.083,31.357,29.398000000000003 +2020-07-26 09:00:00,55.42,28.44,33.238,29.398000000000003 +2020-07-26 09:15:00,54.51,29.836,33.238,29.398000000000003 +2020-07-26 09:30:00,54.13,33.762,33.238,29.398000000000003 +2020-07-26 09:45:00,56.02,38.06,33.238,29.398000000000003 +2020-07-26 10:00:00,57.58,36.551,34.22,29.398000000000003 +2020-07-26 10:15:00,58.34,38.132,34.22,29.398000000000003 +2020-07-26 10:30:00,58.17,38.382,34.22,29.398000000000003 +2020-07-26 10:45:00,57.3,40.123000000000005,34.22,29.398000000000003 +2020-07-26 11:00:00,52.42,37.379,36.298,29.398000000000003 +2020-07-26 11:15:00,55.26,38.073,36.298,29.398000000000003 +2020-07-26 11:30:00,54.51,39.75,36.298,29.398000000000003 +2020-07-26 11:45:00,58.89,40.765,36.298,29.398000000000003 +2020-07-26 12:00:00,51.91,37.62,33.52,29.398000000000003 +2020-07-26 12:15:00,53.07,36.328,33.52,29.398000000000003 +2020-07-26 12:30:00,55.05,35.425,33.52,29.398000000000003 +2020-07-26 12:45:00,57.13,35.735,33.52,29.398000000000003 +2020-07-26 13:00:00,54.79,34.94,30.12,29.398000000000003 +2020-07-26 13:15:00,57.11,35.007,30.12,29.398000000000003 +2020-07-26 13:30:00,57.12,33.091,30.12,29.398000000000003 +2020-07-26 13:45:00,53.35,33.279,30.12,29.398000000000003 +2020-07-26 14:00:00,53.46,35.445,27.233,29.398000000000003 +2020-07-26 14:15:00,50.5,33.985,27.233,29.398000000000003 +2020-07-26 14:30:00,48.85,32.835,27.233,29.398000000000003 +2020-07-26 14:45:00,48.31,32.092,27.233,29.398000000000003 +2020-07-26 15:00:00,50.34,35.024,27.468000000000004,29.398000000000003 +2020-07-26 15:15:00,51.44,32.132,27.468000000000004,29.398000000000003 +2020-07-26 15:30:00,51.5,30.025,27.468000000000004,29.398000000000003 +2020-07-26 15:45:00,56.42,28.409000000000002,27.468000000000004,29.398000000000003 +2020-07-26 16:00:00,57.3,30.403000000000002,30.8,29.398000000000003 +2020-07-26 16:15:00,58.79,30.057,30.8,29.398000000000003 +2020-07-26 16:30:00,61.59,30.386999999999997,30.8,29.398000000000003 +2020-07-26 16:45:00,60.88,26.564,30.8,29.398000000000003 +2020-07-26 17:00:00,65.37,31.451,37.806,29.398000000000003 +2020-07-26 17:15:00,66.63,30.805999999999997,37.806,29.398000000000003 +2020-07-26 17:30:00,68.97,30.625999999999998,37.806,29.398000000000003 +2020-07-26 17:45:00,71.33,30.439,37.806,29.398000000000003 +2020-07-26 18:00:00,72.0,35.931999999999995,40.766,29.398000000000003 +2020-07-26 18:15:00,74.61,35.803000000000004,40.766,29.398000000000003 +2020-07-26 18:30:00,73.46,35.058,40.766,29.398000000000003 +2020-07-26 18:45:00,72.82,34.749,40.766,29.398000000000003 +2020-07-26 19:00:00,75.82,37.553000000000004,41.163000000000004,29.398000000000003 +2020-07-26 19:15:00,72.02,34.741,41.163000000000004,29.398000000000003 +2020-07-26 19:30:00,72.59,34.144,41.163000000000004,29.398000000000003 +2020-07-26 19:45:00,73.1,33.296,41.163000000000004,29.398000000000003 +2020-07-26 20:00:00,77.43,31.500999999999998,39.885999999999996,29.398000000000003 +2020-07-26 20:15:00,75.87,30.485,39.885999999999996,29.398000000000003 +2020-07-26 20:30:00,76.9,30.201999999999998,39.885999999999996,29.398000000000003 +2020-07-26 20:45:00,76.0,29.991,39.885999999999996,29.398000000000003 +2020-07-26 21:00:00,74.18,28.511,38.900999999999996,29.398000000000003 +2020-07-26 21:15:00,74.35,30.761999999999997,38.900999999999996,29.398000000000003 +2020-07-26 21:30:00,73.05,30.476999999999997,38.900999999999996,29.398000000000003 +2020-07-26 21:45:00,74.93,31.252,38.900999999999996,29.398000000000003 +2020-07-26 22:00:00,69.15,30.444000000000003,39.806999999999995,29.398000000000003 +2020-07-26 22:15:00,68.91,31.346999999999998,39.806999999999995,29.398000000000003 +2020-07-26 22:30:00,67.21,30.45,39.806999999999995,29.398000000000003 +2020-07-26 22:45:00,66.92,26.933000000000003,39.806999999999995,29.398000000000003 +2020-07-26 23:00:00,62.44,24.776,35.564,29.398000000000003 +2020-07-26 23:15:00,64.2,23.701,35.564,29.398000000000003 +2020-07-26 23:30:00,63.75,22.988000000000003,35.564,29.398000000000003 +2020-07-26 23:45:00,63.65,22.491,35.564,29.398000000000003 +2020-07-27 00:00:00,58.08,20.721999999999998,36.578,29.509 +2020-07-27 00:15:00,59.82,20.807,36.578,29.509 +2020-07-27 00:30:00,59.44,18.666,36.578,29.509 +2020-07-27 00:45:00,59.65,17.87,36.578,29.509 +2020-07-27 01:00:00,58.51,18.438,35.292,29.509 +2020-07-27 01:15:00,59.94,17.435,35.292,29.509 +2020-07-27 01:30:00,58.16,16.151,35.292,29.509 +2020-07-27 01:45:00,59.68,16.791,35.292,29.509 +2020-07-27 02:00:00,59.36,17.198,34.319,29.509 +2020-07-27 02:15:00,60.33,14.605,34.319,29.509 +2020-07-27 02:30:00,60.15,16.959,34.319,29.509 +2020-07-27 02:45:00,68.55,17.345,34.319,29.509 +2020-07-27 03:00:00,69.23,18.741,33.13,29.509 +2020-07-27 03:15:00,68.09,17.291,33.13,29.509 +2020-07-27 03:30:00,64.78,16.747,33.13,29.509 +2020-07-27 03:45:00,67.17,17.275,33.13,29.509 +2020-07-27 04:00:00,69.51,22.643,33.851,29.509 +2020-07-27 04:15:00,71.44,28.05,33.851,29.509 +2020-07-27 04:30:00,75.51,25.430999999999997,33.851,29.509 +2020-07-27 04:45:00,75.8,24.941,33.851,29.509 +2020-07-27 05:00:00,83.51,35.275999999999996,38.718,29.509 +2020-07-27 05:15:00,93.98,40.316,38.718,29.509 +2020-07-27 05:30:00,96.18,35.374,38.718,29.509 +2020-07-27 05:45:00,97.7,33.821,38.718,29.509 +2020-07-27 06:00:00,98.3,32.796,51.648999999999994,29.509 +2020-07-27 06:15:00,101.88,32.159,51.648999999999994,29.509 +2020-07-27 06:30:00,101.45,32.286,51.648999999999994,29.509 +2020-07-27 06:45:00,102.71,36.009,51.648999999999994,29.509 +2020-07-27 07:00:00,109.88,35.56,60.159,29.509 +2020-07-27 07:15:00,110.12,36.783,60.159,29.509 +2020-07-27 07:30:00,108.64,34.733000000000004,60.159,29.509 +2020-07-27 07:45:00,103.69,36.539,60.159,29.509 +2020-07-27 08:00:00,102.39,32.04,53.8,29.509 +2020-07-27 08:15:00,101.23,35.729,53.8,29.509 +2020-07-27 08:30:00,102.32,36.937,53.8,29.509 +2020-07-27 08:45:00,101.63,40.533,53.8,29.509 +2020-07-27 09:00:00,100.95,35.754,50.583,29.509 +2020-07-27 09:15:00,100.48,35.586,50.583,29.509 +2020-07-27 09:30:00,99.92,38.594,50.583,29.509 +2020-07-27 09:45:00,102.25,40.314,50.583,29.509 +2020-07-27 10:00:00,100.85,39.336,49.11600000000001,29.509 +2020-07-27 10:15:00,105.36,40.782,49.11600000000001,29.509 +2020-07-27 10:30:00,110.58,40.625,49.11600000000001,29.509 +2020-07-27 10:45:00,104.99,40.507,49.11600000000001,29.509 +2020-07-27 11:00:00,104.14,38.387,49.056000000000004,29.509 +2020-07-27 11:15:00,99.79,39.169000000000004,49.056000000000004,29.509 +2020-07-27 11:30:00,97.15,41.443999999999996,49.056000000000004,29.509 +2020-07-27 11:45:00,97.01,43.053000000000004,49.056000000000004,29.509 +2020-07-27 12:00:00,94.59,37.788000000000004,47.227,29.509 +2020-07-27 12:15:00,96.64,36.614000000000004,47.227,29.509 +2020-07-27 12:30:00,94.46,34.49,47.227,29.509 +2020-07-27 12:45:00,96.43,34.6,47.227,29.509 +2020-07-27 13:00:00,94.41,34.707,47.006,29.509 +2020-07-27 13:15:00,98.63,33.953,47.006,29.509 +2020-07-27 13:30:00,92.15,32.293,47.006,29.509 +2020-07-27 13:45:00,92.79,33.483000000000004,47.006,29.509 +2020-07-27 14:00:00,96.24,34.769,47.19,29.509 +2020-07-27 14:15:00,94.96,34.046,47.19,29.509 +2020-07-27 14:30:00,97.53,32.781,47.19,29.509 +2020-07-27 14:45:00,94.66,34.342,47.19,29.509 +2020-07-27 15:00:00,96.06,36.696,47.846000000000004,29.509 +2020-07-27 15:15:00,96.69,33.32,47.846000000000004,29.509 +2020-07-27 15:30:00,94.08,32.165,47.846000000000004,29.509 +2020-07-27 15:45:00,95.96,30.063000000000002,47.846000000000004,29.509 +2020-07-27 16:00:00,97.15,33.278,49.641000000000005,29.509 +2020-07-27 16:15:00,97.99,33.095,49.641000000000005,29.509 +2020-07-27 16:30:00,102.46,32.815,49.641000000000005,29.509 +2020-07-27 16:45:00,101.93,29.17,49.641000000000005,29.509 +2020-07-27 17:00:00,100.45,32.861999999999995,54.133,29.509 +2020-07-27 17:15:00,98.37,32.753,54.133,29.509 +2020-07-27 17:30:00,98.03,32.219,54.133,29.509 +2020-07-27 17:45:00,97.96,31.778000000000002,54.133,29.509 +2020-07-27 18:00:00,100.96,36.108000000000004,53.761,29.509 +2020-07-27 18:15:00,102.23,34.207,53.761,29.509 +2020-07-27 18:30:00,99.94,32.584,53.761,29.509 +2020-07-27 18:45:00,102.7,35.639,53.761,29.509 +2020-07-27 19:00:00,97.52,38.338,53.923,29.509 +2020-07-27 19:15:00,93.44,37.054,53.923,29.509 +2020-07-27 19:30:00,92.1,36.010999999999996,53.923,29.509 +2020-07-27 19:45:00,92.41,34.579,53.923,29.509 +2020-07-27 20:00:00,90.77,31.631999999999998,58.786,29.509 +2020-07-27 20:15:00,91.86,32.35,58.786,29.509 +2020-07-27 20:30:00,92.73,32.789,58.786,29.509 +2020-07-27 20:45:00,92.17,32.653,58.786,29.509 +2020-07-27 21:00:00,88.4,30.436,54.591,29.509 +2020-07-27 21:15:00,86.32,33.257,54.591,29.509 +2020-07-27 21:30:00,81.87,33.473,54.591,29.509 +2020-07-27 21:45:00,81.44,34.038000000000004,54.591,29.509 +2020-07-27 22:00:00,75.29,31.253,51.551,29.509 +2020-07-27 22:15:00,76.35,34.385999999999996,51.551,29.509 +2020-07-27 22:30:00,74.74,29.62,51.551,29.509 +2020-07-27 22:45:00,78.59,26.478,51.551,29.509 +2020-07-27 23:00:00,69.51,24.256,44.716,29.509 +2020-07-27 23:15:00,70.81,21.219,44.716,29.509 +2020-07-27 23:30:00,70.12,20.26,44.716,29.509 +2020-07-27 23:45:00,69.6,18.979,44.716,29.509 +2020-07-28 00:00:00,66.06,18.403,43.01,29.509 +2020-07-28 00:15:00,67.08,19.291,43.01,29.509 +2020-07-28 00:30:00,66.41,18.014,43.01,29.509 +2020-07-28 00:45:00,67.0,18.176,43.01,29.509 +2020-07-28 01:00:00,64.96,18.167,40.687,29.509 +2020-07-28 01:15:00,66.69,17.328,40.687,29.509 +2020-07-28 01:30:00,66.57,15.895,40.687,29.509 +2020-07-28 01:45:00,67.11,15.945,40.687,29.509 +2020-07-28 02:00:00,65.29,15.835,39.554,29.509 +2020-07-28 02:15:00,66.22,14.524000000000001,39.554,29.509 +2020-07-28 02:30:00,67.12,16.489,39.554,29.509 +2020-07-28 02:45:00,74.51,17.230999999999998,39.554,29.509 +2020-07-28 03:00:00,75.51,18.124000000000002,38.958,29.509 +2020-07-28 03:15:00,71.6,17.781,38.958,29.509 +2020-07-28 03:30:00,69.58,17.167,38.958,29.509 +2020-07-28 03:45:00,71.85,16.477999999999998,38.958,29.509 +2020-07-28 04:00:00,75.9,20.482,39.783,29.509 +2020-07-28 04:15:00,74.67,25.921999999999997,39.783,29.509 +2020-07-28 04:30:00,75.33,23.201999999999998,39.783,29.509 +2020-07-28 04:45:00,79.19,23.13,39.783,29.509 +2020-07-28 05:00:00,91.86,34.734,42.281000000000006,29.509 +2020-07-28 05:15:00,95.84,40.444,42.281000000000006,29.509 +2020-07-28 05:30:00,96.24,35.861,42.281000000000006,29.509 +2020-07-28 05:45:00,94.7,33.519,42.281000000000006,29.509 +2020-07-28 06:00:00,104.47,33.715,50.801,29.509 +2020-07-28 06:15:00,108.31,33.161,50.801,29.509 +2020-07-28 06:30:00,109.99,33.008,50.801,29.509 +2020-07-28 06:45:00,108.51,35.823,50.801,29.509 +2020-07-28 07:00:00,107.45,35.556,60.202,29.509 +2020-07-28 07:15:00,105.46,36.536,60.202,29.509 +2020-07-28 07:30:00,107.66,34.574,60.202,29.509 +2020-07-28 07:45:00,111.91,35.306,60.202,29.509 +2020-07-28 08:00:00,111.65,30.717,54.461000000000006,29.509 +2020-07-28 08:15:00,111.03,34.015,54.461000000000006,29.509 +2020-07-28 08:30:00,104.82,35.417,54.461000000000006,29.509 +2020-07-28 08:45:00,105.65,38.006,54.461000000000006,29.509 +2020-07-28 09:00:00,105.34,33.71,50.753,29.509 +2020-07-28 09:15:00,104.97,33.184,50.753,29.509 +2020-07-28 09:30:00,111.63,36.865,50.753,29.509 +2020-07-28 09:45:00,111.1,40.098,50.753,29.509 +2020-07-28 10:00:00,103.92,37.664,49.703,29.509 +2020-07-28 10:15:00,108.58,39.079,49.703,29.509 +2020-07-28 10:30:00,104.47,38.921,49.703,29.509 +2020-07-28 10:45:00,102.44,39.895,49.703,29.509 +2020-07-28 11:00:00,99.91,37.591,49.42100000000001,29.509 +2020-07-28 11:15:00,101.99,38.866,49.42100000000001,29.509 +2020-07-28 11:30:00,102.94,39.99,49.42100000000001,29.509 +2020-07-28 11:45:00,104.11,40.995,49.42100000000001,29.509 +2020-07-28 12:00:00,103.58,35.702,47.155,29.509 +2020-07-28 12:15:00,108.58,34.954,47.155,29.509 +2020-07-28 12:30:00,112.24,33.703,47.155,29.509 +2020-07-28 12:45:00,113.51,34.622,47.155,29.509 +2020-07-28 13:00:00,110.53,34.356,47.515,29.509 +2020-07-28 13:15:00,113.4,35.666,47.515,29.509 +2020-07-28 13:30:00,111.67,33.818000000000005,47.515,29.509 +2020-07-28 13:45:00,108.55,33.906,47.515,29.509 +2020-07-28 14:00:00,98.05,35.644,47.575,29.509 +2020-07-28 14:15:00,94.38,34.681,47.575,29.509 +2020-07-28 14:30:00,93.99,33.705,47.575,29.509 +2020-07-28 14:45:00,93.91,34.396,47.575,29.509 +2020-07-28 15:00:00,99.21,36.606,48.903,29.509 +2020-07-28 15:15:00,101.07,34.223,48.903,29.509 +2020-07-28 15:30:00,100.87,32.81,48.903,29.509 +2020-07-28 15:45:00,100.92,31.144000000000002,48.903,29.509 +2020-07-28 16:00:00,97.59,33.515,50.218999999999994,29.509 +2020-07-28 16:15:00,98.84,33.376999999999995,50.218999999999994,29.509 +2020-07-28 16:30:00,99.43,32.621,50.218999999999994,29.509 +2020-07-28 16:45:00,99.6,29.761,50.218999999999994,29.509 +2020-07-28 17:00:00,102.62,33.61,55.396,29.509 +2020-07-28 17:15:00,101.28,33.985,55.396,29.509 +2020-07-28 17:30:00,100.85,32.898,55.396,29.509 +2020-07-28 17:45:00,102.53,32.125,55.396,29.509 +2020-07-28 18:00:00,102.54,35.43,55.583999999999996,29.509 +2020-07-28 18:15:00,100.74,35.217,55.583999999999996,29.509 +2020-07-28 18:30:00,102.02,33.344,55.583999999999996,29.509 +2020-07-28 18:45:00,102.2,36.103,55.583999999999996,29.509 +2020-07-28 19:00:00,97.76,37.53,56.071000000000005,29.509 +2020-07-28 19:15:00,95.49,36.464,56.071000000000005,29.509 +2020-07-28 19:30:00,94.9,35.249,56.071000000000005,29.509 +2020-07-28 19:45:00,93.33,34.178000000000004,56.071000000000005,29.509 +2020-07-28 20:00:00,91.91,31.64,61.55,29.509 +2020-07-28 20:15:00,93.19,30.85,61.55,29.509 +2020-07-28 20:30:00,94.82,31.225,61.55,29.509 +2020-07-28 20:45:00,93.22,31.589000000000002,61.55,29.509 +2020-07-28 21:00:00,89.1,30.386999999999997,55.94,29.509 +2020-07-28 21:15:00,87.92,31.531999999999996,55.94,29.509 +2020-07-28 21:30:00,84.69,31.991999999999997,55.94,29.509 +2020-07-28 21:45:00,84.68,32.727,55.94,29.509 +2020-07-28 22:00:00,78.94,29.971,52.857,29.509 +2020-07-28 22:15:00,85.09,32.757,52.857,29.509 +2020-07-28 22:30:00,81.12,28.272,52.857,29.509 +2020-07-28 22:45:00,81.25,25.096999999999998,52.857,29.509 +2020-07-28 23:00:00,77.11,22.079,46.04,29.509 +2020-07-28 23:15:00,78.13,20.805999999999997,46.04,29.509 +2020-07-28 23:30:00,77.41,19.891,46.04,29.509 +2020-07-28 23:45:00,77.45,18.84,46.04,29.509 +2020-07-29 00:00:00,72.28,18.484,42.195,29.509 +2020-07-29 00:15:00,73.33,19.371,42.195,29.509 +2020-07-29 00:30:00,73.27,18.098,42.195,29.509 +2020-07-29 00:45:00,72.85,18.268,42.195,29.509 +2020-07-29 01:00:00,71.33,18.252,38.82,29.509 +2020-07-29 01:15:00,72.86,17.414,38.82,29.509 +2020-07-29 01:30:00,73.45,15.99,38.82,29.509 +2020-07-29 01:45:00,73.58,16.035,38.82,29.509 +2020-07-29 02:00:00,71.67,15.93,37.023,29.509 +2020-07-29 02:15:00,72.3,14.637,37.023,29.509 +2020-07-29 02:30:00,69.76,16.581,37.023,29.509 +2020-07-29 02:45:00,79.06,17.323,37.023,29.509 +2020-07-29 03:00:00,79.64,18.204,36.818000000000005,29.509 +2020-07-29 03:15:00,77.13,17.878,36.818000000000005,29.509 +2020-07-29 03:30:00,73.32,17.271,36.818000000000005,29.509 +2020-07-29 03:45:00,77.35,16.589000000000002,36.818000000000005,29.509 +2020-07-29 04:00:00,79.17,20.584,37.495,29.509 +2020-07-29 04:15:00,78.45,26.015,37.495,29.509 +2020-07-29 04:30:00,78.67,23.294,37.495,29.509 +2020-07-29 04:45:00,81.9,23.224,37.495,29.509 +2020-07-29 05:00:00,97.1,34.83,39.858000000000004,29.509 +2020-07-29 05:15:00,99.54,40.534,39.858000000000004,29.509 +2020-07-29 05:30:00,103.49,35.981,39.858000000000004,29.509 +2020-07-29 05:45:00,98.13,33.632,39.858000000000004,29.509 +2020-07-29 06:00:00,105.66,33.81,52.867,29.509 +2020-07-29 06:15:00,110.73,33.266999999999996,52.867,29.509 +2020-07-29 06:30:00,111.3,33.122,52.867,29.509 +2020-07-29 06:45:00,112.66,35.955,52.867,29.509 +2020-07-29 07:00:00,108.85,35.685,66.061,29.509 +2020-07-29 07:15:00,105.98,36.684,66.061,29.509 +2020-07-29 07:30:00,105.83,34.736999999999995,66.061,29.509 +2020-07-29 07:45:00,104.0,35.484,66.061,29.509 +2020-07-29 08:00:00,106.11,30.903000000000002,58.532,29.509 +2020-07-29 08:15:00,104.13,34.188,58.532,29.509 +2020-07-29 08:30:00,106.01,35.577,58.532,29.509 +2020-07-29 08:45:00,106.01,38.155,58.532,29.509 +2020-07-29 09:00:00,106.42,33.86,56.047,29.509 +2020-07-29 09:15:00,105.79,33.329,56.047,29.509 +2020-07-29 09:30:00,105.45,36.997,56.047,29.509 +2020-07-29 09:45:00,103.21,40.218,56.047,29.509 +2020-07-29 10:00:00,102.4,37.788000000000004,53.823,29.509 +2020-07-29 10:15:00,106.01,39.188,53.823,29.509 +2020-07-29 10:30:00,104.96,39.025,53.823,29.509 +2020-07-29 10:45:00,104.1,39.994,53.823,29.509 +2020-07-29 11:00:00,108.14,37.696,54.184,29.509 +2020-07-29 11:15:00,108.27,38.968,54.184,29.509 +2020-07-29 11:30:00,108.1,40.082,54.184,29.509 +2020-07-29 11:45:00,102.46,41.075,54.184,29.509 +2020-07-29 12:00:00,102.99,35.788000000000004,52.628,29.509 +2020-07-29 12:15:00,100.87,35.034,52.628,29.509 +2020-07-29 12:30:00,100.15,33.786,52.628,29.509 +2020-07-29 12:45:00,98.46,34.696,52.628,29.509 +2020-07-29 13:00:00,98.77,34.41,52.31,29.509 +2020-07-29 13:15:00,97.85,35.708,52.31,29.509 +2020-07-29 13:30:00,97.02,33.861,52.31,29.509 +2020-07-29 13:45:00,97.78,33.959,52.31,29.509 +2020-07-29 14:00:00,96.14,35.687,52.278999999999996,29.509 +2020-07-29 14:15:00,95.9,34.727,52.278999999999996,29.509 +2020-07-29 14:30:00,96.19,33.756,52.278999999999996,29.509 +2020-07-29 14:45:00,96.56,34.452,52.278999999999996,29.509 +2020-07-29 15:00:00,95.81,36.641999999999996,53.306999999999995,29.509 +2020-07-29 15:15:00,92.1,34.259,53.306999999999995,29.509 +2020-07-29 15:30:00,94.45,32.853,53.306999999999995,29.509 +2020-07-29 15:45:00,96.56,31.185,53.306999999999995,29.509 +2020-07-29 16:00:00,97.51,33.548,55.358999999999995,29.509 +2020-07-29 16:15:00,98.55,33.417,55.358999999999995,29.509 +2020-07-29 16:30:00,98.44,32.673,55.358999999999995,29.509 +2020-07-29 16:45:00,98.51,29.837,55.358999999999995,29.509 +2020-07-29 17:00:00,100.98,33.671,59.211999999999996,29.509 +2020-07-29 17:15:00,101.93,34.071,59.211999999999996,29.509 +2020-07-29 17:30:00,102.63,32.995,59.211999999999996,29.509 +2020-07-29 17:45:00,103.93,32.245,59.211999999999996,29.509 +2020-07-29 18:00:00,104.7,35.549,60.403999999999996,29.509 +2020-07-29 18:15:00,103.25,35.335,60.403999999999996,29.509 +2020-07-29 18:30:00,103.93,33.47,60.403999999999996,29.509 +2020-07-29 18:45:00,103.57,36.229,60.403999999999996,29.509 +2020-07-29 19:00:00,99.94,37.659,60.993,29.509 +2020-07-29 19:15:00,95.58,36.588,60.993,29.509 +2020-07-29 19:30:00,95.02,35.373000000000005,60.993,29.509 +2020-07-29 19:45:00,95.21,34.303000000000004,60.993,29.509 +2020-07-29 20:00:00,93.06,31.76,66.6,29.509 +2020-07-29 20:15:00,95.46,30.971999999999998,66.6,29.509 +2020-07-29 20:30:00,95.47,31.337,66.6,29.509 +2020-07-29 20:45:00,94.87,31.686999999999998,66.6,29.509 +2020-07-29 21:00:00,91.12,30.487,59.855,29.509 +2020-07-29 21:15:00,90.81,31.628,59.855,29.509 +2020-07-29 21:30:00,87.11,32.074,59.855,29.509 +2020-07-29 21:45:00,85.59,32.789,59.855,29.509 +2020-07-29 22:00:00,80.94,30.025,54.942,29.509 +2020-07-29 22:15:00,79.82,32.803000000000004,54.942,29.509 +2020-07-29 22:30:00,78.83,28.29,54.942,29.509 +2020-07-29 22:45:00,78.28,25.111,54.942,29.509 +2020-07-29 23:00:00,73.71,22.119,46.056000000000004,29.509 +2020-07-29 23:15:00,75.13,20.851999999999997,46.056000000000004,29.509 +2020-07-29 23:30:00,74.23,19.952,46.056000000000004,29.509 +2020-07-29 23:45:00,72.75,18.901,46.056000000000004,29.509 +2020-07-30 00:00:00,66.91,18.569000000000003,40.859,29.509 +2020-07-30 00:15:00,70.85,19.454,40.859,29.509 +2020-07-30 00:30:00,68.48,18.186,40.859,29.509 +2020-07-30 00:45:00,71.01,18.364,40.859,29.509 +2020-07-30 01:00:00,68.53,18.339000000000002,39.06,29.509 +2020-07-30 01:15:00,69.68,17.503,39.06,29.509 +2020-07-30 01:30:00,69.53,16.087,39.06,29.509 +2020-07-30 01:45:00,69.27,16.129,39.06,29.509 +2020-07-30 02:00:00,69.25,16.028,37.592,29.509 +2020-07-30 02:15:00,69.73,14.753,37.592,29.509 +2020-07-30 02:30:00,69.73,16.677,37.592,29.509 +2020-07-30 02:45:00,70.05,17.419,37.592,29.509 +2020-07-30 03:00:00,70.14,18.289,37.416,29.509 +2020-07-30 03:15:00,67.95,17.977999999999998,37.416,29.509 +2020-07-30 03:30:00,71.64,17.379,37.416,29.509 +2020-07-30 03:45:00,74.13,16.704,37.416,29.509 +2020-07-30 04:00:00,78.12,20.691,38.176,29.509 +2020-07-30 04:15:00,77.94,26.114,38.176,29.509 +2020-07-30 04:30:00,82.51,23.393,38.176,29.509 +2020-07-30 04:45:00,88.96,23.324,38.176,29.509 +2020-07-30 05:00:00,95.56,34.935,41.203,29.509 +2020-07-30 05:15:00,96.07,40.637,41.203,29.509 +2020-07-30 05:30:00,94.6,36.111999999999995,41.203,29.509 +2020-07-30 05:45:00,97.84,33.755,41.203,29.509 +2020-07-30 06:00:00,103.74,33.912,51.09,29.509 +2020-07-30 06:15:00,106.27,33.382,51.09,29.509 +2020-07-30 06:30:00,107.84,33.246,51.09,29.509 +2020-07-30 06:45:00,108.65,36.096,51.09,29.509 +2020-07-30 07:00:00,115.44,35.821,63.541000000000004,29.509 +2020-07-30 07:15:00,115.82,36.841,63.541000000000004,29.509 +2020-07-30 07:30:00,119.1,34.909,63.541000000000004,29.509 +2020-07-30 07:45:00,116.84,35.671,63.541000000000004,29.509 +2020-07-30 08:00:00,114.55,31.096,55.65,29.509 +2020-07-30 08:15:00,110.16,34.368,55.65,29.509 +2020-07-30 08:30:00,112.03,35.745,55.65,29.509 +2020-07-30 08:45:00,108.34,38.311,55.65,29.509 +2020-07-30 09:00:00,110.22,34.018,51.833999999999996,29.509 +2020-07-30 09:15:00,117.14,33.48,51.833999999999996,29.509 +2020-07-30 09:30:00,114.83,37.135,51.833999999999996,29.509 +2020-07-30 09:45:00,112.31,40.343,51.833999999999996,29.509 +2020-07-30 10:00:00,105.58,37.918,49.70399999999999,29.509 +2020-07-30 10:15:00,106.54,39.303000000000004,49.70399999999999,29.509 +2020-07-30 10:30:00,105.24,39.134,49.70399999999999,29.509 +2020-07-30 10:45:00,108.78,40.099000000000004,49.70399999999999,29.509 +2020-07-30 11:00:00,108.28,37.806,48.593999999999994,29.509 +2020-07-30 11:15:00,108.61,39.073,48.593999999999994,29.509 +2020-07-30 11:30:00,108.06,40.179,48.593999999999994,29.509 +2020-07-30 11:45:00,105.5,41.161,48.593999999999994,29.509 +2020-07-30 12:00:00,101.8,35.878,46.275,29.509 +2020-07-30 12:15:00,100.72,35.118,46.275,29.509 +2020-07-30 12:30:00,98.24,33.873000000000005,46.275,29.509 +2020-07-30 12:45:00,98.08,34.773,46.275,29.509 +2020-07-30 13:00:00,96.54,34.467,45.803000000000004,29.509 +2020-07-30 13:15:00,96.92,35.754,45.803000000000004,29.509 +2020-07-30 13:30:00,96.23,33.906,45.803000000000004,29.509 +2020-07-30 13:45:00,97.99,34.016,45.803000000000004,29.509 +2020-07-30 14:00:00,96.53,35.733000000000004,46.251999999999995,29.509 +2020-07-30 14:15:00,96.4,34.777,46.251999999999995,29.509 +2020-07-30 14:30:00,96.01,33.809,46.251999999999995,29.509 +2020-07-30 14:45:00,97.0,34.510999999999996,46.251999999999995,29.509 +2020-07-30 15:00:00,95.45,36.68,48.309,29.509 +2020-07-30 15:15:00,95.82,34.297,48.309,29.509 +2020-07-30 15:30:00,95.51,32.898,48.309,29.509 +2020-07-30 15:45:00,96.03,31.229,48.309,29.509 +2020-07-30 16:00:00,97.23,33.583,49.681999999999995,29.509 +2020-07-30 16:15:00,98.16,33.459,49.681999999999995,29.509 +2020-07-30 16:30:00,98.84,32.728,49.681999999999995,29.509 +2020-07-30 16:45:00,101.61,29.916999999999998,49.681999999999995,29.509 +2020-07-30 17:00:00,101.98,33.736,53.086000000000006,29.509 +2020-07-30 17:15:00,101.92,34.16,53.086000000000006,29.509 +2020-07-30 17:30:00,102.4,33.095,53.086000000000006,29.509 +2020-07-30 17:45:00,104.67,32.369,53.086000000000006,29.509 +2020-07-30 18:00:00,104.01,35.671,54.038999999999994,29.509 +2020-07-30 18:15:00,102.55,35.457,54.038999999999994,29.509 +2020-07-30 18:30:00,101.69,33.601,54.038999999999994,29.509 +2020-07-30 18:45:00,101.62,36.359,54.038999999999994,29.509 +2020-07-30 19:00:00,97.79,37.793,53.408,29.509 +2020-07-30 19:15:00,95.25,36.719,53.408,29.509 +2020-07-30 19:30:00,94.88,35.501999999999995,53.408,29.509 +2020-07-30 19:45:00,94.26,34.434,53.408,29.509 +2020-07-30 20:00:00,94.38,31.886,55.309,29.509 +2020-07-30 20:15:00,95.53,31.099,55.309,29.509 +2020-07-30 20:30:00,95.23,31.453000000000003,55.309,29.509 +2020-07-30 20:45:00,94.49,31.789,55.309,29.509 +2020-07-30 21:00:00,90.29,30.593000000000004,51.585,29.509 +2020-07-30 21:15:00,90.19,31.728,51.585,29.509 +2020-07-30 21:30:00,85.83,32.162,51.585,29.509 +2020-07-30 21:45:00,84.2,32.855,51.585,29.509 +2020-07-30 22:00:00,79.37,30.081999999999997,48.006,29.509 +2020-07-30 22:15:00,79.95,32.852,48.006,29.509 +2020-07-30 22:30:00,77.7,28.309,48.006,29.509 +2020-07-30 22:45:00,78.53,25.127,48.006,29.509 +2020-07-30 23:00:00,73.03,22.162,42.309,29.509 +2020-07-30 23:15:00,73.29,20.901999999999997,42.309,29.509 +2020-07-30 23:30:00,72.79,20.016,42.309,29.509 +2020-07-30 23:45:00,72.36,18.965999999999998,42.309,29.509 +2020-07-31 00:00:00,67.66,16.794,39.649,29.509 +2020-07-31 00:15:00,67.46,17.897000000000002,39.649,29.509 +2020-07-31 00:30:00,69.3,16.939,39.649,29.509 +2020-07-31 00:45:00,69.18,17.575,39.649,29.509 +2020-07-31 01:00:00,68.54,17.151,37.744,29.509 +2020-07-31 01:15:00,69.64,15.592,37.744,29.509 +2020-07-31 01:30:00,68.26,14.98,37.744,29.509 +2020-07-31 01:45:00,68.52,14.735999999999999,37.744,29.509 +2020-07-31 02:00:00,66.7,15.647,36.965,29.509 +2020-07-31 02:15:00,69.12,14.513,36.965,29.509 +2020-07-31 02:30:00,68.98,17.101,36.965,29.509 +2020-07-31 02:45:00,68.73,17.097,36.965,29.509 +2020-07-31 03:00:00,69.73,18.875999999999998,37.678000000000004,29.509 +2020-07-31 03:15:00,70.06,17.2,37.678000000000004,29.509 +2020-07-31 03:30:00,71.02,16.35,37.678000000000004,29.509 +2020-07-31 03:45:00,73.59,16.607,37.678000000000004,29.509 +2020-07-31 04:00:00,77.51,20.721,38.591,29.509 +2020-07-31 04:15:00,84.16,24.464000000000002,38.591,29.509 +2020-07-31 04:30:00,85.18,22.758000000000003,38.591,29.509 +2020-07-31 04:45:00,83.87,22.075,38.591,29.509 +2020-07-31 05:00:00,88.03,33.272,40.666,29.509 +2020-07-31 05:15:00,93.14,39.897,40.666,29.509 +2020-07-31 05:30:00,96.11,35.541,40.666,29.509 +2020-07-31 05:45:00,103.78,32.701,40.666,29.509 +2020-07-31 06:00:00,109.56,33.047,51.784,29.509 +2020-07-31 06:15:00,108.31,32.806,51.784,29.509 +2020-07-31 06:30:00,104.13,32.679,51.784,29.509 +2020-07-31 06:45:00,103.29,35.299,51.784,29.509 +2020-07-31 07:00:00,105.64,35.775,61.383,29.509 +2020-07-31 07:15:00,107.2,37.719,61.383,29.509 +2020-07-31 07:30:00,106.76,33.693000000000005,61.383,29.509 +2020-07-31 07:45:00,108.81,34.313,61.383,29.509 +2020-07-31 08:00:00,110.94,30.691,55.272,29.509 +2020-07-31 08:15:00,111.98,34.72,55.272,29.509 +2020-07-31 08:30:00,111.09,35.89,55.272,29.509 +2020-07-31 08:45:00,105.5,38.428000000000004,55.272,29.509 +2020-07-31 09:00:00,112.21,31.557,53.506,29.509 +2020-07-31 09:15:00,112.71,33.08,53.506,29.509 +2020-07-31 09:30:00,117.26,36.003,53.506,29.509 +2020-07-31 09:45:00,117.46,39.635,53.506,29.509 +2020-07-31 10:00:00,118.86,37.153,51.363,29.509 +2020-07-31 10:15:00,109.46,38.202,51.363,29.509 +2020-07-31 10:30:00,106.07,38.647,51.363,29.509 +2020-07-31 10:45:00,104.7,39.549,51.363,29.509 +2020-07-31 11:00:00,102.28,37.538000000000004,51.043,29.509 +2020-07-31 11:15:00,99.07,37.687,51.043,29.509 +2020-07-31 11:30:00,98.78,38.205999999999996,51.043,29.509 +2020-07-31 11:45:00,102.16,38.109,51.043,29.509 +2020-07-31 12:00:00,98.03,33.196,47.52,29.509 +2020-07-31 12:15:00,98.7,31.933000000000003,47.52,29.509 +2020-07-31 12:30:00,97.7,30.805999999999997,47.52,29.509 +2020-07-31 12:45:00,101.31,30.771,47.52,29.509 +2020-07-31 13:00:00,97.21,31.002,45.494,29.509 +2020-07-31 13:15:00,94.94,32.394,45.494,29.509 +2020-07-31 13:30:00,95.09,31.428,45.494,29.509 +2020-07-31 13:45:00,99.62,31.894000000000002,45.494,29.509 +2020-07-31 14:00:00,99.4,32.83,43.883,29.509 +2020-07-31 14:15:00,102.69,32.379,43.883,29.509 +2020-07-31 14:30:00,104.82,33.031,43.883,29.509 +2020-07-31 14:45:00,108.76,32.946,43.883,29.509 +2020-07-31 15:00:00,107.19,35.053000000000004,45.714,29.509 +2020-07-31 15:15:00,107.16,32.45,45.714,29.509 +2020-07-31 15:30:00,102.02,30.58,45.714,29.509 +2020-07-31 15:45:00,98.73,29.737,45.714,29.509 +2020-07-31 16:00:00,97.24,31.250999999999998,48.222,29.509 +2020-07-31 16:15:00,96.65,31.649,48.222,29.509 +2020-07-31 16:30:00,95.0,30.721999999999998,48.222,29.509 +2020-07-31 16:45:00,98.3,27.085,48.222,29.509 +2020-07-31 17:00:00,100.32,32.76,52.619,29.509 +2020-07-31 17:15:00,100.27,33.058,52.619,29.509 +2020-07-31 17:30:00,99.43,32.214,52.619,29.509 +2020-07-31 17:45:00,99.98,31.351999999999997,52.619,29.509 +2020-07-31 18:00:00,100.2,34.617,52.99,29.509 +2020-07-31 18:15:00,101.05,33.407,52.99,29.509 +2020-07-31 18:30:00,100.24,31.410999999999998,52.99,29.509 +2020-07-31 18:45:00,97.28,34.628,52.99,29.509 +2020-07-31 19:00:00,94.41,36.923,51.923,29.509 +2020-07-31 19:15:00,93.63,36.38,51.923,29.509 +2020-07-31 19:30:00,90.61,35.259,51.923,29.509 +2020-07-31 19:45:00,91.18,33.129,51.923,29.509 +2020-07-31 20:00:00,91.95,30.405,56.238,29.509 +2020-07-31 20:15:00,91.38,30.476999999999997,56.238,29.509 +2020-07-31 20:30:00,90.78,30.296999999999997,56.238,29.509 +2020-07-31 20:45:00,90.26,29.695,56.238,29.509 +2020-07-31 21:00:00,85.04,29.877,52.426,29.509 +2020-07-31 21:15:00,83.4,32.773,52.426,29.509 +2020-07-31 21:30:00,80.13,33.031,52.426,29.509 +2020-07-31 21:45:00,79.5,33.88,52.426,29.509 +2020-07-31 22:00:00,75.94,30.871,48.196000000000005,29.509 +2020-07-31 22:15:00,75.61,33.374,48.196000000000005,29.509 +2020-07-31 22:30:00,74.04,33.457,48.196000000000005,29.509 +2020-07-31 22:45:00,74.51,30.945,48.196000000000005,29.509 +2020-07-31 23:00:00,69.29,29.855999999999998,41.71,29.509 +2020-07-31 23:15:00,67.98,27.054000000000002,41.71,29.509 +2020-07-31 23:30:00,67.78,24.331999999999997,41.71,29.509 +2020-07-31 23:45:00,68.07,23.197,41.71,29.509 +2020-08-01 00:00:00,64.84,16.840999999999998,40.227,29.423000000000002 +2020-08-01 00:15:00,65.7,17.429000000000002,40.227,29.423000000000002 +2020-08-01 00:30:00,61.29,16.066,40.227,29.423000000000002 +2020-08-01 00:45:00,63.86,15.87,40.227,29.423000000000002 +2020-08-01 01:00:00,61.89,15.71,36.303000000000004,29.423000000000002 +2020-08-01 01:15:00,63.24,14.94,36.303000000000004,29.423000000000002 +2020-08-01 01:30:00,61.9,13.640999999999998,36.303000000000004,29.423000000000002 +2020-08-01 01:45:00,62.53,14.588,36.303000000000004,29.423000000000002 +2020-08-01 02:00:00,60.34,14.395999999999999,33.849000000000004,29.423000000000002 +2020-08-01 02:15:00,60.96,13.040999999999999,33.849000000000004,29.423000000000002 +2020-08-01 02:30:00,66.99,14.253,33.849000000000004,29.423000000000002 +2020-08-01 02:45:00,68.32,15.014000000000001,33.849000000000004,29.423000000000002 +2020-08-01 03:00:00,65.65,15.258,33.149,29.423000000000002 +2020-08-01 03:15:00,61.57,13.152999999999999,33.149,29.423000000000002 +2020-08-01 03:30:00,61.95,13.040999999999999,33.149,29.423000000000002 +2020-08-01 03:45:00,64.13,14.512,33.149,29.423000000000002 +2020-08-01 04:00:00,63.58,16.715,32.501,29.423000000000002 +2020-08-01 04:15:00,62.36,19.454,32.501,29.423000000000002 +2020-08-01 04:30:00,64.17,16.437,32.501,29.423000000000002 +2020-08-01 04:45:00,69.28,16.136,32.501,29.423000000000002 +2020-08-01 05:00:00,70.79,19.305,31.648000000000003,29.423000000000002 +2020-08-01 05:15:00,66.78,16.058,31.648000000000003,29.423000000000002 +2020-08-01 05:30:00,64.36,13.495999999999999,31.648000000000003,29.423000000000002 +2020-08-01 05:45:00,65.34,14.887,31.648000000000003,29.423000000000002 +2020-08-01 06:00:00,68.08,24.894000000000002,32.552,29.423000000000002 +2020-08-01 06:15:00,71.47,31.201,32.552,29.423000000000002 +2020-08-01 06:30:00,70.7,28.622,32.552,29.423000000000002 +2020-08-01 06:45:00,73.6,28.4,32.552,29.423000000000002 +2020-08-01 07:00:00,80.26,28.034000000000002,35.181999999999995,29.423000000000002 +2020-08-01 07:15:00,81.15,28.61,35.181999999999995,29.423000000000002 +2020-08-01 07:30:00,83.99,26.254,35.181999999999995,29.423000000000002 +2020-08-01 07:45:00,78.02,27.406,35.181999999999995,29.423000000000002 +2020-08-01 08:00:00,78.36,24.79,40.35,29.423000000000002 +2020-08-01 08:15:00,78.58,27.854,40.35,29.423000000000002 +2020-08-01 08:30:00,84.13,28.653000000000002,40.35,29.423000000000002 +2020-08-01 08:45:00,88.25,31.538,40.35,29.423000000000002 +2020-08-01 09:00:00,83.81,27.921,42.292,29.423000000000002 +2020-08-01 09:15:00,77.51,29.616,42.292,29.423000000000002 +2020-08-01 09:30:00,77.4,32.631,42.292,29.423000000000002 +2020-08-01 09:45:00,81.46,35.472,42.292,29.423000000000002 +2020-08-01 10:00:00,88.03,33.78,40.084,29.423000000000002 +2020-08-01 10:15:00,87.71,35.077,40.084,29.423000000000002 +2020-08-01 10:30:00,88.54,35.137,40.084,29.423000000000002 +2020-08-01 10:45:00,81.12,35.558,40.084,29.423000000000002 +2020-08-01 11:00:00,75.49,33.609,36.966,29.423000000000002 +2020-08-01 11:15:00,77.04,34.655,36.966,29.423000000000002 +2020-08-01 11:30:00,73.65,35.507,36.966,29.423000000000002 +2020-08-01 11:45:00,73.41,36.196999999999996,36.966,29.423000000000002 +2020-08-01 12:00:00,72.34,32.466,35.19,29.423000000000002 +2020-08-01 12:15:00,72.7,32.124,35.19,29.423000000000002 +2020-08-01 12:30:00,68.3,30.954,35.19,29.423000000000002 +2020-08-01 12:45:00,72.12,31.738000000000003,35.19,29.423000000000002 +2020-08-01 13:00:00,71.85,31.165,32.277,29.423000000000002 +2020-08-01 13:15:00,73.17,32.038000000000004,32.277,29.423000000000002 +2020-08-01 13:30:00,75.14,31.421,32.277,29.423000000000002 +2020-08-01 13:45:00,78.23,30.410999999999998,32.277,29.423000000000002 +2020-08-01 14:00:00,75.78,31.076999999999998,31.436999999999998,29.423000000000002 +2020-08-01 14:15:00,76.7,29.488000000000003,31.436999999999998,29.423000000000002 +2020-08-01 14:30:00,76.4,29.755,31.436999999999998,29.423000000000002 +2020-08-01 14:45:00,71.54,30.14,31.436999999999998,29.423000000000002 +2020-08-01 15:00:00,72.15,32.229,33.493,29.423000000000002 +2020-08-01 15:15:00,79.53,30.479,33.493,29.423000000000002 +2020-08-01 15:30:00,82.37,28.81,33.493,29.423000000000002 +2020-08-01 15:45:00,82.54,27.113000000000003,33.493,29.423000000000002 +2020-08-01 16:00:00,80.64,30.905,36.593,29.423000000000002 +2020-08-01 16:15:00,78.96,30.311,36.593,29.423000000000002 +2020-08-01 16:30:00,81.42,29.761,36.593,29.423000000000002 +2020-08-01 16:45:00,77.27,26.39,36.593,29.423000000000002 +2020-08-01 17:00:00,78.24,30.271,42.049,29.423000000000002 +2020-08-01 17:15:00,80.69,28.34,42.049,29.423000000000002 +2020-08-01 17:30:00,83.53,27.478,42.049,29.423000000000002 +2020-08-01 17:45:00,81.6,27.182,42.049,29.423000000000002 +2020-08-01 18:00:00,83.2,31.39,43.755,29.423000000000002 +2020-08-01 18:15:00,82.56,31.776,43.755,29.423000000000002 +2020-08-01 18:30:00,82.19,31.188000000000002,43.755,29.423000000000002 +2020-08-01 18:45:00,81.88,31.037,43.755,29.423000000000002 +2020-08-01 19:00:00,79.58,31.397,44.492,29.423000000000002 +2020-08-01 19:15:00,76.37,29.973000000000003,44.492,29.423000000000002 +2020-08-01 19:30:00,75.74,29.653000000000002,44.492,29.423000000000002 +2020-08-01 19:45:00,76.03,29.514,44.492,29.423000000000002 +2020-08-01 20:00:00,78.67,27.618000000000002,40.896,29.423000000000002 +2020-08-01 20:15:00,78.26,27.023000000000003,40.896,29.423000000000002 +2020-08-01 20:30:00,77.78,26.051,40.896,29.423000000000002 +2020-08-01 20:45:00,79.77,27.362,40.896,29.423000000000002 +2020-08-01 21:00:00,74.49,25.883000000000003,39.056,29.423000000000002 +2020-08-01 21:15:00,73.64,28.221,39.056,29.423000000000002 +2020-08-01 21:30:00,71.31,28.568,39.056,29.423000000000002 +2020-08-01 21:45:00,70.86,28.83,39.056,29.423000000000002 +2020-08-01 22:00:00,68.57,26.011,38.478,29.423000000000002 +2020-08-01 22:15:00,67.73,28.296999999999997,38.478,29.423000000000002 +2020-08-01 22:30:00,65.12,27.611,38.478,29.423000000000002 +2020-08-01 22:45:00,65.56,25.581999999999997,38.478,29.423000000000002 +2020-08-01 23:00:00,61.72,23.868000000000002,32.953,29.423000000000002 +2020-08-01 23:15:00,60.35,21.84,32.953,29.423000000000002 +2020-08-01 23:30:00,58.32,21.82,32.953,29.423000000000002 +2020-08-01 23:45:00,57.81,21.265,32.953,29.423000000000002 +2020-08-02 00:00:00,56.36,18.218,28.584,29.423000000000002 +2020-08-02 00:15:00,57.66,17.723,28.584,29.423000000000002 +2020-08-02 00:30:00,57.1,16.248,28.584,29.423000000000002 +2020-08-02 00:45:00,57.12,15.909,28.584,29.423000000000002 +2020-08-02 01:00:00,55.38,16.003,26.419,29.423000000000002 +2020-08-02 01:15:00,55.55,15.054,26.419,29.423000000000002 +2020-08-02 01:30:00,55.72,13.6,26.419,29.423000000000002 +2020-08-02 01:45:00,55.6,14.199000000000002,26.419,29.423000000000002 +2020-08-02 02:00:00,55.11,14.134,25.335,29.423000000000002 +2020-08-02 02:15:00,55.47,13.040999999999999,25.335,29.423000000000002 +2020-08-02 02:30:00,54.77,14.844000000000001,25.335,29.423000000000002 +2020-08-02 02:45:00,55.36,15.297,25.335,29.423000000000002 +2020-08-02 03:00:00,54.8,16.134,24.805,29.423000000000002 +2020-08-02 03:15:00,55.54,14.325,24.805,29.423000000000002 +2020-08-02 03:30:00,55.72,13.217,24.805,29.423000000000002 +2020-08-02 03:45:00,55.21,14.154000000000002,24.805,29.423000000000002 +2020-08-02 04:00:00,58.15,16.34,25.772,29.423000000000002 +2020-08-02 04:15:00,56.39,18.723,25.772,29.423000000000002 +2020-08-02 04:30:00,54.95,16.98,25.772,29.423000000000002 +2020-08-02 04:45:00,55.36,16.218,25.772,29.423000000000002 +2020-08-02 05:00:00,55.17,19.77,25.971999999999998,29.423000000000002 +2020-08-02 05:15:00,54.51,15.937000000000001,25.971999999999998,29.423000000000002 +2020-08-02 05:30:00,54.25,13.040999999999999,25.971999999999998,29.423000000000002 +2020-08-02 05:45:00,55.07,14.138,25.971999999999998,29.423000000000002 +2020-08-02 06:00:00,55.41,21.9,26.026,29.423000000000002 +2020-08-02 06:15:00,55.73,29.107,26.026,29.423000000000002 +2020-08-02 06:30:00,57.85,25.941,26.026,29.423000000000002 +2020-08-02 06:45:00,59.03,24.854,26.026,29.423000000000002 +2020-08-02 07:00:00,59.2,24.644000000000002,27.396,29.423000000000002 +2020-08-02 07:15:00,60.74,23.725,27.396,29.423000000000002 +2020-08-02 07:30:00,63.57,22.7,27.396,29.423000000000002 +2020-08-02 07:45:00,64.87,23.888,27.396,29.423000000000002 +2020-08-02 08:00:00,63.57,21.895,30.791999999999998,29.423000000000002 +2020-08-02 08:15:00,66.35,26.094,30.791999999999998,29.423000000000002 +2020-08-02 08:30:00,66.99,27.593000000000004,30.791999999999998,29.423000000000002 +2020-08-02 08:45:00,68.25,30.224,30.791999999999998,29.423000000000002 +2020-08-02 09:00:00,68.6,26.549,32.482,29.423000000000002 +2020-08-02 09:15:00,67.03,27.708000000000002,32.482,29.423000000000002 +2020-08-02 09:30:00,66.69,31.144000000000002,32.482,29.423000000000002 +2020-08-02 09:45:00,67.87,34.96,32.482,29.423000000000002 +2020-08-02 10:00:00,69.2,33.574,31.951,29.423000000000002 +2020-08-02 10:15:00,67.97,34.938,31.951,29.423000000000002 +2020-08-02 10:30:00,69.5,35.152,31.951,29.423000000000002 +2020-08-02 10:45:00,73.44,36.748000000000005,31.951,29.423000000000002 +2020-08-02 11:00:00,71.52,34.372,33.619,29.423000000000002 +2020-08-02 11:15:00,64.82,34.964,33.619,29.423000000000002 +2020-08-02 11:30:00,60.86,36.402,33.619,29.423000000000002 +2020-08-02 11:45:00,66.18,37.275,33.619,29.423000000000002 +2020-08-02 12:00:00,63.81,34.646,30.975,29.423000000000002 +2020-08-02 12:15:00,60.26,33.494,30.975,29.423000000000002 +2020-08-02 12:30:00,56.84,32.681,30.975,29.423000000000002 +2020-08-02 12:45:00,55.4,32.926,30.975,29.423000000000002 +2020-08-02 13:00:00,53.87,32.108000000000004,27.956999999999997,29.423000000000002 +2020-08-02 13:15:00,58.19,32.109,27.956999999999997,29.423000000000002 +2020-08-02 13:30:00,55.86,30.419,27.956999999999997,29.423000000000002 +2020-08-02 13:45:00,57.45,30.579,27.956999999999997,29.423000000000002 +2020-08-02 14:00:00,56.54,32.385999999999996,25.555999999999997,29.423000000000002 +2020-08-02 14:15:00,55.69,31.107,25.555999999999997,29.423000000000002 +2020-08-02 14:30:00,56.82,30.05,25.555999999999997,29.423000000000002 +2020-08-02 14:45:00,56.34,29.430999999999997,25.555999999999997,29.423000000000002 +2020-08-02 15:00:00,56.78,31.79,26.271,29.423000000000002 +2020-08-02 15:15:00,54.95,29.179000000000002,26.271,29.423000000000002 +2020-08-02 15:30:00,54.84,27.285,26.271,29.423000000000002 +2020-08-02 15:45:00,56.41,25.801,26.271,29.423000000000002 +2020-08-02 16:00:00,59.72,27.843000000000004,30.369,29.423000000000002 +2020-08-02 16:15:00,59.6,27.56,30.369,29.423000000000002 +2020-08-02 16:30:00,61.23,27.973000000000003,30.369,29.423000000000002 +2020-08-02 16:45:00,63.53,24.678,30.369,29.423000000000002 +2020-08-02 17:00:00,67.12,28.910999999999998,38.787,29.423000000000002 +2020-08-02 17:15:00,68.98,28.498,38.787,29.423000000000002 +2020-08-02 17:30:00,70.71,28.406,38.787,29.423000000000002 +2020-08-02 17:45:00,74.99,28.346999999999998,38.787,29.423000000000002 +2020-08-02 18:00:00,74.67,33.192,41.886,29.423000000000002 +2020-08-02 18:15:00,73.6,33.085,41.886,29.423000000000002 +2020-08-02 18:30:00,76.34,32.428000000000004,41.886,29.423000000000002 +2020-08-02 18:45:00,74.12,32.243,41.886,29.423000000000002 +2020-08-02 19:00:00,75.09,34.739000000000004,42.91,29.423000000000002 +2020-08-02 19:15:00,72.97,32.211999999999996,42.91,29.423000000000002 +2020-08-02 19:30:00,73.09,31.666,42.91,29.423000000000002 +2020-08-02 19:45:00,73.57,30.991,42.91,29.423000000000002 +2020-08-02 20:00:00,78.39,29.259,42.148999999999994,29.423000000000002 +2020-08-02 20:15:00,77.61,28.465,42.148999999999994,29.423000000000002 +2020-08-02 20:30:00,77.86,28.169,42.148999999999994,29.423000000000002 +2020-08-02 20:45:00,80.93,27.945999999999998,42.148999999999994,29.423000000000002 +2020-08-02 21:00:00,76.12,26.549,40.955999999999996,29.423000000000002 +2020-08-02 21:15:00,75.92,28.636999999999997,40.955999999999996,29.423000000000002 +2020-08-02 21:30:00,72.29,28.338,40.955999999999996,29.423000000000002 +2020-08-02 21:45:00,71.28,28.91,40.955999999999996,29.423000000000002 +2020-08-02 22:00:00,67.02,28.098000000000003,39.873000000000005,29.423000000000002 +2020-08-02 22:15:00,68.04,28.831,39.873000000000005,29.423000000000002 +2020-08-02 22:30:00,65.78,27.840999999999998,39.873000000000005,29.423000000000002 +2020-08-02 22:45:00,65.72,24.656999999999996,39.873000000000005,29.423000000000002 +2020-08-02 23:00:00,60.72,22.861,35.510999999999996,29.423000000000002 +2020-08-02 23:15:00,63.05,21.92,35.510999999999996,29.423000000000002 +2020-08-02 23:30:00,62.6,21.354,35.510999999999996,29.423000000000002 +2020-08-02 23:45:00,62.86,20.894000000000002,35.510999999999996,29.423000000000002 +2020-08-03 00:00:00,64.33,19.451,33.475,29.535 +2020-08-03 00:15:00,67.22,19.498,33.475,29.535 +2020-08-03 00:30:00,66.41,17.651,33.475,29.535 +2020-08-03 00:45:00,63.17,16.98,33.475,29.535 +2020-08-03 01:00:00,63.68,17.434,33.111,29.535 +2020-08-03 01:15:00,60.61,16.54,33.111,29.535 +2020-08-03 01:30:00,60.33,15.436,33.111,29.535 +2020-08-03 01:45:00,61.13,15.931,33.111,29.535 +2020-08-03 02:00:00,59.92,16.308,32.358000000000004,29.535 +2020-08-03 02:15:00,61.4,14.12,32.358000000000004,29.535 +2020-08-03 02:30:00,61.07,16.077,32.358000000000004,29.535 +2020-08-03 02:45:00,61.46,16.435,32.358000000000004,29.535 +2020-08-03 03:00:00,60.32,17.656,30.779,29.535 +2020-08-03 03:15:00,63.48,16.432000000000002,30.779,29.535 +2020-08-03 03:30:00,63.96,16.000999999999998,30.779,29.535 +2020-08-03 03:45:00,66.5,16.54,30.779,29.535 +2020-08-03 04:00:00,74.97,21.386999999999997,31.416,29.535 +2020-08-03 04:15:00,76.04,26.27,31.416,29.535 +2020-08-03 04:30:00,74.98,23.919,31.416,29.535 +2020-08-03 04:45:00,83.07,23.5,31.416,29.535 +2020-08-03 05:00:00,90.67,32.928000000000004,37.221,29.535 +2020-08-03 05:15:00,89.8,37.603,37.221,29.535 +2020-08-03 05:30:00,91.37,33.244,37.221,29.535 +2020-08-03 05:45:00,93.43,31.784000000000002,37.221,29.535 +2020-08-03 06:00:00,105.8,30.877,51.891000000000005,29.535 +2020-08-03 06:15:00,107.93,30.43,51.891000000000005,29.535 +2020-08-03 06:30:00,104.29,30.522,51.891000000000005,29.535 +2020-08-03 06:45:00,105.53,33.891,51.891000000000005,29.535 +2020-08-03 07:00:00,111.0,33.523,62.282,29.535 +2020-08-03 07:15:00,108.3,34.719,62.282,29.535 +2020-08-03 07:30:00,108.02,32.942,62.282,29.535 +2020-08-03 07:45:00,103.2,34.629,62.282,29.535 +2020-08-03 08:00:00,104.16,30.793000000000003,54.102,29.535 +2020-08-03 08:15:00,105.8,33.993,54.102,29.535 +2020-08-03 08:30:00,107.65,34.896,54.102,29.535 +2020-08-03 08:45:00,105.3,38.001999999999995,54.102,29.535 +2020-08-03 09:00:00,103.61,33.321999999999996,50.917,29.535 +2020-08-03 09:15:00,107.08,33.051,50.917,29.535 +2020-08-03 09:30:00,106.27,35.66,50.917,29.535 +2020-08-03 09:45:00,106.17,37.192,50.917,29.535 +2020-08-03 10:00:00,102.23,36.264,49.718999999999994,29.535 +2020-08-03 10:15:00,106.93,37.5,49.718999999999994,29.535 +2020-08-03 10:30:00,107.96,37.342,49.718999999999994,29.535 +2020-08-03 10:45:00,107.77,37.3,49.718999999999994,29.535 +2020-08-03 11:00:00,100.64,35.437,49.833999999999996,29.535 +2020-08-03 11:15:00,97.07,36.126,49.833999999999996,29.535 +2020-08-03 11:30:00,95.48,38.11,49.833999999999996,29.535 +2020-08-03 11:45:00,95.33,39.504,49.833999999999996,29.535 +2020-08-03 12:00:00,98.79,35.001,47.832,29.535 +2020-08-03 12:15:00,96.36,33.953,47.832,29.535 +2020-08-03 12:30:00,97.53,32.065,47.832,29.535 +2020-08-03 12:45:00,95.9,32.147,47.832,29.535 +2020-08-03 13:00:00,100.77,32.144,48.03,29.535 +2020-08-03 13:15:00,99.22,31.401,48.03,29.535 +2020-08-03 13:30:00,102.37,29.932,48.03,29.535 +2020-08-03 13:45:00,97.29,30.98,48.03,29.535 +2020-08-03 14:00:00,94.86,31.984,48.157,29.535 +2020-08-03 14:15:00,93.05,31.354,48.157,29.535 +2020-08-03 14:30:00,92.91,30.191999999999997,48.157,29.535 +2020-08-03 14:45:00,92.65,31.615,48.157,29.535 +2020-08-03 15:00:00,92.04,33.464,48.897,29.535 +2020-08-03 15:15:00,91.52,30.410999999999998,48.897,29.535 +2020-08-03 15:30:00,90.89,29.355999999999998,48.897,29.535 +2020-08-03 15:45:00,92.82,27.436999999999998,48.897,29.535 +2020-08-03 16:00:00,94.14,30.561,51.446000000000005,29.535 +2020-08-03 16:15:00,94.64,30.415,51.446000000000005,29.535 +2020-08-03 16:30:00,96.56,30.275,51.446000000000005,29.535 +2020-08-03 16:45:00,98.01,27.131999999999998,51.446000000000005,29.535 +2020-08-03 17:00:00,98.65,30.291,57.507,29.535 +2020-08-03 17:15:00,100.17,30.348000000000003,57.507,29.535 +2020-08-03 17:30:00,101.49,29.936999999999998,57.507,29.535 +2020-08-03 17:45:00,102.04,29.642,57.507,29.535 +2020-08-03 18:00:00,103.4,33.454,57.896,29.535 +2020-08-03 18:15:00,101.83,31.758000000000003,57.896,29.535 +2020-08-03 18:30:00,102.94,30.328000000000003,57.896,29.535 +2020-08-03 18:45:00,102.54,33.139,57.896,29.535 +2020-08-03 19:00:00,99.56,35.525,57.891999999999996,29.535 +2020-08-03 19:15:00,96.15,34.346,57.891999999999996,29.535 +2020-08-03 19:30:00,94.72,33.41,57.891999999999996,29.535 +2020-08-03 19:45:00,96.09,32.209,57.891999999999996,29.535 +2020-08-03 20:00:00,96.55,29.432,64.57300000000001,29.535 +2020-08-03 20:15:00,103.85,30.159000000000002,64.57300000000001,29.535 +2020-08-03 20:30:00,102.7,30.487,64.57300000000001,29.535 +2020-08-03 20:45:00,96.84,30.337,64.57300000000001,29.535 +2020-08-03 21:00:00,90.83,28.291999999999998,59.431999999999995,29.535 +2020-08-03 21:15:00,90.21,30.875999999999998,59.431999999999995,29.535 +2020-08-03 21:30:00,85.03,31.019000000000002,59.431999999999995,29.535 +2020-08-03 21:45:00,84.99,31.394000000000002,59.431999999999995,29.535 +2020-08-03 22:00:00,79.53,28.799,51.519,29.535 +2020-08-03 22:15:00,80.49,31.503,51.519,29.535 +2020-08-03 22:30:00,79.92,26.988000000000003,51.519,29.535 +2020-08-03 22:45:00,78.23,24.1,51.519,29.535 +2020-08-03 23:00:00,73.74,22.268,44.501000000000005,29.535 +2020-08-03 23:15:00,72.71,19.594,44.501000000000005,29.535 +2020-08-03 23:30:00,74.86,18.83,44.501000000000005,29.535 +2020-08-03 23:45:00,80.0,17.692,44.501000000000005,29.535 +2020-08-04 00:00:00,77.12,17.405,44.522,29.535 +2020-08-04 00:15:00,74.58,18.18,44.522,29.535 +2020-08-04 00:30:00,69.85,17.092,44.522,29.535 +2020-08-04 00:45:00,70.87,17.262999999999998,44.522,29.535 +2020-08-04 01:00:00,70.62,17.199,41.441,29.535 +2020-08-04 01:15:00,70.7,16.449,41.441,29.535 +2020-08-04 01:30:00,73.19,15.217,41.441,29.535 +2020-08-04 01:45:00,78.29,15.190999999999999,41.441,29.535 +2020-08-04 02:00:00,77.5,15.107999999999999,40.203,29.535 +2020-08-04 02:15:00,71.54,14.061,40.203,29.535 +2020-08-04 02:30:00,71.46,15.665999999999999,40.203,29.535 +2020-08-04 02:45:00,76.65,16.338,40.203,29.535 +2020-08-04 03:00:00,78.03,17.101,39.536,29.535 +2020-08-04 03:15:00,78.15,16.855,39.536,29.535 +2020-08-04 03:30:00,71.82,16.365,39.536,29.535 +2020-08-04 03:45:00,79.75,15.821,39.536,29.535 +2020-08-04 04:00:00,84.05,19.462,40.759,29.535 +2020-08-04 04:15:00,86.03,24.38,40.759,29.535 +2020-08-04 04:30:00,85.13,21.936,40.759,29.535 +2020-08-04 04:45:00,89.94,21.901999999999997,40.759,29.535 +2020-08-04 05:00:00,95.49,32.521,43.623999999999995,29.535 +2020-08-04 05:15:00,96.01,37.814,43.623999999999995,29.535 +2020-08-04 05:30:00,98.12,33.751,43.623999999999995,29.535 +2020-08-04 05:45:00,99.46,31.581,43.623999999999995,29.535 +2020-08-04 06:00:00,100.86,31.744,52.684,29.535 +2020-08-04 06:15:00,104.1,31.389,52.684,29.535 +2020-08-04 06:30:00,107.85,31.221999999999998,52.684,29.535 +2020-08-04 06:45:00,112.25,33.775999999999996,52.684,29.535 +2020-08-04 07:00:00,112.11,33.569,62.676,29.535 +2020-08-04 07:15:00,113.72,34.546,62.676,29.535 +2020-08-04 07:30:00,109.77,32.847,62.676,29.535 +2020-08-04 07:45:00,107.83,33.577,62.676,29.535 +2020-08-04 08:00:00,112.52,29.664,56.161,29.535 +2020-08-04 08:15:00,112.46,32.497,56.161,29.535 +2020-08-04 08:30:00,112.9,33.57,56.161,29.535 +2020-08-04 08:45:00,111.06,35.781,56.161,29.535 +2020-08-04 09:00:00,115.35,31.52,52.132,29.535 +2020-08-04 09:15:00,114.68,30.95,52.132,29.535 +2020-08-04 09:30:00,112.07,34.161,52.132,29.535 +2020-08-04 09:45:00,109.95,37.027,52.132,29.535 +2020-08-04 10:00:00,113.26,34.8,51.032,29.535 +2020-08-04 10:15:00,111.01,35.992,51.032,29.535 +2020-08-04 10:30:00,108.81,35.836,51.032,29.535 +2020-08-04 10:45:00,112.99,36.762,51.032,29.535 +2020-08-04 11:00:00,106.02,34.756,51.085,29.535 +2020-08-04 11:15:00,107.07,35.876999999999995,51.085,29.535 +2020-08-04 11:30:00,108.91,36.829,51.085,29.535 +2020-08-04 11:45:00,110.11,37.693000000000005,51.085,29.535 +2020-08-04 12:00:00,105.38,33.145,49.049,29.535 +2020-08-04 12:15:00,101.69,32.468,49.049,29.535 +2020-08-04 12:30:00,100.66,31.366999999999997,49.049,29.535 +2020-08-04 12:45:00,99.77,32.162,49.049,29.535 +2020-08-04 13:00:00,98.37,31.823,49.722,29.535 +2020-08-04 13:15:00,98.25,32.902,49.722,29.535 +2020-08-04 13:30:00,97.22,31.279,49.722,29.535 +2020-08-04 13:45:00,97.65,31.354,49.722,29.535 +2020-08-04 14:00:00,98.37,32.76,49.565,29.535 +2020-08-04 14:15:00,100.11,31.919,49.565,29.535 +2020-08-04 14:30:00,100.18,31.025,49.565,29.535 +2020-08-04 14:45:00,99.55,31.674,49.565,29.535 +2020-08-04 15:00:00,100.99,33.382,51.108999999999995,29.535 +2020-08-04 15:15:00,98.14,31.217,51.108999999999995,29.535 +2020-08-04 15:30:00,97.4,29.936999999999998,51.108999999999995,29.535 +2020-08-04 15:45:00,98.43,28.403000000000002,51.108999999999995,29.535 +2020-08-04 16:00:00,102.05,30.775,52.725,29.535 +2020-08-04 16:15:00,104.62,30.676,52.725,29.535 +2020-08-04 16:30:00,102.53,30.116999999999997,52.725,29.535 +2020-08-04 16:45:00,103.42,27.68,52.725,29.535 +2020-08-04 17:00:00,104.82,30.979,58.031000000000006,29.535 +2020-08-04 17:15:00,106.88,31.469,58.031000000000006,29.535 +2020-08-04 17:30:00,106.52,30.576,58.031000000000006,29.535 +2020-08-04 17:45:00,106.89,29.989,58.031000000000006,29.535 +2020-08-04 18:00:00,107.37,32.888000000000005,58.338,29.535 +2020-08-04 18:15:00,105.89,32.689,58.338,29.535 +2020-08-04 18:30:00,105.26,31.037,58.338,29.535 +2020-08-04 18:45:00,104.69,33.591,58.338,29.535 +2020-08-04 19:00:00,102.74,34.849000000000004,58.464,29.535 +2020-08-04 19:15:00,99.6,33.861,58.464,29.535 +2020-08-04 19:30:00,98.69,32.769,58.464,29.535 +2020-08-04 19:45:00,99.54,31.89,58.464,29.535 +2020-08-04 20:00:00,98.28,29.48,63.708,29.535 +2020-08-04 20:15:00,104.76,28.862,63.708,29.535 +2020-08-04 20:30:00,104.72,29.14,63.708,29.535 +2020-08-04 20:45:00,102.08,29.421999999999997,63.708,29.535 +2020-08-04 21:00:00,93.21,28.273000000000003,57.06399999999999,29.535 +2020-08-04 21:15:00,91.37,29.372,57.06399999999999,29.535 +2020-08-04 21:30:00,88.94,29.728,57.06399999999999,29.535 +2020-08-04 21:45:00,87.22,30.253,57.06399999999999,29.535 +2020-08-04 22:00:00,81.39,27.693,52.831,29.535 +2020-08-04 22:15:00,90.48,30.084,52.831,29.535 +2020-08-04 22:30:00,86.19,25.816999999999997,52.831,29.535 +2020-08-04 22:45:00,84.07,22.903000000000002,52.831,29.535 +2020-08-04 23:00:00,76.58,20.366,44.717,29.535 +2020-08-04 23:15:00,82.38,19.252,44.717,29.535 +2020-08-04 23:30:00,81.93,18.522000000000002,44.717,29.535 +2020-08-04 23:45:00,82.08,17.589000000000002,44.717,29.535 +2020-08-05 00:00:00,74.43,17.499000000000002,41.263000000000005,29.535 +2020-08-05 00:15:00,72.81,18.273,41.263000000000005,29.535 +2020-08-05 00:30:00,73.78,17.189,41.263000000000005,29.535 +2020-08-05 00:45:00,79.92,17.368,41.263000000000005,29.535 +2020-08-05 01:00:00,79.4,17.293,38.448,29.535 +2020-08-05 01:15:00,79.23,16.547,38.448,29.535 +2020-08-05 01:30:00,73.16,15.324000000000002,38.448,29.535 +2020-08-05 01:45:00,74.56,15.296,38.448,29.535 +2020-08-05 02:00:00,71.2,15.217,36.471,29.535 +2020-08-05 02:15:00,72.53,14.187999999999999,36.471,29.535 +2020-08-05 02:30:00,76.7,15.772,36.471,29.535 +2020-08-05 02:45:00,78.9,16.442999999999998,36.471,29.535 +2020-08-05 03:00:00,76.32,17.195,36.042,29.535 +2020-08-05 03:15:00,71.19,16.965,36.042,29.535 +2020-08-05 03:30:00,73.06,16.482,36.042,29.535 +2020-08-05 03:45:00,74.45,15.94,36.042,29.535 +2020-08-05 04:00:00,76.22,19.583,36.705,29.535 +2020-08-05 04:15:00,79.11,24.499000000000002,36.705,29.535 +2020-08-05 04:30:00,80.91,22.057,36.705,29.535 +2020-08-05 04:45:00,83.59,22.023000000000003,36.705,29.535 +2020-08-05 05:00:00,89.3,32.665,39.716,29.535 +2020-08-05 05:15:00,93.87,37.975,39.716,29.535 +2020-08-05 05:30:00,98.13,33.93,39.716,29.535 +2020-08-05 05:45:00,102.24,31.743000000000002,39.716,29.535 +2020-08-05 06:00:00,110.74,31.885,52.756,29.535 +2020-08-05 06:15:00,113.42,31.543000000000003,52.756,29.535 +2020-08-05 06:30:00,114.26,31.381999999999998,52.756,29.535 +2020-08-05 06:45:00,111.89,33.946999999999996,52.756,29.535 +2020-08-05 07:00:00,112.05,33.738,65.977,29.535 +2020-08-05 07:15:00,111.49,34.732,65.977,29.535 +2020-08-05 07:30:00,110.79,33.048,65.977,29.535 +2020-08-05 07:45:00,115.87,33.79,65.977,29.535 +2020-08-05 08:00:00,116.83,29.88,57.927,29.535 +2020-08-05 08:15:00,115.09,32.696999999999996,57.927,29.535 +2020-08-05 08:30:00,115.44,33.76,57.927,29.535 +2020-08-05 08:45:00,116.68,35.958,57.927,29.535 +2020-08-05 09:00:00,119.16,31.701,54.86,29.535 +2020-08-05 09:15:00,115.56,31.124000000000002,54.86,29.535 +2020-08-05 09:30:00,112.66,34.321999999999996,54.86,29.535 +2020-08-05 09:45:00,127.72,37.173,54.86,29.535 +2020-08-05 10:00:00,125.46,34.949,52.818000000000005,29.535 +2020-08-05 10:15:00,122.4,36.124,52.818000000000005,29.535 +2020-08-05 10:30:00,115.0,35.961999999999996,52.818000000000005,29.535 +2020-08-05 10:45:00,114.33,36.883,52.818000000000005,29.535 +2020-08-05 11:00:00,111.89,34.884,52.937,29.535 +2020-08-05 11:15:00,111.04,36.0,52.937,29.535 +2020-08-05 11:30:00,107.75,36.945,52.937,29.535 +2020-08-05 11:45:00,105.24,37.798,52.937,29.535 +2020-08-05 12:00:00,104.45,33.249,50.826,29.535 +2020-08-05 12:15:00,103.52,32.566,50.826,29.535 +2020-08-05 12:30:00,103.67,31.47,50.826,29.535 +2020-08-05 12:45:00,102.21,32.255,50.826,29.535 +2020-08-05 13:00:00,100.82,31.898000000000003,50.556000000000004,29.535 +2020-08-05 13:15:00,100.96,32.968,50.556000000000004,29.535 +2020-08-05 13:30:00,105.71,31.343000000000004,50.556000000000004,29.535 +2020-08-05 13:45:00,102.53,31.427,50.556000000000004,29.535 +2020-08-05 14:00:00,104.32,32.821,51.188,29.535 +2020-08-05 14:15:00,112.39,31.984,51.188,29.535 +2020-08-05 14:30:00,116.08,31.096999999999998,51.188,29.535 +2020-08-05 14:45:00,116.4,31.75,51.188,29.535 +2020-08-05 15:00:00,114.44,33.433,52.976000000000006,29.535 +2020-08-05 15:15:00,114.65,31.269000000000002,52.976000000000006,29.535 +2020-08-05 15:30:00,115.6,29.997,52.976000000000006,29.535 +2020-08-05 15:45:00,115.27,28.464000000000002,52.976000000000006,29.535 +2020-08-05 16:00:00,113.47,30.823,55.463,29.535 +2020-08-05 16:15:00,110.57,30.73,55.463,29.535 +2020-08-05 16:30:00,109.52,30.18,55.463,29.535 +2020-08-05 16:45:00,111.03,27.772,55.463,29.535 +2020-08-05 17:00:00,109.65,31.051,59.435,29.535 +2020-08-05 17:15:00,106.85,31.566,59.435,29.535 +2020-08-05 17:30:00,106.49,30.684,59.435,29.535 +2020-08-05 17:45:00,109.02,30.124000000000002,59.435,29.535 +2020-08-05 18:00:00,109.21,33.019,61.387,29.535 +2020-08-05 18:15:00,107.26,32.824,61.387,29.535 +2020-08-05 18:30:00,107.93,31.18,61.387,29.535 +2020-08-05 18:45:00,105.44,33.734,61.387,29.535 +2020-08-05 19:00:00,102.48,34.996,63.323,29.535 +2020-08-05 19:15:00,99.33,34.006,63.323,29.535 +2020-08-05 19:30:00,98.06,32.913000000000004,63.323,29.535 +2020-08-05 19:45:00,97.58,32.037,63.323,29.535 +2020-08-05 20:00:00,98.82,29.625999999999998,69.083,29.535 +2020-08-05 20:15:00,99.21,29.009,69.083,29.535 +2020-08-05 20:30:00,100.79,29.276,69.083,29.535 +2020-08-05 20:45:00,97.25,29.539,69.083,29.535 +2020-08-05 21:00:00,94.59,28.393,59.957,29.535 +2020-08-05 21:15:00,93.52,29.486,59.957,29.535 +2020-08-05 21:30:00,89.59,29.833000000000002,59.957,29.535 +2020-08-05 21:45:00,86.86,30.335,59.957,29.535 +2020-08-05 22:00:00,81.98,27.763,53.821000000000005,29.535 +2020-08-05 22:15:00,82.56,30.144000000000002,53.821000000000005,29.535 +2020-08-05 22:30:00,80.52,25.849,53.821000000000005,29.535 +2020-08-05 22:45:00,83.39,22.934,53.821000000000005,29.535 +2020-08-05 23:00:00,76.4,20.426,45.458,29.535 +2020-08-05 23:15:00,76.83,19.312,45.458,29.535 +2020-08-05 23:30:00,76.33,18.596,45.458,29.535 +2020-08-05 23:45:00,75.85,17.664,45.458,29.535 +2020-08-06 00:00:00,71.94,17.595,40.36,29.535 +2020-08-06 00:15:00,72.79,18.368,40.36,29.535 +2020-08-06 00:30:00,71.6,17.289,40.36,29.535 +2020-08-06 00:45:00,72.0,17.474,40.36,29.535 +2020-08-06 01:00:00,70.14,17.387999999999998,38.552,29.535 +2020-08-06 01:15:00,71.15,16.648,38.552,29.535 +2020-08-06 01:30:00,70.1,15.435,38.552,29.535 +2020-08-06 01:45:00,69.93,15.404000000000002,38.552,29.535 +2020-08-06 02:00:00,76.01,15.328,36.895,29.535 +2020-08-06 02:15:00,77.91,14.318,36.895,29.535 +2020-08-06 02:30:00,75.22,15.882,36.895,29.535 +2020-08-06 02:45:00,72.63,16.552,36.895,29.535 +2020-08-06 03:00:00,72.82,17.294,36.565,29.535 +2020-08-06 03:15:00,72.3,17.077,36.565,29.535 +2020-08-06 03:30:00,74.58,16.601,36.565,29.535 +2020-08-06 03:45:00,75.09,16.062,36.565,29.535 +2020-08-06 04:00:00,79.6,19.707,37.263000000000005,29.535 +2020-08-06 04:15:00,86.77,24.622,37.263000000000005,29.535 +2020-08-06 04:30:00,88.17,22.183000000000003,37.263000000000005,29.535 +2020-08-06 04:45:00,90.68,22.151,37.263000000000005,29.535 +2020-08-06 05:00:00,90.92,32.816,40.412,29.535 +2020-08-06 05:15:00,94.47,38.146,40.412,29.535 +2020-08-06 05:30:00,102.91,34.119,40.412,29.535 +2020-08-06 05:45:00,107.32,31.916,40.412,29.535 +2020-08-06 06:00:00,110.3,32.035,49.825,29.535 +2020-08-06 06:15:00,109.16,31.708000000000002,49.825,29.535 +2020-08-06 06:30:00,113.88,31.549,49.825,29.535 +2020-08-06 06:45:00,115.25,34.126,49.825,29.535 +2020-08-06 07:00:00,118.34,33.914,61.082,29.535 +2020-08-06 07:15:00,113.87,34.925,61.082,29.535 +2020-08-06 07:30:00,116.05,33.259,61.082,29.535 +2020-08-06 07:45:00,116.6,34.01,61.082,29.535 +2020-08-06 08:00:00,115.41,30.105,53.961999999999996,29.535 +2020-08-06 08:15:00,108.89,32.903,53.961999999999996,29.535 +2020-08-06 08:30:00,114.46,33.955,53.961999999999996,29.535 +2020-08-06 08:45:00,116.44,36.141999999999996,53.961999999999996,29.535 +2020-08-06 09:00:00,117.7,31.888,50.06100000000001,29.535 +2020-08-06 09:15:00,113.69,31.304000000000002,50.06100000000001,29.535 +2020-08-06 09:30:00,109.27,34.489000000000004,50.06100000000001,29.535 +2020-08-06 09:45:00,108.39,37.323,50.06100000000001,29.535 +2020-08-06 10:00:00,109.59,35.102,47.68,29.535 +2020-08-06 10:15:00,109.22,36.260999999999996,47.68,29.535 +2020-08-06 10:30:00,115.31,36.093,47.68,29.535 +2020-08-06 10:45:00,123.63,37.009,47.68,29.535 +2020-08-06 11:00:00,120.81,35.016999999999996,45.93899999999999,29.535 +2020-08-06 11:15:00,120.53,36.128,45.93899999999999,29.535 +2020-08-06 11:30:00,115.4,37.066,45.93899999999999,29.535 +2020-08-06 11:45:00,114.1,37.907,45.93899999999999,29.535 +2020-08-06 12:00:00,108.48,33.357,43.648999999999994,29.535 +2020-08-06 12:15:00,115.79,32.666,43.648999999999994,29.535 +2020-08-06 12:30:00,114.88,31.578000000000003,43.648999999999994,29.535 +2020-08-06 12:45:00,109.1,32.354,43.648999999999994,29.535 +2020-08-06 13:00:00,105.16,31.976999999999997,42.801,29.535 +2020-08-06 13:15:00,109.12,33.035,42.801,29.535 +2020-08-06 13:30:00,109.71,31.41,42.801,29.535 +2020-08-06 13:45:00,108.45,31.504,42.801,29.535 +2020-08-06 14:00:00,105.05,32.884,43.24,29.535 +2020-08-06 14:15:00,106.1,32.052,43.24,29.535 +2020-08-06 14:30:00,113.49,31.171,43.24,29.535 +2020-08-06 14:45:00,112.04,31.83,43.24,29.535 +2020-08-06 15:00:00,106.97,33.484,45.04600000000001,29.535 +2020-08-06 15:15:00,105.8,31.323,45.04600000000001,29.535 +2020-08-06 15:30:00,104.44,30.059,45.04600000000001,29.535 +2020-08-06 15:45:00,107.22,28.526999999999997,45.04600000000001,29.535 +2020-08-06 16:00:00,109.97,30.872,46.568000000000005,29.535 +2020-08-06 16:15:00,108.43,30.785999999999998,46.568000000000005,29.535 +2020-08-06 16:30:00,109.72,30.246,46.568000000000005,29.535 +2020-08-06 16:45:00,114.1,27.866999999999997,46.568000000000005,29.535 +2020-08-06 17:00:00,114.18,31.127,50.618,29.535 +2020-08-06 17:15:00,107.45,31.666,50.618,29.535 +2020-08-06 17:30:00,110.68,30.795,50.618,29.535 +2020-08-06 17:45:00,113.82,30.261,50.618,29.535 +2020-08-06 18:00:00,115.22,33.153,52.806999999999995,29.535 +2020-08-06 18:15:00,116.03,32.963,52.806999999999995,29.535 +2020-08-06 18:30:00,115.79,31.326999999999998,52.806999999999995,29.535 +2020-08-06 18:45:00,111.98,33.882,52.806999999999995,29.535 +2020-08-06 19:00:00,104.96,35.147,53.464,29.535 +2020-08-06 19:15:00,99.09,34.155,53.464,29.535 +2020-08-06 19:30:00,97.96,33.061,53.464,29.535 +2020-08-06 19:45:00,99.34,32.188,53.464,29.535 +2020-08-06 20:00:00,102.66,29.776999999999997,56.753,29.535 +2020-08-06 20:15:00,99.01,29.160999999999998,56.753,29.535 +2020-08-06 20:30:00,98.36,29.416999999999998,56.753,29.535 +2020-08-06 20:45:00,96.53,29.66,56.753,29.535 +2020-08-06 21:00:00,92.34,28.517,52.506,29.535 +2020-08-06 21:15:00,91.64,29.603,52.506,29.535 +2020-08-06 21:30:00,87.55,29.941999999999997,52.506,29.535 +2020-08-06 21:45:00,86.87,30.42,52.506,29.535 +2020-08-06 22:00:00,82.17,27.836,48.163000000000004,29.535 +2020-08-06 22:15:00,83.32,30.206999999999997,48.163000000000004,29.535 +2020-08-06 22:30:00,79.81,25.884,48.163000000000004,29.535 +2020-08-06 22:45:00,79.96,22.967,48.163000000000004,29.535 +2020-08-06 23:00:00,73.69,20.49,42.379,29.535 +2020-08-06 23:15:00,75.01,19.374000000000002,42.379,29.535 +2020-08-06 23:30:00,75.72,18.672,42.379,29.535 +2020-08-06 23:45:00,76.69,17.742,42.379,29.535 +2020-08-07 00:00:00,71.41,16.029,38.505,29.535 +2020-08-07 00:15:00,70.97,16.997,38.505,29.535 +2020-08-07 00:30:00,66.19,16.194000000000003,38.505,29.535 +2020-08-07 00:45:00,68.12,16.788,38.505,29.535 +2020-08-07 01:00:00,69.02,16.339000000000002,37.004,29.535 +2020-08-07 01:15:00,70.25,14.969000000000001,37.004,29.535 +2020-08-07 01:30:00,70.41,14.469000000000001,37.004,29.535 +2020-08-07 01:45:00,70.59,14.186,37.004,29.535 +2020-08-07 02:00:00,76.79,15.011,36.098,29.535 +2020-08-07 02:15:00,79.54,13.975999999999999,36.098,29.535 +2020-08-07 02:30:00,74.87,16.284000000000002,36.098,29.535 +2020-08-07 02:45:00,70.69,16.291,36.098,29.535 +2020-08-07 03:00:00,70.91,17.83,36.561,29.535 +2020-08-07 03:15:00,70.99,16.409000000000002,36.561,29.535 +2020-08-07 03:30:00,73.56,15.71,36.561,29.535 +2020-08-07 03:45:00,75.0,15.999,36.561,29.535 +2020-08-07 04:00:00,77.55,19.767,37.355,29.535 +2020-08-07 04:15:00,85.83,23.194000000000003,37.355,29.535 +2020-08-07 04:30:00,87.24,21.662,37.355,29.535 +2020-08-07 04:45:00,88.67,21.076,37.355,29.535 +2020-08-07 05:00:00,92.85,31.379,40.285,29.535 +2020-08-07 05:15:00,98.87,37.567,40.285,29.535 +2020-08-07 05:30:00,96.26,33.688,40.285,29.535 +2020-08-07 05:45:00,100.51,31.046999999999997,40.285,29.535 +2020-08-07 06:00:00,106.1,31.334,52.378,29.535 +2020-08-07 06:15:00,108.88,31.254,52.378,29.535 +2020-08-07 06:30:00,111.1,31.092,52.378,29.535 +2020-08-07 06:45:00,113.24,33.475,52.378,29.535 +2020-08-07 07:00:00,114.37,33.924,60.891999999999996,29.535 +2020-08-07 07:15:00,113.51,35.764,60.891999999999996,29.535 +2020-08-07 07:30:00,113.78,32.241,60.891999999999996,29.535 +2020-08-07 07:45:00,114.69,32.854,60.891999999999996,29.535 +2020-08-07 08:00:00,115.11,29.781,53.652,29.535 +2020-08-07 08:15:00,119.6,33.239000000000004,53.652,29.535 +2020-08-07 08:30:00,121.84,34.12,53.652,29.535 +2020-08-07 08:45:00,120.12,36.262,53.652,29.535 +2020-08-07 09:00:00,124.38,29.730999999999998,51.456,29.535 +2020-08-07 09:15:00,127.6,30.976999999999997,51.456,29.535 +2020-08-07 09:30:00,130.39,33.506,51.456,29.535 +2020-08-07 09:45:00,126.25,36.711,51.456,29.535 +2020-08-07 10:00:00,120.83,34.423,49.4,29.535 +2020-08-07 10:15:00,127.56,35.29,49.4,29.535 +2020-08-07 10:30:00,127.41,35.665,49.4,29.535 +2020-08-07 10:45:00,126.26,36.516999999999996,49.4,29.535 +2020-08-07 11:00:00,118.94,34.779,48.773,29.535 +2020-08-07 11:15:00,114.75,34.885,48.773,29.535 +2020-08-07 11:30:00,117.42,35.325,48.773,29.535 +2020-08-07 11:45:00,115.42,35.209,48.773,29.535 +2020-08-07 12:00:00,110.13,30.995,46.033,29.535 +2020-08-07 12:15:00,110.2,29.831999999999997,46.033,29.535 +2020-08-07 12:30:00,109.71,28.854,46.033,29.535 +2020-08-07 12:45:00,110.98,28.804000000000002,46.033,29.535 +2020-08-07 13:00:00,108.18,28.916999999999998,44.38399999999999,29.535 +2020-08-07 13:15:00,108.46,30.076999999999998,44.38399999999999,29.535 +2020-08-07 13:30:00,109.25,29.230999999999998,44.38399999999999,29.535 +2020-08-07 13:45:00,111.29,29.642,44.38399999999999,29.535 +2020-08-07 14:00:00,99.65,30.31,43.162,29.535 +2020-08-07 14:15:00,103.35,29.925,43.162,29.535 +2020-08-07 14:30:00,100.75,30.491,43.162,29.535 +2020-08-07 14:45:00,103.99,30.454,43.162,29.535 +2020-08-07 15:00:00,92.04,32.04,44.91,29.535 +2020-08-07 15:15:00,93.49,29.68,44.91,29.535 +2020-08-07 15:30:00,91.17,27.985,44.91,29.535 +2020-08-07 15:45:00,93.1,27.19,44.91,29.535 +2020-08-07 16:00:00,99.66,28.771,47.489,29.535 +2020-08-07 16:15:00,101.19,29.153000000000002,47.489,29.535 +2020-08-07 16:30:00,102.13,28.436999999999998,47.489,29.535 +2020-08-07 16:45:00,100.1,25.329,47.489,29.535 +2020-08-07 17:00:00,107.59,30.236,52.047,29.535 +2020-08-07 17:15:00,107.4,30.662,52.047,29.535 +2020-08-07 17:30:00,106.27,29.985,52.047,29.535 +2020-08-07 17:45:00,100.88,29.333000000000002,52.047,29.535 +2020-08-07 18:00:00,106.56,32.196,53.306000000000004,29.535 +2020-08-07 18:15:00,103.38,31.123,53.306000000000004,29.535 +2020-08-07 18:30:00,105.2,29.368000000000002,53.306000000000004,29.535 +2020-08-07 18:45:00,105.43,32.33,53.306000000000004,29.535 +2020-08-07 19:00:00,100.82,34.372,53.516000000000005,29.535 +2020-08-07 19:15:00,99.6,33.865,53.516000000000005,29.535 +2020-08-07 19:30:00,101.51,32.855,53.516000000000005,29.535 +2020-08-07 19:45:00,97.37,31.035,53.516000000000005,29.535 +2020-08-07 20:00:00,96.5,28.47,57.88,29.535 +2020-08-07 20:15:00,97.87,28.62,57.88,29.535 +2020-08-07 20:30:00,97.05,28.397,57.88,29.535 +2020-08-07 20:45:00,91.55,27.805,57.88,29.535 +2020-08-07 21:00:00,87.14,27.892,53.32,29.535 +2020-08-07 21:15:00,88.39,30.548000000000002,53.32,29.535 +2020-08-07 21:30:00,86.76,30.733,53.32,29.535 +2020-08-07 21:45:00,86.09,31.351,53.32,29.535 +2020-08-07 22:00:00,78.09,28.561,48.074,29.535 +2020-08-07 22:15:00,76.09,30.691,48.074,29.535 +2020-08-07 22:30:00,77.97,30.533,48.074,29.535 +2020-08-07 22:45:00,79.31,28.241999999999997,48.074,29.535 +2020-08-07 23:00:00,74.19,27.438000000000002,41.306999999999995,29.535 +2020-08-07 23:15:00,68.5,24.93,41.306999999999995,29.535 +2020-08-07 23:30:00,66.0,22.58,41.306999999999995,29.535 +2020-08-07 23:45:00,65.38,21.570999999999998,41.306999999999995,29.535 +2020-08-08 00:00:00,66.74,17.496,40.227,29.423000000000002 +2020-08-08 00:15:00,69.29,18.078,40.227,29.423000000000002 +2020-08-08 00:30:00,68.8,16.746,40.227,29.423000000000002 +2020-08-08 00:45:00,63.95,16.6,40.227,29.423000000000002 +2020-08-08 01:00:00,66.72,16.363,36.303000000000004,29.423000000000002 +2020-08-08 01:15:00,67.67,15.626,36.303000000000004,29.423000000000002 +2020-08-08 01:30:00,68.13,14.392999999999999,36.303000000000004,29.423000000000002 +2020-08-08 01:45:00,65.03,15.319,36.303000000000004,29.423000000000002 +2020-08-08 02:00:00,64.36,15.154000000000002,33.849000000000004,29.423000000000002 +2020-08-08 02:15:00,66.91,13.402000000000001,33.849000000000004,29.423000000000002 +2020-08-08 02:30:00,66.76,14.997,33.849000000000004,29.423000000000002 +2020-08-08 02:45:00,63.89,15.75,33.849000000000004,29.423000000000002 +2020-08-08 03:00:00,58.71,15.923,33.149,29.423000000000002 +2020-08-08 03:15:00,64.73,13.921,33.149,29.423000000000002 +2020-08-08 03:30:00,67.22,13.64,33.149,29.423000000000002 +2020-08-08 03:45:00,67.03,15.345,33.149,29.423000000000002 +2020-08-08 04:00:00,65.26,17.557000000000002,32.501,29.423000000000002 +2020-08-08 04:15:00,60.78,20.284000000000002,32.501,29.423000000000002 +2020-08-08 04:30:00,63.06,17.284000000000002,32.501,29.423000000000002 +2020-08-08 04:45:00,63.74,16.992,32.501,29.423000000000002 +2020-08-08 05:00:00,68.08,20.31,31.648000000000003,29.423000000000002 +2020-08-08 05:15:00,70.17,17.18,31.648000000000003,29.423000000000002 +2020-08-08 05:30:00,69.63,14.745999999999999,31.648000000000003,29.423000000000002 +2020-08-08 05:45:00,69.72,16.029,31.648000000000003,29.423000000000002 +2020-08-08 06:00:00,74.01,25.884,32.552,29.423000000000002 +2020-08-08 06:15:00,76.69,32.289,32.552,29.423000000000002 +2020-08-08 06:30:00,74.92,29.739,32.552,29.423000000000002 +2020-08-08 06:45:00,75.68,29.601,32.552,29.423000000000002 +2020-08-08 07:00:00,78.07,29.214000000000002,35.181999999999995,29.423000000000002 +2020-08-08 07:15:00,77.53,29.912,35.181999999999995,29.423000000000002 +2020-08-08 07:30:00,79.7,27.668000000000003,35.181999999999995,29.423000000000002 +2020-08-08 07:45:00,85.61,28.895,35.181999999999995,29.423000000000002 +2020-08-08 08:00:00,89.39,26.308000000000003,40.35,29.423000000000002 +2020-08-08 08:15:00,89.11,29.252,40.35,29.423000000000002 +2020-08-08 08:30:00,80.69,29.98,40.35,29.423000000000002 +2020-08-08 08:45:00,79.94,32.78,40.35,29.423000000000002 +2020-08-08 09:00:00,81.67,29.186,42.292,29.423000000000002 +2020-08-08 09:15:00,85.15,30.836,42.292,29.423000000000002 +2020-08-08 09:30:00,86.84,33.758,42.292,29.423000000000002 +2020-08-08 09:45:00,85.72,36.493,42.292,29.423000000000002 +2020-08-08 10:00:00,78.03,34.819,40.084,29.423000000000002 +2020-08-08 10:15:00,80.44,36.003,40.084,29.423000000000002 +2020-08-08 10:30:00,87.73,36.022,40.084,29.423000000000002 +2020-08-08 10:45:00,76.01,36.408,40.084,29.423000000000002 +2020-08-08 11:00:00,75.02,34.505,36.966,29.423000000000002 +2020-08-08 11:15:00,71.3,35.515,36.966,29.423000000000002 +2020-08-08 11:30:00,71.44,36.321,36.966,29.423000000000002 +2020-08-08 11:45:00,83.52,36.929,36.966,29.423000000000002 +2020-08-08 12:00:00,78.82,33.196,35.19,29.423000000000002 +2020-08-08 12:15:00,77.58,32.803000000000004,35.19,29.423000000000002 +2020-08-08 12:30:00,68.36,31.677,35.19,29.423000000000002 +2020-08-08 12:45:00,71.92,32.397,35.19,29.423000000000002 +2020-08-08 13:00:00,65.67,31.694000000000003,32.277,29.423000000000002 +2020-08-08 13:15:00,71.96,32.49,32.277,29.423000000000002 +2020-08-08 13:30:00,63.1,31.866,32.277,29.423000000000002 +2020-08-08 13:45:00,64.32,30.926,32.277,29.423000000000002 +2020-08-08 14:00:00,72.95,31.502,31.436999999999998,29.423000000000002 +2020-08-08 14:15:00,65.23,29.944000000000003,31.436999999999998,29.423000000000002 +2020-08-08 14:30:00,63.29,30.256,31.436999999999998,29.423000000000002 +2020-08-08 14:45:00,69.43,30.671999999999997,31.436999999999998,29.423000000000002 +2020-08-08 15:00:00,64.98,32.576,33.493,29.423000000000002 +2020-08-08 15:15:00,62.48,30.843000000000004,33.493,29.423000000000002 +2020-08-08 15:30:00,61.84,29.228,33.493,29.423000000000002 +2020-08-08 15:45:00,64.18,27.535999999999998,33.493,29.423000000000002 +2020-08-08 16:00:00,64.57,31.239,36.593,29.423000000000002 +2020-08-08 16:15:00,66.55,30.691,36.593,29.423000000000002 +2020-08-08 16:30:00,72.26,30.206999999999997,36.593,29.423000000000002 +2020-08-08 16:45:00,72.92,27.033,36.593,29.423000000000002 +2020-08-08 17:00:00,74.06,30.78,42.049,29.423000000000002 +2020-08-08 17:15:00,73.2,29.022,42.049,29.423000000000002 +2020-08-08 17:30:00,75.04,28.235,42.049,29.423000000000002 +2020-08-08 17:45:00,77.03,28.121,42.049,29.423000000000002 +2020-08-08 18:00:00,78.39,32.303000000000004,43.755,29.423000000000002 +2020-08-08 18:15:00,76.69,32.72,43.755,29.423000000000002 +2020-08-08 18:30:00,76.27,32.189,43.755,29.423000000000002 +2020-08-08 18:45:00,76.64,32.038000000000004,43.755,29.423000000000002 +2020-08-08 19:00:00,75.57,32.424,44.492,29.423000000000002 +2020-08-08 19:15:00,72.67,30.984,44.492,29.423000000000002 +2020-08-08 19:30:00,72.39,30.662,44.492,29.423000000000002 +2020-08-08 19:45:00,73.31,30.538,44.492,29.423000000000002 +2020-08-08 20:00:00,75.0,28.638,40.896,29.423000000000002 +2020-08-08 20:15:00,74.88,28.051,40.896,29.423000000000002 +2020-08-08 20:30:00,74.76,27.0,40.896,29.423000000000002 +2020-08-08 20:45:00,74.69,28.18,40.896,29.423000000000002 +2020-08-08 21:00:00,71.99,26.721999999999998,39.056,29.423000000000002 +2020-08-08 21:15:00,71.04,29.015,39.056,29.423000000000002 +2020-08-08 21:30:00,67.87,29.302,39.056,29.423000000000002 +2020-08-08 21:45:00,67.58,29.401,39.056,29.423000000000002 +2020-08-08 22:00:00,63.3,26.502,38.478,29.423000000000002 +2020-08-08 22:15:00,64.97,28.721,38.478,29.423000000000002 +2020-08-08 22:30:00,62.91,27.836,38.478,29.423000000000002 +2020-08-08 22:45:00,62.35,25.795,38.478,29.423000000000002 +2020-08-08 23:00:00,57.64,24.291,32.953,29.423000000000002 +2020-08-08 23:15:00,57.7,22.261999999999997,32.953,29.423000000000002 +2020-08-08 23:30:00,58.28,22.333000000000002,32.953,29.423000000000002 +2020-08-08 23:45:00,58.51,21.79,32.953,29.423000000000002 +2020-08-09 00:00:00,54.08,18.893,28.584,29.423000000000002 +2020-08-09 00:15:00,54.76,18.393,28.584,29.423000000000002 +2020-08-09 00:30:00,54.22,16.949,28.584,29.423000000000002 +2020-08-09 00:45:00,55.07,16.660999999999998,28.584,29.423000000000002 +2020-08-09 01:00:00,51.21,16.673,26.419,29.423000000000002 +2020-08-09 01:15:00,53.23,15.76,26.419,29.423000000000002 +2020-08-09 01:30:00,50.21,14.374,26.419,29.423000000000002 +2020-08-09 01:45:00,52.88,14.954,26.419,29.423000000000002 +2020-08-09 02:00:00,51.33,14.915,25.335,29.423000000000002 +2020-08-09 02:15:00,52.26,13.91,25.335,29.423000000000002 +2020-08-09 02:30:00,51.66,15.61,25.335,29.423000000000002 +2020-08-09 02:45:00,51.22,16.055999999999997,25.335,29.423000000000002 +2020-08-09 03:00:00,51.33,16.819000000000003,24.805,29.423000000000002 +2020-08-09 03:15:00,52.88,15.114,24.805,29.423000000000002 +2020-08-09 03:30:00,52.66,14.052,24.805,29.423000000000002 +2020-08-09 03:45:00,53.13,15.005999999999998,24.805,29.423000000000002 +2020-08-09 04:00:00,53.45,17.209,25.772,29.423000000000002 +2020-08-09 04:15:00,54.38,19.586,25.772,29.423000000000002 +2020-08-09 04:30:00,52.71,17.863,25.772,29.423000000000002 +2020-08-09 04:45:00,52.22,17.111,25.772,29.423000000000002 +2020-08-09 05:00:00,51.09,20.83,25.971999999999998,29.423000000000002 +2020-08-09 05:15:00,51.86,17.137999999999998,25.971999999999998,29.423000000000002 +2020-08-09 05:30:00,51.9,14.347999999999999,25.971999999999998,29.423000000000002 +2020-08-09 05:45:00,52.64,15.338,25.971999999999998,29.423000000000002 +2020-08-09 06:00:00,52.67,22.945,26.026,29.423000000000002 +2020-08-09 06:15:00,53.6,30.255,26.026,29.423000000000002 +2020-08-09 06:30:00,54.27,27.113000000000003,26.026,29.423000000000002 +2020-08-09 06:45:00,55.49,26.105999999999998,26.026,29.423000000000002 +2020-08-09 07:00:00,57.23,25.877,27.396,29.423000000000002 +2020-08-09 07:15:00,57.15,25.078000000000003,27.396,29.423000000000002 +2020-08-09 07:30:00,56.53,24.169,27.396,29.423000000000002 +2020-08-09 07:45:00,56.43,25.428,27.396,29.423000000000002 +2020-08-09 08:00:00,56.12,23.463,30.791999999999998,29.423000000000002 +2020-08-09 08:15:00,57.24,27.535,30.791999999999998,29.423000000000002 +2020-08-09 08:30:00,56.64,28.962,30.791999999999998,29.423000000000002 +2020-08-09 08:45:00,57.8,31.506999999999998,30.791999999999998,29.423000000000002 +2020-08-09 09:00:00,57.9,27.857,32.482,29.423000000000002 +2020-08-09 09:15:00,57.48,28.969,32.482,29.423000000000002 +2020-08-09 09:30:00,53.71,32.31,32.482,29.423000000000002 +2020-08-09 09:45:00,57.49,36.016999999999996,32.482,29.423000000000002 +2020-08-09 10:00:00,58.06,34.648,31.951,29.423000000000002 +2020-08-09 10:15:00,59.54,35.896,31.951,29.423000000000002 +2020-08-09 10:30:00,61.42,36.068000000000005,31.951,29.423000000000002 +2020-08-09 10:45:00,60.84,37.628,31.951,29.423000000000002 +2020-08-09 11:00:00,60.37,35.299,33.619,29.423000000000002 +2020-08-09 11:15:00,61.49,35.853,33.619,29.423000000000002 +2020-08-09 11:30:00,57.13,37.247,33.619,29.423000000000002 +2020-08-09 11:45:00,57.85,38.035,33.619,29.423000000000002 +2020-08-09 12:00:00,53.65,35.400999999999996,30.975,29.423000000000002 +2020-08-09 12:15:00,52.86,34.196999999999996,30.975,29.423000000000002 +2020-08-09 12:30:00,50.62,33.433,30.975,29.423000000000002 +2020-08-09 12:45:00,50.63,33.611999999999995,30.975,29.423000000000002 +2020-08-09 13:00:00,49.19,32.663000000000004,27.956999999999997,29.423000000000002 +2020-08-09 13:15:00,48.43,32.585,27.956999999999997,29.423000000000002 +2020-08-09 13:30:00,48.61,30.886999999999997,27.956999999999997,29.423000000000002 +2020-08-09 13:45:00,49.71,31.119,27.956999999999997,29.423000000000002 +2020-08-09 14:00:00,49.4,32.830999999999996,25.555999999999997,29.423000000000002 +2020-08-09 14:15:00,50.46,31.583000000000002,25.555999999999997,29.423000000000002 +2020-08-09 14:30:00,49.99,30.576,25.555999999999997,29.423000000000002 +2020-08-09 14:45:00,51.47,29.987,25.555999999999997,29.423000000000002 +2020-08-09 15:00:00,52.05,32.154,26.271,29.423000000000002 +2020-08-09 15:15:00,51.23,29.56,26.271,29.423000000000002 +2020-08-09 15:30:00,52.35,27.721999999999998,26.271,29.423000000000002 +2020-08-09 15:45:00,54.8,26.245,26.271,29.423000000000002 +2020-08-09 16:00:00,58.39,28.193,30.369,29.423000000000002 +2020-08-09 16:15:00,59.37,27.954,30.369,29.423000000000002 +2020-08-09 16:30:00,61.94,28.434,30.369,29.423000000000002 +2020-08-09 16:45:00,64.25,25.340999999999998,30.369,29.423000000000002 +2020-08-09 17:00:00,67.55,29.435,38.787,29.423000000000002 +2020-08-09 17:15:00,69.77,29.199,38.787,29.423000000000002 +2020-08-09 17:30:00,74.47,29.183000000000003,38.787,29.423000000000002 +2020-08-09 17:45:00,73.06,29.31,38.787,29.423000000000002 +2020-08-09 18:00:00,76.18,34.126999999999995,41.886,29.423000000000002 +2020-08-09 18:15:00,75.37,34.056,41.886,29.423000000000002 +2020-08-09 18:30:00,78.04,33.457,41.886,29.423000000000002 +2020-08-09 18:45:00,75.37,33.274,41.886,29.423000000000002 +2020-08-09 19:00:00,77.91,35.796,42.91,29.423000000000002 +2020-08-09 19:15:00,76.23,33.253,42.91,29.423000000000002 +2020-08-09 19:30:00,76.04,32.707,42.91,29.423000000000002 +2020-08-09 19:45:00,78.63,32.049,42.91,29.423000000000002 +2020-08-09 20:00:00,79.32,30.315,42.148999999999994,29.423000000000002 +2020-08-09 20:15:00,78.88,29.53,42.148999999999994,29.423000000000002 +2020-08-09 20:30:00,78.51,29.153000000000002,42.148999999999994,29.423000000000002 +2020-08-09 20:45:00,77.97,28.791,42.148999999999994,29.423000000000002 +2020-08-09 21:00:00,76.29,27.416,40.955999999999996,29.423000000000002 +2020-08-09 21:15:00,76.26,29.456999999999997,40.955999999999996,29.423000000000002 +2020-08-09 21:30:00,74.21,29.101,40.955999999999996,29.423000000000002 +2020-08-09 21:45:00,72.91,29.506,40.955999999999996,29.423000000000002 +2020-08-09 22:00:00,68.37,28.61,39.873000000000005,29.423000000000002 +2020-08-09 22:15:00,70.97,29.274,39.873000000000005,29.423000000000002 +2020-08-09 22:30:00,68.0,28.081,39.873000000000005,29.423000000000002 +2020-08-09 22:45:00,68.68,24.886999999999997,39.873000000000005,29.423000000000002 +2020-08-09 23:00:00,64.15,23.305999999999997,35.510999999999996,29.423000000000002 +2020-08-09 23:15:00,65.15,22.361,35.510999999999996,29.423000000000002 +2020-08-09 23:30:00,65.42,21.884,35.510999999999996,29.423000000000002 +2020-08-09 23:45:00,64.78,21.439,35.510999999999996,29.423000000000002 +2020-08-10 00:00:00,64.59,20.146,33.475,29.535 +2020-08-10 00:15:00,67.7,20.188,33.475,29.535 +2020-08-10 00:30:00,67.92,18.373,33.475,29.535 +2020-08-10 00:45:00,66.94,17.753,33.475,29.535 +2020-08-10 01:00:00,60.75,18.12,33.111,29.535 +2020-08-10 01:15:00,62.05,17.266,33.111,29.535 +2020-08-10 01:30:00,61.91,16.230999999999998,33.111,29.535 +2020-08-10 01:45:00,61.67,16.708,33.111,29.535 +2020-08-10 02:00:00,62.03,17.11,32.358000000000004,29.535 +2020-08-10 02:15:00,66.27,15.054,32.358000000000004,29.535 +2020-08-10 02:30:00,69.88,16.866,32.358000000000004,29.535 +2020-08-10 02:45:00,70.55,17.215,32.358000000000004,29.535 +2020-08-10 03:00:00,67.73,18.362000000000002,30.779,29.535 +2020-08-10 03:15:00,64.33,17.243,30.779,29.535 +2020-08-10 03:30:00,68.6,16.858,30.779,29.535 +2020-08-10 03:45:00,68.36,17.41,30.779,29.535 +2020-08-10 04:00:00,72.46,22.284000000000002,31.416,29.535 +2020-08-10 04:15:00,75.4,27.168000000000003,31.416,29.535 +2020-08-10 04:30:00,77.15,24.838,31.416,29.535 +2020-08-10 04:45:00,82.65,24.43,31.416,29.535 +2020-08-10 05:00:00,87.89,34.043,37.221,29.535 +2020-08-10 05:15:00,93.43,38.881,37.221,29.535 +2020-08-10 05:30:00,98.76,34.632,37.221,29.535 +2020-08-10 05:45:00,106.75,33.045,37.221,29.535 +2020-08-10 06:00:00,109.61,31.978,51.891000000000005,29.535 +2020-08-10 06:15:00,110.17,31.636,51.891000000000005,29.535 +2020-08-10 06:30:00,106.16,31.749000000000002,51.891000000000005,29.535 +2020-08-10 06:45:00,105.44,35.194,51.891000000000005,29.535 +2020-08-10 07:00:00,112.69,34.809,62.282,29.535 +2020-08-10 07:15:00,114.13,36.123000000000005,62.282,29.535 +2020-08-10 07:30:00,114.44,34.466,62.282,29.535 +2020-08-10 07:45:00,111.46,36.219,62.282,29.535 +2020-08-10 08:00:00,109.2,32.409,54.102,29.535 +2020-08-10 08:15:00,114.03,35.476,54.102,29.535 +2020-08-10 08:30:00,115.94,36.306999999999995,54.102,29.535 +2020-08-10 08:45:00,113.48,39.326,54.102,29.535 +2020-08-10 09:00:00,109.67,34.673,50.917,29.535 +2020-08-10 09:15:00,113.16,34.354,50.917,29.535 +2020-08-10 09:30:00,114.97,36.866,50.917,29.535 +2020-08-10 09:45:00,114.23,38.284,50.917,29.535 +2020-08-10 10:00:00,110.17,37.372,49.718999999999994,29.535 +2020-08-10 10:15:00,112.96,38.489000000000004,49.718999999999994,29.535 +2020-08-10 10:30:00,113.44,38.289,49.718999999999994,29.535 +2020-08-10 10:45:00,112.68,38.208,49.718999999999994,29.535 +2020-08-10 11:00:00,106.81,36.395,49.833999999999996,29.535 +2020-08-10 11:15:00,101.75,37.046,49.833999999999996,29.535 +2020-08-10 11:30:00,108.76,38.986,49.833999999999996,29.535 +2020-08-10 11:45:00,115.96,40.294000000000004,49.833999999999996,29.535 +2020-08-10 12:00:00,116.04,35.781,47.832,29.535 +2020-08-10 12:15:00,108.93,34.679,47.832,29.535 +2020-08-10 12:30:00,105.17,32.842,47.832,29.535 +2020-08-10 12:45:00,109.13,32.858000000000004,47.832,29.535 +2020-08-10 13:00:00,105.35,32.725,48.03,29.535 +2020-08-10 13:15:00,106.96,31.901999999999997,48.03,29.535 +2020-08-10 13:30:00,112.55,30.421999999999997,48.03,29.535 +2020-08-10 13:45:00,110.89,31.543000000000003,48.03,29.535 +2020-08-10 14:00:00,108.24,32.449,48.157,29.535 +2020-08-10 14:15:00,116.67,31.851,48.157,29.535 +2020-08-10 14:30:00,109.93,30.743000000000002,48.157,29.535 +2020-08-10 14:45:00,100.75,32.195,48.157,29.535 +2020-08-10 15:00:00,102.13,33.843,48.897,29.535 +2020-08-10 15:15:00,101.58,30.81,48.897,29.535 +2020-08-10 15:30:00,103.82,29.811999999999998,48.897,29.535 +2020-08-10 15:45:00,112.32,27.903000000000002,48.897,29.535 +2020-08-10 16:00:00,107.56,30.926,51.446000000000005,29.535 +2020-08-10 16:15:00,110.02,30.826,51.446000000000005,29.535 +2020-08-10 16:30:00,111.09,30.749000000000002,51.446000000000005,29.535 +2020-08-10 16:45:00,111.76,27.815,51.446000000000005,29.535 +2020-08-10 17:00:00,116.67,30.83,57.507,29.535 +2020-08-10 17:15:00,115.62,31.066999999999997,57.507,29.535 +2020-08-10 17:30:00,119.59,30.733,57.507,29.535 +2020-08-10 17:45:00,117.62,30.63,57.507,29.535 +2020-08-10 18:00:00,112.36,34.413000000000004,57.896,29.535 +2020-08-10 18:15:00,111.68,32.756,57.896,29.535 +2020-08-10 18:30:00,111.01,31.386,57.896,29.535 +2020-08-10 18:45:00,118.2,34.199,57.896,29.535 +2020-08-10 19:00:00,115.05,36.61,57.891999999999996,29.535 +2020-08-10 19:15:00,108.14,35.417,57.891999999999996,29.535 +2020-08-10 19:30:00,100.95,34.482,57.891999999999996,29.535 +2020-08-10 19:45:00,107.15,33.301,57.891999999999996,29.535 +2020-08-10 20:00:00,107.38,30.524,64.57300000000001,29.535 +2020-08-10 20:15:00,106.34,31.261,64.57300000000001,29.535 +2020-08-10 20:30:00,101.37,31.505,64.57300000000001,29.535 +2020-08-10 20:45:00,96.58,31.21,64.57300000000001,29.535 +2020-08-10 21:00:00,92.54,29.186,59.431999999999995,29.535 +2020-08-10 21:15:00,98.18,31.721999999999998,59.431999999999995,29.535 +2020-08-10 21:30:00,94.61,31.811,59.431999999999995,29.535 +2020-08-10 21:45:00,89.3,32.016,59.431999999999995,29.535 +2020-08-10 22:00:00,85.65,29.331999999999997,51.519,29.535 +2020-08-10 22:15:00,83.02,31.964000000000002,51.519,29.535 +2020-08-10 22:30:00,84.02,27.245,51.519,29.535 +2020-08-10 22:45:00,86.92,24.348000000000003,51.519,29.535 +2020-08-10 23:00:00,83.27,22.737,44.501000000000005,29.535 +2020-08-10 23:15:00,79.13,20.052,44.501000000000005,29.535 +2020-08-10 23:30:00,77.81,19.378,44.501000000000005,29.535 +2020-08-10 23:45:00,76.11,18.256,44.501000000000005,29.535 +2020-08-11 00:00:00,80.82,18.12,44.522,29.535 +2020-08-11 00:15:00,81.42,18.89,44.522,29.535 +2020-08-11 00:30:00,79.26,17.834,44.522,29.535 +2020-08-11 00:45:00,77.23,18.055999999999997,44.522,29.535 +2020-08-11 01:00:00,77.88,17.902,41.441,29.535 +2020-08-11 01:15:00,81.19,17.195,41.441,29.535 +2020-08-11 01:30:00,80.87,16.033,41.441,29.535 +2020-08-11 01:45:00,77.52,15.99,41.441,29.535 +2020-08-11 02:00:00,76.14,15.933,40.203,29.535 +2020-08-11 02:15:00,80.33,15.019,40.203,29.535 +2020-08-11 02:30:00,80.22,16.476,40.203,29.535 +2020-08-11 02:45:00,76.52,17.139,40.203,29.535 +2020-08-11 03:00:00,76.12,17.828,39.536,29.535 +2020-08-11 03:15:00,81.42,17.687,39.536,29.535 +2020-08-11 03:30:00,82.68,17.243,39.536,29.535 +2020-08-11 03:45:00,81.38,16.709,39.536,29.535 +2020-08-11 04:00:00,84.21,20.386,40.759,29.535 +2020-08-11 04:15:00,83.25,25.311,40.759,29.535 +2020-08-11 04:30:00,87.0,22.891,40.759,29.535 +2020-08-11 04:45:00,96.1,22.866999999999997,40.759,29.535 +2020-08-11 05:00:00,103.35,33.692,43.623999999999995,29.535 +2020-08-11 05:15:00,104.96,39.169000000000004,43.623999999999995,29.535 +2020-08-11 05:30:00,101.93,35.208,43.623999999999995,29.535 +2020-08-11 05:45:00,103.66,32.900999999999996,43.623999999999995,29.535 +2020-08-11 06:00:00,107.81,32.9,52.684,29.535 +2020-08-11 06:15:00,115.41,32.653,52.684,29.535 +2020-08-11 06:30:00,119.45,32.504,52.684,29.535 +2020-08-11 06:45:00,121.63,35.13,52.684,29.535 +2020-08-11 07:00:00,117.33,34.907,62.676,29.535 +2020-08-11 07:15:00,117.63,36.001,62.676,29.535 +2020-08-11 07:30:00,120.47,34.424,62.676,29.535 +2020-08-11 07:45:00,121.97,35.217,62.676,29.535 +2020-08-11 08:00:00,118.67,31.328000000000003,56.161,29.535 +2020-08-11 08:15:00,115.82,34.021,56.161,29.535 +2020-08-11 08:30:00,109.61,35.024,56.161,29.535 +2020-08-11 08:45:00,108.39,37.145,56.161,29.535 +2020-08-11 09:00:00,118.63,32.913000000000004,52.132,29.535 +2020-08-11 09:15:00,124.0,32.294000000000004,52.132,29.535 +2020-08-11 09:30:00,120.89,35.407,52.132,29.535 +2020-08-11 09:45:00,113.74,38.154,52.132,29.535 +2020-08-11 10:00:00,115.04,35.943000000000005,51.032,29.535 +2020-08-11 10:15:00,111.74,37.010999999999996,51.032,29.535 +2020-08-11 10:30:00,117.81,36.813,51.032,29.535 +2020-08-11 10:45:00,120.03,37.7,51.032,29.535 +2020-08-11 11:00:00,116.21,35.745,51.085,29.535 +2020-08-11 11:15:00,109.85,36.827,51.085,29.535 +2020-08-11 11:30:00,112.41,37.735,51.085,29.535 +2020-08-11 11:45:00,117.13,38.514,51.085,29.535 +2020-08-11 12:00:00,121.63,33.95,49.049,29.535 +2020-08-11 12:15:00,122.61,33.218,49.049,29.535 +2020-08-11 12:30:00,116.41,32.172,49.049,29.535 +2020-08-11 12:45:00,106.88,32.898,49.049,29.535 +2020-08-11 13:00:00,103.94,32.428000000000004,49.722,29.535 +2020-08-11 13:15:00,106.12,33.428000000000004,49.722,29.535 +2020-08-11 13:30:00,107.33,31.793000000000003,49.722,29.535 +2020-08-11 13:45:00,105.9,31.94,49.722,29.535 +2020-08-11 14:00:00,104.55,33.245,49.565,29.535 +2020-08-11 14:15:00,111.12,32.436,49.565,29.535 +2020-08-11 14:30:00,106.63,31.599,49.565,29.535 +2020-08-11 14:45:00,112.83,32.278,49.565,29.535 +2020-08-11 15:00:00,106.44,33.777,51.108999999999995,29.535 +2020-08-11 15:15:00,107.53,31.633000000000003,51.108999999999995,29.535 +2020-08-11 15:30:00,111.68,30.412,51.108999999999995,29.535 +2020-08-11 15:45:00,112.97,28.89,51.108999999999995,29.535 +2020-08-11 16:00:00,110.35,31.155,52.725,29.535 +2020-08-11 16:15:00,106.75,31.103,52.725,29.535 +2020-08-11 16:30:00,107.28,30.604,52.725,29.535 +2020-08-11 16:45:00,113.29,28.383000000000003,52.725,29.535 +2020-08-11 17:00:00,120.26,31.531999999999996,58.031000000000006,29.535 +2020-08-11 17:15:00,116.61,32.205,58.031000000000006,29.535 +2020-08-11 17:30:00,113.1,31.391,58.031000000000006,29.535 +2020-08-11 17:45:00,115.09,31.000999999999998,58.031000000000006,29.535 +2020-08-11 18:00:00,111.56,33.868,58.338,29.535 +2020-08-11 18:15:00,114.45,33.714,58.338,29.535 +2020-08-11 18:30:00,115.07,32.123000000000005,58.338,29.535 +2020-08-11 18:45:00,115.29,34.679,58.338,29.535 +2020-08-11 19:00:00,107.15,35.964,58.464,29.535 +2020-08-11 19:15:00,108.56,34.964,58.464,29.535 +2020-08-11 19:30:00,109.56,33.873000000000005,58.464,29.535 +2020-08-11 19:45:00,111.07,33.014,58.464,29.535 +2020-08-11 20:00:00,104.95,30.608,63.708,29.535 +2020-08-11 20:15:00,102.1,30.0,63.708,29.535 +2020-08-11 20:30:00,97.33,30.191999999999997,63.708,29.535 +2020-08-11 20:45:00,97.81,30.324,63.708,29.535 +2020-08-11 21:00:00,95.02,29.195,57.06399999999999,29.535 +2020-08-11 21:15:00,98.79,30.244,57.06399999999999,29.535 +2020-08-11 21:30:00,96.16,30.55,57.06399999999999,29.535 +2020-08-11 21:45:00,94.75,30.9,57.06399999999999,29.535 +2020-08-11 22:00:00,85.73,28.247,52.831,29.535 +2020-08-11 22:15:00,90.12,30.564,52.831,29.535 +2020-08-11 22:30:00,87.77,26.09,52.831,29.535 +2020-08-11 22:45:00,86.92,23.166999999999998,52.831,29.535 +2020-08-11 23:00:00,83.18,20.858,44.717,29.535 +2020-08-11 23:15:00,84.73,19.727,44.717,29.535 +2020-08-11 23:30:00,83.67,19.087,44.717,29.535 +2020-08-11 23:45:00,76.9,18.173,44.717,29.535 +2020-08-12 00:00:00,72.5,18.233,41.263000000000005,29.535 +2020-08-12 00:15:00,78.82,19.003,41.263000000000005,29.535 +2020-08-12 00:30:00,80.76,17.951,41.263000000000005,29.535 +2020-08-12 00:45:00,81.39,18.18,41.263000000000005,29.535 +2020-08-12 01:00:00,78.93,18.011,38.448,29.535 +2020-08-12 01:15:00,81.15,17.312,38.448,29.535 +2020-08-12 01:30:00,80.17,16.162,38.448,29.535 +2020-08-12 01:45:00,77.33,16.117,38.448,29.535 +2020-08-12 02:00:00,73.77,16.063,36.471,29.535 +2020-08-12 02:15:00,73.65,15.169,36.471,29.535 +2020-08-12 02:30:00,80.17,16.605,36.471,29.535 +2020-08-12 02:45:00,80.73,17.266,36.471,29.535 +2020-08-12 03:00:00,81.84,17.944000000000003,36.042,29.535 +2020-08-12 03:15:00,75.9,17.819000000000003,36.042,29.535 +2020-08-12 03:30:00,82.63,17.381,36.042,29.535 +2020-08-12 03:45:00,85.64,16.847,36.042,29.535 +2020-08-12 04:00:00,87.96,20.533,36.705,29.535 +2020-08-12 04:15:00,83.3,25.464000000000002,36.705,29.535 +2020-08-12 04:30:00,94.27,23.048000000000002,36.705,29.535 +2020-08-12 04:45:00,96.6,23.026,36.705,29.535 +2020-08-12 05:00:00,101.67,33.89,39.716,29.535 +2020-08-12 05:15:00,102.94,39.406,39.716,29.535 +2020-08-12 05:30:00,106.43,35.455,39.716,29.535 +2020-08-12 05:45:00,111.7,33.123000000000005,39.716,29.535 +2020-08-12 06:00:00,115.63,33.095,52.756,29.535 +2020-08-12 06:15:00,114.21,32.867,52.756,29.535 +2020-08-12 06:30:00,115.31,32.718,52.756,29.535 +2020-08-12 06:45:00,119.39,35.351,52.756,29.535 +2020-08-12 07:00:00,120.77,35.128,65.977,29.535 +2020-08-12 07:15:00,115.6,36.236999999999995,65.977,29.535 +2020-08-12 07:30:00,114.05,34.679,65.977,29.535 +2020-08-12 07:45:00,117.2,35.479,65.977,29.535 +2020-08-12 08:00:00,118.01,31.593000000000004,57.927,29.535 +2020-08-12 08:15:00,113.31,34.262,57.927,29.535 +2020-08-12 08:30:00,111.75,35.255,57.927,29.535 +2020-08-12 08:45:00,110.43,37.361999999999995,57.927,29.535 +2020-08-12 09:00:00,116.17,33.135,54.86,29.535 +2020-08-12 09:15:00,116.01,32.508,54.86,29.535 +2020-08-12 09:30:00,116.37,35.607,54.86,29.535 +2020-08-12 09:45:00,112.57,38.335,54.86,29.535 +2020-08-12 10:00:00,113.53,36.125,52.818000000000005,29.535 +2020-08-12 10:15:00,118.87,37.175,52.818000000000005,29.535 +2020-08-12 10:30:00,114.46,36.969,52.818000000000005,29.535 +2020-08-12 10:45:00,110.49,37.849000000000004,52.818000000000005,29.535 +2020-08-12 11:00:00,116.41,35.904,52.937,29.535 +2020-08-12 11:15:00,112.99,36.979,52.937,29.535 +2020-08-12 11:30:00,106.78,37.882,52.937,29.535 +2020-08-12 11:45:00,114.37,38.647,52.937,29.535 +2020-08-12 12:00:00,116.44,34.079,50.826,29.535 +2020-08-12 12:15:00,114.58,33.338,50.826,29.535 +2020-08-12 12:30:00,119.4,32.302,50.826,29.535 +2020-08-12 12:45:00,114.81,33.016999999999996,50.826,29.535 +2020-08-12 13:00:00,111.49,32.529,50.556000000000004,29.535 +2020-08-12 13:15:00,104.65,33.516999999999996,50.556000000000004,29.535 +2020-08-12 13:30:00,100.7,31.879,50.556000000000004,29.535 +2020-08-12 13:45:00,102.39,32.037,50.556000000000004,29.535 +2020-08-12 14:00:00,103.75,33.325,51.188,29.535 +2020-08-12 14:15:00,103.76,32.522,51.188,29.535 +2020-08-12 14:30:00,107.42,31.695999999999998,51.188,29.535 +2020-08-12 14:45:00,105.01,32.378,51.188,29.535 +2020-08-12 15:00:00,100.4,33.842,52.976000000000006,29.535 +2020-08-12 15:15:00,103.59,31.701999999999998,52.976000000000006,29.535 +2020-08-12 15:30:00,101.61,30.491,52.976000000000006,29.535 +2020-08-12 15:45:00,103.92,28.971999999999998,52.976000000000006,29.535 +2020-08-12 16:00:00,102.77,31.217,55.463,29.535 +2020-08-12 16:15:00,107.41,31.173000000000002,55.463,29.535 +2020-08-12 16:30:00,108.87,30.682,55.463,29.535 +2020-08-12 16:45:00,109.71,28.494,55.463,29.535 +2020-08-12 17:00:00,108.65,31.62,59.435,29.535 +2020-08-12 17:15:00,108.44,32.32,59.435,29.535 +2020-08-12 17:30:00,108.62,31.518,59.435,29.535 +2020-08-12 17:45:00,109.31,31.159000000000002,59.435,29.535 +2020-08-12 18:00:00,109.78,34.02,61.387,29.535 +2020-08-12 18:15:00,107.43,33.876,61.387,29.535 +2020-08-12 18:30:00,107.41,32.295,61.387,29.535 +2020-08-12 18:45:00,106.93,34.85,61.387,29.535 +2020-08-12 19:00:00,105.24,36.139,63.323,29.535 +2020-08-12 19:15:00,101.29,35.138000000000005,63.323,29.535 +2020-08-12 19:30:00,101.31,34.048,63.323,29.535 +2020-08-12 19:45:00,105.17,33.194,63.323,29.535 +2020-08-12 20:00:00,102.58,30.789,69.083,29.535 +2020-08-12 20:15:00,100.04,30.183000000000003,69.083,29.535 +2020-08-12 20:30:00,99.46,30.362,69.083,29.535 +2020-08-12 20:45:00,97.18,30.468000000000004,69.083,29.535 +2020-08-12 21:00:00,93.2,29.343000000000004,59.957,29.535 +2020-08-12 21:15:00,90.83,30.383000000000003,59.957,29.535 +2020-08-12 21:30:00,86.78,30.683000000000003,59.957,29.535 +2020-08-12 21:45:00,87.17,31.006,59.957,29.535 +2020-08-12 22:00:00,81.89,28.338,53.821000000000005,29.535 +2020-08-12 22:15:00,83.57,30.643,53.821000000000005,29.535 +2020-08-12 22:30:00,80.19,26.136999999999997,53.821000000000005,29.535 +2020-08-12 22:45:00,79.2,23.215,53.821000000000005,29.535 +2020-08-12 23:00:00,76.03,20.941,45.458,29.535 +2020-08-12 23:15:00,75.7,19.805,45.458,29.535 +2020-08-12 23:30:00,76.14,19.178,45.458,29.535 +2020-08-12 23:45:00,76.61,18.267,45.458,29.535 +2020-08-13 00:00:00,72.42,18.349,40.36,29.535 +2020-08-13 00:15:00,73.49,19.119,40.36,29.535 +2020-08-13 00:30:00,73.4,18.072,40.36,29.535 +2020-08-13 00:45:00,73.58,18.308,40.36,29.535 +2020-08-13 01:00:00,73.1,18.123,38.552,29.535 +2020-08-13 01:15:00,73.24,17.432000000000002,38.552,29.535 +2020-08-13 01:30:00,72.48,16.293,38.552,29.535 +2020-08-13 01:45:00,73.22,16.247,38.552,29.535 +2020-08-13 02:00:00,71.87,16.195999999999998,36.895,29.535 +2020-08-13 02:15:00,75.03,15.322000000000001,36.895,29.535 +2020-08-13 02:30:00,78.27,16.736,36.895,29.535 +2020-08-13 02:45:00,80.01,17.394000000000002,36.895,29.535 +2020-08-13 03:00:00,77.38,18.062,36.565,29.535 +2020-08-13 03:15:00,72.6,17.952,36.565,29.535 +2020-08-13 03:30:00,74.33,17.521,36.565,29.535 +2020-08-13 03:45:00,79.52,16.986,36.565,29.535 +2020-08-13 04:00:00,85.0,20.684,37.263000000000005,29.535 +2020-08-13 04:15:00,91.08,25.62,37.263000000000005,29.535 +2020-08-13 04:30:00,94.95,23.21,37.263000000000005,29.535 +2020-08-13 04:45:00,93.59,23.19,37.263000000000005,29.535 +2020-08-13 05:00:00,98.02,34.096,40.412,29.535 +2020-08-13 05:15:00,100.02,39.655,40.412,29.535 +2020-08-13 05:30:00,106.59,35.711,40.412,29.535 +2020-08-13 05:45:00,112.6,33.354,40.412,29.535 +2020-08-13 06:00:00,116.48,33.299,49.825,29.535 +2020-08-13 06:15:00,113.4,33.088,49.825,29.535 +2020-08-13 06:30:00,111.91,32.939,49.825,29.535 +2020-08-13 06:45:00,111.96,35.58,49.825,29.535 +2020-08-13 07:00:00,114.86,35.355,61.082,29.535 +2020-08-13 07:15:00,116.59,36.48,61.082,29.535 +2020-08-13 07:30:00,119.63,34.942,61.082,29.535 +2020-08-13 07:45:00,118.33,35.748000000000005,61.082,29.535 +2020-08-13 08:00:00,111.91,31.864,53.961999999999996,29.535 +2020-08-13 08:15:00,110.29,34.508,53.961999999999996,29.535 +2020-08-13 08:30:00,109.63,35.491,53.961999999999996,29.535 +2020-08-13 08:45:00,114.21,37.586,53.961999999999996,29.535 +2020-08-13 09:00:00,116.43,33.364000000000004,50.06100000000001,29.535 +2020-08-13 09:15:00,117.8,32.728,50.06100000000001,29.535 +2020-08-13 09:30:00,114.9,35.812,50.06100000000001,29.535 +2020-08-13 09:45:00,115.89,38.521,50.06100000000001,29.535 +2020-08-13 10:00:00,115.79,36.312,47.68,29.535 +2020-08-13 10:15:00,109.66,37.342,47.68,29.535 +2020-08-13 10:30:00,115.53,37.13,47.68,29.535 +2020-08-13 10:45:00,114.31,38.004,47.68,29.535 +2020-08-13 11:00:00,112.62,36.067,45.93899999999999,29.535 +2020-08-13 11:15:00,112.44,37.135999999999996,45.93899999999999,29.535 +2020-08-13 11:30:00,112.77,38.033,45.93899999999999,29.535 +2020-08-13 11:45:00,109.6,38.785,45.93899999999999,29.535 +2020-08-13 12:00:00,110.46,34.21,43.648999999999994,29.535 +2020-08-13 12:15:00,110.53,33.461,43.648999999999994,29.535 +2020-08-13 12:30:00,110.63,32.435,43.648999999999994,29.535 +2020-08-13 12:45:00,107.32,33.141,43.648999999999994,29.535 +2020-08-13 13:00:00,111.0,32.635,42.801,29.535 +2020-08-13 13:15:00,110.62,33.609,42.801,29.535 +2020-08-13 13:30:00,110.8,31.969,42.801,29.535 +2020-08-13 13:45:00,106.12,32.137,42.801,29.535 +2020-08-13 14:00:00,106.62,33.408,43.24,29.535 +2020-08-13 14:15:00,110.75,32.61,43.24,29.535 +2020-08-13 14:30:00,108.44,31.795,43.24,29.535 +2020-08-13 14:45:00,108.43,32.482,43.24,29.535 +2020-08-13 15:00:00,100.47,33.91,45.04600000000001,29.535 +2020-08-13 15:15:00,100.61,31.774,45.04600000000001,29.535 +2020-08-13 15:30:00,104.49,30.573,45.04600000000001,29.535 +2020-08-13 15:45:00,105.82,29.055999999999997,45.04600000000001,29.535 +2020-08-13 16:00:00,111.96,31.281999999999996,46.568000000000005,29.535 +2020-08-13 16:15:00,112.43,31.245,46.568000000000005,29.535 +2020-08-13 16:30:00,113.32,30.761,46.568000000000005,29.535 +2020-08-13 16:45:00,111.17,28.608,46.568000000000005,29.535 +2020-08-13 17:00:00,120.16,31.709,50.618,29.535 +2020-08-13 17:15:00,119.4,32.437,50.618,29.535 +2020-08-13 17:30:00,121.21,31.648000000000003,50.618,29.535 +2020-08-13 17:45:00,113.4,31.320999999999998,50.618,29.535 +2020-08-13 18:00:00,115.18,34.176,52.806999999999995,29.535 +2020-08-13 18:15:00,116.91,34.041,52.806999999999995,29.535 +2020-08-13 18:30:00,119.58,32.469,52.806999999999995,29.535 +2020-08-13 18:45:00,114.31,35.025,52.806999999999995,29.535 +2020-08-13 19:00:00,107.96,36.318000000000005,53.464,29.535 +2020-08-13 19:15:00,104.43,35.316,53.464,29.535 +2020-08-13 19:30:00,104.41,34.227,53.464,29.535 +2020-08-13 19:45:00,110.75,33.378,53.464,29.535 +2020-08-13 20:00:00,110.35,30.975,56.753,29.535 +2020-08-13 20:15:00,104.81,30.371,56.753,29.535 +2020-08-13 20:30:00,100.88,30.537,56.753,29.535 +2020-08-13 20:45:00,98.91,30.616,56.753,29.535 +2020-08-13 21:00:00,94.78,29.493000000000002,52.506,29.535 +2020-08-13 21:15:00,93.57,30.526,52.506,29.535 +2020-08-13 21:30:00,89.55,30.82,52.506,29.535 +2020-08-13 21:45:00,89.48,31.116999999999997,52.506,29.535 +2020-08-13 22:00:00,84.47,28.432,48.163000000000004,29.535 +2020-08-13 22:15:00,85.66,30.724,48.163000000000004,29.535 +2020-08-13 22:30:00,83.52,26.188000000000002,48.163000000000004,29.535 +2020-08-13 22:45:00,82.68,23.265,48.163000000000004,29.535 +2020-08-13 23:00:00,78.63,21.028000000000002,42.379,29.535 +2020-08-13 23:15:00,79.67,19.885,42.379,29.535 +2020-08-13 23:30:00,78.45,19.271,42.379,29.535 +2020-08-13 23:45:00,79.55,18.363,42.379,29.535 +2020-08-14 00:00:00,77.38,16.802,38.505,29.535 +2020-08-14 00:15:00,77.2,17.767,38.505,29.535 +2020-08-14 00:30:00,76.42,16.995,38.505,29.535 +2020-08-14 00:45:00,77.01,17.641,38.505,29.535 +2020-08-14 01:00:00,75.04,17.09,37.004,29.535 +2020-08-14 01:15:00,76.59,15.772,37.004,29.535 +2020-08-14 01:30:00,76.72,15.347000000000001,37.004,29.535 +2020-08-14 01:45:00,76.98,15.050999999999998,37.004,29.535 +2020-08-14 02:00:00,75.7,15.899000000000001,36.098,29.535 +2020-08-14 02:15:00,76.98,15.003,36.098,29.535 +2020-08-14 02:30:00,76.36,17.160999999999998,36.098,29.535 +2020-08-14 02:45:00,77.05,17.155,36.098,29.535 +2020-08-14 03:00:00,76.85,18.619,36.561,29.535 +2020-08-14 03:15:00,76.89,17.305,36.561,29.535 +2020-08-14 03:30:00,77.81,16.651,36.561,29.535 +2020-08-14 03:45:00,81.89,16.94,36.561,29.535 +2020-08-14 04:00:00,84.07,20.77,37.355,29.535 +2020-08-14 04:15:00,91.01,24.226,37.355,29.535 +2020-08-14 04:30:00,96.53,22.723000000000003,37.355,29.535 +2020-08-14 04:45:00,98.47,22.149,37.355,29.535 +2020-08-14 05:00:00,97.75,32.713,40.285,29.535 +2020-08-14 05:15:00,106.42,39.152,40.285,29.535 +2020-08-14 05:30:00,111.47,35.349000000000004,40.285,29.535 +2020-08-14 05:45:00,114.34,32.543,40.285,29.535 +2020-08-14 06:00:00,117.13,32.652,52.378,29.535 +2020-08-14 06:15:00,115.21,32.692,52.378,29.535 +2020-08-14 06:30:00,119.17,32.536,52.378,29.535 +2020-08-14 06:45:00,121.31,34.979,52.378,29.535 +2020-08-14 07:00:00,122.16,35.415,60.891999999999996,29.535 +2020-08-14 07:15:00,114.97,37.369,60.891999999999996,29.535 +2020-08-14 07:30:00,119.05,33.976,60.891999999999996,29.535 +2020-08-14 07:45:00,119.76,34.639,60.891999999999996,29.535 +2020-08-14 08:00:00,121.92,31.587,53.652,29.535 +2020-08-14 08:15:00,117.57,34.885,53.652,29.535 +2020-08-14 08:30:00,116.45,35.696,53.652,29.535 +2020-08-14 08:45:00,119.87,37.746,53.652,29.535 +2020-08-14 09:00:00,122.22,31.248,51.456,29.535 +2020-08-14 09:15:00,121.31,32.442,51.456,29.535 +2020-08-14 09:30:00,117.74,34.867,51.456,29.535 +2020-08-14 09:45:00,114.72,37.943000000000005,51.456,29.535 +2020-08-14 10:00:00,116.88,35.665,49.4,29.535 +2020-08-14 10:15:00,122.22,36.4,49.4,29.535 +2020-08-14 10:30:00,123.37,36.731,49.4,29.535 +2020-08-14 10:45:00,118.57,37.541,49.4,29.535 +2020-08-14 11:00:00,116.16,35.859,48.773,29.535 +2020-08-14 11:15:00,114.64,35.923,48.773,29.535 +2020-08-14 11:30:00,114.36,36.323,48.773,29.535 +2020-08-14 11:45:00,109.72,36.116,48.773,29.535 +2020-08-14 12:00:00,109.46,31.871,46.033,29.535 +2020-08-14 12:15:00,106.86,30.65,46.033,29.535 +2020-08-14 12:30:00,104.86,29.738000000000003,46.033,29.535 +2020-08-14 12:45:00,104.8,29.616,46.033,29.535 +2020-08-14 13:00:00,101.33,29.599,44.38399999999999,29.535 +2020-08-14 13:15:00,101.51,30.674,44.38399999999999,29.535 +2020-08-14 13:30:00,101.84,29.811999999999998,44.38399999999999,29.535 +2020-08-14 13:45:00,104.46,30.298000000000002,44.38399999999999,29.535 +2020-08-14 14:00:00,98.79,30.854,43.162,29.535 +2020-08-14 14:15:00,100.52,30.504,43.162,29.535 +2020-08-14 14:30:00,104.56,31.139,43.162,29.535 +2020-08-14 14:45:00,107.41,31.128,43.162,29.535 +2020-08-14 15:00:00,107.75,32.481,44.91,29.535 +2020-08-14 15:15:00,107.7,30.148000000000003,44.91,29.535 +2020-08-14 15:30:00,103.14,28.518,44.91,29.535 +2020-08-14 15:45:00,104.08,27.74,44.91,29.535 +2020-08-14 16:00:00,108.58,29.195,47.489,29.535 +2020-08-14 16:15:00,109.61,29.625999999999998,47.489,29.535 +2020-08-14 16:30:00,105.67,28.965999999999998,47.489,29.535 +2020-08-14 16:45:00,106.48,26.09,47.489,29.535 +2020-08-14 17:00:00,106.27,30.831999999999997,52.047,29.535 +2020-08-14 17:15:00,112.92,31.45,52.047,29.535 +2020-08-14 17:30:00,117.17,30.857,52.047,29.535 +2020-08-14 17:45:00,114.87,30.416999999999998,52.047,29.535 +2020-08-14 18:00:00,113.07,33.241,53.306000000000004,29.535 +2020-08-14 18:15:00,108.05,32.227,53.306000000000004,29.535 +2020-08-14 18:30:00,110.51,30.538,53.306000000000004,29.535 +2020-08-14 18:45:00,114.14,33.5,53.306000000000004,29.535 +2020-08-14 19:00:00,111.52,35.571,53.516000000000005,29.535 +2020-08-14 19:15:00,103.77,35.055,53.516000000000005,29.535 +2020-08-14 19:30:00,100.59,34.052,53.516000000000005,29.535 +2020-08-14 19:45:00,102.62,32.256,53.516000000000005,29.535 +2020-08-14 20:00:00,101.7,29.701999999999998,57.88,29.535 +2020-08-14 20:15:00,100.14,29.865,57.88,29.535 +2020-08-14 20:30:00,104.22,29.55,57.88,29.535 +2020-08-14 20:45:00,102.33,28.785999999999998,57.88,29.535 +2020-08-14 21:00:00,93.47,28.896,53.32,29.535 +2020-08-14 21:15:00,89.73,31.496,53.32,29.535 +2020-08-14 21:30:00,84.2,31.639,53.32,29.535 +2020-08-14 21:45:00,90.61,32.071999999999996,53.32,29.535 +2020-08-14 22:00:00,87.69,29.177,48.074,29.535 +2020-08-14 22:15:00,85.9,31.226999999999997,48.074,29.535 +2020-08-14 22:30:00,80.19,30.853,48.074,29.535 +2020-08-14 22:45:00,79.07,28.558000000000003,48.074,29.535 +2020-08-14 23:00:00,72.75,27.998,41.306999999999995,29.535 +2020-08-14 23:15:00,73.35,25.458000000000002,41.306999999999995,29.535 +2020-08-14 23:30:00,77.1,23.195,41.306999999999995,29.535 +2020-08-14 23:45:00,80.37,22.21,41.306999999999995,29.535 +2020-08-15 00:00:00,78.66,18.289,40.227,29.423000000000002 +2020-08-15 00:15:00,78.01,18.867,40.227,29.423000000000002 +2020-08-15 00:30:00,77.59,17.567,40.227,29.423000000000002 +2020-08-15 00:45:00,78.28,17.474,40.227,29.423000000000002 +2020-08-15 01:00:00,75.62,17.129,36.303000000000004,29.423000000000002 +2020-08-15 01:15:00,73.05,16.448,36.303000000000004,29.423000000000002 +2020-08-15 01:30:00,72.17,15.292,36.303000000000004,29.423000000000002 +2020-08-15 01:45:00,76.06,16.205,36.303000000000004,29.423000000000002 +2020-08-15 02:00:00,74.7,16.063,33.849000000000004,29.423000000000002 +2020-08-15 02:15:00,74.19,14.452,33.849000000000004,29.423000000000002 +2020-08-15 02:30:00,72.6,15.894,33.849000000000004,29.423000000000002 +2020-08-15 02:45:00,74.73,16.635,33.849000000000004,29.423000000000002 +2020-08-15 03:00:00,74.32,16.73,33.149,29.423000000000002 +2020-08-15 03:15:00,71.83,14.837,33.149,29.423000000000002 +2020-08-15 03:30:00,66.95,14.600999999999999,33.149,29.423000000000002 +2020-08-15 03:45:00,67.51,16.303,33.149,29.423000000000002 +2020-08-15 04:00:00,68.28,18.586,32.501,29.423000000000002 +2020-08-15 04:15:00,68.18,21.346999999999998,32.501,29.423000000000002 +2020-08-15 04:30:00,67.99,18.38,32.501,29.423000000000002 +2020-08-15 04:45:00,69.92,18.101,32.501,29.423000000000002 +2020-08-15 05:00:00,68.61,21.697,31.648000000000003,29.423000000000002 +2020-08-15 05:15:00,71.82,18.840999999999998,31.648000000000003,29.423000000000002 +2020-08-15 05:30:00,69.58,16.473,31.648000000000003,29.423000000000002 +2020-08-15 05:45:00,70.22,17.582,31.648000000000003,29.423000000000002 +2020-08-15 06:00:00,73.17,27.255,32.552,29.423000000000002 +2020-08-15 06:15:00,75.29,33.784,32.552,29.423000000000002 +2020-08-15 06:30:00,78.84,31.236,32.552,29.423000000000002 +2020-08-15 06:45:00,86.96,31.153000000000002,32.552,29.423000000000002 +2020-08-15 07:00:00,88.59,30.756,35.181999999999995,29.423000000000002 +2020-08-15 07:15:00,88.61,31.564,35.181999999999995,29.423000000000002 +2020-08-15 07:30:00,88.1,29.455,35.181999999999995,29.423000000000002 +2020-08-15 07:45:00,94.77,30.729,35.181999999999995,29.423000000000002 +2020-08-15 08:00:00,96.75,28.160999999999998,40.35,29.423000000000002 +2020-08-15 08:15:00,93.18,30.936999999999998,40.35,29.423000000000002 +2020-08-15 08:30:00,93.98,31.596,40.35,29.423000000000002 +2020-08-15 08:45:00,95.48,34.302,40.35,29.423000000000002 +2020-08-15 09:00:00,93.38,30.744,42.292,29.423000000000002 +2020-08-15 09:15:00,91.59,32.339,42.292,29.423000000000002 +2020-08-15 09:30:00,92.73,35.157,42.292,29.423000000000002 +2020-08-15 09:45:00,96.95,37.759,42.292,29.423000000000002 +2020-08-15 10:00:00,100.16,36.094,40.084,29.423000000000002 +2020-08-15 10:15:00,101.04,37.143,40.084,29.423000000000002 +2020-08-15 10:30:00,99.67,37.117,40.084,29.423000000000002 +2020-08-15 10:45:00,99.38,37.459,40.084,29.423000000000002 +2020-08-15 11:00:00,95.9,35.616,36.966,29.423000000000002 +2020-08-15 11:15:00,93.51,36.58,36.966,29.423000000000002 +2020-08-15 11:30:00,89.93,37.348,36.966,29.423000000000002 +2020-08-15 11:45:00,86.8,37.865,36.966,29.423000000000002 +2020-08-15 12:00:00,82.81,34.096,35.19,29.423000000000002 +2020-08-15 12:15:00,81.87,33.643,35.19,29.423000000000002 +2020-08-15 12:30:00,80.39,32.586999999999996,35.19,29.423000000000002 +2020-08-15 12:45:00,72.88,33.234,35.19,29.423000000000002 +2020-08-15 13:00:00,68.23,32.400999999999996,32.277,29.423000000000002 +2020-08-15 13:15:00,68.49,33.111999999999995,32.277,29.423000000000002 +2020-08-15 13:30:00,72.94,32.469,32.277,29.423000000000002 +2020-08-15 13:45:00,73.41,31.604,32.277,29.423000000000002 +2020-08-15 14:00:00,67.3,32.065,31.436999999999998,29.423000000000002 +2020-08-15 14:15:00,71.1,30.541999999999998,31.436999999999998,29.423000000000002 +2020-08-15 14:30:00,67.23,30.926,31.436999999999998,29.423000000000002 +2020-08-15 14:45:00,66.15,31.37,31.436999999999998,29.423000000000002 +2020-08-15 15:00:00,64.93,33.033,33.493,29.423000000000002 +2020-08-15 15:15:00,67.48,31.328000000000003,33.493,29.423000000000002 +2020-08-15 15:30:00,66.52,29.779,33.493,29.423000000000002 +2020-08-15 15:45:00,68.11,28.105999999999998,33.493,29.423000000000002 +2020-08-15 16:00:00,71.24,31.679000000000002,36.593,29.423000000000002 +2020-08-15 16:15:00,71.7,31.18,36.593,29.423000000000002 +2020-08-15 16:30:00,73.28,30.749000000000002,36.593,29.423000000000002 +2020-08-15 16:45:00,76.09,27.814,36.593,29.423000000000002 +2020-08-15 17:00:00,77.79,31.39,42.049,29.423000000000002 +2020-08-15 17:15:00,78.28,29.826,42.049,29.423000000000002 +2020-08-15 17:30:00,80.48,29.125999999999998,42.049,29.423000000000002 +2020-08-15 17:45:00,81.56,29.226,42.049,29.423000000000002 +2020-08-15 18:00:00,82.67,33.369,43.755,29.423000000000002 +2020-08-15 18:15:00,81.18,33.85,43.755,29.423000000000002 +2020-08-15 18:30:00,80.1,33.385,43.755,29.423000000000002 +2020-08-15 18:45:00,80.79,33.236,43.755,29.423000000000002 +2020-08-15 19:00:00,78.86,33.652,44.492,29.423000000000002 +2020-08-15 19:15:00,76.55,32.202,44.492,29.423000000000002 +2020-08-15 19:30:00,77.59,31.889,44.492,29.423000000000002 +2020-08-15 19:45:00,80.08,31.791,44.492,29.423000000000002 +2020-08-15 20:00:00,79.74,29.905,40.896,29.423000000000002 +2020-08-15 20:15:00,80.99,29.331,40.896,29.423000000000002 +2020-08-15 20:30:00,76.08,28.186999999999998,40.896,29.423000000000002 +2020-08-15 20:45:00,75.31,29.188000000000002,40.896,29.423000000000002 +2020-08-15 21:00:00,72.65,27.752,39.056,29.423000000000002 +2020-08-15 21:15:00,72.67,29.988000000000003,39.056,29.423000000000002 +2020-08-15 21:30:00,70.17,30.236,39.056,29.423000000000002 +2020-08-15 21:45:00,69.86,30.145,39.056,29.423000000000002 +2020-08-15 22:00:00,66.08,27.138,38.478,29.423000000000002 +2020-08-15 22:15:00,67.02,29.274,38.478,29.423000000000002 +2020-08-15 22:30:00,64.4,28.171999999999997,38.478,29.423000000000002 +2020-08-15 22:45:00,64.41,26.127,38.478,29.423000000000002 +2020-08-15 23:00:00,59.88,24.873,32.953,29.423000000000002 +2020-08-15 23:15:00,61.24,22.807,32.953,29.423000000000002 +2020-08-15 23:30:00,60.61,22.965,32.953,29.423000000000002 +2020-08-15 23:45:00,59.27,22.448,32.953,29.423000000000002 +2020-08-16 00:00:00,56.4,20.963,28.584,29.423000000000002 +2020-08-16 00:15:00,57.15,20.25,28.584,29.423000000000002 +2020-08-16 00:30:00,56.4,19.059,28.584,29.423000000000002 +2020-08-16 00:45:00,56.75,18.803,28.584,29.423000000000002 +2020-08-16 01:00:00,54.08,18.761,26.419,29.423000000000002 +2020-08-16 01:15:00,55.73,17.887999999999998,26.419,29.423000000000002 +2020-08-16 01:30:00,54.82,16.56,26.419,29.423000000000002 +2020-08-16 01:45:00,55.19,16.852,26.419,29.423000000000002 +2020-08-16 02:00:00,53.79,16.772000000000002,25.335,29.423000000000002 +2020-08-16 02:15:00,54.64,15.895999999999999,25.335,29.423000000000002 +2020-08-16 02:30:00,54.21,17.325,25.335,29.423000000000002 +2020-08-16 02:45:00,53.98,17.839000000000002,25.335,29.423000000000002 +2020-08-16 03:00:00,53.46,18.679000000000002,24.805,29.423000000000002 +2020-08-16 03:15:00,54.06,16.922,24.805,29.423000000000002 +2020-08-16 03:30:00,54.48,15.995999999999999,24.805,29.423000000000002 +2020-08-16 03:45:00,55.19,17.086,24.805,29.423000000000002 +2020-08-16 04:00:00,55.99,19.613,25.772,29.423000000000002 +2020-08-16 04:15:00,57.26,22.346,25.772,29.423000000000002 +2020-08-16 04:30:00,54.82,20.494,25.772,29.423000000000002 +2020-08-16 04:45:00,56.06,19.851,25.772,29.423000000000002 +2020-08-16 05:00:00,55.21,23.886,25.971999999999998,29.423000000000002 +2020-08-16 05:15:00,55.74,20.704,25.971999999999998,29.423000000000002 +2020-08-16 05:30:00,55.42,17.433,25.971999999999998,29.423000000000002 +2020-08-16 05:45:00,56.8,18.361,25.971999999999998,29.423000000000002 +2020-08-16 06:00:00,55.15,26.846999999999998,26.026,29.423000000000002 +2020-08-16 06:15:00,58.89,34.753,26.026,29.423000000000002 +2020-08-16 06:30:00,59.5,31.089000000000002,26.026,29.423000000000002 +2020-08-16 06:45:00,60.53,29.549,26.026,29.423000000000002 +2020-08-16 07:00:00,61.9,29.266,27.396,29.423000000000002 +2020-08-16 07:15:00,61.93,28.503,27.396,29.423000000000002 +2020-08-16 07:30:00,61.72,27.575,27.396,29.423000000000002 +2020-08-16 07:45:00,59.55,28.915,27.396,29.423000000000002 +2020-08-16 08:00:00,62.74,27.895,30.791999999999998,29.423000000000002 +2020-08-16 08:15:00,61.33,31.752,30.791999999999998,29.423000000000002 +2020-08-16 08:30:00,60.91,32.825,30.791999999999998,29.423000000000002 +2020-08-16 08:45:00,60.73,35.29,30.791999999999998,29.423000000000002 +2020-08-16 09:00:00,60.52,30.888,32.482,29.423000000000002 +2020-08-16 09:15:00,61.23,31.75,32.482,29.423000000000002 +2020-08-16 09:30:00,61.34,34.828,32.482,29.423000000000002 +2020-08-16 09:45:00,61.67,38.303000000000004,32.482,29.423000000000002 +2020-08-16 10:00:00,59.03,35.681,31.951,29.423000000000002 +2020-08-16 10:15:00,63.77,36.964,31.951,29.423000000000002 +2020-08-16 10:30:00,64.3,37.236,31.951,29.423000000000002 +2020-08-16 10:45:00,64.55,39.031,31.951,29.423000000000002 +2020-08-16 11:00:00,62.19,37.029,33.619,29.423000000000002 +2020-08-16 11:15:00,61.81,37.51,33.619,29.423000000000002 +2020-08-16 11:30:00,60.1,38.786,33.619,29.423000000000002 +2020-08-16 11:45:00,59.33,39.66,33.619,29.423000000000002 +2020-08-16 12:00:00,56.59,37.803000000000004,30.975,29.423000000000002 +2020-08-16 12:15:00,56.52,36.787,30.975,29.423000000000002 +2020-08-16 12:30:00,56.09,36.008,30.975,29.423000000000002 +2020-08-16 12:45:00,54.79,36.227,30.975,29.423000000000002 +2020-08-16 13:00:00,51.28,35.288000000000004,27.956999999999997,29.423000000000002 +2020-08-16 13:15:00,55.09,35.214,27.956999999999997,29.423000000000002 +2020-08-16 13:30:00,52.21,33.672,27.956999999999997,29.423000000000002 +2020-08-16 13:45:00,54.84,33.584,27.956999999999997,29.423000000000002 +2020-08-16 14:00:00,55.31,35.247,25.555999999999997,29.423000000000002 +2020-08-16 14:15:00,56.62,34.028,25.555999999999997,29.423000000000002 +2020-08-16 14:30:00,54.58,32.937,25.555999999999997,29.423000000000002 +2020-08-16 14:45:00,56.86,32.461,25.555999999999997,29.423000000000002 +2020-08-16 15:00:00,58.29,34.168,26.271,29.423000000000002 +2020-08-16 15:15:00,58.87,31.699,26.271,29.423000000000002 +2020-08-16 15:30:00,54.96,29.926,26.271,29.423000000000002 +2020-08-16 15:45:00,59.3,28.335,26.271,29.423000000000002 +2020-08-16 16:00:00,63.28,30.392,30.369,29.423000000000002 +2020-08-16 16:15:00,64.29,30.148000000000003,30.369,29.423000000000002 +2020-08-16 16:30:00,66.51,30.853,30.369,29.423000000000002 +2020-08-16 16:45:00,70.7,27.897,30.369,29.423000000000002 +2020-08-16 17:00:00,74.15,31.488000000000003,38.787,29.423000000000002 +2020-08-16 17:15:00,75.05,31.449,38.787,29.423000000000002 +2020-08-16 17:30:00,76.55,31.503,38.787,29.423000000000002 +2020-08-16 17:45:00,77.73,31.592,38.787,29.423000000000002 +2020-08-16 18:00:00,80.1,35.961,41.886,29.423000000000002 +2020-08-16 18:15:00,79.15,35.951,41.886,29.423000000000002 +2020-08-16 18:30:00,78.57,35.23,41.886,29.423000000000002 +2020-08-16 18:45:00,78.39,35.485,41.886,29.423000000000002 +2020-08-16 19:00:00,77.11,37.847,42.91,29.423000000000002 +2020-08-16 19:15:00,78.29,35.399,42.91,29.423000000000002 +2020-08-16 19:30:00,80.1,34.857,42.91,29.423000000000002 +2020-08-16 19:45:00,82.78,34.594,42.91,29.423000000000002 +2020-08-16 20:00:00,82.35,32.407,42.148999999999994,29.423000000000002 +2020-08-16 20:15:00,81.74,32.199,42.148999999999994,29.423000000000002 +2020-08-16 20:30:00,81.4,31.858,42.148999999999994,29.423000000000002 +2020-08-16 20:45:00,81.03,31.601,42.148999999999994,29.423000000000002 +2020-08-16 21:00:00,79.1,29.82,40.955999999999996,29.423000000000002 +2020-08-16 21:15:00,80.28,32.325,40.955999999999996,29.423000000000002 +2020-08-16 21:30:00,78.42,32.105,40.955999999999996,29.423000000000002 +2020-08-16 21:45:00,77.85,32.394,40.955999999999996,29.423000000000002 +2020-08-16 22:00:00,73.71,31.552,39.873000000000005,29.423000000000002 +2020-08-16 22:15:00,74.13,31.956,39.873000000000005,29.423000000000002 +2020-08-16 22:30:00,70.68,30.46,39.873000000000005,29.423000000000002 +2020-08-16 22:45:00,73.48,27.304000000000002,39.873000000000005,29.423000000000002 +2020-08-16 23:00:00,66.63,25.803,35.510999999999996,29.423000000000002 +2020-08-16 23:15:00,68.8,24.945999999999998,35.510999999999996,29.423000000000002 +2020-08-16 23:30:00,67.36,24.513,35.510999999999996,29.423000000000002 +2020-08-16 23:45:00,68.31,24.014,35.510999999999996,29.423000000000002 +2020-08-17 00:00:00,67.08,22.375,33.475,29.535 +2020-08-17 00:15:00,66.94,22.315,33.475,29.535 +2020-08-17 00:30:00,66.43,20.779,33.475,29.535 +2020-08-17 00:45:00,66.96,20.184,33.475,29.535 +2020-08-17 01:00:00,64.35,20.474,33.111,29.535 +2020-08-17 01:15:00,65.92,19.635,33.111,29.535 +2020-08-17 01:30:00,65.15,18.643,33.111,29.535 +2020-08-17 01:45:00,64.74,18.845,33.111,29.535 +2020-08-17 02:00:00,65.98,19.177,32.358000000000004,29.535 +2020-08-17 02:15:00,72.77,17.374000000000002,32.358000000000004,29.535 +2020-08-17 02:30:00,73.53,18.923,32.358000000000004,29.535 +2020-08-17 02:45:00,69.28,19.314,32.358000000000004,29.535 +2020-08-17 03:00:00,66.89,20.573,30.779,29.535 +2020-08-17 03:15:00,67.8,19.445999999999998,30.779,29.535 +2020-08-17 03:30:00,71.43,19.149,30.779,29.535 +2020-08-17 03:45:00,74.75,19.83,30.779,29.535 +2020-08-17 04:00:00,80.78,25.086,31.416,29.535 +2020-08-17 04:15:00,87.43,30.389,31.416,29.535 +2020-08-17 04:30:00,90.67,28.061,31.416,29.535 +2020-08-17 04:45:00,90.09,27.750999999999998,31.416,29.535 +2020-08-17 05:00:00,93.62,38.103,37.221,29.535 +2020-08-17 05:15:00,96.83,43.934,37.221,29.535 +2020-08-17 05:30:00,105.37,39.284,37.221,29.535 +2020-08-17 05:45:00,108.9,37.507,37.221,29.535 +2020-08-17 06:00:00,113.83,36.976,51.891000000000005,29.535 +2020-08-17 06:15:00,111.93,36.961,51.891000000000005,29.535 +2020-08-17 06:30:00,116.33,36.743,51.891000000000005,29.535 +2020-08-17 06:45:00,116.15,39.816,51.891000000000005,29.535 +2020-08-17 07:00:00,119.7,39.711999999999996,62.282,29.535 +2020-08-17 07:15:00,114.94,40.998000000000005,62.282,29.535 +2020-08-17 07:30:00,113.97,39.330999999999996,62.282,29.535 +2020-08-17 07:45:00,116.01,40.996,62.282,29.535 +2020-08-17 08:00:00,116.0,38.075,54.102,29.535 +2020-08-17 08:15:00,113.19,40.864000000000004,54.102,29.535 +2020-08-17 08:30:00,108.1,41.148,54.102,29.535 +2020-08-17 08:45:00,111.95,43.861000000000004,54.102,29.535 +2020-08-17 09:00:00,116.11,38.529,50.917,29.535 +2020-08-17 09:15:00,113.89,37.845,50.917,29.535 +2020-08-17 09:30:00,111.12,40.088,50.917,29.535 +2020-08-17 09:45:00,106.99,41.456,50.917,29.535 +2020-08-17 10:00:00,109.37,39.195,49.718999999999994,29.535 +2020-08-17 10:15:00,108.32,40.332,49.718999999999994,29.535 +2020-08-17 10:30:00,115.64,40.201,49.718999999999994,29.535 +2020-08-17 10:45:00,113.32,40.523,49.718999999999994,29.535 +2020-08-17 11:00:00,109.23,38.788000000000004,49.833999999999996,29.535 +2020-08-17 11:15:00,106.15,39.465,49.833999999999996,29.535 +2020-08-17 11:30:00,106.16,41.331,49.833999999999996,29.535 +2020-08-17 11:45:00,112.52,42.663999999999994,49.833999999999996,29.535 +2020-08-17 12:00:00,113.63,39.105,47.832,29.535 +2020-08-17 12:15:00,106.33,38.181,47.832,29.535 +2020-08-17 12:30:00,107.11,36.42,47.832,29.535 +2020-08-17 12:45:00,107.04,36.57,47.832,29.535 +2020-08-17 13:00:00,103.37,36.479,48.03,29.535 +2020-08-17 13:15:00,102.48,35.629,48.03,29.535 +2020-08-17 13:30:00,104.21,34.259,48.03,29.535 +2020-08-17 13:45:00,102.22,35.001,48.03,29.535 +2020-08-17 14:00:00,103.51,35.816,48.157,29.535 +2020-08-17 14:15:00,99.38,35.17,48.157,29.535 +2020-08-17 14:30:00,99.26,33.96,48.157,29.535 +2020-08-17 14:45:00,99.3,35.389,48.157,29.535 +2020-08-17 15:00:00,102.77,36.656,48.897,29.535 +2020-08-17 15:15:00,101.97,33.701,48.897,29.535 +2020-08-17 15:30:00,103.47,32.678000000000004,48.897,29.535 +2020-08-17 15:45:00,104.76,30.66,48.897,29.535 +2020-08-17 16:00:00,106.74,33.74,51.446000000000005,29.535 +2020-08-17 16:15:00,109.18,33.586,51.446000000000005,29.535 +2020-08-17 16:30:00,111.89,33.715,51.446000000000005,29.535 +2020-08-17 16:45:00,110.39,30.851,51.446000000000005,29.535 +2020-08-17 17:00:00,109.89,33.382,57.507,29.535 +2020-08-17 17:15:00,108.72,33.742,57.507,29.535 +2020-08-17 17:30:00,109.15,33.471,57.507,29.535 +2020-08-17 17:45:00,108.54,33.272,57.507,29.535 +2020-08-17 18:00:00,108.29,36.677,57.896,29.535 +2020-08-17 18:15:00,107.32,35.067,57.896,29.535 +2020-08-17 18:30:00,107.79,33.650999999999996,57.896,29.535 +2020-08-17 18:45:00,106.79,36.765,57.896,29.535 +2020-08-17 19:00:00,113.59,38.936,57.891999999999996,29.535 +2020-08-17 19:15:00,107.67,37.709,57.891999999999996,29.535 +2020-08-17 19:30:00,110.58,36.824,57.891999999999996,29.535 +2020-08-17 19:45:00,109.62,36.025999999999996,57.891999999999996,29.535 +2020-08-17 20:00:00,102.56,32.74,64.57300000000001,29.535 +2020-08-17 20:15:00,100.21,33.866,64.57300000000001,29.535 +2020-08-17 20:30:00,98.27,34.029,64.57300000000001,29.535 +2020-08-17 20:45:00,99.3,33.9,64.57300000000001,29.535 +2020-08-17 21:00:00,95.28,31.535,59.431999999999995,29.535 +2020-08-17 21:15:00,96.5,34.459,59.431999999999995,29.535 +2020-08-17 21:30:00,93.09,34.631,59.431999999999995,29.535 +2020-08-17 21:45:00,92.08,34.704,59.431999999999995,29.535 +2020-08-17 22:00:00,89.32,32.049,51.519,29.535 +2020-08-17 22:15:00,87.02,34.274,51.519,29.535 +2020-08-17 22:30:00,82.96,29.033,51.519,29.535 +2020-08-17 22:45:00,87.26,25.968000000000004,51.519,29.535 +2020-08-17 23:00:00,83.17,24.506999999999998,44.501000000000005,29.535 +2020-08-17 23:15:00,84.93,22.086,44.501000000000005,29.535 +2020-08-17 23:30:00,79.26,21.566999999999997,44.501000000000005,29.535 +2020-08-17 23:45:00,75.42,20.524,44.501000000000005,29.535 +2020-08-18 00:00:00,80.51,20.454,44.522,29.535 +2020-08-18 00:15:00,81.43,21.15,44.522,29.535 +2020-08-18 00:30:00,80.49,20.289,44.522,29.535 +2020-08-18 00:45:00,75.85,20.444000000000003,44.522,29.535 +2020-08-18 01:00:00,72.88,20.229,41.441,29.535 +2020-08-18 01:15:00,73.3,19.511,41.441,29.535 +2020-08-18 01:30:00,75.87,18.41,41.441,29.535 +2020-08-18 01:45:00,80.87,18.136,41.441,29.535 +2020-08-18 02:00:00,81.98,18.032,40.203,29.535 +2020-08-18 02:15:00,79.19,17.307000000000002,40.203,29.535 +2020-08-18 02:30:00,76.72,18.492,40.203,29.535 +2020-08-18 02:45:00,82.03,19.179000000000002,40.203,29.535 +2020-08-18 03:00:00,82.91,19.949,39.536,29.535 +2020-08-18 03:15:00,82.37,19.711,39.536,29.535 +2020-08-18 03:30:00,78.01,19.379,39.536,29.535 +2020-08-18 03:45:00,83.18,19.037,39.536,29.535 +2020-08-18 04:00:00,90.43,23.16,40.759,29.535 +2020-08-18 04:15:00,92.1,28.493000000000002,40.759,29.535 +2020-08-18 04:30:00,89.48,26.066999999999997,40.759,29.535 +2020-08-18 04:45:00,92.67,26.177,40.759,29.535 +2020-08-18 05:00:00,97.83,37.921,43.623999999999995,29.535 +2020-08-18 05:15:00,105.65,44.367,43.623999999999995,29.535 +2020-08-18 05:30:00,111.86,39.913000000000004,43.623999999999995,29.535 +2020-08-18 05:45:00,115.65,37.446,43.623999999999995,29.535 +2020-08-18 06:00:00,116.29,37.865,52.684,29.535 +2020-08-18 06:15:00,117.43,38.018,52.684,29.535 +2020-08-18 06:30:00,123.82,37.52,52.684,29.535 +2020-08-18 06:45:00,129.27,39.798,52.684,29.535 +2020-08-18 07:00:00,135.91,39.836,62.676,29.535 +2020-08-18 07:15:00,126.32,40.907,62.676,29.535 +2020-08-18 07:30:00,127.7,39.289,62.676,29.535 +2020-08-18 07:45:00,125.98,40.064,62.676,29.535 +2020-08-18 08:00:00,127.08,37.076,56.161,29.535 +2020-08-18 08:15:00,131.88,39.455,56.161,29.535 +2020-08-18 08:30:00,134.91,39.891,56.161,29.535 +2020-08-18 08:45:00,131.78,41.751000000000005,56.161,29.535 +2020-08-18 09:00:00,132.31,36.759,52.132,29.535 +2020-08-18 09:15:00,134.14,35.897,52.132,29.535 +2020-08-18 09:30:00,140.01,38.738,52.132,29.535 +2020-08-18 09:45:00,140.34,41.32,52.132,29.535 +2020-08-18 10:00:00,137.81,37.816,51.032,29.535 +2020-08-18 10:15:00,133.5,38.835,51.032,29.535 +2020-08-18 10:30:00,134.66,38.716,51.032,29.535 +2020-08-18 10:45:00,131.74,39.949,51.032,29.535 +2020-08-18 11:00:00,125.16,38.181,51.085,29.535 +2020-08-18 11:15:00,124.46,39.236,51.085,29.535 +2020-08-18 11:30:00,124.13,40.074,51.085,29.535 +2020-08-18 11:45:00,115.02,40.953,51.085,29.535 +2020-08-18 12:00:00,109.2,37.262,49.049,29.535 +2020-08-18 12:15:00,108.88,36.66,49.049,29.535 +2020-08-18 12:30:00,112.98,35.681999999999995,49.049,29.535 +2020-08-18 12:45:00,115.32,36.479,49.049,29.535 +2020-08-18 13:00:00,108.39,36.041,49.722,29.535 +2020-08-18 13:15:00,111.75,36.867,49.722,29.535 +2020-08-18 13:30:00,111.55,35.42,49.722,29.535 +2020-08-18 13:45:00,107.18,35.269,49.722,29.535 +2020-08-18 14:00:00,114.92,36.473,49.565,29.535 +2020-08-18 14:15:00,117.53,35.641999999999996,49.565,29.535 +2020-08-18 14:30:00,117.41,34.726,49.565,29.535 +2020-08-18 14:45:00,113.97,35.425,49.565,29.535 +2020-08-18 15:00:00,104.47,36.525,51.108999999999995,29.535 +2020-08-18 15:15:00,107.86,34.426,51.108999999999995,29.535 +2020-08-18 15:30:00,116.75,33.21,51.108999999999995,29.535 +2020-08-18 15:45:00,114.65,31.535999999999998,51.108999999999995,29.535 +2020-08-18 16:00:00,112.4,33.915,52.725,29.535 +2020-08-18 16:15:00,114.87,33.833,52.725,29.535 +2020-08-18 16:30:00,114.02,33.6,52.725,29.535 +2020-08-18 16:45:00,116.97,31.426,52.725,29.535 +2020-08-18 17:00:00,113.73,34.107,58.031000000000006,29.535 +2020-08-18 17:15:00,110.05,34.88,58.031000000000006,29.535 +2020-08-18 17:30:00,118.5,34.19,58.031000000000006,29.535 +2020-08-18 17:45:00,119.33,33.718,58.031000000000006,29.535 +2020-08-18 18:00:00,122.4,36.251999999999995,58.338,29.535 +2020-08-18 18:15:00,114.26,36.035,58.338,29.535 +2020-08-18 18:30:00,115.94,34.396,58.338,29.535 +2020-08-18 18:45:00,118.08,37.306999999999995,58.338,29.535 +2020-08-18 19:00:00,107.79,38.418,58.464,29.535 +2020-08-18 19:15:00,104.16,37.361,58.464,29.535 +2020-08-18 19:30:00,111.36,36.297,58.464,29.535 +2020-08-18 19:45:00,113.13,35.806,58.464,29.535 +2020-08-18 20:00:00,106.38,32.879,63.708,29.535 +2020-08-18 20:15:00,103.17,32.701,63.708,29.535 +2020-08-18 20:30:00,98.53,32.858000000000004,63.708,29.535 +2020-08-18 20:45:00,97.08,33.101,63.708,29.535 +2020-08-18 21:00:00,89.74,31.555,57.06399999999999,29.535 +2020-08-18 21:15:00,91.57,33.103,57.06399999999999,29.535 +2020-08-18 21:30:00,86.58,33.452,57.06399999999999,29.535 +2020-08-18 21:45:00,86.69,33.669000000000004,57.06399999999999,29.535 +2020-08-18 22:00:00,80.92,31.107,52.831,29.535 +2020-08-18 22:15:00,81.51,33.018,52.831,29.535 +2020-08-18 22:30:00,80.13,28.011999999999997,52.831,29.535 +2020-08-18 22:45:00,79.13,24.936999999999998,52.831,29.535 +2020-08-18 23:00:00,72.87,22.809,44.717,29.535 +2020-08-18 23:15:00,76.22,21.831999999999997,44.717,29.535 +2020-08-18 23:30:00,77.08,21.331,44.717,29.535 +2020-08-18 23:45:00,78.95,20.47,44.717,29.535 +2020-08-19 00:00:00,75.55,20.588,41.263000000000005,29.535 +2020-08-19 00:15:00,74.25,21.284000000000002,41.263000000000005,29.535 +2020-08-19 00:30:00,73.14,20.428,41.263000000000005,29.535 +2020-08-19 00:45:00,73.85,20.59,41.263000000000005,29.535 +2020-08-19 01:00:00,72.97,20.358,38.448,29.535 +2020-08-19 01:15:00,75.56,19.652,38.448,29.535 +2020-08-19 01:30:00,70.9,18.563,38.448,29.535 +2020-08-19 01:45:00,73.95,18.288,38.448,29.535 +2020-08-19 02:00:00,73.83,18.187,36.471,29.535 +2020-08-19 02:15:00,75.11,17.482,36.471,29.535 +2020-08-19 02:30:00,74.21,18.646,36.471,29.535 +2020-08-19 02:45:00,74.47,19.331,36.471,29.535 +2020-08-19 03:00:00,76.06,20.089000000000002,36.042,29.535 +2020-08-19 03:15:00,77.07,19.866,36.042,29.535 +2020-08-19 03:30:00,74.69,19.54,36.042,29.535 +2020-08-19 03:45:00,84.15,19.194000000000003,36.042,29.535 +2020-08-19 04:00:00,90.54,23.335,36.705,29.535 +2020-08-19 04:15:00,91.52,28.679000000000002,36.705,29.535 +2020-08-19 04:30:00,88.4,26.26,36.705,29.535 +2020-08-19 04:45:00,91.16,26.372,36.705,29.535 +2020-08-19 05:00:00,95.33,38.171,39.716,29.535 +2020-08-19 05:15:00,104.66,44.675,39.716,29.535 +2020-08-19 05:30:00,106.17,40.223,39.716,29.535 +2020-08-19 05:45:00,113.8,37.723,39.716,29.535 +2020-08-19 06:00:00,118.61,38.113,52.756,29.535 +2020-08-19 06:15:00,117.99,38.286,52.756,29.535 +2020-08-19 06:30:00,114.51,37.786,52.756,29.535 +2020-08-19 06:45:00,111.03,40.067,52.756,29.535 +2020-08-19 07:00:00,120.0,40.104,65.977,29.535 +2020-08-19 07:15:00,121.82,41.191,65.977,29.535 +2020-08-19 07:30:00,118.1,39.595,65.977,29.535 +2020-08-19 07:45:00,117.26,40.374,65.977,29.535 +2020-08-19 08:00:00,114.13,37.389,57.927,29.535 +2020-08-19 08:15:00,117.26,39.741,57.927,29.535 +2020-08-19 08:30:00,120.28,40.171,57.927,29.535 +2020-08-19 08:45:00,118.51,42.016999999999996,57.927,29.535 +2020-08-19 09:00:00,117.01,37.033,54.86,29.535 +2020-08-19 09:15:00,114.75,36.162,54.86,29.535 +2020-08-19 09:30:00,117.13,38.986999999999995,54.86,29.535 +2020-08-19 09:45:00,112.52,41.547,54.86,29.535 +2020-08-19 10:00:00,114.95,38.043,52.818000000000005,29.535 +2020-08-19 10:15:00,116.13,39.04,52.818000000000005,29.535 +2020-08-19 10:30:00,116.65,38.913000000000004,52.818000000000005,29.535 +2020-08-19 10:45:00,111.6,40.138000000000005,52.818000000000005,29.535 +2020-08-19 11:00:00,110.58,38.38,52.937,29.535 +2020-08-19 11:15:00,112.5,39.426,52.937,29.535 +2020-08-19 11:30:00,112.13,40.26,52.937,29.535 +2020-08-19 11:45:00,111.52,41.125,52.937,29.535 +2020-08-19 12:00:00,106.13,37.423,50.826,29.535 +2020-08-19 12:15:00,106.08,36.811,50.826,29.535 +2020-08-19 12:30:00,106.22,35.847,50.826,29.535 +2020-08-19 12:45:00,115.53,36.633,50.826,29.535 +2020-08-19 13:00:00,113.75,36.177,50.556000000000004,29.535 +2020-08-19 13:15:00,112.48,36.993,50.556000000000004,29.535 +2020-08-19 13:30:00,105.73,35.543,50.556000000000004,29.535 +2020-08-19 13:45:00,105.62,35.400999999999996,50.556000000000004,29.535 +2020-08-19 14:00:00,109.57,36.584,51.188,29.535 +2020-08-19 14:15:00,112.24,35.759,51.188,29.535 +2020-08-19 14:30:00,108.23,34.856,51.188,29.535 +2020-08-19 14:45:00,107.5,35.559,51.188,29.535 +2020-08-19 15:00:00,109.94,36.618,52.976000000000006,29.535 +2020-08-19 15:15:00,110.19,34.525999999999996,52.976000000000006,29.535 +2020-08-19 15:30:00,105.86,33.321999999999996,52.976000000000006,29.535 +2020-08-19 15:45:00,109.9,31.653000000000002,52.976000000000006,29.535 +2020-08-19 16:00:00,110.95,34.01,55.463,29.535 +2020-08-19 16:15:00,112.44,33.936,55.463,29.535 +2020-08-19 16:30:00,109.15,33.707,55.463,29.535 +2020-08-19 16:45:00,107.57,31.572,55.463,29.535 +2020-08-19 17:00:00,115.26,34.226,59.435,29.535 +2020-08-19 17:15:00,118.06,35.025,59.435,29.535 +2020-08-19 17:30:00,118.86,34.346,59.435,29.535 +2020-08-19 17:45:00,116.17,33.907,59.435,29.535 +2020-08-19 18:00:00,112.79,36.433,61.387,29.535 +2020-08-19 18:15:00,115.1,36.225,61.387,29.535 +2020-08-19 18:30:00,118.21,34.598,61.387,29.535 +2020-08-19 18:45:00,118.6,37.507,61.387,29.535 +2020-08-19 19:00:00,113.59,38.624,63.323,29.535 +2020-08-19 19:15:00,106.04,37.567,63.323,29.535 +2020-08-19 19:30:00,112.3,36.503,63.323,29.535 +2020-08-19 19:45:00,112.18,36.016,63.323,29.535 +2020-08-19 20:00:00,107.02,33.094,69.083,29.535 +2020-08-19 20:15:00,107.02,32.918,69.083,29.535 +2020-08-19 20:30:00,100.41,33.061,69.083,29.535 +2020-08-19 20:45:00,98.9,33.274,69.083,29.535 +2020-08-19 21:00:00,94.63,31.729,59.957,29.535 +2020-08-19 21:15:00,94.3,33.27,59.957,29.535 +2020-08-19 21:30:00,91.09,33.616,59.957,29.535 +2020-08-19 21:45:00,88.92,33.804,59.957,29.535 +2020-08-19 22:00:00,81.63,31.223000000000003,53.821000000000005,29.535 +2020-08-19 22:15:00,84.95,33.12,53.821000000000005,29.535 +2020-08-19 22:30:00,83.56,28.084,53.821000000000005,29.535 +2020-08-19 22:45:00,83.98,25.009,53.821000000000005,29.535 +2020-08-19 23:00:00,74.72,22.921,45.458,29.535 +2020-08-19 23:15:00,78.64,21.933000000000003,45.458,29.535 +2020-08-19 23:30:00,74.14,21.443,45.458,29.535 +2020-08-19 23:45:00,79.63,20.586,45.458,29.535 +2020-08-20 00:00:00,73.64,20.724,40.36,29.535 +2020-08-20 00:15:00,75.13,21.421,40.36,29.535 +2020-08-20 00:30:00,70.59,20.57,40.36,29.535 +2020-08-20 00:45:00,74.45,20.739,40.36,29.535 +2020-08-20 01:00:00,72.22,20.49,38.552,29.535 +2020-08-20 01:15:00,74.16,19.795,38.552,29.535 +2020-08-20 01:30:00,75.17,18.719,38.552,29.535 +2020-08-20 01:45:00,81.58,18.444000000000003,38.552,29.535 +2020-08-20 02:00:00,80.48,18.346,36.895,29.535 +2020-08-20 02:15:00,77.16,17.660999999999998,36.895,29.535 +2020-08-20 02:30:00,74.84,18.802,36.895,29.535 +2020-08-20 02:45:00,76.18,19.485,36.895,29.535 +2020-08-20 03:00:00,77.16,20.230999999999998,36.565,29.535 +2020-08-20 03:15:00,76.8,20.024,36.565,29.535 +2020-08-20 03:30:00,77.13,19.705,36.565,29.535 +2020-08-20 03:45:00,81.08,19.352999999999998,36.565,29.535 +2020-08-20 04:00:00,82.53,23.513,37.263000000000005,29.535 +2020-08-20 04:15:00,85.3,28.87,37.263000000000005,29.535 +2020-08-20 04:30:00,89.78,26.456,37.263000000000005,29.535 +2020-08-20 04:45:00,92.89,26.572,37.263000000000005,29.535 +2020-08-20 05:00:00,100.42,38.428000000000004,40.412,29.535 +2020-08-20 05:15:00,97.56,44.992,40.412,29.535 +2020-08-20 05:30:00,104.41,40.54,40.412,29.535 +2020-08-20 05:45:00,114.19,38.008,40.412,29.535 +2020-08-20 06:00:00,118.96,38.368,49.825,29.535 +2020-08-20 06:15:00,118.57,38.561,49.825,29.535 +2020-08-20 06:30:00,115.56,38.058,49.825,29.535 +2020-08-20 06:45:00,116.37,40.343,49.825,29.535 +2020-08-20 07:00:00,117.94,40.379,61.082,29.535 +2020-08-20 07:15:00,121.74,41.48,61.082,29.535 +2020-08-20 07:30:00,117.74,39.907,61.082,29.535 +2020-08-20 07:45:00,117.37,40.691,61.082,29.535 +2020-08-20 08:00:00,119.5,37.708,53.961999999999996,29.535 +2020-08-20 08:15:00,119.23,40.032,53.961999999999996,29.535 +2020-08-20 08:30:00,117.61,40.457,53.961999999999996,29.535 +2020-08-20 08:45:00,119.25,42.288999999999994,53.961999999999996,29.535 +2020-08-20 09:00:00,121.78,37.311,50.06100000000001,29.535 +2020-08-20 09:15:00,121.69,36.431999999999995,50.06100000000001,29.535 +2020-08-20 09:30:00,113.46,39.24,50.06100000000001,29.535 +2020-08-20 09:45:00,113.9,41.778,50.06100000000001,29.535 +2020-08-20 10:00:00,119.89,38.274,47.68,29.535 +2020-08-20 10:15:00,119.66,39.247,47.68,29.535 +2020-08-20 10:30:00,118.06,39.114000000000004,47.68,29.535 +2020-08-20 10:45:00,111.47,40.330999999999996,47.68,29.535 +2020-08-20 11:00:00,110.59,38.582,45.93899999999999,29.535 +2020-08-20 11:15:00,113.71,39.62,45.93899999999999,29.535 +2020-08-20 11:30:00,113.77,40.45,45.93899999999999,29.535 +2020-08-20 11:45:00,113.94,41.301,45.93899999999999,29.535 +2020-08-20 12:00:00,110.52,37.588,43.648999999999994,29.535 +2020-08-20 12:15:00,113.88,36.965,43.648999999999994,29.535 +2020-08-20 12:30:00,114.93,36.016,43.648999999999994,29.535 +2020-08-20 12:45:00,114.05,36.791,43.648999999999994,29.535 +2020-08-20 13:00:00,113.61,36.317,42.801,29.535 +2020-08-20 13:15:00,115.95,37.122,42.801,29.535 +2020-08-20 13:30:00,127.37,35.669000000000004,42.801,29.535 +2020-08-20 13:45:00,125.7,35.538000000000004,42.801,29.535 +2020-08-20 14:00:00,120.24,36.696999999999996,43.24,29.535 +2020-08-20 14:15:00,116.22,35.878,43.24,29.535 +2020-08-20 14:30:00,117.36,34.991,43.24,29.535 +2020-08-20 14:45:00,120.32,35.696,43.24,29.535 +2020-08-20 15:00:00,118.94,36.713,45.04600000000001,29.535 +2020-08-20 15:15:00,113.51,34.626999999999995,45.04600000000001,29.535 +2020-08-20 15:30:00,112.59,33.437,45.04600000000001,29.535 +2020-08-20 15:45:00,117.13,31.774,45.04600000000001,29.535 +2020-08-20 16:00:00,112.87,34.106,46.568000000000005,29.535 +2020-08-20 16:15:00,107.6,34.041,46.568000000000005,29.535 +2020-08-20 16:30:00,113.61,33.817,46.568000000000005,29.535 +2020-08-20 16:45:00,113.75,31.721,46.568000000000005,29.535 +2020-08-20 17:00:00,116.5,34.345,50.618,29.535 +2020-08-20 17:15:00,117.63,35.172,50.618,29.535 +2020-08-20 17:30:00,118.34,34.506,50.618,29.535 +2020-08-20 17:45:00,121.4,34.099000000000004,50.618,29.535 +2020-08-20 18:00:00,121.03,36.616,52.806999999999995,29.535 +2020-08-20 18:15:00,118.78,36.42,52.806999999999995,29.535 +2020-08-20 18:30:00,118.33,34.802,52.806999999999995,29.535 +2020-08-20 18:45:00,113.93,37.711,52.806999999999995,29.535 +2020-08-20 19:00:00,110.67,38.834,53.464,29.535 +2020-08-20 19:15:00,108.18,37.775999999999996,53.464,29.535 +2020-08-20 19:30:00,108.15,36.714,53.464,29.535 +2020-08-20 19:45:00,108.46,36.23,53.464,29.535 +2020-08-20 20:00:00,104.07,33.314,56.753,29.535 +2020-08-20 20:15:00,102.81,33.14,56.753,29.535 +2020-08-20 20:30:00,101.22,33.266999999999996,56.753,29.535 +2020-08-20 20:45:00,100.86,33.449,56.753,29.535 +2020-08-20 21:00:00,93.78,31.909000000000002,52.506,29.535 +2020-08-20 21:15:00,95.92,33.44,52.506,29.535 +2020-08-20 21:30:00,88.69,33.784,52.506,29.535 +2020-08-20 21:45:00,90.87,33.941,52.506,29.535 +2020-08-20 22:00:00,83.08,31.343000000000004,48.163000000000004,29.535 +2020-08-20 22:15:00,86.43,33.224000000000004,48.163000000000004,29.535 +2020-08-20 22:30:00,83.99,28.158,48.163000000000004,29.535 +2020-08-20 22:45:00,83.77,25.084,48.163000000000004,29.535 +2020-08-20 23:00:00,75.0,23.035,42.379,29.535 +2020-08-20 23:15:00,77.96,22.035,42.379,29.535 +2020-08-20 23:30:00,75.78,21.557,42.379,29.535 +2020-08-20 23:45:00,78.91,20.704,42.379,29.535 +2020-08-21 00:00:00,75.42,19.239,38.505,29.535 +2020-08-21 00:15:00,75.15,20.131,38.505,29.535 +2020-08-21 00:30:00,73.55,19.534000000000002,38.505,29.535 +2020-08-21 00:45:00,74.33,20.096,38.505,29.535 +2020-08-21 01:00:00,73.08,19.484,37.004,29.535 +2020-08-21 01:15:00,73.78,18.242,37.004,29.535 +2020-08-21 01:30:00,73.77,17.834,37.004,29.535 +2020-08-21 01:45:00,80.71,17.328,37.004,29.535 +2020-08-21 02:00:00,81.21,18.083,36.098,29.535 +2020-08-21 02:15:00,77.73,17.374000000000002,36.098,29.535 +2020-08-21 02:30:00,74.39,19.24,36.098,29.535 +2020-08-21 02:45:00,75.1,19.294,36.098,29.535 +2020-08-21 03:00:00,77.31,20.749000000000002,36.561,29.535 +2020-08-21 03:15:00,77.03,19.445,36.561,29.535 +2020-08-21 03:30:00,76.96,18.914,36.561,29.535 +2020-08-21 03:45:00,83.38,19.355,36.561,29.535 +2020-08-21 04:00:00,88.24,23.659000000000002,37.355,29.535 +2020-08-21 04:15:00,91.71,27.607,37.355,29.535 +2020-08-21 04:30:00,90.26,26.066,37.355,29.535 +2020-08-21 04:45:00,91.87,25.607,37.355,29.535 +2020-08-21 05:00:00,99.2,37.098,40.285,29.535 +2020-08-21 05:15:00,102.18,44.583,40.285,29.535 +2020-08-21 05:30:00,106.7,40.306,40.285,29.535 +2020-08-21 05:45:00,115.67,37.338,40.285,29.535 +2020-08-21 06:00:00,123.11,37.869,52.378,29.535 +2020-08-21 06:15:00,120.91,38.234,52.378,29.535 +2020-08-21 06:30:00,123.41,37.684,52.378,29.535 +2020-08-21 06:45:00,127.16,39.852,52.378,29.535 +2020-08-21 07:00:00,129.29,40.475,60.891999999999996,29.535 +2020-08-21 07:15:00,124.88,42.409,60.891999999999996,29.535 +2020-08-21 07:30:00,117.88,39.092,60.891999999999996,29.535 +2020-08-21 07:45:00,116.37,39.691,60.891999999999996,29.535 +2020-08-21 08:00:00,118.09,37.425,53.652,29.535 +2020-08-21 08:15:00,119.83,40.330999999999996,53.652,29.535 +2020-08-21 08:30:00,122.73,40.656,53.652,29.535 +2020-08-21 08:45:00,121.5,42.353,53.652,29.535 +2020-08-21 09:00:00,118.6,35.285,51.456,29.535 +2020-08-21 09:15:00,120.12,36.135999999999996,51.456,29.535 +2020-08-21 09:30:00,126.02,38.305,51.456,29.535 +2020-08-21 09:45:00,122.6,41.172,51.456,29.535 +2020-08-21 10:00:00,120.93,37.529,49.4,29.535 +2020-08-21 10:15:00,121.21,38.27,49.4,29.535 +2020-08-21 10:30:00,124.91,38.634,49.4,29.535 +2020-08-21 10:45:00,126.82,39.759,49.4,29.535 +2020-08-21 11:00:00,123.43,38.259,48.773,29.535 +2020-08-21 11:15:00,121.31,38.306,48.773,29.535 +2020-08-21 11:30:00,114.97,38.778,48.773,29.535 +2020-08-21 11:45:00,117.42,38.736,48.773,29.535 +2020-08-21 12:00:00,122.33,35.384,46.033,29.535 +2020-08-21 12:15:00,112.57,34.199,46.033,29.535 +2020-08-21 12:30:00,103.79,33.37,46.033,29.535 +2020-08-21 12:45:00,111.23,33.400999999999996,46.033,29.535 +2020-08-21 13:00:00,109.6,33.441,44.38399999999999,29.535 +2020-08-21 13:15:00,108.67,34.389,44.38399999999999,29.535 +2020-08-21 13:30:00,105.43,33.662,44.38399999999999,29.535 +2020-08-21 13:45:00,105.72,33.823,44.38399999999999,29.535 +2020-08-21 14:00:00,109.3,34.238,43.162,29.535 +2020-08-21 14:15:00,119.63,33.829,43.162,29.535 +2020-08-21 14:30:00,116.81,34.333,43.162,29.535 +2020-08-21 14:45:00,115.99,34.4,43.162,29.535 +2020-08-21 15:00:00,108.46,35.311,44.91,29.535 +2020-08-21 15:15:00,102.35,33.022,44.91,29.535 +2020-08-21 15:30:00,102.98,31.35,44.91,29.535 +2020-08-21 15:45:00,109.7,30.392,44.91,29.535 +2020-08-21 16:00:00,115.52,31.933000000000003,47.489,29.535 +2020-08-21 16:15:00,117.53,32.324,47.489,29.535 +2020-08-21 16:30:00,114.19,31.936,47.489,29.535 +2020-08-21 16:45:00,114.63,29.162,47.489,29.535 +2020-08-21 17:00:00,114.87,33.342,52.047,29.535 +2020-08-21 17:15:00,112.6,34.046,52.047,29.535 +2020-08-21 17:30:00,111.56,33.547,52.047,29.535 +2020-08-21 17:45:00,119.81,33.025999999999996,52.047,29.535 +2020-08-21 18:00:00,118.61,35.549,53.306000000000004,29.535 +2020-08-21 18:15:00,111.71,34.506,53.306000000000004,29.535 +2020-08-21 18:30:00,109.02,32.798,53.306000000000004,29.535 +2020-08-21 18:45:00,109.32,36.089,53.306000000000004,29.535 +2020-08-21 19:00:00,104.75,37.998000000000005,53.516000000000005,29.535 +2020-08-21 19:15:00,103.22,37.463,53.516000000000005,29.535 +2020-08-21 19:30:00,105.19,36.463,53.516000000000005,29.535 +2020-08-21 19:45:00,109.91,35.064,53.516000000000005,29.535 +2020-08-21 20:00:00,108.19,32.015,57.88,29.535 +2020-08-21 20:15:00,105.08,32.567,57.88,29.535 +2020-08-21 20:30:00,99.01,32.235,57.88,29.535 +2020-08-21 20:45:00,95.41,31.636,57.88,29.535 +2020-08-21 21:00:00,90.21,31.29,53.32,29.535 +2020-08-21 21:15:00,89.55,34.330999999999996,53.32,29.535 +2020-08-21 21:30:00,92.66,34.534,53.32,29.535 +2020-08-21 21:45:00,91.64,34.841,53.32,29.535 +2020-08-21 22:00:00,87.68,32.082,48.074,29.535 +2020-08-21 22:15:00,84.08,33.724000000000004,48.074,29.535 +2020-08-21 22:30:00,86.02,32.883,48.074,29.535 +2020-08-21 22:45:00,85.3,30.55,48.074,29.535 +2020-08-21 23:00:00,77.83,30.086,41.306999999999995,29.535 +2020-08-21 23:15:00,71.95,27.67,41.306999999999995,29.535 +2020-08-21 23:30:00,73.74,25.559,41.306999999999995,29.535 +2020-08-21 23:45:00,71.29,24.608,41.306999999999995,29.535 +2020-08-22 00:00:00,69.81,20.534000000000002,40.227,29.423000000000002 +2020-08-22 00:15:00,69.02,20.857,40.227,29.423000000000002 +2020-08-22 00:30:00,67.89,19.826,40.227,29.423000000000002 +2020-08-22 00:45:00,72.34,19.723,40.227,29.423000000000002 +2020-08-22 01:00:00,75.79,19.339000000000002,36.303000000000004,29.423000000000002 +2020-08-22 01:15:00,76.02,18.655,36.303000000000004,29.423000000000002 +2020-08-22 01:30:00,75.61,17.533,36.303000000000004,29.423000000000002 +2020-08-22 01:45:00,73.35,18.16,36.303000000000004,29.423000000000002 +2020-08-22 02:00:00,74.97,18.018,33.849000000000004,29.423000000000002 +2020-08-22 02:15:00,75.4,16.616,33.849000000000004,29.423000000000002 +2020-08-22 02:30:00,69.28,17.753,33.849000000000004,29.423000000000002 +2020-08-22 02:45:00,66.05,18.517,33.849000000000004,29.423000000000002 +2020-08-22 03:00:00,72.84,18.707,33.149,29.423000000000002 +2020-08-22 03:15:00,73.03,16.8,33.149,29.423000000000002 +2020-08-22 03:30:00,67.68,16.592,33.149,29.423000000000002 +2020-08-22 03:45:00,66.88,18.373,33.149,29.423000000000002 +2020-08-22 04:00:00,69.12,21.037,32.501,29.423000000000002 +2020-08-22 04:15:00,67.9,24.219,32.501,29.423000000000002 +2020-08-22 04:30:00,68.89,21.195999999999998,32.501,29.423000000000002 +2020-08-22 04:45:00,75.53,20.994,32.501,29.423000000000002 +2020-08-22 05:00:00,76.39,25.175,31.648000000000003,29.423000000000002 +2020-08-22 05:15:00,77.34,23.013,31.648000000000003,29.423000000000002 +2020-08-22 05:30:00,70.85,20.104,31.648000000000003,29.423000000000002 +2020-08-22 05:45:00,75.88,21.084,31.648000000000003,29.423000000000002 +2020-08-22 06:00:00,79.9,31.51,32.552,29.423000000000002 +2020-08-22 06:15:00,81.93,38.769,32.552,29.423000000000002 +2020-08-22 06:30:00,78.71,35.705999999999996,32.552,29.423000000000002 +2020-08-22 06:45:00,78.42,35.068000000000005,32.552,29.423000000000002 +2020-08-22 07:00:00,81.49,34.53,35.181999999999995,29.423000000000002 +2020-08-22 07:15:00,83.52,35.321999999999996,35.181999999999995,29.423000000000002 +2020-08-22 07:30:00,88.71,33.359,35.181999999999995,29.423000000000002 +2020-08-22 07:45:00,83.28,34.743,35.181999999999995,29.423000000000002 +2020-08-22 08:00:00,87.36,33.074,40.35,29.423000000000002 +2020-08-22 08:15:00,83.56,35.699,40.35,29.423000000000002 +2020-08-22 08:30:00,83.76,35.982,40.35,29.423000000000002 +2020-08-22 08:45:00,86.8,38.474000000000004,40.35,29.423000000000002 +2020-08-22 09:00:00,91.83,34.203,42.292,29.423000000000002 +2020-08-22 09:15:00,94.77,35.471,42.292,29.423000000000002 +2020-08-22 09:30:00,93.76,38.058,42.292,29.423000000000002 +2020-08-22 09:45:00,86.84,40.493,42.292,29.423000000000002 +2020-08-22 10:00:00,92.6,37.429,40.084,29.423000000000002 +2020-08-22 10:15:00,82.43,38.467,40.084,29.423000000000002 +2020-08-22 10:30:00,84.17,38.509,40.084,29.423000000000002 +2020-08-22 10:45:00,83.75,39.282,40.084,29.423000000000002 +2020-08-22 11:00:00,82.45,37.674,36.966,29.423000000000002 +2020-08-22 11:15:00,78.36,38.518,36.966,29.423000000000002 +2020-08-22 11:30:00,80.55,39.266,36.966,29.423000000000002 +2020-08-22 11:45:00,84.46,39.841,36.966,29.423000000000002 +2020-08-22 12:00:00,80.83,36.912,35.19,29.423000000000002 +2020-08-22 12:15:00,81.73,36.481,35.19,29.423000000000002 +2020-08-22 12:30:00,83.66,35.539,35.19,29.423000000000002 +2020-08-22 12:45:00,83.6,36.244,35.19,29.423000000000002 +2020-08-22 13:00:00,80.22,35.459,32.277,29.423000000000002 +2020-08-22 13:15:00,81.83,35.946,32.277,29.423000000000002 +2020-08-22 13:30:00,79.68,35.398,32.277,29.423000000000002 +2020-08-22 13:45:00,76.05,34.327,32.277,29.423000000000002 +2020-08-22 14:00:00,76.01,34.762,31.436999999999998,29.423000000000002 +2020-08-22 14:15:00,76.05,33.229,31.436999999999998,29.423000000000002 +2020-08-22 14:30:00,73.17,33.400999999999996,31.436999999999998,29.423000000000002 +2020-08-22 14:45:00,73.18,33.904,31.436999999999998,29.423000000000002 +2020-08-22 15:00:00,73.62,35.177,33.493,29.423000000000002 +2020-08-22 15:15:00,75.64,33.522,33.493,29.423000000000002 +2020-08-22 15:30:00,75.93,32.013000000000005,33.493,29.423000000000002 +2020-08-22 15:45:00,75.66,30.217,33.493,29.423000000000002 +2020-08-22 16:00:00,74.81,33.667,36.593,29.423000000000002 +2020-08-22 16:15:00,75.25,33.234,36.593,29.423000000000002 +2020-08-22 16:30:00,75.96,33.058,36.593,29.423000000000002 +2020-08-22 16:45:00,78.59,30.281,36.593,29.423000000000002 +2020-08-22 17:00:00,80.01,33.37,42.049,29.423000000000002 +2020-08-22 17:15:00,81.17,32.102,42.049,29.423000000000002 +2020-08-22 17:30:00,80.84,31.496,42.049,29.423000000000002 +2020-08-22 17:45:00,79.99,31.468000000000004,42.049,29.423000000000002 +2020-08-22 18:00:00,83.24,35.213,43.755,29.423000000000002 +2020-08-22 18:15:00,78.95,35.67,43.755,29.423000000000002 +2020-08-22 18:30:00,78.74,35.183,43.755,29.423000000000002 +2020-08-22 18:45:00,79.68,35.374,43.755,29.423000000000002 +2020-08-22 19:00:00,79.36,35.782,44.492,29.423000000000002 +2020-08-22 19:15:00,78.0,34.344,44.492,29.423000000000002 +2020-08-22 19:30:00,78.76,34.03,44.492,29.423000000000002 +2020-08-22 19:45:00,78.12,34.227,44.492,29.423000000000002 +2020-08-22 20:00:00,75.97,31.935,40.896,29.423000000000002 +2020-08-22 20:15:00,75.27,31.884,40.896,29.423000000000002 +2020-08-22 20:30:00,77.26,30.746,40.896,29.423000000000002 +2020-08-22 20:45:00,74.04,31.799,40.896,29.423000000000002 +2020-08-22 21:00:00,72.99,30.090999999999998,39.056,29.423000000000002 +2020-08-22 21:15:00,69.37,32.803000000000004,39.056,29.423000000000002 +2020-08-22 21:30:00,65.99,33.161,39.056,29.423000000000002 +2020-08-22 21:45:00,65.64,32.949,39.056,29.423000000000002 +2020-08-22 22:00:00,62.66,30.133000000000003,38.478,29.423000000000002 +2020-08-22 22:15:00,62.96,31.954,38.478,29.423000000000002 +2020-08-22 22:30:00,60.65,30.666999999999998,38.478,29.423000000000002 +2020-08-22 22:45:00,60.45,28.648000000000003,38.478,29.423000000000002 +2020-08-22 23:00:00,57.7,27.596,32.953,29.423000000000002 +2020-08-22 23:15:00,56.86,25.565,32.953,29.423000000000002 +2020-08-22 23:30:00,56.41,25.7,32.953,29.423000000000002 +2020-08-22 23:45:00,56.12,25.105,32.953,29.423000000000002 +2020-08-23 00:00:00,54.05,21.918000000000003,28.584,29.423000000000002 +2020-08-23 00:15:00,54.14,21.205,28.584,29.423000000000002 +2020-08-23 00:30:00,51.82,20.051,28.584,29.423000000000002 +2020-08-23 00:45:00,52.75,19.846,28.584,29.423000000000002 +2020-08-23 01:00:00,50.79,19.685,26.419,29.423000000000002 +2020-08-23 01:15:00,51.91,18.892,26.419,29.423000000000002 +2020-08-23 01:30:00,52.0,17.651,26.419,29.423000000000002 +2020-08-23 01:45:00,51.21,17.939,26.419,29.423000000000002 +2020-08-23 02:00:00,49.98,17.88,25.335,29.423000000000002 +2020-08-23 02:15:00,49.28,17.148,25.335,29.423000000000002 +2020-08-23 02:30:00,49.62,18.421,25.335,29.423000000000002 +2020-08-23 02:45:00,50.01,18.914,25.335,29.423000000000002 +2020-08-23 03:00:00,49.63,19.677,24.805,29.423000000000002 +2020-08-23 03:15:00,50.61,18.027,24.805,29.423000000000002 +2020-08-23 03:30:00,51.05,17.143,24.805,29.423000000000002 +2020-08-23 03:45:00,51.04,18.202,24.805,29.423000000000002 +2020-08-23 04:00:00,52.83,20.862,25.772,29.423000000000002 +2020-08-23 04:15:00,53.3,23.68,25.772,29.423000000000002 +2020-08-23 04:30:00,53.83,21.873,25.772,29.423000000000002 +2020-08-23 04:45:00,55.23,21.249000000000002,25.772,29.423000000000002 +2020-08-23 05:00:00,53.76,25.686999999999998,25.971999999999998,29.423000000000002 +2020-08-23 05:15:00,53.31,22.923000000000002,25.971999999999998,29.423000000000002 +2020-08-23 05:30:00,52.98,19.655,25.971999999999998,29.423000000000002 +2020-08-23 05:45:00,54.2,20.352,25.971999999999998,29.423000000000002 +2020-08-23 06:00:00,55.52,28.631999999999998,26.026,29.423000000000002 +2020-08-23 06:15:00,56.17,36.676,26.026,29.423000000000002 +2020-08-23 06:30:00,57.6,32.996,26.026,29.423000000000002 +2020-08-23 06:45:00,58.37,31.48,26.026,29.423000000000002 +2020-08-23 07:00:00,60.01,31.19,27.396,29.423000000000002 +2020-08-23 07:15:00,59.93,30.531,27.396,29.423000000000002 +2020-08-23 07:30:00,61.88,29.76,27.396,29.423000000000002 +2020-08-23 07:45:00,62.61,31.128,27.396,29.423000000000002 +2020-08-23 08:00:00,63.28,30.125999999999998,30.791999999999998,29.423000000000002 +2020-08-23 08:15:00,61.72,33.788000000000004,30.791999999999998,29.423000000000002 +2020-08-23 08:30:00,60.05,34.823,30.791999999999998,29.423000000000002 +2020-08-23 08:45:00,60.37,37.19,30.791999999999998,29.423000000000002 +2020-08-23 09:00:00,57.88,32.838,32.482,29.423000000000002 +2020-08-23 09:15:00,58.54,33.64,32.482,29.423000000000002 +2020-08-23 09:30:00,61.36,36.603,32.482,29.423000000000002 +2020-08-23 09:45:00,64.5,39.924,32.482,29.423000000000002 +2020-08-23 10:00:00,65.45,37.297,31.951,29.423000000000002 +2020-08-23 10:15:00,63.8,38.42,31.951,29.423000000000002 +2020-08-23 10:30:00,69.36,38.641,31.951,29.423000000000002 +2020-08-23 10:45:00,69.5,40.378,31.951,29.423000000000002 +2020-08-23 11:00:00,68.42,38.444,33.619,29.423000000000002 +2020-08-23 11:15:00,68.97,38.867,33.619,29.423000000000002 +2020-08-23 11:30:00,65.45,40.113,33.619,29.423000000000002 +2020-08-23 11:45:00,65.73,40.89,33.619,29.423000000000002 +2020-08-23 12:00:00,62.07,38.953,30.975,29.423000000000002 +2020-08-23 12:15:00,60.77,37.865,30.975,29.423000000000002 +2020-08-23 12:30:00,57.24,37.19,30.975,29.423000000000002 +2020-08-23 12:45:00,59.1,37.333,30.975,29.423000000000002 +2020-08-23 13:00:00,54.41,36.266999999999996,27.956999999999997,29.423000000000002 +2020-08-23 13:15:00,56.3,36.116,27.956999999999997,29.423000000000002 +2020-08-23 13:30:00,54.14,34.552,27.956999999999997,29.423000000000002 +2020-08-23 13:45:00,57.34,34.536,27.956999999999997,29.423000000000002 +2020-08-23 14:00:00,54.95,36.039,25.555999999999997,29.423000000000002 +2020-08-23 14:15:00,55.93,34.866,25.555999999999997,29.423000000000002 +2020-08-23 14:30:00,53.34,33.878,25.555999999999997,29.423000000000002 +2020-08-23 14:45:00,52.83,33.415,25.555999999999997,29.423000000000002 +2020-08-23 15:00:00,52.56,34.832,26.271,29.423000000000002 +2020-08-23 15:15:00,52.26,32.414,26.271,29.423000000000002 +2020-08-23 15:30:00,53.99,30.730999999999998,26.271,29.423000000000002 +2020-08-23 15:45:00,55.72,29.178,26.271,29.423000000000002 +2020-08-23 16:00:00,60.31,31.070999999999998,30.369,29.423000000000002 +2020-08-23 16:15:00,60.83,30.884,30.369,29.423000000000002 +2020-08-23 16:30:00,63.75,31.62,30.369,29.423000000000002 +2020-08-23 16:45:00,67.7,28.939,30.369,29.423000000000002 +2020-08-23 17:00:00,71.4,32.325,38.787,29.423000000000002 +2020-08-23 17:15:00,73.13,32.479,38.787,29.423000000000002 +2020-08-23 17:30:00,74.84,32.615,38.787,29.423000000000002 +2020-08-23 17:45:00,76.19,32.934,38.787,29.423000000000002 +2020-08-23 18:00:00,78.8,37.244,41.886,29.423000000000002 +2020-08-23 18:15:00,78.18,37.311,41.886,29.423000000000002 +2020-08-23 18:30:00,76.17,36.661,41.886,29.423000000000002 +2020-08-23 18:45:00,77.31,36.91,41.886,29.423000000000002 +2020-08-23 19:00:00,79.28,39.316,42.91,29.423000000000002 +2020-08-23 19:15:00,79.78,36.865,42.91,29.423000000000002 +2020-08-23 19:30:00,81.08,36.332,42.91,29.423000000000002 +2020-08-23 19:45:00,80.3,36.093,42.91,29.423000000000002 +2020-08-23 20:00:00,79.94,33.946999999999996,42.148999999999994,29.423000000000002 +2020-08-23 20:15:00,79.46,33.751,42.148999999999994,29.423000000000002 +2020-08-23 20:30:00,78.65,33.303000000000004,42.148999999999994,29.423000000000002 +2020-08-23 20:45:00,78.43,32.828,42.148999999999994,29.423000000000002 +2020-08-23 21:00:00,77.51,31.070999999999998,40.955999999999996,29.423000000000002 +2020-08-23 21:15:00,78.17,33.514,40.955999999999996,29.423000000000002 +2020-08-23 21:30:00,74.81,33.278,40.955999999999996,29.423000000000002 +2020-08-23 21:45:00,74.82,33.356,40.955999999999996,29.423000000000002 +2020-08-23 22:00:00,70.62,32.385999999999996,39.873000000000005,29.423000000000002 +2020-08-23 22:15:00,71.54,32.687,39.873000000000005,29.423000000000002 +2020-08-23 22:30:00,70.08,30.976999999999997,39.873000000000005,29.423000000000002 +2020-08-23 22:45:00,70.5,27.828000000000003,39.873000000000005,29.423000000000002 +2020-08-23 23:00:00,65.77,26.604,35.510999999999996,29.423000000000002 +2020-08-23 23:15:00,68.03,25.668000000000003,35.510999999999996,29.423000000000002 +2020-08-23 23:30:00,68.09,25.31,35.510999999999996,29.423000000000002 +2020-08-23 23:45:00,67.17,24.844,35.510999999999996,29.423000000000002 +2020-08-24 00:00:00,61.92,23.346999999999998,33.475,29.535 +2020-08-24 00:15:00,61.51,23.287,33.475,29.535 +2020-08-24 00:30:00,62.23,21.79,33.475,29.535 +2020-08-24 00:45:00,64.91,21.246,33.475,29.535 +2020-08-24 01:00:00,63.88,21.413,33.111,29.535 +2020-08-24 01:15:00,64.28,20.656,33.111,29.535 +2020-08-24 01:30:00,63.48,19.754,33.111,29.535 +2020-08-24 01:45:00,64.2,19.951,33.111,29.535 +2020-08-24 02:00:00,63.59,20.304000000000002,32.358000000000004,29.535 +2020-08-24 02:15:00,65.17,18.646,32.358000000000004,29.535 +2020-08-24 02:30:00,66.78,20.039,32.358000000000004,29.535 +2020-08-24 02:45:00,69.86,20.409000000000002,32.358000000000004,29.535 +2020-08-24 03:00:00,74.42,21.589000000000002,30.779,29.535 +2020-08-24 03:15:00,75.12,20.570999999999998,30.779,29.535 +2020-08-24 03:30:00,69.75,20.315,30.779,29.535 +2020-08-24 03:45:00,71.44,20.962,30.779,29.535 +2020-08-24 04:00:00,77.38,26.358,31.416,29.535 +2020-08-24 04:15:00,84.0,31.753,31.416,29.535 +2020-08-24 04:30:00,88.97,29.471,31.416,29.535 +2020-08-24 04:45:00,90.63,29.182,31.416,29.535 +2020-08-24 05:00:00,92.59,39.953,37.221,29.535 +2020-08-24 05:15:00,98.51,46.222,37.221,29.535 +2020-08-24 05:30:00,97.7,41.567,37.221,29.535 +2020-08-24 05:45:00,106.99,39.55,37.221,29.535 +2020-08-24 06:00:00,114.75,38.809,51.891000000000005,29.535 +2020-08-24 06:15:00,115.62,38.935,51.891000000000005,29.535 +2020-08-24 06:30:00,114.57,38.699,51.891000000000005,29.535 +2020-08-24 06:45:00,111.02,41.791000000000004,51.891000000000005,29.535 +2020-08-24 07:00:00,116.17,41.681999999999995,62.282,29.535 +2020-08-24 07:15:00,117.57,43.071000000000005,62.282,29.535 +2020-08-24 07:30:00,116.26,41.563,62.282,29.535 +2020-08-24 07:45:00,111.86,43.251999999999995,62.282,29.535 +2020-08-24 08:00:00,112.24,40.347,54.102,29.535 +2020-08-24 08:15:00,110.91,42.93600000000001,54.102,29.535 +2020-08-24 08:30:00,107.9,43.183,54.102,29.535 +2020-08-24 08:45:00,106.7,45.798,54.102,29.535 +2020-08-24 09:00:00,103.97,40.516999999999996,50.917,29.535 +2020-08-24 09:15:00,112.8,39.77,50.917,29.535 +2020-08-24 09:30:00,109.89,41.897,50.917,29.535 +2020-08-24 09:45:00,115.07,43.108000000000004,50.917,29.535 +2020-08-24 10:00:00,107.02,40.842,49.718999999999994,29.535 +2020-08-24 10:15:00,116.52,41.815,49.718999999999994,29.535 +2020-08-24 10:30:00,119.9,41.635,49.718999999999994,29.535 +2020-08-24 10:45:00,119.31,41.896,49.718999999999994,29.535 +2020-08-24 11:00:00,116.15,40.231,49.833999999999996,29.535 +2020-08-24 11:15:00,121.04,40.848,49.833999999999996,29.535 +2020-08-24 11:30:00,121.33,42.687,49.833999999999996,29.535 +2020-08-24 11:45:00,120.83,43.92,49.833999999999996,29.535 +2020-08-24 12:00:00,115.38,40.277,47.832,29.535 +2020-08-24 12:15:00,118.08,39.281,47.832,29.535 +2020-08-24 12:30:00,110.62,37.626999999999995,47.832,29.535 +2020-08-24 12:45:00,109.16,37.7,47.832,29.535 +2020-08-24 13:00:00,106.38,37.482,48.03,29.535 +2020-08-24 13:15:00,100.21,36.554,48.03,29.535 +2020-08-24 13:30:00,103.29,35.159,48.03,29.535 +2020-08-24 13:45:00,105.95,35.975,48.03,29.535 +2020-08-24 14:00:00,103.3,36.626999999999995,48.157,29.535 +2020-08-24 14:15:00,99.66,36.027,48.157,29.535 +2020-08-24 14:30:00,103.17,34.923,48.157,29.535 +2020-08-24 14:45:00,110.25,36.366,48.157,29.535 +2020-08-24 15:00:00,115.96,37.335,48.897,29.535 +2020-08-24 15:15:00,112.33,34.433,48.897,29.535 +2020-08-24 15:30:00,104.1,33.501,48.897,29.535 +2020-08-24 15:45:00,99.37,31.523000000000003,48.897,29.535 +2020-08-24 16:00:00,108.59,34.434,51.446000000000005,29.535 +2020-08-24 16:15:00,110.63,34.338,51.446000000000005,29.535 +2020-08-24 16:30:00,113.83,34.496,51.446000000000005,29.535 +2020-08-24 16:45:00,113.22,31.912,51.446000000000005,29.535 +2020-08-24 17:00:00,108.34,34.234,57.507,29.535 +2020-08-24 17:15:00,106.39,34.789,57.507,29.535 +2020-08-24 17:30:00,107.38,34.6,57.507,29.535 +2020-08-24 17:45:00,112.93,34.635999999999996,57.507,29.535 +2020-08-24 18:00:00,113.44,37.981,57.896,29.535 +2020-08-24 18:15:00,110.9,36.451,57.896,29.535 +2020-08-24 18:30:00,108.43,35.108000000000004,57.896,29.535 +2020-08-24 18:45:00,106.18,38.216,57.896,29.535 +2020-08-24 19:00:00,105.21,40.431,57.891999999999996,29.535 +2020-08-24 19:15:00,109.56,39.202,57.891999999999996,29.535 +2020-08-24 19:30:00,106.94,38.328,57.891999999999996,29.535 +2020-08-24 19:45:00,101.03,37.554,57.891999999999996,29.535 +2020-08-24 20:00:00,100.29,34.311,64.57300000000001,29.535 +2020-08-24 20:15:00,98.55,35.45,64.57300000000001,29.535 +2020-08-24 20:30:00,97.25,35.505,64.57300000000001,29.535 +2020-08-24 20:45:00,101.29,35.153,64.57300000000001,29.535 +2020-08-24 21:00:00,99.14,32.809,59.431999999999995,29.535 +2020-08-24 21:15:00,93.54,35.671,59.431999999999995,29.535 +2020-08-24 21:30:00,84.27,35.83,59.431999999999995,29.535 +2020-08-24 21:45:00,83.92,35.689,59.431999999999995,29.535 +2020-08-24 22:00:00,75.13,32.900999999999996,51.519,29.535 +2020-08-24 22:15:00,79.97,35.023,51.519,29.535 +2020-08-24 22:30:00,74.93,29.565,51.519,29.535 +2020-08-24 22:45:00,75.97,26.509,51.519,29.535 +2020-08-24 23:00:00,72.01,25.331,44.501000000000005,29.535 +2020-08-24 23:15:00,73.98,22.824,44.501000000000005,29.535 +2020-08-24 23:30:00,73.76,22.38,44.501000000000005,29.535 +2020-08-24 23:45:00,72.64,21.371,44.501000000000005,29.535 +2020-08-25 00:00:00,71.72,21.445,44.522,29.535 +2020-08-25 00:15:00,71.62,22.142,44.522,29.535 +2020-08-25 00:30:00,70.03,21.316999999999997,44.522,29.535 +2020-08-25 00:45:00,71.88,21.523000000000003,44.522,29.535 +2020-08-25 01:00:00,71.19,21.183000000000003,41.441,29.535 +2020-08-25 01:15:00,72.36,20.55,41.441,29.535 +2020-08-25 01:30:00,70.95,19.538,41.441,29.535 +2020-08-25 01:45:00,71.76,19.262,41.441,29.535 +2020-08-25 02:00:00,70.7,19.179000000000002,40.203,29.535 +2020-08-25 02:15:00,69.84,18.6,40.203,29.535 +2020-08-25 02:30:00,70.82,19.628,40.203,29.535 +2020-08-25 02:45:00,70.92,20.293,40.203,29.535 +2020-08-25 03:00:00,72.33,20.983,39.536,29.535 +2020-08-25 03:15:00,72.62,20.854,39.536,29.535 +2020-08-25 03:30:00,75.29,20.564,39.536,29.535 +2020-08-25 03:45:00,77.05,20.184,39.536,29.535 +2020-08-25 04:00:00,84.41,24.456,40.759,29.535 +2020-08-25 04:15:00,89.97,29.886,40.759,29.535 +2020-08-25 04:30:00,92.14,27.509,40.759,29.535 +2020-08-25 04:45:00,92.03,27.641,40.759,29.535 +2020-08-25 05:00:00,99.0,39.819,43.623999999999995,29.535 +2020-08-25 05:15:00,107.55,46.723,43.623999999999995,29.535 +2020-08-25 05:30:00,109.53,42.256,43.623999999999995,29.535 +2020-08-25 05:45:00,114.17,39.54,43.623999999999995,29.535 +2020-08-25 06:00:00,113.12,39.746,52.684,29.535 +2020-08-25 06:15:00,114.58,40.044000000000004,52.684,29.535 +2020-08-25 06:30:00,116.2,39.524,52.684,29.535 +2020-08-25 06:45:00,116.67,41.817,52.684,29.535 +2020-08-25 07:00:00,123.26,41.85,62.676,29.535 +2020-08-25 07:15:00,127.76,43.023,62.676,29.535 +2020-08-25 07:30:00,128.42,41.568000000000005,62.676,29.535 +2020-08-25 07:45:00,121.39,42.361999999999995,62.676,29.535 +2020-08-25 08:00:00,117.12,39.391,56.161,29.535 +2020-08-25 08:15:00,112.74,41.563,56.161,29.535 +2020-08-25 08:30:00,113.5,41.963,56.161,29.535 +2020-08-25 08:45:00,116.16,43.723,56.161,29.535 +2020-08-25 09:00:00,118.01,38.784,52.132,29.535 +2020-08-25 09:15:00,126.14,37.858000000000004,52.132,29.535 +2020-08-25 09:30:00,124.08,40.582,52.132,29.535 +2020-08-25 09:45:00,118.84,43.004,52.132,29.535 +2020-08-25 10:00:00,117.53,39.493,51.032,29.535 +2020-08-25 10:15:00,121.68,40.346,51.032,29.535 +2020-08-25 10:30:00,120.94,40.177,51.032,29.535 +2020-08-25 10:45:00,113.26,41.349,51.032,29.535 +2020-08-25 11:00:00,109.61,39.652,51.085,29.535 +2020-08-25 11:15:00,117.1,40.645,51.085,29.535 +2020-08-25 11:30:00,122.66,41.457,51.085,29.535 +2020-08-25 11:45:00,124.89,42.236000000000004,51.085,29.535 +2020-08-25 12:00:00,115.6,38.455,49.049,29.535 +2020-08-25 12:15:00,113.66,37.78,49.049,29.535 +2020-08-25 12:30:00,120.05,36.912,49.049,29.535 +2020-08-25 12:45:00,118.16,37.631,49.049,29.535 +2020-08-25 13:00:00,117.18,37.067,49.722,29.535 +2020-08-25 13:15:00,108.95,37.815,49.722,29.535 +2020-08-25 13:30:00,104.14,36.343,49.722,29.535 +2020-08-25 13:45:00,104.85,36.264,49.722,29.535 +2020-08-25 14:00:00,109.46,37.303000000000004,49.565,29.535 +2020-08-25 14:15:00,108.21,36.518,49.565,29.535 +2020-08-25 14:30:00,106.98,35.711,49.565,29.535 +2020-08-25 14:45:00,101.38,36.424,49.565,29.535 +2020-08-25 15:00:00,98.49,37.22,51.108999999999995,29.535 +2020-08-25 15:15:00,103.6,35.174,51.108999999999995,29.535 +2020-08-25 15:30:00,106.69,34.051,51.108999999999995,29.535 +2020-08-25 15:45:00,107.37,32.419000000000004,51.108999999999995,29.535 +2020-08-25 16:00:00,106.02,34.625,52.725,29.535 +2020-08-25 16:15:00,105.04,34.601,52.725,29.535 +2020-08-25 16:30:00,111.46,34.395,52.725,29.535 +2020-08-25 16:45:00,113.59,32.505,52.725,29.535 +2020-08-25 17:00:00,115.04,34.974000000000004,58.031000000000006,29.535 +2020-08-25 17:15:00,109.32,35.943000000000005,58.031000000000006,29.535 +2020-08-25 17:30:00,115.28,35.338,58.031000000000006,29.535 +2020-08-25 17:45:00,115.65,35.104,58.031000000000006,29.535 +2020-08-25 18:00:00,116.18,37.575,58.338,29.535 +2020-08-25 18:15:00,111.28,37.442,58.338,29.535 +2020-08-25 18:30:00,110.08,35.876999999999995,58.338,29.535 +2020-08-25 18:45:00,108.95,38.782,58.338,29.535 +2020-08-25 19:00:00,112.98,39.938,58.464,29.535 +2020-08-25 19:15:00,115.45,38.88,58.464,29.535 +2020-08-25 19:30:00,112.47,37.827,58.464,29.535 +2020-08-25 19:45:00,107.22,37.361999999999995,58.464,29.535 +2020-08-25 20:00:00,101.92,34.48,63.708,29.535 +2020-08-25 20:15:00,107.45,34.316,63.708,29.535 +2020-08-25 20:30:00,106.27,34.363,63.708,29.535 +2020-08-25 20:45:00,103.99,34.378,63.708,29.535 +2020-08-25 21:00:00,94.4,32.854,57.06399999999999,29.535 +2020-08-25 21:15:00,95.17,34.338,57.06399999999999,29.535 +2020-08-25 21:30:00,89.29,34.676,57.06399999999999,29.535 +2020-08-25 21:45:00,87.19,34.677,57.06399999999999,29.535 +2020-08-25 22:00:00,78.39,31.979,52.831,29.535 +2020-08-25 22:15:00,81.0,33.783,52.831,29.535 +2020-08-25 22:30:00,76.91,28.561,52.831,29.535 +2020-08-25 22:45:00,80.86,25.493000000000002,52.831,29.535 +2020-08-25 23:00:00,74.5,23.654,44.717,29.535 +2020-08-25 23:15:00,72.88,22.587,44.717,29.535 +2020-08-25 23:30:00,72.05,22.16,44.717,29.535 +2020-08-25 23:45:00,72.32,21.335,44.717,29.535 +2020-08-26 00:00:00,71.27,21.596,41.263000000000005,29.535 +2020-08-26 00:15:00,72.44,22.294,41.263000000000005,29.535 +2020-08-26 00:30:00,72.68,21.475,41.263000000000005,29.535 +2020-08-26 00:45:00,73.43,21.688000000000002,41.263000000000005,29.535 +2020-08-26 01:00:00,69.7,21.326,38.448,29.535 +2020-08-26 01:15:00,71.13,20.708000000000002,38.448,29.535 +2020-08-26 01:30:00,67.88,19.711,38.448,29.535 +2020-08-26 01:45:00,71.52,19.434,38.448,29.535 +2020-08-26 02:00:00,69.26,19.352999999999998,36.471,29.535 +2020-08-26 02:15:00,69.62,18.797,36.471,29.535 +2020-08-26 02:30:00,70.17,19.801,36.471,29.535 +2020-08-26 02:45:00,71.2,20.463,36.471,29.535 +2020-08-26 03:00:00,72.48,21.142,36.042,29.535 +2020-08-26 03:15:00,72.93,21.028000000000002,36.042,29.535 +2020-08-26 03:30:00,74.6,20.743000000000002,36.042,29.535 +2020-08-26 03:45:00,77.43,20.357,36.042,29.535 +2020-08-26 04:00:00,82.27,24.653000000000002,36.705,29.535 +2020-08-26 04:15:00,88.85,30.103,36.705,29.535 +2020-08-26 04:30:00,91.76,27.734,36.705,29.535 +2020-08-26 04:45:00,93.35,27.868000000000002,36.705,29.535 +2020-08-26 05:00:00,101.37,40.118,39.716,29.535 +2020-08-26 05:15:00,108.33,47.097,39.716,29.535 +2020-08-26 05:30:00,110.12,42.623000000000005,39.716,29.535 +2020-08-26 05:45:00,111.53,39.868,39.716,29.535 +2020-08-26 06:00:00,112.68,40.042,52.756,29.535 +2020-08-26 06:15:00,116.55,40.361999999999995,52.756,29.535 +2020-08-26 06:30:00,120.01,39.836999999999996,52.756,29.535 +2020-08-26 06:45:00,121.27,42.13,52.756,29.535 +2020-08-26 07:00:00,119.57,42.163000000000004,65.977,29.535 +2020-08-26 07:15:00,114.72,43.35,65.977,29.535 +2020-08-26 07:30:00,121.57,41.919,65.977,29.535 +2020-08-26 07:45:00,118.18,42.715,65.977,29.535 +2020-08-26 08:00:00,118.81,39.744,57.927,29.535 +2020-08-26 08:15:00,116.2,41.883,57.927,29.535 +2020-08-26 08:30:00,118.47,42.278,57.927,29.535 +2020-08-26 08:45:00,117.16,44.023999999999994,57.927,29.535 +2020-08-26 09:00:00,113.77,39.093,54.86,29.535 +2020-08-26 09:15:00,109.86,38.158,54.86,29.535 +2020-08-26 09:30:00,114.74,40.864000000000004,54.86,29.535 +2020-08-26 09:45:00,115.54,43.261,54.86,29.535 +2020-08-26 10:00:00,115.19,39.749,52.818000000000005,29.535 +2020-08-26 10:15:00,109.01,40.578,52.818000000000005,29.535 +2020-08-26 10:30:00,111.28,40.4,52.818000000000005,29.535 +2020-08-26 10:45:00,114.2,41.563,52.818000000000005,29.535 +2020-08-26 11:00:00,112.86,39.876,52.937,29.535 +2020-08-26 11:15:00,109.67,40.861,52.937,29.535 +2020-08-26 11:30:00,106.25,41.67,52.937,29.535 +2020-08-26 11:45:00,111.83,42.434,52.937,29.535 +2020-08-26 12:00:00,109.68,38.638000000000005,50.826,29.535 +2020-08-26 12:15:00,109.43,37.951,50.826,29.535 +2020-08-26 12:30:00,102.87,37.102,50.826,29.535 +2020-08-26 12:45:00,108.4,37.808,50.826,29.535 +2020-08-26 13:00:00,105.9,37.226,50.556000000000004,29.535 +2020-08-26 13:15:00,105.95,37.961999999999996,50.556000000000004,29.535 +2020-08-26 13:30:00,101.59,36.486999999999995,50.556000000000004,29.535 +2020-08-26 13:45:00,99.54,36.418,50.556000000000004,29.535 +2020-08-26 14:00:00,100.94,37.431999999999995,51.188,29.535 +2020-08-26 14:15:00,105.78,36.654,51.188,29.535 +2020-08-26 14:30:00,108.59,35.864000000000004,51.188,29.535 +2020-08-26 14:45:00,109.21,36.579,51.188,29.535 +2020-08-26 15:00:00,104.05,37.327,52.976000000000006,29.535 +2020-08-26 15:15:00,107.09,35.291,52.976000000000006,29.535 +2020-08-26 15:30:00,108.02,34.181,52.976000000000006,29.535 +2020-08-26 15:45:00,108.26,32.556,52.976000000000006,29.535 +2020-08-26 16:00:00,107.58,34.734,55.463,29.535 +2020-08-26 16:15:00,106.64,34.72,55.463,29.535 +2020-08-26 16:30:00,106.57,34.516,55.463,29.535 +2020-08-26 16:45:00,108.55,32.669000000000004,55.463,29.535 +2020-08-26 17:00:00,113.88,35.105,59.435,29.535 +2020-08-26 17:15:00,118.13,36.104,59.435,29.535 +2020-08-26 17:30:00,118.87,35.510999999999996,59.435,29.535 +2020-08-26 17:45:00,113.11,35.313,59.435,29.535 +2020-08-26 18:00:00,113.43,37.775,61.387,29.535 +2020-08-26 18:15:00,112.92,37.656,61.387,29.535 +2020-08-26 18:30:00,117.05,36.104,61.387,29.535 +2020-08-26 18:45:00,113.66,39.007,61.387,29.535 +2020-08-26 19:00:00,116.87,40.169000000000004,63.323,29.535 +2020-08-26 19:15:00,114.49,39.111,63.323,29.535 +2020-08-26 19:30:00,115.09,38.061,63.323,29.535 +2020-08-26 19:45:00,114.82,37.6,63.323,29.535 +2020-08-26 20:00:00,107.23,34.726,69.083,29.535 +2020-08-26 20:15:00,102.55,34.564,69.083,29.535 +2020-08-26 20:30:00,99.74,34.594,69.083,29.535 +2020-08-26 20:45:00,99.86,34.573,69.083,29.535 +2020-08-26 21:00:00,92.47,33.052,59.957,29.535 +2020-08-26 21:15:00,89.95,34.527,59.957,29.535 +2020-08-26 21:30:00,86.5,34.865,59.957,29.535 +2020-08-26 21:45:00,86.61,34.833,59.957,29.535 +2020-08-26 22:00:00,81.97,32.114000000000004,53.821000000000005,29.535 +2020-08-26 22:15:00,83.28,33.902,53.821000000000005,29.535 +2020-08-26 22:30:00,79.53,28.649,53.821000000000005,29.535 +2020-08-26 22:45:00,84.8,25.583000000000002,53.821000000000005,29.535 +2020-08-26 23:00:00,81.23,23.787,45.458,29.535 +2020-08-26 23:15:00,79.13,22.703000000000003,45.458,29.535 +2020-08-26 23:30:00,78.99,22.287,45.458,29.535 +2020-08-26 23:45:00,78.9,21.468000000000004,45.458,29.535 +2020-08-27 00:00:00,71.33,21.749000000000002,40.36,29.535 +2020-08-27 00:15:00,73.36,22.448,40.36,29.535 +2020-08-27 00:30:00,73.38,21.634,40.36,29.535 +2020-08-27 00:45:00,73.37,21.854,40.36,29.535 +2020-08-27 01:00:00,70.34,21.473000000000003,38.552,29.535 +2020-08-27 01:15:00,71.82,20.868000000000002,38.552,29.535 +2020-08-27 01:30:00,71.13,19.885,38.552,29.535 +2020-08-27 01:45:00,71.82,19.609,38.552,29.535 +2020-08-27 02:00:00,69.67,19.53,36.895,29.535 +2020-08-27 02:15:00,71.68,18.995,36.895,29.535 +2020-08-27 02:30:00,71.41,19.977,36.895,29.535 +2020-08-27 02:45:00,72.88,20.635,36.895,29.535 +2020-08-27 03:00:00,74.73,21.303,36.565,29.535 +2020-08-27 03:15:00,73.5,21.204,36.565,29.535 +2020-08-27 03:30:00,74.7,20.924,36.565,29.535 +2020-08-27 03:45:00,77.44,20.531,36.565,29.535 +2020-08-27 04:00:00,80.24,24.855,37.263000000000005,29.535 +2020-08-27 04:15:00,84.26,30.322,37.263000000000005,29.535 +2020-08-27 04:30:00,88.93,27.961,37.263000000000005,29.535 +2020-08-27 04:45:00,92.35,28.099,37.263000000000005,29.535 +2020-08-27 05:00:00,100.04,40.422,40.412,29.535 +2020-08-27 05:15:00,101.99,47.481,40.412,29.535 +2020-08-27 05:30:00,103.56,43.0,40.412,29.535 +2020-08-27 05:45:00,108.21,40.204,40.412,29.535 +2020-08-27 06:00:00,111.6,40.345,49.825,29.535 +2020-08-27 06:15:00,115.35,40.686,49.825,29.535 +2020-08-27 06:30:00,124.04,40.156,49.825,29.535 +2020-08-27 06:45:00,126.88,42.449,49.825,29.535 +2020-08-27 07:00:00,129.89,42.482,61.082,29.535 +2020-08-27 07:15:00,127.93,43.683,61.082,29.535 +2020-08-27 07:30:00,132.59,42.276,61.082,29.535 +2020-08-27 07:45:00,134.35,43.071999999999996,61.082,29.535 +2020-08-27 08:00:00,130.7,40.103,53.961999999999996,29.535 +2020-08-27 08:15:00,129.47,42.208999999999996,53.961999999999996,29.535 +2020-08-27 08:30:00,135.31,42.599,53.961999999999996,29.535 +2020-08-27 08:45:00,130.08,44.33,53.961999999999996,29.535 +2020-08-27 09:00:00,132.01,39.407,50.06100000000001,29.535 +2020-08-27 09:15:00,137.15,38.461999999999996,50.06100000000001,29.535 +2020-08-27 09:30:00,136.56,41.151,50.06100000000001,29.535 +2020-08-27 09:45:00,138.15,43.523999999999994,50.06100000000001,29.535 +2020-08-27 10:00:00,140.11,40.01,47.68,29.535 +2020-08-27 10:15:00,137.51,40.811,47.68,29.535 +2020-08-27 10:30:00,134.24,40.628,47.68,29.535 +2020-08-27 10:45:00,138.17,41.781000000000006,47.68,29.535 +2020-08-27 11:00:00,132.89,40.105,45.93899999999999,29.535 +2020-08-27 11:15:00,126.1,41.08,45.93899999999999,29.535 +2020-08-27 11:30:00,131.52,41.886,45.93899999999999,29.535 +2020-08-27 11:45:00,134.76,42.635,45.93899999999999,29.535 +2020-08-27 12:00:00,133.16,38.823,43.648999999999994,29.535 +2020-08-27 12:15:00,130.96,38.125,43.648999999999994,29.535 +2020-08-27 12:30:00,125.67,37.294000000000004,43.648999999999994,29.535 +2020-08-27 12:45:00,134.33,37.988,43.648999999999994,29.535 +2020-08-27 13:00:00,127.85,37.389,42.801,29.535 +2020-08-27 13:15:00,124.91,38.113,42.801,29.535 +2020-08-27 13:30:00,127.6,36.634,42.801,29.535 +2020-08-27 13:45:00,132.81,36.576,42.801,29.535 +2020-08-27 14:00:00,129.82,37.563,43.24,29.535 +2020-08-27 14:15:00,126.07,36.792,43.24,29.535 +2020-08-27 14:30:00,121.33,36.021,43.24,29.535 +2020-08-27 14:45:00,126.96,36.736999999999995,43.24,29.535 +2020-08-27 15:00:00,125.31,37.437,45.04600000000001,29.535 +2020-08-27 15:15:00,123.64,35.409,45.04600000000001,29.535 +2020-08-27 15:30:00,117.09,34.314,45.04600000000001,29.535 +2020-08-27 15:45:00,113.24,32.696,45.04600000000001,29.535 +2020-08-27 16:00:00,115.1,34.846,46.568000000000005,29.535 +2020-08-27 16:15:00,117.47,34.841,46.568000000000005,29.535 +2020-08-27 16:30:00,113.23,34.639,46.568000000000005,29.535 +2020-08-27 16:45:00,113.72,32.836999999999996,46.568000000000005,29.535 +2020-08-27 17:00:00,116.96,35.239000000000004,50.618,29.535 +2020-08-27 17:15:00,113.6,36.266999999999996,50.618,29.535 +2020-08-27 17:30:00,111.58,35.686,50.618,29.535 +2020-08-27 17:45:00,112.19,35.525999999999996,50.618,29.535 +2020-08-27 18:00:00,111.35,37.977,52.806999999999995,29.535 +2020-08-27 18:15:00,110.44,37.874,52.806999999999995,29.535 +2020-08-27 18:30:00,108.59,36.330999999999996,52.806999999999995,29.535 +2020-08-27 18:45:00,108.94,39.234,52.806999999999995,29.535 +2020-08-27 19:00:00,111.09,40.403,53.464,29.535 +2020-08-27 19:15:00,108.1,39.346,53.464,29.535 +2020-08-27 19:30:00,108.89,38.298,53.464,29.535 +2020-08-27 19:45:00,104.8,37.842,53.464,29.535 +2020-08-27 20:00:00,99.49,34.976,56.753,29.535 +2020-08-27 20:15:00,100.21,34.816,56.753,29.535 +2020-08-27 20:30:00,96.74,34.83,56.753,29.535 +2020-08-27 20:45:00,94.89,34.772,56.753,29.535 +2020-08-27 21:00:00,91.41,33.254,52.506,29.535 +2020-08-27 21:15:00,90.08,34.719,52.506,29.535 +2020-08-27 21:30:00,85.55,35.056999999999995,52.506,29.535 +2020-08-27 21:45:00,85.17,34.993,52.506,29.535 +2020-08-27 22:00:00,80.57,32.251999999999995,48.163000000000004,29.535 +2020-08-27 22:15:00,82.4,34.023,48.163000000000004,29.535 +2020-08-27 22:30:00,79.2,28.738000000000003,48.163000000000004,29.535 +2020-08-27 22:45:00,79.7,25.674,48.163000000000004,29.535 +2020-08-27 23:00:00,75.57,23.923000000000002,42.379,29.535 +2020-08-27 23:15:00,76.68,22.822,42.379,29.535 +2020-08-27 23:30:00,75.21,22.416,42.379,29.535 +2020-08-27 23:45:00,74.58,21.603,42.379,29.535 +2020-08-28 00:00:00,72.43,20.281,38.505,29.535 +2020-08-28 00:15:00,71.75,21.175,38.505,29.535 +2020-08-28 00:30:00,72.78,20.615,38.505,29.535 +2020-08-28 00:45:00,72.99,21.226999999999997,38.505,29.535 +2020-08-28 01:00:00,70.23,20.479,37.004,29.535 +2020-08-28 01:15:00,72.14,19.332,37.004,29.535 +2020-08-28 01:30:00,71.17,19.017,37.004,29.535 +2020-08-28 01:45:00,72.62,18.511,37.004,29.535 +2020-08-28 02:00:00,71.55,19.285,36.098,29.535 +2020-08-28 02:15:00,72.3,18.726,36.098,29.535 +2020-08-28 02:30:00,72.07,20.434,36.098,29.535 +2020-08-28 02:45:00,72.86,20.463,36.098,29.535 +2020-08-28 03:00:00,73.05,21.838,36.561,29.535 +2020-08-28 03:15:00,75.07,20.644000000000002,36.561,29.535 +2020-08-28 03:30:00,74.45,20.151,36.561,29.535 +2020-08-28 03:45:00,79.36,20.548000000000002,36.561,29.535 +2020-08-28 04:00:00,87.62,25.022,37.355,29.535 +2020-08-28 04:15:00,89.23,29.087,37.355,29.535 +2020-08-28 04:30:00,93.88,27.601,37.355,29.535 +2020-08-28 04:45:00,94.42,27.164,37.355,29.535 +2020-08-28 05:00:00,99.29,39.138000000000005,40.285,29.535 +2020-08-28 05:15:00,100.91,47.137,40.285,29.535 +2020-08-28 05:30:00,109.34,42.821999999999996,40.285,29.535 +2020-08-28 05:45:00,112.16,39.583,40.285,29.535 +2020-08-28 06:00:00,116.49,39.891999999999996,52.378,29.535 +2020-08-28 06:15:00,113.8,40.41,52.378,29.535 +2020-08-28 06:30:00,110.25,39.828,52.378,29.535 +2020-08-28 06:45:00,110.75,42.0,52.378,29.535 +2020-08-28 07:00:00,116.02,42.622,60.891999999999996,29.535 +2020-08-28 07:15:00,113.76,44.653,60.891999999999996,29.535 +2020-08-28 07:30:00,113.32,41.505,60.891999999999996,29.535 +2020-08-28 07:45:00,116.11,42.113,60.891999999999996,29.535 +2020-08-28 08:00:00,110.53,39.859,53.652,29.535 +2020-08-28 08:15:00,110.47,42.542,53.652,29.535 +2020-08-28 08:30:00,118.74,42.833,53.652,29.535 +2020-08-28 08:45:00,118.78,44.428000000000004,53.652,29.535 +2020-08-28 09:00:00,114.6,37.416,51.456,29.535 +2020-08-28 09:15:00,109.6,38.2,51.456,29.535 +2020-08-28 09:30:00,106.67,40.25,51.456,29.535 +2020-08-28 09:45:00,107.3,42.948,51.456,29.535 +2020-08-28 10:00:00,110.6,39.293,49.4,29.535 +2020-08-28 10:15:00,108.84,39.86,49.4,29.535 +2020-08-28 10:30:00,109.67,40.172,49.4,29.535 +2020-08-28 10:45:00,104.36,41.235,49.4,29.535 +2020-08-28 11:00:00,105.31,39.806999999999995,48.773,29.535 +2020-08-28 11:15:00,104.1,39.791,48.773,29.535 +2020-08-28 11:30:00,102.59,40.239000000000004,48.773,29.535 +2020-08-28 11:45:00,100.47,40.095,48.773,29.535 +2020-08-28 12:00:00,97.94,36.64,46.033,29.535 +2020-08-28 12:15:00,100.85,35.379,46.033,29.535 +2020-08-28 12:30:00,98.11,34.671,46.033,29.535 +2020-08-28 12:45:00,98.83,34.62,46.033,29.535 +2020-08-28 13:00:00,96.79,34.536,44.38399999999999,29.535 +2020-08-28 13:15:00,98.89,35.403,44.38399999999999,29.535 +2020-08-28 13:30:00,109.7,34.647,44.38399999999999,29.535 +2020-08-28 13:45:00,107.01,34.881,44.38399999999999,29.535 +2020-08-28 14:00:00,107.86,35.121,43.162,29.535 +2020-08-28 14:15:00,106.56,34.760999999999996,43.162,29.535 +2020-08-28 14:30:00,110.38,35.385,43.162,29.535 +2020-08-28 14:45:00,113.12,35.463,43.162,29.535 +2020-08-28 15:00:00,113.59,36.05,44.91,29.535 +2020-08-28 15:15:00,109.31,33.82,44.91,29.535 +2020-08-28 15:30:00,109.09,32.246,44.91,29.535 +2020-08-28 15:45:00,113.5,31.334,44.91,29.535 +2020-08-28 16:00:00,117.73,32.688,47.489,29.535 +2020-08-28 16:15:00,114.05,33.139,47.489,29.535 +2020-08-28 16:30:00,111.88,32.772,47.489,29.535 +2020-08-28 16:45:00,110.29,30.296,47.489,29.535 +2020-08-28 17:00:00,116.92,34.25,52.047,29.535 +2020-08-28 17:15:00,116.73,35.156,52.047,29.535 +2020-08-28 17:30:00,116.42,34.746,52.047,29.535 +2020-08-28 17:45:00,110.79,34.473,52.047,29.535 +2020-08-28 18:00:00,112.92,36.928000000000004,53.306000000000004,29.535 +2020-08-28 18:15:00,115.02,35.982,53.306000000000004,29.535 +2020-08-28 18:30:00,113.25,34.352,53.306000000000004,29.535 +2020-08-28 18:45:00,112.51,37.635,53.306000000000004,29.535 +2020-08-28 19:00:00,107.58,39.59,53.516000000000005,29.535 +2020-08-28 19:15:00,106.68,39.058,53.516000000000005,29.535 +2020-08-28 19:30:00,106.55,38.073,53.516000000000005,29.535 +2020-08-28 19:45:00,110.05,36.702,53.516000000000005,29.535 +2020-08-28 20:00:00,105.55,33.705999999999996,57.88,29.535 +2020-08-28 20:15:00,103.72,34.273,57.88,29.535 +2020-08-28 20:30:00,95.59,33.826,57.88,29.535 +2020-08-28 20:45:00,90.62,32.982,57.88,29.535 +2020-08-28 21:00:00,84.68,32.658,53.32,29.535 +2020-08-28 21:15:00,83.65,35.631,53.32,29.535 +2020-08-28 21:30:00,80.52,35.832,53.32,29.535 +2020-08-28 21:45:00,82.9,35.915,53.32,29.535 +2020-08-28 22:00:00,83.63,33.01,48.074,29.535 +2020-08-28 22:15:00,83.65,34.539,48.074,29.535 +2020-08-28 22:30:00,78.8,33.479,48.074,29.535 +2020-08-28 22:45:00,76.63,31.156999999999996,48.074,29.535 +2020-08-28 23:00:00,75.72,30.994,41.306999999999995,29.535 +2020-08-28 23:15:00,75.8,28.473000000000003,41.306999999999995,29.535 +2020-08-28 23:30:00,73.3,26.433000000000003,41.306999999999995,29.535 +2020-08-28 23:45:00,66.16,25.524,41.306999999999995,29.535 +2020-08-29 00:00:00,64.44,21.593000000000004,40.227,29.423000000000002 +2020-08-29 00:15:00,71.06,21.918000000000003,40.227,29.423000000000002 +2020-08-29 00:30:00,70.31,20.924,40.227,29.423000000000002 +2020-08-29 00:45:00,70.07,20.871,40.227,29.423000000000002 +2020-08-29 01:00:00,63.31,20.348,36.303000000000004,29.423000000000002 +2020-08-29 01:15:00,64.56,19.761,36.303000000000004,29.423000000000002 +2020-08-29 01:30:00,62.06,18.733,36.303000000000004,29.423000000000002 +2020-08-29 01:45:00,61.97,19.362000000000002,36.303000000000004,29.423000000000002 +2020-08-29 02:00:00,61.2,19.239,33.849000000000004,29.423000000000002 +2020-08-29 02:15:00,65.22,17.988,33.849000000000004,29.423000000000002 +2020-08-29 02:30:00,67.93,18.965,33.849000000000004,29.423000000000002 +2020-08-29 02:45:00,67.63,19.703,33.849000000000004,29.423000000000002 +2020-08-29 03:00:00,62.88,19.814,33.149,29.423000000000002 +2020-08-29 03:15:00,60.75,18.016,33.149,29.423000000000002 +2020-08-29 03:30:00,64.25,17.847,33.149,29.423000000000002 +2020-08-29 03:45:00,69.62,19.58,33.149,29.423000000000002 +2020-08-29 04:00:00,70.43,22.421999999999997,32.501,29.423000000000002 +2020-08-29 04:15:00,67.71,25.729,32.501,29.423000000000002 +2020-08-29 04:30:00,64.26,22.76,32.501,29.423000000000002 +2020-08-29 04:45:00,66.86,22.581,32.501,29.423000000000002 +2020-08-29 05:00:00,72.03,27.261,31.648000000000003,29.423000000000002 +2020-08-29 05:15:00,74.87,25.631,31.648000000000003,29.423000000000002 +2020-08-29 05:30:00,74.46,22.678,31.648000000000003,29.423000000000002 +2020-08-29 05:45:00,72.84,23.379,31.648000000000003,29.423000000000002 +2020-08-29 06:00:00,73.13,33.579,32.552,29.423000000000002 +2020-08-29 06:15:00,77.89,40.993,32.552,29.423000000000002 +2020-08-29 06:30:00,78.78,37.895,32.552,29.423000000000002 +2020-08-29 06:45:00,77.89,37.258,32.552,29.423000000000002 +2020-08-29 07:00:00,77.07,36.72,35.181999999999995,29.423000000000002 +2020-08-29 07:15:00,78.08,37.609,35.181999999999995,29.423000000000002 +2020-08-29 07:30:00,79.75,35.816,35.181999999999995,29.423000000000002 +2020-08-29 07:45:00,82.27,37.204,35.181999999999995,29.423000000000002 +2020-08-29 08:00:00,84.1,35.546,40.35,29.423000000000002 +2020-08-29 08:15:00,84.31,37.943000000000005,40.35,29.423000000000002 +2020-08-29 08:30:00,85.25,38.193000000000005,40.35,29.423000000000002 +2020-08-29 08:45:00,85.89,40.580999999999996,40.35,29.423000000000002 +2020-08-29 09:00:00,89.71,36.368,42.292,29.423000000000002 +2020-08-29 09:15:00,89.66,37.569,42.292,29.423000000000002 +2020-08-29 09:30:00,85.99,40.035,42.292,29.423000000000002 +2020-08-29 09:45:00,80.14,42.298,42.292,29.423000000000002 +2020-08-29 10:00:00,80.79,39.221,40.084,29.423000000000002 +2020-08-29 10:15:00,88.58,40.082,40.084,29.423000000000002 +2020-08-29 10:30:00,90.14,40.073,40.084,29.423000000000002 +2020-08-29 10:45:00,90.37,40.782,40.084,29.423000000000002 +2020-08-29 11:00:00,89.97,39.248000000000005,36.966,29.423000000000002 +2020-08-29 11:15:00,91.84,40.025999999999996,36.966,29.423000000000002 +2020-08-29 11:30:00,89.82,40.753,36.966,29.423000000000002 +2020-08-29 11:45:00,88.72,41.224,36.966,29.423000000000002 +2020-08-29 12:00:00,86.32,38.188,35.19,29.423000000000002 +2020-08-29 12:15:00,84.51,37.68,35.19,29.423000000000002 +2020-08-29 12:30:00,82.92,36.863,35.19,29.423000000000002 +2020-08-29 12:45:00,85.5,37.486,35.19,29.423000000000002 +2020-08-29 13:00:00,81.37,36.576,32.277,29.423000000000002 +2020-08-29 13:15:00,82.13,36.982,32.277,29.423000000000002 +2020-08-29 13:30:00,81.68,36.403,32.277,29.423000000000002 +2020-08-29 13:45:00,81.28,35.406,32.277,29.423000000000002 +2020-08-29 14:00:00,79.6,35.664,31.436999999999998,29.423000000000002 +2020-08-29 14:15:00,79.02,34.179,31.436999999999998,29.423000000000002 +2020-08-29 14:30:00,76.91,34.474000000000004,31.436999999999998,29.423000000000002 +2020-08-29 14:45:00,76.5,34.986999999999995,31.436999999999998,29.423000000000002 +2020-08-29 15:00:00,76.4,35.93,33.493,29.423000000000002 +2020-08-29 15:15:00,77.73,34.336,33.493,29.423000000000002 +2020-08-29 15:30:00,78.14,32.926,33.493,29.423000000000002 +2020-08-29 15:45:00,77.73,31.178,33.493,29.423000000000002 +2020-08-29 16:00:00,78.32,34.436,36.593,29.423000000000002 +2020-08-29 16:15:00,79.7,34.065,36.593,29.423000000000002 +2020-08-29 16:30:00,80.81,33.906,36.593,29.423000000000002 +2020-08-29 16:45:00,82.06,31.432,36.593,29.423000000000002 +2020-08-29 17:00:00,84.59,34.291,42.049,29.423000000000002 +2020-08-29 17:15:00,86.73,33.227,42.049,29.423000000000002 +2020-08-29 17:30:00,85.87,32.711,42.049,29.423000000000002 +2020-08-29 17:45:00,83.17,32.935,42.049,29.423000000000002 +2020-08-29 18:00:00,84.18,36.61,43.755,29.423000000000002 +2020-08-29 18:15:00,83.2,37.168,43.755,29.423000000000002 +2020-08-29 18:30:00,83.27,36.759,43.755,29.423000000000002 +2020-08-29 18:45:00,84.31,36.943000000000005,43.755,29.423000000000002 +2020-08-29 19:00:00,89.05,37.398,44.492,29.423000000000002 +2020-08-29 19:15:00,84.66,35.963,44.492,29.423000000000002 +2020-08-29 19:30:00,86.21,35.665,44.492,29.423000000000002 +2020-08-29 19:45:00,81.85,35.891999999999996,44.492,29.423000000000002 +2020-08-29 20:00:00,77.43,33.655,40.896,29.423000000000002 +2020-08-29 20:15:00,77.44,33.62,40.896,29.423000000000002 +2020-08-29 20:30:00,75.73,32.365,40.896,29.423000000000002 +2020-08-29 20:45:00,76.44,33.168,40.896,29.423000000000002 +2020-08-29 21:00:00,73.3,31.482,39.056,29.423000000000002 +2020-08-29 21:15:00,72.72,34.125,39.056,29.423000000000002 +2020-08-29 21:30:00,70.23,34.483000000000004,39.056,29.423000000000002 +2020-08-29 21:45:00,69.8,34.045,39.056,29.423000000000002 +2020-08-29 22:00:00,66.22,31.079,38.478,29.423000000000002 +2020-08-29 22:15:00,65.01,32.786,38.478,29.423000000000002 +2020-08-29 22:30:00,63.02,31.276999999999997,38.478,29.423000000000002 +2020-08-29 22:45:00,61.99,29.272,38.478,29.423000000000002 +2020-08-29 23:00:00,58.73,28.525,32.953,29.423000000000002 +2020-08-29 23:15:00,57.9,26.384,32.953,29.423000000000002 +2020-08-29 23:30:00,57.04,26.589000000000002,32.953,29.423000000000002 +2020-08-29 23:45:00,56.91,26.037,32.953,29.423000000000002 +2020-08-30 00:00:00,54.27,22.994,28.584,29.423000000000002 +2020-08-30 00:15:00,55.13,22.281999999999996,28.584,29.423000000000002 +2020-08-30 00:30:00,50.94,21.165,28.584,29.423000000000002 +2020-08-30 00:45:00,53.35,21.011,28.584,29.423000000000002 +2020-08-30 01:00:00,51.34,20.706999999999997,26.419,29.423000000000002 +2020-08-30 01:15:00,52.9,20.012999999999998,26.419,29.423000000000002 +2020-08-30 01:30:00,52.18,18.868,26.419,29.423000000000002 +2020-08-30 01:45:00,51.93,19.159000000000002,26.419,29.423000000000002 +2020-08-30 02:00:00,52.18,19.118,25.335,29.423000000000002 +2020-08-30 02:15:00,51.62,18.54,25.335,29.423000000000002 +2020-08-30 02:30:00,51.01,19.651,25.335,29.423000000000002 +2020-08-30 02:45:00,50.76,20.117,25.335,29.423000000000002 +2020-08-30 03:00:00,51.01,20.8,24.805,29.423000000000002 +2020-08-30 03:15:00,51.32,19.261,24.805,29.423000000000002 +2020-08-30 03:30:00,52.27,18.414,24.805,29.423000000000002 +2020-08-30 03:45:00,53.2,19.423,24.805,29.423000000000002 +2020-08-30 04:00:00,53.28,22.268,25.772,29.423000000000002 +2020-08-30 04:15:00,53.79,25.218000000000004,25.772,29.423000000000002 +2020-08-30 04:30:00,54.34,23.467,25.772,29.423000000000002 +2020-08-30 04:45:00,55.42,22.866,25.772,29.423000000000002 +2020-08-30 05:00:00,56.16,27.819000000000003,25.971999999999998,29.423000000000002 +2020-08-30 05:15:00,56.99,25.605999999999998,25.971999999999998,29.423000000000002 +2020-08-30 05:30:00,56.61,22.284000000000002,25.971999999999998,29.423000000000002 +2020-08-30 05:45:00,57.04,22.694000000000003,25.971999999999998,29.423000000000002 +2020-08-30 06:00:00,58.54,30.746,26.026,29.423000000000002 +2020-08-30 06:15:00,59.88,38.948,26.026,29.423000000000002 +2020-08-30 06:30:00,61.66,35.231,26.026,29.423000000000002 +2020-08-30 06:45:00,63.97,33.71,26.026,29.423000000000002 +2020-08-30 07:00:00,66.86,33.422,27.396,29.423000000000002 +2020-08-30 07:15:00,68.13,32.858000000000004,27.396,29.423000000000002 +2020-08-30 07:30:00,70.07,32.260999999999996,27.396,29.423000000000002 +2020-08-30 07:45:00,71.87,33.628,27.396,29.423000000000002 +2020-08-30 08:00:00,74.54,32.635,30.791999999999998,29.423000000000002 +2020-08-30 08:15:00,76.67,36.064,30.791999999999998,29.423000000000002 +2020-08-30 08:30:00,77.37,37.067,30.791999999999998,29.423000000000002 +2020-08-30 08:45:00,78.29,39.330999999999996,30.791999999999998,29.423000000000002 +2020-08-30 09:00:00,78.71,35.037,32.482,29.423000000000002 +2020-08-30 09:15:00,79.95,35.771,32.482,29.423000000000002 +2020-08-30 09:30:00,80.79,38.611999999999995,32.482,29.423000000000002 +2020-08-30 09:45:00,83.14,41.757,32.482,29.423000000000002 +2020-08-30 10:00:00,84.85,39.117,31.951,29.423000000000002 +2020-08-30 10:15:00,87.31,40.061,31.951,29.423000000000002 +2020-08-30 10:30:00,88.3,40.231,31.951,29.423000000000002 +2020-08-30 10:45:00,87.52,41.902,31.951,29.423000000000002 +2020-08-30 11:00:00,84.25,40.043,33.619,29.423000000000002 +2020-08-30 11:15:00,83.28,40.399,33.619,29.423000000000002 +2020-08-30 11:30:00,81.94,41.626000000000005,33.619,29.423000000000002 +2020-08-30 11:45:00,80.98,42.297,33.619,29.423000000000002 +2020-08-30 12:00:00,78.49,40.249,30.975,29.423000000000002 +2020-08-30 12:15:00,77.41,39.084,30.975,29.423000000000002 +2020-08-30 12:30:00,75.82,38.535,30.975,29.423000000000002 +2020-08-30 12:45:00,78.16,38.595,30.975,29.423000000000002 +2020-08-30 13:00:00,72.08,37.405,27.956999999999997,29.423000000000002 +2020-08-30 13:15:00,72.23,37.171,27.956999999999997,29.423000000000002 +2020-08-30 13:30:00,71.97,35.578,27.956999999999997,29.423000000000002 +2020-08-30 13:45:00,72.4,35.635,27.956999999999997,29.423000000000002 +2020-08-30 14:00:00,70.92,36.957,25.555999999999997,29.423000000000002 +2020-08-30 14:15:00,70.88,35.834,25.555999999999997,29.423000000000002 +2020-08-30 14:30:00,70.54,34.972,25.555999999999997,29.423000000000002 +2020-08-30 14:45:00,70.65,34.519,25.555999999999997,29.423000000000002 +2020-08-30 15:00:00,71.32,35.598,26.271,29.423000000000002 +2020-08-30 15:15:00,71.25,33.243,26.271,29.423000000000002 +2020-08-30 15:30:00,71.19,31.660999999999998,26.271,29.423000000000002 +2020-08-30 15:45:00,71.97,30.158,26.271,29.423000000000002 +2020-08-30 16:00:00,73.4,31.854,30.369,29.423000000000002 +2020-08-30 16:15:00,74.06,31.729,30.369,29.423000000000002 +2020-08-30 16:30:00,75.86,32.481,30.369,29.423000000000002 +2020-08-30 16:45:00,78.3,30.105999999999998,30.369,29.423000000000002 +2020-08-30 17:00:00,79.85,33.259,38.787,29.423000000000002 +2020-08-30 17:15:00,80.1,33.619,38.787,29.423000000000002 +2020-08-30 17:30:00,81.58,33.845,38.787,29.423000000000002 +2020-08-30 17:45:00,80.78,34.421,38.787,29.423000000000002 +2020-08-30 18:00:00,83.14,38.659,41.886,29.423000000000002 +2020-08-30 18:15:00,80.9,38.830999999999996,41.886,29.423000000000002 +2020-08-30 18:30:00,80.98,38.26,41.886,29.423000000000002 +2020-08-30 18:45:00,80.43,38.503,41.886,29.423000000000002 +2020-08-30 19:00:00,86.05,40.954,42.91,29.423000000000002 +2020-08-30 19:15:00,82.33,38.507,42.91,29.423000000000002 +2020-08-30 19:30:00,83.91,37.993,42.91,29.423000000000002 +2020-08-30 19:45:00,80.57,37.784,42.91,29.423000000000002 +2020-08-30 20:00:00,78.83,35.695,42.148999999999994,29.423000000000002 +2020-08-30 20:15:00,79.05,35.516,42.148999999999994,29.423000000000002 +2020-08-30 20:30:00,78.41,34.949,42.148999999999994,29.423000000000002 +2020-08-30 20:45:00,79.19,34.219,42.148999999999994,29.423000000000002 +2020-08-30 21:00:00,77.65,32.483000000000004,40.955999999999996,29.423000000000002 +2020-08-30 21:15:00,78.79,34.856,40.955999999999996,29.423000000000002 +2020-08-30 21:30:00,75.78,34.623000000000005,40.955999999999996,29.423000000000002 +2020-08-30 21:45:00,75.79,34.472,40.955999999999996,29.423000000000002 +2020-08-30 22:00:00,72.02,33.349000000000004,39.873000000000005,29.423000000000002 +2020-08-30 22:15:00,72.93,33.534,39.873000000000005,29.423000000000002 +2020-08-30 22:30:00,71.7,31.603,39.873000000000005,29.423000000000002 +2020-08-30 22:45:00,70.88,28.467,39.873000000000005,29.423000000000002 +2020-08-30 23:00:00,66.13,27.553,35.510999999999996,29.423000000000002 +2020-08-30 23:15:00,67.65,26.502,35.510999999999996,29.423000000000002 +2020-08-30 23:30:00,68.19,26.213,35.510999999999996,29.423000000000002 +2020-08-30 23:45:00,66.64,25.791,35.510999999999996,29.423000000000002 +2020-08-31 00:00:00,63.09,24.439,33.475,29.535 +2020-08-31 00:15:00,65.41,24.381,33.475,29.535 +2020-08-31 00:30:00,65.2,22.921,33.475,29.535 +2020-08-31 00:45:00,65.56,22.427,33.475,29.535 +2020-08-31 01:00:00,62.92,22.448,33.111,29.535 +2020-08-31 01:15:00,64.41,21.793000000000003,33.111,29.535 +2020-08-31 01:30:00,64.04,20.988000000000003,33.111,29.535 +2020-08-31 01:45:00,65.01,21.19,33.111,29.535 +2020-08-31 02:00:00,62.9,21.559,32.358000000000004,29.535 +2020-08-31 02:15:00,64.34,20.055999999999997,32.358000000000004,29.535 +2020-08-31 02:30:00,64.2,21.287,32.358000000000004,29.535 +2020-08-31 02:45:00,64.04,21.629,32.358000000000004,29.535 +2020-08-31 03:00:00,65.64,22.729,30.779,29.535 +2020-08-31 03:15:00,66.35,21.822,30.779,29.535 +2020-08-31 03:30:00,72.4,21.601999999999997,30.779,29.535 +2020-08-31 03:45:00,75.77,22.195,30.779,29.535 +2020-08-31 04:00:00,80.59,27.787,31.416,29.535 +2020-08-31 04:15:00,79.36,33.317,31.416,29.535 +2020-08-31 04:30:00,88.89,31.094,31.416,29.535 +2020-08-31 04:45:00,94.27,30.829,31.416,29.535 +2020-08-31 05:00:00,100.31,42.129,37.221,29.535 +2020-08-31 05:15:00,101.92,48.968,37.221,29.535 +2020-08-31 05:30:00,101.22,44.25,37.221,29.535 +2020-08-31 05:45:00,104.81,41.94,37.221,29.535 +2020-08-31 06:00:00,108.02,40.968,51.891000000000005,29.535 +2020-08-31 06:15:00,111.44,41.255,51.891000000000005,29.535 +2020-08-31 06:30:00,112.93,40.977,51.891000000000005,29.535 +2020-08-31 06:45:00,115.62,44.062,51.891000000000005,29.535 +2020-08-31 07:00:00,119.0,43.956,62.282,29.535 +2020-08-31 07:15:00,119.27,45.438,62.282,29.535 +2020-08-31 07:30:00,120.08,44.106,62.282,29.535 +2020-08-31 07:45:00,119.77,45.791000000000004,62.282,29.535 +2020-08-31 08:00:00,121.76,42.894,54.102,29.535 +2020-08-31 08:15:00,123.35,45.245,54.102,29.535 +2020-08-31 08:30:00,124.12,45.458999999999996,54.102,29.535 +2020-08-31 08:45:00,125.71,47.97,54.102,29.535 +2020-08-31 09:00:00,129.33,42.748999999999995,50.917,29.535 +2020-08-31 09:15:00,126.56,41.933,50.917,29.535 +2020-08-31 09:30:00,126.46,43.938,50.917,29.535 +2020-08-31 09:45:00,127.36,44.971000000000004,50.917,29.535 +2020-08-31 10:00:00,128.24,42.68899999999999,49.718999999999994,29.535 +2020-08-31 10:15:00,131.55,43.481,49.718999999999994,29.535 +2020-08-31 10:30:00,130.34,43.248000000000005,49.718999999999994,29.535 +2020-08-31 10:45:00,123.89,43.443000000000005,49.718999999999994,29.535 +2020-08-31 11:00:00,124.43,41.855,49.833999999999996,29.535 +2020-08-31 11:15:00,124.83,42.403,49.833999999999996,29.535 +2020-08-31 11:30:00,129.95,44.224,49.833999999999996,29.535 +2020-08-31 11:45:00,125.36,45.352,49.833999999999996,29.535 +2020-08-31 12:00:00,121.07,41.592,47.832,29.535 +2020-08-31 12:15:00,122.98,40.518,47.832,29.535 +2020-08-31 12:30:00,117.12,38.993,47.832,29.535 +2020-08-31 12:45:00,116.46,38.983000000000004,47.832,29.535 +2020-08-31 13:00:00,120.35,38.641,48.03,29.535 +2020-08-31 13:15:00,120.22,37.631,48.03,29.535 +2020-08-31 13:30:00,118.44,36.205,48.03,29.535 +2020-08-31 13:45:00,111.87,37.094,48.03,29.535 +2020-08-31 14:00:00,111.57,37.562,48.157,29.535 +2020-08-31 14:15:00,114.04,37.012,48.157,29.535 +2020-08-31 14:30:00,113.71,36.038000000000004,48.157,29.535 +2020-08-31 14:45:00,116.13,37.49,48.157,29.535 +2020-08-31 15:00:00,113.44,38.115,48.897,29.535 +2020-08-31 15:15:00,111.84,35.278,48.897,29.535 +2020-08-31 15:30:00,110.24,34.448,48.897,29.535 +2020-08-31 15:45:00,108.51,32.522,48.897,29.535 +2020-08-31 16:00:00,104.99,35.231,51.446000000000005,29.535 +2020-08-31 16:15:00,104.55,35.198,51.446000000000005,29.535 +2020-08-31 16:30:00,108.33,35.369,51.446000000000005,29.535 +2020-08-31 16:45:00,108.42,33.097,51.446000000000005,29.535 +2020-08-31 17:00:00,109.57,35.18,57.507,29.535 +2020-08-31 17:15:00,108.31,35.944,57.507,29.535 +2020-08-31 17:30:00,111.74,35.846,57.507,29.535 +2020-08-31 17:45:00,110.77,36.141999999999996,57.507,29.535 +2020-08-31 18:00:00,113.05,39.413000000000004,57.896,29.535 +2020-08-31 18:15:00,109.66,37.992,57.896,29.535 +2020-08-31 18:30:00,110.56,36.729,57.896,29.535 +2020-08-31 18:45:00,108.24,39.83,57.896,29.535 +2020-08-31 19:00:00,109.87,42.091,57.891999999999996,29.535 +2020-08-31 19:15:00,105.78,40.868,57.891999999999996,29.535 +2020-08-31 19:30:00,103.3,40.012,57.891999999999996,29.535 +2020-08-31 19:45:00,105.3,39.27,57.891999999999996,29.535 +2020-08-31 20:00:00,98.65,36.086999999999996,64.57300000000001,29.535 +2020-08-31 20:15:00,99.73,37.242,64.57300000000001,29.535 +2020-08-31 20:30:00,98.19,37.177,64.57300000000001,29.535 +2020-08-31 20:45:00,98.28,36.565,64.57300000000001,29.535 +2020-08-31 21:00:00,93.39,34.244,59.431999999999995,29.535 +2020-08-31 21:15:00,93.97,37.034,59.431999999999995,29.535 +2020-08-31 21:30:00,89.46,37.196999999999996,59.431999999999995,29.535 +2020-08-31 21:45:00,86.99,36.826,59.431999999999995,29.535 +2020-08-31 22:00:00,86.09,33.882,51.519,29.535 +2020-08-31 22:15:00,89.99,35.885999999999996,51.519,29.535 +2020-08-31 22:30:00,88.27,30.206,51.519,29.535 +2020-08-31 22:45:00,83.31,27.164,51.519,29.535 +2020-08-31 23:00:00,75.5,26.299,44.501000000000005,29.535 +2020-08-31 23:15:00,75.51,23.673000000000002,44.501000000000005,29.535 +2020-08-31 23:30:00,75.27,23.296999999999997,44.501000000000005,29.535 +2020-08-31 23:45:00,75.09,22.335,44.501000000000005,29.535 +2020-09-01 00:00:00,73.47,29.916999999999998,44.438,29.93 +2020-09-01 00:15:00,81.26,30.489,44.438,29.93 +2020-09-01 00:30:00,72.65,30.061,44.438,29.93 +2020-09-01 00:45:00,74.24,30.002,44.438,29.93 +2020-09-01 01:00:00,75.98,29.759,41.468999999999994,29.93 +2020-09-01 01:15:00,79.49,28.94,41.468999999999994,29.93 +2020-09-01 01:30:00,80.77,27.840999999999998,41.468999999999994,29.93 +2020-09-01 01:45:00,80.77,26.919,41.468999999999994,29.93 +2020-09-01 02:00:00,76.57,26.625,39.708,29.93 +2020-09-01 02:15:00,74.41,26.226,39.708,29.93 +2020-09-01 02:30:00,73.57,26.895,39.708,29.93 +2020-09-01 02:45:00,75.06,27.743000000000002,39.708,29.93 +2020-09-01 03:00:00,75.97,28.845,38.919000000000004,29.93 +2020-09-01 03:15:00,76.67,28.206,38.919000000000004,29.93 +2020-09-01 03:30:00,77.0,28.11,38.919000000000004,29.93 +2020-09-01 03:45:00,80.42,28.19,38.919000000000004,29.93 +2020-09-01 04:00:00,83.6,34.74,40.092,29.93 +2020-09-01 04:15:00,85.52,41.981,40.092,29.93 +2020-09-01 04:30:00,93.85,39.315,40.092,29.93 +2020-09-01 04:45:00,102.83,39.861999999999995,40.092,29.93 +2020-09-01 05:00:00,110.21,57.162,43.713,29.93 +2020-09-01 05:15:00,108.06,68.223,43.713,29.93 +2020-09-01 05:30:00,106.25,62.226000000000006,43.713,29.93 +2020-09-01 05:45:00,108.65,58.465,43.713,29.93 +2020-09-01 06:00:00,117.46,58.838,56.033,29.93 +2020-09-01 06:15:00,114.57,60.111000000000004,56.033,29.93 +2020-09-01 06:30:00,114.76,58.723,56.033,29.93 +2020-09-01 06:45:00,117.5,60.365,56.033,29.93 +2020-09-01 07:00:00,120.97,58.69,66.003,29.93 +2020-09-01 07:15:00,121.58,59.825,66.003,29.93 +2020-09-01 07:30:00,122.12,58.056000000000004,66.003,29.93 +2020-09-01 07:45:00,122.42,58.925,66.003,29.93 +2020-09-01 08:00:00,123.81,57.608999999999995,57.474,29.93 +2020-09-01 08:15:00,119.75,59.684,57.474,29.93 +2020-09-01 08:30:00,121.34,58.928999999999995,57.474,29.93 +2020-09-01 08:45:00,119.7,60.385,57.474,29.93 +2020-09-01 09:00:00,119.63,56.747,51.928000000000004,29.93 +2020-09-01 09:15:00,114.95,55.32899999999999,51.928000000000004,29.93 +2020-09-01 09:30:00,111.22,57.449,51.928000000000004,29.93 +2020-09-01 09:45:00,112.13,59.055,51.928000000000004,29.93 +2020-09-01 10:00:00,110.13,55.532,49.46,29.93 +2020-09-01 10:15:00,111.52,56.278999999999996,49.46,29.93 +2020-09-01 10:30:00,112.58,56.043,49.46,29.93 +2020-09-01 10:45:00,113.39,57.13399999999999,49.46,29.93 +2020-09-01 11:00:00,106.2,53.576,48.206,29.93 +2020-09-01 11:15:00,104.73,54.661,48.206,29.93 +2020-09-01 11:30:00,106.63,55.326,48.206,29.93 +2020-09-01 11:45:00,108.22,56.138000000000005,48.206,29.93 +2020-09-01 12:00:00,105.4,52.413999999999994,46.285,29.93 +2020-09-01 12:15:00,110.05,52.071000000000005,46.285,29.93 +2020-09-01 12:30:00,108.08,51.176,46.285,29.93 +2020-09-01 12:45:00,105.77,52.277,46.285,29.93 +2020-09-01 13:00:00,110.03,51.369,46.861999999999995,29.93 +2020-09-01 13:15:00,106.07,51.993,46.861999999999995,29.93 +2020-09-01 13:30:00,107.01,50.818000000000005,46.861999999999995,29.93 +2020-09-01 13:45:00,108.05,49.903999999999996,46.861999999999995,29.93 +2020-09-01 14:00:00,104.78,51.108000000000004,46.488,29.93 +2020-09-01 14:15:00,107.92,50.152,46.488,29.93 +2020-09-01 14:30:00,103.2,48.902,46.488,29.93 +2020-09-01 14:45:00,103.58,49.669,46.488,29.93 +2020-09-01 15:00:00,101.89,50.393,48.442,29.93 +2020-09-01 15:15:00,103.13,48.303000000000004,48.442,29.93 +2020-09-01 15:30:00,103.38,47.102,48.442,29.93 +2020-09-01 15:45:00,102.77,44.833999999999996,48.442,29.93 +2020-09-01 16:00:00,102.66,47.282,50.397,29.93 +2020-09-01 16:15:00,105.53,47.086000000000006,50.397,29.93 +2020-09-01 16:30:00,106.51,47.457,50.397,29.93 +2020-09-01 16:45:00,108.89,45.013999999999996,50.397,29.93 +2020-09-01 17:00:00,109.84,46.915,56.668,29.93 +2020-09-01 17:15:00,109.18,47.858000000000004,56.668,29.93 +2020-09-01 17:30:00,109.98,47.298,56.668,29.93 +2020-09-01 17:45:00,112.11,46.278999999999996,56.668,29.93 +2020-09-01 18:00:00,113.7,48.562,57.957,29.93 +2020-09-01 18:15:00,109.54,48.016999999999996,57.957,29.93 +2020-09-01 18:30:00,111.45,46.04,57.957,29.93 +2020-09-01 18:45:00,109.99,50.2,57.957,29.93 +2020-09-01 19:00:00,111.38,52.652,57.056000000000004,29.93 +2020-09-01 19:15:00,107.84,51.383,57.056000000000004,29.93 +2020-09-01 19:30:00,107.01,50.34,57.056000000000004,29.93 +2020-09-01 19:45:00,106.18,50.461999999999996,57.056000000000004,29.93 +2020-09-01 20:00:00,100.69,48.705,64.156,29.93 +2020-09-01 20:15:00,100.76,48.184,64.156,29.93 +2020-09-01 20:30:00,98.36,47.782,64.156,29.93 +2020-09-01 20:45:00,97.15,47.833,64.156,29.93 +2020-09-01 21:00:00,91.14,46.413000000000004,56.507,29.93 +2020-09-01 21:15:00,91.05,48.013000000000005,56.507,29.93 +2020-09-01 21:30:00,87.36,47.721000000000004,56.507,29.93 +2020-09-01 21:45:00,85.97,47.453,56.507,29.93 +2020-09-01 22:00:00,81.23,45.082,50.728,29.93 +2020-09-01 22:15:00,80.37,45.82899999999999,50.728,29.93 +2020-09-01 22:30:00,79.33,38.537,50.728,29.93 +2020-09-01 22:45:00,78.66,35.022,50.728,29.93 +2020-09-01 23:00:00,74.04,31.743000000000002,43.556999999999995,29.93 +2020-09-01 23:15:00,74.63,31.009,43.556999999999995,29.93 +2020-09-01 23:30:00,74.95,30.879,43.556999999999995,29.93 +2020-09-01 23:45:00,73.76,30.048000000000002,43.556999999999995,29.93 +2020-09-02 00:00:00,70.09,30.121,41.151,29.93 +2020-09-02 00:15:00,71.22,30.691,41.151,29.93 +2020-09-02 00:30:00,70.52,30.272,41.151,29.93 +2020-09-02 00:45:00,70.04,30.22,41.151,29.93 +2020-09-02 01:00:00,70.4,29.961,37.763000000000005,29.93 +2020-09-02 01:15:00,71.55,29.159000000000002,37.763000000000005,29.93 +2020-09-02 01:30:00,70.54,28.076999999999998,37.763000000000005,29.93 +2020-09-02 01:45:00,71.31,27.156,37.763000000000005,29.93 +2020-09-02 02:00:00,70.05,26.865,35.615,29.93 +2020-09-02 02:15:00,70.33,26.489,35.615,29.93 +2020-09-02 02:30:00,70.42,27.131999999999998,35.615,29.93 +2020-09-02 02:45:00,71.01,27.975,35.615,29.93 +2020-09-02 03:00:00,71.66,29.066,35.153,29.93 +2020-09-02 03:15:00,73.29,28.445,35.153,29.93 +2020-09-02 03:30:00,74.2,28.353,35.153,29.93 +2020-09-02 03:45:00,76.12,28.423000000000002,35.153,29.93 +2020-09-02 04:00:00,79.71,35.003,36.203,29.93 +2020-09-02 04:15:00,83.25,42.268,36.203,29.93 +2020-09-02 04:30:00,93.94,39.609,36.203,29.93 +2020-09-02 04:45:00,98.95,40.161,36.203,29.93 +2020-09-02 05:00:00,102.22,57.54600000000001,39.922,29.93 +2020-09-02 05:15:00,99.73,68.696,39.922,29.93 +2020-09-02 05:30:00,104.42,62.69,39.922,29.93 +2020-09-02 05:45:00,106.12,58.883,39.922,29.93 +2020-09-02 06:00:00,110.69,59.221000000000004,56.443999999999996,29.93 +2020-09-02 06:15:00,110.55,60.515,56.443999999999996,29.93 +2020-09-02 06:30:00,112.02,59.126999999999995,56.443999999999996,29.93 +2020-09-02 06:45:00,111.67,60.766000000000005,56.443999999999996,29.93 +2020-09-02 07:00:00,114.69,59.091,68.683,29.93 +2020-09-02 07:15:00,114.16,60.243,68.683,29.93 +2020-09-02 07:30:00,112.53,58.504,68.683,29.93 +2020-09-02 07:45:00,112.99,59.375,68.683,29.93 +2020-09-02 08:00:00,112.66,58.06399999999999,59.003,29.93 +2020-09-02 08:15:00,112.55,60.106,59.003,29.93 +2020-09-02 08:30:00,111.76,59.354,59.003,29.93 +2020-09-02 08:45:00,108.42,60.795,59.003,29.93 +2020-09-02 09:00:00,107.65,57.165,56.21,29.93 +2020-09-02 09:15:00,106.69,55.736000000000004,56.21,29.93 +2020-09-02 09:30:00,106.79,57.836000000000006,56.21,29.93 +2020-09-02 09:45:00,106.64,59.413999999999994,56.21,29.93 +2020-09-02 10:00:00,106.81,55.888999999999996,52.358999999999995,29.93 +2020-09-02 10:15:00,107.49,56.603,52.358999999999995,29.93 +2020-09-02 10:30:00,104.67,56.357,52.358999999999995,29.93 +2020-09-02 10:45:00,104.68,57.435,52.358999999999995,29.93 +2020-09-02 11:00:00,102.67,53.89,51.161,29.93 +2020-09-02 11:15:00,101.54,54.961000000000006,51.161,29.93 +2020-09-02 11:30:00,105.83,55.623999999999995,51.161,29.93 +2020-09-02 11:45:00,103.98,56.419,51.161,29.93 +2020-09-02 12:00:00,99.78,52.676,49.119,29.93 +2020-09-02 12:15:00,101.12,52.318999999999996,49.119,29.93 +2020-09-02 12:30:00,101.87,51.45,49.119,29.93 +2020-09-02 12:45:00,104.35,52.54,49.119,29.93 +2020-09-02 13:00:00,100.22,51.608000000000004,49.187,29.93 +2020-09-02 13:15:00,101.85,52.223,49.187,29.93 +2020-09-02 13:30:00,99.0,51.04600000000001,49.187,29.93 +2020-09-02 13:45:00,102.96,50.141999999999996,49.187,29.93 +2020-09-02 14:00:00,102.01,51.306999999999995,49.787,29.93 +2020-09-02 14:15:00,102.18,50.363,49.787,29.93 +2020-09-02 14:30:00,100.6,49.137,49.787,29.93 +2020-09-02 14:45:00,103.38,49.903,49.787,29.93 +2020-09-02 15:00:00,106.74,50.576,51.458999999999996,29.93 +2020-09-02 15:15:00,101.18,48.5,51.458999999999996,29.93 +2020-09-02 15:30:00,102.11,47.323,51.458999999999996,29.93 +2020-09-02 15:45:00,100.59,45.065,51.458999999999996,29.93 +2020-09-02 16:00:00,102.98,47.48,53.663000000000004,29.93 +2020-09-02 16:15:00,103.91,47.295,53.663000000000004,29.93 +2020-09-02 16:30:00,108.38,47.666000000000004,53.663000000000004,29.93 +2020-09-02 16:45:00,107.21,45.275,53.663000000000004,29.93 +2020-09-02 17:00:00,108.81,47.14,58.183,29.93 +2020-09-02 17:15:00,109.2,48.111000000000004,58.183,29.93 +2020-09-02 17:30:00,109.84,47.558,58.183,29.93 +2020-09-02 17:45:00,111.27,46.574,58.183,29.93 +2020-09-02 18:00:00,113.28,48.843,60.141000000000005,29.93 +2020-09-02 18:15:00,110.36,48.303999999999995,60.141000000000005,29.93 +2020-09-02 18:30:00,108.48,46.339,60.141000000000005,29.93 +2020-09-02 18:45:00,112.25,50.495,60.141000000000005,29.93 +2020-09-02 19:00:00,116.4,52.958999999999996,60.582,29.93 +2020-09-02 19:15:00,114.79,51.688,60.582,29.93 +2020-09-02 19:30:00,113.75,50.644,60.582,29.93 +2020-09-02 19:45:00,114.25,50.766000000000005,60.582,29.93 +2020-09-02 20:00:00,110.94,49.023,66.61,29.93 +2020-09-02 20:15:00,106.94,48.503,66.61,29.93 +2020-09-02 20:30:00,102.41,48.07899999999999,66.61,29.93 +2020-09-02 20:45:00,98.12,48.092,66.61,29.93 +2020-09-02 21:00:00,91.53,46.675,57.658,29.93 +2020-09-02 21:15:00,91.25,48.266000000000005,57.658,29.93 +2020-09-02 21:30:00,86.71,47.976000000000006,57.658,29.93 +2020-09-02 21:45:00,86.21,47.672,57.658,29.93 +2020-09-02 22:00:00,80.75,45.28,51.81,29.93 +2020-09-02 22:15:00,81.19,46.005,51.81,29.93 +2020-09-02 22:30:00,80.24,38.691,51.81,29.93 +2020-09-02 22:45:00,83.69,35.178000000000004,51.81,29.93 +2020-09-02 23:00:00,82.31,31.945,42.93600000000001,29.93 +2020-09-02 23:15:00,84.53,31.188000000000002,42.93600000000001,29.93 +2020-09-02 23:30:00,80.72,31.066,42.93600000000001,29.93 +2020-09-02 23:45:00,74.93,30.238000000000003,42.93600000000001,29.93 +2020-09-03 00:00:00,78.78,30.328000000000003,39.211,29.93 +2020-09-03 00:15:00,80.39,30.897,39.211,29.93 +2020-09-03 00:30:00,80.32,30.485,39.211,29.93 +2020-09-03 00:45:00,73.95,30.44,39.211,29.93 +2020-09-03 01:00:00,73.78,30.165,37.607,29.93 +2020-09-03 01:15:00,79.05,29.381,37.607,29.93 +2020-09-03 01:30:00,79.16,28.316,37.607,29.93 +2020-09-03 01:45:00,76.51,27.395,37.607,29.93 +2020-09-03 02:00:00,74.11,27.108,36.44,29.93 +2020-09-03 02:15:00,80.14,26.754,36.44,29.93 +2020-09-03 02:30:00,79.59,27.372,36.44,29.93 +2020-09-03 02:45:00,78.57,28.211,36.44,29.93 +2020-09-03 03:00:00,73.82,29.289,36.116,29.93 +2020-09-03 03:15:00,72.93,28.685,36.116,29.93 +2020-09-03 03:30:00,74.34,28.599,36.116,29.93 +2020-09-03 03:45:00,77.3,28.656999999999996,36.116,29.93 +2020-09-03 04:00:00,81.78,35.27,37.398,29.93 +2020-09-03 04:15:00,82.8,42.558,37.398,29.93 +2020-09-03 04:30:00,91.14,39.907,37.398,29.93 +2020-09-03 04:45:00,98.67,40.465,37.398,29.93 +2020-09-03 05:00:00,108.57,57.937,41.776,29.93 +2020-09-03 05:15:00,103.7,69.179,41.776,29.93 +2020-09-03 05:30:00,104.33,63.162,41.776,29.93 +2020-09-03 05:45:00,105.67,59.306999999999995,41.776,29.93 +2020-09-03 06:00:00,110.59,59.608999999999995,55.61,29.93 +2020-09-03 06:15:00,111.02,60.928000000000004,55.61,29.93 +2020-09-03 06:30:00,112.63,59.537,55.61,29.93 +2020-09-03 06:45:00,113.01,61.175,55.61,29.93 +2020-09-03 07:00:00,115.07,59.497,67.13600000000001,29.93 +2020-09-03 07:15:00,114.55,60.665,67.13600000000001,29.93 +2020-09-03 07:30:00,112.42,58.958,67.13600000000001,29.93 +2020-09-03 07:45:00,112.27,59.832,67.13600000000001,29.93 +2020-09-03 08:00:00,109.14,58.523999999999994,57.55,29.93 +2020-09-03 08:15:00,107.8,60.532,57.55,29.93 +2020-09-03 08:30:00,111.96,59.786,57.55,29.93 +2020-09-03 08:45:00,108.99,61.208,57.55,29.93 +2020-09-03 09:00:00,108.66,57.586000000000006,52.931999999999995,29.93 +2020-09-03 09:15:00,108.25,56.148999999999994,52.931999999999995,29.93 +2020-09-03 09:30:00,107.97,58.228,52.931999999999995,29.93 +2020-09-03 09:45:00,106.96,59.778,52.931999999999995,29.93 +2020-09-03 10:00:00,107.82,56.248999999999995,50.36600000000001,29.93 +2020-09-03 10:15:00,109.16,56.93,50.36600000000001,29.93 +2020-09-03 10:30:00,108.59,56.674,50.36600000000001,29.93 +2020-09-03 10:45:00,107.7,57.74,50.36600000000001,29.93 +2020-09-03 11:00:00,107.03,54.208,47.893,29.93 +2020-09-03 11:15:00,107.11,55.266000000000005,47.893,29.93 +2020-09-03 11:30:00,109.86,55.926,47.893,29.93 +2020-09-03 11:45:00,106.11,56.703,47.893,29.93 +2020-09-03 12:00:00,104.22,52.94,45.271,29.93 +2020-09-03 12:15:00,106.28,52.57,45.271,29.93 +2020-09-03 12:30:00,105.6,51.727,45.271,29.93 +2020-09-03 12:45:00,104.71,52.805,45.271,29.93 +2020-09-03 13:00:00,106.15,51.85,44.351000000000006,29.93 +2020-09-03 13:15:00,107.6,52.457,44.351000000000006,29.93 +2020-09-03 13:30:00,113.46,51.277,44.351000000000006,29.93 +2020-09-03 13:45:00,112.08,50.383,44.351000000000006,29.93 +2020-09-03 14:00:00,113.14,51.511,44.99,29.93 +2020-09-03 14:15:00,108.1,50.577,44.99,29.93 +2020-09-03 14:30:00,104.21,49.376000000000005,44.99,29.93 +2020-09-03 14:45:00,103.23,50.141000000000005,44.99,29.93 +2020-09-03 15:00:00,107.19,50.763000000000005,46.869,29.93 +2020-09-03 15:15:00,106.83,48.701,46.869,29.93 +2020-09-03 15:30:00,105.79,47.54600000000001,46.869,29.93 +2020-09-03 15:45:00,104.72,45.301,46.869,29.93 +2020-09-03 16:00:00,105.33,47.681000000000004,48.902,29.93 +2020-09-03 16:15:00,105.72,47.508,48.902,29.93 +2020-09-03 16:30:00,107.33,47.879,48.902,29.93 +2020-09-03 16:45:00,110.5,45.538999999999994,48.902,29.93 +2020-09-03 17:00:00,112.54,47.36600000000001,53.244,29.93 +2020-09-03 17:15:00,111.29,48.365,53.244,29.93 +2020-09-03 17:30:00,110.8,47.821999999999996,53.244,29.93 +2020-09-03 17:45:00,111.93,46.872,53.244,29.93 +2020-09-03 18:00:00,112.15,49.126999999999995,54.343999999999994,29.93 +2020-09-03 18:15:00,110.62,48.596000000000004,54.343999999999994,29.93 +2020-09-03 18:30:00,112.94,46.643,54.343999999999994,29.93 +2020-09-03 18:45:00,111.47,50.794,54.343999999999994,29.93 +2020-09-03 19:00:00,112.83,53.269,54.332,29.93 +2020-09-03 19:15:00,109.18,51.998000000000005,54.332,29.93 +2020-09-03 19:30:00,109.17,50.953,54.332,29.93 +2020-09-03 19:45:00,112.48,51.073,54.332,29.93 +2020-09-03 20:00:00,107.89,49.346000000000004,58.06,29.93 +2020-09-03 20:15:00,107.07,48.826,58.06,29.93 +2020-09-03 20:30:00,101.06,48.38,58.06,29.93 +2020-09-03 20:45:00,99.03,48.354,58.06,29.93 +2020-09-03 21:00:00,91.24,46.941,52.411,29.93 +2020-09-03 21:15:00,98.02,48.522,52.411,29.93 +2020-09-03 21:30:00,96.57,48.235,52.411,29.93 +2020-09-03 21:45:00,96.41,47.895,52.411,29.93 +2020-09-03 22:00:00,88.52,45.481,47.148999999999994,29.93 +2020-09-03 22:15:00,84.04,46.18600000000001,47.148999999999994,29.93 +2020-09-03 22:30:00,85.59,38.847,47.148999999999994,29.93 +2020-09-03 22:45:00,88.8,35.336999999999996,47.148999999999994,29.93 +2020-09-03 23:00:00,84.03,32.149,40.814,29.93 +2020-09-03 23:15:00,81.23,31.37,40.814,29.93 +2020-09-03 23:30:00,78.97,31.255,40.814,29.93 +2020-09-03 23:45:00,84.43,30.430999999999997,40.814,29.93 +2020-09-04 00:00:00,79.88,28.809,39.153,29.93 +2020-09-04 00:15:00,81.93,29.595,39.153,29.93 +2020-09-04 00:30:00,76.83,29.414,39.153,29.93 +2020-09-04 00:45:00,81.19,29.766,39.153,29.93 +2020-09-04 01:00:00,78.59,29.094,37.228,29.93 +2020-09-04 01:15:00,75.78,27.914,37.228,29.93 +2020-09-04 01:30:00,74.53,27.471,37.228,29.93 +2020-09-04 01:45:00,76.53,26.340999999999998,37.228,29.93 +2020-09-04 02:00:00,79.34,26.897,35.851,29.93 +2020-09-04 02:15:00,80.68,26.505,35.851,29.93 +2020-09-04 02:30:00,79.68,27.898000000000003,35.851,29.93 +2020-09-04 02:45:00,72.95,28.131,35.851,29.93 +2020-09-04 03:00:00,71.7,29.756,36.54,29.93 +2020-09-04 03:15:00,72.28,28.221,36.54,29.93 +2020-09-04 03:30:00,76.49,27.927,36.54,29.93 +2020-09-04 03:45:00,83.91,28.791999999999998,36.54,29.93 +2020-09-04 04:00:00,87.81,35.59,37.578,29.93 +2020-09-04 04:15:00,87.55,41.49100000000001,37.578,29.93 +2020-09-04 04:30:00,92.55,39.719,37.578,29.93 +2020-09-04 04:45:00,98.47,39.561,37.578,29.93 +2020-09-04 05:00:00,103.34,56.532,40.387,29.93 +2020-09-04 05:15:00,107.52,68.905,40.387,29.93 +2020-09-04 05:30:00,105.74,63.184,40.387,29.93 +2020-09-04 05:45:00,109.74,58.878,40.387,29.93 +2020-09-04 06:00:00,115.98,59.403999999999996,54.668,29.93 +2020-09-04 06:15:00,115.47,60.705,54.668,29.93 +2020-09-04 06:30:00,117.38,59.156000000000006,54.668,29.93 +2020-09-04 06:45:00,119.84,60.883,54.668,29.93 +2020-09-04 07:00:00,121.76,59.673,63.971000000000004,29.93 +2020-09-04 07:15:00,124.37,61.793,63.971000000000004,29.93 +2020-09-04 07:30:00,124.71,58.375,63.971000000000004,29.93 +2020-09-04 07:45:00,124.2,58.946000000000005,63.971000000000004,29.93 +2020-09-04 08:00:00,125.37,58.18,56.042,29.93 +2020-09-04 08:15:00,124.6,60.688,56.042,29.93 +2020-09-04 08:30:00,128.49,59.994,56.042,29.93 +2020-09-04 08:45:00,128.74,61.058,56.042,29.93 +2020-09-04 09:00:00,130.79,55.483000000000004,52.832,29.93 +2020-09-04 09:15:00,128.22,55.792,52.832,29.93 +2020-09-04 09:30:00,125.85,57.18899999999999,52.832,29.93 +2020-09-04 09:45:00,122.8,59.033,52.832,29.93 +2020-09-04 10:00:00,123.79,55.185,50.044,29.93 +2020-09-04 10:15:00,126.55,55.742,50.044,29.93 +2020-09-04 10:30:00,128.28,55.945,50.044,29.93 +2020-09-04 10:45:00,124.38,56.851000000000006,50.044,29.93 +2020-09-04 11:00:00,124.72,53.549,49.06100000000001,29.93 +2020-09-04 11:15:00,126.1,53.519,49.06100000000001,29.93 +2020-09-04 11:30:00,129.93,54.115,49.06100000000001,29.93 +2020-09-04 11:45:00,120.43,54.05,49.06100000000001,29.93 +2020-09-04 12:00:00,116.34,50.803999999999995,45.595,29.93 +2020-09-04 12:15:00,122.71,49.553999999999995,45.595,29.93 +2020-09-04 12:30:00,109.57,48.861999999999995,45.595,29.93 +2020-09-04 12:45:00,103.66,49.325,45.595,29.93 +2020-09-04 13:00:00,100.92,48.995,43.218,29.93 +2020-09-04 13:15:00,101.16,49.873000000000005,43.218,29.93 +2020-09-04 13:30:00,100.93,49.382,43.218,29.93 +2020-09-04 13:45:00,100.61,48.751999999999995,43.218,29.93 +2020-09-04 14:00:00,99.88,48.977,41.926,29.93 +2020-09-04 14:15:00,100.39,48.406000000000006,41.926,29.93 +2020-09-04 14:30:00,103.67,48.613,41.926,29.93 +2020-09-04 14:45:00,105.03,48.823,41.926,29.93 +2020-09-04 15:00:00,106.17,49.254,43.79,29.93 +2020-09-04 15:15:00,101.95,46.93600000000001,43.79,29.93 +2020-09-04 15:30:00,95.93,45.091,43.79,29.93 +2020-09-04 15:45:00,97.23,43.538999999999994,43.79,29.93 +2020-09-04 16:00:00,99.92,44.988,45.895,29.93 +2020-09-04 16:15:00,100.88,45.3,45.895,29.93 +2020-09-04 16:30:00,104.55,45.525,45.895,29.93 +2020-09-04 16:45:00,106.79,42.534,45.895,29.93 +2020-09-04 17:00:00,106.67,45.867,51.36,29.93 +2020-09-04 17:15:00,105.13,46.685,51.36,29.93 +2020-09-04 17:30:00,106.1,46.251999999999995,51.36,29.93 +2020-09-04 17:45:00,108.53,45.159,51.36,29.93 +2020-09-04 18:00:00,108.52,47.55,52.985,29.93 +2020-09-04 18:15:00,105.88,46.141999999999996,52.985,29.93 +2020-09-04 18:30:00,108.88,44.162,52.985,29.93 +2020-09-04 18:45:00,110.64,48.68,52.985,29.93 +2020-09-04 19:00:00,111.33,52.07,52.602,29.93 +2020-09-04 19:15:00,112.44,51.495,52.602,29.93 +2020-09-04 19:30:00,112.3,50.453,52.602,29.93 +2020-09-04 19:45:00,106.77,49.611999999999995,52.602,29.93 +2020-09-04 20:00:00,98.61,47.763000000000005,58.063,29.93 +2020-09-04 20:15:00,99.3,47.946999999999996,58.063,29.93 +2020-09-04 20:30:00,95.69,47.044,58.063,29.93 +2020-09-04 20:45:00,93.25,46.33,58.063,29.93 +2020-09-04 21:00:00,88.17,46.15,50.135,29.93 +2020-09-04 21:15:00,88.23,49.258,50.135,29.93 +2020-09-04 21:30:00,85.09,48.846000000000004,50.135,29.93 +2020-09-04 21:45:00,85.78,48.718999999999994,50.135,29.93 +2020-09-04 22:00:00,82.3,46.283,45.165,29.93 +2020-09-04 22:15:00,81.47,46.729,45.165,29.93 +2020-09-04 22:30:00,77.2,44.387,45.165,29.93 +2020-09-04 22:45:00,79.3,42.086000000000006,45.165,29.93 +2020-09-04 23:00:00,74.88,40.385,39.121,29.93 +2020-09-04 23:15:00,70.48,37.946999999999996,39.121,29.93 +2020-09-04 23:30:00,72.77,36.041,39.121,29.93 +2020-09-04 23:45:00,73.16,35.028,39.121,29.93 +2020-09-05 00:00:00,69.6,29.750999999999998,38.49,29.816 +2020-09-05 00:15:00,65.9,29.398000000000003,38.49,29.816 +2020-09-05 00:30:00,61.59,28.978,38.49,29.816 +2020-09-05 00:45:00,64.02,28.78,38.49,29.816 +2020-09-05 01:00:00,62.98,28.416999999999998,34.5,29.816 +2020-09-05 01:15:00,69.08,27.651,34.5,29.816 +2020-09-05 01:30:00,69.9,26.445999999999998,34.5,29.816 +2020-09-05 01:45:00,65.62,26.391,34.5,29.816 +2020-09-05 02:00:00,59.22,26.165,32.236,29.816 +2020-09-05 02:15:00,61.62,25.051,32.236,29.816 +2020-09-05 02:30:00,60.74,25.576999999999998,32.236,29.816 +2020-09-05 02:45:00,61.81,26.514,32.236,29.816 +2020-09-05 03:00:00,59.94,26.993000000000002,32.067,29.816 +2020-09-05 03:15:00,61.24,24.705,32.067,29.816 +2020-09-05 03:30:00,61.65,24.504,32.067,29.816 +2020-09-05 03:45:00,61.59,26.679000000000002,32.067,29.816 +2020-09-05 04:00:00,61.57,31.316999999999997,33.071,29.816 +2020-09-05 04:15:00,59.69,36.134,33.071,29.816 +2020-09-05 04:30:00,62.02,32.619,33.071,29.816 +2020-09-05 04:45:00,63.77,32.647,33.071,29.816 +2020-09-05 05:00:00,64.24,40.606,33.014,29.816 +2020-09-05 05:15:00,65.87,41.105,33.014,29.816 +2020-09-05 05:30:00,65.26,36.77,33.014,29.816 +2020-09-05 05:45:00,64.15,37.029,33.014,29.816 +2020-09-05 06:00:00,67.9,49.608999999999995,34.628,29.816 +2020-09-05 06:15:00,70.61,59.795,34.628,29.816 +2020-09-05 06:30:00,71.88,55.083,34.628,29.816 +2020-09-05 06:45:00,72.73,52.895,34.628,29.816 +2020-09-05 07:00:00,75.06,49.843999999999994,38.871,29.816 +2020-09-05 07:15:00,73.03,50.681999999999995,38.871,29.816 +2020-09-05 07:30:00,77.02,48.961999999999996,38.871,29.816 +2020-09-05 07:45:00,79.22,50.842,38.871,29.816 +2020-09-05 08:00:00,77.29,51.131,43.293,29.816 +2020-09-05 08:15:00,78.24,53.879,43.293,29.816 +2020-09-05 08:30:00,76.23,53.385,43.293,29.816 +2020-09-05 08:45:00,75.72,55.662,43.293,29.816 +2020-09-05 09:00:00,74.97,53.013000000000005,44.559,29.816 +2020-09-05 09:15:00,72.64,53.833,44.559,29.816 +2020-09-05 09:30:00,73.09,55.76,44.559,29.816 +2020-09-05 09:45:00,75.25,57.203,44.559,29.816 +2020-09-05 10:00:00,74.29,53.878,42.091,29.816 +2020-09-05 10:15:00,73.61,54.733000000000004,42.091,29.816 +2020-09-05 10:30:00,73.64,54.651,42.091,29.816 +2020-09-05 10:45:00,71.59,55.418,42.091,29.816 +2020-09-05 11:00:00,70.86,52.035,38.505,29.816 +2020-09-05 11:15:00,67.38,52.648,38.505,29.816 +2020-09-05 11:30:00,67.78,53.333999999999996,38.505,29.816 +2020-09-05 11:45:00,67.79,53.699,38.505,29.816 +2020-09-05 12:00:00,64.86,50.608999999999995,35.388000000000005,29.816 +2020-09-05 12:15:00,64.27,50.17,35.388000000000005,29.816 +2020-09-05 12:30:00,61.73,49.437,35.388000000000005,29.816 +2020-09-05 12:45:00,61.93,50.407,35.388000000000005,29.816 +2020-09-05 13:00:00,57.25,49.278999999999996,31.355999999999998,29.816 +2020-09-05 13:15:00,60.01,49.393,31.355999999999998,29.816 +2020-09-05 13:30:00,60.1,48.998000000000005,31.355999999999998,29.816 +2020-09-05 13:45:00,58.58,47.281000000000006,31.355999999999998,29.816 +2020-09-05 14:00:00,62.4,47.692,30.522,29.816 +2020-09-05 14:15:00,62.32,45.977,30.522,29.816 +2020-09-05 14:30:00,69.06,45.586000000000006,30.522,29.816 +2020-09-05 14:45:00,67.31,46.24,30.522,29.816 +2020-09-05 15:00:00,64.95,47.103,34.36,29.816 +2020-09-05 15:15:00,68.02,45.523,34.36,29.816 +2020-09-05 15:30:00,73.3,44.092,34.36,29.816 +2020-09-05 15:45:00,66.23,41.758,34.36,29.816 +2020-09-05 16:00:00,70.0,44.927,39.507,29.816 +2020-09-05 16:15:00,70.69,44.593999999999994,39.507,29.816 +2020-09-05 16:30:00,72.97,45.01,39.507,29.816 +2020-09-05 16:45:00,75.43,42.166000000000004,39.507,29.816 +2020-09-05 17:00:00,78.45,44.356,47.151,29.816 +2020-09-05 17:15:00,79.25,43.55,47.151,29.816 +2020-09-05 17:30:00,80.34,42.998000000000005,47.151,29.816 +2020-09-05 17:45:00,81.44,42.316,47.151,29.816 +2020-09-05 18:00:00,84.42,45.887,50.303999999999995,29.816 +2020-09-05 18:15:00,82.25,46.185,50.303999999999995,29.816 +2020-09-05 18:30:00,82.55,45.576,50.303999999999995,29.816 +2020-09-05 18:45:00,85.27,46.61600000000001,50.303999999999995,29.816 +2020-09-05 19:00:00,83.52,48.75899999999999,50.622,29.816 +2020-09-05 19:15:00,83.04,47.233000000000004,50.622,29.816 +2020-09-05 19:30:00,81.56,46.961999999999996,50.622,29.816 +2020-09-05 19:45:00,80.53,47.653,50.622,29.816 +2020-09-05 20:00:00,77.83,46.8,45.391000000000005,29.816 +2020-09-05 20:15:00,76.29,46.696000000000005,45.391000000000005,29.816 +2020-09-05 20:30:00,75.74,44.957,45.391000000000005,29.816 +2020-09-05 20:45:00,75.02,45.777,45.391000000000005,29.816 +2020-09-05 21:00:00,71.28,44.6,39.98,29.816 +2020-09-05 21:15:00,70.5,47.446000000000005,39.98,29.816 +2020-09-05 21:30:00,67.18,47.358999999999995,39.98,29.816 +2020-09-05 21:45:00,67.05,46.666000000000004,39.98,29.816 +2020-09-05 22:00:00,64.24,44.354,37.53,29.816 +2020-09-05 22:15:00,62.85,45.309,37.53,29.816 +2020-09-05 22:30:00,60.44,43.391000000000005,37.53,29.816 +2020-09-05 22:45:00,60.44,41.656000000000006,37.53,29.816 +2020-09-05 23:00:00,55.7,39.704,30.97,29.816 +2020-09-05 23:15:00,55.88,37.408,30.97,29.816 +2020-09-05 23:30:00,55.87,37.45,30.97,29.816 +2020-09-05 23:45:00,54.85,36.455,30.97,29.816 +2020-09-06 00:00:00,51.94,31.230999999999998,27.24,29.816 +2020-09-06 00:15:00,52.98,29.822,27.24,29.816 +2020-09-06 00:30:00,51.93,29.235,27.24,29.816 +2020-09-06 00:45:00,52.47,29.033,27.24,29.816 +2020-09-06 01:00:00,50.9,28.868000000000002,25.662,29.816 +2020-09-06 01:15:00,51.69,28.144000000000002,25.662,29.816 +2020-09-06 01:30:00,51.06,26.9,25.662,29.816 +2020-09-06 01:45:00,51.75,26.471999999999998,25.662,29.816 +2020-09-06 02:00:00,50.22,26.226,25.67,29.816 +2020-09-06 02:15:00,50.83,25.649,25.67,29.816 +2020-09-06 02:30:00,50.93,26.423000000000002,25.67,29.816 +2020-09-06 02:45:00,51.01,27.158,25.67,29.816 +2020-09-06 03:00:00,50.72,28.236,24.258000000000003,29.816 +2020-09-06 03:15:00,51.86,26.129,24.258000000000003,29.816 +2020-09-06 03:30:00,51.93,25.463,24.258000000000003,29.816 +2020-09-06 03:45:00,52.05,26.918000000000003,24.258000000000003,29.816 +2020-09-06 04:00:00,52.55,31.531,25.051,29.816 +2020-09-06 04:15:00,52.95,35.867,25.051,29.816 +2020-09-06 04:30:00,53.59,33.545,25.051,29.816 +2020-09-06 04:45:00,54.33,33.202,25.051,29.816 +2020-09-06 05:00:00,56.46,40.988,25.145,29.816 +2020-09-06 05:15:00,55.34,40.624,25.145,29.816 +2020-09-06 05:30:00,53.86,35.900999999999996,25.145,29.816 +2020-09-06 05:45:00,55.65,35.897,25.145,29.816 +2020-09-06 06:00:00,56.53,46.333999999999996,26.371,29.816 +2020-09-06 06:15:00,57.41,57.077,26.371,29.816 +2020-09-06 06:30:00,58.46,51.619,26.371,29.816 +2020-09-06 06:45:00,60.16,48.426,26.371,29.816 +2020-09-06 07:00:00,60.1,45.915,28.756999999999998,29.816 +2020-09-06 07:15:00,60.26,45.225,28.756999999999998,29.816 +2020-09-06 07:30:00,65.45,44.508,28.756999999999998,29.816 +2020-09-06 07:45:00,66.55,46.265,28.756999999999998,29.816 +2020-09-06 08:00:00,66.48,47.442,32.82,29.816 +2020-09-06 08:15:00,65.64,51.174,32.82,29.816 +2020-09-06 08:30:00,58.67,51.653,32.82,29.816 +2020-09-06 08:45:00,61.25,54.093,32.82,29.816 +2020-09-06 09:00:00,63.13,51.301,35.534,29.816 +2020-09-06 09:15:00,57.61,51.75,35.534,29.816 +2020-09-06 09:30:00,58.16,54.012,35.534,29.816 +2020-09-06 09:45:00,60.38,56.286,35.534,29.816 +2020-09-06 10:00:00,61.07,53.742,35.925,29.816 +2020-09-06 10:15:00,60.78,54.75,35.925,29.816 +2020-09-06 10:30:00,63.8,54.928000000000004,35.925,29.816 +2020-09-06 10:45:00,61.65,56.318000000000005,35.925,29.816 +2020-09-06 11:00:00,61.14,52.763999999999996,37.056,29.816 +2020-09-06 11:15:00,57.92,52.993,37.056,29.816 +2020-09-06 11:30:00,60.04,54.018,37.056,29.816 +2020-09-06 11:45:00,59.7,54.666000000000004,37.056,29.816 +2020-09-06 12:00:00,59.47,52.391999999999996,33.124,29.816 +2020-09-06 12:15:00,59.46,51.644,33.124,29.816 +2020-09-06 12:30:00,57.73,50.933,33.124,29.816 +2020-09-06 12:45:00,56.0,51.214,33.124,29.816 +2020-09-06 13:00:00,53.2,49.711000000000006,29.874000000000002,29.816 +2020-09-06 13:15:00,54.82,49.708,29.874000000000002,29.816 +2020-09-06 13:30:00,54.67,48.316,29.874000000000002,29.816 +2020-09-06 13:45:00,53.78,47.49100000000001,29.874000000000002,29.816 +2020-09-06 14:00:00,52.66,48.938,27.302,29.816 +2020-09-06 14:15:00,55.42,47.761,27.302,29.816 +2020-09-06 14:30:00,57.66,46.483000000000004,27.302,29.816 +2020-09-06 14:45:00,57.04,46.153,27.302,29.816 +2020-09-06 15:00:00,57.93,46.895,27.642,29.816 +2020-09-06 15:15:00,56.35,44.723,27.642,29.816 +2020-09-06 15:30:00,55.04,43.233000000000004,27.642,29.816 +2020-09-06 15:45:00,55.71,41.247,27.642,29.816 +2020-09-06 16:00:00,59.68,43.17,31.945999999999998,29.816 +2020-09-06 16:15:00,60.8,42.937,31.945999999999998,29.816 +2020-09-06 16:30:00,66.16,44.26,31.945999999999998,29.816 +2020-09-06 16:45:00,71.81,41.54,31.945999999999998,29.816 +2020-09-06 17:00:00,76.25,44.00899999999999,40.387,29.816 +2020-09-06 17:15:00,77.49,44.511,40.387,29.816 +2020-09-06 17:30:00,78.34,44.708,40.387,29.816 +2020-09-06 17:45:00,74.93,44.711000000000006,40.387,29.816 +2020-09-06 18:00:00,79.12,48.699,44.575,29.816 +2020-09-06 18:15:00,78.19,48.806999999999995,44.575,29.816 +2020-09-06 18:30:00,80.41,47.744,44.575,29.816 +2020-09-06 18:45:00,80.48,49.102,44.575,29.816 +2020-09-06 19:00:00,92.24,53.111000000000004,45.623999999999995,29.816 +2020-09-06 19:15:00,91.93,50.673,45.623999999999995,29.816 +2020-09-06 19:30:00,89.23,50.163999999999994,45.623999999999995,29.816 +2020-09-06 19:45:00,85.71,50.617,45.623999999999995,29.816 +2020-09-06 20:00:00,81.21,49.949,44.583999999999996,29.816 +2020-09-06 20:15:00,87.39,49.841,44.583999999999996,29.816 +2020-09-06 20:30:00,86.81,48.938,44.583999999999996,29.816 +2020-09-06 20:45:00,86.6,48.099,44.583999999999996,29.816 +2020-09-06 21:00:00,78.52,46.498999999999995,39.732,29.816 +2020-09-06 21:15:00,79.0,48.997,39.732,29.816 +2020-09-06 21:30:00,80.14,48.376999999999995,39.732,29.816 +2020-09-06 21:45:00,77.29,47.978,39.732,29.816 +2020-09-06 22:00:00,73.53,47.293,38.571,29.816 +2020-09-06 22:15:00,73.0,46.657,38.571,29.816 +2020-09-06 22:30:00,71.65,43.901,38.571,29.816 +2020-09-06 22:45:00,71.15,40.95,38.571,29.816 +2020-09-06 23:00:00,65.54,38.457,33.121,29.816 +2020-09-06 23:15:00,66.93,37.468,33.121,29.816 +2020-09-06 23:30:00,66.52,37.135999999999996,33.121,29.816 +2020-09-06 23:45:00,66.55,36.387,33.121,29.816 +2020-09-07 00:00:00,64.09,33.271,32.506,29.93 +2020-09-07 00:15:00,66.1,32.906,32.506,29.93 +2020-09-07 00:30:00,65.16,32.003,32.506,29.93 +2020-09-07 00:45:00,72.59,31.397,32.506,29.93 +2020-09-07 01:00:00,71.19,31.555999999999997,31.121,29.93 +2020-09-07 01:15:00,72.55,30.802,31.121,29.93 +2020-09-07 01:30:00,70.95,29.899,31.121,29.93 +2020-09-07 01:45:00,71.59,29.4,31.121,29.93 +2020-09-07 02:00:00,71.83,29.554000000000002,29.605999999999998,29.93 +2020-09-07 02:15:00,71.29,28.28,29.605999999999998,29.93 +2020-09-07 02:30:00,65.32,29.213,29.605999999999998,29.93 +2020-09-07 02:45:00,68.55,29.741,29.605999999999998,29.93 +2020-09-07 03:00:00,73.65,31.401,28.124000000000002,29.93 +2020-09-07 03:15:00,75.4,30.138,28.124000000000002,29.93 +2020-09-07 03:30:00,77.07,30.045,28.124000000000002,29.93 +2020-09-07 03:45:00,72.74,31.016,28.124000000000002,29.93 +2020-09-07 04:00:00,78.77,38.909,29.743000000000002,29.93 +2020-09-07 04:15:00,78.27,46.333999999999996,29.743000000000002,29.93 +2020-09-07 04:30:00,81.92,43.856,29.743000000000002,29.93 +2020-09-07 04:45:00,87.93,43.864,29.743000000000002,29.93 +2020-09-07 05:00:00,95.33,59.738,36.191,29.93 +2020-09-07 05:15:00,99.43,70.842,36.191,29.93 +2020-09-07 05:30:00,100.39,64.77199999999999,36.191,29.93 +2020-09-07 05:45:00,103.16,61.369,36.191,29.93 +2020-09-07 06:00:00,107.79,60.716,55.277,29.93 +2020-09-07 06:15:00,107.35,61.775,55.277,29.93 +2020-09-07 06:30:00,111.41,60.729,55.277,29.93 +2020-09-07 06:45:00,110.88,63.191,55.277,29.93 +2020-09-07 07:00:00,111.5,61.396,65.697,29.93 +2020-09-07 07:15:00,111.03,62.872,65.697,29.93 +2020-09-07 07:30:00,108.26,61.34,65.697,29.93 +2020-09-07 07:45:00,107.84,63.056999999999995,65.697,29.93 +2020-09-07 08:00:00,106.73,61.815,57.028,29.93 +2020-09-07 08:15:00,106.0,64.19800000000001,57.028,29.93 +2020-09-07 08:30:00,105.72,63.345,57.028,29.93 +2020-09-07 08:45:00,105.41,65.547,57.028,29.93 +2020-09-07 09:00:00,105.06,61.758,52.633,29.93 +2020-09-07 09:15:00,103.6,60.206,52.633,29.93 +2020-09-07 09:30:00,104.14,61.515,52.633,29.93 +2020-09-07 09:45:00,108.19,61.792,52.633,29.93 +2020-09-07 10:00:00,105.88,59.531000000000006,50.647,29.93 +2020-09-07 10:15:00,107.1,60.333999999999996,50.647,29.93 +2020-09-07 10:30:00,106.5,59.99,50.647,29.93 +2020-09-07 10:45:00,110.53,60.085,50.647,29.93 +2020-09-07 11:00:00,112.98,56.413000000000004,50.245,29.93 +2020-09-07 11:15:00,107.64,57.105,50.245,29.93 +2020-09-07 11:30:00,101.36,58.91,50.245,29.93 +2020-09-07 11:45:00,103.67,59.924,50.245,29.93 +2020-09-07 12:00:00,108.34,56.413000000000004,46.956,29.93 +2020-09-07 12:15:00,106.87,55.748000000000005,46.956,29.93 +2020-09-07 12:30:00,97.46,54.169,46.956,29.93 +2020-09-07 12:45:00,99.84,54.635,46.956,29.93 +2020-09-07 13:00:00,97.74,53.949,47.383,29.93 +2020-09-07 13:15:00,100.52,52.99100000000001,47.383,29.93 +2020-09-07 13:30:00,97.51,51.676,47.383,29.93 +2020-09-07 13:45:00,96.25,51.64,47.383,29.93 +2020-09-07 14:00:00,98.27,52.184,47.1,29.93 +2020-09-07 14:15:00,99.93,51.449,47.1,29.93 +2020-09-07 14:30:00,104.1,49.985,47.1,29.93 +2020-09-07 14:45:00,107.04,51.446999999999996,47.1,29.93 +2020-09-07 15:00:00,106.36,52.048,49.355,29.93 +2020-09-07 15:15:00,104.11,49.193999999999996,49.355,29.93 +2020-09-07 15:30:00,105.03,48.29,49.355,29.93 +2020-09-07 15:45:00,108.61,45.835,49.355,29.93 +2020-09-07 16:00:00,109.53,48.643,52.14,29.93 +2020-09-07 16:15:00,109.89,48.38399999999999,52.14,29.93 +2020-09-07 16:30:00,113.1,49.004,52.14,29.93 +2020-09-07 16:45:00,113.41,46.208,52.14,29.93 +2020-09-07 17:00:00,113.76,47.629,58.705,29.93 +2020-09-07 17:15:00,113.0,48.368,58.705,29.93 +2020-09-07 17:30:00,115.63,48.17,58.705,29.93 +2020-09-07 17:45:00,114.27,47.673,58.705,29.93 +2020-09-07 18:00:00,115.1,50.723,59.153,29.93 +2020-09-07 18:15:00,112.76,48.966,59.153,29.93 +2020-09-07 18:30:00,113.45,47.331,59.153,29.93 +2020-09-07 18:45:00,118.05,51.548,59.153,29.93 +2020-09-07 19:00:00,114.98,55.098,61.483000000000004,29.93 +2020-09-07 19:15:00,112.15,53.696999999999996,61.483000000000004,29.93 +2020-09-07 19:30:00,113.66,52.918,61.483000000000004,29.93 +2020-09-07 19:45:00,113.35,52.733000000000004,61.483000000000004,29.93 +2020-09-07 20:00:00,109.69,50.699,67.55,29.93 +2020-09-07 20:15:00,107.25,51.534,67.55,29.93 +2020-09-07 20:30:00,106.23,50.851000000000006,67.55,29.93 +2020-09-07 20:45:00,103.57,50.35,67.55,29.93 +2020-09-07 21:00:00,96.79,48.262,60.026,29.93 +2020-09-07 21:15:00,92.0,51.003,60.026,29.93 +2020-09-07 21:30:00,87.06,50.658,60.026,29.93 +2020-09-07 21:45:00,91.31,49.968999999999994,60.026,29.93 +2020-09-07 22:00:00,88.7,47.123000000000005,52.736999999999995,29.93 +2020-09-07 22:15:00,87.47,48.068999999999996,52.736999999999995,29.93 +2020-09-07 22:30:00,82.02,40.363,52.736999999999995,29.93 +2020-09-07 22:45:00,84.25,36.84,52.736999999999995,29.93 +2020-09-07 23:00:00,81.67,34.525999999999996,44.408,29.93 +2020-09-07 23:15:00,82.18,32.357,44.408,29.93 +2020-09-07 23:30:00,79.67,32.315,44.408,29.93 +2020-09-07 23:45:00,80.93,31.396,44.408,29.93 +2020-09-08 00:00:00,78.69,31.4,44.438,29.93 +2020-09-08 00:15:00,78.24,31.965,44.438,29.93 +2020-09-08 00:30:00,74.74,31.59,44.438,29.93 +2020-09-08 00:45:00,78.91,31.578000000000003,44.438,29.93 +2020-09-08 01:00:00,78.69,31.218000000000004,41.468999999999994,29.93 +2020-09-08 01:15:00,79.73,30.53,41.468999999999994,29.93 +2020-09-08 01:30:00,74.2,29.549,41.468999999999994,29.93 +2020-09-08 01:45:00,79.22,28.631999999999998,41.468999999999994,29.93 +2020-09-08 02:00:00,78.78,28.364,39.708,29.93 +2020-09-08 02:15:00,79.67,28.124000000000002,39.708,29.93 +2020-09-08 02:30:00,78.51,28.616999999999997,39.708,29.93 +2020-09-08 02:45:00,78.4,29.432,39.708,29.93 +2020-09-08 03:00:00,81.3,30.445999999999998,38.919000000000004,29.93 +2020-09-08 03:15:00,79.9,29.929000000000002,38.919000000000004,29.93 +2020-09-08 03:30:00,77.62,29.871,38.919000000000004,29.93 +2020-09-08 03:45:00,81.23,29.865,38.919000000000004,29.93 +2020-09-08 04:00:00,88.53,36.65,40.092,29.93 +2020-09-08 04:15:00,91.69,44.075,40.092,29.93 +2020-09-08 04:30:00,94.06,41.461999999999996,40.092,29.93 +2020-09-08 04:45:00,99.19,42.047,40.092,29.93 +2020-09-08 05:00:00,107.52,59.983000000000004,43.713,29.93 +2020-09-08 05:15:00,111.02,71.717,43.713,29.93 +2020-09-08 05:30:00,106.44,65.628,43.713,29.93 +2020-09-08 05:45:00,110.66,61.523,43.713,29.93 +2020-09-08 06:00:00,113.9,61.646,56.033,29.93 +2020-09-08 06:15:00,116.71,63.085,56.033,29.93 +2020-09-08 06:30:00,119.58,61.678000000000004,56.033,29.93 +2020-09-08 06:45:00,119.15,63.302,56.033,29.93 +2020-09-08 07:00:00,121.33,61.621,66.003,29.93 +2020-09-08 07:15:00,120.99,62.865,66.003,29.93 +2020-09-08 07:30:00,121.51,61.317,66.003,29.93 +2020-09-08 07:45:00,119.76,62.193999999999996,66.003,29.93 +2020-09-08 08:00:00,113.06,60.905,57.474,29.93 +2020-09-08 08:15:00,112.42,62.732,57.474,29.93 +2020-09-08 08:30:00,112.09,62.012,57.474,29.93 +2020-09-08 08:45:00,114.08,63.347,57.474,29.93 +2020-09-08 09:00:00,111.56,59.766999999999996,51.928000000000004,29.93 +2020-09-08 09:15:00,113.34,58.276,51.928000000000004,29.93 +2020-09-08 09:30:00,112.99,60.253,51.928000000000004,29.93 +2020-09-08 09:45:00,116.22,61.656000000000006,51.928000000000004,29.93 +2020-09-08 10:00:00,117.84,58.111000000000004,49.46,29.93 +2020-09-08 10:15:00,109.46,58.625,49.46,29.93 +2020-09-08 10:30:00,109.25,58.316,49.46,29.93 +2020-09-08 10:45:00,109.93,59.315,49.46,29.93 +2020-09-08 11:00:00,105.93,55.848,48.206,29.93 +2020-09-08 11:15:00,109.06,56.84,48.206,29.93 +2020-09-08 11:30:00,107.95,57.488,48.206,29.93 +2020-09-08 11:45:00,108.6,58.178000000000004,48.206,29.93 +2020-09-08 12:00:00,108.71,54.305,46.285,29.93 +2020-09-08 12:15:00,108.48,53.868,46.285,29.93 +2020-09-08 12:30:00,108.83,53.159,46.285,29.93 +2020-09-08 12:45:00,105.3,54.181999999999995,46.285,29.93 +2020-09-08 13:00:00,104.99,53.108000000000004,46.861999999999995,29.93 +2020-09-08 13:15:00,107.88,53.677,46.861999999999995,29.93 +2020-09-08 13:30:00,110.14,52.479,46.861999999999995,29.93 +2020-09-08 13:45:00,107.86,51.63,46.861999999999995,29.93 +2020-09-08 14:00:00,108.5,52.566,46.488,29.93 +2020-09-08 14:15:00,109.29,51.687,46.488,29.93 +2020-09-08 14:30:00,103.98,50.617,46.488,29.93 +2020-09-08 14:45:00,103.36,51.375,46.488,29.93 +2020-09-08 15:00:00,104.44,51.73,48.442,29.93 +2020-09-08 15:15:00,102.88,49.745,48.442,29.93 +2020-09-08 15:30:00,100.95,48.707,48.442,29.93 +2020-09-08 15:45:00,101.93,46.519,48.442,29.93 +2020-09-08 16:00:00,106.74,48.718999999999994,50.397,29.93 +2020-09-08 16:15:00,109.62,48.608000000000004,50.397,29.93 +2020-09-08 16:30:00,111.41,48.976000000000006,50.397,29.93 +2020-09-08 16:45:00,111.89,46.9,50.397,29.93 +2020-09-08 17:00:00,114.63,48.536,56.668,29.93 +2020-09-08 17:15:00,112.41,49.675,56.668,29.93 +2020-09-08 17:30:00,113.49,49.18,56.668,29.93 +2020-09-08 17:45:00,115.51,48.411,56.668,29.93 +2020-09-08 18:00:00,115.96,50.586999999999996,57.957,29.93 +2020-09-08 18:15:00,112.95,50.101000000000006,57.957,29.93 +2020-09-08 18:30:00,113.99,48.21,57.957,29.93 +2020-09-08 18:45:00,116.35,52.343,57.957,29.93 +2020-09-08 19:00:00,120.65,54.869,57.056000000000004,29.93 +2020-09-08 19:15:00,118.5,53.596000000000004,57.056000000000004,29.93 +2020-09-08 19:30:00,120.53,52.551,57.056000000000004,29.93 +2020-09-08 19:45:00,111.59,52.668,57.056000000000004,29.93 +2020-09-08 20:00:00,103.31,51.019,64.156,29.93 +2020-09-08 20:15:00,102.93,50.501000000000005,64.156,29.93 +2020-09-08 20:30:00,100.46,49.946999999999996,64.156,29.93 +2020-09-08 20:45:00,102.55,49.711000000000006,64.156,29.93 +2020-09-08 21:00:00,101.45,48.318000000000005,56.507,29.93 +2020-09-08 21:15:00,102.7,49.847,56.507,29.93 +2020-09-08 21:30:00,97.23,49.58,56.507,29.93 +2020-09-08 21:45:00,96.21,49.055,56.507,29.93 +2020-09-08 22:00:00,91.16,46.526,50.728,29.93 +2020-09-08 22:15:00,91.57,47.123000000000005,50.728,29.93 +2020-09-08 22:30:00,84.85,39.665,50.728,29.93 +2020-09-08 22:45:00,86.91,36.171,50.728,29.93 +2020-09-08 23:00:00,84.69,33.22,43.556999999999995,29.93 +2020-09-08 23:15:00,85.78,32.317,43.556999999999995,29.93 +2020-09-08 23:30:00,82.52,32.239000000000004,43.556999999999995,29.93 +2020-09-08 23:45:00,85.59,31.436999999999998,43.556999999999995,29.93 +2020-09-09 00:00:00,82.31,31.622,41.151,29.93 +2020-09-09 00:15:00,83.13,32.187,41.151,29.93 +2020-09-09 00:30:00,79.51,31.819000000000003,41.151,29.93 +2020-09-09 00:45:00,77.56,31.813000000000002,41.151,29.93 +2020-09-09 01:00:00,79.6,31.435,37.763000000000005,29.93 +2020-09-09 01:15:00,81.91,30.766,37.763000000000005,29.93 +2020-09-09 01:30:00,82.15,29.803,37.763000000000005,29.93 +2020-09-09 01:45:00,79.99,28.886999999999997,37.763000000000005,29.93 +2020-09-09 02:00:00,74.52,28.623,35.615,29.93 +2020-09-09 02:15:00,74.8,28.405,35.615,29.93 +2020-09-09 02:30:00,81.69,28.874000000000002,35.615,29.93 +2020-09-09 02:45:00,82.63,29.683000000000003,35.615,29.93 +2020-09-09 03:00:00,83.44,30.685,35.153,29.93 +2020-09-09 03:15:00,78.79,30.186,35.153,29.93 +2020-09-09 03:30:00,84.28,30.133000000000003,35.153,29.93 +2020-09-09 03:45:00,86.29,30.113000000000003,35.153,29.93 +2020-09-09 04:00:00,89.48,36.935,36.203,29.93 +2020-09-09 04:15:00,89.42,44.39,36.203,29.93 +2020-09-09 04:30:00,94.57,41.785,36.203,29.93 +2020-09-09 04:45:00,102.54,42.376000000000005,36.203,29.93 +2020-09-09 05:00:00,108.61,60.409,39.922,29.93 +2020-09-09 05:15:00,107.95,72.247,39.922,29.93 +2020-09-09 05:30:00,111.12,66.142,39.922,29.93 +2020-09-09 05:45:00,111.45,61.985,39.922,29.93 +2020-09-09 06:00:00,113.78,62.07,56.443999999999996,29.93 +2020-09-09 06:15:00,116.37,63.535,56.443999999999996,29.93 +2020-09-09 06:30:00,119.03,62.123000000000005,56.443999999999996,29.93 +2020-09-09 06:45:00,118.81,63.743,56.443999999999996,29.93 +2020-09-09 07:00:00,118.73,62.062,68.683,29.93 +2020-09-09 07:15:00,118.39,63.321000000000005,68.683,29.93 +2020-09-09 07:30:00,116.09,61.806000000000004,68.683,29.93 +2020-09-09 07:45:00,114.53,62.681999999999995,68.683,29.93 +2020-09-09 08:00:00,113.91,61.396,59.003,29.93 +2020-09-09 08:15:00,112.48,63.184,59.003,29.93 +2020-09-09 08:30:00,113.23,62.471000000000004,59.003,29.93 +2020-09-09 08:45:00,114.44,63.788000000000004,59.003,29.93 +2020-09-09 09:00:00,111.57,60.216,56.21,29.93 +2020-09-09 09:15:00,109.34,58.714,56.21,29.93 +2020-09-09 09:30:00,109.66,60.67100000000001,56.21,29.93 +2020-09-09 09:45:00,109.6,62.044,56.21,29.93 +2020-09-09 10:00:00,108.97,58.495,52.358999999999995,29.93 +2020-09-09 10:15:00,108.59,58.974,52.358999999999995,29.93 +2020-09-09 10:30:00,107.81,58.653,52.358999999999995,29.93 +2020-09-09 10:45:00,107.09,59.638999999999996,52.358999999999995,29.93 +2020-09-09 11:00:00,105.96,56.187,51.161,29.93 +2020-09-09 11:15:00,104.7,57.163999999999994,51.161,29.93 +2020-09-09 11:30:00,105.82,57.81,51.161,29.93 +2020-09-09 11:45:00,102.87,58.482,51.161,29.93 +2020-09-09 12:00:00,103.56,54.586000000000006,49.119,29.93 +2020-09-09 12:15:00,100.18,54.136,49.119,29.93 +2020-09-09 12:30:00,98.72,53.456,49.119,29.93 +2020-09-09 12:45:00,100.89,54.467,49.119,29.93 +2020-09-09 13:00:00,101.22,53.369,49.187,29.93 +2020-09-09 13:15:00,101.0,53.93,49.187,29.93 +2020-09-09 13:30:00,103.88,52.728,49.187,29.93 +2020-09-09 13:45:00,102.94,51.888000000000005,49.187,29.93 +2020-09-09 14:00:00,103.48,52.784,49.787,29.93 +2020-09-09 14:15:00,104.49,51.917,49.787,29.93 +2020-09-09 14:30:00,101.7,50.873999999999995,49.787,29.93 +2020-09-09 14:45:00,101.43,51.63,49.787,29.93 +2020-09-09 15:00:00,101.46,51.931000000000004,51.458999999999996,29.93 +2020-09-09 15:15:00,101.99,49.961000000000006,51.458999999999996,29.93 +2020-09-09 15:30:00,102.58,48.946999999999996,51.458999999999996,29.93 +2020-09-09 15:45:00,104.51,46.772,51.458999999999996,29.93 +2020-09-09 16:00:00,104.61,48.935,53.663000000000004,29.93 +2020-09-09 16:15:00,109.4,48.835,53.663000000000004,29.93 +2020-09-09 16:30:00,108.58,49.201,53.663000000000004,29.93 +2020-09-09 16:45:00,109.96,47.181000000000004,53.663000000000004,29.93 +2020-09-09 17:00:00,112.76,48.776,58.183,29.93 +2020-09-09 17:15:00,112.11,49.945,58.183,29.93 +2020-09-09 17:30:00,115.42,49.458999999999996,58.183,29.93 +2020-09-09 17:45:00,113.9,48.728,58.183,29.93 +2020-09-09 18:00:00,112.53,50.887,60.141000000000005,29.93 +2020-09-09 18:15:00,111.03,50.411,60.141000000000005,29.93 +2020-09-09 18:30:00,112.22,48.534,60.141000000000005,29.93 +2020-09-09 18:45:00,115.87,52.662,60.141000000000005,29.93 +2020-09-09 19:00:00,114.45,55.199,60.582,29.93 +2020-09-09 19:15:00,114.54,53.925,60.582,29.93 +2020-09-09 19:30:00,114.12,52.881,60.582,29.93 +2020-09-09 19:45:00,114.17,52.997,60.582,29.93 +2020-09-09 20:00:00,107.24,51.36600000000001,66.61,29.93 +2020-09-09 20:15:00,100.92,50.848,66.61,29.93 +2020-09-09 20:30:00,105.27,50.271,66.61,29.93 +2020-09-09 20:45:00,105.34,49.992,66.61,29.93 +2020-09-09 21:00:00,100.98,48.603,57.658,29.93 +2020-09-09 21:15:00,97.14,50.12,57.658,29.93 +2020-09-09 21:30:00,95.75,49.858999999999995,57.658,29.93 +2020-09-09 21:45:00,95.25,49.29600000000001,57.658,29.93 +2020-09-09 22:00:00,92.5,46.744,51.81,29.93 +2020-09-09 22:15:00,86.93,47.318000000000005,51.81,29.93 +2020-09-09 22:30:00,87.86,39.836,51.81,29.93 +2020-09-09 22:45:00,86.09,36.346,51.81,29.93 +2020-09-09 23:00:00,84.21,33.443000000000005,42.93600000000001,29.93 +2020-09-09 23:15:00,82.99,32.514,42.93600000000001,29.93 +2020-09-09 23:30:00,83.34,32.443000000000005,42.93600000000001,29.93 +2020-09-09 23:45:00,84.51,31.645,42.93600000000001,29.93 +2020-09-10 00:00:00,80.33,31.846,39.211,29.93 +2020-09-10 00:15:00,77.06,32.409,39.211,29.93 +2020-09-10 00:30:00,80.13,32.05,39.211,29.93 +2020-09-10 00:45:00,81.28,32.049,39.211,29.93 +2020-09-10 01:00:00,81.02,31.653000000000002,37.607,29.93 +2020-09-10 01:15:00,75.14,31.005,37.607,29.93 +2020-09-10 01:30:00,73.91,30.059,37.607,29.93 +2020-09-10 01:45:00,77.05,29.145,37.607,29.93 +2020-09-10 02:00:00,80.23,28.884,36.44,29.93 +2020-09-10 02:15:00,81.87,28.69,36.44,29.93 +2020-09-10 02:30:00,73.49,29.133000000000003,36.44,29.93 +2020-09-10 02:45:00,74.47,29.936999999999998,36.44,29.93 +2020-09-10 03:00:00,77.1,30.927,36.116,29.93 +2020-09-10 03:15:00,80.63,30.445,36.116,29.93 +2020-09-10 03:30:00,83.84,30.397,36.116,29.93 +2020-09-10 03:45:00,83.29,30.363000000000003,36.116,29.93 +2020-09-10 04:00:00,83.53,37.223,37.398,29.93 +2020-09-10 04:15:00,89.58,44.708,37.398,29.93 +2020-09-10 04:30:00,94.75,42.11,37.398,29.93 +2020-09-10 04:45:00,100.81,42.708999999999996,37.398,29.93 +2020-09-10 05:00:00,101.58,60.841,41.776,29.93 +2020-09-10 05:15:00,104.3,72.78699999999999,41.776,29.93 +2020-09-10 05:30:00,107.36,66.663,41.776,29.93 +2020-09-10 05:45:00,107.9,62.453,41.776,29.93 +2020-09-10 06:00:00,114.18,62.5,55.61,29.93 +2020-09-10 06:15:00,116.19,63.99,55.61,29.93 +2020-09-10 06:30:00,117.06,62.575,55.61,29.93 +2020-09-10 06:45:00,118.62,64.19,55.61,29.93 +2020-09-10 07:00:00,119.66,62.50899999999999,67.13600000000001,29.93 +2020-09-10 07:15:00,118.33,63.782,67.13600000000001,29.93 +2020-09-10 07:30:00,118.98,62.299,67.13600000000001,29.93 +2020-09-10 07:45:00,118.75,63.175,67.13600000000001,29.93 +2020-09-10 08:00:00,117.68,61.891999999999996,57.55,29.93 +2020-09-10 08:15:00,118.15,63.641000000000005,57.55,29.93 +2020-09-10 08:30:00,118.58,62.933,57.55,29.93 +2020-09-10 08:45:00,119.2,64.232,57.55,29.93 +2020-09-10 09:00:00,121.14,60.669,52.931999999999995,29.93 +2020-09-10 09:15:00,118.91,59.157,52.931999999999995,29.93 +2020-09-10 09:30:00,120.24,61.093,52.931999999999995,29.93 +2020-09-10 09:45:00,124.85,62.435,52.931999999999995,29.93 +2020-09-10 10:00:00,125.58,58.882,50.36600000000001,29.93 +2020-09-10 10:15:00,124.15,59.327,50.36600000000001,29.93 +2020-09-10 10:30:00,125.44,58.995,50.36600000000001,29.93 +2020-09-10 10:45:00,121.44,59.967,50.36600000000001,29.93 +2020-09-10 11:00:00,119.2,56.528,47.893,29.93 +2020-09-10 11:15:00,121.84,57.49100000000001,47.893,29.93 +2020-09-10 11:30:00,126.86,58.136,47.893,29.93 +2020-09-10 11:45:00,126.23,58.79,47.893,29.93 +2020-09-10 12:00:00,125.52,54.871,45.271,29.93 +2020-09-10 12:15:00,125.28,54.406000000000006,45.271,29.93 +2020-09-10 12:30:00,120.23,53.754,45.271,29.93 +2020-09-10 12:45:00,121.25,54.754,45.271,29.93 +2020-09-10 13:00:00,119.37,53.633,44.351000000000006,29.93 +2020-09-10 13:15:00,120.66,54.18600000000001,44.351000000000006,29.93 +2020-09-10 13:30:00,119.3,52.98,44.351000000000006,29.93 +2020-09-10 13:45:00,117.09,52.148,44.351000000000006,29.93 +2020-09-10 14:00:00,117.58,53.005,44.99,29.93 +2020-09-10 14:15:00,117.93,52.148999999999994,44.99,29.93 +2020-09-10 14:30:00,115.71,51.13399999999999,44.99,29.93 +2020-09-10 14:45:00,114.86,51.888000000000005,44.99,29.93 +2020-09-10 15:00:00,113.58,52.13399999999999,46.869,29.93 +2020-09-10 15:15:00,112.65,50.178999999999995,46.869,29.93 +2020-09-10 15:30:00,113.09,49.191,46.869,29.93 +2020-09-10 15:45:00,113.8,47.027,46.869,29.93 +2020-09-10 16:00:00,114.36,49.151,48.902,29.93 +2020-09-10 16:15:00,116.87,49.066,48.902,29.93 +2020-09-10 16:30:00,117.85,49.43,48.902,29.93 +2020-09-10 16:45:00,119.64,47.464,48.902,29.93 +2020-09-10 17:00:00,120.81,49.018,53.244,29.93 +2020-09-10 17:15:00,118.06,50.216,53.244,29.93 +2020-09-10 17:30:00,118.85,49.74100000000001,53.244,29.93 +2020-09-10 17:45:00,118.18,49.047,53.244,29.93 +2020-09-10 18:00:00,119.17,51.18899999999999,54.343999999999994,29.93 +2020-09-10 18:15:00,118.52,50.725,54.343999999999994,29.93 +2020-09-10 18:30:00,117.98,48.86,54.343999999999994,29.93 +2020-09-10 18:45:00,117.71,52.985,54.343999999999994,29.93 +2020-09-10 19:00:00,118.08,55.531000000000006,54.332,29.93 +2020-09-10 19:15:00,117.58,54.257,54.332,29.93 +2020-09-10 19:30:00,115.86,53.214,54.332,29.93 +2020-09-10 19:45:00,111.56,53.33,54.332,29.93 +2020-09-10 20:00:00,103.85,51.715,58.06,29.93 +2020-09-10 20:15:00,104.58,51.196999999999996,58.06,29.93 +2020-09-10 20:30:00,99.86,50.598,58.06,29.93 +2020-09-10 20:45:00,103.55,50.276,58.06,29.93 +2020-09-10 21:00:00,99.44,48.89,52.411,29.93 +2020-09-10 21:15:00,100.62,50.397,52.411,29.93 +2020-09-10 21:30:00,92.72,50.141000000000005,52.411,29.93 +2020-09-10 21:45:00,88.73,49.54,52.411,29.93 +2020-09-10 22:00:00,87.31,46.963,47.148999999999994,29.93 +2020-09-10 22:15:00,88.58,47.515,47.148999999999994,29.93 +2020-09-10 22:30:00,84.17,40.009,47.148999999999994,29.93 +2020-09-10 22:45:00,83.22,36.524,47.148999999999994,29.93 +2020-09-10 23:00:00,80.89,33.669000000000004,40.814,29.93 +2020-09-10 23:15:00,82.71,32.713,40.814,29.93 +2020-09-10 23:30:00,78.26,32.649,40.814,29.93 +2020-09-10 23:45:00,82.96,31.855999999999998,40.814,29.93 +2020-09-11 00:00:00,75.6,30.344,39.153,29.93 +2020-09-11 00:15:00,80.38,31.125,39.153,29.93 +2020-09-11 00:30:00,80.19,30.996,39.153,29.93 +2020-09-11 00:45:00,79.37,31.391,39.153,29.93 +2020-09-11 01:00:00,72.6,30.596999999999998,37.228,29.93 +2020-09-11 01:15:00,79.38,29.555,37.228,29.93 +2020-09-11 01:30:00,77.58,29.232,37.228,29.93 +2020-09-11 01:45:00,80.0,28.109,37.228,29.93 +2020-09-11 02:00:00,76.16,28.691,35.851,29.93 +2020-09-11 02:15:00,80.66,28.458000000000002,35.851,29.93 +2020-09-11 02:30:00,81.2,29.677,35.851,29.93 +2020-09-11 02:45:00,80.38,29.875999999999998,35.851,29.93 +2020-09-11 03:00:00,76.4,31.41,36.54,29.93 +2020-09-11 03:15:00,80.73,29.999000000000002,36.54,29.93 +2020-09-11 03:30:00,84.41,29.741999999999997,36.54,29.93 +2020-09-11 03:45:00,81.82,30.514,36.54,29.93 +2020-09-11 04:00:00,85.33,37.564,37.578,29.93 +2020-09-11 04:15:00,91.54,43.666000000000004,37.578,29.93 +2020-09-11 04:30:00,94.67,41.95,37.578,29.93 +2020-09-11 04:45:00,96.14,41.833,37.578,29.93 +2020-09-11 05:00:00,101.04,59.476000000000006,40.387,29.93 +2020-09-11 05:15:00,102.73,72.569,40.387,29.93 +2020-09-11 05:30:00,108.87,66.734,40.387,29.93 +2020-09-11 05:45:00,111.53,62.067,40.387,29.93 +2020-09-11 06:00:00,116.13,62.336000000000006,54.668,29.93 +2020-09-11 06:15:00,118.68,63.81100000000001,54.668,29.93 +2020-09-11 06:30:00,120.17,62.233999999999995,54.668,29.93 +2020-09-11 06:45:00,123.12,63.937,54.668,29.93 +2020-09-11 07:00:00,125.11,62.724,63.971000000000004,29.93 +2020-09-11 07:15:00,125.24,64.94800000000001,63.971000000000004,29.93 +2020-09-11 07:30:00,125.46,61.755,63.971000000000004,29.93 +2020-09-11 07:45:00,125.76,62.323,63.971000000000004,29.93 +2020-09-11 08:00:00,124.69,61.582,56.042,29.93 +2020-09-11 08:15:00,125.79,63.826,56.042,29.93 +2020-09-11 08:30:00,127.99,63.174,56.042,29.93 +2020-09-11 08:45:00,128.03,64.111,56.042,29.93 +2020-09-11 09:00:00,127.4,58.596000000000004,52.832,29.93 +2020-09-11 09:15:00,127.15,58.831,52.832,29.93 +2020-09-11 09:30:00,126.24,60.083999999999996,52.832,29.93 +2020-09-11 09:45:00,126.73,61.718,52.832,29.93 +2020-09-11 10:00:00,123.95,57.843999999999994,50.044,29.93 +2020-09-11 10:15:00,126.91,58.161,50.044,29.93 +2020-09-11 10:30:00,126.92,58.288000000000004,50.044,29.93 +2020-09-11 10:45:00,126.94,59.099,50.044,29.93 +2020-09-11 11:00:00,124.25,55.891999999999996,49.06100000000001,29.93 +2020-09-11 11:15:00,122.43,55.766000000000005,49.06100000000001,29.93 +2020-09-11 11:30:00,123.76,56.348,49.06100000000001,29.93 +2020-09-11 11:45:00,121.22,56.158,49.06100000000001,29.93 +2020-09-11 12:00:00,117.99,52.754,45.595,29.93 +2020-09-11 12:15:00,118.71,51.409,45.595,29.93 +2020-09-11 12:30:00,115.33,50.912,45.595,29.93 +2020-09-11 12:45:00,114.1,51.29600000000001,45.595,29.93 +2020-09-11 13:00:00,113.23,50.799,43.218,29.93 +2020-09-11 13:15:00,112.25,51.623000000000005,43.218,29.93 +2020-09-11 13:30:00,110.79,51.105,43.218,29.93 +2020-09-11 13:45:00,111.31,50.538000000000004,43.218,29.93 +2020-09-11 14:00:00,110.24,50.486999999999995,41.926,29.93 +2020-09-11 14:15:00,112.95,49.996,41.926,29.93 +2020-09-11 14:30:00,108.86,50.391999999999996,41.926,29.93 +2020-09-11 14:45:00,112.25,50.591,41.926,29.93 +2020-09-11 15:00:00,111.4,50.64,43.79,29.93 +2020-09-11 15:15:00,111.65,48.431000000000004,43.79,29.93 +2020-09-11 15:30:00,110.79,46.753,43.79,29.93 +2020-09-11 15:45:00,107.67,45.287,43.79,29.93 +2020-09-11 16:00:00,107.07,46.474,45.895,29.93 +2020-09-11 16:15:00,108.07,46.873999999999995,45.895,29.93 +2020-09-11 16:30:00,106.95,47.09,45.895,29.93 +2020-09-11 16:45:00,105.52,44.477,45.895,29.93 +2020-09-11 17:00:00,109.06,47.535,51.36,29.93 +2020-09-11 17:15:00,109.74,48.553000000000004,51.36,29.93 +2020-09-11 17:30:00,110.3,48.187,51.36,29.93 +2020-09-11 17:45:00,111.89,47.353,51.36,29.93 +2020-09-11 18:00:00,111.62,49.632,52.985,29.93 +2020-09-11 18:15:00,109.54,48.294,52.985,29.93 +2020-09-11 18:30:00,111.46,46.401,52.985,29.93 +2020-09-11 18:45:00,114.19,50.891999999999996,52.985,29.93 +2020-09-11 19:00:00,112.04,54.356,52.602,29.93 +2020-09-11 19:15:00,108.7,53.778,52.602,29.93 +2020-09-11 19:30:00,105.58,52.738,52.602,29.93 +2020-09-11 19:45:00,103.63,51.891999999999996,52.602,29.93 +2020-09-11 20:00:00,98.96,50.158,58.063,29.93 +2020-09-11 20:15:00,100.7,50.345,58.063,29.93 +2020-09-11 20:30:00,97.79,49.286,58.063,29.93 +2020-09-11 20:45:00,98.82,48.273999999999994,58.063,29.93 +2020-09-11 21:00:00,92.16,48.119,50.135,29.93 +2020-09-11 21:15:00,87.15,51.151,50.135,29.93 +2020-09-11 21:30:00,82.01,50.773999999999994,50.135,29.93 +2020-09-11 21:45:00,83.79,50.385,50.135,29.93 +2020-09-11 22:00:00,84.45,47.785,45.165,29.93 +2020-09-11 22:15:00,82.84,48.075,45.165,29.93 +2020-09-11 22:30:00,74.05,45.567,45.165,29.93 +2020-09-11 22:45:00,75.88,43.292,45.165,29.93 +2020-09-11 23:00:00,67.88,41.926,39.121,29.93 +2020-09-11 23:15:00,66.06,39.306999999999995,39.121,29.93 +2020-09-11 23:30:00,65.9,37.449,39.121,29.93 +2020-09-11 23:45:00,73.95,36.47,39.121,29.93 +2020-09-12 00:00:00,72.49,31.303,38.49,29.816 +2020-09-12 00:15:00,70.54,30.943,38.49,29.816 +2020-09-12 00:30:00,63.74,30.576,38.49,29.816 +2020-09-12 00:45:00,64.17,30.421999999999997,38.49,29.816 +2020-09-12 01:00:00,63.03,29.933000000000003,34.5,29.816 +2020-09-12 01:15:00,61.92,29.307,34.5,29.816 +2020-09-12 01:30:00,61.64,28.223000000000003,34.5,29.816 +2020-09-12 01:45:00,61.96,28.176,34.5,29.816 +2020-09-12 02:00:00,62.24,27.976,32.236,29.816 +2020-09-12 02:15:00,67.5,27.022,32.236,29.816 +2020-09-12 02:30:00,67.15,27.374000000000002,32.236,29.816 +2020-09-12 02:45:00,66.48,28.275,32.236,29.816 +2020-09-12 03:00:00,65.68,28.665,32.067,29.816 +2020-09-12 03:15:00,61.69,26.500999999999998,32.067,29.816 +2020-09-12 03:30:00,61.21,26.336,32.067,29.816 +2020-09-12 03:45:00,61.06,28.415,32.067,29.816 +2020-09-12 04:00:00,62.25,33.311,33.071,29.816 +2020-09-12 04:15:00,61.64,38.334,33.071,29.816 +2020-09-12 04:30:00,61.43,34.878,33.071,29.816 +2020-09-12 04:45:00,64.14,34.945,33.071,29.816 +2020-09-12 05:00:00,66.46,43.589,33.014,29.816 +2020-09-12 05:15:00,68.23,44.825,33.014,29.816 +2020-09-12 05:30:00,66.76,40.367,33.014,29.816 +2020-09-12 05:45:00,68.02,40.258,33.014,29.816 +2020-09-12 06:00:00,70.3,52.581,34.628,29.816 +2020-09-12 06:15:00,72.97,62.941,34.628,29.816 +2020-09-12 06:30:00,74.15,58.201,34.628,29.816 +2020-09-12 06:45:00,76.25,55.983999999999995,34.628,29.816 +2020-09-12 07:00:00,77.74,52.931999999999995,38.871,29.816 +2020-09-12 07:15:00,80.76,53.872,38.871,29.816 +2020-09-12 07:30:00,82.04,52.38,38.871,29.816 +2020-09-12 07:45:00,79.99,54.251999999999995,38.871,29.816 +2020-09-12 08:00:00,80.65,54.566,43.293,29.816 +2020-09-12 08:15:00,84.33,57.047,43.293,29.816 +2020-09-12 08:30:00,80.92,56.593,43.293,29.816 +2020-09-12 08:45:00,82.18,58.745,43.293,29.816 +2020-09-12 09:00:00,73.56,56.155,44.559,29.816 +2020-09-12 09:15:00,72.42,56.9,44.559,29.816 +2020-09-12 09:30:00,72.7,58.683,44.559,29.816 +2020-09-12 09:45:00,77.44,59.915,44.559,29.816 +2020-09-12 10:00:00,76.92,56.563,42.091,29.816 +2020-09-12 10:15:00,82.93,57.177,42.091,29.816 +2020-09-12 10:30:00,75.13,57.018,42.091,29.816 +2020-09-12 10:45:00,78.26,57.68899999999999,42.091,29.816 +2020-09-12 11:00:00,75.56,54.4,38.505,29.816 +2020-09-12 11:15:00,72.28,54.917,38.505,29.816 +2020-09-12 11:30:00,70.41,55.589,38.505,29.816 +2020-09-12 11:45:00,69.55,55.831,38.505,29.816 +2020-09-12 12:00:00,69.43,52.578,35.388000000000005,29.816 +2020-09-12 12:15:00,67.6,52.043,35.388000000000005,29.816 +2020-09-12 12:30:00,66.35,51.507,35.388000000000005,29.816 +2020-09-12 12:45:00,66.07,52.397,35.388000000000005,29.816 +2020-09-12 13:00:00,63.61,51.104,31.355999999999998,29.816 +2020-09-12 13:15:00,68.82,51.163999999999994,31.355999999999998,29.816 +2020-09-12 13:30:00,66.78,50.739,31.355999999999998,29.816 +2020-09-12 13:45:00,66.36,49.083999999999996,31.355999999999998,29.816 +2020-09-12 14:00:00,68.36,49.22,30.522,29.816 +2020-09-12 14:15:00,69.67,47.583999999999996,30.522,29.816 +2020-09-12 14:30:00,66.25,47.385,30.522,29.816 +2020-09-12 14:45:00,67.5,48.027,30.522,29.816 +2020-09-12 15:00:00,68.44,48.504,34.36,29.816 +2020-09-12 15:15:00,69.12,47.034,34.36,29.816 +2020-09-12 15:30:00,69.44,45.773,34.36,29.816 +2020-09-12 15:45:00,70.61,43.525,34.36,29.816 +2020-09-12 16:00:00,73.84,46.43,39.507,29.816 +2020-09-12 16:15:00,75.23,46.185,39.507,29.816 +2020-09-12 16:30:00,75.45,46.589,39.507,29.816 +2020-09-12 16:45:00,77.86,44.126999999999995,39.507,29.816 +2020-09-12 17:00:00,81.34,46.038000000000004,47.151,29.816 +2020-09-12 17:15:00,84.36,45.433,47.151,29.816 +2020-09-12 17:30:00,82.72,44.951,47.151,29.816 +2020-09-12 17:45:00,83.58,44.531000000000006,47.151,29.816 +2020-09-12 18:00:00,85.61,47.988,50.303999999999995,29.816 +2020-09-12 18:15:00,84.62,48.356,50.303999999999995,29.816 +2020-09-12 18:30:00,89.46,47.836999999999996,50.303999999999995,29.816 +2020-09-12 18:45:00,89.86,48.85,50.303999999999995,29.816 +2020-09-12 19:00:00,88.15,51.066,50.622,29.816 +2020-09-12 19:15:00,83.92,49.538000000000004,50.622,29.816 +2020-09-12 19:30:00,83.24,49.269,50.622,29.816 +2020-09-12 19:45:00,82.65,49.957,50.622,29.816 +2020-09-12 20:00:00,80.31,49.22,45.391000000000005,29.816 +2020-09-12 20:15:00,77.48,49.12,45.391000000000005,29.816 +2020-09-12 20:30:00,76.12,47.223,45.391000000000005,29.816 +2020-09-12 20:45:00,75.87,47.74100000000001,45.391000000000005,29.816 +2020-09-12 21:00:00,71.68,46.589,39.98,29.816 +2020-09-12 21:15:00,70.68,49.358999999999995,39.98,29.816 +2020-09-12 21:30:00,68.86,49.309,39.98,29.816 +2020-09-12 21:45:00,68.45,48.352,39.98,29.816 +2020-09-12 22:00:00,64.74,45.873999999999995,37.53,29.816 +2020-09-12 22:15:00,65.48,46.672,37.53,29.816 +2020-09-12 22:30:00,62.36,44.59,37.53,29.816 +2020-09-12 22:45:00,62.8,42.88,37.53,29.816 +2020-09-12 23:00:00,57.88,41.266999999999996,30.97,29.816 +2020-09-12 23:15:00,56.65,38.785,30.97,29.816 +2020-09-12 23:30:00,58.13,38.875,30.97,29.816 +2020-09-12 23:45:00,57.91,37.913000000000004,30.97,29.816 +2020-09-13 00:00:00,53.28,32.799,27.24,29.816 +2020-09-13 00:15:00,53.54,31.384,27.24,29.816 +2020-09-13 00:30:00,53.48,30.849,27.24,29.816 +2020-09-13 00:45:00,53.88,30.689,27.24,29.816 +2020-09-13 01:00:00,51.24,30.398000000000003,25.662,29.816 +2020-09-13 01:15:00,52.62,29.816,25.662,29.816 +2020-09-13 01:30:00,52.7,28.694000000000003,25.662,29.816 +2020-09-13 01:45:00,52.44,28.274,25.662,29.816 +2020-09-13 02:00:00,53.25,28.054000000000002,25.67,29.816 +2020-09-13 02:15:00,52.44,27.636999999999997,25.67,29.816 +2020-09-13 02:30:00,51.82,28.238000000000003,25.67,29.816 +2020-09-13 02:45:00,51.81,28.935,25.67,29.816 +2020-09-13 03:00:00,50.96,29.924,24.258000000000003,29.816 +2020-09-13 03:15:00,52.6,27.941,24.258000000000003,29.816 +2020-09-13 03:30:00,52.63,27.311,24.258000000000003,29.816 +2020-09-13 03:45:00,52.9,28.666999999999998,24.258000000000003,29.816 +2020-09-13 04:00:00,53.7,33.546,25.051,29.816 +2020-09-13 04:15:00,54.59,38.092,25.051,29.816 +2020-09-13 04:30:00,54.4,35.829,25.051,29.816 +2020-09-13 04:45:00,55.85,35.528,25.051,29.816 +2020-09-13 05:00:00,57.42,44.011,25.145,29.816 +2020-09-13 05:15:00,58.05,44.397,25.145,29.816 +2020-09-13 05:30:00,55.99,39.544000000000004,25.145,29.816 +2020-09-13 05:45:00,56.86,39.168,25.145,29.816 +2020-09-13 06:00:00,57.81,49.345,26.371,29.816 +2020-09-13 06:15:00,58.65,60.265,26.371,29.816 +2020-09-13 06:30:00,58.81,54.775,26.371,29.816 +2020-09-13 06:45:00,60.74,51.551,26.371,29.816 +2020-09-13 07:00:00,61.74,49.041000000000004,28.756999999999998,29.816 +2020-09-13 07:15:00,61.61,48.45,28.756999999999998,29.816 +2020-09-13 07:30:00,61.01,47.961999999999996,28.756999999999998,29.816 +2020-09-13 07:45:00,61.51,49.708999999999996,28.756999999999998,29.816 +2020-09-13 08:00:00,61.6,50.91,32.82,29.816 +2020-09-13 08:15:00,63.67,54.369,32.82,29.816 +2020-09-13 08:30:00,61.43,54.89,32.82,29.816 +2020-09-13 08:45:00,60.33,57.203,32.82,29.816 +2020-09-13 09:00:00,58.83,54.472,35.534,29.816 +2020-09-13 09:15:00,60.35,54.845,35.534,29.816 +2020-09-13 09:30:00,60.42,56.964,35.534,29.816 +2020-09-13 09:45:00,60.83,59.023999999999994,35.534,29.816 +2020-09-13 10:00:00,61.52,56.451,35.925,29.816 +2020-09-13 10:15:00,63.03,57.215,35.925,29.816 +2020-09-13 10:30:00,64.13,57.315,35.925,29.816 +2020-09-13 10:45:00,64.9,58.61,35.925,29.816 +2020-09-13 11:00:00,61.16,55.151,37.056,29.816 +2020-09-13 11:15:00,60.3,55.281000000000006,37.056,29.816 +2020-09-13 11:30:00,56.6,56.294,37.056,29.816 +2020-09-13 11:45:00,58.49,56.818000000000005,37.056,29.816 +2020-09-13 12:00:00,52.37,54.376999999999995,33.124,29.816 +2020-09-13 12:15:00,54.75,53.535,33.124,29.816 +2020-09-13 12:30:00,50.06,53.025,33.124,29.816 +2020-09-13 12:45:00,50.17,53.224,33.124,29.816 +2020-09-13 13:00:00,49.32,51.556999999999995,29.874000000000002,29.816 +2020-09-13 13:15:00,49.67,51.497,29.874000000000002,29.816 +2020-09-13 13:30:00,48.44,50.077,29.874000000000002,29.816 +2020-09-13 13:45:00,49.63,49.31399999999999,29.874000000000002,29.816 +2020-09-13 14:00:00,49.39,50.481,27.302,29.816 +2020-09-13 14:15:00,50.02,49.385,27.302,29.816 +2020-09-13 14:30:00,50.96,48.302,27.302,29.816 +2020-09-13 14:45:00,52.31,47.96,27.302,29.816 +2020-09-13 15:00:00,52.47,48.31100000000001,27.642,29.816 +2020-09-13 15:15:00,56.04,46.251000000000005,27.642,29.816 +2020-09-13 15:30:00,55.91,44.931000000000004,27.642,29.816 +2020-09-13 15:45:00,58.62,43.033,27.642,29.816 +2020-09-13 16:00:00,63.63,44.687,31.945999999999998,29.816 +2020-09-13 16:15:00,63.63,44.543,31.945999999999998,29.816 +2020-09-13 16:30:00,67.25,45.853,31.945999999999998,29.816 +2020-09-13 16:45:00,69.54,43.519,31.945999999999998,29.816 +2020-09-13 17:00:00,73.29,45.705,40.387,29.816 +2020-09-13 17:15:00,75.48,46.41,40.387,29.816 +2020-09-13 17:30:00,76.49,46.678000000000004,40.387,29.816 +2020-09-13 17:45:00,80.06,46.943999999999996,40.387,29.816 +2020-09-13 18:00:00,80.24,50.817,44.575,29.816 +2020-09-13 18:15:00,80.31,50.998000000000005,44.575,29.816 +2020-09-13 18:30:00,86.23,50.026,44.575,29.816 +2020-09-13 18:45:00,84.95,51.357,44.575,29.816 +2020-09-13 19:00:00,83.91,55.43899999999999,45.623999999999995,29.816 +2020-09-13 19:15:00,82.55,53.001000000000005,45.623999999999995,29.816 +2020-09-13 19:30:00,81.33,52.494,45.623999999999995,29.816 +2020-09-13 19:45:00,82.57,52.943999999999996,45.623999999999995,29.816 +2020-09-13 20:00:00,82.59,52.394,44.583999999999996,29.816 +2020-09-13 20:15:00,85.52,52.29,44.583999999999996,29.816 +2020-09-13 20:30:00,81.65,51.228,44.583999999999996,29.816 +2020-09-13 20:45:00,80.24,50.083999999999996,44.583999999999996,29.816 +2020-09-13 21:00:00,74.96,48.508,39.732,29.816 +2020-09-13 21:15:00,80.14,50.928000000000004,39.732,29.816 +2020-09-13 21:30:00,82.33,50.347,39.732,29.816 +2020-09-13 21:45:00,81.42,49.684,39.732,29.816 +2020-09-13 22:00:00,76.5,48.83,38.571,29.816 +2020-09-13 22:15:00,71.7,48.037,38.571,29.816 +2020-09-13 22:30:00,69.2,45.117,38.571,29.816 +2020-09-13 22:45:00,69.21,42.193000000000005,38.571,29.816 +2020-09-13 23:00:00,66.31,40.039,33.121,29.816 +2020-09-13 23:15:00,68.89,38.861,33.121,29.816 +2020-09-13 23:30:00,67.54,38.577,33.121,29.816 +2020-09-13 23:45:00,72.63,37.861999999999995,33.121,29.816 +2020-09-14 00:00:00,70.49,34.855,32.506,29.93 +2020-09-14 00:15:00,71.68,34.483000000000004,32.506,29.93 +2020-09-14 00:30:00,66.33,33.631,32.506,29.93 +2020-09-14 00:45:00,63.56,33.067,32.506,29.93 +2020-09-14 01:00:00,65.34,33.099000000000004,31.121,29.93 +2020-09-14 01:15:00,71.25,32.488,31.121,29.93 +2020-09-14 01:30:00,71.36,31.708000000000002,31.121,29.93 +2020-09-14 01:45:00,70.39,31.218000000000004,31.121,29.93 +2020-09-14 02:00:00,67.0,31.398000000000003,29.605999999999998,29.93 +2020-09-14 02:15:00,72.09,30.285,29.605999999999998,29.93 +2020-09-14 02:30:00,73.13,31.045,29.605999999999998,29.93 +2020-09-14 02:45:00,72.63,31.535,29.605999999999998,29.93 +2020-09-14 03:00:00,70.81,33.106,28.124000000000002,29.93 +2020-09-14 03:15:00,74.52,31.967,28.124000000000002,29.93 +2020-09-14 03:30:00,76.44,31.909000000000002,28.124000000000002,29.93 +2020-09-14 03:45:00,75.06,32.779,28.124000000000002,29.93 +2020-09-14 04:00:00,77.33,40.942,29.743000000000002,29.93 +2020-09-14 04:15:00,83.88,48.583999999999996,29.743000000000002,29.93 +2020-09-14 04:30:00,89.01,46.166000000000004,29.743000000000002,29.93 +2020-09-14 04:45:00,92.93,46.215,29.743000000000002,29.93 +2020-09-14 05:00:00,94.93,62.798,36.191,29.93 +2020-09-14 05:15:00,104.51,74.667,36.191,29.93 +2020-09-14 05:30:00,102.86,68.46,36.191,29.93 +2020-09-14 05:45:00,103.19,64.678,36.191,29.93 +2020-09-14 06:00:00,108.82,63.763999999999996,55.277,29.93 +2020-09-14 06:15:00,111.8,65.002,55.277,29.93 +2020-09-14 06:30:00,112.82,63.923,55.277,29.93 +2020-09-14 06:45:00,111.4,66.351,55.277,29.93 +2020-09-14 07:00:00,115.98,64.559,65.697,29.93 +2020-09-14 07:15:00,110.78,66.132,65.697,29.93 +2020-09-14 07:30:00,110.77,64.83,65.697,29.93 +2020-09-14 07:45:00,108.81,66.53399999999999,65.697,29.93 +2020-09-14 08:00:00,107.66,65.313,57.028,29.93 +2020-09-14 08:15:00,106.67,67.42,57.028,29.93 +2020-09-14 08:30:00,111.75,66.61,57.028,29.93 +2020-09-14 08:45:00,114.96,68.684,57.028,29.93 +2020-09-14 09:00:00,107.61,64.957,52.633,29.93 +2020-09-14 09:15:00,104.76,63.328,52.633,29.93 +2020-09-14 09:30:00,104.17,64.493,52.633,29.93 +2020-09-14 09:45:00,103.52,64.554,52.633,29.93 +2020-09-14 10:00:00,104.08,62.263000000000005,50.647,29.93 +2020-09-14 10:15:00,103.09,62.821000000000005,50.647,29.93 +2020-09-14 10:30:00,103.8,62.4,50.647,29.93 +2020-09-14 10:45:00,103.53,62.397,50.647,29.93 +2020-09-14 11:00:00,102.76,58.821999999999996,50.245,29.93 +2020-09-14 11:15:00,103.69,59.413000000000004,50.245,29.93 +2020-09-14 11:30:00,102.69,61.208,50.245,29.93 +2020-09-14 11:45:00,105.2,62.097,50.245,29.93 +2020-09-14 12:00:00,101.81,58.416000000000004,46.956,29.93 +2020-09-14 12:15:00,103.71,57.656000000000006,46.956,29.93 +2020-09-14 12:30:00,101.04,56.28,46.956,29.93 +2020-09-14 12:45:00,103.68,56.665,46.956,29.93 +2020-09-14 13:00:00,99.52,55.81399999999999,47.383,29.93 +2020-09-14 13:15:00,98.82,54.8,47.383,29.93 +2020-09-14 13:30:00,100.67,53.45399999999999,47.383,29.93 +2020-09-14 13:45:00,102.23,53.481,47.383,29.93 +2020-09-14 14:00:00,102.81,53.742,47.1,29.93 +2020-09-14 14:15:00,100.22,53.089,47.1,29.93 +2020-09-14 14:30:00,100.3,51.821999999999996,47.1,29.93 +2020-09-14 14:45:00,98.73,53.272,47.1,29.93 +2020-09-14 15:00:00,99.67,53.479,49.355,29.93 +2020-09-14 15:15:00,101.22,50.736999999999995,49.355,29.93 +2020-09-14 15:30:00,103.35,50.004,49.355,29.93 +2020-09-14 15:45:00,102.28,47.64,49.355,29.93 +2020-09-14 16:00:00,103.7,50.174,52.14,29.93 +2020-09-14 16:15:00,104.69,50.006,52.14,29.93 +2020-09-14 16:30:00,107.28,50.61,52.14,29.93 +2020-09-14 16:45:00,109.54,48.20399999999999,52.14,29.93 +2020-09-14 17:00:00,111.52,49.339,58.705,29.93 +2020-09-14 17:15:00,109.57,50.282,58.705,29.93 +2020-09-14 17:30:00,112.39,50.155,58.705,29.93 +2020-09-14 17:45:00,111.73,49.925,58.705,29.93 +2020-09-14 18:00:00,113.13,52.857,59.153,29.93 +2020-09-14 18:15:00,111.59,51.177,59.153,29.93 +2020-09-14 18:30:00,117.13,49.633,59.153,29.93 +2020-09-14 18:45:00,115.67,53.824,59.153,29.93 +2020-09-14 19:00:00,112.01,57.446000000000005,61.483000000000004,29.93 +2020-09-14 19:15:00,107.89,56.045,61.483000000000004,29.93 +2020-09-14 19:30:00,105.2,55.27,61.483000000000004,29.93 +2020-09-14 19:45:00,108.61,55.082,61.483000000000004,29.93 +2020-09-14 20:00:00,105.34,53.168,67.55,29.93 +2020-09-14 20:15:00,106.11,54.007,67.55,29.93 +2020-09-14 20:30:00,103.61,53.163000000000004,67.55,29.93 +2020-09-14 20:45:00,94.43,52.355,67.55,29.93 +2020-09-14 21:00:00,92.43,50.291000000000004,60.026,29.93 +2020-09-14 21:15:00,89.42,52.953,60.026,29.93 +2020-09-14 21:30:00,85.77,52.648999999999994,60.026,29.93 +2020-09-14 21:45:00,91.92,51.695,60.026,29.93 +2020-09-14 22:00:00,88.36,48.677,52.736999999999995,29.93 +2020-09-14 22:15:00,88.46,49.465,52.736999999999995,29.93 +2020-09-14 22:30:00,82.45,41.596000000000004,52.736999999999995,29.93 +2020-09-14 22:45:00,82.32,38.1,52.736999999999995,29.93 +2020-09-14 23:00:00,80.56,36.128,44.408,29.93 +2020-09-14 23:15:00,81.23,33.766,44.408,29.93 +2020-09-14 23:30:00,76.93,33.77,44.408,29.93 +2020-09-14 23:45:00,75.97,32.887,44.408,29.93 +2020-09-15 00:00:00,76.99,32.999,44.438,29.93 +2020-09-15 00:15:00,79.26,33.558,44.438,29.93 +2020-09-15 00:30:00,78.82,33.234,44.438,29.93 +2020-09-15 00:45:00,74.27,33.263000000000005,44.438,29.93 +2020-09-15 01:00:00,70.44,32.773,41.468999999999994,29.93 +2020-09-15 01:15:00,74.86,32.23,41.468999999999994,29.93 +2020-09-15 01:30:00,77.73,31.374000000000002,41.468999999999994,29.93 +2020-09-15 01:45:00,78.5,30.465999999999998,41.468999999999994,29.93 +2020-09-15 02:00:00,77.58,30.223000000000003,39.708,29.93 +2020-09-15 02:15:00,76.77,30.145,39.708,29.93 +2020-09-15 02:30:00,78.83,30.465,39.708,29.93 +2020-09-15 02:45:00,78.93,31.241,39.708,29.93 +2020-09-15 03:00:00,79.89,32.166,38.919000000000004,29.93 +2020-09-15 03:15:00,80.14,31.774,38.919000000000004,29.93 +2020-09-15 03:30:00,82.91,31.75,38.919000000000004,29.93 +2020-09-15 03:45:00,83.91,31.641,38.919000000000004,29.93 +2020-09-15 04:00:00,85.18,38.702,40.092,29.93 +2020-09-15 04:15:00,89.49,46.347,40.092,29.93 +2020-09-15 04:30:00,94.24,43.79600000000001,40.092,29.93 +2020-09-15 04:45:00,96.41,44.424,40.092,29.93 +2020-09-15 05:00:00,99.04,63.07899999999999,43.713,29.93 +2020-09-15 05:15:00,103.98,75.593,43.713,29.93 +2020-09-15 05:30:00,107.4,69.36,43.713,29.93 +2020-09-15 05:45:00,109.39,64.872,43.713,29.93 +2020-09-15 06:00:00,117.19,64.73100000000001,56.033,29.93 +2020-09-15 06:15:00,114.09,66.351,56.033,29.93 +2020-09-15 06:30:00,115.14,64.90899999999999,56.033,29.93 +2020-09-15 06:45:00,116.49,66.49600000000001,56.033,29.93 +2020-09-15 07:00:00,118.41,64.818,66.003,29.93 +2020-09-15 07:15:00,117.26,66.15899999999999,66.003,29.93 +2020-09-15 07:30:00,117.65,64.84100000000001,66.003,29.93 +2020-09-15 07:45:00,116.28,65.70100000000001,66.003,29.93 +2020-09-15 08:00:00,113.85,64.434,57.474,29.93 +2020-09-15 08:15:00,110.41,65.98100000000001,57.474,29.93 +2020-09-15 08:30:00,110.67,65.303,57.474,29.93 +2020-09-15 08:45:00,110.98,66.51,57.474,29.93 +2020-09-15 09:00:00,110.26,62.99100000000001,51.928000000000004,29.93 +2020-09-15 09:15:00,109.79,61.425,51.928000000000004,29.93 +2020-09-15 09:30:00,108.62,63.258,51.928000000000004,29.93 +2020-09-15 09:45:00,108.66,64.442,51.928000000000004,29.93 +2020-09-15 10:00:00,108.71,60.86600000000001,49.46,29.93 +2020-09-15 10:15:00,108.89,61.133,49.46,29.93 +2020-09-15 10:30:00,108.34,60.746,49.46,29.93 +2020-09-15 10:45:00,108.25,61.647,49.46,29.93 +2020-09-15 11:00:00,106.43,58.276,48.206,29.93 +2020-09-15 11:15:00,104.48,59.166000000000004,48.206,29.93 +2020-09-15 11:30:00,106.87,59.805,48.206,29.93 +2020-09-15 11:45:00,104.72,60.371,48.206,29.93 +2020-09-15 12:00:00,102.62,56.325,46.285,29.93 +2020-09-15 12:15:00,101.2,55.792,46.285,29.93 +2020-09-15 12:30:00,102.37,55.288999999999994,46.285,29.93 +2020-09-15 12:45:00,101.53,56.23,46.285,29.93 +2020-09-15 13:00:00,101.21,54.992,46.861999999999995,29.93 +2020-09-15 13:15:00,100.74,55.506,46.861999999999995,29.93 +2020-09-15 13:30:00,100.23,54.276,46.861999999999995,29.93 +2020-09-15 13:45:00,102.07,53.488,46.861999999999995,29.93 +2020-09-15 14:00:00,100.98,54.14,46.488,29.93 +2020-09-15 14:15:00,101.37,53.342,46.488,29.93 +2020-09-15 14:30:00,102.21,52.472,46.488,29.93 +2020-09-15 14:45:00,104.2,53.218,46.488,29.93 +2020-09-15 15:00:00,103.31,53.176,48.442,29.93 +2020-09-15 15:15:00,105.66,51.303999999999995,48.442,29.93 +2020-09-15 15:30:00,104.22,50.43899999999999,48.442,29.93 +2020-09-15 15:45:00,106.45,48.342,48.442,29.93 +2020-09-15 16:00:00,107.2,50.266000000000005,50.397,29.93 +2020-09-15 16:15:00,108.47,50.245,50.397,29.93 +2020-09-15 16:30:00,111.24,50.597,50.397,29.93 +2020-09-15 16:45:00,112.38,48.913000000000004,50.397,29.93 +2020-09-15 17:00:00,118.39,50.25899999999999,56.668,29.93 +2020-09-15 17:15:00,113.96,51.603,56.668,29.93 +2020-09-15 17:30:00,113.72,51.18,56.668,29.93 +2020-09-15 17:45:00,114.84,50.68,56.668,29.93 +2020-09-15 18:00:00,117.58,52.738,57.957,29.93 +2020-09-15 18:15:00,116.18,52.331,57.957,29.93 +2020-09-15 18:30:00,120.29,50.532,57.957,29.93 +2020-09-15 18:45:00,119.15,54.638999999999996,57.957,29.93 +2020-09-15 19:00:00,120.04,57.236000000000004,57.056000000000004,29.93 +2020-09-15 19:15:00,118.63,55.964,57.056000000000004,29.93 +2020-09-15 19:30:00,113.73,54.924,57.056000000000004,29.93 +2020-09-15 19:45:00,113.54,55.038000000000004,57.056000000000004,29.93 +2020-09-15 20:00:00,105.26,53.512,64.156,29.93 +2020-09-15 20:15:00,101.39,52.998000000000005,64.156,29.93 +2020-09-15 20:30:00,98.17,52.282,64.156,29.93 +2020-09-15 20:45:00,97.7,51.735,64.156,29.93 +2020-09-15 21:00:00,98.43,50.36600000000001,56.507,29.93 +2020-09-15 21:15:00,100.0,51.815,56.507,29.93 +2020-09-15 21:30:00,94.23,51.591,56.507,29.93 +2020-09-15 21:45:00,89.6,50.799,56.507,29.93 +2020-09-15 22:00:00,85.63,48.097,50.728,29.93 +2020-09-15 22:15:00,88.34,48.534,50.728,29.93 +2020-09-15 22:30:00,87.42,40.913000000000004,50.728,29.93 +2020-09-15 22:45:00,85.3,37.449,50.728,29.93 +2020-09-15 23:00:00,78.95,34.841,43.556999999999995,29.93 +2020-09-15 23:15:00,83.3,33.741,43.556999999999995,29.93 +2020-09-15 23:30:00,83.87,33.709,43.556999999999995,29.93 +2020-09-15 23:45:00,78.6,32.943000000000005,43.556999999999995,29.93 +2020-09-16 00:00:00,73.44,39.084,41.151,29.93 +2020-09-16 00:15:00,73.98,39.830999999999996,41.151,29.93 +2020-09-16 00:30:00,78.99,39.635,41.151,29.93 +2020-09-16 00:45:00,80.82,39.476,41.151,29.93 +2020-09-16 01:00:00,76.35,39.616,37.763000000000005,29.93 +2020-09-16 01:15:00,73.59,38.859,37.763000000000005,29.93 +2020-09-16 01:30:00,72.26,37.896,37.763000000000005,29.93 +2020-09-16 01:45:00,78.96,37.031,37.763000000000005,29.93 +2020-09-16 02:00:00,78.44,37.302,35.615,29.93 +2020-09-16 02:15:00,78.12,37.166,35.615,29.93 +2020-09-16 02:30:00,72.51,37.736,35.615,29.93 +2020-09-16 02:45:00,78.41,38.519,35.615,29.93 +2020-09-16 03:00:00,82.31,40.568000000000005,35.153,29.93 +2020-09-16 03:15:00,81.48,40.628,35.153,29.93 +2020-09-16 03:30:00,78.89,40.606,35.153,29.93 +2020-09-16 03:45:00,80.9,41.105,35.153,29.93 +2020-09-16 04:00:00,85.15,49.181000000000004,36.203,29.93 +2020-09-16 04:15:00,89.89,57.271,36.203,29.93 +2020-09-16 04:30:00,92.92,55.732,36.203,29.93 +2020-09-16 04:45:00,92.18,56.861000000000004,36.203,29.93 +2020-09-16 05:00:00,99.03,78.215,39.922,29.93 +2020-09-16 05:15:00,104.76,95.447,39.922,29.93 +2020-09-16 05:30:00,108.0,89.35799999999999,39.922,29.93 +2020-09-16 05:45:00,109.51,83.431,39.922,29.93 +2020-09-16 06:00:00,113.65,83.573,56.443999999999996,29.93 +2020-09-16 06:15:00,114.5,86.17,56.443999999999996,29.93 +2020-09-16 06:30:00,115.4,84.446,56.443999999999996,29.93 +2020-09-16 06:45:00,117.08,85.50399999999999,56.443999999999996,29.93 +2020-09-16 07:00:00,119.77,85.01899999999999,68.683,29.93 +2020-09-16 07:15:00,119.16,86.70100000000001,68.683,29.93 +2020-09-16 07:30:00,124.41,85.609,68.683,29.93 +2020-09-16 07:45:00,120.27,86.053,68.683,29.93 +2020-09-16 08:00:00,119.32,82.478,59.003,29.93 +2020-09-16 08:15:00,118.97,83.669,59.003,29.93 +2020-09-16 08:30:00,117.59,81.854,59.003,29.93 +2020-09-16 08:45:00,117.4,82.26899999999999,59.003,29.93 +2020-09-16 09:00:00,118.31,76.666,56.21,29.93 +2020-09-16 09:15:00,120.11,74.795,56.21,29.93 +2020-09-16 09:30:00,122.52,75.825,56.21,29.93 +2020-09-16 09:45:00,124.42,76.199,56.21,29.93 +2020-09-16 10:00:00,126.1,73.703,52.358999999999995,29.93 +2020-09-16 10:15:00,126.69,73.807,52.358999999999995,29.93 +2020-09-16 10:30:00,121.23,73.306,52.358999999999995,29.93 +2020-09-16 10:45:00,118.65,73.608,52.358999999999995,29.93 +2020-09-16 11:00:00,109.55,71.77600000000001,51.161,29.93 +2020-09-16 11:15:00,111.88,72.722,51.161,29.93 +2020-09-16 11:30:00,117.41,73.042,51.161,29.93 +2020-09-16 11:45:00,116.4,72.767,51.161,29.93 +2020-09-16 12:00:00,107.59,70.317,49.119,29.93 +2020-09-16 12:15:00,105.17,70.104,49.119,29.93 +2020-09-16 12:30:00,102.46,69.05199999999999,49.119,29.93 +2020-09-16 12:45:00,103.14,69.616,49.119,29.93 +2020-09-16 13:00:00,101.75,69.403,49.187,29.93 +2020-09-16 13:15:00,101.95,69.571,49.187,29.93 +2020-09-16 13:30:00,104.52,68.53399999999999,49.187,29.93 +2020-09-16 13:45:00,101.25,67.885,49.187,29.93 +2020-09-16 14:00:00,102.1,68.471,49.787,29.93 +2020-09-16 14:15:00,103.0,68.127,49.787,29.93 +2020-09-16 14:30:00,103.44,66.956,49.787,29.93 +2020-09-16 14:45:00,104.37,67.27600000000001,49.787,29.93 +2020-09-16 15:00:00,102.18,67.498,51.458999999999996,29.93 +2020-09-16 15:15:00,104.63,66.195,51.458999999999996,29.93 +2020-09-16 15:30:00,104.49,65.661,51.458999999999996,29.93 +2020-09-16 15:45:00,106.34,64.396,51.458999999999996,29.93 +2020-09-16 16:00:00,111.51,65.649,53.663000000000004,29.93 +2020-09-16 16:15:00,108.92,65.133,53.663000000000004,29.93 +2020-09-16 16:30:00,110.62,65.763,53.663000000000004,29.93 +2020-09-16 16:45:00,111.54,63.458999999999996,53.663000000000004,29.93 +2020-09-16 17:00:00,116.11,64.80199999999999,58.183,29.93 +2020-09-16 17:15:00,114.55,65.96,58.183,29.93 +2020-09-16 17:30:00,114.66,65.595,58.183,29.93 +2020-09-16 17:45:00,115.07,65.561,58.183,29.93 +2020-09-16 18:00:00,117.2,65.617,60.141000000000005,29.93 +2020-09-16 18:15:00,116.17,65.419,60.141000000000005,29.93 +2020-09-16 18:30:00,119.01,64.142,60.141000000000005,29.93 +2020-09-16 18:45:00,118.27,68.15,60.141000000000005,29.93 +2020-09-16 19:00:00,116.67,67.969,60.582,29.93 +2020-09-16 19:15:00,116.96,66.834,60.582,29.93 +2020-09-16 19:30:00,113.33,66.178,60.582,29.93 +2020-09-16 19:45:00,115.63,66.4,60.582,29.93 +2020-09-16 20:00:00,104.66,64.4,66.61,29.93 +2020-09-16 20:15:00,107.17,62.825,66.61,29.93 +2020-09-16 20:30:00,104.72,61.527,66.61,29.93 +2020-09-16 20:45:00,104.85,61.146,66.61,29.93 +2020-09-16 21:00:00,98.44,59.425,57.658,29.93 +2020-09-16 21:15:00,92.27,60.768,57.658,29.93 +2020-09-16 21:30:00,95.86,59.723,57.658,29.93 +2020-09-16 21:45:00,94.6,58.926,57.658,29.93 +2020-09-16 22:00:00,90.23,57.67,51.81,29.93 +2020-09-16 22:15:00,84.5,56.826,51.81,29.93 +2020-09-16 22:30:00,82.73,48.071000000000005,51.81,29.93 +2020-09-16 22:45:00,80.31,44.38,51.81,29.93 +2020-09-16 23:00:00,82.5,40.444,42.93600000000001,29.93 +2020-09-16 23:15:00,82.69,40.001999999999995,42.93600000000001,29.93 +2020-09-16 23:30:00,82.91,40.023,42.93600000000001,29.93 +2020-09-16 23:45:00,78.13,39.402,42.93600000000001,29.93 +2020-09-17 00:00:00,79.44,39.347,39.211,29.93 +2020-09-17 00:15:00,80.59,40.09,39.211,29.93 +2020-09-17 00:30:00,78.36,39.903,39.211,29.93 +2020-09-17 00:45:00,75.57,39.747,39.211,29.93 +2020-09-17 01:00:00,79.12,39.88,37.607,29.93 +2020-09-17 01:15:00,78.2,39.145,37.607,29.93 +2020-09-17 01:30:00,77.23,38.2,37.607,29.93 +2020-09-17 01:45:00,74.58,37.333,37.607,29.93 +2020-09-17 02:00:00,78.04,37.611,36.44,29.93 +2020-09-17 02:15:00,79.78,37.494,36.44,29.93 +2020-09-17 02:30:00,76.24,38.041,36.44,29.93 +2020-09-17 02:45:00,75.01,38.82,36.44,29.93 +2020-09-17 03:00:00,77.9,40.855,36.116,29.93 +2020-09-17 03:15:00,79.65,40.934,36.116,29.93 +2020-09-17 03:30:00,81.81,40.917,36.116,29.93 +2020-09-17 03:45:00,78.48,41.401,36.116,29.93 +2020-09-17 04:00:00,87.76,49.50899999999999,37.398,29.93 +2020-09-17 04:15:00,91.21,57.629,37.398,29.93 +2020-09-17 04:30:00,95.34,56.093999999999994,37.398,29.93 +2020-09-17 04:45:00,94.05,57.232,37.398,29.93 +2020-09-17 05:00:00,98.21,78.67699999999999,41.776,29.93 +2020-09-17 05:15:00,104.48,96.00299999999999,41.776,29.93 +2020-09-17 05:30:00,108.42,89.899,41.776,29.93 +2020-09-17 05:45:00,108.7,83.925,41.776,29.93 +2020-09-17 06:00:00,114.23,84.03399999999999,55.61,29.93 +2020-09-17 06:15:00,113.86,86.65299999999999,55.61,29.93 +2020-09-17 06:30:00,116.05,84.93299999999999,55.61,29.93 +2020-09-17 06:45:00,116.34,85.98899999999999,55.61,29.93 +2020-09-17 07:00:00,117.73,85.50200000000001,67.13600000000001,29.93 +2020-09-17 07:15:00,117.01,87.2,67.13600000000001,29.93 +2020-09-17 07:30:00,115.49,86.14299999999999,67.13600000000001,29.93 +2020-09-17 07:45:00,114.64,86.59,67.13600000000001,29.93 +2020-09-17 08:00:00,113.27,83.023,57.55,29.93 +2020-09-17 08:15:00,113.0,84.181,57.55,29.93 +2020-09-17 08:30:00,112.72,82.383,57.55,29.93 +2020-09-17 08:45:00,115.23,82.779,57.55,29.93 +2020-09-17 09:00:00,116.21,77.181,52.931999999999995,29.93 +2020-09-17 09:15:00,118.42,75.3,52.931999999999995,29.93 +2020-09-17 09:30:00,115.37,76.311,52.931999999999995,29.93 +2020-09-17 09:45:00,110.86,76.655,52.931999999999995,29.93 +2020-09-17 10:00:00,114.03,74.156,50.36600000000001,29.93 +2020-09-17 10:15:00,117.04,74.223,50.36600000000001,29.93 +2020-09-17 10:30:00,119.88,73.707,50.36600000000001,29.93 +2020-09-17 10:45:00,114.08,73.994,50.36600000000001,29.93 +2020-09-17 11:00:00,112.85,72.17399999999999,47.893,29.93 +2020-09-17 11:15:00,111.3,73.104,47.893,29.93 +2020-09-17 11:30:00,112.41,73.421,47.893,29.93 +2020-09-17 11:45:00,109.95,73.13,47.893,29.93 +2020-09-17 12:00:00,109.44,70.656,45.271,29.93 +2020-09-17 12:15:00,107.34,70.431,45.271,29.93 +2020-09-17 12:30:00,105.72,69.41,45.271,29.93 +2020-09-17 12:45:00,114.51,69.967,45.271,29.93 +2020-09-17 13:00:00,108.61,69.725,44.351000000000006,29.93 +2020-09-17 13:15:00,107.32,69.892,44.351000000000006,29.93 +2020-09-17 13:30:00,104.8,68.85300000000001,44.351000000000006,29.93 +2020-09-17 13:45:00,105.93,68.209,44.351000000000006,29.93 +2020-09-17 14:00:00,105.83,68.747,44.99,29.93 +2020-09-17 14:15:00,108.76,68.418,44.99,29.93 +2020-09-17 14:30:00,104.88,67.279,44.99,29.93 +2020-09-17 14:45:00,103.7,67.595,44.99,29.93 +2020-09-17 15:00:00,105.59,67.77199999999999,46.869,29.93 +2020-09-17 15:15:00,105.16,66.488,46.869,29.93 +2020-09-17 15:30:00,103.15,65.985,46.869,29.93 +2020-09-17 15:45:00,107.04,64.735,46.869,29.93 +2020-09-17 16:00:00,107.68,65.949,48.902,29.93 +2020-09-17 16:15:00,110.33,65.449,48.902,29.93 +2020-09-17 16:30:00,109.86,66.07600000000001,48.902,29.93 +2020-09-17 16:45:00,111.84,63.827,48.902,29.93 +2020-09-17 17:00:00,114.46,65.133,53.244,29.93 +2020-09-17 17:15:00,113.14,66.313,53.244,29.93 +2020-09-17 17:30:00,113.05,65.952,53.244,29.93 +2020-09-17 17:45:00,114.69,65.947,53.244,29.93 +2020-09-17 18:00:00,115.77,65.985,54.343999999999994,29.93 +2020-09-17 18:15:00,118.59,65.783,54.343999999999994,29.93 +2020-09-17 18:30:00,118.36,64.518,54.343999999999994,29.93 +2020-09-17 18:45:00,120.85,68.518,54.343999999999994,29.93 +2020-09-17 19:00:00,115.71,68.35,54.332,29.93 +2020-09-17 19:15:00,116.59,67.211,54.332,29.93 +2020-09-17 19:30:00,109.14,66.551,54.332,29.93 +2020-09-17 19:45:00,110.22,66.765,54.332,29.93 +2020-09-17 20:00:00,101.81,64.786,58.06,29.93 +2020-09-17 20:15:00,102.55,63.208,58.06,29.93 +2020-09-17 20:30:00,100.73,61.886,58.06,29.93 +2020-09-17 20:45:00,100.68,61.467,58.06,29.93 +2020-09-17 21:00:00,95.01,59.748999999999995,52.411,29.93 +2020-09-17 21:15:00,100.41,61.083,52.411,29.93 +2020-09-17 21:30:00,97.41,60.045,52.411,29.93 +2020-09-17 21:45:00,94.7,59.213,52.411,29.93 +2020-09-17 22:00:00,85.44,57.93899999999999,47.148999999999994,29.93 +2020-09-17 22:15:00,89.95,57.071000000000005,47.148999999999994,29.93 +2020-09-17 22:30:00,89.79,48.309,47.148999999999994,29.93 +2020-09-17 22:45:00,89.53,44.622,47.148999999999994,29.93 +2020-09-17 23:00:00,81.01,40.726,40.814,29.93 +2020-09-17 23:15:00,79.55,40.256,40.814,29.93 +2020-09-17 23:30:00,83.76,40.281,40.814,29.93 +2020-09-17 23:45:00,83.95,39.659,40.814,29.93 +2020-09-18 00:00:00,80.29,38.004,39.153,29.93 +2020-09-18 00:15:00,74.72,38.957,39.153,29.93 +2020-09-18 00:30:00,73.6,38.939,39.153,29.93 +2020-09-18 00:45:00,72.77,39.126,39.153,29.93 +2020-09-18 01:00:00,71.06,38.888000000000005,37.228,29.93 +2020-09-18 01:15:00,72.86,37.991,37.228,29.93 +2020-09-18 01:30:00,71.99,37.521,37.228,29.93 +2020-09-18 01:45:00,72.65,36.501999999999995,37.228,29.93 +2020-09-18 02:00:00,72.83,37.49,35.851,29.93 +2020-09-18 02:15:00,78.45,37.321999999999996,35.851,29.93 +2020-09-18 02:30:00,72.91,38.597,35.851,29.93 +2020-09-18 02:45:00,73.98,38.884,35.851,29.93 +2020-09-18 03:00:00,74.75,41.191,36.54,29.93 +2020-09-18 03:15:00,77.42,40.675,36.54,29.93 +2020-09-18 03:30:00,77.21,40.485,36.54,29.93 +2020-09-18 03:45:00,81.51,41.681000000000004,36.54,29.93 +2020-09-18 04:00:00,90.84,49.988,37.578,29.93 +2020-09-18 04:15:00,91.02,56.937,37.578,29.93 +2020-09-18 04:30:00,86.07,56.161,37.578,29.93 +2020-09-18 04:45:00,92.31,56.513999999999996,37.578,29.93 +2020-09-18 05:00:00,108.17,77.343,40.387,29.93 +2020-09-18 05:15:00,112.85,95.874,40.387,29.93 +2020-09-18 05:30:00,108.76,90.18299999999999,40.387,29.93 +2020-09-18 05:45:00,109.88,83.81,40.387,29.93 +2020-09-18 06:00:00,117.15,84.181,54.668,29.93 +2020-09-18 06:15:00,115.51,86.54899999999999,54.668,29.93 +2020-09-18 06:30:00,115.18,84.565,54.668,29.93 +2020-09-18 06:45:00,116.95,85.958,54.668,29.93 +2020-09-18 07:00:00,118.68,85.72399999999999,63.971000000000004,29.93 +2020-09-18 07:15:00,118.95,88.38600000000001,63.971000000000004,29.93 +2020-09-18 07:30:00,116.43,85.897,63.971000000000004,29.93 +2020-09-18 07:45:00,116.62,85.943,63.971000000000004,29.93 +2020-09-18 08:00:00,114.28,82.63,56.042,29.93 +2020-09-18 08:15:00,112.83,84.12299999999999,56.042,29.93 +2020-09-18 08:30:00,114.36,82.556,56.042,29.93 +2020-09-18 08:45:00,115.55,82.37,56.042,29.93 +2020-09-18 09:00:00,114.17,75.26,52.832,29.93 +2020-09-18 09:15:00,111.77,74.903,52.832,29.93 +2020-09-18 09:30:00,111.15,75.277,52.832,29.93 +2020-09-18 09:45:00,111.61,75.834,52.832,29.93 +2020-09-18 10:00:00,107.89,72.842,50.044,29.93 +2020-09-18 10:15:00,109.25,72.935,50.044,29.93 +2020-09-18 10:30:00,109.02,72.765,50.044,29.93 +2020-09-18 10:45:00,107.6,72.832,50.044,29.93 +2020-09-18 11:00:00,107.22,71.185,49.06100000000001,29.93 +2020-09-18 11:15:00,115.43,71.064,49.06100000000001,29.93 +2020-09-18 11:30:00,114.09,71.685,49.06100000000001,29.93 +2020-09-18 11:45:00,112.5,70.729,49.06100000000001,29.93 +2020-09-18 12:00:00,109.27,68.899,45.595,29.93 +2020-09-18 12:15:00,107.26,67.53399999999999,45.595,29.93 +2020-09-18 12:30:00,111.87,66.678,45.595,29.93 +2020-09-18 12:45:00,112.45,66.866,45.595,29.93 +2020-09-18 13:00:00,107.19,67.291,43.218,29.93 +2020-09-18 13:15:00,111.3,67.846,43.218,29.93 +2020-09-18 13:30:00,109.47,67.354,43.218,29.93 +2020-09-18 13:45:00,112.2,66.903,43.218,29.93 +2020-09-18 14:00:00,112.75,66.477,41.926,29.93 +2020-09-18 14:15:00,113.18,66.402,41.926,29.93 +2020-09-18 14:30:00,113.34,66.488,41.926,29.93 +2020-09-18 14:45:00,112.16,66.43,41.926,29.93 +2020-09-18 15:00:00,107.96,66.34899999999999,43.79,29.93 +2020-09-18 15:15:00,108.95,64.778,43.79,29.93 +2020-09-18 15:30:00,111.25,63.426,43.79,29.93 +2020-09-18 15:45:00,111.89,62.758,43.79,29.93 +2020-09-18 16:00:00,114.19,63.008,45.895,29.93 +2020-09-18 16:15:00,112.94,62.958,45.895,29.93 +2020-09-18 16:30:00,113.82,63.486000000000004,45.895,29.93 +2020-09-18 16:45:00,116.38,60.707,45.895,29.93 +2020-09-18 17:00:00,117.22,63.245,51.36,29.93 +2020-09-18 17:15:00,116.42,64.20100000000001,51.36,29.93 +2020-09-18 17:30:00,115.99,63.861000000000004,51.36,29.93 +2020-09-18 17:45:00,115.41,63.695,51.36,29.93 +2020-09-18 18:00:00,117.73,64.012,52.985,29.93 +2020-09-18 18:15:00,116.7,63.016000000000005,52.985,29.93 +2020-09-18 18:30:00,116.11,61.803000000000004,52.985,29.93 +2020-09-18 18:45:00,115.8,66.096,52.985,29.93 +2020-09-18 19:00:00,113.5,66.872,52.602,29.93 +2020-09-18 19:15:00,108.61,66.538,52.602,29.93 +2020-09-18 19:30:00,106.11,65.805,52.602,29.93 +2020-09-18 19:45:00,104.55,65.138,52.602,29.93 +2020-09-18 20:00:00,95.47,63.067,58.063,29.93 +2020-09-18 20:15:00,94.24,62.063,58.063,29.93 +2020-09-18 20:30:00,92.29,60.351000000000006,58.063,29.93 +2020-09-18 20:45:00,95.23,59.466,58.063,29.93 +2020-09-18 21:00:00,87.91,58.849,50.135,29.93 +2020-09-18 21:15:00,85.57,61.511,50.135,29.93 +2020-09-18 21:30:00,78.26,60.382,50.135,29.93 +2020-09-18 21:45:00,84.38,59.817,50.135,29.93 +2020-09-18 22:00:00,79.5,58.698,45.165,29.93 +2020-09-18 22:15:00,81.75,57.588,45.165,29.93 +2020-09-18 22:30:00,74.47,54.06,45.165,29.93 +2020-09-18 22:45:00,77.94,51.985,45.165,29.93 +2020-09-18 23:00:00,76.49,49.233000000000004,39.121,29.93 +2020-09-18 23:15:00,74.79,47.049,39.121,29.93 +2020-09-18 23:30:00,72.85,45.343999999999994,39.121,29.93 +2020-09-18 23:45:00,71.53,44.448,39.121,29.93 +2020-09-19 00:00:00,71.22,38.38,38.49,29.816 +2020-09-19 00:15:00,70.98,37.655,38.49,29.816 +2020-09-19 00:30:00,62.35,37.674,38.49,29.816 +2020-09-19 00:45:00,70.07,37.529,38.49,29.816 +2020-09-19 01:00:00,68.84,37.658,34.5,29.816 +2020-09-19 01:15:00,66.83,36.938,34.5,29.816 +2020-09-19 01:30:00,59.53,35.755,34.5,29.816 +2020-09-19 01:45:00,60.48,35.583,34.5,29.816 +2020-09-19 02:00:00,61.5,36.045,32.236,29.816 +2020-09-19 02:15:00,67.13,35.221,32.236,29.816 +2020-09-19 02:30:00,59.26,35.586999999999996,32.236,29.816 +2020-09-19 02:45:00,59.5,36.468,32.236,29.816 +2020-09-19 03:00:00,58.35,37.939,32.067,29.816 +2020-09-19 03:15:00,60.56,36.596,32.067,29.816 +2020-09-19 03:30:00,58.82,36.205,32.067,29.816 +2020-09-19 03:45:00,60.46,38.491,32.067,29.816 +2020-09-19 04:00:00,61.29,44.302,33.071,29.816 +2020-09-19 04:15:00,60.56,49.925,33.071,29.816 +2020-09-19 04:30:00,57.39,47.338,33.071,29.816 +2020-09-19 04:45:00,61.32,47.757,33.071,29.816 +2020-09-19 05:00:00,63.99,58.761,33.014,29.816 +2020-09-19 05:15:00,64.16,64.37100000000001,33.014,29.816 +2020-09-19 05:30:00,65.42,59.894,33.014,29.816 +2020-09-19 05:45:00,62.16,58.2,33.014,29.816 +2020-09-19 06:00:00,67.73,71.545,34.628,29.816 +2020-09-19 06:15:00,67.75,83.959,34.628,29.816 +2020-09-19 06:30:00,71.21,78.477,34.628,29.816 +2020-09-19 06:45:00,72.05,75.16,34.628,29.816 +2020-09-19 07:00:00,74.14,72.542,38.871,29.816 +2020-09-19 07:15:00,71.97,73.934,38.871,29.816 +2020-09-19 07:30:00,76.89,73.319,38.871,29.816 +2020-09-19 07:45:00,80.01,75.127,38.871,29.816 +2020-09-19 08:00:00,80.53,73.286,43.293,29.816 +2020-09-19 08:15:00,82.15,75.622,43.293,29.816 +2020-09-19 08:30:00,81.09,74.517,43.293,29.816 +2020-09-19 08:45:00,76.52,75.882,43.293,29.816 +2020-09-19 09:00:00,75.61,71.438,44.559,29.816 +2020-09-19 09:15:00,74.54,71.634,44.559,29.816 +2020-09-19 09:30:00,74.81,72.601,44.559,29.816 +2020-09-19 09:45:00,76.44,72.857,44.559,29.816 +2020-09-19 10:00:00,76.74,70.247,42.091,29.816 +2020-09-19 10:15:00,77.89,70.598,42.091,29.816 +2020-09-19 10:30:00,82.26,70.22800000000001,42.091,29.816 +2020-09-19 10:45:00,79.12,70.435,42.091,29.816 +2020-09-19 11:00:00,78.34,68.741,38.505,29.816 +2020-09-19 11:15:00,81.3,68.98899999999999,38.505,29.816 +2020-09-19 11:30:00,77.75,69.456,38.505,29.816 +2020-09-19 11:45:00,76.77,68.646,38.505,29.816 +2020-09-19 12:00:00,74.59,66.622,35.388000000000005,29.816 +2020-09-19 12:15:00,77.13,66.02600000000001,35.388000000000005,29.816 +2020-09-19 12:30:00,69.95,65.217,35.388000000000005,29.816 +2020-09-19 12:45:00,65.4,65.63600000000001,35.388000000000005,29.816 +2020-09-19 13:00:00,66.49,65.413,31.355999999999998,29.816 +2020-09-19 13:15:00,69.13,64.945,31.355999999999998,29.816 +2020-09-19 13:30:00,67.92,64.436,31.355999999999998,29.816 +2020-09-19 13:45:00,71.32,63.224,31.355999999999998,29.816 +2020-09-19 14:00:00,68.7,63.16,30.522,29.816 +2020-09-19 14:15:00,68.61,62.07899999999999,30.522,29.816 +2020-09-19 14:30:00,70.26,61.327,30.522,29.816 +2020-09-19 14:45:00,70.21,61.659,30.522,29.816 +2020-09-19 15:00:00,71.68,62.038999999999994,34.36,29.816 +2020-09-19 15:15:00,71.93,61.226000000000006,34.36,29.816 +2020-09-19 15:30:00,73.29,60.536,34.36,29.816 +2020-09-19 15:45:00,75.49,59.263999999999996,34.36,29.816 +2020-09-19 16:00:00,78.43,60.763999999999996,39.507,29.816 +2020-09-19 16:15:00,79.18,60.381,39.507,29.816 +2020-09-19 16:30:00,79.14,61.047,39.507,29.816 +2020-09-19 16:45:00,81.7,58.574,39.507,29.816 +2020-09-19 17:00:00,83.48,60.071999999999996,47.151,29.816 +2020-09-19 17:15:00,84.27,60.06100000000001,47.151,29.816 +2020-09-19 17:30:00,85.58,59.604,47.151,29.816 +2020-09-19 17:45:00,85.8,59.68600000000001,47.151,29.816 +2020-09-19 18:00:00,89.34,60.965,50.303999999999995,29.816 +2020-09-19 18:15:00,89.84,61.67100000000001,50.303999999999995,29.816 +2020-09-19 18:30:00,90.7,61.82,50.303999999999995,29.816 +2020-09-19 18:45:00,89.05,62.67,50.303999999999995,29.816 +2020-09-19 19:00:00,87.56,62.681000000000004,50.622,29.816 +2020-09-19 19:15:00,84.6,61.475,50.622,29.816 +2020-09-19 19:30:00,82.62,61.503,50.622,29.816 +2020-09-19 19:45:00,81.68,62.065,50.622,29.816 +2020-09-19 20:00:00,77.1,61.138999999999996,45.391000000000005,29.816 +2020-09-19 20:15:00,73.8,60.276,45.391000000000005,29.816 +2020-09-19 20:30:00,72.52,57.81,45.391000000000005,29.816 +2020-09-19 20:45:00,74.56,58.104,45.391000000000005,29.816 +2020-09-19 21:00:00,70.72,57.077,39.98,29.816 +2020-09-19 21:15:00,71.27,59.6,39.98,29.816 +2020-09-19 21:30:00,68.48,58.958,39.98,29.816 +2020-09-19 21:45:00,68.12,57.851000000000006,39.98,29.816 +2020-09-19 22:00:00,63.93,57.068999999999996,37.53,29.816 +2020-09-19 22:15:00,68.03,56.803000000000004,37.53,29.816 +2020-09-19 22:30:00,62.43,54.72,37.53,29.816 +2020-09-19 22:45:00,64.15,53.43600000000001,37.53,29.816 +2020-09-19 23:00:00,60.71,50.88399999999999,30.97,29.816 +2020-09-19 23:15:00,60.35,48.526,30.97,29.816 +2020-09-19 23:30:00,59.11,48.121,30.97,29.816 +2020-09-19 23:45:00,56.8,46.816,30.97,29.816 +2020-09-20 00:00:00,55.45,39.763000000000005,27.24,29.816 +2020-09-20 00:15:00,55.34,38.111999999999995,27.24,29.816 +2020-09-20 00:30:00,53.87,37.93,27.24,29.816 +2020-09-20 00:45:00,54.21,37.898,27.24,29.816 +2020-09-20 01:00:00,52.57,38.174,25.662,29.816 +2020-09-20 01:15:00,53.16,37.672,25.662,29.816 +2020-09-20 01:30:00,53.67,36.552,25.662,29.816 +2020-09-20 01:45:00,54.29,36.016999999999996,25.662,29.816 +2020-09-20 02:00:00,51.96,36.338,25.67,29.816 +2020-09-20 02:15:00,53.19,35.809,25.67,29.816 +2020-09-20 02:30:00,53.0,36.524,25.67,29.816 +2020-09-20 02:45:00,53.05,37.319,25.67,29.816 +2020-09-20 03:00:00,52.73,39.335,24.258000000000003,29.816 +2020-09-20 03:15:00,53.33,38.053000000000004,24.258000000000003,29.816 +2020-09-20 03:30:00,52.77,37.523,24.258000000000003,29.816 +2020-09-20 03:45:00,53.76,39.198,24.258000000000003,29.816 +2020-09-20 04:00:00,54.65,44.95399999999999,25.051,29.816 +2020-09-20 04:15:00,54.55,50.015,25.051,29.816 +2020-09-20 04:30:00,55.06,48.416000000000004,25.051,29.816 +2020-09-20 04:45:00,55.46,48.582,25.051,29.816 +2020-09-20 05:00:00,56.45,58.891999999999996,25.145,29.816 +2020-09-20 05:15:00,57.48,63.419,25.145,29.816 +2020-09-20 05:30:00,58.07,58.583,25.145,29.816 +2020-09-20 05:45:00,58.21,56.698,25.145,29.816 +2020-09-20 06:00:00,59.41,68.219,26.371,29.816 +2020-09-20 06:15:00,60.9,80.828,26.371,29.816 +2020-09-20 06:30:00,62.42,74.55,26.371,29.816 +2020-09-20 06:45:00,64.42,70.22399999999999,26.371,29.816 +2020-09-20 07:00:00,66.46,68.428,28.756999999999998,29.816 +2020-09-20 07:15:00,67.42,68.416,28.756999999999998,29.816 +2020-09-20 07:30:00,69.0,68.42699999999999,28.756999999999998,29.816 +2020-09-20 07:45:00,71.83,70.008,28.756999999999998,29.816 +2020-09-20 08:00:00,72.34,69.197,32.82,29.816 +2020-09-20 08:15:00,74.03,72.319,32.82,29.816 +2020-09-20 08:30:00,74.41,72.318,32.82,29.816 +2020-09-20 08:45:00,74.79,74.168,32.82,29.816 +2020-09-20 09:00:00,76.91,69.527,35.534,29.816 +2020-09-20 09:15:00,76.22,69.52,35.534,29.816 +2020-09-20 09:30:00,78.51,70.729,35.534,29.816 +2020-09-20 09:45:00,78.9,71.635,35.534,29.816 +2020-09-20 10:00:00,78.27,70.111,35.925,29.816 +2020-09-20 10:15:00,84.18,70.676,35.925,29.816 +2020-09-20 10:30:00,87.27,70.625,35.925,29.816 +2020-09-20 10:45:00,86.96,70.958,35.925,29.816 +2020-09-20 11:00:00,84.99,69.303,37.056,29.816 +2020-09-20 11:15:00,85.58,69.262,37.056,29.816 +2020-09-20 11:30:00,85.55,69.827,37.056,29.816 +2020-09-20 11:45:00,82.98,69.359,37.056,29.816 +2020-09-20 12:00:00,78.15,67.827,33.124,29.816 +2020-09-20 12:15:00,79.24,67.391,33.124,29.816 +2020-09-20 12:30:00,78.19,66.303,33.124,29.816 +2020-09-20 12:45:00,78.17,65.979,33.124,29.816 +2020-09-20 13:00:00,77.34,65.316,29.874000000000002,29.816 +2020-09-20 13:15:00,74.05,65.38,29.874000000000002,29.816 +2020-09-20 13:30:00,74.77,64.042,29.874000000000002,29.816 +2020-09-20 13:45:00,77.63,63.398,29.874000000000002,29.816 +2020-09-20 14:00:00,79.84,64.18,27.302,29.816 +2020-09-20 14:15:00,80.59,63.778999999999996,27.302,29.816 +2020-09-20 14:30:00,80.69,62.596000000000004,27.302,29.816 +2020-09-20 14:45:00,79.0,62.066,27.302,29.816 +2020-09-20 15:00:00,76.77,62.028,27.642,29.816 +2020-09-20 15:15:00,78.69,60.915,27.642,29.816 +2020-09-20 15:30:00,79.78,60.31399999999999,27.642,29.816 +2020-09-20 15:45:00,80.99,59.467,27.642,29.816 +2020-09-20 16:00:00,82.95,60.283,31.945999999999998,29.816 +2020-09-20 16:15:00,83.28,59.808,31.945999999999998,29.816 +2020-09-20 16:30:00,84.6,61.248999999999995,31.945999999999998,29.816 +2020-09-20 16:45:00,89.69,58.915,31.945999999999998,29.816 +2020-09-20 17:00:00,94.49,60.631,40.387,29.816 +2020-09-20 17:15:00,95.66,61.602,40.387,29.816 +2020-09-20 17:30:00,95.71,61.797,40.387,29.816 +2020-09-20 17:45:00,97.43,62.872,40.387,29.816 +2020-09-20 18:00:00,98.66,64.33,44.575,29.816 +2020-09-20 18:15:00,95.42,65.113,44.575,29.816 +2020-09-20 18:30:00,96.3,64.515,44.575,29.816 +2020-09-20 18:45:00,92.61,65.957,44.575,29.816 +2020-09-20 19:00:00,91.79,67.405,45.623999999999995,29.816 +2020-09-20 19:15:00,93.46,65.542,45.623999999999995,29.816 +2020-09-20 19:30:00,95.78,65.34,45.623999999999995,29.816 +2020-09-20 19:45:00,94.24,65.939,45.623999999999995,29.816 +2020-09-20 20:00:00,87.59,65.218,44.583999999999996,29.816 +2020-09-20 20:15:00,90.25,64.521,44.583999999999996,29.816 +2020-09-20 20:30:00,92.85,62.952,44.583999999999996,29.816 +2020-09-20 20:45:00,92.59,61.67100000000001,44.583999999999996,29.816 +2020-09-20 21:00:00,85.14,59.825,39.732,29.816 +2020-09-20 21:15:00,82.41,61.951,39.732,29.816 +2020-09-20 21:30:00,79.04,60.927,39.732,29.816 +2020-09-20 21:45:00,80.63,60.081,39.732,29.816 +2020-09-20 22:00:00,78.14,60.426,38.571,29.816 +2020-09-20 22:15:00,79.55,58.713,38.571,29.816 +2020-09-20 22:30:00,75.33,55.406000000000006,38.571,29.816 +2020-09-20 22:45:00,75.99,52.976000000000006,38.571,29.816 +2020-09-20 23:00:00,74.75,49.496,33.121,29.816 +2020-09-20 23:15:00,77.14,48.525,33.121,29.816 +2020-09-20 23:30:00,75.39,47.949,33.121,29.816 +2020-09-20 23:45:00,71.17,46.997,33.121,29.816 +2020-09-21 00:00:00,63.72,42.257,32.506,29.93 +2020-09-21 00:15:00,71.94,41.973,32.506,29.93 +2020-09-21 00:30:00,71.02,41.553999999999995,32.506,29.93 +2020-09-21 00:45:00,73.89,41.096000000000004,32.506,29.93 +2020-09-21 01:00:00,68.98,41.651,31.121,29.93 +2020-09-21 01:15:00,69.62,41.038000000000004,31.121,29.93 +2020-09-21 01:30:00,73.22,40.213,31.121,29.93 +2020-09-21 01:45:00,73.73,39.638000000000005,31.121,29.93 +2020-09-21 02:00:00,72.86,40.29,29.605999999999998,29.93 +2020-09-21 02:15:00,70.41,39.441,29.605999999999998,29.93 +2020-09-21 02:30:00,75.57,40.343,29.605999999999998,29.93 +2020-09-21 02:45:00,75.89,40.859,29.605999999999998,29.93 +2020-09-21 03:00:00,73.84,43.576,28.124000000000002,29.93 +2020-09-21 03:15:00,72.28,43.278,28.124000000000002,29.93 +2020-09-21 03:30:00,78.86,43.173,28.124000000000002,29.93 +2020-09-21 03:45:00,81.91,44.346000000000004,28.124000000000002,29.93 +2020-09-21 04:00:00,83.6,53.56399999999999,29.743000000000002,29.93 +2020-09-21 04:15:00,81.79,61.896,29.743000000000002,29.93 +2020-09-21 04:30:00,85.13,60.549,29.743000000000002,29.93 +2020-09-21 04:45:00,90.52,61.034,29.743000000000002,29.93 +2020-09-21 05:00:00,99.97,80.40899999999999,36.191,29.93 +2020-09-21 05:15:00,106.86,97.719,36.191,29.93 +2020-09-21 05:30:00,113.92,91.788,36.191,29.93 +2020-09-21 05:45:00,121.46,86.161,36.191,29.93 +2020-09-21 06:00:00,123.22,85.652,55.277,29.93 +2020-09-21 06:15:00,121.57,87.79899999999999,55.277,29.93 +2020-09-21 06:30:00,121.97,86.494,55.277,29.93 +2020-09-21 06:45:00,124.18,88.302,55.277,29.93 +2020-09-21 07:00:00,126.05,87.74700000000001,65.697,29.93 +2020-09-21 07:15:00,123.56,89.73700000000001,65.697,29.93 +2020-09-21 07:30:00,119.15,88.95200000000001,65.697,29.93 +2020-09-21 07:45:00,121.25,90.06200000000001,65.697,29.93 +2020-09-21 08:00:00,122.84,86.54299999999999,57.028,29.93 +2020-09-21 08:15:00,123.58,88.176,57.028,29.93 +2020-09-21 08:30:00,124.68,86.37299999999999,57.028,29.93 +2020-09-21 08:45:00,123.86,87.43,57.028,29.93 +2020-09-21 09:00:00,122.73,81.84100000000001,52.633,29.93 +2020-09-21 09:15:00,122.01,79.57300000000001,52.633,29.93 +2020-09-21 09:30:00,121.3,79.82,52.633,29.93 +2020-09-21 09:45:00,123.09,79.15100000000001,52.633,29.93 +2020-09-21 10:00:00,127.26,77.78,50.647,29.93 +2020-09-21 10:15:00,126.28,78.107,50.647,29.93 +2020-09-21 10:30:00,120.76,77.462,50.647,29.93 +2020-09-21 10:45:00,121.89,76.899,50.647,29.93 +2020-09-21 11:00:00,118.55,74.681,50.245,29.93 +2020-09-21 11:15:00,120.27,75.36399999999999,50.245,29.93 +2020-09-21 11:30:00,121.52,76.82600000000001,50.245,29.93 +2020-09-21 11:45:00,118.95,76.563,50.245,29.93 +2020-09-21 12:00:00,109.74,74.55,46.956,29.93 +2020-09-21 12:15:00,113.88,74.17699999999999,46.956,29.93 +2020-09-21 12:30:00,105.64,72.477,46.956,29.93 +2020-09-21 12:45:00,114.96,72.624,46.956,29.93 +2020-09-21 13:00:00,114.37,72.619,47.383,29.93 +2020-09-21 13:15:00,107.54,71.649,47.383,29.93 +2020-09-21 13:30:00,102.4,70.263,47.383,29.93 +2020-09-21 13:45:00,107.14,70.24600000000001,47.383,29.93 +2020-09-21 14:00:00,122.16,70.2,47.1,29.93 +2020-09-21 14:15:00,123.25,70.017,47.1,29.93 +2020-09-21 14:30:00,111.73,68.586,47.1,29.93 +2020-09-21 14:45:00,113.21,69.455,47.1,29.93 +2020-09-21 15:00:00,114.42,69.688,49.355,29.93 +2020-09-21 15:15:00,113.68,67.744,49.355,29.93 +2020-09-21 15:30:00,115.25,67.443,49.355,29.93 +2020-09-21 15:45:00,112.83,66.139,49.355,29.93 +2020-09-21 16:00:00,116.9,67.553,52.14,29.93 +2020-09-21 16:15:00,113.27,66.914,52.14,29.93 +2020-09-21 16:30:00,113.73,67.6,52.14,29.93 +2020-09-21 16:45:00,116.11,64.986,52.14,29.93 +2020-09-21 17:00:00,119.45,65.829,58.705,29.93 +2020-09-21 17:15:00,118.12,66.80199999999999,58.705,29.93 +2020-09-21 17:30:00,117.64,66.57,58.705,29.93 +2020-09-21 17:45:00,115.33,66.952,58.705,29.93 +2020-09-21 18:00:00,117.55,67.64,59.153,29.93 +2020-09-21 18:15:00,117.76,66.494,59.153,29.93 +2020-09-21 18:30:00,118.86,65.55,59.153,29.93 +2020-09-21 18:45:00,118.16,69.444,59.153,29.93 +2020-09-21 19:00:00,113.92,70.17,61.483000000000004,29.93 +2020-09-21 19:15:00,109.99,68.964,61.483000000000004,29.93 +2020-09-21 19:30:00,107.98,68.619,61.483000000000004,29.93 +2020-09-21 19:45:00,105.49,68.542,61.483000000000004,29.93 +2020-09-21 20:00:00,105.98,66.316,67.55,29.93 +2020-09-21 20:15:00,107.86,65.946,67.55,29.93 +2020-09-21 20:30:00,105.11,64.217,67.55,29.93 +2020-09-21 20:45:00,95.78,63.5,67.55,29.93 +2020-09-21 21:00:00,94.14,61.354,60.026,29.93 +2020-09-21 21:15:00,93.33,63.472,60.026,29.93 +2020-09-21 21:30:00,94.41,62.532,60.026,29.93 +2020-09-21 21:45:00,94.3,61.356,60.026,29.93 +2020-09-21 22:00:00,89.01,59.428000000000004,52.736999999999995,29.93 +2020-09-21 22:15:00,84.04,58.778999999999996,52.736999999999995,29.93 +2020-09-21 22:30:00,83.53,49.756,52.736999999999995,29.93 +2020-09-21 22:45:00,85.82,46.015,52.736999999999995,29.93 +2020-09-21 23:00:00,83.32,42.842,44.408,29.93 +2020-09-21 23:15:00,76.73,41.349,44.408,29.93 +2020-09-21 23:30:00,74.23,41.486000000000004,44.408,29.93 +2020-09-21 23:45:00,81.41,40.847,44.408,29.93 +2020-09-22 00:00:00,79.25,40.692,44.438,29.93 +2020-09-22 00:15:00,79.02,41.415,44.438,29.93 +2020-09-22 00:30:00,71.81,41.271,44.438,29.93 +2020-09-22 00:45:00,70.35,41.129,44.438,29.93 +2020-09-22 01:00:00,78.04,41.229,41.468999999999994,29.93 +2020-09-22 01:15:00,79.59,40.599000000000004,41.468999999999994,29.93 +2020-09-22 01:30:00,77.85,39.745,41.468999999999994,29.93 +2020-09-22 01:45:00,74.14,38.878,41.468999999999994,29.93 +2020-09-22 02:00:00,76.1,39.185,39.708,29.93 +2020-09-22 02:15:00,78.9,39.167,39.708,29.93 +2020-09-22 02:30:00,78.9,39.602,39.708,29.93 +2020-09-22 02:45:00,74.95,40.354,39.708,29.93 +2020-09-22 03:00:00,72.1,42.326,38.919000000000004,29.93 +2020-09-22 03:15:00,77.33,42.497,38.919000000000004,29.93 +2020-09-22 03:30:00,75.89,42.504,38.919000000000004,29.93 +2020-09-22 03:45:00,80.08,42.905,38.919000000000004,29.93 +2020-09-22 04:00:00,83.28,51.184,40.092,29.93 +2020-09-22 04:15:00,83.18,59.461999999999996,40.092,29.93 +2020-09-22 04:30:00,88.24,57.948,40.092,29.93 +2020-09-22 04:45:00,92.26,59.123999999999995,40.092,29.93 +2020-09-22 05:00:00,101.36,81.043,43.713,29.93 +2020-09-22 05:15:00,112.59,98.867,43.713,29.93 +2020-09-22 05:30:00,117.29,92.676,43.713,29.93 +2020-09-22 05:45:00,118.66,86.45299999999999,43.713,29.93 +2020-09-22 06:00:00,117.1,86.402,56.033,29.93 +2020-09-22 06:15:00,118.12,89.12799999999999,56.033,29.93 +2020-09-22 06:30:00,117.39,87.425,56.033,29.93 +2020-09-22 06:45:00,118.72,88.47200000000001,56.033,29.93 +2020-09-22 07:00:00,120.28,87.978,66.003,29.93 +2020-09-22 07:15:00,118.56,89.75299999999999,66.003,29.93 +2020-09-22 07:30:00,117.78,88.869,66.003,29.93 +2020-09-22 07:45:00,117.36,89.32600000000001,66.003,29.93 +2020-09-22 08:00:00,115.63,85.794,57.474,29.93 +2020-09-22 08:15:00,115.97,86.789,57.474,29.93 +2020-09-22 08:30:00,116.15,85.074,57.474,29.93 +2020-09-22 08:45:00,116.14,85.37,57.474,29.93 +2020-09-22 09:00:00,113.46,79.796,51.928000000000004,29.93 +2020-09-22 09:15:00,114.86,77.87100000000001,51.928000000000004,29.93 +2020-09-22 09:30:00,116.65,78.78399999999999,51.928000000000004,29.93 +2020-09-22 09:45:00,117.21,78.98100000000001,51.928000000000004,29.93 +2020-09-22 10:00:00,116.31,76.461,49.46,29.93 +2020-09-22 10:15:00,112.61,76.334,49.46,29.93 +2020-09-22 10:30:00,112.62,75.747,49.46,29.93 +2020-09-22 10:45:00,113.46,75.955,49.46,29.93 +2020-09-22 11:00:00,111.98,74.19800000000001,48.206,29.93 +2020-09-22 11:15:00,107.81,75.045,48.206,29.93 +2020-09-22 11:30:00,113.38,75.354,48.206,29.93 +2020-09-22 11:45:00,106.2,74.97399999999999,48.206,29.93 +2020-09-22 12:00:00,105.03,72.382,46.285,29.93 +2020-09-22 12:15:00,104.5,72.095,46.285,29.93 +2020-09-22 12:30:00,103.2,71.24,46.285,29.93 +2020-09-22 12:45:00,99.21,71.758,46.285,29.93 +2020-09-22 13:00:00,102.59,71.366,46.861999999999995,29.93 +2020-09-22 13:15:00,108.02,71.529,46.861999999999995,29.93 +2020-09-22 13:30:00,103.9,70.479,46.861999999999995,29.93 +2020-09-22 13:45:00,102.03,69.86,46.861999999999995,29.93 +2020-09-22 14:00:00,106.58,70.15899999999999,46.488,29.93 +2020-09-22 14:15:00,105.28,69.903,46.488,29.93 +2020-09-22 14:30:00,101.09,68.925,46.488,29.93 +2020-09-22 14:45:00,102.61,69.22399999999999,46.488,29.93 +2020-09-22 15:00:00,105.33,69.167,48.442,29.93 +2020-09-22 15:15:00,104.23,67.98,48.442,29.93 +2020-09-22 15:30:00,103.53,67.63600000000001,48.442,29.93 +2020-09-22 15:45:00,105.75,66.461,48.442,29.93 +2020-09-22 16:00:00,108.11,67.479,50.397,29.93 +2020-09-22 16:15:00,108.64,67.058,50.397,29.93 +2020-09-22 16:30:00,110.45,67.669,50.397,29.93 +2020-09-22 16:45:00,113.26,65.699,50.397,29.93 +2020-09-22 17:00:00,114.67,66.813,56.668,29.93 +2020-09-22 17:15:00,114.65,68.11,56.668,29.93 +2020-09-22 17:30:00,116.47,67.773,56.668,29.93 +2020-09-22 17:45:00,117.39,67.911,56.668,29.93 +2020-09-22 18:00:00,121.5,67.854,57.957,29.93 +2020-09-22 18:15:00,119.7,67.63600000000001,57.957,29.93 +2020-09-22 18:30:00,121.25,66.432,57.957,29.93 +2020-09-22 18:45:00,119.41,70.4,57.957,29.93 +2020-09-22 19:00:00,117.27,70.289,57.056000000000004,29.93 +2020-09-22 19:15:00,114.03,69.138,57.056000000000004,29.93 +2020-09-22 19:30:00,113.68,68.457,57.056000000000004,29.93 +2020-09-22 19:45:00,108.16,68.626,57.056000000000004,29.93 +2020-09-22 20:00:00,106.04,66.758,64.156,29.93 +2020-09-22 20:15:00,110.06,65.166,64.156,29.93 +2020-09-22 20:30:00,108.07,63.717,64.156,29.93 +2020-09-22 20:45:00,100.9,63.108999999999995,64.156,29.93 +2020-09-22 21:00:00,93.55,61.407,56.507,29.93 +2020-09-22 21:15:00,93.78,62.69,56.507,29.93 +2020-09-22 21:30:00,90.09,61.68899999999999,56.507,29.93 +2020-09-22 21:45:00,92.81,60.684,56.507,29.93 +2020-09-22 22:00:00,88.4,59.316,50.728,29.93 +2020-09-22 22:15:00,90.76,58.328,50.728,29.93 +2020-09-22 22:30:00,83.74,49.538000000000004,50.728,29.93 +2020-09-22 22:45:00,79.35,45.873000000000005,50.728,29.93 +2020-09-22 23:00:00,73.73,42.176,43.556999999999995,29.93 +2020-09-22 23:15:00,74.31,41.556999999999995,43.556999999999995,29.93 +2020-09-22 23:30:00,72.56,41.6,43.556999999999995,29.93 +2020-09-22 23:45:00,73.7,40.976000000000006,43.556999999999995,29.93 +2020-09-23 00:00:00,74.14,40.966,41.151,29.93 +2020-09-23 00:15:00,80.43,41.68600000000001,41.151,29.93 +2020-09-23 00:30:00,80.03,41.549,41.151,29.93 +2020-09-23 00:45:00,79.17,41.41,41.151,29.93 +2020-09-23 01:00:00,72.52,41.504,37.763000000000005,29.93 +2020-09-23 01:15:00,76.54,40.896,37.763000000000005,29.93 +2020-09-23 01:30:00,79.93,40.059,37.763000000000005,29.93 +2020-09-23 01:45:00,81.24,39.193000000000005,37.763000000000005,29.93 +2020-09-23 02:00:00,78.02,39.505,35.615,29.93 +2020-09-23 02:15:00,77.07,39.507,35.615,29.93 +2020-09-23 02:30:00,81.33,39.919000000000004,35.615,29.93 +2020-09-23 02:45:00,81.34,40.667,35.615,29.93 +2020-09-23 03:00:00,77.9,42.626000000000005,35.153,29.93 +2020-09-23 03:15:00,76.25,42.815,35.153,29.93 +2020-09-23 03:30:00,84.12,42.827,35.153,29.93 +2020-09-23 03:45:00,87.89,43.21,35.153,29.93 +2020-09-23 04:00:00,91.84,51.525,36.203,29.93 +2020-09-23 04:15:00,87.47,59.836999999999996,36.203,29.93 +2020-09-23 04:30:00,95.22,58.328,36.203,29.93 +2020-09-23 04:45:00,101.67,59.511,36.203,29.93 +2020-09-23 05:00:00,111.18,81.527,39.922,29.93 +2020-09-23 05:15:00,112.35,99.454,39.922,29.93 +2020-09-23 05:30:00,111.69,93.244,39.922,29.93 +2020-09-23 05:45:00,116.38,86.97,39.922,29.93 +2020-09-23 06:00:00,119.88,86.88600000000001,56.443999999999996,29.93 +2020-09-23 06:15:00,119.76,89.635,56.443999999999996,29.93 +2020-09-23 06:30:00,120.0,87.935,56.443999999999996,29.93 +2020-09-23 06:45:00,121.7,88.979,56.443999999999996,29.93 +2020-09-23 07:00:00,124.88,88.484,68.683,29.93 +2020-09-23 07:15:00,120.09,90.274,68.683,29.93 +2020-09-23 07:30:00,121.21,89.425,68.683,29.93 +2020-09-23 07:45:00,123.12,89.883,68.683,29.93 +2020-09-23 08:00:00,116.84,86.35799999999999,59.003,29.93 +2020-09-23 08:15:00,115.12,87.31700000000001,59.003,29.93 +2020-09-23 08:30:00,115.48,85.62,59.003,29.93 +2020-09-23 08:45:00,115.51,85.897,59.003,29.93 +2020-09-23 09:00:00,114.02,80.328,56.21,29.93 +2020-09-23 09:15:00,114.6,78.39399999999999,56.21,29.93 +2020-09-23 09:30:00,110.5,79.286,56.21,29.93 +2020-09-23 09:45:00,108.97,79.453,56.21,29.93 +2020-09-23 10:00:00,108.11,76.928,52.358999999999995,29.93 +2020-09-23 10:15:00,109.82,76.764,52.358999999999995,29.93 +2020-09-23 10:30:00,110.15,76.161,52.358999999999995,29.93 +2020-09-23 10:45:00,105.93,76.354,52.358999999999995,29.93 +2020-09-23 11:00:00,105.59,74.609,51.161,29.93 +2020-09-23 11:15:00,106.75,75.438,51.161,29.93 +2020-09-23 11:30:00,104.38,75.747,51.161,29.93 +2020-09-23 11:45:00,103.61,75.348,51.161,29.93 +2020-09-23 12:00:00,100.04,72.733,49.119,29.93 +2020-09-23 12:15:00,106.82,72.434,49.119,29.93 +2020-09-23 12:30:00,109.78,71.612,49.119,29.93 +2020-09-23 12:45:00,102.31,72.122,49.119,29.93 +2020-09-23 13:00:00,103.09,71.70100000000001,49.187,29.93 +2020-09-23 13:15:00,103.29,71.862,49.187,29.93 +2020-09-23 13:30:00,102.62,70.81,49.187,29.93 +2020-09-23 13:45:00,105.34,70.196,49.187,29.93 +2020-09-23 14:00:00,107.99,70.447,49.787,29.93 +2020-09-23 14:15:00,105.73,70.204,49.787,29.93 +2020-09-23 14:30:00,107.7,69.259,49.787,29.93 +2020-09-23 14:45:00,109.29,69.555,49.787,29.93 +2020-09-23 15:00:00,108.43,69.45100000000001,51.458999999999996,29.93 +2020-09-23 15:15:00,104.72,68.285,51.458999999999996,29.93 +2020-09-23 15:30:00,107.19,67.971,51.458999999999996,29.93 +2020-09-23 15:45:00,107.85,66.812,51.458999999999996,29.93 +2020-09-23 16:00:00,109.45,67.789,53.663000000000004,29.93 +2020-09-23 16:15:00,108.62,67.385,53.663000000000004,29.93 +2020-09-23 16:30:00,110.5,67.992,53.663000000000004,29.93 +2020-09-23 16:45:00,113.22,66.078,53.663000000000004,29.93 +2020-09-23 17:00:00,116.47,67.153,58.183,29.93 +2020-09-23 17:15:00,114.39,68.475,58.183,29.93 +2020-09-23 17:30:00,116.38,68.142,58.183,29.93 +2020-09-23 17:45:00,117.99,68.31,58.183,29.93 +2020-09-23 18:00:00,119.46,68.234,60.141000000000005,29.93 +2020-09-23 18:15:00,119.27,68.014,60.141000000000005,29.93 +2020-09-23 18:30:00,119.58,66.82,60.141000000000005,29.93 +2020-09-23 18:45:00,119.51,70.78399999999999,60.141000000000005,29.93 +2020-09-23 19:00:00,115.57,70.683,60.582,29.93 +2020-09-23 19:15:00,111.65,69.531,60.582,29.93 +2020-09-23 19:30:00,110.06,68.845,60.582,29.93 +2020-09-23 19:45:00,107.79,69.005,60.582,29.93 +2020-09-23 20:00:00,103.36,67.161,66.61,29.93 +2020-09-23 20:15:00,99.89,65.566,66.61,29.93 +2020-09-23 20:30:00,99.32,64.09,66.61,29.93 +2020-09-23 20:45:00,101.02,63.443000000000005,66.61,29.93 +2020-09-23 21:00:00,98.0,61.744,57.658,29.93 +2020-09-23 21:15:00,99.6,63.016999999999996,57.658,29.93 +2020-09-23 21:30:00,86.71,62.025,57.658,29.93 +2020-09-23 21:45:00,90.43,60.985,57.658,29.93 +2020-09-23 22:00:00,84.37,59.597,51.81,29.93 +2020-09-23 22:15:00,91.09,58.586000000000006,51.81,29.93 +2020-09-23 22:30:00,88.12,49.79,51.81,29.93 +2020-09-23 22:45:00,83.92,46.13,51.81,29.93 +2020-09-23 23:00:00,76.12,42.474,42.93600000000001,29.93 +2020-09-23 23:15:00,75.88,41.823,42.93600000000001,29.93 +2020-09-23 23:30:00,79.32,41.87,42.93600000000001,29.93 +2020-09-23 23:45:00,82.59,41.246,42.93600000000001,29.93 +2020-09-24 00:00:00,79.44,41.243,39.211,29.93 +2020-09-24 00:15:00,76.44,41.958999999999996,39.211,29.93 +2020-09-24 00:30:00,75.48,41.83,39.211,29.93 +2020-09-24 00:45:00,79.62,41.693999999999996,39.211,29.93 +2020-09-24 01:00:00,76.77,41.78,37.607,29.93 +2020-09-24 01:15:00,80.51,41.193000000000005,37.607,29.93 +2020-09-24 01:30:00,72.87,40.375,37.607,29.93 +2020-09-24 01:45:00,79.28,39.509,37.607,29.93 +2020-09-24 02:00:00,78.34,39.827,36.44,29.93 +2020-09-24 02:15:00,78.78,39.849000000000004,36.44,29.93 +2020-09-24 02:30:00,74.7,40.239000000000004,36.44,29.93 +2020-09-24 02:45:00,82.77,40.981,36.44,29.93 +2020-09-24 03:00:00,81.53,42.928000000000004,36.116,29.93 +2020-09-24 03:15:00,79.01,43.135,36.116,29.93 +2020-09-24 03:30:00,78.21,43.151,36.116,29.93 +2020-09-24 03:45:00,82.11,43.516999999999996,36.116,29.93 +2020-09-24 04:00:00,87.36,51.869,37.398,29.93 +2020-09-24 04:15:00,93.6,60.213,37.398,29.93 +2020-09-24 04:30:00,97.83,58.708999999999996,37.398,29.93 +2020-09-24 04:45:00,99.6,59.9,37.398,29.93 +2020-09-24 05:00:00,109.7,82.016,41.776,29.93 +2020-09-24 05:15:00,108.24,100.046,41.776,29.93 +2020-09-24 05:30:00,110.1,93.816,41.776,29.93 +2020-09-24 05:45:00,112.5,87.49,41.776,29.93 +2020-09-24 06:00:00,118.92,87.375,55.61,29.93 +2020-09-24 06:15:00,120.61,90.146,55.61,29.93 +2020-09-24 06:30:00,123.08,88.449,55.61,29.93 +2020-09-24 06:45:00,124.17,89.49,55.61,29.93 +2020-09-24 07:00:00,126.37,88.994,67.13600000000001,29.93 +2020-09-24 07:15:00,125.34,90.79899999999999,67.13600000000001,29.93 +2020-09-24 07:30:00,127.26,89.985,67.13600000000001,29.93 +2020-09-24 07:45:00,127.08,90.443,67.13600000000001,29.93 +2020-09-24 08:00:00,125.35,86.925,57.55,29.93 +2020-09-24 08:15:00,126.55,87.84899999999999,57.55,29.93 +2020-09-24 08:30:00,129.1,86.16799999999999,57.55,29.93 +2020-09-24 08:45:00,130.06,86.425,57.55,29.93 +2020-09-24 09:00:00,128.57,80.861,52.931999999999995,29.93 +2020-09-24 09:15:00,126.84,78.918,52.931999999999995,29.93 +2020-09-24 09:30:00,123.67,79.79,52.931999999999995,29.93 +2020-09-24 09:45:00,127.27,79.92699999999999,52.931999999999995,29.93 +2020-09-24 10:00:00,125.65,77.398,50.36600000000001,29.93 +2020-09-24 10:15:00,124.59,77.194,50.36600000000001,29.93 +2020-09-24 10:30:00,120.94,76.577,50.36600000000001,29.93 +2020-09-24 10:45:00,116.89,76.75399999999999,50.36600000000001,29.93 +2020-09-24 11:00:00,110.52,75.02,47.893,29.93 +2020-09-24 11:15:00,109.17,75.833,47.893,29.93 +2020-09-24 11:30:00,110.97,76.141,47.893,29.93 +2020-09-24 11:45:00,106.21,75.725,47.893,29.93 +2020-09-24 12:00:00,102.53,73.084,45.271,29.93 +2020-09-24 12:15:00,102.03,72.77199999999999,45.271,29.93 +2020-09-24 12:30:00,99.75,71.986,45.271,29.93 +2020-09-24 12:45:00,99.48,72.488,45.271,29.93 +2020-09-24 13:00:00,98.27,72.03699999999999,44.351000000000006,29.93 +2020-09-24 13:15:00,99.53,72.196,44.351000000000006,29.93 +2020-09-24 13:30:00,100.61,71.143,44.351000000000006,29.93 +2020-09-24 13:45:00,102.58,70.532,44.351000000000006,29.93 +2020-09-24 14:00:00,103.51,70.735,44.99,29.93 +2020-09-24 14:15:00,103.08,70.508,44.99,29.93 +2020-09-24 14:30:00,101.16,69.596,44.99,29.93 +2020-09-24 14:45:00,101.81,69.888,44.99,29.93 +2020-09-24 15:00:00,101.94,69.737,46.869,29.93 +2020-09-24 15:15:00,103.21,68.59,46.869,29.93 +2020-09-24 15:30:00,103.97,68.308,46.869,29.93 +2020-09-24 15:45:00,104.84,67.164,46.869,29.93 +2020-09-24 16:00:00,108.09,68.101,48.902,29.93 +2020-09-24 16:15:00,109.23,67.714,48.902,29.93 +2020-09-24 16:30:00,110.09,68.317,48.902,29.93 +2020-09-24 16:45:00,113.09,66.46,48.902,29.93 +2020-09-24 17:00:00,116.14,67.495,53.244,29.93 +2020-09-24 17:15:00,116.08,68.84100000000001,53.244,29.93 +2020-09-24 17:30:00,117.28,68.513,53.244,29.93 +2020-09-24 17:45:00,116.1,68.711,53.244,29.93 +2020-09-24 18:00:00,120.4,68.615,54.343999999999994,29.93 +2020-09-24 18:15:00,120.5,68.393,54.343999999999994,29.93 +2020-09-24 18:30:00,123.4,67.212,54.343999999999994,29.93 +2020-09-24 18:45:00,118.83,71.17,54.343999999999994,29.93 +2020-09-24 19:00:00,115.06,71.08,54.332,29.93 +2020-09-24 19:15:00,112.24,69.925,54.332,29.93 +2020-09-24 19:30:00,114.88,69.235,54.332,29.93 +2020-09-24 19:45:00,110.88,69.387,54.332,29.93 +2020-09-24 20:00:00,107.62,67.565,58.06,29.93 +2020-09-24 20:15:00,108.78,65.968,58.06,29.93 +2020-09-24 20:30:00,104.84,64.46600000000001,58.06,29.93 +2020-09-24 20:45:00,96.86,63.781000000000006,58.06,29.93 +2020-09-24 21:00:00,94.23,62.083999999999996,52.411,29.93 +2020-09-24 21:15:00,89.92,63.346000000000004,52.411,29.93 +2020-09-24 21:30:00,87.79,62.361000000000004,52.411,29.93 +2020-09-24 21:45:00,89.98,61.287,52.411,29.93 +2020-09-24 22:00:00,88.04,59.88,47.148999999999994,29.93 +2020-09-24 22:15:00,89.31,58.845,47.148999999999994,29.93 +2020-09-24 22:30:00,80.71,50.044,47.148999999999994,29.93 +2020-09-24 22:45:00,79.84,46.388000000000005,47.148999999999994,29.93 +2020-09-24 23:00:00,71.75,42.773,40.814,29.93 +2020-09-24 23:15:00,77.77,42.091,40.814,29.93 +2020-09-24 23:30:00,81.26,42.141000000000005,40.814,29.93 +2020-09-24 23:45:00,80.31,41.516999999999996,40.814,29.93 +2020-09-25 00:00:00,74.0,39.914,39.153,29.93 +2020-09-25 00:15:00,72.28,40.838,39.153,29.93 +2020-09-25 00:30:00,77.46,40.879,39.153,29.93 +2020-09-25 00:45:00,78.16,41.085,39.153,29.93 +2020-09-25 01:00:00,76.04,40.797,37.228,29.93 +2020-09-25 01:15:00,73.4,40.051,37.228,29.93 +2020-09-25 01:30:00,76.94,39.709,37.228,29.93 +2020-09-25 01:45:00,79.03,38.69,37.228,29.93 +2020-09-25 02:00:00,75.49,39.719,35.851,29.93 +2020-09-25 02:15:00,75.88,39.689,35.851,29.93 +2020-09-25 02:30:00,78.09,40.806,35.851,29.93 +2020-09-25 02:45:00,74.34,41.058,35.851,29.93 +2020-09-25 03:00:00,73.16,43.275,36.54,29.93 +2020-09-25 03:15:00,77.62,42.89,36.54,29.93 +2020-09-25 03:30:00,83.89,42.731,36.54,29.93 +2020-09-25 03:45:00,88.6,43.809,36.54,29.93 +2020-09-25 04:00:00,88.15,52.363,37.578,29.93 +2020-09-25 04:15:00,90.7,59.54,37.578,29.93 +2020-09-25 04:30:00,93.93,58.795,37.578,29.93 +2020-09-25 04:45:00,97.88,59.202,37.578,29.93 +2020-09-25 05:00:00,100.27,80.708,40.387,29.93 +2020-09-25 05:15:00,109.18,99.95299999999999,40.387,29.93 +2020-09-25 05:30:00,109.6,94.13,40.387,29.93 +2020-09-25 05:45:00,110.57,87.402,40.387,29.93 +2020-09-25 06:00:00,115.32,87.54799999999999,54.668,29.93 +2020-09-25 06:15:00,115.66,90.071,54.668,29.93 +2020-09-25 06:30:00,118.26,88.10700000000001,54.668,29.93 +2020-09-25 06:45:00,117.52,89.484,54.668,29.93 +2020-09-25 07:00:00,120.63,89.242,63.971000000000004,29.93 +2020-09-25 07:15:00,121.05,92.009,63.971000000000004,29.93 +2020-09-25 07:30:00,117.32,89.76299999999999,63.971000000000004,29.93 +2020-09-25 07:45:00,117.02,89.816,63.971000000000004,29.93 +2020-09-25 08:00:00,113.23,86.553,56.042,29.93 +2020-09-25 08:15:00,112.83,87.81,56.042,29.93 +2020-09-25 08:30:00,112.79,86.36,56.042,29.93 +2020-09-25 08:45:00,114.62,86.03399999999999,56.042,29.93 +2020-09-25 09:00:00,110.41,78.957,52.832,29.93 +2020-09-25 09:15:00,113.15,78.538,52.832,29.93 +2020-09-25 09:30:00,115.51,78.775,52.832,29.93 +2020-09-25 09:45:00,121.32,79.123,52.832,29.93 +2020-09-25 10:00:00,122.11,76.09899999999999,50.044,29.93 +2020-09-25 10:15:00,119.95,75.921,50.044,29.93 +2020-09-25 10:30:00,119.89,75.65,50.044,29.93 +2020-09-25 10:45:00,123.44,75.60600000000001,50.044,29.93 +2020-09-25 11:00:00,126.14,74.045,49.06100000000001,29.93 +2020-09-25 11:15:00,126.84,73.806,49.06100000000001,29.93 +2020-09-25 11:30:00,127.73,74.418,49.06100000000001,29.93 +2020-09-25 11:45:00,125.85,73.337,49.06100000000001,29.93 +2020-09-25 12:00:00,124.09,71.339,45.595,29.93 +2020-09-25 12:15:00,125.3,69.887,45.595,29.93 +2020-09-25 12:30:00,123.99,69.266,45.595,29.93 +2020-09-25 12:45:00,122.75,69.4,45.595,29.93 +2020-09-25 13:00:00,119.15,69.617,43.218,29.93 +2020-09-25 13:15:00,119.21,70.164,43.218,29.93 +2020-09-25 13:30:00,117.01,69.656,43.218,29.93 +2020-09-25 13:45:00,117.78,69.24,43.218,29.93 +2020-09-25 14:00:00,116.77,68.476,41.926,29.93 +2020-09-25 14:15:00,115.25,68.501,41.926,29.93 +2020-09-25 14:30:00,113.74,68.818,41.926,29.93 +2020-09-25 14:45:00,110.79,68.735,41.926,29.93 +2020-09-25 15:00:00,110.83,68.325,43.79,29.93 +2020-09-25 15:15:00,108.35,66.892,43.79,29.93 +2020-09-25 15:30:00,109.43,65.762,43.79,29.93 +2020-09-25 15:45:00,113.35,65.20100000000001,43.79,29.93 +2020-09-25 16:00:00,112.61,65.172,45.895,29.93 +2020-09-25 16:15:00,111.78,65.234,45.895,29.93 +2020-09-25 16:30:00,114.66,65.737,45.895,29.93 +2020-09-25 16:45:00,114.16,63.353,45.895,29.93 +2020-09-25 17:00:00,116.51,65.618,51.36,29.93 +2020-09-25 17:15:00,117.46,66.74,51.36,29.93 +2020-09-25 17:30:00,116.53,66.434,51.36,29.93 +2020-09-25 17:45:00,119.69,66.47399999999999,51.36,29.93 +2020-09-25 18:00:00,124.62,66.657,52.985,29.93 +2020-09-25 18:15:00,119.12,65.642,52.985,29.93 +2020-09-25 18:30:00,119.12,64.514,52.985,29.93 +2020-09-25 18:45:00,114.05,68.764,52.985,29.93 +2020-09-25 19:00:00,110.75,69.617,52.602,29.93 +2020-09-25 19:15:00,109.43,69.267,52.602,29.93 +2020-09-25 19:30:00,107.76,68.505,52.602,29.93 +2020-09-25 19:45:00,104.87,67.777,52.602,29.93 +2020-09-25 20:00:00,100.97,65.862,58.063,29.93 +2020-09-25 20:15:00,102.74,64.84,58.063,29.93 +2020-09-25 20:30:00,100.5,62.946999999999996,58.063,29.93 +2020-09-25 20:45:00,93.97,61.794,58.063,29.93 +2020-09-25 21:00:00,88.38,61.198,50.135,29.93 +2020-09-25 21:15:00,87.81,63.786,50.135,29.93 +2020-09-25 21:30:00,85.24,62.715,50.135,29.93 +2020-09-25 21:45:00,86.18,61.906000000000006,50.135,29.93 +2020-09-25 22:00:00,83.96,60.652,45.165,29.93 +2020-09-25 22:15:00,79.17,59.376000000000005,45.165,29.93 +2020-09-25 22:30:00,75.1,55.809,45.165,29.93 +2020-09-25 22:45:00,77.09,53.768,45.165,29.93 +2020-09-25 23:00:00,79.16,51.29600000000001,39.121,29.93 +2020-09-25 23:15:00,75.29,48.898,39.121,29.93 +2020-09-25 23:30:00,70.25,47.217,39.121,29.93 +2020-09-25 23:45:00,67.44,46.32,39.121,29.93 +2020-09-26 00:00:00,64.11,40.303000000000004,38.49,29.816 +2020-09-26 00:15:00,64.22,39.549,38.49,29.816 +2020-09-26 00:30:00,71.12,39.624,38.49,29.816 +2020-09-26 00:45:00,71.01,39.498000000000005,38.49,29.816 +2020-09-26 01:00:00,69.95,39.577,34.5,29.816 +2020-09-26 01:15:00,63.99,39.008,34.5,29.816 +2020-09-26 01:30:00,69.4,37.955,34.5,29.816 +2020-09-26 01:45:00,69.93,37.782,34.5,29.816 +2020-09-26 02:00:00,68.96,38.286,32.236,29.816 +2020-09-26 02:15:00,64.21,37.6,32.236,29.816 +2020-09-26 02:30:00,68.74,37.809,32.236,29.816 +2020-09-26 02:45:00,67.86,38.655,32.236,29.816 +2020-09-26 03:00:00,62.1,40.036,32.067,29.816 +2020-09-26 03:15:00,61.48,38.824,32.067,29.816 +2020-09-26 03:30:00,62.24,38.464,32.067,29.816 +2020-09-26 03:45:00,62.77,40.629,32.067,29.816 +2020-09-26 04:00:00,63.44,46.69,33.071,29.816 +2020-09-26 04:15:00,63.08,52.544,33.071,29.816 +2020-09-26 04:30:00,63.34,49.988,33.071,29.816 +2020-09-26 04:45:00,65.2,50.463,33.071,29.816 +2020-09-26 05:00:00,67.69,62.15,33.014,29.816 +2020-09-26 05:15:00,69.25,68.483,33.014,29.816 +2020-09-26 05:30:00,71.19,63.869,33.014,29.816 +2020-09-26 05:45:00,70.98,61.817,33.014,29.816 +2020-09-26 06:00:00,72.82,74.937,34.628,29.816 +2020-09-26 06:15:00,73.93,87.507,34.628,29.816 +2020-09-26 06:30:00,75.0,82.045,34.628,29.816 +2020-09-26 06:45:00,77.15,78.709,34.628,29.816 +2020-09-26 07:00:00,78.72,76.085,38.871,29.816 +2020-09-26 07:15:00,78.7,77.581,38.871,29.816 +2020-09-26 07:30:00,79.43,77.208,38.871,29.816 +2020-09-26 07:45:00,81.14,79.021,38.871,29.816 +2020-09-26 08:00:00,82.04,77.229,43.293,29.816 +2020-09-26 08:15:00,81.29,79.325,43.293,29.816 +2020-09-26 08:30:00,79.31,78.339,43.293,29.816 +2020-09-26 08:45:00,78.64,79.563,43.293,29.816 +2020-09-26 09:00:00,77.73,75.152,44.559,29.816 +2020-09-26 09:15:00,77.3,75.286,44.559,29.816 +2020-09-26 09:30:00,76.01,76.116,44.559,29.816 +2020-09-26 09:45:00,76.69,76.161,44.559,29.816 +2020-09-26 10:00:00,77.09,73.52,42.091,29.816 +2020-09-26 10:15:00,78.02,73.59899999999999,42.091,29.816 +2020-09-26 10:30:00,79.27,73.126,42.091,29.816 +2020-09-26 10:45:00,75.73,73.221,42.091,29.816 +2020-09-26 11:00:00,74.16,71.61399999999999,38.505,29.816 +2020-09-26 11:15:00,73.22,71.741,38.505,29.816 +2020-09-26 11:30:00,74.17,72.20100000000001,38.505,29.816 +2020-09-26 11:45:00,72.12,71.267,38.505,29.816 +2020-09-26 12:00:00,70.46,69.072,35.388000000000005,29.816 +2020-09-26 12:15:00,67.44,68.39,35.388000000000005,29.816 +2020-09-26 12:30:00,71.03,67.819,35.388000000000005,29.816 +2020-09-26 12:45:00,69.48,68.183,35.388000000000005,29.816 +2020-09-26 13:00:00,63.24,67.752,31.355999999999998,29.816 +2020-09-26 13:15:00,64.45,67.275,31.355999999999998,29.816 +2020-09-26 13:30:00,64.55,66.75,31.355999999999998,29.816 +2020-09-26 13:45:00,63.96,65.571,31.355999999999998,29.816 +2020-09-26 14:00:00,64.09,65.168,30.522,29.816 +2020-09-26 14:15:00,67.34,64.189,30.522,29.816 +2020-09-26 14:30:00,65.35,63.668,30.522,29.816 +2020-09-26 14:45:00,66.06,63.978,30.522,29.816 +2020-09-26 15:00:00,67.79,64.027,34.36,29.816 +2020-09-26 15:15:00,66.51,63.351000000000006,34.36,29.816 +2020-09-26 15:30:00,68.16,62.885,34.36,29.816 +2020-09-26 15:45:00,72.59,61.718999999999994,34.36,29.816 +2020-09-26 16:00:00,75.45,62.938,39.507,29.816 +2020-09-26 16:15:00,77.55,62.669,39.507,29.816 +2020-09-26 16:30:00,79.63,63.308,39.507,29.816 +2020-09-26 16:45:00,83.05,61.232,39.507,29.816 +2020-09-26 17:00:00,85.81,62.456,47.151,29.816 +2020-09-26 17:15:00,86.82,62.61,47.151,29.816 +2020-09-26 17:30:00,88.1,62.18899999999999,47.151,29.816 +2020-09-26 17:45:00,90.04,62.478,47.151,29.816 +2020-09-26 18:00:00,95.33,63.623000000000005,50.303999999999995,29.816 +2020-09-26 18:15:00,94.65,64.312,50.303999999999995,29.816 +2020-09-26 18:30:00,97.77,64.545,50.303999999999995,29.816 +2020-09-26 18:45:00,95.72,65.35300000000001,50.303999999999995,29.816 +2020-09-26 19:00:00,90.07,65.441,50.622,29.816 +2020-09-26 19:15:00,86.83,64.219,50.622,29.816 +2020-09-26 19:30:00,85.33,64.218,50.622,29.816 +2020-09-26 19:45:00,84.12,64.718,50.622,29.816 +2020-09-26 20:00:00,79.3,63.951,45.391000000000005,29.816 +2020-09-26 20:15:00,80.25,63.068000000000005,45.391000000000005,29.816 +2020-09-26 20:30:00,78.57,60.422,45.391000000000005,29.816 +2020-09-26 20:45:00,77.53,60.446000000000005,45.391000000000005,29.816 +2020-09-26 21:00:00,73.77,59.438,39.98,29.816 +2020-09-26 21:15:00,75.16,61.888000000000005,39.98,29.816 +2020-09-26 21:30:00,69.54,61.303999999999995,39.98,29.816 +2020-09-26 21:45:00,69.49,59.95399999999999,39.98,29.816 +2020-09-26 22:00:00,66.64,59.036,37.53,29.816 +2020-09-26 22:15:00,67.12,58.604,37.53,29.816 +2020-09-26 22:30:00,63.4,56.483000000000004,37.53,29.816 +2020-09-26 22:45:00,63.85,55.235,37.53,29.816 +2020-09-26 23:00:00,58.44,52.963,30.97,29.816 +2020-09-26 23:15:00,57.4,50.388000000000005,30.97,29.816 +2020-09-26 23:30:00,57.88,50.007,30.97,29.816 +2020-09-26 23:45:00,57.35,48.701,30.97,29.816 +2020-09-27 00:00:00,58.71,41.699,27.24,29.816 +2020-09-27 00:15:00,55.74,40.016999999999996,27.24,29.816 +2020-09-27 00:30:00,54.56,39.891,27.24,29.816 +2020-09-27 00:45:00,54.16,39.876999999999995,27.24,29.816 +2020-09-27 01:00:00,52.05,40.103,25.662,29.816 +2020-09-27 01:15:00,53.71,39.753,25.662,29.816 +2020-09-27 01:30:00,52.61,38.762,25.662,29.816 +2020-09-27 01:45:00,52.16,38.228,25.662,29.816 +2020-09-27 02:00:00,52.19,38.591,25.67,29.816 +2020-09-27 02:15:00,52.28,38.199,25.67,29.816 +2020-09-27 02:30:00,52.04,38.759,25.67,29.816 +2020-09-27 02:45:00,51.99,39.516,25.67,29.816 +2020-09-27 03:00:00,52.66,41.443000000000005,24.258000000000003,29.816 +2020-09-27 03:15:00,52.96,40.293,24.258000000000003,29.816 +2020-09-27 03:30:00,54.26,39.794000000000004,24.258000000000003,29.816 +2020-09-27 03:45:00,54.89,41.345,24.258000000000003,29.816 +2020-09-27 04:00:00,55.49,47.354,25.051,29.816 +2020-09-27 04:15:00,55.87,52.648999999999994,25.051,29.816 +2020-09-27 04:30:00,55.54,51.083999999999996,25.051,29.816 +2020-09-27 04:45:00,56.78,51.303999999999995,25.051,29.816 +2020-09-27 05:00:00,58.11,62.303999999999995,25.145,29.816 +2020-09-27 05:15:00,58.1,67.563,25.145,29.816 +2020-09-27 05:30:00,58.65,62.586000000000006,25.145,29.816 +2020-09-27 05:45:00,58.18,60.34,25.145,29.816 +2020-09-27 06:00:00,59.68,71.635,26.371,29.816 +2020-09-27 06:15:00,60.43,84.40100000000001,26.371,29.816 +2020-09-27 06:30:00,61.96,78.143,26.371,29.816 +2020-09-27 06:45:00,63.71,73.797,26.371,29.816 +2020-09-27 07:00:00,64.31,71.99600000000001,28.756999999999998,29.816 +2020-09-27 07:15:00,65.55,72.084,28.756999999999998,29.816 +2020-09-27 07:30:00,66.0,72.34,28.756999999999998,29.816 +2020-09-27 07:45:00,66.81,73.921,28.756999999999998,29.816 +2020-09-27 08:00:00,66.27,73.15899999999999,32.82,29.816 +2020-09-27 08:15:00,65.26,76.039,32.82,29.816 +2020-09-27 08:30:00,64.16,76.156,32.82,29.816 +2020-09-27 08:45:00,63.97,77.865,32.82,29.816 +2020-09-27 09:00:00,62.41,73.256,35.534,29.816 +2020-09-27 09:15:00,62.07,73.188,35.534,29.816 +2020-09-27 09:30:00,61.44,74.26,35.534,29.816 +2020-09-27 09:45:00,62.57,74.954,35.534,29.816 +2020-09-27 10:00:00,63.81,73.396,35.925,29.816 +2020-09-27 10:15:00,64.87,73.69,35.925,29.816 +2020-09-27 10:30:00,65.54,73.535,35.925,29.816 +2020-09-27 10:45:00,66.79,73.756,35.925,29.816 +2020-09-27 11:00:00,64.87,72.186,37.056,29.816 +2020-09-27 11:15:00,63.25,72.028,37.056,29.816 +2020-09-27 11:30:00,60.2,72.585,37.056,29.816 +2020-09-27 11:45:00,59.31,71.992,37.056,29.816 +2020-09-27 12:00:00,54.52,70.286,33.124,29.816 +2020-09-27 12:15:00,56.11,69.765,33.124,29.816 +2020-09-27 12:30:00,55.91,68.917,33.124,29.816 +2020-09-27 12:45:00,58.63,68.538,33.124,29.816 +2020-09-27 13:00:00,58.5,67.667,29.874000000000002,29.816 +2020-09-27 13:15:00,55.01,67.723,29.874000000000002,29.816 +2020-09-27 13:30:00,55.43,66.368,29.874000000000002,29.816 +2020-09-27 13:45:00,55.98,65.756,29.874000000000002,29.816 +2020-09-27 14:00:00,57.32,66.19800000000001,27.302,29.816 +2020-09-27 14:15:00,57.14,65.899,27.302,29.816 +2020-09-27 14:30:00,57.98,64.95,27.302,29.816 +2020-09-27 14:45:00,60.21,64.396,27.302,29.816 +2020-09-27 15:00:00,61.57,64.02600000000001,27.642,29.816 +2020-09-27 15:15:00,62.18,63.051,27.642,29.816 +2020-09-27 15:30:00,64.05,62.675,27.642,29.816 +2020-09-27 15:45:00,67.12,61.934,27.642,29.816 +2020-09-27 16:00:00,70.42,62.468,31.945999999999998,29.816 +2020-09-27 16:15:00,73.68,62.107,31.945999999999998,29.816 +2020-09-27 16:30:00,76.58,63.519,31.945999999999998,29.816 +2020-09-27 16:45:00,79.25,61.583999999999996,31.945999999999998,29.816 +2020-09-27 17:00:00,82.98,63.023,40.387,29.816 +2020-09-27 17:15:00,82.75,64.161,40.387,29.816 +2020-09-27 17:30:00,87.05,64.39399999999999,40.387,29.816 +2020-09-27 17:45:00,86.61,65.675,40.387,29.816 +2020-09-27 18:00:00,90.18,67.0,44.575,29.816 +2020-09-27 18:15:00,89.39,67.767,44.575,29.816 +2020-09-27 18:30:00,89.29,67.25399999999999,44.575,29.816 +2020-09-27 18:45:00,87.47,68.656,44.575,29.816 +2020-09-27 19:00:00,91.61,70.178,45.623999999999995,29.816 +2020-09-27 19:15:00,93.17,68.29899999999999,45.623999999999995,29.816 +2020-09-27 19:30:00,92.79,68.07,45.623999999999995,29.816 +2020-09-27 19:45:00,86.34,68.607,45.623999999999995,29.816 +2020-09-27 20:00:00,78.55,68.045,44.583999999999996,29.816 +2020-09-27 20:15:00,81.4,67.33,44.583999999999996,29.816 +2020-09-27 20:30:00,83.71,65.579,44.583999999999996,29.816 +2020-09-27 20:45:00,80.58,64.027,44.583999999999996,29.816 +2020-09-27 21:00:00,84.36,62.199,39.732,29.816 +2020-09-27 21:15:00,89.77,64.25,39.732,29.816 +2020-09-27 21:30:00,86.37,63.286,39.732,29.816 +2020-09-27 21:45:00,80.3,62.198,39.732,29.816 +2020-09-27 22:00:00,75.34,62.406000000000006,38.571,29.816 +2020-09-27 22:15:00,77.9,60.526,38.571,29.816 +2020-09-27 22:30:00,78.22,57.183,38.571,29.816 +2020-09-27 22:45:00,80.64,54.788999999999994,38.571,29.816 +2020-09-27 23:00:00,76.15,51.59,33.121,29.816 +2020-09-27 23:15:00,70.67,50.4,33.121,29.816 +2020-09-27 23:30:00,68.9,49.846000000000004,33.121,29.816 +2020-09-27 23:45:00,69.98,48.894,33.121,29.816 +2020-09-28 00:00:00,72.56,44.205,32.506,29.93 +2020-09-28 00:15:00,73.53,43.888999999999996,32.506,29.93 +2020-09-28 00:30:00,72.62,43.526,32.506,29.93 +2020-09-28 00:45:00,68.54,43.083999999999996,32.506,29.93 +2020-09-28 01:00:00,65.59,43.588,31.121,29.93 +2020-09-28 01:15:00,65.31,43.13,31.121,29.93 +2020-09-28 01:30:00,66.33,42.431999999999995,31.121,29.93 +2020-09-28 01:45:00,66.87,41.858999999999995,31.121,29.93 +2020-09-28 02:00:00,64.01,42.553999999999995,29.605999999999998,29.93 +2020-09-28 02:15:00,69.97,41.842,29.605999999999998,29.93 +2020-09-28 02:30:00,74.06,42.589,29.605999999999998,29.93 +2020-09-28 02:45:00,75.8,43.067,29.605999999999998,29.93 +2020-09-28 03:00:00,72.48,45.693999999999996,28.124000000000002,29.93 +2020-09-28 03:15:00,69.89,45.528999999999996,28.124000000000002,29.93 +2020-09-28 03:30:00,74.11,45.453,28.124000000000002,29.93 +2020-09-28 03:45:00,79.39,46.504,28.124000000000002,29.93 +2020-09-28 04:00:00,83.04,55.977,29.743000000000002,29.93 +2020-09-28 04:15:00,81.76,64.546,29.743000000000002,29.93 +2020-09-28 04:30:00,89.53,63.233000000000004,29.743000000000002,29.93 +2020-09-28 04:45:00,96.21,63.772,29.743000000000002,29.93 +2020-09-28 05:00:00,105.6,83.844,36.191,29.93 +2020-09-28 05:15:00,107.36,101.895,36.191,29.93 +2020-09-28 05:30:00,107.75,95.816,36.191,29.93 +2020-09-28 05:45:00,111.23,89.825,36.191,29.93 +2020-09-28 06:00:00,115.68,89.09299999999999,55.277,29.93 +2020-09-28 06:15:00,115.66,91.397,55.277,29.93 +2020-09-28 06:30:00,117.81,90.111,55.277,29.93 +2020-09-28 06:45:00,119.85,91.897,55.277,29.93 +2020-09-28 07:00:00,122.15,91.338,65.697,29.93 +2020-09-28 07:15:00,122.14,93.427,65.697,29.93 +2020-09-28 07:30:00,121.34,92.88600000000001,65.697,29.93 +2020-09-28 07:45:00,116.32,93.995,65.697,29.93 +2020-09-28 08:00:00,117.15,90.522,57.028,29.93 +2020-09-28 08:15:00,115.61,91.912,57.028,29.93 +2020-09-28 08:30:00,119.14,90.226,57.028,29.93 +2020-09-28 08:45:00,116.91,91.141,57.028,29.93 +2020-09-28 09:00:00,116.01,85.585,52.633,29.93 +2020-09-28 09:15:00,119.67,83.25399999999999,52.633,29.93 +2020-09-28 09:30:00,118.68,83.365,52.633,29.93 +2020-09-28 09:45:00,122.1,82.484,52.633,29.93 +2020-09-28 10:00:00,117.58,81.078,50.647,29.93 +2020-09-28 10:15:00,119.15,81.132,50.647,29.93 +2020-09-28 10:30:00,116.21,80.383,50.647,29.93 +2020-09-28 10:45:00,116.73,79.708,50.647,29.93 +2020-09-28 11:00:00,119.42,77.577,50.245,29.93 +2020-09-28 11:15:00,116.62,78.139,50.245,29.93 +2020-09-28 11:30:00,121.85,79.594,50.245,29.93 +2020-09-28 11:45:00,117.42,79.208,50.245,29.93 +2020-09-28 12:00:00,113.11,77.02,46.956,29.93 +2020-09-28 12:15:00,116.0,76.562,46.956,29.93 +2020-09-28 12:30:00,113.7,75.102,46.956,29.93 +2020-09-28 12:45:00,110.78,75.194,46.956,29.93 +2020-09-28 13:00:00,109.56,74.983,47.383,29.93 +2020-09-28 13:15:00,112.19,74.00399999999999,47.383,29.93 +2020-09-28 13:30:00,112.32,72.598,47.383,29.93 +2020-09-28 13:45:00,113.59,72.613,47.383,29.93 +2020-09-28 14:00:00,115.79,72.227,47.1,29.93 +2020-09-28 14:15:00,115.49,72.146,47.1,29.93 +2020-09-28 14:30:00,114.12,70.952,47.1,29.93 +2020-09-28 14:45:00,114.56,71.797,47.1,29.93 +2020-09-28 15:00:00,117.46,71.695,49.355,29.93 +2020-09-28 15:15:00,116.47,69.889,49.355,29.93 +2020-09-28 15:30:00,114.37,69.814,49.355,29.93 +2020-09-28 15:45:00,114.24,68.618,49.355,29.93 +2020-09-28 16:00:00,115.27,69.747,52.14,29.93 +2020-09-28 16:15:00,117.99,69.223,52.14,29.93 +2020-09-28 16:30:00,117.86,69.88,52.14,29.93 +2020-09-28 16:45:00,120.05,67.665,52.14,29.93 +2020-09-28 17:00:00,122.78,68.229,58.705,29.93 +2020-09-28 17:15:00,121.13,69.37100000000001,58.705,29.93 +2020-09-28 17:30:00,122.96,69.17699999999999,58.705,29.93 +2020-09-28 17:45:00,120.89,69.768,58.705,29.93 +2020-09-28 18:00:00,124.3,70.32,59.153,29.93 +2020-09-28 18:15:00,121.62,69.16,59.153,29.93 +2020-09-28 18:30:00,123.48,68.303,59.153,29.93 +2020-09-28 18:45:00,119.09,72.157,59.153,29.93 +2020-09-28 19:00:00,115.15,72.955,61.483000000000004,29.93 +2020-09-28 19:15:00,109.93,71.735,61.483000000000004,29.93 +2020-09-28 19:30:00,107.66,71.362,61.483000000000004,29.93 +2020-09-28 19:45:00,110.06,71.22399999999999,61.483000000000004,29.93 +2020-09-28 20:00:00,99.87,69.15899999999999,67.55,29.93 +2020-09-28 20:15:00,98.53,68.77,67.55,29.93 +2020-09-28 20:30:00,102.19,66.858,67.55,29.93 +2020-09-28 20:45:00,103.9,65.867,67.55,29.93 +2020-09-28 21:00:00,96.81,63.74,60.026,29.93 +2020-09-28 21:15:00,91.9,65.782,60.026,29.93 +2020-09-28 21:30:00,86.66,64.904,60.026,29.93 +2020-09-28 21:45:00,91.92,63.486999999999995,60.026,29.93 +2020-09-28 22:00:00,89.43,61.42,52.736999999999995,29.93 +2020-09-28 22:15:00,89.06,60.604,52.736999999999995,29.93 +2020-09-28 22:30:00,81.86,51.547,52.736999999999995,29.93 +2020-09-28 22:45:00,86.05,47.843999999999994,52.736999999999995,29.93 +2020-09-28 23:00:00,82.52,44.95,44.408,29.93 +2020-09-28 23:15:00,80.8,43.236000000000004,44.408,29.93 +2020-09-28 23:30:00,76.73,43.395,44.408,29.93 +2020-09-28 23:45:00,79.66,42.756,44.408,29.93 +2020-09-29 00:00:00,77.73,42.65,44.438,29.93 +2020-09-29 00:15:00,76.61,43.342,44.438,29.93 +2020-09-29 00:30:00,76.57,43.253,44.438,29.93 +2020-09-29 00:45:00,78.99,43.126999999999995,44.438,29.93 +2020-09-29 01:00:00,77.92,43.176,41.468999999999994,29.93 +2020-09-29 01:15:00,78.18,42.699,41.468999999999994,29.93 +2020-09-29 01:30:00,74.21,41.974,41.468999999999994,29.93 +2020-09-29 01:45:00,77.34,41.108999999999995,41.468999999999994,29.93 +2020-09-29 02:00:00,78.32,41.458,39.708,29.93 +2020-09-29 02:15:00,77.97,41.577,39.708,29.93 +2020-09-29 02:30:00,78.04,41.858000000000004,39.708,29.93 +2020-09-29 02:45:00,80.85,42.573,39.708,29.93 +2020-09-29 03:00:00,79.93,44.456,38.919000000000004,29.93 +2020-09-29 03:15:00,76.51,44.75899999999999,38.919000000000004,29.93 +2020-09-29 03:30:00,79.49,44.794,38.919000000000004,29.93 +2020-09-29 03:45:00,80.02,45.07,38.919000000000004,29.93 +2020-09-29 04:00:00,89.45,53.608999999999995,40.092,29.93 +2020-09-29 04:15:00,93.05,62.126999999999995,40.092,29.93 +2020-09-29 04:30:00,95.48,60.648,40.092,29.93 +2020-09-29 04:45:00,95.39,61.878,40.092,29.93 +2020-09-29 05:00:00,103.88,84.5,43.713,29.93 +2020-09-29 05:15:00,108.14,103.072,43.713,29.93 +2020-09-29 05:30:00,110.41,96.729,43.713,29.93 +2020-09-29 05:45:00,114.39,90.139,43.713,29.93 +2020-09-29 06:00:00,118.77,89.865,56.033,29.93 +2020-09-29 06:15:00,120.88,92.749,56.033,29.93 +2020-09-29 06:30:00,121.79,91.06299999999999,56.033,29.93 +2020-09-29 06:45:00,123.75,92.088,56.033,29.93 +2020-09-29 07:00:00,126.35,91.59100000000001,66.003,29.93 +2020-09-29 07:15:00,126.55,93.463,66.003,29.93 +2020-09-29 07:30:00,125.28,92.823,66.003,29.93 +2020-09-29 07:45:00,123.7,93.275,66.003,29.93 +2020-09-29 08:00:00,120.71,89.791,57.474,29.93 +2020-09-29 08:15:00,117.0,90.537,57.474,29.93 +2020-09-29 08:30:00,116.25,88.941,57.474,29.93 +2020-09-29 08:45:00,114.5,89.095,57.474,29.93 +2020-09-29 09:00:00,115.58,83.553,51.928000000000004,29.93 +2020-09-29 09:15:00,120.06,81.567,51.928000000000004,29.93 +2020-09-29 09:30:00,116.6,82.34299999999999,51.928000000000004,29.93 +2020-09-29 09:45:00,112.53,82.32700000000001,51.928000000000004,29.93 +2020-09-29 10:00:00,117.82,79.771,49.46,29.93 +2020-09-29 10:15:00,117.6,79.37100000000001,49.46,29.93 +2020-09-29 10:30:00,115.38,78.68,49.46,29.93 +2020-09-29 10:45:00,115.03,78.775,49.46,29.93 +2020-09-29 11:00:00,112.32,77.102,48.206,29.93 +2020-09-29 11:15:00,114.51,77.828,48.206,29.93 +2020-09-29 11:30:00,115.85,78.133,48.206,29.93 +2020-09-29 11:45:00,122.55,77.62899999999999,48.206,29.93 +2020-09-29 12:00:00,121.21,74.861,46.285,29.93 +2020-09-29 12:15:00,123.65,74.48899999999999,46.285,29.93 +2020-09-29 12:30:00,119.98,73.876,46.285,29.93 +2020-09-29 12:45:00,119.13,74.34,46.285,29.93 +2020-09-29 13:00:00,117.91,73.741,46.861999999999995,29.93 +2020-09-29 13:15:00,116.67,73.89399999999999,46.861999999999995,29.93 +2020-09-29 13:30:00,117.65,72.825,46.861999999999995,29.93 +2020-09-29 13:45:00,118.25,72.237,46.861999999999995,29.93 +2020-09-29 14:00:00,115.97,72.195,46.488,29.93 +2020-09-29 14:15:00,115.47,72.04,46.488,29.93 +2020-09-29 14:30:00,114.39,71.3,46.488,29.93 +2020-09-29 14:45:00,114.29,71.57600000000001,46.488,29.93 +2020-09-29 15:00:00,110.86,71.184,48.442,29.93 +2020-09-29 15:15:00,112.31,70.13600000000001,48.442,29.93 +2020-09-29 15:30:00,111.91,70.016,48.442,29.93 +2020-09-29 15:45:00,114.05,68.95,48.442,29.93 +2020-09-29 16:00:00,116.1,69.681,50.397,29.93 +2020-09-29 16:15:00,115.08,69.375,50.397,29.93 +2020-09-29 16:30:00,117.86,69.956,50.397,29.93 +2020-09-29 16:45:00,119.27,68.388,50.397,29.93 +2020-09-29 17:00:00,122.25,69.221,56.668,29.93 +2020-09-29 17:15:00,118.99,70.688,56.668,29.93 +2020-09-29 17:30:00,119.0,70.389,56.668,29.93 +2020-09-29 17:45:00,121.21,70.738,56.668,29.93 +2020-09-29 18:00:00,124.72,70.545,57.957,29.93 +2020-09-29 18:15:00,120.93,70.315,57.957,29.93 +2020-09-29 18:30:00,122.34,69.196,57.957,29.93 +2020-09-29 18:45:00,118.19,73.126,57.957,29.93 +2020-09-29 19:00:00,111.46,73.086,57.056000000000004,29.93 +2020-09-29 19:15:00,107.02,71.922,57.056000000000004,29.93 +2020-09-29 19:30:00,105.82,71.21300000000001,57.056000000000004,29.93 +2020-09-29 19:45:00,104.05,71.321,57.056000000000004,29.93 +2020-09-29 20:00:00,99.51,69.616,64.156,29.93 +2020-09-29 20:15:00,95.64,68.005,64.156,29.93 +2020-09-29 20:30:00,91.07,66.372,64.156,29.93 +2020-09-29 20:45:00,88.43,65.49,64.156,29.93 +2020-09-29 21:00:00,82.9,63.803999999999995,56.507,29.93 +2020-09-29 21:15:00,78.99,65.01100000000001,56.507,29.93 +2020-09-29 21:30:00,76.78,64.074,56.507,29.93 +2020-09-29 21:45:00,75.2,62.826,56.507,29.93 +2020-09-29 22:00:00,71.1,61.318999999999996,50.728,29.93 +2020-09-29 22:15:00,70.7,60.165,50.728,29.93 +2020-09-29 22:30:00,67.54,51.342,50.728,29.93 +2020-09-29 22:45:00,65.87,47.714,50.728,29.93 +2020-09-29 23:00:00,77.01,44.299,43.556999999999995,29.93 +2020-09-29 23:15:00,80.01,43.45399999999999,43.556999999999995,29.93 +2020-09-29 23:30:00,80.68,43.519,43.556999999999995,29.93 +2020-09-29 23:45:00,80.11,42.897,43.556999999999995,29.93 +2020-09-30 00:00:00,75.35,42.93600000000001,41.151,29.93 +2020-09-30 00:15:00,78.11,43.623000000000005,41.151,29.93 +2020-09-30 00:30:00,79.8,43.541000000000004,41.151,29.93 +2020-09-30 00:45:00,81.56,43.416000000000004,41.151,29.93 +2020-09-30 01:00:00,76.14,43.457,37.763000000000005,29.93 +2020-09-30 01:15:00,75.09,43.004,37.763000000000005,29.93 +2020-09-30 01:30:00,75.45,42.298,37.763000000000005,29.93 +2020-09-30 01:45:00,80.02,41.433,37.763000000000005,29.93 +2020-09-30 02:00:00,79.63,41.788000000000004,35.615,29.93 +2020-09-30 02:15:00,78.9,41.925,35.615,29.93 +2020-09-30 02:30:00,76.86,42.18600000000001,35.615,29.93 +2020-09-30 02:45:00,78.72,42.895,35.615,29.93 +2020-09-30 03:00:00,81.85,44.765,35.153,29.93 +2020-09-30 03:15:00,81.74,45.086999999999996,35.153,29.93 +2020-09-30 03:30:00,82.99,45.126000000000005,35.153,29.93 +2020-09-30 03:45:00,83.55,45.383,35.153,29.93 +2020-09-30 04:00:00,88.62,53.961000000000006,36.203,29.93 +2020-09-30 04:15:00,91.38,62.516000000000005,36.203,29.93 +2020-09-30 04:30:00,94.94,61.042,36.203,29.93 +2020-09-30 04:45:00,97.42,62.28,36.203,29.93 +2020-09-30 05:00:00,103.8,85.005,39.922,29.93 +2020-09-30 05:15:00,107.95,103.689,39.922,29.93 +2020-09-30 05:30:00,110.12,97.321,39.922,29.93 +2020-09-30 05:45:00,113.38,90.678,39.922,29.93 +2020-09-30 06:00:00,119.1,90.37100000000001,56.443999999999996,29.93 +2020-09-30 06:15:00,117.38,93.279,56.443999999999996,29.93 +2020-09-30 06:30:00,119.12,91.594,56.443999999999996,29.93 +2020-09-30 06:45:00,120.5,92.615,56.443999999999996,29.93 +2020-09-30 07:00:00,123.29,92.118,68.683,29.93 +2020-09-30 07:15:00,121.03,94.00399999999999,68.683,29.93 +2020-09-30 07:30:00,122.13,93.398,68.683,29.93 +2020-09-30 07:45:00,120.93,93.84700000000001,68.683,29.93 +2020-09-30 08:00:00,117.66,90.37,59.003,29.93 +2020-09-30 08:15:00,117.3,91.08,59.003,29.93 +2020-09-30 08:30:00,116.66,89.5,59.003,29.93 +2020-09-30 08:45:00,116.56,89.633,59.003,29.93 +2020-09-30 09:00:00,115.38,84.096,56.21,29.93 +2020-09-30 09:15:00,115.67,82.101,56.21,29.93 +2020-09-30 09:30:00,115.08,82.85799999999999,56.21,29.93 +2020-09-30 09:45:00,114.96,82.81,56.21,29.93 +2020-09-30 10:00:00,115.1,80.25,52.358999999999995,29.93 +2020-09-30 10:15:00,116.5,79.81,52.358999999999995,29.93 +2020-09-30 10:30:00,113.95,79.10300000000001,52.358999999999995,29.93 +2020-09-30 10:45:00,112.23,79.183,52.358999999999995,29.93 +2020-09-30 11:00:00,108.77,77.523,51.161,29.93 +2020-09-30 11:15:00,108.69,78.23100000000001,51.161,29.93 +2020-09-30 11:30:00,109.39,78.536,51.161,29.93 +2020-09-30 11:45:00,108.48,78.013,51.161,29.93 +2020-09-30 12:00:00,104.28,75.219,49.119,29.93 +2020-09-30 12:15:00,106.05,74.836,49.119,29.93 +2020-09-30 12:30:00,104.62,74.258,49.119,29.93 +2020-09-30 12:45:00,103.69,74.71300000000001,49.119,29.93 +2020-09-30 13:00:00,102.95,74.086,49.187,29.93 +2020-09-30 13:15:00,102.97,74.237,49.187,29.93 +2020-09-30 13:30:00,103.28,73.165,49.187,29.93 +2020-09-30 13:45:00,103.85,72.581,49.187,29.93 +2020-09-30 14:00:00,104.84,72.49,49.787,29.93 +2020-09-30 14:15:00,104.58,72.35,49.787,29.93 +2020-09-30 14:30:00,105.13,71.645,49.787,29.93 +2020-09-30 14:45:00,105.67,71.917,49.787,29.93 +2020-09-30 15:00:00,105.44,71.477,51.458999999999996,29.93 +2020-09-30 15:15:00,106.06,70.44800000000001,51.458999999999996,29.93 +2020-09-30 15:30:00,106.29,70.362,51.458999999999996,29.93 +2020-09-30 15:45:00,107.58,69.31,51.458999999999996,29.93 +2020-09-30 16:00:00,110.43,70.0,53.663000000000004,29.93 +2020-09-30 16:15:00,109.91,69.711,53.663000000000004,29.93 +2020-09-30 16:30:00,111.8,70.28699999999999,53.663000000000004,29.93 +2020-09-30 16:45:00,113.95,68.777,53.663000000000004,29.93 +2020-09-30 17:00:00,117.7,69.568,58.183,29.93 +2020-09-30 17:15:00,116.19,71.06,58.183,29.93 +2020-09-30 17:30:00,119.57,70.767,58.183,29.93 +2020-09-30 17:45:00,120.66,71.14699999999999,58.183,29.93 +2020-09-30 18:00:00,122.31,70.935,60.141000000000005,29.93 +2020-09-30 18:15:00,120.45,70.704,60.141000000000005,29.93 +2020-09-30 18:30:00,121.29,69.597,60.141000000000005,29.93 +2020-09-30 18:45:00,119.4,73.52199999999999,60.141000000000005,29.93 +2020-09-30 19:00:00,116.88,73.491,60.582,29.93 +2020-09-30 19:15:00,115.1,72.325,60.582,29.93 +2020-09-30 19:30:00,111.94,71.613,60.582,29.93 +2020-09-30 19:45:00,110.07,71.71300000000001,60.582,29.93 +2020-09-30 20:00:00,104.26,70.03,66.61,29.93 +2020-09-30 20:15:00,105.15,68.417,66.61,29.93 +2020-09-30 20:30:00,101.51,66.757,66.61,29.93 +2020-09-30 20:45:00,102.47,65.836,66.61,29.93 +2020-09-30 21:00:00,96.11,64.15100000000001,57.658,29.93 +2020-09-30 21:15:00,94.9,65.348,57.658,29.93 +2020-09-30 21:30:00,93.22,64.42,57.658,29.93 +2020-09-30 21:45:00,94.05,63.138000000000005,57.658,29.93 +2020-09-30 22:00:00,89.15,61.61,51.81,29.93 +2020-09-30 22:15:00,86.92,60.433,51.81,29.93 +2020-09-30 22:30:00,83.39,51.606,51.81,29.93 +2020-09-30 22:45:00,81.96,47.983999999999995,51.81,29.93 +2020-09-30 23:00:00,72.81,44.608999999999995,42.93600000000001,29.93 +2020-09-30 23:15:00,74.96,43.731,42.93600000000001,29.93 +2020-09-30 23:30:00,74.25,43.799,42.93600000000001,29.93 +2020-09-30 23:45:00,77.92,43.177,42.93600000000001,29.93 +2020-10-01 00:00:00,74.36,48.013000000000005,42.746,31.349 +2020-10-01 00:15:00,73.35,49.218999999999994,42.746,31.349 +2020-10-01 00:30:00,71.89,48.891000000000005,42.746,31.349 +2020-10-01 00:45:00,74.82,48.773,42.746,31.349 +2020-10-01 01:00:00,74.95,49.074,40.025999999999996,31.349 +2020-10-01 01:15:00,73.4,48.443000000000005,40.025999999999996,31.349 +2020-10-01 01:30:00,70.75,47.641000000000005,40.025999999999996,31.349 +2020-10-01 01:45:00,74.21,47.16,40.025999999999996,31.349 +2020-10-01 02:00:00,74.54,47.581,38.154,31.349 +2020-10-01 02:15:00,75.11,47.598,38.154,31.349 +2020-10-01 02:30:00,70.83,48.211000000000006,38.154,31.349 +2020-10-01 02:45:00,74.98,48.898999999999994,38.154,31.349 +2020-10-01 03:00:00,76.99,51.108999999999995,37.575,31.349 +2020-10-01 03:15:00,78.83,51.843,37.575,31.349 +2020-10-01 03:30:00,75.95,51.895,37.575,31.349 +2020-10-01 03:45:00,81.07,52.646,37.575,31.349 +2020-10-01 04:00:00,86.24,61.338,39.154,31.349 +2020-10-01 04:15:00,88.04,69.964,39.154,31.349 +2020-10-01 04:30:00,85.63,69.25,39.154,31.349 +2020-10-01 04:45:00,92.33,70.865,39.154,31.349 +2020-10-01 05:00:00,98.87,96.057,44.085,31.349 +2020-10-01 05:15:00,108.96,118.06,44.085,31.349 +2020-10-01 05:30:00,116.11,112.14200000000001,44.085,31.349 +2020-10-01 05:45:00,112.83,104.488,44.085,31.349 +2020-10-01 06:00:00,118.1,104.522,57.49,31.349 +2020-10-01 06:15:00,117.62,108.09299999999999,57.49,31.349 +2020-10-01 06:30:00,119.15,106.42200000000001,57.49,31.349 +2020-10-01 06:45:00,121.05,107.11200000000001,57.49,31.349 +2020-10-01 07:00:00,122.34,107.375,73.617,31.349 +2020-10-01 07:15:00,120.54,109.579,73.617,31.349 +2020-10-01 07:30:00,118.69,109.189,73.617,31.349 +2020-10-01 07:45:00,117.8,109.36,73.617,31.349 +2020-10-01 08:00:00,115.95,107.73899999999999,69.281,31.349 +2020-10-01 08:15:00,115.95,108.02799999999999,69.281,31.349 +2020-10-01 08:30:00,122.25,105.654,69.281,31.349 +2020-10-01 08:45:00,124.29,104.889,69.281,31.349 +2020-10-01 09:00:00,122.13,100.23700000000001,63.926,31.349 +2020-10-01 09:15:00,121.05,98.084,63.926,31.349 +2020-10-01 09:30:00,116.55,98.544,63.926,31.349 +2020-10-01 09:45:00,115.32,98.477,63.926,31.349 +2020-10-01 10:00:00,116.93,95.274,59.442,31.349 +2020-10-01 10:15:00,119.48,94.848,59.442,31.349 +2020-10-01 10:30:00,116.82,93.89399999999999,59.442,31.349 +2020-10-01 10:45:00,115.21,93.82700000000001,59.442,31.349 +2020-10-01 11:00:00,110.64,90.531,56.771,31.349 +2020-10-01 11:15:00,110.57,91.235,56.771,31.349 +2020-10-01 11:30:00,114.18,91.44200000000001,56.771,31.349 +2020-10-01 11:45:00,110.72,91.22200000000001,56.771,31.349 +2020-10-01 12:00:00,110.27,87.663,53.701,31.349 +2020-10-01 12:15:00,110.53,87.29899999999999,53.701,31.349 +2020-10-01 12:30:00,110.68,86.45700000000001,53.701,31.349 +2020-10-01 12:45:00,110.33,86.771,53.701,31.349 +2020-10-01 13:00:00,109.27,86.516,52.364,31.349 +2020-10-01 13:15:00,108.61,86.375,52.364,31.349 +2020-10-01 13:30:00,106.82,85.52,52.364,31.349 +2020-10-01 13:45:00,108.3,85.07799999999999,52.364,31.349 +2020-10-01 14:00:00,106.34,84.788,53.419,31.349 +2020-10-01 14:15:00,103.21,85.045,53.419,31.349 +2020-10-01 14:30:00,104.24,84.14200000000001,53.419,31.349 +2020-10-01 14:45:00,101.78,84.021,53.419,31.349 +2020-10-01 15:00:00,102.18,84.177,56.744,31.349 +2020-10-01 15:15:00,105.7,83.725,56.744,31.349 +2020-10-01 15:30:00,109.3,83.95100000000001,56.744,31.349 +2020-10-01 15:45:00,112.38,83.89299999999999,56.744,31.349 +2020-10-01 16:00:00,110.92,83.941,60.458,31.349 +2020-10-01 16:15:00,110.81,83.338,60.458,31.349 +2020-10-01 16:30:00,115.07,84.031,60.458,31.349 +2020-10-01 16:45:00,114.72,82.064,60.458,31.349 +2020-10-01 17:00:00,119.03,82.493,66.295,31.349 +2020-10-01 17:15:00,116.61,83.67299999999999,66.295,31.349 +2020-10-01 17:30:00,118.16,83.4,66.295,31.349 +2020-10-01 17:45:00,121.44,84.021,66.295,31.349 +2020-10-01 18:00:00,125.72,83.735,68.468,31.349 +2020-10-01 18:15:00,122.88,83.59700000000001,68.468,31.349 +2020-10-01 18:30:00,124.48,82.62799999999999,68.468,31.349 +2020-10-01 18:45:00,119.47,86.285,68.468,31.349 +2020-10-01 19:00:00,116.32,86.665,66.39399999999999,31.349 +2020-10-01 19:15:00,113.44,85.539,66.39399999999999,31.349 +2020-10-01 19:30:00,108.44,85.01100000000001,66.39399999999999,31.349 +2020-10-01 19:45:00,109.78,85.054,66.39399999999999,31.349 +2020-10-01 20:00:00,106.35,84.295,63.183,31.349 +2020-10-01 20:15:00,108.46,82.07799999999999,63.183,31.349 +2020-10-01 20:30:00,106.1,81.286,63.183,31.349 +2020-10-01 20:45:00,101.39,80.277,63.183,31.349 +2020-10-01 21:00:00,93.83,78.27,55.133,31.349 +2020-10-01 21:15:00,92.88,78.835,55.133,31.349 +2020-10-01 21:30:00,91.65,77.945,55.133,31.349 +2020-10-01 21:45:00,92.82,76.352,55.133,31.349 +2020-10-01 22:00:00,85.0,73.477,50.111999999999995,31.349 +2020-10-01 22:15:00,85.89,71.318,50.111999999999995,31.349 +2020-10-01 22:30:00,82.6,60.872,50.111999999999995,31.349 +2020-10-01 22:45:00,86.0,55.68899999999999,50.111999999999995,31.349 +2020-10-01 23:00:00,78.43,50.915,44.536,31.349 +2020-10-01 23:15:00,77.59,50.651,44.536,31.349 +2020-10-01 23:30:00,77.83,50.118,44.536,31.349 +2020-10-01 23:45:00,79.72,50.093999999999994,44.536,31.349 +2020-10-02 00:00:00,74.84,46.853,42.291000000000004,31.349 +2020-10-02 00:15:00,76.22,48.257,42.291000000000004,31.349 +2020-10-02 00:30:00,70.57,48.04,42.291000000000004,31.349 +2020-10-02 00:45:00,72.88,48.211000000000006,42.291000000000004,31.349 +2020-10-02 01:00:00,69.56,48.17,41.008,31.349 +2020-10-02 01:15:00,70.58,47.573,41.008,31.349 +2020-10-02 01:30:00,77.02,47.115,41.008,31.349 +2020-10-02 01:45:00,78.7,46.528999999999996,41.008,31.349 +2020-10-02 02:00:00,78.05,47.533,39.521,31.349 +2020-10-02 02:15:00,73.35,47.49,39.521,31.349 +2020-10-02 02:30:00,78.63,48.773,39.521,31.349 +2020-10-02 02:45:00,79.6,49.075,39.521,31.349 +2020-10-02 03:00:00,74.8,51.332,39.812,31.349 +2020-10-02 03:15:00,75.56,51.751000000000005,39.812,31.349 +2020-10-02 03:30:00,79.48,51.661,39.812,31.349 +2020-10-02 03:45:00,85.82,53.034,39.812,31.349 +2020-10-02 04:00:00,90.92,61.923,41.22,31.349 +2020-10-02 04:15:00,87.14,69.571,41.22,31.349 +2020-10-02 04:30:00,91.86,69.50399999999999,41.22,31.349 +2020-10-02 04:45:00,98.29,70.303,41.22,31.349 +2020-10-02 05:00:00,108.33,94.79799999999999,45.115,31.349 +2020-10-02 05:15:00,107.36,118.024,45.115,31.349 +2020-10-02 05:30:00,109.91,112.62,45.115,31.349 +2020-10-02 05:45:00,112.72,104.635,45.115,31.349 +2020-10-02 06:00:00,119.78,104.962,59.06100000000001,31.349 +2020-10-02 06:15:00,119.47,108.075,59.06100000000001,31.349 +2020-10-02 06:30:00,123.95,106.051,59.06100000000001,31.349 +2020-10-02 06:45:00,121.8,107.29899999999999,59.06100000000001,31.349 +2020-10-02 07:00:00,122.66,107.613,71.874,31.349 +2020-10-02 07:15:00,121.44,110.766,71.874,31.349 +2020-10-02 07:30:00,120.73,109.22200000000001,71.874,31.349 +2020-10-02 07:45:00,118.08,108.91799999999999,71.874,31.349 +2020-10-02 08:00:00,116.05,107.29700000000001,68.439,31.349 +2020-10-02 08:15:00,115.68,107.771,68.439,31.349 +2020-10-02 08:30:00,115.03,105.775,68.439,31.349 +2020-10-02 08:45:00,114.17,104.251,68.439,31.349 +2020-10-02 09:00:00,111.59,98.507,65.523,31.349 +2020-10-02 09:15:00,110.49,97.64299999999999,65.523,31.349 +2020-10-02 09:30:00,110.15,97.525,65.523,31.349 +2020-10-02 09:45:00,108.89,97.596,65.523,31.349 +2020-10-02 10:00:00,107.9,93.774,62.005,31.349 +2020-10-02 10:15:00,108.37,93.501,62.005,31.349 +2020-10-02 10:30:00,108.22,92.79,62.005,31.349 +2020-10-02 10:45:00,109.74,92.461,62.005,31.349 +2020-10-02 11:00:00,105.01,89.28200000000001,60.351000000000006,31.349 +2020-10-02 11:15:00,103.83,88.994,60.351000000000006,31.349 +2020-10-02 11:30:00,107.03,89.801,60.351000000000006,31.349 +2020-10-02 11:45:00,102.87,89.085,60.351000000000006,31.349 +2020-10-02 12:00:00,100.19,86.24,55.331,31.349 +2020-10-02 12:15:00,99.6,84.566,55.331,31.349 +2020-10-02 12:30:00,97.98,83.89200000000001,55.331,31.349 +2020-10-02 12:45:00,96.69,84.041,55.331,31.349 +2020-10-02 13:00:00,95.31,84.48899999999999,53.361999999999995,31.349 +2020-10-02 13:15:00,96.32,84.825,53.361999999999995,31.349 +2020-10-02 13:30:00,95.77,84.383,53.361999999999995,31.349 +2020-10-02 13:45:00,96.42,84.069,53.361999999999995,31.349 +2020-10-02 14:00:00,97.78,82.788,51.708,31.349 +2020-10-02 14:15:00,97.81,83.20100000000001,51.708,31.349 +2020-10-02 14:30:00,97.63,83.339,51.708,31.349 +2020-10-02 14:45:00,99.23,83.00299999999999,51.708,31.349 +2020-10-02 15:00:00,99.88,82.859,54.571000000000005,31.349 +2020-10-02 15:15:00,98.98,82.102,54.571000000000005,31.349 +2020-10-02 15:30:00,100.68,81.37100000000001,54.571000000000005,31.349 +2020-10-02 15:45:00,102.59,81.78399999999999,54.571000000000005,31.349 +2020-10-02 16:00:00,107.25,80.862,58.662,31.349 +2020-10-02 16:15:00,107.43,80.667,58.662,31.349 +2020-10-02 16:30:00,108.62,81.304,58.662,31.349 +2020-10-02 16:45:00,109.89,78.92399999999999,58.662,31.349 +2020-10-02 17:00:00,114.07,80.343,65.941,31.349 +2020-10-02 17:15:00,111.49,81.27,65.941,31.349 +2020-10-02 17:30:00,115.35,80.94800000000001,65.941,31.349 +2020-10-02 17:45:00,115.86,81.39699999999999,65.941,31.349 +2020-10-02 18:00:00,122.12,81.46300000000001,65.628,31.349 +2020-10-02 18:15:00,118.93,80.623,65.628,31.349 +2020-10-02 18:30:00,117.78,79.774,65.628,31.349 +2020-10-02 18:45:00,115.24,83.65299999999999,65.628,31.349 +2020-10-02 19:00:00,111.24,84.94,63.662,31.349 +2020-10-02 19:15:00,106.67,84.70299999999999,63.662,31.349 +2020-10-02 19:30:00,105.91,84.031,63.662,31.349 +2020-10-02 19:45:00,102.96,83.294,63.662,31.349 +2020-10-02 20:00:00,92.61,82.48899999999999,61.945,31.349 +2020-10-02 20:15:00,99.16,80.71600000000001,61.945,31.349 +2020-10-02 20:30:00,98.55,79.605,61.945,31.349 +2020-10-02 20:45:00,96.27,78.343,61.945,31.349 +2020-10-02 21:00:00,88.3,77.288,53.903,31.349 +2020-10-02 21:15:00,85.55,78.967,53.903,31.349 +2020-10-02 21:30:00,80.59,78.02,53.903,31.349 +2020-10-02 21:45:00,84.21,76.735,53.903,31.349 +2020-10-02 22:00:00,80.6,74.171,48.403999999999996,31.349 +2020-10-02 22:15:00,79.32,71.794,48.403999999999996,31.349 +2020-10-02 22:30:00,71.59,66.65899999999999,48.403999999999996,31.349 +2020-10-02 22:45:00,70.6,63.413000000000004,48.403999999999996,31.349 +2020-10-02 23:00:00,62.12,59.43899999999999,41.07,31.349 +2020-10-02 23:15:00,61.6,57.461999999999996,41.07,31.349 +2020-10-02 23:30:00,61.56,55.302,41.07,31.349 +2020-10-02 23:45:00,59.87,54.931000000000004,41.07,31.349 +2020-10-03 00:00:00,57.65,47.711000000000006,11.117,31.177 +2020-10-03 00:15:00,57.59,46.246,11.117,31.177 +2020-10-03 00:30:00,56.67,46.058,11.117,31.177 +2020-10-03 00:45:00,56.96,46.294,11.117,31.177 +2020-10-03 01:00:00,56.34,46.769,10.685,31.177 +2020-10-03 01:15:00,56.06,46.481,10.685,31.177 +2020-10-03 01:30:00,55.87,45.493,10.685,31.177 +2020-10-03 01:45:00,55.71,45.202,10.685,31.177 +2020-10-03 02:00:00,55.96,45.67,7.925,31.177 +2020-10-03 02:15:00,56.34,45.118,7.925,31.177 +2020-10-03 02:30:00,56.14,45.926,7.925,31.177 +2020-10-03 02:45:00,56.27,46.731,7.925,31.177 +2020-10-03 03:00:00,55.64,48.928000000000004,7.627999999999999,31.177 +2020-10-03 03:15:00,57.67,48.434,7.627999999999999,31.177 +2020-10-03 03:30:00,57.91,48.034,7.627999999999999,31.177 +2020-10-03 03:45:00,58.8,49.805,7.627999999999999,31.177 +2020-10-03 04:00:00,60.47,55.907,7.986000000000001,31.177 +2020-10-03 04:15:00,59.42,61.435,7.986000000000001,31.177 +2020-10-03 04:30:00,59.0,60.357,7.986000000000001,31.177 +2020-10-03 04:45:00,58.38,60.965,7.986000000000001,31.177 +2020-10-03 05:00:00,59.9,73.63,9.039,31.177 +2020-10-03 05:15:00,59.86,81.95299999999999,9.039,31.177 +2020-10-03 05:30:00,60.28,77.28,9.039,31.177 +2020-10-03 05:45:00,61.97,73.884,9.039,31.177 +2020-10-03 06:00:00,62.0,86.214,10.683,31.177 +2020-10-03 06:15:00,62.94,100.009,10.683,31.177 +2020-10-03 06:30:00,64.88,93.45,10.683,31.177 +2020-10-03 06:45:00,68.16,88.402,10.683,31.177 +2020-10-03 07:00:00,74.5,87.154,14.055,31.177 +2020-10-03 07:15:00,72.95,87.805,14.055,31.177 +2020-10-03 07:30:00,76.05,88.484,14.055,31.177 +2020-10-03 07:45:00,75.81,89.97200000000001,14.055,31.177 +2020-10-03 08:00:00,77.66,91.262,17.652,31.177 +2020-10-03 08:15:00,78.36,93.70299999999999,17.652,31.177 +2020-10-03 08:30:00,76.08,93.544,17.652,31.177 +2020-10-03 08:45:00,77.02,94.595,17.652,31.177 +2020-10-03 09:00:00,76.35,90.97,21.353,31.177 +2020-10-03 09:15:00,79.16,90.64,21.353,31.177 +2020-10-03 09:30:00,78.99,91.32799999999999,21.353,31.177 +2020-10-03 09:45:00,81.23,91.696,21.353,31.177 +2020-10-03 10:00:00,83.68,89.508,23.467,31.177 +2020-10-03 10:15:00,86.8,89.756,23.467,31.177 +2020-10-03 10:30:00,87.14,89.29700000000001,23.467,31.177 +2020-10-03 10:45:00,87.03,89.06,23.467,31.177 +2020-10-03 11:00:00,82.41,86.065,24.539,31.177 +2020-10-03 11:15:00,82.83,85.729,24.539,31.177 +2020-10-03 11:30:00,76.93,86.07799999999999,24.539,31.177 +2020-10-03 11:45:00,78.79,85.66799999999999,24.539,31.177 +2020-10-03 12:00:00,74.79,82.721,21.488000000000003,31.177 +2020-10-03 12:15:00,72.19,82.29799999999999,21.488000000000003,31.177 +2020-10-03 12:30:00,59.91,81.195,21.488000000000003,31.177 +2020-10-03 12:45:00,62.91,80.593,21.488000000000003,31.177 +2020-10-03 13:00:00,61.74,79.922,18.776,31.177 +2020-10-03 13:15:00,59.78,80.102,18.776,31.177 +2020-10-03 13:30:00,66.56,78.882,18.776,31.177 +2020-10-03 13:45:00,70.81,78.37899999999999,18.776,31.177 +2020-10-03 14:00:00,68.47,78.347,17.301,31.177 +2020-10-03 14:15:00,68.4,78.655,17.301,31.177 +2020-10-03 14:30:00,67.72,77.69800000000001,17.301,31.177 +2020-10-03 14:45:00,64.03,76.969,17.301,31.177 +2020-10-03 15:00:00,66.02,76.7,21.236,31.177 +2020-10-03 15:15:00,68.96,76.618,21.236,31.177 +2020-10-03 15:30:00,70.76,76.907,21.236,31.177 +2020-10-03 15:45:00,72.25,77.335,21.236,31.177 +2020-10-03 16:00:00,74.29,77.045,28.31,31.177 +2020-10-03 16:15:00,75.52,76.52199999999999,28.31,31.177 +2020-10-03 16:30:00,78.34,77.89699999999999,28.31,31.177 +2020-10-03 16:45:00,82.8,76.039,28.31,31.177 +2020-10-03 17:00:00,87.35,76.783,41.687,31.177 +2020-10-03 17:15:00,87.12,77.97,41.687,31.177 +2020-10-03 17:30:00,88.97,78.093,41.687,31.177 +2020-10-03 17:45:00,90.28,79.843,41.687,31.177 +2020-10-03 18:00:00,94.76,80.597,49.201,31.177 +2020-10-03 18:15:00,92.25,81.734,49.201,31.177 +2020-10-03 18:30:00,94.32,81.203,49.201,31.177 +2020-10-03 18:45:00,91.48,82.59100000000001,49.201,31.177 +2020-10-03 19:00:00,92.73,84.505,51.937,31.177 +2020-10-03 19:15:00,98.28,83.11,51.937,31.177 +2020-10-03 19:30:00,96.89,82.96,51.937,31.177 +2020-10-03 19:45:00,88.92,83.443,51.937,31.177 +2020-10-03 20:00:00,85.03,84.101,52.617,31.177 +2020-10-03 20:15:00,85.02,83.164,52.617,31.177 +2020-10-03 20:30:00,90.9,82.34700000000001,52.617,31.177 +2020-10-03 20:45:00,91.31,80.497,52.617,31.177 +2020-10-03 21:00:00,85.41,78.417,46.238,31.177 +2020-10-03 21:15:00,84.03,79.649,46.238,31.177 +2020-10-03 21:30:00,86.88,79.069,46.238,31.177 +2020-10-03 21:45:00,86.4,77.541,46.238,31.177 +2020-10-03 22:00:00,81.78,76.17,48.275,31.177 +2020-10-03 22:15:00,78.99,73.67,48.275,31.177 +2020-10-03 22:30:00,80.17,69.319,48.275,31.177 +2020-10-03 22:45:00,79.39,65.98899999999999,48.275,31.177 +2020-10-03 23:00:00,55.75,61.363,38.071999999999996,31.177 +2020-10-03 23:15:00,57.09,60.38399999999999,38.071999999999996,31.177 +2020-10-03 23:30:00,53.87,58.913999999999994,38.071999999999996,31.177 +2020-10-03 23:45:00,56.4,58.196000000000005,38.071999999999996,31.177 +2020-10-04 00:00:00,53.94,48.018,28.229,31.177 +2020-10-04 00:15:00,54.47,46.545,28.229,31.177 +2020-10-04 00:30:00,52.62,46.365,28.229,31.177 +2020-10-04 00:45:00,53.51,46.6,28.229,31.177 +2020-10-04 01:00:00,50.25,47.07899999999999,25.669,31.177 +2020-10-04 01:15:00,52.39,46.812,25.669,31.177 +2020-10-04 01:30:00,51.82,45.841,25.669,31.177 +2020-10-04 01:45:00,51.72,45.548,25.669,31.177 +2020-10-04 02:00:00,51.1,46.023999999999994,24.948,31.177 +2020-10-04 02:15:00,52.15,45.488,24.948,31.177 +2020-10-04 02:30:00,51.41,46.276,24.948,31.177 +2020-10-04 02:45:00,50.99,47.077,24.948,31.177 +2020-10-04 03:00:00,52.2,49.261,24.445,31.177 +2020-10-04 03:15:00,51.81,48.788000000000004,24.445,31.177 +2020-10-04 03:30:00,52.33,48.39,24.445,31.177 +2020-10-04 03:45:00,53.15,50.145,24.445,31.177 +2020-10-04 04:00:00,53.33,56.275,25.839000000000002,31.177 +2020-10-04 04:15:00,53.92,61.833,25.839000000000002,31.177 +2020-10-04 04:30:00,54.43,60.755,25.839000000000002,31.177 +2020-10-04 04:45:00,54.79,61.372,25.839000000000002,31.177 +2020-10-04 05:00:00,57.04,74.122,26.803,31.177 +2020-10-04 05:15:00,56.99,82.527,26.803,31.177 +2020-10-04 05:30:00,58.51,77.84100000000001,26.803,31.177 +2020-10-04 05:45:00,59.57,74.402,26.803,31.177 +2020-10-04 06:00:00,60.65,86.709,28.147,31.177 +2020-10-04 06:15:00,59.54,100.521,28.147,31.177 +2020-10-04 06:30:00,61.12,93.97399999999999,28.147,31.177 +2020-10-04 06:45:00,61.43,88.93,28.147,31.177 +2020-10-04 07:00:00,66.21,87.679,31.116,31.177 +2020-10-04 07:15:00,65.25,88.34700000000001,31.116,31.177 +2020-10-04 07:30:00,64.85,89.059,31.116,31.177 +2020-10-04 07:45:00,65.24,90.551,31.116,31.177 +2020-10-04 08:00:00,63.88,91.851,35.739000000000004,31.177 +2020-10-04 08:15:00,66.44,94.265,35.739000000000004,31.177 +2020-10-04 08:30:00,70.93,94.132,35.739000000000004,31.177 +2020-10-04 08:45:00,67.85,95.15899999999999,35.739000000000004,31.177 +2020-10-04 09:00:00,66.06,91.535,39.455999999999996,31.177 +2020-10-04 09:15:00,67.28,91.199,39.455999999999996,31.177 +2020-10-04 09:30:00,70.83,91.869,39.455999999999996,31.177 +2020-10-04 09:45:00,77.44,92.211,39.455999999999996,31.177 +2020-10-04 10:00:00,78.19,90.01700000000001,41.343999999999994,31.177 +2020-10-04 10:15:00,81.74,90.225,41.343999999999994,31.177 +2020-10-04 10:30:00,83.73,89.74799999999999,41.343999999999994,31.177 +2020-10-04 10:45:00,84.45,89.494,41.343999999999994,31.177 +2020-10-04 11:00:00,83.31,86.509,43.645,31.177 +2020-10-04 11:15:00,81.0,86.15299999999999,43.645,31.177 +2020-10-04 11:30:00,79.77,86.50200000000001,43.645,31.177 +2020-10-04 11:45:00,79.1,86.075,43.645,31.177 +2020-10-04 12:00:00,75.39,83.105,39.796,31.177 +2020-10-04 12:15:00,75.42,82.67200000000001,39.796,31.177 +2020-10-04 12:30:00,74.51,81.604,39.796,31.177 +2020-10-04 12:45:00,74.31,80.998,39.796,31.177 +2020-10-04 13:00:00,73.03,80.295,36.343,31.177 +2020-10-04 13:15:00,72.61,80.479,36.343,31.177 +2020-10-04 13:30:00,73.42,79.259,36.343,31.177 +2020-10-04 13:45:00,73.96,78.757,36.343,31.177 +2020-10-04 14:00:00,72.48,78.671,33.162,31.177 +2020-10-04 14:15:00,72.19,78.99600000000001,33.162,31.177 +2020-10-04 14:30:00,73.52,78.075,33.162,31.177 +2020-10-04 14:45:00,73.96,77.342,33.162,31.177 +2020-10-04 15:00:00,74.74,77.039,33.215,31.177 +2020-10-04 15:15:00,74.08,76.976,33.215,31.177 +2020-10-04 15:30:00,74.78,77.30199999999999,33.215,31.177 +2020-10-04 15:45:00,76.21,77.745,33.215,31.177 +2020-10-04 16:00:00,78.09,77.42,37.385999999999996,31.177 +2020-10-04 16:15:00,79.1,76.916,37.385999999999996,31.177 +2020-10-04 16:30:00,80.57,78.28699999999999,37.385999999999996,31.177 +2020-10-04 16:45:00,82.81,76.484,37.385999999999996,31.177 +2020-10-04 17:00:00,87.51,77.188,46.618,31.177 +2020-10-04 17:15:00,86.86,78.395,46.618,31.177 +2020-10-04 17:30:00,92.1,78.51899999999999,46.618,31.177 +2020-10-04 17:45:00,89.55,80.29,46.618,31.177 +2020-10-04 18:00:00,95.29,81.03,50.111000000000004,31.177 +2020-10-04 18:15:00,88.95,82.15100000000001,50.111000000000004,31.177 +2020-10-04 18:30:00,91.01,81.631,50.111000000000004,31.177 +2020-10-04 18:45:00,87.31,83.012,50.111000000000004,31.177 +2020-10-04 19:00:00,86.3,84.939,50.25,31.177 +2020-10-04 19:15:00,84.42,83.538,50.25,31.177 +2020-10-04 19:30:00,83.14,83.38,50.25,31.177 +2020-10-04 19:45:00,81.46,83.845,50.25,31.177 +2020-10-04 20:00:00,77.95,84.52600000000001,44.265,31.177 +2020-10-04 20:15:00,79.6,83.583,44.265,31.177 +2020-10-04 20:30:00,77.92,82.73899999999999,44.265,31.177 +2020-10-04 20:45:00,78.85,80.859,44.265,31.177 +2020-10-04 21:00:00,77.61,78.781,39.717,31.177 +2020-10-04 21:15:00,77.95,80.00399999999999,39.717,31.177 +2020-10-04 21:30:00,75.4,79.433,39.717,31.177 +2020-10-04 21:45:00,75.62,77.875,39.717,31.177 +2020-10-04 22:00:00,72.93,76.492,39.224000000000004,31.177 +2020-10-04 22:15:00,72.3,73.969,39.224000000000004,31.177 +2020-10-04 22:30:00,69.94,69.63,39.224000000000004,31.177 +2020-10-04 22:45:00,69.71,66.307,39.224000000000004,31.177 +2020-10-04 23:00:00,65.21,61.708999999999996,33.518,31.177 +2020-10-04 23:15:00,66.43,60.7,33.518,31.177 +2020-10-04 23:30:00,65.32,59.232,33.518,31.177 +2020-10-04 23:45:00,65.1,58.507,33.518,31.177 +2020-10-05 00:00:00,66.33,50.821999999999996,34.301,31.349 +2020-10-05 00:15:00,64.68,50.945,34.301,31.349 +2020-10-05 00:30:00,63.44,50.6,34.301,31.349 +2020-10-05 00:45:00,65.02,50.398,34.301,31.349 +2020-10-05 01:00:00,64.78,51.103,34.143,31.349 +2020-10-05 01:15:00,64.46,50.661,34.143,31.349 +2020-10-05 01:30:00,64.07,49.93899999999999,34.143,31.349 +2020-10-05 01:45:00,64.5,49.631,34.143,31.349 +2020-10-05 02:00:00,63.51,50.364,33.650999999999996,31.349 +2020-10-05 02:15:00,65.03,49.815,33.650999999999996,31.349 +2020-10-05 02:30:00,65.36,50.809,33.650999999999996,31.349 +2020-10-05 02:45:00,66.21,51.282,33.650999999999996,31.349 +2020-10-05 03:00:00,69.64,54.224,32.599000000000004,31.349 +2020-10-05 03:15:00,74.23,54.818999999999996,32.599000000000004,31.349 +2020-10-05 03:30:00,75.31,54.718,32.599000000000004,31.349 +2020-10-05 03:45:00,73.63,55.974,32.599000000000004,31.349 +2020-10-05 04:00:00,76.43,65.589,33.785,31.349 +2020-10-05 04:15:00,77.8,74.464,33.785,31.349 +2020-10-05 04:30:00,89.37,73.941,33.785,31.349 +2020-10-05 04:45:00,95.43,74.844,33.785,31.349 +2020-10-05 05:00:00,102.6,97.568,41.285,31.349 +2020-10-05 05:15:00,101.26,119.60700000000001,41.285,31.349 +2020-10-05 05:30:00,105.1,114.088,41.285,31.349 +2020-10-05 05:45:00,112.77,106.70100000000001,41.285,31.349 +2020-10-05 06:00:00,116.26,106.459,60.486000000000004,31.349 +2020-10-05 06:15:00,116.2,109.37,60.486000000000004,31.349 +2020-10-05 06:30:00,117.92,108.182,60.486000000000004,31.349 +2020-10-05 06:45:00,120.49,109.552,60.486000000000004,31.349 +2020-10-05 07:00:00,124.95,109.79,74.012,31.349 +2020-10-05 07:15:00,123.49,112.266,74.012,31.349 +2020-10-05 07:30:00,122.31,112.215,74.012,31.349 +2020-10-05 07:45:00,122.8,112.87799999999999,74.012,31.349 +2020-10-05 08:00:00,122.15,111.291,69.569,31.349 +2020-10-05 08:15:00,123.81,112.141,69.569,31.349 +2020-10-05 08:30:00,125.38,109.84100000000001,69.569,31.349 +2020-10-05 08:45:00,126.19,109.616,69.569,31.349 +2020-10-05 09:00:00,123.98,105.119,66.152,31.349 +2020-10-05 09:15:00,123.63,102.352,66.152,31.349 +2020-10-05 09:30:00,123.4,102.083,66.152,31.349 +2020-10-05 09:45:00,125.12,101.262,66.152,31.349 +2020-10-05 10:00:00,124.46,99.031,62.923,31.349 +2020-10-05 10:15:00,127.71,98.98,62.923,31.349 +2020-10-05 10:30:00,127.77,97.86399999999999,62.923,31.349 +2020-10-05 10:45:00,125.66,97.073,62.923,31.349 +2020-10-05 11:00:00,120.69,93.165,61.522,31.349 +2020-10-05 11:15:00,117.37,93.73,61.522,31.349 +2020-10-05 11:30:00,112.63,95.04799999999999,61.522,31.349 +2020-10-05 11:45:00,108.66,94.689,61.522,31.349 +2020-10-05 12:00:00,102.98,91.74600000000001,58.632,31.349 +2020-10-05 12:15:00,103.41,91.36,58.632,31.349 +2020-10-05 12:30:00,100.84,89.89299999999999,58.632,31.349 +2020-10-05 12:45:00,101.8,89.97,58.632,31.349 +2020-10-05 13:00:00,100.62,89.954,59.06,31.349 +2020-10-05 13:15:00,100.28,89.065,59.06,31.349 +2020-10-05 13:30:00,100.19,87.693,59.06,31.349 +2020-10-05 13:45:00,100.01,87.664,59.06,31.349 +2020-10-05 14:00:00,100.8,86.809,59.791000000000004,31.349 +2020-10-05 14:15:00,101.96,87.161,59.791000000000004,31.349 +2020-10-05 14:30:00,103.14,85.947,59.791000000000004,31.349 +2020-10-05 14:45:00,104.3,86.251,59.791000000000004,31.349 +2020-10-05 15:00:00,107.02,86.544,61.148,31.349 +2020-10-05 15:15:00,104.62,85.551,61.148,31.349 +2020-10-05 15:30:00,105.02,85.93,61.148,31.349 +2020-10-05 15:45:00,104.28,85.939,61.148,31.349 +2020-10-05 16:00:00,105.06,86.02600000000001,66.009,31.349 +2020-10-05 16:15:00,106.92,85.244,66.009,31.349 +2020-10-05 16:30:00,109.95,85.84,66.009,31.349 +2020-10-05 16:45:00,111.32,83.586,66.009,31.349 +2020-10-05 17:00:00,116.22,83.50299999999999,73.683,31.349 +2020-10-05 17:15:00,114.24,84.52600000000001,73.683,31.349 +2020-10-05 17:30:00,117.49,84.211,73.683,31.349 +2020-10-05 17:45:00,122.2,85.152,73.683,31.349 +2020-10-05 18:00:00,125.09,85.385,72.848,31.349 +2020-10-05 18:15:00,121.39,84.57,72.848,31.349 +2020-10-05 18:30:00,120.7,83.915,72.848,31.349 +2020-10-05 18:45:00,118.89,87.323,72.848,31.349 +2020-10-05 19:00:00,119.68,88.385,71.139,31.349 +2020-10-05 19:15:00,117.11,87.249,71.139,31.349 +2020-10-05 19:30:00,112.56,87.075,71.139,31.349 +2020-10-05 19:45:00,108.13,86.844,71.139,31.349 +2020-10-05 20:00:00,101.98,85.89200000000001,69.667,31.349 +2020-10-05 20:15:00,101.73,84.719,69.667,31.349 +2020-10-05 20:30:00,97.75,83.385,69.667,31.349 +2020-10-05 20:45:00,97.25,82.257,69.667,31.349 +2020-10-05 21:00:00,93.19,80.05,61.166000000000004,31.349 +2020-10-05 21:15:00,97.6,81.041,61.166000000000004,31.349 +2020-10-05 21:30:00,94.2,80.37899999999999,61.166000000000004,31.349 +2020-10-05 21:45:00,93.44,78.468,61.166000000000004,31.349 +2020-10-05 22:00:00,85.58,74.764,52.772,31.349 +2020-10-05 22:15:00,82.71,72.807,52.772,31.349 +2020-10-05 22:30:00,81.05,62.21,52.772,31.349 +2020-10-05 22:45:00,84.7,56.94,52.772,31.349 +2020-10-05 23:00:00,82.54,52.706,45.136,31.349 +2020-10-05 23:15:00,82.36,51.802,45.136,31.349 +2020-10-05 23:30:00,74.67,51.42,45.136,31.349 +2020-10-05 23:45:00,79.64,51.446999999999996,45.136,31.349 +2020-10-06 00:00:00,78.11,49.55,47.35,31.349 +2020-10-06 00:15:00,81.09,50.716,47.35,31.349 +2020-10-06 00:30:00,75.23,50.428000000000004,47.35,31.349 +2020-10-06 00:45:00,74.03,50.303999999999995,47.35,31.349 +2020-10-06 01:00:00,70.95,50.623999999999995,43.424,31.349 +2020-10-06 01:15:00,79.65,50.096000000000004,43.424,31.349 +2020-10-06 01:30:00,79.59,49.382,43.424,31.349 +2020-10-06 01:45:00,78.21,48.891999999999996,43.424,31.349 +2020-10-06 02:00:00,72.09,49.352,41.778999999999996,31.349 +2020-10-06 02:15:00,78.09,49.449,41.778999999999996,31.349 +2020-10-06 02:30:00,79.6,49.968999999999994,41.778999999999996,31.349 +2020-10-06 02:45:00,79.98,50.633,41.778999999999996,31.349 +2020-10-06 03:00:00,79.25,52.776,40.771,31.349 +2020-10-06 03:15:00,82.62,53.61,40.771,31.349 +2020-10-06 03:30:00,83.6,53.68,40.771,31.349 +2020-10-06 03:45:00,83.88,54.345,40.771,31.349 +2020-10-06 04:00:00,83.35,63.176,41.816,31.349 +2020-10-06 04:15:00,89.08,71.957,41.816,31.349 +2020-10-06 04:30:00,94.83,71.24600000000001,41.816,31.349 +2020-10-06 04:45:00,100.98,72.905,41.816,31.349 +2020-10-06 05:00:00,99.83,98.514,45.842,31.349 +2020-10-06 05:15:00,101.8,120.931,45.842,31.349 +2020-10-06 05:30:00,108.7,114.943,45.842,31.349 +2020-10-06 05:45:00,110.57,107.079,45.842,31.349 +2020-10-06 06:00:00,117.91,106.995,59.12,31.349 +2020-10-06 06:15:00,116.24,110.652,59.12,31.349 +2020-10-06 06:30:00,118.48,109.045,59.12,31.349 +2020-10-06 06:45:00,119.02,109.751,59.12,31.349 +2020-10-06 07:00:00,123.59,110.00200000000001,70.33,31.349 +2020-10-06 07:15:00,121.19,112.28299999999999,70.33,31.349 +2020-10-06 07:30:00,117.92,112.06200000000001,70.33,31.349 +2020-10-06 07:45:00,117.6,112.25200000000001,70.33,31.349 +2020-10-06 08:00:00,114.16,110.685,67.788,31.349 +2020-10-06 08:15:00,114.34,110.84,67.788,31.349 +2020-10-06 08:30:00,118.79,108.587,67.788,31.349 +2020-10-06 08:45:00,121.22,107.713,67.788,31.349 +2020-10-06 09:00:00,113.61,103.059,62.622,31.349 +2020-10-06 09:15:00,114.17,100.876,62.622,31.349 +2020-10-06 09:30:00,117.63,101.25,62.622,31.349 +2020-10-06 09:45:00,116.96,101.04799999999999,62.622,31.349 +2020-10-06 10:00:00,111.74,97.815,60.887,31.349 +2020-10-06 10:15:00,115.0,97.189,60.887,31.349 +2020-10-06 10:30:00,113.09,96.147,60.887,31.349 +2020-10-06 10:45:00,113.9,95.99799999999999,60.887,31.349 +2020-10-06 11:00:00,115.53,92.74600000000001,59.812,31.349 +2020-10-06 11:15:00,116.95,93.359,59.812,31.349 +2020-10-06 11:30:00,115.24,93.559,59.812,31.349 +2020-10-06 11:45:00,109.97,93.256,59.812,31.349 +2020-10-06 12:00:00,105.42,89.58,56.614,31.349 +2020-10-06 12:15:00,102.97,89.16799999999999,56.614,31.349 +2020-10-06 12:30:00,103.1,88.50299999999999,56.614,31.349 +2020-10-06 12:45:00,106.67,88.796,56.614,31.349 +2020-10-06 13:00:00,103.21,88.37899999999999,56.824,31.349 +2020-10-06 13:15:00,101.73,88.26,56.824,31.349 +2020-10-06 13:30:00,102.74,87.40100000000001,56.824,31.349 +2020-10-06 13:45:00,104.36,86.963,56.824,31.349 +2020-10-06 14:00:00,104.47,86.411,57.623999999999995,31.349 +2020-10-06 14:15:00,105.34,86.749,57.623999999999995,31.349 +2020-10-06 14:30:00,104.12,86.022,57.623999999999995,31.349 +2020-10-06 14:45:00,104.25,85.884,57.623999999999995,31.349 +2020-10-06 15:00:00,104.24,85.866,59.724,31.349 +2020-10-06 15:15:00,105.47,85.515,59.724,31.349 +2020-10-06 15:30:00,105.21,85.925,59.724,31.349 +2020-10-06 15:45:00,107.87,85.944,59.724,31.349 +2020-10-06 16:00:00,110.19,85.816,61.64,31.349 +2020-10-06 16:15:00,113.18,85.307,61.64,31.349 +2020-10-06 16:30:00,112.84,85.98299999999999,61.64,31.349 +2020-10-06 16:45:00,115.02,84.288,61.64,31.349 +2020-10-06 17:00:00,119.5,84.516,68.962,31.349 +2020-10-06 17:15:00,116.33,85.795,68.962,31.349 +2020-10-06 17:30:00,121.99,85.531,68.962,31.349 +2020-10-06 17:45:00,123.39,86.258,68.962,31.349 +2020-10-06 18:00:00,127.05,85.90100000000001,69.149,31.349 +2020-10-06 18:15:00,122.1,85.682,69.149,31.349 +2020-10-06 18:30:00,121.85,84.766,69.149,31.349 +2020-10-06 18:45:00,120.37,88.39,69.149,31.349 +2020-10-06 19:00:00,118.45,88.83200000000001,68.832,31.349 +2020-10-06 19:15:00,118.71,87.679,68.832,31.349 +2020-10-06 19:30:00,115.61,87.10600000000001,68.832,31.349 +2020-10-06 19:45:00,112.12,87.06,68.832,31.349 +2020-10-06 20:00:00,100.95,86.41799999999999,66.403,31.349 +2020-10-06 20:15:00,100.94,84.17299999999999,66.403,31.349 +2020-10-06 20:30:00,98.55,83.243,66.403,31.349 +2020-10-06 20:45:00,98.12,82.089,66.403,31.349 +2020-10-06 21:00:00,91.59,80.08800000000001,57.352,31.349 +2020-10-06 21:15:00,90.82,80.605,57.352,31.349 +2020-10-06 21:30:00,87.87,79.758,57.352,31.349 +2020-10-06 21:45:00,90.21,78.021,57.352,31.349 +2020-10-06 22:00:00,90.01,75.087,51.148999999999994,31.349 +2020-10-06 22:15:00,89.32,72.814,51.148999999999994,31.349 +2020-10-06 22:30:00,85.07,62.431999999999995,51.148999999999994,31.349 +2020-10-06 22:45:00,83.99,57.276,51.148999999999994,31.349 +2020-10-06 23:00:00,78.1,52.643,41.8,31.349 +2020-10-06 23:15:00,82.01,52.229,41.8,31.349 +2020-10-06 23:30:00,84.4,51.70399999999999,41.8,31.349 +2020-10-06 23:45:00,87.64,51.651,41.8,31.349 +2020-10-07 00:00:00,80.25,49.86,42.269,31.349 +2020-10-07 00:15:00,80.19,51.019,42.269,31.349 +2020-10-07 00:30:00,81.39,50.736999999999995,42.269,31.349 +2020-10-07 00:45:00,86.62,50.611999999999995,42.269,31.349 +2020-10-07 01:00:00,82.23,50.937,38.527,31.349 +2020-10-07 01:15:00,79.29,50.428999999999995,38.527,31.349 +2020-10-07 01:30:00,81.05,49.733000000000004,38.527,31.349 +2020-10-07 01:45:00,83.23,49.24100000000001,38.527,31.349 +2020-10-07 02:00:00,83.52,49.708,36.393,31.349 +2020-10-07 02:15:00,82.09,49.821000000000005,36.393,31.349 +2020-10-07 02:30:00,79.19,50.321999999999996,36.393,31.349 +2020-10-07 02:45:00,79.81,50.982,36.393,31.349 +2020-10-07 03:00:00,86.92,53.113,36.167,31.349 +2020-10-07 03:15:00,87.2,53.966,36.167,31.349 +2020-10-07 03:30:00,88.26,54.038999999999994,36.167,31.349 +2020-10-07 03:45:00,86.31,54.68600000000001,36.167,31.349 +2020-10-07 04:00:00,94.04,63.54600000000001,38.092,31.349 +2020-10-07 04:15:00,97.41,72.358,38.092,31.349 +2020-10-07 04:30:00,98.81,71.648,38.092,31.349 +2020-10-07 04:45:00,98.37,73.316,38.092,31.349 +2020-10-07 05:00:00,104.2,99.01,42.268,31.349 +2020-10-07 05:15:00,110.49,121.51100000000001,42.268,31.349 +2020-10-07 05:30:00,112.99,115.508,42.268,31.349 +2020-10-07 05:45:00,120.34,107.602,42.268,31.349 +2020-10-07 06:00:00,123.12,107.494,60.158,31.349 +2020-10-07 06:15:00,115.11,111.17,60.158,31.349 +2020-10-07 06:30:00,121.4,109.574,60.158,31.349 +2020-10-07 06:45:00,121.67,110.28299999999999,60.158,31.349 +2020-10-07 07:00:00,123.41,110.53299999999999,74.792,31.349 +2020-10-07 07:15:00,121.71,112.82700000000001,74.792,31.349 +2020-10-07 07:30:00,121.33,112.64,74.792,31.349 +2020-10-07 07:45:00,119.53,112.833,74.792,31.349 +2020-10-07 08:00:00,115.82,111.277,70.499,31.349 +2020-10-07 08:15:00,116.66,111.404,70.499,31.349 +2020-10-07 08:30:00,116.5,109.17399999999999,70.499,31.349 +2020-10-07 08:45:00,116.09,108.279,70.499,31.349 +2020-10-07 09:00:00,113.61,103.625,68.892,31.349 +2020-10-07 09:15:00,113.03,101.435,68.892,31.349 +2020-10-07 09:30:00,112.32,101.794,68.892,31.349 +2020-10-07 09:45:00,113.24,101.564,68.892,31.349 +2020-10-07 10:00:00,113.52,98.324,66.88600000000001,31.349 +2020-10-07 10:15:00,116.01,97.65799999999999,66.88600000000001,31.349 +2020-10-07 10:30:00,112.9,96.59899999999999,66.88600000000001,31.349 +2020-10-07 10:45:00,113.01,96.432,66.88600000000001,31.349 +2020-10-07 11:00:00,110.74,93.19,66.187,31.349 +2020-10-07 11:15:00,107.17,93.78399999999999,66.187,31.349 +2020-10-07 11:30:00,106.12,93.98299999999999,66.187,31.349 +2020-10-07 11:45:00,106.28,93.664,66.187,31.349 +2020-10-07 12:00:00,103.85,89.963,62.18,31.349 +2020-10-07 12:15:00,104.47,89.54299999999999,62.18,31.349 +2020-10-07 12:30:00,103.29,88.913,62.18,31.349 +2020-10-07 12:45:00,104.27,89.20200000000001,62.18,31.349 +2020-10-07 13:00:00,103.01,88.75399999999999,62.23,31.349 +2020-10-07 13:15:00,102.19,88.63799999999999,62.23,31.349 +2020-10-07 13:30:00,102.91,87.77799999999999,62.23,31.349 +2020-10-07 13:45:00,103.83,87.34,62.23,31.349 +2020-10-07 14:00:00,104.04,86.73700000000001,63.721000000000004,31.349 +2020-10-07 14:15:00,103.67,87.09,63.721000000000004,31.349 +2020-10-07 14:30:00,102.78,86.399,63.721000000000004,31.349 +2020-10-07 14:45:00,102.93,86.258,63.721000000000004,31.349 +2020-10-07 15:00:00,104.88,86.205,66.523,31.349 +2020-10-07 15:15:00,108.17,85.874,66.523,31.349 +2020-10-07 15:30:00,106.16,86.321,66.523,31.349 +2020-10-07 15:45:00,106.9,86.355,66.523,31.349 +2020-10-07 16:00:00,110.44,86.19200000000001,69.679,31.349 +2020-10-07 16:15:00,110.4,85.70200000000001,69.679,31.349 +2020-10-07 16:30:00,112.36,86.374,69.679,31.349 +2020-10-07 16:45:00,114.77,84.734,69.679,31.349 +2020-10-07 17:00:00,117.12,84.92200000000001,75.04,31.349 +2020-10-07 17:15:00,116.68,86.22,75.04,31.349 +2020-10-07 17:30:00,121.96,85.959,75.04,31.349 +2020-10-07 17:45:00,123.54,86.70700000000001,75.04,31.349 +2020-10-07 18:00:00,125.9,86.336,75.915,31.349 +2020-10-07 18:15:00,122.45,86.101,75.915,31.349 +2020-10-07 18:30:00,122.89,85.197,75.915,31.349 +2020-10-07 18:45:00,119.42,88.81299999999999,75.915,31.349 +2020-10-07 19:00:00,114.78,89.26799999999999,74.66,31.349 +2020-10-07 19:15:00,112.06,88.11,74.66,31.349 +2020-10-07 19:30:00,107.91,87.527,74.66,31.349 +2020-10-07 19:45:00,108.91,87.464,74.66,31.349 +2020-10-07 20:00:00,101.7,86.845,71.204,31.349 +2020-10-07 20:15:00,104.07,84.595,71.204,31.349 +2020-10-07 20:30:00,101.57,83.637,71.204,31.349 +2020-10-07 20:45:00,99.17,82.454,71.204,31.349 +2020-10-07 21:00:00,94.53,80.454,61.052,31.349 +2020-10-07 21:15:00,94.88,80.96,61.052,31.349 +2020-10-07 21:30:00,96.49,80.123,61.052,31.349 +2020-10-07 21:45:00,95.82,78.357,61.052,31.349 +2020-10-07 22:00:00,91.81,75.411,54.691,31.349 +2020-10-07 22:15:00,85.9,73.115,54.691,31.349 +2020-10-07 22:30:00,83.52,62.748000000000005,54.691,31.349 +2020-10-07 22:45:00,79.93,57.597,54.691,31.349 +2020-10-07 23:00:00,76.11,52.993,45.18,31.349 +2020-10-07 23:15:00,76.08,52.548,45.18,31.349 +2020-10-07 23:30:00,75.38,52.023999999999994,45.18,31.349 +2020-10-07 23:45:00,79.99,51.966,45.18,31.349 +2020-10-08 00:00:00,79.69,50.172,42.746,31.349 +2020-10-08 00:15:00,79.41,51.321000000000005,42.746,31.349 +2020-10-08 00:30:00,77.72,51.048,42.746,31.349 +2020-10-08 00:45:00,77.1,50.92,42.746,31.349 +2020-10-08 01:00:00,77.16,51.248999999999995,40.025999999999996,31.349 +2020-10-08 01:15:00,79.65,50.761,40.025999999999996,31.349 +2020-10-08 01:30:00,78.99,50.083999999999996,40.025999999999996,31.349 +2020-10-08 01:45:00,73.79,49.59,40.025999999999996,31.349 +2020-10-08 02:00:00,79.29,50.065,38.154,31.349 +2020-10-08 02:15:00,80.26,50.193999999999996,38.154,31.349 +2020-10-08 02:30:00,78.95,50.676,38.154,31.349 +2020-10-08 02:45:00,76.08,51.33,38.154,31.349 +2020-10-08 03:00:00,75.33,53.449,37.575,31.349 +2020-10-08 03:15:00,82.42,54.321999999999996,37.575,31.349 +2020-10-08 03:30:00,84.01,54.4,37.575,31.349 +2020-10-08 03:45:00,86.07,55.028,37.575,31.349 +2020-10-08 04:00:00,84.0,63.916000000000004,39.154,31.349 +2020-10-08 04:15:00,90.23,72.76100000000001,39.154,31.349 +2020-10-08 04:30:00,94.69,72.051,39.154,31.349 +2020-10-08 04:45:00,97.5,73.727,39.154,31.349 +2020-10-08 05:00:00,97.92,99.507,44.085,31.349 +2020-10-08 05:15:00,101.71,122.09299999999999,44.085,31.349 +2020-10-08 05:30:00,107.92,116.074,44.085,31.349 +2020-10-08 05:45:00,111.57,108.126,44.085,31.349 +2020-10-08 06:00:00,116.78,107.995,57.49,31.349 +2020-10-08 06:15:00,114.86,111.68700000000001,57.49,31.349 +2020-10-08 06:30:00,114.18,110.105,57.49,31.349 +2020-10-08 06:45:00,118.63,110.81700000000001,57.49,31.349 +2020-10-08 07:00:00,120.92,111.065,73.617,31.349 +2020-10-08 07:15:00,119.12,113.374,73.617,31.349 +2020-10-08 07:30:00,117.33,113.219,73.617,31.349 +2020-10-08 07:45:00,116.58,113.415,73.617,31.349 +2020-10-08 08:00:00,115.2,111.869,69.281,31.349 +2020-10-08 08:15:00,114.49,111.969,69.281,31.349 +2020-10-08 08:30:00,113.74,109.76299999999999,69.281,31.349 +2020-10-08 08:45:00,113.82,108.845,69.281,31.349 +2020-10-08 09:00:00,111.25,104.189,63.926,31.349 +2020-10-08 09:15:00,110.51,101.995,63.926,31.349 +2020-10-08 09:30:00,110.18,102.336,63.926,31.349 +2020-10-08 09:45:00,110.35,102.079,63.926,31.349 +2020-10-08 10:00:00,108.45,98.833,59.442,31.349 +2020-10-08 10:15:00,109.67,98.12799999999999,59.442,31.349 +2020-10-08 10:30:00,108.62,97.05,59.442,31.349 +2020-10-08 10:45:00,107.19,96.867,59.442,31.349 +2020-10-08 11:00:00,105.31,93.634,56.771,31.349 +2020-10-08 11:15:00,106.63,94.209,56.771,31.349 +2020-10-08 11:30:00,106.21,94.40700000000001,56.771,31.349 +2020-10-08 11:45:00,108.79,94.072,56.771,31.349 +2020-10-08 12:00:00,101.41,90.34700000000001,53.701,31.349 +2020-10-08 12:15:00,101.81,89.917,53.701,31.349 +2020-10-08 12:30:00,99.91,89.323,53.701,31.349 +2020-10-08 12:45:00,100.67,89.609,53.701,31.349 +2020-10-08 13:00:00,99.91,89.12799999999999,52.364,31.349 +2020-10-08 13:15:00,100.85,89.016,52.364,31.349 +2020-10-08 13:30:00,99.77,88.156,52.364,31.349 +2020-10-08 13:45:00,102.06,87.71799999999999,52.364,31.349 +2020-10-08 14:00:00,101.66,87.06200000000001,53.419,31.349 +2020-10-08 14:15:00,102.04,87.431,53.419,31.349 +2020-10-08 14:30:00,101.37,86.77600000000001,53.419,31.349 +2020-10-08 14:45:00,102.03,86.632,53.419,31.349 +2020-10-08 15:00:00,102.38,86.545,56.744,31.349 +2020-10-08 15:15:00,106.15,86.235,56.744,31.349 +2020-10-08 15:30:00,105.14,86.71700000000001,56.744,31.349 +2020-10-08 15:45:00,106.58,86.766,56.744,31.349 +2020-10-08 16:00:00,108.41,86.568,60.458,31.349 +2020-10-08 16:15:00,109.23,86.09700000000001,60.458,31.349 +2020-10-08 16:30:00,111.33,86.765,60.458,31.349 +2020-10-08 16:45:00,112.69,85.179,60.458,31.349 +2020-10-08 17:00:00,117.22,85.32600000000001,66.295,31.349 +2020-10-08 17:15:00,114.98,86.646,66.295,31.349 +2020-10-08 17:30:00,121.72,86.387,66.295,31.349 +2020-10-08 17:45:00,122.79,87.156,66.295,31.349 +2020-10-08 18:00:00,124.63,86.772,68.468,31.349 +2020-10-08 18:15:00,124.71,86.521,68.468,31.349 +2020-10-08 18:30:00,121.3,85.62799999999999,68.468,31.349 +2020-10-08 18:45:00,120.86,89.238,68.468,31.349 +2020-10-08 19:00:00,121.84,89.704,66.39399999999999,31.349 +2020-10-08 19:15:00,118.99,88.54,66.39399999999999,31.349 +2020-10-08 19:30:00,110.25,87.949,66.39399999999999,31.349 +2020-10-08 19:45:00,112.82,87.868,66.39399999999999,31.349 +2020-10-08 20:00:00,104.39,87.273,63.183,31.349 +2020-10-08 20:15:00,104.11,85.01700000000001,63.183,31.349 +2020-10-08 20:30:00,96.44,84.031,63.183,31.349 +2020-10-08 20:45:00,97.74,82.82,63.183,31.349 +2020-10-08 21:00:00,95.47,80.82,55.133,31.349 +2020-10-08 21:15:00,94.29,81.316,55.133,31.349 +2020-10-08 21:30:00,88.11,80.48899999999999,55.133,31.349 +2020-10-08 21:45:00,94.31,78.695,55.133,31.349 +2020-10-08 22:00:00,86.54,75.735,50.111999999999995,31.349 +2020-10-08 22:15:00,84.64,73.417,50.111999999999995,31.349 +2020-10-08 22:30:00,84.73,63.065,50.111999999999995,31.349 +2020-10-08 22:45:00,80.12,57.919,50.111999999999995,31.349 +2020-10-08 23:00:00,82.03,53.343,44.536,31.349 +2020-10-08 23:15:00,83.35,52.867,44.536,31.349 +2020-10-08 23:30:00,82.16,52.345,44.536,31.349 +2020-10-08 23:45:00,78.69,52.281000000000006,44.536,31.349 +2020-10-09 00:00:00,78.1,49.02,42.291000000000004,31.349 +2020-10-09 00:15:00,79.85,50.364,42.291000000000004,31.349 +2020-10-09 00:30:00,79.77,50.202,42.291000000000004,31.349 +2020-10-09 00:45:00,76.69,50.361999999999995,42.291000000000004,31.349 +2020-10-09 01:00:00,73.43,50.349,41.008,31.349 +2020-10-09 01:15:00,80.07,49.895,41.008,31.349 +2020-10-09 01:30:00,78.35,49.56100000000001,41.008,31.349 +2020-10-09 01:45:00,75.18,48.961999999999996,41.008,31.349 +2020-10-09 02:00:00,76.68,50.022,39.521,31.349 +2020-10-09 02:15:00,74.18,50.09,39.521,31.349 +2020-10-09 02:30:00,79.65,51.242,39.521,31.349 +2020-10-09 02:45:00,79.83,51.511,39.521,31.349 +2020-10-09 03:00:00,80.63,53.677,39.812,31.349 +2020-10-09 03:15:00,76.92,54.235,39.812,31.349 +2020-10-09 03:30:00,78.86,54.17,39.812,31.349 +2020-10-09 03:45:00,81.09,55.42,39.812,31.349 +2020-10-09 04:00:00,87.69,64.506,41.22,31.349 +2020-10-09 04:15:00,90.33,72.376,41.22,31.349 +2020-10-09 04:30:00,89.24,72.312,41.22,31.349 +2020-10-09 04:45:00,95.09,73.171,41.22,31.349 +2020-10-09 05:00:00,107.98,98.257,45.115,31.349 +2020-10-09 05:15:00,110.72,122.072,45.115,31.349 +2020-10-09 05:30:00,111.56,116.56299999999999,45.115,31.349 +2020-10-09 05:45:00,111.91,108.28200000000001,45.115,31.349 +2020-10-09 06:00:00,119.82,108.445,59.06100000000001,31.349 +2020-10-09 06:15:00,118.17,111.68,59.06100000000001,31.349 +2020-10-09 06:30:00,118.58,109.745,59.06100000000001,31.349 +2020-10-09 06:45:00,120.01,111.014,59.06100000000001,31.349 +2020-10-09 07:00:00,122.14,111.315,71.874,31.349 +2020-10-09 07:15:00,120.54,114.571,71.874,31.349 +2020-10-09 07:30:00,118.81,113.26100000000001,71.874,31.349 +2020-10-09 07:45:00,118.12,112.98,71.874,31.349 +2020-10-09 08:00:00,116.07,111.43299999999999,68.439,31.349 +2020-10-09 08:15:00,113.32,111.71600000000001,68.439,31.349 +2020-10-09 08:30:00,113.35,109.887,68.439,31.349 +2020-10-09 08:45:00,116.44,108.208,68.439,31.349 +2020-10-09 09:00:00,120.09,102.461,65.523,31.349 +2020-10-09 09:15:00,119.56,101.556,65.523,31.349 +2020-10-09 09:30:00,119.2,101.32,65.523,31.349 +2020-10-09 09:45:00,120.05,101.2,65.523,31.349 +2020-10-09 10:00:00,118.05,97.335,62.005,31.349 +2020-10-09 10:15:00,120.4,96.78399999999999,62.005,31.349 +2020-10-09 10:30:00,117.17,95.949,62.005,31.349 +2020-10-09 10:45:00,113.01,95.501,62.005,31.349 +2020-10-09 11:00:00,109.41,92.38600000000001,60.351000000000006,31.349 +2020-10-09 11:15:00,112.78,91.969,60.351000000000006,31.349 +2020-10-09 11:30:00,116.56,92.76799999999999,60.351000000000006,31.349 +2020-10-09 11:45:00,115.51,91.935,60.351000000000006,31.349 +2020-10-09 12:00:00,112.96,88.92399999999999,55.331,31.349 +2020-10-09 12:15:00,112.0,87.18700000000001,55.331,31.349 +2020-10-09 12:30:00,109.13,86.762,55.331,31.349 +2020-10-09 12:45:00,106.59,86.881,55.331,31.349 +2020-10-09 13:00:00,98.34,87.105,53.361999999999995,31.349 +2020-10-09 13:15:00,98.84,87.469,53.361999999999995,31.349 +2020-10-09 13:30:00,99.07,87.02,53.361999999999995,31.349 +2020-10-09 13:45:00,99.93,86.71,53.361999999999995,31.349 +2020-10-09 14:00:00,99.24,85.06299999999999,51.708,31.349 +2020-10-09 14:15:00,99.81,85.588,51.708,31.349 +2020-10-09 14:30:00,100.03,85.976,51.708,31.349 +2020-10-09 14:45:00,101.58,85.617,51.708,31.349 +2020-10-09 15:00:00,101.74,85.23100000000001,54.571000000000005,31.349 +2020-10-09 15:15:00,104.75,84.615,54.571000000000005,31.349 +2020-10-09 15:30:00,101.76,84.139,54.571000000000005,31.349 +2020-10-09 15:45:00,104.43,84.66,54.571000000000005,31.349 +2020-10-09 16:00:00,106.95,83.49,58.662,31.349 +2020-10-09 16:15:00,108.48,83.429,58.662,31.349 +2020-10-09 16:30:00,109.76,84.04,58.662,31.349 +2020-10-09 16:45:00,111.36,82.041,58.662,31.349 +2020-10-09 17:00:00,113.98,83.177,65.941,31.349 +2020-10-09 17:15:00,116.0,84.243,65.941,31.349 +2020-10-09 17:30:00,116.08,83.93700000000001,65.941,31.349 +2020-10-09 17:45:00,120.05,84.536,65.941,31.349 +2020-10-09 18:00:00,122.43,84.505,65.628,31.349 +2020-10-09 18:15:00,118.95,83.552,65.628,31.349 +2020-10-09 18:30:00,120.14,82.779,65.628,31.349 +2020-10-09 18:45:00,116.46,86.61200000000001,65.628,31.349 +2020-10-09 19:00:00,110.08,87.984,63.662,31.349 +2020-10-09 19:15:00,107.3,87.711,63.662,31.349 +2020-10-09 19:30:00,102.67,86.975,63.662,31.349 +2020-10-09 19:45:00,102.52,86.115,63.662,31.349 +2020-10-09 20:00:00,94.57,85.47399999999999,61.945,31.349 +2020-10-09 20:15:00,92.41,83.66,61.945,31.349 +2020-10-09 20:30:00,93.56,82.355,61.945,31.349 +2020-10-09 20:45:00,88.21,80.892,61.945,31.349 +2020-10-09 21:00:00,83.31,79.843,53.903,31.349 +2020-10-09 21:15:00,83.13,81.453,53.903,31.349 +2020-10-09 21:30:00,83.95,80.569,53.903,31.349 +2020-10-09 21:45:00,86.18,79.085,53.903,31.349 +2020-10-09 22:00:00,80.94,76.436,48.403999999999996,31.349 +2020-10-09 22:15:00,79.92,73.9,48.403999999999996,31.349 +2020-10-09 22:30:00,73.84,68.861,48.403999999999996,31.349 +2020-10-09 22:45:00,69.3,65.65100000000001,48.403999999999996,31.349 +2020-10-09 23:00:00,66.03,61.873999999999995,41.07,31.349 +2020-10-09 23:15:00,66.63,59.684,41.07,31.349 +2020-10-09 23:30:00,71.33,57.535,41.07,31.349 +2020-10-09 23:45:00,72.04,57.123999999999995,41.07,31.349 +2020-10-10 00:00:00,68.05,48.924,38.989000000000004,31.177 +2020-10-10 00:15:00,66.03,48.18899999999999,38.989000000000004,31.177 +2020-10-10 00:30:00,63.47,48.287,38.989000000000004,31.177 +2020-10-10 00:45:00,70.67,48.302,38.989000000000004,31.177 +2020-10-10 01:00:00,68.97,48.708,35.275,31.177 +2020-10-10 01:15:00,68.98,48.229,35.275,31.177 +2020-10-10 01:30:00,62.64,47.24100000000001,35.275,31.177 +2020-10-10 01:45:00,63.19,47.28,35.275,31.177 +2020-10-10 02:00:00,60.49,48.051,32.838,31.177 +2020-10-10 02:15:00,67.91,47.53,32.838,31.177 +2020-10-10 02:30:00,68.09,47.768,32.838,31.177 +2020-10-10 02:45:00,61.18,48.528999999999996,32.838,31.177 +2020-10-10 03:00:00,60.57,50.135,32.418,31.177 +2020-10-10 03:15:00,60.96,49.832,32.418,31.177 +2020-10-10 03:30:00,60.75,49.342,32.418,31.177 +2020-10-10 03:45:00,61.33,51.481,32.418,31.177 +2020-10-10 04:00:00,63.26,57.9,32.099000000000004,31.177 +2020-10-10 04:15:00,62.9,64.293,32.099000000000004,31.177 +2020-10-10 04:30:00,62.36,62.413000000000004,32.099000000000004,31.177 +2020-10-10 04:45:00,64.21,63.248000000000005,32.099000000000004,31.177 +2020-10-10 05:00:00,67.64,77.72,32.926,31.177 +2020-10-10 05:15:00,68.34,87.98899999999999,32.926,31.177 +2020-10-10 05:30:00,67.96,83.508,32.926,31.177 +2020-10-10 05:45:00,69.98,79.889,32.926,31.177 +2020-10-10 06:00:00,70.7,93.516,35.069,31.177 +2020-10-10 06:15:00,73.22,107.594,35.069,31.177 +2020-10-10 06:30:00,74.31,101.949,35.069,31.177 +2020-10-10 06:45:00,77.52,97.90799999999999,35.069,31.177 +2020-10-10 07:00:00,79.57,95.572,40.906,31.177 +2020-10-10 07:15:00,80.64,97.601,40.906,31.177 +2020-10-10 07:30:00,80.5,98.264,40.906,31.177 +2020-10-10 07:45:00,81.73,100.09,40.906,31.177 +2020-10-10 08:00:00,80.79,100.335,46.603,31.177 +2020-10-10 08:15:00,80.92,101.959,46.603,31.177 +2020-10-10 08:30:00,80.69,100.809,46.603,31.177 +2020-10-10 08:45:00,79.3,100.93,46.603,31.177 +2020-10-10 09:00:00,80.93,97.544,49.935,31.177 +2020-10-10 09:15:00,78.7,97.215,49.935,31.177 +2020-10-10 09:30:00,77.39,97.61399999999999,49.935,31.177 +2020-10-10 09:45:00,77.01,97.289,49.935,31.177 +2020-10-10 10:00:00,75.49,93.726,47.585,31.177 +2020-10-10 10:15:00,76.27,93.39399999999999,47.585,31.177 +2020-10-10 10:30:00,75.48,92.43299999999999,47.585,31.177 +2020-10-10 10:45:00,75.32,92.353,47.585,31.177 +2020-10-10 11:00:00,73.13,89.22200000000001,43.376999999999995,31.177 +2020-10-10 11:15:00,72.55,88.932,43.376999999999995,31.177 +2020-10-10 11:30:00,69.49,89.382,43.376999999999995,31.177 +2020-10-10 11:45:00,71.73,88.456,43.376999999999995,31.177 +2020-10-10 12:00:00,67.21,85.07799999999999,40.855,31.177 +2020-10-10 12:15:00,65.23,84.057,40.855,31.177 +2020-10-10 12:30:00,64.52,83.74700000000001,40.855,31.177 +2020-10-10 12:45:00,64.43,83.87899999999999,40.855,31.177 +2020-10-10 13:00:00,62.06,83.459,37.251,31.177 +2020-10-10 13:15:00,63.54,82.611,37.251,31.177 +2020-10-10 13:30:00,64.24,82.051,37.251,31.177 +2020-10-10 13:45:00,65.9,81.27199999999999,37.251,31.177 +2020-10-10 14:00:00,65.04,80.149,38.548,31.177 +2020-10-10 14:15:00,65.98,79.81,38.548,31.177 +2020-10-10 14:30:00,67.11,79.18,38.548,31.177 +2020-10-10 14:45:00,68.17,79.163,38.548,31.177 +2020-10-10 15:00:00,68.93,79.266,42.883,31.177 +2020-10-10 15:15:00,68.68,79.398,42.883,31.177 +2020-10-10 15:30:00,70.26,79.771,42.883,31.177 +2020-10-10 15:45:00,73.92,79.848,42.883,31.177 +2020-10-10 16:00:00,76.34,79.433,48.143,31.177 +2020-10-10 16:15:00,80.43,79.315,48.143,31.177 +2020-10-10 16:30:00,82.57,80.018,48.143,31.177 +2020-10-10 16:45:00,81.96,78.45,48.143,31.177 +2020-10-10 17:00:00,87.07,78.757,55.25,31.177 +2020-10-10 17:15:00,85.61,79.41,55.25,31.177 +2020-10-10 17:30:00,93.1,78.993,55.25,31.177 +2020-10-10 17:45:00,93.78,79.703,55.25,31.177 +2020-10-10 18:00:00,94.81,80.311,57.506,31.177 +2020-10-10 18:15:00,93.4,81.016,57.506,31.177 +2020-10-10 18:30:00,95.37,81.557,57.506,31.177 +2020-10-10 18:45:00,92.73,82.074,57.506,31.177 +2020-10-10 19:00:00,86.72,83.03299999999999,55.528999999999996,31.177 +2020-10-10 19:15:00,83.84,81.98700000000001,55.528999999999996,31.177 +2020-10-10 19:30:00,81.98,81.98100000000001,55.528999999999996,31.177 +2020-10-10 19:45:00,80.54,82.01799999999999,55.528999999999996,31.177 +2020-10-10 20:00:00,77.04,82.738,46.166000000000004,31.177 +2020-10-10 20:15:00,76.13,81.439,46.166000000000004,31.177 +2020-10-10 20:30:00,75.51,79.47399999999999,46.166000000000004,31.177 +2020-10-10 20:45:00,73.93,78.848,46.166000000000004,31.177 +2020-10-10 21:00:00,71.35,77.916,40.406,31.177 +2020-10-10 21:15:00,70.87,79.498,40.406,31.177 +2020-10-10 21:30:00,66.41,79.23100000000001,40.406,31.177 +2020-10-10 21:45:00,65.71,77.248,40.406,31.177 +2020-10-10 22:00:00,61.42,75.122,39.616,31.177 +2020-10-10 22:15:00,62.07,73.71600000000001,39.616,31.177 +2020-10-10 22:30:00,59.56,71.013,39.616,31.177 +2020-10-10 22:45:00,58.47,68.78,39.616,31.177 +2020-10-10 23:00:00,54.74,65.638,32.205,31.177 +2020-10-10 23:15:00,54.08,62.986999999999995,32.205,31.177 +2020-10-10 23:30:00,55.19,61.508,32.205,31.177 +2020-10-10 23:45:00,53.38,60.303999999999995,32.205,31.177 +2020-10-11 00:00:00,50.93,50.198,28.229,31.177 +2020-10-11 00:15:00,51.94,48.662,28.229,31.177 +2020-10-11 00:30:00,50.97,48.536,28.229,31.177 +2020-10-11 00:45:00,51.87,48.757,28.229,31.177 +2020-10-11 01:00:00,49.67,49.263999999999996,25.669,31.177 +2020-10-11 01:15:00,51.23,49.141000000000005,25.669,31.177 +2020-10-11 01:30:00,50.66,48.294,25.669,31.177 +2020-10-11 01:45:00,51.05,47.988,25.669,31.177 +2020-10-11 02:00:00,51.26,48.52,24.948,31.177 +2020-10-11 02:15:00,50.24,48.092,24.948,31.177 +2020-10-11 02:30:00,49.75,48.754,24.948,31.177 +2020-10-11 02:45:00,49.74,49.521,24.948,31.177 +2020-10-11 03:00:00,49.25,51.614,24.445,31.177 +2020-10-11 03:15:00,50.7,51.281000000000006,24.445,31.177 +2020-10-11 03:30:00,51.34,50.907,24.445,31.177 +2020-10-11 03:45:00,51.61,52.536,24.445,31.177 +2020-10-11 04:00:00,52.83,58.86600000000001,25.839000000000002,31.177 +2020-10-11 04:15:00,53.93,64.65,25.839000000000002,31.177 +2020-10-11 04:30:00,53.84,63.577,25.839000000000002,31.177 +2020-10-11 04:45:00,54.0,64.253,25.839000000000002,31.177 +2020-10-11 05:00:00,56.26,77.597,26.803,31.177 +2020-10-11 05:15:00,56.25,86.6,26.803,31.177 +2020-10-11 05:30:00,56.59,81.8,26.803,31.177 +2020-10-11 05:45:00,54.83,78.065,26.803,31.177 +2020-10-11 06:00:00,60.32,90.211,28.147,31.177 +2020-10-11 06:15:00,59.82,104.145,28.147,31.177 +2020-10-11 06:30:00,62.29,97.684,28.147,31.177 +2020-10-11 06:45:00,63.34,92.662,28.147,31.177 +2020-10-11 07:00:00,65.28,91.40100000000001,31.116,31.177 +2020-10-11 07:15:00,66.84,92.166,31.116,31.177 +2020-10-11 07:30:00,67.06,93.11200000000001,31.116,31.177 +2020-10-11 07:45:00,67.82,94.62100000000001,31.116,31.177 +2020-10-11 08:00:00,66.65,95.993,35.739000000000004,31.177 +2020-10-11 08:15:00,66.05,98.213,35.739000000000004,31.177 +2020-10-11 08:30:00,64.97,98.24600000000001,35.739000000000004,31.177 +2020-10-11 08:45:00,64.71,99.119,35.739000000000004,31.177 +2020-10-11 09:00:00,62.3,95.48899999999999,39.455999999999996,31.177 +2020-10-11 09:15:00,61.87,95.111,39.455999999999996,31.177 +2020-10-11 09:30:00,61.94,95.667,39.455999999999996,31.177 +2020-10-11 09:45:00,63.26,95.81700000000001,39.455999999999996,31.177 +2020-10-11 10:00:00,63.21,93.579,41.343999999999994,31.177 +2020-10-11 10:15:00,63.71,93.508,41.343999999999994,31.177 +2020-10-11 10:30:00,64.26,92.906,41.343999999999994,31.177 +2020-10-11 10:45:00,63.77,92.535,41.343999999999994,31.177 +2020-10-11 11:00:00,60.7,89.61200000000001,43.645,31.177 +2020-10-11 11:15:00,59.98,89.12700000000001,43.645,31.177 +2020-10-11 11:30:00,57.95,89.469,43.645,31.177 +2020-10-11 11:45:00,60.21,88.926,43.645,31.177 +2020-10-11 12:00:00,56.47,85.79,39.796,31.177 +2020-10-11 12:15:00,53.94,85.294,39.796,31.177 +2020-10-11 12:30:00,52.59,84.475,39.796,31.177 +2020-10-11 12:45:00,54.32,83.84200000000001,39.796,31.177 +2020-10-11 13:00:00,49.62,82.914,36.343,31.177 +2020-10-11 13:15:00,51.08,83.12700000000001,36.343,31.177 +2020-10-11 13:30:00,51.24,81.898,36.343,31.177 +2020-10-11 13:45:00,52.47,81.398,36.343,31.177 +2020-10-11 14:00:00,52.86,80.949,33.162,31.177 +2020-10-11 14:15:00,54.18,81.385,33.162,31.177 +2020-10-11 14:30:00,54.72,80.714,33.162,31.177 +2020-10-11 14:45:00,57.08,79.959,33.162,31.177 +2020-10-11 15:00:00,61.5,79.414,33.215,31.177 +2020-10-11 15:15:00,61.01,79.492,33.215,31.177 +2020-10-11 15:30:00,61.52,80.07300000000001,33.215,31.177 +2020-10-11 15:45:00,64.89,80.623,33.215,31.177 +2020-10-11 16:00:00,69.86,80.05,37.385999999999996,31.177 +2020-10-11 16:15:00,73.5,79.68,37.385999999999996,31.177 +2020-10-11 16:30:00,72.54,81.023,37.385999999999996,31.177 +2020-10-11 16:45:00,77.12,79.60300000000001,37.385999999999996,31.177 +2020-10-11 17:00:00,81.3,80.021,46.618,31.177 +2020-10-11 17:15:00,82.78,81.369,46.618,31.177 +2020-10-11 17:30:00,89.15,81.513,46.618,31.177 +2020-10-11 17:45:00,88.39,83.434,46.618,31.177 +2020-10-11 18:00:00,91.86,84.07700000000001,50.111000000000004,31.177 +2020-10-11 18:15:00,89.54,85.089,50.111000000000004,31.177 +2020-10-11 18:30:00,91.48,84.645,50.111000000000004,31.177 +2020-10-11 18:45:00,86.46,85.98299999999999,50.111000000000004,31.177 +2020-10-11 19:00:00,81.58,87.99,50.25,31.177 +2020-10-11 19:15:00,87.47,86.554,50.25,31.177 +2020-10-11 19:30:00,87.65,86.333,50.25,31.177 +2020-10-11 19:45:00,84.98,86.675,50.25,31.177 +2020-10-11 20:00:00,82.24,87.521,44.265,31.177 +2020-10-11 20:15:00,88.55,86.537,44.265,31.177 +2020-10-11 20:30:00,87.01,85.499,44.265,31.177 +2020-10-11 20:45:00,88.49,83.41799999999999,44.265,31.177 +2020-10-11 21:00:00,79.77,81.342,39.717,31.177 +2020-10-11 21:15:00,77.18,82.494,39.717,31.177 +2020-10-11 21:30:00,75.52,81.98899999999999,39.717,31.177 +2020-10-11 21:45:00,74.79,80.236,39.717,31.177 +2020-10-11 22:00:00,70.87,78.767,39.224000000000004,31.177 +2020-10-11 22:15:00,77.05,76.087,39.224000000000004,31.177 +2020-10-11 22:30:00,76.79,71.846,39.224000000000004,31.177 +2020-10-11 22:45:00,77.47,68.562,39.224000000000004,31.177 +2020-10-11 23:00:00,67.29,64.157,33.518,31.177 +2020-10-11 23:15:00,67.19,62.933,33.518,31.177 +2020-10-11 23:30:00,72.95,61.476000000000006,33.518,31.177 +2020-10-11 23:45:00,73.21,60.711999999999996,33.518,31.177 +2020-10-12 00:00:00,70.94,53.006,34.301,31.349 +2020-10-12 00:15:00,68.42,53.067,34.301,31.349 +2020-10-12 00:30:00,68.11,52.773999999999994,34.301,31.349 +2020-10-12 00:45:00,72.11,52.558,34.301,31.349 +2020-10-12 01:00:00,70.36,53.288999999999994,34.143,31.349 +2020-10-12 01:15:00,68.12,52.99100000000001,34.143,31.349 +2020-10-12 01:30:00,65.37,52.393,34.143,31.349 +2020-10-12 01:45:00,69.82,52.073,34.143,31.349 +2020-10-12 02:00:00,69.15,52.861999999999995,33.650999999999996,31.349 +2020-10-12 02:15:00,70.12,52.422,33.650999999999996,31.349 +2020-10-12 02:30:00,66.23,53.29,33.650999999999996,31.349 +2020-10-12 02:45:00,70.36,53.729,33.650999999999996,31.349 +2020-10-12 03:00:00,72.15,56.57899999999999,32.599000000000004,31.349 +2020-10-12 03:15:00,72.16,57.313,32.599000000000004,31.349 +2020-10-12 03:30:00,69.17,57.236000000000004,32.599000000000004,31.349 +2020-10-12 03:45:00,76.19,58.367,32.599000000000004,31.349 +2020-10-12 04:00:00,82.36,68.183,33.785,31.349 +2020-10-12 04:15:00,85.74,77.285,33.785,31.349 +2020-10-12 04:30:00,84.49,76.767,33.785,31.349 +2020-10-12 04:45:00,89.3,77.73,33.785,31.349 +2020-10-12 05:00:00,101.52,101.051,41.285,31.349 +2020-10-12 05:15:00,106.64,123.691,41.285,31.349 +2020-10-12 05:30:00,106.95,118.056,41.285,31.349 +2020-10-12 05:45:00,106.85,110.37,41.285,31.349 +2020-10-12 06:00:00,115.15,109.96799999999999,60.486000000000004,31.349 +2020-10-12 06:15:00,115.95,113.00200000000001,60.486000000000004,31.349 +2020-10-12 06:30:00,115.89,111.90100000000001,60.486000000000004,31.349 +2020-10-12 06:45:00,118.2,113.29,60.486000000000004,31.349 +2020-10-12 07:00:00,121.53,113.51899999999999,74.012,31.349 +2020-10-12 07:15:00,122.2,116.09200000000001,74.012,31.349 +2020-10-12 07:30:00,118.03,116.274,74.012,31.349 +2020-10-12 07:45:00,116.52,116.95,74.012,31.349 +2020-10-12 08:00:00,114.57,115.436,69.569,31.349 +2020-10-12 08:15:00,114.1,116.088,69.569,31.349 +2020-10-12 08:30:00,114.31,113.955,69.569,31.349 +2020-10-12 08:45:00,116.52,113.573,69.569,31.349 +2020-10-12 09:00:00,111.0,109.07,66.152,31.349 +2020-10-12 09:15:00,110.6,106.264,66.152,31.349 +2020-10-12 09:30:00,110.4,105.881,66.152,31.349 +2020-10-12 09:45:00,110.21,104.867,66.152,31.349 +2020-10-12 10:00:00,109.5,102.59200000000001,62.923,31.349 +2020-10-12 10:15:00,116.29,102.26299999999999,62.923,31.349 +2020-10-12 10:30:00,112.61,101.021,62.923,31.349 +2020-10-12 10:45:00,114.5,100.115,62.923,31.349 +2020-10-12 11:00:00,111.52,96.26700000000001,61.522,31.349 +2020-10-12 11:15:00,115.75,96.70100000000001,61.522,31.349 +2020-10-12 11:30:00,110.56,98.014,61.522,31.349 +2020-10-12 11:45:00,105.29,97.54,61.522,31.349 +2020-10-12 12:00:00,103.06,94.429,58.632,31.349 +2020-10-12 12:15:00,103.27,93.98200000000001,58.632,31.349 +2020-10-12 12:30:00,99.5,92.764,58.632,31.349 +2020-10-12 12:45:00,102.59,92.81299999999999,58.632,31.349 +2020-10-12 13:00:00,103.02,92.575,59.06,31.349 +2020-10-12 13:15:00,104.16,91.713,59.06,31.349 +2020-10-12 13:30:00,101.81,90.331,59.06,31.349 +2020-10-12 13:45:00,102.12,90.304,59.06,31.349 +2020-10-12 14:00:00,104.85,89.085,59.791000000000004,31.349 +2020-10-12 14:15:00,111.72,89.54899999999999,59.791000000000004,31.349 +2020-10-12 14:30:00,108.5,88.586,59.791000000000004,31.349 +2020-10-12 14:45:00,107.1,88.87,59.791000000000004,31.349 +2020-10-12 15:00:00,107.33,88.921,61.148,31.349 +2020-10-12 15:15:00,107.86,88.06700000000001,61.148,31.349 +2020-10-12 15:30:00,108.23,88.7,61.148,31.349 +2020-10-12 15:45:00,110.3,88.81700000000001,61.148,31.349 +2020-10-12 16:00:00,111.96,88.654,66.009,31.349 +2020-10-12 16:15:00,114.55,88.006,66.009,31.349 +2020-10-12 16:30:00,114.39,88.575,66.009,31.349 +2020-10-12 16:45:00,116.45,86.70299999999999,66.009,31.349 +2020-10-12 17:00:00,117.5,86.335,73.683,31.349 +2020-10-12 17:15:00,116.77,87.499,73.683,31.349 +2020-10-12 17:30:00,118.94,87.204,73.683,31.349 +2020-10-12 17:45:00,119.82,88.29700000000001,73.683,31.349 +2020-10-12 18:00:00,121.77,88.435,72.848,31.349 +2020-10-12 18:15:00,121.95,87.51100000000001,72.848,31.349 +2020-10-12 18:30:00,119.5,86.93299999999999,72.848,31.349 +2020-10-12 18:45:00,116.12,90.29799999999999,72.848,31.349 +2020-10-12 19:00:00,110.92,91.43799999999999,71.139,31.349 +2020-10-12 19:15:00,106.85,90.26799999999999,71.139,31.349 +2020-10-12 19:30:00,103.85,90.03200000000001,71.139,31.349 +2020-10-12 19:45:00,107.99,89.679,71.139,31.349 +2020-10-12 20:00:00,105.84,88.89,69.667,31.349 +2020-10-12 20:15:00,105.89,87.679,69.667,31.349 +2020-10-12 20:30:00,98.58,86.147,69.667,31.349 +2020-10-12 20:45:00,96.33,84.819,69.667,31.349 +2020-10-12 21:00:00,91.25,82.61399999999999,61.166000000000004,31.349 +2020-10-12 21:15:00,90.87,83.53299999999999,61.166000000000004,31.349 +2020-10-12 21:30:00,91.81,82.939,61.166000000000004,31.349 +2020-10-12 21:45:00,92.26,80.832,61.166000000000004,31.349 +2020-10-12 22:00:00,88.19,77.041,52.772,31.349 +2020-10-12 22:15:00,87.73,74.929,52.772,31.349 +2020-10-12 22:30:00,87.11,64.431,52.772,31.349 +2020-10-12 22:45:00,87.25,59.202,52.772,31.349 +2020-10-12 23:00:00,79.67,55.16,45.136,31.349 +2020-10-12 23:15:00,78.21,54.04,45.136,31.349 +2020-10-12 23:30:00,80.76,53.67,45.136,31.349 +2020-10-12 23:45:00,81.41,53.657,45.136,31.349 +2020-10-13 00:00:00,73.81,51.739,47.35,31.349 +2020-10-13 00:15:00,72.3,52.842,47.35,31.349 +2020-10-13 00:30:00,74.12,52.604,47.35,31.349 +2020-10-13 00:45:00,77.97,52.465,47.35,31.349 +2020-10-13 01:00:00,75.1,52.812,43.424,31.349 +2020-10-13 01:15:00,74.15,52.428000000000004,43.424,31.349 +2020-10-13 01:30:00,75.85,51.838,43.424,31.349 +2020-10-13 01:45:00,77.72,51.335,43.424,31.349 +2020-10-13 02:00:00,77.58,51.851000000000006,41.778999999999996,31.349 +2020-10-13 02:15:00,75.84,52.056000000000004,41.778999999999996,31.349 +2020-10-13 02:30:00,75.85,52.452,41.778999999999996,31.349 +2020-10-13 02:45:00,75.3,53.08,41.778999999999996,31.349 +2020-10-13 03:00:00,79.74,55.13399999999999,40.771,31.349 +2020-10-13 03:15:00,78.15,56.108000000000004,40.771,31.349 +2020-10-13 03:30:00,75.52,56.201,40.771,31.349 +2020-10-13 03:45:00,75.48,56.739,40.771,31.349 +2020-10-13 04:00:00,77.47,65.77199999999999,41.816,31.349 +2020-10-13 04:15:00,82.06,74.781,41.816,31.349 +2020-10-13 04:30:00,90.51,74.07600000000001,41.816,31.349 +2020-10-13 04:45:00,97.73,75.794,41.816,31.349 +2020-10-13 05:00:00,105.85,102.00200000000001,45.842,31.349 +2020-10-13 05:15:00,102.75,125.023,45.842,31.349 +2020-10-13 05:30:00,106.37,118.916,45.842,31.349 +2020-10-13 05:45:00,110.98,110.75399999999999,45.842,31.349 +2020-10-13 06:00:00,119.85,110.51,59.12,31.349 +2020-10-13 06:15:00,119.21,114.292,59.12,31.349 +2020-10-13 06:30:00,118.8,112.76899999999999,59.12,31.349 +2020-10-13 06:45:00,121.82,113.495,59.12,31.349 +2020-10-13 07:00:00,123.79,113.73899999999999,70.33,31.349 +2020-10-13 07:15:00,123.79,116.11399999999999,70.33,31.349 +2020-10-13 07:30:00,123.33,116.124,70.33,31.349 +2020-10-13 07:45:00,123.65,116.325,70.33,31.349 +2020-10-13 08:00:00,123.2,114.829,67.788,31.349 +2020-10-13 08:15:00,123.26,114.786,67.788,31.349 +2020-10-13 08:30:00,124.04,112.699,67.788,31.349 +2020-10-13 08:45:00,124.33,111.66799999999999,67.788,31.349 +2020-10-13 09:00:00,122.91,107.008,62.622,31.349 +2020-10-13 09:15:00,121.43,104.785,62.622,31.349 +2020-10-13 09:30:00,119.64,105.04799999999999,62.622,31.349 +2020-10-13 09:45:00,119.0,104.652,62.622,31.349 +2020-10-13 10:00:00,118.75,101.374,60.887,31.349 +2020-10-13 10:15:00,118.55,100.47,60.887,31.349 +2020-10-13 10:30:00,116.94,99.303,60.887,31.349 +2020-10-13 10:45:00,119.41,99.036,60.887,31.349 +2020-10-13 11:00:00,113.99,95.845,59.812,31.349 +2020-10-13 11:15:00,112.18,96.32600000000001,59.812,31.349 +2020-10-13 11:30:00,114.67,96.523,59.812,31.349 +2020-10-13 11:45:00,109.79,96.10600000000001,59.812,31.349 +2020-10-13 12:00:00,105.65,92.26,56.614,31.349 +2020-10-13 12:15:00,104.47,91.789,56.614,31.349 +2020-10-13 12:30:00,103.49,91.37299999999999,56.614,31.349 +2020-10-13 12:45:00,102.45,91.63799999999999,56.614,31.349 +2020-10-13 13:00:00,102.46,91.0,56.824,31.349 +2020-10-13 13:15:00,105.71,90.90700000000001,56.824,31.349 +2020-10-13 13:30:00,106.9,90.038,56.824,31.349 +2020-10-13 13:45:00,109.76,89.601,56.824,31.349 +2020-10-13 14:00:00,110.65,88.68700000000001,57.623999999999995,31.349 +2020-10-13 14:15:00,111.37,89.135,57.623999999999995,31.349 +2020-10-13 14:30:00,111.33,88.661,57.623999999999995,31.349 +2020-10-13 14:45:00,111.96,88.50200000000001,57.623999999999995,31.349 +2020-10-13 15:00:00,111.31,88.243,59.724,31.349 +2020-10-13 15:15:00,107.85,88.03,59.724,31.349 +2020-10-13 15:30:00,108.03,88.694,59.724,31.349 +2020-10-13 15:45:00,111.58,88.821,59.724,31.349 +2020-10-13 16:00:00,111.54,88.443,61.64,31.349 +2020-10-13 16:15:00,111.16,88.069,61.64,31.349 +2020-10-13 16:30:00,113.67,88.71700000000001,61.64,31.349 +2020-10-13 16:45:00,116.95,87.404,61.64,31.349 +2020-10-13 17:00:00,118.92,87.344,68.962,31.349 +2020-10-13 17:15:00,119.99,88.766,68.962,31.349 +2020-10-13 17:30:00,122.98,88.524,68.962,31.349 +2020-10-13 17:45:00,123.02,89.40299999999999,68.962,31.349 +2020-10-13 18:00:00,123.95,88.95,69.149,31.349 +2020-10-13 18:15:00,123.41,88.626,69.149,31.349 +2020-10-13 18:30:00,120.16,87.787,69.149,31.349 +2020-10-13 18:45:00,119.43,91.367,69.149,31.349 +2020-10-13 19:00:00,114.42,91.887,68.832,31.349 +2020-10-13 19:15:00,112.4,90.699,68.832,31.349 +2020-10-13 19:30:00,115.3,90.065,68.832,31.349 +2020-10-13 19:45:00,110.17,89.897,68.832,31.349 +2020-10-13 20:00:00,100.53,89.419,66.403,31.349 +2020-10-13 20:15:00,101.98,87.134,66.403,31.349 +2020-10-13 20:30:00,100.14,86.008,66.403,31.349 +2020-10-13 20:45:00,100.17,84.654,66.403,31.349 +2020-10-13 21:00:00,98.31,82.654,57.352,31.349 +2020-10-13 21:15:00,99.67,83.098,57.352,31.349 +2020-10-13 21:30:00,94.62,82.321,57.352,31.349 +2020-10-13 21:45:00,94.12,80.389,57.352,31.349 +2020-10-13 22:00:00,86.01,77.366,51.148999999999994,31.349 +2020-10-13 22:15:00,88.4,74.939,51.148999999999994,31.349 +2020-10-13 22:30:00,85.44,64.658,51.148999999999994,31.349 +2020-10-13 22:45:00,86.13,59.544,51.148999999999994,31.349 +2020-10-13 23:00:00,77.28,55.103,41.8,31.349 +2020-10-13 23:15:00,80.43,54.472,41.8,31.349 +2020-10-13 23:30:00,81.88,53.957,41.8,31.349 +2020-10-13 23:45:00,80.49,53.865,41.8,31.349 +2020-10-14 00:00:00,73.56,52.053000000000004,42.269,31.349 +2020-10-14 00:15:00,77.84,53.146,42.269,31.349 +2020-10-14 00:30:00,78.77,52.915,42.269,31.349 +2020-10-14 00:45:00,79.64,52.773999999999994,42.269,31.349 +2020-10-14 01:00:00,73.44,53.123999999999995,38.527,31.349 +2020-10-14 01:15:00,70.94,52.76,38.527,31.349 +2020-10-14 01:30:00,68.57,52.188,38.527,31.349 +2020-10-14 01:45:00,76.68,51.684,38.527,31.349 +2020-10-14 02:00:00,78.54,52.208,36.393,31.349 +2020-10-14 02:15:00,78.33,52.428000000000004,36.393,31.349 +2020-10-14 02:30:00,74.42,52.806000000000004,36.393,31.349 +2020-10-14 02:45:00,75.3,53.431000000000004,36.393,31.349 +2020-10-14 03:00:00,80.29,55.471000000000004,36.167,31.349 +2020-10-14 03:15:00,82.02,56.465,36.167,31.349 +2020-10-14 03:30:00,80.68,56.562,36.167,31.349 +2020-10-14 03:45:00,79.09,57.08,36.167,31.349 +2020-10-14 04:00:00,83.44,66.143,38.092,31.349 +2020-10-14 04:15:00,90.73,75.185,38.092,31.349 +2020-10-14 04:30:00,92.79,74.482,38.092,31.349 +2020-10-14 04:45:00,97.44,76.208,38.092,31.349 +2020-10-14 05:00:00,100.81,102.50299999999999,42.268,31.349 +2020-10-14 05:15:00,104.2,125.611,42.268,31.349 +2020-10-14 05:30:00,107.8,119.486,42.268,31.349 +2020-10-14 05:45:00,107.29,111.281,42.268,31.349 +2020-10-14 06:00:00,119.76,111.015,60.158,31.349 +2020-10-14 06:15:00,120.14,114.814,60.158,31.349 +2020-10-14 06:30:00,119.69,113.304,60.158,31.349 +2020-10-14 06:45:00,121.56,114.03200000000001,60.158,31.349 +2020-10-14 07:00:00,125.08,114.275,74.792,31.349 +2020-10-14 07:15:00,123.17,116.663,74.792,31.349 +2020-10-14 07:30:00,121.58,116.706,74.792,31.349 +2020-10-14 07:45:00,120.8,116.906,74.792,31.349 +2020-10-14 08:00:00,118.68,115.421,70.499,31.349 +2020-10-14 08:15:00,118.45,115.34899999999999,70.499,31.349 +2020-10-14 08:30:00,117.08,113.28399999999999,70.499,31.349 +2020-10-14 08:45:00,117.25,112.23,70.499,31.349 +2020-10-14 09:00:00,115.59,107.568,68.892,31.349 +2020-10-14 09:15:00,114.95,105.34,68.892,31.349 +2020-10-14 09:30:00,114.97,105.587,68.892,31.349 +2020-10-14 09:45:00,113.19,105.165,68.892,31.349 +2020-10-14 10:00:00,112.69,101.88,66.88600000000001,31.349 +2020-10-14 10:15:00,113.46,100.93700000000001,66.88600000000001,31.349 +2020-10-14 10:30:00,111.52,99.751,66.88600000000001,31.349 +2020-10-14 10:45:00,111.35,99.469,66.88600000000001,31.349 +2020-10-14 11:00:00,109.19,96.285,66.187,31.349 +2020-10-14 11:15:00,108.97,96.74799999999999,66.187,31.349 +2020-10-14 11:30:00,109.66,96.945,66.187,31.349 +2020-10-14 11:45:00,107.61,96.51100000000001,66.187,31.349 +2020-10-14 12:00:00,105.62,92.641,62.18,31.349 +2020-10-14 12:15:00,107.74,92.162,62.18,31.349 +2020-10-14 12:30:00,102.93,91.781,62.18,31.349 +2020-10-14 12:45:00,105.05,92.044,62.18,31.349 +2020-10-14 13:00:00,103.94,91.37299999999999,62.23,31.349 +2020-10-14 13:15:00,104.45,91.285,62.23,31.349 +2020-10-14 13:30:00,103.05,90.414,62.23,31.349 +2020-10-14 13:45:00,104.96,89.976,62.23,31.349 +2020-10-14 14:00:00,105.25,89.01100000000001,63.721000000000004,31.349 +2020-10-14 14:15:00,105.9,89.475,63.721000000000004,31.349 +2020-10-14 14:30:00,106.58,89.037,63.721000000000004,31.349 +2020-10-14 14:45:00,106.09,88.876,63.721000000000004,31.349 +2020-10-14 15:00:00,106.28,88.58200000000001,66.523,31.349 +2020-10-14 15:15:00,106.7,88.389,66.523,31.349 +2020-10-14 15:30:00,107.34,89.088,66.523,31.349 +2020-10-14 15:45:00,109.23,89.23,66.523,31.349 +2020-10-14 16:00:00,110.31,88.816,69.679,31.349 +2020-10-14 16:15:00,111.71,88.462,69.679,31.349 +2020-10-14 16:30:00,113.73,89.105,69.679,31.349 +2020-10-14 16:45:00,116.27,87.84700000000001,69.679,31.349 +2020-10-14 17:00:00,121.1,87.74600000000001,75.04,31.349 +2020-10-14 17:15:00,119.15,89.189,75.04,31.349 +2020-10-14 17:30:00,125.29,88.95,75.04,31.349 +2020-10-14 17:45:00,126.05,89.851,75.04,31.349 +2020-10-14 18:00:00,126.68,89.385,75.915,31.349 +2020-10-14 18:15:00,123.93,89.046,75.915,31.349 +2020-10-14 18:30:00,123.69,88.21799999999999,75.915,31.349 +2020-10-14 18:45:00,120.41,91.794,75.915,31.349 +2020-10-14 19:00:00,120.5,92.323,74.66,31.349 +2020-10-14 19:15:00,119.72,91.131,74.66,31.349 +2020-10-14 19:30:00,116.45,90.488,74.66,31.349 +2020-10-14 19:45:00,107.96,90.303,74.66,31.349 +2020-10-14 20:00:00,107.34,89.848,71.204,31.349 +2020-10-14 20:15:00,109.49,87.55799999999999,71.204,31.349 +2020-10-14 20:30:00,100.41,86.404,71.204,31.349 +2020-10-14 20:45:00,104.83,85.022,71.204,31.349 +2020-10-14 21:00:00,93.46,83.021,61.052,31.349 +2020-10-14 21:15:00,92.85,83.454,61.052,31.349 +2020-10-14 21:30:00,93.83,82.68700000000001,61.052,31.349 +2020-10-14 21:45:00,95.35,80.72800000000001,61.052,31.349 +2020-10-14 22:00:00,90.21,77.693,54.691,31.349 +2020-10-14 22:15:00,86.19,75.244,54.691,31.349 +2020-10-14 22:30:00,79.18,64.979,54.691,31.349 +2020-10-14 22:45:00,83.68,59.871,54.691,31.349 +2020-10-14 23:00:00,81.26,55.456,45.18,31.349 +2020-10-14 23:15:00,82.45,54.794,45.18,31.349 +2020-10-14 23:30:00,76.29,54.28,45.18,31.349 +2020-10-14 23:45:00,79.49,54.183,45.18,31.349 +2020-10-15 00:00:00,78.17,52.367,42.746,31.349 +2020-10-15 00:15:00,79.69,53.452,42.746,31.349 +2020-10-15 00:30:00,76.7,53.227,42.746,31.349 +2020-10-15 00:45:00,80.0,53.082,42.746,31.349 +2020-10-15 01:00:00,77.04,53.437,40.025999999999996,31.349 +2020-10-15 01:15:00,76.62,53.093999999999994,40.025999999999996,31.349 +2020-10-15 01:30:00,72.38,52.538999999999994,40.025999999999996,31.349 +2020-10-15 01:45:00,72.39,52.033,40.025999999999996,31.349 +2020-10-15 02:00:00,75.25,52.565,38.154,31.349 +2020-10-15 02:15:00,79.25,52.799,38.154,31.349 +2020-10-15 02:30:00,80.42,53.161,38.154,31.349 +2020-10-15 02:45:00,76.0,53.781000000000006,38.154,31.349 +2020-10-15 03:00:00,78.42,55.809,37.575,31.349 +2020-10-15 03:15:00,81.16,56.821000000000005,37.575,31.349 +2020-10-15 03:30:00,82.38,56.92100000000001,37.575,31.349 +2020-10-15 03:45:00,80.84,57.42100000000001,37.575,31.349 +2020-10-15 04:00:00,86.29,66.514,39.154,31.349 +2020-10-15 04:15:00,91.49,75.59,39.154,31.349 +2020-10-15 04:30:00,94.3,74.887,39.154,31.349 +2020-10-15 04:45:00,97.08,76.622,39.154,31.349 +2020-10-15 05:00:00,98.74,103.00299999999999,44.085,31.349 +2020-10-15 05:15:00,105.55,126.2,44.085,31.349 +2020-10-15 05:30:00,107.13,120.055,44.085,31.349 +2020-10-15 05:45:00,111.73,111.80799999999999,44.085,31.349 +2020-10-15 06:00:00,119.93,111.52,57.49,31.349 +2020-10-15 06:15:00,118.79,115.337,57.49,31.349 +2020-10-15 06:30:00,120.03,113.837,57.49,31.349 +2020-10-15 06:45:00,122.37,114.57,57.49,31.349 +2020-10-15 07:00:00,124.75,114.81200000000001,73.617,31.349 +2020-10-15 07:15:00,124.91,117.212,73.617,31.349 +2020-10-15 07:30:00,125.12,117.286,73.617,31.349 +2020-10-15 07:45:00,121.11,117.48700000000001,73.617,31.349 +2020-10-15 08:00:00,118.19,116.01,69.281,31.349 +2020-10-15 08:15:00,117.96,115.90899999999999,69.281,31.349 +2020-10-15 08:30:00,122.14,113.867,69.281,31.349 +2020-10-15 08:45:00,122.14,112.792,69.281,31.349 +2020-10-15 09:00:00,120.75,108.12799999999999,63.926,31.349 +2020-10-15 09:15:00,121.83,105.895,63.926,31.349 +2020-10-15 09:30:00,123.0,106.12700000000001,63.926,31.349 +2020-10-15 09:45:00,123.77,105.677,63.926,31.349 +2020-10-15 10:00:00,117.9,102.385,59.442,31.349 +2020-10-15 10:15:00,119.2,101.40299999999999,59.442,31.349 +2020-10-15 10:30:00,115.6,100.199,59.442,31.349 +2020-10-15 10:45:00,114.68,99.9,59.442,31.349 +2020-10-15 11:00:00,111.42,96.72399999999999,56.771,31.349 +2020-10-15 11:15:00,110.71,97.169,56.771,31.349 +2020-10-15 11:30:00,111.45,97.36399999999999,56.771,31.349 +2020-10-15 11:45:00,110.73,96.916,56.771,31.349 +2020-10-15 12:00:00,108.08,93.021,53.701,31.349 +2020-10-15 12:15:00,108.8,92.53399999999999,53.701,31.349 +2020-10-15 12:30:00,106.76,92.189,53.701,31.349 +2020-10-15 12:45:00,106.52,92.447,53.701,31.349 +2020-10-15 13:00:00,106.01,91.74600000000001,52.364,31.349 +2020-10-15 13:15:00,105.75,91.661,52.364,31.349 +2020-10-15 13:30:00,107.45,90.788,52.364,31.349 +2020-10-15 13:45:00,110.96,90.34899999999999,52.364,31.349 +2020-10-15 14:00:00,110.78,89.334,53.419,31.349 +2020-10-15 14:15:00,109.56,89.81299999999999,53.419,31.349 +2020-10-15 14:30:00,111.28,89.411,53.419,31.349 +2020-10-15 14:45:00,109.87,89.24700000000001,53.419,31.349 +2020-10-15 15:00:00,111.22,88.921,56.744,31.349 +2020-10-15 15:15:00,111.54,88.74600000000001,56.744,31.349 +2020-10-15 15:30:00,111.77,89.48200000000001,56.744,31.349 +2020-10-15 15:45:00,113.05,89.63799999999999,56.744,31.349 +2020-10-15 16:00:00,116.56,89.189,60.458,31.349 +2020-10-15 16:15:00,120.2,88.854,60.458,31.349 +2020-10-15 16:30:00,122.91,89.492,60.458,31.349 +2020-10-15 16:45:00,122.73,88.289,60.458,31.349 +2020-10-15 17:00:00,126.75,88.146,66.295,31.349 +2020-10-15 17:15:00,126.46,89.611,66.295,31.349 +2020-10-15 17:30:00,128.48,89.376,66.295,31.349 +2020-10-15 17:45:00,124.9,90.3,66.295,31.349 +2020-10-15 18:00:00,127.14,89.82,68.468,31.349 +2020-10-15 18:15:00,123.0,89.46700000000001,68.468,31.349 +2020-10-15 18:30:00,124.51,88.649,68.468,31.349 +2020-10-15 18:45:00,120.83,92.22,68.468,31.349 +2020-10-15 19:00:00,114.09,92.759,66.39399999999999,31.349 +2020-10-15 19:15:00,112.02,91.56299999999999,66.39399999999999,31.349 +2020-10-15 19:30:00,107.14,90.911,66.39399999999999,31.349 +2020-10-15 19:45:00,113.12,90.709,66.39399999999999,31.349 +2020-10-15 20:00:00,108.37,90.277,63.183,31.349 +2020-10-15 20:15:00,108.7,87.98200000000001,63.183,31.349 +2020-10-15 20:30:00,99.66,86.8,63.183,31.349 +2020-10-15 20:45:00,101.56,85.389,63.183,31.349 +2020-10-15 21:00:00,93.27,83.387,55.133,31.349 +2020-10-15 21:15:00,93.41,83.809,55.133,31.349 +2020-10-15 21:30:00,93.15,83.053,55.133,31.349 +2020-10-15 21:45:00,94.83,81.067,55.133,31.349 +2020-10-15 22:00:00,90.93,78.02,50.111999999999995,31.349 +2020-10-15 22:15:00,84.87,75.54899999999999,50.111999999999995,31.349 +2020-10-15 22:30:00,80.83,65.3,50.111999999999995,31.349 +2020-10-15 22:45:00,85.9,60.198,50.111999999999995,31.349 +2020-10-15 23:00:00,83.4,55.809,44.536,31.349 +2020-10-15 23:15:00,83.04,55.11600000000001,44.536,31.349 +2020-10-15 23:30:00,78.5,54.603,44.536,31.349 +2020-10-15 23:45:00,78.94,54.5,44.536,31.349 +2020-10-16 00:00:00,78.53,56.543,42.291000000000004,31.349 +2020-10-16 00:15:00,80.34,58.228,42.291000000000004,31.349 +2020-10-16 00:30:00,75.11,57.871,42.291000000000004,31.349 +2020-10-16 00:45:00,78.3,57.95399999999999,42.291000000000004,31.349 +2020-10-16 01:00:00,77.43,58.34,41.008,31.349 +2020-10-16 01:15:00,79.28,57.986000000000004,41.008,31.349 +2020-10-16 01:30:00,77.29,57.566,41.008,31.349 +2020-10-16 01:45:00,76.13,57.258,41.008,31.349 +2020-10-16 02:00:00,78.43,58.57,39.521,31.349 +2020-10-16 02:15:00,78.48,58.61600000000001,39.521,31.349 +2020-10-16 02:30:00,76.3,59.912,39.521,31.349 +2020-10-16 02:45:00,72.93,60.25899999999999,39.521,31.349 +2020-10-16 03:00:00,75.99,62.902,39.812,31.349 +2020-10-16 03:15:00,78.35,63.992,39.812,31.349 +2020-10-16 03:30:00,83.32,64.1,39.812,31.349 +2020-10-16 03:45:00,87.67,65.527,39.812,31.349 +2020-10-16 04:00:00,86.71,75.56,41.22,31.349 +2020-10-16 04:15:00,87.83,84.14,41.22,31.349 +2020-10-16 04:30:00,93.37,84.585,41.22,31.349 +2020-10-16 04:45:00,97.81,85.63799999999999,41.22,31.349 +2020-10-16 05:00:00,105.43,113.375,45.115,31.349 +2020-10-16 05:15:00,108.97,139.797,45.115,31.349 +2020-10-16 05:30:00,110.44,134.631,45.115,31.349 +2020-10-16 05:45:00,116.33,125.77,45.115,31.349 +2020-10-16 06:00:00,121.67,125.60799999999999,59.06100000000001,31.349 +2020-10-16 06:15:00,121.67,129.158,59.06100000000001,31.349 +2020-10-16 06:30:00,123.2,127.425,59.06100000000001,31.349 +2020-10-16 06:45:00,125.24,128.667,59.06100000000001,31.349 +2020-10-16 07:00:00,129.04,129.357,71.874,31.349 +2020-10-16 07:15:00,129.43,132.971,71.874,31.349 +2020-10-16 07:30:00,129.86,132.234,71.874,31.349 +2020-10-16 07:45:00,129.09,131.789,71.874,31.349 +2020-10-16 08:00:00,129.38,131.43,68.439,31.349 +2020-10-16 08:15:00,130.59,131.24200000000002,68.439,31.349 +2020-10-16 08:30:00,135.1,129.144,68.439,31.349 +2020-10-16 08:45:00,135.29,126.51,68.439,31.349 +2020-10-16 09:00:00,133.1,121.61399999999999,65.523,31.349 +2020-10-16 09:15:00,134.37,120.37200000000001,65.523,31.349 +2020-10-16 09:30:00,133.1,119.85799999999999,65.523,31.349 +2020-10-16 09:45:00,136.75,119.541,65.523,31.349 +2020-10-16 10:00:00,133.64,115.68799999999999,62.005,31.349 +2020-10-16 10:15:00,134.38,115.005,62.005,31.349 +2020-10-16 10:30:00,133.95,113.708,62.005,31.349 +2020-10-16 10:45:00,134.02,113.04,62.005,31.349 +2020-10-16 11:00:00,132.18,109.76799999999999,60.351000000000006,31.349 +2020-10-16 11:15:00,131.6,109.25299999999999,60.351000000000006,31.349 +2020-10-16 11:30:00,132.82,110.32799999999999,60.351000000000006,31.349 +2020-10-16 11:45:00,132.96,110.382,60.351000000000006,31.349 +2020-10-16 12:00:00,127.23,107.589,55.331,31.349 +2020-10-16 12:15:00,125.71,105.316,55.331,31.349 +2020-10-16 12:30:00,122.7,105.105,55.331,31.349 +2020-10-16 12:45:00,120.88,105.475,55.331,31.349 +2020-10-16 13:00:00,119.13,106.29700000000001,53.361999999999995,31.349 +2020-10-16 13:15:00,118.48,106.384,53.361999999999995,31.349 +2020-10-16 13:30:00,117.76,105.999,53.361999999999995,31.349 +2020-10-16 13:45:00,117.81,105.741,53.361999999999995,31.349 +2020-10-16 14:00:00,116.71,104.645,51.708,31.349 +2020-10-16 14:15:00,115.79,104.56,51.708,31.349 +2020-10-16 14:30:00,116.75,104.74799999999999,51.708,31.349 +2020-10-16 14:45:00,114.09,104.55,51.708,31.349 +2020-10-16 15:00:00,111.63,103.62700000000001,54.571000000000005,31.349 +2020-10-16 15:15:00,111.74,103.186,54.571000000000005,31.349 +2020-10-16 15:30:00,111.8,102.095,54.571000000000005,31.349 +2020-10-16 15:45:00,112.85,102.43700000000001,54.571000000000005,31.349 +2020-10-16 16:00:00,116.73,102.41799999999999,58.662,31.349 +2020-10-16 16:15:00,115.35,103.176,58.662,31.349 +2020-10-16 16:30:00,120.57,103.56,58.662,31.349 +2020-10-16 16:45:00,121.41,101.693,58.662,31.349 +2020-10-16 17:00:00,125.43,103.272,65.941,31.349 +2020-10-16 17:15:00,124.15,103.835,65.941,31.349 +2020-10-16 17:30:00,126.8,103.678,65.941,31.349 +2020-10-16 17:45:00,124.08,103.572,65.941,31.349 +2020-10-16 18:00:00,125.15,105.102,65.628,31.349 +2020-10-16 18:15:00,120.47,104.225,65.628,31.349 +2020-10-16 18:30:00,119.06,103.037,65.628,31.349 +2020-10-16 18:45:00,118.12,106.52799999999999,65.628,31.349 +2020-10-16 19:00:00,111.76,108.321,63.662,31.349 +2020-10-16 19:15:00,108.6,107.913,63.662,31.349 +2020-10-16 19:30:00,107.6,106.984,63.662,31.349 +2020-10-16 19:45:00,105.8,105.885,63.662,31.349 +2020-10-16 20:00:00,105.65,102.874,61.945,31.349 +2020-10-16 20:15:00,104.08,100.425,61.945,31.349 +2020-10-16 20:30:00,97.94,99.93700000000001,61.945,31.349 +2020-10-16 20:45:00,91.95,98.415,61.945,31.349 +2020-10-16 21:00:00,89.11,95.71700000000001,53.903,31.349 +2020-10-16 21:15:00,85.85,96.61399999999999,53.903,31.349 +2020-10-16 21:30:00,82.94,95.831,53.903,31.349 +2020-10-16 21:45:00,80.74,93.97200000000001,53.903,31.349 +2020-10-16 22:00:00,77.43,89.986,48.403999999999996,31.349 +2020-10-16 22:15:00,76.58,86.50399999999999,48.403999999999996,31.349 +2020-10-16 22:30:00,73.82,80.395,48.403999999999996,31.349 +2020-10-16 22:45:00,73.45,76.143,48.403999999999996,31.349 +2020-10-16 23:00:00,75.53,70.91199999999999,41.07,31.349 +2020-10-16 23:15:00,75.35,69.029,41.07,31.349 +2020-10-16 23:30:00,75.46,66.437,41.07,31.349 +2020-10-16 23:45:00,67.11,66.324,41.07,31.349 +2020-10-17 00:00:00,64.47,56.047,38.989000000000004,31.177 +2020-10-17 00:15:00,67.85,55.284,38.989000000000004,31.177 +2020-10-17 00:30:00,69.98,55.373000000000005,38.989000000000004,31.177 +2020-10-17 00:45:00,71.35,55.461000000000006,38.989000000000004,31.177 +2020-10-17 01:00:00,65.24,56.316,35.275,31.177 +2020-10-17 01:15:00,64.34,55.773999999999994,35.275,31.177 +2020-10-17 01:30:00,64.87,54.731,35.275,31.177 +2020-10-17 01:45:00,69.92,54.907,35.275,31.177 +2020-10-17 02:00:00,67.08,56.114,32.838,31.177 +2020-10-17 02:15:00,64.62,55.611999999999995,32.838,31.177 +2020-10-17 02:30:00,62.67,55.968,32.838,31.177 +2020-10-17 02:45:00,62.07,56.736999999999995,32.838,31.177 +2020-10-17 03:00:00,61.8,59.028999999999996,32.418,31.177 +2020-10-17 03:15:00,61.68,59.211999999999996,32.418,31.177 +2020-10-17 03:30:00,62.25,58.705,32.418,31.177 +2020-10-17 03:45:00,62.17,60.88399999999999,32.418,31.177 +2020-10-17 04:00:00,63.27,68.046,32.099000000000004,31.177 +2020-10-17 04:15:00,63.3,74.992,32.099000000000004,31.177 +2020-10-17 04:30:00,63.92,73.575,32.099000000000004,31.177 +2020-10-17 04:45:00,65.08,74.53,32.099000000000004,31.177 +2020-10-17 05:00:00,68.03,90.771,32.926,31.177 +2020-10-17 05:15:00,68.43,102.831,32.926,31.177 +2020-10-17 05:30:00,69.72,98.57600000000001,32.926,31.177 +2020-10-17 05:45:00,72.43,94.47,32.926,31.177 +2020-10-17 06:00:00,75.18,108.464,35.069,31.177 +2020-10-17 06:15:00,75.93,123.736,35.069,31.177 +2020-10-17 06:30:00,77.23,118.042,35.069,31.177 +2020-10-17 06:45:00,80.22,113.37700000000001,35.069,31.177 +2020-10-17 07:00:00,83.39,111.169,40.906,31.177 +2020-10-17 07:15:00,84.09,113.566,40.906,31.177 +2020-10-17 07:30:00,85.78,114.92299999999999,40.906,31.177 +2020-10-17 07:45:00,87.06,116.913,40.906,31.177 +2020-10-17 08:00:00,87.85,118.645,46.603,31.177 +2020-10-17 08:15:00,88.48,120.234,46.603,31.177 +2020-10-17 08:30:00,88.17,118.999,46.603,31.177 +2020-10-17 08:45:00,89.51,118.406,46.603,31.177 +2020-10-17 09:00:00,88.81,115.679,49.935,31.177 +2020-10-17 09:15:00,91.01,115.045,49.935,31.177 +2020-10-17 09:30:00,92.06,115.214,49.935,31.177 +2020-10-17 09:45:00,91.72,114.764,49.935,31.177 +2020-10-17 10:00:00,86.24,111.156,47.585,31.177 +2020-10-17 10:15:00,83.34,110.669,47.585,31.177 +2020-10-17 10:30:00,82.45,109.304,47.585,31.177 +2020-10-17 10:45:00,81.32,109.196,47.585,31.177 +2020-10-17 11:00:00,79.02,105.931,43.376999999999995,31.177 +2020-10-17 11:15:00,79.49,105.35600000000001,43.376999999999995,31.177 +2020-10-17 11:30:00,76.81,105.913,43.376999999999995,31.177 +2020-10-17 11:45:00,81.02,105.679,43.376999999999995,31.177 +2020-10-17 12:00:00,75.69,102.375,40.855,31.177 +2020-10-17 12:15:00,78.67,100.795,40.855,31.177 +2020-10-17 12:30:00,77.84,100.75200000000001,40.855,31.177 +2020-10-17 12:45:00,75.43,100.959,40.855,31.177 +2020-10-17 13:00:00,74.06,101.12700000000001,37.251,31.177 +2020-10-17 13:15:00,75.51,99.822,37.251,31.177 +2020-10-17 13:30:00,76.5,99.24700000000001,37.251,31.177 +2020-10-17 13:45:00,76.49,98.74799999999999,37.251,31.177 +2020-10-17 14:00:00,73.63,98.32,38.548,31.177 +2020-10-17 14:15:00,76.38,97.464,38.548,31.177 +2020-10-17 14:30:00,77.84,96.46700000000001,38.548,31.177 +2020-10-17 14:45:00,80.65,96.57700000000001,38.548,31.177 +2020-10-17 15:00:00,81.45,96.179,42.883,31.177 +2020-10-17 15:15:00,81.41,96.49600000000001,42.883,31.177 +2020-10-17 15:30:00,83.3,96.42,42.883,31.177 +2020-10-17 15:45:00,84.57,96.435,42.883,31.177 +2020-10-17 16:00:00,85.25,96.794,48.143,31.177 +2020-10-17 16:15:00,84.79,97.71600000000001,48.143,31.177 +2020-10-17 16:30:00,86.19,98.15799999999999,48.143,31.177 +2020-10-17 16:45:00,89.26,96.83,48.143,31.177 +2020-10-17 17:00:00,95.62,97.73299999999999,55.25,31.177 +2020-10-17 17:15:00,96.78,98.31700000000001,55.25,31.177 +2020-10-17 17:30:00,101.35,98.053,55.25,31.177 +2020-10-17 17:45:00,99.12,97.947,55.25,31.177 +2020-10-17 18:00:00,101.19,99.876,57.506,31.177 +2020-10-17 18:15:00,98.31,100.652,57.506,31.177 +2020-10-17 18:30:00,99.49,100.771,57.506,31.177 +2020-10-17 18:45:00,95.84,100.971,57.506,31.177 +2020-10-17 19:00:00,89.41,102.62799999999999,55.528999999999996,31.177 +2020-10-17 19:15:00,87.46,101.51,55.528999999999996,31.177 +2020-10-17 19:30:00,85.9,101.3,55.528999999999996,31.177 +2020-10-17 19:45:00,84.72,100.851,55.528999999999996,31.177 +2020-10-17 20:00:00,80.41,99.40299999999999,46.166000000000004,31.177 +2020-10-17 20:15:00,80.37,97.781,46.166000000000004,31.177 +2020-10-17 20:30:00,79.26,96.693,46.166000000000004,31.177 +2020-10-17 20:45:00,77.14,95.757,46.166000000000004,31.177 +2020-10-17 21:00:00,73.18,93.601,40.406,31.177 +2020-10-17 21:15:00,72.29,94.561,40.406,31.177 +2020-10-17 21:30:00,70.67,94.51,40.406,31.177 +2020-10-17 21:45:00,69.52,92.175,40.406,31.177 +2020-10-17 22:00:00,66.37,88.87700000000001,39.616,31.177 +2020-10-17 22:15:00,65.35,86.779,39.616,31.177 +2020-10-17 22:30:00,63.44,83.772,39.616,31.177 +2020-10-17 22:45:00,62.35,80.665,39.616,31.177 +2020-10-17 23:00:00,58.53,76.434,32.205,31.177 +2020-10-17 23:15:00,56.67,73.855,32.205,31.177 +2020-10-17 23:30:00,56.68,71.44,32.205,31.177 +2020-10-17 23:45:00,56.38,70.208,32.205,31.177 +2020-10-18 00:00:00,52.9,57.243,28.229,31.177 +2020-10-18 00:15:00,53.22,55.765,28.229,31.177 +2020-10-18 00:30:00,52.88,55.606,28.229,31.177 +2020-10-18 00:45:00,53.61,55.98,28.229,31.177 +2020-10-18 01:00:00,51.32,56.903999999999996,25.669,31.177 +2020-10-18 01:15:00,52.64,56.831,25.669,31.177 +2020-10-18 01:30:00,51.62,55.996,25.669,31.177 +2020-10-18 01:45:00,51.85,55.832,25.669,31.177 +2020-10-18 02:00:00,51.91,56.717,24.948,31.177 +2020-10-18 02:15:00,52.54,56.151,24.948,31.177 +2020-10-18 02:30:00,52.65,56.998000000000005,24.948,31.177 +2020-10-18 02:45:00,52.06,57.849,24.948,31.177 +2020-10-18 03:00:00,51.53,60.59,24.445,31.177 +2020-10-18 03:15:00,52.25,60.667,24.445,31.177 +2020-10-18 03:30:00,52.4,60.486999999999995,24.445,31.177 +2020-10-18 03:45:00,52.91,62.228,24.445,31.177 +2020-10-18 04:00:00,54.69,69.267,25.839000000000002,31.177 +2020-10-18 04:15:00,55.62,75.545,25.839000000000002,31.177 +2020-10-18 04:30:00,56.31,74.807,25.839000000000002,31.177 +2020-10-18 04:45:00,56.9,75.675,25.839000000000002,31.177 +2020-10-18 05:00:00,58.65,90.402,26.803,31.177 +2020-10-18 05:15:00,58.63,101.00399999999999,26.803,31.177 +2020-10-18 05:30:00,59.14,96.463,26.803,31.177 +2020-10-18 05:45:00,57.88,92.30799999999999,26.803,31.177 +2020-10-18 06:00:00,62.76,105.06200000000001,28.147,31.177 +2020-10-18 06:15:00,63.62,119.914,28.147,31.177 +2020-10-18 06:30:00,63.69,113.374,28.147,31.177 +2020-10-18 06:45:00,65.7,107.73,28.147,31.177 +2020-10-18 07:00:00,70.03,106.82,31.116,31.177 +2020-10-18 07:15:00,71.46,108.045,31.116,31.177 +2020-10-18 07:30:00,71.58,109.411,31.116,31.177 +2020-10-18 07:45:00,72.74,111.01,31.116,31.177 +2020-10-18 08:00:00,71.27,113.97399999999999,35.739000000000004,31.177 +2020-10-18 08:15:00,71.83,116.021,35.739000000000004,31.177 +2020-10-18 08:30:00,71.64,116.059,35.739000000000004,31.177 +2020-10-18 08:45:00,73.24,116.448,35.739000000000004,31.177 +2020-10-18 09:00:00,73.13,113.434,39.455999999999996,31.177 +2020-10-18 09:15:00,75.2,112.875,39.455999999999996,31.177 +2020-10-18 09:30:00,75.81,113.135,39.455999999999996,31.177 +2020-10-18 09:45:00,78.43,113.03299999999999,39.455999999999996,31.177 +2020-10-18 10:00:00,74.81,110.97200000000001,41.343999999999994,31.177 +2020-10-18 10:15:00,75.06,110.79299999999999,41.343999999999994,31.177 +2020-10-18 10:30:00,75.48,109.82700000000001,41.343999999999994,31.177 +2020-10-18 10:45:00,76.1,109.087,41.343999999999994,31.177 +2020-10-18 11:00:00,75.4,106.171,43.645,31.177 +2020-10-18 11:15:00,70.54,105.47,43.645,31.177 +2020-10-18 11:30:00,68.91,105.75200000000001,43.645,31.177 +2020-10-18 11:45:00,69.28,105.943,43.645,31.177 +2020-10-18 12:00:00,69.75,102.689,39.796,31.177 +2020-10-18 12:15:00,67.11,101.93700000000001,39.796,31.177 +2020-10-18 12:30:00,67.36,101.18799999999999,39.796,31.177 +2020-10-18 12:45:00,69.13,100.594,39.796,31.177 +2020-10-18 13:00:00,64.24,100.186,36.343,31.177 +2020-10-18 13:15:00,62.42,100.39,36.343,31.177 +2020-10-18 13:30:00,63.26,99.26299999999999,36.343,31.177 +2020-10-18 13:45:00,63.85,98.81700000000001,36.343,31.177 +2020-10-18 14:00:00,61.41,98.94,33.162,31.177 +2020-10-18 14:15:00,61.03,98.955,33.162,31.177 +2020-10-18 14:30:00,62.69,98.22399999999999,33.162,31.177 +2020-10-18 14:45:00,64.11,97.681,33.162,31.177 +2020-10-18 15:00:00,66.4,96.44,33.215,31.177 +2020-10-18 15:15:00,66.52,96.898,33.215,31.177 +2020-10-18 15:30:00,68.51,97.12799999999999,33.215,31.177 +2020-10-18 15:45:00,71.34,97.664,33.215,31.177 +2020-10-18 16:00:00,75.08,98.287,37.385999999999996,31.177 +2020-10-18 16:15:00,76.81,98.823,37.385999999999996,31.177 +2020-10-18 16:30:00,79.34,99.815,37.385999999999996,31.177 +2020-10-18 16:45:00,83.18,98.639,37.385999999999996,31.177 +2020-10-18 17:00:00,89.98,99.574,46.618,31.177 +2020-10-18 17:15:00,92.24,100.639,46.618,31.177 +2020-10-18 17:30:00,94.57,100.874,46.618,31.177 +2020-10-18 17:45:00,94.81,102.181,46.618,31.177 +2020-10-18 18:00:00,98.0,104.02799999999999,50.111000000000004,31.177 +2020-10-18 18:15:00,94.97,105.304,50.111000000000004,31.177 +2020-10-18 18:30:00,93.21,104.22200000000001,50.111000000000004,31.177 +2020-10-18 18:45:00,91.12,105.446,50.111000000000004,31.177 +2020-10-18 19:00:00,88.83,107.86,50.25,31.177 +2020-10-18 19:15:00,92.4,106.557,50.25,31.177 +2020-10-18 19:30:00,93.45,106.14,50.25,31.177 +2020-10-18 19:45:00,92.2,106.221,50.25,31.177 +2020-10-18 20:00:00,82.79,104.83200000000001,44.265,31.177 +2020-10-18 20:15:00,85.44,103.654,44.265,31.177 +2020-10-18 20:30:00,87.59,103.538,44.265,31.177 +2020-10-18 20:45:00,91.02,101.215,44.265,31.177 +2020-10-18 21:00:00,88.07,97.631,39.717,31.177 +2020-10-18 21:15:00,83.42,98.124,39.717,31.177 +2020-10-18 21:30:00,80.07,97.94200000000001,39.717,31.177 +2020-10-18 21:45:00,83.72,95.816,39.717,31.177 +2020-10-18 22:00:00,81.94,92.81299999999999,39.224000000000004,31.177 +2020-10-18 22:15:00,82.38,89.552,39.224000000000004,31.177 +2020-10-18 22:30:00,77.0,84.719,39.224000000000004,31.177 +2020-10-18 22:45:00,77.52,80.611,39.224000000000004,31.177 +2020-10-18 23:00:00,75.69,74.82,33.518,31.177 +2020-10-18 23:15:00,75.04,73.737,33.518,31.177 +2020-10-18 23:30:00,72.22,71.502,33.518,31.177 +2020-10-18 23:45:00,70.95,70.789,33.518,31.177 +2020-10-19 00:00:00,72.57,60.35,34.301,31.349 +2020-10-19 00:15:00,72.05,60.687,34.301,31.349 +2020-10-19 00:30:00,71.7,60.415,34.301,31.349 +2020-10-19 00:45:00,68.05,60.333999999999996,34.301,31.349 +2020-10-19 01:00:00,63.81,61.445,34.143,31.349 +2020-10-19 01:15:00,70.57,61.14,34.143,31.349 +2020-10-19 01:30:00,73.46,60.521,34.143,31.349 +2020-10-19 01:45:00,73.96,60.363,34.143,31.349 +2020-10-19 02:00:00,69.68,61.452,33.650999999999996,31.349 +2020-10-19 02:15:00,71.16,61.118,33.650999999999996,31.349 +2020-10-19 02:30:00,74.31,62.191,33.650999999999996,31.349 +2020-10-19 02:45:00,75.73,62.668,33.650999999999996,31.349 +2020-10-19 03:00:00,74.19,66.23100000000001,32.599000000000004,31.349 +2020-10-19 03:15:00,76.4,67.46600000000001,32.599000000000004,31.349 +2020-10-19 03:30:00,80.44,67.487,32.599000000000004,31.349 +2020-10-19 03:45:00,82.75,68.72399999999999,32.599000000000004,31.349 +2020-10-19 04:00:00,83.01,79.33800000000001,33.785,31.349 +2020-10-19 04:15:00,86.46,89.04,33.785,31.349 +2020-10-19 04:30:00,93.16,89.11200000000001,33.785,31.349 +2020-10-19 04:45:00,99.61,90.245,33.785,31.349 +2020-10-19 05:00:00,103.97,115.891,41.285,31.349 +2020-10-19 05:15:00,106.86,141.102,41.285,31.349 +2020-10-19 05:30:00,111.68,135.92700000000002,41.285,31.349 +2020-10-19 05:45:00,123.4,127.571,41.285,31.349 +2020-10-19 06:00:00,130.7,127.085,60.486000000000004,31.349 +2020-10-19 06:15:00,123.9,130.441,60.486000000000004,31.349 +2020-10-19 06:30:00,124.3,129.692,60.486000000000004,31.349 +2020-10-19 06:45:00,125.37,130.83,60.486000000000004,31.349 +2020-10-19 07:00:00,128.39,131.643,74.012,31.349 +2020-10-19 07:15:00,126.92,134.558,74.012,31.349 +2020-10-19 07:30:00,124.7,135.17,74.012,31.349 +2020-10-19 07:45:00,123.89,135.63299999999998,74.012,31.349 +2020-10-19 08:00:00,122.1,135.503,69.569,31.349 +2020-10-19 08:15:00,120.91,135.888,69.569,31.349 +2020-10-19 08:30:00,123.72,133.418,69.569,31.349 +2020-10-19 08:45:00,126.6,132.155,69.569,31.349 +2020-10-19 09:00:00,123.28,128.308,66.152,31.349 +2020-10-19 09:15:00,122.26,125.132,66.152,31.349 +2020-10-19 09:30:00,120.9,124.45,66.152,31.349 +2020-10-19 09:45:00,122.7,123.491,66.152,31.349 +2020-10-19 10:00:00,123.26,121.242,62.923,31.349 +2020-10-19 10:15:00,123.92,120.78200000000001,62.923,31.349 +2020-10-19 10:30:00,124.65,119.12799999999999,62.923,31.349 +2020-10-19 10:45:00,121.74,118.13,62.923,31.349 +2020-10-19 11:00:00,111.45,113.977,61.522,31.349 +2020-10-19 11:15:00,111.72,114.376,61.522,31.349 +2020-10-19 11:30:00,111.64,115.708,61.522,31.349 +2020-10-19 11:45:00,114.51,115.85799999999999,61.522,31.349 +2020-10-19 12:00:00,109.18,113.042,58.632,31.349 +2020-10-19 12:15:00,109.27,112.32799999999999,58.632,31.349 +2020-10-19 12:30:00,119.09,111.34,58.632,31.349 +2020-10-19 12:45:00,120.49,111.61399999999999,58.632,31.349 +2020-10-19 13:00:00,121.81,111.93299999999999,59.06,31.349 +2020-10-19 13:15:00,123.36,111.008,59.06,31.349 +2020-10-19 13:30:00,124.18,109.641,59.06,31.349 +2020-10-19 13:45:00,123.73,109.555,59.06,31.349 +2020-10-19 14:00:00,128.78,108.941,59.791000000000004,31.349 +2020-10-19 14:15:00,127.05,108.83,59.791000000000004,31.349 +2020-10-19 14:30:00,122.62,107.762,59.791000000000004,31.349 +2020-10-19 14:45:00,122.32,107.991,59.791000000000004,31.349 +2020-10-19 15:00:00,121.8,107.624,61.148,31.349 +2020-10-19 15:15:00,124.23,107.045,61.148,31.349 +2020-10-19 15:30:00,120.17,107.131,61.148,31.349 +2020-10-19 15:45:00,122.07,107.24,61.148,31.349 +2020-10-19 16:00:00,125.4,108.13600000000001,66.009,31.349 +2020-10-19 16:15:00,122.23,108.296,66.009,31.349 +2020-10-19 16:30:00,123.96,108.48,66.009,31.349 +2020-10-19 16:45:00,124.66,106.705,66.009,31.349 +2020-10-19 17:00:00,132.19,106.90799999999999,73.683,31.349 +2020-10-19 17:15:00,128.75,107.635,73.683,31.349 +2020-10-19 17:30:00,131.94,107.412,73.683,31.349 +2020-10-19 17:45:00,128.27,107.76,73.683,31.349 +2020-10-19 18:00:00,132.72,109.30799999999999,72.848,31.349 +2020-10-19 18:15:00,126.09,108.596,72.848,31.349 +2020-10-19 18:30:00,127.58,107.54700000000001,72.848,31.349 +2020-10-19 18:45:00,123.85,110.50200000000001,72.848,31.349 +2020-10-19 19:00:00,120.43,111.916,71.139,31.349 +2020-10-19 19:15:00,112.13,110.569,71.139,31.349 +2020-10-19 19:30:00,108.57,110.238,71.139,31.349 +2020-10-19 19:45:00,108.74,109.59,71.139,31.349 +2020-10-19 20:00:00,106.01,106.426,69.667,31.349 +2020-10-19 20:15:00,109.28,104.56700000000001,69.667,31.349 +2020-10-19 20:30:00,106.18,103.68299999999999,69.667,31.349 +2020-10-19 20:45:00,100.16,102.28200000000001,69.667,31.349 +2020-10-19 21:00:00,94.21,98.705,61.166000000000004,31.349 +2020-10-19 21:15:00,95.43,98.78,61.166000000000004,31.349 +2020-10-19 21:30:00,96.14,98.366,61.166000000000004,31.349 +2020-10-19 21:45:00,94.59,95.859,61.166000000000004,31.349 +2020-10-19 22:00:00,89.3,90.444,52.772,31.349 +2020-10-19 22:15:00,84.72,87.365,52.772,31.349 +2020-10-19 22:30:00,86.82,75.70100000000001,52.772,31.349 +2020-10-19 22:45:00,86.53,69.094,52.772,31.349 +2020-10-19 23:00:00,81.21,63.718,45.136,31.349 +2020-10-19 23:15:00,79.44,63.248999999999995,45.136,31.349 +2020-10-19 23:30:00,81.27,62.427,45.136,31.349 +2020-10-19 23:45:00,78.67,62.832,45.136,31.349 +2020-10-20 00:00:00,75.94,59.277,47.35,31.349 +2020-10-20 00:15:00,72.26,60.708999999999996,47.35,31.349 +2020-10-20 00:30:00,77.13,60.317,47.35,31.349 +2020-10-20 00:45:00,79.34,60.123999999999995,47.35,31.349 +2020-10-20 01:00:00,76.83,60.9,43.424,31.349 +2020-10-20 01:15:00,74.74,60.449,43.424,31.349 +2020-10-20 01:30:00,77.46,59.869,43.424,31.349 +2020-10-20 01:45:00,79.29,59.611999999999995,43.424,31.349 +2020-10-20 02:00:00,74.21,60.479,41.778999999999996,31.349 +2020-10-20 02:15:00,72.87,60.657,41.778999999999996,31.349 +2020-10-20 02:30:00,80.67,61.238,41.778999999999996,31.349 +2020-10-20 02:45:00,80.69,61.875,41.778999999999996,31.349 +2020-10-20 03:00:00,84.16,64.58,40.771,31.349 +2020-10-20 03:15:00,76.84,65.876,40.771,31.349 +2020-10-20 03:30:00,81.98,66.119,40.771,31.349 +2020-10-20 03:45:00,85.52,66.896,40.771,31.349 +2020-10-20 04:00:00,88.83,76.83,41.816,31.349 +2020-10-20 04:15:00,86.61,86.4,41.816,31.349 +2020-10-20 04:30:00,89.0,86.262,41.816,31.349 +2020-10-20 04:45:00,93.57,88.22,41.816,31.349 +2020-10-20 05:00:00,103.8,117.08200000000001,45.842,31.349 +2020-10-20 05:15:00,114.96,142.561,45.842,31.349 +2020-10-20 05:30:00,119.33,136.741,45.842,31.349 +2020-10-20 05:45:00,118.64,127.999,45.842,31.349 +2020-10-20 06:00:00,120.99,127.436,59.12,31.349 +2020-10-20 06:15:00,123.0,131.688,59.12,31.349 +2020-10-20 06:30:00,124.14,130.493,59.12,31.349 +2020-10-20 06:45:00,126.4,131.034,59.12,31.349 +2020-10-20 07:00:00,128.62,131.822,70.33,31.349 +2020-10-20 07:15:00,126.71,134.554,70.33,31.349 +2020-10-20 07:30:00,126.14,134.931,70.33,31.349 +2020-10-20 07:45:00,125.14,135.055,70.33,31.349 +2020-10-20 08:00:00,124.17,134.97,67.788,31.349 +2020-10-20 08:15:00,128.23,134.60299999999998,67.788,31.349 +2020-10-20 08:30:00,129.26,132.143,67.788,31.349 +2020-10-20 08:45:00,129.38,130.308,67.788,31.349 +2020-10-20 09:00:00,127.86,126.161,62.622,31.349 +2020-10-20 09:15:00,129.76,123.774,62.622,31.349 +2020-10-20 09:30:00,128.95,123.736,62.622,31.349 +2020-10-20 09:45:00,129.62,123.212,62.622,31.349 +2020-10-20 10:00:00,130.0,120.056,60.887,31.349 +2020-10-20 10:15:00,130.9,118.914,60.887,31.349 +2020-10-20 10:30:00,130.71,117.34899999999999,60.887,31.349 +2020-10-20 10:45:00,129.56,116.9,60.887,31.349 +2020-10-20 11:00:00,126.57,113.57799999999999,59.812,31.349 +2020-10-20 11:15:00,127.65,113.931,59.812,31.349 +2020-10-20 11:30:00,129.33,114.149,59.812,31.349 +2020-10-20 11:45:00,128.71,114.49700000000001,59.812,31.349 +2020-10-20 12:00:00,126.55,110.807,56.614,31.349 +2020-10-20 12:15:00,128.41,109.98,56.614,31.349 +2020-10-20 12:30:00,126.5,109.773,56.614,31.349 +2020-10-20 12:45:00,126.79,110.145,56.614,31.349 +2020-10-20 13:00:00,125.27,110.044,56.824,31.349 +2020-10-20 13:15:00,127.5,109.61200000000001,56.824,31.349 +2020-10-20 13:30:00,127.16,108.911,56.824,31.349 +2020-10-20 13:45:00,125.66,108.56200000000001,56.824,31.349 +2020-10-20 14:00:00,126.58,108.228,57.623999999999995,31.349 +2020-10-20 14:15:00,125.58,108.148,57.623999999999995,31.349 +2020-10-20 14:30:00,125.54,107.60600000000001,57.623999999999995,31.349 +2020-10-20 14:45:00,124.61,107.48700000000001,57.623999999999995,31.349 +2020-10-20 15:00:00,124.48,106.787,59.724,31.349 +2020-10-20 15:15:00,125.53,106.771,59.724,31.349 +2020-10-20 15:30:00,122.51,106.945,59.724,31.349 +2020-10-20 15:45:00,123.47,106.96700000000001,59.724,31.349 +2020-10-20 16:00:00,124.86,107.792,61.64,31.349 +2020-10-20 16:15:00,126.88,108.274,61.64,31.349 +2020-10-20 16:30:00,127.79,108.666,61.64,31.349 +2020-10-20 16:45:00,130.62,107.39299999999999,61.64,31.349 +2020-10-20 17:00:00,132.63,107.946,68.962,31.349 +2020-10-20 17:15:00,134.24,108.882,68.962,31.349 +2020-10-20 17:30:00,132.03,108.838,68.962,31.349 +2020-10-20 17:45:00,129.1,108.991,68.962,31.349 +2020-10-20 18:00:00,128.24,110.06,69.149,31.349 +2020-10-20 18:15:00,127.87,109.694,69.149,31.349 +2020-10-20 18:30:00,123.22,108.37899999999999,69.149,31.349 +2020-10-20 18:45:00,124.82,111.66799999999999,69.149,31.349 +2020-10-20 19:00:00,115.2,112.62100000000001,68.832,31.349 +2020-10-20 19:15:00,110.22,111.197,68.832,31.349 +2020-10-20 19:30:00,108.41,110.40899999999999,68.832,31.349 +2020-10-20 19:45:00,104.68,109.90299999999999,68.832,31.349 +2020-10-20 20:00:00,101.56,107.01299999999999,66.403,31.349 +2020-10-20 20:15:00,101.65,104.178,66.403,31.349 +2020-10-20 20:30:00,100.36,103.81,66.403,31.349 +2020-10-20 20:45:00,100.6,102.27600000000001,66.403,31.349 +2020-10-20 21:00:00,91.23,98.71700000000001,57.352,31.349 +2020-10-20 21:15:00,90.92,98.59700000000001,57.352,31.349 +2020-10-20 21:30:00,88.27,97.89299999999999,57.352,31.349 +2020-10-20 21:45:00,86.17,95.569,57.352,31.349 +2020-10-20 22:00:00,81.6,91.111,51.148999999999994,31.349 +2020-10-20 22:15:00,80.06,87.729,51.148999999999994,31.349 +2020-10-20 22:30:00,78.33,76.27,51.148999999999994,31.349 +2020-10-20 22:45:00,77.72,69.81,51.148999999999994,31.349 +2020-10-20 23:00:00,75.14,64.126,41.8,31.349 +2020-10-20 23:15:00,72.31,63.852,41.8,31.349 +2020-10-20 23:30:00,72.2,62.843,41.8,31.349 +2020-10-20 23:45:00,70.69,63.091,41.8,31.349 +2020-10-21 00:00:00,69.76,59.614,42.269,31.349 +2020-10-21 00:15:00,70.51,61.033,42.269,31.349 +2020-10-21 00:30:00,68.91,60.648,42.269,31.349 +2020-10-21 00:45:00,70.39,60.449,42.269,31.349 +2020-10-21 01:00:00,68.96,61.236999999999995,38.527,31.349 +2020-10-21 01:15:00,69.7,60.805,38.527,31.349 +2020-10-21 01:30:00,66.77,60.242,38.527,31.349 +2020-10-21 01:45:00,69.61,59.981,38.527,31.349 +2020-10-21 02:00:00,69.44,60.858000000000004,36.393,31.349 +2020-10-21 02:15:00,70.57,61.048,36.393,31.349 +2020-10-21 02:30:00,70.25,61.61600000000001,36.393,31.349 +2020-10-21 02:45:00,70.99,62.246,36.393,31.349 +2020-10-21 03:00:00,72.78,64.939,36.167,31.349 +2020-10-21 03:15:00,73.7,66.257,36.167,31.349 +2020-10-21 03:30:00,74.4,66.502,36.167,31.349 +2020-10-21 03:45:00,74.06,67.263,36.167,31.349 +2020-10-21 04:00:00,80.73,77.21600000000001,38.092,31.349 +2020-10-21 04:15:00,83.23,86.816,38.092,31.349 +2020-10-21 04:30:00,94.46,86.675,38.092,31.349 +2020-10-21 04:45:00,98.59,88.64200000000001,38.092,31.349 +2020-10-21 05:00:00,105.32,117.571,42.268,31.349 +2020-10-21 05:15:00,106.7,143.113,42.268,31.349 +2020-10-21 05:30:00,113.14,137.283,42.268,31.349 +2020-10-21 05:45:00,116.18,128.509,42.268,31.349 +2020-10-21 06:00:00,122.3,127.931,60.158,31.349 +2020-10-21 06:15:00,125.24,132.197,60.158,31.349 +2020-10-21 06:30:00,128.18,131.024,60.158,31.349 +2020-10-21 06:45:00,129.46,131.575,60.158,31.349 +2020-10-21 07:00:00,132.09,132.361,74.792,31.349 +2020-10-21 07:15:00,133.19,135.106,74.792,31.349 +2020-10-21 07:30:00,135.44,135.514,74.792,31.349 +2020-10-21 07:45:00,133.65,135.642,74.792,31.349 +2020-10-21 08:00:00,132.41,135.57,70.499,31.349 +2020-10-21 08:15:00,134.22,135.18200000000002,70.499,31.349 +2020-10-21 08:30:00,134.75,132.749,70.499,31.349 +2020-10-21 08:45:00,134.77,130.888,70.499,31.349 +2020-10-21 09:00:00,135.22,126.735,68.892,31.349 +2020-10-21 09:15:00,136.3,124.346,68.892,31.349 +2020-10-21 09:30:00,138.43,124.294,68.892,31.349 +2020-10-21 09:45:00,138.85,123.74600000000001,68.892,31.349 +2020-10-21 10:00:00,138.15,120.583,66.88600000000001,31.349 +2020-10-21 10:15:00,138.15,119.40100000000001,66.88600000000001,31.349 +2020-10-21 10:30:00,137.96,117.815,66.88600000000001,31.349 +2020-10-21 10:45:00,135.02,117.351,66.88600000000001,31.349 +2020-10-21 11:00:00,131.3,114.03200000000001,66.187,31.349 +2020-10-21 11:15:00,131.26,114.366,66.187,31.349 +2020-10-21 11:30:00,131.11,114.583,66.187,31.349 +2020-10-21 11:45:00,132.59,114.916,66.187,31.349 +2020-10-21 12:00:00,129.61,111.206,62.18,31.349 +2020-10-21 12:15:00,129.87,110.37299999999999,62.18,31.349 +2020-10-21 12:30:00,128.91,110.20200000000001,62.18,31.349 +2020-10-21 12:45:00,128.14,110.572,62.18,31.349 +2020-10-21 13:00:00,124.86,110.43700000000001,62.23,31.349 +2020-10-21 13:15:00,121.86,110.012,62.23,31.349 +2020-10-21 13:30:00,123.13,109.31,62.23,31.349 +2020-10-21 13:45:00,120.42,108.958,62.23,31.349 +2020-10-21 14:00:00,118.39,108.573,63.721000000000004,31.349 +2020-10-21 14:15:00,120.77,108.508,63.721000000000004,31.349 +2020-10-21 14:30:00,121.85,108.00299999999999,63.721000000000004,31.349 +2020-10-21 14:45:00,121.34,107.882,63.721000000000004,31.349 +2020-10-21 15:00:00,118.71,107.161,66.523,31.349 +2020-10-21 15:15:00,118.61,107.163,66.523,31.349 +2020-10-21 15:30:00,118.37,107.37700000000001,66.523,31.349 +2020-10-21 15:45:00,117.66,107.412,66.523,31.349 +2020-10-21 16:00:00,117.97,108.20700000000001,69.679,31.349 +2020-10-21 16:15:00,119.99,108.711,69.679,31.349 +2020-10-21 16:30:00,122.09,109.101,69.679,31.349 +2020-10-21 16:45:00,123.57,107.87899999999999,69.679,31.349 +2020-10-21 17:00:00,130.15,108.39,75.04,31.349 +2020-10-21 17:15:00,128.12,109.345,75.04,31.349 +2020-10-21 17:30:00,132.36,109.304,75.04,31.349 +2020-10-21 17:45:00,129.08,109.47200000000001,75.04,31.349 +2020-10-21 18:00:00,130.24,110.53299999999999,75.915,31.349 +2020-10-21 18:15:00,127.7,110.141,75.915,31.349 +2020-10-21 18:30:00,127.89,108.836,75.915,31.349 +2020-10-21 18:45:00,123.32,112.119,75.915,31.349 +2020-10-21 19:00:00,118.23,113.083,74.66,31.349 +2020-10-21 19:15:00,113.94,111.652,74.66,31.349 +2020-10-21 19:30:00,110.24,110.85,74.66,31.349 +2020-10-21 19:45:00,109.15,110.32,74.66,31.349 +2020-10-21 20:00:00,103.44,107.45299999999999,71.204,31.349 +2020-10-21 20:15:00,104.11,104.609,71.204,31.349 +2020-10-21 20:30:00,104.78,104.212,71.204,31.349 +2020-10-21 20:45:00,105.75,102.661,71.204,31.349 +2020-10-21 21:00:00,100.72,99.09899999999999,61.052,31.349 +2020-10-21 21:15:00,95.64,98.96700000000001,61.052,31.349 +2020-10-21 21:30:00,91.76,98.273,61.052,31.349 +2020-10-21 21:45:00,95.11,95.929,61.052,31.349 +2020-10-21 22:00:00,91.39,91.464,54.691,31.349 +2020-10-21 22:15:00,87.48,88.06200000000001,54.691,31.349 +2020-10-21 22:30:00,84.33,76.632,54.691,31.349 +2020-10-21 22:45:00,85.24,70.179,54.691,31.349 +2020-10-21 23:00:00,81.86,64.51,45.18,31.349 +2020-10-21 23:15:00,83.34,64.208,45.18,31.349 +2020-10-21 23:30:00,79.08,63.201,45.18,31.349 +2020-10-21 23:45:00,78.07,63.438,45.18,31.349 +2020-10-22 00:00:00,78.96,59.951,42.746,31.349 +2020-10-22 00:15:00,80.34,61.357,42.746,31.349 +2020-10-22 00:30:00,76.75,60.979,42.746,31.349 +2020-10-22 00:45:00,74.47,60.773,42.746,31.349 +2020-10-22 01:00:00,74.08,61.575,40.025999999999996,31.349 +2020-10-22 01:15:00,78.96,61.161,40.025999999999996,31.349 +2020-10-22 01:30:00,78.92,60.614,40.025999999999996,31.349 +2020-10-22 01:45:00,72.66,60.349,40.025999999999996,31.349 +2020-10-22 02:00:00,72.85,61.236000000000004,38.154,31.349 +2020-10-22 02:15:00,72.18,61.438,38.154,31.349 +2020-10-22 02:30:00,80.12,61.99100000000001,38.154,31.349 +2020-10-22 02:45:00,80.24,62.618,38.154,31.349 +2020-10-22 03:00:00,77.98,65.297,37.575,31.349 +2020-10-22 03:15:00,77.21,66.63600000000001,37.575,31.349 +2020-10-22 03:30:00,76.58,66.88600000000001,37.575,31.349 +2020-10-22 03:45:00,81.48,67.62899999999999,37.575,31.349 +2020-10-22 04:00:00,90.01,77.601,39.154,31.349 +2020-10-22 04:15:00,92.44,87.23,39.154,31.349 +2020-10-22 04:30:00,87.34,87.086,39.154,31.349 +2020-10-22 04:45:00,93.79,89.06200000000001,39.154,31.349 +2020-10-22 05:00:00,105.64,118.059,44.085,31.349 +2020-10-22 05:15:00,114.87,143.665,44.085,31.349 +2020-10-22 05:30:00,114.7,137.82399999999998,44.085,31.349 +2020-10-22 05:45:00,113.54,129.018,44.085,31.349 +2020-10-22 06:00:00,122.12,128.42600000000002,57.49,31.349 +2020-10-22 06:15:00,124.14,132.705,57.49,31.349 +2020-10-22 06:30:00,127.55,131.553,57.49,31.349 +2020-10-22 06:45:00,128.59,132.114,57.49,31.349 +2020-10-22 07:00:00,132.08,132.9,73.617,31.349 +2020-10-22 07:15:00,132.26,135.658,73.617,31.349 +2020-10-22 07:30:00,133.23,136.096,73.617,31.349 +2020-10-22 07:45:00,133.61,136.227,73.617,31.349 +2020-10-22 08:00:00,133.59,136.168,69.281,31.349 +2020-10-22 08:15:00,133.94,135.75799999999998,69.281,31.349 +2020-10-22 08:30:00,133.56,133.351,69.281,31.349 +2020-10-22 08:45:00,134.29,131.466,69.281,31.349 +2020-10-22 09:00:00,132.11,127.307,63.926,31.349 +2020-10-22 09:15:00,134.27,124.915,63.926,31.349 +2020-10-22 09:30:00,133.85,124.851,63.926,31.349 +2020-10-22 09:45:00,133.96,124.27799999999999,63.926,31.349 +2020-10-22 10:00:00,131.38,121.10799999999999,59.442,31.349 +2020-10-22 10:15:00,133.21,119.88600000000001,59.442,31.349 +2020-10-22 10:30:00,132.9,118.28,59.442,31.349 +2020-10-22 10:45:00,132.11,117.79899999999999,59.442,31.349 +2020-10-22 11:00:00,127.4,114.485,56.771,31.349 +2020-10-22 11:15:00,129.2,114.801,56.771,31.349 +2020-10-22 11:30:00,127.65,115.016,56.771,31.349 +2020-10-22 11:45:00,125.62,115.334,56.771,31.349 +2020-10-22 12:00:00,123.46,111.602,53.701,31.349 +2020-10-22 12:15:00,124.88,110.765,53.701,31.349 +2020-10-22 12:30:00,119.09,110.62799999999999,53.701,31.349 +2020-10-22 12:45:00,120.14,110.99799999999999,53.701,31.349 +2020-10-22 13:00:00,122.1,110.82799999999999,52.364,31.349 +2020-10-22 13:15:00,123.26,110.411,52.364,31.349 +2020-10-22 13:30:00,124.34,109.709,52.364,31.349 +2020-10-22 13:45:00,124.93,109.353,52.364,31.349 +2020-10-22 14:00:00,128.1,108.916,53.419,31.349 +2020-10-22 14:15:00,124.78,108.868,53.419,31.349 +2020-10-22 14:30:00,123.07,108.398,53.419,31.349 +2020-10-22 14:45:00,119.7,108.27600000000001,53.419,31.349 +2020-10-22 15:00:00,121.74,107.53399999999999,56.744,31.349 +2020-10-22 15:15:00,119.68,107.554,56.744,31.349 +2020-10-22 15:30:00,119.77,107.806,56.744,31.349 +2020-10-22 15:45:00,118.01,107.85600000000001,56.744,31.349 +2020-10-22 16:00:00,123.58,108.62,60.458,31.349 +2020-10-22 16:15:00,123.95,109.146,60.458,31.349 +2020-10-22 16:30:00,124.24,109.53299999999999,60.458,31.349 +2020-10-22 16:45:00,126.61,108.363,60.458,31.349 +2020-10-22 17:00:00,132.29,108.83200000000001,66.295,31.349 +2020-10-22 17:15:00,131.4,109.807,66.295,31.349 +2020-10-22 17:30:00,130.67,109.76799999999999,66.295,31.349 +2020-10-22 17:45:00,130.55,109.95200000000001,66.295,31.349 +2020-10-22 18:00:00,130.07,111.006,68.468,31.349 +2020-10-22 18:15:00,127.24,110.588,68.468,31.349 +2020-10-22 18:30:00,126.24,109.292,68.468,31.349 +2020-10-22 18:45:00,124.94,112.571,68.468,31.349 +2020-10-22 19:00:00,116.69,113.544,66.39399999999999,31.349 +2020-10-22 19:15:00,113.13,112.10600000000001,66.39399999999999,31.349 +2020-10-22 19:30:00,109.94,111.291,66.39399999999999,31.349 +2020-10-22 19:45:00,109.01,110.73700000000001,66.39399999999999,31.349 +2020-10-22 20:00:00,106.55,107.891,63.183,31.349 +2020-10-22 20:15:00,110.78,105.039,63.183,31.349 +2020-10-22 20:30:00,109.45,104.61399999999999,63.183,31.349 +2020-10-22 20:45:00,102.93,103.04299999999999,63.183,31.349 +2020-10-22 21:00:00,95.75,99.479,55.133,31.349 +2020-10-22 21:15:00,94.53,99.337,55.133,31.349 +2020-10-22 21:30:00,91.45,98.652,55.133,31.349 +2020-10-22 21:45:00,96.05,96.286,55.133,31.349 +2020-10-22 22:00:00,89.93,91.816,50.111999999999995,31.349 +2020-10-22 22:15:00,88.13,88.395,50.111999999999995,31.349 +2020-10-22 22:30:00,89.13,76.995,50.111999999999995,31.349 +2020-10-22 22:45:00,89.9,70.547,50.111999999999995,31.349 +2020-10-22 23:00:00,83.75,64.893,44.536,31.349 +2020-10-22 23:15:00,78.07,64.564,44.536,31.349 +2020-10-22 23:30:00,80.56,63.558,44.536,31.349 +2020-10-22 23:45:00,82.63,63.785,44.536,31.349 +2020-10-23 00:00:00,78.83,58.907,42.291000000000004,31.349 +2020-10-23 00:15:00,76.14,60.5,42.291000000000004,31.349 +2020-10-23 00:30:00,70.38,60.188,42.291000000000004,31.349 +2020-10-23 00:45:00,78.33,60.231,42.291000000000004,31.349 +2020-10-23 01:00:00,77.49,60.708999999999996,41.008,31.349 +2020-10-23 01:15:00,78.38,60.483000000000004,41.008,31.349 +2020-10-23 01:30:00,72.93,60.181999999999995,41.008,31.349 +2020-10-23 01:45:00,73.02,59.847,41.008,31.349 +2020-10-23 02:00:00,71.03,61.23,39.521,31.349 +2020-10-23 02:15:00,73.65,61.361000000000004,39.521,31.349 +2020-10-23 02:30:00,79.52,62.555,39.521,31.349 +2020-10-23 02:45:00,80.33,62.872,39.521,31.349 +2020-10-23 03:00:00,79.49,65.42,39.812,31.349 +2020-10-23 03:15:00,77.2,66.66199999999999,39.812,31.349 +2020-10-23 03:30:00,77.66,66.79,39.812,31.349 +2020-10-23 03:45:00,80.08,68.09899999999999,39.812,31.349 +2020-10-23 04:00:00,93.02,78.267,41.22,31.349 +2020-10-23 04:15:00,92.04,87.04899999999999,41.22,31.349 +2020-10-23 04:30:00,95.88,87.476,41.22,31.349 +2020-10-23 04:45:00,103.64,88.589,41.22,31.349 +2020-10-23 05:00:00,110.56,116.802,45.115,31.349 +2020-10-23 05:15:00,109.64,143.666,45.115,31.349 +2020-10-23 05:30:00,112.58,138.431,45.115,31.349 +2020-10-23 05:45:00,115.81,129.345,45.115,31.349 +2020-10-23 06:00:00,127.62,129.082,59.06100000000001,31.349 +2020-10-23 06:15:00,125.7,132.726,59.06100000000001,31.349 +2020-10-23 06:30:00,129.36,131.142,59.06100000000001,31.349 +2020-10-23 06:45:00,130.72,132.45600000000002,59.06100000000001,31.349 +2020-10-23 07:00:00,132.87,133.134,71.874,31.349 +2020-10-23 07:15:00,132.91,136.845,71.874,31.349 +2020-10-23 07:30:00,132.75,136.32399999999998,71.874,31.349 +2020-10-23 07:45:00,132.39,135.908,71.874,31.349 +2020-10-23 08:00:00,135.33,135.643,68.439,31.349 +2020-10-23 08:15:00,133.18,135.3,68.439,31.349 +2020-10-23 08:30:00,131.71,133.393,68.439,31.349 +2020-10-23 08:45:00,132.74,130.588,68.439,31.349 +2020-10-23 09:00:00,130.86,125.649,65.523,31.349 +2020-10-23 09:15:00,129.44,124.387,65.523,31.349 +2020-10-23 09:30:00,130.21,123.78299999999999,65.523,31.349 +2020-10-23 09:45:00,126.99,123.292,65.523,31.349 +2020-10-23 10:00:00,126.29,119.389,62.005,31.349 +2020-10-23 10:15:00,126.97,118.429,62.005,31.349 +2020-10-23 10:30:00,127.62,116.988,62.005,31.349 +2020-10-23 10:45:00,128.81,116.204,62.005,31.349 +2020-10-23 11:00:00,125.12,112.964,60.351000000000006,31.349 +2020-10-23 11:15:00,124.04,112.315,60.351000000000006,31.349 +2020-10-23 11:30:00,124.64,113.381,60.351000000000006,31.349 +2020-10-23 11:45:00,128.31,113.32799999999999,60.351000000000006,31.349 +2020-10-23 12:00:00,121.36,110.387,55.331,31.349 +2020-10-23 12:15:00,123.71,108.07700000000001,55.331,31.349 +2020-10-23 12:30:00,121.4,108.113,55.331,31.349 +2020-10-23 12:45:00,120.71,108.477,55.331,31.349 +2020-10-23 13:00:00,114.05,109.057,53.361999999999995,31.349 +2020-10-23 13:15:00,112.96,109.195,53.361999999999995,31.349 +2020-10-23 13:30:00,114.06,108.807,53.361999999999995,31.349 +2020-10-23 13:45:00,109.64,108.527,53.361999999999995,31.349 +2020-10-23 14:00:00,109.29,107.06299999999999,51.708,31.349 +2020-10-23 14:15:00,107.91,107.09200000000001,51.708,31.349 +2020-10-23 14:30:00,109.64,107.539,51.708,31.349 +2020-10-23 14:45:00,108.55,107.329,51.708,31.349 +2020-10-23 15:00:00,108.97,106.251,54.571000000000005,31.349 +2020-10-23 15:15:00,110.24,105.94,54.571000000000005,31.349 +2020-10-23 15:30:00,110.25,105.12200000000001,54.571000000000005,31.349 +2020-10-23 15:45:00,111.4,105.56299999999999,54.571000000000005,31.349 +2020-10-23 16:00:00,111.51,105.333,58.662,31.349 +2020-10-23 16:15:00,113.23,106.244,58.662,31.349 +2020-10-23 16:30:00,114.42,106.60799999999999,58.662,31.349 +2020-10-23 16:45:00,118.53,105.10600000000001,58.662,31.349 +2020-10-23 17:00:00,122.49,106.39399999999999,65.941,31.349 +2020-10-23 17:15:00,122.56,107.088,65.941,31.349 +2020-10-23 17:30:00,123.72,106.946,65.941,31.349 +2020-10-23 17:45:00,123.59,106.948,65.941,31.349 +2020-10-23 18:00:00,121.84,108.42299999999999,65.628,31.349 +2020-10-23 18:15:00,121.3,107.361,65.628,31.349 +2020-10-23 18:30:00,117.05,106.244,65.628,31.349 +2020-10-23 18:45:00,113.81,109.695,65.628,31.349 +2020-10-23 19:00:00,107.92,111.56299999999999,63.662,31.349 +2020-10-23 19:15:00,105.21,111.102,63.662,31.349 +2020-10-23 19:30:00,103.36,110.083,63.662,31.349 +2020-10-23 19:45:00,100.53,108.814,63.662,31.349 +2020-10-23 20:00:00,96.19,105.954,61.945,31.349 +2020-10-23 20:15:00,96.91,103.45,61.945,31.349 +2020-10-23 20:30:00,98.96,102.758,61.945,31.349 +2020-10-23 20:45:00,98.21,101.104,61.945,31.349 +2020-10-23 21:00:00,88.95,98.39200000000001,53.903,31.349 +2020-10-23 21:15:00,85.03,99.21700000000001,53.903,31.349 +2020-10-23 21:30:00,86.27,98.49700000000001,53.903,31.349 +2020-10-23 21:45:00,86.36,96.485,53.903,31.349 +2020-10-23 22:00:00,82.11,92.458,48.403999999999996,31.349 +2020-10-23 22:15:00,79.76,88.836,48.403999999999996,31.349 +2020-10-23 22:30:00,78.87,82.929,48.403999999999996,31.349 +2020-10-23 22:45:00,77.66,78.721,48.403999999999996,31.349 +2020-10-23 23:00:00,72.45,73.60300000000001,41.07,31.349 +2020-10-23 23:15:00,66.27,71.525,41.07,31.349 +2020-10-23 23:30:00,71.85,68.943,41.07,31.349 +2020-10-23 23:45:00,72.89,68.757,41.07,31.349 +2020-10-24 00:00:00,69.15,58.409,38.989000000000004,31.177 +2020-10-24 00:15:00,66.21,57.553999999999995,38.989000000000004,31.177 +2020-10-24 00:30:00,66.17,57.687,38.989000000000004,31.177 +2020-10-24 00:45:00,68.56,57.732,38.989000000000004,31.177 +2020-10-24 01:00:00,67.79,58.681000000000004,35.275,31.177 +2020-10-24 01:15:00,63.68,58.266000000000005,35.275,31.177 +2020-10-24 01:30:00,65.18,57.342,35.275,31.177 +2020-10-24 01:45:00,67.86,57.486999999999995,35.275,31.177 +2020-10-24 02:00:00,66.58,58.766999999999996,32.838,31.177 +2020-10-24 02:15:00,64.36,58.35,32.838,31.177 +2020-10-24 02:30:00,61.86,58.606,32.838,31.177 +2020-10-24 02:45:00,66.88,59.343999999999994,32.838,31.177 +2020-10-24 03:00:00,65.58,61.542,32.418,31.177 +2020-10-24 03:15:00,60.76,61.876000000000005,32.418,31.177 +2020-10-24 03:30:00,61.45,61.39,32.418,31.177 +2020-10-24 03:45:00,60.33,63.449,32.418,31.177 +2020-10-24 04:00:00,61.63,70.747,32.099000000000004,31.177 +2020-10-24 04:15:00,61.62,77.895,32.099000000000004,31.177 +2020-10-24 04:30:00,61.95,76.46,32.099000000000004,31.177 +2020-10-24 04:45:00,64.96,77.475,32.099000000000004,31.177 +2020-10-24 05:00:00,66.95,94.19200000000001,32.926,31.177 +2020-10-24 05:15:00,68.94,106.695,32.926,31.177 +2020-10-24 05:30:00,70.32,102.368,32.926,31.177 +2020-10-24 05:45:00,72.01,98.037,32.926,31.177 +2020-10-24 06:00:00,75.35,111.932,35.069,31.177 +2020-10-24 06:15:00,77.38,127.29899999999999,35.069,31.177 +2020-10-24 06:30:00,80.27,121.75399999999999,35.069,31.177 +2020-10-24 06:45:00,82.52,117.161,35.069,31.177 +2020-10-24 07:00:00,84.52,114.94,40.906,31.177 +2020-10-24 07:15:00,86.47,117.434,40.906,31.177 +2020-10-24 07:30:00,88.55,119.00399999999999,40.906,31.177 +2020-10-24 07:45:00,90.46,121.02,40.906,31.177 +2020-10-24 08:00:00,93.09,122.844,46.603,31.177 +2020-10-24 08:15:00,92.39,124.279,46.603,31.177 +2020-10-24 08:30:00,92.69,123.23299999999999,46.603,31.177 +2020-10-24 08:45:00,92.18,122.46799999999999,46.603,31.177 +2020-10-24 09:00:00,92.61,119.697,49.935,31.177 +2020-10-24 09:15:00,95.38,119.044,49.935,31.177 +2020-10-24 09:30:00,92.79,119.12299999999999,49.935,31.177 +2020-10-24 09:45:00,98.37,118.501,49.935,31.177 +2020-10-24 10:00:00,95.5,114.84299999999999,47.585,31.177 +2020-10-24 10:15:00,96.58,114.081,47.585,31.177 +2020-10-24 10:30:00,97.94,112.571,47.585,31.177 +2020-10-24 10:45:00,98.26,112.348,47.585,31.177 +2020-10-24 11:00:00,98.27,109.11399999999999,43.376999999999995,31.177 +2020-10-24 11:15:00,98.66,108.404,43.376999999999995,31.177 +2020-10-24 11:30:00,99.06,108.95299999999999,43.376999999999995,31.177 +2020-10-24 11:45:00,96.15,108.61399999999999,43.376999999999995,31.177 +2020-10-24 12:00:00,91.6,105.161,40.855,31.177 +2020-10-24 12:15:00,91.87,103.545,40.855,31.177 +2020-10-24 12:30:00,93.38,103.74799999999999,40.855,31.177 +2020-10-24 12:45:00,90.21,103.949,40.855,31.177 +2020-10-24 13:00:00,86.6,103.87899999999999,37.251,31.177 +2020-10-24 13:15:00,86.51,102.62299999999999,37.251,31.177 +2020-10-24 13:30:00,85.95,102.045,37.251,31.177 +2020-10-24 13:45:00,85.82,101.522,37.251,31.177 +2020-10-24 14:00:00,86.06,100.728,38.548,31.177 +2020-10-24 14:15:00,86.43,99.986,38.548,31.177 +2020-10-24 14:30:00,86.03,99.24700000000001,38.548,31.177 +2020-10-24 14:45:00,85.75,99.345,38.548,31.177 +2020-10-24 15:00:00,84.72,98.795,42.883,31.177 +2020-10-24 15:15:00,85.56,99.241,42.883,31.177 +2020-10-24 15:30:00,85.6,99.435,42.883,31.177 +2020-10-24 15:45:00,86.3,99.54899999999999,42.883,31.177 +2020-10-24 16:00:00,89.01,99.697,48.143,31.177 +2020-10-24 16:15:00,89.51,100.771,48.143,31.177 +2020-10-24 16:30:00,92.55,101.194,48.143,31.177 +2020-10-24 16:45:00,96.25,100.23100000000001,48.143,31.177 +2020-10-24 17:00:00,102.45,100.84299999999999,55.25,31.177 +2020-10-24 17:15:00,102.68,101.559,55.25,31.177 +2020-10-24 17:30:00,105.3,101.311,55.25,31.177 +2020-10-24 17:45:00,102.74,101.31299999999999,55.25,31.177 +2020-10-24 18:00:00,102.08,103.189,57.506,31.177 +2020-10-24 18:15:00,99.7,103.78200000000001,57.506,31.177 +2020-10-24 18:30:00,98.42,103.971,57.506,31.177 +2020-10-24 18:45:00,96.26,104.133,57.506,31.177 +2020-10-24 19:00:00,91.99,105.861,55.528999999999996,31.177 +2020-10-24 19:15:00,88.78,104.691,55.528999999999996,31.177 +2020-10-24 19:30:00,86.53,104.39200000000001,55.528999999999996,31.177 +2020-10-24 19:45:00,85.01,103.775,55.528999999999996,31.177 +2020-10-24 20:00:00,81.07,102.477,46.166000000000004,31.177 +2020-10-24 20:15:00,81.19,100.8,46.166000000000004,31.177 +2020-10-24 20:30:00,79.06,99.508,46.166000000000004,31.177 +2020-10-24 20:45:00,78.71,98.44,46.166000000000004,31.177 +2020-10-24 21:00:00,74.27,96.27,40.406,31.177 +2020-10-24 21:15:00,73.82,97.156,40.406,31.177 +2020-10-24 21:30:00,69.74,97.17,40.406,31.177 +2020-10-24 21:45:00,70.03,94.685,40.406,31.177 +2020-10-24 22:00:00,66.57,91.34200000000001,39.616,31.177 +2020-10-24 22:15:00,66.52,89.10799999999999,39.616,31.177 +2020-10-24 22:30:00,63.76,86.304,39.616,31.177 +2020-10-24 22:45:00,63.35,83.242,39.616,31.177 +2020-10-24 23:00:00,59.13,79.12100000000001,32.205,31.177 +2020-10-24 23:15:00,57.91,76.347,32.205,31.177 +2020-10-24 23:30:00,58.49,73.942,32.205,31.177 +2020-10-24 23:45:00,57.43,72.638,32.205,31.177 +2020-10-25 00:00:00,54.37,59.602,28.229,31.177 +2020-10-25 00:15:00,54.85,58.032,28.229,31.177 +2020-10-25 00:30:00,53.15,57.915,28.229,31.177 +2020-10-25 00:45:00,53.46,58.245,28.229,31.177 +2020-10-25 01:00:00,52.45,59.261,25.669,31.177 +2020-10-25 01:15:00,53.12,59.316,25.669,31.177 +2020-10-25 01:30:00,52.62,58.598,25.669,31.177 +2020-10-25 01:45:00,53.42,58.406000000000006,25.669,31.177 +2020-10-25 02:00:00,53.47,59.361999999999995,24.948,31.177 +2020-10-25 02:15:00,52.07,58.88,24.948,31.177 +2020-10-25 02:30:00,53.29,59.628,24.948,31.177 +2020-10-25 02:45:00,50.45,60.449,24.948,31.177 +2020-10-25 02:00:00,53.47,59.361999999999995,24.948,31.177 +2020-10-25 02:15:00,52.07,58.88,24.948,31.177 +2020-10-25 02:30:00,53.29,59.628,24.948,31.177 +2020-10-25 02:45:00,50.45,60.449,24.948,31.177 +2020-10-25 03:00:00,51.47,63.097,25.839000000000002,31.177 +2020-10-25 03:15:00,53.26,63.324,25.839000000000002,31.177 +2020-10-25 03:30:00,53.34,63.165,25.839000000000002,31.177 +2020-10-25 03:45:00,54.51,64.78699999999999,25.839000000000002,31.177 +2020-10-25 04:00:00,53.29,71.962,26.803,31.177 +2020-10-25 04:15:00,53.34,78.443,26.803,31.177 +2020-10-25 04:30:00,53.8,77.687,26.803,31.177 +2020-10-25 04:45:00,54.16,78.613,26.803,31.177 +2020-10-25 05:00:00,55.1,93.816,28.147,31.177 +2020-10-25 05:15:00,57.45,104.86200000000001,28.147,31.177 +2020-10-25 05:30:00,57.71,100.24700000000001,28.147,31.177 +2020-10-25 05:45:00,58.69,95.866,28.147,31.177 +2020-10-25 06:00:00,62.27,108.524,31.116,31.177 +2020-10-25 06:15:00,63.1,123.47,31.116,31.177 +2020-10-25 06:30:00,62.46,117.07799999999999,31.116,31.177 +2020-10-25 06:45:00,62.7,111.507,31.116,31.177 +2020-10-25 07:00:00,63.83,110.587,35.739000000000004,31.177 +2020-10-25 07:15:00,68.03,111.905,35.739000000000004,31.177 +2020-10-25 07:30:00,70.45,113.48200000000001,35.739000000000004,31.177 +2020-10-25 07:45:00,73.32,115.104,35.739000000000004,31.177 +2020-10-25 08:00:00,74.3,118.15899999999999,39.455999999999996,31.177 +2020-10-25 08:15:00,75.67,120.051,39.455999999999996,31.177 +2020-10-25 08:30:00,77.85,120.27600000000001,39.455999999999996,31.177 +2020-10-25 08:45:00,79.31,120.493,39.455999999999996,31.177 +2020-10-25 09:00:00,79.61,117.434,41.343999999999994,31.177 +2020-10-25 09:15:00,84.58,116.85700000000001,41.343999999999994,31.177 +2020-10-25 09:30:00,85.64,117.029,41.343999999999994,31.177 +2020-10-25 09:45:00,82.94,116.75399999999999,41.343999999999994,31.177 +2020-10-25 10:00:00,85.77,114.64299999999999,43.645,31.177 +2020-10-25 10:15:00,85.99,114.189,43.645,31.177 +2020-10-25 10:30:00,87.54,113.08,43.645,31.177 +2020-10-25 10:45:00,90.19,112.226,43.645,31.177 +2020-10-25 11:00:00,91.19,109.338,39.796,31.177 +2020-10-25 11:15:00,94.15,108.50299999999999,39.796,31.177 +2020-10-25 11:30:00,95.37,108.779,39.796,31.177 +2020-10-25 11:45:00,98.86,108.865,39.796,31.177 +2020-10-25 12:00:00,91.98,105.462,36.343,31.177 +2020-10-25 12:15:00,91.68,104.677,36.343,31.177 +2020-10-25 12:30:00,88.9,104.17200000000001,36.343,31.177 +2020-10-25 12:45:00,90.13,103.572,36.343,31.177 +2020-10-25 13:00:00,82.09,102.927,33.162,31.177 +2020-10-25 13:15:00,81.4,103.18,33.162,31.177 +2020-10-25 13:30:00,81.38,102.04700000000001,33.162,31.177 +2020-10-25 13:45:00,81.84,101.579,33.162,31.177 +2020-10-25 14:00:00,81.77,101.337,33.215,31.177 +2020-10-25 14:15:00,79.73,101.465,33.215,31.177 +2020-10-25 14:30:00,79.1,100.992,33.215,31.177 +2020-10-25 14:45:00,79.01,100.43799999999999,33.215,31.177 +2020-10-25 15:00:00,79.17,99.04700000000001,37.385999999999996,31.177 +2020-10-25 15:15:00,80.91,99.631,37.385999999999996,31.177 +2020-10-25 15:30:00,81.52,100.13,37.385999999999996,31.177 +2020-10-25 15:45:00,82.75,100.765,37.385999999999996,31.177 +2020-10-25 16:00:00,82.73,101.178,46.618,31.177 +2020-10-25 16:15:00,84.13,101.86399999999999,46.618,31.177 +2020-10-25 16:30:00,88.98,102.837,46.618,31.177 +2020-10-25 16:45:00,90.57,102.025,46.618,31.177 +2020-10-25 17:00:00,95.12,102.66799999999999,50.111000000000004,31.177 +2020-10-25 17:15:00,97.69,103.867,50.111000000000004,31.177 +2020-10-25 17:30:00,96.42,104.118,50.111000000000004,31.177 +2020-10-25 17:45:00,98.46,105.537,50.111000000000004,31.177 +2020-10-25 18:00:00,103.58,107.33200000000001,50.25,31.177 +2020-10-25 18:15:00,101.93,108.426,50.25,31.177 +2020-10-25 18:30:00,102.54,107.414,50.25,31.177 +2020-10-25 18:45:00,100.8,108.6,50.25,31.177 +2020-10-25 19:00:00,96.36,111.086,44.265,31.177 +2020-10-25 19:15:00,94.85,109.73100000000001,44.265,31.177 +2020-10-25 19:30:00,95.47,109.225,44.265,31.177 +2020-10-25 19:45:00,92.72,109.13799999999999,44.265,31.177 +2020-10-25 20:00:00,95.91,107.9,39.717,31.177 +2020-10-25 20:15:00,98.51,106.665,39.717,31.177 +2020-10-25 20:30:00,93.22,106.344,39.717,31.177 +2020-10-25 20:45:00,87.29,103.89200000000001,39.717,31.177 +2020-10-25 21:00:00,89.17,100.29299999999999,39.224000000000004,31.177 +2020-10-25 21:15:00,87.17,100.712,39.224000000000004,31.177 +2020-10-25 21:30:00,90.1,100.595,39.224000000000004,31.177 +2020-10-25 21:45:00,88.38,98.32,39.224000000000004,31.177 +2020-10-25 22:00:00,85.43,95.274,33.518,31.177 +2020-10-25 22:15:00,83.95,91.87799999999999,33.518,31.177 +2020-10-25 22:30:00,78.09,87.24700000000001,33.518,31.177 +2020-10-25 22:45:00,78.18,83.186,33.518,31.177 +2020-10-25 23:00:00,78.0,77.503,33.518,31.177 +2020-10-25 23:15:00,83.24,76.22399999999999,33.518,31.177 +2020-10-25 23:30:00,81.26,73.999,33.518,31.177 +2020-10-25 23:45:00,79.19,73.21600000000001,33.518,31.177 +2020-10-26 00:00:00,70.49,62.706,34.301,31.349 +2020-10-26 00:15:00,74.87,62.949,34.301,31.349 +2020-10-26 00:30:00,78.69,62.718999999999994,34.301,31.349 +2020-10-26 00:45:00,81.84,62.592,34.301,31.349 +2020-10-26 01:00:00,75.6,63.79600000000001,34.143,31.349 +2020-10-26 01:15:00,71.72,63.619,34.143,31.349 +2020-10-26 01:30:00,75.5,63.11600000000001,34.143,31.349 +2020-10-26 01:45:00,77.08,62.928999999999995,34.143,31.349 +2020-10-26 02:00:00,76.26,64.08800000000001,33.650999999999996,31.349 +2020-10-26 02:15:00,72.33,63.838,33.650999999999996,31.349 +2020-10-26 02:30:00,72.88,64.815,33.650999999999996,31.349 +2020-10-26 02:45:00,75.86,65.26100000000001,33.650999999999996,31.349 +2020-10-26 03:00:00,73.71,68.73,32.599000000000004,31.349 +2020-10-26 03:15:00,76.24,70.116,32.599000000000004,31.349 +2020-10-26 03:30:00,71.02,70.158,32.599000000000004,31.349 +2020-10-26 03:45:00,78.2,71.275,32.599000000000004,31.349 +2020-10-26 04:00:00,79.63,82.025,33.785,31.349 +2020-10-26 04:15:00,78.32,91.931,33.785,31.349 +2020-10-26 04:30:00,77.2,91.984,33.785,31.349 +2020-10-26 04:45:00,76.44,93.176,33.785,31.349 +2020-10-26 05:00:00,81.4,119.296,41.285,31.349 +2020-10-26 05:15:00,86.72,144.952,41.285,31.349 +2020-10-26 05:30:00,94.41,139.7,41.285,31.349 +2020-10-26 05:45:00,100.77,131.119,41.285,31.349 +2020-10-26 06:00:00,111.1,130.539,60.486000000000004,31.349 +2020-10-26 06:15:00,109.54,133.99,60.486000000000004,31.349 +2020-10-26 06:30:00,116.42,133.387,60.486000000000004,31.349 +2020-10-26 06:45:00,125.54,134.597,60.486000000000004,31.349 +2020-10-26 07:00:00,128.36,135.40200000000002,74.012,31.349 +2020-10-26 07:15:00,127.02,138.408,74.012,31.349 +2020-10-26 07:30:00,129.02,139.22899999999998,74.012,31.349 +2020-10-26 07:45:00,130.69,139.71200000000002,74.012,31.349 +2020-10-26 08:00:00,133.0,139.673,69.569,31.349 +2020-10-26 08:15:00,130.26,139.901,69.569,31.349 +2020-10-26 08:30:00,131.6,137.61700000000002,69.569,31.349 +2020-10-26 08:45:00,131.65,136.181,69.569,31.349 +2020-10-26 09:00:00,132.1,132.289,66.152,31.349 +2020-10-26 09:15:00,133.34,129.095,66.152,31.349 +2020-10-26 09:30:00,133.68,128.327,66.152,31.349 +2020-10-26 09:45:00,134.8,127.196,66.152,31.349 +2020-10-26 10:00:00,135.34,124.896,62.923,31.349 +2020-10-26 10:15:00,134.92,124.164,62.923,31.349 +2020-10-26 10:30:00,135.66,122.366,62.923,31.349 +2020-10-26 10:45:00,136.84,121.25299999999999,62.923,31.349 +2020-10-26 11:00:00,136.57,117.12899999999999,61.522,31.349 +2020-10-26 11:15:00,138.31,117.39399999999999,61.522,31.349 +2020-10-26 11:30:00,137.5,118.719,61.522,31.349 +2020-10-26 11:45:00,136.55,118.765,61.522,31.349 +2020-10-26 12:00:00,132.39,115.801,58.632,31.349 +2020-10-26 12:15:00,133.44,115.056,58.632,31.349 +2020-10-26 12:30:00,136.05,114.31200000000001,58.632,31.349 +2020-10-26 12:45:00,136.12,114.579,58.632,31.349 +2020-10-26 13:00:00,131.73,114.663,59.06,31.349 +2020-10-26 13:15:00,133.41,113.785,59.06,31.349 +2020-10-26 13:30:00,132.28,112.412,59.06,31.349 +2020-10-26 13:45:00,129.34,112.303,59.06,31.349 +2020-10-26 14:00:00,128.88,111.329,59.791000000000004,31.349 +2020-10-26 14:15:00,130.35,111.32799999999999,59.791000000000004,31.349 +2020-10-26 14:30:00,130.63,110.51799999999999,59.791000000000004,31.349 +2020-10-26 14:45:00,129.71,110.73700000000001,59.791000000000004,31.349 +2020-10-26 15:00:00,133.57,110.221,61.148,31.349 +2020-10-26 15:15:00,130.84,109.76799999999999,61.148,31.349 +2020-10-26 15:30:00,129.48,110.12,61.148,31.349 +2020-10-26 15:45:00,127.89,110.32600000000001,61.148,31.349 +2020-10-26 16:00:00,129.63,111.01299999999999,66.009,31.349 +2020-10-26 16:15:00,130.73,111.325,66.009,31.349 +2020-10-26 16:30:00,128.87,111.488,66.009,31.349 +2020-10-26 16:45:00,131.75,110.07600000000001,66.009,31.349 +2020-10-26 17:00:00,135.6,109.988,73.683,31.349 +2020-10-26 17:15:00,135.29,110.84899999999999,73.683,31.349 +2020-10-26 17:30:00,138.5,110.64399999999999,73.683,31.349 +2020-10-26 17:45:00,138.2,111.103,73.683,31.349 +2020-10-26 18:00:00,139.43,112.59899999999999,72.848,31.349 +2020-10-26 18:15:00,137.29,111.71,72.848,31.349 +2020-10-26 18:30:00,135.93,110.73100000000001,72.848,31.349 +2020-10-26 18:45:00,133.94,113.649,72.848,31.349 +2020-10-26 19:00:00,131.63,115.131,71.139,31.349 +2020-10-26 19:15:00,128.86,113.73299999999999,71.139,31.349 +2020-10-26 19:30:00,126.98,113.314,71.139,31.349 +2020-10-26 19:45:00,125.67,112.5,71.139,31.349 +2020-10-26 20:00:00,117.03,109.485,69.667,31.349 +2020-10-26 20:15:00,114.91,107.57,69.667,31.349 +2020-10-26 20:30:00,114.37,106.48299999999999,69.667,31.349 +2020-10-26 20:45:00,109.01,104.954,69.667,31.349 +2020-10-26 21:00:00,112.26,101.359,61.166000000000004,31.349 +2020-10-26 21:15:00,112.02,101.35799999999999,61.166000000000004,31.349 +2020-10-26 21:30:00,107.75,101.01100000000001,61.166000000000004,31.349 +2020-10-26 21:45:00,102.71,98.35700000000001,61.166000000000004,31.349 +2020-10-26 22:00:00,96.59,92.899,52.772,31.349 +2020-10-26 22:15:00,95.82,89.686,52.772,31.349 +2020-10-26 22:30:00,95.29,78.227,52.772,31.349 +2020-10-26 22:45:00,98.09,71.666,52.772,31.349 +2020-10-26 23:00:00,93.54,66.396,45.136,31.349 +2020-10-26 23:15:00,86.6,65.73100000000001,45.136,31.349 +2020-10-26 23:30:00,84.41,64.919,45.136,31.349 +2020-10-26 23:45:00,88.99,65.25399999999999,45.136,31.349 +2020-10-27 00:00:00,81.74,61.629,47.35,31.349 +2020-10-27 00:15:00,82.4,62.966,47.35,31.349 +2020-10-27 00:30:00,77.99,62.614,47.35,31.349 +2020-10-27 00:45:00,77.23,62.376000000000005,47.35,31.349 +2020-10-27 01:00:00,80.95,63.243,43.424,31.349 +2020-10-27 01:15:00,82.6,62.918,43.424,31.349 +2020-10-27 01:30:00,79.87,62.45399999999999,43.424,31.349 +2020-10-27 01:45:00,72.99,62.169,43.424,31.349 +2020-10-27 02:00:00,72.38,63.107,41.778999999999996,31.349 +2020-10-27 02:15:00,71.66,63.367,41.778999999999996,31.349 +2020-10-27 02:30:00,79.74,63.854,41.778999999999996,31.349 +2020-10-27 02:45:00,81.55,64.459,41.778999999999996,31.349 +2020-10-27 03:00:00,82.6,67.071,40.771,31.349 +2020-10-27 03:15:00,75.83,68.518,40.771,31.349 +2020-10-27 03:30:00,74.84,68.78,40.771,31.349 +2020-10-27 03:45:00,75.64,69.439,40.771,31.349 +2020-10-27 04:00:00,78.97,79.508,41.816,31.349 +2020-10-27 04:15:00,82.85,89.28299999999999,41.816,31.349 +2020-10-27 04:30:00,84.37,89.12799999999999,41.816,31.349 +2020-10-27 04:45:00,85.9,91.14399999999999,41.816,31.349 +2020-10-27 05:00:00,85.7,120.477,45.842,31.349 +2020-10-27 05:15:00,86.54,146.40200000000002,45.842,31.349 +2020-10-27 05:30:00,89.88,140.503,45.842,31.349 +2020-10-27 05:45:00,92.99,131.537,45.842,31.349 +2020-10-27 06:00:00,102.93,130.881,59.12,31.349 +2020-10-27 06:15:00,108.45,135.22899999999998,59.12,31.349 +2020-10-27 06:30:00,113.1,134.179,59.12,31.349 +2020-10-27 06:45:00,115.04,134.792,59.12,31.349 +2020-10-27 07:00:00,122.18,135.57399999999998,70.33,31.349 +2020-10-27 07:15:00,119.35,138.393,70.33,31.349 +2020-10-27 07:30:00,121.17,138.977,70.33,31.349 +2020-10-27 07:45:00,122.32,139.118,70.33,31.349 +2020-10-27 08:00:00,123.86,139.123,67.788,31.349 +2020-10-27 08:15:00,121.9,138.599,67.788,31.349 +2020-10-27 08:30:00,120.05,136.322,67.788,31.349 +2020-10-27 08:45:00,119.09,134.313,67.788,31.349 +2020-10-27 09:00:00,117.83,130.122,62.622,31.349 +2020-10-27 09:15:00,117.56,127.71700000000001,62.622,31.349 +2020-10-27 09:30:00,117.58,127.595,62.622,31.349 +2020-10-27 09:45:00,116.75,126.899,62.622,31.349 +2020-10-27 10:00:00,115.99,123.69200000000001,60.887,31.349 +2020-10-27 10:15:00,115.96,122.279,60.887,31.349 +2020-10-27 10:30:00,114.65,120.57,60.887,31.349 +2020-10-27 10:45:00,115.67,120.009,60.887,31.349 +2020-10-27 11:00:00,114.34,116.712,59.812,31.349 +2020-10-27 11:15:00,114.91,116.93299999999999,59.812,31.349 +2020-10-27 11:30:00,116.28,117.145,59.812,31.349 +2020-10-27 11:45:00,115.75,117.391,59.812,31.349 +2020-10-27 12:00:00,113.14,113.553,56.614,31.349 +2020-10-27 12:15:00,114.82,112.695,56.614,31.349 +2020-10-27 12:30:00,122.4,112.73200000000001,56.614,31.349 +2020-10-27 12:45:00,118.13,113.09700000000001,56.614,31.349 +2020-10-27 13:00:00,120.98,112.76,56.824,31.349 +2020-10-27 13:15:00,123.1,112.37700000000001,56.824,31.349 +2020-10-27 13:30:00,120.06,111.669,56.824,31.349 +2020-10-27 13:45:00,116.95,111.295,56.824,31.349 +2020-10-27 14:00:00,111.93,110.604,57.623999999999995,31.349 +2020-10-27 14:15:00,110.15,110.633,57.623999999999995,31.349 +2020-10-27 14:30:00,114.67,110.348,57.623999999999995,31.349 +2020-10-27 14:45:00,116.3,110.22,57.623999999999995,31.349 +2020-10-27 15:00:00,118.01,109.37299999999999,59.724,31.349 +2020-10-27 15:15:00,119.23,109.48100000000001,59.724,31.349 +2020-10-27 15:30:00,118.98,109.921,59.724,31.349 +2020-10-27 15:45:00,123.51,110.039,59.724,31.349 +2020-10-27 16:00:00,124.34,110.655,61.64,31.349 +2020-10-27 16:15:00,123.37,111.288,61.64,31.349 +2020-10-27 16:30:00,126.21,111.66,61.64,31.349 +2020-10-27 16:45:00,127.32,110.74799999999999,61.64,31.349 +2020-10-27 17:00:00,132.95,111.009,68.962,31.349 +2020-10-27 17:15:00,130.54,112.081,68.962,31.349 +2020-10-27 17:30:00,133.6,112.05799999999999,68.962,31.349 +2020-10-27 17:45:00,132.78,112.322,68.962,31.349 +2020-10-27 18:00:00,133.9,113.34,69.149,31.349 +2020-10-27 18:15:00,131.39,112.79799999999999,69.149,31.349 +2020-10-27 18:30:00,130.49,111.552,69.149,31.349 +2020-10-27 18:45:00,129.9,114.807,69.149,31.349 +2020-10-27 19:00:00,126.61,115.82600000000001,68.832,31.349 +2020-10-27 19:15:00,124.87,114.351,68.832,31.349 +2020-10-27 19:30:00,122.2,113.476,68.832,31.349 +2020-10-27 19:45:00,121.07,112.803,68.832,31.349 +2020-10-27 20:00:00,114.52,110.06200000000001,66.403,31.349 +2020-10-27 20:15:00,112.08,107.171,66.403,31.349 +2020-10-27 20:30:00,108.46,106.601,66.403,31.349 +2020-10-27 20:45:00,105.79,104.941,66.403,31.349 +2020-10-27 21:00:00,98.15,101.363,57.352,31.349 +2020-10-27 21:15:00,94.41,101.166,57.352,31.349 +2020-10-27 21:30:00,92.13,100.529,57.352,31.349 +2020-10-27 21:45:00,91.04,98.061,57.352,31.349 +2020-10-27 22:00:00,84.86,93.559,51.148999999999994,31.349 +2020-10-27 22:15:00,81.56,90.044,51.148999999999994,31.349 +2020-10-27 22:30:00,78.97,78.791,51.148999999999994,31.349 +2020-10-27 22:45:00,75.04,72.378,51.148999999999994,31.349 +2020-10-27 23:00:00,69.33,66.797,41.8,31.349 +2020-10-27 23:15:00,72.04,66.328,41.8,31.349 +2020-10-27 23:30:00,67.62,65.33,41.8,31.349 +2020-10-27 23:45:00,70.34,65.508,41.8,31.349 +2020-10-28 00:00:00,66.64,61.961999999999996,42.269,31.349 +2020-10-28 00:15:00,63.47,63.285,42.269,31.349 +2020-10-28 00:30:00,62.17,62.938,42.269,31.349 +2020-10-28 00:45:00,59.22,62.693000000000005,42.269,31.349 +2020-10-28 01:00:00,59.46,63.573,38.527,31.349 +2020-10-28 01:15:00,59.73,63.266000000000005,38.527,31.349 +2020-10-28 01:30:00,57.69,62.818000000000005,38.527,31.349 +2020-10-28 01:45:00,59.75,62.528,38.527,31.349 +2020-10-28 02:00:00,58.9,63.477,36.393,31.349 +2020-10-28 02:15:00,57.99,63.747,36.393,31.349 +2020-10-28 02:30:00,58.66,64.222,36.393,31.349 +2020-10-28 02:45:00,59.76,64.822,36.393,31.349 +2020-10-28 03:00:00,58.64,67.422,36.167,31.349 +2020-10-28 03:15:00,59.18,68.89,36.167,31.349 +2020-10-28 03:30:00,59.1,69.155,36.167,31.349 +2020-10-28 03:45:00,59.8,69.797,36.167,31.349 +2020-10-28 04:00:00,57.35,79.88600000000001,38.092,31.349 +2020-10-28 04:15:00,60.36,89.689,38.092,31.349 +2020-10-28 04:30:00,61.45,89.531,38.092,31.349 +2020-10-28 04:45:00,62.49,91.555,38.092,31.349 +2020-10-28 05:00:00,64.56,120.95700000000001,42.268,31.349 +2020-10-28 05:15:00,64.41,146.945,42.268,31.349 +2020-10-28 05:30:00,63.43,141.032,42.268,31.349 +2020-10-28 05:45:00,60.47,132.036,42.268,31.349 +2020-10-28 06:00:00,64.37,131.36700000000002,60.158,31.349 +2020-10-28 06:15:00,65.72,135.72799999999998,60.158,31.349 +2020-10-28 06:30:00,65.45,134.7,60.158,31.349 +2020-10-28 06:45:00,65.86,135.322,60.158,31.349 +2020-10-28 07:00:00,68.96,136.10399999999998,74.792,31.349 +2020-10-28 07:15:00,70.01,138.934,74.792,31.349 +2020-10-28 07:30:00,71.67,139.547,74.792,31.349 +2020-10-28 07:45:00,73.31,139.689,74.792,31.349 +2020-10-28 08:00:00,76.29,139.70600000000002,70.499,31.349 +2020-10-28 08:15:00,75.92,139.159,70.499,31.349 +2020-10-28 08:30:00,76.39,136.907,70.499,31.349 +2020-10-28 08:45:00,76.44,134.873,70.499,31.349 +2020-10-28 09:00:00,75.16,130.675,68.892,31.349 +2020-10-28 09:15:00,75.44,128.268,68.892,31.349 +2020-10-28 09:30:00,72.53,128.134,68.892,31.349 +2020-10-28 09:45:00,73.66,127.415,68.892,31.349 +2020-10-28 10:00:00,72.88,124.2,66.88600000000001,31.349 +2020-10-28 10:15:00,69.24,122.749,66.88600000000001,31.349 +2020-10-28 10:30:00,71.4,121.02,66.88600000000001,31.349 +2020-10-28 10:45:00,72.71,120.443,66.88600000000001,31.349 +2020-10-28 11:00:00,72.82,117.149,66.187,31.349 +2020-10-28 11:15:00,74.56,117.351,66.187,31.349 +2020-10-28 11:30:00,75.37,117.56200000000001,66.187,31.349 +2020-10-28 11:45:00,76.16,117.794,66.187,31.349 +2020-10-28 12:00:00,73.91,113.936,62.18,31.349 +2020-10-28 12:15:00,72.6,113.075,62.18,31.349 +2020-10-28 12:30:00,71.55,113.145,62.18,31.349 +2020-10-28 12:45:00,70.09,113.51,62.18,31.349 +2020-10-28 13:00:00,70.36,113.141,62.23,31.349 +2020-10-28 13:15:00,67.51,112.76299999999999,62.23,31.349 +2020-10-28 13:30:00,65.99,112.054,62.23,31.349 +2020-10-28 13:45:00,66.82,111.676,62.23,31.349 +2020-10-28 14:00:00,67.12,110.936,63.721000000000004,31.349 +2020-10-28 14:15:00,67.37,110.98,63.721000000000004,31.349 +2020-10-28 14:30:00,69.07,110.73200000000001,63.721000000000004,31.349 +2020-10-28 14:45:00,72.24,110.602,63.721000000000004,31.349 +2020-10-28 15:00:00,74.87,109.736,66.523,31.349 +2020-10-28 15:15:00,75.32,109.86,66.523,31.349 +2020-10-28 15:30:00,79.14,110.337,66.523,31.349 +2020-10-28 15:45:00,80.15,110.46799999999999,66.523,31.349 +2020-10-28 16:00:00,83.7,111.055,69.679,31.349 +2020-10-28 16:15:00,83.65,111.71,69.679,31.349 +2020-10-28 16:30:00,85.79,112.07799999999999,69.679,31.349 +2020-10-28 16:45:00,87.82,111.21600000000001,69.679,31.349 +2020-10-28 17:00:00,95.0,111.43700000000001,75.04,31.349 +2020-10-28 17:15:00,96.91,112.52799999999999,75.04,31.349 +2020-10-28 17:30:00,100.33,112.508,75.04,31.349 +2020-10-28 17:45:00,101.95,112.79,75.04,31.349 +2020-10-28 18:00:00,102.58,113.801,75.915,31.349 +2020-10-28 18:15:00,101.4,113.235,75.915,31.349 +2020-10-28 18:30:00,100.78,111.999,75.915,31.349 +2020-10-28 18:45:00,99.5,115.25,75.915,31.349 +2020-10-28 19:00:00,96.55,116.27600000000001,74.66,31.349 +2020-10-28 19:15:00,96.95,114.795,74.66,31.349 +2020-10-28 19:30:00,94.44,113.90700000000001,74.66,31.349 +2020-10-28 19:45:00,93.81,113.212,74.66,31.349 +2020-10-28 20:00:00,97.85,110.491,71.204,31.349 +2020-10-28 20:15:00,98.96,107.59299999999999,71.204,31.349 +2020-10-28 20:30:00,93.72,106.994,71.204,31.349 +2020-10-28 20:45:00,96.99,105.316,71.204,31.349 +2020-10-28 21:00:00,88.01,101.735,61.052,31.349 +2020-10-28 21:15:00,91.89,101.527,61.052,31.349 +2020-10-28 21:30:00,86.26,100.899,61.052,31.349 +2020-10-28 21:45:00,85.22,98.413,61.052,31.349 +2020-10-28 22:00:00,82.78,93.904,54.691,31.349 +2020-10-28 22:15:00,84.41,90.37200000000001,54.691,31.349 +2020-10-28 22:30:00,80.28,79.148,54.691,31.349 +2020-10-28 22:45:00,82.44,72.742,54.691,31.349 +2020-10-28 23:00:00,82.46,67.175,45.18,31.349 +2020-10-28 23:15:00,86.27,66.678,45.18,31.349 +2020-10-28 23:30:00,83.78,65.682,45.18,31.349 +2020-10-28 23:45:00,82.95,65.851,45.18,31.349 +2020-10-29 00:00:00,77.65,62.294,42.746,31.349 +2020-10-29 00:15:00,79.71,63.602,42.746,31.349 +2020-10-29 00:30:00,79.87,63.261,42.746,31.349 +2020-10-29 00:45:00,70.04,63.008,42.746,31.349 +2020-10-29 01:00:00,74.52,63.9,40.025999999999996,31.349 +2020-10-29 01:15:00,77.14,63.611000000000004,40.025999999999996,31.349 +2020-10-29 01:30:00,78.1,63.178999999999995,40.025999999999996,31.349 +2020-10-29 01:45:00,74.52,62.885,40.025999999999996,31.349 +2020-10-29 02:00:00,74.6,63.843999999999994,38.154,31.349 +2020-10-29 02:15:00,78.3,64.126,38.154,31.349 +2020-10-29 02:30:00,77.12,64.58800000000001,38.154,31.349 +2020-10-29 02:45:00,73.83,65.185,38.154,31.349 +2020-10-29 03:00:00,77.13,67.771,37.575,31.349 +2020-10-29 03:15:00,78.81,69.26100000000001,37.575,31.349 +2020-10-29 03:30:00,79.06,69.528,37.575,31.349 +2020-10-29 03:45:00,73.2,70.152,37.575,31.349 +2020-10-29 04:00:00,76.0,80.26,39.154,31.349 +2020-10-29 04:15:00,81.59,90.094,39.154,31.349 +2020-10-29 04:30:00,84.79,89.934,39.154,31.349 +2020-10-29 04:45:00,83.0,91.965,39.154,31.349 +2020-10-29 05:00:00,83.0,121.43299999999999,44.085,31.349 +2020-10-29 05:15:00,86.43,147.484,44.085,31.349 +2020-10-29 05:30:00,90.66,141.559,44.085,31.349 +2020-10-29 05:45:00,100.19,132.532,44.085,31.349 +2020-10-29 06:00:00,111.83,131.852,57.49,31.349 +2020-10-29 06:15:00,117.74,136.226,57.49,31.349 +2020-10-29 06:30:00,119.59,135.217,57.49,31.349 +2020-10-29 06:45:00,115.34,135.85,57.49,31.349 +2020-10-29 07:00:00,122.6,136.632,73.617,31.349 +2020-10-29 07:15:00,123.1,139.474,73.617,31.349 +2020-10-29 07:30:00,124.09,140.114,73.617,31.349 +2020-10-29 07:45:00,126.48,140.257,73.617,31.349 +2020-10-29 08:00:00,126.46,140.285,69.281,31.349 +2020-10-29 08:15:00,123.29,139.715,69.281,31.349 +2020-10-29 08:30:00,119.21,137.487,69.281,31.349 +2020-10-29 08:45:00,118.47,135.429,69.281,31.349 +2020-10-29 09:00:00,118.0,131.224,63.926,31.349 +2020-10-29 09:15:00,122.76,128.815,63.926,31.349 +2020-10-29 09:30:00,119.63,128.67,63.926,31.349 +2020-10-29 09:45:00,122.87,127.926,63.926,31.349 +2020-10-29 10:00:00,122.23,124.705,59.442,31.349 +2020-10-29 10:15:00,119.89,123.21600000000001,59.442,31.349 +2020-10-29 10:30:00,124.6,121.46700000000001,59.442,31.349 +2020-10-29 10:45:00,131.0,120.874,59.442,31.349 +2020-10-29 11:00:00,127.83,117.583,56.771,31.349 +2020-10-29 11:15:00,128.86,117.766,56.771,31.349 +2020-10-29 11:30:00,130.16,117.978,56.771,31.349 +2020-10-29 11:45:00,131.01,118.196,56.771,31.349 +2020-10-29 12:00:00,130.57,114.31700000000001,53.701,31.349 +2020-10-29 12:15:00,130.91,113.45200000000001,53.701,31.349 +2020-10-29 12:30:00,133.3,113.556,53.701,31.349 +2020-10-29 12:45:00,130.48,113.921,53.701,31.349 +2020-10-29 13:00:00,133.45,113.51899999999999,52.364,31.349 +2020-10-29 13:15:00,130.71,113.147,52.364,31.349 +2020-10-29 13:30:00,128.95,112.436,52.364,31.349 +2020-10-29 13:45:00,129.8,112.055,52.364,31.349 +2020-10-29 14:00:00,130.29,111.265,53.419,31.349 +2020-10-29 14:15:00,129.67,111.324,53.419,31.349 +2020-10-29 14:30:00,128.02,111.11200000000001,53.419,31.349 +2020-10-29 14:45:00,130.31,110.98299999999999,53.419,31.349 +2020-10-29 15:00:00,127.71,110.096,56.744,31.349 +2020-10-29 15:15:00,126.9,110.236,56.744,31.349 +2020-10-29 15:30:00,126.36,110.75,56.744,31.349 +2020-10-29 15:45:00,125.0,110.89399999999999,56.744,31.349 +2020-10-29 16:00:00,125.03,111.45200000000001,60.458,31.349 +2020-10-29 16:15:00,124.56,112.12799999999999,60.458,31.349 +2020-10-29 16:30:00,124.0,112.494,60.458,31.349 +2020-10-29 16:45:00,128.25,111.682,60.458,31.349 +2020-10-29 17:00:00,134.32,111.861,66.295,31.349 +2020-10-29 17:15:00,137.45,112.973,66.295,31.349 +2020-10-29 17:30:00,135.07,112.95700000000001,66.295,31.349 +2020-10-29 17:45:00,135.2,113.255,66.295,31.349 +2020-10-29 18:00:00,134.97,114.259,68.468,31.349 +2020-10-29 18:15:00,133.97,113.67,68.468,31.349 +2020-10-29 18:30:00,134.41,112.444,68.468,31.349 +2020-10-29 18:45:00,130.82,115.691,68.468,31.349 +2020-10-29 19:00:00,127.46,116.72399999999999,66.39399999999999,31.349 +2020-10-29 19:15:00,126.41,115.23700000000001,66.39399999999999,31.349 +2020-10-29 19:30:00,124.92,114.338,66.39399999999999,31.349 +2020-10-29 19:45:00,123.49,113.619,66.39399999999999,31.349 +2020-10-29 20:00:00,123.79,110.91799999999999,63.183,31.349 +2020-10-29 20:15:00,121.13,108.01299999999999,63.183,31.349 +2020-10-29 20:30:00,115.55,107.385,63.183,31.349 +2020-10-29 20:45:00,110.22,105.69,63.183,31.349 +2020-10-29 21:00:00,106.12,102.105,55.133,31.349 +2020-10-29 21:15:00,108.93,101.885,55.133,31.349 +2020-10-29 21:30:00,108.46,101.26799999999999,55.133,31.349 +2020-10-29 21:45:00,104.99,98.762,55.133,31.349 +2020-10-29 22:00:00,95.45,94.24700000000001,50.111999999999995,31.349 +2020-10-29 22:15:00,94.84,90.696,50.111999999999995,31.349 +2020-10-29 22:30:00,95.34,79.503,50.111999999999995,31.349 +2020-10-29 22:45:00,96.16,73.104,50.111999999999995,31.349 +2020-10-29 23:00:00,90.51,67.551,44.536,31.349 +2020-10-29 23:15:00,87.23,67.025,44.536,31.349 +2020-10-29 23:30:00,86.68,66.032,44.536,31.349 +2020-10-29 23:45:00,87.36,66.191,44.536,31.349 +2020-10-30 00:00:00,85.77,61.242,42.291000000000004,31.349 +2020-10-30 00:15:00,82.09,62.739,42.291000000000004,31.349 +2020-10-30 00:30:00,77.43,62.463,42.291000000000004,31.349 +2020-10-30 00:45:00,82.66,62.458,42.291000000000004,31.349 +2020-10-30 01:00:00,80.41,63.026,41.008,31.349 +2020-10-30 01:15:00,82.12,62.924,41.008,31.349 +2020-10-30 01:30:00,75.47,62.736000000000004,41.008,31.349 +2020-10-30 01:45:00,77.24,62.371,41.008,31.349 +2020-10-30 02:00:00,74.28,63.827,39.521,31.349 +2020-10-30 02:15:00,74.78,64.03699999999999,39.521,31.349 +2020-10-30 02:30:00,79.52,65.142,39.521,31.349 +2020-10-30 02:45:00,81.93,65.428,39.521,31.349 +2020-10-30 03:00:00,80.63,67.885,39.812,31.349 +2020-10-30 03:15:00,75.97,69.27600000000001,39.812,31.349 +2020-10-30 03:30:00,78.26,69.422,39.812,31.349 +2020-10-30 03:45:00,82.39,70.611,39.812,31.349 +2020-10-30 04:00:00,82.18,80.916,41.22,31.349 +2020-10-30 04:15:00,78.3,89.902,41.22,31.349 +2020-10-30 04:30:00,84.06,90.31200000000001,41.22,31.349 +2020-10-30 04:45:00,88.56,91.48200000000001,41.22,31.349 +2020-10-30 05:00:00,92.62,120.163,45.115,31.349 +2020-10-30 05:15:00,89.69,147.474,45.115,31.349 +2020-10-30 05:30:00,95.75,142.15200000000002,45.115,31.349 +2020-10-30 05:45:00,102.23,132.844,45.115,31.349 +2020-10-30 06:00:00,113.59,132.496,59.06100000000001,31.349 +2020-10-30 06:15:00,111.04,136.235,59.06100000000001,31.349 +2020-10-30 06:30:00,113.71,134.79399999999998,59.06100000000001,31.349 +2020-10-30 06:45:00,116.04,136.179,59.06100000000001,31.349 +2020-10-30 07:00:00,119.06,136.855,71.874,31.349 +2020-10-30 07:15:00,120.84,140.64700000000002,71.874,31.349 +2020-10-30 07:30:00,122.72,140.326,71.874,31.349 +2020-10-30 07:45:00,122.52,139.918,71.874,31.349 +2020-10-30 08:00:00,125.5,139.739,68.439,31.349 +2020-10-30 08:15:00,124.47,139.237,68.439,31.349 +2020-10-30 08:30:00,127.07,137.506,68.439,31.349 +2020-10-30 08:45:00,127.1,134.52700000000002,68.439,31.349 +2020-10-30 09:00:00,128.83,129.542,65.523,31.349 +2020-10-30 09:15:00,129.4,128.264,65.523,31.349 +2020-10-30 09:30:00,128.5,127.581,65.523,31.349 +2020-10-30 09:45:00,127.31,126.919,65.523,31.349 +2020-10-30 10:00:00,126.26,122.965,62.005,31.349 +2020-10-30 10:15:00,124.62,121.74,62.005,31.349 +2020-10-30 10:30:00,123.49,120.156,62.005,31.349 +2020-10-30 10:45:00,124.03,119.26,62.005,31.349 +2020-10-30 11:00:00,124.17,116.04299999999999,60.351000000000006,31.349 +2020-10-30 11:15:00,126.28,115.26100000000001,60.351000000000006,31.349 +2020-10-30 11:30:00,123.52,116.325,60.351000000000006,31.349 +2020-10-30 11:45:00,123.86,116.17299999999999,60.351000000000006,31.349 +2020-10-30 12:00:00,121.54,113.084,55.331,31.349 +2020-10-30 12:15:00,125.28,110.75,55.331,31.349 +2020-10-30 12:30:00,124.06,111.024,55.331,31.349 +2020-10-30 12:45:00,121.96,111.383,55.331,31.349 +2020-10-30 13:00:00,118.71,111.73299999999999,53.361999999999995,31.349 +2020-10-30 13:15:00,120.56,111.917,53.361999999999995,31.349 +2020-10-30 13:30:00,118.3,111.51799999999999,53.361999999999995,31.349 +2020-10-30 13:45:00,120.01,111.213,53.361999999999995,31.349 +2020-10-30 14:00:00,117.73,109.399,51.708,31.349 +2020-10-30 14:15:00,118.43,109.535,51.708,31.349 +2020-10-30 14:30:00,118.52,110.236,51.708,31.349 +2020-10-30 14:45:00,119.61,110.02,51.708,31.349 +2020-10-30 15:00:00,120.23,108.8,54.571000000000005,31.349 +2020-10-30 15:15:00,118.83,108.60799999999999,54.571000000000005,31.349 +2020-10-30 15:30:00,118.31,108.04899999999999,54.571000000000005,31.349 +2020-10-30 15:45:00,119.66,108.585,54.571000000000005,31.349 +2020-10-30 16:00:00,120.97,108.147,58.662,31.349 +2020-10-30 16:15:00,120.45,109.209,58.662,31.349 +2020-10-30 16:30:00,122.73,109.552,58.662,31.349 +2020-10-30 16:45:00,126.37,108.40799999999999,58.662,31.349 +2020-10-30 17:00:00,132.24,109.404,65.941,31.349 +2020-10-30 17:15:00,131.66,110.236,65.941,31.349 +2020-10-30 17:30:00,135.32,110.119,65.941,31.349 +2020-10-30 17:45:00,131.92,110.234,65.941,31.349 +2020-10-30 18:00:00,131.8,111.662,65.628,31.349 +2020-10-30 18:15:00,129.88,110.432,65.628,31.349 +2020-10-30 18:30:00,128.86,109.383,65.628,31.349 +2020-10-30 18:45:00,128.89,112.803,65.628,31.349 +2020-10-30 19:00:00,127.22,114.73,63.662,31.349 +2020-10-30 19:15:00,123.33,114.22,63.662,31.349 +2020-10-30 19:30:00,121.1,113.117,63.662,31.349 +2020-10-30 19:45:00,121.23,111.685,63.662,31.349 +2020-10-30 20:00:00,115.04,108.969,61.945,31.349 +2020-10-30 20:15:00,110.74,106.413,61.945,31.349 +2020-10-30 20:30:00,109.01,105.51799999999999,61.945,31.349 +2020-10-30 20:45:00,106.5,103.742,61.945,31.349 +2020-10-30 21:00:00,100.01,101.007,53.903,31.349 +2020-10-30 21:15:00,102.44,101.75200000000001,53.903,31.349 +2020-10-30 21:30:00,100.98,101.102,53.903,31.349 +2020-10-30 21:45:00,94.15,98.95299999999999,53.903,31.349 +2020-10-30 22:00:00,87.77,94.88,48.403999999999996,31.349 +2020-10-30 22:15:00,85.26,91.131,48.403999999999996,31.349 +2020-10-30 22:30:00,84.58,85.432,48.403999999999996,31.349 +2020-10-30 22:45:00,83.7,81.27199999999999,48.403999999999996,31.349 +2020-10-30 23:00:00,82.16,76.253,41.07,31.349 +2020-10-30 23:15:00,81.37,73.979,41.07,31.349 +2020-10-30 23:30:00,73.71,71.40899999999999,41.07,31.349 +2020-10-30 23:45:00,71.13,71.156,41.07,31.349 +2020-10-31 00:00:00,72.45,61.597,38.989000000000004,31.177 +2020-10-31 00:15:00,73.37,59.941,38.989000000000004,31.177 +2020-10-31 00:30:00,73.61,59.854,38.989000000000004,31.177 +2020-10-31 00:45:00,71.83,60.141000000000005,38.989000000000004,31.177 +2020-10-31 01:00:00,68.78,61.233000000000004,35.275,31.177 +2020-10-31 01:15:00,71.23,61.393,35.275,31.177 +2020-10-31 01:30:00,69.97,60.773,35.275,31.177 +2020-10-31 01:45:00,65.93,60.555,35.275,31.177 +2020-10-31 02:00:00,64.99,61.573,32.838,31.177 +2020-10-31 02:15:00,69.96,61.156000000000006,32.838,31.177 +2020-10-31 02:30:00,68.68,61.831,32.838,31.177 +2020-10-31 02:45:00,66.64,62.625,32.838,31.177 +2020-10-31 03:00:00,65.79,65.196,32.418,31.177 +2020-10-31 03:15:00,67.38,65.55199999999999,32.418,31.177 +2020-10-31 03:30:00,67.91,65.406,32.418,31.177 +2020-10-31 03:45:00,63.45,66.92699999999999,32.418,31.177 +2020-10-31 04:00:00,60.12,74.21600000000001,32.099000000000004,31.177 +2020-10-31 04:15:00,61.24,80.874,32.099000000000004,31.177 +2020-10-31 04:30:00,62.55,80.10300000000001,32.099000000000004,31.177 +2020-10-31 04:45:00,62.68,81.078,32.099000000000004,31.177 +2020-10-31 05:00:00,63.12,96.679,32.926,31.177 +2020-10-31 05:15:00,62.57,108.109,32.926,31.177 +2020-10-31 05:30:00,63.2,103.416,32.926,31.177 +2020-10-31 05:45:00,65.37,98.848,32.926,31.177 +2020-10-31 06:00:00,68.19,111.434,35.069,31.177 +2020-10-31 06:15:00,69.79,126.461,35.069,31.177 +2020-10-31 06:30:00,71.11,120.191,35.069,31.177 +2020-10-31 06:45:00,73.82,114.679,35.069,31.177 +2020-10-31 07:00:00,75.79,113.76,40.906,31.177 +2020-10-31 07:15:00,77.22,115.145,40.906,31.177 +2020-10-31 07:30:00,78.86,116.89,40.906,31.177 +2020-10-31 07:45:00,81.1,118.516,40.906,31.177 +2020-10-31 08:00:00,83.23,121.64399999999999,46.603,31.177 +2020-10-31 08:15:00,84.49,123.396,46.603,31.177 +2020-10-31 08:30:00,86.25,123.77,46.603,31.177 +2020-10-31 08:45:00,88.76,123.838,46.603,31.177 +2020-10-31 09:00:00,92.45,120.73899999999999,49.935,31.177 +2020-10-31 09:15:00,93.68,120.148,49.935,31.177 +2020-10-31 09:30:00,94.02,120.255,49.935,31.177 +2020-10-31 09:45:00,94.02,119.835,49.935,31.177 +2020-10-31 10:00:00,92.45,117.68,47.585,31.177 +2020-10-31 10:15:00,93.24,117.001,47.585,31.177 +2020-10-31 10:30:00,92.64,115.77,47.585,31.177 +2020-10-31 10:45:00,92.15,114.821,47.585,31.177 +2020-10-31 11:00:00,93.34,111.95100000000001,43.376999999999995,31.177 +2020-10-31 11:15:00,96.08,111.00299999999999,43.376999999999995,31.177 +2020-10-31 11:30:00,95.83,111.277,43.376999999999995,31.177 +2020-10-31 11:45:00,96.13,111.28,43.376999999999995,31.177 +2020-10-31 12:00:00,95.48,107.751,40.855,31.177 +2020-10-31 12:15:00,95.57,106.947,40.855,31.177 +2020-10-31 12:30:00,92.12,106.645,40.855,31.177 +2020-10-31 12:45:00,91.78,106.042,40.855,31.177 +2020-10-31 13:00:00,88.92,105.20100000000001,37.251,31.177 +2020-10-31 13:15:00,89.25,105.492,37.251,31.177 +2020-10-31 13:30:00,88.99,104.34899999999999,37.251,31.177 +2020-10-31 13:45:00,89.08,103.85700000000001,37.251,31.177 +2020-10-31 14:00:00,86.2,103.321,38.548,31.177 +2020-10-31 14:15:00,87.18,103.538,38.548,31.177 +2020-10-31 14:30:00,86.99,103.285,38.548,31.177 +2020-10-31 14:45:00,87.31,102.726,38.548,31.177 +2020-10-31 15:00:00,87.48,101.215,42.883,31.177 +2020-10-31 15:15:00,87.93,101.897,42.883,31.177 +2020-10-31 15:30:00,87.72,102.617,42.883,31.177 +2020-10-31 15:45:00,88.54,103.33200000000001,42.883,31.177 +2020-10-31 16:00:00,90.83,103.56700000000001,48.143,31.177 +2020-10-31 16:15:00,90.48,104.383,48.143,31.177 +2020-10-31 16:30:00,92.56,105.337,48.143,31.177 +2020-10-31 16:45:00,97.53,104.829,48.143,31.177 +2020-10-31 17:00:00,102.04,105.22399999999999,55.25,31.177 +2020-10-31 17:15:00,100.68,106.541,55.25,31.177 +2020-10-31 17:30:00,102.51,106.81700000000001,55.25,31.177 +2020-10-31 17:45:00,102.66,108.331,55.25,31.177 +2020-10-31 18:00:00,104.1,110.088,57.506,31.177 +2020-10-31 18:15:00,107.0,111.04,57.506,31.177 +2020-10-31 18:30:00,103.91,110.087,57.506,31.177 +2020-10-31 18:45:00,104.55,111.25,57.506,31.177 +2020-10-31 19:00:00,100.55,113.781,55.528999999999996,31.177 +2020-10-31 19:15:00,99.24,112.38600000000001,55.528999999999996,31.177 +2020-10-31 19:30:00,97.68,111.81,55.528999999999996,31.177 +2020-10-31 19:45:00,96.75,111.583,55.528999999999996,31.177 +2020-10-31 20:00:00,91.74,110.46700000000001,46.166000000000004,31.177 +2020-10-31 20:15:00,88.35,109.18799999999999,46.166000000000004,31.177 +2020-10-31 20:30:00,86.31,108.696,46.166000000000004,31.177 +2020-10-31 20:45:00,83.91,106.139,46.166000000000004,31.177 +2020-10-31 21:00:00,80.56,102.51899999999999,40.406,31.177 +2020-10-31 21:15:00,80.4,102.87,40.406,31.177 +2020-10-31 21:30:00,79.05,102.81200000000001,40.406,31.177 +2020-10-31 21:45:00,77.96,100.42200000000001,40.406,31.177 +2020-10-31 22:00:00,75.29,97.337,39.616,31.177 +2020-10-31 22:15:00,74.6,93.835,39.616,31.177 +2020-10-31 22:30:00,71.03,89.384,39.616,31.177 +2020-10-31 22:45:00,70.49,85.363,39.616,31.177 +2020-10-31 23:00:00,67.0,79.763,32.205,31.177 +2020-10-31 23:15:00,66.8,78.317,32.205,31.177 +2020-10-31 23:30:00,64.91,76.102,32.205,31.177 +2020-10-31 23:45:00,63.18,75.262,32.205,31.177 +2020-11-01 00:00:00,58.91,73.844,36.376,32.047 +2020-11-01 00:15:00,57.64,71.598,36.376,32.047 +2020-11-01 00:30:00,58.09,71.771,36.376,32.047 +2020-11-01 00:45:00,56.8,72.655,36.376,32.047 +2020-11-01 01:00:00,53.61,74.10300000000001,32.992,32.047 +2020-11-01 01:15:00,55.48,74.691,32.992,32.047 +2020-11-01 01:30:00,54.86,74.157,32.992,32.047 +2020-11-01 01:45:00,55.56,74.169,32.992,32.047 +2020-11-01 02:00:00,53.33,75.35600000000001,32.327,32.047 +2020-11-01 02:15:00,53.19,74.95,32.327,32.047 +2020-11-01 02:30:00,53.38,75.499,32.327,32.047 +2020-11-01 02:45:00,53.54,76.763,32.327,32.047 +2020-11-01 03:00:00,52.29,79.542,31.169,32.047 +2020-11-01 03:15:00,53.27,79.608,31.169,32.047 +2020-11-01 03:30:00,53.38,80.009,31.169,32.047 +2020-11-01 03:45:00,53.67,81.561,31.169,32.047 +2020-11-01 04:00:00,53.04,90.10600000000001,30.796,32.047 +2020-11-01 04:15:00,53.69,97.82600000000001,30.796,32.047 +2020-11-01 04:30:00,54.71,97.304,30.796,32.047 +2020-11-01 04:45:00,54.7,98.21600000000001,30.796,32.047 +2020-11-01 05:00:00,56.28,114.69200000000001,30.848000000000003,32.047 +2020-11-01 05:15:00,56.84,126.919,30.848000000000003,32.047 +2020-11-01 05:30:00,56.12,122.334,30.848000000000003,32.047 +2020-11-01 05:45:00,57.2,117.79299999999999,30.848000000000003,32.047 +2020-11-01 06:00:00,58.93,131.375,31.166,32.047 +2020-11-01 06:15:00,60.16,148.164,31.166,32.047 +2020-11-01 06:30:00,60.09,141.499,31.166,32.047 +2020-11-01 06:45:00,61.33,135.033,31.166,32.047 +2020-11-01 07:00:00,62.62,134.209,33.527,32.047 +2020-11-01 07:15:00,64.53,135.998,33.527,32.047 +2020-11-01 07:30:00,66.19,138.07299999999998,33.527,32.047 +2020-11-01 07:45:00,69.32,140.029,33.527,32.047 +2020-11-01 08:00:00,72.18,143.476,36.616,32.047 +2020-11-01 08:15:00,73.05,145.618,36.616,32.047 +2020-11-01 08:30:00,75.6,146.314,36.616,32.047 +2020-11-01 08:45:00,76.81,146.583,36.616,32.047 +2020-11-01 09:00:00,78.39,143.313,37.857,32.047 +2020-11-01 09:15:00,79.58,142.33100000000002,37.857,32.047 +2020-11-01 09:30:00,79.36,141.849,37.857,32.047 +2020-11-01 09:45:00,80.15,141.034,37.857,32.047 +2020-11-01 10:00:00,78.79,139.36,36.319,32.047 +2020-11-01 10:15:00,81.18,138.553,36.319,32.047 +2020-11-01 10:30:00,82.06,137.161,36.319,32.047 +2020-11-01 10:45:00,84.37,135.914,36.319,32.047 +2020-11-01 11:00:00,87.44,132.654,37.236999999999995,32.047 +2020-11-01 11:15:00,90.16,131.516,37.236999999999995,32.047 +2020-11-01 11:30:00,92.79,131.694,37.236999999999995,32.047 +2020-11-01 11:45:00,94.47,132.332,37.236999999999995,32.047 +2020-11-01 12:00:00,93.72,128.334,34.871,32.047 +2020-11-01 12:15:00,91.05,127.323,34.871,32.047 +2020-11-01 12:30:00,88.73,126.853,34.871,32.047 +2020-11-01 12:45:00,87.98,126.25399999999999,34.871,32.047 +2020-11-01 13:00:00,81.86,125.57600000000001,29.738000000000003,32.047 +2020-11-01 13:15:00,79.48,125.912,29.738000000000003,32.047 +2020-11-01 13:30:00,78.24,124.734,29.738000000000003,32.047 +2020-11-01 13:45:00,77.77,124.292,29.738000000000003,32.047 +2020-11-01 14:00:00,78.82,124.43,27.333000000000002,32.047 +2020-11-01 14:15:00,77.97,124.331,27.333000000000002,32.047 +2020-11-01 14:30:00,78.18,123.743,27.333000000000002,32.047 +2020-11-01 14:45:00,79.25,123.29,27.333000000000002,32.047 +2020-11-01 15:00:00,79.18,121.579,28.232,32.047 +2020-11-01 15:15:00,79.37,122.45100000000001,28.232,32.047 +2020-11-01 15:30:00,79.55,122.805,28.232,32.047 +2020-11-01 15:45:00,81.75,123.443,28.232,32.047 +2020-11-01 16:00:00,83.82,125.545,32.815,32.047 +2020-11-01 16:15:00,83.89,127.041,32.815,32.047 +2020-11-01 16:30:00,84.8,127.854,32.815,32.047 +2020-11-01 16:45:00,89.87,127.169,32.815,32.047 +2020-11-01 17:00:00,96.6,129.106,43.068999999999996,32.047 +2020-11-01 17:15:00,96.91,130.164,43.068999999999996,32.047 +2020-11-01 17:30:00,99.73,130.485,43.068999999999996,32.047 +2020-11-01 17:45:00,101.95,131.416,43.068999999999996,32.047 +2020-11-01 18:00:00,100.66,134.56799999999998,50.498999999999995,32.047 +2020-11-01 18:15:00,100.99,135.72299999999998,50.498999999999995,32.047 +2020-11-01 18:30:00,97.5,134.084,50.498999999999995,32.047 +2020-11-01 18:45:00,96.13,135.263,50.498999999999995,32.047 +2020-11-01 19:00:00,94.03,137.83700000000002,53.481,32.047 +2020-11-01 19:15:00,94.0,136.382,53.481,32.047 +2020-11-01 19:30:00,92.13,135.606,53.481,32.047 +2020-11-01 19:45:00,92.89,135.071,53.481,32.047 +2020-11-01 20:00:00,90.69,132.186,51.687,32.047 +2020-11-01 20:15:00,94.58,130.61700000000002,51.687,32.047 +2020-11-01 20:30:00,92.24,130.408,51.687,32.047 +2020-11-01 20:45:00,86.66,127.39,51.687,32.047 +2020-11-01 21:00:00,83.37,123.02,47.674,32.047 +2020-11-01 21:15:00,84.21,122.93,47.674,32.047 +2020-11-01 21:30:00,88.7,122.751,47.674,32.047 +2020-11-01 21:45:00,90.47,120.36399999999999,47.674,32.047 +2020-11-01 22:00:00,90.97,116.14,48.178000000000004,32.047 +2020-11-01 22:15:00,86.98,112.27799999999999,48.178000000000004,32.047 +2020-11-01 22:30:00,83.62,106.661,48.178000000000004,32.047 +2020-11-01 22:45:00,82.66,102.23,48.178000000000004,32.047 +2020-11-01 23:00:00,81.93,96.52,42.553999999999995,32.047 +2020-11-01 23:15:00,85.7,94.42200000000001,42.553999999999995,32.047 +2020-11-01 23:30:00,82.06,92.15700000000001,42.553999999999995,32.047 +2020-11-01 23:45:00,78.61,90.99799999999999,42.553999999999995,32.047 +2020-11-02 00:00:00,77.71,77.483,37.177,32.225 +2020-11-02 00:15:00,78.04,77.413,37.177,32.225 +2020-11-02 00:30:00,75.0,77.514,37.177,32.225 +2020-11-02 00:45:00,71.86,77.888,37.177,32.225 +2020-11-02 01:00:00,73.26,79.508,35.358000000000004,32.225 +2020-11-02 01:15:00,75.19,79.788,35.358000000000004,32.225 +2020-11-02 01:30:00,74.29,79.453,35.358000000000004,32.225 +2020-11-02 01:45:00,71.36,79.48899999999999,35.358000000000004,32.225 +2020-11-02 02:00:00,74.46,80.84899999999999,35.03,32.225 +2020-11-02 02:15:00,76.19,80.941,35.03,32.225 +2020-11-02 02:30:00,73.58,81.756,35.03,32.225 +2020-11-02 02:45:00,70.49,82.568,35.03,32.225 +2020-11-02 03:00:00,71.48,86.30799999999999,34.394,32.225 +2020-11-02 03:15:00,76.54,87.72,34.394,32.225 +2020-11-02 03:30:00,78.06,88.242,34.394,32.225 +2020-11-02 03:45:00,72.8,89.243,34.394,32.225 +2020-11-02 04:00:00,77.28,101.759,34.421,32.225 +2020-11-02 04:15:00,80.21,113.29299999999999,34.421,32.225 +2020-11-02 04:30:00,81.33,113.90799999999999,34.421,32.225 +2020-11-02 04:45:00,78.06,115.085,34.421,32.225 +2020-11-02 05:00:00,85.36,144.252,39.435,32.225 +2020-11-02 05:15:00,91.98,173.24200000000002,39.435,32.225 +2020-11-02 05:30:00,96.04,168.166,39.435,32.225 +2020-11-02 05:45:00,95.92,158.836,39.435,32.225 +2020-11-02 06:00:00,104.79,157.326,55.685,32.225 +2020-11-02 06:15:00,114.4,161.115,55.685,32.225 +2020-11-02 06:30:00,121.39,161.122,55.685,32.225 +2020-11-02 06:45:00,125.87,162.344,55.685,32.225 +2020-11-02 07:00:00,126.76,163.525,66.837,32.225 +2020-11-02 07:15:00,126.88,167.03400000000002,66.837,32.225 +2020-11-02 07:30:00,127.09,168.299,66.837,32.225 +2020-11-02 07:45:00,125.37,168.74099999999999,66.837,32.225 +2020-11-02 08:00:00,127.99,168.55700000000002,72.217,32.225 +2020-11-02 08:15:00,126.32,168.81599999999997,72.217,32.225 +2020-11-02 08:30:00,126.89,166.49400000000003,72.217,32.225 +2020-11-02 08:45:00,124.03,164.62900000000002,72.217,32.225 +2020-11-02 09:00:00,123.27,160.44799999999998,66.117,32.225 +2020-11-02 09:15:00,123.92,156.477,66.117,32.225 +2020-11-02 09:30:00,125.15,154.977,66.117,32.225 +2020-11-02 09:45:00,128.93,153.493,66.117,32.225 +2020-11-02 10:00:00,124.84,151.434,62.1,32.225 +2020-11-02 10:15:00,123.92,150.312,62.1,32.225 +2020-11-02 10:30:00,124.83,148.13299999999998,62.1,32.225 +2020-11-02 10:45:00,125.47,146.829,62.1,32.225 +2020-11-02 11:00:00,125.02,141.958,60.021,32.225 +2020-11-02 11:15:00,116.55,142.15,60.021,32.225 +2020-11-02 11:30:00,119.3,143.525,60.021,32.225 +2020-11-02 11:45:00,122.68,144.034,60.021,32.225 +2020-11-02 12:00:00,116.26,140.8,56.75899999999999,32.225 +2020-11-02 12:15:00,116.59,139.82399999999998,56.75899999999999,32.225 +2020-11-02 12:30:00,124.27,139.215,56.75899999999999,32.225 +2020-11-02 12:45:00,119.06,139.694,56.75899999999999,32.225 +2020-11-02 13:00:00,118.02,139.783,56.04600000000001,32.225 +2020-11-02 13:15:00,119.4,138.85399999999998,56.04600000000001,32.225 +2020-11-02 13:30:00,122.02,137.35399999999998,56.04600000000001,32.225 +2020-11-02 13:45:00,119.1,137.218,56.04600000000001,32.225 +2020-11-02 14:00:00,122.77,136.59,55.475,32.225 +2020-11-02 14:15:00,120.69,136.239,55.475,32.225 +2020-11-02 14:30:00,120.41,135.251,55.475,32.225 +2020-11-02 14:45:00,124.04,135.44,55.475,32.225 +2020-11-02 15:00:00,120.94,134.887,57.048,32.225 +2020-11-02 15:15:00,120.7,134.558,57.048,32.225 +2020-11-02 15:30:00,120.66,134.607,57.048,32.225 +2020-11-02 15:45:00,121.41,134.784,57.048,32.225 +2020-11-02 16:00:00,122.05,137.142,59.06,32.225 +2020-11-02 16:15:00,124.08,138.155,59.06,32.225 +2020-11-02 16:30:00,124.36,138.067,59.06,32.225 +2020-11-02 16:45:00,129.23,136.614,59.06,32.225 +2020-11-02 17:00:00,134.05,137.868,65.419,32.225 +2020-11-02 17:15:00,132.55,138.431,65.419,32.225 +2020-11-02 17:30:00,137.22,138.244,65.419,32.225 +2020-11-02 17:45:00,135.22,138.03,65.419,32.225 +2020-11-02 18:00:00,135.07,141.039,69.345,32.225 +2020-11-02 18:15:00,132.86,140.007,69.345,32.225 +2020-11-02 18:30:00,131.02,138.54399999999998,69.345,32.225 +2020-11-02 18:45:00,131.86,141.345,69.345,32.225 +2020-11-02 19:00:00,128.07,142.715,73.825,32.225 +2020-11-02 19:15:00,126.32,140.951,73.825,32.225 +2020-11-02 19:30:00,127.01,140.357,73.825,32.225 +2020-11-02 19:45:00,122.74,139.009,73.825,32.225 +2020-11-02 20:00:00,119.02,134.085,64.027,32.225 +2020-11-02 20:15:00,113.3,131.38299999999998,64.027,32.225 +2020-11-02 20:30:00,108.72,130.102,64.027,32.225 +2020-11-02 20:45:00,106.21,128.234,64.027,32.225 +2020-11-02 21:00:00,107.92,123.986,57.952,32.225 +2020-11-02 21:15:00,109.71,123.275,57.952,32.225 +2020-11-02 21:30:00,108.09,122.71700000000001,57.952,32.225 +2020-11-02 21:45:00,100.41,119.898,57.952,32.225 +2020-11-02 22:00:00,93.26,112.988,53.031000000000006,32.225 +2020-11-02 22:15:00,93.34,108.98299999999999,53.031000000000006,32.225 +2020-11-02 22:30:00,98.42,95.46700000000001,53.031000000000006,32.225 +2020-11-02 22:45:00,95.12,87.84,53.031000000000006,32.225 +2020-11-02 23:00:00,89.39,82.635,45.085,32.225 +2020-11-02 23:15:00,85.21,81.652,45.085,32.225 +2020-11-02 23:30:00,86.99,81.206,45.085,32.225 +2020-11-02 23:45:00,87.54,81.581,45.085,32.225 +2020-11-03 00:00:00,84.2,76.499,42.843,32.225 +2020-11-03 00:15:00,78.55,77.664,42.843,32.225 +2020-11-03 00:30:00,76.57,77.46300000000001,42.843,32.225 +2020-11-03 00:45:00,82.07,77.531,42.843,32.225 +2020-11-03 01:00:00,80.46,78.831,41.542,32.225 +2020-11-03 01:15:00,79.44,78.893,41.542,32.225 +2020-11-03 01:30:00,74.87,78.63,41.542,32.225 +2020-11-03 01:45:00,72.5,78.641,41.542,32.225 +2020-11-03 02:00:00,78.57,79.813,40.19,32.225 +2020-11-03 02:15:00,80.48,80.32300000000001,40.19,32.225 +2020-11-03 02:30:00,80.8,80.593,40.19,32.225 +2020-11-03 02:45:00,74.67,81.544,40.19,32.225 +2020-11-03 03:00:00,71.93,84.294,39.626,32.225 +2020-11-03 03:15:00,79.33,85.59299999999999,39.626,32.225 +2020-11-03 03:30:00,82.08,86.404,39.626,32.225 +2020-11-03 03:45:00,82.13,87.045,39.626,32.225 +2020-11-03 04:00:00,77.08,98.926,40.196999999999996,32.225 +2020-11-03 04:15:00,77.12,110.274,40.196999999999996,32.225 +2020-11-03 04:30:00,82.35,110.641,40.196999999999996,32.225 +2020-11-03 04:45:00,87.06,112.781,40.196999999999996,32.225 +2020-11-03 05:00:00,91.11,145.749,43.378,32.225 +2020-11-03 05:15:00,88.11,174.916,43.378,32.225 +2020-11-03 05:30:00,88.09,168.97,43.378,32.225 +2020-11-03 05:45:00,96.86,159.315,43.378,32.225 +2020-11-03 06:00:00,106.9,157.497,55.691,32.225 +2020-11-03 06:15:00,109.83,162.39700000000002,55.691,32.225 +2020-11-03 06:30:00,115.64,161.89700000000002,55.691,32.225 +2020-11-03 06:45:00,121.32,162.537,55.691,32.225 +2020-11-03 07:00:00,121.08,163.66,65.567,32.225 +2020-11-03 07:15:00,122.41,166.97799999999998,65.567,32.225 +2020-11-03 07:30:00,122.07,167.926,65.567,32.225 +2020-11-03 07:45:00,122.18,168.12400000000002,65.567,32.225 +2020-11-03 08:00:00,123.78,168.005,73.001,32.225 +2020-11-03 08:15:00,123.3,167.40099999999998,73.001,32.225 +2020-11-03 08:30:00,121.01,165.054,73.001,32.225 +2020-11-03 08:45:00,120.18,162.636,73.001,32.225 +2020-11-03 09:00:00,119.27,158.009,67.08800000000001,32.225 +2020-11-03 09:15:00,120.13,155.065,67.08800000000001,32.225 +2020-11-03 09:30:00,119.45,154.263,67.08800000000001,32.225 +2020-11-03 09:45:00,119.38,153.096,67.08800000000001,32.225 +2020-11-03 10:00:00,117.17,150.135,62.803000000000004,32.225 +2020-11-03 10:15:00,116.37,148.19,62.803000000000004,32.225 +2020-11-03 10:30:00,114.86,146.122,62.803000000000004,32.225 +2020-11-03 10:45:00,114.46,145.343,62.803000000000004,32.225 +2020-11-03 11:00:00,115.53,141.503,60.155,32.225 +2020-11-03 11:15:00,116.0,141.577,60.155,32.225 +2020-11-03 11:30:00,114.96,141.749,60.155,32.225 +2020-11-03 11:45:00,115.15,142.586,60.155,32.225 +2020-11-03 12:00:00,114.54,138.3,56.845,32.225 +2020-11-03 12:15:00,113.41,137.136,56.845,32.225 +2020-11-03 12:30:00,116.09,137.35399999999998,56.845,32.225 +2020-11-03 12:45:00,113.87,137.849,56.845,32.225 +2020-11-03 13:00:00,112.05,137.47799999999998,56.163000000000004,32.225 +2020-11-03 13:15:00,113.4,136.88,56.163000000000004,32.225 +2020-11-03 13:30:00,111.98,136.209,56.163000000000004,32.225 +2020-11-03 13:45:00,112.78,135.895,56.163000000000004,32.225 +2020-11-03 14:00:00,114.01,135.56,55.934,32.225 +2020-11-03 14:15:00,114.62,135.273,55.934,32.225 +2020-11-03 14:30:00,114.22,134.879,55.934,32.225 +2020-11-03 14:45:00,116.32,134.763,55.934,32.225 +2020-11-03 15:00:00,118.75,133.835,57.43899999999999,32.225 +2020-11-03 15:15:00,121.12,134.054,57.43899999999999,32.225 +2020-11-03 15:30:00,118.99,134.238,57.43899999999999,32.225 +2020-11-03 15:45:00,120.3,134.248,57.43899999999999,32.225 +2020-11-03 16:00:00,121.23,136.631,59.968999999999994,32.225 +2020-11-03 16:15:00,121.12,138.031,59.968999999999994,32.225 +2020-11-03 16:30:00,124.29,138.269,59.968999999999994,32.225 +2020-11-03 16:45:00,128.38,137.31,59.968999999999994,32.225 +2020-11-03 17:00:00,134.36,138.976,67.428,32.225 +2020-11-03 17:15:00,135.38,139.727,67.428,32.225 +2020-11-03 17:30:00,136.98,139.846,67.428,32.225 +2020-11-03 17:45:00,136.7,139.438,67.428,32.225 +2020-11-03 18:00:00,135.03,142.02700000000002,71.533,32.225 +2020-11-03 18:15:00,133.99,141.156,71.533,32.225 +2020-11-03 18:30:00,132.72,139.4,71.533,32.225 +2020-11-03 18:45:00,132.44,142.667,71.533,32.225 +2020-11-03 19:00:00,129.7,143.67,73.32300000000001,32.225 +2020-11-03 19:15:00,127.73,141.774,73.32300000000001,32.225 +2020-11-03 19:30:00,125.23,140.636,73.32300000000001,32.225 +2020-11-03 19:45:00,124.06,139.406,73.32300000000001,32.225 +2020-11-03 20:00:00,116.4,134.749,64.166,32.225 +2020-11-03 20:15:00,113.06,131.075,64.166,32.225 +2020-11-03 20:30:00,111.89,130.452,64.166,32.225 +2020-11-03 20:45:00,108.23,128.349,64.166,32.225 +2020-11-03 21:00:00,111.71,123.95299999999999,57.891999999999996,32.225 +2020-11-03 21:15:00,112.07,123.279,57.891999999999996,32.225 +2020-11-03 21:30:00,109.48,122.31299999999999,57.891999999999996,32.225 +2020-11-03 21:45:00,100.8,119.70200000000001,57.891999999999996,32.225 +2020-11-03 22:00:00,96.06,113.992,53.242,32.225 +2020-11-03 22:15:00,98.84,109.67299999999999,53.242,32.225 +2020-11-03 22:30:00,98.89,96.368,53.242,32.225 +2020-11-03 22:45:00,97.23,88.929,53.242,32.225 +2020-11-03 23:00:00,87.29,83.465,46.665,32.225 +2020-11-03 23:15:00,90.27,82.43700000000001,46.665,32.225 +2020-11-03 23:30:00,89.3,81.75399999999999,46.665,32.225 +2020-11-03 23:45:00,90.61,81.89,46.665,32.225 +2020-11-04 00:00:00,81.4,76.873,43.16,32.225 +2020-11-04 00:15:00,84.07,78.01899999999999,43.16,32.225 +2020-11-04 00:30:00,85.61,77.822,43.16,32.225 +2020-11-04 00:45:00,83.69,77.87899999999999,43.16,32.225 +2020-11-04 01:00:00,75.16,79.202,40.972,32.225 +2020-11-04 01:15:00,82.28,79.28,40.972,32.225 +2020-11-04 01:30:00,82.05,79.033,40.972,32.225 +2020-11-04 01:45:00,82.13,79.03699999999999,40.972,32.225 +2020-11-04 02:00:00,77.14,80.223,39.749,32.225 +2020-11-04 02:15:00,83.18,80.742,39.749,32.225 +2020-11-04 02:30:00,81.85,81.001,39.749,32.225 +2020-11-04 02:45:00,79.64,81.949,39.749,32.225 +2020-11-04 03:00:00,77.05,84.684,39.422,32.225 +2020-11-04 03:15:00,82.52,86.007,39.422,32.225 +2020-11-04 03:30:00,83.16,86.821,39.422,32.225 +2020-11-04 03:45:00,81.55,87.447,39.422,32.225 +2020-11-04 04:00:00,77.98,99.337,40.505,32.225 +2020-11-04 04:15:00,84.43,110.712,40.505,32.225 +2020-11-04 04:30:00,87.82,111.073,40.505,32.225 +2020-11-04 04:45:00,88.51,113.22,40.505,32.225 +2020-11-04 05:00:00,88.07,146.239,43.397,32.225 +2020-11-04 05:15:00,92.6,175.447,43.397,32.225 +2020-11-04 05:30:00,99.67,169.497,43.397,32.225 +2020-11-04 05:45:00,101.58,159.82,43.397,32.225 +2020-11-04 06:00:00,103.46,157.997,55.218,32.225 +2020-11-04 06:15:00,112.23,162.908,55.218,32.225 +2020-11-04 06:30:00,114.12,162.44,55.218,32.225 +2020-11-04 06:45:00,117.78,163.09799999999998,55.218,32.225 +2020-11-04 07:00:00,121.0,164.22,67.39,32.225 +2020-11-04 07:15:00,123.07,167.551,67.39,32.225 +2020-11-04 07:30:00,121.54,168.52599999999998,67.39,32.225 +2020-11-04 07:45:00,123.46,168.72799999999998,67.39,32.225 +2020-11-04 08:00:00,126.53,168.62400000000002,74.345,32.225 +2020-11-04 08:15:00,124.13,168.00099999999998,74.345,32.225 +2020-11-04 08:30:00,124.39,165.68,74.345,32.225 +2020-11-04 08:45:00,125.06,163.233,74.345,32.225 +2020-11-04 09:00:00,120.85,158.594,69.336,32.225 +2020-11-04 09:15:00,122.69,155.651,69.336,32.225 +2020-11-04 09:30:00,127.17,154.84,69.336,32.225 +2020-11-04 09:45:00,119.89,153.649,69.336,32.225 +2020-11-04 10:00:00,117.85,150.679,64.291,32.225 +2020-11-04 10:15:00,119.47,148.695,64.291,32.225 +2020-11-04 10:30:00,118.23,146.60299999999998,64.291,32.225 +2020-11-04 10:45:00,117.75,145.809,64.291,32.225 +2020-11-04 11:00:00,117.87,141.967,62.20399999999999,32.225 +2020-11-04 11:15:00,117.63,142.02100000000002,62.20399999999999,32.225 +2020-11-04 11:30:00,117.7,142.192,62.20399999999999,32.225 +2020-11-04 11:45:00,119.73,143.015,62.20399999999999,32.225 +2020-11-04 12:00:00,117.89,138.71,59.042,32.225 +2020-11-04 12:15:00,116.62,137.545,59.042,32.225 +2020-11-04 12:30:00,119.41,137.797,59.042,32.225 +2020-11-04 12:45:00,114.95,138.29399999999998,59.042,32.225 +2020-11-04 13:00:00,118.41,137.885,57.907,32.225 +2020-11-04 13:15:00,117.16,137.295,57.907,32.225 +2020-11-04 13:30:00,115.27,136.624,57.907,32.225 +2020-11-04 13:45:00,116.77,136.303,57.907,32.225 +2020-11-04 14:00:00,114.41,135.916,58.358000000000004,32.225 +2020-11-04 14:15:00,113.25,135.64700000000002,58.358000000000004,32.225 +2020-11-04 14:30:00,113.2,135.291,58.358000000000004,32.225 +2020-11-04 14:45:00,116.71,135.17600000000002,58.358000000000004,32.225 +2020-11-04 15:00:00,118.53,134.237,59.348,32.225 +2020-11-04 15:15:00,117.22,134.471,59.348,32.225 +2020-11-04 15:30:00,115.9,134.694,59.348,32.225 +2020-11-04 15:45:00,117.62,134.718,59.348,32.225 +2020-11-04 16:00:00,119.43,137.075,61.413999999999994,32.225 +2020-11-04 16:15:00,119.61,138.499,61.413999999999994,32.225 +2020-11-04 16:30:00,124.61,138.737,61.413999999999994,32.225 +2020-11-04 16:45:00,127.54,137.829,61.413999999999994,32.225 +2020-11-04 17:00:00,135.41,139.454,67.107,32.225 +2020-11-04 17:15:00,134.88,140.226,67.107,32.225 +2020-11-04 17:30:00,134.97,140.349,67.107,32.225 +2020-11-04 17:45:00,134.76,139.954,67.107,32.225 +2020-11-04 18:00:00,134.73,142.542,71.92,32.225 +2020-11-04 18:15:00,133.15,141.637,71.92,32.225 +2020-11-04 18:30:00,132.19,139.892,71.92,32.225 +2020-11-04 18:45:00,131.93,143.155,71.92,32.225 +2020-11-04 19:00:00,128.13,144.165,75.09,32.225 +2020-11-04 19:15:00,126.83,142.259,75.09,32.225 +2020-11-04 19:30:00,125.21,141.106,75.09,32.225 +2020-11-04 19:45:00,126.42,139.845,75.09,32.225 +2020-11-04 20:00:00,120.08,135.208,65.977,32.225 +2020-11-04 20:15:00,113.28,131.525,65.977,32.225 +2020-11-04 20:30:00,111.02,130.87,65.977,32.225 +2020-11-04 20:45:00,112.13,128.757,65.977,32.225 +2020-11-04 21:00:00,108.11,124.35700000000001,58.798,32.225 +2020-11-04 21:15:00,107.66,123.671,58.798,32.225 +2020-11-04 21:30:00,109.28,122.713,58.798,32.225 +2020-11-04 21:45:00,103.93,120.087,58.798,32.225 +2020-11-04 22:00:00,97.92,114.374,54.486000000000004,32.225 +2020-11-04 22:15:00,93.55,110.039,54.486000000000004,32.225 +2020-11-04 22:30:00,95.7,96.777,54.486000000000004,32.225 +2020-11-04 22:45:00,98.22,89.345,54.486000000000004,32.225 +2020-11-04 23:00:00,93.29,83.88600000000001,47.783,32.225 +2020-11-04 23:15:00,92.59,82.83200000000001,47.783,32.225 +2020-11-04 23:30:00,89.1,82.152,47.783,32.225 +2020-11-04 23:45:00,89.25,82.274,47.783,32.225 +2020-11-05 00:00:00,85.13,77.245,43.88,32.225 +2020-11-05 00:15:00,81.55,78.372,43.88,32.225 +2020-11-05 00:30:00,84.52,78.18,43.88,32.225 +2020-11-05 00:45:00,83.95,78.225,43.88,32.225 +2020-11-05 01:00:00,78.92,79.571,42.242,32.225 +2020-11-05 01:15:00,78.1,79.663,42.242,32.225 +2020-11-05 01:30:00,81.46,79.433,42.242,32.225 +2020-11-05 01:45:00,82.78,79.43,42.242,32.225 +2020-11-05 02:00:00,79.05,80.63,40.918,32.225 +2020-11-05 02:15:00,78.82,81.15899999999999,40.918,32.225 +2020-11-05 02:30:00,81.15,81.407,40.918,32.225 +2020-11-05 02:45:00,85.55,82.351,40.918,32.225 +2020-11-05 03:00:00,79.23,85.072,40.411,32.225 +2020-11-05 03:15:00,74.81,86.42,40.411,32.225 +2020-11-05 03:30:00,82.28,87.23700000000001,40.411,32.225 +2020-11-05 03:45:00,82.7,87.84700000000001,40.411,32.225 +2020-11-05 04:00:00,84.49,99.74700000000001,41.246,32.225 +2020-11-05 04:15:00,80.91,111.145,41.246,32.225 +2020-11-05 04:30:00,84.02,111.501,41.246,32.225 +2020-11-05 04:45:00,88.63,113.65700000000001,41.246,32.225 +2020-11-05 05:00:00,89.89,146.725,44.533,32.225 +2020-11-05 05:15:00,85.19,175.975,44.533,32.225 +2020-11-05 05:30:00,88.1,170.021,44.533,32.225 +2020-11-05 05:45:00,93.43,160.321,44.533,32.225 +2020-11-05 06:00:00,102.82,158.494,55.005,32.225 +2020-11-05 06:15:00,110.75,163.417,55.005,32.225 +2020-11-05 06:30:00,115.53,162.97799999999998,55.005,32.225 +2020-11-05 06:45:00,126.41,163.656,55.005,32.225 +2020-11-05 07:00:00,128.69,164.77700000000002,64.597,32.225 +2020-11-05 07:15:00,123.86,168.12,64.597,32.225 +2020-11-05 07:30:00,127.33,169.122,64.597,32.225 +2020-11-05 07:45:00,126.84,169.326,64.597,32.225 +2020-11-05 08:00:00,128.0,169.237,71.71600000000001,32.225 +2020-11-05 08:15:00,129.17,168.595,71.71600000000001,32.225 +2020-11-05 08:30:00,128.65,166.301,71.71600000000001,32.225 +2020-11-05 08:45:00,128.37,163.826,71.71600000000001,32.225 +2020-11-05 09:00:00,127.46,159.174,66.51899999999999,32.225 +2020-11-05 09:15:00,128.89,156.231,66.51899999999999,32.225 +2020-11-05 09:30:00,127.36,155.411,66.51899999999999,32.225 +2020-11-05 09:45:00,127.69,154.197,66.51899999999999,32.225 +2020-11-05 10:00:00,124.33,151.218,63.04,32.225 +2020-11-05 10:15:00,121.71,149.195,63.04,32.225 +2020-11-05 10:30:00,118.24,147.08,63.04,32.225 +2020-11-05 10:45:00,119.63,146.269,63.04,32.225 +2020-11-05 11:00:00,119.67,142.42700000000002,60.998000000000005,32.225 +2020-11-05 11:15:00,125.95,142.46,60.998000000000005,32.225 +2020-11-05 11:30:00,128.57,142.63,60.998000000000005,32.225 +2020-11-05 11:45:00,128.14,143.44,60.998000000000005,32.225 +2020-11-05 12:00:00,125.75,139.116,58.27,32.225 +2020-11-05 12:15:00,124.99,137.951,58.27,32.225 +2020-11-05 12:30:00,126.45,138.237,58.27,32.225 +2020-11-05 12:45:00,127.2,138.736,58.27,32.225 +2020-11-05 13:00:00,125.78,138.29,57.196000000000005,32.225 +2020-11-05 13:15:00,126.04,137.708,57.196000000000005,32.225 +2020-11-05 13:30:00,123.81,137.035,57.196000000000005,32.225 +2020-11-05 13:45:00,124.92,136.709,57.196000000000005,32.225 +2020-11-05 14:00:00,127.64,136.27,57.38399999999999,32.225 +2020-11-05 14:15:00,128.62,136.016,57.38399999999999,32.225 +2020-11-05 14:30:00,130.34,135.69899999999998,57.38399999999999,32.225 +2020-11-05 14:45:00,127.29,135.585,57.38399999999999,32.225 +2020-11-05 15:00:00,129.48,134.634,58.647,32.225 +2020-11-05 15:15:00,129.34,134.884,58.647,32.225 +2020-11-05 15:30:00,127.64,135.14600000000002,58.647,32.225 +2020-11-05 15:45:00,127.96,135.18200000000002,58.647,32.225 +2020-11-05 16:00:00,131.92,137.515,60.083999999999996,32.225 +2020-11-05 16:15:00,131.35,138.964,60.083999999999996,32.225 +2020-11-05 16:30:00,131.61,139.2,60.083999999999996,32.225 +2020-11-05 16:45:00,134.19,138.344,60.083999999999996,32.225 +2020-11-05 17:00:00,137.92,139.92700000000002,65.85600000000001,32.225 +2020-11-05 17:15:00,136.96,140.72,65.85600000000001,32.225 +2020-11-05 17:30:00,137.47,140.84799999999998,65.85600000000001,32.225 +2020-11-05 17:45:00,138.29,140.466,65.85600000000001,32.225 +2020-11-05 18:00:00,139.48,143.053,69.855,32.225 +2020-11-05 18:15:00,134.15,142.115,69.855,32.225 +2020-11-05 18:30:00,133.51,140.38,69.855,32.225 +2020-11-05 18:45:00,132.8,143.64,69.855,32.225 +2020-11-05 19:00:00,131.09,144.657,74.015,32.225 +2020-11-05 19:15:00,127.89,142.741,74.015,32.225 +2020-11-05 19:30:00,128.05,141.57299999999998,74.015,32.225 +2020-11-05 19:45:00,123.88,140.283,74.015,32.225 +2020-11-05 20:00:00,116.5,135.664,65.316,32.225 +2020-11-05 20:15:00,113.48,131.972,65.316,32.225 +2020-11-05 20:30:00,112.84,131.285,65.316,32.225 +2020-11-05 20:45:00,114.31,129.164,65.316,32.225 +2020-11-05 21:00:00,103.83,124.757,58.403999999999996,32.225 +2020-11-05 21:15:00,105.69,124.059,58.403999999999996,32.225 +2020-11-05 21:30:00,103.3,123.11,58.403999999999996,32.225 +2020-11-05 21:45:00,102.93,120.469,58.403999999999996,32.225 +2020-11-05 22:00:00,97.89,114.755,54.092,32.225 +2020-11-05 22:15:00,97.8,110.404,54.092,32.225 +2020-11-05 22:30:00,92.88,97.184,54.092,32.225 +2020-11-05 22:45:00,97.46,89.76,54.092,32.225 +2020-11-05 23:00:00,92.45,84.305,48.18600000000001,32.225 +2020-11-05 23:15:00,91.31,83.226,48.18600000000001,32.225 +2020-11-05 23:30:00,83.3,82.54899999999999,48.18600000000001,32.225 +2020-11-05 23:45:00,84.68,82.65700000000001,48.18600000000001,32.225 +2020-11-06 00:00:00,84.7,76.2,45.18899999999999,32.225 +2020-11-06 00:15:00,85.23,77.523,45.18899999999999,32.225 +2020-11-06 00:30:00,83.88,77.358,45.18899999999999,32.225 +2020-11-06 00:45:00,80.5,77.637,45.18899999999999,32.225 +2020-11-06 01:00:00,80.34,78.648,43.256,32.225 +2020-11-06 01:15:00,81.37,79.095,43.256,32.225 +2020-11-06 01:30:00,77.99,79.031,43.256,32.225 +2020-11-06 01:45:00,77.75,78.985,43.256,32.225 +2020-11-06 02:00:00,79.46,80.635,42.312,32.225 +2020-11-06 02:15:00,81.87,81.078,42.312,32.225 +2020-11-06 02:30:00,75.94,81.99,42.312,32.225 +2020-11-06 02:45:00,73.82,82.675,42.312,32.225 +2020-11-06 03:00:00,72.73,85.07600000000001,41.833,32.225 +2020-11-06 03:15:00,81.36,86.537,41.833,32.225 +2020-11-06 03:30:00,82.16,87.24600000000001,41.833,32.225 +2020-11-06 03:45:00,82.46,88.412,41.833,32.225 +2020-11-06 04:00:00,78.14,100.52,42.732,32.225 +2020-11-06 04:15:00,80.31,111.135,42.732,32.225 +2020-11-06 04:30:00,83.97,112.02799999999999,42.732,32.225 +2020-11-06 04:45:00,89.09,113.204,42.732,32.225 +2020-11-06 05:00:00,92.15,145.32399999999998,46.254,32.225 +2020-11-06 05:15:00,86.95,175.96,46.254,32.225 +2020-11-06 05:30:00,90.34,170.75799999999998,46.254,32.225 +2020-11-06 05:45:00,99.94,160.809,46.254,32.225 +2020-11-06 06:00:00,111.88,159.36700000000002,56.76,32.225 +2020-11-06 06:15:00,114.2,163.43200000000002,56.76,32.225 +2020-11-06 06:30:00,122.58,162.452,56.76,32.225 +2020-11-06 06:45:00,120.37,164.13,56.76,32.225 +2020-11-06 07:00:00,125.85,164.983,66.029,32.225 +2020-11-06 07:15:00,126.83,169.363,66.029,32.225 +2020-11-06 07:30:00,126.69,169.503,66.029,32.225 +2020-11-06 07:45:00,128.85,169.049,66.029,32.225 +2020-11-06 08:00:00,132.52,168.55,73.128,32.225 +2020-11-06 08:15:00,131.81,167.88299999999998,73.128,32.225 +2020-11-06 08:30:00,131.12,166.232,73.128,32.225 +2020-11-06 08:45:00,131.33,162.619,73.128,32.225 +2020-11-06 09:00:00,132.45,157.394,68.23100000000001,32.225 +2020-11-06 09:15:00,134.02,155.541,68.23100000000001,32.225 +2020-11-06 09:30:00,135.36,154.16899999999998,68.23100000000001,32.225 +2020-11-06 09:45:00,135.72,152.999,68.23100000000001,32.225 +2020-11-06 10:00:00,135.71,149.14,64.733,32.225 +2020-11-06 10:15:00,136.19,147.489,64.733,32.225 +2020-11-06 10:30:00,134.9,145.493,64.733,32.225 +2020-11-06 10:45:00,134.66,144.32399999999998,64.733,32.225 +2020-11-06 11:00:00,134.81,140.532,62.0,32.225 +2020-11-06 11:15:00,135.06,139.54399999999998,62.0,32.225 +2020-11-06 11:30:00,134.53,140.829,62.0,32.225 +2020-11-06 11:45:00,137.14,141.335,62.0,32.225 +2020-11-06 12:00:00,134.12,137.924,57.876999999999995,32.225 +2020-11-06 12:15:00,133.37,135.04399999999998,57.876999999999995,32.225 +2020-11-06 12:30:00,132.61,135.516,57.876999999999995,32.225 +2020-11-06 12:45:00,131.3,136.129,57.876999999999995,32.225 +2020-11-06 13:00:00,128.69,136.524,55.585,32.225 +2020-11-06 13:15:00,127.97,136.601,55.585,32.225 +2020-11-06 13:30:00,124.2,136.194,55.585,32.225 +2020-11-06 13:45:00,123.92,135.91299999999998,55.585,32.225 +2020-11-06 14:00:00,118.95,134.342,54.5,32.225 +2020-11-06 14:15:00,120.9,134.113,54.5,32.225 +2020-11-06 14:30:00,121.51,134.691,54.5,32.225 +2020-11-06 14:45:00,120.58,134.575,54.5,32.225 +2020-11-06 15:00:00,122.67,133.238,55.131,32.225 +2020-11-06 15:15:00,118.7,133.108,55.131,32.225 +2020-11-06 15:30:00,121.37,132.126,55.131,32.225 +2020-11-06 15:45:00,120.79,132.526,55.131,32.225 +2020-11-06 16:00:00,122.13,133.756,56.8,32.225 +2020-11-06 16:15:00,122.5,135.602,56.8,32.225 +2020-11-06 16:30:00,127.43,135.842,56.8,32.225 +2020-11-06 16:45:00,129.4,134.688,56.8,32.225 +2020-11-06 17:00:00,133.06,137.007,63.428999999999995,32.225 +2020-11-06 17:15:00,134.26,137.476,63.428999999999995,32.225 +2020-11-06 17:30:00,132.78,137.447,63.428999999999995,32.225 +2020-11-06 17:45:00,131.33,136.857,63.428999999999995,32.225 +2020-11-06 18:00:00,134.08,139.959,67.915,32.225 +2020-11-06 18:15:00,130.5,138.378,67.915,32.225 +2020-11-06 18:30:00,129.8,136.88299999999998,67.915,32.225 +2020-11-06 18:45:00,133.03,140.289,67.915,32.225 +2020-11-06 19:00:00,126.8,142.261,69.428,32.225 +2020-11-06 19:15:00,125.27,141.47899999999998,69.428,32.225 +2020-11-06 19:30:00,122.86,140.039,69.428,32.225 +2020-11-06 19:45:00,124.09,138.034,69.428,32.225 +2020-11-06 20:00:00,114.98,133.422,60.56100000000001,32.225 +2020-11-06 20:15:00,113.0,130.02100000000002,60.56100000000001,32.225 +2020-11-06 20:30:00,109.07,129.093,60.56100000000001,32.225 +2020-11-06 20:45:00,109.58,127.03299999999999,60.56100000000001,32.225 +2020-11-06 21:00:00,102.28,123.459,55.18600000000001,32.225 +2020-11-06 21:15:00,106.27,123.67200000000001,55.18600000000001,32.225 +2020-11-06 21:30:00,104.99,122.706,55.18600000000001,32.225 +2020-11-06 21:45:00,96.99,120.491,55.18600000000001,32.225 +2020-11-06 22:00:00,88.19,115.375,51.433,32.225 +2020-11-06 22:15:00,86.68,110.825,51.433,32.225 +2020-11-06 22:30:00,82.9,103.704,51.433,32.225 +2020-11-06 22:45:00,82.11,98.971,51.433,32.225 +2020-11-06 23:00:00,77.89,93.86200000000001,46.201,32.225 +2020-11-06 23:15:00,81.36,90.863,46.201,32.225 +2020-11-06 23:30:00,75.34,88.525,46.201,32.225 +2020-11-06 23:45:00,74.67,88.12899999999999,46.201,32.225 +2020-11-07 00:00:00,72.4,75.25399999999999,42.576,32.047 +2020-11-07 00:15:00,76.3,73.567,42.576,32.047 +2020-11-07 00:30:00,76.56,74.063,42.576,32.047 +2020-11-07 00:45:00,74.82,74.486,42.576,32.047 +2020-11-07 01:00:00,70.47,76.05,39.34,32.047 +2020-11-07 01:15:00,73.1,76.13,39.34,32.047 +2020-11-07 01:30:00,72.65,75.42,39.34,32.047 +2020-11-07 01:45:00,66.71,75.745,39.34,32.047 +2020-11-07 02:00:00,66.31,77.455,37.582,32.047 +2020-11-07 02:15:00,71.52,77.346,37.582,32.047 +2020-11-07 02:30:00,68.13,77.218,37.582,32.047 +2020-11-07 02:45:00,68.12,78.291,37.582,32.047 +2020-11-07 03:00:00,64.49,80.518,36.523,32.047 +2020-11-07 03:15:00,70.44,80.949,36.523,32.047 +2020-11-07 03:30:00,71.27,80.803,36.523,32.047 +2020-11-07 03:45:00,70.23,82.641,36.523,32.047 +2020-11-07 04:00:00,62.21,91.421,36.347,32.047 +2020-11-07 04:15:00,62.81,100.102,36.347,32.047 +2020-11-07 04:30:00,63.23,98.935,36.347,32.047 +2020-11-07 04:45:00,63.56,99.926,36.347,32.047 +2020-11-07 05:00:00,64.36,118.78299999999999,36.407,32.047 +2020-11-07 05:15:00,65.17,133.07,36.407,32.047 +2020-11-07 05:30:00,64.94,128.732,36.407,32.047 +2020-11-07 05:45:00,64.25,124.027,36.407,32.047 +2020-11-07 06:00:00,70.3,138.67,38.228,32.047 +2020-11-07 06:15:00,70.95,156.255,38.228,32.047 +2020-11-07 06:30:00,68.59,150.749,38.228,32.047 +2020-11-07 06:45:00,70.43,145.471,38.228,32.047 +2020-11-07 07:00:00,75.46,143.015,41.905,32.047 +2020-11-07 07:15:00,76.33,146.082,41.905,32.047 +2020-11-07 07:30:00,78.63,148.593,41.905,32.047 +2020-11-07 07:45:00,81.45,151.06799999999998,41.905,32.047 +2020-11-07 08:00:00,83.9,153.178,46.051,32.047 +2020-11-07 08:15:00,83.65,154.811,46.051,32.047 +2020-11-07 08:30:00,84.05,154.248,46.051,32.047 +2020-11-07 08:45:00,85.96,153.055,46.051,32.047 +2020-11-07 09:00:00,87.34,150.039,46.683,32.047 +2020-11-07 09:15:00,87.81,148.872,46.683,32.047 +2020-11-07 09:30:00,86.74,148.283,46.683,32.047 +2020-11-07 09:45:00,86.17,147.033,46.683,32.047 +2020-11-07 10:00:00,86.08,143.433,44.425,32.047 +2020-11-07 10:15:00,85.25,141.98,44.425,32.047 +2020-11-07 10:30:00,85.52,139.95600000000002,44.425,32.047 +2020-11-07 10:45:00,85.84,139.55,44.425,32.047 +2020-11-07 11:00:00,86.36,135.795,42.148999999999994,32.047 +2020-11-07 11:15:00,87.42,134.597,42.148999999999994,32.047 +2020-11-07 11:30:00,87.9,135.195,42.148999999999994,32.047 +2020-11-07 11:45:00,89.42,135.241,42.148999999999994,32.047 +2020-11-07 12:00:00,86.24,131.194,39.683,32.047 +2020-11-07 12:15:00,84.54,129.049,39.683,32.047 +2020-11-07 12:30:00,83.03,129.739,39.683,32.047 +2020-11-07 12:45:00,82.28,130.041,39.683,32.047 +2020-11-07 13:00:00,80.02,129.766,37.154,32.047 +2020-11-07 13:15:00,79.68,128.201,37.154,32.047 +2020-11-07 13:30:00,78.82,127.529,37.154,32.047 +2020-11-07 13:45:00,78.57,127.15,37.154,32.047 +2020-11-07 14:00:00,77.79,126.416,36.457,32.047 +2020-11-07 14:15:00,78.58,125.419,36.457,32.047 +2020-11-07 14:30:00,78.89,124.588,36.457,32.047 +2020-11-07 14:45:00,80.87,124.78399999999999,36.457,32.047 +2020-11-07 15:00:00,80.77,124.04299999999999,38.257,32.047 +2020-11-07 15:15:00,82.29,124.734,38.257,32.047 +2020-11-07 15:30:00,83.92,124.965,38.257,32.047 +2020-11-07 15:45:00,86.04,125.09299999999999,38.257,32.047 +2020-11-07 16:00:00,87.33,126.383,41.181000000000004,32.047 +2020-11-07 16:15:00,88.36,128.577,41.181000000000004,32.047 +2020-11-07 16:30:00,90.62,128.856,41.181000000000004,32.047 +2020-11-07 16:45:00,95.89,128.364,41.181000000000004,32.047 +2020-11-07 17:00:00,101.97,130.005,46.806000000000004,32.047 +2020-11-07 17:15:00,101.76,130.86700000000002,46.806000000000004,32.047 +2020-11-07 17:30:00,104.34,130.73,46.806000000000004,32.047 +2020-11-07 17:45:00,104.83,130.05,46.806000000000004,32.047 +2020-11-07 18:00:00,105.8,133.376,52.073,32.047 +2020-11-07 18:15:00,105.2,133.58700000000002,52.073,32.047 +2020-11-07 18:30:00,103.89,133.498,52.073,32.047 +2020-11-07 18:45:00,101.96,133.372,52.073,32.047 +2020-11-07 19:00:00,100.94,135.424,53.608000000000004,32.047 +2020-11-07 19:15:00,98.9,133.929,53.608000000000004,32.047 +2020-11-07 19:30:00,97.79,133.262,53.608000000000004,32.047 +2020-11-07 19:45:00,96.56,131.755,53.608000000000004,32.047 +2020-11-07 20:00:00,91.1,128.975,50.265,32.047 +2020-11-07 20:15:00,85.93,126.74799999999999,50.265,32.047 +2020-11-07 20:30:00,85.7,125.228,50.265,32.047 +2020-11-07 20:45:00,83.77,123.581,50.265,32.047 +2020-11-07 21:00:00,79.67,120.964,45.766000000000005,32.047 +2020-11-07 21:15:00,79.69,121.325,45.766000000000005,32.047 +2020-11-07 21:30:00,78.88,121.25399999999999,45.766000000000005,32.047 +2020-11-07 21:45:00,77.61,118.55,45.766000000000005,32.047 +2020-11-07 22:00:00,75.18,114.319,45.97,32.047 +2020-11-07 22:15:00,76.21,111.5,45.97,32.047 +2020-11-07 22:30:00,73.1,108.414,45.97,32.047 +2020-11-07 22:45:00,72.11,105.071,45.97,32.047 +2020-11-07 23:00:00,68.65,101.348,40.415,32.047 +2020-11-07 23:15:00,68.16,97.39200000000001,40.415,32.047 +2020-11-07 23:30:00,64.73,94.814,40.415,32.047 +2020-11-07 23:45:00,63.74,92.92399999999999,40.415,32.047 +2020-11-08 00:00:00,56.78,76.44800000000001,36.376,32.047 +2020-11-08 00:15:00,59.59,74.069,36.376,32.047 +2020-11-08 00:30:00,59.04,74.27,36.376,32.047 +2020-11-08 00:45:00,58.74,75.078,36.376,32.047 +2020-11-08 01:00:00,56.0,76.681,32.992,32.047 +2020-11-08 01:15:00,56.15,77.38,32.992,32.047 +2020-11-08 01:30:00,53.94,76.958,32.992,32.047 +2020-11-08 01:45:00,55.96,76.921,32.992,32.047 +2020-11-08 02:00:00,53.18,78.202,32.327,32.047 +2020-11-08 02:15:00,54.85,77.861,32.327,32.047 +2020-11-08 02:30:00,53.77,78.33800000000001,32.327,32.047 +2020-11-08 02:45:00,54.28,79.574,32.327,32.047 +2020-11-08 03:00:00,54.05,82.25399999999999,31.169,32.047 +2020-11-08 03:15:00,54.15,82.494,31.169,32.047 +2020-11-08 03:30:00,54.49,82.912,31.169,32.047 +2020-11-08 03:45:00,52.1,84.354,31.169,32.047 +2020-11-08 04:00:00,54.3,92.965,30.796,32.047 +2020-11-08 04:15:00,54.34,100.863,30.796,32.047 +2020-11-08 04:30:00,55.34,100.29799999999999,30.796,32.047 +2020-11-08 04:45:00,52.7,101.26799999999999,30.796,32.047 +2020-11-08 05:00:00,55.15,118.09200000000001,30.848000000000003,32.047 +2020-11-08 05:15:00,56.75,130.61,30.848000000000003,32.047 +2020-11-08 05:30:00,56.68,125.994,30.848000000000003,32.047 +2020-11-08 05:45:00,57.37,121.301,30.848000000000003,32.047 +2020-11-08 06:00:00,58.77,134.852,31.166,32.047 +2020-11-08 06:15:00,56.79,151.719,31.166,32.047 +2020-11-08 06:30:00,59.58,145.264,31.166,32.047 +2020-11-08 06:45:00,61.46,138.931,31.166,32.047 +2020-11-08 07:00:00,63.74,138.10299999999998,33.527,32.047 +2020-11-08 07:15:00,64.26,139.97799999999998,33.527,32.047 +2020-11-08 07:30:00,66.51,142.24200000000002,33.527,32.047 +2020-11-08 07:45:00,65.6,144.219,33.527,32.047 +2020-11-08 08:00:00,71.16,147.767,36.616,32.047 +2020-11-08 08:15:00,72.66,149.776,36.616,32.047 +2020-11-08 08:30:00,73.14,150.658,36.616,32.047 +2020-11-08 08:45:00,75.05,150.73,36.616,32.047 +2020-11-08 09:00:00,75.61,147.37,37.857,32.047 +2020-11-08 09:15:00,73.91,146.389,37.857,32.047 +2020-11-08 09:30:00,74.91,145.84799999999998,37.857,32.047 +2020-11-08 09:45:00,74.9,144.869,37.857,32.047 +2020-11-08 10:00:00,75.28,143.132,36.319,32.047 +2020-11-08 10:15:00,81.36,142.055,36.319,32.047 +2020-11-08 10:30:00,83.52,140.497,36.319,32.047 +2020-11-08 10:45:00,84.81,139.138,36.319,32.047 +2020-11-08 11:00:00,89.21,135.871,37.236999999999995,32.047 +2020-11-08 11:15:00,90.66,134.592,37.236999999999995,32.047 +2020-11-08 11:30:00,90.88,134.764,37.236999999999995,32.047 +2020-11-08 11:45:00,89.95,135.306,37.236999999999995,32.047 +2020-11-08 12:00:00,87.53,131.175,34.871,32.047 +2020-11-08 12:15:00,85.32,130.161,34.871,32.047 +2020-11-08 12:30:00,83.34,129.931,34.871,32.047 +2020-11-08 12:45:00,78.63,129.341,34.871,32.047 +2020-11-08 13:00:00,69.57,128.405,29.738000000000003,32.047 +2020-11-08 13:15:00,69.16,128.797,29.738000000000003,32.047 +2020-11-08 13:30:00,66.72,127.609,29.738000000000003,32.047 +2020-11-08 13:45:00,67.62,127.12299999999999,29.738000000000003,32.047 +2020-11-08 14:00:00,66.83,126.906,27.333000000000002,32.047 +2020-11-08 14:15:00,66.82,126.916,27.333000000000002,32.047 +2020-11-08 14:30:00,67.73,126.59700000000001,27.333000000000002,32.047 +2020-11-08 14:45:00,69.57,126.15100000000001,27.333000000000002,32.047 +2020-11-08 15:00:00,71.36,124.36,28.232,32.047 +2020-11-08 15:15:00,70.85,125.339,28.232,32.047 +2020-11-08 15:30:00,72.33,125.96799999999999,28.232,32.047 +2020-11-08 15:45:00,74.18,126.693,28.232,32.047 +2020-11-08 16:00:00,77.95,128.625,32.815,32.047 +2020-11-08 16:15:00,78.12,130.292,32.815,32.047 +2020-11-08 16:30:00,81.11,131.095,32.815,32.047 +2020-11-08 16:45:00,86.31,130.768,32.815,32.047 +2020-11-08 17:00:00,91.61,132.41899999999998,43.068999999999996,32.047 +2020-11-08 17:15:00,92.71,133.623,43.068999999999996,32.047 +2020-11-08 17:30:00,94.77,133.976,43.068999999999996,32.047 +2020-11-08 17:45:00,96.36,135.0,43.068999999999996,32.047 +2020-11-08 18:00:00,97.41,138.14700000000002,50.498999999999995,32.047 +2020-11-08 18:15:00,96.11,139.069,50.498999999999995,32.047 +2020-11-08 18:30:00,96.01,137.498,50.498999999999995,32.047 +2020-11-08 18:45:00,94.28,138.656,50.498999999999995,32.047 +2020-11-08 19:00:00,92.22,141.273,53.481,32.047 +2020-11-08 19:15:00,90.52,139.755,53.481,32.047 +2020-11-08 19:30:00,89.88,138.872,53.481,32.047 +2020-11-08 19:45:00,88.47,138.131,53.481,32.047 +2020-11-08 20:00:00,86.19,135.379,51.687,32.047 +2020-11-08 20:15:00,84.49,133.74200000000002,51.687,32.047 +2020-11-08 20:30:00,83.73,133.315,51.687,32.047 +2020-11-08 20:45:00,83.27,130.233,51.687,32.047 +2020-11-08 21:00:00,79.79,125.823,47.674,32.047 +2020-11-08 21:15:00,80.23,125.645,47.674,32.047 +2020-11-08 21:30:00,79.81,125.53,47.674,32.047 +2020-11-08 21:45:00,80.44,123.037,47.674,32.047 +2020-11-08 22:00:00,78.11,118.802,48.178000000000004,32.047 +2020-11-08 22:15:00,78.45,114.829,48.178000000000004,32.047 +2020-11-08 22:30:00,76.78,109.508,48.178000000000004,32.047 +2020-11-08 22:45:00,77.39,105.12899999999999,48.178000000000004,32.047 +2020-11-08 23:00:00,74.59,99.45,42.553999999999995,32.047 +2020-11-08 23:15:00,73.28,97.175,42.553999999999995,32.047 +2020-11-08 23:30:00,72.41,94.932,42.553999999999995,32.047 +2020-11-08 23:45:00,72.06,93.675,42.553999999999995,32.047 +2020-11-09 00:00:00,68.05,80.07300000000001,37.177,32.225 +2020-11-09 00:15:00,68.1,79.87,37.177,32.225 +2020-11-09 00:30:00,68.17,79.997,37.177,32.225 +2020-11-09 00:45:00,67.31,80.294,37.177,32.225 +2020-11-09 01:00:00,65.98,82.068,35.358000000000004,32.225 +2020-11-09 01:15:00,65.25,82.456,35.358000000000004,32.225 +2020-11-09 01:30:00,64.89,82.23299999999999,35.358000000000004,32.225 +2020-11-09 01:45:00,65.37,82.22,35.358000000000004,32.225 +2020-11-09 02:00:00,63.02,83.67399999999999,35.03,32.225 +2020-11-09 02:15:00,64.11,83.83,35.03,32.225 +2020-11-09 02:30:00,64.54,84.574,35.03,32.225 +2020-11-09 02:45:00,64.76,85.359,35.03,32.225 +2020-11-09 03:00:00,64.28,89.001,34.394,32.225 +2020-11-09 03:15:00,66.01,90.586,34.394,32.225 +2020-11-09 03:30:00,66.41,91.126,34.394,32.225 +2020-11-09 03:45:00,67.37,92.016,34.394,32.225 +2020-11-09 04:00:00,69.97,104.598,34.421,32.225 +2020-11-09 04:15:00,71.09,116.309,34.421,32.225 +2020-11-09 04:30:00,71.91,116.883,34.421,32.225 +2020-11-09 04:45:00,79.32,118.117,34.421,32.225 +2020-11-09 05:00:00,82.71,147.628,39.435,32.225 +2020-11-09 05:15:00,87.16,176.90900000000002,39.435,32.225 +2020-11-09 05:30:00,87.32,171.798,39.435,32.225 +2020-11-09 05:45:00,101.72,162.31799999999998,39.435,32.225 +2020-11-09 06:00:00,110.45,160.78,55.685,32.225 +2020-11-09 06:15:00,113.86,164.645,55.685,32.225 +2020-11-09 06:30:00,115.39,164.861,55.685,32.225 +2020-11-09 06:45:00,118.64,166.217,55.685,32.225 +2020-11-09 07:00:00,122.58,167.396,66.837,32.225 +2020-11-09 07:15:00,122.82,170.988,66.837,32.225 +2020-11-09 07:30:00,126.22,172.438,66.837,32.225 +2020-11-09 07:45:00,125.54,172.898,66.837,32.225 +2020-11-09 08:00:00,127.34,172.813,72.217,32.225 +2020-11-09 08:15:00,127.18,172.938,72.217,32.225 +2020-11-09 08:30:00,126.88,170.8,72.217,32.225 +2020-11-09 08:45:00,127.51,168.736,72.217,32.225 +2020-11-09 09:00:00,128.25,164.46599999999998,66.117,32.225 +2020-11-09 09:15:00,130.74,160.498,66.117,32.225 +2020-11-09 09:30:00,135.41,158.94,66.117,32.225 +2020-11-09 09:45:00,128.44,157.295,66.117,32.225 +2020-11-09 10:00:00,121.64,155.171,62.1,32.225 +2020-11-09 10:15:00,122.64,153.78,62.1,32.225 +2020-11-09 10:30:00,121.37,151.439,62.1,32.225 +2020-11-09 10:45:00,120.12,150.023,62.1,32.225 +2020-11-09 11:00:00,119.17,145.142,60.021,32.225 +2020-11-09 11:15:00,118.05,145.196,60.021,32.225 +2020-11-09 11:30:00,120.45,146.566,60.021,32.225 +2020-11-09 11:45:00,127.24,146.98,60.021,32.225 +2020-11-09 12:00:00,123.12,143.612,56.75899999999999,32.225 +2020-11-09 12:15:00,119.35,142.637,56.75899999999999,32.225 +2020-11-09 12:30:00,119.39,142.264,56.75899999999999,32.225 +2020-11-09 12:45:00,119.84,142.754,56.75899999999999,32.225 +2020-11-09 13:00:00,116.9,142.586,56.04600000000001,32.225 +2020-11-09 13:15:00,116.79,141.71200000000002,56.04600000000001,32.225 +2020-11-09 13:30:00,113.73,140.2,56.04600000000001,32.225 +2020-11-09 13:45:00,114.61,140.019,56.04600000000001,32.225 +2020-11-09 14:00:00,115.9,139.042,55.475,32.225 +2020-11-09 14:15:00,116.58,138.798,55.475,32.225 +2020-11-09 14:30:00,120.75,138.077,55.475,32.225 +2020-11-09 14:45:00,120.18,138.275,55.475,32.225 +2020-11-09 15:00:00,123.17,137.644,57.048,32.225 +2020-11-09 15:15:00,122.33,137.42,57.048,32.225 +2020-11-09 15:30:00,124.39,137.74,57.048,32.225 +2020-11-09 15:45:00,125.72,138.004,57.048,32.225 +2020-11-09 16:00:00,126.17,140.192,59.06,32.225 +2020-11-09 16:15:00,125.85,141.375,59.06,32.225 +2020-11-09 16:30:00,127.02,141.27700000000002,59.06,32.225 +2020-11-09 16:45:00,131.92,140.181,59.06,32.225 +2020-11-09 17:00:00,136.09,141.148,65.419,32.225 +2020-11-09 17:15:00,136.48,141.859,65.419,32.225 +2020-11-09 17:30:00,137.83,141.708,65.419,32.225 +2020-11-09 17:45:00,137.56,141.585,65.419,32.225 +2020-11-09 18:00:00,135.48,144.59,69.345,32.225 +2020-11-09 18:15:00,133.71,143.328,69.345,32.225 +2020-11-09 18:30:00,132.59,141.934,69.345,32.225 +2020-11-09 18:45:00,132.3,144.716,69.345,32.225 +2020-11-09 19:00:00,127.93,146.127,73.825,32.225 +2020-11-09 19:15:00,126.34,144.3,73.825,32.225 +2020-11-09 19:30:00,123.57,143.6,73.825,32.225 +2020-11-09 19:45:00,121.6,142.05,73.825,32.225 +2020-11-09 20:00:00,115.11,137.256,64.027,32.225 +2020-11-09 20:15:00,112.04,134.487,64.027,32.225 +2020-11-09 20:30:00,108.08,132.988,64.027,32.225 +2020-11-09 20:45:00,107.81,131.05700000000002,64.027,32.225 +2020-11-09 21:00:00,107.92,126.76799999999999,57.952,32.225 +2020-11-09 21:15:00,109.06,125.969,57.952,32.225 +2020-11-09 21:30:00,106.65,125.475,57.952,32.225 +2020-11-09 21:45:00,100.41,122.554,57.952,32.225 +2020-11-09 22:00:00,92.6,115.631,53.031000000000006,32.225 +2020-11-09 22:15:00,93.12,111.51899999999999,53.031000000000006,32.225 +2020-11-09 22:30:00,95.32,98.29700000000001,53.031000000000006,32.225 +2020-11-09 22:45:00,94.64,90.72200000000001,53.031000000000006,32.225 +2020-11-09 23:00:00,90.53,85.54799999999999,45.085,32.225 +2020-11-09 23:15:00,89.52,84.38799999999999,45.085,32.225 +2020-11-09 23:30:00,88.09,83.963,45.085,32.225 +2020-11-09 23:45:00,87.29,84.242,45.085,32.225 +2020-11-10 00:00:00,79.63,79.074,42.843,32.225 +2020-11-10 00:15:00,76.93,80.104,42.843,32.225 +2020-11-10 00:30:00,82.65,79.929,42.843,32.225 +2020-11-10 00:45:00,81.56,79.919,42.843,32.225 +2020-11-10 01:00:00,80.25,81.372,41.542,32.225 +2020-11-10 01:15:00,76.77,81.541,41.542,32.225 +2020-11-10 01:30:00,79.55,81.388,41.542,32.225 +2020-11-10 01:45:00,79.66,81.351,41.542,32.225 +2020-11-10 02:00:00,78.05,82.617,40.19,32.225 +2020-11-10 02:15:00,73.84,83.189,40.19,32.225 +2020-11-10 02:30:00,77.2,83.39,40.19,32.225 +2020-11-10 02:45:00,79.47,84.315,40.19,32.225 +2020-11-10 03:00:00,79.27,86.96600000000001,39.626,32.225 +2020-11-10 03:15:00,78.58,88.43700000000001,39.626,32.225 +2020-11-10 03:30:00,80.16,89.265,39.626,32.225 +2020-11-10 03:45:00,80.07,89.79799999999999,39.626,32.225 +2020-11-10 04:00:00,78.72,101.744,40.196999999999996,32.225 +2020-11-10 04:15:00,81.21,113.26899999999999,40.196999999999996,32.225 +2020-11-10 04:30:00,83.65,113.595,40.196999999999996,32.225 +2020-11-10 04:45:00,86.52,115.79,40.196999999999996,32.225 +2020-11-10 05:00:00,87.82,149.101,43.378,32.225 +2020-11-10 05:15:00,90.74,178.55599999999998,43.378,32.225 +2020-11-10 05:30:00,99.8,172.574,43.378,32.225 +2020-11-10 05:45:00,101.83,162.769,43.378,32.225 +2020-11-10 06:00:00,103.85,160.92600000000002,55.691,32.225 +2020-11-10 06:15:00,109.52,165.903,55.691,32.225 +2020-11-10 06:30:00,115.89,165.612,55.691,32.225 +2020-11-10 06:45:00,121.67,166.38299999999998,55.691,32.225 +2020-11-10 07:00:00,125.99,167.50599999999997,65.567,32.225 +2020-11-10 07:15:00,125.23,170.90400000000002,65.567,32.225 +2020-11-10 07:30:00,125.48,172.033,65.567,32.225 +2020-11-10 07:45:00,127.15,172.24599999999998,65.567,32.225 +2020-11-10 08:00:00,130.42,172.225,73.001,32.225 +2020-11-10 08:15:00,129.33,171.486,73.001,32.225 +2020-11-10 08:30:00,128.62,169.31900000000002,73.001,32.225 +2020-11-10 08:45:00,130.72,166.703,73.001,32.225 +2020-11-10 09:00:00,130.86,161.987,67.08800000000001,32.225 +2020-11-10 09:15:00,133.46,159.045,67.08800000000001,32.225 +2020-11-10 09:30:00,134.07,158.188,67.08800000000001,32.225 +2020-11-10 09:45:00,134.92,156.86,67.08800000000001,32.225 +2020-11-10 10:00:00,138.69,153.835,62.803000000000004,32.225 +2020-11-10 10:15:00,136.4,151.625,62.803000000000004,32.225 +2020-11-10 10:30:00,138.3,149.394,62.803000000000004,32.225 +2020-11-10 10:45:00,138.45,148.505,62.803000000000004,32.225 +2020-11-10 11:00:00,138.8,144.653,60.155,32.225 +2020-11-10 11:15:00,140.26,144.589,60.155,32.225 +2020-11-10 11:30:00,138.98,144.757,60.155,32.225 +2020-11-10 11:45:00,138.44,145.502,60.155,32.225 +2020-11-10 12:00:00,136.24,141.084,56.845,32.225 +2020-11-10 12:15:00,132.78,139.921,56.845,32.225 +2020-11-10 12:30:00,132.82,140.374,56.845,32.225 +2020-11-10 12:45:00,133.55,140.88,56.845,32.225 +2020-11-10 13:00:00,133.51,140.255,56.163000000000004,32.225 +2020-11-10 13:15:00,133.18,139.71,56.163000000000004,32.225 +2020-11-10 13:30:00,132.48,139.026,56.163000000000004,32.225 +2020-11-10 13:45:00,135.29,138.667,56.163000000000004,32.225 +2020-11-10 14:00:00,132.64,137.986,55.934,32.225 +2020-11-10 14:15:00,133.0,137.806,55.934,32.225 +2020-11-10 14:30:00,130.66,137.678,55.934,32.225 +2020-11-10 14:45:00,129.66,137.57,55.934,32.225 +2020-11-10 15:00:00,129.09,136.569,57.43899999999999,32.225 +2020-11-10 15:15:00,128.92,136.889,57.43899999999999,32.225 +2020-11-10 15:30:00,125.2,137.341,57.43899999999999,32.225 +2020-11-10 15:45:00,127.27,137.435,57.43899999999999,32.225 +2020-11-10 16:00:00,129.73,139.649,59.968999999999994,32.225 +2020-11-10 16:15:00,128.3,141.219,59.968999999999994,32.225 +2020-11-10 16:30:00,129.86,141.44799999999998,59.968999999999994,32.225 +2020-11-10 16:45:00,133.6,140.843,59.968999999999994,32.225 +2020-11-10 17:00:00,138.8,142.224,67.428,32.225 +2020-11-10 17:15:00,136.91,143.123,67.428,32.225 +2020-11-10 17:30:00,136.54,143.278,67.428,32.225 +2020-11-10 17:45:00,137.56,142.963,67.428,32.225 +2020-11-10 18:00:00,136.51,145.55,71.533,32.225 +2020-11-10 18:15:00,134.26,144.453,71.533,32.225 +2020-11-10 18:30:00,133.81,142.766,71.533,32.225 +2020-11-10 18:45:00,133.71,146.015,71.533,32.225 +2020-11-10 19:00:00,131.4,147.056,73.32300000000001,32.225 +2020-11-10 19:15:00,128.61,145.097,73.32300000000001,32.225 +2020-11-10 19:30:00,126.59,143.855,73.32300000000001,32.225 +2020-11-10 19:45:00,125.18,142.424,73.32300000000001,32.225 +2020-11-10 20:00:00,121.52,137.89600000000002,64.166,32.225 +2020-11-10 20:15:00,115.1,134.157,64.166,32.225 +2020-11-10 20:30:00,113.81,133.317,64.166,32.225 +2020-11-10 20:45:00,112.32,131.153,64.166,32.225 +2020-11-10 21:00:00,107.06,126.714,57.891999999999996,32.225 +2020-11-10 21:15:00,105.3,125.95200000000001,57.891999999999996,32.225 +2020-11-10 21:30:00,102.67,125.04799999999999,57.891999999999996,32.225 +2020-11-10 21:45:00,101.94,122.339,57.891999999999996,32.225 +2020-11-10 22:00:00,98.35,116.615,53.242,32.225 +2020-11-10 22:15:00,100.16,112.191,53.242,32.225 +2020-11-10 22:30:00,98.28,99.18,53.242,32.225 +2020-11-10 22:45:00,96.68,91.795,53.242,32.225 +2020-11-10 23:00:00,88.01,86.35799999999999,46.665,32.225 +2020-11-10 23:15:00,84.04,85.154,46.665,32.225 +2020-11-10 23:30:00,84.59,84.492,46.665,32.225 +2020-11-10 23:45:00,81.05,84.535,46.665,32.225 +2020-11-11 00:00:00,83.4,79.433,43.16,32.225 +2020-11-11 00:15:00,83.26,80.444,43.16,32.225 +2020-11-11 00:30:00,84.67,80.27,43.16,32.225 +2020-11-11 00:45:00,81.96,80.248,43.16,32.225 +2020-11-11 01:00:00,78.35,81.723,40.972,32.225 +2020-11-11 01:15:00,81.15,81.906,40.972,32.225 +2020-11-11 01:30:00,81.08,81.768,40.972,32.225 +2020-11-11 01:45:00,81.16,81.72399999999999,40.972,32.225 +2020-11-11 02:00:00,78.61,83.00299999999999,39.749,32.225 +2020-11-11 02:15:00,80.73,83.584,39.749,32.225 +2020-11-11 02:30:00,81.45,83.777,39.749,32.225 +2020-11-11 02:45:00,79.88,84.698,39.749,32.225 +2020-11-11 03:00:00,77.2,87.337,39.422,32.225 +2020-11-11 03:15:00,82.68,88.831,39.422,32.225 +2020-11-11 03:30:00,82.22,89.661,39.422,32.225 +2020-11-11 03:45:00,83.11,90.179,39.422,32.225 +2020-11-11 04:00:00,83.29,102.134,40.505,32.225 +2020-11-11 04:15:00,85.37,113.684,40.505,32.225 +2020-11-11 04:30:00,86.75,114.00299999999999,40.505,32.225 +2020-11-11 04:45:00,86.34,116.20700000000001,40.505,32.225 +2020-11-11 05:00:00,93.0,149.563,43.397,32.225 +2020-11-11 05:15:00,96.5,179.05900000000003,43.397,32.225 +2020-11-11 05:30:00,96.82,173.071,43.397,32.225 +2020-11-11 05:45:00,95.16,163.246,43.397,32.225 +2020-11-11 06:00:00,104.31,161.401,55.218,32.225 +2020-11-11 06:15:00,112.72,166.389,55.218,32.225 +2020-11-11 06:30:00,122.08,166.125,55.218,32.225 +2020-11-11 06:45:00,124.33,166.916,55.218,32.225 +2020-11-11 07:00:00,126.72,168.04,67.39,32.225 +2020-11-11 07:15:00,123.92,171.447,67.39,32.225 +2020-11-11 07:30:00,127.19,172.601,67.39,32.225 +2020-11-11 07:45:00,125.8,172.813,67.39,32.225 +2020-11-11 08:00:00,126.17,172.80700000000002,74.345,32.225 +2020-11-11 08:15:00,124.97,172.047,74.345,32.225 +2020-11-11 08:30:00,126.2,169.903,74.345,32.225 +2020-11-11 08:45:00,125.23,167.25900000000001,74.345,32.225 +2020-11-11 09:00:00,124.4,162.53,69.336,32.225 +2020-11-11 09:15:00,125.54,159.589,69.336,32.225 +2020-11-11 09:30:00,123.59,158.725,69.336,32.225 +2020-11-11 09:45:00,121.93,157.375,69.336,32.225 +2020-11-11 10:00:00,121.82,154.341,64.291,32.225 +2020-11-11 10:15:00,120.73,152.095,64.291,32.225 +2020-11-11 10:30:00,118.92,149.842,64.291,32.225 +2020-11-11 10:45:00,121.37,148.938,64.291,32.225 +2020-11-11 11:00:00,120.95,145.084,62.20399999999999,32.225 +2020-11-11 11:15:00,122.46,145.001,62.20399999999999,32.225 +2020-11-11 11:30:00,121.56,145.16899999999998,62.20399999999999,32.225 +2020-11-11 11:45:00,121.47,145.9,62.20399999999999,32.225 +2020-11-11 12:00:00,120.37,141.465,59.042,32.225 +2020-11-11 12:15:00,119.79,140.303,59.042,32.225 +2020-11-11 12:30:00,119.63,140.78799999999998,59.042,32.225 +2020-11-11 12:45:00,121.96,141.296,59.042,32.225 +2020-11-11 13:00:00,120.59,140.635,57.907,32.225 +2020-11-11 13:15:00,122.95,140.09799999999998,57.907,32.225 +2020-11-11 13:30:00,118.81,139.411,57.907,32.225 +2020-11-11 13:45:00,117.0,139.046,57.907,32.225 +2020-11-11 14:00:00,116.01,138.31799999999998,58.358000000000004,32.225 +2020-11-11 14:15:00,115.36,138.151,58.358000000000004,32.225 +2020-11-11 14:30:00,116.38,138.061,58.358000000000004,32.225 +2020-11-11 14:45:00,119.55,137.955,58.358000000000004,32.225 +2020-11-11 15:00:00,123.96,136.944,59.348,32.225 +2020-11-11 15:15:00,123.92,137.278,59.348,32.225 +2020-11-11 15:30:00,125.52,137.766,59.348,32.225 +2020-11-11 15:45:00,123.32,137.872,59.348,32.225 +2020-11-11 16:00:00,125.75,140.063,61.413999999999994,32.225 +2020-11-11 16:15:00,126.76,141.656,61.413999999999994,32.225 +2020-11-11 16:30:00,128.31,141.88299999999998,61.413999999999994,32.225 +2020-11-11 16:45:00,133.13,141.327,61.413999999999994,32.225 +2020-11-11 17:00:00,138.86,142.668,67.107,32.225 +2020-11-11 17:15:00,136.54,143.589,67.107,32.225 +2020-11-11 17:30:00,137.81,143.75,67.107,32.225 +2020-11-11 17:45:00,137.09,143.44899999999998,67.107,32.225 +2020-11-11 18:00:00,136.75,146.037,71.92,32.225 +2020-11-11 18:15:00,134.87,144.91,71.92,32.225 +2020-11-11 18:30:00,134.79,143.232,71.92,32.225 +2020-11-11 18:45:00,135.01,146.47899999999998,71.92,32.225 +2020-11-11 19:00:00,130.77,147.524,75.09,32.225 +2020-11-11 19:15:00,128.61,145.55700000000002,75.09,32.225 +2020-11-11 19:30:00,126.23,144.30100000000002,75.09,32.225 +2020-11-11 19:45:00,129.72,142.842,75.09,32.225 +2020-11-11 20:00:00,120.35,138.33,65.977,32.225 +2020-11-11 20:15:00,114.91,134.583,65.977,32.225 +2020-11-11 20:30:00,111.86,133.71200000000002,65.977,32.225 +2020-11-11 20:45:00,111.47,131.542,65.977,32.225 +2020-11-11 21:00:00,106.24,127.095,58.798,32.225 +2020-11-11 21:15:00,111.59,126.32,58.798,32.225 +2020-11-11 21:30:00,109.24,125.426,58.798,32.225 +2020-11-11 21:45:00,110.46,122.704,58.798,32.225 +2020-11-11 22:00:00,100.23,116.978,54.486000000000004,32.225 +2020-11-11 22:15:00,95.43,112.539,54.486000000000004,32.225 +2020-11-11 22:30:00,93.35,99.57,54.486000000000004,32.225 +2020-11-11 22:45:00,97.79,92.194,54.486000000000004,32.225 +2020-11-11 23:00:00,94.38,86.758,47.783,32.225 +2020-11-11 23:15:00,93.93,85.53,47.783,32.225 +2020-11-11 23:30:00,85.88,84.87299999999999,47.783,32.225 +2020-11-11 23:45:00,84.95,84.90299999999999,47.783,32.225 +2020-11-12 00:00:00,85.17,79.789,43.88,32.225 +2020-11-12 00:15:00,87.34,80.78,43.88,32.225 +2020-11-12 00:30:00,85.98,80.609,43.88,32.225 +2020-11-12 00:45:00,80.22,80.575,43.88,32.225 +2020-11-12 01:00:00,83.59,82.071,42.242,32.225 +2020-11-12 01:15:00,84.86,82.26899999999999,42.242,32.225 +2020-11-12 01:30:00,83.06,82.146,42.242,32.225 +2020-11-12 01:45:00,81.74,82.094,42.242,32.225 +2020-11-12 02:00:00,83.52,83.387,40.918,32.225 +2020-11-12 02:15:00,83.31,83.976,40.918,32.225 +2020-11-12 02:30:00,78.25,84.161,40.918,32.225 +2020-11-12 02:45:00,78.19,85.07700000000001,40.918,32.225 +2020-11-12 03:00:00,75.8,87.70299999999999,40.411,32.225 +2020-11-12 03:15:00,78.38,89.221,40.411,32.225 +2020-11-12 03:30:00,82.84,90.053,40.411,32.225 +2020-11-12 03:45:00,85.06,90.555,40.411,32.225 +2020-11-12 04:00:00,83.04,102.51899999999999,41.246,32.225 +2020-11-12 04:15:00,79.36,114.094,41.246,32.225 +2020-11-12 04:30:00,80.43,114.40899999999999,41.246,32.225 +2020-11-12 04:45:00,81.3,116.619,41.246,32.225 +2020-11-12 05:00:00,85.8,150.023,44.533,32.225 +2020-11-12 05:15:00,88.26,179.558,44.533,32.225 +2020-11-12 05:30:00,92.04,173.56400000000002,44.533,32.225 +2020-11-12 05:45:00,97.64,163.719,44.533,32.225 +2020-11-12 06:00:00,113.62,161.872,55.005,32.225 +2020-11-12 06:15:00,116.6,166.87,55.005,32.225 +2020-11-12 06:30:00,120.04,166.635,55.005,32.225 +2020-11-12 06:45:00,120.88,167.44400000000002,55.005,32.225 +2020-11-12 07:00:00,127.95,168.56900000000002,64.597,32.225 +2020-11-12 07:15:00,124.59,171.987,64.597,32.225 +2020-11-12 07:30:00,125.29,173.16299999999998,64.597,32.225 +2020-11-12 07:45:00,127.13,173.375,64.597,32.225 +2020-11-12 08:00:00,129.63,173.38099999999997,71.71600000000001,32.225 +2020-11-12 08:15:00,127.3,172.602,71.71600000000001,32.225 +2020-11-12 08:30:00,127.82,170.482,71.71600000000001,32.225 +2020-11-12 08:45:00,127.07,167.80900000000003,71.71600000000001,32.225 +2020-11-12 09:00:00,123.74,163.067,66.51899999999999,32.225 +2020-11-12 09:15:00,124.7,160.127,66.51899999999999,32.225 +2020-11-12 09:30:00,127.83,159.257,66.51899999999999,32.225 +2020-11-12 09:45:00,129.16,157.885,66.51899999999999,32.225 +2020-11-12 10:00:00,129.07,154.842,63.04,32.225 +2020-11-12 10:15:00,128.54,152.56,63.04,32.225 +2020-11-12 10:30:00,127.42,150.284,63.04,32.225 +2020-11-12 10:45:00,124.95,149.365,63.04,32.225 +2020-11-12 11:00:00,124.62,145.50799999999998,60.998000000000005,32.225 +2020-11-12 11:15:00,124.2,145.406,60.998000000000005,32.225 +2020-11-12 11:30:00,123.72,145.57399999999998,60.998000000000005,32.225 +2020-11-12 11:45:00,125.51,146.29399999999998,60.998000000000005,32.225 +2020-11-12 12:00:00,126.91,141.84,58.27,32.225 +2020-11-12 12:15:00,122.96,140.68,58.27,32.225 +2020-11-12 12:30:00,121.82,141.197,58.27,32.225 +2020-11-12 12:45:00,116.29,141.707,58.27,32.225 +2020-11-12 13:00:00,117.07,141.012,57.196000000000005,32.225 +2020-11-12 13:15:00,119.85,140.481,57.196000000000005,32.225 +2020-11-12 13:30:00,119.33,139.791,57.196000000000005,32.225 +2020-11-12 13:45:00,120.26,139.41899999999998,57.196000000000005,32.225 +2020-11-12 14:00:00,118.83,138.64600000000002,57.38399999999999,32.225 +2020-11-12 14:15:00,120.08,138.493,57.38399999999999,32.225 +2020-11-12 14:30:00,121.28,138.439,57.38399999999999,32.225 +2020-11-12 14:45:00,124.13,138.335,57.38399999999999,32.225 +2020-11-12 15:00:00,125.14,137.315,58.647,32.225 +2020-11-12 15:15:00,123.4,137.661,58.647,32.225 +2020-11-12 15:30:00,122.12,138.186,58.647,32.225 +2020-11-12 15:45:00,123.51,138.30200000000002,58.647,32.225 +2020-11-12 16:00:00,126.72,140.471,60.083999999999996,32.225 +2020-11-12 16:15:00,125.87,142.08700000000002,60.083999999999996,32.225 +2020-11-12 16:30:00,129.87,142.313,60.083999999999996,32.225 +2020-11-12 16:45:00,133.87,141.805,60.083999999999996,32.225 +2020-11-12 17:00:00,137.7,143.105,65.85600000000001,32.225 +2020-11-12 17:15:00,137.13,144.049,65.85600000000001,32.225 +2020-11-12 17:30:00,139.61,144.218,65.85600000000001,32.225 +2020-11-12 17:45:00,138.78,143.93,65.85600000000001,32.225 +2020-11-12 18:00:00,137.47,146.519,69.855,32.225 +2020-11-12 18:15:00,136.57,145.361,69.855,32.225 +2020-11-12 18:30:00,135.22,143.692,69.855,32.225 +2020-11-12 18:45:00,135.89,146.94,69.855,32.225 +2020-11-12 19:00:00,131.65,147.986,74.015,32.225 +2020-11-12 19:15:00,131.85,146.012,74.015,32.225 +2020-11-12 19:30:00,129.37,144.74200000000002,74.015,32.225 +2020-11-12 19:45:00,126.94,143.257,74.015,32.225 +2020-11-12 20:00:00,119.74,138.762,65.316,32.225 +2020-11-12 20:15:00,117.13,135.005,65.316,32.225 +2020-11-12 20:30:00,115.09,134.105,65.316,32.225 +2020-11-12 20:45:00,111.94,131.92600000000002,65.316,32.225 +2020-11-12 21:00:00,107.77,127.473,58.403999999999996,32.225 +2020-11-12 21:15:00,113.2,126.684,58.403999999999996,32.225 +2020-11-12 21:30:00,112.61,125.8,58.403999999999996,32.225 +2020-11-12 21:45:00,110.3,123.066,58.403999999999996,32.225 +2020-11-12 22:00:00,100.12,117.338,54.092,32.225 +2020-11-12 22:15:00,96.26,112.885,54.092,32.225 +2020-11-12 22:30:00,99.58,99.958,54.092,32.225 +2020-11-12 22:45:00,99.58,92.59,54.092,32.225 +2020-11-12 23:00:00,93.92,87.156,48.18600000000001,32.225 +2020-11-12 23:15:00,90.66,85.905,48.18600000000001,32.225 +2020-11-12 23:30:00,82.77,85.25,48.18600000000001,32.225 +2020-11-12 23:45:00,93.39,85.26700000000001,48.18600000000001,32.225 +2020-11-13 00:00:00,88.54,78.727,45.18899999999999,32.225 +2020-11-13 00:15:00,87.54,79.914,45.18899999999999,32.225 +2020-11-13 00:30:00,83.28,79.76899999999999,45.18899999999999,32.225 +2020-11-13 00:45:00,75.68,79.967,45.18899999999999,32.225 +2020-11-13 01:00:00,83.0,81.128,43.256,32.225 +2020-11-13 01:15:00,83.41,81.67699999999999,43.256,32.225 +2020-11-13 01:30:00,80.05,81.719,43.256,32.225 +2020-11-13 01:45:00,78.52,81.625,43.256,32.225 +2020-11-13 02:00:00,74.26,83.368,42.312,32.225 +2020-11-13 02:15:00,81.05,83.87,42.312,32.225 +2020-11-13 02:30:00,84.7,84.721,42.312,32.225 +2020-11-13 02:45:00,85.03,85.37799999999999,42.312,32.225 +2020-11-13 03:00:00,79.15,87.684,41.833,32.225 +2020-11-13 03:15:00,80.84,89.316,41.833,32.225 +2020-11-13 03:30:00,82.96,90.04,41.833,32.225 +2020-11-13 03:45:00,87.43,91.09899999999999,41.833,32.225 +2020-11-13 04:00:00,85.9,103.27,42.732,32.225 +2020-11-13 04:15:00,84.02,114.059,42.732,32.225 +2020-11-13 04:30:00,88.32,114.913,42.732,32.225 +2020-11-13 04:45:00,91.69,116.14200000000001,42.732,32.225 +2020-11-13 05:00:00,90.57,148.593,46.254,32.225 +2020-11-13 05:15:00,89.24,179.515,46.254,32.225 +2020-11-13 05:30:00,100.06,174.269,46.254,32.225 +2020-11-13 05:45:00,105.63,164.176,46.254,32.225 +2020-11-13 06:00:00,111.79,162.717,56.76,32.225 +2020-11-13 06:15:00,111.89,166.858,56.76,32.225 +2020-11-13 06:30:00,118.4,166.08,56.76,32.225 +2020-11-13 06:45:00,122.39,167.889,56.76,32.225 +2020-11-13 07:00:00,129.36,168.747,66.029,32.225 +2020-11-13 07:15:00,127.21,173.19799999999998,66.029,32.225 +2020-11-13 07:30:00,127.28,173.50900000000001,66.029,32.225 +2020-11-13 07:45:00,128.94,173.06,66.029,32.225 +2020-11-13 08:00:00,131.25,172.65400000000002,73.128,32.225 +2020-11-13 08:15:00,129.89,171.84900000000002,73.128,32.225 +2020-11-13 08:30:00,128.17,170.36700000000002,73.128,32.225 +2020-11-13 08:45:00,128.29,166.558,73.128,32.225 +2020-11-13 09:00:00,123.97,161.243,68.23100000000001,32.225 +2020-11-13 09:15:00,128.09,159.393,68.23100000000001,32.225 +2020-11-13 09:30:00,127.96,157.974,68.23100000000001,32.225 +2020-11-13 09:45:00,126.9,156.645,68.23100000000001,32.225 +2020-11-13 10:00:00,123.72,152.725,64.733,32.225 +2020-11-13 10:15:00,124.12,150.817,64.733,32.225 +2020-11-13 10:30:00,121.64,148.661,64.733,32.225 +2020-11-13 10:45:00,122.3,147.386,64.733,32.225 +2020-11-13 11:00:00,119.98,143.577,62.0,32.225 +2020-11-13 11:15:00,121.51,142.455,62.0,32.225 +2020-11-13 11:30:00,120.54,143.74,62.0,32.225 +2020-11-13 11:45:00,120.13,144.156,62.0,32.225 +2020-11-13 12:00:00,119.43,140.618,57.876999999999995,32.225 +2020-11-13 12:15:00,119.97,137.744,57.876999999999995,32.225 +2020-11-13 12:30:00,120.64,138.444,57.876999999999995,32.225 +2020-11-13 12:45:00,119.97,139.069,57.876999999999995,32.225 +2020-11-13 13:00:00,117.26,139.217,55.585,32.225 +2020-11-13 13:15:00,116.98,139.343,55.585,32.225 +2020-11-13 13:30:00,114.0,138.91899999999998,55.585,32.225 +2020-11-13 13:45:00,115.51,138.592,55.585,32.225 +2020-11-13 14:00:00,113.7,136.691,54.5,32.225 +2020-11-13 14:15:00,116.76,136.561,54.5,32.225 +2020-11-13 14:30:00,115.06,137.4,54.5,32.225 +2020-11-13 14:45:00,117.33,137.297,54.5,32.225 +2020-11-13 15:00:00,118.57,135.893,55.131,32.225 +2020-11-13 15:15:00,121.83,135.856,55.131,32.225 +2020-11-13 15:30:00,118.63,135.135,55.131,32.225 +2020-11-13 15:45:00,120.04,135.612,55.131,32.225 +2020-11-13 16:00:00,123.01,136.678,56.8,32.225 +2020-11-13 16:15:00,123.05,138.69,56.8,32.225 +2020-11-13 16:30:00,127.02,138.92,56.8,32.225 +2020-11-13 16:45:00,132.91,138.112,56.8,32.225 +2020-11-13 17:00:00,136.31,140.149,63.428999999999995,32.225 +2020-11-13 17:15:00,134.14,140.769,63.428999999999995,32.225 +2020-11-13 17:30:00,135.6,140.783,63.428999999999995,32.225 +2020-11-13 17:45:00,136.85,140.28799999999998,63.428999999999995,32.225 +2020-11-13 18:00:00,132.99,143.393,67.915,32.225 +2020-11-13 18:15:00,132.55,141.596,67.915,32.225 +2020-11-13 18:30:00,131.85,140.16899999999998,67.915,32.225 +2020-11-13 18:45:00,131.77,143.563,67.915,32.225 +2020-11-13 19:00:00,127.72,145.562,69.428,32.225 +2020-11-13 19:15:00,126.33,144.722,69.428,32.225 +2020-11-13 19:30:00,123.37,143.181,69.428,32.225 +2020-11-13 19:45:00,122.12,140.983,69.428,32.225 +2020-11-13 20:00:00,116.08,136.49200000000002,60.56100000000001,32.225 +2020-11-13 20:15:00,112.51,133.029,60.56100000000001,32.225 +2020-11-13 20:30:00,109.7,131.888,60.56100000000001,32.225 +2020-11-13 20:45:00,109.08,129.773,60.56100000000001,32.225 +2020-11-13 21:00:00,102.38,126.15,55.18600000000001,32.225 +2020-11-13 21:15:00,102.35,126.273,55.18600000000001,32.225 +2020-11-13 21:30:00,103.54,125.37200000000001,55.18600000000001,32.225 +2020-11-13 21:45:00,102.4,123.066,55.18600000000001,32.225 +2020-11-13 22:00:00,94.88,117.936,51.433,32.225 +2020-11-13 22:15:00,90.57,113.288,51.433,32.225 +2020-11-13 22:30:00,83.68,106.458,51.433,32.225 +2020-11-13 22:45:00,88.07,101.781,51.433,32.225 +2020-11-13 23:00:00,87.2,96.691,46.201,32.225 +2020-11-13 23:15:00,86.93,93.52,46.201,32.225 +2020-11-13 23:30:00,81.06,91.205,46.201,32.225 +2020-11-13 23:45:00,75.58,90.72,46.201,32.225 +2020-11-14 00:00:00,73.58,77.764,42.576,32.047 +2020-11-14 00:15:00,74.26,75.94,42.576,32.047 +2020-11-14 00:30:00,76.41,76.453,42.576,32.047 +2020-11-14 00:45:00,75.17,76.795,42.576,32.047 +2020-11-14 01:00:00,67.85,78.506,39.34,32.047 +2020-11-14 01:15:00,73.52,78.689,39.34,32.047 +2020-11-14 01:30:00,72.25,78.084,39.34,32.047 +2020-11-14 01:45:00,73.31,78.359,39.34,32.047 +2020-11-14 02:00:00,65.19,80.163,37.582,32.047 +2020-11-14 02:15:00,71.47,80.111,37.582,32.047 +2020-11-14 02:30:00,72.68,79.926,37.582,32.047 +2020-11-14 02:45:00,72.1,80.97,37.582,32.047 +2020-11-14 03:00:00,65.86,83.103,36.523,32.047 +2020-11-14 03:15:00,72.14,83.70299999999999,36.523,32.047 +2020-11-14 03:30:00,71.64,83.572,36.523,32.047 +2020-11-14 03:45:00,67.64,85.304,36.523,32.047 +2020-11-14 04:00:00,64.63,94.146,36.347,32.047 +2020-11-14 04:15:00,66.11,103.001,36.347,32.047 +2020-11-14 04:30:00,66.46,101.794,36.347,32.047 +2020-11-14 04:45:00,67.22,102.839,36.347,32.047 +2020-11-14 05:00:00,66.75,122.023,36.407,32.047 +2020-11-14 05:15:00,66.43,136.593,36.407,32.047 +2020-11-14 05:30:00,66.52,132.209,36.407,32.047 +2020-11-14 05:45:00,69.84,127.36399999999999,36.407,32.047 +2020-11-14 06:00:00,68.77,141.99200000000002,38.228,32.047 +2020-11-14 06:15:00,71.68,159.651,38.228,32.047 +2020-11-14 06:30:00,74.01,154.347,38.228,32.047 +2020-11-14 06:45:00,75.87,149.19799999999998,38.228,32.047 +2020-11-14 07:00:00,77.55,146.75,41.905,32.047 +2020-11-14 07:15:00,78.66,149.886,41.905,32.047 +2020-11-14 07:30:00,84.59,152.562,41.905,32.047 +2020-11-14 07:45:00,85.21,155.03799999999998,41.905,32.047 +2020-11-14 08:00:00,88.67,157.241,46.051,32.047 +2020-11-14 08:15:00,88.43,158.736,46.051,32.047 +2020-11-14 08:30:00,88.2,158.338,46.051,32.047 +2020-11-14 08:45:00,89.95,156.94899999999998,46.051,32.047 +2020-11-14 09:00:00,90.45,153.843,46.683,32.047 +2020-11-14 09:15:00,92.7,152.679,46.683,32.047 +2020-11-14 09:30:00,89.36,152.045,46.683,32.047 +2020-11-14 09:45:00,91.08,150.639,46.683,32.047 +2020-11-14 10:00:00,92.47,146.975,44.425,32.047 +2020-11-14 10:15:00,89.41,145.27,44.425,32.047 +2020-11-14 10:30:00,89.74,143.088,44.425,32.047 +2020-11-14 10:45:00,89.93,142.576,44.425,32.047 +2020-11-14 11:00:00,88.64,138.803,42.148999999999994,32.047 +2020-11-14 11:15:00,89.78,137.474,42.148999999999994,32.047 +2020-11-14 11:30:00,87.93,138.07,42.148999999999994,32.047 +2020-11-14 11:45:00,90.55,138.03,42.148999999999994,32.047 +2020-11-14 12:00:00,88.09,133.856,39.683,32.047 +2020-11-14 12:15:00,84.91,131.719,39.683,32.047 +2020-11-14 12:30:00,85.92,132.635,39.683,32.047 +2020-11-14 12:45:00,81.63,132.94799999999998,39.683,32.047 +2020-11-14 13:00:00,83.08,132.429,37.154,32.047 +2020-11-14 13:15:00,79.91,130.911,37.154,32.047 +2020-11-14 13:30:00,78.46,130.222,37.154,32.047 +2020-11-14 13:45:00,81.0,129.796,37.154,32.047 +2020-11-14 14:00:00,78.11,128.738,36.457,32.047 +2020-11-14 14:15:00,80.05,127.838,36.457,32.047 +2020-11-14 14:30:00,79.25,127.26700000000001,36.457,32.047 +2020-11-14 14:45:00,81.47,127.476,36.457,32.047 +2020-11-14 15:00:00,82.81,126.669,38.257,32.047 +2020-11-14 15:15:00,83.68,127.45100000000001,38.257,32.047 +2020-11-14 15:30:00,86.67,127.93799999999999,38.257,32.047 +2020-11-14 15:45:00,89.46,128.145,38.257,32.047 +2020-11-14 16:00:00,93.0,129.27100000000002,41.181000000000004,32.047 +2020-11-14 16:15:00,94.17,131.631,41.181000000000004,32.047 +2020-11-14 16:30:00,97.49,131.899,41.181000000000004,32.047 +2020-11-14 16:45:00,98.74,131.75,41.181000000000004,32.047 +2020-11-14 17:00:00,103.86,133.11,46.806000000000004,32.047 +2020-11-14 17:15:00,102.08,134.124,46.806000000000004,32.047 +2020-11-14 17:30:00,106.38,134.031,46.806000000000004,32.047 +2020-11-14 17:45:00,104.65,133.447,46.806000000000004,32.047 +2020-11-14 18:00:00,105.57,136.77700000000002,52.073,32.047 +2020-11-14 18:15:00,107.67,136.77700000000002,52.073,32.047 +2020-11-14 18:30:00,107.18,136.754,52.073,32.047 +2020-11-14 18:45:00,104.68,136.619,52.073,32.047 +2020-11-14 19:00:00,106.23,138.694,53.608000000000004,32.047 +2020-11-14 19:15:00,102.11,137.142,53.608000000000004,32.047 +2020-11-14 19:30:00,101.48,136.377,53.608000000000004,32.047 +2020-11-14 19:45:00,102.58,134.679,53.608000000000004,32.047 +2020-11-14 20:00:00,93.26,132.019,50.265,32.047 +2020-11-14 20:15:00,91.95,129.72899999999998,50.265,32.047 +2020-11-14 20:30:00,89.67,127.99700000000001,50.265,32.047 +2020-11-14 20:45:00,87.38,126.29799999999999,50.265,32.047 +2020-11-14 21:00:00,82.46,123.631,45.766000000000005,32.047 +2020-11-14 21:15:00,82.49,123.90100000000001,45.766000000000005,32.047 +2020-11-14 21:30:00,81.16,123.895,45.766000000000005,32.047 +2020-11-14 21:45:00,81.79,121.103,45.766000000000005,32.047 +2020-11-14 22:00:00,76.57,116.85799999999999,45.97,32.047 +2020-11-14 22:15:00,78.47,113.943,45.97,32.047 +2020-11-14 22:30:00,73.69,111.147,45.97,32.047 +2020-11-14 22:45:00,74.23,107.86,45.97,32.047 +2020-11-14 23:00:00,71.23,104.15299999999999,40.415,32.047 +2020-11-14 23:15:00,73.31,100.02799999999999,40.415,32.047 +2020-11-14 23:30:00,67.49,97.47399999999999,40.415,32.047 +2020-11-14 23:45:00,69.47,95.495,40.415,32.047 +2020-11-15 00:00:00,64.33,78.939,36.376,32.047 +2020-11-15 00:15:00,64.14,76.423,36.376,32.047 +2020-11-15 00:30:00,62.75,76.64,36.376,32.047 +2020-11-15 00:45:00,61.39,77.367,36.376,32.047 +2020-11-15 01:00:00,59.62,79.115,32.992,32.047 +2020-11-15 01:15:00,59.48,79.914,32.992,32.047 +2020-11-15 01:30:00,59.29,79.596,32.992,32.047 +2020-11-15 01:45:00,58.73,79.51,32.992,32.047 +2020-11-15 02:00:00,57.48,80.884,32.327,32.047 +2020-11-15 02:15:00,58.06,80.6,32.327,32.047 +2020-11-15 02:30:00,56.99,81.02,32.327,32.047 +2020-11-15 02:45:00,57.41,82.229,32.327,32.047 +2020-11-15 03:00:00,56.71,84.815,31.169,32.047 +2020-11-15 03:15:00,58.22,85.223,31.169,32.047 +2020-11-15 03:30:00,57.82,85.655,31.169,32.047 +2020-11-15 03:45:00,60.95,86.992,31.169,32.047 +2020-11-15 04:00:00,58.41,95.665,30.796,32.047 +2020-11-15 04:15:00,58.67,103.736,30.796,32.047 +2020-11-15 04:30:00,59.85,103.132,30.796,32.047 +2020-11-15 04:45:00,60.47,104.154,30.796,32.047 +2020-11-15 05:00:00,61.1,121.301,30.848000000000003,32.047 +2020-11-15 05:15:00,62.05,134.10299999999998,30.848000000000003,32.047 +2020-11-15 05:30:00,61.78,129.438,30.848000000000003,32.047 +2020-11-15 05:45:00,62.1,124.605,30.848000000000003,32.047 +2020-11-15 06:00:00,63.73,138.144,31.166,32.047 +2020-11-15 06:15:00,64.63,155.086,31.166,32.047 +2020-11-15 06:30:00,63.71,148.829,31.166,32.047 +2020-11-15 06:45:00,66.0,142.626,31.166,32.047 +2020-11-15 07:00:00,69.28,141.808,33.527,32.047 +2020-11-15 07:15:00,69.23,143.747,33.527,32.047 +2020-11-15 07:30:00,70.66,146.174,33.527,32.047 +2020-11-15 07:45:00,72.74,148.149,33.527,32.047 +2020-11-15 08:00:00,76.18,151.78799999999998,36.616,32.047 +2020-11-15 08:15:00,75.92,153.657,36.616,32.047 +2020-11-15 08:30:00,76.26,154.701,36.616,32.047 +2020-11-15 08:45:00,76.69,154.578,36.616,32.047 +2020-11-15 09:00:00,75.86,151.127,37.857,32.047 +2020-11-15 09:15:00,76.01,150.151,37.857,32.047 +2020-11-15 09:30:00,76.34,149.567,37.857,32.047 +2020-11-15 09:45:00,75.23,148.433,37.857,32.047 +2020-11-15 10:00:00,74.72,146.63299999999998,36.319,32.047 +2020-11-15 10:15:00,76.47,145.306,36.319,32.047 +2020-11-15 10:30:00,77.15,143.592,36.319,32.047 +2020-11-15 10:45:00,81.23,142.128,36.319,32.047 +2020-11-15 11:00:00,80.21,138.842,37.236999999999995,32.047 +2020-11-15 11:15:00,83.25,137.43200000000002,37.236999999999995,32.047 +2020-11-15 11:30:00,84.16,137.60299999999998,37.236999999999995,32.047 +2020-11-15 11:45:00,84.67,138.061,37.236999999999995,32.047 +2020-11-15 12:00:00,81.09,133.804,34.871,32.047 +2020-11-15 12:15:00,79.37,132.8,34.871,32.047 +2020-11-15 12:30:00,75.92,132.793,34.871,32.047 +2020-11-15 12:45:00,80.89,132.215,34.871,32.047 +2020-11-15 13:00:00,77.87,131.03799999999998,29.738000000000003,32.047 +2020-11-15 13:15:00,77.45,131.476,29.738000000000003,32.047 +2020-11-15 13:30:00,80.57,130.268,29.738000000000003,32.047 +2020-11-15 13:45:00,80.75,129.736,29.738000000000003,32.047 +2020-11-15 14:00:00,77.13,129.19799999999998,27.333000000000002,32.047 +2020-11-15 14:15:00,77.57,129.305,27.333000000000002,32.047 +2020-11-15 14:30:00,76.34,129.243,27.333000000000002,32.047 +2020-11-15 14:45:00,81.67,128.811,27.333000000000002,32.047 +2020-11-15 15:00:00,80.78,126.95700000000001,28.232,32.047 +2020-11-15 15:15:00,82.26,128.025,28.232,32.047 +2020-11-15 15:30:00,82.54,128.907,28.232,32.047 +2020-11-15 15:45:00,83.8,129.707,28.232,32.047 +2020-11-15 16:00:00,84.97,131.477,32.815,32.047 +2020-11-15 16:15:00,87.01,133.31,32.815,32.047 +2020-11-15 16:30:00,90.92,134.102,32.815,32.047 +2020-11-15 16:45:00,94.28,134.114,32.815,32.047 +2020-11-15 17:00:00,99.69,135.486,43.068999999999996,32.047 +2020-11-15 17:15:00,99.2,136.842,43.068999999999996,32.047 +2020-11-15 17:30:00,101.41,137.244,43.068999999999996,32.047 +2020-11-15 17:45:00,102.52,138.362,43.068999999999996,32.047 +2020-11-15 18:00:00,103.76,141.516,50.498999999999995,32.047 +2020-11-15 18:15:00,103.31,142.23,50.498999999999995,32.047 +2020-11-15 18:30:00,103.12,140.725,50.498999999999995,32.047 +2020-11-15 18:45:00,100.94,141.876,50.498999999999995,32.047 +2020-11-15 19:00:00,98.74,144.512,53.481,32.047 +2020-11-15 19:15:00,97.83,142.938,53.481,32.047 +2020-11-15 19:30:00,95.48,141.958,53.481,32.047 +2020-11-15 19:45:00,95.27,141.03,53.481,32.047 +2020-11-15 20:00:00,97.93,138.394,51.687,32.047 +2020-11-15 20:15:00,98.82,136.695,51.687,32.047 +2020-11-15 20:30:00,95.61,136.059,51.687,32.047 +2020-11-15 20:45:00,88.72,132.92600000000002,51.687,32.047 +2020-11-15 21:00:00,85.57,128.464,47.674,32.047 +2020-11-15 21:15:00,87.2,128.194,47.674,32.047 +2020-11-15 21:30:00,86.41,128.145,47.674,32.047 +2020-11-15 21:45:00,91.7,125.568,47.674,32.047 +2020-11-15 22:00:00,90.91,121.318,48.178000000000004,32.047 +2020-11-15 22:15:00,94.56,117.251,48.178000000000004,32.047 +2020-11-15 22:30:00,86.94,112.219,48.178000000000004,32.047 +2020-11-15 22:45:00,86.52,107.897,48.178000000000004,32.047 +2020-11-15 23:00:00,86.59,102.23200000000001,42.553999999999995,32.047 +2020-11-15 23:15:00,89.06,99.788,42.553999999999995,32.047 +2020-11-15 23:30:00,87.84,97.57,42.553999999999995,32.047 +2020-11-15 23:45:00,83.38,96.226,42.553999999999995,32.047 +2020-11-16 00:00:00,77.1,99.905,37.177,32.225 +2020-11-16 00:15:00,77.33,98.662,37.177,32.225 +2020-11-16 00:30:00,82.22,99.729,37.177,32.225 +2020-11-16 00:45:00,82.47,101.445,37.177,32.225 +2020-11-16 01:00:00,81.36,102.945,35.358000000000004,32.225 +2020-11-16 01:15:00,75.91,104.265,35.358000000000004,32.225 +2020-11-16 01:30:00,77.02,104.413,35.358000000000004,32.225 +2020-11-16 01:45:00,82.03,104.87100000000001,35.358000000000004,32.225 +2020-11-16 02:00:00,81.18,106.01299999999999,35.03,32.225 +2020-11-16 02:15:00,77.98,106.837,35.03,32.225 +2020-11-16 02:30:00,75.5,107.139,35.03,32.225 +2020-11-16 02:45:00,80.51,108.699,35.03,32.225 +2020-11-16 03:00:00,81.9,112.40299999999999,34.394,32.225 +2020-11-16 03:15:00,83.19,113.646,34.394,32.225 +2020-11-16 03:30:00,82.04,115.22200000000001,34.394,32.225 +2020-11-16 03:45:00,82.89,115.84,34.394,32.225 +2020-11-16 04:00:00,84.77,130.126,34.421,32.225 +2020-11-16 04:15:00,83.73,143.125,34.421,32.225 +2020-11-16 04:30:00,79.15,144.792,34.421,32.225 +2020-11-16 04:45:00,87.58,145.659,34.421,32.225 +2020-11-16 05:00:00,93.5,175.607,39.435,32.225 +2020-11-16 05:15:00,96.13,205.88400000000001,39.435,32.225 +2020-11-16 05:30:00,95.49,202.571,39.435,32.225 +2020-11-16 05:45:00,96.86,193.637,39.435,32.225 +2020-11-16 06:00:00,106.96,190.03,55.685,32.225 +2020-11-16 06:15:00,117.57,193.713,55.685,32.225 +2020-11-16 06:30:00,124.3,195.49400000000003,55.685,32.225 +2020-11-16 06:45:00,128.75,196.998,55.685,32.225 +2020-11-16 07:00:00,127.88,198.408,66.837,32.225 +2020-11-16 07:15:00,130.09,202.535,66.837,32.225 +2020-11-16 07:30:00,131.28,204.43900000000002,66.837,32.225 +2020-11-16 07:45:00,132.13,204.878,66.837,32.225 +2020-11-16 08:00:00,134.59,203.71,72.217,32.225 +2020-11-16 08:15:00,135.13,204.238,72.217,32.225 +2020-11-16 08:30:00,134.93,202.28799999999998,72.217,32.225 +2020-11-16 08:45:00,135.48,199.72,72.217,32.225 +2020-11-16 09:00:00,137.04,194.734,66.117,32.225 +2020-11-16 09:15:00,137.72,189.67,66.117,32.225 +2020-11-16 09:30:00,139.23,186.65099999999998,66.117,32.225 +2020-11-16 09:45:00,140.89,184.546,66.117,32.225 +2020-11-16 10:00:00,140.75,182.533,62.1,32.225 +2020-11-16 10:15:00,140.27,180.21200000000002,62.1,32.225 +2020-11-16 10:30:00,139.75,178.195,62.1,32.225 +2020-11-16 10:45:00,141.87,176.75400000000002,62.1,32.225 +2020-11-16 11:00:00,139.36,173.687,60.021,32.225 +2020-11-16 11:15:00,138.76,173.46599999999998,60.021,32.225 +2020-11-16 11:30:00,136.87,174.088,60.021,32.225 +2020-11-16 11:45:00,137.88,173.037,60.021,32.225 +2020-11-16 12:00:00,136.95,168.87,56.75899999999999,32.225 +2020-11-16 12:15:00,136.17,167.93599999999998,56.75899999999999,32.225 +2020-11-16 12:30:00,138.07,167.206,56.75899999999999,32.225 +2020-11-16 12:45:00,139.07,167.998,56.75899999999999,32.225 +2020-11-16 13:00:00,135.65,167.93099999999998,56.04600000000001,32.225 +2020-11-16 13:15:00,138.73,167.377,56.04600000000001,32.225 +2020-11-16 13:30:00,134.79,165.9,56.04600000000001,32.225 +2020-11-16 13:45:00,133.83,165.859,56.04600000000001,32.225 +2020-11-16 14:00:00,130.83,165.37900000000002,55.475,32.225 +2020-11-16 14:15:00,130.65,165.18099999999998,55.475,32.225 +2020-11-16 14:30:00,129.75,164.22,55.475,32.225 +2020-11-16 14:45:00,129.95,164.2,55.475,32.225 +2020-11-16 15:00:00,130.58,164.608,57.048,32.225 +2020-11-16 15:15:00,129.71,164.543,57.048,32.225 +2020-11-16 15:30:00,129.12,165.127,57.048,32.225 +2020-11-16 15:45:00,129.23,166.125,57.048,32.225 +2020-11-16 16:00:00,130.93,169.43,59.06,32.225 +2020-11-16 16:15:00,132.04,170.313,59.06,32.225 +2020-11-16 16:30:00,136.67,171.088,59.06,32.225 +2020-11-16 16:45:00,138.56,170.58900000000003,59.06,32.225 +2020-11-16 17:00:00,139.38,173.562,65.419,32.225 +2020-11-16 17:15:00,139.96,173.8,65.419,32.225 +2020-11-16 17:30:00,140.06,173.597,65.419,32.225 +2020-11-16 17:45:00,139.57,173.247,65.419,32.225 +2020-11-16 18:00:00,137.5,175.109,69.345,32.225 +2020-11-16 18:15:00,136.2,174.597,69.345,32.225 +2020-11-16 18:30:00,135.18,173.084,69.345,32.225 +2020-11-16 18:45:00,135.88,173.261,69.345,32.225 +2020-11-16 19:00:00,133.06,174.851,73.825,32.225 +2020-11-16 19:15:00,129.71,172.138,73.825,32.225 +2020-11-16 19:30:00,128.36,171.513,73.825,32.225 +2020-11-16 19:45:00,126.9,168.456,73.825,32.225 +2020-11-16 20:00:00,121.58,164.43200000000002,64.027,32.225 +2020-11-16 20:15:00,117.62,160.344,64.027,32.225 +2020-11-16 20:30:00,113.7,156.911,64.027,32.225 +2020-11-16 20:45:00,112.48,154.009,64.027,32.225 +2020-11-16 21:00:00,108.97,152.451,57.952,32.225 +2020-11-16 21:15:00,107.75,150.361,57.952,32.225 +2020-11-16 21:30:00,110.85,148.789,57.952,32.225 +2020-11-16 21:45:00,111.19,146.843,57.952,32.225 +2020-11-16 22:00:00,106.86,138.77200000000002,53.031000000000006,32.225 +2020-11-16 22:15:00,98.64,134.02100000000002,53.031000000000006,32.225 +2020-11-16 22:30:00,94.58,118.351,53.031000000000006,32.225 +2020-11-16 22:45:00,92.11,110.148,53.031000000000006,32.225 +2020-11-16 23:00:00,89.04,105.603,45.085,32.225 +2020-11-16 23:15:00,88.11,104.111,45.085,32.225 +2020-11-16 23:30:00,84.69,104.76700000000001,45.085,32.225 +2020-11-16 23:45:00,83.57,104.964,45.085,32.225 +2020-11-17 00:00:00,84.58,99.30799999999999,42.843,32.225 +2020-11-17 00:15:00,87.16,99.41,42.843,32.225 +2020-11-17 00:30:00,88.47,99.79700000000001,42.843,32.225 +2020-11-17 00:45:00,83.12,100.8,42.843,32.225 +2020-11-17 01:00:00,78.7,102.07799999999999,41.542,32.225 +2020-11-17 01:15:00,84.09,103.046,41.542,32.225 +2020-11-17 01:30:00,84.23,103.331,41.542,32.225 +2020-11-17 01:45:00,83.62,103.946,41.542,32.225 +2020-11-17 02:00:00,76.91,105.01700000000001,40.19,32.225 +2020-11-17 02:15:00,80.46,105.959,40.19,32.225 +2020-11-17 02:30:00,83.38,105.678,40.19,32.225 +2020-11-17 02:45:00,84.48,107.306,40.19,32.225 +2020-11-17 03:00:00,82.24,109.87200000000001,39.626,32.225 +2020-11-17 03:15:00,84.6,110.59299999999999,39.626,32.225 +2020-11-17 03:30:00,86.1,112.57600000000001,39.626,32.225 +2020-11-17 03:45:00,86.14,113.147,39.626,32.225 +2020-11-17 04:00:00,82.44,127.023,40.196999999999996,32.225 +2020-11-17 04:15:00,86.13,139.739,40.196999999999996,32.225 +2020-11-17 04:30:00,89.79,141.108,40.196999999999996,32.225 +2020-11-17 04:45:00,90.47,143.09799999999998,40.196999999999996,32.225 +2020-11-17 05:00:00,88.89,177.57299999999998,43.378,32.225 +2020-11-17 05:15:00,91.86,207.77200000000002,43.378,32.225 +2020-11-17 05:30:00,94.62,203.21400000000003,43.378,32.225 +2020-11-17 05:45:00,98.85,194.155,43.378,32.225 +2020-11-17 06:00:00,105.56,189.748,55.691,32.225 +2020-11-17 06:15:00,112.04,194.85299999999998,55.691,32.225 +2020-11-17 06:30:00,118.42,196.07299999999998,55.691,32.225 +2020-11-17 06:45:00,121.99,197.13400000000001,55.691,32.225 +2020-11-17 07:00:00,126.36,198.41299999999998,65.567,32.225 +2020-11-17 07:15:00,128.77,202.37,65.567,32.225 +2020-11-17 07:30:00,129.41,203.832,65.567,32.225 +2020-11-17 07:45:00,131.36,204.28900000000002,65.567,32.225 +2020-11-17 08:00:00,134.03,203.22099999999998,73.001,32.225 +2020-11-17 08:15:00,133.22,202.782,73.001,32.225 +2020-11-17 08:30:00,137.27,200.732,73.001,32.225 +2020-11-17 08:45:00,136.45,197.748,73.001,32.225 +2020-11-17 09:00:00,137.66,192.072,67.08800000000001,32.225 +2020-11-17 09:15:00,138.23,188.37599999999998,67.08800000000001,32.225 +2020-11-17 09:30:00,141.61,186.05599999999998,67.08800000000001,32.225 +2020-11-17 09:45:00,141.87,183.963,67.08800000000001,32.225 +2020-11-17 10:00:00,142.21,181.206,62.803000000000004,32.225 +2020-11-17 10:15:00,140.92,177.903,62.803000000000004,32.225 +2020-11-17 10:30:00,143.35,176.02200000000002,62.803000000000004,32.225 +2020-11-17 10:45:00,142.09,174.975,62.803000000000004,32.225 +2020-11-17 11:00:00,140.39,173.19299999999998,60.155,32.225 +2020-11-17 11:15:00,139.74,172.726,60.155,32.225 +2020-11-17 11:30:00,140.21,172.148,60.155,32.225 +2020-11-17 11:45:00,140.97,171.627,60.155,32.225 +2020-11-17 12:00:00,139.79,166.22099999999998,56.845,32.225 +2020-11-17 12:15:00,138.99,164.982,56.845,32.225 +2020-11-17 12:30:00,143.01,165.047,56.845,32.225 +2020-11-17 12:45:00,146.71,165.69400000000002,56.845,32.225 +2020-11-17 13:00:00,144.04,165.172,56.163000000000004,32.225 +2020-11-17 13:15:00,138.69,164.601,56.163000000000004,32.225 +2020-11-17 13:30:00,137.01,164.142,56.163000000000004,32.225 +2020-11-17 13:45:00,136.33,164.106,56.163000000000004,32.225 +2020-11-17 14:00:00,136.4,163.898,55.934,32.225 +2020-11-17 14:15:00,130.93,163.82,55.934,32.225 +2020-11-17 14:30:00,127.86,163.495,55.934,32.225 +2020-11-17 14:45:00,127.46,163.289,55.934,32.225 +2020-11-17 15:00:00,129.68,163.296,57.43899999999999,32.225 +2020-11-17 15:15:00,129.91,163.672,57.43899999999999,32.225 +2020-11-17 15:30:00,130.07,164.459,57.43899999999999,32.225 +2020-11-17 15:45:00,132.74,165.16299999999998,57.43899999999999,32.225 +2020-11-17 16:00:00,135.56,168.65099999999998,59.968999999999994,32.225 +2020-11-17 16:15:00,137.0,169.99099999999999,59.968999999999994,32.225 +2020-11-17 16:30:00,137.55,171.27900000000002,59.968999999999994,32.225 +2020-11-17 16:45:00,137.39,171.187,59.968999999999994,32.225 +2020-11-17 17:00:00,139.11,174.64,67.428,32.225 +2020-11-17 17:15:00,139.71,174.99,67.428,32.225 +2020-11-17 17:30:00,139.17,175.31,67.428,32.225 +2020-11-17 17:45:00,137.63,174.801,67.428,32.225 +2020-11-17 18:00:00,135.8,176.44,71.533,32.225 +2020-11-17 18:15:00,134.06,175.666,71.533,32.225 +2020-11-17 18:30:00,133.05,173.852,71.533,32.225 +2020-11-17 18:45:00,133.67,174.7,71.533,32.225 +2020-11-17 19:00:00,130.58,176.188,73.32300000000001,32.225 +2020-11-17 19:15:00,128.02,173.24200000000002,73.32300000000001,32.225 +2020-11-17 19:30:00,125.82,171.97799999999998,73.32300000000001,32.225 +2020-11-17 19:45:00,124.09,168.967,73.32300000000001,32.225 +2020-11-17 20:00:00,119.92,165.153,64.166,32.225 +2020-11-17 20:15:00,115.35,160.27200000000002,64.166,32.225 +2020-11-17 20:30:00,112.08,157.69899999999998,64.166,32.225 +2020-11-17 20:45:00,109.65,154.369,64.166,32.225 +2020-11-17 21:00:00,106.35,152.325,57.891999999999996,32.225 +2020-11-17 21:15:00,101.33,150.787,57.891999999999996,32.225 +2020-11-17 21:30:00,97.94,148.607,57.891999999999996,32.225 +2020-11-17 21:45:00,94.87,146.888,57.891999999999996,32.225 +2020-11-17 22:00:00,90.4,140.35,53.242,32.225 +2020-11-17 22:15:00,87.25,135.31,53.242,32.225 +2020-11-17 22:30:00,83.17,119.822,53.242,32.225 +2020-11-17 22:45:00,81.13,111.868,53.242,32.225 +2020-11-17 23:00:00,77.54,107.215,46.665,32.225 +2020-11-17 23:15:00,75.31,105.156,46.665,32.225 +2020-11-17 23:30:00,73.28,105.50200000000001,46.665,32.225 +2020-11-17 23:45:00,71.49,105.323,46.665,32.225 +2020-11-18 00:00:00,68.06,96.84,43.16,32.225 +2020-11-18 00:15:00,66.65,92.867,43.16,32.225 +2020-11-18 00:30:00,66.05,93.897,43.16,32.225 +2020-11-18 00:45:00,65.38,96.11,43.16,32.225 +2020-11-18 01:00:00,63.81,97.618,40.972,32.225 +2020-11-18 01:15:00,65.53,99.4,40.972,32.225 +2020-11-18 01:30:00,61.92,99.46,40.972,32.225 +2020-11-18 01:45:00,62.1,99.815,40.972,32.225 +2020-11-18 02:00:00,61.67,100.939,39.749,32.225 +2020-11-18 02:15:00,62.09,100.72399999999999,39.749,32.225 +2020-11-18 02:30:00,61.4,100.70299999999999,39.749,32.225 +2020-11-18 02:45:00,61.82,102.81200000000001,39.749,32.225 +2020-11-18 03:00:00,61.2,105.334,39.422,32.225 +2020-11-18 03:15:00,61.6,105.109,39.422,32.225 +2020-11-18 03:30:00,61.32,106.791,39.422,32.225 +2020-11-18 03:45:00,62.03,107.945,39.422,32.225 +2020-11-18 04:00:00,62.95,117.961,40.505,32.225 +2020-11-18 04:15:00,62.82,126.931,40.505,32.225 +2020-11-18 04:30:00,63.09,126.81700000000001,40.505,32.225 +2020-11-18 04:45:00,63.58,127.492,40.505,32.225 +2020-11-18 05:00:00,64.61,142.859,43.397,32.225 +2020-11-18 05:15:00,64.56,154.186,43.397,32.225 +2020-11-18 05:30:00,64.42,150.976,43.397,32.225 +2020-11-18 05:45:00,65.18,147.387,43.397,32.225 +2020-11-18 06:00:00,65.99,160.76,55.218,32.225 +2020-11-18 06:15:00,66.23,178.679,55.218,32.225 +2020-11-18 06:30:00,67.7,173.043,55.218,32.225 +2020-11-18 06:45:00,69.63,166.206,55.218,32.225 +2020-11-18 07:00:00,72.15,165.429,67.39,32.225 +2020-11-18 07:15:00,73.16,168.10299999999998,67.39,32.225 +2020-11-18 07:30:00,73.58,170.863,67.39,32.225 +2020-11-18 07:45:00,76.05,173.437,67.39,32.225 +2020-11-18 08:00:00,79.97,176.707,74.345,32.225 +2020-11-18 08:15:00,81.61,179.26,74.345,32.225 +2020-11-18 08:30:00,82.38,181.017,74.345,32.225 +2020-11-18 08:45:00,84.44,181.19799999999998,74.345,32.225 +2020-11-18 09:00:00,86.73,177.138,69.336,32.225 +2020-11-18 09:15:00,88.15,175.387,69.336,32.225 +2020-11-18 09:30:00,88.01,173.38099999999997,69.336,32.225 +2020-11-18 09:45:00,88.77,171.382,69.336,32.225 +2020-11-18 10:00:00,88.6,170.173,64.291,32.225 +2020-11-18 10:15:00,89.69,168.09,64.291,32.225 +2020-11-18 10:30:00,91.83,166.854,64.291,32.225 +2020-11-18 10:45:00,93.65,165.011,64.291,32.225 +2020-11-18 11:00:00,93.82,164.09099999999998,62.20399999999999,32.225 +2020-11-18 11:15:00,96.88,162.225,62.20399999999999,32.225 +2020-11-18 11:30:00,97.62,161.532,62.20399999999999,32.225 +2020-11-18 11:45:00,98.81,160.72899999999998,62.20399999999999,32.225 +2020-11-18 12:00:00,98.43,155.30100000000002,59.042,32.225 +2020-11-18 12:15:00,96.83,154.36,59.042,32.225 +2020-11-18 12:30:00,94.69,153.64600000000002,59.042,32.225 +2020-11-18 12:45:00,92.52,153.125,59.042,32.225 +2020-11-18 13:00:00,91.17,152.308,57.907,32.225 +2020-11-18 13:15:00,90.28,153.11700000000002,57.907,32.225 +2020-11-18 13:30:00,89.49,152.067,57.907,32.225 +2020-11-18 13:45:00,89.41,151.834,57.907,32.225 +2020-11-18 14:00:00,88.17,151.933,58.358000000000004,32.225 +2020-11-18 14:15:00,87.97,152.22299999999998,58.358000000000004,32.225 +2020-11-18 14:30:00,88.15,151.829,58.358000000000004,32.225 +2020-11-18 14:45:00,89.22,151.511,58.358000000000004,32.225 +2020-11-18 15:00:00,91.04,150.407,59.348,32.225 +2020-11-18 15:15:00,90.98,151.707,59.348,32.225 +2020-11-18 15:30:00,90.33,152.963,59.348,32.225 +2020-11-18 15:45:00,91.75,154.442,59.348,32.225 +2020-11-18 16:00:00,93.83,157.414,61.413999999999994,32.225 +2020-11-18 16:15:00,96.36,159.002,61.413999999999994,32.225 +2020-11-18 16:30:00,97.49,160.732,61.413999999999994,32.225 +2020-11-18 16:45:00,98.72,161.352,61.413999999999994,32.225 +2020-11-18 17:00:00,101.46,164.60299999999998,67.107,32.225 +2020-11-18 17:15:00,103.06,165.655,67.107,32.225 +2020-11-18 17:30:00,107.61,166.00599999999997,67.107,32.225 +2020-11-18 17:45:00,105.53,167.03400000000002,67.107,32.225 +2020-11-18 18:00:00,105.8,168.706,71.92,32.225 +2020-11-18 18:15:00,104.59,170.32,71.92,32.225 +2020-11-18 18:30:00,103.28,168.372,71.92,32.225 +2020-11-18 18:45:00,104.04,167.43,71.92,32.225 +2020-11-18 19:00:00,102.53,170.468,75.09,32.225 +2020-11-18 19:15:00,100.99,168.55,75.09,32.225 +2020-11-18 19:30:00,99.54,167.50900000000001,75.09,32.225 +2020-11-18 19:45:00,98.32,165.204,75.09,32.225 +2020-11-18 20:00:00,101.42,163.47799999999998,65.977,32.225 +2020-11-18 20:15:00,101.77,161.30200000000002,65.977,32.225 +2020-11-18 20:30:00,98.91,159.345,65.977,32.225 +2020-11-18 20:45:00,94.0,155.009,65.977,32.225 +2020-11-18 21:00:00,91.32,153.06799999999998,58.798,32.225 +2020-11-18 21:15:00,94.27,151.904,58.798,32.225 +2020-11-18 21:30:00,94.17,150.993,58.798,32.225 +2020-11-18 21:45:00,90.94,149.516,58.798,32.225 +2020-11-18 22:00:00,87.11,144.303,54.486000000000004,32.225 +2020-11-18 22:15:00,86.53,140.368,54.486000000000004,32.225 +2020-11-18 22:30:00,87.31,133.83,54.486000000000004,32.225 +2020-11-18 22:45:00,83.89,129.859,54.486000000000004,32.225 +2020-11-18 23:00:00,79.96,124.615,47.783,32.225 +2020-11-18 23:15:00,80.17,121.041,47.783,32.225 +2020-11-18 23:30:00,78.39,119.30799999999999,47.783,32.225 +2020-11-18 23:45:00,77.89,117.245,47.783,32.225 +2020-11-19 00:00:00,74.83,100.085,43.88,32.225 +2020-11-19 00:15:00,74.27,100.132,43.88,32.225 +2020-11-19 00:30:00,72.66,100.522,43.88,32.225 +2020-11-19 00:45:00,72.09,101.492,43.88,32.225 +2020-11-19 01:00:00,71.02,102.845,42.242,32.225 +2020-11-19 01:15:00,71.4,103.829,42.242,32.225 +2020-11-19 01:30:00,70.62,104.14,42.242,32.225 +2020-11-19 01:45:00,71.65,104.73,42.242,32.225 +2020-11-19 02:00:00,74.0,105.839,40.918,32.225 +2020-11-19 02:15:00,71.51,106.79,40.918,32.225 +2020-11-19 02:30:00,71.25,106.499,40.918,32.225 +2020-11-19 02:45:00,72.0,108.12299999999999,40.918,32.225 +2020-11-19 03:00:00,71.53,110.661,40.411,32.225 +2020-11-19 03:15:00,71.33,111.44,40.411,32.225 +2020-11-19 03:30:00,71.54,113.429,40.411,32.225 +2020-11-19 03:45:00,73.18,113.98200000000001,40.411,32.225 +2020-11-19 04:00:00,74.7,127.82600000000001,41.246,32.225 +2020-11-19 04:15:00,75.98,140.563,41.246,32.225 +2020-11-19 04:30:00,77.0,141.905,41.246,32.225 +2020-11-19 04:45:00,79.12,143.909,41.246,32.225 +2020-11-19 05:00:00,84.14,178.382,44.533,32.225 +2020-11-19 05:15:00,87.47,208.544,44.533,32.225 +2020-11-19 05:30:00,90.75,204.02200000000002,44.533,32.225 +2020-11-19 05:45:00,96.44,194.972,44.533,32.225 +2020-11-19 06:00:00,104.01,190.593,55.005,32.225 +2020-11-19 06:15:00,109.76,195.706,55.005,32.225 +2020-11-19 06:30:00,116.54,197.018,55.005,32.225 +2020-11-19 06:45:00,120.52,198.15200000000002,55.005,32.225 +2020-11-19 07:00:00,124.39,199.429,64.597,32.225 +2020-11-19 07:15:00,126.36,203.41299999999998,64.597,32.225 +2020-11-19 07:30:00,127.26,204.91,64.597,32.225 +2020-11-19 07:45:00,130.79,205.38299999999998,64.597,32.225 +2020-11-19 08:00:00,133.32,204.34599999999998,71.71600000000001,32.225 +2020-11-19 08:15:00,133.27,203.889,71.71600000000001,32.225 +2020-11-19 08:30:00,133.0,201.88400000000001,71.71600000000001,32.225 +2020-11-19 08:45:00,133.02,198.83599999999998,71.71600000000001,32.225 +2020-11-19 09:00:00,137.0,193.114,66.51899999999999,32.225 +2020-11-19 09:15:00,138.81,189.428,66.51899999999999,32.225 +2020-11-19 09:30:00,139.87,187.102,66.51899999999999,32.225 +2020-11-19 09:45:00,136.56,184.975,66.51899999999999,32.225 +2020-11-19 10:00:00,136.84,182.19400000000002,63.04,32.225 +2020-11-19 10:15:00,136.24,178.824,63.04,32.225 +2020-11-19 10:30:00,136.58,176.892,63.04,32.225 +2020-11-19 10:45:00,138.2,175.81799999999998,63.04,32.225 +2020-11-19 11:00:00,143.48,174.016,60.998000000000005,32.225 +2020-11-19 11:15:00,145.08,173.512,60.998000000000005,32.225 +2020-11-19 11:30:00,141.99,172.93099999999998,60.998000000000005,32.225 +2020-11-19 11:45:00,139.15,172.388,60.998000000000005,32.225 +2020-11-19 12:00:00,137.73,166.959,58.27,32.225 +2020-11-19 12:15:00,136.88,165.732,58.27,32.225 +2020-11-19 12:30:00,137.43,165.851,58.27,32.225 +2020-11-19 12:45:00,136.49,166.507,58.27,32.225 +2020-11-19 13:00:00,134.8,165.90599999999998,57.196000000000005,32.225 +2020-11-19 13:15:00,134.79,165.35,57.196000000000005,32.225 +2020-11-19 13:30:00,132.52,164.889,57.196000000000005,32.225 +2020-11-19 13:45:00,131.77,164.835,57.196000000000005,32.225 +2020-11-19 14:00:00,133.0,164.542,57.38399999999999,32.225 +2020-11-19 14:15:00,133.06,164.49,57.38399999999999,32.225 +2020-11-19 14:30:00,131.21,164.235,57.38399999999999,32.225 +2020-11-19 14:45:00,131.57,164.03900000000002,57.38399999999999,32.225 +2020-11-19 15:00:00,132.6,164.05700000000002,58.647,32.225 +2020-11-19 15:15:00,131.83,164.451,58.647,32.225 +2020-11-19 15:30:00,132.4,165.30900000000003,58.647,32.225 +2020-11-19 15:45:00,133.34,166.02900000000002,58.647,32.225 +2020-11-19 16:00:00,136.61,169.5,60.083999999999996,32.225 +2020-11-19 16:15:00,135.17,170.892,60.083999999999996,32.225 +2020-11-19 16:30:00,137.53,172.18599999999998,60.083999999999996,32.225 +2020-11-19 16:45:00,137.22,172.18200000000002,60.083999999999996,32.225 +2020-11-19 17:00:00,138.52,175.574,65.85600000000001,32.225 +2020-11-19 17:15:00,138.89,175.96900000000002,65.85600000000001,32.225 +2020-11-19 17:30:00,140.31,176.305,65.85600000000001,32.225 +2020-11-19 17:45:00,138.58,175.81,65.85600000000001,32.225 +2020-11-19 18:00:00,136.88,177.47400000000002,69.855,32.225 +2020-11-19 18:15:00,135.08,176.61,69.855,32.225 +2020-11-19 18:30:00,134.94,174.812,69.855,32.225 +2020-11-19 18:45:00,135.05,175.66299999999998,69.855,32.225 +2020-11-19 19:00:00,132.41,177.15200000000002,74.015,32.225 +2020-11-19 19:15:00,129.97,174.18200000000002,74.015,32.225 +2020-11-19 19:30:00,128.17,172.87900000000002,74.015,32.225 +2020-11-19 19:45:00,126.77,169.799,74.015,32.225 +2020-11-19 20:00:00,121.56,166.00799999999998,65.316,32.225 +2020-11-19 20:15:00,116.74,161.10299999999998,65.316,32.225 +2020-11-19 20:30:00,113.64,158.468,65.316,32.225 +2020-11-19 20:45:00,117.52,155.156,65.316,32.225 +2020-11-19 21:00:00,113.74,153.093,58.403999999999996,32.225 +2020-11-19 21:15:00,113.82,151.528,58.403999999999996,32.225 +2020-11-19 21:30:00,108.94,149.357,58.403999999999996,32.225 +2020-11-19 21:45:00,105.09,147.631,58.403999999999996,32.225 +2020-11-19 22:00:00,99.66,141.107,54.092,32.225 +2020-11-19 22:15:00,102.85,136.05100000000002,54.092,32.225 +2020-11-19 22:30:00,100.78,120.677,54.092,32.225 +2020-11-19 22:45:00,99.23,112.73700000000001,54.092,32.225 +2020-11-19 23:00:00,91.21,108.055,48.18600000000001,32.225 +2020-11-19 23:15:00,88.51,105.96700000000001,48.18600000000001,32.225 +2020-11-19 23:30:00,92.47,106.329,48.18600000000001,32.225 +2020-11-19 23:45:00,91.07,106.109,48.18600000000001,32.225 +2020-11-20 00:00:00,87.75,99.23,45.18899999999999,32.225 +2020-11-20 00:15:00,81.05,99.459,45.18899999999999,32.225 +2020-11-20 00:30:00,85.97,99.78200000000001,45.18899999999999,32.225 +2020-11-20 00:45:00,85.53,100.905,45.18899999999999,32.225 +2020-11-20 01:00:00,83.27,101.958,43.256,32.225 +2020-11-20 01:15:00,80.61,103.631,43.256,32.225 +2020-11-20 01:30:00,82.75,103.89,43.256,32.225 +2020-11-20 01:45:00,83.03,104.514,43.256,32.225 +2020-11-20 02:00:00,78.63,105.882,42.312,32.225 +2020-11-20 02:15:00,77.14,106.729,42.312,32.225 +2020-11-20 02:30:00,77.65,107.031,42.312,32.225 +2020-11-20 02:45:00,82.12,108.568,42.312,32.225 +2020-11-20 03:00:00,83.0,110.37899999999999,41.833,32.225 +2020-11-20 03:15:00,81.44,111.771,41.833,32.225 +2020-11-20 03:30:00,78.04,113.704,41.833,32.225 +2020-11-20 03:45:00,81.83,114.689,41.833,32.225 +2020-11-20 04:00:00,85.52,128.736,42.732,32.225 +2020-11-20 04:15:00,86.71,140.985,42.732,32.225 +2020-11-20 04:30:00,82.74,142.685,42.732,32.225 +2020-11-20 04:45:00,85.24,143.602,42.732,32.225 +2020-11-20 05:00:00,87.34,176.903,46.254,32.225 +2020-11-20 05:15:00,95.1,208.50799999999998,46.254,32.225 +2020-11-20 05:30:00,100.38,204.958,46.254,32.225 +2020-11-20 05:45:00,104.5,195.774,46.254,32.225 +2020-11-20 06:00:00,105.66,191.827,56.76,32.225 +2020-11-20 06:15:00,110.32,195.717,56.76,32.225 +2020-11-20 06:30:00,114.29,196.326,56.76,32.225 +2020-11-20 06:45:00,119.4,198.864,56.76,32.225 +2020-11-20 07:00:00,126.14,199.542,66.029,32.225 +2020-11-20 07:15:00,127.73,204.579,66.029,32.225 +2020-11-20 07:30:00,127.93,205.59099999999998,66.029,32.225 +2020-11-20 07:45:00,128.79,205.271,66.029,32.225 +2020-11-20 08:00:00,131.62,203.435,73.128,32.225 +2020-11-20 08:15:00,131.62,202.748,73.128,32.225 +2020-11-20 08:30:00,131.81,201.59400000000002,73.128,32.225 +2020-11-20 08:45:00,132.09,197.12599999999998,73.128,32.225 +2020-11-20 09:00:00,132.08,191.378,68.23100000000001,32.225 +2020-11-20 09:15:00,132.7,188.517,68.23100000000001,32.225 +2020-11-20 09:30:00,130.51,185.7,68.23100000000001,32.225 +2020-11-20 09:45:00,130.25,183.52700000000002,68.23100000000001,32.225 +2020-11-20 10:00:00,127.82,179.71400000000003,64.733,32.225 +2020-11-20 10:15:00,126.85,176.882,64.733,32.225 +2020-11-20 10:30:00,125.62,174.955,64.733,32.225 +2020-11-20 10:45:00,125.03,173.46599999999998,64.733,32.225 +2020-11-20 11:00:00,126.8,171.67,62.0,32.225 +2020-11-20 11:15:00,126.91,170.18599999999998,62.0,32.225 +2020-11-20 11:30:00,124.26,171.074,62.0,32.225 +2020-11-20 11:45:00,122.85,170.40400000000002,62.0,32.225 +2020-11-20 12:00:00,121.61,165.986,57.876999999999995,32.225 +2020-11-20 12:15:00,121.21,162.827,57.876999999999995,32.225 +2020-11-20 12:30:00,121.35,163.131,57.876999999999995,32.225 +2020-11-20 12:45:00,122.36,164.113,57.876999999999995,32.225 +2020-11-20 13:00:00,119.72,164.393,55.585,32.225 +2020-11-20 13:15:00,118.77,164.592,55.585,32.225 +2020-11-20 13:30:00,118.89,164.27200000000002,55.585,32.225 +2020-11-20 13:45:00,117.82,164.204,55.585,32.225 +2020-11-20 14:00:00,119.04,162.74,54.5,32.225 +2020-11-20 14:15:00,118.42,162.615,54.5,32.225 +2020-11-20 14:30:00,118.28,163.089,54.5,32.225 +2020-11-20 14:45:00,119.7,163.05,54.5,32.225 +2020-11-20 15:00:00,119.39,162.639,55.131,32.225 +2020-11-20 15:15:00,120.02,162.61700000000002,55.131,32.225 +2020-11-20 15:30:00,120.71,162.084,55.131,32.225 +2020-11-20 15:45:00,122.19,163.062,55.131,32.225 +2020-11-20 16:00:00,124.56,165.365,56.8,32.225 +2020-11-20 16:15:00,127.81,167.11599999999999,56.8,32.225 +2020-11-20 16:30:00,132.47,168.468,56.8,32.225 +2020-11-20 16:45:00,134.58,168.27900000000002,56.8,32.225 +2020-11-20 17:00:00,135.53,172.09799999999998,63.428999999999995,32.225 +2020-11-20 17:15:00,135.41,172.127,63.428999999999995,32.225 +2020-11-20 17:30:00,135.86,172.21599999999998,63.428999999999995,32.225 +2020-11-20 17:45:00,135.03,171.495,63.428999999999995,32.225 +2020-11-20 18:00:00,133.0,173.782,67.915,32.225 +2020-11-20 18:15:00,132.6,172.382,67.915,32.225 +2020-11-20 18:30:00,132.16,170.923,67.915,32.225 +2020-11-20 18:45:00,133.09,171.83599999999998,67.915,32.225 +2020-11-20 19:00:00,129.97,174.26,69.428,32.225 +2020-11-20 19:15:00,127.95,172.574,69.428,32.225 +2020-11-20 19:30:00,125.39,170.898,69.428,32.225 +2020-11-20 19:45:00,122.11,167.21900000000002,69.428,32.225 +2020-11-20 20:00:00,117.37,163.468,60.56100000000001,32.225 +2020-11-20 20:15:00,113.89,158.686,60.56100000000001,32.225 +2020-11-20 20:30:00,110.74,155.905,60.56100000000001,32.225 +2020-11-20 20:45:00,109.52,152.961,60.56100000000001,32.225 +2020-11-20 21:00:00,106.9,151.546,55.18600000000001,32.225 +2020-11-20 21:15:00,105.87,150.619,55.18600000000001,32.225 +2020-11-20 21:30:00,106.31,148.468,55.18600000000001,32.225 +2020-11-20 21:45:00,103.66,147.249,55.18600000000001,32.225 +2020-11-20 22:00:00,92.56,141.57,51.433,32.225 +2020-11-20 22:15:00,90.8,136.34799999999998,51.433,32.225 +2020-11-20 22:30:00,84.72,127.389,51.433,32.225 +2020-11-20 22:45:00,86.32,122.689,51.433,32.225 +2020-11-20 23:00:00,87.62,117.875,46.201,32.225 +2020-11-20 23:15:00,86.93,113.809,46.201,32.225 +2020-11-20 23:30:00,82.7,112.605,46.201,32.225 +2020-11-20 23:45:00,78.82,111.764,46.201,32.225 +2020-11-21 00:00:00,79.22,97.382,42.576,32.047 +2020-11-21 00:15:00,78.96,93.809,42.576,32.047 +2020-11-21 00:30:00,73.94,95.18799999999999,42.576,32.047 +2020-11-21 00:45:00,70.84,96.777,42.576,32.047 +2020-11-21 01:00:00,71.67,98.469,39.34,32.047 +2020-11-21 01:15:00,74.73,99.413,39.34,32.047 +2020-11-21 01:30:00,74.22,99.094,39.34,32.047 +2020-11-21 01:45:00,71.33,99.74799999999999,39.34,32.047 +2020-11-21 02:00:00,71.97,101.554,37.582,32.047 +2020-11-21 02:15:00,73.0,101.944,37.582,32.047 +2020-11-21 02:30:00,71.44,101.148,37.582,32.047 +2020-11-21 02:45:00,69.8,102.914,37.582,32.047 +2020-11-21 03:00:00,70.35,105.005,36.523,32.047 +2020-11-21 03:15:00,71.12,105.26100000000001,36.523,32.047 +2020-11-21 03:30:00,68.69,105.90799999999999,36.523,32.047 +2020-11-21 03:45:00,65.43,107.25299999999999,36.523,32.047 +2020-11-21 04:00:00,63.81,117.439,36.347,32.047 +2020-11-21 04:15:00,64.05,127.375,36.347,32.047 +2020-11-21 04:30:00,65.13,126.90899999999999,36.347,32.047 +2020-11-21 04:45:00,65.92,127.463,36.347,32.047 +2020-11-21 05:00:00,66.64,145.74,36.407,32.047 +2020-11-21 05:15:00,66.61,159.19,36.407,32.047 +2020-11-21 05:30:00,66.7,156.248,36.407,32.047 +2020-11-21 05:45:00,68.33,152.523,36.407,32.047 +2020-11-21 06:00:00,70.41,166.495,38.228,32.047 +2020-11-21 06:15:00,71.52,185.717,38.228,32.047 +2020-11-21 06:30:00,73.49,181.28099999999998,38.228,32.047 +2020-11-21 06:45:00,75.76,175.635,38.228,32.047 +2020-11-21 07:00:00,79.69,172.74200000000002,41.905,32.047 +2020-11-21 07:15:00,81.93,176.484,41.905,32.047 +2020-11-21 07:30:00,82.59,180.097,41.905,32.047 +2020-11-21 07:45:00,86.02,183.34099999999998,41.905,32.047 +2020-11-21 08:00:00,89.63,184.977,46.051,32.047 +2020-11-21 08:15:00,90.83,187.362,46.051,32.047 +2020-11-21 08:30:00,93.03,187.613,46.051,32.047 +2020-11-21 08:45:00,96.12,185.99200000000002,46.051,32.047 +2020-11-21 09:00:00,100.89,182.237,46.683,32.047 +2020-11-21 09:15:00,98.64,180.114,46.683,32.047 +2020-11-21 09:30:00,100.25,178.16,46.683,32.047 +2020-11-21 09:45:00,100.87,176.032,46.683,32.047 +2020-11-21 10:00:00,100.67,172.535,44.425,32.047 +2020-11-21 10:15:00,99.74,169.87400000000002,44.425,32.047 +2020-11-21 10:30:00,99.32,168.007,44.425,32.047 +2020-11-21 10:45:00,99.73,167.572,44.425,32.047 +2020-11-21 11:00:00,100.59,165.90200000000002,42.148999999999994,32.047 +2020-11-21 11:15:00,101.81,163.94400000000002,42.148999999999994,32.047 +2020-11-21 11:30:00,104.19,163.908,42.148999999999994,32.047 +2020-11-21 11:45:00,103.4,162.507,42.148999999999994,32.047 +2020-11-21 12:00:00,103.31,157.35299999999998,39.683,32.047 +2020-11-21 12:15:00,103.72,154.89600000000002,39.683,32.047 +2020-11-21 12:30:00,101.44,155.484,39.683,32.047 +2020-11-21 12:45:00,101.91,155.91899999999998,39.683,32.047 +2020-11-21 13:00:00,97.83,155.659,37.154,32.047 +2020-11-21 13:15:00,97.45,153.987,37.154,32.047 +2020-11-21 13:30:00,97.31,153.30200000000002,37.154,32.047 +2020-11-21 13:45:00,96.77,153.42,37.154,32.047 +2020-11-21 14:00:00,94.23,152.981,36.457,32.047 +2020-11-21 14:15:00,92.82,152.19899999999998,36.457,32.047 +2020-11-21 14:30:00,91.21,151.05100000000002,36.457,32.047 +2020-11-21 14:45:00,90.74,151.286,36.457,32.047 +2020-11-21 15:00:00,89.08,151.498,38.257,32.047 +2020-11-21 15:15:00,90.29,152.30200000000002,38.257,32.047 +2020-11-21 15:30:00,90.87,153.183,38.257,32.047 +2020-11-21 15:45:00,91.79,154.035,38.257,32.047 +2020-11-21 16:00:00,94.22,155.641,41.181000000000004,32.047 +2020-11-21 16:15:00,97.63,158.055,41.181000000000004,32.047 +2020-11-21 16:30:00,100.73,159.40200000000002,41.181000000000004,32.047 +2020-11-21 16:45:00,102.19,160.024,41.181000000000004,32.047 +2020-11-21 17:00:00,104.89,163.127,46.806000000000004,32.047 +2020-11-21 17:15:00,108.34,164.282,46.806000000000004,32.047 +2020-11-21 17:30:00,107.18,164.275,46.806000000000004,32.047 +2020-11-21 17:45:00,107.64,163.287,46.806000000000004,32.047 +2020-11-21 18:00:00,107.72,165.36599999999999,52.073,32.047 +2020-11-21 18:15:00,107.31,165.763,52.073,32.047 +2020-11-21 18:30:00,105.98,165.696,52.073,32.047 +2020-11-21 18:45:00,105.32,163.127,52.073,32.047 +2020-11-21 19:00:00,103.23,166.097,53.608000000000004,32.047 +2020-11-21 19:15:00,101.82,163.806,53.608000000000004,32.047 +2020-11-21 19:30:00,100.14,162.893,53.608000000000004,32.047 +2020-11-21 19:45:00,98.85,159.30200000000002,53.608000000000004,32.047 +2020-11-21 20:00:00,94.8,157.629,50.265,32.047 +2020-11-21 20:15:00,91.04,154.589,50.265,32.047 +2020-11-21 20:30:00,87.39,151.33,50.265,32.047 +2020-11-21 20:45:00,85.88,148.344,50.265,32.047 +2020-11-21 21:00:00,83.83,148.64700000000002,45.766000000000005,32.047 +2020-11-21 21:15:00,82.44,148.033,45.766000000000005,32.047 +2020-11-21 21:30:00,81.16,146.989,45.766000000000005,32.047 +2020-11-21 21:45:00,82.28,145.325,45.766000000000005,32.047 +2020-11-21 22:00:00,77.41,140.82399999999998,45.97,32.047 +2020-11-21 22:15:00,75.61,137.806,45.97,32.047 +2020-11-21 22:30:00,72.97,134.268,45.97,32.047 +2020-11-21 22:45:00,72.35,131.268,45.97,32.047 +2020-11-21 23:00:00,69.85,128.459,40.415,32.047 +2020-11-21 23:15:00,68.87,123.02,40.415,32.047 +2020-11-21 23:30:00,66.45,120.694,40.415,32.047 +2020-11-21 23:45:00,64.91,117.774,40.415,32.047 +2020-11-22 00:00:00,62.39,98.36399999999999,36.376,32.047 +2020-11-22 00:15:00,61.59,94.28299999999999,36.376,32.047 +2020-11-22 00:30:00,60.39,95.315,36.376,32.047 +2020-11-22 00:45:00,59.43,97.46,36.376,32.047 +2020-11-22 01:00:00,60.22,99.115,32.992,32.047 +2020-11-22 01:15:00,57.85,100.927,32.992,32.047 +2020-11-22 01:30:00,56.88,101.039,32.992,32.047 +2020-11-22 01:45:00,56.3,101.34299999999999,32.992,32.047 +2020-11-22 02:00:00,55.45,102.54299999999999,32.327,32.047 +2020-11-22 02:15:00,55.69,102.346,32.327,32.047 +2020-11-22 02:30:00,55.72,102.307,32.327,32.047 +2020-11-22 02:45:00,55.6,104.40899999999999,32.327,32.047 +2020-11-22 03:00:00,55.22,106.87299999999999,31.169,32.047 +2020-11-22 03:15:00,55.28,106.764,31.169,32.047 +2020-11-22 03:30:00,55.5,108.458,31.169,32.047 +2020-11-22 03:45:00,55.87,109.579,31.169,32.047 +2020-11-22 04:00:00,55.68,119.53,30.796,32.047 +2020-11-22 04:15:00,56.25,128.539,30.796,32.047 +2020-11-22 04:30:00,56.7,128.373,30.796,32.047 +2020-11-22 04:45:00,57.4,129.07399999999998,30.796,32.047 +2020-11-22 05:00:00,57.89,144.434,30.848000000000003,32.047 +2020-11-22 05:15:00,58.33,155.689,30.848000000000003,32.047 +2020-11-22 05:30:00,58.4,152.545,30.848000000000003,32.047 +2020-11-22 05:45:00,58.91,148.976,30.848000000000003,32.047 +2020-11-22 06:00:00,60.42,162.407,31.166,32.047 +2020-11-22 06:15:00,61.02,180.342,31.166,32.047 +2020-11-22 06:30:00,61.68,174.887,31.166,32.047 +2020-11-22 06:45:00,63.19,168.197,31.166,32.047 +2020-11-22 07:00:00,66.58,167.417,33.527,32.047 +2020-11-22 07:15:00,67.92,170.138,33.527,32.047 +2020-11-22 07:30:00,68.4,172.968,33.527,32.047 +2020-11-22 07:45:00,70.27,175.56599999999997,33.527,32.047 +2020-11-22 08:00:00,73.27,178.896,36.616,32.047 +2020-11-22 08:15:00,74.74,181.408,36.616,32.047 +2020-11-22 08:30:00,76.33,183.252,36.616,32.047 +2020-11-22 08:45:00,76.44,183.30700000000002,36.616,32.047 +2020-11-22 09:00:00,77.09,179.15400000000002,37.857,32.047 +2020-11-22 09:15:00,78.76,177.422,37.857,32.047 +2020-11-22 09:30:00,79.57,175.412,37.857,32.047 +2020-11-22 09:45:00,79.12,173.343,37.857,32.047 +2020-11-22 10:00:00,78.1,172.08700000000002,36.319,32.047 +2020-11-22 10:15:00,80.56,169.87400000000002,36.319,32.047 +2020-11-22 10:30:00,83.15,168.53900000000002,36.319,32.047 +2020-11-22 10:45:00,84.7,166.643,36.319,32.047 +2020-11-22 11:00:00,85.59,165.68099999999998,37.236999999999995,32.047 +2020-11-22 11:15:00,87.48,163.744,37.236999999999995,32.047 +2020-11-22 11:30:00,89.9,163.045,37.236999999999995,32.047 +2020-11-22 11:45:00,94.79,162.2,37.236999999999995,32.047 +2020-11-22 12:00:00,90.94,156.726,34.871,32.047 +2020-11-22 12:15:00,89.01,155.812,34.871,32.047 +2020-11-22 12:30:00,86.85,155.20600000000002,34.871,32.047 +2020-11-22 12:45:00,85.53,154.701,34.871,32.047 +2020-11-22 13:00:00,81.64,153.731,29.738000000000003,32.047 +2020-11-22 13:15:00,78.73,154.57,29.738000000000003,32.047 +2020-11-22 13:30:00,78.52,153.511,29.738000000000003,32.047 +2020-11-22 13:45:00,76.68,153.241,29.738000000000003,32.047 +2020-11-22 14:00:00,76.68,153.178,27.333000000000002,32.047 +2020-11-22 14:15:00,75.93,153.518,27.333000000000002,32.047 +2020-11-22 14:30:00,75.96,153.26,27.333000000000002,32.047 +2020-11-22 14:45:00,75.98,152.963,27.333000000000002,32.047 +2020-11-22 15:00:00,80.48,151.885,28.232,32.047 +2020-11-22 15:15:00,77.4,153.216,28.232,32.047 +2020-11-22 15:30:00,79.06,154.611,28.232,32.047 +2020-11-22 15:45:00,81.3,156.118,28.232,32.047 +2020-11-22 16:00:00,84.0,159.056,32.815,32.047 +2020-11-22 16:15:00,86.71,160.746,32.815,32.047 +2020-11-22 16:30:00,91.42,162.487,32.815,32.047 +2020-11-22 16:45:00,94.2,163.279,32.815,32.047 +2020-11-22 17:00:00,97.01,166.412,43.068999999999996,32.047 +2020-11-22 17:15:00,99.13,167.55599999999998,43.068999999999996,32.047 +2020-11-22 17:30:00,106.82,167.94099999999997,43.068999999999996,32.047 +2020-11-22 17:45:00,108.43,168.998,43.068999999999996,32.047 +2020-11-22 18:00:00,106.98,170.72,50.498999999999995,32.047 +2020-11-22 18:15:00,102.7,172.16400000000002,50.498999999999995,32.047 +2020-11-22 18:30:00,103.87,170.24900000000002,50.498999999999995,32.047 +2020-11-22 18:45:00,101.15,169.312,50.498999999999995,32.047 +2020-11-22 19:00:00,101.38,172.34799999999998,53.481,32.047 +2020-11-22 19:15:00,97.91,170.38400000000001,53.481,32.047 +2020-11-22 19:30:00,97.08,169.269,53.481,32.047 +2020-11-22 19:45:00,94.87,166.83,53.481,32.047 +2020-11-22 20:00:00,100.26,165.14700000000002,51.687,32.047 +2020-11-22 20:15:00,100.16,162.92600000000002,51.687,32.047 +2020-11-22 20:30:00,97.79,160.846,51.687,32.047 +2020-11-22 20:45:00,89.12,156.549,51.687,32.047 +2020-11-22 21:00:00,89.33,154.567,47.674,32.047 +2020-11-22 21:15:00,90.04,153.346,47.674,32.047 +2020-11-22 21:30:00,87.6,152.453,47.674,32.047 +2020-11-22 21:45:00,87.83,150.965,47.674,32.047 +2020-11-22 22:00:00,86.54,145.78,48.178000000000004,32.047 +2020-11-22 22:15:00,87.22,141.814,48.178000000000004,32.047 +2020-11-22 22:30:00,85.35,135.501,48.178000000000004,32.047 +2020-11-22 22:45:00,86.7,131.559,48.178000000000004,32.047 +2020-11-22 23:00:00,87.2,126.255,42.553999999999995,32.047 +2020-11-22 23:15:00,88.4,122.626,42.553999999999995,32.047 +2020-11-22 23:30:00,84.48,120.92200000000001,42.553999999999995,32.047 +2020-11-22 23:45:00,81.66,118.785,42.553999999999995,32.047 +2020-11-23 00:00:00,81.01,102.585,37.177,32.225 +2020-11-23 00:15:00,80.79,101.152,37.177,32.225 +2020-11-23 00:30:00,79.11,102.22200000000001,37.177,32.225 +2020-11-23 00:45:00,74.45,103.821,37.177,32.225 +2020-11-23 01:00:00,77.84,105.58,35.358000000000004,32.225 +2020-11-23 01:15:00,77.83,106.954,35.358000000000004,32.225 +2020-11-23 01:30:00,77.76,107.191,35.358000000000004,32.225 +2020-11-23 01:45:00,72.18,107.56299999999999,35.358000000000004,32.225 +2020-11-23 02:00:00,77.53,108.836,35.03,32.225 +2020-11-23 02:15:00,77.99,109.693,35.03,32.225 +2020-11-23 02:30:00,77.7,109.962,35.03,32.225 +2020-11-23 02:45:00,71.51,111.509,35.03,32.225 +2020-11-23 03:00:00,77.86,115.11200000000001,34.394,32.225 +2020-11-23 03:15:00,77.98,116.559,34.394,32.225 +2020-11-23 03:30:00,79.9,118.154,34.394,32.225 +2020-11-23 03:45:00,76.4,118.714,34.394,32.225 +2020-11-23 04:00:00,75.65,132.888,34.421,32.225 +2020-11-23 04:15:00,75.21,145.955,34.421,32.225 +2020-11-23 04:30:00,80.58,147.53,34.421,32.225 +2020-11-23 04:45:00,86.22,148.444,34.421,32.225 +2020-11-23 05:00:00,89.91,178.38099999999997,39.435,32.225 +2020-11-23 05:15:00,93.08,208.532,39.435,32.225 +2020-11-23 05:30:00,91.38,205.338,39.435,32.225 +2020-11-23 05:45:00,101.04,196.43599999999998,39.435,32.225 +2020-11-23 06:00:00,111.88,192.929,55.685,32.225 +2020-11-23 06:15:00,119.66,196.643,55.685,32.225 +2020-11-23 06:30:00,117.56,198.74,55.685,32.225 +2020-11-23 06:45:00,126.52,200.50099999999998,55.685,32.225 +2020-11-23 07:00:00,127.0,201.90599999999998,66.837,32.225 +2020-11-23 07:15:00,130.33,206.11599999999999,66.837,32.225 +2020-11-23 07:30:00,133.16,208.145,66.837,32.225 +2020-11-23 07:45:00,134.79,208.628,66.837,32.225 +2020-11-23 08:00:00,135.1,207.56599999999997,72.217,32.225 +2020-11-23 08:15:00,134.95,208.025,72.217,32.225 +2020-11-23 08:30:00,135.26,206.227,72.217,32.225 +2020-11-23 08:45:00,135.33,203.44,72.217,32.225 +2020-11-23 09:00:00,137.24,198.29,66.117,32.225 +2020-11-23 09:15:00,141.14,193.26,66.117,32.225 +2020-11-23 09:30:00,142.69,190.23,66.117,32.225 +2020-11-23 09:45:00,142.86,188.003,66.117,32.225 +2020-11-23 10:00:00,143.04,185.90900000000002,62.1,32.225 +2020-11-23 10:15:00,143.04,183.359,62.1,32.225 +2020-11-23 10:30:00,143.62,181.167,62.1,32.225 +2020-11-23 10:45:00,139.51,179.63299999999998,62.1,32.225 +2020-11-23 11:00:00,144.08,176.495,60.021,32.225 +2020-11-23 11:15:00,159.0,176.148,60.021,32.225 +2020-11-23 11:30:00,160.47,176.75799999999998,60.021,32.225 +2020-11-23 11:45:00,160.25,175.63299999999998,60.021,32.225 +2020-11-23 12:00:00,147.32,171.385,56.75899999999999,32.225 +2020-11-23 12:15:00,145.08,170.497,56.75899999999999,32.225 +2020-11-23 12:30:00,148.09,169.957,56.75899999999999,32.225 +2020-11-23 12:45:00,145.6,170.778,56.75899999999999,32.225 +2020-11-23 13:00:00,143.46,170.442,56.04600000000001,32.225 +2020-11-23 13:15:00,142.41,169.93900000000002,56.04600000000001,32.225 +2020-11-23 13:30:00,140.37,168.447,56.04600000000001,32.225 +2020-11-23 13:45:00,135.08,168.343,56.04600000000001,32.225 +2020-11-23 14:00:00,135.61,167.577,55.475,32.225 +2020-11-23 14:15:00,135.86,167.467,55.475,32.225 +2020-11-23 14:30:00,135.91,166.745,55.475,32.225 +2020-11-23 14:45:00,136.54,166.763,55.475,32.225 +2020-11-23 15:00:00,136.12,167.21400000000003,57.048,32.225 +2020-11-23 15:15:00,135.68,167.205,57.048,32.225 +2020-11-23 15:30:00,135.08,168.033,57.048,32.225 +2020-11-23 15:45:00,135.81,169.081,57.048,32.225 +2020-11-23 16:00:00,136.9,172.327,59.06,32.225 +2020-11-23 16:15:00,137.68,173.388,59.06,32.225 +2020-11-23 16:30:00,139.13,174.18400000000003,59.06,32.225 +2020-11-23 16:45:00,141.15,173.987,59.06,32.225 +2020-11-23 17:00:00,155.46,176.75400000000002,65.419,32.225 +2020-11-23 17:15:00,157.73,177.153,65.419,32.225 +2020-11-23 17:30:00,158.42,177.005,65.419,32.225 +2020-11-23 17:45:00,145.53,176.706,65.419,32.225 +2020-11-23 18:00:00,137.98,178.655,69.345,32.225 +2020-11-23 18:15:00,139.34,177.84,69.345,32.225 +2020-11-23 18:30:00,138.47,176.386,69.345,32.225 +2020-11-23 18:45:00,139.68,176.57299999999998,69.345,32.225 +2020-11-23 19:00:00,137.89,178.16,73.825,32.225 +2020-11-23 19:15:00,134.19,175.365,73.825,32.225 +2020-11-23 19:30:00,131.82,174.611,73.825,32.225 +2020-11-23 19:45:00,129.59,171.31599999999997,73.825,32.225 +2020-11-23 20:00:00,125.6,167.36900000000003,64.027,32.225 +2020-11-23 20:15:00,119.28,163.202,64.027,32.225 +2020-11-23 20:30:00,122.12,159.554,64.027,32.225 +2020-11-23 20:45:00,121.81,156.717,64.027,32.225 +2020-11-23 21:00:00,118.81,155.09,57.952,32.225 +2020-11-23 21:15:00,109.73,152.90200000000002,57.952,32.225 +2020-11-23 21:30:00,108.05,151.36,57.952,32.225 +2020-11-23 21:45:00,106.57,149.395,57.952,32.225 +2020-11-23 22:00:00,105.12,141.372,53.031000000000006,32.225 +2020-11-23 22:15:00,106.96,136.566,53.031000000000006,32.225 +2020-11-23 22:30:00,104.93,121.29,53.031000000000006,32.225 +2020-11-23 22:45:00,101.2,113.13799999999999,53.031000000000006,32.225 +2020-11-23 23:00:00,92.0,108.491,45.085,32.225 +2020-11-23 23:15:00,94.85,106.9,45.085,32.225 +2020-11-23 23:30:00,94.19,107.60799999999999,45.085,32.225 +2020-11-23 23:45:00,91.56,107.67299999999999,45.085,32.225 +2020-11-24 00:00:00,86.66,101.96,42.843,32.225 +2020-11-24 00:15:00,81.99,101.87299999999999,42.843,32.225 +2020-11-24 00:30:00,80.81,102.262,42.843,32.225 +2020-11-24 00:45:00,83.16,103.147,42.843,32.225 +2020-11-24 01:00:00,86.21,104.68,41.542,32.225 +2020-11-24 01:15:00,86.93,105.70100000000001,41.542,32.225 +2020-11-24 01:30:00,83.03,106.073,41.542,32.225 +2020-11-24 01:45:00,80.91,106.603,41.542,32.225 +2020-11-24 02:00:00,80.28,107.804,40.19,32.225 +2020-11-24 02:15:00,85.04,108.777,40.19,32.225 +2020-11-24 02:30:00,80.94,108.46600000000001,40.19,32.225 +2020-11-24 02:45:00,83.11,110.08,40.19,32.225 +2020-11-24 03:00:00,82.33,112.54700000000001,39.626,32.225 +2020-11-24 03:15:00,81.11,113.471,39.626,32.225 +2020-11-24 03:30:00,80.6,115.473,39.626,32.225 +2020-11-24 03:45:00,81.65,115.988,39.626,32.225 +2020-11-24 04:00:00,89.16,129.751,40.196999999999996,32.225 +2020-11-24 04:15:00,89.98,142.534,40.196999999999996,32.225 +2020-11-24 04:30:00,91.48,143.811,40.196999999999996,32.225 +2020-11-24 04:45:00,88.32,145.847,40.196999999999996,32.225 +2020-11-24 05:00:00,95.04,180.31,43.378,32.225 +2020-11-24 05:15:00,100.05,210.38299999999998,43.378,32.225 +2020-11-24 05:30:00,105.49,205.94099999999997,43.378,32.225 +2020-11-24 05:45:00,104.35,196.915,43.378,32.225 +2020-11-24 06:00:00,111.75,192.609,55.691,32.225 +2020-11-24 06:15:00,115.57,197.745,55.691,32.225 +2020-11-24 06:30:00,120.7,199.278,55.691,32.225 +2020-11-24 06:45:00,125.63,200.59400000000002,55.691,32.225 +2020-11-24 07:00:00,131.53,201.87,65.567,32.225 +2020-11-24 07:15:00,134.38,205.908,65.567,32.225 +2020-11-24 07:30:00,135.59,207.489,65.567,32.225 +2020-11-24 07:45:00,136.05,207.987,65.567,32.225 +2020-11-24 08:00:00,133.21,207.02200000000002,73.001,32.225 +2020-11-24 08:15:00,132.47,206.514,73.001,32.225 +2020-11-24 08:30:00,131.85,204.61,73.001,32.225 +2020-11-24 08:45:00,132.0,201.40599999999998,73.001,32.225 +2020-11-24 09:00:00,133.22,195.56900000000002,67.08800000000001,32.225 +2020-11-24 09:15:00,134.13,191.907,67.08800000000001,32.225 +2020-11-24 09:30:00,136.8,189.577,67.08800000000001,32.225 +2020-11-24 09:45:00,138.03,187.364,67.08800000000001,32.225 +2020-11-24 10:00:00,143.53,184.52599999999998,62.803000000000004,32.225 +2020-11-24 10:15:00,143.26,181.0,62.803000000000004,32.225 +2020-11-24 10:30:00,144.11,178.94400000000002,62.803000000000004,32.225 +2020-11-24 10:45:00,142.0,177.80599999999998,62.803000000000004,32.225 +2020-11-24 11:00:00,145.32,175.952,60.155,32.225 +2020-11-24 11:15:00,159.14,175.36,60.155,32.225 +2020-11-24 11:30:00,159.74,174.77200000000002,60.155,32.225 +2020-11-24 11:45:00,158.94,174.179,60.155,32.225 +2020-11-24 12:00:00,144.91,168.69400000000002,56.845,32.225 +2020-11-24 12:15:00,143.79,167.502,56.845,32.225 +2020-11-24 12:30:00,144.9,167.753,56.845,32.225 +2020-11-24 12:45:00,148.31,168.429,56.845,32.225 +2020-11-24 13:00:00,143.29,167.641,56.163000000000004,32.225 +2020-11-24 13:15:00,142.71,167.11900000000003,56.163000000000004,32.225 +2020-11-24 13:30:00,138.34,166.644,56.163000000000004,32.225 +2020-11-24 13:45:00,137.62,166.546,56.163000000000004,32.225 +2020-11-24 14:00:00,137.28,166.058,55.934,32.225 +2020-11-24 14:15:00,136.5,166.065,55.934,32.225 +2020-11-24 14:30:00,136.48,165.97799999999998,55.934,32.225 +2020-11-24 14:45:00,135.39,165.81,55.934,32.225 +2020-11-24 15:00:00,134.87,165.862,57.43899999999999,32.225 +2020-11-24 15:15:00,134.85,166.291,57.43899999999999,32.225 +2020-11-24 15:30:00,135.23,167.31599999999997,57.43899999999999,32.225 +2020-11-24 15:45:00,134.55,168.06900000000002,57.43899999999999,32.225 +2020-11-24 16:00:00,136.4,171.49900000000002,59.968999999999994,32.225 +2020-11-24 16:15:00,141.88,173.015,59.968999999999994,32.225 +2020-11-24 16:30:00,145.09,174.326,59.968999999999994,32.225 +2020-11-24 16:45:00,146.27,174.53099999999998,59.968999999999994,32.225 +2020-11-24 17:00:00,147.1,177.77900000000002,67.428,32.225 +2020-11-24 17:15:00,160.92,178.29,67.428,32.225 +2020-11-24 17:30:00,161.04,178.67,67.428,32.225 +2020-11-24 17:45:00,161.02,178.213,67.428,32.225 +2020-11-24 18:00:00,147.32,179.94099999999997,71.533,32.225 +2020-11-24 18:15:00,138.99,178.87099999999998,71.533,32.225 +2020-11-24 18:30:00,137.9,177.114,71.533,32.225 +2020-11-24 18:45:00,141.41,177.975,71.533,32.225 +2020-11-24 19:00:00,139.01,179.456,73.32300000000001,32.225 +2020-11-24 19:15:00,136.46,176.43,73.32300000000001,32.225 +2020-11-24 19:30:00,133.33,175.03799999999998,73.32300000000001,32.225 +2020-11-24 19:45:00,132.31,171.794,73.32300000000001,32.225 +2020-11-24 20:00:00,128.54,168.054,64.166,32.225 +2020-11-24 20:15:00,122.92,163.094,64.166,32.225 +2020-11-24 20:30:00,122.74,160.308,64.166,32.225 +2020-11-24 20:45:00,124.43,157.046,64.166,32.225 +2020-11-24 21:00:00,120.21,154.929,57.891999999999996,32.225 +2020-11-24 21:15:00,116.54,153.293,57.891999999999996,32.225 +2020-11-24 21:30:00,111.79,151.145,57.891999999999996,32.225 +2020-11-24 21:45:00,110.12,149.408,57.891999999999996,32.225 +2020-11-24 22:00:00,104.81,142.917,53.242,32.225 +2020-11-24 22:15:00,106.93,137.826,53.242,32.225 +2020-11-24 22:30:00,109.19,122.727,53.242,32.225 +2020-11-24 22:45:00,106.58,114.824,53.242,32.225 +2020-11-24 23:00:00,99.59,110.068,46.665,32.225 +2020-11-24 23:15:00,93.79,107.912,46.665,32.225 +2020-11-24 23:30:00,97.04,108.311,46.665,32.225 +2020-11-24 23:45:00,95.69,108.001,46.665,32.225 +2020-11-25 00:00:00,94.25,102.323,43.16,32.225 +2020-11-25 00:15:00,89.05,102.209,43.16,32.225 +2020-11-25 00:30:00,88.28,102.59700000000001,43.16,32.225 +2020-11-25 00:45:00,90.4,103.465,43.16,32.225 +2020-11-25 01:00:00,88.67,105.03299999999999,40.972,32.225 +2020-11-25 01:15:00,83.25,106.059,40.972,32.225 +2020-11-25 01:30:00,82.33,106.444,40.972,32.225 +2020-11-25 01:45:00,79.08,106.96,40.972,32.225 +2020-11-25 02:00:00,81.52,108.182,39.749,32.225 +2020-11-25 02:15:00,83.98,109.15799999999999,39.749,32.225 +2020-11-25 02:30:00,87.31,108.84299999999999,39.749,32.225 +2020-11-25 02:45:00,88.71,110.45700000000001,39.749,32.225 +2020-11-25 03:00:00,85.46,112.91,39.422,32.225 +2020-11-25 03:15:00,84.79,113.861,39.422,32.225 +2020-11-25 03:30:00,89.21,115.866,39.422,32.225 +2020-11-25 03:45:00,90.74,116.37200000000001,39.422,32.225 +2020-11-25 04:00:00,92.44,130.12,40.505,32.225 +2020-11-25 04:15:00,89.59,142.911,40.505,32.225 +2020-11-25 04:30:00,92.56,144.178,40.505,32.225 +2020-11-25 04:45:00,96.12,146.219,40.505,32.225 +2020-11-25 05:00:00,97.39,180.678,43.397,32.225 +2020-11-25 05:15:00,101.36,210.732,43.397,32.225 +2020-11-25 05:30:00,106.35,206.30599999999998,43.397,32.225 +2020-11-25 05:45:00,111.83,197.285,43.397,32.225 +2020-11-25 06:00:00,112.45,192.995,55.218,32.225 +2020-11-25 06:15:00,119.29,198.136,55.218,32.225 +2020-11-25 06:30:00,122.62,199.71200000000002,55.218,32.225 +2020-11-25 06:45:00,127.32,201.063,55.218,32.225 +2020-11-25 07:00:00,129.42,202.33900000000003,67.39,32.225 +2020-11-25 07:15:00,133.53,206.388,67.39,32.225 +2020-11-25 07:30:00,133.46,207.983,67.39,32.225 +2020-11-25 07:45:00,133.22,208.485,67.39,32.225 +2020-11-25 08:00:00,134.72,207.533,74.345,32.225 +2020-11-25 08:15:00,134.93,207.014,74.345,32.225 +2020-11-25 08:30:00,133.18,205.128,74.345,32.225 +2020-11-25 08:45:00,136.06,201.892,74.345,32.225 +2020-11-25 09:00:00,136.12,196.03400000000002,69.336,32.225 +2020-11-25 09:15:00,136.89,192.37599999999998,69.336,32.225 +2020-11-25 09:30:00,137.83,190.047,69.336,32.225 +2020-11-25 09:45:00,136.21,187.817,69.336,32.225 +2020-11-25 10:00:00,134.1,184.968,64.291,32.225 +2020-11-25 10:15:00,134.21,181.41099999999997,64.291,32.225 +2020-11-25 10:30:00,132.81,179.333,64.291,32.225 +2020-11-25 10:45:00,132.27,178.18200000000002,64.291,32.225 +2020-11-25 11:00:00,130.7,176.317,62.20399999999999,32.225 +2020-11-25 11:15:00,130.65,175.709,62.20399999999999,32.225 +2020-11-25 11:30:00,129.63,175.11900000000003,62.20399999999999,32.225 +2020-11-25 11:45:00,128.59,174.517,62.20399999999999,32.225 +2020-11-25 12:00:00,127.98,169.023,59.042,32.225 +2020-11-25 12:15:00,127.46,167.83700000000002,59.042,32.225 +2020-11-25 12:30:00,129.41,168.113,59.042,32.225 +2020-11-25 12:45:00,127.0,168.794,59.042,32.225 +2020-11-25 13:00:00,126.51,167.97,57.907,32.225 +2020-11-25 13:15:00,126.11,167.454,57.907,32.225 +2020-11-25 13:30:00,126.17,166.975,57.907,32.225 +2020-11-25 13:45:00,126.16,166.868,57.907,32.225 +2020-11-25 14:00:00,128.27,166.345,58.358000000000004,32.225 +2020-11-25 14:15:00,129.25,166.362,58.358000000000004,32.225 +2020-11-25 14:30:00,129.64,166.30700000000002,58.358000000000004,32.225 +2020-11-25 14:45:00,130.02,166.146,58.358000000000004,32.225 +2020-11-25 15:00:00,131.43,166.205,59.348,32.225 +2020-11-25 15:15:00,133.51,166.64,59.348,32.225 +2020-11-25 15:30:00,133.44,167.696,59.348,32.225 +2020-11-25 15:45:00,134.78,168.456,59.348,32.225 +2020-11-25 16:00:00,136.6,171.878,61.413999999999994,32.225 +2020-11-25 16:15:00,139.28,173.418,61.413999999999994,32.225 +2020-11-25 16:30:00,143.76,174.731,61.413999999999994,32.225 +2020-11-25 16:45:00,145.53,174.976,61.413999999999994,32.225 +2020-11-25 17:00:00,146.91,178.197,67.107,32.225 +2020-11-25 17:15:00,147.41,178.731,67.107,32.225 +2020-11-25 17:30:00,147.84,179.12099999999998,67.107,32.225 +2020-11-25 17:45:00,147.01,178.673,67.107,32.225 +2020-11-25 18:00:00,144.4,180.41400000000002,71.92,32.225 +2020-11-25 18:15:00,143.14,179.304,71.92,32.225 +2020-11-25 18:30:00,141.88,177.55700000000002,71.92,32.225 +2020-11-25 18:45:00,142.19,178.42,71.92,32.225 +2020-11-25 19:00:00,141.09,179.89700000000002,75.09,32.225 +2020-11-25 19:15:00,137.11,176.861,75.09,32.225 +2020-11-25 19:30:00,134.84,175.452,75.09,32.225 +2020-11-25 19:45:00,133.69,172.17700000000002,75.09,32.225 +2020-11-25 20:00:00,130.33,168.446,65.977,32.225 +2020-11-25 20:15:00,122.19,163.476,65.977,32.225 +2020-11-25 20:30:00,123.02,160.661,65.977,32.225 +2020-11-25 20:45:00,124.89,157.409,65.977,32.225 +2020-11-25 21:00:00,121.48,155.282,58.798,32.225 +2020-11-25 21:15:00,116.62,153.631,58.798,32.225 +2020-11-25 21:30:00,108.88,151.487,58.798,32.225 +2020-11-25 21:45:00,109.31,149.749,58.798,32.225 +2020-11-25 22:00:00,105.77,143.263,54.486000000000004,32.225 +2020-11-25 22:15:00,109.26,138.168,54.486000000000004,32.225 +2020-11-25 22:30:00,106.25,123.12200000000001,54.486000000000004,32.225 +2020-11-25 22:45:00,104.95,115.227,54.486000000000004,32.225 +2020-11-25 23:00:00,95.13,110.454,47.783,32.225 +2020-11-25 23:15:00,98.94,108.286,47.783,32.225 +2020-11-25 23:30:00,97.56,108.693,47.783,32.225 +2020-11-25 23:45:00,94.42,108.366,47.783,32.225 +2020-11-26 00:00:00,86.96,102.682,43.88,32.225 +2020-11-26 00:15:00,83.82,102.54,43.88,32.225 +2020-11-26 00:30:00,85.5,102.928,43.88,32.225 +2020-11-26 00:45:00,88.72,103.77799999999999,43.88,32.225 +2020-11-26 01:00:00,88.89,105.38,42.242,32.225 +2020-11-26 01:15:00,85.06,106.413,42.242,32.225 +2020-11-26 01:30:00,83.57,106.809,42.242,32.225 +2020-11-26 01:45:00,85.67,107.31299999999999,42.242,32.225 +2020-11-26 02:00:00,86.12,108.552,40.918,32.225 +2020-11-26 02:15:00,83.43,109.53299999999999,40.918,32.225 +2020-11-26 02:30:00,83.05,109.21600000000001,40.918,32.225 +2020-11-26 02:45:00,85.0,110.82700000000001,40.918,32.225 +2020-11-26 03:00:00,85.05,113.26700000000001,40.411,32.225 +2020-11-26 03:15:00,83.54,114.24600000000001,40.411,32.225 +2020-11-26 03:30:00,84.59,116.25299999999999,40.411,32.225 +2020-11-26 03:45:00,88.11,116.75299999999999,40.411,32.225 +2020-11-26 04:00:00,89.54,130.483,41.246,32.225 +2020-11-26 04:15:00,86.6,143.284,41.246,32.225 +2020-11-26 04:30:00,88.88,144.537,41.246,32.225 +2020-11-26 04:45:00,93.86,146.585,41.246,32.225 +2020-11-26 05:00:00,97.17,181.04,44.533,32.225 +2020-11-26 05:15:00,98.12,211.076,44.533,32.225 +2020-11-26 05:30:00,99.16,206.66400000000002,44.533,32.225 +2020-11-26 05:45:00,105.0,197.649,44.533,32.225 +2020-11-26 06:00:00,117.69,193.375,55.005,32.225 +2020-11-26 06:15:00,124.77,198.52,55.005,32.225 +2020-11-26 06:30:00,126.33,200.138,55.005,32.225 +2020-11-26 06:45:00,125.77,201.525,55.005,32.225 +2020-11-26 07:00:00,130.95,202.803,64.597,32.225 +2020-11-26 07:15:00,134.46,206.86,64.597,32.225 +2020-11-26 07:30:00,133.78,208.47,64.597,32.225 +2020-11-26 07:45:00,135.55,208.97400000000002,64.597,32.225 +2020-11-26 08:00:00,136.97,208.035,71.71600000000001,32.225 +2020-11-26 08:15:00,136.62,207.50400000000002,71.71600000000001,32.225 +2020-11-26 08:30:00,135.96,205.636,71.71600000000001,32.225 +2020-11-26 08:45:00,134.99,202.37,71.71600000000001,32.225 +2020-11-26 09:00:00,134.73,196.488,66.51899999999999,32.225 +2020-11-26 09:15:00,134.01,192.83599999999998,66.51899999999999,32.225 +2020-11-26 09:30:00,134.51,190.507,66.51899999999999,32.225 +2020-11-26 09:45:00,133.76,188.261,66.51899999999999,32.225 +2020-11-26 10:00:00,133.11,185.40099999999998,63.04,32.225 +2020-11-26 10:15:00,133.63,181.81599999999997,63.04,32.225 +2020-11-26 10:30:00,132.09,179.71400000000003,63.04,32.225 +2020-11-26 10:45:00,131.91,178.551,63.04,32.225 +2020-11-26 11:00:00,130.31,176.675,60.998000000000005,32.225 +2020-11-26 11:15:00,129.82,176.05,60.998000000000005,32.225 +2020-11-26 11:30:00,129.38,175.459,60.998000000000005,32.225 +2020-11-26 11:45:00,129.19,174.84900000000002,60.998000000000005,32.225 +2020-11-26 12:00:00,129.43,169.345,58.27,32.225 +2020-11-26 12:15:00,129.92,168.167,58.27,32.225 +2020-11-26 12:30:00,130.77,168.467,58.27,32.225 +2020-11-26 12:45:00,128.99,169.15200000000002,58.27,32.225 +2020-11-26 13:00:00,127.51,168.292,57.196000000000005,32.225 +2020-11-26 13:15:00,127.43,167.783,57.196000000000005,32.225 +2020-11-26 13:30:00,128.14,167.3,57.196000000000005,32.225 +2020-11-26 13:45:00,128.96,167.18400000000003,57.196000000000005,32.225 +2020-11-26 14:00:00,131.54,166.625,57.38399999999999,32.225 +2020-11-26 14:15:00,132.48,166.65400000000002,57.38399999999999,32.225 +2020-11-26 14:30:00,133.07,166.63,57.38399999999999,32.225 +2020-11-26 14:45:00,134.6,166.475,57.38399999999999,32.225 +2020-11-26 15:00:00,135.57,166.542,58.647,32.225 +2020-11-26 15:15:00,134.79,166.982,58.647,32.225 +2020-11-26 15:30:00,133.95,168.06900000000002,58.647,32.225 +2020-11-26 15:45:00,134.77,168.833,58.647,32.225 +2020-11-26 16:00:00,135.09,172.248,60.083999999999996,32.225 +2020-11-26 16:15:00,139.08,173.813,60.083999999999996,32.225 +2020-11-26 16:30:00,142.52,175.12900000000002,60.083999999999996,32.225 +2020-11-26 16:45:00,144.11,175.41400000000002,60.083999999999996,32.225 +2020-11-26 17:00:00,145.11,178.605,65.85600000000001,32.225 +2020-11-26 17:15:00,145.39,179.16299999999998,65.85600000000001,32.225 +2020-11-26 17:30:00,144.99,179.56400000000002,65.85600000000001,32.225 +2020-11-26 17:45:00,144.73,179.125,65.85600000000001,32.225 +2020-11-26 18:00:00,142.36,180.87900000000002,69.855,32.225 +2020-11-26 18:15:00,139.12,179.732,69.855,32.225 +2020-11-26 18:30:00,138.76,177.99200000000002,69.855,32.225 +2020-11-26 18:45:00,139.25,178.859,69.855,32.225 +2020-11-26 19:00:00,138.59,180.332,74.015,32.225 +2020-11-26 19:15:00,135.27,177.285,74.015,32.225 +2020-11-26 19:30:00,133.83,175.861,74.015,32.225 +2020-11-26 19:45:00,132.18,172.55599999999998,74.015,32.225 +2020-11-26 20:00:00,127.04,168.832,65.316,32.225 +2020-11-26 20:15:00,124.0,163.852,65.316,32.225 +2020-11-26 20:30:00,120.42,161.009,65.316,32.225 +2020-11-26 20:45:00,117.9,157.766,65.316,32.225 +2020-11-26 21:00:00,116.75,155.628,58.403999999999996,32.225 +2020-11-26 21:15:00,114.04,153.963,58.403999999999996,32.225 +2020-11-26 21:30:00,110.09,151.82299999999998,58.403999999999996,32.225 +2020-11-26 21:45:00,106.75,150.084,58.403999999999996,32.225 +2020-11-26 22:00:00,103.22,143.605,54.092,32.225 +2020-11-26 22:15:00,99.89,138.503,54.092,32.225 +2020-11-26 22:30:00,96.72,123.51100000000001,54.092,32.225 +2020-11-26 22:45:00,95.07,115.624,54.092,32.225 +2020-11-26 23:00:00,93.68,110.834,48.18600000000001,32.225 +2020-11-26 23:15:00,90.11,108.655,48.18600000000001,32.225 +2020-11-26 23:30:00,88.8,109.069,48.18600000000001,32.225 +2020-11-26 23:45:00,89.14,108.726,48.18600000000001,32.225 +2020-11-27 00:00:00,84.43,101.79899999999999,45.18899999999999,32.225 +2020-11-27 00:15:00,89.72,101.839,45.18899999999999,32.225 +2020-11-27 00:30:00,89.24,102.156,45.18899999999999,32.225 +2020-11-27 00:45:00,87.86,103.16,45.18899999999999,32.225 +2020-11-27 01:00:00,81.04,104.459,43.256,32.225 +2020-11-27 01:15:00,79.47,106.179,43.256,32.225 +2020-11-27 01:30:00,83.22,106.521,43.256,32.225 +2020-11-27 01:45:00,85.75,107.06,43.256,32.225 +2020-11-27 02:00:00,86.44,108.556,42.312,32.225 +2020-11-27 02:15:00,83.54,109.431,42.312,32.225 +2020-11-27 02:30:00,79.41,109.71,42.312,32.225 +2020-11-27 02:45:00,79.4,111.234,42.312,32.225 +2020-11-27 03:00:00,80.77,112.949,41.833,32.225 +2020-11-27 03:15:00,88.63,114.539,41.833,32.225 +2020-11-27 03:30:00,90.12,116.492,41.833,32.225 +2020-11-27 03:45:00,88.67,117.42200000000001,41.833,32.225 +2020-11-27 04:00:00,85.04,131.356,42.732,32.225 +2020-11-27 04:15:00,84.49,143.668,42.732,32.225 +2020-11-27 04:30:00,91.48,145.282,42.732,32.225 +2020-11-27 04:45:00,95.37,146.24,42.732,32.225 +2020-11-27 05:00:00,98.6,179.519,46.254,32.225 +2020-11-27 05:15:00,98.74,211.0,46.254,32.225 +2020-11-27 05:30:00,104.82,207.55599999999998,46.254,32.225 +2020-11-27 05:45:00,107.0,198.40900000000002,46.254,32.225 +2020-11-27 06:00:00,109.72,194.56900000000002,56.76,32.225 +2020-11-27 06:15:00,114.28,198.49099999999999,56.76,32.225 +2020-11-27 06:30:00,121.1,199.40200000000002,56.76,32.225 +2020-11-27 06:45:00,125.73,202.19099999999997,56.76,32.225 +2020-11-27 07:00:00,132.85,202.873,66.029,32.225 +2020-11-27 07:15:00,137.07,207.98,66.029,32.225 +2020-11-27 07:30:00,138.18,209.1,66.029,32.225 +2020-11-27 07:45:00,139.13,208.80700000000002,66.029,32.225 +2020-11-27 08:00:00,140.02,207.06799999999998,73.128,32.225 +2020-11-27 08:15:00,141.53,206.30599999999998,73.128,32.225 +2020-11-27 08:30:00,141.95,205.28,73.128,32.225 +2020-11-27 08:45:00,141.74,200.595,73.128,32.225 +2020-11-27 09:00:00,143.12,194.68900000000002,68.23100000000001,32.225 +2020-11-27 09:15:00,144.97,191.862,68.23100000000001,32.225 +2020-11-27 09:30:00,146.38,189.045,68.23100000000001,32.225 +2020-11-27 09:45:00,148.07,186.753,68.23100000000001,32.225 +2020-11-27 10:00:00,148.43,182.864,64.733,32.225 +2020-11-27 10:15:00,149.35,179.82,64.733,32.225 +2020-11-27 10:30:00,148.75,177.725,64.733,32.225 +2020-11-27 10:45:00,149.72,176.15099999999998,64.733,32.225 +2020-11-27 11:00:00,148.49,174.278,62.0,32.225 +2020-11-27 11:15:00,148.43,172.675,62.0,32.225 +2020-11-27 11:30:00,148.91,173.55599999999998,62.0,32.225 +2020-11-27 11:45:00,148.96,172.81900000000002,62.0,32.225 +2020-11-27 12:00:00,148.12,168.327,57.876999999999995,32.225 +2020-11-27 12:15:00,148.75,165.21900000000002,57.876999999999995,32.225 +2020-11-27 12:30:00,151.8,165.7,57.876999999999995,32.225 +2020-11-27 12:45:00,148.18,166.71200000000002,57.876999999999995,32.225 +2020-11-27 13:00:00,147.61,166.737,55.585,32.225 +2020-11-27 13:15:00,145.8,166.979,55.585,32.225 +2020-11-27 13:30:00,143.06,166.637,55.585,32.225 +2020-11-27 13:45:00,142.49,166.505,55.585,32.225 +2020-11-27 14:00:00,140.86,164.783,54.5,32.225 +2020-11-27 14:15:00,140.22,164.737,54.5,32.225 +2020-11-27 14:30:00,139.38,165.44,54.5,32.225 +2020-11-27 14:45:00,139.36,165.44400000000002,54.5,32.225 +2020-11-27 15:00:00,138.46,165.082,55.131,32.225 +2020-11-27 15:15:00,138.42,165.104,55.131,32.225 +2020-11-27 15:30:00,138.56,164.794,55.131,32.225 +2020-11-27 15:45:00,138.86,165.815,55.131,32.225 +2020-11-27 16:00:00,140.34,168.062,56.8,32.225 +2020-11-27 16:15:00,142.71,169.984,56.8,32.225 +2020-11-27 16:30:00,143.85,171.358,56.8,32.225 +2020-11-27 16:45:00,144.15,171.454,56.8,32.225 +2020-11-27 17:00:00,144.16,175.07299999999998,63.428999999999995,32.225 +2020-11-27 17:15:00,144.21,175.265,63.428999999999995,32.225 +2020-11-27 17:30:00,143.91,175.423,63.428999999999995,32.225 +2020-11-27 17:45:00,143.48,174.76,63.428999999999995,32.225 +2020-11-27 18:00:00,141.75,177.138,67.915,32.225 +2020-11-27 18:15:00,141.19,175.46099999999998,67.915,32.225 +2020-11-27 18:30:00,140.31,174.05900000000003,67.915,32.225 +2020-11-27 18:45:00,140.84,174.99200000000002,67.915,32.225 +2020-11-27 19:00:00,139.02,177.395,69.428,32.225 +2020-11-27 19:15:00,136.92,175.63299999999998,69.428,32.225 +2020-11-27 19:30:00,133.97,173.84,69.428,32.225 +2020-11-27 19:45:00,132.93,169.93900000000002,69.428,32.225 +2020-11-27 20:00:00,127.08,166.252,60.56100000000001,32.225 +2020-11-27 20:15:00,123.22,161.39700000000002,60.56100000000001,32.225 +2020-11-27 20:30:00,120.97,158.409,60.56100000000001,32.225 +2020-11-27 20:45:00,121.98,155.536,60.56100000000001,32.225 +2020-11-27 21:00:00,120.28,154.04399999999998,55.18600000000001,32.225 +2020-11-27 21:15:00,115.06,153.016,55.18600000000001,32.225 +2020-11-27 21:30:00,106.27,150.89700000000002,55.18600000000001,32.225 +2020-11-27 21:45:00,104.92,149.668,55.18600000000001,32.225 +2020-11-27 22:00:00,98.21,144.031,51.433,32.225 +2020-11-27 22:15:00,95.41,138.768,51.433,32.225 +2020-11-27 22:30:00,92.29,130.185,51.433,32.225 +2020-11-27 22:45:00,89.5,125.54,51.433,32.225 +2020-11-27 23:00:00,88.76,120.616,46.201,32.225 +2020-11-27 23:15:00,90.76,116.462,46.201,32.225 +2020-11-27 23:30:00,88.25,115.31200000000001,46.201,32.225 +2020-11-27 23:45:00,84.02,114.34899999999999,46.201,32.225 +2020-11-28 00:00:00,77.33,99.921,42.576,32.047 +2020-11-28 00:15:00,75.71,96.16,42.576,32.047 +2020-11-28 00:30:00,79.64,97.53200000000001,42.576,32.047 +2020-11-28 00:45:00,79.58,99.0,42.576,32.047 +2020-11-28 01:00:00,78.45,100.935,39.34,32.047 +2020-11-28 01:15:00,69.57,101.92299999999999,39.34,32.047 +2020-11-28 01:30:00,71.73,101.686,39.34,32.047 +2020-11-28 01:45:00,75.49,102.255,39.34,32.047 +2020-11-28 02:00:00,75.22,104.189,37.582,32.047 +2020-11-28 02:15:00,73.99,104.60799999999999,37.582,32.047 +2020-11-28 02:30:00,67.25,103.791,37.582,32.047 +2020-11-28 02:45:00,71.5,105.54299999999999,37.582,32.047 +2020-11-28 03:00:00,74.56,107.538,36.523,32.047 +2020-11-28 03:15:00,74.51,107.991,36.523,32.047 +2020-11-28 03:30:00,72.04,108.655,36.523,32.047 +2020-11-28 03:45:00,70.18,109.949,36.523,32.047 +2020-11-28 04:00:00,74.75,120.022,36.347,32.047 +2020-11-28 04:15:00,70.48,130.019,36.347,32.047 +2020-11-28 04:30:00,69.82,129.468,36.347,32.047 +2020-11-28 04:45:00,68.36,130.064,36.347,32.047 +2020-11-28 05:00:00,68.09,148.316,36.407,32.047 +2020-11-28 05:15:00,67.78,161.641,36.407,32.047 +2020-11-28 05:30:00,68.17,158.80200000000002,36.407,32.047 +2020-11-28 05:45:00,70.47,155.115,36.407,32.047 +2020-11-28 06:00:00,72.18,169.19400000000002,38.228,32.047 +2020-11-28 06:15:00,75.04,188.45,38.228,32.047 +2020-11-28 06:30:00,76.95,184.31099999999998,38.228,32.047 +2020-11-28 06:45:00,78.95,178.916,38.228,32.047 +2020-11-28 07:00:00,81.61,176.02900000000002,41.905,32.047 +2020-11-28 07:15:00,85.49,179.83700000000002,41.905,32.047 +2020-11-28 07:30:00,86.76,183.553,41.905,32.047 +2020-11-28 07:45:00,89.52,186.821,41.905,32.047 +2020-11-28 08:00:00,92.6,188.55,46.051,32.047 +2020-11-28 08:15:00,93.47,190.86,46.051,32.047 +2020-11-28 08:30:00,94.42,191.234,46.051,32.047 +2020-11-28 08:45:00,96.07,189.398,46.051,32.047 +2020-11-28 09:00:00,97.99,185.484,46.683,32.047 +2020-11-28 09:15:00,98.87,183.395,46.683,32.047 +2020-11-28 09:30:00,100.11,181.44400000000002,46.683,32.047 +2020-11-28 09:45:00,100.75,179.19799999999998,46.683,32.047 +2020-11-28 10:00:00,100.87,175.627,44.425,32.047 +2020-11-28 10:15:00,100.95,172.757,44.425,32.047 +2020-11-28 10:30:00,101.61,170.725,44.425,32.047 +2020-11-28 10:45:00,102.02,170.206,44.425,32.047 +2020-11-28 11:00:00,102.71,168.458,42.148999999999994,32.047 +2020-11-28 11:15:00,102.34,166.38299999999998,42.148999999999994,32.047 +2020-11-28 11:30:00,102.7,166.33900000000003,42.148999999999994,32.047 +2020-11-28 11:45:00,102.53,164.873,42.148999999999994,32.047 +2020-11-28 12:00:00,101.89,159.649,39.683,32.047 +2020-11-28 12:15:00,99.63,157.246,39.683,32.047 +2020-11-28 12:30:00,98.83,158.006,39.683,32.047 +2020-11-28 12:45:00,95.47,158.469,39.683,32.047 +2020-11-28 13:00:00,91.62,157.96,37.154,32.047 +2020-11-28 13:15:00,89.78,156.328,37.154,32.047 +2020-11-28 13:30:00,88.89,155.621,37.154,32.047 +2020-11-28 13:45:00,89.56,155.675,37.154,32.047 +2020-11-28 14:00:00,88.24,154.984,36.457,32.047 +2020-11-28 14:15:00,89.2,154.278,36.457,32.047 +2020-11-28 14:30:00,90.17,153.356,36.457,32.047 +2020-11-28 14:45:00,90.93,153.635,36.457,32.047 +2020-11-28 15:00:00,91.29,153.899,38.257,32.047 +2020-11-28 15:15:00,91.79,154.743,38.257,32.047 +2020-11-28 15:30:00,92.89,155.843,38.257,32.047 +2020-11-28 15:45:00,94.51,156.736,38.257,32.047 +2020-11-28 16:00:00,96.87,158.286,41.181000000000004,32.047 +2020-11-28 16:15:00,100.02,160.869,41.181000000000004,32.047 +2020-11-28 16:30:00,104.43,162.238,41.181000000000004,32.047 +2020-11-28 16:45:00,105.58,163.142,41.181000000000004,32.047 +2020-11-28 17:00:00,107.55,166.046,46.806000000000004,32.047 +2020-11-28 17:15:00,108.65,167.36599999999999,46.806000000000004,32.047 +2020-11-28 17:30:00,109.6,167.429,46.806000000000004,32.047 +2020-11-28 17:45:00,109.96,166.5,46.806000000000004,32.047 +2020-11-28 18:00:00,110.46,168.673,52.073,32.047 +2020-11-28 18:15:00,109.84,168.799,52.073,32.047 +2020-11-28 18:30:00,109.58,168.78900000000002,52.073,32.047 +2020-11-28 18:45:00,109.05,166.24200000000002,52.073,32.047 +2020-11-28 19:00:00,106.97,169.187,53.608000000000004,32.047 +2020-11-28 19:15:00,105.88,166.82299999999998,53.608000000000004,32.047 +2020-11-28 19:30:00,104.51,165.793,53.608000000000004,32.047 +2020-11-28 19:45:00,103.77,161.985,53.608000000000004,32.047 +2020-11-28 20:00:00,99.85,160.374,50.265,32.047 +2020-11-28 20:15:00,95.69,157.26,50.265,32.047 +2020-11-28 20:30:00,93.1,153.798,50.265,32.047 +2020-11-28 20:45:00,91.53,150.88299999999998,50.265,32.047 +2020-11-28 21:00:00,89.7,151.108,45.766000000000005,32.047 +2020-11-28 21:15:00,87.06,150.393,45.766000000000005,32.047 +2020-11-28 21:30:00,85.08,149.381,45.766000000000005,32.047 +2020-11-28 21:45:00,84.12,147.709,45.766000000000005,32.047 +2020-11-28 22:00:00,82.85,143.25,45.97,32.047 +2020-11-28 22:15:00,80.31,140.19299999999998,45.97,32.047 +2020-11-28 22:30:00,77.52,137.02700000000002,45.97,32.047 +2020-11-28 22:45:00,75.91,134.08100000000002,45.97,32.047 +2020-11-28 23:00:00,73.58,131.162,40.415,32.047 +2020-11-28 23:15:00,72.14,125.635,40.415,32.047 +2020-11-28 23:30:00,69.33,123.365,40.415,32.047 +2020-11-28 23:45:00,66.87,120.325,40.415,32.047 +2020-11-29 00:00:00,64.94,100.87299999999999,36.376,32.047 +2020-11-29 00:15:00,62.98,96.604,36.376,32.047 +2020-11-29 00:30:00,61.95,97.626,36.376,32.047 +2020-11-29 00:45:00,60.96,99.65100000000001,36.376,32.047 +2020-11-29 01:00:00,59.8,101.545,32.992,32.047 +2020-11-29 01:15:00,59.26,103.4,32.992,32.047 +2020-11-29 01:30:00,58.37,103.59,32.992,32.047 +2020-11-29 01:45:00,57.51,103.811,32.992,32.047 +2020-11-29 02:00:00,57.27,105.13799999999999,32.327,32.047 +2020-11-29 02:15:00,56.22,104.96799999999999,32.327,32.047 +2020-11-29 02:30:00,55.73,104.90899999999999,32.327,32.047 +2020-11-29 02:45:00,55.26,106.99799999999999,32.327,32.047 +2020-11-29 03:00:00,54.75,109.369,31.169,32.047 +2020-11-29 03:15:00,55.27,109.456,31.169,32.047 +2020-11-29 03:30:00,55.26,111.166,31.169,32.047 +2020-11-29 03:45:00,55.47,112.23700000000001,31.169,32.047 +2020-11-29 04:00:00,56.47,122.075,30.796,32.047 +2020-11-29 04:15:00,56.6,131.143,30.796,32.047 +2020-11-29 04:30:00,56.82,130.894,30.796,32.047 +2020-11-29 04:45:00,57.66,131.634,30.796,32.047 +2020-11-29 05:00:00,58.4,146.967,30.848000000000003,32.047 +2020-11-29 05:15:00,59.09,158.09799999999998,30.848000000000003,32.047 +2020-11-29 05:30:00,59.43,155.056,30.848000000000003,32.047 +2020-11-29 05:45:00,60.08,151.525,30.848000000000003,32.047 +2020-11-29 06:00:00,61.05,165.06400000000002,31.166,32.047 +2020-11-29 06:15:00,61.8,183.03400000000002,31.166,32.047 +2020-11-29 06:30:00,62.33,177.872,31.166,32.047 +2020-11-29 06:45:00,64.49,171.43099999999998,31.166,32.047 +2020-11-29 07:00:00,66.6,170.65900000000002,33.527,32.047 +2020-11-29 07:15:00,68.82,173.44400000000002,33.527,32.047 +2020-11-29 07:30:00,70.6,176.37099999999998,33.527,32.047 +2020-11-29 07:45:00,72.8,178.989,33.527,32.047 +2020-11-29 08:00:00,75.93,182.40900000000002,36.616,32.047 +2020-11-29 08:15:00,78.15,184.84400000000002,36.616,32.047 +2020-11-29 08:30:00,79.59,186.805,36.616,32.047 +2020-11-29 08:45:00,81.98,186.64700000000002,36.616,32.047 +2020-11-29 09:00:00,83.56,182.33700000000002,37.857,32.047 +2020-11-29 09:15:00,85.67,180.64,37.857,32.047 +2020-11-29 09:30:00,86.37,178.63299999999998,37.857,32.047 +2020-11-29 09:45:00,87.65,176.449,37.857,32.047 +2020-11-29 10:00:00,88.71,175.118,36.319,32.047 +2020-11-29 10:15:00,89.33,172.702,36.319,32.047 +2020-11-29 10:30:00,89.75,171.203,36.319,32.047 +2020-11-29 10:45:00,91.28,169.226,36.319,32.047 +2020-11-29 11:00:00,94.21,168.18400000000003,37.236999999999995,32.047 +2020-11-29 11:15:00,98.71,166.132,37.236999999999995,32.047 +2020-11-29 11:30:00,100.96,165.42700000000002,37.236999999999995,32.047 +2020-11-29 11:45:00,103.01,164.52,37.236999999999995,32.047 +2020-11-29 12:00:00,100.88,158.976,34.871,32.047 +2020-11-29 12:15:00,98.94,158.11700000000002,34.871,32.047 +2020-11-29 12:30:00,96.38,157.68,34.871,32.047 +2020-11-29 12:45:00,94.52,157.204,34.871,32.047 +2020-11-29 13:00:00,94.12,155.987,29.738000000000003,32.047 +2020-11-29 13:15:00,92.16,156.864,29.738000000000003,32.047 +2020-11-29 13:30:00,90.98,155.782,29.738000000000003,32.047 +2020-11-29 13:45:00,89.74,155.44899999999998,29.738000000000003,32.047 +2020-11-29 14:00:00,89.32,155.141,27.333000000000002,32.047 +2020-11-29 14:15:00,88.36,155.555,27.333000000000002,32.047 +2020-11-29 14:30:00,90.19,155.519,27.333000000000002,32.047 +2020-11-29 14:45:00,90.43,155.267,27.333000000000002,32.047 +2020-11-29 15:00:00,89.89,154.24200000000002,28.232,32.047 +2020-11-29 15:15:00,90.56,155.61,28.232,32.047 +2020-11-29 15:30:00,91.22,157.219,28.232,32.047 +2020-11-29 15:45:00,92.39,158.764,28.232,32.047 +2020-11-29 16:00:00,95.42,161.649,32.815,32.047 +2020-11-29 16:15:00,96.9,163.506,32.815,32.047 +2020-11-29 16:30:00,98.92,165.269,32.815,32.047 +2020-11-29 16:45:00,101.02,166.33900000000003,32.815,32.047 +2020-11-29 17:00:00,102.53,169.273,43.068999999999996,32.047 +2020-11-29 17:15:00,104.58,170.584,43.068999999999996,32.047 +2020-11-29 17:30:00,105.89,171.041,43.068999999999996,32.047 +2020-11-29 17:45:00,107.7,172.16,43.068999999999996,32.047 +2020-11-29 18:00:00,106.71,173.975,50.498999999999995,32.047 +2020-11-29 18:15:00,105.17,175.155,50.498999999999995,32.047 +2020-11-29 18:30:00,103.9,173.296,50.498999999999995,32.047 +2020-11-29 18:45:00,102.8,172.385,50.498999999999995,32.047 +2020-11-29 19:00:00,101.44,175.391,53.481,32.047 +2020-11-29 19:15:00,99.87,173.355,53.481,32.047 +2020-11-29 19:30:00,98.61,172.127,53.481,32.047 +2020-11-29 19:45:00,96.7,169.475,53.481,32.047 +2020-11-29 20:00:00,95.81,167.84900000000002,51.687,32.047 +2020-11-29 20:15:00,93.42,165.55900000000003,51.687,32.047 +2020-11-29 20:30:00,91.99,163.27700000000002,51.687,32.047 +2020-11-29 20:45:00,90.53,159.05200000000002,51.687,32.047 +2020-11-29 21:00:00,89.47,156.99200000000002,47.674,32.047 +2020-11-29 21:15:00,87.86,155.668,47.674,32.047 +2020-11-29 21:30:00,87.32,154.80700000000002,47.674,32.047 +2020-11-29 21:45:00,87.42,153.313,47.674,32.047 +2020-11-29 22:00:00,87.27,148.168,48.178000000000004,32.047 +2020-11-29 22:15:00,87.13,144.168,48.178000000000004,32.047 +2020-11-29 22:30:00,85.14,138.221,48.178000000000004,32.047 +2020-11-29 22:45:00,83.37,134.334,48.178000000000004,32.047 +2020-11-29 23:00:00,80.39,128.91899999999998,42.553999999999995,32.047 +2020-11-29 23:15:00,78.24,125.204,42.553999999999995,32.047 +2020-11-29 23:30:00,76.63,123.557,42.553999999999995,32.047 +2020-11-29 23:45:00,74.94,121.303,42.553999999999995,32.047 +2020-11-30 00:00:00,70.81,105.06200000000001,37.177,32.225 +2020-11-30 00:15:00,71.25,103.441,37.177,32.225 +2020-11-30 00:30:00,71.29,104.5,37.177,32.225 +2020-11-30 00:45:00,72.06,105.978,37.177,32.225 +2020-11-30 01:00:00,67.48,107.973,35.358000000000004,32.225 +2020-11-30 01:15:00,69.08,109.38799999999999,35.358000000000004,32.225 +2020-11-30 01:30:00,68.47,109.70200000000001,35.358000000000004,32.225 +2020-11-30 01:45:00,68.71,109.99,35.358000000000004,32.225 +2020-11-30 02:00:00,66.0,111.391,35.03,32.225 +2020-11-30 02:15:00,67.54,112.273,35.03,32.225 +2020-11-30 02:30:00,67.4,112.52600000000001,35.03,32.225 +2020-11-30 02:45:00,68.06,114.06,35.03,32.225 +2020-11-30 03:00:00,66.68,117.569,34.394,32.225 +2020-11-30 03:15:00,67.69,119.211,34.394,32.225 +2020-11-30 03:30:00,68.14,120.822,34.394,32.225 +2020-11-30 03:45:00,69.36,121.333,34.394,32.225 +2020-11-30 04:00:00,71.04,135.393,34.421,32.225 +2020-11-30 04:15:00,71.36,148.519,34.421,32.225 +2020-11-30 04:30:00,80.36,150.013,34.421,32.225 +2020-11-30 04:45:00,83.58,150.964,34.421,32.225 +2020-11-30 05:00:00,84.07,180.87099999999998,39.435,32.225 +2020-11-30 05:15:00,83.14,210.899,39.435,32.225 +2020-11-30 05:30:00,93.56,207.80200000000002,39.435,32.225 +2020-11-30 05:45:00,101.91,198.94,39.435,32.225 +2020-11-30 06:00:00,110.42,195.543,55.685,32.225 +2020-11-30 06:15:00,109.5,199.292,55.685,32.225 +2020-11-30 06:30:00,112.78,201.679,55.685,32.225 +2020-11-30 06:45:00,120.16,203.687,55.685,32.225 +2020-11-30 07:00:00,123.28,205.102,66.837,32.225 +2020-11-30 07:15:00,128.77,209.372,66.837,32.225 +2020-11-30 07:30:00,128.06,211.49400000000003,66.837,32.225 +2020-11-30 07:45:00,128.21,211.993,66.837,32.225 +2020-11-30 08:00:00,135.05,211.018,72.217,32.225 +2020-11-30 08:15:00,132.17,211.399,72.217,32.225 +2020-11-30 08:30:00,130.69,209.71200000000002,72.217,32.225 +2020-11-30 08:45:00,130.49,206.71200000000002,72.217,32.225 +2020-11-30 09:00:00,131.71,201.407,66.117,32.225 +2020-11-30 09:15:00,132.93,196.41099999999997,66.117,32.225 +2020-11-30 09:30:00,133.88,193.389,66.117,32.225 +2020-11-30 09:45:00,136.35,191.048,66.117,32.225 +2020-11-30 10:00:00,133.09,188.88,62.1,32.225 +2020-11-30 10:15:00,133.18,186.13,62.1,32.225 +2020-11-30 10:30:00,131.07,183.77599999999998,62.1,32.225 +2020-11-30 10:45:00,130.86,182.16299999999998,62.1,32.225 +2020-11-30 11:00:00,129.58,178.945,60.021,32.225 +2020-11-30 11:15:00,127.7,178.484,60.021,32.225 +2020-11-30 11:30:00,128.06,179.08900000000003,60.021,32.225 +2020-11-30 11:45:00,127.63,177.903,60.021,32.225 +2020-11-30 12:00:00,127.01,173.58900000000003,56.75899999999999,32.225 +2020-11-30 12:15:00,129.44,172.75599999999997,56.75899999999999,32.225 +2020-11-30 12:30:00,126.09,172.38299999999998,56.75899999999999,32.225 +2020-11-30 12:45:00,130.5,173.231,56.75899999999999,32.225 +2020-11-30 13:00:00,127.8,172.65200000000002,56.04600000000001,32.225 +2020-11-30 13:15:00,135.15,172.187,56.04600000000001,32.225 +2020-11-30 13:30:00,133.2,170.669,56.04600000000001,32.225 +2020-11-30 13:45:00,134.94,170.502,56.04600000000001,32.225 +2020-11-30 14:00:00,132.77,169.498,55.475,32.225 +2020-11-30 14:15:00,134.22,169.459,55.475,32.225 +2020-11-30 14:30:00,134.93,168.958,55.475,32.225 +2020-11-30 14:45:00,139.22,169.021,55.475,32.225 +2020-11-30 15:00:00,139.45,169.52599999999998,57.048,32.225 +2020-11-30 15:15:00,138.24,169.551,57.048,32.225 +2020-11-30 15:30:00,137.99,170.58900000000003,57.048,32.225 +2020-11-30 15:45:00,136.61,171.674,57.048,32.225 +2020-11-30 16:00:00,139.97,174.865,59.06,32.225 +2020-11-30 16:15:00,141.95,176.092,59.06,32.225 +2020-11-30 16:30:00,140.58,176.91,59.06,32.225 +2020-11-30 16:45:00,140.15,176.986,59.06,32.225 +2020-11-30 17:00:00,142.38,179.55700000000002,65.419,32.225 +2020-11-30 17:15:00,140.03,180.122,65.419,32.225 +2020-11-30 17:30:00,141.11,180.05200000000002,65.419,32.225 +2020-11-30 17:45:00,140.16,179.81400000000002,65.419,32.225 +2020-11-30 18:00:00,138.78,181.859,69.345,32.225 +2020-11-30 18:15:00,137.07,180.787,69.345,32.225 +2020-11-30 18:30:00,136.41,179.389,69.345,32.225 +2020-11-30 18:45:00,137.66,179.602,69.345,32.225 +2020-11-30 19:00:00,134.46,181.15599999999998,73.825,32.225 +2020-11-30 19:15:00,133.63,178.29,73.825,32.225 +2020-11-30 19:30:00,137.08,177.426,73.825,32.225 +2020-11-30 19:45:00,135.8,173.923,73.825,32.225 +2020-11-30 20:00:00,129.29,170.03,64.027,32.225 +2020-11-30 20:15:00,123.1,165.794,64.027,32.225 +2020-11-30 20:30:00,117.76,161.946,64.027,32.225 +2020-11-30 20:45:00,115.12,159.184,64.027,32.225 +2020-11-30 21:00:00,116.06,157.475,57.952,32.225 +2020-11-30 21:15:00,113.82,155.185,57.952,32.225 +2020-11-30 21:30:00,112.58,153.67600000000002,57.952,32.225 +2020-11-30 21:45:00,105.49,151.708,57.952,32.225 +2020-11-30 22:00:00,101.57,143.72299999999998,53.031000000000006,32.225 +2020-11-30 22:15:00,95.52,138.885,53.031000000000006,32.225 +2020-11-30 22:30:00,97.58,123.971,53.031000000000006,32.225 +2020-11-30 22:45:00,97.01,115.875,53.031000000000006,32.225 +2020-11-30 23:00:00,92.05,111.11399999999999,45.085,32.225 +2020-11-30 23:15:00,89.71,109.441,45.085,32.225 +2020-11-30 23:30:00,83.96,110.206,45.085,32.225 +2020-11-30 23:45:00,81.23,110.156,45.085,32.225 +2020-12-01 00:00:00,77.38,114.376,43.537,32.65 +2020-12-01 00:15:00,76.24,114.65799999999999,43.537,32.65 +2020-12-01 00:30:00,76.87,115.84100000000001,43.537,32.65 +2020-12-01 00:45:00,75.04,117.59700000000001,43.537,32.65 +2020-12-01 01:00:00,73.08,119.316,41.854,32.65 +2020-12-01 01:15:00,73.82,120.051,41.854,32.65 +2020-12-01 01:30:00,71.9,120.405,41.854,32.65 +2020-12-01 01:45:00,73.54,121.234,41.854,32.65 +2020-12-01 02:00:00,71.89,122.501,40.321,32.65 +2020-12-01 02:15:00,73.96,123.98899999999999,40.321,32.65 +2020-12-01 02:30:00,71.76,124.215,40.321,32.65 +2020-12-01 02:45:00,72.0,126.095,40.321,32.65 +2020-12-01 03:00:00,71.75,128.914,39.632,32.65 +2020-12-01 03:15:00,75.34,129.286,39.632,32.65 +2020-12-01 03:30:00,74.29,131.14,39.632,32.65 +2020-12-01 03:45:00,75.41,132.171,39.632,32.65 +2020-12-01 04:00:00,76.26,145.259,40.183,32.65 +2020-12-01 04:15:00,77.11,157.393,40.183,32.65 +2020-12-01 04:30:00,79.19,160.136,40.183,32.65 +2020-12-01 04:45:00,80.44,162.73,40.183,32.65 +2020-12-01 05:00:00,84.76,197.88,43.945,32.65 +2020-12-01 05:15:00,88.06,227.541,43.945,32.65 +2020-12-01 05:30:00,90.98,222.683,43.945,32.65 +2020-12-01 05:45:00,99.38,214.511,43.945,32.65 +2020-12-01 06:00:00,107.58,210.252,56.048,32.65 +2020-12-01 06:15:00,111.62,215.68,56.048,32.65 +2020-12-01 06:30:00,119.23,217.26,56.048,32.65 +2020-12-01 06:45:00,121.67,219.46099999999998,56.048,32.65 +2020-12-01 07:00:00,129.63,218.843,65.74,32.65 +2020-12-01 07:15:00,130.84,223.71400000000003,65.74,32.65 +2020-12-01 07:30:00,137.48,226.422,65.74,32.65 +2020-12-01 07:45:00,137.37,227.78900000000002,65.74,32.65 +2020-12-01 08:00:00,140.6,226.493,72.757,32.65 +2020-12-01 08:15:00,141.1,226.658,72.757,32.65 +2020-12-01 08:30:00,140.35,224.92700000000002,72.757,32.65 +2020-12-01 08:45:00,140.13,222.5,72.757,32.65 +2020-12-01 09:00:00,141.71,216.40599999999998,67.692,32.65 +2020-12-01 09:15:00,141.8,212.893,67.692,32.65 +2020-12-01 09:30:00,142.81,210.30700000000002,67.692,32.65 +2020-12-01 09:45:00,145.16,207.66299999999998,67.692,32.65 +2020-12-01 10:00:00,142.57,203.207,63.506,32.65 +2020-12-01 10:15:00,141.13,199.245,63.506,32.65 +2020-12-01 10:30:00,139.34,197.101,63.506,32.65 +2020-12-01 10:45:00,143.54,195.78,63.506,32.65 +2020-12-01 11:00:00,143.81,194.96099999999998,60.758,32.65 +2020-12-01 11:15:00,146.07,194.06400000000002,60.758,32.65 +2020-12-01 11:30:00,145.51,192.882,60.758,32.65 +2020-12-01 11:45:00,143.54,191.393,60.758,32.65 +2020-12-01 12:00:00,141.07,185.77599999999998,57.519,32.65 +2020-12-01 12:15:00,140.56,184.696,57.519,32.65 +2020-12-01 12:30:00,136.23,184.53,57.519,32.65 +2020-12-01 12:45:00,133.91,185.405,57.519,32.65 +2020-12-01 13:00:00,132.2,184.952,56.46,32.65 +2020-12-01 13:15:00,136.5,184.533,56.46,32.65 +2020-12-01 13:30:00,133.44,184.457,56.46,32.65 +2020-12-01 13:45:00,129.4,184.488,56.46,32.65 +2020-12-01 14:00:00,127.85,183.696,56.207,32.65 +2020-12-01 14:15:00,132.64,184.13400000000001,56.207,32.65 +2020-12-01 14:30:00,135.84,184.32299999999998,56.207,32.65 +2020-12-01 14:45:00,135.32,184.10299999999998,56.207,32.65 +2020-12-01 15:00:00,135.69,184.78400000000002,57.391999999999996,32.65 +2020-12-01 15:15:00,135.61,185.36599999999999,57.391999999999996,32.65 +2020-12-01 15:30:00,133.27,187.30200000000002,57.391999999999996,32.65 +2020-12-01 15:45:00,133.91,189.111,57.391999999999996,32.65 +2020-12-01 16:00:00,137.4,190.207,59.955,32.65 +2020-12-01 16:15:00,139.6,191.11599999999999,59.955,32.65 +2020-12-01 16:30:00,142.04,193.775,59.955,32.65 +2020-12-01 16:45:00,141.31,194.75400000000002,59.955,32.65 +2020-12-01 17:00:00,144.35,197.62,67.063,32.65 +2020-12-01 17:15:00,144.05,197.739,67.063,32.65 +2020-12-01 17:30:00,146.6,198.13,67.063,32.65 +2020-12-01 17:45:00,145.09,197.708,67.063,32.65 +2020-12-01 18:00:00,144.03,198.524,71.477,32.65 +2020-12-01 18:15:00,142.72,196.93200000000002,71.477,32.65 +2020-12-01 18:30:00,142.42,195.355,71.477,32.65 +2020-12-01 18:45:00,141.42,195.035,71.477,32.65 +2020-12-01 19:00:00,139.2,196.077,74.32,32.65 +2020-12-01 19:15:00,138.58,192.56,74.32,32.65 +2020-12-01 19:30:00,136.59,190.588,74.32,32.65 +2020-12-01 19:45:00,136.62,187.38299999999998,74.32,32.65 +2020-12-01 20:00:00,127.68,183.91299999999998,66.157,32.65 +2020-12-01 20:15:00,124.64,178.15099999999998,66.157,32.65 +2020-12-01 20:30:00,120.77,174.831,66.157,32.65 +2020-12-01 20:45:00,119.59,171.986,66.157,32.65 +2020-12-01 21:00:00,113.2,170.00900000000001,59.806000000000004,32.65 +2020-12-01 21:15:00,113.24,168.122,59.806000000000004,32.65 +2020-12-01 21:30:00,115.21,166.013,59.806000000000004,32.65 +2020-12-01 21:45:00,113.56,164.245,59.806000000000004,32.65 +2020-12-01 22:00:00,109.11,157.439,54.785,32.65 +2020-12-01 22:15:00,104.46,151.769,54.785,32.65 +2020-12-01 22:30:00,97.9,136.998,54.785,32.65 +2020-12-01 22:45:00,101.22,128.881,54.785,32.65 +2020-12-01 23:00:00,96.47,123.572,47.176,32.65 +2020-12-01 23:15:00,95.75,121.62100000000001,47.176,32.65 +2020-12-01 23:30:00,88.96,121.59299999999999,47.176,32.65 +2020-12-01 23:45:00,85.14,121.363,47.176,32.65 +2020-12-02 00:00:00,84.73,114.73200000000001,43.42,32.65 +2020-12-02 00:15:00,88.25,114.98200000000001,43.42,32.65 +2020-12-02 00:30:00,88.93,116.162,43.42,32.65 +2020-12-02 00:45:00,86.11,117.9,43.42,32.65 +2020-12-02 01:00:00,82.71,119.66,40.869,32.65 +2020-12-02 01:15:00,87.22,120.396,40.869,32.65 +2020-12-02 01:30:00,85.57,120.758,40.869,32.65 +2020-12-02 01:45:00,81.75,121.573,40.869,32.65 +2020-12-02 02:00:00,83.12,122.861,39.541,32.65 +2020-12-02 02:15:00,84.79,124.352,39.541,32.65 +2020-12-02 02:30:00,82.28,124.575,39.541,32.65 +2020-12-02 02:45:00,82.21,126.456,39.541,32.65 +2020-12-02 03:00:00,84.94,129.262,39.052,32.65 +2020-12-02 03:15:00,86.09,129.664,39.052,32.65 +2020-12-02 03:30:00,83.57,131.52100000000002,39.052,32.65 +2020-12-02 03:45:00,84.34,132.55200000000002,39.052,32.65 +2020-12-02 04:00:00,87.42,145.606,40.36,32.65 +2020-12-02 04:15:00,90.24,157.736,40.36,32.65 +2020-12-02 04:30:00,90.6,160.465,40.36,32.65 +2020-12-02 04:45:00,88.51,163.063,40.36,32.65 +2020-12-02 05:00:00,94.36,198.175,43.133,32.65 +2020-12-02 05:15:00,100.52,227.77700000000002,43.133,32.65 +2020-12-02 05:30:00,105.35,222.95,43.133,32.65 +2020-12-02 05:45:00,105.35,214.801,43.133,32.65 +2020-12-02 06:00:00,109.55,210.567,54.953,32.65 +2020-12-02 06:15:00,115.06,215.998,54.953,32.65 +2020-12-02 06:30:00,123.34,217.628,54.953,32.65 +2020-12-02 06:45:00,127.78,219.878,54.953,32.65 +2020-12-02 07:00:00,134.98,219.26,66.566,32.65 +2020-12-02 07:15:00,137.75,224.141,66.566,32.65 +2020-12-02 07:30:00,136.68,226.858,66.566,32.65 +2020-12-02 07:45:00,138.02,228.231,66.566,32.65 +2020-12-02 08:00:00,141.25,226.949,72.902,32.65 +2020-12-02 08:15:00,138.63,227.109,72.902,32.65 +2020-12-02 08:30:00,137.77,225.389,72.902,32.65 +2020-12-02 08:45:00,136.96,222.929,72.902,32.65 +2020-12-02 09:00:00,134.22,216.808,68.465,32.65 +2020-12-02 09:15:00,138.14,213.30200000000002,68.465,32.65 +2020-12-02 09:30:00,138.14,210.72099999999998,68.465,32.65 +2020-12-02 09:45:00,137.02,208.063,68.465,32.65 +2020-12-02 10:00:00,134.5,203.59900000000002,63.625,32.65 +2020-12-02 10:15:00,134.21,199.612,63.625,32.65 +2020-12-02 10:30:00,134.09,197.44299999999998,63.625,32.65 +2020-12-02 10:45:00,133.17,196.112,63.625,32.65 +2020-12-02 11:00:00,128.69,195.27599999999998,61.628,32.65 +2020-12-02 11:15:00,131.51,194.36599999999999,61.628,32.65 +2020-12-02 11:30:00,130.92,193.18099999999998,61.628,32.65 +2020-12-02 11:45:00,130.63,191.68400000000003,61.628,32.65 +2020-12-02 12:00:00,128.7,186.065,58.708999999999996,32.65 +2020-12-02 12:15:00,125.44,184.99599999999998,58.708999999999996,32.65 +2020-12-02 12:30:00,126.63,184.84900000000002,58.708999999999996,32.65 +2020-12-02 12:45:00,128.48,185.729,58.708999999999996,32.65 +2020-12-02 13:00:00,126.35,185.24,57.373000000000005,32.65 +2020-12-02 13:15:00,128.95,184.826,57.373000000000005,32.65 +2020-12-02 13:30:00,127.1,184.747,57.373000000000005,32.65 +2020-12-02 13:45:00,127.31,184.768,57.373000000000005,32.65 +2020-12-02 14:00:00,125.8,183.947,57.684,32.65 +2020-12-02 14:15:00,128.72,184.392,57.684,32.65 +2020-12-02 14:30:00,128.58,184.61,57.684,32.65 +2020-12-02 14:45:00,128.73,184.4,57.684,32.65 +2020-12-02 15:00:00,132.19,185.09799999999998,58.03,32.65 +2020-12-02 15:15:00,132.73,185.68099999999998,58.03,32.65 +2020-12-02 15:30:00,132.49,187.644,58.03,32.65 +2020-12-02 15:45:00,133.74,189.456,58.03,32.65 +2020-12-02 16:00:00,137.37,190.55200000000002,59.97,32.65 +2020-12-02 16:15:00,138.66,191.484,59.97,32.65 +2020-12-02 16:30:00,141.97,194.15,59.97,32.65 +2020-12-02 16:45:00,142.93,195.16400000000002,59.97,32.65 +2020-12-02 17:00:00,147.26,198.00400000000002,65.661,32.65 +2020-12-02 17:15:00,146.69,198.15099999999998,65.661,32.65 +2020-12-02 17:30:00,147.72,198.554,65.661,32.65 +2020-12-02 17:45:00,146.61,198.139,65.661,32.65 +2020-12-02 18:00:00,144.03,198.97299999999998,70.96300000000001,32.65 +2020-12-02 18:15:00,143.55,197.338,70.96300000000001,32.65 +2020-12-02 18:30:00,141.98,195.77,70.96300000000001,32.65 +2020-12-02 18:45:00,139.97,195.455,70.96300000000001,32.65 +2020-12-02 19:00:00,141.8,196.488,74.133,32.65 +2020-12-02 19:15:00,140.75,192.959,74.133,32.65 +2020-12-02 19:30:00,137.4,190.96900000000002,74.133,32.65 +2020-12-02 19:45:00,137.36,187.734,74.133,32.65 +2020-12-02 20:00:00,130.36,184.267,65.613,32.65 +2020-12-02 20:15:00,122.11,178.49400000000003,65.613,32.65 +2020-12-02 20:30:00,123.19,175.14700000000002,65.613,32.65 +2020-12-02 20:45:00,122.73,172.321,65.613,32.65 +2020-12-02 21:00:00,117.07,170.332,58.583,32.65 +2020-12-02 21:15:00,110.96,168.428,58.583,32.65 +2020-12-02 21:30:00,110.94,166.321,58.583,32.65 +2020-12-02 21:45:00,111.13,164.558,58.583,32.65 +2020-12-02 22:00:00,105.41,157.761,54.411,32.65 +2020-12-02 22:15:00,105.31,152.091,54.411,32.65 +2020-12-02 22:30:00,102.13,137.376,54.411,32.65 +2020-12-02 22:45:00,104.64,129.267,54.411,32.65 +2020-12-02 23:00:00,96.98,123.932,47.878,32.65 +2020-12-02 23:15:00,94.32,121.976,47.878,32.65 +2020-12-02 23:30:00,94.93,121.96,47.878,32.65 +2020-12-02 23:45:00,93.72,121.713,47.878,32.65 +2020-12-03 00:00:00,87.84,115.08200000000001,44.513000000000005,32.65 +2020-12-03 00:15:00,83.11,115.303,44.513000000000005,32.65 +2020-12-03 00:30:00,84.51,116.478,44.513000000000005,32.65 +2020-12-03 00:45:00,87.95,118.196,44.513000000000005,32.65 +2020-12-03 01:00:00,84.16,119.99700000000001,43.169,32.65 +2020-12-03 01:15:00,83.09,120.73299999999999,43.169,32.65 +2020-12-03 01:30:00,85.34,121.10600000000001,43.169,32.65 +2020-12-03 01:45:00,86.49,121.904,43.169,32.65 +2020-12-03 02:00:00,82.06,123.214,41.763999999999996,32.65 +2020-12-03 02:15:00,82.6,124.706,41.763999999999996,32.65 +2020-12-03 02:30:00,85.09,124.931,41.763999999999996,32.65 +2020-12-03 02:45:00,86.07,126.811,41.763999999999996,32.65 +2020-12-03 03:00:00,80.57,129.602,41.155,32.65 +2020-12-03 03:15:00,80.92,130.036,41.155,32.65 +2020-12-03 03:30:00,83.75,131.89700000000002,41.155,32.65 +2020-12-03 03:45:00,87.62,132.925,41.155,32.65 +2020-12-03 04:00:00,89.28,145.94799999999998,41.96,32.65 +2020-12-03 04:15:00,85.37,158.075,41.96,32.65 +2020-12-03 04:30:00,83.55,160.786,41.96,32.65 +2020-12-03 04:45:00,85.67,163.389,41.96,32.65 +2020-12-03 05:00:00,90.67,198.46200000000002,45.206,32.65 +2020-12-03 05:15:00,94.78,228.007,45.206,32.65 +2020-12-03 05:30:00,95.98,223.21200000000002,45.206,32.65 +2020-12-03 05:45:00,101.33,215.085,45.206,32.65 +2020-12-03 06:00:00,109.52,210.877,55.398999999999994,32.65 +2020-12-03 06:15:00,116.92,216.308,55.398999999999994,32.65 +2020-12-03 06:30:00,120.32,217.99,55.398999999999994,32.65 +2020-12-03 06:45:00,124.73,220.28599999999997,55.398999999999994,32.65 +2020-12-03 07:00:00,131.84,219.67,64.627,32.65 +2020-12-03 07:15:00,134.4,224.56099999999998,64.627,32.65 +2020-12-03 07:30:00,137.22,227.28400000000002,64.627,32.65 +2020-12-03 07:45:00,137.69,228.66400000000002,64.627,32.65 +2020-12-03 08:00:00,141.29,227.395,70.895,32.65 +2020-12-03 08:15:00,139.35,227.55,70.895,32.65 +2020-12-03 08:30:00,139.65,225.842,70.895,32.65 +2020-12-03 08:45:00,139.71,223.34900000000002,70.895,32.65 +2020-12-03 09:00:00,139.33,217.199,66.382,32.65 +2020-12-03 09:15:00,140.17,213.701,66.382,32.65 +2020-12-03 09:30:00,140.93,211.125,66.382,32.65 +2020-12-03 09:45:00,141.66,208.455,66.382,32.65 +2020-12-03 10:00:00,143.6,203.981,62.739,32.65 +2020-12-03 10:15:00,145.07,199.96900000000002,62.739,32.65 +2020-12-03 10:30:00,144.64,197.77700000000002,62.739,32.65 +2020-12-03 10:45:00,144.41,196.437,62.739,32.65 +2020-12-03 11:00:00,143.34,195.584,60.843,32.65 +2020-12-03 11:15:00,145.71,194.658,60.843,32.65 +2020-12-03 11:30:00,144.57,193.47099999999998,60.843,32.65 +2020-12-03 11:45:00,144.85,191.968,60.843,32.65 +2020-12-03 12:00:00,142.96,186.34599999999998,58.466,32.65 +2020-12-03 12:15:00,140.5,185.28900000000002,58.466,32.65 +2020-12-03 12:30:00,139.07,185.16,58.466,32.65 +2020-12-03 12:45:00,139.98,186.046,58.466,32.65 +2020-12-03 13:00:00,137.73,185.521,56.883,32.65 +2020-12-03 13:15:00,138.78,185.111,56.883,32.65 +2020-12-03 13:30:00,136.57,185.028,56.883,32.65 +2020-12-03 13:45:00,136.43,185.03799999999998,56.883,32.65 +2020-12-03 14:00:00,135.01,184.19099999999997,56.503,32.65 +2020-12-03 14:15:00,135.23,184.644,56.503,32.65 +2020-12-03 14:30:00,135.78,184.89,56.503,32.65 +2020-12-03 14:45:00,136.83,184.68900000000002,56.503,32.65 +2020-12-03 15:00:00,136.93,185.407,57.803999999999995,32.65 +2020-12-03 15:15:00,136.54,185.989,57.803999999999995,32.65 +2020-12-03 15:30:00,135.85,187.979,57.803999999999995,32.65 +2020-12-03 15:45:00,135.94,189.792,57.803999999999995,32.65 +2020-12-03 16:00:00,139.8,190.887,59.379,32.65 +2020-12-03 16:15:00,140.97,191.84400000000002,59.379,32.65 +2020-12-03 16:30:00,142.86,194.516,59.379,32.65 +2020-12-03 16:45:00,142.14,195.565,59.379,32.65 +2020-12-03 17:00:00,143.33,198.38,64.71600000000001,32.65 +2020-12-03 17:15:00,143.46,198.551,64.71600000000001,32.65 +2020-12-03 17:30:00,145.46,198.96900000000002,64.71600000000001,32.65 +2020-12-03 17:45:00,144.91,198.55900000000003,64.71600000000001,32.65 +2020-12-03 18:00:00,141.72,199.41299999999998,68.803,32.65 +2020-12-03 18:15:00,139.73,197.738,68.803,32.65 +2020-12-03 18:30:00,138.04,196.17700000000002,68.803,32.65 +2020-12-03 18:45:00,139.53,195.868,68.803,32.65 +2020-12-03 19:00:00,136.48,196.892,72.934,32.65 +2020-12-03 19:15:00,136.16,193.352,72.934,32.65 +2020-12-03 19:30:00,132.96,191.345,72.934,32.65 +2020-12-03 19:45:00,132.54,188.079,72.934,32.65 +2020-12-03 20:00:00,124.03,184.614,65.175,32.65 +2020-12-03 20:15:00,120.74,178.831,65.175,32.65 +2020-12-03 20:30:00,117.79,175.456,65.175,32.65 +2020-12-03 20:45:00,115.66,172.65099999999998,65.175,32.65 +2020-12-03 21:00:00,113.13,170.648,58.55,32.65 +2020-12-03 21:15:00,111.13,168.72799999999998,58.55,32.65 +2020-12-03 21:30:00,107.15,166.62099999999998,58.55,32.65 +2020-12-03 21:45:00,104.82,164.864,58.55,32.65 +2020-12-03 22:00:00,98.64,158.077,55.041000000000004,32.65 +2020-12-03 22:15:00,100.35,152.408,55.041000000000004,32.65 +2020-12-03 22:30:00,99.69,137.747,55.041000000000004,32.65 +2020-12-03 22:45:00,99.18,129.645,55.041000000000004,32.65 +2020-12-03 23:00:00,96.32,124.286,48.258,32.65 +2020-12-03 23:15:00,90.21,122.32600000000001,48.258,32.65 +2020-12-03 23:30:00,91.13,122.322,48.258,32.65 +2020-12-03 23:45:00,90.28,122.055,48.258,32.65 +2020-12-04 00:00:00,88.17,114.368,45.02,32.65 +2020-12-04 00:15:00,80.56,114.755,45.02,32.65 +2020-12-04 00:30:00,74.99,115.79,45.02,32.65 +2020-12-04 00:45:00,78.87,117.596,45.02,32.65 +2020-12-04 01:00:00,80.8,119.12799999999999,42.695,32.65 +2020-12-04 01:15:00,81.08,120.788,42.695,32.65 +2020-12-04 01:30:00,79.01,120.94,42.695,32.65 +2020-12-04 01:45:00,77.31,121.831,42.695,32.65 +2020-12-04 02:00:00,74.12,123.24,41.511,32.65 +2020-12-04 02:15:00,74.97,124.619,41.511,32.65 +2020-12-04 02:30:00,79.2,125.36200000000001,41.511,32.65 +2020-12-04 02:45:00,82.28,127.291,41.511,32.65 +2020-12-04 03:00:00,79.37,129.062,41.162,32.65 +2020-12-04 03:15:00,79.26,130.482,41.162,32.65 +2020-12-04 03:30:00,82.2,132.33100000000002,41.162,32.65 +2020-12-04 03:45:00,85.02,133.678,41.162,32.65 +2020-12-04 04:00:00,84.4,146.89600000000002,42.226000000000006,32.65 +2020-12-04 04:15:00,78.87,158.79,42.226000000000006,32.65 +2020-12-04 04:30:00,75.73,161.70600000000002,42.226000000000006,32.65 +2020-12-04 04:45:00,80.98,163.172,42.226000000000006,32.65 +2020-12-04 05:00:00,85.06,196.937,45.597,32.65 +2020-12-04 05:15:00,88.99,227.93,45.597,32.65 +2020-12-04 05:30:00,89.73,224.248,45.597,32.65 +2020-12-04 05:45:00,96.09,216.083,45.597,32.65 +2020-12-04 06:00:00,108.01,212.333,56.263999999999996,32.65 +2020-12-04 06:15:00,112.74,216.285,56.263999999999996,32.65 +2020-12-04 06:30:00,117.29,217.148,56.263999999999996,32.65 +2020-12-04 06:45:00,121.66,221.128,56.263999999999996,32.65 +2020-12-04 07:00:00,130.21,219.666,66.888,32.65 +2020-12-04 07:15:00,129.15,225.585,66.888,32.65 +2020-12-04 07:30:00,132.61,228.15400000000002,66.888,32.65 +2020-12-04 07:45:00,134.61,228.649,66.888,32.65 +2020-12-04 08:00:00,137.01,226.28,73.459,32.65 +2020-12-04 08:15:00,136.94,226.03599999999997,73.459,32.65 +2020-12-04 08:30:00,137.62,225.31599999999997,73.459,32.65 +2020-12-04 08:45:00,137.29,221.213,73.459,32.65 +2020-12-04 09:00:00,138.54,215.50599999999997,69.087,32.65 +2020-12-04 09:15:00,139.96,212.579,69.087,32.65 +2020-12-04 09:30:00,139.56,209.581,69.087,32.65 +2020-12-04 09:45:00,138.84,206.78799999999998,69.087,32.65 +2020-12-04 10:00:00,136.1,201.173,65.404,32.65 +2020-12-04 10:15:00,138.43,197.835,65.404,32.65 +2020-12-04 10:30:00,137.86,195.547,65.404,32.65 +2020-12-04 10:45:00,138.39,193.75599999999997,65.404,32.65 +2020-12-04 11:00:00,136.83,192.87,63.0,32.65 +2020-12-04 11:15:00,137.96,191.03599999999997,63.0,32.65 +2020-12-04 11:30:00,138.11,191.58900000000003,63.0,32.65 +2020-12-04 11:45:00,138.08,190.125,63.0,32.65 +2020-12-04 12:00:00,136.37,185.582,59.083,32.65 +2020-12-04 12:15:00,134.96,182.451,59.083,32.65 +2020-12-04 12:30:00,134.55,182.497,59.083,32.65 +2020-12-04 12:45:00,137.65,183.898,59.083,32.65 +2020-12-04 13:00:00,132.64,184.27200000000002,56.611999999999995,32.65 +2020-12-04 13:15:00,133.9,184.679,56.611999999999995,32.65 +2020-12-04 13:30:00,132.84,184.613,56.611999999999995,32.65 +2020-12-04 13:45:00,133.43,184.551,56.611999999999995,32.65 +2020-12-04 14:00:00,130.52,182.54,55.161,32.65 +2020-12-04 14:15:00,129.92,182.826,55.161,32.65 +2020-12-04 14:30:00,127.64,183.615,55.161,32.65 +2020-12-04 14:45:00,127.22,183.72099999999998,55.161,32.65 +2020-12-04 15:00:00,125.79,183.976,55.583,32.65 +2020-12-04 15:15:00,126.08,184.122,55.583,32.65 +2020-12-04 15:30:00,126.65,184.62599999999998,55.583,32.65 +2020-12-04 15:45:00,131.71,186.58900000000003,55.583,32.65 +2020-12-04 16:00:00,133.56,186.52,57.611999999999995,32.65 +2020-12-04 16:15:00,135.6,187.78900000000002,57.611999999999995,32.65 +2020-12-04 16:30:00,138.73,190.56400000000002,57.611999999999995,32.65 +2020-12-04 16:45:00,136.33,191.52700000000002,57.611999999999995,32.65 +2020-12-04 17:00:00,138.83,194.524,64.14,32.65 +2020-12-04 17:15:00,137.41,194.31099999999998,64.14,32.65 +2020-12-04 17:30:00,138.46,194.424,64.14,32.65 +2020-12-04 17:45:00,138.3,193.78900000000002,64.14,32.65 +2020-12-04 18:00:00,135.16,195.34900000000002,68.086,32.65 +2020-12-04 18:15:00,133.86,193.245,68.086,32.65 +2020-12-04 18:30:00,134.09,192.083,68.086,32.65 +2020-12-04 18:45:00,137.38,191.77700000000002,68.086,32.65 +2020-12-04 19:00:00,132.52,193.69400000000002,69.915,32.65 +2020-12-04 19:15:00,129.24,191.503,69.915,32.65 +2020-12-04 19:30:00,128.95,189.06900000000002,69.915,32.65 +2020-12-04 19:45:00,126.18,185.313,69.915,32.65 +2020-12-04 20:00:00,118.12,181.905,61.695,32.65 +2020-12-04 20:15:00,116.18,176.11900000000003,61.695,32.65 +2020-12-04 20:30:00,113.76,172.675,61.695,32.65 +2020-12-04 20:45:00,111.07,170.445,61.695,32.65 +2020-12-04 21:00:00,107.3,168.935,56.041000000000004,32.65 +2020-12-04 21:15:00,103.46,167.43400000000003,56.041000000000004,32.65 +2020-12-04 21:30:00,100.57,165.37400000000002,56.041000000000004,32.65 +2020-12-04 21:45:00,103.14,164.165,56.041000000000004,32.65 +2020-12-04 22:00:00,98.06,158.365,51.888999999999996,32.65 +2020-12-04 22:15:00,96.92,152.564,51.888999999999996,32.65 +2020-12-04 22:30:00,84.82,144.314,51.888999999999996,32.65 +2020-12-04 22:45:00,84.39,139.736,51.888999999999996,32.65 +2020-12-04 23:00:00,84.2,133.908,45.787,32.65 +2020-12-04 23:15:00,84.93,130.002,45.787,32.65 +2020-12-04 23:30:00,82.36,128.553,45.787,32.65 +2020-12-04 23:45:00,78.57,127.60700000000001,45.787,32.65 +2020-12-05 00:00:00,72.37,111.85600000000001,41.815,32.468 +2020-12-05 00:15:00,73.35,107.964,41.815,32.468 +2020-12-05 00:30:00,73.52,110.323,41.815,32.468 +2020-12-05 00:45:00,69.58,112.825,41.815,32.468 +2020-12-05 01:00:00,65.32,115.024,38.645,32.468 +2020-12-05 01:15:00,67.07,115.698,38.645,32.468 +2020-12-05 01:30:00,70.05,115.344,38.645,32.468 +2020-12-05 01:45:00,72.67,116.0,38.645,32.468 +2020-12-05 02:00:00,67.0,118.118,36.696,32.468 +2020-12-05 02:15:00,65.94,119.133,36.696,32.468 +2020-12-05 02:30:00,62.92,118.76799999999999,36.696,32.468 +2020-12-05 02:45:00,67.89,120.795,36.696,32.468 +2020-12-05 03:00:00,68.09,123.185,35.42,32.468 +2020-12-05 03:15:00,69.91,123.42200000000001,35.42,32.468 +2020-12-05 03:30:00,67.12,123.686,35.42,32.468 +2020-12-05 03:45:00,70.54,125.135,35.42,32.468 +2020-12-05 04:00:00,70.06,134.191,35.167,32.468 +2020-12-05 04:15:00,64.46,143.546,35.167,32.468 +2020-12-05 04:30:00,62.74,144.289,35.167,32.468 +2020-12-05 04:45:00,63.37,145.262,35.167,32.468 +2020-12-05 05:00:00,63.4,163.07299999999998,35.311,32.468 +2020-12-05 05:15:00,63.89,175.081,35.311,32.468 +2020-12-05 05:30:00,64.64,171.774,35.311,32.468 +2020-12-05 05:45:00,66.98,169.051,35.311,32.468 +2020-12-05 06:00:00,68.66,184.03099999999998,37.117,32.468 +2020-12-05 06:15:00,70.86,204.283,37.117,32.468 +2020-12-05 06:30:00,72.62,199.84,37.117,32.468 +2020-12-05 06:45:00,75.93,194.908,37.117,32.468 +2020-12-05 07:00:00,78.46,189.69299999999998,40.948,32.468 +2020-12-05 07:15:00,81.06,194.37400000000002,40.948,32.468 +2020-12-05 07:30:00,83.25,199.646,40.948,32.468 +2020-12-05 07:45:00,85.28,204.113,40.948,32.468 +2020-12-05 08:00:00,88.29,205.796,44.903,32.468 +2020-12-05 08:15:00,88.3,209.168,44.903,32.468 +2020-12-05 08:30:00,89.21,210.06599999999997,44.903,32.468 +2020-12-05 08:45:00,91.96,209.077,44.903,32.468 +2020-12-05 09:00:00,93.43,205.105,46.283,32.468 +2020-12-05 09:15:00,93.03,202.935,46.283,32.468 +2020-12-05 09:30:00,95.57,200.84099999999998,46.283,32.468 +2020-12-05 09:45:00,93.63,198.196,46.283,32.468 +2020-12-05 10:00:00,95.54,192.859,44.103,32.468 +2020-12-05 10:15:00,96.38,189.66,44.103,32.468 +2020-12-05 10:30:00,98.31,187.513,44.103,32.468 +2020-12-05 10:45:00,98.64,187.00599999999997,44.103,32.468 +2020-12-05 11:00:00,101.27,186.32299999999998,42.373999999999995,32.468 +2020-12-05 11:15:00,101.54,183.795,42.373999999999995,32.468 +2020-12-05 11:30:00,99.33,183.24,42.373999999999995,32.468 +2020-12-05 11:45:00,97.85,180.82299999999998,42.373999999999995,32.468 +2020-12-05 12:00:00,99.19,175.40900000000002,39.937,32.468 +2020-12-05 12:15:00,96.78,172.928,39.937,32.468 +2020-12-05 12:30:00,95.3,173.30599999999998,39.937,32.468 +2020-12-05 12:45:00,95.84,173.953,39.937,32.468 +2020-12-05 13:00:00,90.76,173.893,37.138000000000005,32.468 +2020-12-05 13:15:00,88.94,172.267,37.138000000000005,32.468 +2020-12-05 13:30:00,88.02,171.75099999999998,37.138000000000005,32.468 +2020-12-05 13:45:00,84.59,172.145,37.138000000000005,32.468 +2020-12-05 14:00:00,86.03,171.328,36.141999999999996,32.468 +2020-12-05 14:15:00,87.73,171.08599999999998,36.141999999999996,32.468 +2020-12-05 14:30:00,88.66,170.1,36.141999999999996,32.468 +2020-12-05 14:45:00,88.57,170.43400000000003,36.141999999999996,32.468 +2020-12-05 15:00:00,90.45,171.362,37.964,32.468 +2020-12-05 15:15:00,92.3,172.308,37.964,32.468 +2020-12-05 15:30:00,95.92,174.362,37.964,32.468 +2020-12-05 15:45:00,95.54,176.33700000000002,37.964,32.468 +2020-12-05 16:00:00,99.12,175.083,40.699,32.468 +2020-12-05 16:15:00,103.2,177.25900000000001,40.699,32.468 +2020-12-05 16:30:00,101.85,179.989,40.699,32.468 +2020-12-05 16:45:00,102.17,181.863,40.699,32.468 +2020-12-05 17:00:00,105.16,184.262,46.216,32.468 +2020-12-05 17:15:00,104.75,185.71099999999998,46.216,32.468 +2020-12-05 17:30:00,109.26,185.743,46.216,32.468 +2020-12-05 17:45:00,106.26,184.71400000000003,46.216,32.468 +2020-12-05 18:00:00,107.15,185.812,51.123999999999995,32.468 +2020-12-05 18:15:00,107.16,185.459,51.123999999999995,32.468 +2020-12-05 18:30:00,106.1,185.628,51.123999999999995,32.468 +2020-12-05 18:45:00,105.22,182.0,51.123999999999995,32.468 +2020-12-05 19:00:00,103.27,184.81900000000002,52.336000000000006,32.468 +2020-12-05 19:15:00,102.54,182.122,52.336000000000006,32.468 +2020-12-05 19:30:00,101.72,180.421,52.336000000000006,32.468 +2020-12-05 19:45:00,99.84,176.465,52.336000000000006,32.468 +2020-12-05 20:00:00,95.78,175.215,48.825,32.468 +2020-12-05 20:15:00,92.88,171.52599999999998,48.825,32.468 +2020-12-05 20:30:00,90.67,167.706,48.825,32.468 +2020-12-05 20:45:00,89.27,165.101,48.825,32.468 +2020-12-05 21:00:00,84.32,165.80599999999998,43.729,32.468 +2020-12-05 21:15:00,84.83,164.725,43.729,32.468 +2020-12-05 21:30:00,83.33,163.88400000000001,43.729,32.468 +2020-12-05 21:45:00,81.56,162.278,43.729,32.468 +2020-12-05 22:00:00,77.6,157.82299999999998,44.126000000000005,32.468 +2020-12-05 22:15:00,76.48,154.488,44.126000000000005,32.468 +2020-12-05 22:30:00,73.47,152.457,44.126000000000005,32.468 +2020-12-05 22:45:00,72.33,149.74200000000002,44.126000000000005,32.468 +2020-12-05 23:00:00,67.46,146.29399999999998,38.169000000000004,32.468 +2020-12-05 23:15:00,67.5,140.766,38.169000000000004,32.468 +2020-12-05 23:30:00,65.09,137.606,38.169000000000004,32.468 +2020-12-05 23:45:00,63.28,134.237,38.169000000000004,32.468 +2020-12-06 00:00:00,59.2,112.60799999999999,35.232,32.468 +2020-12-06 00:15:00,58.21,108.366,35.232,32.468 +2020-12-06 00:30:00,58.38,110.34700000000001,35.232,32.468 +2020-12-06 00:45:00,57.76,113.522,35.232,32.468 +2020-12-06 01:00:00,53.35,115.618,31.403000000000002,32.468 +2020-12-06 01:15:00,54.31,117.323,31.403000000000002,32.468 +2020-12-06 01:30:00,53.96,117.494,31.403000000000002,32.468 +2020-12-06 01:45:00,53.89,117.824,31.403000000000002,32.468 +2020-12-06 02:00:00,52.08,119.219,30.69,32.468 +2020-12-06 02:15:00,53.48,119.389,30.69,32.468 +2020-12-06 02:30:00,52.62,119.875,30.69,32.468 +2020-12-06 02:45:00,52.89,122.36,30.69,32.468 +2020-12-06 03:00:00,50.89,125.052,29.516,32.468 +2020-12-06 03:15:00,52.01,124.8,29.516,32.468 +2020-12-06 03:30:00,49.54,126.455,29.516,32.468 +2020-12-06 03:45:00,51.95,127.82600000000001,29.516,32.468 +2020-12-06 04:00:00,51.32,136.608,29.148000000000003,32.468 +2020-12-06 04:15:00,52.22,144.953,29.148000000000003,32.468 +2020-12-06 04:30:00,53.06,145.747,29.148000000000003,32.468 +2020-12-06 04:45:00,54.12,146.994,29.148000000000003,32.468 +2020-12-06 05:00:00,54.06,161.283,28.706,32.468 +2020-12-06 05:15:00,55.45,170.83599999999998,28.706,32.468 +2020-12-06 05:30:00,55.14,167.392,28.706,32.468 +2020-12-06 05:45:00,55.66,164.93400000000003,28.706,32.468 +2020-12-06 06:00:00,57.08,179.829,28.771,32.468 +2020-12-06 06:15:00,58.52,198.37599999999998,28.771,32.468 +2020-12-06 06:30:00,60.18,192.88299999999998,28.771,32.468 +2020-12-06 06:45:00,62.27,186.947,28.771,32.468 +2020-12-06 07:00:00,64.58,184.169,31.39,32.468 +2020-12-06 07:15:00,66.66,188.005,31.39,32.468 +2020-12-06 07:30:00,70.38,192.06599999999997,31.39,32.468 +2020-12-06 07:45:00,71.0,195.782,31.39,32.468 +2020-12-06 08:00:00,72.79,199.30599999999998,34.972,32.468 +2020-12-06 08:15:00,75.41,202.59,34.972,32.468 +2020-12-06 08:30:00,74.46,205.142,34.972,32.468 +2020-12-06 08:45:00,78.84,206.12,34.972,32.468 +2020-12-06 09:00:00,80.64,201.72299999999998,36.709,32.468 +2020-12-06 09:15:00,82.63,200.10299999999998,36.709,32.468 +2020-12-06 09:30:00,84.01,197.863,36.709,32.468 +2020-12-06 09:45:00,85.27,195.09799999999998,36.709,32.468 +2020-12-06 10:00:00,87.21,192.24400000000003,35.812,32.468 +2020-12-06 10:15:00,88.37,189.549,35.812,32.468 +2020-12-06 10:30:00,89.09,187.975,35.812,32.468 +2020-12-06 10:45:00,91.13,185.59900000000002,35.812,32.468 +2020-12-06 11:00:00,92.13,185.801,36.746,32.468 +2020-12-06 11:15:00,94.24,183.386,36.746,32.468 +2020-12-06 11:30:00,96.69,181.97799999999998,36.746,32.468 +2020-12-06 11:45:00,97.52,180.15400000000002,36.746,32.468 +2020-12-06 12:00:00,95.11,174.195,35.048,32.468 +2020-12-06 12:15:00,93.73,173.592,35.048,32.468 +2020-12-06 12:30:00,90.61,172.55700000000002,35.048,32.468 +2020-12-06 12:45:00,90.11,172.25,35.048,32.468 +2020-12-06 13:00:00,86.89,171.447,29.987,32.468 +2020-12-06 13:15:00,86.08,172.782,29.987,32.468 +2020-12-06 13:30:00,85.02,172.041,29.987,32.468 +2020-12-06 13:45:00,84.86,171.791,29.987,32.468 +2020-12-06 14:00:00,83.89,171.206,27.21,32.468 +2020-12-06 14:15:00,85.55,172.157,27.21,32.468 +2020-12-06 14:30:00,85.84,172.392,27.21,32.468 +2020-12-06 14:45:00,85.27,172.317,27.21,32.468 +2020-12-06 15:00:00,86.37,171.761,27.726999999999997,32.468 +2020-12-06 15:15:00,86.71,173.438,27.726999999999997,32.468 +2020-12-06 15:30:00,87.73,176.092,27.726999999999997,32.468 +2020-12-06 15:45:00,90.08,178.752,27.726999999999997,32.468 +2020-12-06 16:00:00,91.02,179.32,32.23,32.468 +2020-12-06 16:15:00,92.78,180.62599999999998,32.23,32.468 +2020-12-06 16:30:00,94.77,183.63,32.23,32.468 +2020-12-06 16:45:00,95.94,185.667,32.23,32.468 +2020-12-06 17:00:00,99.97,188.047,42.016999999999996,32.468 +2020-12-06 17:15:00,100.43,189.213,42.016999999999996,32.468 +2020-12-06 17:30:00,101.22,189.55,42.016999999999996,32.468 +2020-12-06 17:45:00,103.06,190.769,42.016999999999996,32.468 +2020-12-06 18:00:00,104.02,191.354,49.338,32.468 +2020-12-06 18:15:00,103.43,192.268,49.338,32.468 +2020-12-06 18:30:00,103.55,190.385,49.338,32.468 +2020-12-06 18:45:00,102.55,188.59400000000002,49.338,32.468 +2020-12-06 19:00:00,101.83,191.08900000000003,52.369,32.468 +2020-12-06 19:15:00,100.33,188.959,52.369,32.468 +2020-12-06 19:30:00,99.34,187.078,52.369,32.468 +2020-12-06 19:45:00,96.53,184.515,52.369,32.468 +2020-12-06 20:00:00,95.12,183.24099999999999,50.405,32.468 +2020-12-06 20:15:00,95.13,180.514,50.405,32.468 +2020-12-06 20:30:00,94.12,177.896,50.405,32.468 +2020-12-06 20:45:00,99.95,174.113,50.405,32.468 +2020-12-06 21:00:00,96.19,172.24400000000003,46.235,32.468 +2020-12-06 21:15:00,96.46,170.52599999999998,46.235,32.468 +2020-12-06 21:30:00,87.84,169.972,46.235,32.468 +2020-12-06 21:45:00,89.67,168.50900000000001,46.235,32.468 +2020-12-06 22:00:00,87.62,162.901,46.861000000000004,32.468 +2020-12-06 22:15:00,90.69,158.804,46.861000000000004,32.468 +2020-12-06 22:30:00,89.86,153.694,46.861000000000004,32.468 +2020-12-06 22:45:00,88.9,150.136,46.861000000000004,32.468 +2020-12-06 23:00:00,78.62,143.899,41.302,32.468 +2020-12-06 23:15:00,77.12,140.21,41.302,32.468 +2020-12-06 23:30:00,79.89,137.859,41.302,32.468 +2020-12-06 23:45:00,77.11,135.356,41.302,32.468 +2020-12-07 00:00:00,72.47,117.10600000000001,37.164,32.65 +2020-12-07 00:15:00,69.76,115.786,37.164,32.65 +2020-12-07 00:30:00,69.85,117.88799999999999,37.164,32.65 +2020-12-07 00:45:00,69.38,120.509,37.164,32.65 +2020-12-07 01:00:00,67.99,122.65899999999999,34.994,32.65 +2020-12-07 01:15:00,70.59,123.839,34.994,32.65 +2020-12-07 01:30:00,73.49,124.073,34.994,32.65 +2020-12-07 01:45:00,70.94,124.50200000000001,34.994,32.65 +2020-12-07 02:00:00,66.53,125.896,34.571,32.65 +2020-12-07 02:15:00,67.94,127.52,34.571,32.65 +2020-12-07 02:30:00,66.77,128.33700000000002,34.571,32.65 +2020-12-07 02:45:00,67.8,130.205,34.571,32.65 +2020-12-07 03:00:00,68.56,134.14700000000002,33.934,32.65 +2020-12-07 03:15:00,68.92,135.562,33.934,32.65 +2020-12-07 03:30:00,72.78,136.951,33.934,32.65 +2020-12-07 03:45:00,77.58,137.773,33.934,32.65 +2020-12-07 04:00:00,78.96,150.85,34.107,32.65 +2020-12-07 04:15:00,76.3,163.312,34.107,32.65 +2020-12-07 04:30:00,75.15,166.274,34.107,32.65 +2020-12-07 04:45:00,76.91,167.683,34.107,32.65 +2020-12-07 05:00:00,80.43,197.60299999999998,39.575,32.65 +2020-12-07 05:15:00,83.47,227.14,39.575,32.65 +2020-12-07 05:30:00,88.42,224.0,39.575,32.65 +2020-12-07 05:45:00,93.74,215.947,39.575,32.65 +2020-12-07 06:00:00,104.42,213.045,56.156000000000006,32.65 +2020-12-07 06:15:00,111.84,216.856,56.156000000000006,32.65 +2020-12-07 06:30:00,115.43,219.375,56.156000000000006,32.65 +2020-12-07 06:45:00,121.15,222.22299999999998,56.156000000000006,32.65 +2020-12-07 07:00:00,126.05,221.801,67.926,32.65 +2020-12-07 07:15:00,129.31,226.882,67.926,32.65 +2020-12-07 07:30:00,132.06,230.178,67.926,32.65 +2020-12-07 07:45:00,131.74,231.34599999999998,67.926,32.65 +2020-12-07 08:00:00,134.22,230.016,72.58,32.65 +2020-12-07 08:15:00,134.5,231.165,72.58,32.65 +2020-12-07 08:30:00,134.15,229.669,72.58,32.65 +2020-12-07 08:45:00,132.35,227.305,72.58,32.65 +2020-12-07 09:00:00,135.85,221.885,66.984,32.65 +2020-12-07 09:15:00,133.39,216.815,66.984,32.65 +2020-12-07 09:30:00,137.13,213.58900000000003,66.984,32.65 +2020-12-07 09:45:00,137.46,211.10299999999998,66.984,32.65 +2020-12-07 10:00:00,137.29,207.167,63.158,32.65 +2020-12-07 10:15:00,137.05,204.125,63.158,32.65 +2020-12-07 10:30:00,137.9,201.66,63.158,32.65 +2020-12-07 10:45:00,135.05,200.014,63.158,32.65 +2020-12-07 11:00:00,137.29,197.605,61.141000000000005,32.65 +2020-12-07 11:15:00,137.89,196.96099999999998,61.141000000000005,32.65 +2020-12-07 11:30:00,136.52,196.918,61.141000000000005,32.65 +2020-12-07 11:45:00,136.73,194.68599999999998,61.141000000000005,32.65 +2020-12-07 12:00:00,135.1,190.422,57.961000000000006,32.65 +2020-12-07 12:15:00,132.49,189.833,57.961000000000006,32.65 +2020-12-07 12:30:00,133.75,189.05700000000002,57.961000000000006,32.65 +2020-12-07 12:45:00,132.35,190.261,57.961000000000006,32.65 +2020-12-07 13:00:00,131.69,190.002,56.843,32.65 +2020-12-07 13:15:00,130.03,189.96599999999998,56.843,32.65 +2020-12-07 13:30:00,129.19,188.69799999999998,56.843,32.65 +2020-12-07 13:45:00,129.62,188.476,56.843,32.65 +2020-12-07 14:00:00,131.03,187.24900000000002,55.992,32.65 +2020-12-07 14:15:00,133.01,187.574,55.992,32.65 +2020-12-07 14:30:00,132.23,187.301,55.992,32.65 +2020-12-07 14:45:00,130.84,187.215,55.992,32.65 +2020-12-07 15:00:00,132.97,188.435,57.523,32.65 +2020-12-07 15:15:00,132.34,188.688,57.523,32.65 +2020-12-07 15:30:00,133.31,190.551,57.523,32.65 +2020-12-07 15:45:00,133.8,192.769,57.523,32.65 +2020-12-07 16:00:00,136.26,193.521,59.471000000000004,32.65 +2020-12-07 16:15:00,137.17,194.09599999999998,59.471000000000004,32.65 +2020-12-07 16:30:00,133.45,196.149,59.471000000000004,32.65 +2020-12-07 16:45:00,141.66,197.045,59.471000000000004,32.65 +2020-12-07 17:00:00,155.57,199.225,65.066,32.65 +2020-12-07 17:15:00,156.59,199.476,65.066,32.65 +2020-12-07 17:30:00,158.11,199.28400000000002,65.066,32.65 +2020-12-07 17:45:00,143.66,199.03099999999998,65.066,32.65 +2020-12-07 18:00:00,137.35,200.05900000000003,69.581,32.65 +2020-12-07 18:15:00,140.33,198.747,69.581,32.65 +2020-12-07 18:30:00,138.53,197.518,69.581,32.65 +2020-12-07 18:45:00,138.89,196.44299999999998,69.581,32.65 +2020-12-07 19:00:00,138.22,197.331,73.771,32.65 +2020-12-07 19:15:00,133.86,194.03,73.771,32.65 +2020-12-07 19:30:00,132.32,192.628,73.771,32.65 +2020-12-07 19:45:00,130.15,189.213,73.771,32.65 +2020-12-07 20:00:00,125.89,185.597,65.035,32.65 +2020-12-07 20:15:00,120.27,180.40099999999998,65.035,32.65 +2020-12-07 20:30:00,116.83,175.91099999999997,65.035,32.65 +2020-12-07 20:45:00,115.19,173.76,65.035,32.65 +2020-12-07 21:00:00,113.15,172.405,58.7,32.65 +2020-12-07 21:15:00,109.2,169.50599999999997,58.7,32.65 +2020-12-07 21:30:00,106.77,168.132,58.7,32.65 +2020-12-07 21:45:00,102.99,166.173,58.7,32.65 +2020-12-07 22:00:00,100.77,157.714,53.888000000000005,32.65 +2020-12-07 22:15:00,98.17,152.30700000000002,53.888000000000005,32.65 +2020-12-07 22:30:00,96.13,137.769,53.888000000000005,32.65 +2020-12-07 22:45:00,92.55,129.42,53.888000000000005,32.65 +2020-12-07 23:00:00,91.82,123.929,45.501999999999995,32.65 +2020-12-07 23:15:00,89.24,122.87299999999999,45.501999999999995,32.65 +2020-12-07 23:30:00,86.63,123.27600000000001,45.501999999999995,32.65 +2020-12-07 23:45:00,83.86,123.38,45.501999999999995,32.65 +2020-12-08 00:00:00,81.48,116.75399999999999,43.537,32.65 +2020-12-08 00:15:00,80.94,116.822,43.537,32.65 +2020-12-08 00:30:00,78.77,117.975,43.537,32.65 +2020-12-08 00:45:00,79.27,119.594,43.537,32.65 +2020-12-08 01:00:00,79.97,121.589,41.854,32.65 +2020-12-08 01:15:00,75.56,122.323,41.854,32.65 +2020-12-08 01:30:00,74.99,122.73700000000001,41.854,32.65 +2020-12-08 01:45:00,74.98,123.461,41.854,32.65 +2020-12-08 02:00:00,75.24,124.875,40.321,32.65 +2020-12-08 02:15:00,76.79,126.37799999999999,40.321,32.65 +2020-12-08 02:30:00,77.69,126.604,40.321,32.65 +2020-12-08 02:45:00,75.39,128.481,40.321,32.65 +2020-12-08 03:00:00,75.09,131.209,39.632,32.65 +2020-12-08 03:15:00,77.11,131.793,39.632,32.65 +2020-12-08 03:30:00,77.43,133.668,39.632,32.65 +2020-12-08 03:45:00,78.5,134.694,39.632,32.65 +2020-12-08 04:00:00,80.28,147.555,40.183,32.65 +2020-12-08 04:15:00,79.41,159.66299999999998,40.183,32.65 +2020-12-08 04:30:00,80.97,162.30100000000002,40.183,32.65 +2020-12-08 04:45:00,83.79,164.922,40.183,32.65 +2020-12-08 05:00:00,87.76,199.80200000000002,43.945,32.65 +2020-12-08 05:15:00,91.47,229.07,43.945,32.65 +2020-12-08 05:30:00,96.61,224.416,43.945,32.65 +2020-12-08 05:45:00,100.78,216.40099999999998,43.945,32.65 +2020-12-08 06:00:00,109.95,212.322,56.048,32.65 +2020-12-08 06:15:00,114.88,217.763,56.048,32.65 +2020-12-08 06:30:00,120.13,219.68400000000003,56.048,32.65 +2020-12-08 06:45:00,125.43,222.21400000000003,56.048,32.65 +2020-12-08 07:00:00,131.43,221.608,65.74,32.65 +2020-12-08 07:15:00,135.23,226.53900000000002,65.74,32.65 +2020-12-08 07:30:00,137.34,229.292,65.74,32.65 +2020-12-08 07:45:00,140.61,230.69,65.74,32.65 +2020-12-08 08:00:00,140.68,229.48,72.757,32.65 +2020-12-08 08:15:00,141.83,229.604,72.757,32.65 +2020-12-08 08:30:00,140.68,227.933,72.757,32.65 +2020-12-08 08:45:00,140.89,225.28400000000002,72.757,32.65 +2020-12-08 09:00:00,137.03,218.998,67.692,32.65 +2020-12-08 09:15:00,139.39,215.53799999999998,67.692,32.65 +2020-12-08 09:30:00,139.92,212.989,67.692,32.65 +2020-12-08 09:45:00,139.63,210.25900000000001,67.692,32.65 +2020-12-08 10:00:00,141.01,205.74200000000002,63.506,32.65 +2020-12-08 10:15:00,141.07,201.618,63.506,32.65 +2020-12-08 10:30:00,142.01,199.31,63.506,32.65 +2020-12-08 10:45:00,148.52,197.928,63.506,32.65 +2020-12-08 11:00:00,159.29,196.99099999999999,60.758,32.65 +2020-12-08 11:15:00,158.54,195.997,60.758,32.65 +2020-12-08 11:30:00,159.27,194.8,60.758,32.65 +2020-12-08 11:45:00,146.55,193.266,60.758,32.65 +2020-12-08 12:00:00,143.87,187.637,57.519,32.65 +2020-12-08 12:15:00,142.59,186.643,57.519,32.65 +2020-12-08 12:30:00,142.23,186.595,57.519,32.65 +2020-12-08 12:45:00,140.71,187.507,57.519,32.65 +2020-12-08 13:00:00,136.17,186.812,56.46,32.65 +2020-12-08 13:15:00,135.08,186.417,56.46,32.65 +2020-12-08 13:30:00,133.39,186.313,56.46,32.65 +2020-12-08 13:45:00,132.97,186.27599999999998,56.46,32.65 +2020-12-08 14:00:00,133.26,185.308,56.207,32.65 +2020-12-08 14:15:00,134.5,185.797,56.207,32.65 +2020-12-08 14:30:00,134.65,186.173,56.207,32.65 +2020-12-08 14:45:00,134.64,186.024,56.207,32.65 +2020-12-08 15:00:00,135.74,186.833,57.391999999999996,32.65 +2020-12-08 15:15:00,137.12,187.408,57.391999999999996,32.65 +2020-12-08 15:30:00,138.16,189.517,57.391999999999996,32.65 +2020-12-08 15:45:00,139.22,191.333,57.391999999999996,32.65 +2020-12-08 16:00:00,144.76,192.426,59.955,32.65 +2020-12-08 16:15:00,147.35,193.497,59.955,32.65 +2020-12-08 16:30:00,147.5,196.205,59.955,32.65 +2020-12-08 16:45:00,149.58,197.412,59.955,32.65 +2020-12-08 17:00:00,161.96,200.109,67.063,32.65 +2020-12-08 17:15:00,162.06,200.412,67.063,32.65 +2020-12-08 17:30:00,163.06,200.90400000000002,67.063,32.65 +2020-12-08 17:45:00,150.37,200.532,67.063,32.65 +2020-12-08 18:00:00,142.45,201.481,71.477,32.65 +2020-12-08 18:15:00,144.58,199.622,71.477,32.65 +2020-12-08 18:30:00,143.42,198.09599999999998,71.477,32.65 +2020-12-08 18:45:00,143.59,197.825,71.477,32.65 +2020-12-08 19:00:00,141.4,198.78900000000002,74.32,32.65 +2020-12-08 19:15:00,138.68,195.19799999999998,74.32,32.65 +2020-12-08 19:30:00,136.14,193.11599999999999,74.32,32.65 +2020-12-08 19:45:00,135.11,189.708,74.32,32.65 +2020-12-08 20:00:00,130.38,186.248,66.157,32.65 +2020-12-08 20:15:00,125.0,180.418,66.157,32.65 +2020-12-08 20:30:00,121.61,176.912,66.157,32.65 +2020-12-08 20:45:00,119.36,174.207,66.157,32.65 +2020-12-08 21:00:00,116.99,172.13299999999998,59.806000000000004,32.65 +2020-12-08 21:15:00,116.17,170.135,59.806000000000004,32.65 +2020-12-08 21:30:00,118.31,168.03,59.806000000000004,32.65 +2020-12-08 21:45:00,115.49,166.30599999999998,59.806000000000004,32.65 +2020-12-08 22:00:00,106.63,159.56,54.785,32.65 +2020-12-08 22:15:00,103.62,153.899,54.785,32.65 +2020-12-08 22:30:00,104.21,139.499,54.785,32.65 +2020-12-08 22:45:00,103.55,131.433,54.785,32.65 +2020-12-08 23:00:00,100.51,125.949,47.176,32.65 +2020-12-08 23:15:00,93.05,123.975,47.176,32.65 +2020-12-08 23:30:00,89.98,124.031,47.176,32.65 +2020-12-08 23:45:00,88.91,123.681,47.176,32.65 +2020-12-09 00:00:00,91.27,117.072,43.42,32.65 +2020-12-09 00:15:00,91.07,117.11,43.42,32.65 +2020-12-09 00:30:00,87.44,118.256,43.42,32.65 +2020-12-09 00:45:00,84.26,119.85700000000001,43.42,32.65 +2020-12-09 01:00:00,86.4,121.887,40.869,32.65 +2020-12-09 01:15:00,87.29,122.62,40.869,32.65 +2020-12-09 01:30:00,87.03,123.04299999999999,40.869,32.65 +2020-12-09 01:45:00,82.74,123.751,40.869,32.65 +2020-12-09 02:00:00,80.31,125.185,39.541,32.65 +2020-12-09 02:15:00,81.19,126.69,39.541,32.65 +2020-12-09 02:30:00,86.0,126.91799999999999,39.541,32.65 +2020-12-09 02:45:00,86.44,128.79399999999998,39.541,32.65 +2020-12-09 03:00:00,85.55,131.509,39.052,32.65 +2020-12-09 03:15:00,80.17,132.123,39.052,32.65 +2020-12-09 03:30:00,84.96,134.0,39.052,32.65 +2020-12-09 03:45:00,88.74,135.02700000000002,39.052,32.65 +2020-12-09 04:00:00,90.1,147.856,40.36,32.65 +2020-12-09 04:15:00,86.33,159.96,40.36,32.65 +2020-12-09 04:30:00,85.2,162.585,40.36,32.65 +2020-12-09 04:45:00,86.88,165.207,40.36,32.65 +2020-12-09 05:00:00,93.26,200.05,43.133,32.65 +2020-12-09 05:15:00,99.1,229.263,43.133,32.65 +2020-12-09 05:30:00,104.98,224.636,43.133,32.65 +2020-12-09 05:45:00,108.07,216.644,43.133,32.65 +2020-12-09 06:00:00,110.28,212.59,54.953,32.65 +2020-12-09 06:15:00,116.51,218.035,54.953,32.65 +2020-12-09 06:30:00,119.87,220.00099999999998,54.953,32.65 +2020-12-09 06:45:00,127.56,222.575,54.953,32.65 +2020-12-09 07:00:00,130.61,221.97299999999998,66.566,32.65 +2020-12-09 07:15:00,131.47,226.91099999999997,66.566,32.65 +2020-12-09 07:30:00,133.34,229.667,66.566,32.65 +2020-12-09 07:45:00,136.34,231.06599999999997,66.566,32.65 +2020-12-09 08:00:00,138.72,229.86599999999999,72.902,32.65 +2020-12-09 08:15:00,140.05,229.984,72.902,32.65 +2020-12-09 08:30:00,140.81,228.317,72.902,32.65 +2020-12-09 08:45:00,140.14,225.637,72.902,32.65 +2020-12-09 09:00:00,141.66,219.325,68.465,32.65 +2020-12-09 09:15:00,142.55,215.872,68.465,32.65 +2020-12-09 09:30:00,144.01,213.329,68.465,32.65 +2020-12-09 09:45:00,148.03,210.588,68.465,32.65 +2020-12-09 10:00:00,148.43,206.063,63.625,32.65 +2020-12-09 10:15:00,148.69,201.92,63.625,32.65 +2020-12-09 10:30:00,147.3,199.59,63.625,32.65 +2020-12-09 10:45:00,150.11,198.201,63.625,32.65 +2020-12-09 11:00:00,165.23,197.245,61.628,32.65 +2020-12-09 11:15:00,167.64,196.24,61.628,32.65 +2020-12-09 11:30:00,171.35,195.041,61.628,32.65 +2020-12-09 11:45:00,158.93,193.50099999999998,61.628,32.65 +2020-12-09 12:00:00,150.69,187.872,58.708999999999996,32.65 +2020-12-09 12:15:00,147.05,186.891,58.708999999999996,32.65 +2020-12-09 12:30:00,147.05,186.858,58.708999999999996,32.65 +2020-12-09 12:45:00,144.87,187.774,58.708999999999996,32.65 +2020-12-09 13:00:00,143.99,187.047,57.373000000000005,32.65 +2020-12-09 13:15:00,143.5,186.655,57.373000000000005,32.65 +2020-12-09 13:30:00,140.33,186.545,57.373000000000005,32.65 +2020-12-09 13:45:00,139.48,186.498,57.373000000000005,32.65 +2020-12-09 14:00:00,139.53,185.511,57.684,32.65 +2020-12-09 14:15:00,138.98,186.005,57.684,32.65 +2020-12-09 14:30:00,138.49,186.405,57.684,32.65 +2020-12-09 14:45:00,137.14,186.267,57.684,32.65 +2020-12-09 15:00:00,135.82,187.095,58.03,32.65 +2020-12-09 15:15:00,135.39,187.666,58.03,32.65 +2020-12-09 15:30:00,138.38,189.798,58.03,32.65 +2020-12-09 15:45:00,138.54,191.613,58.03,32.65 +2020-12-09 16:00:00,139.67,192.706,59.97,32.65 +2020-12-09 16:15:00,145.31,193.799,59.97,32.65 +2020-12-09 16:30:00,147.26,196.513,59.97,32.65 +2020-12-09 16:45:00,151.24,197.75099999999998,59.97,32.65 +2020-12-09 17:00:00,169.05,200.424,65.661,32.65 +2020-12-09 17:15:00,169.17,200.75400000000002,65.661,32.65 +2020-12-09 17:30:00,170.79,201.261,65.661,32.65 +2020-12-09 17:45:00,149.97,200.899,65.661,32.65 +2020-12-09 18:00:00,141.53,201.86599999999999,70.96300000000001,32.65 +2020-12-09 18:15:00,143.4,199.97400000000002,70.96300000000001,32.65 +2020-12-09 18:30:00,142.84,198.456,70.96300000000001,32.65 +2020-12-09 18:45:00,143.61,198.19400000000002,70.96300000000001,32.65 +2020-12-09 19:00:00,142.88,199.144,74.133,32.65 +2020-12-09 19:15:00,140.01,195.545,74.133,32.65 +2020-12-09 19:30:00,138.02,193.44799999999998,74.133,32.65 +2020-12-09 19:45:00,135.99,190.014,74.133,32.65 +2020-12-09 20:00:00,129.82,186.553,65.613,32.65 +2020-12-09 20:15:00,124.78,180.71400000000003,65.613,32.65 +2020-12-09 20:30:00,122.6,177.18400000000003,65.613,32.65 +2020-12-09 20:45:00,120.04,174.5,65.613,32.65 +2020-12-09 21:00:00,116.74,172.41,58.583,32.65 +2020-12-09 21:15:00,113.73,170.396,58.583,32.65 +2020-12-09 21:30:00,111.56,168.293,58.583,32.65 +2020-12-09 21:45:00,112.32,166.574,58.583,32.65 +2020-12-09 22:00:00,111.72,159.83700000000002,54.411,32.65 +2020-12-09 22:15:00,110.88,154.179,54.411,32.65 +2020-12-09 22:30:00,104.66,139.827,54.411,32.65 +2020-12-09 22:45:00,99.54,131.77,54.411,32.65 +2020-12-09 23:00:00,93.47,126.26100000000001,47.878,32.65 +2020-12-09 23:15:00,92.23,124.285,47.878,32.65 +2020-12-09 23:30:00,90.56,124.353,47.878,32.65 +2020-12-09 23:45:00,89.81,123.98700000000001,47.878,32.65 +2020-12-10 00:00:00,92.49,117.383,44.513000000000005,32.65 +2020-12-10 00:15:00,87.7,117.391,44.513000000000005,32.65 +2020-12-10 00:30:00,90.23,118.53200000000001,44.513000000000005,32.65 +2020-12-10 00:45:00,85.04,120.113,44.513000000000005,32.65 +2020-12-10 01:00:00,82.13,122.18,43.169,32.65 +2020-12-10 01:15:00,80.96,122.911,43.169,32.65 +2020-12-10 01:30:00,85.8,123.34,43.169,32.65 +2020-12-10 01:45:00,87.1,124.03299999999999,43.169,32.65 +2020-12-10 02:00:00,87.01,125.48899999999999,41.763999999999996,32.65 +2020-12-10 02:15:00,82.06,126.995,41.763999999999996,32.65 +2020-12-10 02:30:00,85.45,127.22399999999999,41.763999999999996,32.65 +2020-12-10 02:45:00,87.43,129.1,41.763999999999996,32.65 +2020-12-10 03:00:00,87.6,131.804,41.155,32.65 +2020-12-10 03:15:00,83.72,132.446,41.155,32.65 +2020-12-10 03:30:00,87.63,134.326,41.155,32.65 +2020-12-10 03:45:00,90.33,135.352,41.155,32.65 +2020-12-10 04:00:00,91.8,148.15,41.96,32.65 +2020-12-10 04:15:00,88.57,160.25,41.96,32.65 +2020-12-10 04:30:00,87.86,162.861,41.96,32.65 +2020-12-10 04:45:00,87.24,165.486,41.96,32.65 +2020-12-10 05:00:00,94.72,200.29,45.206,32.65 +2020-12-10 05:15:00,98.25,229.452,45.206,32.65 +2020-12-10 05:30:00,98.01,224.84900000000002,45.206,32.65 +2020-12-10 05:45:00,102.63,216.87900000000002,45.206,32.65 +2020-12-10 06:00:00,109.41,212.851,55.398999999999994,32.65 +2020-12-10 06:15:00,116.05,218.298,55.398999999999994,32.65 +2020-12-10 06:30:00,120.99,220.30900000000003,55.398999999999994,32.65 +2020-12-10 06:45:00,125.66,222.928,55.398999999999994,32.65 +2020-12-10 07:00:00,129.75,222.33,64.627,32.65 +2020-12-10 07:15:00,134.39,227.273,64.627,32.65 +2020-12-10 07:30:00,136.07,230.03400000000002,64.627,32.65 +2020-12-10 07:45:00,137.41,231.43200000000002,64.627,32.65 +2020-12-10 08:00:00,138.31,230.24200000000002,70.895,32.65 +2020-12-10 08:15:00,138.27,230.352,70.895,32.65 +2020-12-10 08:30:00,139.4,228.68900000000002,70.895,32.65 +2020-12-10 08:45:00,139.75,225.979,70.895,32.65 +2020-12-10 09:00:00,140.06,219.641,66.382,32.65 +2020-12-10 09:15:00,143.71,216.195,66.382,32.65 +2020-12-10 09:30:00,145.38,213.66,66.382,32.65 +2020-12-10 09:45:00,143.55,210.907,66.382,32.65 +2020-12-10 10:00:00,144.96,206.37400000000002,62.739,32.65 +2020-12-10 10:15:00,143.67,202.21099999999998,62.739,32.65 +2020-12-10 10:30:00,142.44,199.86,62.739,32.65 +2020-12-10 10:45:00,142.02,198.46400000000003,62.739,32.65 +2020-12-10 11:00:00,140.23,197.49099999999999,60.843,32.65 +2020-12-10 11:15:00,141.63,196.47299999999998,60.843,32.65 +2020-12-10 11:30:00,140.83,195.273,60.843,32.65 +2020-12-10 11:45:00,140.68,193.729,60.843,32.65 +2020-12-10 12:00:00,140.94,188.09900000000002,58.466,32.65 +2020-12-10 12:15:00,140.46,187.13,58.466,32.65 +2020-12-10 12:30:00,138.97,187.112,58.466,32.65 +2020-12-10 12:45:00,136.01,188.033,58.466,32.65 +2020-12-10 13:00:00,137.69,187.275,56.883,32.65 +2020-12-10 13:15:00,137.48,186.88400000000001,56.883,32.65 +2020-12-10 13:30:00,132.54,186.77,56.883,32.65 +2020-12-10 13:45:00,133.09,186.713,56.883,32.65 +2020-12-10 14:00:00,135.21,185.706,56.503,32.65 +2020-12-10 14:15:00,136.53,186.206,56.503,32.65 +2020-12-10 14:30:00,137.12,186.63,56.503,32.65 +2020-12-10 14:45:00,137.05,186.502,56.503,32.65 +2020-12-10 15:00:00,137.96,187.34900000000002,57.803999999999995,32.65 +2020-12-10 15:15:00,139.18,187.918,57.803999999999995,32.65 +2020-12-10 15:30:00,136.67,190.06900000000002,57.803999999999995,32.65 +2020-12-10 15:45:00,137.64,191.88400000000001,57.803999999999995,32.65 +2020-12-10 16:00:00,138.45,192.976,59.379,32.65 +2020-12-10 16:15:00,142.96,194.09,59.379,32.65 +2020-12-10 16:30:00,146.32,196.812,59.379,32.65 +2020-12-10 16:45:00,153.38,198.078,59.379,32.65 +2020-12-10 17:00:00,168.95,200.729,64.71600000000001,32.65 +2020-12-10 17:15:00,169.75,201.08599999999998,64.71600000000001,32.65 +2020-12-10 17:30:00,169.32,201.61,64.71600000000001,32.65 +2020-12-10 17:45:00,147.93,201.25599999999997,64.71600000000001,32.65 +2020-12-10 18:00:00,141.13,202.24400000000003,68.803,32.65 +2020-12-10 18:15:00,143.26,200.32,68.803,32.65 +2020-12-10 18:30:00,143.39,198.808,68.803,32.65 +2020-12-10 18:45:00,144.16,198.555,68.803,32.65 +2020-12-10 19:00:00,142.57,199.49099999999999,72.934,32.65 +2020-12-10 19:15:00,140.71,195.882,72.934,32.65 +2020-12-10 19:30:00,137.64,193.773,72.934,32.65 +2020-12-10 19:45:00,135.04,190.31400000000002,72.934,32.65 +2020-12-10 20:00:00,132.42,186.852,65.175,32.65 +2020-12-10 20:15:00,126.79,181.005,65.175,32.65 +2020-12-10 20:30:00,122.81,177.45,65.175,32.65 +2020-12-10 20:45:00,120.88,174.785,65.175,32.65 +2020-12-10 21:00:00,117.89,172.68099999999998,58.55,32.65 +2020-12-10 21:15:00,115.42,170.65,58.55,32.65 +2020-12-10 21:30:00,118.82,168.548,58.55,32.65 +2020-12-10 21:45:00,116.05,166.838,58.55,32.65 +2020-12-10 22:00:00,113.48,160.107,55.041000000000004,32.65 +2020-12-10 22:15:00,110.17,154.452,55.041000000000004,32.65 +2020-12-10 22:30:00,99.6,140.149,55.041000000000004,32.65 +2020-12-10 22:45:00,100.62,132.09799999999998,55.041000000000004,32.65 +2020-12-10 23:00:00,94.51,126.565,48.258,32.65 +2020-12-10 23:15:00,91.88,124.586,48.258,32.65 +2020-12-10 23:30:00,89.58,124.66799999999999,48.258,32.65 +2020-12-10 23:45:00,91.27,124.288,48.258,32.65 +2020-12-11 00:00:00,91.85,116.62899999999999,45.02,32.65 +2020-12-11 00:15:00,90.83,116.805,45.02,32.65 +2020-12-11 00:30:00,85.32,117.803,45.02,32.65 +2020-12-11 00:45:00,82.24,119.473,45.02,32.65 +2020-12-11 01:00:00,79.17,121.26299999999999,42.695,32.65 +2020-12-11 01:15:00,81.0,122.91799999999999,42.695,32.65 +2020-12-11 01:30:00,77.89,123.124,42.695,32.65 +2020-12-11 01:45:00,78.18,123.911,42.695,32.65 +2020-12-11 02:00:00,81.93,125.464,41.511,32.65 +2020-12-11 02:15:00,86.0,126.85700000000001,41.511,32.65 +2020-12-11 02:30:00,86.34,127.60600000000001,41.511,32.65 +2020-12-11 02:45:00,81.69,129.531,41.511,32.65 +2020-12-11 03:00:00,81.72,131.216,41.162,32.65 +2020-12-11 03:15:00,86.02,132.842,41.162,32.65 +2020-12-11 03:30:00,88.54,134.709,41.162,32.65 +2020-12-11 03:45:00,89.73,136.055,41.162,32.65 +2020-12-11 04:00:00,84.52,149.05200000000002,42.226000000000006,32.65 +2020-12-11 04:15:00,82.83,160.917,42.226000000000006,32.65 +2020-12-11 04:30:00,84.73,163.737,42.226000000000006,32.65 +2020-12-11 04:45:00,86.99,165.222,42.226000000000006,32.65 +2020-12-11 05:00:00,89.74,198.715,45.597,32.65 +2020-12-11 05:15:00,93.03,229.33,45.597,32.65 +2020-12-11 05:30:00,96.79,225.83599999999998,45.597,32.65 +2020-12-11 05:45:00,101.33,217.828,45.597,32.65 +2020-12-11 06:00:00,110.09,214.25900000000001,56.263999999999996,32.65 +2020-12-11 06:15:00,118.24,218.227,56.263999999999996,32.65 +2020-12-11 06:30:00,122.75,219.41400000000002,56.263999999999996,32.65 +2020-12-11 06:45:00,127.63,223.713,56.263999999999996,32.65 +2020-12-11 07:00:00,132.56,222.27200000000002,66.888,32.65 +2020-12-11 07:15:00,135.59,228.239,66.888,32.65 +2020-12-11 07:30:00,138.93,230.83900000000003,66.888,32.65 +2020-12-11 07:45:00,140.11,231.35,66.888,32.65 +2020-12-11 08:00:00,140.74,229.05599999999998,73.459,32.65 +2020-12-11 08:15:00,138.35,228.766,73.459,32.65 +2020-12-11 08:30:00,138.94,228.084,73.459,32.65 +2020-12-11 08:45:00,138.68,223.765,73.459,32.65 +2020-12-11 09:00:00,138.76,217.87099999999998,69.087,32.65 +2020-12-11 09:15:00,142.43,214.997,69.087,32.65 +2020-12-11 09:30:00,145.27,212.041,69.087,32.65 +2020-12-11 09:45:00,145.82,209.167,69.087,32.65 +2020-12-11 10:00:00,146.67,203.49599999999998,65.404,32.65 +2020-12-11 10:15:00,146.04,200.011,65.404,32.65 +2020-12-11 10:30:00,146.52,197.567,65.404,32.65 +2020-12-11 10:45:00,146.39,195.722,65.404,32.65 +2020-12-11 11:00:00,144.72,194.715,63.0,32.65 +2020-12-11 11:15:00,144.28,192.791,63.0,32.65 +2020-12-11 11:30:00,145.11,193.333,63.0,32.65 +2020-12-11 11:45:00,143.67,191.829,63.0,32.65 +2020-12-11 12:00:00,143.59,187.28,59.083,32.65 +2020-12-11 12:15:00,143.45,184.239,59.083,32.65 +2020-12-11 12:30:00,142.82,184.391,59.083,32.65 +2020-12-11 12:45:00,140.7,185.827,59.083,32.65 +2020-12-11 13:00:00,139.92,185.97299999999998,56.611999999999995,32.65 +2020-12-11 13:15:00,139.16,186.396,56.611999999999995,32.65 +2020-12-11 13:30:00,136.21,186.297,56.611999999999995,32.65 +2020-12-11 13:45:00,136.82,186.169,56.611999999999995,32.65 +2020-12-11 14:00:00,134.19,184.005,55.161,32.65 +2020-12-11 14:15:00,134.68,184.335,55.161,32.65 +2020-12-11 14:30:00,134.81,185.299,55.161,32.65 +2020-12-11 14:45:00,133.75,185.48,55.161,32.65 +2020-12-11 15:00:00,133.3,185.865,55.583,32.65 +2020-12-11 15:15:00,132.89,185.993,55.583,32.65 +2020-12-11 15:30:00,133.49,186.65400000000002,55.583,32.65 +2020-12-11 15:45:00,133.98,188.61599999999999,55.583,32.65 +2020-12-11 16:00:00,135.78,188.544,57.611999999999995,32.65 +2020-12-11 16:15:00,139.22,189.968,57.611999999999995,32.65 +2020-12-11 16:30:00,141.38,192.791,57.611999999999995,32.65 +2020-12-11 16:45:00,141.75,193.968,57.611999999999995,32.65 +2020-12-11 17:00:00,142.8,196.8,64.14,32.65 +2020-12-11 17:15:00,142.37,196.774,64.14,32.65 +2020-12-11 17:30:00,142.8,196.99900000000002,64.14,32.65 +2020-12-11 17:45:00,141.37,196.421,64.14,32.65 +2020-12-11 18:00:00,139.86,198.11599999999999,68.086,32.65 +2020-12-11 18:15:00,137.98,195.77200000000002,68.086,32.65 +2020-12-11 18:30:00,137.12,194.65900000000002,68.086,32.65 +2020-12-11 18:45:00,137.09,194.41099999999997,68.086,32.65 +2020-12-11 19:00:00,135.72,196.236,69.915,32.65 +2020-12-11 19:15:00,133.39,193.97799999999998,69.915,32.65 +2020-12-11 19:30:00,131.85,191.445,69.915,32.65 +2020-12-11 19:45:00,128.74,187.503,69.915,32.65 +2020-12-11 20:00:00,123.92,184.093,61.695,32.65 +2020-12-11 20:15:00,119.13,178.245,61.695,32.65 +2020-12-11 20:30:00,116.21,174.625,61.695,32.65 +2020-12-11 20:45:00,114.15,172.53400000000002,61.695,32.65 +2020-12-11 21:00:00,114.45,170.922,56.041000000000004,32.65 +2020-12-11 21:15:00,112.95,169.31,56.041000000000004,32.65 +2020-12-11 21:30:00,111.79,167.25400000000002,56.041000000000004,32.65 +2020-12-11 21:45:00,111.52,166.093,56.041000000000004,32.65 +2020-12-11 22:00:00,100.51,160.34799999999998,51.888999999999996,32.65 +2020-12-11 22:15:00,97.98,154.564,51.888999999999996,32.65 +2020-12-11 22:30:00,92.39,146.664,51.888999999999996,32.65 +2020-12-11 22:45:00,92.97,142.139,51.888999999999996,32.65 +2020-12-11 23:00:00,94.85,136.137,45.787,32.65 +2020-12-11 23:15:00,93.72,132.213,45.787,32.65 +2020-12-11 23:30:00,88.87,130.852,45.787,32.65 +2020-12-11 23:45:00,84.74,129.795,45.787,32.65 +2020-12-12 00:00:00,84.97,114.07600000000001,41.815,32.468 +2020-12-12 00:15:00,83.87,109.97399999999999,41.815,32.468 +2020-12-12 00:30:00,79.35,112.294,41.815,32.468 +2020-12-12 00:45:00,76.4,114.661,41.815,32.468 +2020-12-12 01:00:00,78.93,117.113,38.645,32.468 +2020-12-12 01:15:00,79.22,117.779,38.645,32.468 +2020-12-12 01:30:00,74.91,117.477,38.645,32.468 +2020-12-12 01:45:00,70.19,118.03,38.645,32.468 +2020-12-12 02:00:00,69.07,120.29,36.696,32.468 +2020-12-12 02:15:00,68.62,121.31700000000001,36.696,32.468 +2020-12-12 02:30:00,76.58,120.963,36.696,32.468 +2020-12-12 02:45:00,71.16,122.986,36.696,32.468 +2020-12-12 03:00:00,72.83,125.289,35.42,32.468 +2020-12-12 03:15:00,75.73,125.73200000000001,35.42,32.468 +2020-12-12 03:30:00,75.68,126.01299999999999,35.42,32.468 +2020-12-12 03:45:00,71.18,127.463,35.42,32.468 +2020-12-12 04:00:00,69.45,136.298,35.167,32.468 +2020-12-12 04:15:00,68.25,145.624,35.167,32.468 +2020-12-12 04:30:00,69.44,146.27200000000002,35.167,32.468 +2020-12-12 04:45:00,69.89,147.263,35.167,32.468 +2020-12-12 05:00:00,71.14,164.803,35.311,32.468 +2020-12-12 05:15:00,71.23,176.438,35.311,32.468 +2020-12-12 05:30:00,71.29,173.31400000000002,35.311,32.468 +2020-12-12 05:45:00,72.91,170.747,35.311,32.468 +2020-12-12 06:00:00,74.72,185.908,37.117,32.468 +2020-12-12 06:15:00,76.39,206.178,37.117,32.468 +2020-12-12 06:30:00,78.26,202.05200000000002,37.117,32.468 +2020-12-12 06:45:00,80.93,197.43599999999998,37.117,32.468 +2020-12-12 07:00:00,84.33,192.245,40.948,32.468 +2020-12-12 07:15:00,86.73,196.97,40.948,32.468 +2020-12-12 07:30:00,90.02,202.268,40.948,32.468 +2020-12-12 07:45:00,93.49,206.74400000000003,40.948,32.468 +2020-12-12 08:00:00,95.85,208.5,44.903,32.468 +2020-12-12 08:15:00,97.55,211.82299999999998,44.903,32.468 +2020-12-12 08:30:00,99.61,212.753,44.903,32.468 +2020-12-12 08:45:00,103.07,211.549,44.903,32.468 +2020-12-12 09:00:00,104.78,207.393,46.283,32.468 +2020-12-12 09:15:00,105.94,205.275,46.283,32.468 +2020-12-12 09:30:00,106.91,203.227,46.283,32.468 +2020-12-12 09:45:00,107.66,200.5,46.283,32.468 +2020-12-12 10:00:00,108.32,195.109,44.103,32.468 +2020-12-12 10:15:00,109.17,191.769,44.103,32.468 +2020-12-12 10:30:00,109.72,189.468,44.103,32.468 +2020-12-12 10:45:00,110.26,188.91,44.103,32.468 +2020-12-12 11:00:00,111.78,188.105,42.373999999999995,32.468 +2020-12-12 11:15:00,113.31,185.49,42.373999999999995,32.468 +2020-12-12 11:30:00,113.65,184.924,42.373999999999995,32.468 +2020-12-12 11:45:00,113.32,182.46900000000002,42.373999999999995,32.468 +2020-12-12 12:00:00,111.9,177.05200000000002,39.937,32.468 +2020-12-12 12:15:00,111.01,174.662,39.937,32.468 +2020-12-12 12:30:00,108.83,175.142,39.937,32.468 +2020-12-12 12:45:00,106.63,175.82299999999998,39.937,32.468 +2020-12-12 13:00:00,103.27,175.53900000000002,37.138000000000005,32.468 +2020-12-12 13:15:00,101.79,173.928,37.138000000000005,32.468 +2020-12-12 13:30:00,101.3,173.377,37.138000000000005,32.468 +2020-12-12 13:45:00,101.1,173.704,37.138000000000005,32.468 +2020-12-12 14:00:00,100.88,172.74400000000003,36.141999999999996,32.468 +2020-12-12 14:15:00,100.41,172.542,36.141999999999996,32.468 +2020-12-12 14:30:00,100.19,171.72799999999998,36.141999999999996,32.468 +2020-12-12 14:45:00,99.5,172.138,36.141999999999996,32.468 +2020-12-12 15:00:00,98.71,173.196,37.964,32.468 +2020-12-12 15:15:00,98.98,174.12,37.964,32.468 +2020-12-12 15:30:00,99.94,176.325,37.964,32.468 +2020-12-12 15:45:00,100.8,178.297,37.964,32.468 +2020-12-12 16:00:00,104.51,177.041,40.699,32.468 +2020-12-12 16:15:00,107.74,179.368,40.699,32.468 +2020-12-12 16:30:00,108.74,182.148,40.699,32.468 +2020-12-12 16:45:00,109.29,184.231,40.699,32.468 +2020-12-12 17:00:00,110.17,186.467,46.216,32.468 +2020-12-12 17:15:00,110.88,188.104,46.216,32.468 +2020-12-12 17:30:00,111.64,188.24900000000002,46.216,32.468 +2020-12-12 17:45:00,112.51,187.28099999999998,46.216,32.468 +2020-12-12 18:00:00,112.37,188.514,51.123999999999995,32.468 +2020-12-12 18:15:00,112.02,187.929,51.123999999999995,32.468 +2020-12-12 18:30:00,111.33,188.148,51.123999999999995,32.468 +2020-12-12 18:45:00,111.02,184.58,51.123999999999995,32.468 +2020-12-12 19:00:00,110.03,187.303,52.336000000000006,32.468 +2020-12-12 19:15:00,108.32,184.541,52.336000000000006,32.468 +2020-12-12 19:30:00,107.24,182.74400000000003,52.336000000000006,32.468 +2020-12-12 19:45:00,106.61,178.607,52.336000000000006,32.468 +2020-12-12 20:00:00,102.62,177.35299999999998,48.825,32.468 +2020-12-12 20:15:00,97.95,173.604,48.825,32.468 +2020-12-12 20:30:00,96.03,169.61,48.825,32.468 +2020-12-12 20:45:00,94.62,167.145,48.825,32.468 +2020-12-12 21:00:00,92.77,167.74599999999998,43.729,32.468 +2020-12-12 21:15:00,90.0,166.553,43.729,32.468 +2020-12-12 21:30:00,87.78,165.718,43.729,32.468 +2020-12-12 21:45:00,87.21,164.16,43.729,32.468 +2020-12-12 22:00:00,86.33,159.75799999999998,44.126000000000005,32.468 +2020-12-12 22:15:00,84.41,156.444,44.126000000000005,32.468 +2020-12-12 22:30:00,82.37,154.756,44.126000000000005,32.468 +2020-12-12 22:45:00,80.33,152.092,44.126000000000005,32.468 +2020-12-12 23:00:00,76.41,148.47299999999998,38.169000000000004,32.468 +2020-12-12 23:15:00,74.99,142.928,38.169000000000004,32.468 +2020-12-12 23:30:00,72.58,139.857,38.169000000000004,32.468 +2020-12-12 23:45:00,70.05,136.382,38.169000000000004,32.468 +2020-12-13 00:00:00,67.83,114.786,35.232,32.468 +2020-12-13 00:15:00,65.77,110.337,35.232,32.468 +2020-12-13 00:30:00,64.76,112.277,35.232,32.468 +2020-12-13 00:45:00,63.83,115.316,35.232,32.468 +2020-12-13 01:00:00,62.51,117.65799999999999,31.403000000000002,32.468 +2020-12-13 01:15:00,61.48,119.354,31.403000000000002,32.468 +2020-12-13 01:30:00,61.2,119.575,31.403000000000002,32.468 +2020-12-13 01:45:00,60.78,119.804,31.403000000000002,32.468 +2020-12-13 02:00:00,59.95,121.339,30.69,32.468 +2020-12-13 02:15:00,59.57,121.521,30.69,32.468 +2020-12-13 02:30:00,59.18,122.01899999999999,30.69,32.468 +2020-12-13 02:45:00,59.27,124.5,30.69,32.468 +2020-12-13 03:00:00,59.3,127.10700000000001,29.516,32.468 +2020-12-13 03:15:00,59.76,127.05799999999999,29.516,32.468 +2020-12-13 03:30:00,60.59,128.73,29.516,32.468 +2020-12-13 03:45:00,60.29,130.10399999999998,29.516,32.468 +2020-12-13 04:00:00,59.87,138.665,29.148000000000003,32.468 +2020-12-13 04:15:00,59.82,146.981,29.148000000000003,32.468 +2020-12-13 04:30:00,60.61,147.683,29.148000000000003,32.468 +2020-12-13 04:45:00,60.83,148.946,29.148000000000003,32.468 +2020-12-13 05:00:00,61.5,162.963,28.706,32.468 +2020-12-13 05:15:00,62.25,172.148,28.706,32.468 +2020-12-13 05:30:00,63.05,168.88299999999998,28.706,32.468 +2020-12-13 05:45:00,63.76,166.579,28.706,32.468 +2020-12-13 06:00:00,64.65,181.65599999999998,28.771,32.468 +2020-12-13 06:15:00,65.56,200.222,28.771,32.468 +2020-12-13 06:30:00,65.84,195.041,28.771,32.468 +2020-12-13 06:45:00,67.8,189.417,28.771,32.468 +2020-12-13 07:00:00,69.8,186.665,31.39,32.468 +2020-12-13 07:15:00,72.1,190.542,31.39,32.468 +2020-12-13 07:30:00,74.71,194.625,31.39,32.468 +2020-12-13 07:45:00,76.75,198.34400000000002,31.39,32.468 +2020-12-13 08:00:00,78.86,201.938,34.972,32.468 +2020-12-13 08:15:00,81.37,205.171,34.972,32.468 +2020-12-13 08:30:00,82.52,207.74599999999998,34.972,32.468 +2020-12-13 08:45:00,84.69,208.512,34.972,32.468 +2020-12-13 09:00:00,85.83,203.933,36.709,32.468 +2020-12-13 09:15:00,87.39,202.365,36.709,32.468 +2020-12-13 09:30:00,88.29,200.173,36.709,32.468 +2020-12-13 09:45:00,89.37,197.327,36.709,32.468 +2020-12-13 10:00:00,91.42,194.422,35.812,32.468 +2020-12-13 10:15:00,92.02,191.58900000000003,35.812,32.468 +2020-12-13 10:30:00,93.21,189.86599999999999,35.812,32.468 +2020-12-13 10:45:00,95.56,187.44,35.812,32.468 +2020-12-13 11:00:00,97.35,187.52,36.746,32.468 +2020-12-13 11:15:00,99.58,185.02,36.746,32.468 +2020-12-13 11:30:00,99.04,183.602,36.746,32.468 +2020-12-13 11:45:00,101.44,181.74200000000002,36.746,32.468 +2020-12-13 12:00:00,102.29,175.783,35.048,32.468 +2020-12-13 12:15:00,100.68,175.27200000000002,35.048,32.468 +2020-12-13 12:30:00,97.69,174.334,35.048,32.468 +2020-12-13 12:45:00,93.5,174.06099999999998,35.048,32.468 +2020-12-13 13:00:00,93.18,173.04,29.987,32.468 +2020-12-13 13:15:00,91.25,174.38400000000001,29.987,32.468 +2020-12-13 13:30:00,90.27,173.607,29.987,32.468 +2020-12-13 13:45:00,90.93,173.293,29.987,32.468 +2020-12-13 14:00:00,91.2,172.57299999999998,27.21,32.468 +2020-12-13 14:15:00,91.53,173.56,27.21,32.468 +2020-12-13 14:30:00,92.77,173.96400000000003,27.21,32.468 +2020-12-13 14:45:00,92.68,173.96599999999998,27.21,32.468 +2020-12-13 15:00:00,92.95,173.54,27.726999999999997,32.468 +2020-12-13 15:15:00,93.32,175.192,27.726999999999997,32.468 +2020-12-13 15:30:00,93.65,177.99,27.726999999999997,32.468 +2020-12-13 15:45:00,94.82,180.645,27.726999999999997,32.468 +2020-12-13 16:00:00,97.84,181.21,32.23,32.468 +2020-12-13 16:15:00,102.34,182.666,32.23,32.468 +2020-12-13 16:30:00,104.88,185.718,32.23,32.468 +2020-12-13 16:45:00,106.38,187.96200000000002,32.23,32.468 +2020-12-13 17:00:00,108.65,190.179,42.016999999999996,32.468 +2020-12-13 17:15:00,110.19,191.53400000000002,42.016999999999996,32.468 +2020-12-13 17:30:00,112.07,191.988,42.016999999999996,32.468 +2020-12-13 17:45:00,113.2,193.269,42.016999999999996,32.468 +2020-12-13 18:00:00,112.55,193.99099999999999,49.338,32.468 +2020-12-13 18:15:00,110.56,194.68200000000002,49.338,32.468 +2020-12-13 18:30:00,110.25,192.84799999999998,49.338,32.468 +2020-12-13 18:45:00,110.1,191.11900000000003,49.338,32.468 +2020-12-13 19:00:00,108.26,193.512,52.369,32.468 +2020-12-13 19:15:00,106.2,191.321,52.369,32.468 +2020-12-13 19:30:00,105.15,189.34799999999998,52.369,32.468 +2020-12-13 19:45:00,104.42,186.611,52.369,32.468 +2020-12-13 20:00:00,108.33,185.328,50.405,32.468 +2020-12-13 20:15:00,108.05,182.543,50.405,32.468 +2020-12-13 20:30:00,103.92,179.755,50.405,32.468 +2020-12-13 20:45:00,96.6,176.112,50.405,32.468 +2020-12-13 21:00:00,98.84,174.137,46.235,32.468 +2020-12-13 21:15:00,101.2,172.30700000000002,46.235,32.468 +2020-12-13 21:30:00,100.09,171.757,46.235,32.468 +2020-12-13 21:45:00,99.54,170.34599999999998,46.235,32.468 +2020-12-13 22:00:00,91.06,164.78900000000002,46.861000000000004,32.468 +2020-12-13 22:15:00,90.94,160.716,46.861000000000004,32.468 +2020-12-13 22:30:00,85.27,155.94,46.861000000000004,32.468 +2020-12-13 22:45:00,86.11,152.435,46.861000000000004,32.468 +2020-12-13 23:00:00,87.91,146.025,41.302,32.468 +2020-12-13 23:15:00,88.21,142.32299999999998,41.302,32.468 +2020-12-13 23:30:00,84.64,140.062,41.302,32.468 +2020-12-13 23:45:00,77.19,137.455,41.302,32.468 +2020-12-14 00:00:00,73.85,119.242,37.164,32.65 +2020-12-14 00:15:00,76.66,117.71700000000001,37.164,32.65 +2020-12-14 00:30:00,78.78,119.77600000000001,37.164,32.65 +2020-12-14 00:45:00,77.4,122.26100000000001,37.164,32.65 +2020-12-14 01:00:00,68.45,124.65100000000001,34.994,32.65 +2020-12-14 01:15:00,73.71,125.82,34.994,32.65 +2020-12-14 01:30:00,75.05,126.103,34.994,32.65 +2020-12-14 01:45:00,74.17,126.43,34.994,32.65 +2020-12-14 02:00:00,71.84,127.964,34.571,32.65 +2020-12-14 02:15:00,74.01,129.599,34.571,32.65 +2020-12-14 02:30:00,74.73,130.429,34.571,32.65 +2020-12-14 02:45:00,74.65,132.29399999999998,34.571,32.65 +2020-12-14 03:00:00,70.83,136.15200000000002,33.934,32.65 +2020-12-14 03:15:00,76.74,137.769,33.934,32.65 +2020-12-14 03:30:00,78.07,139.173,33.934,32.65 +2020-12-14 03:45:00,77.08,139.999,33.934,32.65 +2020-12-14 04:00:00,73.01,152.859,34.107,32.65 +2020-12-14 04:15:00,78.81,165.28900000000002,34.107,32.65 +2020-12-14 04:30:00,80.92,168.162,34.107,32.65 +2020-12-14 04:45:00,82.24,169.58599999999998,34.107,32.65 +2020-12-14 05:00:00,82.67,199.233,39.575,32.65 +2020-12-14 05:15:00,82.48,228.407,39.575,32.65 +2020-12-14 05:30:00,87.89,225.44099999999997,39.575,32.65 +2020-12-14 05:45:00,93.59,217.542,39.575,32.65 +2020-12-14 06:00:00,104.33,214.821,56.156000000000006,32.65 +2020-12-14 06:15:00,110.84,218.653,56.156000000000006,32.65 +2020-12-14 06:30:00,116.28,221.476,56.156000000000006,32.65 +2020-12-14 06:45:00,125.61,224.635,56.156000000000006,32.65 +2020-12-14 07:00:00,128.28,224.24200000000002,67.926,32.65 +2020-12-14 07:15:00,129.58,229.359,67.926,32.65 +2020-12-14 07:30:00,133.95,232.672,67.926,32.65 +2020-12-14 07:45:00,132.49,233.838,67.926,32.65 +2020-12-14 08:00:00,136.16,232.574,72.58,32.65 +2020-12-14 08:15:00,133.51,233.67,72.58,32.65 +2020-12-14 08:30:00,136.78,232.19,72.58,32.65 +2020-12-14 08:45:00,132.47,229.61599999999999,72.58,32.65 +2020-12-14 09:00:00,134.5,224.016,66.984,32.65 +2020-12-14 09:15:00,136.6,218.998,66.984,32.65 +2020-12-14 09:30:00,141.47,215.822,66.984,32.65 +2020-12-14 09:45:00,137.79,213.25799999999998,66.984,32.65 +2020-12-14 10:00:00,135.32,209.27,63.158,32.65 +2020-12-14 10:15:00,131.67,206.097,63.158,32.65 +2020-12-14 10:30:00,131.48,203.485,63.158,32.65 +2020-12-14 10:45:00,133.72,201.791,63.158,32.65 +2020-12-14 11:00:00,129.21,199.26,61.141000000000005,32.65 +2020-12-14 11:15:00,129.73,198.532,61.141000000000005,32.65 +2020-12-14 11:30:00,131.24,198.482,61.141000000000005,32.65 +2020-12-14 11:45:00,132.76,196.21599999999998,61.141000000000005,32.65 +2020-12-14 12:00:00,129.52,191.954,57.961000000000006,32.65 +2020-12-14 12:15:00,133.74,191.457,57.961000000000006,32.65 +2020-12-14 12:30:00,133.03,190.775,57.961000000000006,32.65 +2020-12-14 12:45:00,135.84,192.012,57.961000000000006,32.65 +2020-12-14 13:00:00,131.88,191.54,56.843,32.65 +2020-12-14 13:15:00,130.95,191.511,56.843,32.65 +2020-12-14 13:30:00,128.48,190.205,56.843,32.65 +2020-12-14 13:45:00,128.95,189.919,56.843,32.65 +2020-12-14 14:00:00,123.91,188.565,55.992,32.65 +2020-12-14 14:15:00,124.92,188.925,55.992,32.65 +2020-12-14 14:30:00,124.35,188.81599999999997,55.992,32.65 +2020-12-14 14:45:00,126.22,188.80700000000002,55.992,32.65 +2020-12-14 15:00:00,127.2,190.158,57.523,32.65 +2020-12-14 15:15:00,128.82,190.382,57.523,32.65 +2020-12-14 15:30:00,126.77,192.38400000000001,57.523,32.65 +2020-12-14 15:45:00,128.99,194.595,57.523,32.65 +2020-12-14 16:00:00,133.74,195.34400000000002,59.471000000000004,32.65 +2020-12-14 16:15:00,135.18,196.06599999999997,59.471000000000004,32.65 +2020-12-14 16:30:00,136.84,198.168,59.471000000000004,32.65 +2020-12-14 16:45:00,137.31,199.264,59.471000000000004,32.65 +2020-12-14 17:00:00,139.82,201.285,65.066,32.65 +2020-12-14 17:15:00,139.13,201.725,65.066,32.65 +2020-12-14 17:30:00,139.59,201.65200000000002,65.066,32.65 +2020-12-14 17:45:00,139.83,201.465,65.066,32.65 +2020-12-14 18:00:00,137.48,202.62900000000002,69.581,32.65 +2020-12-14 18:15:00,135.23,201.102,69.581,32.65 +2020-12-14 18:30:00,134.3,199.922,69.581,32.65 +2020-12-14 18:45:00,134.53,198.91299999999998,69.581,32.65 +2020-12-14 19:00:00,132.27,199.696,73.771,32.65 +2020-12-14 19:15:00,137.65,196.335,73.771,32.65 +2020-12-14 19:30:00,137.55,194.843,73.771,32.65 +2020-12-14 19:45:00,136.21,191.26,73.771,32.65 +2020-12-14 20:00:00,121.11,187.632,65.035,32.65 +2020-12-14 20:15:00,117.82,182.38099999999997,65.035,32.65 +2020-12-14 20:30:00,115.14,177.72400000000002,65.035,32.65 +2020-12-14 20:45:00,115.32,175.71200000000002,65.035,32.65 +2020-12-14 21:00:00,109.37,174.25,58.7,32.65 +2020-12-14 21:15:00,108.96,171.238,58.7,32.65 +2020-12-14 21:30:00,104.73,169.86900000000003,58.7,32.65 +2020-12-14 21:45:00,104.04,167.965,58.7,32.65 +2020-12-14 22:00:00,99.84,159.553,53.888000000000005,32.65 +2020-12-14 22:15:00,96.41,154.173,53.888000000000005,32.65 +2020-12-14 22:30:00,96.15,139.96200000000002,53.888000000000005,32.65 +2020-12-14 22:45:00,97.48,131.666,53.888000000000005,32.65 +2020-12-14 23:00:00,92.99,126.00399999999999,45.501999999999995,32.65 +2020-12-14 23:15:00,90.86,124.936,45.501999999999995,32.65 +2020-12-14 23:30:00,86.06,125.43,45.501999999999995,32.65 +2020-12-14 23:45:00,88.58,125.434,45.501999999999995,32.65 +2020-12-15 00:00:00,83.52,115.656,43.537,32.65 +2020-12-15 00:15:00,83.19,115.315,43.537,32.65 +2020-12-15 00:30:00,81.66,116.205,43.537,32.65 +2020-12-15 00:45:00,84.41,117.449,43.537,32.65 +2020-12-15 01:00:00,80.92,119.626,41.854,32.65 +2020-12-15 01:15:00,78.66,120.473,41.854,32.65 +2020-12-15 01:30:00,78.58,120.975,41.854,32.65 +2020-12-15 01:45:00,80.79,121.521,41.854,32.65 +2020-12-15 02:00:00,78.33,123.03200000000001,40.321,32.65 +2020-12-15 02:15:00,79.13,124.414,40.321,32.65 +2020-12-15 02:30:00,79.46,124.492,40.321,32.65 +2020-12-15 02:45:00,81.65,126.29299999999999,40.321,32.65 +2020-12-15 03:00:00,80.09,128.789,39.632,32.65 +2020-12-15 03:15:00,79.26,129.722,39.632,32.65 +2020-12-15 03:30:00,80.46,131.651,39.632,32.65 +2020-12-15 03:45:00,82.17,132.52100000000002,39.632,32.65 +2020-12-15 04:00:00,82.38,145.236,40.183,32.65 +2020-12-15 04:15:00,81.57,157.416,40.183,32.65 +2020-12-15 04:30:00,85.91,159.6,40.183,32.65 +2020-12-15 04:45:00,85.18,162.086,40.183,32.65 +2020-12-15 05:00:00,85.38,196.30599999999998,43.945,32.65 +2020-12-15 05:15:00,84.75,225.167,43.945,32.65 +2020-12-15 05:30:00,94.66,220.77900000000002,43.945,32.65 +2020-12-15 05:45:00,104.6,212.74599999999998,43.945,32.65 +2020-12-15 06:00:00,114.07,208.825,56.048,32.65 +2020-12-15 06:15:00,115.06,214.197,56.048,32.65 +2020-12-15 06:30:00,115.45,216.41,56.048,32.65 +2020-12-15 06:45:00,118.13,219.02599999999998,56.048,32.65 +2020-12-15 07:00:00,127.23,218.861,65.74,32.65 +2020-12-15 07:15:00,130.09,223.575,65.74,32.65 +2020-12-15 07:30:00,130.79,226.06599999999997,65.74,32.65 +2020-12-15 07:45:00,134.25,227.21,65.74,32.65 +2020-12-15 08:00:00,137.81,226.11599999999999,72.757,32.65 +2020-12-15 08:15:00,135.91,225.97099999999998,72.757,32.65 +2020-12-15 08:30:00,136.55,224.303,72.757,32.65 +2020-12-15 08:45:00,137.31,221.18200000000002,72.757,32.65 +2020-12-15 09:00:00,136.97,214.54,67.692,32.65 +2020-12-15 09:15:00,141.95,211.025,67.692,32.65 +2020-12-15 09:30:00,142.11,208.47,67.692,32.65 +2020-12-15 09:45:00,142.8,205.74200000000002,67.692,32.65 +2020-12-15 10:00:00,141.36,201.498,63.506,32.65 +2020-12-15 10:15:00,141.94,197.08599999999998,63.506,32.65 +2020-12-15 10:30:00,141.49,194.91400000000002,63.506,32.65 +2020-12-15 10:45:00,143.1,193.605,63.506,32.65 +2020-12-15 11:00:00,141.22,192.74099999999999,60.758,32.65 +2020-12-15 11:15:00,142.97,191.713,60.758,32.65 +2020-12-15 11:30:00,142.93,190.668,60.758,32.65 +2020-12-15 11:45:00,141.87,189.172,60.758,32.65 +2020-12-15 12:00:00,141.11,183.533,57.519,32.65 +2020-12-15 12:15:00,141.16,182.61700000000002,57.519,32.65 +2020-12-15 12:30:00,140.9,182.8,57.519,32.65 +2020-12-15 12:45:00,138.4,183.675,57.519,32.65 +2020-12-15 13:00:00,133.81,182.6,56.46,32.65 +2020-12-15 13:15:00,131.95,182.195,56.46,32.65 +2020-12-15 13:30:00,129.26,181.915,56.46,32.65 +2020-12-15 13:45:00,129.67,181.796,56.46,32.65 +2020-12-15 14:00:00,123.7,180.81599999999997,56.207,32.65 +2020-12-15 14:15:00,124.77,181.243,56.207,32.65 +2020-12-15 14:30:00,124.87,181.71400000000003,56.207,32.65 +2020-12-15 14:45:00,125.31,181.653,56.207,32.65 +2020-12-15 15:00:00,127.76,182.535,57.391999999999996,32.65 +2020-12-15 15:15:00,126.63,183.02599999999998,57.391999999999996,32.65 +2020-12-15 15:30:00,126.46,185.03799999999998,57.391999999999996,32.65 +2020-12-15 15:45:00,128.96,186.55,57.391999999999996,32.65 +2020-12-15 16:00:00,131.98,188.59799999999998,59.955,32.65 +2020-12-15 16:15:00,135.15,189.975,59.955,32.65 +2020-12-15 16:30:00,137.94,192.37400000000002,59.955,32.65 +2020-12-15 16:45:00,139.15,193.635,59.955,32.65 +2020-12-15 17:00:00,141.27,196.472,67.063,32.65 +2020-12-15 17:15:00,141.7,197.14700000000002,67.063,32.65 +2020-12-15 17:30:00,143.06,197.852,67.063,32.65 +2020-12-15 17:45:00,142.57,197.611,67.063,32.65 +2020-12-15 18:00:00,140.73,198.834,71.477,32.65 +2020-12-15 18:15:00,139.06,197.072,71.477,32.65 +2020-12-15 18:30:00,137.45,195.517,71.477,32.65 +2020-12-15 18:45:00,137.98,195.32299999999998,71.477,32.65 +2020-12-15 19:00:00,135.69,196.59099999999998,74.32,32.65 +2020-12-15 19:15:00,134.51,193.03599999999997,74.32,32.65 +2020-12-15 19:30:00,132.57,191.079,74.32,32.65 +2020-12-15 19:45:00,131.33,187.28799999999998,74.32,32.65 +2020-12-15 20:00:00,123.93,183.83700000000002,66.157,32.65 +2020-12-15 20:15:00,121.36,178.165,66.157,32.65 +2020-12-15 20:30:00,114.46,174.50599999999997,66.157,32.65 +2020-12-15 20:45:00,115.6,171.75400000000002,66.157,32.65 +2020-12-15 21:00:00,115.82,169.782,59.806000000000004,32.65 +2020-12-15 21:15:00,114.44,167.699,59.806000000000004,32.65 +2020-12-15 21:30:00,113.31,165.55900000000003,59.806000000000004,32.65 +2020-12-15 21:45:00,103.61,163.97,59.806000000000004,32.65 +2020-12-15 22:00:00,102.01,157.408,54.785,32.65 +2020-12-15 22:15:00,98.37,151.947,54.785,32.65 +2020-12-15 22:30:00,92.73,137.92,54.785,32.65 +2020-12-15 22:45:00,94.84,130.05100000000002,54.785,32.65 +2020-12-15 23:00:00,93.0,124.61200000000001,47.176,32.65 +2020-12-15 23:15:00,94.63,122.538,47.176,32.65 +2020-12-15 23:30:00,87.81,122.829,47.176,32.65 +2020-12-15 23:45:00,85.28,122.35,47.176,32.65 +2020-12-16 00:00:00,80.62,115.92399999999999,43.42,32.65 +2020-12-16 00:15:00,83.74,115.554,43.42,32.65 +2020-12-16 00:30:00,81.51,116.43799999999999,43.42,32.65 +2020-12-16 00:45:00,80.18,117.663,43.42,32.65 +2020-12-16 01:00:00,69.83,119.867,40.869,32.65 +2020-12-16 01:15:00,80.0,120.713,40.869,32.65 +2020-12-16 01:30:00,80.76,121.22,40.869,32.65 +2020-12-16 01:45:00,80.19,121.75399999999999,40.869,32.65 +2020-12-16 02:00:00,74.32,123.281,39.541,32.65 +2020-12-16 02:15:00,78.32,124.664,39.541,32.65 +2020-12-16 02:30:00,77.27,124.74799999999999,39.541,32.65 +2020-12-16 02:45:00,80.86,126.546,39.541,32.65 +2020-12-16 03:00:00,75.94,129.032,39.052,32.65 +2020-12-16 03:15:00,79.31,129.991,39.052,32.65 +2020-12-16 03:30:00,79.64,131.922,39.052,32.65 +2020-12-16 03:45:00,82.22,132.792,39.052,32.65 +2020-12-16 04:00:00,79.05,145.48,40.36,32.65 +2020-12-16 04:15:00,81.08,157.658,40.36,32.65 +2020-12-16 04:30:00,85.18,159.833,40.36,32.65 +2020-12-16 04:45:00,82.1,162.319,40.36,32.65 +2020-12-16 05:00:00,83.77,196.507,43.133,32.65 +2020-12-16 05:15:00,87.36,225.327,43.133,32.65 +2020-12-16 05:30:00,91.05,220.956,43.133,32.65 +2020-12-16 05:45:00,95.36,212.94299999999998,43.133,32.65 +2020-12-16 06:00:00,105.17,209.046,54.953,32.65 +2020-12-16 06:15:00,108.16,214.421,54.953,32.65 +2020-12-16 06:30:00,114.63,216.671,54.953,32.65 +2020-12-16 06:45:00,117.72,219.325,54.953,32.65 +2020-12-16 07:00:00,127.82,219.166,66.566,32.65 +2020-12-16 07:15:00,130.45,223.882,66.566,32.65 +2020-12-16 07:30:00,131.15,226.372,66.566,32.65 +2020-12-16 07:45:00,132.85,227.511,66.566,32.65 +2020-12-16 08:00:00,137.7,226.423,72.902,32.65 +2020-12-16 08:15:00,135.94,226.269,72.902,32.65 +2020-12-16 08:30:00,136.44,224.597,72.902,32.65 +2020-12-16 08:45:00,137.62,221.44799999999998,72.902,32.65 +2020-12-16 09:00:00,137.95,214.785,68.465,32.65 +2020-12-16 09:15:00,139.43,211.27599999999998,68.465,32.65 +2020-12-16 09:30:00,140.51,208.729,68.465,32.65 +2020-12-16 09:45:00,139.57,205.99,68.465,32.65 +2020-12-16 10:00:00,137.58,201.74,63.625,32.65 +2020-12-16 10:15:00,137.97,197.31400000000002,63.625,32.65 +2020-12-16 10:30:00,140.2,195.123,63.625,32.65 +2020-12-16 10:45:00,138.04,193.81,63.625,32.65 +2020-12-16 11:00:00,138.03,192.929,61.628,32.65 +2020-12-16 11:15:00,136.32,191.89,61.628,32.65 +2020-12-16 11:30:00,136.53,190.845,61.628,32.65 +2020-12-16 11:45:00,136.0,189.34599999999998,61.628,32.65 +2020-12-16 12:00:00,135.94,183.708,58.708999999999996,32.65 +2020-12-16 12:15:00,135.61,182.80599999999998,58.708999999999996,32.65 +2020-12-16 12:30:00,133.9,182.998,58.708999999999996,32.65 +2020-12-16 12:45:00,135.77,183.877,58.708999999999996,32.65 +2020-12-16 13:00:00,133.66,182.77900000000002,57.373000000000005,32.65 +2020-12-16 13:15:00,133.97,182.372,57.373000000000005,32.65 +2020-12-16 13:30:00,134.94,182.085,57.373000000000005,32.65 +2020-12-16 13:45:00,130.4,181.957,57.373000000000005,32.65 +2020-12-16 14:00:00,129.27,180.96599999999998,57.684,32.65 +2020-12-16 14:15:00,131.13,181.395,57.684,32.65 +2020-12-16 14:30:00,131.55,181.887,57.684,32.65 +2020-12-16 14:45:00,131.65,181.83599999999998,57.684,32.65 +2020-12-16 15:00:00,133.62,182.735,58.03,32.65 +2020-12-16 15:15:00,133.02,183.22,58.03,32.65 +2020-12-16 15:30:00,131.8,185.247,58.03,32.65 +2020-12-16 15:45:00,133.43,186.75799999999998,58.03,32.65 +2020-12-16 16:00:00,137.44,188.804,59.97,32.65 +2020-12-16 16:15:00,138.97,190.2,59.97,32.65 +2020-12-16 16:30:00,140.77,192.604,59.97,32.65 +2020-12-16 16:45:00,140.66,193.891,59.97,32.65 +2020-12-16 17:00:00,143.13,196.707,65.661,32.65 +2020-12-16 17:15:00,142.28,197.408,65.661,32.65 +2020-12-16 17:30:00,143.12,198.132,65.661,32.65 +2020-12-16 17:45:00,142.9,197.90200000000002,65.661,32.65 +2020-12-16 18:00:00,139.93,199.144,70.96300000000001,32.65 +2020-12-16 18:15:00,139.4,197.36,70.96300000000001,32.65 +2020-12-16 18:30:00,138.28,195.812,70.96300000000001,32.65 +2020-12-16 18:45:00,137.34,195.62900000000002,70.96300000000001,32.65 +2020-12-16 19:00:00,135.22,196.88,74.133,32.65 +2020-12-16 19:15:00,133.45,193.31799999999998,74.133,32.65 +2020-12-16 19:30:00,130.36,191.351,74.133,32.65 +2020-12-16 19:45:00,130.37,187.542,74.133,32.65 +2020-12-16 20:00:00,125.93,184.088,65.613,32.65 +2020-12-16 20:15:00,119.64,178.40900000000002,65.613,32.65 +2020-12-16 20:30:00,118.92,174.72799999999998,65.613,32.65 +2020-12-16 20:45:00,115.48,171.995,65.613,32.65 +2020-12-16 21:00:00,115.75,170.007,58.583,32.65 +2020-12-16 21:15:00,117.64,167.907,58.583,32.65 +2020-12-16 21:30:00,113.57,165.769,58.583,32.65 +2020-12-16 21:45:00,107.19,164.188,58.583,32.65 +2020-12-16 22:00:00,102.1,157.631,54.411,32.65 +2020-12-16 22:15:00,102.82,152.17600000000002,54.411,32.65 +2020-12-16 22:30:00,100.28,138.189,54.411,32.65 +2020-12-16 22:45:00,101.94,130.327,54.411,32.65 +2020-12-16 23:00:00,95.99,124.867,47.878,32.65 +2020-12-16 23:15:00,90.51,122.79,47.878,32.65 +2020-12-16 23:30:00,87.38,123.094,47.878,32.65 +2020-12-16 23:45:00,89.89,122.604,47.878,32.65 +2020-12-17 00:00:00,84.21,116.184,44.513000000000005,32.65 +2020-12-17 00:15:00,85.18,115.789,44.513000000000005,32.65 +2020-12-17 00:30:00,74.91,116.663,44.513000000000005,32.65 +2020-12-17 00:45:00,77.85,117.87100000000001,44.513000000000005,32.65 +2020-12-17 01:00:00,72.93,120.101,43.169,32.65 +2020-12-17 01:15:00,73.81,120.945,43.169,32.65 +2020-12-17 01:30:00,79.24,121.45700000000001,43.169,32.65 +2020-12-17 01:45:00,81.74,121.978,43.169,32.65 +2020-12-17 02:00:00,79.9,123.524,41.763999999999996,32.65 +2020-12-17 02:15:00,75.28,124.90799999999999,41.763999999999996,32.65 +2020-12-17 02:30:00,79.95,124.994,41.763999999999996,32.65 +2020-12-17 02:45:00,81.25,126.792,41.763999999999996,32.65 +2020-12-17 03:00:00,79.07,129.269,41.155,32.65 +2020-12-17 03:15:00,76.1,130.252,41.155,32.65 +2020-12-17 03:30:00,80.42,132.184,41.155,32.65 +2020-12-17 03:45:00,81.44,133.056,41.155,32.65 +2020-12-17 04:00:00,76.27,145.717,41.96,32.65 +2020-12-17 04:15:00,77.05,157.893,41.96,32.65 +2020-12-17 04:30:00,82.44,160.058,41.96,32.65 +2020-12-17 04:45:00,82.35,162.546,41.96,32.65 +2020-12-17 05:00:00,84.79,196.699,45.206,32.65 +2020-12-17 05:15:00,87.77,225.481,45.206,32.65 +2020-12-17 05:30:00,92.75,221.127,45.206,32.65 +2020-12-17 05:45:00,94.22,213.13099999999997,45.206,32.65 +2020-12-17 06:00:00,101.61,209.25799999999998,55.398999999999994,32.65 +2020-12-17 06:15:00,107.73,214.637,55.398999999999994,32.65 +2020-12-17 06:30:00,111.51,216.922,55.398999999999994,32.65 +2020-12-17 06:45:00,116.77,219.614,55.398999999999994,32.65 +2020-12-17 07:00:00,125.56,219.46200000000002,64.627,32.65 +2020-12-17 07:15:00,127.94,224.178,64.627,32.65 +2020-12-17 07:30:00,129.03,226.668,64.627,32.65 +2020-12-17 07:45:00,130.58,227.801,64.627,32.65 +2020-12-17 08:00:00,131.85,226.71900000000002,70.895,32.65 +2020-12-17 08:15:00,132.24,226.554,70.895,32.65 +2020-12-17 08:30:00,132.44,224.88,70.895,32.65 +2020-12-17 08:45:00,131.91,221.704,70.895,32.65 +2020-12-17 09:00:00,135.0,215.017,66.382,32.65 +2020-12-17 09:15:00,133.95,211.517,66.382,32.65 +2020-12-17 09:30:00,134.58,208.97799999999998,66.382,32.65 +2020-12-17 09:45:00,134.76,206.22799999999998,66.382,32.65 +2020-12-17 10:00:00,134.7,201.97299999999998,62.739,32.65 +2020-12-17 10:15:00,134.75,197.532,62.739,32.65 +2020-12-17 10:30:00,131.89,195.32299999999998,62.739,32.65 +2020-12-17 10:45:00,131.47,194.005,62.739,32.65 +2020-12-17 11:00:00,130.35,193.108,60.843,32.65 +2020-12-17 11:15:00,130.67,192.05900000000003,60.843,32.65 +2020-12-17 11:30:00,128.97,191.014,60.843,32.65 +2020-12-17 11:45:00,127.33,189.512,60.843,32.65 +2020-12-17 12:00:00,121.37,183.87400000000002,58.466,32.65 +2020-12-17 12:15:00,126.04,182.985,58.466,32.65 +2020-12-17 12:30:00,128.2,183.188,58.466,32.65 +2020-12-17 12:45:00,130.0,184.072,58.466,32.65 +2020-12-17 13:00:00,126.85,182.94799999999998,56.883,32.65 +2020-12-17 13:15:00,126.09,182.54,56.883,32.65 +2020-12-17 13:30:00,125.29,182.247,56.883,32.65 +2020-12-17 13:45:00,126.95,182.11,56.883,32.65 +2020-12-17 14:00:00,126.35,181.108,56.503,32.65 +2020-12-17 14:15:00,127.72,181.54,56.503,32.65 +2020-12-17 14:30:00,124.54,182.05200000000002,56.503,32.65 +2020-12-17 14:45:00,123.37,182.012,56.503,32.65 +2020-12-17 15:00:00,124.4,182.928,57.803999999999995,32.65 +2020-12-17 15:15:00,125.58,183.40599999999998,57.803999999999995,32.65 +2020-12-17 15:30:00,125.0,185.44799999999998,57.803999999999995,32.65 +2020-12-17 15:45:00,124.76,186.956,57.803999999999995,32.65 +2020-12-17 16:00:00,128.21,189.00099999999998,59.379,32.65 +2020-12-17 16:15:00,129.34,190.415,59.379,32.65 +2020-12-17 16:30:00,129.97,192.825,59.379,32.65 +2020-12-17 16:45:00,130.22,194.135,59.379,32.65 +2020-12-17 17:00:00,132.3,196.93099999999998,64.71600000000001,32.65 +2020-12-17 17:15:00,132.66,197.66,64.71600000000001,32.65 +2020-12-17 17:30:00,133.9,198.40200000000002,64.71600000000001,32.65 +2020-12-17 17:45:00,133.14,198.18400000000003,64.71600000000001,32.65 +2020-12-17 18:00:00,130.47,199.445,68.803,32.65 +2020-12-17 18:15:00,129.63,197.641,68.803,32.65 +2020-12-17 18:30:00,128.9,196.09799999999998,68.803,32.65 +2020-12-17 18:45:00,128.16,195.926,68.803,32.65 +2020-12-17 19:00:00,126.35,197.15900000000002,72.934,32.65 +2020-12-17 19:15:00,123.77,193.59099999999998,72.934,32.65 +2020-12-17 19:30:00,122.92,191.61599999999999,72.934,32.65 +2020-12-17 19:45:00,121.49,187.78799999999998,72.934,32.65 +2020-12-17 20:00:00,114.67,184.33,65.175,32.65 +2020-12-17 20:15:00,109.95,178.645,65.175,32.65 +2020-12-17 20:30:00,106.37,174.94400000000002,65.175,32.65 +2020-12-17 20:45:00,104.71,172.22799999999998,65.175,32.65 +2020-12-17 21:00:00,100.41,170.226,58.55,32.65 +2020-12-17 21:15:00,99.67,168.11,58.55,32.65 +2020-12-17 21:30:00,97.77,165.972,58.55,32.65 +2020-12-17 21:45:00,96.78,164.40099999999998,58.55,32.65 +2020-12-17 22:00:00,90.43,157.846,55.041000000000004,32.65 +2020-12-17 22:15:00,88.71,152.398,55.041000000000004,32.65 +2020-12-17 22:30:00,84.97,138.44899999999998,55.041000000000004,32.65 +2020-12-17 22:45:00,82.32,130.597,55.041000000000004,32.65 +2020-12-17 23:00:00,77.33,125.113,48.258,32.65 +2020-12-17 23:15:00,78.58,123.036,48.258,32.65 +2020-12-17 23:30:00,74.54,123.352,48.258,32.65 +2020-12-17 23:45:00,74.17,122.852,48.258,32.65 +2020-12-18 00:00:00,69.93,115.34700000000001,45.02,32.65 +2020-12-18 00:15:00,68.18,115.12299999999999,45.02,32.65 +2020-12-18 00:30:00,67.68,115.87,45.02,32.65 +2020-12-18 00:45:00,67.22,117.18,45.02,32.65 +2020-12-18 01:00:00,62.8,119.12299999999999,42.695,32.65 +2020-12-18 01:15:00,62.98,120.82700000000001,42.695,32.65 +2020-12-18 01:30:00,62.72,121.15299999999999,42.695,32.65 +2020-12-18 01:45:00,63.95,121.755,42.695,32.65 +2020-12-18 02:00:00,61.06,123.43,41.511,32.65 +2020-12-18 02:15:00,62.5,124.70299999999999,41.511,32.65 +2020-12-18 02:30:00,62.92,125.325,41.511,32.65 +2020-12-18 02:45:00,63.6,127.141,41.511,32.65 +2020-12-18 03:00:00,61.83,128.67600000000002,41.162,32.65 +2020-12-18 03:15:00,62.77,130.548,41.162,32.65 +2020-12-18 03:30:00,63.63,132.457,41.162,32.65 +2020-12-18 03:45:00,64.24,133.673,41.162,32.65 +2020-12-18 04:00:00,64.94,146.534,42.226000000000006,32.65 +2020-12-18 04:15:00,66.41,158.416,42.226000000000006,32.65 +2020-12-18 04:30:00,68.08,160.825,42.226000000000006,32.65 +2020-12-18 04:45:00,70.29,162.19299999999998,42.226000000000006,32.65 +2020-12-18 05:00:00,72.72,195.077,45.597,32.65 +2020-12-18 05:15:00,74.61,225.30200000000002,45.597,32.65 +2020-12-18 05:30:00,78.87,222.00799999999998,45.597,32.65 +2020-12-18 05:45:00,83.71,213.953,45.597,32.65 +2020-12-18 06:00:00,92.43,210.528,56.263999999999996,32.65 +2020-12-18 06:15:00,96.81,214.503,56.263999999999996,32.65 +2020-12-18 06:30:00,100.32,215.99,56.263999999999996,32.65 +2020-12-18 06:45:00,104.38,220.27700000000002,56.263999999999996,32.65 +2020-12-18 07:00:00,110.53,219.352,66.888,32.65 +2020-12-18 07:15:00,113.01,225.084,66.888,32.65 +2020-12-18 07:30:00,116.17,227.328,66.888,32.65 +2020-12-18 07:45:00,119.09,227.59599999999998,66.888,32.65 +2020-12-18 08:00:00,121.73,225.487,73.459,32.65 +2020-12-18 08:15:00,120.52,224.96400000000003,73.459,32.65 +2020-12-18 08:30:00,121.35,224.218,73.459,32.65 +2020-12-18 08:45:00,122.72,219.497,73.459,32.65 +2020-12-18 09:00:00,124.32,213.14,69.087,32.65 +2020-12-18 09:15:00,125.38,210.268,69.087,32.65 +2020-12-18 09:30:00,126.56,207.3,69.087,32.65 +2020-12-18 09:45:00,126.98,204.45,69.087,32.65 +2020-12-18 10:00:00,127.19,199.09799999999998,65.404,32.65 +2020-12-18 10:15:00,126.67,195.303,65.404,32.65 +2020-12-18 10:30:00,127.1,193.03099999999998,65.404,32.65 +2020-12-18 10:45:00,125.45,191.282,65.404,32.65 +2020-12-18 11:00:00,123.87,190.359,63.0,32.65 +2020-12-18 11:15:00,125.98,188.398,63.0,32.65 +2020-12-18 11:30:00,126.3,189.011,63.0,32.65 +2020-12-18 11:45:00,124.8,187.51,63.0,32.65 +2020-12-18 12:00:00,123.25,182.92700000000002,59.083,32.65 +2020-12-18 12:15:00,123.46,180.024,59.083,32.65 +2020-12-18 12:30:00,122.58,180.393,59.083,32.65 +2020-12-18 12:45:00,124.82,181.736,59.083,32.65 +2020-12-18 13:00:00,120.54,181.50900000000001,56.611999999999995,32.65 +2020-12-18 13:15:00,119.45,181.887,56.611999999999995,32.65 +2020-12-18 13:30:00,117.01,181.64,56.611999999999995,32.65 +2020-12-18 13:45:00,115.3,181.44799999999998,56.611999999999995,32.65 +2020-12-18 14:00:00,111.85,179.312,55.161,32.65 +2020-12-18 14:15:00,111.13,179.59599999999998,55.161,32.65 +2020-12-18 14:30:00,110.97,180.68599999999998,55.161,32.65 +2020-12-18 14:45:00,110.48,180.91400000000002,55.161,32.65 +2020-12-18 15:00:00,111.97,181.382,55.583,32.65 +2020-12-18 15:15:00,109.45,181.424,55.583,32.65 +2020-12-18 15:30:00,108.82,182.00400000000002,55.583,32.65 +2020-12-18 15:45:00,110.05,183.68400000000003,55.583,32.65 +2020-12-18 16:00:00,114.02,184.56900000000002,57.611999999999995,32.65 +2020-12-18 16:15:00,116.24,186.3,57.611999999999995,32.65 +2020-12-18 16:30:00,116.88,188.799,57.611999999999995,32.65 +2020-12-18 16:45:00,117.32,189.99,57.611999999999995,32.65 +2020-12-18 17:00:00,119.59,193.02,64.14,32.65 +2020-12-18 17:15:00,117.88,193.373,64.14,32.65 +2020-12-18 17:30:00,118.76,193.835,64.14,32.65 +2020-12-18 17:45:00,117.85,193.396,64.14,32.65 +2020-12-18 18:00:00,116.42,195.33700000000002,68.086,32.65 +2020-12-18 18:15:00,115.7,193.104,68.086,32.65 +2020-12-18 18:30:00,115.31,191.945,68.086,32.65 +2020-12-18 18:45:00,114.72,191.793,68.086,32.65 +2020-12-18 19:00:00,112.86,193.90900000000002,69.915,32.65 +2020-12-18 19:15:00,110.63,191.672,69.915,32.65 +2020-12-18 19:30:00,107.94,189.292,69.915,32.65 +2020-12-18 19:45:00,106.94,184.96900000000002,69.915,32.65 +2020-12-18 20:00:00,101.64,181.555,61.695,32.65 +2020-12-18 20:15:00,99.78,175.899,61.695,32.65 +2020-12-18 20:30:00,94.34,172.12099999999998,61.695,32.65 +2020-12-18 20:45:00,92.41,169.93200000000002,61.695,32.65 +2020-12-18 21:00:00,88.08,168.44799999999998,56.041000000000004,32.65 +2020-12-18 21:15:00,86.79,166.792,56.041000000000004,32.65 +2020-12-18 21:30:00,85.7,164.696,56.041000000000004,32.65 +2020-12-18 21:45:00,83.61,163.665,56.041000000000004,32.65 +2020-12-18 22:00:00,79.01,158.058,51.888999999999996,32.65 +2020-12-18 22:15:00,77.65,152.47799999999998,51.888999999999996,32.65 +2020-12-18 22:30:00,75.96,144.877,51.888999999999996,32.65 +2020-12-18 22:45:00,74.55,140.467,51.888999999999996,32.65 +2020-12-18 23:00:00,68.49,134.586,45.787,32.65 +2020-12-18 23:15:00,67.5,130.575,45.787,32.65 +2020-12-18 23:30:00,65.03,129.435,45.787,32.65 +2020-12-18 23:45:00,63.68,128.28,45.787,32.65 +2020-12-19 00:00:00,58.59,112.90299999999999,41.815,32.468 +2020-12-19 00:15:00,56.86,108.542,41.815,32.468 +2020-12-19 00:30:00,56.32,110.538,41.815,32.468 +2020-12-19 00:45:00,55.88,112.488,41.815,32.468 +2020-12-19 01:00:00,53.45,115.075,38.645,32.468 +2020-12-19 01:15:00,53.4,115.85600000000001,38.645,32.468 +2020-12-19 01:30:00,53.25,115.65799999999999,38.645,32.468 +2020-12-19 01:45:00,53.53,116.088,38.645,32.468 +2020-12-19 02:00:00,51.2,118.405,36.696,32.468 +2020-12-19 02:15:00,51.19,119.29299999999999,36.696,32.468 +2020-12-19 02:30:00,51.56,118.825,36.696,32.468 +2020-12-19 02:45:00,51.39,120.76700000000001,36.696,32.468 +2020-12-19 03:00:00,49.17,122.844,35.42,32.468 +2020-12-19 03:15:00,49.88,123.54899999999999,35.42,32.468 +2020-12-19 03:30:00,50.39,123.95100000000001,35.42,32.468 +2020-12-19 03:45:00,50.38,125.331,35.42,32.468 +2020-12-19 04:00:00,50.5,134.138,35.167,32.468 +2020-12-19 04:15:00,51.79,143.55200000000002,35.167,32.468 +2020-12-19 04:30:00,52.07,143.812,35.167,32.468 +2020-12-19 04:45:00,52.89,144.718,35.167,32.468 +2020-12-19 05:00:00,55.09,161.997,35.311,32.468 +2020-12-19 05:15:00,59.51,173.59400000000002,35.311,32.468 +2020-12-19 05:30:00,56.55,170.71599999999998,35.311,32.468 +2020-12-19 05:45:00,59.21,168.06099999999998,35.311,32.468 +2020-12-19 06:00:00,62.57,183.03900000000002,37.117,32.468 +2020-12-19 06:15:00,65.09,202.952,37.117,32.468 +2020-12-19 06:30:00,65.7,199.22299999999998,37.117,32.468 +2020-12-19 06:45:00,67.91,194.838,37.117,32.468 +2020-12-19 07:00:00,72.04,190.25900000000001,40.948,32.468 +2020-12-19 07:15:00,73.9,194.74,40.948,32.468 +2020-12-19 07:30:00,76.28,199.62900000000002,40.948,32.468 +2020-12-19 07:45:00,80.12,203.72299999999998,40.948,32.468 +2020-12-19 08:00:00,84.67,205.49,44.903,32.468 +2020-12-19 08:15:00,84.63,208.417,44.903,32.468 +2020-12-19 08:30:00,85.9,209.208,44.903,32.468 +2020-12-19 08:45:00,89.47,207.513,44.903,32.468 +2020-12-19 09:00:00,91.2,202.946,46.283,32.468 +2020-12-19 09:15:00,91.66,200.81900000000002,46.283,32.468 +2020-12-19 09:30:00,92.64,198.743,46.283,32.468 +2020-12-19 09:45:00,94.43,196.018,46.283,32.468 +2020-12-19 10:00:00,95.05,190.972,44.103,32.468 +2020-12-19 10:15:00,97.92,187.33599999999998,44.103,32.468 +2020-12-19 10:30:00,97.13,185.18900000000002,44.103,32.468 +2020-12-19 10:45:00,98.68,184.658,44.103,32.468 +2020-12-19 11:00:00,98.05,183.915,42.373999999999995,32.468 +2020-12-19 11:15:00,97.08,181.329,42.373999999999995,32.468 +2020-12-19 11:30:00,99.87,180.894,42.373999999999995,32.468 +2020-12-19 11:45:00,100.27,178.51,42.373999999999995,32.468 +2020-12-19 12:00:00,97.52,173.118,39.937,32.468 +2020-12-19 12:15:00,97.76,170.877,39.937,32.468 +2020-12-19 12:30:00,98.11,171.55,39.937,32.468 +2020-12-19 12:45:00,100.55,172.199,39.937,32.468 +2020-12-19 13:00:00,99.76,171.535,37.138000000000005,32.468 +2020-12-19 13:15:00,98.38,169.935,37.138000000000005,32.468 +2020-12-19 13:30:00,95.17,169.263,37.138000000000005,32.468 +2020-12-19 13:45:00,95.3,169.452,37.138000000000005,32.468 +2020-12-19 14:00:00,93.76,168.46900000000002,36.141999999999996,32.468 +2020-12-19 14:15:00,94.4,168.18900000000002,36.141999999999996,32.468 +2020-12-19 14:30:00,93.73,167.553,36.141999999999996,32.468 +2020-12-19 14:45:00,95.27,168.02,36.141999999999996,32.468 +2020-12-19 15:00:00,95.53,169.136,37.964,32.468 +2020-12-19 15:15:00,95.12,169.968,37.964,32.468 +2020-12-19 15:30:00,94.85,172.035,37.964,32.468 +2020-12-19 15:45:00,95.87,173.68400000000003,37.964,32.468 +2020-12-19 16:00:00,102.71,173.486,40.699,32.468 +2020-12-19 16:15:00,100.85,176.049,40.699,32.468 +2020-12-19 16:30:00,103.71,178.514,40.699,32.468 +2020-12-19 16:45:00,102.26,180.572,40.699,32.468 +2020-12-19 17:00:00,105.22,182.958,46.216,32.468 +2020-12-19 17:15:00,103.82,184.842,46.216,32.468 +2020-12-19 17:30:00,107.42,185.225,46.216,32.468 +2020-12-19 17:45:00,106.86,184.43,46.216,32.468 +2020-12-19 18:00:00,106.39,185.953,51.123999999999995,32.468 +2020-12-19 18:15:00,105.15,185.488,51.123999999999995,32.468 +2020-12-19 18:30:00,104.09,185.662,51.123999999999995,32.468 +2020-12-19 18:45:00,103.35,182.18599999999998,51.123999999999995,32.468 +2020-12-19 19:00:00,101.94,185.102,52.336000000000006,32.468 +2020-12-19 19:15:00,100.64,182.34900000000002,52.336000000000006,32.468 +2020-12-19 19:30:00,101.69,180.71,52.336000000000006,32.468 +2020-12-19 19:45:00,98.12,176.26,52.336000000000006,32.468 +2020-12-19 20:00:00,92.73,174.96900000000002,48.825,32.468 +2020-12-19 20:15:00,89.48,171.326,48.825,32.468 +2020-12-19 20:30:00,86.99,167.16099999999997,48.825,32.468 +2020-12-19 20:45:00,85.88,164.67,48.825,32.468 +2020-12-19 21:00:00,82.34,165.27700000000002,43.729,32.468 +2020-12-19 21:15:00,85.85,164.014,43.729,32.468 +2020-12-19 21:30:00,81.94,163.107,43.729,32.468 +2020-12-19 21:45:00,81.18,161.67600000000002,43.729,32.468 +2020-12-19 22:00:00,76.01,157.365,44.126000000000005,32.468 +2020-12-19 22:15:00,75.43,154.187,44.126000000000005,32.468 +2020-12-19 22:30:00,71.47,152.58100000000002,44.126000000000005,32.468 +2020-12-19 22:45:00,70.06,149.986,44.126000000000005,32.468 +2020-12-19 23:00:00,66.49,146.393,38.169000000000004,32.468 +2020-12-19 23:15:00,66.77,140.828,38.169000000000004,32.468 +2020-12-19 23:30:00,64.05,138.111,38.169000000000004,32.468 +2020-12-19 23:45:00,61.94,134.629,38.169000000000004,32.468 +2020-12-20 00:00:00,57.44,113.59899999999999,35.232,32.468 +2020-12-20 00:15:00,55.83,108.861,35.232,32.468 +2020-12-20 00:30:00,55.22,110.48299999999999,35.232,32.468 +2020-12-20 00:45:00,53.65,113.07600000000001,35.232,32.468 +2020-12-20 01:00:00,50.86,115.56200000000001,31.403000000000002,32.468 +2020-12-20 01:15:00,51.31,117.324,31.403000000000002,32.468 +2020-12-20 01:30:00,50.82,117.62100000000001,31.403000000000002,32.468 +2020-12-20 01:45:00,50.65,117.726,31.403000000000002,32.468 +2020-12-20 02:00:00,48.06,119.34700000000001,30.69,32.468 +2020-12-20 02:15:00,48.95,119.454,30.69,32.468 +2020-12-20 02:30:00,49.69,119.81200000000001,30.69,32.468 +2020-12-20 02:45:00,49.72,122.182,30.69,32.468 +2020-12-20 03:00:00,52.26,124.57700000000001,29.516,32.468 +2020-12-20 03:15:00,50.67,124.82,29.516,32.468 +2020-12-20 03:30:00,50.57,126.522,29.516,32.468 +2020-12-20 03:45:00,50.51,127.795,29.516,32.468 +2020-12-20 04:00:00,50.06,136.341,29.148000000000003,32.468 +2020-12-20 04:15:00,50.44,144.77100000000002,29.148000000000003,32.468 +2020-12-20 04:30:00,51.53,145.145,29.148000000000003,32.468 +2020-12-20 04:45:00,52.44,146.28799999999998,29.148000000000003,32.468 +2020-12-20 05:00:00,53.76,160.211,28.706,32.468 +2020-12-20 05:15:00,54.72,169.44299999999998,28.706,32.468 +2020-12-20 05:30:00,54.25,166.403,28.706,32.468 +2020-12-20 05:45:00,55.03,163.986,28.706,32.468 +2020-12-20 06:00:00,57.82,178.773,28.771,32.468 +2020-12-20 06:15:00,58.08,197.097,28.771,32.468 +2020-12-20 06:30:00,59.03,192.31900000000002,28.771,32.468 +2020-12-20 06:45:00,60.79,186.922,28.771,32.468 +2020-12-20 07:00:00,62.77,184.69099999999997,31.39,32.468 +2020-12-20 07:15:00,63.39,188.282,31.39,32.468 +2020-12-20 07:30:00,65.38,192.062,31.39,32.468 +2020-12-20 07:45:00,67.0,195.424,31.39,32.468 +2020-12-20 08:00:00,72.03,198.976,34.972,32.468 +2020-12-20 08:15:00,73.09,201.861,34.972,32.468 +2020-12-20 08:30:00,75.12,204.26,34.972,32.468 +2020-12-20 08:45:00,78.34,204.452,34.972,32.468 +2020-12-20 09:00:00,79.75,199.475,36.709,32.468 +2020-12-20 09:15:00,81.63,197.854,36.709,32.468 +2020-12-20 09:30:00,81.76,195.66099999999997,36.709,32.468 +2020-12-20 09:45:00,83.87,192.864,36.709,32.468 +2020-12-20 10:00:00,85.18,190.226,35.812,32.468 +2020-12-20 10:15:00,86.79,187.08700000000002,35.812,32.468 +2020-12-20 10:30:00,87.22,185.505,35.812,32.468 +2020-12-20 10:45:00,88.97,183.232,35.812,32.468 +2020-12-20 11:00:00,87.56,183.31900000000002,36.746,32.468 +2020-12-20 11:15:00,90.47,180.827,36.746,32.468 +2020-12-20 11:30:00,91.82,179.59799999999998,36.746,32.468 +2020-12-20 11:45:00,93.1,177.797,36.746,32.468 +2020-12-20 12:00:00,92.2,171.933,35.048,32.468 +2020-12-20 12:15:00,91.24,171.46599999999998,35.048,32.468 +2020-12-20 12:30:00,91.52,170.787,35.048,32.468 +2020-12-20 12:45:00,87.78,170.493,35.048,32.468 +2020-12-20 13:00:00,84.85,169.11700000000002,29.987,32.468 +2020-12-20 13:15:00,83.06,170.32299999999998,29.987,32.468 +2020-12-20 13:30:00,80.86,169.38299999999998,29.987,32.468 +2020-12-20 13:45:00,80.54,169.005,29.987,32.468 +2020-12-20 14:00:00,80.42,168.31099999999998,27.21,32.468 +2020-12-20 14:15:00,80.53,169.185,27.21,32.468 +2020-12-20 14:30:00,83.4,169.662,27.21,32.468 +2020-12-20 14:45:00,81.31,169.695,27.21,32.468 +2020-12-20 15:00:00,85.33,169.394,27.726999999999997,32.468 +2020-12-20 15:15:00,82.97,170.889,27.726999999999997,32.468 +2020-12-20 15:30:00,84.51,173.511,27.726999999999997,32.468 +2020-12-20 15:45:00,86.95,175.827,27.726999999999997,32.468 +2020-12-20 16:00:00,90.83,177.327,32.23,32.468 +2020-12-20 16:15:00,91.19,179.05700000000002,32.23,32.468 +2020-12-20 16:30:00,92.7,181.822,32.23,32.468 +2020-12-20 16:45:00,93.89,184.03099999999998,32.23,32.468 +2020-12-20 17:00:00,96.36,186.42700000000002,42.016999999999996,32.468 +2020-12-20 17:15:00,96.89,188.093,42.016999999999996,32.468 +2020-12-20 17:30:00,101.65,188.80599999999998,42.016999999999996,32.468 +2020-12-20 17:45:00,99.7,190.2,42.016999999999996,32.468 +2020-12-20 18:00:00,99.58,191.257,49.338,32.468 +2020-12-20 18:15:00,98.86,192.024,49.338,32.468 +2020-12-20 18:30:00,99.68,190.203,49.338,32.468 +2020-12-20 18:45:00,98.16,188.51,49.338,32.468 +2020-12-20 19:00:00,96.38,191.18099999999998,52.369,32.468 +2020-12-20 19:15:00,95.5,188.947,52.369,32.468 +2020-12-20 19:30:00,94.26,187.13400000000001,52.369,32.468 +2020-12-20 19:45:00,93.64,184.032,52.369,32.468 +2020-12-20 20:00:00,92.2,182.707,50.405,32.468 +2020-12-20 20:15:00,91.3,179.99400000000003,50.405,32.468 +2020-12-20 20:30:00,89.41,177.025,50.405,32.468 +2020-12-20 20:45:00,88.72,173.33700000000002,50.405,32.468 +2020-12-20 21:00:00,82.11,171.449,46.235,32.468 +2020-12-20 21:15:00,79.31,169.55900000000003,46.235,32.468 +2020-12-20 21:30:00,78.23,168.908,46.235,32.468 +2020-12-20 21:45:00,80.71,167.632,46.235,32.468 +2020-12-20 22:00:00,76.48,162.267,46.861000000000004,32.468 +2020-12-20 22:15:00,75.69,158.30200000000002,46.861000000000004,32.468 +2020-12-20 22:30:00,72.53,153.685,46.861000000000004,32.468 +2020-12-20 22:45:00,71.4,150.233,46.861000000000004,32.468 +2020-12-20 23:00:00,67.24,143.93200000000002,41.302,32.468 +2020-12-20 23:15:00,67.09,140.191,41.302,32.468 +2020-12-20 23:30:00,65.09,138.24200000000002,41.302,32.468 +2020-12-20 23:45:00,63.54,135.611,41.302,32.468 +2020-12-21 00:00:00,59.61,117.899,37.164,32.65 +2020-12-21 00:15:00,58.76,116.00200000000001,37.164,32.65 +2020-12-21 00:30:00,55.48,117.723,37.164,32.65 +2020-12-21 00:45:00,58.12,119.76799999999999,37.164,32.65 +2020-12-21 01:00:00,54.85,122.302,34.994,32.65 +2020-12-21 01:15:00,52.98,123.559,34.994,32.65 +2020-12-21 01:30:00,50.94,123.928,34.994,32.65 +2020-12-21 01:45:00,50.8,124.125,34.994,32.65 +2020-12-21 02:00:00,52.33,125.757,34.571,32.65 +2020-12-21 02:15:00,52.41,127.214,34.571,32.65 +2020-12-21 02:30:00,52.65,127.90100000000001,34.571,32.65 +2020-12-21 02:45:00,53.11,129.673,34.571,32.65 +2020-12-21 03:00:00,51.52,133.284,33.934,32.65 +2020-12-21 03:15:00,52.71,135.15,33.934,32.65 +2020-12-21 03:30:00,52.07,136.624,33.934,32.65 +2020-12-21 03:45:00,49.61,137.35299999999998,33.934,32.65 +2020-12-21 04:00:00,53.48,150.143,34.107,32.65 +2020-12-21 04:15:00,52.93,162.64,34.107,32.65 +2020-12-21 04:30:00,53.67,165.072,34.107,32.65 +2020-12-21 04:45:00,54.53,166.38400000000001,34.107,32.65 +2020-12-21 05:00:00,56.42,195.558,39.575,32.65 +2020-12-21 05:15:00,57.68,224.365,39.575,32.65 +2020-12-21 05:30:00,58.83,221.533,39.575,32.65 +2020-12-21 05:45:00,60.34,213.628,39.575,32.65 +2020-12-21 06:00:00,62.76,210.952,56.156000000000006,32.65 +2020-12-21 06:15:00,66.38,214.78599999999997,56.156000000000006,32.65 +2020-12-21 06:30:00,67.63,217.83,56.156000000000006,32.65 +2020-12-21 06:45:00,70.42,221.06,56.156000000000006,32.65 +2020-12-21 07:00:00,74.09,221.109,67.926,32.65 +2020-12-21 07:15:00,75.56,225.983,67.926,32.65 +2020-12-21 07:30:00,78.04,228.984,67.926,32.65 +2020-12-21 07:45:00,81.33,229.912,67.926,32.65 +2020-12-21 08:00:00,85.45,228.74900000000002,72.58,32.65 +2020-12-21 08:15:00,86.9,229.53400000000002,72.58,32.65 +2020-12-21 08:30:00,89.21,228.0,72.58,32.65 +2020-12-21 08:45:00,91.43,225.005,72.58,32.65 +2020-12-21 09:00:00,94.89,219.02200000000002,66.984,32.65 +2020-12-21 09:15:00,97.25,214.018,66.984,32.65 +2020-12-21 09:30:00,101.27,210.845,66.984,32.65 +2020-12-21 09:45:00,99.72,208.222,66.984,32.65 +2020-12-21 10:00:00,101.1,204.55200000000002,63.158,32.65 +2020-12-21 10:15:00,100.36,201.084,63.158,32.65 +2020-12-21 10:30:00,101.56,198.63400000000001,63.158,32.65 +2020-12-21 10:45:00,102.86,196.997,63.158,32.65 +2020-12-21 11:00:00,100.92,194.606,61.141000000000005,32.65 +2020-12-21 11:15:00,101.74,193.829,61.141000000000005,32.65 +2020-12-21 11:30:00,103.83,193.94,61.141000000000005,32.65 +2020-12-21 11:45:00,102.91,191.77200000000002,61.141000000000005,32.65 +2020-12-21 12:00:00,101.04,187.456,57.961000000000006,32.65 +2020-12-21 12:15:00,101.4,187.00900000000001,57.961000000000006,32.65 +2020-12-21 12:30:00,98.37,186.525,57.961000000000006,32.65 +2020-12-21 12:45:00,97.4,187.678,57.961000000000006,32.65 +2020-12-21 13:00:00,94.93,186.868,56.843,32.65 +2020-12-21 13:15:00,92.49,186.717,56.843,32.65 +2020-12-21 13:30:00,90.19,185.27599999999998,56.843,32.65 +2020-12-21 13:45:00,89.94,184.963,56.843,32.65 +2020-12-21 14:00:00,86.88,183.642,55.992,32.65 +2020-12-21 14:15:00,84.1,183.937,55.992,32.65 +2020-12-21 14:30:00,81.84,183.912,55.992,32.65 +2020-12-21 14:45:00,83.32,184.023,55.992,32.65 +2020-12-21 15:00:00,83.47,185.426,57.523,32.65 +2020-12-21 15:15:00,81.79,185.524,57.523,32.65 +2020-12-21 15:30:00,81.2,187.407,57.523,32.65 +2020-12-21 15:45:00,82.37,189.275,57.523,32.65 +2020-12-21 16:00:00,85.28,191.02,59.471000000000004,32.65 +2020-12-21 16:15:00,84.75,192.044,59.471000000000004,32.65 +2020-12-21 16:30:00,86.17,193.86700000000002,59.471000000000004,32.65 +2020-12-21 16:45:00,86.8,194.97,59.471000000000004,32.65 +2020-12-21 17:00:00,89.11,197.155,65.066,32.65 +2020-12-21 17:15:00,90.27,197.953,65.066,32.65 +2020-12-21 17:30:00,92.59,198.148,65.066,32.65 +2020-12-21 17:45:00,92.01,198.112,65.066,32.65 +2020-12-21 18:00:00,92.03,199.575,69.581,32.65 +2020-12-21 18:15:00,92.38,198.145,69.581,32.65 +2020-12-21 18:30:00,91.75,196.93200000000002,69.581,32.65 +2020-12-21 18:45:00,91.35,196.043,69.581,32.65 +2020-12-21 19:00:00,87.77,197.149,73.771,32.65 +2020-12-21 19:15:00,86.86,193.826,73.771,32.65 +2020-12-21 19:30:00,85.1,192.47299999999998,73.771,32.65 +2020-12-21 19:45:00,84.71,188.53799999999998,73.771,32.65 +2020-12-21 20:00:00,81.21,184.893,65.035,32.65 +2020-12-21 20:15:00,80.86,179.843,65.035,32.65 +2020-12-21 20:30:00,79.94,175.08700000000002,65.035,32.65 +2020-12-21 20:45:00,78.91,172.983,65.035,32.65 +2020-12-21 21:00:00,76.0,171.56799999999998,58.7,32.65 +2020-12-21 21:15:00,76.31,168.549,58.7,32.65 +2020-12-21 21:30:00,74.92,167.11900000000003,58.7,32.65 +2020-12-21 21:45:00,74.61,165.36,58.7,32.65 +2020-12-21 22:00:00,72.26,157.161,53.888000000000005,32.65 +2020-12-21 22:15:00,72.03,152.0,53.888000000000005,32.65 +2020-12-21 22:30:00,70.9,138.101,53.888000000000005,32.65 +2020-12-21 22:45:00,70.7,130.013,53.888000000000005,32.65 +2020-12-21 23:00:00,67.92,124.43299999999999,45.501999999999995,32.65 +2020-12-21 23:15:00,65.32,123.19,45.501999999999995,32.65 +2020-12-21 23:30:00,63.5,123.906,45.501999999999995,32.65 +2020-12-21 23:45:00,63.09,123.789,45.501999999999995,32.65 +2020-12-22 00:00:00,77.11,117.387,43.537,32.65 +2020-12-22 00:15:00,75.55,116.86,43.537,32.65 +2020-12-22 00:30:00,74.5,117.693,43.537,32.65 +2020-12-22 00:45:00,75.85,118.81,43.537,32.65 +2020-12-22 01:00:00,74.35,121.161,41.854,32.65 +2020-12-22 01:15:00,72.04,121.991,41.854,32.65 +2020-12-22 01:30:00,70.74,122.525,41.854,32.65 +2020-12-22 01:45:00,72.79,122.985,41.854,32.65 +2020-12-22 02:00:00,71.78,124.613,40.321,32.65 +2020-12-22 02:15:00,72.48,126.00299999999999,40.321,32.65 +2020-12-22 02:30:00,72.39,126.111,40.321,32.65 +2020-12-22 02:45:00,73.21,127.904,40.321,32.65 +2020-12-22 03:00:00,72.62,130.333,39.632,32.65 +2020-12-22 03:15:00,73.58,131.439,39.632,32.65 +2020-12-22 03:30:00,75.36,133.376,39.632,32.65 +2020-12-22 03:45:00,75.07,134.254,39.632,32.65 +2020-12-22 04:00:00,74.68,146.79,40.183,32.65 +2020-12-22 04:15:00,74.32,158.94799999999998,40.183,32.65 +2020-12-22 04:30:00,75.7,161.071,40.183,32.65 +2020-12-22 04:45:00,77.44,163.56,40.183,32.65 +2020-12-22 05:00:00,80.88,197.551,43.945,32.65 +2020-12-22 05:15:00,83.17,226.143,43.945,32.65 +2020-12-22 05:30:00,88.89,221.862,43.945,32.65 +2020-12-22 05:45:00,94.9,213.957,43.945,32.65 +2020-12-22 06:00:00,103.72,210.203,56.048,32.65 +2020-12-22 06:15:00,108.11,215.607,56.048,32.65 +2020-12-22 06:30:00,112.38,218.05200000000002,56.048,32.65 +2020-12-22 06:45:00,116.06,220.926,56.048,32.65 +2020-12-22 07:00:00,122.27,220.813,65.74,32.65 +2020-12-22 07:15:00,126.37,225.525,65.74,32.65 +2020-12-22 07:30:00,128.12,227.997,65.74,32.65 +2020-12-22 07:45:00,131.48,229.09,65.74,32.65 +2020-12-22 08:00:00,133.47,228.032,72.757,32.65 +2020-12-22 08:15:00,133.0,227.81099999999998,72.757,32.65 +2020-12-22 08:30:00,133.5,226.104,72.757,32.65 +2020-12-22 08:45:00,134.21,222.799,72.757,32.65 +2020-12-22 09:00:00,133.97,216.007,67.692,32.65 +2020-12-22 09:15:00,136.46,212.53900000000002,67.692,32.65 +2020-12-22 09:30:00,137.68,210.049,67.692,32.65 +2020-12-22 09:45:00,137.1,207.25099999999998,67.692,32.65 +2020-12-22 10:00:00,137.74,202.968,63.506,32.65 +2020-12-22 10:15:00,137.9,198.468,63.506,32.65 +2020-12-22 10:30:00,137.65,196.17700000000002,63.506,32.65 +2020-12-22 10:45:00,140.41,194.83900000000003,63.506,32.65 +2020-12-22 11:00:00,142.25,193.857,60.758,32.65 +2020-12-22 11:15:00,143.49,192.766,60.758,32.65 +2020-12-22 11:30:00,143.27,191.726,60.758,32.65 +2020-12-22 11:45:00,138.82,190.21099999999998,60.758,32.65 +2020-12-22 12:00:00,137.52,184.581,57.519,32.65 +2020-12-22 12:15:00,137.54,183.763,57.519,32.65 +2020-12-22 12:30:00,137.08,184.00599999999997,57.519,32.65 +2020-12-22 12:45:00,135.61,184.908,57.519,32.65 +2020-12-22 13:00:00,132.97,183.676,56.46,32.65 +2020-12-22 13:15:00,132.28,183.25400000000002,56.46,32.65 +2020-12-22 13:30:00,130.5,182.924,56.46,32.65 +2020-12-22 13:45:00,130.46,182.74599999999998,56.46,32.65 +2020-12-22 14:00:00,129.11,181.707,56.207,32.65 +2020-12-22 14:15:00,129.2,182.144,56.207,32.65 +2020-12-22 14:30:00,127.97,182.748,56.207,32.65 +2020-12-22 14:45:00,128.67,182.766,56.207,32.65 +2020-12-22 15:00:00,128.91,183.767,57.391999999999996,32.65 +2020-12-22 15:15:00,128.69,184.206,57.391999999999996,32.65 +2020-12-22 15:30:00,128.66,186.304,57.391999999999996,32.65 +2020-12-22 15:45:00,129.67,187.796,57.391999999999996,32.65 +2020-12-22 16:00:00,133.28,189.83700000000002,59.955,32.65 +2020-12-22 16:15:00,135.66,191.335,59.955,32.65 +2020-12-22 16:30:00,137.94,193.77200000000002,59.955,32.65 +2020-12-22 16:45:00,139.17,195.19400000000002,59.955,32.65 +2020-12-22 17:00:00,143.78,197.887,67.063,32.65 +2020-12-22 17:15:00,144.03,198.753,67.063,32.65 +2020-12-22 17:30:00,145.49,199.59599999999998,67.063,32.65 +2020-12-22 17:45:00,142.58,199.43900000000002,67.063,32.65 +2020-12-22 18:00:00,139.78,200.797,71.477,32.65 +2020-12-22 18:15:00,138.93,198.907,71.477,32.65 +2020-12-22 18:30:00,137.96,197.396,71.477,32.65 +2020-12-22 18:45:00,138.52,197.283,71.477,32.65 +2020-12-22 19:00:00,134.79,198.418,74.32,32.65 +2020-12-22 19:15:00,134.11,194.825,74.32,32.65 +2020-12-22 19:30:00,134.57,192.81400000000002,74.32,32.65 +2020-12-22 19:45:00,134.19,188.90900000000002,74.32,32.65 +2020-12-22 20:00:00,126.29,185.421,66.157,32.65 +2020-12-22 20:15:00,120.72,179.71200000000002,66.157,32.65 +2020-12-22 20:30:00,116.25,175.917,66.157,32.65 +2020-12-22 20:45:00,114.97,173.28900000000002,66.157,32.65 +2020-12-22 21:00:00,111.39,171.205,59.806000000000004,32.65 +2020-12-22 21:15:00,112.49,169.00799999999998,59.806000000000004,32.65 +2020-12-22 21:30:00,112.51,166.87900000000002,59.806000000000004,32.65 +2020-12-22 21:45:00,108.75,165.354,59.806000000000004,32.65 +2020-12-22 22:00:00,100.85,158.816,54.785,32.65 +2020-12-22 22:15:00,98.46,153.403,54.785,32.65 +2020-12-22 22:30:00,93.77,139.632,54.785,32.65 +2020-12-22 22:45:00,94.39,131.819,54.785,32.65 +2020-12-22 23:00:00,92.62,126.223,47.176,32.65 +2020-12-22 23:15:00,91.43,124.146,47.176,32.65 +2020-12-22 23:30:00,86.04,124.527,47.176,32.65 +2020-12-22 23:45:00,83.32,123.98200000000001,47.176,32.65 +2020-12-23 00:00:00,83.37,117.60700000000001,43.42,32.65 +2020-12-23 00:15:00,83.59,117.055,43.42,32.65 +2020-12-23 00:30:00,83.23,117.87899999999999,43.42,32.65 +2020-12-23 00:45:00,80.94,118.979,43.42,32.65 +2020-12-23 01:00:00,76.7,121.35,40.869,32.65 +2020-12-23 01:15:00,80.48,122.177,40.869,32.65 +2020-12-23 01:30:00,81.54,122.714,40.869,32.65 +2020-12-23 01:45:00,80.75,123.163,40.869,32.65 +2020-12-23 02:00:00,77.53,124.807,39.541,32.65 +2020-12-23 02:15:00,76.71,126.197,39.541,32.65 +2020-12-23 02:30:00,79.2,126.31,39.541,32.65 +2020-12-23 02:45:00,81.57,128.10299999999998,39.541,32.65 +2020-12-23 03:00:00,79.82,130.524,39.052,32.65 +2020-12-23 03:15:00,77.81,131.65200000000002,39.052,32.65 +2020-12-23 03:30:00,79.49,133.59,39.052,32.65 +2020-12-23 03:45:00,83.44,134.471,39.052,32.65 +2020-12-23 04:00:00,82.03,146.98,40.36,32.65 +2020-12-23 04:15:00,80.22,159.136,40.36,32.65 +2020-12-23 04:30:00,80.62,161.252,40.36,32.65 +2020-12-23 04:45:00,83.03,163.74,40.36,32.65 +2020-12-23 05:00:00,87.93,197.69799999999998,43.133,32.65 +2020-12-23 05:15:00,91.08,226.25599999999997,43.133,32.65 +2020-12-23 05:30:00,94.96,221.985,43.133,32.65 +2020-12-23 05:45:00,98.6,214.09900000000002,43.133,32.65 +2020-12-23 06:00:00,105.55,210.36900000000003,54.953,32.65 +2020-12-23 06:15:00,110.85,215.77700000000002,54.953,32.65 +2020-12-23 06:30:00,115.87,218.25099999999998,54.953,32.65 +2020-12-23 06:45:00,120.4,221.162,54.953,32.65 +2020-12-23 07:00:00,126.78,221.05700000000002,66.566,32.65 +2020-12-23 07:15:00,128.65,225.765,66.566,32.65 +2020-12-23 07:30:00,130.99,228.233,66.566,32.65 +2020-12-23 07:45:00,133.38,229.315,66.566,32.65 +2020-12-23 08:00:00,135.54,228.261,72.902,32.65 +2020-12-23 08:15:00,135.89,228.02700000000002,72.902,32.65 +2020-12-23 08:30:00,136.41,226.31099999999998,72.902,32.65 +2020-12-23 08:45:00,136.61,222.982,72.902,32.65 +2020-12-23 09:00:00,137.52,216.169,68.465,32.65 +2020-12-23 09:15:00,138.65,212.708,68.465,32.65 +2020-12-23 09:30:00,139.53,210.229,68.465,32.65 +2020-12-23 09:45:00,140.58,207.421,68.465,32.65 +2020-12-23 10:00:00,139.15,203.13299999999998,63.625,32.65 +2020-12-23 10:15:00,139.36,198.62400000000002,63.625,32.65 +2020-12-23 10:30:00,139.02,196.31799999999998,63.625,32.65 +2020-12-23 10:45:00,138.24,194.97799999999998,63.625,32.65 +2020-12-23 11:00:00,141.5,193.97799999999998,61.628,32.65 +2020-12-23 11:15:00,140.02,192.88,61.628,32.65 +2020-12-23 11:30:00,142.39,191.84,61.628,32.65 +2020-12-23 11:45:00,137.8,190.325,61.628,32.65 +2020-12-23 12:00:00,134.47,184.69799999999998,58.708999999999996,32.65 +2020-12-23 12:15:00,132.86,183.894,58.708999999999996,32.65 +2020-12-23 12:30:00,132.25,184.143,58.708999999999996,32.65 +2020-12-23 12:45:00,133.37,185.047,58.708999999999996,32.65 +2020-12-23 13:00:00,133.19,183.796,57.373000000000005,32.65 +2020-12-23 13:15:00,133.97,183.37,57.373000000000005,32.65 +2020-12-23 13:30:00,132.3,183.033,57.373000000000005,32.65 +2020-12-23 13:45:00,130.97,182.84799999999998,57.373000000000005,32.65 +2020-12-23 14:00:00,130.64,181.804,57.684,32.65 +2020-12-23 14:15:00,130.79,182.24099999999999,57.684,32.65 +2020-12-23 14:30:00,130.4,182.863,57.684,32.65 +2020-12-23 14:45:00,130.0,182.893,57.684,32.65 +2020-12-23 15:00:00,130.36,183.90900000000002,58.03,32.65 +2020-12-23 15:15:00,130.22,184.33900000000003,58.03,32.65 +2020-12-23 15:30:00,129.82,186.446,58.03,32.65 +2020-12-23 15:45:00,131.13,187.935,58.03,32.65 +2020-12-23 16:00:00,133.7,189.97299999999998,59.97,32.65 +2020-12-23 16:15:00,136.31,191.487,59.97,32.65 +2020-12-23 16:30:00,139.13,193.93,59.97,32.65 +2020-12-23 16:45:00,141.42,195.372,59.97,32.65 +2020-12-23 17:00:00,147.76,198.045,65.661,32.65 +2020-12-23 17:15:00,147.93,198.938,65.661,32.65 +2020-12-23 17:30:00,148.05,199.803,65.661,32.65 +2020-12-23 17:45:00,143.23,199.658,65.661,32.65 +2020-12-23 18:00:00,140.17,201.03599999999997,70.96300000000001,32.65 +2020-12-23 18:15:00,139.83,199.13299999999998,70.96300000000001,32.65 +2020-12-23 18:30:00,138.54,197.62900000000002,70.96300000000001,32.65 +2020-12-23 18:45:00,138.83,197.52900000000002,70.96300000000001,32.65 +2020-12-23 19:00:00,136.66,198.641,74.133,32.65 +2020-12-23 19:15:00,134.75,195.046,74.133,32.65 +2020-12-23 19:30:00,133.88,193.02900000000002,74.133,32.65 +2020-12-23 19:45:00,133.25,189.11,74.133,32.65 +2020-12-23 20:00:00,126.72,185.614,65.613,32.65 +2020-12-23 20:15:00,120.6,179.90200000000002,65.613,32.65 +2020-12-23 20:30:00,117.16,176.08900000000003,65.613,32.65 +2020-12-23 20:45:00,115.94,173.47799999999998,65.613,32.65 +2020-12-23 21:00:00,113.09,171.37900000000002,58.583,32.65 +2020-12-23 21:15:00,114.76,169.165,58.583,32.65 +2020-12-23 21:30:00,112.8,167.037,58.583,32.65 +2020-12-23 21:45:00,109.3,165.523,58.583,32.65 +2020-12-23 22:00:00,103.75,158.988,54.411,32.65 +2020-12-23 22:15:00,102.73,153.583,54.411,32.65 +2020-12-23 22:30:00,99.23,139.843,54.411,32.65 +2020-12-23 22:45:00,99.37,132.03799999999998,54.411,32.65 +2020-12-23 23:00:00,94.42,126.421,47.878,32.65 +2020-12-23 23:15:00,89.7,124.345,47.878,32.65 +2020-12-23 23:30:00,86.46,124.74,47.878,32.65 +2020-12-23 23:45:00,87.03,124.18799999999999,47.878,32.65 +2020-12-24 00:00:00,57.0,117.822,44.513000000000005,32.468 +2020-12-24 00:15:00,57.34,117.244,44.513000000000005,32.468 +2020-12-24 00:30:00,56.42,118.05799999999999,44.513000000000005,32.468 +2020-12-24 00:45:00,55.53,119.14,44.513000000000005,32.468 +2020-12-24 01:00:00,52.63,121.53200000000001,43.169,32.468 +2020-12-24 01:15:00,53.35,122.355,43.169,32.468 +2020-12-24 01:30:00,52.36,122.896,43.169,32.468 +2020-12-24 01:45:00,52.48,123.33200000000001,43.169,32.468 +2020-12-24 02:00:00,51.25,124.992,41.763999999999996,32.468 +2020-12-24 02:15:00,52.09,126.383,41.763999999999996,32.468 +2020-12-24 02:30:00,51.45,126.501,41.763999999999996,32.468 +2020-12-24 02:45:00,51.82,128.293,41.763999999999996,32.468 +2020-12-24 03:00:00,51.68,130.705,41.155,32.468 +2020-12-24 03:15:00,52.17,131.857,41.155,32.468 +2020-12-24 03:30:00,52.33,133.796,41.155,32.468 +2020-12-24 03:45:00,53.49,134.678,41.155,32.468 +2020-12-24 04:00:00,54.37,147.165,41.96,32.468 +2020-12-24 04:15:00,54.98,159.316,41.96,32.468 +2020-12-24 04:30:00,55.93,161.425,41.96,32.468 +2020-12-24 04:45:00,57.9,163.912,41.96,32.468 +2020-12-24 05:00:00,61.23,197.83700000000002,45.206,32.468 +2020-12-24 05:15:00,61.7,226.36,45.206,32.468 +2020-12-24 05:30:00,63.74,222.101,45.206,32.468 +2020-12-24 05:45:00,65.72,214.232,45.206,32.468 +2020-12-24 06:00:00,71.25,210.52599999999998,55.398999999999994,32.468 +2020-12-24 06:15:00,73.82,215.94,55.398999999999994,32.468 +2020-12-24 06:30:00,75.73,218.44099999999997,55.398999999999994,32.468 +2020-12-24 06:45:00,79.76,221.386,55.398999999999994,32.468 +2020-12-24 07:00:00,84.31,221.29,64.627,32.468 +2020-12-24 07:15:00,85.26,225.99599999999998,64.627,32.468 +2020-12-24 07:30:00,86.83,228.458,64.627,32.468 +2020-12-24 07:45:00,89.99,229.53,64.627,32.468 +2020-12-24 08:00:00,92.92,228.477,70.895,32.468 +2020-12-24 08:15:00,93.1,228.232,70.895,32.468 +2020-12-24 08:30:00,94.95,226.505,70.895,32.468 +2020-12-24 08:45:00,95.57,223.15200000000002,70.895,32.468 +2020-12-24 09:00:00,99.59,216.31900000000002,66.382,32.468 +2020-12-24 09:15:00,100.3,212.865,66.382,32.468 +2020-12-24 09:30:00,100.82,210.396,66.382,32.468 +2020-12-24 09:45:00,100.23,207.579,66.382,32.468 +2020-12-24 10:00:00,101.06,203.28799999999998,62.739,32.468 +2020-12-24 10:15:00,101.79,198.771,62.739,32.468 +2020-12-24 10:30:00,102.05,196.449,62.739,32.468 +2020-12-24 10:45:00,102.54,195.107,62.739,32.468 +2020-12-24 11:00:00,100.69,194.09,60.843,32.468 +2020-12-24 11:15:00,101.48,192.986,60.843,32.468 +2020-12-24 11:30:00,100.88,191.946,60.843,32.468 +2020-12-24 11:45:00,99.0,190.43,60.843,32.468 +2020-12-24 12:00:00,94.85,184.805,58.466,32.468 +2020-12-24 12:15:00,95.31,184.016,58.466,32.468 +2020-12-24 12:30:00,93.98,184.271,58.466,32.468 +2020-12-24 12:45:00,96.03,185.178,58.466,32.468 +2020-12-24 13:00:00,94.18,183.908,56.883,32.468 +2020-12-24 13:15:00,90.44,183.48,56.883,32.468 +2020-12-24 13:30:00,90.13,183.132,56.883,32.468 +2020-12-24 13:45:00,90.54,182.94,56.883,32.468 +2020-12-24 14:00:00,89.78,181.893,56.503,32.468 +2020-12-24 14:15:00,92.43,182.33,56.503,32.468 +2020-12-24 14:30:00,90.39,182.968,56.503,32.468 +2020-12-24 14:45:00,92.14,183.01,56.503,32.468 +2020-12-24 15:00:00,92.57,184.044,57.803999999999995,32.468 +2020-12-24 15:15:00,93.64,184.463,57.803999999999995,32.468 +2020-12-24 15:30:00,94.37,186.578,57.803999999999995,32.468 +2020-12-24 15:45:00,97.44,188.062,57.803999999999995,32.468 +2020-12-24 16:00:00,103.78,190.1,59.379,32.468 +2020-12-24 16:15:00,107.92,191.628,59.379,32.468 +2020-12-24 16:30:00,106.71,194.077,59.379,32.468 +2020-12-24 16:45:00,107.58,195.53900000000002,59.379,32.468 +2020-12-24 17:00:00,111.26,198.19299999999998,64.71600000000001,32.468 +2020-12-24 17:15:00,110.82,199.113,64.71600000000001,32.468 +2020-12-24 17:30:00,112.07,200.0,64.71600000000001,32.468 +2020-12-24 17:45:00,111.35,199.86700000000002,64.71600000000001,32.468 +2020-12-24 18:00:00,110.75,201.264,68.803,32.468 +2020-12-24 18:15:00,110.62,199.34900000000002,68.803,32.468 +2020-12-24 18:30:00,110.52,197.851,68.803,32.468 +2020-12-24 18:45:00,110.48,197.765,68.803,32.468 +2020-12-24 19:00:00,111.49,198.856,72.934,32.468 +2020-12-24 19:15:00,106.52,195.25599999999997,72.934,32.468 +2020-12-24 19:30:00,104.08,193.234,72.934,32.468 +2020-12-24 19:45:00,102.68,189.304,72.934,32.468 +2020-12-24 20:00:00,96.72,185.8,65.175,32.468 +2020-12-24 20:15:00,96.77,180.084,65.175,32.468 +2020-12-24 20:30:00,91.18,176.25400000000002,65.175,32.468 +2020-12-24 20:45:00,89.83,173.66,65.175,32.468 +2020-12-24 21:00:00,86.22,171.545,58.55,32.468 +2020-12-24 21:15:00,85.58,169.31400000000002,58.55,32.468 +2020-12-24 21:30:00,83.25,167.188,58.55,32.468 +2020-12-24 21:45:00,85.54,165.68599999999998,58.55,32.468 +2020-12-24 22:00:00,76.93,159.151,55.041000000000004,32.468 +2020-12-24 22:15:00,77.34,153.755,55.041000000000004,32.468 +2020-12-24 22:30:00,73.53,140.047,55.041000000000004,32.468 +2020-12-24 22:45:00,72.69,132.249,55.041000000000004,32.468 +2020-12-24 23:00:00,68.02,126.61,48.258,32.468 +2020-12-24 23:15:00,68.11,124.535,48.258,32.468 +2020-12-24 23:30:00,64.77,124.944,48.258,32.468 +2020-12-24 23:45:00,67.67,124.384,48.258,32.468 +2020-12-25 00:00:00,57.87,114.70100000000001,32.311,32.468 +2020-12-25 00:15:00,58.21,109.835,32.311,32.468 +2020-12-25 00:30:00,57.43,111.413,32.311,32.468 +2020-12-25 00:45:00,57.71,113.917,32.311,32.468 +2020-12-25 01:00:00,54.98,116.509,25.569000000000003,32.468 +2020-12-25 01:15:00,55.19,118.25200000000001,25.569000000000003,32.468 +2020-12-25 01:30:00,54.78,118.568,25.569000000000003,32.468 +2020-12-25 01:45:00,53.55,118.613,25.569000000000003,32.468 +2020-12-25 02:00:00,50.76,120.314,21.038,32.468 +2020-12-25 02:15:00,52.54,120.425,21.038,32.468 +2020-12-25 02:30:00,49.88,120.809,21.038,32.468 +2020-12-25 02:45:00,52.68,123.17399999999999,21.038,32.468 +2020-12-25 03:00:00,51.32,125.52600000000001,19.865,32.468 +2020-12-25 03:15:00,51.45,125.884,19.865,32.468 +2020-12-25 03:30:00,52.01,127.59,19.865,32.468 +2020-12-25 03:45:00,52.84,128.874,19.865,32.468 +2020-12-25 04:00:00,52.17,137.297,19.076,32.468 +2020-12-25 04:15:00,52.24,145.708,19.076,32.468 +2020-12-25 04:30:00,53.63,146.046,19.076,32.468 +2020-12-25 04:45:00,54.09,147.187,19.076,32.468 +2020-12-25 05:00:00,53.22,160.945,20.174,32.468 +2020-12-25 05:15:00,54.53,169.99900000000002,20.174,32.468 +2020-12-25 05:30:00,53.56,167.02200000000002,20.174,32.468 +2020-12-25 05:45:00,57.2,164.69400000000002,20.174,32.468 +2020-12-25 06:00:00,57.45,179.6,19.854,32.468 +2020-12-25 06:15:00,58.55,197.949,19.854,32.468 +2020-12-25 06:30:00,59.92,193.317,19.854,32.468 +2020-12-25 06:45:00,61.05,188.095,19.854,32.468 +2020-12-25 07:00:00,63.95,185.90599999999998,23.096999999999998,32.468 +2020-12-25 07:15:00,65.26,189.485,23.096999999999998,32.468 +2020-12-25 07:30:00,66.28,193.239,23.096999999999998,32.468 +2020-12-25 07:45:00,69.33,196.55,23.096999999999998,32.468 +2020-12-25 08:00:00,71.62,200.118,30.849,32.468 +2020-12-25 08:15:00,74.42,202.94400000000002,30.849,32.468 +2020-12-25 08:30:00,76.82,205.296,30.849,32.468 +2020-12-25 08:45:00,78.68,205.364,30.849,32.468 +2020-12-25 09:00:00,81.32,200.285,30.03,32.468 +2020-12-25 09:15:00,83.82,198.69799999999998,30.03,32.468 +2020-12-25 09:30:00,85.11,196.558,30.03,32.468 +2020-12-25 09:45:00,87.16,193.717,30.03,32.468 +2020-12-25 10:00:00,87.91,191.055,27.625999999999998,32.468 +2020-12-25 10:15:00,89.23,187.868,27.625999999999998,32.468 +2020-12-25 10:30:00,91.55,186.21,27.625999999999998,32.468 +2020-12-25 10:45:00,93.17,183.923,27.625999999999998,32.468 +2020-12-25 11:00:00,94.65,183.926,29.03,32.468 +2020-12-25 11:15:00,98.58,181.39700000000002,29.03,32.468 +2020-12-25 11:30:00,100.6,180.172,29.03,32.468 +2020-12-25 11:45:00,100.05,178.365,29.03,32.468 +2020-12-25 12:00:00,95.72,172.512,25.93,32.468 +2020-12-25 12:15:00,92.54,172.11900000000003,25.93,32.468 +2020-12-25 12:30:00,88.4,171.47,25.93,32.468 +2020-12-25 12:45:00,84.51,171.19299999999998,25.93,32.468 +2020-12-25 13:00:00,81.0,169.72099999999998,16.363,32.468 +2020-12-25 13:15:00,80.85,170.907,16.363,32.468 +2020-12-25 13:30:00,80.27,169.92700000000002,16.363,32.468 +2020-12-25 13:45:00,80.22,169.51,16.363,32.468 +2020-12-25 14:00:00,77.57,168.797,14.370999999999999,32.468 +2020-12-25 14:15:00,78.09,169.671,14.370999999999999,32.468 +2020-12-25 14:30:00,77.16,170.231,14.370999999999999,32.468 +2020-12-25 14:45:00,76.87,170.32299999999998,14.370999999999999,32.468 +2020-12-25 15:00:00,77.34,170.106,19.031,32.468 +2020-12-25 15:15:00,76.88,171.554,19.031,32.468 +2020-12-25 15:30:00,76.93,174.22,19.031,32.468 +2020-12-25 15:45:00,78.2,176.516,19.031,32.468 +2020-12-25 16:00:00,81.38,178.011,24.998,32.468 +2020-12-25 16:15:00,82.28,179.81900000000002,24.998,32.468 +2020-12-25 16:30:00,86.93,182.61,24.998,32.468 +2020-12-25 16:45:00,86.17,184.921,24.998,32.468 +2020-12-25 17:00:00,89.63,187.218,35.976,32.468 +2020-12-25 17:15:00,87.98,189.021,35.976,32.468 +2020-12-25 17:30:00,89.65,189.84099999999998,35.976,32.468 +2020-12-25 17:45:00,90.91,191.3,35.976,32.468 +2020-12-25 18:00:00,91.63,192.454,41.513000000000005,32.468 +2020-12-25 18:15:00,90.25,193.15400000000002,41.513000000000005,32.468 +2020-12-25 18:30:00,91.06,191.364,41.513000000000005,32.468 +2020-12-25 18:45:00,91.59,189.735,41.513000000000005,32.468 +2020-12-25 19:00:00,90.53,192.299,45.607,32.468 +2020-12-25 19:15:00,89.44,190.046,45.607,32.468 +2020-12-25 19:30:00,88.41,188.205,45.607,32.468 +2020-12-25 19:45:00,87.49,185.03900000000002,45.607,32.468 +2020-12-25 20:00:00,85.33,183.676,43.372,32.468 +2020-12-25 20:15:00,84.64,180.94400000000002,43.372,32.468 +2020-12-25 20:30:00,83.34,177.888,43.372,32.468 +2020-12-25 20:45:00,82.68,174.28599999999997,43.372,32.468 +2020-12-25 21:00:00,80.07,172.31599999999997,39.458,32.468 +2020-12-25 21:15:00,79.28,170.345,39.458,32.468 +2020-12-25 21:30:00,78.47,169.702,39.458,32.468 +2020-12-25 21:45:00,77.69,168.477,39.458,32.468 +2020-12-25 22:00:00,74.04,163.124,40.15,32.468 +2020-12-25 22:15:00,75.14,159.202,40.15,32.468 +2020-12-25 22:30:00,71.33,154.743,40.15,32.468 +2020-12-25 22:45:00,71.18,151.332,40.15,32.468 +2020-12-25 23:00:00,67.24,144.92,33.876999999999995,32.468 +2020-12-25 23:15:00,66.92,141.184,33.876999999999995,32.468 +2020-12-25 23:30:00,63.35,139.3,33.876999999999995,32.468 +2020-12-25 23:45:00,62.32,136.632,33.876999999999995,32.468 +2020-12-26 00:00:00,57.9,114.9,32.311,32.468 +2020-12-26 00:15:00,58.19,110.01,32.311,32.468 +2020-12-26 00:30:00,57.69,111.57700000000001,32.311,32.468 +2020-12-26 00:45:00,58.18,114.064,32.311,32.468 +2020-12-26 01:00:00,54.2,116.675,25.569000000000003,32.468 +2020-12-26 01:15:00,53.83,118.415,25.569000000000003,32.468 +2020-12-26 01:30:00,54.04,118.73299999999999,25.569000000000003,32.468 +2020-12-26 01:45:00,53.35,118.766,25.569000000000003,32.468 +2020-12-26 02:00:00,50.27,120.48200000000001,21.038,32.468 +2020-12-26 02:15:00,50.84,120.59299999999999,21.038,32.468 +2020-12-26 02:30:00,50.18,120.984,21.038,32.468 +2020-12-26 02:45:00,49.92,123.348,21.038,32.468 +2020-12-26 03:00:00,50.44,125.69200000000001,19.865,32.468 +2020-12-26 03:15:00,51.13,126.073,19.865,32.468 +2020-12-26 03:30:00,51.68,127.77799999999999,19.865,32.468 +2020-12-26 03:45:00,52.19,129.064,19.865,32.468 +2020-12-26 04:00:00,52.65,137.464,19.076,32.468 +2020-12-26 04:15:00,51.74,145.872,19.076,32.468 +2020-12-26 04:30:00,52.08,146.203,19.076,32.468 +2020-12-26 04:45:00,52.91,147.342,19.076,32.468 +2020-12-26 05:00:00,52.87,161.06799999999998,20.174,32.468 +2020-12-26 05:15:00,54.46,170.08900000000003,20.174,32.468 +2020-12-26 05:30:00,54.44,167.12099999999998,20.174,32.468 +2020-12-26 05:45:00,56.77,164.81099999999998,20.174,32.468 +2020-12-26 06:00:00,56.75,179.74099999999999,19.854,32.468 +2020-12-26 06:15:00,60.38,198.097,19.854,32.468 +2020-12-26 06:30:00,58.83,193.49,19.854,32.468 +2020-12-26 06:45:00,59.86,188.3,19.854,32.468 +2020-12-26 07:00:00,62.28,186.122,23.096999999999998,32.468 +2020-12-26 07:15:00,63.68,189.696,23.096999999999998,32.468 +2020-12-26 07:30:00,64.23,193.442,23.096999999999998,32.468 +2020-12-26 07:45:00,69.19,196.74200000000002,23.096999999999998,32.468 +2020-12-26 08:00:00,69.13,200.31099999999998,28.963,32.468 +2020-12-26 08:15:00,74.4,203.125,28.963,32.468 +2020-12-26 08:30:00,73.12,205.46400000000003,28.963,32.468 +2020-12-26 08:45:00,75.14,205.50900000000001,28.963,32.468 +2020-12-26 09:00:00,78.03,200.41099999999997,28.194000000000003,32.468 +2020-12-26 09:15:00,80.29,198.832,28.194000000000003,32.468 +2020-12-26 09:30:00,83.3,196.702,28.194000000000003,32.468 +2020-12-26 09:45:00,81.36,193.852,28.194000000000003,32.468 +2020-12-26 10:00:00,86.11,191.188,25.936999999999998,32.468 +2020-12-26 10:15:00,85.18,187.99400000000003,25.936999999999998,32.468 +2020-12-26 10:30:00,89.16,186.321,25.936999999999998,32.468 +2020-12-26 10:45:00,88.48,184.033,25.936999999999998,32.468 +2020-12-26 11:00:00,92.1,184.018,27.256,32.468 +2020-12-26 11:15:00,93.15,181.483,27.256,32.468 +2020-12-26 11:30:00,95.06,180.26,27.256,32.468 +2020-12-26 11:45:00,97.74,178.452,27.256,32.468 +2020-12-26 12:00:00,92.69,172.60299999999998,24.345,32.468 +2020-12-26 12:15:00,92.99,172.22400000000002,24.345,32.468 +2020-12-26 12:30:00,85.85,171.58,24.345,32.468 +2020-12-26 12:45:00,84.15,171.30599999999998,24.345,32.468 +2020-12-26 13:00:00,84.26,169.81599999999997,15.363,32.468 +2020-12-26 13:15:00,80.45,170.998,15.363,32.468 +2020-12-26 13:30:00,78.78,170.00900000000001,15.363,32.468 +2020-12-26 13:45:00,79.31,169.584,15.363,32.468 +2020-12-26 14:00:00,76.77,168.87099999999998,13.492,32.468 +2020-12-26 14:15:00,76.41,169.743,13.492,32.468 +2020-12-26 14:30:00,76.48,170.31900000000002,13.492,32.468 +2020-12-26 14:45:00,77.52,170.423,13.492,32.468 +2020-12-26 15:00:00,78.64,170.22299999999998,17.868,32.468 +2020-12-26 15:15:00,80.39,171.66,17.868,32.468 +2020-12-26 15:30:00,77.92,174.332,17.868,32.468 +2020-12-26 15:45:00,79.11,176.623,17.868,32.468 +2020-12-26 16:00:00,86.11,178.118,23.47,32.468 +2020-12-26 16:15:00,83.6,179.93900000000002,23.47,32.468 +2020-12-26 16:30:00,87.85,182.736,23.47,32.468 +2020-12-26 16:45:00,86.53,185.065,23.47,32.468 +2020-12-26 17:00:00,89.38,187.34400000000002,33.777,32.468 +2020-12-26 17:15:00,90.4,189.174,33.777,32.468 +2020-12-26 17:30:00,94.34,190.016,33.777,32.468 +2020-12-26 17:45:00,92.08,191.488,33.777,32.468 +2020-12-26 18:00:00,93.83,192.66099999999997,38.975,32.468 +2020-12-26 18:15:00,92.14,193.35299999999998,38.975,32.468 +2020-12-26 18:30:00,92.33,191.56799999999998,38.975,32.468 +2020-12-26 18:45:00,93.19,189.954,38.975,32.468 +2020-12-26 19:00:00,91.96,192.495,42.818999999999996,32.468 +2020-12-26 19:15:00,91.71,190.238,42.818999999999996,32.468 +2020-12-26 19:30:00,90.43,188.393,42.818999999999996,32.468 +2020-12-26 19:45:00,90.65,185.217,42.818999999999996,32.468 +2020-12-26 20:00:00,86.8,183.845,43.372,32.468 +2020-12-26 20:15:00,86.59,181.109,43.372,32.468 +2020-12-26 20:30:00,84.5,178.03799999999998,43.372,32.468 +2020-12-26 20:45:00,83.84,174.453,43.372,32.468 +2020-12-26 21:00:00,79.9,172.46599999999998,39.458,32.468 +2020-12-26 21:15:00,79.31,170.479,39.458,32.468 +2020-12-26 21:30:00,79.36,169.83700000000002,39.458,32.468 +2020-12-26 21:45:00,81.72,168.62400000000002,39.458,32.468 +2020-12-26 22:00:00,74.52,163.27200000000002,40.15,32.468 +2020-12-26 22:15:00,74.0,159.359,40.15,32.468 +2020-12-26 22:30:00,72.07,154.929,40.15,32.468 +2020-12-26 22:45:00,70.15,151.52700000000002,40.15,32.468 +2020-12-26 23:00:00,66.32,145.092,33.876999999999995,32.468 +2020-12-26 23:15:00,66.62,141.359,33.876999999999995,32.468 +2020-12-26 23:30:00,63.94,139.489,33.876999999999995,32.468 +2020-12-26 23:45:00,64.95,136.814,33.876999999999995,32.468 +2020-12-27 00:00:00,56.66,115.09299999999999,35.232,32.468 +2020-12-27 00:15:00,57.29,110.179,35.232,32.468 +2020-12-27 00:30:00,56.01,111.735,35.232,32.468 +2020-12-27 00:45:00,54.37,114.205,35.232,32.468 +2020-12-27 01:00:00,52.25,116.833,31.403000000000002,32.468 +2020-12-27 01:15:00,53.32,118.569,31.403000000000002,32.468 +2020-12-27 01:30:00,52.46,118.88799999999999,31.403000000000002,32.468 +2020-12-27 01:45:00,51.48,118.911,31.403000000000002,32.468 +2020-12-27 02:00:00,49.93,120.641,30.69,32.468 +2020-12-27 02:15:00,51.57,120.75299999999999,30.69,32.468 +2020-12-27 02:30:00,50.82,121.15,30.69,32.468 +2020-12-27 02:45:00,50.77,123.514,30.69,32.468 +2020-12-27 03:00:00,49.34,125.84899999999999,29.516,32.468 +2020-12-27 03:15:00,50.62,126.25200000000001,29.516,32.468 +2020-12-27 03:30:00,51.39,127.959,29.516,32.468 +2020-12-27 03:45:00,51.75,129.248,29.516,32.468 +2020-12-27 04:00:00,50.79,137.624,29.148000000000003,32.468 +2020-12-27 04:15:00,51.03,146.02700000000002,29.148000000000003,32.468 +2020-12-27 04:30:00,51.16,146.35299999999998,29.148000000000003,32.468 +2020-12-27 04:45:00,52.11,147.49,29.148000000000003,32.468 +2020-12-27 05:00:00,52.51,161.184,28.706,32.468 +2020-12-27 05:15:00,53.68,170.172,28.706,32.468 +2020-12-27 05:30:00,52.91,167.213,28.706,32.468 +2020-12-27 05:45:00,54.55,164.921,28.706,32.468 +2020-12-27 06:00:00,55.49,179.87400000000002,28.771,32.468 +2020-12-27 06:15:00,55.76,198.235,28.771,32.468 +2020-12-27 06:30:00,56.15,193.65400000000002,28.771,32.468 +2020-12-27 06:45:00,57.92,188.49599999999998,28.771,32.468 +2020-12-27 07:00:00,60.11,186.328,31.39,32.468 +2020-12-27 07:15:00,61.04,189.898,31.39,32.468 +2020-12-27 07:30:00,65.58,193.636,31.39,32.468 +2020-12-27 07:45:00,65.21,196.923,31.39,32.468 +2020-12-27 08:00:00,66.03,200.493,34.972,32.468 +2020-12-27 08:15:00,66.67,203.295,34.972,32.468 +2020-12-27 08:30:00,68.78,205.62,34.972,32.468 +2020-12-27 08:45:00,72.45,205.642,34.972,32.468 +2020-12-27 09:00:00,73.81,200.525,36.709,32.468 +2020-12-27 09:15:00,75.71,198.952,36.709,32.468 +2020-12-27 09:30:00,75.67,196.835,36.709,32.468 +2020-12-27 09:45:00,76.59,193.976,36.709,32.468 +2020-12-27 10:00:00,77.56,191.308,35.812,32.468 +2020-12-27 10:15:00,79.49,188.108,35.812,32.468 +2020-12-27 10:30:00,81.12,186.422,35.812,32.468 +2020-12-27 10:45:00,83.85,184.13299999999998,35.812,32.468 +2020-12-27 11:00:00,84.02,184.101,36.746,32.468 +2020-12-27 11:15:00,86.47,181.56,36.746,32.468 +2020-12-27 11:30:00,87.71,180.338,36.746,32.468 +2020-12-27 11:45:00,88.37,178.52900000000002,36.746,32.468 +2020-12-27 12:00:00,87.6,172.685,35.048,32.468 +2020-12-27 12:15:00,85.66,172.321,35.048,32.468 +2020-12-27 12:30:00,83.94,171.68,35.048,32.468 +2020-12-27 12:45:00,84.23,171.40900000000002,35.048,32.468 +2020-12-27 13:00:00,81.23,169.90400000000002,29.987,32.468 +2020-12-27 13:15:00,79.67,171.08,29.987,32.468 +2020-12-27 13:30:00,78.24,170.083,29.987,32.468 +2020-12-27 13:45:00,77.15,169.65,29.987,32.468 +2020-12-27 14:00:00,73.27,168.938,27.21,32.468 +2020-12-27 14:15:00,75.35,169.808,27.21,32.468 +2020-12-27 14:30:00,74.83,170.398,27.21,32.468 +2020-12-27 14:45:00,74.81,170.515,27.21,32.468 +2020-12-27 15:00:00,75.04,170.331,27.726999999999997,32.468 +2020-12-27 15:15:00,76.57,171.757,27.726999999999997,32.468 +2020-12-27 15:30:00,77.1,174.43400000000003,27.726999999999997,32.468 +2020-12-27 15:45:00,79.95,176.72,27.726999999999997,32.468 +2020-12-27 16:00:00,85.35,178.213,32.23,32.468 +2020-12-27 16:15:00,85.01,180.049,32.23,32.468 +2020-12-27 16:30:00,85.83,182.852,32.23,32.468 +2020-12-27 16:45:00,87.36,185.197,32.23,32.468 +2020-12-27 17:00:00,89.42,187.457,42.016999999999996,32.468 +2020-12-27 17:15:00,89.72,189.315,42.016999999999996,32.468 +2020-12-27 17:30:00,91.66,190.179,42.016999999999996,32.468 +2020-12-27 17:45:00,92.42,191.665,42.016999999999996,32.468 +2020-12-27 18:00:00,93.13,192.858,49.338,32.468 +2020-12-27 18:15:00,92.27,193.541,49.338,32.468 +2020-12-27 18:30:00,93.04,191.763,49.338,32.468 +2020-12-27 18:45:00,92.9,190.16299999999998,49.338,32.468 +2020-12-27 19:00:00,91.41,192.68,52.369,32.468 +2020-12-27 19:15:00,90.74,190.42,52.369,32.468 +2020-12-27 19:30:00,89.58,188.57299999999998,52.369,32.468 +2020-12-27 19:45:00,88.24,185.388,52.369,32.468 +2020-12-27 20:00:00,84.87,184.005,50.405,32.468 +2020-12-27 20:15:00,84.15,181.267,50.405,32.468 +2020-12-27 20:30:00,82.18,178.18099999999998,50.405,32.468 +2020-12-27 20:45:00,80.95,174.613,50.405,32.468 +2020-12-27 21:00:00,77.99,172.61,46.235,32.468 +2020-12-27 21:15:00,79.18,170.606,46.235,32.468 +2020-12-27 21:30:00,78.7,169.965,46.235,32.468 +2020-12-27 21:45:00,80.23,168.764,46.235,32.468 +2020-12-27 22:00:00,76.73,163.412,46.861000000000004,32.468 +2020-12-27 22:15:00,73.06,159.51,46.861000000000004,32.468 +2020-12-27 22:30:00,70.7,155.107,46.861000000000004,32.468 +2020-12-27 22:45:00,70.0,151.71200000000002,46.861000000000004,32.468 +2020-12-27 23:00:00,65.04,145.257,41.302,32.468 +2020-12-27 23:15:00,65.95,141.525,41.302,32.468 +2020-12-27 23:30:00,64.23,139.66899999999998,41.302,32.468 +2020-12-27 23:45:00,63.33,136.99,41.302,32.468 +2020-12-28 00:00:00,57.03,119.344,37.164,32.468 +2020-12-28 00:15:00,57.21,117.274,37.164,32.468 +2020-12-28 00:30:00,56.31,118.925,37.164,32.468 +2020-12-28 00:45:00,56.35,120.848,37.164,32.468 +2020-12-28 01:00:00,52.26,123.51899999999999,34.994,32.468 +2020-12-28 01:15:00,53.0,124.74799999999999,34.994,32.468 +2020-12-28 01:30:00,52.53,125.137,34.994,32.468 +2020-12-28 01:45:00,52.32,125.25399999999999,34.994,32.468 +2020-12-28 02:00:00,51.03,126.993,34.571,32.468 +2020-12-28 02:15:00,52.03,128.454,34.571,32.468 +2020-12-28 02:30:00,50.99,129.18200000000002,34.571,32.468 +2020-12-28 02:45:00,50.55,130.94799999999998,34.571,32.468 +2020-12-28 03:00:00,49.6,134.501,33.934,32.468 +2020-12-28 03:15:00,51.33,136.524,33.934,32.468 +2020-12-28 03:30:00,50.91,138.001,33.934,32.468 +2020-12-28 03:45:00,51.45,138.749,33.934,32.468 +2020-12-28 04:00:00,51.82,151.371,34.107,32.468 +2020-12-28 04:15:00,52.15,163.84,34.107,32.468 +2020-12-28 04:30:00,53.03,166.226,34.107,32.468 +2020-12-28 04:45:00,54.7,167.53099999999998,34.107,32.468 +2020-12-28 05:00:00,57.21,196.475,39.575,32.468 +2020-12-28 05:15:00,58.21,225.044,39.575,32.468 +2020-12-28 05:30:00,58.82,222.28799999999998,39.575,32.468 +2020-12-28 05:45:00,60.69,214.507,39.575,32.468 +2020-12-28 06:00:00,63.74,211.99599999999998,56.156000000000006,32.468 +2020-12-28 06:15:00,64.22,215.868,56.156000000000006,32.468 +2020-12-28 06:30:00,66.48,219.101,56.156000000000006,32.468 +2020-12-28 06:45:00,67.97,222.567,56.156000000000006,32.468 +2020-12-28 07:00:00,71.66,222.68099999999998,67.926,32.468 +2020-12-28 07:15:00,73.71,227.53,67.926,32.468 +2020-12-28 07:30:00,73.74,230.484,67.926,32.468 +2020-12-28 07:45:00,76.15,231.332,67.926,32.468 +2020-12-28 08:00:00,78.92,230.185,72.58,32.468 +2020-12-28 08:15:00,77.89,230.88400000000001,72.58,32.468 +2020-12-28 08:30:00,79.51,229.27,72.58,32.468 +2020-12-28 08:45:00,81.98,226.108,72.58,32.468 +2020-12-28 09:00:00,84.91,219.989,66.984,32.468 +2020-12-28 09:15:00,86.68,215.032,66.984,32.468 +2020-12-28 09:30:00,86.35,211.93599999999998,66.984,32.468 +2020-12-28 09:45:00,87.57,209.25400000000002,66.984,32.468 +2020-12-28 10:00:00,88.75,205.554,63.158,32.468 +2020-12-28 10:15:00,89.35,202.032,63.158,32.468 +2020-12-28 10:30:00,90.53,199.482,63.158,32.468 +2020-12-28 10:45:00,92.46,197.829,63.158,32.468 +2020-12-28 11:00:00,92.51,195.31900000000002,61.141000000000005,32.468 +2020-12-28 11:15:00,93.89,194.49599999999998,61.141000000000005,32.468 +2020-12-28 11:30:00,95.76,194.61599999999999,61.141000000000005,32.468 +2020-12-28 11:45:00,98.55,192.44299999999998,61.141000000000005,32.468 +2020-12-28 12:00:00,96.46,188.148,57.961000000000006,32.468 +2020-12-28 12:15:00,96.89,187.805,57.961000000000006,32.468 +2020-12-28 12:30:00,94.61,187.355,57.961000000000006,32.468 +2020-12-28 12:45:00,93.99,188.53,57.961000000000006,32.468 +2020-12-28 13:00:00,91.48,187.59599999999998,56.843,32.468 +2020-12-28 13:15:00,89.62,187.41299999999998,56.843,32.468 +2020-12-28 13:30:00,87.6,185.91299999999998,56.843,32.468 +2020-12-28 13:45:00,89.12,185.547,56.843,32.468 +2020-12-28 14:00:00,86.23,184.21599999999998,55.992,32.468 +2020-12-28 14:15:00,84.24,184.503,55.992,32.468 +2020-12-28 14:30:00,84.27,184.58700000000002,55.992,32.468 +2020-12-28 14:45:00,84.15,184.78400000000002,55.992,32.468 +2020-12-28 15:00:00,83.99,186.304,57.523,32.468 +2020-12-28 15:15:00,84.98,186.33,57.523,32.468 +2020-12-28 15:30:00,82.61,188.26,57.523,32.468 +2020-12-28 15:45:00,84.31,190.09599999999998,57.523,32.468 +2020-12-28 16:00:00,90.69,191.83599999999998,59.471000000000004,32.468 +2020-12-28 16:15:00,89.04,192.96099999999998,59.471000000000004,32.468 +2020-12-28 16:30:00,91.46,194.821,59.471000000000004,32.468 +2020-12-28 16:45:00,92.1,196.054,59.471000000000004,32.468 +2020-12-28 17:00:00,95.79,198.107,65.066,32.468 +2020-12-28 17:15:00,96.36,199.09599999999998,65.066,32.468 +2020-12-28 17:30:00,94.64,199.445,65.066,32.468 +2020-12-28 17:45:00,94.08,199.503,65.066,32.468 +2020-12-28 18:00:00,92.03,201.101,69.581,32.468 +2020-12-28 18:15:00,92.63,199.59799999999998,69.581,32.468 +2020-12-28 18:30:00,92.68,198.426,69.581,32.468 +2020-12-28 18:45:00,95.26,197.632,69.581,32.468 +2020-12-28 19:00:00,91.26,198.58,73.771,32.468 +2020-12-28 19:15:00,88.66,195.235,73.771,32.468 +2020-12-28 19:30:00,89.79,193.85,73.771,32.468 +2020-12-28 19:45:00,85.86,189.838,73.771,32.468 +2020-12-28 20:00:00,81.83,186.13400000000001,65.035,32.468 +2020-12-28 20:15:00,80.18,181.06099999999998,65.035,32.468 +2020-12-28 20:30:00,78.48,176.19099999999997,65.035,32.468 +2020-12-28 20:45:00,77.08,174.206,65.035,32.468 +2020-12-28 21:00:00,73.88,172.676,58.7,32.468 +2020-12-28 21:15:00,73.68,169.542,58.7,32.468 +2020-12-28 21:30:00,72.87,168.12400000000002,58.7,32.468 +2020-12-28 21:45:00,72.61,166.44099999999997,58.7,32.468 +2020-12-28 22:00:00,69.98,158.253,53.888000000000005,32.468 +2020-12-28 22:15:00,69.76,153.156,53.888000000000005,32.468 +2020-12-28 22:30:00,68.69,139.464,53.888000000000005,32.468 +2020-12-28 22:45:00,68.64,131.43200000000002,53.888000000000005,32.468 +2020-12-28 23:00:00,64.36,125.7,45.501999999999995,32.468 +2020-12-28 23:15:00,66.25,124.46799999999999,45.501999999999995,32.468 +2020-12-28 23:30:00,64.12,125.277,45.501999999999995,32.468 +2020-12-28 23:45:00,64.06,125.116,45.501999999999995,32.468 +2020-12-29 00:00:00,57.18,118.78299999999999,43.537,32.468 +2020-12-29 00:15:00,56.17,118.086,43.537,32.468 +2020-12-29 00:30:00,56.18,118.84700000000001,43.537,32.468 +2020-12-29 00:45:00,56.31,119.844,43.537,32.468 +2020-12-29 01:00:00,53.79,122.324,41.854,32.468 +2020-12-29 01:15:00,53.88,123.124,41.854,32.468 +2020-12-29 01:30:00,50.49,123.676,41.854,32.468 +2020-12-29 01:45:00,53.7,124.057,41.854,32.468 +2020-12-29 02:00:00,51.98,125.79,40.321,32.468 +2020-12-29 02:15:00,53.31,127.184,40.321,32.468 +2020-12-29 02:30:00,53.66,127.334,40.321,32.468 +2020-12-29 02:45:00,53.8,129.121,40.321,32.468 +2020-12-29 03:00:00,53.3,131.494,39.632,32.468 +2020-12-29 03:15:00,58.73,132.754,39.632,32.468 +2020-12-29 03:30:00,61.45,134.694,39.632,32.468 +2020-12-29 03:45:00,56.91,135.592,39.632,32.468 +2020-12-29 04:00:00,58.6,147.961,40.183,32.468 +2020-12-29 04:15:00,58.92,160.092,40.183,32.468 +2020-12-29 04:30:00,58.73,162.172,40.183,32.468 +2020-12-29 04:45:00,60.76,164.65200000000002,40.183,32.468 +2020-12-29 05:00:00,65.7,198.412,43.945,32.468 +2020-12-29 05:15:00,68.23,226.771,43.945,32.468 +2020-12-29 05:30:00,72.46,222.56099999999998,43.945,32.468 +2020-12-29 05:45:00,78.0,214.78,43.945,32.468 +2020-12-29 06:00:00,86.13,211.19,56.048,32.468 +2020-12-29 06:15:00,90.88,216.63400000000001,56.048,32.468 +2020-12-29 06:30:00,98.39,219.25900000000001,56.048,32.468 +2020-12-29 06:45:00,101.09,222.36700000000002,56.048,32.468 +2020-12-29 07:00:00,109.02,222.32,65.74,32.468 +2020-12-29 07:15:00,110.78,227.003,65.74,32.468 +2020-12-29 07:30:00,111.89,229.425,65.74,32.468 +2020-12-29 07:45:00,116.47,230.43099999999998,65.74,32.468 +2020-12-29 08:00:00,119.28,229.387,72.757,32.468 +2020-12-29 08:15:00,119.18,229.077,72.757,32.468 +2020-12-29 08:30:00,121.46,227.28400000000002,72.757,32.468 +2020-12-29 08:45:00,123.85,223.81599999999997,72.757,32.468 +2020-12-29 09:00:00,126.31,216.889,67.692,32.468 +2020-12-29 09:15:00,127.18,213.46900000000002,67.692,32.468 +2020-12-29 09:30:00,129.54,211.058,67.692,32.468 +2020-12-29 09:45:00,127.09,208.2,67.692,32.468 +2020-12-29 10:00:00,130.14,203.892,63.506,32.468 +2020-12-29 10:15:00,131.8,199.34099999999998,63.506,32.468 +2020-12-29 10:30:00,131.24,196.954,63.506,32.468 +2020-12-29 10:45:00,133.38,195.604,63.506,32.468 +2020-12-29 11:00:00,132.11,194.502,60.758,32.468 +2020-12-29 11:15:00,132.81,193.368,60.758,32.468 +2020-12-29 11:30:00,132.74,192.33700000000002,60.758,32.468 +2020-12-29 11:45:00,132.51,190.82,60.758,32.468 +2020-12-29 12:00:00,133.01,185.213,57.519,32.468 +2020-12-29 12:15:00,132.94,184.5,57.519,32.468 +2020-12-29 12:30:00,132.61,184.77200000000002,57.519,32.468 +2020-12-29 12:45:00,131.32,185.69400000000002,57.519,32.468 +2020-12-29 13:00:00,129.11,184.345,56.46,32.468 +2020-12-29 13:15:00,129.11,183.888,56.46,32.468 +2020-12-29 13:30:00,128.11,183.49900000000002,56.46,32.468 +2020-12-29 13:45:00,128.44,183.268,56.46,32.468 +2020-12-29 14:00:00,129.73,182.227,56.207,32.468 +2020-12-29 14:15:00,128.01,182.65400000000002,56.207,32.468 +2020-12-29 14:30:00,127.57,183.363,56.207,32.468 +2020-12-29 14:45:00,128.05,183.468,56.207,32.468 +2020-12-29 15:00:00,125.11,184.584,57.391999999999996,32.468 +2020-12-29 15:15:00,124.05,184.94799999999998,57.391999999999996,32.468 +2020-12-29 15:30:00,122.28,187.088,57.391999999999996,32.468 +2020-12-29 15:45:00,122.29,188.547,57.391999999999996,32.468 +2020-12-29 16:00:00,126.09,190.58,59.955,32.468 +2020-12-29 16:15:00,127.33,192.178,59.955,32.468 +2020-12-29 16:30:00,131.25,194.65200000000002,59.955,32.468 +2020-12-29 16:45:00,132.28,196.199,59.955,32.468 +2020-12-29 17:00:00,135.14,198.761,67.063,32.468 +2020-12-29 17:15:00,134.64,199.817,67.063,32.468 +2020-12-29 17:30:00,135.54,200.817,67.063,32.468 +2020-12-29 17:45:00,135.22,200.755,67.063,32.468 +2020-12-29 18:00:00,135.98,202.24900000000002,71.477,32.468 +2020-12-29 18:15:00,133.12,200.295,71.477,32.468 +2020-12-29 18:30:00,132.74,198.825,71.477,32.468 +2020-12-29 18:45:00,132.76,198.80900000000003,71.477,32.468 +2020-12-29 19:00:00,129.1,199.782,74.32,32.468 +2020-12-29 19:15:00,131.66,196.169,74.32,32.468 +2020-12-29 19:30:00,131.57,194.13,74.32,32.468 +2020-12-29 19:45:00,134.28,190.15400000000002,74.32,32.468 +2020-12-29 20:00:00,124.16,186.60299999999998,66.157,32.468 +2020-12-29 20:15:00,118.77,180.87400000000002,66.157,32.468 +2020-12-29 20:30:00,114.09,176.968,66.157,32.468 +2020-12-29 20:45:00,113.21,174.458,66.157,32.468 +2020-12-29 21:00:00,104.2,172.25900000000001,59.806000000000004,32.468 +2020-12-29 21:15:00,110.79,169.947,59.806000000000004,32.468 +2020-12-29 21:30:00,106.78,167.829,59.806000000000004,32.468 +2020-12-29 21:45:00,106.31,166.38299999999998,59.806000000000004,32.468 +2020-12-29 22:00:00,95.44,159.85399999999998,54.785,32.468 +2020-12-29 22:15:00,92.96,154.50799999999998,54.785,32.468 +2020-12-29 22:30:00,85.11,140.935,54.785,32.468 +2020-12-29 22:45:00,86.87,133.178,54.785,32.468 +2020-12-29 23:00:00,82.77,127.431,47.176,32.468 +2020-12-29 23:15:00,84.86,125.367,47.176,32.468 +2020-12-29 23:30:00,77.52,125.84200000000001,47.176,32.468 +2020-12-29 23:45:00,78.36,125.257,47.176,32.468 +2020-12-30 00:00:00,81.02,118.954,43.42,32.468 +2020-12-30 00:15:00,81.82,118.23299999999999,43.42,32.468 +2020-12-30 00:30:00,81.73,118.985,43.42,32.468 +2020-12-30 00:45:00,76.13,119.964,43.42,32.468 +2020-12-30 01:00:00,70.28,122.458,40.869,32.468 +2020-12-30 01:15:00,74.3,123.25299999999999,40.869,32.468 +2020-12-30 01:30:00,77.22,123.807,40.869,32.468 +2020-12-30 01:45:00,76.85,124.179,40.869,32.468 +2020-12-30 02:00:00,73.1,125.92399999999999,39.541,32.468 +2020-12-30 02:15:00,70.43,127.319,39.541,32.468 +2020-12-30 02:30:00,71.98,127.475,39.541,32.468 +2020-12-30 02:45:00,76.52,129.263,39.541,32.468 +2020-12-30 03:00:00,75.41,131.627,39.052,32.468 +2020-12-30 03:15:00,74.83,132.908,39.052,32.468 +2020-12-30 03:30:00,72.89,134.84799999999998,39.052,32.468 +2020-12-30 03:45:00,79.01,135.749,39.052,32.468 +2020-12-30 04:00:00,76.82,148.096,40.36,32.468 +2020-12-30 04:15:00,72.95,160.222,40.36,32.468 +2020-12-30 04:30:00,72.14,162.297,40.36,32.468 +2020-12-30 04:45:00,80.94,164.775,40.36,32.468 +2020-12-30 05:00:00,88.48,198.503,43.133,32.468 +2020-12-30 05:15:00,91.18,226.833,43.133,32.468 +2020-12-30 05:30:00,90.88,222.62900000000002,43.133,32.468 +2020-12-30 05:45:00,93.94,214.865,43.133,32.468 +2020-12-30 06:00:00,101.26,211.298,54.953,32.468 +2020-12-30 06:15:00,106.96,216.748,54.953,32.468 +2020-12-30 06:30:00,112.28,219.395,54.953,32.468 +2020-12-30 06:45:00,115.14,222.53400000000002,54.953,32.468 +2020-12-30 07:00:00,123.05,222.49900000000002,66.566,32.468 +2020-12-30 07:15:00,123.6,227.174,66.566,32.468 +2020-12-30 07:30:00,126.82,229.58599999999998,66.566,32.468 +2020-12-30 07:45:00,128.84,230.578,66.566,32.468 +2020-12-30 08:00:00,131.65,229.533,72.902,32.468 +2020-12-30 08:15:00,130.78,229.21,72.902,32.468 +2020-12-30 08:30:00,132.01,227.4,72.902,32.468 +2020-12-30 08:45:00,132.85,223.91099999999997,72.902,32.468 +2020-12-30 09:00:00,134.02,216.967,68.465,32.468 +2020-12-30 09:15:00,135.31,213.55200000000002,68.465,32.468 +2020-12-30 09:30:00,136.11,211.15400000000002,68.465,32.468 +2020-12-30 09:45:00,137.25,208.28900000000002,68.465,32.468 +2020-12-30 10:00:00,135.85,203.97799999999998,63.625,32.468 +2020-12-30 10:15:00,138.58,199.425,63.625,32.468 +2020-12-30 10:30:00,138.23,197.024,63.625,32.468 +2020-12-30 10:45:00,136.57,195.674,63.625,32.468 +2020-12-30 11:00:00,133.24,194.555,61.628,32.468 +2020-12-30 11:15:00,126.44,193.417,61.628,32.468 +2020-12-30 11:30:00,130.71,192.387,61.628,32.468 +2020-12-30 11:45:00,129.54,190.87099999999998,61.628,32.468 +2020-12-30 12:00:00,125.24,185.268,58.708999999999996,32.468 +2020-12-30 12:15:00,124.69,184.571,58.708999999999996,32.468 +2020-12-30 12:30:00,123.95,184.84400000000002,58.708999999999996,32.468 +2020-12-30 12:45:00,129.68,185.769,58.708999999999996,32.468 +2020-12-30 13:00:00,133.73,184.407,57.373000000000005,32.468 +2020-12-30 13:15:00,136.53,183.94400000000002,57.373000000000005,32.468 +2020-12-30 13:30:00,133.6,183.545,57.373000000000005,32.468 +2020-12-30 13:45:00,133.51,183.30599999999998,57.373000000000005,32.468 +2020-12-30 14:00:00,132.59,182.271,57.684,32.468 +2020-12-30 14:15:00,131.17,182.69400000000002,57.684,32.468 +2020-12-30 14:30:00,128.89,183.417,57.684,32.468 +2020-12-30 14:45:00,127.23,183.533,57.684,32.468 +2020-12-30 15:00:00,128.01,184.666,58.03,32.468 +2020-12-30 15:15:00,127.89,185.017,58.03,32.468 +2020-12-30 15:30:00,127.38,187.16,58.03,32.468 +2020-12-30 15:45:00,128.01,188.612,58.03,32.468 +2020-12-30 16:00:00,131.71,190.645,59.97,32.468 +2020-12-30 16:15:00,132.63,192.255,59.97,32.468 +2020-12-30 16:30:00,136.55,194.735,59.97,32.468 +2020-12-30 16:45:00,136.97,196.297,59.97,32.468 +2020-12-30 17:00:00,140.13,198.84099999999998,65.661,32.468 +2020-12-30 17:15:00,138.72,199.924,65.661,32.468 +2020-12-30 17:30:00,136.98,200.94799999999998,65.661,32.468 +2020-12-30 17:45:00,138.66,200.9,65.661,32.468 +2020-12-30 18:00:00,138.81,202.41299999999998,70.96300000000001,32.468 +2020-12-30 18:15:00,137.74,200.455,70.96300000000001,32.468 +2020-12-30 18:30:00,135.58,198.99099999999999,70.96300000000001,32.468 +2020-12-30 18:45:00,136.58,198.989,70.96300000000001,32.468 +2020-12-30 19:00:00,133.41,199.937,74.133,32.468 +2020-12-30 19:15:00,132.16,196.324,74.133,32.468 +2020-12-30 19:30:00,129.15,194.283,74.133,32.468 +2020-12-30 19:45:00,128.43,190.3,74.133,32.468 +2020-12-30 20:00:00,120.97,186.738,65.613,32.468 +2020-12-30 20:15:00,116.68,181.007,65.613,32.468 +2020-12-30 20:30:00,112.92,177.08900000000003,65.613,32.468 +2020-12-30 20:45:00,113.77,174.59599999999998,65.613,32.468 +2020-12-30 21:00:00,108.79,172.378,58.583,32.468 +2020-12-30 21:15:00,113.74,170.051,58.583,32.468 +2020-12-30 21:30:00,111.85,167.933,58.583,32.468 +2020-12-30 21:45:00,107.84,166.5,58.583,32.468 +2020-12-30 22:00:00,97.67,159.97,54.411,32.468 +2020-12-30 22:15:00,98.11,154.636,54.411,32.468 +2020-12-30 22:30:00,96.26,141.086,54.411,32.468 +2020-12-30 22:45:00,94.93,133.338,54.411,32.468 +2020-12-30 23:00:00,90.4,127.57,47.878,32.468 +2020-12-30 23:15:00,82.73,125.509,47.878,32.468 +2020-12-30 23:30:00,77.9,125.99799999999999,47.878,32.468 +2020-12-30 23:45:00,78.08,125.40899999999999,47.878,32.468 +2020-12-31 00:00:00,72.56,119.118,44.513000000000005,32.468 +2020-12-31 00:15:00,75.51,118.375,44.513000000000005,32.468 +2020-12-31 00:30:00,76.2,119.11399999999999,44.513000000000005,32.468 +2020-12-31 00:45:00,79.94,120.07600000000001,44.513000000000005,32.468 +2020-12-31 01:00:00,76.22,122.584,43.169,32.468 +2020-12-31 01:15:00,75.52,123.374,43.169,32.468 +2020-12-31 01:30:00,69.71,123.929,43.169,32.468 +2020-12-31 01:45:00,72.15,124.29,43.169,32.468 +2020-12-31 02:00:00,68.46,126.051,41.763999999999996,32.468 +2020-12-31 02:15:00,68.93,127.444,41.763999999999996,32.468 +2020-12-31 02:30:00,69.13,127.60799999999999,41.763999999999996,32.468 +2020-12-31 02:45:00,71.05,129.394,41.763999999999996,32.468 +2020-12-31 03:00:00,77.24,131.754,41.155,32.468 +2020-12-31 03:15:00,78.88,133.054,41.155,32.468 +2020-12-31 03:30:00,79.6,134.993,41.155,32.468 +2020-12-31 03:45:00,73.47,135.89700000000002,41.155,32.468 +2020-12-31 04:00:00,71.66,148.222,41.96,32.468 +2020-12-31 04:15:00,72.6,160.344,41.96,32.468 +2020-12-31 04:30:00,74.43,162.416,41.96,32.468 +2020-12-31 04:45:00,76.31,164.89,41.96,32.468 +2020-12-31 05:00:00,80.9,198.58599999999998,45.206,32.468 +2020-12-31 05:15:00,83.91,226.886,45.206,32.468 +2020-12-31 05:30:00,88.55,222.68900000000002,45.206,32.468 +2020-12-31 05:45:00,92.98,214.942,45.206,32.468 +2020-12-31 06:00:00,101.92,211.398,55.398999999999994,32.468 +2020-12-31 06:15:00,106.02,216.854,55.398999999999994,32.468 +2020-12-31 06:30:00,110.67,219.52200000000002,55.398999999999994,32.468 +2020-12-31 06:45:00,115.36,222.69,55.398999999999994,32.468 +2020-12-31 07:00:00,121.21,222.667,64.627,32.468 +2020-12-31 07:15:00,125.44,227.334,64.627,32.468 +2020-12-31 07:30:00,127.04,229.737,64.627,32.468 +2020-12-31 07:45:00,129.3,230.713,64.627,32.468 +2020-12-31 08:00:00,131.83,229.668,70.895,32.468 +2020-12-31 08:15:00,129.92,229.331,70.895,32.468 +2020-12-31 08:30:00,130.03,227.505,70.895,32.468 +2020-12-31 08:45:00,129.65,223.993,70.895,32.468 +2020-12-31 09:00:00,130.4,217.032,66.382,32.468 +2020-12-31 09:15:00,132.18,213.62400000000002,66.382,32.468 +2020-12-31 09:30:00,133.68,211.239,66.382,32.468 +2020-12-31 09:45:00,133.99,208.36700000000002,66.382,32.468 +2020-12-31 10:00:00,133.44,204.053,62.739,32.468 +2020-12-31 10:15:00,135.64,199.49599999999998,62.739,32.468 +2020-12-31 10:30:00,134.92,197.084,62.739,32.468 +2020-12-31 10:45:00,136.65,195.734,62.739,32.468 +2020-12-31 11:00:00,136.01,194.59799999999998,60.843,32.468 +2020-12-31 11:15:00,135.6,193.455,60.843,32.468 +2020-12-31 11:30:00,135.49,192.428,60.843,32.468 +2020-12-31 11:45:00,136.56,190.91299999999998,60.843,32.468 +2020-12-31 12:00:00,136.24,185.315,58.466,32.468 +2020-12-31 12:15:00,135.89,184.63299999999998,58.466,32.468 +2020-12-31 12:30:00,133.92,184.908,58.466,32.468 +2020-12-31 12:45:00,134.1,185.834,58.466,32.468 +2020-12-31 13:00:00,130.94,184.46,56.883,32.468 +2020-12-31 13:15:00,129.98,183.99,56.883,32.468 +2020-12-31 13:30:00,129.31,183.582,56.883,32.468 +2020-12-31 13:45:00,127.59,183.33599999999998,56.883,32.468 +2020-12-31 14:00:00,126.5,182.30700000000002,56.503,32.468 +2020-12-31 14:15:00,129.81,182.727,56.503,32.468 +2020-12-31 14:30:00,128.98,183.46099999999998,56.503,32.468 +2020-12-31 14:45:00,127.66,183.59,56.503,32.468 +2020-12-31 15:00:00,131.69,184.74,57.803999999999995,32.468 +2020-12-31 15:15:00,134.08,185.078,57.803999999999995,32.468 +2020-12-31 15:30:00,130.49,187.222,57.803999999999995,32.468 +2020-12-31 15:45:00,132.71,188.668,57.803999999999995,32.468 +2020-12-31 16:00:00,134.12,190.7,59.379,32.468 +2020-12-31 16:15:00,134.79,192.322,59.379,32.468 +2020-12-31 16:30:00,137.68,194.80599999999998,59.379,32.468 +2020-12-31 16:45:00,138.3,196.382,59.379,32.468 +2020-12-31 17:00:00,141.23,198.90900000000002,64.71600000000001,32.468 +2020-12-31 17:15:00,140.55,200.021,64.71600000000001,32.468 +2020-12-31 17:30:00,141.63,201.067,64.71600000000001,32.468 +2020-12-31 17:45:00,141.55,201.035,64.71600000000001,32.468 +2020-12-31 18:00:00,140.02,202.56799999999998,68.803,32.468 +2020-12-31 18:15:00,138.28,200.606,68.803,32.468 +2020-12-31 18:30:00,137.19,199.14700000000002,68.803,32.468 +2020-12-31 18:45:00,137.6,199.16,68.803,32.468 +2020-12-31 19:00:00,134.26,200.084,72.934,32.468 +2020-12-31 19:15:00,133.22,196.468,72.934,32.468 +2020-12-31 19:30:00,134.64,194.42700000000002,72.934,32.468 +2020-12-31 19:45:00,136.88,190.43900000000002,72.934,32.468 +2020-12-31 20:00:00,130.24,186.864,65.175,32.468 +2020-12-31 20:15:00,119.33,181.132,65.175,32.468 +2020-12-31 20:30:00,118.31,177.201,65.175,32.468 +2020-12-31 20:45:00,112.7,174.72400000000002,65.175,32.468 +2020-12-31 21:00:00,107.44,172.49,58.55,32.468 +2020-12-31 21:15:00,112.86,170.146,58.55,32.468 +2020-12-31 21:30:00,111.93,168.03,58.55,32.468 +2020-12-31 21:45:00,108.29,166.609,58.55,32.468 +2020-12-31 22:00:00,98.52,160.079,55.041000000000004,32.468 +2020-12-31 22:15:00,94.85,154.757,55.041000000000004,32.468 +2020-12-31 22:30:00,98.1,141.22899999999998,55.041000000000004,32.468 +2020-12-31 22:45:00,96.62,133.488,55.041000000000004,32.468 +2020-12-31 23:00:00,92.22,127.7,48.258,32.468 +2020-12-31 23:15:00,84.12,125.64200000000001,48.258,32.468 +2020-12-31 23:30:00,79.31,126.145,48.258,32.468 +2020-12-31 23:45:00,83.54,125.553,48.258,32.468 diff --git a/tests/deprecated/test_examples.py b/tests/deprecated/test_examples.py new file mode 100644 index 000000000..020670552 --- /dev/null +++ b/tests/deprecated/test_examples.py @@ -0,0 +1,94 @@ +import os +import subprocess +import sys +from contextlib import contextmanager +from pathlib import Path + +import pytest + +# Path to the examples directory +EXAMPLES_DIR = Path(__file__).parent.parent / 'examples' + +# Examples that have dependencies and must run in sequence +DEPENDENT_EXAMPLES = ( + '02_Complex/complex_example.py', + '02_Complex/complex_example_results.py', +) + + +@contextmanager +def working_directory(path): + """Context manager for changing the working directory.""" + original_cwd = os.getcwd() + try: + os.chdir(path) + yield + finally: + os.chdir(original_cwd) + + +@pytest.mark.parametrize( + 'example_script', + sorted( + [p for p in EXAMPLES_DIR.rglob('*.py') if str(p.relative_to(EXAMPLES_DIR)) not in DEPENDENT_EXAMPLES], + key=lambda path: (str(path.parent), path.name), + ), + ids=lambda path: str(path.relative_to(EXAMPLES_DIR)).replace(os.sep, '/'), +) +@pytest.mark.examples +def test_independent_examples(example_script): + """ + Test independent example scripts. + Ensures they run without errors. + Changes the current working directory to the directory of the example script. + Runs them alphabetically. + This imitates behaviour of running the script directly. + """ + with working_directory(example_script.parent): + timeout = 800 + # Set environment variable to disable interactive plotting + env = os.environ.copy() + env['FLIXOPT_CI'] = 'true' + try: + result = subprocess.run( + [sys.executable, example_script.name], + capture_output=True, + text=True, + timeout=timeout, + env=env, + ) + except subprocess.TimeoutExpired: + pytest.fail(f'Script {example_script} timed out after {timeout} seconds') + + assert result.returncode == 0, ( + f'Script {example_script} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' + ) + + +@pytest.mark.examples +def test_dependent_examples(): + """Test examples that must run in order (complex_example.py generates data for complex_example_results.py).""" + for script_path in DEPENDENT_EXAMPLES: + script_full_path = EXAMPLES_DIR / script_path + + with working_directory(script_full_path.parent): + timeout = 600 + # Set environment variable to disable interactive plotting + env = os.environ.copy() + env['FLIXOPT_CI'] = 'true' + try: + result = subprocess.run( + [sys.executable, script_full_path.name], + capture_output=True, + text=True, + timeout=timeout, + env=env, + ) + except subprocess.TimeoutExpired: + pytest.fail(f'Script {script_path} timed out after {timeout} seconds') + + assert result.returncode == 0, f'{script_path} failed:\nSTDERR:\n{result.stderr}\nSTDOUT:\n{result.stdout}' + + +if __name__ == '__main__': + pytest.main(['-v', '--disable-warnings', '-m', 'examples']) From 91bfd771ec4b5d4041f80c31d1e528e91e4e9133 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 10:34:41 +0100 Subject: [PATCH 45/88] Add conversion utility for old flow_systems and results --- flixopt/io.py | 199 ++++++++++++++++++++ flixopt/results.py | 46 +++++ tests/test_io_conversion.py | 363 ++++++++++++++++++++++++++++++++++++ 3 files changed, 608 insertions(+) create mode 100644 tests/test_io_conversion.py diff --git a/flixopt/io.py b/flixopt/io.py index 27bc242ff..3936a5e00 100644 --- a/flixopt/io.py +++ b/flixopt/io.py @@ -597,6 +597,205 @@ def load_dataset_from_netcdf(path: str | pathlib.Path) -> xr.Dataset: return ds +# Parameter rename mappings for backwards compatibility conversion +# Format: {old_name: new_name} +PARAMETER_RENAMES = { + # Effect parameters + 'minimum_operation': 'minimum_temporal', + 'maximum_operation': 'maximum_temporal', + 'minimum_invest': 'minimum_periodic', + 'maximum_invest': 'maximum_periodic', + 'minimum_investment': 'minimum_periodic', + 'maximum_investment': 'maximum_periodic', + 'minimum_operation_per_hour': 'minimum_per_hour', + 'maximum_operation_per_hour': 'maximum_per_hour', + # InvestParameters + 'fix_effects': 'effects_of_investment', + 'specific_effects': 'effects_of_investment_per_size', + 'divest_effects': 'effects_of_retirement', + 'piecewise_effects': 'piecewise_effects_of_investment', + # Flow/OnOffParameters + 'flow_hours_total_max': 'flow_hours_max', + 'flow_hours_total_min': 'flow_hours_min', + 'on_hours_total_max': 'on_hours_max', + 'on_hours_total_min': 'on_hours_min', + 'switch_on_total_max': 'switch_on_max', + # Bus + 'excess_penalty_per_flow_hour': 'imbalance_penalty_per_flow_hour', + # Component parameters (Source/Sink) + 'source': 'outputs', + 'sink': 'inputs', + 'prevent_simultaneous_sink_and_source': 'prevent_simultaneous_flow_rates', + # Storage + # Note: 'lastValueOfSim' → 'equals_final' is a value change, not a key change + # Linear converter parameters + 'Q_fu': 'fuel_flow', + 'P_el': 'electrical_flow', + 'Q_th': 'thermal_flow', + 'Q_ab': 'heat_source_flow', + 'eta': 'thermal_efficiency', + 'eta_th': 'thermal_efficiency', + 'eta_el': 'electrical_efficiency', + 'COP': 'cop', + # Class renames (v4.2.0) + 'FullCalculation': 'Optimization', + 'AggregatedCalculation': 'ClusteredOptimization', + 'SegmentedCalculation': 'SegmentedOptimization', + 'CalculationResults': 'Results', + 'SegmentedCalculationResults': 'SegmentedResults', + 'Aggregation': 'Clustering', + 'AggregationParameters': 'ClusteringParameters', + 'AggregationModel': 'ClusteringModel', + # OnOffParameters → StatusParameters + 'OnOffParameters': 'StatusParameters', + 'on_off_parameters': 'status_parameters', + # TimeSeriesData + 'agg_group': 'aggregation_group', + 'agg_weight': 'aggregation_weight', +} + +# Value renames (for specific parameter values that changed) +VALUE_RENAMES = { + 'initial_charge_state': {'lastValueOfSim': 'equals_final'}, +} + + +def _rename_keys_recursive(obj: Any, key_renames: dict[str, str], value_renames: dict[str, dict]) -> Any: + """Recursively rename keys and values in nested data structures. + + Args: + obj: The object to process (dict, list, or scalar) + key_renames: Mapping of old key names to new key names + value_renames: Mapping of key names to {old_value: new_value} dicts + + Returns: + The processed object with renamed keys and values + """ + if isinstance(obj, dict): + new_dict = {} + for key, value in obj.items(): + # Rename the key if needed + new_key = key_renames.get(key, key) + + # Process the value recursively + new_value = _rename_keys_recursive(value, key_renames, value_renames) + + # Check if this key has value renames + if key in value_renames and isinstance(new_value, str): + new_value = value_renames[key].get(new_value, new_value) + + # Handle __class__ values - rename class names + if key == '__class__' and isinstance(new_value, str): + new_value = key_renames.get(new_value, new_value) + + new_dict[new_key] = new_value + return new_dict + + elif isinstance(obj, list): + return [_rename_keys_recursive(item, key_renames, value_renames) for item in obj] + + else: + return obj + + +def convert_old_dataset( + ds: xr.Dataset, + key_renames: dict[str, str] | None = None, + value_renames: dict[str, dict] | None = None, +) -> xr.Dataset: + """Convert an old FlowSystem dataset to use new parameter names. + + This function updates the reference structure in a dataset's attrs to use + the current parameter naming conventions. This is useful for loading + FlowSystem files saved with older versions of flixopt. + + Args: + ds: The dataset to convert (will be modified in place) + key_renames: Custom key renames to apply. If None, uses PARAMETER_RENAMES. + value_renames: Custom value renames to apply. If None, uses VALUE_RENAMES. + + Returns: + The converted dataset (same object, modified in place) + + Examples: + Convert an old netCDF file to new format: + + ```python + from flixopt import io + + # Load old file + ds = io.load_dataset_from_netcdf('old_flow_system.nc4') + + # Convert parameter names + ds = io.convert_old_dataset(ds) + + # Now load as FlowSystem + from flixopt import FlowSystem + + fs = FlowSystem.from_dataset(ds) + ``` + """ + if key_renames is None: + key_renames = PARAMETER_RENAMES + if value_renames is None: + value_renames = VALUE_RENAMES + + # Convert the attrs (reference_structure) + ds.attrs = _rename_keys_recursive(ds.attrs, key_renames, value_renames) + + return ds + + +def convert_old_netcdf( + input_path: str | pathlib.Path, + output_path: str | pathlib.Path | None = None, + compression: int = 0, +) -> xr.Dataset: + """Load an old FlowSystem netCDF file and convert to new parameter names. + + This is a convenience function that combines loading, conversion, and + optionally saving the converted dataset. + + Args: + input_path: Path to the old netCDF file + output_path: If provided, save the converted dataset to this path. + If None, only returns the converted dataset without saving. + compression: Compression level (0-9) for saving. Only used if output_path is provided. + + Returns: + The converted dataset + + Examples: + Convert and save to new file: + + ```python + from flixopt import io + + # Convert old file to new format + ds = io.convert_old_netcdf('old_system.nc4', 'new_system.nc') + ``` + + Convert and load as FlowSystem: + + ```python + from flixopt import FlowSystem, io + + ds = io.convert_old_netcdf('old_system.nc4') + fs = FlowSystem.from_dataset(ds) + ``` + """ + # Load and convert + ds = load_dataset_from_netcdf(input_path) + ds = convert_old_dataset(ds) + + # Optionally save + if output_path is not None: + save_dataset_to_netcdf(ds, output_path, compression=compression) + logger.info(f'Converted {input_path} -> {output_path}') + + return ds + + @dataclass class ResultsPaths: """Container for all paths related to saving Results.""" diff --git a/flixopt/results.py b/flixopt/results.py index 976793e0b..a7289235e 100644 --- a/flixopt/results.py +++ b/flixopt/results.py @@ -1128,6 +1128,52 @@ def plot_network( path = self.folder / f'{self.name}--network.html' return self.flow_system.plot_network(controls=controls, path=path, show=show) + def to_flow_system(self) -> FlowSystem: + """Convert Results to a FlowSystem with solution attached. + + This method migrates results from the deprecated Results format to the + new FlowSystem-based format, enabling use of the modern API. + + Returns: + FlowSystem: A FlowSystem instance with the solution data attached. + + Caveats: + - The linopy model is NOT attached (only the solution data) + - Element submodels are NOT recreated (no re-optimization without + calling build_model() first) + - Variable/constraint names on elements are NOT restored + + Examples: + Convert loaded Results to FlowSystem: + + ```python + # Load old results + results = Results.from_file('results', 'my_optimization') + + # Convert to FlowSystem + flow_system = results.to_flow_system() + + # Use new API + flow_system.plot.heatmap() + flow_system.solution.to_netcdf('solution.nc') + + # Save in new single-file format + flow_system.to_netcdf('my_optimization.nc') + ``` + """ + # Reconstruct FlowSystem from stored data + flow_system = FlowSystem.from_dataset(self.flow_system_data) + + # Convert solution attrs from dicts to JSON strings for consistency with new format + # The _get_solution_attr helper handles both formats, but we normalize here + solution = self.solution.copy() + for key in ['Components', 'Buses', 'Effects', 'Flows']: + if key in solution.attrs and isinstance(solution.attrs[key], dict): + solution.attrs[key] = json.dumps(solution.attrs[key]) + + flow_system.solution = solution + return flow_system + def to_file( self, folder: str | pathlib.Path | None = None, diff --git a/tests/test_io_conversion.py b/tests/test_io_conversion.py new file mode 100644 index 000000000..0aa614ad9 --- /dev/null +++ b/tests/test_io_conversion.py @@ -0,0 +1,363 @@ +"""Tests for the IO conversion utilities for backwards compatibility.""" + +import xarray as xr + +from flixopt.io import ( + PARAMETER_RENAMES, + VALUE_RENAMES, + _rename_keys_recursive, + convert_old_dataset, + convert_old_netcdf, + load_dataset_from_netcdf, + save_dataset_to_netcdf, +) + + +class TestRenameKeysRecursive: + """Tests for the _rename_keys_recursive function.""" + + def test_simple_key_rename(self): + """Test basic key renaming.""" + old = {'minimum_operation': 100} + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert 'minimum_temporal' in result + assert 'minimum_operation' not in result + assert result['minimum_temporal'] == 100 + + def test_nested_key_rename(self): + """Test key renaming in nested structures.""" + old = { + 'components': { + 'Boiler': { + 'on_off_parameters': { + 'on_hours_total_max': 50, + } + } + } + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert 'status_parameters' in result['components']['Boiler'] + assert 'on_off_parameters' not in result['components']['Boiler'] + assert result['components']['Boiler']['status_parameters']['on_hours_max'] == 50 + + def test_class_name_rename(self): + """Test that __class__ values are also renamed.""" + old = { + '__class__': 'OnOffParameters', + 'on_hours_total_max': 100, + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['__class__'] == 'StatusParameters' + assert result['on_hours_max'] == 100 + + def test_value_rename(self): + """Test value renaming for specific keys.""" + old = {'initial_charge_state': 'lastValueOfSim'} + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['initial_charge_state'] == 'equals_final' + + def test_list_handling(self): + """Test that lists are processed correctly.""" + old = { + 'flows': [ + {'flow_hours_total_max': 100}, + {'flow_hours_total_min': 50}, + ] + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['flows'][0]['flow_hours_max'] == 100 + assert result['flows'][1]['flow_hours_min'] == 50 + + def test_unchanged_keys_preserved(self): + """Test that keys not in rename map are preserved.""" + old = {'label': 'MyComponent', 'size': 100} + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['label'] == 'MyComponent' + assert result['size'] == 100 + + def test_empty_dict(self): + """Test handling of empty dict.""" + result = _rename_keys_recursive({}, PARAMETER_RENAMES, VALUE_RENAMES) + assert result == {} + + def test_empty_list(self): + """Test handling of empty list.""" + result = _rename_keys_recursive([], PARAMETER_RENAMES, VALUE_RENAMES) + assert result == [] + + def test_scalar_values(self): + """Test that scalar values are returned unchanged.""" + assert _rename_keys_recursive(42, PARAMETER_RENAMES, VALUE_RENAMES) == 42 + assert _rename_keys_recursive('string', PARAMETER_RENAMES, VALUE_RENAMES) == 'string' + assert _rename_keys_recursive(None, PARAMETER_RENAMES, VALUE_RENAMES) is None + + +class TestParameterRenames: + """Tests to verify all expected parameter renames are in the mapping.""" + + def test_effect_parameters(self): + """Test Effect parameter renames are defined.""" + assert PARAMETER_RENAMES['minimum_operation'] == 'minimum_temporal' + assert PARAMETER_RENAMES['maximum_operation'] == 'maximum_temporal' + assert PARAMETER_RENAMES['minimum_invest'] == 'minimum_periodic' + assert PARAMETER_RENAMES['maximum_invest'] == 'maximum_periodic' + assert PARAMETER_RENAMES['minimum_investment'] == 'minimum_periodic' + assert PARAMETER_RENAMES['maximum_investment'] == 'maximum_periodic' + assert PARAMETER_RENAMES['minimum_operation_per_hour'] == 'minimum_per_hour' + assert PARAMETER_RENAMES['maximum_operation_per_hour'] == 'maximum_per_hour' + + def test_invest_parameters(self): + """Test InvestParameters renames are defined.""" + assert PARAMETER_RENAMES['fix_effects'] == 'effects_of_investment' + assert PARAMETER_RENAMES['specific_effects'] == 'effects_of_investment_per_size' + assert PARAMETER_RENAMES['divest_effects'] == 'effects_of_retirement' + assert PARAMETER_RENAMES['piecewise_effects'] == 'piecewise_effects_of_investment' + + def test_flow_parameters(self): + """Test Flow/OnOffParameters renames are defined.""" + assert PARAMETER_RENAMES['flow_hours_total_max'] == 'flow_hours_max' + assert PARAMETER_RENAMES['flow_hours_total_min'] == 'flow_hours_min' + assert PARAMETER_RENAMES['on_hours_total_max'] == 'on_hours_max' + assert PARAMETER_RENAMES['on_hours_total_min'] == 'on_hours_min' + assert PARAMETER_RENAMES['switch_on_total_max'] == 'switch_on_max' + + def test_bus_parameters(self): + """Test Bus parameter renames are defined.""" + assert PARAMETER_RENAMES['excess_penalty_per_flow_hour'] == 'imbalance_penalty_per_flow_hour' + + def test_component_parameters(self): + """Test component parameter renames are defined.""" + assert PARAMETER_RENAMES['source'] == 'outputs' + assert PARAMETER_RENAMES['sink'] == 'inputs' + assert PARAMETER_RENAMES['prevent_simultaneous_sink_and_source'] == 'prevent_simultaneous_flow_rates' + + def test_linear_converter_parameters(self): + """Test linear converter parameter renames are defined.""" + assert PARAMETER_RENAMES['Q_fu'] == 'fuel_flow' + assert PARAMETER_RENAMES['P_el'] == 'electrical_flow' + assert PARAMETER_RENAMES['Q_th'] == 'thermal_flow' + assert PARAMETER_RENAMES['Q_ab'] == 'heat_source_flow' + assert PARAMETER_RENAMES['eta'] == 'thermal_efficiency' + assert PARAMETER_RENAMES['eta_th'] == 'thermal_efficiency' + assert PARAMETER_RENAMES['eta_el'] == 'electrical_efficiency' + assert PARAMETER_RENAMES['COP'] == 'cop' + + def test_class_renames(self): + """Test class name renames are defined.""" + assert PARAMETER_RENAMES['OnOffParameters'] == 'StatusParameters' + assert PARAMETER_RENAMES['on_off_parameters'] == 'status_parameters' + assert PARAMETER_RENAMES['FullCalculation'] == 'Optimization' + assert PARAMETER_RENAMES['AggregatedCalculation'] == 'ClusteredOptimization' + assert PARAMETER_RENAMES['SegmentedCalculation'] == 'SegmentedOptimization' + assert PARAMETER_RENAMES['CalculationResults'] == 'Results' + assert PARAMETER_RENAMES['AggregationParameters'] == 'ClusteringParameters' + + def test_time_series_data_parameters(self): + """Test TimeSeriesData parameter renames are defined.""" + assert PARAMETER_RENAMES['agg_group'] == 'aggregation_group' + assert PARAMETER_RENAMES['agg_weight'] == 'aggregation_weight' + + +class TestValueRenames: + """Tests for value renaming.""" + + def test_initial_charge_state_value(self): + """Test initial_charge_state value rename is defined.""" + assert VALUE_RENAMES['initial_charge_state']['lastValueOfSim'] == 'equals_final' + + +class TestConvertOldDataset: + """Tests for convert_old_dataset function.""" + + def test_converts_attrs(self): + """Test that dataset attrs are converted.""" + ds = xr.Dataset(attrs={'minimum_operation': 100, 'maximum_invest': 500}) + result = convert_old_dataset(ds) + assert 'minimum_temporal' in result.attrs + assert 'maximum_periodic' in result.attrs + assert 'minimum_operation' not in result.attrs + assert 'maximum_invest' not in result.attrs + + def test_nested_attrs_conversion(self): + """Test conversion of nested attrs structures.""" + ds = xr.Dataset( + attrs={ + 'components': { + 'Boiler': { + '__class__': 'OnOffParameters', + 'on_hours_total_max': 100, + } + } + } + ) + result = convert_old_dataset(ds) + assert result.attrs['components']['Boiler']['__class__'] == 'StatusParameters' + assert result.attrs['components']['Boiler']['on_hours_max'] == 100 + + def test_custom_renames(self): + """Test that custom renames can be provided.""" + ds = xr.Dataset(attrs={'custom_old': 'value'}) + result = convert_old_dataset(ds, key_renames={'custom_old': 'custom_new'}, value_renames={}) + assert 'custom_new' in result.attrs + assert 'custom_old' not in result.attrs + + def test_returns_same_object(self): + """Test that the function modifies and returns the same dataset object.""" + ds = xr.Dataset(attrs={'minimum_operation': 100}) + result = convert_old_dataset(ds) + # Note: attrs are modified in place, so the object should be the same + assert result is ds + + +class TestConvertOldNetcdf: + """Tests for convert_old_netcdf function.""" + + def test_load_and_convert(self, tmp_path): + """Test loading and converting a netCDF file.""" + # Create an old-style dataset and save it + old_ds = xr.Dataset( + {'var1': (['time'], [1, 2, 3])}, + coords={'time': [0, 1, 2]}, + attrs={ + 'components': { + 'Boiler': { + '__class__': 'OnOffParameters', + 'on_hours_total_max': 100, + } + } + }, + ) + input_path = tmp_path / 'old_system.nc' + save_dataset_to_netcdf(old_ds, input_path) + + # Convert + result = convert_old_netcdf(input_path) + + # Verify conversion + assert result.attrs['components']['Boiler']['__class__'] == 'StatusParameters' + assert result.attrs['components']['Boiler']['on_hours_max'] == 100 + + def test_load_convert_and_save(self, tmp_path): + """Test loading, converting, and saving to new file.""" + # Create an old-style dataset and save it + old_ds = xr.Dataset( + {'var1': (['time'], [1, 2, 3])}, + coords={'time': [0, 1, 2]}, + attrs={'minimum_operation': 100}, + ) + input_path = tmp_path / 'old_system.nc' + output_path = tmp_path / 'new_system.nc' + save_dataset_to_netcdf(old_ds, input_path) + + # Convert and save + convert_old_netcdf(input_path, output_path) + + # Load the new file and verify + loaded = load_dataset_from_netcdf(output_path) + assert 'minimum_temporal' in loaded.attrs + assert loaded.attrs['minimum_temporal'] == 100 + + +class TestFullConversionScenario: + """Integration tests for full conversion scenarios.""" + + def test_complex_flowsystem_structure(self): + """Test conversion of a complex FlowSystem-like structure.""" + old_structure = { + '__class__': 'FlowSystem', + 'components': { + 'Boiler': { + '__class__': 'LinearConverter', + 'Q_fu': ':::Boiler|fuel', + 'eta': 0.9, + 'on_off_parameters': { + '__class__': 'OnOffParameters', + 'on_hours_total_max': 100, + 'switch_on_total_max': 10, + }, + }, + 'HeatPump': { + '__class__': 'HeatPumpWithSource', + 'COP': 3.5, + 'Q_ab': ':::HeatPump|ambient', + }, + 'Battery': { + '__class__': 'Storage', + 'initial_charge_state': 'lastValueOfSim', + }, + 'Grid': { + '__class__': 'Source', + 'source': [{'__class__': 'Flow', 'flow_hours_total_max': 1000}], + }, + 'Demand': { + '__class__': 'Sink', + 'sink': [{'__class__': 'Flow', 'flow_hours_total_min': 500}], + }, + }, + 'effects': { + 'costs': { + '__class__': 'Effect', + 'minimum_operation': 0, + 'maximum_invest': 1000, + 'minimum_operation_per_hour': 0, + }, + }, + 'buses': { + 'heat_bus': { + '__class__': 'Bus', + 'excess_penalty_per_flow_hour': 1000, + }, + }, + } + + result = _rename_keys_recursive(old_structure, PARAMETER_RENAMES, VALUE_RENAMES) + + # Verify component conversions + boiler = result['components']['Boiler'] + assert boiler['fuel_flow'] == ':::Boiler|fuel' + assert boiler['thermal_efficiency'] == 0.9 + assert boiler['status_parameters']['__class__'] == 'StatusParameters' + assert boiler['status_parameters']['on_hours_max'] == 100 + assert boiler['status_parameters']['switch_on_max'] == 10 + + heat_pump = result['components']['HeatPump'] + assert heat_pump['cop'] == 3.5 + assert heat_pump['heat_source_flow'] == ':::HeatPump|ambient' + + battery = result['components']['Battery'] + assert battery['initial_charge_state'] == 'equals_final' + + grid = result['components']['Grid'] + assert 'outputs' in grid + assert grid['outputs'][0]['flow_hours_max'] == 1000 + + demand = result['components']['Demand'] + assert 'inputs' in demand + assert demand['inputs'][0]['flow_hours_min'] == 500 + + # Verify effect conversions + costs = result['effects']['costs'] + assert costs['minimum_temporal'] == 0 + assert costs['maximum_periodic'] == 1000 + assert costs['minimum_per_hour'] == 0 + + # Verify bus conversions + heat_bus = result['buses']['heat_bus'] + assert heat_bus['imbalance_penalty_per_flow_hour'] == 1000 + + def test_invest_parameters_conversion(self): + """Test conversion of InvestParameters.""" + old_structure = { + '__class__': 'InvestParameters', + 'fix_effects': {'costs': 1000}, + 'specific_effects': {'costs': 100}, + 'divest_effects': {'costs': 500}, + 'piecewise_effects': {'__class__': 'PiecewiseEffects'}, + } + + result = _rename_keys_recursive(old_structure, PARAMETER_RENAMES, VALUE_RENAMES) + + assert result['effects_of_investment'] == {'costs': 1000} + assert result['effects_of_investment_per_size'] == {'costs': 100} + assert result['effects_of_retirement'] == {'costs': 500} + assert result['piecewise_effects_of_investment']['__class__'] == 'PiecewiseEffects' From ba705638be54280e4e7d3a66ffa530dc2733a178 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 10:47:43 +0100 Subject: [PATCH 46/88] Add test for conversion to new api --- tests/test_io_conversion.py | 261 ++++++++++++++++++++++++++++++++++++ 1 file changed, 261 insertions(+) diff --git a/tests/test_io_conversion.py b/tests/test_io_conversion.py index 0aa614ad9..a48399728 100644 --- a/tests/test_io_conversion.py +++ b/tests/test_io_conversion.py @@ -361,3 +361,264 @@ def test_invest_parameters_conversion(self): assert result['effects_of_investment_per_size'] == {'costs': 100} assert result['effects_of_retirement'] == {'costs': 500} assert result['piecewise_effects_of_investment']['__class__'] == 'PiecewiseEffects' + + +class TestEdgeCases: + """Tests for edge cases and potential issues.""" + + def test_effect_dict_keys_not_renamed(self): + """Effect dict keys are effect labels, not parameter names - should NOT be renamed.""" + old = { + 'effects_per_flow_hour': {'costs': 100, 'CO2': 50}, + 'fix_effects': {'costs': 1000}, # key should be renamed, but 'costs' value key should not + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + # 'costs' and 'CO2' are effect labels, not parameter names + assert result['effects_per_flow_hour'] == {'costs': 100, 'CO2': 50} + # 'fix_effects' key should be renamed to 'effects_of_investment' + assert 'effects_of_investment' in result + # But the nested 'costs' key should remain (it's an effect label) + assert result['effects_of_investment'] == {'costs': 1000} + + def test_deeply_nested_structure(self): + """Test handling of deeply nested structures (5+ levels).""" + old = { + 'level1': { + 'level2': { + 'level3': { + 'level4': { + 'level5': { + 'on_hours_total_max': 100, + } + } + } + } + } + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['level1']['level2']['level3']['level4']['level5']['on_hours_max'] == 100 + + def test_mixed_old_and_new_parameters(self): + """Test structure with both old and new parameter names.""" + old = { + 'minimum_operation': 0, # old + 'minimum_temporal': 10, # new (should not be double-renamed) + 'maximum_periodic': 1000, # new + 'maximum_invest': 500, # old + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + # Old should be renamed + assert 'minimum_temporal' in result + assert 'maximum_periodic' in result + + # Values should be correct (old one gets overwritten if both exist) + # This is a potential issue - if both old and new exist, new gets overwritten + # In practice this shouldn't happen, but let's document the behavior + assert result['minimum_temporal'] == 10 # new value preserved (processed second) + assert result['maximum_periodic'] in [500, 1000] # either could win + + def test_none_values_preserved(self): + """Test that None values are preserved.""" + old = { + 'minimum_operation': None, + 'some_param': None, + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['minimum_temporal'] is None + assert result['some_param'] is None + + def test_boolean_values_preserved(self): + """Test that boolean values are preserved.""" + old = { + 'mandatory': True, + 'is_standard': False, + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['mandatory'] is True + assert result['is_standard'] is False + + def test_numeric_edge_cases(self): + """Test numeric edge cases (0, negative, floats).""" + old = { + 'minimum_operation': 0, + 'maximum_operation': -100, # negative (unusual but possible) + 'eta': 0.95, + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + assert result['minimum_temporal'] == 0 + assert result['maximum_temporal'] == -100 + assert result['thermal_efficiency'] == 0.95 + + def test_dataarray_reference_strings_preserved(self): + """Test that DataArray reference strings are preserved as-is. + + Note: We don't rename inside reference strings like ':::Boiler|Q_fu' + because those reference the actual DataArray variable names, which + would need separate handling if they also need renaming. + """ + old = { + 'Q_fu': ':::Boiler|Q_fu', # key renamed, but ref string preserved + 'eta': ':::Boiler|eta', + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + # Keys should be renamed + assert 'fuel_flow' in result + assert 'thermal_efficiency' in result + + # Reference strings should be preserved (they point to DataArray names) + assert result['fuel_flow'] == ':::Boiler|Q_fu' + assert result['thermal_efficiency'] == ':::Boiler|eta' + + def test_list_of_dicts(self): + """Test conversion of lists containing dictionaries.""" + old = { + 'flows': [ + { + '__class__': 'Flow', + 'on_off_parameters': {'__class__': 'OnOffParameters'}, + 'flow_hours_total_max': 100, + }, + { + '__class__': 'Flow', + 'flow_hours_total_min': 50, + }, + ] + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + assert len(result['flows']) == 2 + assert result['flows'][0]['status_parameters']['__class__'] == 'StatusParameters' + assert result['flows'][0]['flow_hours_max'] == 100 + assert result['flows'][1]['flow_hours_min'] == 50 + + def test_special_characters_in_labels(self): + """Test that special characters in component labels are preserved.""" + old = { + 'components': { + 'CHP_Unit-1': { + '__class__': 'CHP', + 'eta_th': 0.4, + }, + 'Heat Pump (Main)': { + '__class__': 'HeatPump', + 'COP': 3.5, + }, + } + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + # Labels should be preserved exactly + assert 'CHP_Unit-1' in result['components'] + assert 'Heat Pump (Main)' in result['components'] + + # Parameters should still be renamed + assert result['components']['CHP_Unit-1']['thermal_efficiency'] == 0.4 + assert result['components']['Heat Pump (Main)']['cop'] == 3.5 + + def test_value_rename_only_for_specific_keys(self): + """Test that value renames only apply to specific keys.""" + old = { + 'initial_charge_state': 'lastValueOfSim', # should be renamed + 'other_param': 'lastValueOfSim', # should NOT be renamed (different key) + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + assert result['initial_charge_state'] == 'equals_final' + assert result['other_param'] == 'lastValueOfSim' # unchanged + + def test_value_rename_with_non_string_value(self): + """Test that value renames don't break with non-string values.""" + old = { + 'initial_charge_state': 0.5, # numeric, not string + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + # Should be preserved as-is (value rename only applies to strings) + assert result['initial_charge_state'] == 0.5 + + +class TestRealWorldScenarios: + """Tests with real-world-like data structures.""" + + def test_source_with_investment(self): + """Test Source component with investment parameters.""" + old = { + '__class__': 'Source', + 'label': 'GasGrid', + 'source': [ + { + '__class__': 'Flow', + 'label': 'gas', + 'bus': 'gas_bus', + 'flow_hours_total_max': 10000, + 'invest_parameters': { + '__class__': 'InvestParameters', + 'fix_effects': {'costs': 5000}, + 'specific_effects': {'costs': 100}, + }, + } + ], + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + assert 'outputs' in result + assert result['outputs'][0]['flow_hours_max'] == 10000 + assert result['outputs'][0]['invest_parameters']['effects_of_investment'] == {'costs': 5000} + assert result['outputs'][0]['invest_parameters']['effects_of_investment_per_size'] == {'costs': 100} + + def test_storage_with_all_old_parameters(self): + """Test Storage component with various old parameters.""" + old = { + '__class__': 'Storage', + 'label': 'Battery', + 'initial_charge_state': 'lastValueOfSim', + 'charging': { + '__class__': 'Flow', + 'on_off_parameters': { + '__class__': 'OnOffParameters', + 'on_hours_total_max': 100, + 'on_hours_total_min': 10, + 'switch_on_total_max': 50, + }, + }, + 'discharging': { + '__class__': 'Flow', + 'flow_hours_total_max': 500, + }, + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + assert result['initial_charge_state'] == 'equals_final' + assert result['charging']['status_parameters']['on_hours_max'] == 100 + assert result['charging']['status_parameters']['on_hours_min'] == 10 + assert result['charging']['status_parameters']['switch_on_max'] == 50 + assert result['discharging']['flow_hours_max'] == 500 + + def test_effect_with_all_old_parameters(self): + """Test Effect with all old parameter names.""" + old = { + '__class__': 'Effect', + 'label': 'costs', + 'unit': '€', + 'minimum_operation': 0, + 'maximum_operation': 1000000, + 'minimum_invest': 0, + 'maximum_invest': 500000, + 'minimum_operation_per_hour': 0, + 'maximum_operation_per_hour': 10000, + } + result = _rename_keys_recursive(old, PARAMETER_RENAMES, VALUE_RENAMES) + + assert result['minimum_temporal'] == 0 + assert result['maximum_temporal'] == 1000000 + assert result['minimum_periodic'] == 0 + assert result['maximum_periodic'] == 500000 + assert result['minimum_per_hour'] == 0 + assert result['maximum_per_hour'] == 10000 + + # Labels should be preserved + assert result['label'] == 'costs' + assert result['unit'] == '€' From 8f7c1424ed077d44ab35bc2304d774bf3c6e08c0 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 11:33:25 +0100 Subject: [PATCH 47/88] Add new utility for loading old resutls file and voncerting to the new api --- flixopt/flow_system.py | 72 +++++++++++++++++++++++++++++++++++++ flixopt/results.py | 12 ++++++- tests/test_io_conversion.py | 44 +++++++++++++++++++++++ 3 files changed, 127 insertions(+), 1 deletion(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 7a71efee9..0f5954718 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -754,6 +754,78 @@ def from_netcdf(cls, path: str | pathlib.Path) -> FlowSystem: flow_system.name = path.stem return flow_system + @classmethod + def from_old_results(cls, folder: str | pathlib.Path, name: str) -> FlowSystem: + """ + Load a FlowSystem from old-format Results files (pre-v5 API). + + This method loads results saved with the deprecated Results API + (which used multiple files) and converts them to a FlowSystem with + the solution attached. + + The parameter names are automatically converted from older flixopt + versions to the current naming conventions. + + Args: + folder: Directory containing the saved result files + name: Base name of the saved files (without extensions) + + Returns: + FlowSystem instance with solution attached + + Warning: + This is a best-effort migration utility. It loads the FlowSystem + structure and solution data, but does NOT provide the full + functionality of the old Results class: + + - The linopy model is NOT loaded + - Element submodels are NOT recreated + - No re-optimization possible without calling optimize() again + - Summary metadata (solver info, timing) is NOT loaded + + For full results analysis, the solution data is available via + ``flow_system.solution`` as an xarray Dataset. + + Examples: + ```python + # Load old results and get FlowSystem with solution + fs = FlowSystem.from_old_results('results_folder', 'my_optimization') + + # Access solution data + fs.solution['Boiler|flow_rate'].plot() + + # Save in new single-file format + fs.to_netcdf('my_optimization.nc') + ``` + """ + import json + + from flixopt.io import convert_old_dataset, load_dataset_from_netcdf + + folder = pathlib.Path(folder) + + # Load datasets directly (old format used --flow_system.nc4 and --solution.nc4) + flow_system_path = folder / f'{name}--flow_system.nc4' + solution_path = folder / f'{name}--solution.nc4' + + flow_system_data = load_dataset_from_netcdf(flow_system_path) + solution = load_dataset_from_netcdf(solution_path) + + # Convert flow_system_data to new parameter names + convert_old_dataset(flow_system_data) + + # Reconstruct FlowSystem + flow_system = cls.from_dataset(flow_system_data) + flow_system.name = name + + # Attach solution (convert attrs from dicts to JSON strings for consistency) + for key in ['Components', 'Buses', 'Effects', 'Flows']: + if key in solution.attrs and isinstance(solution.attrs[key], dict): + solution.attrs[key] = json.dumps(solution.attrs[key]) + flow_system.solution = solution + + return flow_system + def copy(self) -> FlowSystem: """Create a copy of the FlowSystem without optimization state. diff --git a/flixopt/results.py b/flixopt/results.py index a7289235e..16d88743a 100644 --- a/flixopt/results.py +++ b/flixopt/results.py @@ -238,7 +238,8 @@ def __init__( warnings.warn( f'Results is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' 'Access results directly via FlowSystem.solution after optimization, or use the ' - '.plot accessor on FlowSystem and its components (e.g., flow_system.plot.heatmap(...)).', + '.plot accessor on FlowSystem and its components (e.g., flow_system.plot.heatmap(...)). ' + 'To load old result files, use FlowSystem.from_old_results(folder, name).', DeprecationWarning, stacklevel=2, ) @@ -1134,6 +1135,10 @@ def to_flow_system(self) -> FlowSystem: This method migrates results from the deprecated Results format to the new FlowSystem-based format, enabling use of the modern API. + Note: + For loading old results files directly, consider using + ``FlowSystem.from_old_results(folder, name)`` instead. + Returns: FlowSystem: A FlowSystem instance with the solution data attached. @@ -1161,6 +1166,11 @@ def to_flow_system(self) -> FlowSystem: flow_system.to_netcdf('my_optimization.nc') ``` """ + from flixopt.io import convert_old_dataset + + # Convert flow_system_data to new parameter names + convert_old_dataset(self.flow_system_data) + # Reconstruct FlowSystem from stored data flow_system = FlowSystem.from_dataset(self.flow_system_data) diff --git a/tests/test_io_conversion.py b/tests/test_io_conversion.py index a48399728..2c6c02705 100644 --- a/tests/test_io_conversion.py +++ b/tests/test_io_conversion.py @@ -622,3 +622,47 @@ def test_effect_with_all_old_parameters(self): # Labels should be preserved assert result['label'] == 'costs' assert result['unit'] == '€' + + +class TestFlowSystemFromOldResults: + """Tests for FlowSystem.from_old_results() method.""" + + def test_load_old_results_from_resources(self): + """Test loading old results files from test resources.""" + import pathlib + + import flixopt as fx + + resources_path = pathlib.Path(__file__).parent / 'ressources' + + # Load old results using new method + fs = fx.FlowSystem.from_old_results(resources_path, 'Sim1') + + # Verify FlowSystem was loaded + assert fs is not None + assert fs.name == 'Sim1' + + # Verify solution was attached + assert fs.solution is not None + assert len(fs.solution.data_vars) > 0 + + def test_old_results_can_be_saved_new_format(self, tmp_path): + """Test that old results can be saved in new single-file format.""" + import pathlib + + import flixopt as fx + + resources_path = pathlib.Path(__file__).parent / 'ressources' + + # Load old results + fs = fx.FlowSystem.from_old_results(resources_path, 'Sim1') + + # Save in new format + new_path = tmp_path / 'migrated.nc' + fs.to_netcdf(new_path) + + # Verify the new file exists and can be loaded + assert new_path.exists() + loaded = fx.FlowSystem.from_netcdf(new_path) + assert loaded is not None + assert loaded.solution is not None From 1e15f4145d4d11fcbb7178593a06739631a88b3a Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:14:20 +0100 Subject: [PATCH 48/88] Added tests for the v4 api conversion to new api --- .../v4-api/00_minimal--flow_system.nc4 | Bin 0 -> 46071 bytes .../00_minimal--model_documentation.yaml | 213 ++ .../v4-api/00_minimal--solution.nc4 | Bin 0 -> 42203 bytes .../v4-api/00_minimal--summary.yaml | 46 + .../v4-api/01_simple--flow_system.nc4 | Bin 0 -> 119706 bytes .../01_simple--model_documentation.yaml | 848 +++++++ .../ressources/v4-api/01_simple--solution.nc4 | Bin 0 -> 95968 bytes .../ressources/v4-api/01_simple--summary.yaml | 51 + .../v4-api/02_complex--flow_system.nc4 | Bin 0 -> 180475 bytes .../02_complex--model_documentation.yaml | 1905 ++++++++++++++++ .../v4-api/02_complex--solution.nc4 | Bin 0 -> 177549 bytes .../v4-api/02_complex--summary.yaml | 56 + .../v4-api/04_scenarios--flow_system.nc4 | Bin 0 -> 62386 bytes .../04_scenarios--model_documentation.yaml | 339 +++ .../v4-api/04_scenarios--solution.nc4 | Bin 0 -> 64272 bytes .../v4-api/04_scenarios--summary.yaml | 46 + .../io_flow_system_base--flow_system.nc4 | Bin 0 -> 149245 bytes ...flow_system_base--model_documentation.yaml | 1758 +++++++++++++++ .../v4-api/io_flow_system_base--solution.nc4 | Bin 0 -> 162818 bytes .../v4-api/io_flow_system_base--summary.yaml | 56 + .../io_flow_system_long--flow_system.nc4 | Bin 0 -> 161311 bytes ...flow_system_long--model_documentation.yaml | 1978 +++++++++++++++++ .../v4-api/io_flow_system_long--solution.nc4 | Bin 0 -> 181709 bytes .../v4-api/io_flow_system_long--summary.yaml | 54 + .../io_flow_system_segments--flow_system.nc4 | Bin 0 -> 181187 bytes ..._system_segments--model_documentation.yaml | 1914 ++++++++++++++++ .../io_flow_system_segments--solution.nc4 | Bin 0 -> 182466 bytes .../io_flow_system_segments--summary.yaml | 56 + .../io_simple_flow_system--flow_system.nc4 | Bin 0 -> 120032 bytes ...mple_flow_system--model_documentation.yaml | 944 ++++++++ .../io_simple_flow_system--solution.nc4 | Bin 0 -> 102763 bytes .../io_simple_flow_system--summary.yaml | 51 + ...ple_flow_system_scenarios--flow_system.nc4 | Bin 0 -> 184035 bytes ...system_scenarios--model_documentation.yaml | 1375 ++++++++++++ ...simple_flow_system_scenarios--solution.nc4 | Bin 0 -> 171583 bytes ...simple_flow_system_scenarios--summary.yaml | 51 + tests/test_io_conversion.py | 73 + 37 files changed, 11814 insertions(+) create mode 100644 tests/ressources/v4-api/00_minimal--flow_system.nc4 create mode 100644 tests/ressources/v4-api/00_minimal--model_documentation.yaml create mode 100644 tests/ressources/v4-api/00_minimal--solution.nc4 create mode 100644 tests/ressources/v4-api/00_minimal--summary.yaml create mode 100644 tests/ressources/v4-api/01_simple--flow_system.nc4 create mode 100644 tests/ressources/v4-api/01_simple--model_documentation.yaml create mode 100644 tests/ressources/v4-api/01_simple--solution.nc4 create mode 100644 tests/ressources/v4-api/01_simple--summary.yaml create mode 100644 tests/ressources/v4-api/02_complex--flow_system.nc4 create mode 100644 tests/ressources/v4-api/02_complex--model_documentation.yaml create mode 100644 tests/ressources/v4-api/02_complex--solution.nc4 create mode 100644 tests/ressources/v4-api/02_complex--summary.yaml create mode 100644 tests/ressources/v4-api/04_scenarios--flow_system.nc4 create mode 100644 tests/ressources/v4-api/04_scenarios--model_documentation.yaml create mode 100644 tests/ressources/v4-api/04_scenarios--solution.nc4 create mode 100644 tests/ressources/v4-api/04_scenarios--summary.yaml create mode 100644 tests/ressources/v4-api/io_flow_system_base--flow_system.nc4 create mode 100644 tests/ressources/v4-api/io_flow_system_base--model_documentation.yaml create mode 100644 tests/ressources/v4-api/io_flow_system_base--solution.nc4 create mode 100644 tests/ressources/v4-api/io_flow_system_base--summary.yaml create mode 100644 tests/ressources/v4-api/io_flow_system_long--flow_system.nc4 create mode 100644 tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml create mode 100644 tests/ressources/v4-api/io_flow_system_long--solution.nc4 create mode 100644 tests/ressources/v4-api/io_flow_system_long--summary.yaml create mode 100644 tests/ressources/v4-api/io_flow_system_segments--flow_system.nc4 create mode 100644 tests/ressources/v4-api/io_flow_system_segments--model_documentation.yaml create mode 100644 tests/ressources/v4-api/io_flow_system_segments--solution.nc4 create mode 100644 tests/ressources/v4-api/io_flow_system_segments--summary.yaml create mode 100644 tests/ressources/v4-api/io_simple_flow_system--flow_system.nc4 create mode 100644 tests/ressources/v4-api/io_simple_flow_system--model_documentation.yaml create mode 100644 tests/ressources/v4-api/io_simple_flow_system--solution.nc4 create mode 100644 tests/ressources/v4-api/io_simple_flow_system--summary.yaml create mode 100644 tests/ressources/v4-api/io_simple_flow_system_scenarios--flow_system.nc4 create mode 100644 tests/ressources/v4-api/io_simple_flow_system_scenarios--model_documentation.yaml create mode 100644 tests/ressources/v4-api/io_simple_flow_system_scenarios--solution.nc4 create mode 100644 tests/ressources/v4-api/io_simple_flow_system_scenarios--summary.yaml diff --git a/tests/ressources/v4-api/00_minimal--flow_system.nc4 b/tests/ressources/v4-api/00_minimal--flow_system.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..41755e93001c646e187d7ae621caea46b6e4fc2f GIT binary patch literal 46071 zcmeHQ4RBP|6~1qG`41#9Ac}}F>IfPke_~B#5Rwf+LxL>rOp3BTc3)s&voGBr3=%Ag zKcm)a?WnEQ`crKM1Usl>r)t&OO2@(03Z1Fd>WofX(W*0Al@3&T&b{}%WMB3rq^_%p z=T7qOd-tCE_uX^f`|f%7-MzNCv1#J?Y2$rk#|mUB~2jM>OH&%qhk+_*kg~Ju~`fpj<>>$D)I z3*@S2SM`nVN?PkrHKqE?p$heSG@id|}WSEi^;R+!vlHPCGm^HGRftDN#)^lrV*QIm;84UV5VFDR zRT->mg}%au=O|4EgK*M{o9WnkE8H1N#5yybIYj%3WF<4Z2Ti6$HbFW<;s{&RY?eLn=HAb|=Wrq>mK&!A6rRM~&S<6tA!7Q1Ft~ zRweW%({Mri;C5m~(y4Hll~fqv%~Jx>V5g*d;XS5r;WE4@TYl4~p#YD_!wp8>A~#mZ z0okty7QzjvFZ@yp>)Rc%;I0q1WHX-L(68E9SrqLVP!21AT{CE@y8i~uOx=Y+a*#5y zP>psLzAn`Z$_~kDyXpx@o=L>gkhbE&Oih&;L7AwPiX>xQX}IHK1WICXEEP_H=10wB z6oU2h3Igp_YoWK{R;@!fZQ2CSSa9$}gY!2ZeE$^nAQy%)8N+>sVfgU`oZ}baqq_un zfuaWIicym=#D5xI%Z|veOp8G`BY<{XN^@$&(`U?C<|4a#*fz?i`k%1smN?ovCDK- zi%!7G_{Av2b6OWH3Cc>20x_&4au?YYKL||%M4;J(NMo!s7R|;&7hO~@K+tJBYK>w~ zP@2qE5~T7}ED^EFYpQCh&Zw$}zw)Z8dihsW4U7!Zk5jdZm~kLLW>VG+Nf_1)o&|9W z^ez%!owQcl$(WfC;xGHx+=z`W0yq);Nh*VIYs1o{4R?%m40;c9sL;7+vNErxG9kNp zUft}oXV+G)iFTYhuX=WM-R!wyDu@bqsE&Mp+D$7l8Xa{$Rt{bF%E-m%jwzmT&MzK& zY>b$+%fE8-tv_^Po}MJcF~R_$Xf*mX41tS8phm{3l)2)mgzl9;h?JO+C~&u^#bR;^ zzokcuSA6%%?K^iKU0T}ySmMsdA3yl)HO1SvZM(IyeU)t&i))^nut?V5Xm4+yf7zj~ zF3_rJC4qnD4Aj+Tj}c%57y(9r5%>xra0GmHGLnPR^7#&5t(zd~4#NXl^VZXQO{*exGmaX$oO{$YWw6iGEL#m?v7RxMr#3=0e=3Y9Wsg ztX)4{a<4|ky(R#AM*iFsi^sod#xqt<1d!houOVM$df+>^ht|$k=No_2usy$d7quXb z^owFqg0<`=<1LFr%f+!!Eb?^ZesWHcqn23Pt<&HD4$oJ_XWfByboywoVtY`C$|S!< zPJmpOf827rv=_b809W8He{!8e|An|^-W`8+v{TMkkem9CX!bN#+E4w)UOlUDG<26N zXxJSddS&OUP0foJ3bF@d3v5l^+b>b=aZd%;e)p{x!BE<39$7R+3C_Q2itQjP$HI{2 zsdBvQdBWx+8t*UbxdG`Cjd$-!VP41k7;QZNmTJCGb9Qxc*XwJp$?w>taewHn2P$OF zFjjFkm!GkUxbJ!U@NYk#I*VuD`s0j+%bOeFehnqzD2>jvHEu@{vS)o&^7FF{hp-Y8iu#U{PiwYe{bZO0QRnWR+(CNR}jGJF*CXf zuZ@7TKEc`X`Zb2zK(36&pTI*6-5-8>_wUu2b6nKW)*`dS2L?Emy}IS&^?&e95;#5H zH3#So#~P!fJ1oh|8+MLxJ^y#h^ED&D2rvSS03*N%41WZ?_yXC{-7S2D`GOk~zGeg%0Y-okU<5`y0!_=B zmkNA|?~_Z?bbHC#aJ^n8(B7mY=rueoAJD#+HNp)ah|@v^y^^6E{E%LqVu&AG-~XT~ z6bcF|5I@uT7p{5Oy#G_ErTy>VXVZP=U)#j!vn~#;tu16z(Ert+Sc737J zgWhG=@7HB1Cq{*TL}l@>0<)%HdM2=iQ+{<~T_UkpID<30rdWVPl^V zm56NZiEp=p=f{sq`Z!urOhHTITc7Y^&R({`gUp->KK2;_Mt~7u1Q>y@3<3pZi?tUh zT!%SZ#P6pbthuBGzYuf2)eYX8-M0LGtBapPy>@2Zso>GqTU%WQS@-vUgR#X^+Ej(< zxLdpy^7kcqi6B@APZIa_oH|EZ^=ie3!5wFb z=ODC3{NzCKLV;U@Ocj&M4xA?{;j~)p-Zwugrhq_|`1G>!b>bliog+$~irQio1GVP_c=}Si~y-lN#6vx;WF(gWCTc^ruP-;-7#71LqgL;BS2O25LX*4(=5^mkUExT zZF7P(puMApx)q8MAm#AdIz`oiW~xSjw7fKH4{fYNq+Q`@1W5Hy%96>wySIHYrJ@mX zd{!zqcu%fX^0|%$wWQpzN>u^796>4AZch2#YX|RXTMo>flVwTSy*;~a`L(3r-R;j; z9Q+hKx}(w{Q^g8FLxiqr4A8avy&LH##gkUi_3q>gdxmORInKF9t6XSo(+Hrv*=Gb8 z0Y-okU<4R}k%K@%+2lKM1>7)alQ^50apraNC7YCQ$Na`tP3-j+j-qG}{IG`H3A74# z?OhgZ3N8z_HUz_R*WS4>%fcCL)J&TxE8V+&ZxkkP3H(tiF&5+1)TvzlbO+60$p5_A zqL-w=9OKNy^s7tv&-W$*@NKb&evbae$xSz`IfKk*k%NXQ+k=ul`)?(Gy+9B z=aRlZ&4{-AYcE$ZMu1*LP46q>Hp<^}1&PzEDi3j0fwCJ&oL*&}&^PxSzYY1PEtG=Z zcAYrr4>Y!YkJ8X9vGT!wU-6#XRFW_K(QCFrz2$B|Eop|1;Ms;7A--k=7y(9r5nu#H z9s-|rmEgIWKM)5Vu3u;Ogs)v%(3#hpS1M&1<})u`(UZROziCI0z;F+n4CVS=@4Wp^ zqWa~hM`cMuq!f6P8uJ3@>b+j~`y=#l&5No05xWR|GS0 z2O2(M1Q-EEfDvE>Ml1paWuM=^QQ-s{r-zdFE;9B7Y;ESCHUB91Q-EEfDvE>zA^|Do>6T#6}Vpzqk6PV74KqH zkweLi9y>tZBScv8=lHbueCOQk#jsBF(3y*wVR<0K!HfVSzz8q`jKIi6V8FGi(+yFY z*R`s&pp*PBdaWug45j{c+pK6^C&km6O}bvv^V0oZj0?AS$>lC*#+3^e4r2ru0Y-ok zU<5`q0s}IxN<$o#SH?we*2o|3jLZEA%tuo@dxpxuZe<2GqDL4vjuBu47y(9r5y*wW F{{W3i>r4Ou literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/00_minimal--model_documentation.yaml b/tests/ressources/v4-api/00_minimal--model_documentation.yaml new file mode 100644 index 000000000..f398d484d --- /dev/null +++ b/tests/ressources/v4-api/00_minimal--model_documentation.yaml @@ -0,0 +1,213 @@ +objective: |- + Objective: + ---------- + LinearExpression: +1 Costs + 1 Penalty + Sense: min + Value: 4.0 +termination_condition: optimal +status: ok +nvars: 40 +nvarsbin: 0 +nvarscont: 40 +ncons: 25 +variables: + Costs(periodic): |- + Variable + -------- + Costs(periodic) ∈ [-inf, inf] + Costs(temporal): |- + Variable + -------- + Costs(temporal) ∈ [-inf, inf] + "Costs(temporal)|per_timestep": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Costs(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Costs(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Costs(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + Costs: |- + Variable + -------- + Costs ∈ [-inf, inf] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "Boiler(Gas)|flow_rate": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Boiler(Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Boiler(Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Boiler(Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + "Boiler(Gas)|total_flow_hours": |- + Variable + -------- + Boiler(Gas)|total_flow_hours ∈ [0, inf] + "Boiler(Heat)|flow_rate": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Boiler(Heat)|flow_rate[2020-01-01 00:00:00] ∈ [0, 50] + [2020-01-01 01:00:00]: Boiler(Heat)|flow_rate[2020-01-01 01:00:00] ∈ [0, 50] + [2020-01-01 02:00:00]: Boiler(Heat)|flow_rate[2020-01-01 02:00:00] ∈ [0, 50] + "Boiler(Heat)|total_flow_hours": |- + Variable + -------- + Boiler(Heat)|total_flow_hours ∈ [0, inf] + "Sink(Demand)|flow_rate": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Sink(Demand)|flow_rate[2020-01-01 00:00:00] ∈ [30, 30] + [2020-01-01 01:00:00]: Sink(Demand)|flow_rate[2020-01-01 01:00:00] ∈ [0, 0] + [2020-01-01 02:00:00]: Sink(Demand)|flow_rate[2020-01-01 02:00:00] ∈ [20, 20] + "Sink(Demand)|total_flow_hours": |- + Variable + -------- + Sink(Demand)|total_flow_hours ∈ [0, inf] + "Source(Gas)|flow_rate": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Source(Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Source(Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Source(Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + "Source(Gas)|total_flow_hours": |- + Variable + -------- + Source(Gas)|total_flow_hours ∈ [0, inf] + "Source(Gas)->Costs(temporal)": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Source(Gas)->Costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Source(Gas)->Costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Source(Gas)->Costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + "Heat|excess_input": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Heat|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Heat|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Heat|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + "Heat|excess_output": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Heat|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Heat|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Heat|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + "Heat->Penalty": |- + Variable + -------- + Heat->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 3) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + Costs(periodic): |- + Constraint `Costs(periodic)` + ---------------------------- + +1 Costs(periodic) = -0.0 + Costs(temporal): |- + Constraint `Costs(temporal)` + ---------------------------- + +1 Costs(temporal) - 1 Costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Costs(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + "Costs(temporal)|per_timestep": |- + Constraint `Costs(temporal)|per_timestep` + [time: 3]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 Costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Source(Gas)->Costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Source(Gas)->Costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Costs(temporal)|per_timestep[2020-01-01 02:00:00] - 1 Source(Gas)->Costs(temporal)[2020-01-01 02:00:00] = -0.0 + Costs: |- + Constraint `Costs` + ------------------ + +1 Costs - 1 Costs(temporal) - 1 Costs(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Heat->Penalty - 1 Gas->Penalty = -0.0 + "Boiler(Gas)|total_flow_hours": |- + Constraint `Boiler(Gas)|total_flow_hours` + ----------------------------------------- + +1 Boiler(Gas)|total_flow_hours - 1 Boiler(Gas)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Gas)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + "Boiler(Heat)|total_flow_hours": |- + Constraint `Boiler(Heat)|total_flow_hours` + ------------------------------------------ + +1 Boiler(Heat)|total_flow_hours - 1 Boiler(Heat)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Heat)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Heat)|flow_rate[2020-01-01 02:00:00] = -0.0 + "Boiler|conversion_0": |- + Constraint `Boiler|conversion_0` + [time: 3]: + ------------------------------------------- + [2020-01-01 00:00:00]: +0.5 Boiler(Gas)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Heat)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 Boiler(Gas)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Heat)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 Boiler(Gas)|flow_rate[2020-01-01 02:00:00] - 1 Boiler(Heat)|flow_rate[2020-01-01 02:00:00] = -0.0 + "Sink(Demand)|total_flow_hours": |- + Constraint `Sink(Demand)|total_flow_hours` + ------------------------------------------ + +1 Sink(Demand)|total_flow_hours - 1 Sink(Demand)|flow_rate[2020-01-01 00:00:00] - 1 Sink(Demand)|flow_rate[2020-01-01 01:00:00] - 1 Sink(Demand)|flow_rate[2020-01-01 02:00:00] = -0.0 + "Source(Gas)|total_flow_hours": |- + Constraint `Source(Gas)|total_flow_hours` + ----------------------------------------- + +1 Source(Gas)|total_flow_hours - 1 Source(Gas)|flow_rate[2020-01-01 00:00:00] - 1 Source(Gas)|flow_rate[2020-01-01 01:00:00] - 1 Source(Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + "Source(Gas)->Costs(temporal)": |- + Constraint `Source(Gas)->Costs(temporal)` + [time: 3]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 Source(Gas)->Costs(temporal)[2020-01-01 00:00:00] - 0.04 Source(Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Source(Gas)->Costs(temporal)[2020-01-01 01:00:00] - 0.04 Source(Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Source(Gas)->Costs(temporal)[2020-01-01 02:00:00] - 0.04 Source(Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + "Heat|balance": |- + Constraint `Heat|balance` + [time: 3]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Boiler(Heat)|flow_rate[2020-01-01 00:00:00] - 1 Sink(Demand)|flow_rate[2020-01-01 00:00:00] + 1 Heat|excess_input[2020-01-01 00:00:00] - 1 Heat|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Boiler(Heat)|flow_rate[2020-01-01 01:00:00] - 1 Sink(Demand)|flow_rate[2020-01-01 01:00:00] + 1 Heat|excess_input[2020-01-01 01:00:00] - 1 Heat|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Boiler(Heat)|flow_rate[2020-01-01 02:00:00] - 1 Sink(Demand)|flow_rate[2020-01-01 02:00:00] + 1 Heat|excess_input[2020-01-01 02:00:00] - 1 Heat|excess_output[2020-01-01 02:00:00] = -0.0 + "Heat->Penalty": |- + Constraint `Heat->Penalty` + -------------------------- + +1 Heat->Penalty - 1e+05 Heat|excess_input[2020-01-01 00:00:00] - 1e+05 Heat|excess_input[2020-01-01 01:00:00]... -1e+05 Heat|excess_output[2020-01-01 00:00:00] - 1e+05 Heat|excess_output[2020-01-01 01:00:00] - 1e+05 Heat|excess_output[2020-01-01 02:00:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 3]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 Source(Gas)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Gas)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Source(Gas)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Gas)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Source(Gas)|flow_rate[2020-01-01 02:00:00] - 1 Boiler(Gas)|flow_rate[2020-01-01 02:00:00] + 1 Gas|excess_input[2020-01-01 02:00:00] - 1 Gas|excess_output[2020-01-01 02:00:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00] - 1e+05 Gas|excess_input[2020-01-01 01:00:00]... -1e+05 Gas|excess_output[2020-01-01 00:00:00] - 1e+05 Gas|excess_output[2020-01-01 01:00:00] - 1e+05 Gas|excess_output[2020-01-01 02:00:00] = -0.0 +binaries: [] +integers: [] +continuous: + - Costs(periodic) + - Costs(temporal) + - "Costs(temporal)|per_timestep" + - Costs + - Penalty + - "Boiler(Gas)|flow_rate" + - "Boiler(Gas)|total_flow_hours" + - "Boiler(Heat)|flow_rate" + - "Boiler(Heat)|total_flow_hours" + - "Sink(Demand)|flow_rate" + - "Sink(Demand)|total_flow_hours" + - "Source(Gas)|flow_rate" + - "Source(Gas)|total_flow_hours" + - "Source(Gas)->Costs(temporal)" + - "Heat|excess_input" + - "Heat|excess_output" + - "Heat->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/00_minimal--solution.nc4 b/tests/ressources/v4-api/00_minimal--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..86f94e3b5da04a5462d9d845e10f61d591f8f976 GIT binary patch literal 42203 zcmeHP4Rln+6~1qG6Co@iC}4^~)&&niBWxggP>GUXmKsA$IM&ueT#`jsH@jhXgIJOP z9<~0}pB}9!Rcxi!L#tNn&+(kv>gnUtVCv{;;B%yU1VPp?@1&r`N41~mA$0Q$tb!K>+XohlBq-} zA{k~TdNFxjIFXFRW9@{+AMOgpIvp6=ax!GkhT-rfEMVA()7|bs!!EV8j1m)d zp(E@NRHkK$D$_#uNs7U;!H=3~mzEMn zE~<4%rJKj{SWRzueMdN%Y!}Q^ot8AIpnj6ZIdX_X8aVL&OfCNI_EjxKIV1qY&w=N@$<2h&Tg8Yodi?CyIhB2aLISu~wcP z$dPetVJr=$wOLXJYgI}w8`i7|cc>}9E}m3Z=8P|sGO#t1#YK5{I1!0=MmpwFBQhx! z#-~Xl6wQ{@i}dZONLM(S3U>>>(xdT|vz+C#Y3w0wUyR>IHF5KUQA|R1HMDAK24a>> zyUJNJMl^K|TOgSVC1`|*nFbjN$2#dwmLs@3_(^X`?!$CdGpXdQ6R~sphtv4Ee0NcKK{MBa(0U5~h4Cj*^Z_W=JOzsqd^$ z9J^@gu|=irbEKt|L$GwI-jT^QTme%o*(UL#1XIsHn^r2KzP>&*Sux;~39nDO?XB(7 zE(XJxLg_BUFwmYAfn&FqEa4I~v!$iI1PY2N#eEXpld+3oleCk!Dm(c@nF>?O$UFvj z39xPMjJ-8P>V_%c#sARW98Ps~uBobv#}l2A7}~u_(X?d7Cm0lVITqrWD)636_ohK! z*HqKiCJb^i--*ZiW#=|Dw=G-V+}>7K)6@V!2D~MF|D#(kTwWJEhdFlT zFkW)i5sIQFg%W}@TGJ3`-HCWK+?|Sav|pSEUmVBPN(|tKb1HX|uwI0dz%P~+v^Uqa zB;xo`N=2~us0P2PMXe;N7gWSVH&<89JAK~5ic31zoLXHuud-_1X>cr(f-_ZRel-1- zRg_JEJD-@N;Fb~pZju)zOV+PixMs_97wrrj<6gLM@7_PWa#8yv=)QW~VkS@}HmzUP zanUoydrQCGzbLTiH8&LPb6qd^E4zA+B$ruA<>k_PsPFG+;HCL^{x8CbSH6|m+m&3VF%1?Ydh z{|Xb>+$*f%H27rJQh>pY6Q+^AyIgcYVF;b4*gz8=S7>BygWKiW5s(biD51iv-tOG$ zT|*@fdLbrPM4&Zpr7;F^wB^lKcjv#?g3a$ z+IZvH|9Xf(GCTq+yebg7*{BW-yGfm+kyli!1Ey) zJ9mQiE>HD`qNyuxS2M$;S?`=+0(vOt&VfaeLF(sGm^&M2+XlmS8HwK$HWwUCvq%1B zxVzdeo%hfDR+-;PlOC;CMPGP>cx0n(P;I*T6g1u&sfTEq4$w5++R)h0+R$9r&@QIw z)36GfraMEaP%@lK&)1ze<;Lhp8^%$-9M3+nx5&>Oj`h;42wVtF_;sc-*aj zvZuh(y5&tYlL%fg64w}$YEj_Hp9H4hOlMY{>5}bCda?s3IO)a4ZoZ(#ObGnW-0vZ90fJQ(gpb<~Lzetf)aw^cQ- zyh|2;c;l|d)?f>ebBBvPPl$$hq1LHwC3bi--9>o2NyY3x$o1!nk(?b^6c0X(zo*<~ z3^;$))IGvWv5@G<6$HH$8)a>2FU5w6t9CcGp)Vucs~X};IabN&w9^9X!H2ifpN9QO zXDI@XSKL%tTDzjD5elaFec*!gkU9YMFT7m{bI`G7CfxFH+wt%W*6xEh-}v@ycoNG` zhkFJm)dD$39}5Hi#VxQIi_L|)J)Ip8McVlget4h@x{+W$T>tc|-LMr?PlUg|wr?%G zhnKV9@iRZ@hyMtI(*N~-2i(}&Y0Jb4PDZF>>FW-R*y!6BIPn`NL>_CD5yjy+d9;gb9_Jb`y#)~69i2i5yC-j9zK#o;vgO?Ia#7+hY9rlY1vX6OCs7_!PE2S-F z)v^!Sp-Oc>`$MU|WcMkhitII|R7^PnqwlcjS1+?6RYJMHf$C~=;U{&{^skZ%My_ol zNZp*ww^G@~YY>zq)m8Y7)2-A~bFC={iF!={l)hfjIQtHw9VXT=w)SC0)3kF&}2MFHFAP42r~)`=gC%5msp4lE{AahExk zWdct)jE;j`-)aOj0vZ90fJQ(ga2Oz9Zd`~5KUsSRwu!S@*%53v@ODI|`w4FZe6e0@ zzO!c6HzgKV4)sZ*{J$`J^7&GWcv--}eeN&J=I@oR{H|mOh&j*Rux`lruf7ZT)u4R7 zf5mn$$NT&K6W>8|~?#jn%0IK!u7jetf#BcKt`2plm8T*SfhY!TctaQ$u`%f>EEgBv+?5*S(U&wZMF*%>09c|s{mtO{N zyON3cTx}u|opP2sHaX^7oX-bsC6WxqlX+k4-~C;i{eZhriN)(g-tYKgORKrl2xtT}0vZ90fJWdz z5Xjfs?5Q!nHfwmU{kBnAn}T|0&U~Jeurn6N`Cgmx zB1p;z@aLBbp3G&d=X#O-S#7H`d^*+$XaqC@8Uc;K5re>}*r&6;A@SArsZRny?)aX; zng@ooPj}*b5P7vv`6U33KX3aq?RhVyhSs0Inaf^f|9wSiMg!VjHL=ha8Uc-fMnEH= z5jav17!`Z<{i`Ir+FtcZAm}9j-yd#RGNiq_3-?^}YOk{Y0LO>gUS)q0i2;6Wz_Z{t zx$IZ=IAL0jcWe8Vq0q5LKqH_L&!e*MggH{?q*eQN8Lt#p1#cdWeKJn*|m@5WDi?OgiXT(*6#y=j*tgH((HBO&kf zuSP&4pb^jrXaqC@hZ6#$V$W{dDk0SNtWN?#pA_u5^2yhS+?(D@pSR7YuP=YdkmJ$b zo8}i6B_;s;k|N*V?5ccrf9>1J+P-D@bgU832xtT}0vdrM27!F-5SEYe9m1C9-k9}& D!zfL2 literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/00_minimal--summary.yaml b/tests/ressources/v4-api/00_minimal--summary.yaml new file mode 100644 index 000000000..eeda74161 --- /dev/null +++ b/tests/ressources/v4-api/00_minimal--summary.yaml @@ -0,0 +1,46 @@ +Name: 00_minimal +Number of timesteps: 3 +Calculation Type: FullCalculation +Constraints: 25 +Variables: 40 +Main Results: + Objective: 4.0 + Penalty: -0.0 + Effects: + Costs [€]: + temporal: 4.0 + periodic: -0.0 + total: 4.0 + Invest-Decisions: + Invested: {} + Not invested: {} + Buses with excess: [] +Durations: + modeling: 0.25 + solving: 0.1 + saving: 0.0 +Config: + config_name: flixopt + logging: + level: INFO + file: null + console: false + max_file_size: 10485760 + backup_count: 5 + verbose_tracebacks: false + modeling: + big: 10000000 + epsilon: 1.0e-05 + big_binary_bound: 100000 + solving: + mip_gap: 0.01 + time_limit_seconds: 300 + log_to_console: false + log_main_results: false + plotting: + default_show: false + default_engine: plotly + default_dpi: 300 + default_facet_cols: 3 + default_sequential_colorscale: turbo + default_qualitative_colorscale: plotly diff --git a/tests/ressources/v4-api/01_simple--flow_system.nc4 b/tests/ressources/v4-api/01_simple--flow_system.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..ccc271a0e0fe5491e1e52e70acc37a4ebaa54160 GIT binary patch literal 119706 zcmeHQ34D~r*`M76L=urJ2#An`E8z@RM9LxLFwqboL9K|a%jR9OknG0YjU)nsR;^e2 zAs!!sf(Z2hN>NJjs20I$E6RuWQA=CYDjubv{YgLl?Dsq~^X&0v-y9Nx$v&fGcIJKN z`p?Y!{^yzNmV(^;GdlL}Xz$QLkok``YhJfWuPpsw^~Q|#GYWD`>}R~y-JUKz6SDQQ z^aAzcoq@_;SE}reb|E9_+!@_{dnn%vlqHg{?GC>ZM0?ReBnsgS2K@oi4ZK|7ZwGrx zy2IhBa0UVnNBV@+^!y6n;?mkc(5OrwmYQDftM&&RKDPq|f{vi4(tsybAUA46R^;O< zzj3w4R~-n61VSHNgtZ*1^x5wo%yslb& zK4HQH6)Izv!(E-Z)aCPDZTJHopV#4bx`IA`76Rg~HYyyLv$|;_awrl?5#vFR`PG=& z^b4E;bYanBr6>L2x!PXVLDQ30`prBHj$1&F$-vC{*P3DsJJpR3&I zU*PdBs2eawT?fk@6+UNKW1-Q>Kx5MZ8w4muh$g^PZ)gn`zyPh?=XN`)oPKAe5rp<% zx9l^#Gu-Z(VF3u`_W50gBe2*Lbd@`NUI-)m>oNqt%oAuTj@91pjid_NG%P91_eHaA z_>+mJ%UR`gd4jd@K9w&bhkQrZt)@bFeFcK1dh*m5W%A_<^7zKntzxNJc&R%q33aGn zMU4s>C5vGd7>x@XDJ#Qz%bd`8@dd3v74XtFTtWFw^2ica!pA_C-sKC(uR^`$l0r*k zMbO_WO0xKL=>l9N~N%D1fL2E zhO^kHa$#;F85ordtE#|o22*p5O6W*+dq=6qyC|xAL`p+okGHB?zM(HSb*tEHstAT0 zjYTCQCB>*PaJcH#*DQoXmEY%vaf5E17GW*IM70Txr}~y!#1l%j;eOI!3{(|YKrUjw z=di&=kD0L6VB`^mA(%TxmBIMVC0TpuofZ;?fWGQr7CUXFIvNT$J*|H|q zUY^Grs4_f(>R1DjI(;ru8gkb7KG%qMYDC2uLw7EJOG zL%m6;yhI0TI8)FM8U_P}8kamsHjpMFq5E`HFE)K@^5pO#s!CLUhv3yfu(2D@tsb4_ zbfHX{5pelERY6b!;e(4{gkgB`fhT|i0vMe5@jIx8CgACtzYrK5Xm7&40Z<|s4mVV# z1C(l2pou_r)RKsI2EHRQ=vn6Q$udJ>k90XMQLmVWOM`L|Wm&W!Mma#nVGPf!^aN17 z6{|#~ZZj2$ylG5_tyaG`anywcsq<*rvSpxr1Ou;E_io9%S` z0fy{^WYlSP28F58nVv7&bwZznA?QZ6C72aT<7sG(=NHOXr1U{Wr$`toNXu%rlc%C+ zg6J-i;h%668$nl@du)!+=P!eS5ojD`(in>nsWO9*wlrj;BYCKRJcU%NIYm=TOQmWR z6|tDd+`{R3#ifNaiXEjnQ;YJ1=!n6>X5jl@eKaGd;3CSg-7?3jq$OvmuvHX=%FX)^ z-})IwgF=~N^&gb)YZ|5GewdjA(M~CVi>FS{lbLJ>k)Q}Fb!AZ!K&TTS0>vgoay^xv zvS=)H(#aD92!_gzT}P>vAvGDT)JmiVJTR_G9i25gYk1Zu_&+r(Yl8egd6a-0B|wEs zwKR-?Kr`(0%bcNh8gm9Tt-^rL=W;CY8w-4XkJBr}1K+HF01KN8a3c7fR0NLVoSA+f zw8x+aY7b*b*Rg0N?xfMfyt0}njU92`h%v*;%iQB8jT$j(?1*e3VKw{ehevv^oCh&U zLzSHwxp*JwQD=}Tyf88DS{6k=mb9t zgbjX|-C%G35@4`ZbR4atsF}BRTvA8(D*M%YR!mA3V&Lk`4$+dI=-gPx)v!cgo!Zgz z4{qLh{KLtVKiN;=S#;cM@1C4wcR%#X4fgb&BiBE3gTP`XBxn9a$0F9;i{|i@nt4B3 z(xc=4mG*;n?OV1ylmhg|Pe|B!a`N}JklHb`Y#Fp*pE=)BF zwh$Oz1;)4^56PgcMrSb+%84N;lg=1;TE&gB7VcWq`zO&^X*eQk1~v2Ublv>YzHT;I zTUDEFzpzfcVeDf-aJqzGCC0!+5)&**Vl&ZN#WjbfspK~)OaA@f-uIr*FDRTQ(hI`A?=4clSLx5b zce8RI`bOFABK5s|A3i;3%w+t!1D_s6|JlZW7fE6VpARHNEG;fkg5aTVWp2bR6mN-kL_383GpQ>N*H?U#UxuNDMc_@<8#tol3 zbj4^AY-a;)LxTm7=5hMby6g>q>ti&zc@}Pe_aH1G(bF_If#AfE1DJJ3YA1%El?=E^ zBURbs^+;hwqk8B12*?%$`p z`k{;(dMoz(=IN~n{G&w!hBbf8XF$xZ9nU7%r_Co7fxr#ogjf3}1}RSG(|C6@M$bHUn!{eXf@2 z#(Oydtm>kD7P@VTG$KDIw8SfVj!RACbS_b$cYpBFITR1t7v#)PA2Ix1fKhRWUzlA} zl)vunp%*FnV|LNd3zq!l`#Od{=@HEGR0^}dSG+5b%CUB_R;UB|zRg}nTp#fV>0su=#H)-dNsS7)7cwW6_(zgElD z@z>wgI{rvK(3sQht-R~_pKama$HJc)uQ`5F@0k5jXNSh@pDKOp`lng=r(5{bThAQ- z01J8Dm+Rz5i;Eg+c;vx0BftnS0*nA7zz8q`i~u9R2rvT8guv{Qygby;n^o5|4mBs! zkp_PHfqA@bmS;C3zz8q`i~u9R2(*3#toVYJ+Oj|Mh1Or`TmnXb5nu!u0Y;#S2;`R( z%#@o2>~ck#4o%vIetJ2;^QHO$O^Xwq&^E0)X((}6bwCRh^h$~-~wOVEdMzU1#D;8#9>^j zo4xb0)&Kr%s}&cg)vX{IW%8JdN8!N^Mt~7u1Q-EEARZ8C(G6$o^x-LH-g(mZG&b*s zGvr;LJel*i_`L^%`VCp?N;`B&o15qUEM%&?CXK; zL<%UW2aA^gF&p5PwD6d-H<~%Y1RJdparoMn&V_a=PT&mM8_(Kr{HOZ2n{?` z|5^X_l7CRfPLZ8okQ;p#)|4%Km!b+^nM6EVmCoF-B~rua7dnF^_BB&`^l=QfM1WhG zE>R&O&nU7b0?N{aPd33=&Btuh!85i*%AJ+GI$68lAQh`E5l6mg!g-*(2k1Pirk<{1 zOQePz&O`KREGiEx=c<%#iPX~1igAe%qOspilGF+M$B;B*@?Ir{!pRgg^@mcq%BWGY z__swhDaU;(VJsp7Lg&G?GEEA;(axOUpRgYEPA6-A5+N+ zLH&c=)c(m$Cj*h2+9tWFEs?wLfEV(uG%KNZF9~bg7ka@d4{FQQ`c2~OWCR!iMt~7u z1Q>xffIy3~$xE(Lh_!Myi6e=>{xNWM6q`JBFuH8b%O-L7`|~ZY|0pU+akm=X5uDAN zWGW>2UFXWps#roi_|NGFtk`8}>`ubk#=99J4YSKgH260ozz8q`i~u9hHW4_{dAnOQ ze+X%#TImjqP5ob38LhVmE&Jt{Ed0=xNOL5;qLjyUyE`hHZ@OMJ4qGBA@dn0}HLIFe z-ALhRrlp~9O4%${QaGY@q@u3x#`bI1P$-(Yq15VzioC7;*0mIlrg-WJr!pvSb-(96 z3P*E6V>K#u(^J=O(&ei@H{4>6*VN-B?hoEi(a;=HD0wrUbf34plzrPe3P45rDvcoU`QfX~$oRjRy@h2Az~pKQH- ziaIX-Mw7mKo#l#2dL<~y@ZURlke=!1#03*N%FamLcK#Q`?;#CUOR?apt z`@cD@%l^=)RW2NhdH-6o?Uh#-N&Qcn0x+OkC(-qjzENH!|Azr8-4dO=-bsGx&P$#Y z;-+m??>ANNe?PNNf|6}UfDvE>7y(8gZV(7DD5+M%73EDkd1*@<(fdDCd-S6iSTw{Q zhmhtG@9m}wlXsXfA&yx0h7dZ#6Hh?`$o zE|(Z!%K@{3FnHR8L2Esc>&y?=7Mv&+d)o*WKl}T5x5A=@t|Ly~pjuTcAFbm4k;2=C z{^dm5(Xlqtj(Sz4T_^<2%c&|B;@2;C`-Ro$)oSi!pGJh@z=nb*{8mun30*nA7 zzz8q`Z3lr6qq5fjTa8+VB1fQ6OHvOU+t}@Puxye&ply>I?nCE!efyjOuEp7?QvEL* zsFI&U)km9E!QE;8+S}_gs)=`ysIoik-8VRTZ5s^wCqMF9tu2xE;m24~rB`yf%ANiN zhC?o?qKIvY5_gEb4=t(kcs)Unvm$B*)~D-L`nE*c&_9&K!z;IRGH#F86nfpSDKu^P zPodDbeyhwAP+6P!D9I5i>`QW?R4ROdfTPOrJIa04{_(pgKri(}^vNlhnK8=|d*A)$ z-6Y<-5#pnUy+qdB)X4 zA8OgU8P`RJlfM&!^wZQj9%@&)z>0y7y(8gZV+gB23A(9 zz-`?O?4iO$I0eScz-R#gHJ=XWWZYoI$Y|P~WXT@DjEtaQn-O3H7y(9r5r`WE6eANh zb*)d+_fNVte+cbZdAxN(SG50|Tk!0+=9{WqQ@U^jt+^yjl6q`-(2Aka;esSf_EctQ z1O?lS03*N%FanG~+#t{homunk5qkVfg{yhBUMstW4-fElzqq4serai*c)nDX2`TQk zuuV$X;L^u$@M1|@HzB^jJ63G4WbAXi3euJ-#M@Z-+xq#&fF;gJ?7!TKv01G%D`Ccl z(6M0z7y(9r5nu%33V{}7Y=1qhux;gx4Ygl)b}Ya0MD>w3w-J5huCW)q+whL~sB1p} z!G>mt&H6~%F4XvKbUA4@FbW%e5j7WQKV7y(9r5nu$`Gy*Nke!C~3 zLQjZR&VEsoSbc5!ZE^;>2-J}Bma)!w%UEvV^t|HI!WqTtmN6t(c#9aGB_vOPvVno$ zXd>-BgOwj1y7a-ThxI0GA+Gx3%~e*6&T7}jHO%M~nEaO!U<4QeMt~8BBLt$)T!dpA z&nAUwG5QuhHz-}xS~Ihc+jE0pt%7*J?D4}Vsv-ZCX7jCm#qKkS zTVFi&8glblrSw9h{*yOh&Ty;omeq>il|0@e_}FFy7y(9r5nu%327wmUpqC9$yx+{T zTiJ@=9?&`tC9gT!{A(Z@Vt6zvrRI6g_7#Jz7@w7feFHN-f{$%RfDvE>7y(8gZV;F@ zyRcZa50QXwuoY>fc+aEC-zzsoQM5h-7IytAZZL_bf=-)VlrP%Ty-Z@7tpCuJMpuC| zP0%e%Vih=ti_n2izmrayj1eg?Ka(bC>P2LObGS$)FkRA_M$VN|m?lfaWAZ6YhlqpH zNfRC-33kej5CbXfdEh)>3?gSOI46j~ZS!D}NzRGj93zI1(B`1+X4rR9T^pOlTY*6Ejr>W>D?wqe0UezqL~xsoalVWt8HXH7=gG! zphX$so{?>W5#o;0jX%EYp%%q1JGV_>hjjC2|Jt?dhtH;IYYDvywtd^pYsIed6vbHP zU1ry@U|~N-fDvE>7y(A0O(SrkGw$v5LYL6|?BlHyu1lYp_GIgyaX0H*%?y#Y6jL2t z{_6T$tr(-#4E<-!7zsYM839Is5nu!ufw)1SMRkgU=C%o)A};?vy?nx~)~8c6Ge+~# zGN(WM~LSstiw{+Pfeld<5eqWh6-3 zluHHbZ@PF`9Alh;_ux?5*il10T;b?zdcPwtDiq(NoAxbMARboQ4 z=m_HZSt?oFNQ6r2ls*FP4ipKk>`W9?v%k3Gtp^l#Eqs3CYIkf5UlB^t&eU>43pqvn-O3H7y(9r z5r`WE6vGrY8!BFf9sVUGBl+nJ`dC!S;@NZUI-yU(5Okvim=zu5rlkbi#cgDb@jYq3 z9v;F1uZa|PxbTtmZDd+;wv`=sl> zJL9#MV#+-HE5saS2?1vilG&2B^AYvi%rI#-g(Nd}yt>JXafS{~Bw=k2X2xkkgq@54 zBftnS0*pZ0M?kTxESs$*SXS|^r-)@G7d7YY;&{yTbN_0$u@MZlI}lCLC3Q-Oy^l>2 zWB-#Nh{a2$s#@9c<@GUD#S`DIRk8uyFlmX#Nnc)|l7Hz9m2Qbn9t#KNr=t#SS3cvO z@3PK{fm+@Bm&*)PfyaLt0Y-okU<4R}I6^?)0@KcU{`MN7Z-7~#N`Ll+OBBE8{rYv6 z>KoJJ2$y&%s=NiJUH1J?TqBl(+IzCN>cH=oi*>+}$BTEK7;vLdSCAC=AH7Ye+gGOM zuf0d#%TjpvTWiIoAbWubUbA?ks0EGqc=7eXr++Eb1u9Di&EF=j2Q0J1lWX>G7wT%1 z%bxyXyGQ}qVWMQ}wq0T+G_-8-eCEYZ3U%$wRXuh;CDgSs-+sCG8PQK>=Y>57c8iZ? z68GKt&^~>0%;;T#R|P6?2MGV9nzsd>>yahSJy!CrXb(Z-lz+C9&@v-wAac%kloNZEdUVL5-qXc%Am1 z_3G7PUh96+2U5woY9yK@y2F3Mk?*OfxWrjeZNwZU;;e_tD29qO$Cu-n)-DpnnW8hs zlv_AGueh{uMzN!)uynS-jiWfVfae>^*^n49VT`n@CJla%Ui+*5KlD{K<~a}A9Rk^x zhW2xid%|sBTi!%(wa)tr9+47!Y%>Ck03*N%FamLdK=iI#xDPSy&eu|GiFBW0dTG$_ zt6XZ-xQsvmHf?&H6~S7$c{8-n^}=O}t=SSsYt#nk8-DNNy_@`%M!g}gT}2`3f=1lE zTW^r8`zgp+omfBIRhkhrDyw{cXGP}l$#O4h*yGs4Dn#7WXwwQB4UT!|U_+~L8e*ih zd6@FF{`5t6Sk0MOtrPb!LnZjwW&{`kMt~7u1mXsPQ=&7yYqKIotTWa3y{AKaJ22pu zSK6A+)XY%n*c$3yeQ)<1wPLJR>&zE3VUK(un}nRPeyAI3*0W zd^a=LCDf0$~Ggw2rvSS03#4L2+YVSxQI@U+apS5iXvk)UtMH(|%y5+&neZ?(T=TZPzZ^7HS}|U!_NIs; z>{poaMxenz839Is5nu!uf%rh6UdFrCE`~HK;~l6$C7T&)p^o?V+I`E2-(F5FanGKBftp60RsOIYKg8s literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/01_simple--model_documentation.yaml b/tests/ressources/v4-api/01_simple--model_documentation.yaml new file mode 100644 index 000000000..947ddea6f --- /dev/null +++ b/tests/ressources/v4-api/01_simple--model_documentation.yaml @@ -0,0 +1,848 @@ +objective: |- + Objective: + ---------- + LinearExpression: +1 costs + 1 Penalty + Sense: min + Value: 83.88394666666667 +termination_condition: optimal +status: ok +nvars: 259 +nvarsbin: 18 +nvarscont: 241 +ncons: 215 +variables: + costs(periodic): |- + Variable + -------- + costs(periodic) ∈ [-inf, inf] + costs(temporal): |- + Variable + -------- + costs(temporal) ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: costs(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: costs(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: costs(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: costs(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: costs(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: costs(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: costs(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: costs(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: costs(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + costs: |- + Variable + -------- + costs ∈ [-inf, inf] + CO2(periodic): |- + Variable + -------- + CO2(periodic) ∈ [-inf, inf] + CO2(temporal): |- + Variable + -------- + CO2(temporal) ∈ [-inf, inf] + "CO2(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, 1000] + [2020-01-01 01:00:00]: CO2(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, 1000] + [2020-01-01 02:00:00]: CO2(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, 1000] + [2020-01-01 03:00:00]: CO2(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, 1000] + [2020-01-01 04:00:00]: CO2(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, 1000] + [2020-01-01 05:00:00]: CO2(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, 1000] + [2020-01-01 06:00:00]: CO2(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, 1000] + [2020-01-01 07:00:00]: CO2(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, 1000] + [2020-01-01 08:00:00]: CO2(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, 1000] + CO2: |- + Variable + -------- + CO2 ∈ [-inf, inf] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "CO2(temporal)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Boiler(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Boiler(Q_fu)|total_flow_hours": |- + Variable + -------- + Boiler(Q_fu)|total_flow_hours ∈ [0, inf] + "Boiler(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [5, 50] + [2020-01-01 01:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [5, 50] + [2020-01-01 02:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [5, 50] + [2020-01-01 03:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [5, 50] + [2020-01-01 04:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [5, 50] + [2020-01-01 05:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [5, 50] + [2020-01-01 06:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [5, 50] + [2020-01-01 07:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [5, 50] + [2020-01-01 08:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [5, 50] + "Boiler(Q_th)|total_flow_hours": |- + Variable + -------- + Boiler(Q_th)|total_flow_hours ∈ [0, inf] + "Storage(Q_th_load)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Storage(Q_th_load)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Storage(Q_th_load)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Storage(Q_th_load)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Storage(Q_th_load)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Storage(Q_th_load)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Storage(Q_th_load)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Storage(Q_th_load)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Storage(Q_th_load)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Storage(Q_th_load)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Storage(Q_th_load)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Storage(Q_th_load)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Storage(Q_th_load)|on_hours_total": |- + Variable + -------- + Storage(Q_th_load)|on_hours_total ∈ [0, inf] + "Storage(Q_th_load)|total_flow_hours": |- + Variable + -------- + Storage(Q_th_load)|total_flow_hours ∈ [0, inf] + "Storage(Q_th_unload)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Storage(Q_th_unload)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Storage(Q_th_unload)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Storage(Q_th_unload)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Storage(Q_th_unload)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Storage(Q_th_unload)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Storage(Q_th_unload)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Storage(Q_th_unload)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Storage(Q_th_unload)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Storage(Q_th_unload)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Storage(Q_th_unload)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Storage(Q_th_unload)|on_hours_total": |- + Variable + -------- + Storage(Q_th_unload)|on_hours_total ∈ [0, inf] + "Storage(Q_th_unload)|total_flow_hours": |- + Variable + -------- + Storage(Q_th_unload)|total_flow_hours ∈ [0, inf] + "Storage|charge_state": |- + Variable (time: 10) + ------------------- + [2020-01-01 00:00:00]: Storage|charge_state[2020-01-01 00:00:00] ∈ [0, 8e+06] + [2020-01-01 01:00:00]: Storage|charge_state[2020-01-01 01:00:00] ∈ [0, 7e+06] + [2020-01-01 02:00:00]: Storage|charge_state[2020-01-01 02:00:00] ∈ [0, 8e+06] + [2020-01-01 03:00:00]: Storage|charge_state[2020-01-01 03:00:00] ∈ [0, 8e+06] + [2020-01-01 04:00:00]: Storage|charge_state[2020-01-01 04:00:00] ∈ [0, 8e+06] + [2020-01-01 05:00:00]: Storage|charge_state[2020-01-01 05:00:00] ∈ [0, 8e+06] + [2020-01-01 06:00:00]: Storage|charge_state[2020-01-01 06:00:00] ∈ [0, 8e+06] + [2020-01-01 07:00:00]: Storage|charge_state[2020-01-01 07:00:00] ∈ [0, 8e+06] + [2020-01-01 08:00:00]: Storage|charge_state[2020-01-01 08:00:00] ∈ [0, 8e+06] + [2020-01-01 09:00:00]: Storage|charge_state[2020-01-01 09:00:00] ∈ [0, 8e+06] + "Storage|netto_discharge": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Storage|netto_discharge[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Storage|netto_discharge[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Storage|netto_discharge[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Storage|netto_discharge[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Storage|netto_discharge[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Storage|netto_discharge[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Storage|netto_discharge[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Storage|netto_discharge[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Storage|netto_discharge[2020-01-01 08:00:00] ∈ [-inf, inf] + "Storage|size": |- + Variable + -------- + Storage|size ∈ [30, 30] + "Storage->costs(periodic)": |- + Variable + -------- + Storage->costs(periodic) ∈ [-inf, inf] + "CHP(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: CHP(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "CHP(Q_fu)|total_flow_hours": |- + Variable + -------- + CHP(Q_fu)|total_flow_hours ∈ [0, inf] + "CHP(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: CHP(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: CHP(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: CHP(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: CHP(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: CHP(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: CHP(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: CHP(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: CHP(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "CHP(Q_th)|total_flow_hours": |- + Variable + -------- + CHP(Q_th)|total_flow_hours ∈ [0, inf] + "CHP(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [5, 60] + [2020-01-01 01:00:00]: CHP(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [5, 60] + [2020-01-01 02:00:00]: CHP(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [5, 60] + [2020-01-01 03:00:00]: CHP(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [5, 60] + [2020-01-01 04:00:00]: CHP(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [5, 60] + [2020-01-01 05:00:00]: CHP(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [5, 60] + [2020-01-01 06:00:00]: CHP(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [5, 60] + [2020-01-01 07:00:00]: CHP(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [5, 60] + [2020-01-01 08:00:00]: CHP(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [5, 60] + "CHP(P_el)|total_flow_hours": |- + Variable + -------- + CHP(P_el)|total_flow_hours ∈ [0, inf] + "Heat Demand(Q_th_Last)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 00:00:00] ∈ [30, 30] + [2020-01-01 01:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 01:00:00] ∈ [0, 0] + [2020-01-01 02:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 02:00:00] ∈ [90, 90] + [2020-01-01 03:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 03:00:00] ∈ [110, 110] + [2020-01-01 04:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 04:00:00] ∈ [110, 110] + [2020-01-01 05:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 05:00:00] ∈ [20, 20] + [2020-01-01 06:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 06:00:00] ∈ [20, 20] + [2020-01-01 07:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 07:00:00] ∈ [20, 20] + [2020-01-01 08:00:00]: Heat Demand(Q_th_Last)|flow_rate[2020-01-01 08:00:00] ∈ [20, 20] + "Heat Demand(Q_th_Last)|total_flow_hours": |- + Variable + -------- + Heat Demand(Q_th_Last)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable + -------- + Gastarif(Q_Gas)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Einspeisung(P_el)|total_flow_hours": |- + Variable + -------- + Einspeisung(P_el)|total_flow_hours ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Strom|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + ---------------------------- + +1 costs(periodic) - 1 Storage->costs(periodic) = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + ---------------------------- + +1 costs(temporal) - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 9]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 05:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] = -0.0 + costs: |- + Constraint `costs` + ------------------ + +1 costs - 1 costs(temporal) - 1 costs(periodic) = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + -------------------------- + +1 CO2(periodic) = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + -------------------------- + +1 CO2(temporal) - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] = -0.0 + CO2: |- + Constraint `CO2` + ---------------- + +1 CO2 - 1 CO2(temporal) - 1 CO2(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty = -0.0 + "CO2(temporal)->costs(temporal)": |- + Constraint `CO2(temporal)->costs(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "Boiler(Q_fu)|total_flow_hours": |- + Constraint `Boiler(Q_fu)|total_flow_hours` + ------------------------------------------ + +1 Boiler(Q_fu)|total_flow_hours - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Boiler(Q_th)|total_flow_hours": |- + Constraint `Boiler(Q_th)|total_flow_hours` + ------------------------------------------ + +1 Boiler(Q_th)|total_flow_hours - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Boiler|conversion_0": |- + Constraint `Boiler|conversion_0` + [time: 9]: + ------------------------------------------- + [2020-01-01 00:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Storage(Q_th_load)|on_hours_total": |- + Constraint `Storage(Q_th_load)|on_hours_total` + ---------------------------------------------- + +1 Storage(Q_th_load)|on_hours_total - 1 Storage(Q_th_load)|on[2020-01-01 00:00:00] - 1 Storage(Q_th_load)|on[2020-01-01 01:00:00]... -1 Storage(Q_th_load)|on[2020-01-01 06:00:00] - 1 Storage(Q_th_load)|on[2020-01-01 07:00:00] - 1 Storage(Q_th_load)|on[2020-01-01 08:00:00] = -0.0 + "Storage(Q_th_load)|flow_rate|ub": |- + Constraint `Storage(Q_th_load)|flow_rate|ub` + [time: 9]: + ------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1000 Storage(Q_th_load)|on[2020-01-01 08:00:00] ≤ -0.0 + "Storage(Q_th_load)|flow_rate|lb": |- + Constraint `Storage(Q_th_load)|flow_rate|lb` + [time: 9]: + ------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Storage(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e-05 Storage(Q_th_load)|on[2020-01-01 08:00:00] ≥ -0.0 + "Storage(Q_th_load)|total_flow_hours": |- + Constraint `Storage(Q_th_load)|total_flow_hours` + ------------------------------------------------ + +1 Storage(Q_th_load)|total_flow_hours - 1 Storage(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1 Storage(Q_th_load)|flow_rate[2020-01-01 01:00:00]... -1 Storage(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1 Storage(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1 Storage(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Storage(Q_th_unload)|on_hours_total": |- + Constraint `Storage(Q_th_unload)|on_hours_total` + ------------------------------------------------ + +1 Storage(Q_th_unload)|on_hours_total - 1 Storage(Q_th_unload)|on[2020-01-01 00:00:00] - 1 Storage(Q_th_unload)|on[2020-01-01 01:00:00]... -1 Storage(Q_th_unload)|on[2020-01-01 06:00:00] - 1 Storage(Q_th_unload)|on[2020-01-01 07:00:00] - 1 Storage(Q_th_unload)|on[2020-01-01 08:00:00] = -0.0 + "Storage(Q_th_unload)|flow_rate|ub": |- + Constraint `Storage(Q_th_unload)|flow_rate|ub` + [time: 9]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1000 Storage(Q_th_unload)|on[2020-01-01 08:00:00] ≤ -0.0 + "Storage(Q_th_unload)|flow_rate|lb": |- + Constraint `Storage(Q_th_unload)|flow_rate|lb` + [time: 9]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e-05 Storage(Q_th_unload)|on[2020-01-01 08:00:00] ≥ -0.0 + "Storage(Q_th_unload)|total_flow_hours": |- + Constraint `Storage(Q_th_unload)|total_flow_hours` + -------------------------------------------------- + +1 Storage(Q_th_unload)|total_flow_hours - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00]... -1 Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Storage|prevent_simultaneous_use": |- + Constraint `Storage|prevent_simultaneous_use` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 00:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 01:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 02:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 03:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 04:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 05:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 06:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 07:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Storage(Q_th_load)|on[2020-01-01 08:00:00] + 1 Storage(Q_th_unload)|on[2020-01-01 08:00:00] ≤ 1.0 + "Storage|netto_discharge": |- + Constraint `Storage|netto_discharge` + [time: 9]: + ----------------------------------------------- + [2020-01-01 00:00:00]: +1 Storage|netto_discharge[2020-01-01 00:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Storage|netto_discharge[2020-01-01 01:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Storage|netto_discharge[2020-01-01 02:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Storage|netto_discharge[2020-01-01 03:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Storage|netto_discharge[2020-01-01 04:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Storage|netto_discharge[2020-01-01 05:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Storage|netto_discharge[2020-01-01 06:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Storage|netto_discharge[2020-01-01 07:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Storage|netto_discharge[2020-01-01 08:00:00] - 1 Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 Storage(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Storage|charge_state": |- + Constraint `Storage|charge_state` + [time: 9]: + -------------------------------------------- + [2020-01-01 01:00:00]: +1 Storage|charge_state[2020-01-01 01:00:00] - 0.92 Storage|charge_state[2020-01-01 00:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Storage|charge_state[2020-01-01 02:00:00] - 0.92 Storage|charge_state[2020-01-01 01:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Storage|charge_state[2020-01-01 03:00:00] - 0.92 Storage|charge_state[2020-01-01 02:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Storage|charge_state[2020-01-01 04:00:00] - 0.92 Storage|charge_state[2020-01-01 03:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Storage|charge_state[2020-01-01 05:00:00] - 0.92 Storage|charge_state[2020-01-01 04:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Storage|charge_state[2020-01-01 06:00:00] - 0.92 Storage|charge_state[2020-01-01 05:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Storage|charge_state[2020-01-01 07:00:00] - 0.92 Storage|charge_state[2020-01-01 06:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Storage|charge_state[2020-01-01 08:00:00] - 0.92 Storage|charge_state[2020-01-01 07:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 09:00:00]: +1 Storage|charge_state[2020-01-01 09:00:00] - 0.92 Storage|charge_state[2020-01-01 08:00:00] - 0.9 Storage(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Storage->costs(periodic)": |- + Constraint `Storage->costs(periodic)` + ------------------------------------- + +1 Storage->costs(periodic) = 20.0 + "Storage|charge_state|ub": |- + Constraint `Storage|charge_state|ub` + [time: 10]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 Storage|charge_state[2020-01-01 00:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Storage|charge_state[2020-01-01 01:00:00] - 0.7 Storage|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Storage|charge_state[2020-01-01 02:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Storage|charge_state[2020-01-01 03:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Storage|charge_state[2020-01-01 04:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Storage|charge_state[2020-01-01 05:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Storage|charge_state[2020-01-01 06:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Storage|charge_state[2020-01-01 07:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Storage|charge_state[2020-01-01 08:00:00] - 0.8 Storage|size ≤ -0.0 + [2020-01-01 09:00:00]: +1 Storage|charge_state[2020-01-01 09:00:00] - 0.8 Storage|size ≤ -0.0 + "Storage|charge_state|lb": |- + Constraint `Storage|charge_state|lb` + [time: 10]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 Storage|charge_state[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Storage|charge_state[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Storage|charge_state[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Storage|charge_state[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Storage|charge_state[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Storage|charge_state[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Storage|charge_state[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Storage|charge_state[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Storage|charge_state[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 09:00:00]: +1 Storage|charge_state[2020-01-01 09:00:00] ≥ -0.0 + "Storage|initial_charge_state": |- + Constraint `Storage|initial_charge_state` + ----------------------------------------- + +1 Storage|charge_state[2020-01-01 00:00:00] = -0.0 + "CHP(Q_fu)|total_flow_hours": |- + Constraint `CHP(Q_fu)|total_flow_hours` + --------------------------------------- + +1 CHP(Q_fu)|total_flow_hours - 1 CHP(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 CHP(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP(Q_th)|total_flow_hours": |- + Constraint `CHP(Q_th)|total_flow_hours` + --------------------------------------- + +1 CHP(Q_th)|total_flow_hours - 1 CHP(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 CHP(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP(P_el)|total_flow_hours": |- + Constraint `CHP(P_el)|total_flow_hours` + --------------------------------------- + +1 CHP(P_el)|total_flow_hours - 1 CHP(P_el)|flow_rate[2020-01-01 00:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 01:00:00]... -1 CHP(P_el)|flow_rate[2020-01-01 06:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 07:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP|conversion_0": |- + Constraint `CHP|conversion_0` + [time: 9]: + ---------------------------------------- + [2020-01-01 00:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 CHP(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 CHP(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP|conversion_1": |- + Constraint `CHP|conversion_1` + [time: 9]: + ---------------------------------------- + [2020-01-01 00:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.4 CHP(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 CHP(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Heat Demand(Q_th_Last)|total_flow_hours": |- + Constraint `Heat Demand(Q_th_Last)|total_flow_hours` + ---------------------------------------------------- + +1 Heat Demand(Q_th_Last)|total_flow_hours - 1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 00:00:00] - 1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 01:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 06:00:00] - 1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 07:00:00] - 1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + --------------------------------------------- + +1 Gastarif(Q_Gas)|total_flow_hours - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + ----------------------------------------------- + +1 Einspeisung(P_el)|total_flow_hours - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 9]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] + 1 Strom|excess_input[2020-01-01 00:00:00] - 1 Strom|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 01:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] + 1 Strom|excess_input[2020-01-01 01:00:00] - 1 Strom|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 02:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] + 1 Strom|excess_input[2020-01-01 02:00:00] - 1 Strom|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 03:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] + 1 Strom|excess_input[2020-01-01 03:00:00] - 1 Strom|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 04:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] + 1 Strom|excess_input[2020-01-01 04:00:00] - 1 Strom|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 05:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] + 1 Strom|excess_input[2020-01-01 05:00:00] - 1 Strom|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] + 1 Strom|excess_input[2020-01-01 06:00:00] - 1 Strom|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] + 1 Strom|excess_input[2020-01-01 07:00:00] - 1 Strom|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CHP(P_el)|flow_rate[2020-01-01 08:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] + 1 Strom|excess_input[2020-01-01 08:00:00] - 1 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 1e+05 Strom|excess_input[2020-01-01 00:00:00] - 1e+05 Strom|excess_input[2020-01-01 01:00:00]... -1e+05 Strom|excess_output[2020-01-01 06:00:00] - 1e+05 Strom|excess_output[2020-01-01 07:00:00] - 1e+05 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 9]: + ----------------------------------------- + [2020-01-01 00:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 00:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 00:00:00] + 1 Fernwärme|excess_input[2020-01-01 00:00:00] - 1 Fernwärme|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 01:00:00] + 1 Fernwärme|excess_input[2020-01-01 01:00:00] - 1 Fernwärme|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 02:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 02:00:00] + 1 Fernwärme|excess_input[2020-01-01 02:00:00] - 1 Fernwärme|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 03:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 03:00:00] + 1 Fernwärme|excess_input[2020-01-01 03:00:00] - 1 Fernwärme|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 04:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 04:00:00] + 1 Fernwärme|excess_input[2020-01-01 04:00:00] - 1 Fernwärme|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 05:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 05:00:00] + 1 Fernwärme|excess_input[2020-01-01 05:00:00] - 1 Fernwärme|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 06:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 06:00:00] + 1 Fernwärme|excess_input[2020-01-01 06:00:00] - 1 Fernwärme|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 07:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 07:00:00] + 1 Fernwärme|excess_input[2020-01-01 07:00:00] - 1 Fernwärme|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] + 1 Storage(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 CHP(Q_th)|flow_rate[2020-01-01 08:00:00]... -1 Heat Demand(Q_th_Last)|flow_rate[2020-01-01 08:00:00] + 1 Fernwärme|excess_input[2020-01-01 08:00:00] - 1 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00] - 1e+05 Fernwärme|excess_input[2020-01-01 01:00:00]... -1e+05 Fernwärme|excess_output[2020-01-01 06:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 07:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 02:00:00] + 1 Gas|excess_input[2020-01-01 02:00:00] - 1 Gas|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 03:00:00] + 1 Gas|excess_input[2020-01-01 03:00:00] - 1 Gas|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 04:00:00] + 1 Gas|excess_input[2020-01-01 04:00:00] - 1 Gas|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 05:00:00] + 1 Gas|excess_input[2020-01-01 05:00:00] - 1 Gas|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 06:00:00] + 1 Gas|excess_input[2020-01-01 06:00:00] - 1 Gas|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 07:00:00] + 1 Gas|excess_input[2020-01-01 07:00:00] - 1 Gas|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 CHP(Q_fu)|flow_rate[2020-01-01 08:00:00] + 1 Gas|excess_input[2020-01-01 08:00:00] - 1 Gas|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00] - 1e+05 Gas|excess_input[2020-01-01 01:00:00]... -1e+05 Gas|excess_output[2020-01-01 06:00:00] - 1e+05 Gas|excess_output[2020-01-01 07:00:00] - 1e+05 Gas|excess_output[2020-01-01 08:00:00] = -0.0 +binaries: + - "Storage(Q_th_load)|on" + - "Storage(Q_th_unload)|on" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - Penalty + - "CO2(temporal)->costs(temporal)" + - "Boiler(Q_fu)|flow_rate" + - "Boiler(Q_fu)|total_flow_hours" + - "Boiler(Q_th)|flow_rate" + - "Boiler(Q_th)|total_flow_hours" + - "Storage(Q_th_load)|flow_rate" + - "Storage(Q_th_load)|on_hours_total" + - "Storage(Q_th_load)|total_flow_hours" + - "Storage(Q_th_unload)|flow_rate" + - "Storage(Q_th_unload)|on_hours_total" + - "Storage(Q_th_unload)|total_flow_hours" + - "Storage|charge_state" + - "Storage|netto_discharge" + - "Storage|size" + - "Storage->costs(periodic)" + - "CHP(Q_fu)|flow_rate" + - "CHP(Q_fu)|total_flow_hours" + - "CHP(Q_th)|flow_rate" + - "CHP(Q_th)|total_flow_hours" + - "CHP(P_el)|flow_rate" + - "CHP(P_el)|total_flow_hours" + - "Heat Demand(Q_th_Last)|flow_rate" + - "Heat Demand(Q_th_Last)|total_flow_hours" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/01_simple--solution.nc4 b/tests/ressources/v4-api/01_simple--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..4af34e23d95c591c4c13f28bbf1d2a2efc6b8cd3 GIT binary patch literal 95968 zcmeHQ31AdO)_#*2LJR@Ikr3`7Tp_LAJJoVL;3q9dZBfZQqB?Vn?kqEh9A8S8%>GC4PEN<`aby&@8&Nb@K;t#~NE zI5Cy`iPN|r9RX4yv9T=tL2n*=5%(Y_truRIArhj%0^soby*}uKQQa{<0{v?fGd;7b zJZ`7k?@JtQy*6>Y$5rX{N|%+68O}<)qPQW}#5oSH%Q2(U$!M>T9z&|roR+gg6dKDI4>T&!0UWbdbOl;I(^c<(x z=kmDisj4a%ce;XtnG9Kz%UxA1;X;+@+RFIxRQvU0>UJ?Q27n$n6{naf@v7^PHZ!+S zEdmyS@oM}rQpXU_d>Z6=CN+CXCPO6T)Iz(nQX?x?7LV59Ya}Qn*GWkeH=MPSvlvQj zJhgsK4Ot43XrPvW>T1Oqs4GAd0uHr^mBItBE?>2~LM`#&1k9$E zd{Ck+02P1wWJ55tH_{nq3&K#JBfy6SOEo^aj2w-N96mojV#?J}D6u*mCO)Xy|zBbDa*qHOo2M;Vx4H5S*aHASe-G@Xxg8BZwL( zLeQKMA`QtK046a+HZ>qYk509I80Y3N75P10M}<=j5k>0YkrQf4XF9wUPCM!se??Ke z+v)dv>}4(=Ct$azoW#+r^f<~iXd0w@+#xdRAT}-^Us}?;(Js;J%BptP#|BXtFhWW7 zvOGr!d!|W@#STa7?fMZh$lUf0arv+ zFJDBc;fzT-=$1Cndxb|yD}ruk^-V*ORCfscUekgM^iQ!MMXi8)TM zd+wFhsi{tzceduCph?4g>er}Zrs~Wg6+?RNv7`{DfhwcHO>6vMQ(Mn!wria8N}WER zT@nO?#Wg2k*O zl6YjX#v)Y=8ufb$U;HeOS`RhWfLa?APIbL3#mH1=z|wR&6BHK&hxRGXs6uGRX;};^ zoolI9xM$ObAbtbl)3C!J4X%TQ6?DjI@OoyeWl`j3Q95a`j0T+@oyn?3T`Ek6yDB!Q zC0gV;T?p($Fr+Hm825(o9K>A!XQgTeldd%RVVqrF?kttZ4>Bi@P=m}O^bqq%OiQYA zdR?9}S1IotVT9j_0}@_Gr9PqtY3+X3Y^TrftYU>~v>;^+D=?6sX`vQqnVsLeX7-LM z_4s5^l#vu3rGrC>mM+wg$S;(XF$QToD$ro6G=PB)G8IBpsHy}Vs0Ov@G(lgI5%^L` zOmGHmX|nB(9Zu*?we?-9k(t zPN~ZoG}2c}!-9;6mzT(tS}B?hXE6Iq(QQ=Wh&JR^_k>bjKZfK=)3Dee$w@B*U2_->lNw{e zKqCXuhHWtz*i~{E<8IUzUdrj)qSivjH8P}9K^7NiiB9=AUo1LAOLS_dQ^|K zclmy*N86}Ty2q*d&eA9A8mS{utDrvFP##+GonbabB^4!4C(z(DCRojDM~#3s zQP+MAfx7kD#4~F98D&yhPSmWKa^o>d*Jy=|wKzn-LG`o=L8EKGF`XKQ5Hx3mMnm!{ zpy;(7 z)zVP$QNGg(P*3zbjoB$;B&i@CXZA*-4A)(E9Znjf!*O=J-t|e%1U@qjCR1k?A7L_? zqS*yH^35@9E;<$`y7^pp2DEC&V$8`b%%+>s)$*C@o>nOY+1!J;9&Cad%vPY;ajhRS zj**(7GsNH@*bAKg(z0?}rpMzgbGdO;-zQbgN&&D+3}W4qBcBCg1_Sb>Oo?aak1HyY zro`CmReeR#f=++(#f z*KXvji&-(8Xfbld+-~kc3{K=nAeXK9#C^fIN!b#UtuUQ2$$G)){blUQr*n#mvLRPq z4q!s0>&%#9N(A_f)l~KFZMP|+lfYs5&7Bz=9js#&QQ6vn?G)w=78w$vt6Lb=k@;rR zAS{$QE?!WCW(o;GOctXzLmLzs6Iza|vT~}Uvf61_H&ZH(4xz+yGgr3|#_+4N`Mu<) zPp2`=V^FG02ikFT?FE^IUJni~_+6+(Y1XIVN1@ zxSpfDc#z+%c->kKlZ?)h!}F%E9-i|3+G}ECQ{P-Vxs&ZPlO<+k^}8pQepOrRIP|v7 zePF7!WaWHY%AUGWNV4XhUv{O(MkQE|z3*>(UhV!{%rWno;n>SPr_LD`z5K4a;taXm z+WuAFy4QZ=$(T3&_!}>$9vEwmg4fJdA6%Y(^|@;Kr%t8c^N$ld2HaEq-Hx~$`ww_k6Z@|IcK?64s?xwR4Uz4QwQs>PfgwT@eP+9g<*B(4`dKC7VLfYKA3 z`o`XSMq4VbyJ?&4!6EJ1BwW4u2J?+3=yO-(e^6lCe>l}GGPQ2UH>XCVZ|t~dbh`@I z&da98#_w3ZwcE;{Uizi>h8t4;bV+*{@?`ubUdxya?%S}I*qEBv4Tv5IM1ykx9 zFO3>B=(ToH*QdXbaUnc(X~$I?S$m(pQBS$kmXws+UZz}mX~$?z>1UMPUxZetGV`2W zyZ`6dF&DhpzIDQ1Tf_HhZ6COVx#d-?c_r4KHk+;1b^gs;{x!3cweE`-_Jiptlb~-$mA7K9k)798`wtDVmZZk7`J1hiC1X=s`o#D>qa!O)7HwJCwf|Rf3nP%J*e$IW zF95ecF}gu|e})ZQjrxB+yDx3liS42i%1@fMUcRW-QQq;6qunsL*0MDMgX_oSzxuXk z=gysnYxlo;^0(IQdhBa&IST!+?Y~0Ol!!W0#ryc|ookw>4a+J6+IVfap>&#u17#P! zKtLdHS_HynqYZE3Hrj0;-!zxmXpvGoOct_x+H0mE1|@Sixv4cZg@-ODjJesgal^s& zWMub(#aHv#M7d1X6)@w!cG#mpbBcNtS+3cxGId`(;E}UMsjz}Gmnvyyk|65a2M@#=>hBJH34CipWv(!=;oShvVxUB}9l-K6ecJuMmW$Qm=^&%SH1s%Vz9 zy86)>f6fYT$uap%sAgynv8?+O=vwCI6%|8QY!T~qcELXeu2J`gY3u|W{-9&m+kcn_ zIa6{AB|ASt$}XjWB9O18emf{#LWPFd2b>lt)!et2IW{Kd3-*2VL&f{QXI=d(8eJcHQlLn@=@${O~#Hb-$PwoL)!QCVwHvV((9 zQ##?Tl1(3YOFO@+o=?O{k>A)vN?_eIPD}jCrasKKFWz&-jMPw8m%K26a~$;hjj+0c z&=8jb0fB%(Kp-FxXc-77i($@kC0v)j950%kZ)z*yK6>i&SH>6TX5n&DH1^uyxK&xw zbR558&IGjf@X3uwK9Q&*8C83UYTq}!QS32B}g(bnA`Fqk~Ij)}>0Nq#rbu2uGw4-5d zUHkFC7J+nuxBlms2`~m}Q(@zpt`p$}G+WbQ{+(+J;Q=H_fI|w?SSQM^or>Kk`m3AbWlX;9ni+bg9FgS}z( zx|nmZ)aLFa`9~rS+zml5QCU0%1yT^9;f~7zq2#U#ywj7C)_if_}(Bd|;0$*B)ByB#VreILRVb7T|Cx(t;*gHEA7_tT42E3EZeZ!+=&T z$*M<-m0%a9+N6c(Qj564)6yguhCmFLlu=48!C*3SEjzA3T`0)4la?Jp9HKT*TI(zk zu*I6m(BYc*HV}Oy`8l~+>UFx`4J(~uvXICvY>O?eRWn&gPvmU~%BfX1SvmXlZ&WZ@ zNPT)}wlb&=X_~+k5uM3G54TnlIjs*iSxC=}7rNHBV$)8Tls zf4qcZX)d94q0{ZC^v_>)6{V2o_EHtDJ05ENbjm=w9j}}Nq&nv=-bI9@^*vRD+8zBX zd_+&{*ka^8?b6|;pKRsH_#3V_b??5sNP@Mgy{Z3x%Ui#3EEb<`Z-4mrmK-YKz|nXQ z0r$J_En%C|!?SZFyhBv%(R25K+;>%@ViSH;qZHmM*~_9f=JLDLqhk25JH?jsqG=Rr zc+Awn1c#Z*TaP_;fA3JEWb$K#w;5EhAAPCK-=$-ylv&tK9eG!mPztZT$;KOsyU!{_k9xz@;pM^spuQ)C zsjEm~>Jd`-mABveCY1d-n20p~Wy1c{AR>YS0fB%(Kp-FxX#NO2I$DjB;Z=?*e{#xx!$(qO=;|xS;=_Z>UoLG2b|O9 zE@l%0jGZQw%1#rSlAV)1CA%Oq+b*3Zl!h~SY_hM+;dl6){=l(9WjK-LX5U4HD3;Fc zZmV?KkTS(2*KoGB_+PNvU^k^CX}Efx4Vj#mU7ldF(5z)(-bZyrKb2&%(0pcK-pA+^ z{t=6Ky(SB5BXd1eCqQcs&mOaw6PYYDAsS~u?s0#%l;|XxV4#m7UGUfYmfcHv=*Wk@ z26?m-SF7anflU?^t>k*Ca_J6_UVk4|LnlRaG0fm`m#-sAnzB_hL`AC)y-wRqxoBp$ zzhU{>hK%3B^U-fZ`({f;-;AIWzCb`AAP^7;2n1RT0^#bLZExazvth%IOl_3D*`qgd zT@!sX8wY|dxcm6~y_-+lH+z$TjF$P4AMU;xb%E%?QoLmMbD?bYR3g&&JA|#S zK|}-v0s;YnfIvVX(EJf-6#I1g?HpKPpUUgr|-gQpR!t+Bmeid zPiZKg*9!1s*^*~N*{d{!PPF777WOJZA$);=KtLcM5D*Bo7zDyKwruXlA#1AZe(v|I z9uY1q+B9)2lK*>IQKR%@($;V#68#vtAH(jZbGD4W^0fUJ{K!+=u=Zo<9wz^f?#IwN z9(oA(y}NW_sD2H8f6&l%lJ7xEWGclRwTXwsuRuT`AP^7;2m}NI%?W`HS5W8~NSb=))lQZxTfa<55T6!PImfAnXX>Fe85=$_(R zh^y{;cp1RYOKqQqvS(>!IprgNlCWn93gHU`1Ofs9fq+1u#UP+qP!`r?+%pLET1?4- zv97v>QSuJTvL-$@9iQp-h6{_zCXR)9)1liNrJr;1AN;-({T#WU!+@B(;fb_xY3A!q zTr*c5oOBeR;4!Wy^jmk^L#gV$&-gI=`GvwOO%^&ExwE{Xwx)EZ!&~9B`}_{Slgcq! z=nL(%ueZkS^!q*bGMA6jA9; zvzw@T%2eF~RN8&ML!T$&Ug{!M`?%NaC92-)B8@h2C%;a_R+(7hve53V98^6vTy zB0!ryBdR_!mBb~d(sG&nJ`pF%#MWG=!*9)U&UU!V5CH#7d%nZx4=Vr7e^VA(EjBPj z7Hwst_seyV7pmVokO(xsU%nG4n#KzP?>0&izCb`AAP^7;2m}NI%>{vQS=1+*xJ8{h zd+I}ai<<0RlD2#56XQc!Si^`&jQS9HE4>-EQ{*~=t z_FdoQf1BnAm;F1jiQB)&2OUF$msWw$t*9OQrllH`PU|cvym#8QZ$IrWuoe0Ce zoMyt4U)tceuQ~(Rb6k~`QyrDnPUv7AE1z_d0k$?^JB9W$+jYx#p|V`Tu5RI~qFFvdK@0ftJj?C@!We6L&g{96+mP+o(}LC+E~3|)nz=~b>DaVqFY99yOn5!-;59# zU!0!v8TEPUKxu`Y5>8Kl$RTk8?`-_q85n z7l-PtDz}v?2SAZ>8}I~rM-kE*auE~=2m}NI0s(=5K%f~Q&?vJxxBkYFW5xzEG{~GY zgVx5OaLhQC!;C}vG19Ppfzw}FR&LAmc)VpUHy-!lgIFv{GBdH05NcdMe6s^F`OKbW zUviCQ3}xj_$}T9%n_OVe&nqehb|y>9yfIocfAbg@g?rZW~w*hEZH_;I=QUmdaj%=auf;zh5eze(_t3Hbd zJA2z#%~)@;P~WlZMR*E~!|N)?Ghy&D=sXxI%%rT3vTA9y2f^(7f!AxY43HVoW}y>$ z{La}`9Ah=HwAcN`|QaP#sBfhVI!ex39|S@>RPlk~D|r zjSUeD|r=e$y<&u4eJtE&Bw^mrEK=hvwgbw((ZO$!S8bun*dI)JqtLLaU z+XMDaL>k{F z>~9SsA}A0L2nYlO0s?{Nk3hKQ%)q-PDa_-K<8<==U( zKjil+**-xdH&i|`g<5fXgD7YGOh1Ofs9fk2BvKp7MK!%mWl@5s%;Kl~)ASjh&; z`GU(h|~d zJK;lYyA{5E@6#bE^S`~lu7~XsZKop(7D62EMjHsD z{4QFHfe=?oOQx)H7kH0!0cIb=W5`GJ|}%P=3!uGT*bqdMeEkfXD~lGKk=`y zD*_LDgS!^>_#0e+hlT|APGGJ&&m9sP+y)C(rScYA+!gIuj!XX_O)|9F%O6D>}zBW0tej@0#O$ubQV( z(}gc1(9qG62gGQJ&>ew*KtLcM5D*BoI0PDH{%qZBZoP?9{AA0PeJ9L!%}){Go_HzCb`AAP^7;2n1RT0*zuZPAL@@qiV$!`_9gJ(XmUz zHNyXO6CdHvy=}(Z&3}YnYriWWZ;_uq$2-qEzoGX0tHPddG0$$%P=SCzKp-Fx5C{+g z(pk$LS;%ZUPyUX4p_~|V!i1kwXWx2EW#4+7lAV)1CA%Oqn}6#u4Oif>6=-D+zr*MB z2R`~(=9=wv`&=G3M6q;f@d@y6Q?ijx=E$Ew-?!t@aDbKz$l>+V%fX|ky!|U%;hs)Qg!v&A2!$%%ghu7@Zg!ih$jlGAqzBMBCS&+0QgIe|ETGz&g nT9h9Oi<00IzCb`AAP^7;2n1RT0^u5yJlw>`BztV#b?AQqERMt0 literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/01_simple--summary.yaml b/tests/ressources/v4-api/01_simple--summary.yaml new file mode 100644 index 000000000..415b90de3 --- /dev/null +++ b/tests/ressources/v4-api/01_simple--summary.yaml @@ -0,0 +1,51 @@ +Name: 01_simple +Number of timesteps: 9 +Calculation Type: FullCalculation +Constraints: 215 +Variables: 259 +Main Results: + Objective: 83.88 + Penalty: 0.0 + Effects: + CO2 [kg]: + temporal: 255.33 + periodic: -0.0 + total: 255.33 + costs [€]: + temporal: 63.88 + periodic: 20.0 + total: 83.88 + Invest-Decisions: + Invested: + Storage: 30.0 + Not invested: {} + Buses with excess: [] +Durations: + modeling: 0.63 + solving: 0.91 + saving: 0.0 +Config: + config_name: flixopt + logging: + level: INFO + file: null + console: false + max_file_size: 10485760 + backup_count: 5 + verbose_tracebacks: false + modeling: + big: 10000000 + epsilon: 1.0e-05 + big_binary_bound: 100000 + solving: + mip_gap: 0.01 + time_limit_seconds: 300 + log_to_console: false + log_main_results: false + plotting: + default_show: false + default_engine: plotly + default_dpi: 300 + default_facet_cols: 3 + default_sequential_colorscale: turbo + default_qualitative_colorscale: plotly diff --git a/tests/ressources/v4-api/02_complex--flow_system.nc4 b/tests/ressources/v4-api/02_complex--flow_system.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..107f10a7959515ca682ad7a040e45a94fe6849e4 GIT binary patch literal 180475 zcmeHQ33yaRwmzLs07=+{fFMW+TOtW0As`@oNFc)!ASfc3rtRF2mQHul-62tepopX6 zGT^?9+qmE|>ImYv%p&5DjpL^vTpI@s=&q_y*45q{S zc`7Pw)poDFO7mll8`rGFT~bl8FerejDm-3?X7klK{fZPy3j;zD&@c8r|ZRmxf%=(3f$O#435wF;) zH7}KOEe@I1=N-%e@3F8j5}FGOBNr=}RPPLpx@y=^6P0WvgEtMvMefeVbZza<1fvdI zNT+TVJ!1mVA~>GpQxiK-B-{+w4f6K-rseTE%Hwm%r#Wi%M}#4-2*8@kn&uO^43YDR zP#%1csLHn>BZDxODDX6~;aH0Vg;4-gm_3EWCGqxXvMgZ|n8xL?m#c@pc=|>vLbynH zs>lU5q>``&-k5qZ#A^<3H!er@pksIpCm}UUIstYxRfZ@~}5S zQR5e{ztT2O+y|4Xx3B4IMLcqiH$wuT(q}f%TUow40uQBXucrbThQh}@xk)lCRv;_& zo@q9#MhOg=7#@=52vxeI01SfG{TX)cRZAe2OZW5+}+STMB;$TPavQ19u7+ZzN_8rFqieD<^d11s*Co zK%uYR@SNnET@0jP8Z1X})P*OYaTgR{*V@)Abh>@jn$uV7UKODM!-rs~G?uL8<8Pr2 zDL1B2?N{pedi2>u2=xugJ41*!+lGx3w4xQ8O5ECZY@Ao5mTYy?lw!L$aAFdnU64fD zR~biEKpIhYRNB3(@M+&TWl_Wjqj(vGv`&)`M!JuDB#M;HHdLe}t!S#IlLs3s`qP$j zr?0h8*1C@!OqsToa8jaU2DEVo#}iVAz1r?@`p?I?fAA?6VS*WHE@zm3Np4Ghqaj?r z!61xdBEn>?iNq2DIb+fjH=4OsJ2i(^=k#e}(ZFO5XW%mnDM6u>7XvPsiO1{25!-mc z22usY1z6#HN0$;3;#DlTl%O!?)eB^*iqg<1LKa8H=QPM%F?(FAiF)QDPvnDP4DPtr zDED~QD7Qhc(K&+SR#ThXeE3M#m#u=#J5r5Bhl*`W%U6{Schno&kavvQIpm&EZ)QW@ z!B*B+L;ioXCN9AopQa3E9HVxm8%DhmgBhz9To-Xw%BH{haY55BC*p=DYWU06D2xL? zD4^aXEz2#EFy@9+7rzsir<=+oq70_h-+P$0!s%`%hbAO3AI)!9_YZ#qgj`W_#G7a~ z9C#B6(cndt4&dbS;O7Q0^$`m+;dd~R!t@d6sR|~$yFBD(fhE^-?Jm39p@|n+U=BNT z&fKM9X(Mb9&vUvpySG4J_Q!Q_@n8Y^II@Wloe>v{4i9s)ey-$1d|;vh!CKN>wbA+-7l;=Mx4Bf zPT7(LEoynOO5Vc0Wn55K>nF|kEn~9d1)RRnacomQBJARE6IejjN5B4p4;?BEI&2|J zqCt7V@66UWMXLs=A1;-v&xVbkF#5|{kUsg45#JUA^iM>~nUOv&8a(XmB)x-FkzH1qzqe)VKAY>5UHkkY~b@+jcmCP+6dB_s2_lG0kRQTFV*TD zsNaA@3CSETq8QhT)wEx%tu{0%D9RAF$k%KU!sIcBCT}6jVocP0p>Tn_asLVjLkP9( z_9)rRJp~f#b)esvUI1ZlUb#+UXc8%j$!n3EW7_l;wRt&qhma}Pd=9U(+AkjFcwsJn zZP)b2y3;476S$P*73@=~0AQr&-1Be+2{k-|vHE&}tpc0UhKe`UxZW#uT7n+~#NvMj zUCYd#suw62k*@bNDc*c-gj`5nR>#JH&v;XPqz)8%SztXKNGUAbPnjV^t$!zi>fmamfN(X~B$ng#cYevYK- zf;n@k#0jP)mNm6x$h6gzg)B|pId5DdvJpZP;oHY0Jg-}&RLWpc7%L=6eYFKM<`?RP zOv1}TQs|)RRk5N_cSHoMO^D2LRyoU!Sg2d4Oac@P)Lo2XsRf63)3enz1=4&@oGYf~ z<>cjL=j7tQw49tt`oEN1z!F)p!F4SxmrFRW6D=PRYx1>&-kRfAqxBW3wvD zE5=R99i5v$dOY+)Q3#J!7e61cxlCLZjv8MAEP9Z1vZII!NvC&r{MlKBWgiBpFLSI+ z>pXdbW$j4-=il1(q!*NcxNv8849o!w{w}{Hq0>uo^1x*~j(#|G!wom- zF(0XWQ;(t|)tB8mF1c&PH3@5;+b|^s;kqfai!sOgvWFhIG@;i?XLYt7&iSHerw3Qw znbhesJHT~4)3&R-0c9_eCMJwXTX`quW!(nd>&p)O{bIdzC*{C$V~7%oOg3CHdd4j` z3-{DCndukPjI~_*WkT1R>>Do10?3`#WfoyuUv{nIvX^%Ew&*vhe$aBSF(0uDc|{QkCUo5Sm2!n-M6E_)J#3brf*`fTQb^`wHoV1hLP+qNfnPMduG)1a|>zLPE_P@k3H# zk(fxL)s!SgiPlQ4`8E8+yOK>dKOrUbsQee3r~S8M7ATyvXTtooRQ~Y7ya$l)23I==u~a zreMC&DW)j;Pakec6lDxF(u=BQV%{R^8r@s=!W@50-}P{)ru}w1Mxy(6*w{QE6!*+^RP6SdfT+myGog z^UEWmjVyfuJ`qgGG6>*+Xj01%fcFJyvLFik1Y=*4>G~Qyc(Bue%>ih!C(52IauJSv zQ>gV3uW0#(7LEA376!8xory-g`Lr;qBmVVq^7fL};%}P9;Lq_tUi(4xN4{v9CFk#d zH!b>E3*avs{oJIYImI*KfQBLE4xJ}|BzdI&n(FLzAIR{-qeZVk@XwR}q8jO6RWJS5 z@3!A_&BU2Y=FGy!HQpr|pWEdbCus6&0?_8N{=YnDw6QZb>U#hB%68qSBV-rLIhMtc z)_1Xu%VaG@?~Q2}6Awl)U60PQSd8GV_dR)`5nybBpTyhKg3a=y7|9XFKfY|f>LD)S zv+uBY^EB~9xaA}74wS&He+4D;^!636HFUDAgAdG|!)3f0?K-j|hT_%KtWmuFyhb_E z62g%@&Edl1X+Va@hp#hGJ|ssz#nZDZJf3EL;qhXe3Kt%qBBL9{3tWW@mlrD>!iC3+ z1`#eiUcuccUc48D3zyg5XA$CcN);hqf2c=@PsKRl!t=)wth?}def=ncJg)LYl&3j; zcs>J660q=YNVxyjZgnE?hoMk8K=3#3Vl5Bz~w#{4kSvHJloiXM~CT zNR#*sllV-N_)|^dN14QDnZ#$C#E&+KA7c`qV-l~Zc_V!COytL!#OIsDD@xz403*N%FanGKBftnS0&#@ElEsCEVtqbbkA&u-;Z=Q#CLZcS_i4S-b4Y$7yV*!yIdfvVU! z@Uy!Q4TNh@i+ct9`;3S@$F^BE&y2CB7BfKRUe^GLV@%RdWh z&OVv}Z{bJrsj&X>7c$`qgkdb4Gy1_Sn2mQE18WWr&xVjex%7jDa5HMO+oAvN zAJ2j{ddXH#`)C;)(SMc=PF)VKVrE03+q%WeVUu3@4~rcRctIDiUb)|a`$GUG!OQpc zEeE%Li;tez;(|A^rO$<)L*Mp5HCA&B{Pj+!7wRx}CG_~yZEN6{dWG(v@#q?ukK=R{ z)cwM80Td%`S^sLtkVgX+tQ?g^L!3b8_NtL|7|NPNQo0xuwePb+uDjnpE$uH z|BG8*F+LY?6zA?9FxZkvkL1yY-iSt-$Z8`VJr_JGE6^3ct&+XZl1LBn;Mg@9q?BVl zsfOg~DQ_k(hufyLBu}q_G(!R9NHbWJ+_j04(5u2YkVB7Za%?79dXJdN+Uq@ANEYAb zx*Hx=l*q?Ht-XfQ(c7pc>Fo7y{fg4jYior0{X$Q0n!QyfjQm%Qg^QcoHrm{*vh_9z z&hW{?h-aR7WYU!LxZ5NUGgq;FwCyw3=zdNSZ@L>RPyAZ{f}^*u)l!ooL7F2yNWl(p z0+zi8aw6m=iwlbi7Z)xlD75L;62{}u6&(?ewzK;*f6#0~IlkE4!c-h|5!dBAHBGms zAb(RF0KLuC4T0Xo6s9*Vg=zFsIOov|hM9fQ39u;=R{lWsETw4CC4{3lsSNR7Mt~7u z1Q-EEfDwo%1SJ2Ak=c@K*GcHYdFOGrj1yh6C1Rapz*+sjY?3YhMp$5sCR?P{74qB4 z7HKX=y?NJ!dpU>mvIH1Aw!1j%QG2^F!kF+GL{He@O!w}&hBftnS z0*nA75dR3YRnug-;tzqZq1)OgX8*eM$lYzl!VxD}?0MjfdtmVrDX9O4l zMt~7u1Ud`?F=dzi?vS{)b9O0aSp6>?ysJre`7YooW6@m0rgWnfKQ-yS6np%qtz zBR`7gg6`NA%vumm+I4r_*MWQLJ0$DI$=gRd7j$saKhFbL_}rYIx0ZeWB2(r{e+f5Y z)D+J?BftnS0*nA7zzD<-0s#i4Z)O)(XiOQCZv9S3pxZ!}-)>U;A;1^fsfNXy`_9{H zwB><-obs2g&sh@D6qN1;80YRQ@r47wrRN3qQ{FoH6B+@?plMTWZE>E4U(o^g8 z3F+4!CuuT@G|(XJ^4QC56?TW;%C^H7i8Uv zWXXS0Awpr%QG^Sy5gFvai~u9R2rvSS03#4b2m}~aEWZC7d{ZJ9b2ci!|E$ZEw~zGw zXHojF4;nKnnw?XF&rUxr*NkDA>B2wH42$4npAldL7y(9r5$G@o#B{yS@ruMX<_s&k z>wRLiYQPKkEsZI5bqC@CJE0|C{`{Xy0oD}XHQS7>k_mTN<>24_%vOV7@GnMy5nu!u z0Y;#MAP`s&JVtG%6Hb*t1->7)Q*EZVMxWQ&c(gpK4t*ld53``Dy#wNSGRqKv_k}HL z%W#W++!=gT5IlEHhvD{1e!JF;fth`g{hS$?jvfDD1Q-EEfDvE>IuZggUGwUER6^U% z*9*n=z5%;GL1q@Nsyt+mvF|K@_!PfUOC7B@*InZ&wuxeeM6qY%Pg&aBf<-Sh%|N)=w!39j@C%5?PqkzfqDj`2&WA-zBKD z9?+#f@EN5-DyzF8;i*VxJ&GoA?PG7BiRmMV_=8_dZO`QpDNgS#K z(;EwhSABOs!K{%|Ck|^#B3b!wyHTR4DpBuJERUm7^EPOHyUkH)_pZ_|-y)>|%ow?u zeUa~(kt8u!2t) z*k=S70Y-okU<4R}xIrNH4DGeEBzWzcq3z4l(*uY{rMjg#%aiXJXUvo!-ep-fZU(TA4u=`1AT#wdH z#ipbL{kV*tfcx8L70)kRP+DBFz&5YAbO{K9YeI2A7r0azr z@ABbv3UVZ-)rXTr#f+I*|e;6k_{l0;x%Y z8-wG36d>VlJvf}InTlL>0*s*Gd<>3)krb@Q;AxOS!AJFAK!5Qc7|ezM`Rt8Ec_OA( zZk`^@qTnVym`%Yy>cP>c#~vtRehKTxEX_X7)!#b z_-WdP13)=H2JJfA)+6@nSI5)U{B8hcSViTo!QcwSL%CF3GcCh9Dd)rB3YbK}zhZDA z-0|7CmfAC>gwgg}u;y-N*HqVrkkcI4kla@&*(M|;pl8u1F~YZi*p=3WW^77y(9r5nu!u0Y)HB5r`?Hdul*jFgig{Qzsm{H>TJuz?f$}304iqM%3lt`M3KSlB(>ZBoj1O1T zBf2VPd=YWsNJfAWU<4QeMj)OMi0PW%pd#bC7tz85_{qej%n;yPQ7bq_Xa?IBXnsd| zMSg+D<1Kf(?S9P%J&|PU3f7PoQ8id(5Z&+4LJ@geR`L@?bBbre0ZrUMxs*(Ox_0q3;Q2LKnNyPyZP)wsY?pU{dyU}VIg5#RL;|oh7 z>7@*BY}_k?#j(!)Wl1cFq`-0#nd*{;j4b98qgg`G z3duMv5)-2$r^|Jw-BqhWue51On{_(mCqw>E*2r5X<(-bM2QtPhBaZ3sqk~cxx4-pr zn&eQGX-Y!jXP^1m9cJt4W*QV*m`xLW>@xz403*N%FajM0fta%CJQO$!4bJ3lVl z({?LuZPlP?juF!8Gj->bM}|)^V~A!N7q>A(B>3281Q-EEfDvE>It&6aWr$ZSiVKE# z684VHpOt(bVZGJN{(`QTO!gPLoG7}N)v_mSofVXVMtkdgZw<rIJ+h-3~HUd z+jAZ@W7}ryvD=w#6MXD50*nA7zz8q`9R`7zvh8J;#|7Iy8GA?Kh*NCsZ#_1gF_Jni zb@z9!OMk_TL7J`C{)rhR!N)!$zz8q`i~u9hVGwBRn&aL$S#x}CXs0UO9(L09cQUR7 zY5n(`FW&zPNNdH1DrA?)K4Fz)!ToyV$@SO1H50B4SRC#!{U#nOs@ua(TDI(WS3)XU z;mw0hFK@mY9zzY|iSXlrbGAS!F0@aDx+l}F18KxL^O99JfHWNao5L5~0Akl)7JT|; z*=-D%BAG?O+IZa(_PUGOpXnJlO+eD5x(M8A-EWU z&4DAspLrOhJ$CPlxsSqDl+A;uZh7UmAPsMqWNq07(s1@8-+lWyNQ2wjpB~!*{jiXe z;mFRvKLO=foYSGxHRt~hF2x(?z~A4S_Y}N>`$i3q!(F(y5+G*N&-{(T7=FsY# zKCQ5#LUZ_i4UHl^Ugs*OTgK-!`22RS{{*Les#+4smizqZ-9dAgr@APAdQ?ZP2D!2Z zL#pTwWN$udHOOti8f3dE|2)+O3)+H^+!d`ijcS649(et3*OItsI6FJ#|aiUp1c0A@!g4EEwxXE^s*$<(OOY?IjA?=MRoLY zpp&|y@^a8$Ygb)BdDF39L4!x(=9p}bO1pQJX2XfFU%PoNC8UG+A|+H7l0p+cvy2i> zR_~%gfmfZ=?eshCF2jxXHjw-jB|kJEUnTNK`3f{bW=!?LI!ZN7rRp0Idjh3rFm#ytD;t#*1G&QDWa}RudQQYT%3%B_l}&lOJb2@vEb62v~ob! ztH`&S=?Ay|e6}MO%GPM-wkrl8QhPo=@IAi~u9R2*fi2F=gZL+z}USd=PdB->@rgk3U^& znx|8br|CC^ix#_AnlVf>UF>3Jm;@jDi~u9R2rvSSK!-sAN zJP>QwZ{*;-|43_8J;JSly#k;{eepX5fA^V^xUs0Tv=DApO86F(_(^nN3u-n0*jfDO z1n^z5_<`Rqj)-p%!Te{RKUM@V%AI@%_uUhzx^nedqq^X8d3OoD&oc{948QKY#`QU<4QeMt~7u1Ud== zZT(JvpW+YgU59$_%HG3cy4v33DM{Yix$etg94OnCJfWEL{N7JJZN@;&R-o511MMge z8?GlKzz8q`i~u7LKp>{9Yv-Tif_0@Kde`rHdv06V`wMZx-k1AsS9=5cU29wuJ^Jt; ze`eg@fmSwV{Ugt6Nt~{_;NZY+g1{~bm&fO`Rcl^brKi?QSy~cjsuTl5w-p2usl%tQ zzg?EVl338RxZF^Yd_Rfn=MQ2MwP|6YO>@aj3$q^}kwRmRQY5?pw>?4PMNNy#0=)G* z5}&Qa1G^^tm9hZSc9F;&V~&e#LL|HZbDt;i;-~>b^Rs z-%)AvxU>ICDdwsaqoi!W>_dSEj|TVpoE|j!fH)d9Xl~y}spqNGnJr6=8!$hAi_*?- z&7IZmpH2D~09^V{T+o_3>$`h)en@vNY5vZlT?}5O#atCHii^X~vdut#VIE58cNNMo^o_>6b{L)i7iNhH9y9`g2Q(`Z12AaYla zOsSE-Y5GW4XnsiHcUJdYYsOH`_Juye43*$xpAldL7y(9r5$G@o=vJdUkgH zillZjoIycpzWPiG{!+iXl!Ci4I1bLDAfT%EBv?klNf;ap0p?hR!8}+_SEcptKh1yf zYl<=Y0hWzswQ;uv{x`MC6Y#Qu; zM_aCJ7YvX9`c(f+9SCBkVQohnw6VBX@0>qeR)AEZRCVC$GW&&Q4AyMT{Z(eL1Rwj1 z03*N%FanG~he4nPEG&AK(Wi8lx~uJ6D`W)rj$i$>cy~;(vz-_h*o{Q&R{k{pRyn}J z87yh-)9_o8xVgI-qcvNTeU}+6!N)!$zz8q`i~u9hVGxKZE88+CE?8Lx_Kw#x9v>J} z?B2+T3+yrxyQ5XlUnvJzbBvaDk^4DgJ*KAGq zM`pYPANz~|BftnS0*pY1K_I5A?c1Nl1#8Q~-my2=`PZ0YxAx4qz%CoHyCLg`&2oUX zmGP2cKN_z6e?8IEHint?wiMBvAx@~!2p8DvD1-c$5nu!u0Y-okU~ObLMtI3wmfcA|c_; zJB@V{2F((pX3%Ub-lS}iM<`zSw>`M2wG8<*X2_zM*f9c(03*N%FajM40mLnB+!C2@I({ec}z%3Hv>qt+VI-r2!kvMJiPy|d-h z8va}K-|#hKIIAi~u9R2y_?({v(X}#osVv z*3WaGa~$%qzqvC%b;X`B7pU_k+BajqY|u?8xGzOM@{Nx+zOg{TQ?Z4rVxH>-( zK3@FT|ESXipDFIQ55&g09OzxM^lixRhH3%u(xBCE!^C7XrwcV_7rh7X;JIhxVROyy zk6{(wZ5q5<`Rr$qgg?iD_S`LpAr*6&0e8Ik>S0L1gD|q7=27hnI3K~70N4C^!Nvs^(?9wi3h^YyOh`Os z%a0%r{DV7d*B=XJ@t0=RVLGQy)@^;#8$(;msO`+C7=dOG(Dh9f zE3OfSdeP019;BpLkrayab8`geU0hgHxVUgZL7_Z9cRUh4aei*O-Ea44{@_8n<<2V2 z?Q?qE&_!I=sXC4=TfzOQLP5(BAclR?gyl=Z1 z!=3vZ!}})~!|!An!}Avy!=q*y!#A%rhM!qx3}3#*7#{g^W4N`aA|LOaf6Zxegs(}5 zGwQoPH`eb^#`h1mmSKCCVH-O&hZq4yfDvE>7=aFeK$8r6pcQhX%CL!Skk1U;*u|J( z8yRi*i6P=C>inwdX+Hve?J@QU4lx3Z03*N% zFanG~JRr~{s z8wUZ07y(9r5nu!ufewH`lMH;a6~;!DfeTB_!jaDmT;f50nSmP_ZF^(j%M(%6D#U&A z^rT&_W#l(ABM(84e=-7$03*N%FajL|fhHOGJS*f!m640{J%l5l8M(xR{xTzvFGhZ2 zl98d0oqyw|qB*l>!U0V+Iqsk6{Jr;9OX3n0kvVhD+@*O93!R!nt8@Ca0*`x*<`vr} z8W!0qYUPET2F+bgnOhRiP-#cCByDbk&u{not9r7{a4#cW6GJty**2UH?6Ud%Sj6X7*Hv$LIG2BT7b6isdRr&xM5zRrY#k zRc)2c@A2DR)?6u~uCvDo90LNaouO~#8Tv7x%t;slMt~7u1Q>z#jX;w#^c7aLvlC6N zHQIPhKF`pNy@zM$@jXMQX)(3>El*Y6-de`KgBd%)$37##2rvSS03*<05NMLIyR2w0 zGn$NDoDeD;`OMfQ9`u(Pd&gqz^l^&X|1aPC(bHN6zl#|>!N)!$zz8q`i~u9hVGwAN z!8cgpw5T%pJcTRy%;1e3jTwB$X7HprM!jPEd;2<>G5X#l6z0Fij6Mtz4l)9a03*N% zFaq(9K$DFAN-G{l70osIu?kS~nb8}27&Cfi^r1b1c6dg!w>BdjTpY#piMH`z;|m}%lMBl z<0tsoX9O4lMt~7u1Ud`?O)~!9SYc9B8UHwiEBVa$jU9~{KQsQ&9?=}*Cxc6rX6N2_ ltIcKrXeBG6>q>{KsH=RUTSS;Rk`Z787y(9r5r``U{tv;+)pY;> literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/02_complex--model_documentation.yaml b/tests/ressources/v4-api/02_complex--model_documentation.yaml new file mode 100644 index 000000000..040022b69 --- /dev/null +++ b/tests/ressources/v4-api/02_complex--model_documentation.yaml @@ -0,0 +1,1905 @@ +objective: |- + Objective: + ---------- + LinearExpression: +1 costs + 1 Penalty + Sense: min + Value: -10623.180480056364 +termination_condition: optimal +status: ok +nvars: 507 +nvarsbin: 146 +nvarscont: 361 +ncons: 589 +variables: + costs(periodic): |- + Variable + -------- + costs(periodic) ∈ [-inf, inf] + costs(temporal): |- + Variable + -------- + costs(temporal) ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: costs(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: costs(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: costs(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: costs(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: costs(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: costs(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: costs(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: costs(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: costs(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + costs: |- + Variable + -------- + costs ∈ [-inf, inf] + CO2(periodic): |- + Variable + -------- + CO2(periodic) ∈ [-inf, inf] + CO2(temporal): |- + Variable + -------- + CO2(temporal) ∈ [-inf, inf] + "CO2(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + CO2: |- + Variable + -------- + CO2 ∈ [-inf, inf] + PE(periodic): |- + Variable + -------- + PE(periodic) ∈ [-inf, inf] + PE(temporal): |- + Variable + -------- + PE(temporal) ∈ [-inf, inf] + "PE(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: PE(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: PE(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: PE(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: PE(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: PE(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: PE(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: PE(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: PE(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: PE(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + PE: |- + Variable + -------- + PE ∈ [-inf, 3500] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "CO2(temporal)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 200] + [2020-01-01 01:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 200] + [2020-01-01 02:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 200] + [2020-01-01 03:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 200] + [2020-01-01 04:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 200] + [2020-01-01 05:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 200] + [2020-01-01 06:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 200] + [2020-01-01 07:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 200] + [2020-01-01 08:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 200] + "Kessel(Q_fu)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_fu)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_fu)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_fu)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_fu)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_fu)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_fu)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_fu)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_fu)|on_hours_total": |- + Variable + -------- + Kessel(Q_fu)|on_hours_total ∈ [0, inf] + "Kessel(Q_fu)|total_flow_hours": |- + Variable + -------- + Kessel(Q_fu)|total_flow_hours ∈ [0, inf] + "Kessel(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 50] + [2020-01-01 01:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 50] + [2020-01-01 02:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 50] + [2020-01-01 03:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 50] + [2020-01-01 04:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 50] + [2020-01-01 05:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 50] + [2020-01-01 06:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 50] + [2020-01-01 07:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 50] + [2020-01-01 08:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 50] + "Kessel(Q_th)|size": |- + Variable + -------- + Kessel(Q_th)|size ∈ [50, 50] + "Kessel(Q_th)->costs(periodic)": |- + Variable + -------- + Kessel(Q_th)->costs(periodic) ∈ [-inf, inf] + "Kessel(Q_th)->PE(periodic)": |- + Variable + -------- + Kessel(Q_th)->PE(periodic) ∈ [-inf, inf] + "Kessel(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|off[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|on_hours_total": |- + Variable + -------- + Kessel(Q_th)|on_hours_total ∈ [0, 1000] + "Kessel(Q_th)|switch|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|switch|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|switch|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|switch|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|switch|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|switch|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|switch|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|switch|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|switch|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|switch|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|switch|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|switch|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|switch|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|switch|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|switch|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|switch|off[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|switch|count": |- + Variable + -------- + Kessel(Q_th)|switch|count ∈ [0, 1000] + "Kessel(Q_th)|consecutive_on_hours": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] ∈ [0, 10] + [2020-01-01 01:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] ∈ [0, 10] + [2020-01-01 02:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] ∈ [0, 10] + [2020-01-01 03:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] ∈ [0, 10] + [2020-01-01 04:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] ∈ [0, 10] + [2020-01-01 05:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] ∈ [0, 10] + [2020-01-01 06:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] ∈ [0, 10] + [2020-01-01 07:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] ∈ [0, 10] + [2020-01-01 08:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] ∈ [0, 10] + "Kessel(Q_th)|consecutive_off_hours": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] ∈ [0, 10] + [2020-01-01 01:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] ∈ [0, 10] + [2020-01-01 02:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] ∈ [0, 10] + [2020-01-01 03:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] ∈ [0, 10] + [2020-01-01 04:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] ∈ [0, 10] + [2020-01-01 05:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] ∈ [0, 10] + [2020-01-01 06:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] ∈ [0, 10] + [2020-01-01 07:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] ∈ [0, 10] + [2020-01-01 08:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] ∈ [0, 10] + "Kessel(Q_th)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel(Q_th)|total_flow_hours": |- + Variable + -------- + Kessel(Q_th)|total_flow_hours ∈ [0, 1e+06] + "Kessel|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel|on_hours_total": |- + Variable + -------- + Kessel|on_hours_total ∈ [0, inf] + "Kessel->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Wärmelast(Q_th_Last)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] ∈ [30, 30] + [2020-01-01 01:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00] ∈ [0, 0] + [2020-01-01 02:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00] ∈ [90, 90] + [2020-01-01 03:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 03:00:00] ∈ [110, 110] + [2020-01-01 04:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 04:00:00] ∈ [110, 110] + [2020-01-01 05:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 05:00:00] ∈ [20, 20] + [2020-01-01 06:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] ∈ [20, 20] + [2020-01-01 07:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] ∈ [20, 20] + [2020-01-01 08:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] ∈ [20, 20] + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Variable + -------- + Wärmelast(Q_th_Last)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable + -------- + Gastarif(Q_Gas)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Einspeisung(P_el)|total_flow_hours": |- + Variable + -------- + Einspeisung(P_el)|total_flow_hours ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher(Q_th_load)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_load)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_load)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_load)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_load)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_load)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_load)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_load)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_load)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_load)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_load)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_load)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_load)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_load)|total_flow_hours ∈ [0, inf] + "Speicher(Q_th_unload)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_unload)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_unload)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_unload)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_unload)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_unload)|total_flow_hours ∈ [0, inf] + "Speicher|charge_state": |- + Variable (time: 10) + ------------------- + [2020-01-01 00:00:00]: Speicher|charge_state[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Speicher|charge_state[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Speicher|charge_state[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Speicher|charge_state[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Speicher|charge_state[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Speicher|charge_state[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Speicher|charge_state[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Speicher|charge_state[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Speicher|charge_state[2020-01-01 08:00:00] ∈ [0, 1000] + [2020-01-01 09:00:00]: Speicher|charge_state[2020-01-01 09:00:00] ∈ [0, 1000] + "Speicher|netto_discharge": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher|netto_discharge[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Speicher|netto_discharge[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Speicher|netto_discharge[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Speicher|netto_discharge[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Speicher|netto_discharge[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Speicher|netto_discharge[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Speicher|netto_discharge[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Speicher|netto_discharge[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Speicher|netto_discharge[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher|size": |- + Variable + -------- + Speicher|size ∈ [0, 1000] + "Speicher|PiecewiseEffects|costs": |- + Variable + -------- + Speicher|PiecewiseEffects|costs ∈ [-inf, inf] + "Speicher|PiecewiseEffects|PE": |- + Variable + -------- + Speicher|PiecewiseEffects|PE ∈ [-inf, inf] + "Speicher|Piece_0|inside_piece": |- + Variable + -------- + Speicher|Piece_0|inside_piece ∈ {0, 1} + "Speicher|Piece_0|lambda0": |- + Variable + -------- + Speicher|Piece_0|lambda0 ∈ [0, 1] + "Speicher|Piece_0|lambda1": |- + Variable + -------- + Speicher|Piece_0|lambda1 ∈ [0, 1] + "Speicher|Piece_1|inside_piece": |- + Variable + -------- + Speicher|Piece_1|inside_piece ∈ {0, 1} + "Speicher|Piece_1|lambda0": |- + Variable + -------- + Speicher|Piece_1|lambda0 ∈ [0, 1] + "Speicher|Piece_1|lambda1": |- + Variable + -------- + Speicher|Piece_1|lambda1 ∈ [0, 1] + "Speicher->costs(periodic)": |- + Variable + -------- + Speicher->costs(periodic) ∈ [-inf, inf] + "Speicher->PE(periodic)": |- + Variable + -------- + Speicher->PE(periodic) ∈ [-inf, inf] + "BHKW2(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "BHKW2(Q_fu)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2(Q_fu)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2(Q_fu)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2(Q_fu)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2(Q_fu)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2(Q_fu)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2(Q_fu)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2(Q_fu)|on[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2(Q_fu)|on_hours_total": |- + Variable + -------- + BHKW2(Q_fu)|on_hours_total ∈ [0, inf] + "BHKW2(Q_fu)|total_flow_hours": |- + Variable + -------- + BHKW2(Q_fu)|total_flow_hours ∈ [0, inf] + "BHKW2(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 60] + [2020-01-01 01:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 60] + [2020-01-01 02:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 60] + [2020-01-01 03:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 60] + [2020-01-01 04:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 60] + [2020-01-01 05:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 60] + [2020-01-01 06:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 60] + [2020-01-01 07:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 60] + [2020-01-01 08:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 60] + "BHKW2(P_el)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2(P_el)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2(P_el)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2(P_el)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2(P_el)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2(P_el)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2(P_el)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2(P_el)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2(P_el)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2(P_el)|on[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2(P_el)|on_hours_total": |- + Variable + -------- + BHKW2(P_el)|on_hours_total ∈ [0, inf] + "BHKW2(P_el)|total_flow_hours": |- + Variable + -------- + BHKW2(P_el)|total_flow_hours ∈ [0, inf] + "BHKW2(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "BHKW2(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2(Q_th)|on_hours_total": |- + Variable + -------- + BHKW2(Q_th)|on_hours_total ∈ [0, inf] + "BHKW2(Q_th)|total_flow_hours": |- + Variable + -------- + BHKW2(Q_th)|total_flow_hours ∈ [0, inf] + "BHKW2|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2|on[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2|on_hours_total": |- + Variable + -------- + BHKW2|on_hours_total ∈ [0, inf] + "BHKW2|switch|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2|switch|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2|switch|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2|switch|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2|switch|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2|switch|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2|switch|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2|switch|on[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2|switch|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2|switch|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2|switch|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2|switch|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2|switch|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2|switch|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2|switch|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2|switch|off[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: BHKW2->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: BHKW2->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: BHKW2->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: BHKW2->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: BHKW2->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: BHKW2->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: BHKW2->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: BHKW2->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "BHKW2|Piece_0|inside_piece": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2|Piece_0|inside_piece[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2|Piece_0|lambda0": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: BHKW2|Piece_0|lambda0[2020-01-01 08:00:00] ∈ [0, 1] + "BHKW2|Piece_0|lambda1": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: BHKW2|Piece_0|lambda1[2020-01-01 08:00:00] ∈ [0, 1] + "BHKW2|Piece_1|inside_piece": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: BHKW2|Piece_1|inside_piece[2020-01-01 08:00:00] ∈ {0, 1} + "BHKW2|Piece_1|lambda0": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: BHKW2|Piece_1|lambda0[2020-01-01 08:00:00] ∈ [0, 1] + "BHKW2|Piece_1|lambda1": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: BHKW2|Piece_1|lambda1[2020-01-01 08:00:00] ∈ [0, 1] + "Strom|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + ---------------------------- + +1 costs(periodic) - 1 Kessel(Q_th)->costs(periodic) - 1 Speicher->costs(periodic) = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + ---------------------------- + +1 costs(temporal) - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 9]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 05:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 1 Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00]... -1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 08:00:00] = -0.0 + costs: |- + Constraint `costs` + ------------------ + +1 costs - 1 costs(temporal) - 1 costs(periodic) = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + -------------------------- + +1 CO2(periodic) = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + -------------------------- + +1 CO2(temporal) - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 02:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 03:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 04:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 05:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] = -0.0 + CO2: |- + Constraint `CO2` + ---------------- + +1 CO2 - 1 CO2(temporal) - 1 CO2(periodic) = -0.0 + PE(periodic): |- + Constraint `PE(periodic)` + ------------------------- + +1 PE(periodic) - 1 Kessel(Q_th)->PE(periodic) - 1 Speicher->PE(periodic) = -0.0 + PE(temporal): |- + Constraint `PE(temporal)` + ------------------------- + +1 PE(temporal) - 1 PE(temporal)|per_timestep[2020-01-01 00:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 01:00:00]... -1 PE(temporal)|per_timestep[2020-01-01 06:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 07:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "PE(temporal)|per_timestep": |- + Constraint `PE(temporal)|per_timestep` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + PE: |- + Constraint `PE` + --------------- + +1 PE - 1 PE(temporal) - 1 PE(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty = -0.0 + "CO2(temporal)->costs(temporal)": |- + Constraint `CO2(temporal)->costs(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_fu)|on_hours_total": |- + Constraint `Kessel(Q_fu)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_fu)|on_hours_total - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00]... -1 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_fu)|flow_rate|ub": |- + Constraint `Kessel(Q_fu)|flow_rate|ub` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_fu)|flow_rate|lb": |- + Constraint `Kessel(Q_fu)|flow_rate|lb` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_fu)|total_flow_hours": |- + Constraint `Kessel(Q_fu)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_fu)|total_flow_hours - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)->costs(periodic)": |- + Constraint `Kessel(Q_th)->costs(periodic)` + ------------------------------------------ + +1 Kessel(Q_th)->costs(periodic) - 10 Kessel(Q_th)|size = 1000.0 + "Kessel(Q_th)->PE(periodic)": |- + Constraint `Kessel(Q_th)->PE(periodic)` + --------------------------------------- + +1 Kessel(Q_th)->PE(periodic) - 2 Kessel(Q_th)|size = -0.0 + "Kessel(Q_th)|complementary": |- + Constraint `Kessel(Q_th)|complementary` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|off[2020-01-01 00:00:00] = 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|off[2020-01-01 01:00:00] = 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|off[2020-01-01 02:00:00] = 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|off[2020-01-01 03:00:00] = 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|off[2020-01-01 04:00:00] = 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|off[2020-01-01 05:00:00] = 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|off[2020-01-01 06:00:00] = 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|off[2020-01-01 07:00:00] = 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|off[2020-01-01 08:00:00] = 1.0 + "Kessel(Q_th)|on_hours_total": |- + Constraint `Kessel(Q_th)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_th)|on_hours_total - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00]... -1 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|switch|transition": |- + Constraint `Kessel(Q_th)|switch|transition` + [time: 8]: + ------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 08:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|on[2020-01-01 07:00:00] = -0.0 + "Kessel(Q_th)|switch|initial": |- + Constraint `Kessel(Q_th)|switch|initial` + ---------------------------------------- + +1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] = -1.0 + "Kessel(Q_th)|switch|mutex": |- + Constraint `Kessel(Q_th)|switch|mutex` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 08:00:00] ≤ 1.0 + "Kessel(Q_th)|switch|count": |- + Constraint `Kessel(Q_th)|switch|count` + -------------------------------------- + +1 Kessel(Q_th)|switch|count - 1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00]... -1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|consecutive_on_hours|ub": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|ub` + [time: 9]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 10 Kessel(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 10 Kessel(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 10 Kessel(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 10 Kessel(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 10 Kessel(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 10 Kessel(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 10 Kessel(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 10 Kessel(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 10 Kessel(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|consecutive_on_hours|forward": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|forward` + [time: 8]: + ----------------------------------------------------------------- + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] ≤ 1.0 + "Kessel(Q_th)|consecutive_on_hours|backward": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|backward` + [time: 8]: + ------------------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 10 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -9.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 10 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -9.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 10 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -9.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 10 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -9.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 10 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -9.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 10 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -9.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 10 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -9.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 10 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -9.0 + "Kessel(Q_th)|consecutive_on_hours|initial": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|initial` + ------------------------------------------------------ + +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 2 Kessel(Q_th)|on[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_th)|consecutive_on_hours|lb": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|lb` + [time: 9]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 2 Kessel(Q_th)|on[2020-01-01 05:00:00] + 2 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 2 Kessel(Q_th)|on[2020-01-01 06:00:00] + 2 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 2 Kessel(Q_th)|on[2020-01-01 07:00:00] + 2 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_th)|consecutive_off_hours|ub": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|ub` + [time: 9]: + ------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 9 Kessel(Q_th)|off[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 9 Kessel(Q_th)|off[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 9 Kessel(Q_th)|off[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 9 Kessel(Q_th)|off[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 9 Kessel(Q_th)|off[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 9 Kessel(Q_th)|off[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 9 Kessel(Q_th)|off[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 9 Kessel(Q_th)|off[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 9 Kessel(Q_th)|off[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|consecutive_off_hours|forward": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|forward` + [time: 8]: + ------------------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] ≤ 1.0 + "Kessel(Q_th)|consecutive_off_hours|backward": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|backward` + [time: 8]: + ------------------------------------------------------------------- + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 9 Kessel(Q_th)|off[2020-01-01 01:00:00] ≥ -8.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 9 Kessel(Q_th)|off[2020-01-01 02:00:00] ≥ -8.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 9 Kessel(Q_th)|off[2020-01-01 03:00:00] ≥ -8.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 9 Kessel(Q_th)|off[2020-01-01 04:00:00] ≥ -8.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 9 Kessel(Q_th)|off[2020-01-01 05:00:00] ≥ -8.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 9 Kessel(Q_th)|off[2020-01-01 06:00:00] ≥ -8.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 9 Kessel(Q_th)|off[2020-01-01 07:00:00] ≥ -8.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 9 Kessel(Q_th)|off[2020-01-01 08:00:00] ≥ -8.0 + "Kessel(Q_th)|consecutive_off_hours|initial": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|initial` + ------------------------------------------------------- + +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 1 Kessel(Q_th)|off[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_th)->costs(temporal)": |- + Constraint `Kessel(Q_th)->costs(temporal)` + [time: 9]: + ----------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|flow_rate|lb2": |- + Constraint `Kessel(Q_th)|flow_rate|lb2` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 5 Kessel(Q_th)|on[2020-01-01 00:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] - 5 Kessel(Q_th)|on[2020-01-01 01:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] - 5 Kessel(Q_th)|on[2020-01-01 02:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] - 5 Kessel(Q_th)|on[2020-01-01 03:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] - 5 Kessel(Q_th)|on[2020-01-01 04:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] - 5 Kessel(Q_th)|on[2020-01-01 05:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 5 Kessel(Q_th)|on[2020-01-01 06:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 5 Kessel(Q_th)|on[2020-01-01 07:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] - 5 Kessel(Q_th)|on[2020-01-01 08:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + "Kessel(Q_th)|flow_rate|ub2": |- + Constraint `Kessel(Q_th)|flow_rate|ub2` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + "Kessel(Q_th)|flow_rate|ub1": |- + Constraint `Kessel(Q_th)|flow_rate|ub1` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +50 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +50 Kessel(Q_th)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +50 Kessel(Q_th)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +50 Kessel(Q_th)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +50 Kessel(Q_th)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +50 Kessel(Q_th)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +50 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +50 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +50 Kessel(Q_th)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_th)|flow_rate|lb1": |- + Constraint `Kessel(Q_th)|flow_rate|lb1` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +5 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +5 Kessel(Q_th)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +5 Kessel(Q_th)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +5 Kessel(Q_th)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +5 Kessel(Q_th)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +5 Kessel(Q_th)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +5 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +5 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +5 Kessel(Q_th)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|total_flow_hours": |- + Constraint `Kessel(Q_th)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_th)|total_flow_hours - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|load_factor_max": |- + Constraint `Kessel(Q_th)|load_factor_max` + ----------------------------------------- + +1 Kessel(Q_th)|total_flow_hours - 9 Kessel(Q_th)|size ≤ -0.0 + "Kessel(Q_th)|load_factor_min": |- + Constraint `Kessel(Q_th)|load_factor_min` + ----------------------------------------- + +1 Kessel(Q_th)|total_flow_hours - 0.9 Kessel(Q_th)|size ≥ -0.0 + "Kessel|on|ub": |- + Constraint `Kessel|on|ub` + [time: 9]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 Kessel|on[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 02:00:00]: +1 Kessel|on[2020-01-01 02:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] ≤ 1e-05 + [2020-01-01 03:00:00]: +1 Kessel|on[2020-01-01 03:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] ≤ 1e-05 + [2020-01-01 04:00:00]: +1 Kessel|on[2020-01-01 04:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] ≤ 1e-05 + [2020-01-01 05:00:00]: +1 Kessel|on[2020-01-01 05:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] ≤ 1e-05 + [2020-01-01 06:00:00]: +1 Kessel|on[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] ≤ 1e-05 + [2020-01-01 07:00:00]: +1 Kessel|on[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] ≤ 1e-05 + [2020-01-01 08:00:00]: +1 Kessel|on[2020-01-01 08:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] ≤ 1e-05 + "Kessel|on|lb": |- + Constraint `Kessel|on|lb` + [time: 9]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel|on[2020-01-01 00:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel|on[2020-01-01 01:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 01:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel|on[2020-01-01 02:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 02:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel|on[2020-01-01 03:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 03:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel|on[2020-01-01 04:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 04:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel|on[2020-01-01 05:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 05:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel|on[2020-01-01 06:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel|on[2020-01-01 07:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel|on[2020-01-01 08:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 08:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "Kessel|on_hours_total": |- + Constraint `Kessel|on_hours_total` + ---------------------------------- + +1 Kessel|on_hours_total - 1 Kessel|on[2020-01-01 00:00:00] - 1 Kessel|on[2020-01-01 01:00:00]... -1 Kessel|on[2020-01-01 06:00:00] - 1 Kessel|on[2020-01-01 07:00:00] - 1 Kessel|on[2020-01-01 08:00:00] = -0.0 + "Kessel->costs(temporal)": |- + Constraint `Kessel->costs(temporal)` + [time: 9]: + ----------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel->costs(temporal)[2020-01-01 08:00:00] = -0.0 + "Kessel->CO2(temporal)": |- + Constraint `Kessel->CO2(temporal)` + [time: 9]: + --------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 00:00:00] - 1000 Kessel|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 01:00:00] - 1000 Kessel|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 02:00:00] - 1000 Kessel|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 03:00:00] - 1000 Kessel|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 04:00:00] - 1000 Kessel|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 05:00:00] - 1000 Kessel|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 06:00:00] - 1000 Kessel|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 07:00:00] - 1000 Kessel|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 08:00:00] - 1000 Kessel|on[2020-01-01 08:00:00] = -0.0 + "Kessel|conversion_0": |- + Constraint `Kessel|conversion_0` + [time: 9]: + ------------------------------------------- + [2020-01-01 00:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Constraint `Wärmelast(Q_th_Last)|total_flow_hours` + -------------------------------------------------- + +1 Wärmelast(Q_th_Last)|total_flow_hours - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + --------------------------------------------- + +1 Gastarif(Q_Gas)|total_flow_hours - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + ----------------------------------------------- + +1 Einspeisung(P_el)|total_flow_hours - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|on_hours_total": |- + Constraint `Speicher(Q_th_load)|on_hours_total` + ----------------------------------------------- + +1 Speicher(Q_th_load)|on_hours_total - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|flow_rate|ub": |- + Constraint `Speicher(Q_th_load)|flow_rate|ub` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_load)|flow_rate|lb": |- + Constraint `Speicher(Q_th_load)|flow_rate|lb` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_load)|total_flow_hours": |- + Constraint `Speicher(Q_th_load)|total_flow_hours` + ------------------------------------------------- + +1 Speicher(Q_th_load)|total_flow_hours - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|on_hours_total": |- + Constraint `Speicher(Q_th_unload)|on_hours_total` + ------------------------------------------------- + +1 Speicher(Q_th_unload)|on_hours_total - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|flow_rate|ub": |- + Constraint `Speicher(Q_th_unload)|flow_rate|ub` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_unload)|flow_rate|lb": |- + Constraint `Speicher(Q_th_unload)|flow_rate|lb` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_unload)|total_flow_hours": |- + Constraint `Speicher(Q_th_unload)|total_flow_hours` + --------------------------------------------------- + +1 Speicher(Q_th_unload)|total_flow_hours - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|prevent_simultaneous_use": |- + Constraint `Speicher|prevent_simultaneous_use` + [time: 9]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ 1.0 + "Speicher|netto_discharge": |- + Constraint `Speicher|netto_discharge` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 Speicher|netto_discharge[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher|netto_discharge[2020-01-01 01:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|netto_discharge[2020-01-01 02:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|netto_discharge[2020-01-01 03:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|netto_discharge[2020-01-01 04:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|netto_discharge[2020-01-01 05:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|netto_discharge[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|netto_discharge[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|netto_discharge[2020-01-01 08:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|charge_state": |- + Constraint `Speicher|charge_state` + [time: 9]: + --------------------------------------------- + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 0.92 Speicher|charge_state[2020-01-01 00:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 0.92 Speicher|charge_state[2020-01-01 01:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 0.92 Speicher|charge_state[2020-01-01 02:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 0.92 Speicher|charge_state[2020-01-01 03:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 0.92 Speicher|charge_state[2020-01-01 04:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 0.92 Speicher|charge_state[2020-01-01 05:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 0.92 Speicher|charge_state[2020-01-01 06:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 0.92 Speicher|charge_state[2020-01-01 07:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 0.92 Speicher|charge_state[2020-01-01 08:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|Piece_0|inside_piece": |- + Constraint `Speicher|Piece_0|inside_piece` + ------------------------------------------ + +1 Speicher|Piece_0|inside_piece - 1 Speicher|Piece_0|lambda0 - 1 Speicher|Piece_0|lambda1 = -0.0 + "Speicher|Piece_1|inside_piece": |- + Constraint `Speicher|Piece_1|inside_piece` + ------------------------------------------ + +1 Speicher|Piece_1|inside_piece - 1 Speicher|Piece_1|lambda0 - 1 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|size|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|size|lambda` + ----------------------------------------------------------- + +1 Speicher|size - 5 Speicher|Piece_0|lambda0 - 25 Speicher|Piece_0|lambda1 - 25 Speicher|Piece_1|lambda0 - 100 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|size|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|size|single_segment` + ------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|lambda` + ----------------------------------------------------------------------------- + +1 Speicher|PiecewiseEffects|costs - 50 Speicher|Piece_0|lambda0 - 250 Speicher|Piece_0|lambda1 - 250 Speicher|Piece_1|lambda0 - 800 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|single_segment` + ------------------------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|lambda` + -------------------------------------------------------------------------- + +1 Speicher|PiecewiseEffects|PE - 5 Speicher|Piece_0|lambda0 - 25 Speicher|Piece_0|lambda1 - 25 Speicher|Piece_1|lambda0 - 100 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|single_segment` + ---------------------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher->costs(periodic)": |- + Constraint `Speicher->costs(periodic)` + -------------------------------------- + +1 Speicher->costs(periodic) - 1 Speicher|PiecewiseEffects|costs = -0.0 + "Speicher->PE(periodic)": |- + Constraint `Speicher->PE(periodic)` + ----------------------------------- + +1 Speicher->PE(periodic) - 1 Speicher|PiecewiseEffects|PE = -0.0 + "Speicher|charge_state|ub": |- + Constraint `Speicher|charge_state|ub` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 1 Speicher|size ≤ -0.0 + "Speicher|charge_state|lb": |- + Constraint `Speicher|charge_state|lb` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] ≥ -0.0 + "Speicher|initial_charge_state": |- + Constraint `Speicher|initial_charge_state` + ------------------------------------------ + +1 Speicher|charge_state[2020-01-01 00:00:00] = -0.0 + "Speicher|final_charge_max": |- + Constraint `Speicher|final_charge_max` + -------------------------------------- + +1 Speicher|charge_state[2020-01-01 09:00:00] ≤ 10.0 + "BHKW2(Q_fu)|on_hours_total": |- + Constraint `BHKW2(Q_fu)|on_hours_total` + --------------------------------------- + +1 BHKW2(Q_fu)|on_hours_total - 1 BHKW2(Q_fu)|on[2020-01-01 00:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 01:00:00]... -1 BHKW2(Q_fu)|on[2020-01-01 06:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 07:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 08:00:00] = -0.0 + "BHKW2(Q_fu)|flow_rate|ub": |- + Constraint `BHKW2(Q_fu)|flow_rate|ub` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e+07 BHKW2(Q_fu)|on[2020-01-01 08:00:00] ≤ -0.0 + "BHKW2(Q_fu)|flow_rate|lb": |- + Constraint `BHKW2(Q_fu)|flow_rate|lb` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e-05 BHKW2(Q_fu)|on[2020-01-01 08:00:00] ≥ -0.0 + "BHKW2(Q_fu)|total_flow_hours": |- + Constraint `BHKW2(Q_fu)|total_flow_hours` + ----------------------------------------- + +1 BHKW2(Q_fu)|total_flow_hours - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 BHKW2(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "BHKW2(P_el)|on_hours_total": |- + Constraint `BHKW2(P_el)|on_hours_total` + --------------------------------------- + +1 BHKW2(P_el)|on_hours_total - 1 BHKW2(P_el)|on[2020-01-01 00:00:00] - 1 BHKW2(P_el)|on[2020-01-01 01:00:00]... -1 BHKW2(P_el)|on[2020-01-01 06:00:00] - 1 BHKW2(P_el)|on[2020-01-01 07:00:00] - 1 BHKW2(P_el)|on[2020-01-01 08:00:00] = -0.0 + "BHKW2(P_el)|flow_rate|ub": |- + Constraint `BHKW2(P_el)|flow_rate|ub` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 60 BHKW2(P_el)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 60 BHKW2(P_el)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 02:00:00] - 60 BHKW2(P_el)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 03:00:00] - 60 BHKW2(P_el)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 04:00:00] - 60 BHKW2(P_el)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 05:00:00] - 60 BHKW2(P_el)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 06:00:00] - 60 BHKW2(P_el)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 07:00:00] - 60 BHKW2(P_el)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 08:00:00] - 60 BHKW2(P_el)|on[2020-01-01 08:00:00] ≤ -0.0 + "BHKW2(P_el)|flow_rate|lb": |- + Constraint `BHKW2(P_el)|flow_rate|lb` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 02:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 03:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 04:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 05:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 06:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 07:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 08:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 08:00:00] ≥ -0.0 + "BHKW2(P_el)|total_flow_hours": |- + Constraint `BHKW2(P_el)|total_flow_hours` + ----------------------------------------- + +1 BHKW2(P_el)|total_flow_hours - 1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00]... -1 BHKW2(P_el)|flow_rate[2020-01-01 06:00:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 07:00:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "BHKW2(Q_th)|on_hours_total": |- + Constraint `BHKW2(Q_th)|on_hours_total` + --------------------------------------- + +1 BHKW2(Q_th)|on_hours_total - 1 BHKW2(Q_th)|on[2020-01-01 00:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 01:00:00]... -1 BHKW2(Q_th)|on[2020-01-01 06:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 07:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "BHKW2(Q_th)|flow_rate|ub": |- + Constraint `BHKW2(Q_th)|flow_rate|ub` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 02:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 03:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 04:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 05:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 06:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 07:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 08:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "BHKW2(Q_th)|flow_rate|lb": |- + Constraint `BHKW2(Q_th)|flow_rate|lb` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 02:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 03:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 04:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 05:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 06:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 07:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 08:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "BHKW2(Q_th)|total_flow_hours": |- + Constraint `BHKW2(Q_th)|total_flow_hours` + ----------------------------------------- + +1 BHKW2(Q_th)|total_flow_hours - 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 BHKW2(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "BHKW2|on|ub": |- + Constraint `BHKW2|on|ub` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|on[2020-01-01 00:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 00:00:00] - 1 BHKW2(P_el)|on[2020-01-01 00:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 BHKW2|on[2020-01-01 01:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 01:00:00] - 1 BHKW2(P_el)|on[2020-01-01 01:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 02:00:00]: +1 BHKW2|on[2020-01-01 02:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 02:00:00] - 1 BHKW2(P_el)|on[2020-01-01 02:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 02:00:00] ≤ 1e-05 + [2020-01-01 03:00:00]: +1 BHKW2|on[2020-01-01 03:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 03:00:00] - 1 BHKW2(P_el)|on[2020-01-01 03:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 03:00:00] ≤ 1e-05 + [2020-01-01 04:00:00]: +1 BHKW2|on[2020-01-01 04:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 04:00:00] - 1 BHKW2(P_el)|on[2020-01-01 04:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 04:00:00] ≤ 1e-05 + [2020-01-01 05:00:00]: +1 BHKW2|on[2020-01-01 05:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 05:00:00] - 1 BHKW2(P_el)|on[2020-01-01 05:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 05:00:00] ≤ 1e-05 + [2020-01-01 06:00:00]: +1 BHKW2|on[2020-01-01 06:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 06:00:00] - 1 BHKW2(P_el)|on[2020-01-01 06:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 06:00:00] ≤ 1e-05 + [2020-01-01 07:00:00]: +1 BHKW2|on[2020-01-01 07:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 07:00:00] - 1 BHKW2(P_el)|on[2020-01-01 07:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 07:00:00] ≤ 1e-05 + [2020-01-01 08:00:00]: +1 BHKW2|on[2020-01-01 08:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 08:00:00] - 1 BHKW2(P_el)|on[2020-01-01 08:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 08:00:00] ≤ 1e-05 + "BHKW2|on|lb": |- + Constraint `BHKW2|on|lb` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|on[2020-01-01 00:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 00:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 00:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|on[2020-01-01 01:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 01:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 01:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|on[2020-01-01 02:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 02:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 02:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|on[2020-01-01 03:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 03:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 03:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|on[2020-01-01 04:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 04:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 04:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|on[2020-01-01 05:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 05:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 05:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|on[2020-01-01 06:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 06:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 06:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|on[2020-01-01 07:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 07:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 07:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|on[2020-01-01 08:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 08:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 08:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "BHKW2|on_hours_total": |- + Constraint `BHKW2|on_hours_total` + --------------------------------- + +1 BHKW2|on_hours_total - 1 BHKW2|on[2020-01-01 00:00:00] - 1 BHKW2|on[2020-01-01 01:00:00]... -1 BHKW2|on[2020-01-01 06:00:00] - 1 BHKW2|on[2020-01-01 07:00:00] - 1 BHKW2|on[2020-01-01 08:00:00] = -0.0 + "BHKW2|switch|transition": |- + Constraint `BHKW2|switch|transition` + [time: 8]: + ----------------------------------------------- + [2020-01-01 01:00:00]: +1 BHKW2|switch|on[2020-01-01 01:00:00] - 1 BHKW2|switch|off[2020-01-01 01:00:00] - 1 BHKW2|on[2020-01-01 01:00:00] + 1 BHKW2|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|switch|on[2020-01-01 02:00:00] - 1 BHKW2|switch|off[2020-01-01 02:00:00] - 1 BHKW2|on[2020-01-01 02:00:00] + 1 BHKW2|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|switch|on[2020-01-01 03:00:00] - 1 BHKW2|switch|off[2020-01-01 03:00:00] - 1 BHKW2|on[2020-01-01 03:00:00] + 1 BHKW2|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|switch|on[2020-01-01 04:00:00] - 1 BHKW2|switch|off[2020-01-01 04:00:00] - 1 BHKW2|on[2020-01-01 04:00:00] + 1 BHKW2|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|switch|on[2020-01-01 05:00:00] - 1 BHKW2|switch|off[2020-01-01 05:00:00] - 1 BHKW2|on[2020-01-01 05:00:00] + 1 BHKW2|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|switch|on[2020-01-01 06:00:00] - 1 BHKW2|switch|off[2020-01-01 06:00:00] - 1 BHKW2|on[2020-01-01 06:00:00] + 1 BHKW2|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|switch|on[2020-01-01 07:00:00] - 1 BHKW2|switch|off[2020-01-01 07:00:00] - 1 BHKW2|on[2020-01-01 07:00:00] + 1 BHKW2|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|switch|on[2020-01-01 08:00:00] - 1 BHKW2|switch|off[2020-01-01 08:00:00] - 1 BHKW2|on[2020-01-01 08:00:00] + 1 BHKW2|on[2020-01-01 07:00:00] = -0.0 + "BHKW2|switch|initial": |- + Constraint `BHKW2|switch|initial` + --------------------------------- + +1 BHKW2|switch|on[2020-01-01 00:00:00] - 1 BHKW2|switch|off[2020-01-01 00:00:00] - 1 BHKW2|on[2020-01-01 00:00:00] = -1.0 + "BHKW2|switch|mutex": |- + Constraint `BHKW2|switch|mutex` + [time: 9]: + ------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2|switch|on[2020-01-01 00:00:00] + 1 BHKW2|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 BHKW2|switch|on[2020-01-01 01:00:00] + 1 BHKW2|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 BHKW2|switch|on[2020-01-01 02:00:00] + 1 BHKW2|switch|off[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 BHKW2|switch|on[2020-01-01 03:00:00] + 1 BHKW2|switch|off[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 BHKW2|switch|on[2020-01-01 04:00:00] + 1 BHKW2|switch|off[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 BHKW2|switch|on[2020-01-01 05:00:00] + 1 BHKW2|switch|off[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 BHKW2|switch|on[2020-01-01 06:00:00] + 1 BHKW2|switch|off[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 BHKW2|switch|on[2020-01-01 07:00:00] + 1 BHKW2|switch|off[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 BHKW2|switch|on[2020-01-01 08:00:00] + 1 BHKW2|switch|off[2020-01-01 08:00:00] ≤ 1.0 + "BHKW2->costs(temporal)": |- + Constraint `BHKW2->costs(temporal)` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 00:00:00] - 0.01 BHKW2|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 01:00:00] - 0.01 BHKW2|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 02:00:00] - 0.01 BHKW2|switch|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 03:00:00] - 0.01 BHKW2|switch|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 04:00:00] - 0.01 BHKW2|switch|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 05:00:00] - 0.01 BHKW2|switch|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 06:00:00] - 0.01 BHKW2|switch|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 07:00:00] - 0.01 BHKW2|switch|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 08:00:00] - 0.01 BHKW2|switch|on[2020-01-01 08:00:00] = -0.0 + "BHKW2|Piece_0|inside_piece": |- + Constraint `BHKW2|Piece_0|inside_piece` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 00:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 00:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 01:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 01:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 02:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 02:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 03:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 03:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 04:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 04:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 05:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 05:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 06:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 06:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 07:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 07:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 08:00:00] - 1 BHKW2|Piece_0|lambda0[2020-01-01 08:00:00] - 1 BHKW2|Piece_0|lambda1[2020-01-01 08:00:00] = -0.0 + "BHKW2|Piece_1|inside_piece": |- + Constraint `BHKW2|Piece_1|inside_piece` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 00:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 01:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 02:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 03:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 04:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 05:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 06:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 07:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 BHKW2|Piece_1|lambda0[2020-01-01 08:00:00] - 1 BHKW2|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "BHKW2|BHKW2(P_el)|flow_rate|lambda": |- + Constraint `BHKW2|BHKW2(P_el)|flow_rate|lambda` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 00:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 00:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 00:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 01:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 01:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 01:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 02:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 02:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 02:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 02:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 03:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 03:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 03:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 03:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 04:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 04:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 04:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 04:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 05:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 05:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 05:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 05:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 06:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 06:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 06:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 06:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 07:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 07:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 07:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 07:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 08:00:00] - 5 BHKW2|Piece_0|lambda0[2020-01-01 08:00:00] - 30 BHKW2|Piece_0|lambda1[2020-01-01 08:00:00] - 40 BHKW2|Piece_1|lambda0[2020-01-01 08:00:00] - 60 BHKW2|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "BHKW2|BHKW2(P_el)|flow_rate|single_segment": |- + Constraint `BHKW2|BHKW2(P_el)|flow_rate|single_segment` + [time: 9]: + ------------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 00:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 BHKW2|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 01:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 BHKW2|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 02:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 BHKW2|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 03:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 BHKW2|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 04:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 BHKW2|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 05:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 BHKW2|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 06:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 BHKW2|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 07:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 BHKW2|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 08:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 BHKW2|on[2020-01-01 08:00:00] ≤ -0.0 + "BHKW2|BHKW2(Q_th)|flow_rate|lambda": |- + Constraint `BHKW2|BHKW2(Q_th)|flow_rate|lambda` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 00:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 00:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 00:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 01:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 01:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 01:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 02:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 02:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 02:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 02:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 03:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 03:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 03:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 03:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 04:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 04:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 04:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 04:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 05:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 05:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 05:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 05:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 06:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 06:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 06:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 06:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 07:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 07:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 07:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 07:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 08:00:00] - 6 BHKW2|Piece_0|lambda0[2020-01-01 08:00:00] - 35 BHKW2|Piece_0|lambda1[2020-01-01 08:00:00] - 45 BHKW2|Piece_1|lambda0[2020-01-01 08:00:00] - 100 BHKW2|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "BHKW2|BHKW2(Q_th)|flow_rate|single_segment": |- + Constraint `BHKW2|BHKW2(Q_th)|flow_rate|single_segment` + [time: 9]: + ------------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 00:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 BHKW2|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 01:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 BHKW2|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 02:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 BHKW2|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 03:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 BHKW2|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 04:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 BHKW2|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 05:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 BHKW2|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 06:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 BHKW2|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 07:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 BHKW2|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 08:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 BHKW2|on[2020-01-01 08:00:00] ≤ -0.0 + "BHKW2|BHKW2(Q_fu)|flow_rate|lambda": |- + Constraint `BHKW2|BHKW2(Q_fu)|flow_rate|lambda` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 00:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 00:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 00:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 01:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 01:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 01:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 02:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 02:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 02:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 02:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 03:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 03:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 03:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 03:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 04:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 04:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 04:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 04:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 05:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 05:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 05:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 05:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 06:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 06:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 06:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 06:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 07:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 07:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 07:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 07:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 08:00:00] - 12 BHKW2|Piece_0|lambda0[2020-01-01 08:00:00] - 70 BHKW2|Piece_0|lambda1[2020-01-01 08:00:00] - 90 BHKW2|Piece_1|lambda0[2020-01-01 08:00:00] - 200 BHKW2|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "BHKW2|BHKW2(Q_fu)|flow_rate|single_segment": |- + Constraint `BHKW2|BHKW2(Q_fu)|flow_rate|single_segment` + [time: 9]: + ------------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 00:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 BHKW2|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 01:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 BHKW2|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 02:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 BHKW2|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 03:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 BHKW2|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 04:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 BHKW2|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 05:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 BHKW2|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 06:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 BHKW2|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 07:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 BHKW2|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 BHKW2|Piece_0|inside_piece[2020-01-01 08:00:00] + 1 BHKW2|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 BHKW2|on[2020-01-01 08:00:00] ≤ -0.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 9]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] + 1 Strom|excess_input[2020-01-01 00:00:00] - 1 Strom|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] + 1 Strom|excess_input[2020-01-01 01:00:00] - 1 Strom|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 02:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] + 1 Strom|excess_input[2020-01-01 02:00:00] - 1 Strom|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 03:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] + 1 Strom|excess_input[2020-01-01 03:00:00] - 1 Strom|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 04:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] + 1 Strom|excess_input[2020-01-01 04:00:00] - 1 Strom|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 05:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] + 1 Strom|excess_input[2020-01-01 05:00:00] - 1 Strom|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] + 1 Strom|excess_input[2020-01-01 06:00:00] - 1 Strom|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] + 1 Strom|excess_input[2020-01-01 07:00:00] - 1 Strom|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 08:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] + 1 Strom|excess_input[2020-01-01 08:00:00] - 1 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 1e+05 Strom|excess_input[2020-01-01 00:00:00] - 1e+05 Strom|excess_input[2020-01-01 01:00:00]... -1e+05 Strom|excess_output[2020-01-01 06:00:00] - 1e+05 Strom|excess_output[2020-01-01 07:00:00] - 1e+05 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 9]: + ----------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Fernwärme|excess_input[2020-01-01 00:00:00] - 1 Fernwärme|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Fernwärme|excess_input[2020-01-01 01:00:00] - 1 Fernwärme|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 02:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Fernwärme|excess_input[2020-01-01 02:00:00] - 1 Fernwärme|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 03:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Fernwärme|excess_input[2020-01-01 03:00:00] - 1 Fernwärme|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 04:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Fernwärme|excess_input[2020-01-01 04:00:00] - 1 Fernwärme|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 05:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Fernwärme|excess_input[2020-01-01 05:00:00] - 1 Fernwärme|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 06:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Fernwärme|excess_input[2020-01-01 06:00:00] - 1 Fernwärme|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 07:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Fernwärme|excess_input[2020-01-01 07:00:00] - 1 Fernwärme|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 08:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Fernwärme|excess_input[2020-01-01 08:00:00] - 1 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00] - 1e+05 Fernwärme|excess_input[2020-01-01 01:00:00]... -1e+05 Fernwärme|excess_output[2020-01-01 06:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 07:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 02:00:00] + 1 Gas|excess_input[2020-01-01 02:00:00] - 1 Gas|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 03:00:00] + 1 Gas|excess_input[2020-01-01 03:00:00] - 1 Gas|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 04:00:00] + 1 Gas|excess_input[2020-01-01 04:00:00] - 1 Gas|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 05:00:00] + 1 Gas|excess_input[2020-01-01 05:00:00] - 1 Gas|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 06:00:00] + 1 Gas|excess_input[2020-01-01 06:00:00] - 1 Gas|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 07:00:00] + 1 Gas|excess_input[2020-01-01 07:00:00] - 1 Gas|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 08:00:00] + 1 Gas|excess_input[2020-01-01 08:00:00] - 1 Gas|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00] - 1e+05 Gas|excess_input[2020-01-01 01:00:00]... -1e+05 Gas|excess_output[2020-01-01 06:00:00] - 1e+05 Gas|excess_output[2020-01-01 07:00:00] - 1e+05 Gas|excess_output[2020-01-01 08:00:00] = -0.0 +binaries: + - "Kessel(Q_fu)|on" + - "Kessel(Q_th)|on" + - "Kessel(Q_th)|off" + - "Kessel(Q_th)|switch|on" + - "Kessel(Q_th)|switch|off" + - "Kessel|on" + - "Speicher(Q_th_load)|on" + - "Speicher(Q_th_unload)|on" + - "Speicher|Piece_0|inside_piece" + - "Speicher|Piece_1|inside_piece" + - "BHKW2(Q_fu)|on" + - "BHKW2(P_el)|on" + - "BHKW2(Q_th)|on" + - "BHKW2|on" + - "BHKW2|switch|on" + - "BHKW2|switch|off" + - "BHKW2|Piece_0|inside_piece" + - "BHKW2|Piece_1|inside_piece" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - PE(periodic) + - PE(temporal) + - "PE(temporal)|per_timestep" + - PE + - Penalty + - "CO2(temporal)->costs(temporal)" + - "Kessel(Q_fu)|flow_rate" + - "Kessel(Q_fu)|on_hours_total" + - "Kessel(Q_fu)|total_flow_hours" + - "Kessel(Q_th)|flow_rate" + - "Kessel(Q_th)|size" + - "Kessel(Q_th)->costs(periodic)" + - "Kessel(Q_th)->PE(periodic)" + - "Kessel(Q_th)|on_hours_total" + - "Kessel(Q_th)|switch|count" + - "Kessel(Q_th)|consecutive_on_hours" + - "Kessel(Q_th)|consecutive_off_hours" + - "Kessel(Q_th)->costs(temporal)" + - "Kessel(Q_th)|total_flow_hours" + - "Kessel|on_hours_total" + - "Kessel->costs(temporal)" + - "Kessel->CO2(temporal)" + - "Wärmelast(Q_th_Last)|flow_rate" + - "Wärmelast(Q_th_Last)|total_flow_hours" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "Speicher(Q_th_load)|flow_rate" + - "Speicher(Q_th_load)|on_hours_total" + - "Speicher(Q_th_load)|total_flow_hours" + - "Speicher(Q_th_unload)|flow_rate" + - "Speicher(Q_th_unload)|on_hours_total" + - "Speicher(Q_th_unload)|total_flow_hours" + - "Speicher|charge_state" + - "Speicher|netto_discharge" + - "Speicher|size" + - "Speicher|PiecewiseEffects|costs" + - "Speicher|PiecewiseEffects|PE" + - "Speicher|Piece_0|lambda0" + - "Speicher|Piece_0|lambda1" + - "Speicher|Piece_1|lambda0" + - "Speicher|Piece_1|lambda1" + - "Speicher->costs(periodic)" + - "Speicher->PE(periodic)" + - "BHKW2(Q_fu)|flow_rate" + - "BHKW2(Q_fu)|on_hours_total" + - "BHKW2(Q_fu)|total_flow_hours" + - "BHKW2(P_el)|flow_rate" + - "BHKW2(P_el)|on_hours_total" + - "BHKW2(P_el)|total_flow_hours" + - "BHKW2(Q_th)|flow_rate" + - "BHKW2(Q_th)|on_hours_total" + - "BHKW2(Q_th)|total_flow_hours" + - "BHKW2|on_hours_total" + - "BHKW2->costs(temporal)" + - "BHKW2|Piece_0|lambda0" + - "BHKW2|Piece_0|lambda1" + - "BHKW2|Piece_1|lambda0" + - "BHKW2|Piece_1|lambda1" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/02_complex--solution.nc4 b/tests/ressources/v4-api/02_complex--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..d94cc1b49a0123a79ef5871faf10e0c8d3f7937b GIT binary patch literal 177549 zcmeHQ31AdO)_#+jgliHI2qbdk03iVqCJ+u0ArKNk5F+sa5t1R9z+jk(nF(ir0D`E9 z;*AHQvUn`JB8YgP20=ySP*wrg3lLXDS5P^kg8Z+#`gNvyrU@(~`4g&?)V!)!M}Kwn zt5;R8Zyz)uGraz#^+W2`1#+iVch|ZQCCH{m*n4g0HGI&35h3AaT|?rPK(j-Q%S`7# ze!7|aO$)hSKLkwdSEEMk@0L{d7hoXwz?#q%f0-c+>VgHp?)4UXpa}+rV>l~(Mtr(^ zQjy!`aCtrPy<%s?_a8LmhAzslLi;#JA^uW>I>p9Mwii3?;|d*&b2JYwb-Us*MoE=$ zO-?~cVrfC4drD5R-Rsat__KQ5UVCAVl3;?nq}b!1B1Z|&Q5Y*@vvM4T0Sn?0z6J3R z5RdRJh=&*#L@5FmgfIpU_e^nm^CtMBTuMO&1sWiwSx!fuBgaba`QQ<%Bbp6y?<$Yqr0*^EZr*kU8a=_)EwW?^-Z=)1ZyoZKZ|9hVMc zt_(mX~_>S<2)DJIK zihs0Ue-1Q-oMkc}JpEHtzNJ_RKB$T)`6c9N477W^_%bXIq0mD8aG)5(8-MEFDEi2= z!r-hDRU)8!$asBn5su1UqT}OFKg8kjD5AlPcuh!9!~C9{hpR6zPWbg}OeDncSw{%+ z!^A(0{spR~7e|3_LOw&Xo+vP%u`rg#-J@l1u+`2s8wFp~$JeuPSN&W>je`X|ki( zgYS_XMeNY(Do&(a6flVN%~0(+XKbLruXrtUp*P?gwM*rLWA0*XNfoh*#AKMWf9x6S z&5AB`+w*e@?0H^yan2;W@;Vi=7vi1%-6ju(`9cSKYubya`8^nQh)Qu<$UNY?KM;qH z2oNY*lLP`qo_)6!dY0NWLeEvlR%wB|c#6F^-|uk)GLN(8-F)`kMo$_rYh6cW?J4ll zNUQR}G{&=fGL8G}9!+ESd$vI1zVZ!HIYkO%*H0)B8r|r%qA_7!`gY^*m~0d_@+LTn z#W$=Lic_{IX;4gQ-UNH`coZJJ>Izhga5=nQcTT?3!#P;76sPpA95%RgujW7u{OuGd zCeZK>#OFT_MXnN8l~o~@K$W4ms;fhs#ud_DbyP#X)STkW#Il|kdPhSb89 zg`w}*(PEfHiOKZqUM=1@rC*FP9?z|GgFJ#$pRA1YtPEyQRZXg%Omve1lWBe4ZG^LL z|JC}N-z!e!rk*15Gm0;?MQ)|f`;JSYlk<1q4L6n8Y>w38NsdBXXNqq?T^v4!_#PDF zdFDeg7u}1^n9Xl!1QP$xF}V-Y#wkVo3|Hia86b8u5sv;i3v*R=rlZ(3MT1g=Q5WY2 zqb8sT3j)J-3#|0^OKVtnF@1m@BQl7!FLg}K!xedsf-~Qfr_3Rif=vct8}?*;-vhC=jO)*KItq06(DBK=cxd9K}v|zB5l5a4f*< zz`e|3d!c_oDe~rcos%3MucL@%%9}o^k6$ufH_>yjj;e2k>aNmErA}-W#&&Qum8`Zf z6K4-CSotA>s0|35#gh62V4zo1z(~$7G=eV3uNegRDN`YbKvfFB5HPJ@Tk5J4uxAF$ zN$Jl1F@bu6QU=SJ7bbMlKo27@NPN8>pJA*_!l*qE`Zd=kh@F~;Wo4YHJL_XBvDU{R zEp#zoTI|AsIzYA6MUj6q)rE(8l!I@(i2&;6W)VrBNbybO8{xArtnTaiEgNtEh$)2q znLxPtva=V7a)?A-><5nHOMKtB|DhUeCyy<%cy-ypb-3~wt-L1rKvs{)RC2K?mzS#? zdI^Ltk3haa`2N*LWsLFFl`P<^kMqTs#~I_x<8|s1Rt*hboQ-|ZRnR*NbeTLY41a=M z6|@7Ri;;nPFW=zt?Y%tYOpnE~3h-EZA;70vl_l%Y6>4?>lnnR z*GHb!v!7KW?a7IoJ*N8b807cR8XJ3JO%h>i9btS4F@DeL8!JAj5W|O<5ajpZx>}sg zAQLjwzatDH`6MPp{x4PWMcW5xp06L)YOsJbo3H{S&0>s^7G@2`r#%ac(IL%(&iHtY zp;n$>2sDQXNLBV1x$BSTcNE<)_62^zR6Ow~;HGl;?H7v~$X$O8QYIQ`hj6t0cHJQt zHVy+bUXWdXHd?ePO`WYU=M%oivo z&;%HW?<~Z+K*=g665gg~<_WY9$#*`_qncXN`HOjK6H=x8UQJqrfAgtZS>juY_<0Kx zOBGG%zbWR|SBNE0Gg4gD2odKwHzg%Jb7T5*1!_*>I{YP|Cx zj7wuSzos>0700MCn;$N0_R%k(&M~-}oQB<$q>#Zqh-}HO zGET2!V9~<2OSCY%+OXlj(}yePDO1+ zK1Kf*l)XEtt0Q zi=mB%{AbaoZLjAx`z-pSr8ktXdT#u-@jF7-MwR?h&>GeZ$oOWhBctz~T}~E(c}ATD z(;?5>`YXb@_k@B2Dv-xC{q)pO;^g%w(=UfDl1{NZ&wdj7U8#dh;;KmXSCQ10%DUr!tVc3G#^ ztuHCDFT0_)wQtMv@-OE+*&6!%+@?OO{8@~PqF8lYM3k&~aCJe&eh9T5gHwwmzGNAU zd~fxlez%$|FGVG%Or1Mwn{{~fn`NW=Slv-?&K^SH(i01sn~hs?m0{5Jh^br z{=SVu=2#yqX}P1rfCv9kr~m3z%UaB9Gw-r_-@F&Y`pe#ZtDk8N^%I*s$DSc~dUTWM;gwU5mt9q9eDU?;~#%j-uO+@6fb6+QrjZ?-uLhM079~( z|FnH>Ui)RrOXifipF1kvJ`%R=j=Wd4uQqMFYJA=CTTE*^MfZ-nKYHjao2_SR&$6N` z;l7!TZerywx0IHZ$5^e$!;i<_)DW(Ix{i7+xKY}S*<*H&{*{llisw%}Fz4qJH-v?S z-PJTaY{79y+VzXZSR8|j$tZVWc1L^QD?)G`f<~HU{r=L50+V*)K%sqYh&-Gn5nAiUF z=V_(-f6RW=ZeDoZ6Juj`++)uF?$uGfrjP6}`jL}8i^@$QKbWG2#PmFtaMRsymt2*$ z=(4v){&I6^+HsZU!^i0Fk-j^3CG^N|cChcb8~?ea$G`UU)u(5;;8@vc!W5rLZkogPr~ERSQ39CKF=6FHp>BDR;KZvpv*JHG*zKnmR6YZKHX!6=G{V` z(Q{BE21`b3Q^RGn0bkTfVlrA-JVVB0QC=hXtD)|+LJLLkqO1Oc`g0s_X}bX!*nXaqq$S z2Oawzwa-*9bHt!5Ma~aVk}GkbHOOM+SwLG7LYm5;^c(!G`uS>bRUVEEK5USY)c_zC z{WqWDzb)``_tsOizKP77{eN3vZmQvvS6Jwr0hxma_Xjdi!r)j`#Qp-5&f|X5ZQQrE z;Sj!65*_08>`mvPhZ8p^2Mf**YB-$rx~$(*g?hvEwh8*MUU%fP_1`K8hO<+2+A*^B zxYTEEV#tpl1q;@H)o@ssJ$P_Do9Fl(yMGWzXe9S&kcY)G+GMGt1}m^?=fGxV@?gib zCpK!ZUdR{InsK}WOgUE#FQ!5}FMb90l)vwE?)-IdUmyI%)al^c^Ra+|>BEOA69#)_ zpyQKAr7~^<8ZlyyCToTYa}-XBBYn6sWh0+HoD@s?a78T~fS)>wo}Xy)sXnBb(ub3} zRUh7fJq$X1xRnR{g@+r2M;L@RGzeGW_RIeg1AeZM@UN#LQehf>{pq!=505m+znMWe zlOmYY=M%+){lb~_!JMA|QXcFV-ohZfr9pTrgYeb{;Y@~RPG6r`CDcDW&LBMAAiRx1 zcw2+;%M8NX8HBet2v0BwPc#VcU=WUr6~*cC>0}U|WDu^3hkiJBHsH4zgyUL9ar*jn zF$hF4$5q6QgYGDFo; zQM7(tP2tj)2uK7Z0uljZqMHn7oIBPg^>{Es|*$ z+cq+_t7<>-X@D_o>*KwxJ6o+xiZqhC`tiE@{ryZzU4EFz0EvJ^Kq4R!kO%Vl4?ijKBi+dyoRSxl3-%1o1$SQ9&G6dKb&|u7CyqC zo#FFV``f^3OqKxa4}aGNA~D|%u()ADTUdpMX}ZGR-S@VISFxs-LcvQd+e0LVc7c-} zy0(WGP!vsomzTfV9==j|zq-$w0I%cOmKHGesznJf5A#iesMm%hLOOzz1P8DAArUgL z+jN8Di&l4lDM}?jh`g>NT!%+o62P^6W=D7t8M;7B^2|;Ui9IzD8e0$8AQKxQ9$t=n z<#z(K7W+#3hw=V_kI9Zv#A}DAV3X@!0Q|3+yy@L)ZX zvD!sEV9T0V?brjHKr%_YmIrOI2F)t(nD#<42FHu)*ocY2QGA9C^T2kAZ4lBU~WKLENqAQs_h@_293In{0WTFCs5_=fQ zwpeS`H9?qc$|+_gfcHZ>b_7Kj8?T&oR$}i(vJLih)vZG^89TG;cxR*|Mas#}4nQY~ zU;;KkC!hmFa6gi%2#@NvAlVIKi9Cg*4dRGQ!jWWy-@e}aoEnljXn=T5x96ufv@}_; zK8mxjE4Fl2&16CF6sKN8(9V}mQSUKVeNn+=!3rs^rS2+&U_`HXKh9*buvI8?p$a>l z4>nnF9#CB1gRWJb*fd$_m2#tsNPC*hA6OouhrDh4NQ;iI@6%NLEJE*%U}UzD||{t@wMV#gorB=tvpG1KcT6_0*!U!I z?=Qb+!=%RG+@cAtx{gi5D^@-pDQE~Qeh^U#Zjo%Nx$(qzO+*bLPW;R)0-%@(rx;76 zi3OaX|6mfR317KCvpH|eo6FwmW27;psR{W6m#U5#3Z%J}rfCY7zC=JGAQ6xVNCYGT zwFiM<$=(BMxa?hT#Y?S%g~iYsj)nKF>5p{?TE=AUdBqFFLpsdL!jXp_UQ_a|UQPVX`470%H_xO#zG|=y zFA{T<%3O&QtAN|JWesuA9n40)*_GnAvlqTWETk!|1e0gt3+Biz#2v2|S&wIkg}ru4 z4KiAnUZuwCy=&Dul)~k@l#r0VL_i`S5s(N-1Zpn=)w2Gu-opWv>koDP!8U<6gt=1w zKcD7iONh{e31bX4PH+*!O;RTU>|xLI$E;gI@0@KUk0$UQ;P-c#lt=wAkpU6`iGV~v zA|Mf{?FdwhJi6);4y%+$Re6*hK5Vo1jR-*>-Yc3Pk0g|Ws}E-i=WF^s8hg%$Rg0Xw zT5JB!{joc_Z!@9x8{O#Zul-c{0i?U;6u_D_iH0}-NUcn~l%*5q)pL(tCn?(_ZdF!NFt|BbkW`? zVCVF=&fDM-)-Be{{>pU=I|lRP;TOV%BKze0l|{1SDbG(__%d&NJVw;uZw<~>&;Em4 z#}Itdmk3A%BmxoviNHmJK(J)@CYN)_YU(;B;n!tX1`CT8H5`leFUCF=EG*j8a4hb= z^I%@Jtm#Is;{!^r>D0X_HnW7z%{!(nu#`&&W>d!=9HcDnf%S7hdnxP-jEXsv5gC~o zBQl1iXXGefVC;??LF`_3zTIp0IMC<>TR^dF^U?T+%j0yrpe~E&_b_6WFErA8M*jKU z&G5BJfkpZ4MbU)@7RMaj9^e$7rm}DQkI@>>Xs@cHItD2Z)}@%EXX2FnD-nY0mcc+VX4+tzqgtG_SKMJ;ds{3+2c5f0!-=RI_b$wH#OXy(T=#p%tPfM#td zCzFMYg*O*$=n!K;L9@4bnI;R_5swbUnddHXd4JhTykulNPT8&uH%=Ppx8UZjU+5Geo4IKPn8lDK_PvKfJ8tdAQ6xVTr>z&iw1e} z0gkWKAgdZ=_LaPnx>5UiYuGNx_sID1jMwJ!rnunpZty-vh7XWEu0MY5@2gQ`#v94M zMjFNkrToh~fcz^FkO)WwBmxqFiwFTt!+4&jNq(&1d-lJLD8IdG4I}M;QwO1~ZK4<5 zyKjb(1V(%J#7q9)r36M$NM9l#5s(N-1SA3%4FbWE!0PqlkkMIRGJ{uBY$@hVzU6Ud z-5_|1u}88eCLjNG=1?Pvj1KqdyV`qFBGW@6X^DVDKq4R!kO`UUA11Ehp*M8G6eX2@jX!@j4sx|82qMT0?_>#n2%%!(B$YBl-PFk zV3GI%oi5Ox$bm>+j;U2whGZw~J*r!UWLL~gbzdoDMu)O61o_c0_j7Mbu-= z-HFUV@^TDN-7F*%K(jEt63LDjue#5$lChw!*#IJO+;@R1DE1>{?hL(&9Ehr#6PeXfC)b;`ZKlz9LZnQKFeseYIK6*sMe)8ZrI$4!>%fwL_i`S5s(N- z1SA5r6ag-w&AlLJX0_Go)P~ixS`FUrKyW|Y$t)+^(%TKX@bdE9mAqruYBYM8oT%PDiWigs^N(RXUd-sL7sJC!HqhD|GqCpil39xu0>Iuw5;mKGGcr{omd zy$;IKWNELaXcstz-Zbp9&3Ro+7A9^o7d;TOwii1Kups>DQ%LV5;!WhN5Uc0aXFoBH zl5{Xg;%8cRRZmJnXIon9O3~Sv-I`1Z==4jA45!P3W@bGluJH+3IgUb~hv?Odxan|A zyg#@8F**&PM0AA4Kat;qq>ZFRbp9ZmY~Pl8oYNg|KFH%0V2mVsvOKJ!r+M9_M6Y2X ze@Fx*0uljeV)SN1cW#C^_CZULYmcjqmGY#x&!o)5AJy0#J@n;5yNVdjc)<^J!IQ~2E zVas=DF{A|IA6mB%ef^q$x{c)R3}VvxH%WP0hlnI40ulj#Z^R zj4#Iw;9Mm>I-)`8w|BH`r|c55}{^HQP;^+HDho*f*pilj%0gI$-fc-iGV~vA|Mfv2-GG7 zG@alDutLpkKp(3vOH#b})MLE)Mo=qq;q;(&^%TVlb?E$4y;3139MJG@H}8boft&qZ zRLJ?G7xdw`-P#Nt%~Q79w7BOA%1rt-7y-o!b?AiScPs{O&G}Tu(tBa46(9~~4;cO+ z?2TZymZMIUJ_u{k&{tb1@r-*2Zb60w=(2U!L(m5`>m9)T*pf$KCYsy54Bpsu`f)gn zJ*F+3I52G)aKq34Zft%6nxK($8$7ye%abq_dr~Jz__EL6pe_Dv2Kzt$`EQVfmV0fm zdd`ZKa2!i(35QQCejX-Z5uKoXWBvS*NsSm@}iihid+w>mXkNKuT`l=<{fSX_cZ_=+jVGHuc z!Q*2-_z2#`r$~fvkG{4?v5*}PkN=wU8E~u6yXx=$0=`8YI>UlA^Ox`-^4j2|?hk(n zkro#WT%%)cAH&-Z*gua?`g64@y|Ng$_pP(T# zCag`EBV!|+!f*c!6D7v&(cyQAHfFH>mS+EHH(5HXXqotaCV~= z1J#TA4*44?cQrunuMslRmk3A%Bmxovi9qc|pjvdwa2FR=q)u7A^V$MC*qtMKCku8f z7i|zx3a;gGW^^#zWvVB1?K_g1#u-VFmkFGeM1_gK0QtCQd>?)NM9l#5s(N-1SA5r7lCS#@8>=(<$K|Nax3g$ zzb$|6DnVQR^UdtIQ{_4J;A+d+CxK#J4D^tQm>4W9 zde(3(QoXwzyfyXmKArBSS?b2Mi{Cbq|A!Nk&VNYC|2jk@DG`teNCYGT5`o%}K()yK z$?r+|Uy%P}u%p>dUbj4R(BS@%>2n%jQ4#NgrSrJobQ|}rZ8(BOPVTSyJNL)#FLBbPL1MYgbl`F$3G^yr()s_95~vOlNlFAH0ulj< zfJC77BOqFkz!Q#3Z~4bylZC#_qFHGu^|L~d=k|C#TOZ;QkI6!Egl2Psr^vCDI$a)T zz9XlInK5|tpTw`~1)HwV7uqL{%eULMzCf&f)MhYZP1(JgSo^B1`dXw2wK(u1 z@uwMNokF$vX$`UVtAaJ<_qD{@UuBIZ8xBc*6tohG9K}v|zB4Z|Y#s5ExY?|dH!Gu( zvGL2qI6%!bvj3nVH*`UZ9t9;n#yncDC%z1oFT$74?Xo?|8Pr(vf~Dt8tKoXysMhcA z4i*-JYB(0XUOn9=SXgA$a4d4&5j}&2#mE|t#kA~&CBecXw}xY3*-+RcSXfM`;aL1~ z%kIs=!lI~#W05$u(F4K4VrmV?V$9H(ZNb8#tcGLpk2en6G%PNdb^B!1oU?~y$Ckis z1)Bfz%Yxjx{f6OO=G0lY-}*s=g^G3aFp_Ci3*02S!iQ*(I}S2QNaa?$2NKy|G3`Bw zNN(|5wXJ~*7>tbrP2c&NV)1(jF>|xvLy2sLmh}_hY9jj}8K>AGS3589(fqIvOn$fnpHNVb7%iR8w|uOo6E#wNk_M6O0M0d63Y8+so} zB)6D8ipV51ik<+P3G(X{ax}$q!|yi{`4q;sgE2&MgX&|6j6}Qb9UzBDZpJ;A$cY%+ z4(vqUgJc^RM^%U$tD$3D8L_e*bnT{KjU-(COl;S zJrc0=v-;hdCGRrY3DG7QWc76mRrDxK-u5IUq%RSW2uK7Z0uq7RivX9x=9)|wV0Biv z3B%DG5@OrOS4d3QV8_KTdTTCm2*RwWm*IFg2L?&S^-dD$RXs&|YqCh6t2OnZW5o1T z-S({NEDr6*Q2q7WFQ%TKv@nuTBPo&2-!3Io9U_vH2uK7Z0ulj==f*h!nOos98L@Tp|(cf@zK+C{XJ zF^tdcTJ{Ao3{x32Bsqg`C4c&!n1`#(8j_4zU&-GO5qp-(URMDgi+$=eMbQ>QQ;PB} zu>2@z!{pVnLUDb<%allDO}sg-qmcw_v;)$Ot^%o<$TK>G zrt~EO5&?;TL_i`?dl9G>3HF{Jr35QTu<_WzMy?$*Ggw;Rmuk4yx9Fd*nS+JJh8m8= z?J1vc7cBM9zlz&HqWz=bTI%nBU2$^jEl;6G`+PL}{kZ44r;XMZMt1;ilTqHv8%6xCg~qJfY+VyYd}O>RAYV$_rNl>8jfBEQYpt8x z5Hs045;E0HwT`%q_{bPiK)#g!BoiN5Not(!Ep|^Tbxh53csw~yS5b-AYa=GIozz5N za+i3KYxAtrR{pd_D@6|>R5|GpFdW#l8>9H~YUFd9G&==MtqI3O-EP$D1^kO)Ww zBm%V=fohR}?{6U`U_k@l4!hWj$a+(&r8ScK%hnKDBN1C;;TLf?UHJ7#n0mRRX0J!C zd17!Zn=@(mhy7;m&kv{dFj}89<}7}Hf0pYLKTKqRL_i`S5s(N-1Zq11)glppIzmds zf<)XAyV<1OS*tF*L_9gZHfZRdxbcCtY^3TXVmkIjqxen7SKW*xWFrl}nZ7cuW+JW7 z5Sr4L2uK7Z0uljDrXew4c5LBUdDCM2XU5s(N-1SA3yf!d2ewMfjj+$tqzL1MOH z2U}oyy<@es#*6pM)(~1F1zY3sjWc@z&;?f-|8$X+Xu7aUG~G=ldRm|7hwwIq3wV;> zre5m4;3sGJMS_2i<%=-7E3IG)Q0KsaZ~9+5G!sH2#@>+%8Tk36%VAclhr7cm3xExZ z4u9PpP9Snguw>|tp72ydfOha_(~o+>7G&rKq2I(_3C+R*5@1cm@Eox$uDHVBFwBa zM0f0+4P{{fo#1%rt=W)(ydB}C2A5n95m?C{aLLM?kr0Xbra+q$jmE-2k5rkEYD z4sRqR!`+|kbHEdHe`a+ z298}a!Q6sz$wYSwi{*Q+?%T$vX`y|tNrTKkb!=Yl@}{M^xfLe+r(JCyn<4tX5X0}6 zDaNh>)L^V?N|vJN;i!EmT>26LiGV~vA|Mfv2-F?~m=pn~h_I-K>x@5EKI)62-OipL zgzlKWz5Iyz?KR_bpREH+zY293ZBDc`Kw_PG_Kc#XSV2fgUm_q8kO)WwBm%V;0Y$8s zbDP!nVZ`{y=dVp3XMbbP+K3d}$+FcyMn@eo{r*jz-bOM-v;i#jMssa9MN652kdVGa zKq4R!kO)WwYA*szrihIx1@nT2*1kV(T)uJHlda*lZ|nCn5+raNIG`J$9{Z(8DM%0! z(w7KG1SA3y0f|8EMSuwsTkLzcgXtUVjak?C-ISd0L%U7g5R4D}#OuuFKk;zQC36!EJGMw;swJX?8sBs0eqA`J<@bfK$1-tJklu^Wq^>;jsp3 zMnZ;>>6AG28%KnqRA&$p(w7KG1SA3y0f|8EMIcyLbAEn|D=X;gM@_q$lX-8fdS!3! z1-Y_Uw+ZW0=8%xzRN$E4#lR!r%*J<``YB2Aqd8XP!#Tqo-n{&R)O5GIIN#~AdmSEV zggGg9tsvI$%Q?aO{*HAhyVPZdhR}#rXu#mBGlpdk9zHB*=-}*Yft|=<(r0u0#~v`y zmwfQX7xW&Cf6#Toe-Dga*P8vV>Vuc`{Z+=x+_{=gq0gi8)cCz2^)skMpYKIb`Wz|c z7u8Et={^6k`5y6;vxwBf!TZ*mEMwI)%`+Xvt|^;V6i;#p-$SLWOqLv#Gs>Tne-w4) z6}(iFC0Au_Qpu`)88yyJTy~YK(LlRLC^M;qSjMR=m-w*o!qV>{o;;Puiac5=A1$Hi zd^NhBd)!1vp4U0q@x{G7PK}VBL_i|&7bC!w49i0*OyfVnOR`f;Q_od@U{`HAP&K9g zfRK>BL_i`S5s(N-1Zpn==PN%vsahc-grxjHNJw8IAQ6xVNCYGTwHJZm>4S!ld9RK= z_;Y5dk83S8qZu})SGF;|@`#Mgj1d{b(lfYTxjQNgnO-^H?zMXy-bw{?zH^ep<#D=Q zP?yE~>cN?AnK|-%E2?xJ#{PaXu<|$iwF0yCb)Dw;QUI&&66xL#i}cYIBE4meNH2Ut zr1Rew>1J<<^vbV9dcbaxPTeokubmR<309L3@NS4m9}gGl-bo_8s;5YAO%~~1%+Q>V zOB*TD$-_i?=opdyX_iPY_lUIZ0g>Kuhe)?xFVeOrMSAQo~wQb-#9aqg|teg~j|D zj)nDyuC!Z71GmQb=c_;1uWp~y155n@At8N5&?;TL_i`?dl5L}KExt3^bG1g1k>g*N50&L5cTeIA40_AV&8|LO9gz? z034oKsNA0+TKWo z>oBD=PHUA8YPDkR!1w^B(+*Z!N9v!l6t1Fhc z27J=TRUnD(3w2s`sS2#TM){ky-_IosqzoR6zcc#cuMqQet@*}j6RNbL5yb%~_eR500B&=^a_6aH9(9~hGUWVp$M zlxEh=*hTa5Q8#oA47&`V-+hOk_#MQzn$tE>8p0 z#2*hNC1XP%l0eR2tf@H`g(5Kb`ht0}aKwzuU`8u69Wq1$^=1SZh!sf5Ml;?Ni1^Kh zhHx-!MuY1xefI3xD%XU?{)SXxYcLjFYsM4dSk&JT2qt6kVg#fiWk&p1v+Qdka>!y` z5z9eBeF`gEFh7vM7&g7V>q$DK$IVC}8D4Apo5Im>Q>v*w-YlMse1VqE^J$(9kdfdx z<5ndb(^^$+29i$AN;Vd@o@uj?_iUP#nU9)+il zze>sdOwF!YyXVZ?(2L9&3PMtUKD4$AK3rYUR%yD7O4rTp2kt zhKgfOLiJY2i!)u#;HFe08Hk!V>$9gSb^r|cI=FuXv1K+aH656&K4{|xYAlsJ^Ip&s z%W;}nB||qrxYIG2#oq-CJIJe1gx0~0#|$PD{$?|-pu^j&1SuFx$gziaqpYH2Vryom z4I8@BDcCCjlf0v@mlGtrYv#e-D!pHDR3O1@37YVbfID~~l3bTncdRk8wsy#;hehXC zg~p%ZMS-)EYvM&U zmmLT6aKfK}X%Py<@y4T{Z$OOIuZBK{`?{uX*suYf$>87#2;nbwtoyNg@C(C`PkfhQ z7`>1I9Qkf9KI#X99HB&sIilA2D5@Ab0-yiFJw%Z3VfVdr zk<~3O6khlj{#r8`3^kON$71nNIEoKqd1)*~2%o?T!nLI%A0ysL0_tQ*9OX50>*}P$ zf$|B~v0}mXm9=#X7S{Uf%IDTp3egX*@Q?%xG5aU z#6n-%J6iyw)pi^}$zr8IBCQ2(lzJ|6=Gi>4xz{mlxuI?&K>}Ewr@z+z1t| z*Hr1f@%Ej|sN;ngqg&EUEVC$(?yHfMPH8`!f6vW9EW68te0A-n6~46~2nXsTW|5Cv zi8yv(<<+u8m`*P0mX%D7$_ZLlT69Ix^vR8( zh8bnkil&to%@h~4TY1@WGw&R7bSEY2u5240IzdfwP$J3~)<_;bEQp`-)A*ven*z3S zsJzDTszyw*?q`}0Bxe~yRRta1&CnI<0L94<>pOugT&C8hAutpAldL7y(9r5nu!u0Y-okU<4R}uNVSyT>_N0_7=)e_eTAn z_U^j2ScWSJ*X)~X;)(&SHQ}lNt`txl!!0YWTtBS${_lGazp$wc)YgIfuiVnIVol?= znN6>Fd&5%Blz#48TUG>DK3W9ai-ZB;(A`GwCtxwFT=Z{QaovKz97A{~i&s113Wh?! zC8i2@%ZmG^zqw~x{H;CrPOpCy)*0^EWgO`!>-v9u>wyOhKx4!@W zPoGblj}IRB#9vqT9dYnQLp-y1+*Zuy8yecTZ_upfjczgE(BK=|AwdJ#F#?PLBftnS z0y%+zwPz)lfL*YsNP7dcw_uN}otm&-8s4u_(EFg1XoXsclXvx(ds;3R+D933?HYYU z?mpznrF6H;y?lZy0WX7>!~$sJ(e1poRf)N}v{g#&As-89+fR8t@vqOSsu#=?WaWj) zC*t@k#I_$Q-@akHIu`MbQ%N7r`K%13HMPT+@4H5?)z1;7{YB|%5VO1$YJaIe?Cs+2 zZdEuExiJt)nW8;zr_Ei&)e9S~C=m{V9YiRpZ9BJSLETb;dl9%lf&e3!SQ53Fd~7#K zdAR439>+XQ5ANNGt?8%-u@<;r);+brotX4m;10}7sS}&97HY&z2mlG(-OB4mJh8y> zk4&DY3m%zahSp|#qU=ZdU8~qe?k@Q9nWalAD{(~I2Zl5t(8aaqmC;6zPPET4>;ra; z03*N%FanGKBftnS0=a{LrFBU`u{{ah(b80ESXz$X*pYmmCyk!mF4wVA1srBd*RGt+ zI=j_y@YCt)^53NHlUBDXGXC(V$J-?QSG8Huy~K$Mfe^i=YHD~qnw*~@pX2)t_m!xm zzE8h*5R3EHbX7G`S5hhnmX)rG;6nT9qt#DVEva54P+M|I{R-K@k?6ljS1)>kjLGp2F$9zty38=fV#Cg4@xL3yQd;HljRw{%s0OwzUQg@~_T+dil035J+>E{p8=<=Pj+SfIS@$9ub4kgrX+J zFhssJgW<;C{e6?<>Wy6ZQU`Fw>|8%O73x)0S63-Wgf>PC@jhZ|+$_Wnv{X4}dfdx{ zd!6K5#JnR{Z7=iO2fgaU&d^HNd9MO01mF;wW2c`NC zcJvNZ)qyr3?$CpUR+P!tWLOMeBwBM6De>eT9=YK`*5fuicNbHerW^ulxrB|mX0|FQQzoY_^Wl1liFO}b>e5JHB1Mt~7u1Q-EEfDvE> zauWfiUBHJwy4en19b9s`eywqH26)y1I46>d-ecN@HmHDFyxsKC{qvUAREb`Xw_Y|? zB*Cg;y6CmtJ3}l6g`rqHa&pi-fhVzd@XW;8?Nz%a7KGcVI=fRQMmvkI65e zm58w|M`B_VWE(GfZ7`k?eW9?+MeF$bUE*QLRxFkI+e|81}6s@?_&l~cHqwT*cv)Q6V|x<0?R&Y`@zWsr6!?Zl5<|z=2bE z2VAC>XSefF0bt!_Jmm-Gz}-5{I}+EU+Lw7S|ucMvE3%!9cM58Yzg4ho=; z|IzR;Jape_D>L&$hN=!0*dDquIq~a{%hB-i(4A|D?W2BpTmcO_!$UW;aW<~@KRQT* zlZJw$@3anP-4Y#g-mm97B~wRPBZLyzX9O4lMt~7u1Q-EEfDy)xz9zes_bOkql^F}zz8q`j6e<|(4#h;Uw&61ic6ebkU%RjSGRn2 zqvyBMmKF2~`A$Nfe3{M<<)vr0VQPkjI#NLhn7o6*=$1EK18Q%Q)o%n@Q~q~ za}H&lLW{PBhYUf6&JQH&VySr0oUqsr;lft5Pa&fw!$U@MqqF$zwXqDJJY-qdQ65zv z%Q(tI=3is8t`m$Ul8M%4GwyGQ#BTRDLS-!*Di4|IjYg@Pt z3ez0X%|=0M()Ue#5I=Be{U9gVoD?SoLiX?PSvJoGg(-{xBftnS0*nA7zzF0p0_W6% ze&=q5WEbq0=3WU<4QeMt~7u1Q>y@1p;R)SvPD{ z@chq`^&Ll5K|L&4zw!BN;cUs8-bkgP5I*|WwN8?@O^~K6mf!muR!|0bpCA(tjxhp^ z03*N%FanGKBamwdq6yljV+0rhMt~7u M1Q-EEz>dIw0b77ir~m)} literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/04_scenarios--model_documentation.yaml b/tests/ressources/v4-api/04_scenarios--model_documentation.yaml new file mode 100644 index 000000000..d646a5587 --- /dev/null +++ b/tests/ressources/v4-api/04_scenarios--model_documentation.yaml @@ -0,0 +1,339 @@ +objective: |- + Objective: + ---------- + LinearExpression: +0.5 costs[low] + 0.5 costs[high] + 1 Penalty + Sense: min + Value: 10.666666666666668 +termination_condition: optimal +status: ok +nvars: 117 +nvarsbin: 0 +nvarscont: 117 +ncons: 67 +variables: + costs(periodic): |- + Variable (scenario: 2) + ---------------------- + [low]: costs(periodic)[low] ∈ [-inf, inf] + [high]: costs(periodic)[high] ∈ [-inf, inf] + costs(temporal): |- + Variable (scenario: 2) + ---------------------- + [low]: costs(temporal)[low] ∈ [-inf, inf] + [high]: costs(temporal)[high] ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: costs(temporal)|per_timestep[2020-01-01 00:00:00, low] ∈ [-inf, inf] + [2020-01-01 00:00:00, high]: costs(temporal)|per_timestep[2020-01-01 00:00:00, high] ∈ [-inf, inf] + [2020-01-01 01:00:00, low]: costs(temporal)|per_timestep[2020-01-01 01:00:00, low] ∈ [-inf, inf] + [2020-01-01 01:00:00, high]: costs(temporal)|per_timestep[2020-01-01 01:00:00, high] ∈ [-inf, inf] + [2020-01-01 02:00:00, low]: costs(temporal)|per_timestep[2020-01-01 02:00:00, low] ∈ [-inf, inf] + [2020-01-01 02:00:00, high]: costs(temporal)|per_timestep[2020-01-01 02:00:00, high] ∈ [-inf, inf] + [2020-01-01 03:00:00, low]: costs(temporal)|per_timestep[2020-01-01 03:00:00, low] ∈ [-inf, inf] + [2020-01-01 03:00:00, high]: costs(temporal)|per_timestep[2020-01-01 03:00:00, high] ∈ [-inf, inf] + [2020-01-01 04:00:00, low]: costs(temporal)|per_timestep[2020-01-01 04:00:00, low] ∈ [-inf, inf] + [2020-01-01 04:00:00, high]: costs(temporal)|per_timestep[2020-01-01 04:00:00, high] ∈ [-inf, inf] + costs: |- + Variable (scenario: 2) + ---------------------- + [low]: costs[low] ∈ [-inf, inf] + [high]: costs[high] ∈ [-inf, inf] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "Boiler(Q_fu)|flow_rate": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, low] ∈ [0, 1e+07] + [2020-01-01 00:00:00, high]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, high] ∈ [0, 1e+07] + [2020-01-01 01:00:00, low]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, low] ∈ [0, 1e+07] + [2020-01-01 01:00:00, high]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, high] ∈ [0, 1e+07] + [2020-01-01 02:00:00, low]: Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, low] ∈ [0, 1e+07] + [2020-01-01 02:00:00, high]: Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, high] ∈ [0, 1e+07] + [2020-01-01 03:00:00, low]: Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, low] ∈ [0, 1e+07] + [2020-01-01 03:00:00, high]: Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, high] ∈ [0, 1e+07] + [2020-01-01 04:00:00, low]: Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, low] ∈ [0, 1e+07] + [2020-01-01 04:00:00, high]: Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, high] ∈ [0, 1e+07] + "Boiler(Q_fu)|total_flow_hours": |- + Variable (scenario: 2) + ---------------------- + [low]: Boiler(Q_fu)|total_flow_hours[low] ∈ [0, inf] + [high]: Boiler(Q_fu)|total_flow_hours[high] ∈ [0, inf] + "Boiler(Q_th)|flow_rate": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, low] ∈ [0, 100] + [2020-01-01 00:00:00, high]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, high] ∈ [0, 100] + [2020-01-01 01:00:00, low]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, low] ∈ [0, 100] + [2020-01-01 01:00:00, high]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, high] ∈ [0, 100] + [2020-01-01 02:00:00, low]: Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, low] ∈ [0, 100] + [2020-01-01 02:00:00, high]: Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, high] ∈ [0, 100] + [2020-01-01 03:00:00, low]: Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, low] ∈ [0, 100] + [2020-01-01 03:00:00, high]: Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, high] ∈ [0, 100] + [2020-01-01 04:00:00, low]: Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, low] ∈ [0, 100] + [2020-01-01 04:00:00, high]: Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, high] ∈ [0, 100] + "Boiler(Q_th)|total_flow_hours": |- + Variable (scenario: 2) + ---------------------- + [low]: Boiler(Q_th)|total_flow_hours[low] ∈ [0, inf] + [high]: Boiler(Q_th)|total_flow_hours[high] ∈ [0, inf] + "HeatLoad(Q_th)|flow_rate": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: HeatLoad(Q_th)|flow_rate[2020-01-01 00:00:00, low] ∈ [30, 30] + [2020-01-01 00:00:00, high]: HeatLoad(Q_th)|flow_rate[2020-01-01 00:00:00, high] ∈ [50, 50] + [2020-01-01 01:00:00, low]: HeatLoad(Q_th)|flow_rate[2020-01-01 01:00:00, low] ∈ [40, 40] + [2020-01-01 01:00:00, high]: HeatLoad(Q_th)|flow_rate[2020-01-01 01:00:00, high] ∈ [60, 60] + [2020-01-01 02:00:00, low]: HeatLoad(Q_th)|flow_rate[2020-01-01 02:00:00, low] ∈ [50, 50] + [2020-01-01 02:00:00, high]: HeatLoad(Q_th)|flow_rate[2020-01-01 02:00:00, high] ∈ [70, 70] + [2020-01-01 03:00:00, low]: HeatLoad(Q_th)|flow_rate[2020-01-01 03:00:00, low] ∈ [40, 40] + [2020-01-01 03:00:00, high]: HeatLoad(Q_th)|flow_rate[2020-01-01 03:00:00, high] ∈ [60, 60] + [2020-01-01 04:00:00, low]: HeatLoad(Q_th)|flow_rate[2020-01-01 04:00:00, low] ∈ [30, 30] + [2020-01-01 04:00:00, high]: HeatLoad(Q_th)|flow_rate[2020-01-01 04:00:00, high] ∈ [50, 50] + "HeatLoad(Q_th)|total_flow_hours": |- + Variable (scenario: 2) + ---------------------- + [low]: HeatLoad(Q_th)|total_flow_hours[low] ∈ [0, inf] + [high]: HeatLoad(Q_th)|total_flow_hours[high] ∈ [0, inf] + "GasSource(Q_Gas)|flow_rate": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, low] ∈ [0, 1000] + [2020-01-01 00:00:00, high]: GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, high] ∈ [0, 1000] + [2020-01-01 01:00:00, low]: GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, low] ∈ [0, 1000] + [2020-01-01 01:00:00, high]: GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, high] ∈ [0, 1000] + [2020-01-01 02:00:00, low]: GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, low] ∈ [0, 1000] + [2020-01-01 02:00:00, high]: GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, high] ∈ [0, 1000] + [2020-01-01 03:00:00, low]: GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, low] ∈ [0, 1000] + [2020-01-01 03:00:00, high]: GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, high] ∈ [0, 1000] + [2020-01-01 04:00:00, low]: GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, low] ∈ [0, 1000] + [2020-01-01 04:00:00, high]: GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, high] ∈ [0, 1000] + "GasSource(Q_Gas)|total_flow_hours": |- + Variable (scenario: 2) + ---------------------- + [low]: GasSource(Q_Gas)|total_flow_hours[low] ∈ [0, inf] + [high]: GasSource(Q_Gas)|total_flow_hours[high] ∈ [0, inf] + "GasSource(Q_Gas)->costs(temporal)": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, low] ∈ [-inf, inf] + [2020-01-01 00:00:00, high]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, high] ∈ [-inf, inf] + [2020-01-01 01:00:00, low]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, low] ∈ [-inf, inf] + [2020-01-01 01:00:00, high]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, high] ∈ [-inf, inf] + [2020-01-01 02:00:00, low]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, low] ∈ [-inf, inf] + [2020-01-01 02:00:00, high]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, high] ∈ [-inf, inf] + [2020-01-01 03:00:00, low]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 03:00:00, low] ∈ [-inf, inf] + [2020-01-01 03:00:00, high]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 03:00:00, high] ∈ [-inf, inf] + [2020-01-01 04:00:00, low]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 04:00:00, low] ∈ [-inf, inf] + [2020-01-01 04:00:00, high]: GasSource(Q_Gas)->costs(temporal)[2020-01-01 04:00:00, high] ∈ [-inf, inf] + "Heat|excess_input": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: Heat|excess_input[2020-01-01 00:00:00, low] ∈ [0, inf] + [2020-01-01 00:00:00, high]: Heat|excess_input[2020-01-01 00:00:00, high] ∈ [0, inf] + [2020-01-01 01:00:00, low]: Heat|excess_input[2020-01-01 01:00:00, low] ∈ [0, inf] + [2020-01-01 01:00:00, high]: Heat|excess_input[2020-01-01 01:00:00, high] ∈ [0, inf] + [2020-01-01 02:00:00, low]: Heat|excess_input[2020-01-01 02:00:00, low] ∈ [0, inf] + [2020-01-01 02:00:00, high]: Heat|excess_input[2020-01-01 02:00:00, high] ∈ [0, inf] + [2020-01-01 03:00:00, low]: Heat|excess_input[2020-01-01 03:00:00, low] ∈ [0, inf] + [2020-01-01 03:00:00, high]: Heat|excess_input[2020-01-01 03:00:00, high] ∈ [0, inf] + [2020-01-01 04:00:00, low]: Heat|excess_input[2020-01-01 04:00:00, low] ∈ [0, inf] + [2020-01-01 04:00:00, high]: Heat|excess_input[2020-01-01 04:00:00, high] ∈ [0, inf] + "Heat|excess_output": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: Heat|excess_output[2020-01-01 00:00:00, low] ∈ [0, inf] + [2020-01-01 00:00:00, high]: Heat|excess_output[2020-01-01 00:00:00, high] ∈ [0, inf] + [2020-01-01 01:00:00, low]: Heat|excess_output[2020-01-01 01:00:00, low] ∈ [0, inf] + [2020-01-01 01:00:00, high]: Heat|excess_output[2020-01-01 01:00:00, high] ∈ [0, inf] + [2020-01-01 02:00:00, low]: Heat|excess_output[2020-01-01 02:00:00, low] ∈ [0, inf] + [2020-01-01 02:00:00, high]: Heat|excess_output[2020-01-01 02:00:00, high] ∈ [0, inf] + [2020-01-01 03:00:00, low]: Heat|excess_output[2020-01-01 03:00:00, low] ∈ [0, inf] + [2020-01-01 03:00:00, high]: Heat|excess_output[2020-01-01 03:00:00, high] ∈ [0, inf] + [2020-01-01 04:00:00, low]: Heat|excess_output[2020-01-01 04:00:00, low] ∈ [0, inf] + [2020-01-01 04:00:00, high]: Heat|excess_output[2020-01-01 04:00:00, high] ∈ [0, inf] + "Heat->Penalty": |- + Variable + -------- + Heat->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: Gas|excess_input[2020-01-01 00:00:00, low] ∈ [0, inf] + [2020-01-01 00:00:00, high]: Gas|excess_input[2020-01-01 00:00:00, high] ∈ [0, inf] + [2020-01-01 01:00:00, low]: Gas|excess_input[2020-01-01 01:00:00, low] ∈ [0, inf] + [2020-01-01 01:00:00, high]: Gas|excess_input[2020-01-01 01:00:00, high] ∈ [0, inf] + [2020-01-01 02:00:00, low]: Gas|excess_input[2020-01-01 02:00:00, low] ∈ [0, inf] + [2020-01-01 02:00:00, high]: Gas|excess_input[2020-01-01 02:00:00, high] ∈ [0, inf] + [2020-01-01 03:00:00, low]: Gas|excess_input[2020-01-01 03:00:00, low] ∈ [0, inf] + [2020-01-01 03:00:00, high]: Gas|excess_input[2020-01-01 03:00:00, high] ∈ [0, inf] + [2020-01-01 04:00:00, low]: Gas|excess_input[2020-01-01 04:00:00, low] ∈ [0, inf] + [2020-01-01 04:00:00, high]: Gas|excess_input[2020-01-01 04:00:00, high] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 5, scenario: 2) + ------------------------------- + [2020-01-01 00:00:00, low]: Gas|excess_output[2020-01-01 00:00:00, low] ∈ [0, inf] + [2020-01-01 00:00:00, high]: Gas|excess_output[2020-01-01 00:00:00, high] ∈ [0, inf] + [2020-01-01 01:00:00, low]: Gas|excess_output[2020-01-01 01:00:00, low] ∈ [0, inf] + [2020-01-01 01:00:00, high]: Gas|excess_output[2020-01-01 01:00:00, high] ∈ [0, inf] + [2020-01-01 02:00:00, low]: Gas|excess_output[2020-01-01 02:00:00, low] ∈ [0, inf] + [2020-01-01 02:00:00, high]: Gas|excess_output[2020-01-01 02:00:00, high] ∈ [0, inf] + [2020-01-01 03:00:00, low]: Gas|excess_output[2020-01-01 03:00:00, low] ∈ [0, inf] + [2020-01-01 03:00:00, high]: Gas|excess_output[2020-01-01 03:00:00, high] ∈ [0, inf] + [2020-01-01 04:00:00, low]: Gas|excess_output[2020-01-01 04:00:00, low] ∈ [0, inf] + [2020-01-01 04:00:00, high]: Gas|excess_output[2020-01-01 04:00:00, high] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + [scenario: 2]: + ------------------------------------------- + [low]: +1 costs(periodic)[low] = -0.0 + [high]: +1 costs(periodic)[high] = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + [scenario: 2]: + ------------------------------------------- + [low]: +1 costs(temporal)[low] - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00, low] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00, low] - 1 costs(temporal)|per_timestep[2020-01-01 02:00:00, low] - 1 costs(temporal)|per_timestep[2020-01-01 03:00:00, low] - 1 costs(temporal)|per_timestep[2020-01-01 04:00:00, low] = -0.0 + [high]: +1 costs(temporal)[high] - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00, high] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00, high] - 1 costs(temporal)|per_timestep[2020-01-01 02:00:00, high] - 1 costs(temporal)|per_timestep[2020-01-01 03:00:00, high] - 1 costs(temporal)|per_timestep[2020-01-01 04:00:00, high] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 5, scenario: 2]: + ----------------------------------------------------------------- + [2020-01-01 00:00:00, low]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00, low] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, low] = -0.0 + [2020-01-01 00:00:00, high]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00, high] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, high] = -0.0 + [2020-01-01 01:00:00, low]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00, low] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, low] = -0.0 + [2020-01-01 01:00:00, high]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00, high] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, high] = -0.0 + [2020-01-01 02:00:00, low]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00, low] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, low] = -0.0 + [2020-01-01 02:00:00, high]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00, high] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, high] = -0.0 + [2020-01-01 03:00:00, low]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00, low] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 03:00:00, low] = -0.0 + [2020-01-01 03:00:00, high]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00, high] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 03:00:00, high] = -0.0 + [2020-01-01 04:00:00, low]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00, low] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 04:00:00, low] = -0.0 + [2020-01-01 04:00:00, high]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00, high] - 1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 04:00:00, high] = -0.0 + costs: |- + Constraint `costs` + [scenario: 2]: + --------------------------------- + [low]: +1 costs[low] - 1 costs(temporal)[low] - 1 costs(periodic)[low] = -0.0 + [high]: +1 costs[high] - 1 costs(temporal)[high] - 1 costs(periodic)[high] = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Heat->Penalty - 1 Gas->Penalty = -0.0 + "Boiler(Q_fu)|total_flow_hours": |- + Constraint `Boiler(Q_fu)|total_flow_hours` + [scenario: 2]: + --------------------------------------------------------- + [low]: +1 Boiler(Q_fu)|total_flow_hours[low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, low] = -0.0 + [high]: +1 Boiler(Q_fu)|total_flow_hours[high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, high] = -0.0 + "Boiler(Q_th)|total_flow_hours": |- + Constraint `Boiler(Q_th)|total_flow_hours` + [scenario: 2]: + --------------------------------------------------------- + [low]: +1 Boiler(Q_th)|total_flow_hours[low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, low] = -0.0 + [high]: +1 Boiler(Q_th)|total_flow_hours[high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, high] = -0.0 + "Boiler|conversion_0": |- + Constraint `Boiler|conversion_0` + [time: 5, scenario: 2]: + -------------------------------------------------------- + [2020-01-01 00:00:00, low]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, low] = -0.0 + [2020-01-01 00:00:00, high]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, high] = -0.0 + [2020-01-01 01:00:00, low]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, low] = -0.0 + [2020-01-01 01:00:00, high]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, high] = -0.0 + [2020-01-01 02:00:00, low]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, low] = -0.0 + [2020-01-01 02:00:00, high]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, high] = -0.0 + [2020-01-01 03:00:00, low]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, low] = -0.0 + [2020-01-01 03:00:00, high]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, high] = -0.0 + [2020-01-01 04:00:00, low]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, low] - 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, low] = -0.0 + [2020-01-01 04:00:00, high]: +0.9 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, high] - 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, high] = -0.0 + "HeatLoad(Q_th)|total_flow_hours": |- + Constraint `HeatLoad(Q_th)|total_flow_hours` + [scenario: 2]: + ----------------------------------------------------------- + [low]: +1 HeatLoad(Q_th)|total_flow_hours[low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 00:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 01:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 02:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 03:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 04:00:00, low] = -0.0 + [high]: +1 HeatLoad(Q_th)|total_flow_hours[high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 00:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 01:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 02:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 03:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 04:00:00, high] = -0.0 + "GasSource(Q_Gas)|total_flow_hours": |- + Constraint `GasSource(Q_Gas)|total_flow_hours` + [scenario: 2]: + ------------------------------------------------------------- + [low]: +1 GasSource(Q_Gas)|total_flow_hours[low] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, low] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, low] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, low] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, low] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, low] = -0.0 + [high]: +1 GasSource(Q_Gas)|total_flow_hours[high] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, high] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, high] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, high] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, high] - 1 GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, high] = -0.0 + "GasSource(Q_Gas)->costs(temporal)": |- + Constraint `GasSource(Q_Gas)->costs(temporal)` + [time: 5, scenario: 2]: + ---------------------------------------------------------------------- + [2020-01-01 00:00:00, low]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, low] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, low] = -0.0 + [2020-01-01 00:00:00, high]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, high] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, high] = -0.0 + [2020-01-01 01:00:00, low]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, low] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, low] = -0.0 + [2020-01-01 01:00:00, high]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, high] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, high] = -0.0 + [2020-01-01 02:00:00, low]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, low] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, low] = -0.0 + [2020-01-01 02:00:00, high]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, high] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, high] = -0.0 + [2020-01-01 03:00:00, low]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 03:00:00, low] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, low] = -0.0 + [2020-01-01 03:00:00, high]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 03:00:00, high] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, high] = -0.0 + [2020-01-01 04:00:00, low]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 04:00:00, low] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, low] = -0.0 + [2020-01-01 04:00:00, high]: +1 GasSource(Q_Gas)->costs(temporal)[2020-01-01 04:00:00, high] - 0.04 GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, high] = -0.0 + "Heat|balance": |- + Constraint `Heat|balance` + [time: 5, scenario: 2]: + ------------------------------------------------- + [2020-01-01 00:00:00, low]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 00:00:00, low] + 1 Heat|excess_input[2020-01-01 00:00:00, low] - 1 Heat|excess_output[2020-01-01 00:00:00, low] = -0.0 + [2020-01-01 00:00:00, high]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 00:00:00, high] + 1 Heat|excess_input[2020-01-01 00:00:00, high] - 1 Heat|excess_output[2020-01-01 00:00:00, high] = -0.0 + [2020-01-01 01:00:00, low]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 01:00:00, low] + 1 Heat|excess_input[2020-01-01 01:00:00, low] - 1 Heat|excess_output[2020-01-01 01:00:00, low] = -0.0 + [2020-01-01 01:00:00, high]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 01:00:00, high] + 1 Heat|excess_input[2020-01-01 01:00:00, high] - 1 Heat|excess_output[2020-01-01 01:00:00, high] = -0.0 + [2020-01-01 02:00:00, low]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 02:00:00, low] + 1 Heat|excess_input[2020-01-01 02:00:00, low] - 1 Heat|excess_output[2020-01-01 02:00:00, low] = -0.0 + [2020-01-01 02:00:00, high]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 02:00:00, high] + 1 Heat|excess_input[2020-01-01 02:00:00, high] - 1 Heat|excess_output[2020-01-01 02:00:00, high] = -0.0 + [2020-01-01 03:00:00, low]: +1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 03:00:00, low] + 1 Heat|excess_input[2020-01-01 03:00:00, low] - 1 Heat|excess_output[2020-01-01 03:00:00, low] = -0.0 + [2020-01-01 03:00:00, high]: +1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 03:00:00, high] + 1 Heat|excess_input[2020-01-01 03:00:00, high] - 1 Heat|excess_output[2020-01-01 03:00:00, high] = -0.0 + [2020-01-01 04:00:00, low]: +1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, low] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 04:00:00, low] + 1 Heat|excess_input[2020-01-01 04:00:00, low] - 1 Heat|excess_output[2020-01-01 04:00:00, low] = -0.0 + [2020-01-01 04:00:00, high]: +1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00, high] - 1 HeatLoad(Q_th)|flow_rate[2020-01-01 04:00:00, high] + 1 Heat|excess_input[2020-01-01 04:00:00, high] - 1 Heat|excess_output[2020-01-01 04:00:00, high] = -0.0 + "Heat->Penalty": |- + Constraint `Heat->Penalty` + -------------------------- + +1 Heat->Penalty - 1e+05 Heat|excess_input[2020-01-01 00:00:00, low] - 1e+05 Heat|excess_input[2020-01-01 00:00:00, high]... -1e+05 Heat|excess_output[2020-01-01 03:00:00, high] - 1e+05 Heat|excess_output[2020-01-01 04:00:00, low] - 1e+05 Heat|excess_output[2020-01-01 04:00:00, high] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 5, scenario: 2]: + ------------------------------------------------ + [2020-01-01 00:00:00, low]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, low] + 1 Gas|excess_input[2020-01-01 00:00:00, low] - 1 Gas|excess_output[2020-01-01 00:00:00, low] = -0.0 + [2020-01-01 00:00:00, high]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 00:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, high] + 1 Gas|excess_input[2020-01-01 00:00:00, high] - 1 Gas|excess_output[2020-01-01 00:00:00, high] = -0.0 + [2020-01-01 01:00:00, low]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, low] + 1 Gas|excess_input[2020-01-01 01:00:00, low] - 1 Gas|excess_output[2020-01-01 01:00:00, low] = -0.0 + [2020-01-01 01:00:00, high]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 01:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, high] + 1 Gas|excess_input[2020-01-01 01:00:00, high] - 1 Gas|excess_output[2020-01-01 01:00:00, high] = -0.0 + [2020-01-01 02:00:00, low]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, low] + 1 Gas|excess_input[2020-01-01 02:00:00, low] - 1 Gas|excess_output[2020-01-01 02:00:00, low] = -0.0 + [2020-01-01 02:00:00, high]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 02:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, high] + 1 Gas|excess_input[2020-01-01 02:00:00, high] - 1 Gas|excess_output[2020-01-01 02:00:00, high] = -0.0 + [2020-01-01 03:00:00, low]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, low] + 1 Gas|excess_input[2020-01-01 03:00:00, low] - 1 Gas|excess_output[2020-01-01 03:00:00, low] = -0.0 + [2020-01-01 03:00:00, high]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 03:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00, high] + 1 Gas|excess_input[2020-01-01 03:00:00, high] - 1 Gas|excess_output[2020-01-01 03:00:00, high] = -0.0 + [2020-01-01 04:00:00, low]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, low] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, low] + 1 Gas|excess_input[2020-01-01 04:00:00, low] - 1 Gas|excess_output[2020-01-01 04:00:00, low] = -0.0 + [2020-01-01 04:00:00, high]: +1 GasSource(Q_Gas)|flow_rate[2020-01-01 04:00:00, high] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00, high] + 1 Gas|excess_input[2020-01-01 04:00:00, high] - 1 Gas|excess_output[2020-01-01 04:00:00, high] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00, low] - 1e+05 Gas|excess_input[2020-01-01 00:00:00, high]... -1e+05 Gas|excess_output[2020-01-01 03:00:00, high] - 1e+05 Gas|excess_output[2020-01-01 04:00:00, low] - 1e+05 Gas|excess_output[2020-01-01 04:00:00, high] = -0.0 +binaries: [] +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - Penalty + - "Boiler(Q_fu)|flow_rate" + - "Boiler(Q_fu)|total_flow_hours" + - "Boiler(Q_th)|flow_rate" + - "Boiler(Q_th)|total_flow_hours" + - "HeatLoad(Q_th)|flow_rate" + - "HeatLoad(Q_th)|total_flow_hours" + - "GasSource(Q_Gas)|flow_rate" + - "GasSource(Q_Gas)|total_flow_hours" + - "GasSource(Q_Gas)->costs(temporal)" + - "Heat|excess_input" + - "Heat|excess_output" + - "Heat->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/04_scenarios--solution.nc4 b/tests/ressources/v4-api/04_scenarios--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..bc664ef0fc186bf683130aaf24b39b118a29c8ec GIT binary patch literal 64272 zcmeHQ3w%`7nLl@C5&{V%s6a%(Ay6gZ6=Gl^3WU4}OL!#_i&Wx}Ow8ag6K5tEG?7Pb z{eg%sF1kgRwfwTSt5qz})wL}@u$E$5`w}Uxk7fI^Qg`=feKZxS`+fJE@6Nqd@bfn#@KcES(i0ga=@4>@RFNh;Lil2_NK{-3 zq^p7M0{_mO((vl$aL6BuMRSV0cjlCY13`a84+ecJ{Xqy3ZGtyvjV}`Ltql5+ce$dE zTT<89lH1l84BuWC@x}Z(z$Z&lDY0+@j+`l_c~P+Y@eyC9+xjg=`2wB5szJ zLZ+OX+JSejFIodo)%&dj5hnwWbu5e|Xd;AdpeCdy;L#PZJ00Ardz-deCQTKb2C*FB`71q9*=7_cH)=Hq`?a^xTf$X&%OSv!E2n*XD1n_eZ03dPlHi6HPWc2ODgE=8$WpFX#)w6vcEC z4ySL7sd!l><~E^Y{pxUPt*K?mA|ESz#g<14z69d4$_gnCK_aHcS6Fv*${j_sfhcY3x%fYdKk@PH=(Px9*)NP<8^g7Om18e&tunes&EuquabZeJw zX+7$2Px2VuMP^e^DQ`k|jfD30b`YS!fhYpu-@UT=8*@t+RY|cM=|YO&GN^x|Xl-_G za|FU5i|da3rob&tNJx=nkl3YzZwWo1R}Uf5A&y=l)B8y;f!^OnKQK}f2H5CS4r&SL z?Bx%XWP?uS46@OwoJlvvxx_}Na!^GEBCyX0FanGKBftnS0*nA7zz8q`j6fenK(5jWO}h*`=+ZQeG=B2km!VPMa!nJs zFo%D-y#O@Dl%W`O=jjV}KtHOKZ%j|q6=Jt`;!22s^Xi{M3>l%D4BSHmtsUC^j5)~a z7MF<(_!D&t{jvIn#=_EYIMNUZ!LnRbWPvs<4Gvzt$ygye@-Zxz5hp6W_CX|plhhN( z^@zA5o?+WP13p+(S~;KE=W=YHEaIn1F|Lp$#SI=pjCw6tjYVaQ#}*k&mZep5YHIW) zOT-J&Et|KXd|}PJMGNa{O6OFSiwsbbU63IKu!Zg|oU@=@=SLd|@<;3aAy~Ey3oO|U z{{{g>z(^341y%E$w`I%)2-|vLAP-el)98kwXESZ!oAi^UV6c#Y;J% z%o2xHrVJ>xtC2*j7~+W5e(=6FVbk%7nwoM^-5@h+z;F^P&~6oCJKE0PdHJbZ^vMK3 z<765n=SJPa(#4T5EF8oF@I0WA3EPcDtCi!K1rtL0gEO;m(u_&hOlWFooH}#Lq$!1y zrU|ko0k_G?e!URb^>0`&J4*pOqHA4Ie{*r_z=1-0K+{@R z?45Ap!L@B~?8++3Ybu&9#C4}q54EmHAHS{t_&pEwPanVX=CtiIM&-S7`*nr2sfTB+ z$iCy$ZN8>I-sb)8;;Z)kqU5T=eOb@$*u7=l7cZaj$uoEPPrdhpw+_B_@Ss+9^w(}N zdBNzDT~{I7BG$LASbo!yXP>WpJpAE_oYb#gUvU2oFO69Dy;a*Y9%z4K<*VS% z9`H{2AQ;TwxQcqu|Cx6nse=J%OzV8leeh|(ZA6Oe|MdP^DDk1`Iq%Zz(S4y<f$Q-z&ir^JEmE_+ZGuEulb6iYq8~p}3;&qw_`su>Hnc zkYA8LF@FmD_vYsp>HjmPpk(b9{iWDb?+e0ewlAVfJSg>G5zUcs(BB*j)Ysh-@!t}L zeSIM)x1lzYDDfgYI`XA%GuS)Zka!EzMd7C)$SBEoyp)77Pv^RHUEguJaHFE8=RjYB z27<(_FZ8)xu3V7K(P0&snG_25XDJwCg;JhPR|{SpNK$TJO~uPJrb74&C3yiQ%dt(( z!MNrjAuiLlmu1g5$^XzNdGF~0X_*vA(?Ll?HLW5L3@-HrTl}IcI8m`AaglskUgx?D z*bs`sawaI3P*Pkgs+w0*D{z4m6($r~5znql!V*b9MP;US!!I@^w~ae$R!xF}MXJ7w zRr8R_l%k`QHy_i4*#E3|{WHsJtINxATG$m^rERx2JHV+0rhMt~7u1o|QZQfz%f)5c=&Tws?YqZmm7_IMJlt@;wS z+vWaqv4j?@BB`kd7FSqI@8uQ~>J#~7#LP&Z8T3ooh2EG!sV(H2&7inv#2m*>5dHp| zdNM9x*Mb~~?r!Oc`m8tFCr@ukuDKhvhkNc%f2g9majyG!3kf_(-@f`5fa z#%Tw(jvbN|o&2u%Ov}9HPsm2ZDU@CUJZzmaR1M)=ZQnk~cgjv$=&e4HX z+Q(l_BZ)G&5dYcX`lO-;cKQgqScR4 zrBK@#@%rBBE#h9_oh&A_Wp5NO0dIlG{#)BaVj3`v6?-0^{!iiw$Tn7_etq&|q6C74 z;+YK{kBhayFhW#*>$g7;J0aV6k^1}5hXig{$`NmW@cggETs=6h@vi?CLm=BkapbLq zodWL>zCu+0e$rpX8ojVBk9_mFF8BcX6~3t z{1>Ee+TGY98+f;BXYy7lvA_chwv5#@nmXinx4Y49PZ)$>6((0ux?(d%XD!GmsHiNn z?p)j$S-RV(QKZpbV053g=7FbQcOJZ4imt!z{ye|tq2@asrP4g~P>is>hr;sa3hKSn z;dsqMPfx$aaF1Cqwsza~vc;N*9;Bhh3l1zVVj{zg=AlPyq=nIbwSGlC6->`yykN^) z7-&Q^4?Ugnf|1c)aN~L^m>%D3x?JD>P7)ei%|nm&l{Qv;;U7IL3)erL>`U1u9&>Q; zXmc#S2u;XZQ#r;6FanGKBftnS0(}923u66q(i#aRuYUp#pu`)OQlW-sj-!h9r~FxW zoy+x4udNLzFn;vWB4tg1h#)Z=!{|slmN6knq^0=&T@;eOC-A#}#88Uw!LK{Xucqp( znN=*;CdZNjPTCF2vt7c*L`HxSU<4QeMt~7u1TI6~^ zs}jjQJB4dTZ~t_a{u-0h?9VJittJ_}fRnq^a}2cJtZj{jctP#c%VQl7FuD6*|M3Ql zPTe70 z$8lTJPyQoEzisz4@@!Ji8|B*CkO%Q4(T-fov?Yxh#g(l4vcK8&IHw-z6A zl5e}S$1k(VxonTOV$3l{fDvE>7y(9r5nu%R8Up9V9=~;mgpuv>YFj#SMg6h(`}7*% zv_L2t2!})(rpv~Lqdg$}ZneXW5BUXPnJ>5y4akAI9 z+VmK<*AuGjGXjhNBftnS0(}>O3&LK%^&1jkw$}p=X8Sz8Y_LV=#PsUBnmj)2@BZL#N6|CotQOrXKpXY=`Edqvr{E zCeE@Q4yM%!%|kNzU_1cZ=5MX{N27ItP;*O+RxC6R9a_J{%oA>j0TZbKnum_E4@9Pk zv(zzSufE6u@ObEKdlq!aQcvN3QTyq<`(P7`tY+6M#6ySRGl0jarL&Wg=}>(C@XA&G z`dDC%-}A9dJBOc6`p>*>+OWx{2l0ANH-K?6BftnS0*nA7zz8q`7dZmwWj*JveG)ZZ z&r$0+R{$QzAIw>DruuD1lLYjv_1jf1$%4+ae*2>#|8j3!za?!`Hcf~%@2(iJb8 zI!jiDjb8P(ZP*X1oFuIUipR-2VUxJnvh0Ku(-{FqfDvE>7y(9r5$GET7!tR>g&gf| z&L?e^RNdv(crV{x)mdMqdVviAE1Q-EEfDvE>7=h0R0#YJ>q8Ac*w>I2`URKF!O zBdEbGI&P5(Zv%&8rAfF=$2bKGwV>NGPWtq@>>3J5pKja17NX0WFMax?+jl6PUV3Y! zM`ei88`o2c^yzJ0lx}(bEU*~ogjF{Cu5A0>A^S>(aco!RH_qUyxN+WA#Yb)Q`c+VQ zpEpD@E8e{KOf}7V)-h%tEz=1Yl4w| yMt~7u1Q-EEfDvE>J{Jfi>s-SrYjH}iPcu_8<;B!f z^gUyu`Z4?%<&X9#zeftV#IHVm#NUY{#9x3Dl?Ulpi)2!vD|Cl608cm^48ak2>1@0% zGOy2cyS-JOP{{4hoRX1QQWaQNwmuX#sxxykGAjeM!H_#p;YNY5JM61A@JDbCtU`gCTPgn|8 zc&b7|(i^C*3HUJy5xYKf>GInAe4{W}ZHNNOOQzbC`TS>zdQ^GNG^+5nH3Hu9`DnI%Thzb;Y;aYIy1+?g_Ein(-Ik@(pSQV4}Be04^- zJBXzZ`_>xnnqZ*9SJixUhiI5!B&lkj-&b8*-E2wXBA62K)U`4Z9pRiaFd5M)RAX1y zR)sx&Lv)b%Ry_wrPefF)lT=`FEv-<7JxhiVL8sMf#ArU9*wV5~HjtmV(&LN`9c7(+jLW#M2zzNBJW zFedFRA>M2o#z$yHD>fCmwe1+6mR(D>x@k&{P)NS{ERWTU0KR8}rpHQ)BEaEFBUtUJ za$^tld3}c8yI%JlC4!GfMQwJ2H{f4u1Vg@n-(BJHh6BNTkz7TsQ6;-;d`}Rc7E_KQ zotOs2o+&~x&1uSy-kEU?q@G5TY@7_H8@*@8nx6&Q(V;uPjJ4d|j2w(9oj8Du4rf_8pOpc!%OB2t*<_U!@ zrIOzpJA}iP*$wKmLOAO$i2PP#DaFesf|Zaq-N#y0E6AMXWA96Of4K*{jp$sO2hb}I z35QRXz8b$D5~0{vo~ab-DY1_zu(rJ;->DjfdgK(**J(@Bj;4TlEG)LeXJK(eGnvcI z5bc(xFSe;5aWa@`^qPHl7EKfhb6XCH;bM*f@l#efTESyf$VTI-8ad5 z>YA3v`zVj^rI6vRm4wQamQ5dalyywUz6|#1*pvrfB)ak~NXR6NC5iy=#%IkA3bO#l zaC!@gTY_FUSr&@~#;FQ;%Js|M?a+Ew5o;{_f}3I~*djv;Sqw1_z#31?*FER}-pH|C zI9TiV`~0h9{V`d)UfiIbK>W<%+d(oUQzWcclv8O@?Gd9g$%}G3wT8G?h6Kus-(6W6 z^B4x-k)Bm%3LKHfnBGcHa1~Z2KBn!L#4WIH$>&78@F^cPb`dd~WmI-iqVFO7j>BR{ zubJLoO-I+F82!LrV@=;%~j(wyv90T$PnWNIbt;l$G?^qQiNh9FJ4B`L;^t{zRjA56%iL5$*Q!G zX$uLVPY~2G_AM6QZ>&XWh`XSQqps&Ss8lg|)MF()aginhYN7E5wMGR8vql9CvPNf^ zJ4pyXS5l=H{pi}&SahiNZE5w4O1Kl=(5AH8shwl;On5V!(vG&W90>jYXiXe_9h|0& zCfrW#NEs%)5u*v~7CgsxKXBA0*$(;d5bjZQNbu2%??iNA{{J<5OZ6dLV?sN zP-ku-a$+t|bjOxV1FFs=^l>ffWoE@)iy#!GNu;)~sbTVg^;;SmnAL%CnwO=e4Tx5Z z&LyJJ63p0Hfg)~VQ)phPW`^QkV>58d7Ud$ZvB(6HQRl^J5`5|6hXDtxqKu*&nBKr* zvZ)ZLkq}LVzL1Xp!9Cvyd&?^dX9fbna^#G-5JhG!QUS=21;o6iBVPp4#{!lqvf^gu z+@i8Fx#C8w&k<#uHD_M&{IWR<=DW*g7R|--^$^jbuHe+-$qQ!AE~OHuIF?w|^ox-y z?yZ!BD$T094n0>SqlA8&r|v$hh0=$L!lXhMwJvCW(Y#_=$S!za6jH49K`;H0LB5i* zvSOI$Q4vL(>`TSpE-dvoBBy`fHL-7`=_EKJe#@Gw`{5$hRM&4u37?u3f7~mB9qv!> zUB5eBV4jYxD*8Zgg|2)4%!R=KepkXi>_lSqRVMxyFzFfespE6}vbRkw%$uAyA*Zsu zV&c?-yn@2KNpO-K3aU}9ckHi{l?F#`2Nr*J z(_!@#0@SVet@q;RoW>0g{!(9K<2BdG z(lnLcjy0)0ek$t`e?Nh;q^i*K zOYqgLxN&079u-%ntbKCh)O3K6*JXFd)MG%1ui`CTy6*J=T-7JzKAjs-^46#ye((#4 z=27{utZqeYh+>EoHeQfdbi?(+Jv>dN_{B7H73;rD>2aNB<9Rs%1=G6El0p~nnr;?~ zEp-beP%O3}B36ChyH5Pu*%wSBpE}e4nIr)DNJ0fT>cO)vY+L z{>UCLU7qs(PT5vjr4z5V0v^{Ld&=&(?e0vk$jH>2B5m(iZ9nnUFsIvaHL_dPg|c&Ab=JW1%|&TGp(Z<)EUc^iiJgZYRkP6r@6PXiUrR6P4n1F0Dz`3M zJ#?pTo32aF9wWdAbPxoH7LJ1(k5eD5@%qIo$ZM)3F6rXyPaJrbui95`X1}_s=~Dzv zh_GETZc_{g`K4qya*0Vs$cLK7jPd#7^K@+o8Hs%d(*B*As0#V;+joZ10 zQ4uaoijw8 z($rft4K7(UesF9W*@dwofTzm$KOK3qU}7q{)~QSm9j($7?^o$MsLEvhP2Ky?STcJS zeryrbo`_?4)>w~1(goBaAASF37F9IrpEz^DTq&vBT*Zp2k+O#?S!yi8imq$YqrZ#* zbX_(HMzzY*u+w^-KE>ASRy_%&Pjckbb@4C?XT45?RqJ)}q7lw|JzZUnyWY#;x=_>z zXHDl&bvf=jJz`e*!yM!fcepO8l}*0%SX$HX=a9~k4%Y?$5YCzos*a?yUMDq#_4+^u z`J)}K4|2FpF9mD*LmcDx1i@=h_#l=ETPkJ8m zX}oEz*oQPw(KoE)ZL2(o839Is5nu!u0Y;$XBjCgrNMCNP;n&O;tdMY+5nu!u0Y-ok zNO}aE_yWzBTLEy{s>C`g7_Al5-w@QSsT zkJYa{T&@A_D%OA=D%XHM*k7&YOo^-k{bcRZt4hjnr6^pWY984aPCQFr#tkV8p$;-I zsM08UNBOj}o&56j7anZsB5fBg-uqB2=yVkUJT7u{ZN)7XVue|0|H;On+b(rti%#05 z{>&B;Ja&u#BftnS0*pZCLZDsQ;^-;`ZU<+JVh7HW;L|G;zfVx?jX8hC$G4dF2|l{l zj9Oy%po(oYkNx5NL*UJ+u-%D0I_VmRGka8R!+#k8Mt~7u1Q>x%gg|8fxZEsjYb~*_ zP=DE3{?JwvrPTlhS>uMLY@jF$BxALmhLA>?6ppEJ>#u1Yc0vuH>>jW3T}+Lvbb6{PTwg!mF6;WN0||h@+t& zCYBE;-TLVucn#Uva(H*c=ArNdUL6PbcH1``w&Krh@LhiLXy}Jq!;gheE`545G@zz) z7Hqix*=+D2jhz5%|1mNb_Mku>xOShL3tMqJ`WWbc`Mz8z#uO&OZ4INxK_zaIo&eQj z226$mtk48_=f1ir&<`_q!_AF{&H%9~x<6#!_ERxDj@rn{aLd*%C&C&`EFYe^{j^dz z7j>!=A-n$ic~CA>n6dP43*jwPOL}0_FIO*uu~^MJKQNga31*78(>lwAUX_!@JXjaU77er$hGnwRw5WCpQ`(WQ8!1Be@58vqq9$CsJs2DxwQMmM zD>DKRXyuAzTO-2CsivpB^}1WpmU?&|g>z)5k<$GTh#a5|^iYJsoia!p-}Q4s``uxld~7mQeL#1P zVHA7}@8UD^Yd66q$856xsjeGGDY4mFI{gu0RYKSs$rolm78jQkFD{-xv)C;y6-`25 zu@eHGMCb__;i$=?aC%L`R_nx9YDHfBPxUNgrX~raPNzj zsO71_SU3Es>eYV|)r%h546B&6NYoy#GzjM?h%@e$kXI!GviC zA{INpzE}Zkont!a3WD@mVx>!TzdiiQvSYkzrWKwUcq6?8}A&^*Of+w?1ov{vN(6e#FZ&g zR~n6&Gvm3kmB|-esY>8Vqj7bUkrbETauY?O;pE8poNUoi%K?<_{6RaBs&%W&f7d`Y^S2vI8HuN&#gZ zvpF9+m!L`A#M*%u?S9VTKe?M6Y5gxiuY``YsJD^d-Xkpjm zikUY-!9F9v2rvSS03*<85NOw3D4*V}aP8o1Qxt#o!;42mMlDi9+8%2#e>p(`7}EW- zo!4Nl%2)X=*4gX*)nC^SsK5nkmu~9b(o$NEL66RjH+ZgXEgL+N_Oo7zhqSuNe`8HH=Rvr)C1`{c7! z_GAkYXj>g#&f0(7%y>pc%U7v8{NVe|G$)4Tw9fM~W>^Ft`-}i1zz8q`j6kPBpk4KS zmprO)ZFh#1*tLyf<=(C1_HBx=(*xA^J((o>z9TMvq`uWwyJut^dU1&pTXk9+c{{V! zPV;8siZTL>03*N%Fam@?yRy}uAF6CSI9nB);oraQ(zgLW^XT1KP7KUxec=7f zzz9C}839Is5nu!uflh;fjn1n%yH#UoH!eWqhVIfTPO9rUi|&i|O}LzGSI-h4C&H!_ zoY3~>8u83`57=PgG#f23pxJ1`;57>d&_VaeXU;9%Z?-Rm3egw-x$-hsnlSY&oW)X+ zGJWKhR*ha!60S6|d7NdkYNQN385I?VHym;YD%?J_;uH#_G2rmYuT#|i>IW3GG^$(J zwi4NU{!D3*QRO^S8VidXZ1avJQ2hoaFhCa~YVS$dZ?f8lTK^`=lbvQKc?Hsrr%9d+ zIcJy(7&U|yTIUOUE8PKqH{|-lxzYxy9~Su009Iw7HW+fF#i;B5rbJw6WVzPdR8d(^ z-KYQ7$=P^qeHPwHl4s%4#l3d66^jp&1dGt*Cp~S&;*%u7V&k4$_bV*g*#@NVf7H`z z)nas78<0Y?@jL&W7pT@~(yB{y%%+v+b!^uwyxM)QXyVLqB6hp4dg#u0T@roP=+kg> z*|}YubW3tE9|^|z|I*JoT@qbZxF~;AVgAbqFanGKBftnS0?C6wTgM6oSqh5?U+AFv zl-);dI>oe}Div$gDA-V=IH#sj*wS`kaGy9S$c4L4zrigK;6hrpSDfMFLQTd;V%E=v zL;4T9i63{nV4+aFo%;Bx8_<((`Rb8nP7KXy_OGi(n9^W|Mo6&F2rvSS03*N%BrgIj z(3v^SfJt2$&49INKj!uN*hE1x1f`=X!VYE$S@5o{S;s6gF}kMc8?m;OB7nz5<;5wo z@cLI@eYWgu$Nil&dxMfD*OwWa2@ei10*nA7zz8q`odJQi>eMD{{vZgLbRATuHm27z zh3(2-pZQMV)xp`Tup5%Q=1;rY6}$T0LZJ!J!Ld66tKjKz%WL8cl*CQJ-%z$XZ}cl~ zpI}~bhsI*gKl-*!uCyT%Ie?LtRbu{-;jIn()*84#EV}&b+pm?lD{W{i;(6+h+e7g( zbi7f{`BhXCzt1w7^YNEF5nu!u0Y)H+5oqg3@T?>m2|oPdz*kFV z&zS+n#As_5pRIm>eUb7{epUI;G%A1pc*V$$sZf5XTKU_<%76KCWWyIA%~`gDY(@ES&I{9V35& zU}?F(yz-oqmw#+6!#jf+p2Cp-G6IYMBftnS0-Xo}8=YNqd(v&K?SwRs5OhU2T1wkd ztnEBemdu$CU1=g1_TY?n9vrXggFkV@(+cpeQ{iC`4p2;Nz@lyX$Jh&s{z}5^ zcR&PYESXyZU1@3`2H?iFaX?e|Fk1#`Y97{M@ED*eceo3K6Ja#fx*t9VVtt{Y1@FROE{bdSE(Rw<4h8$-m|-&B*KVE+=27q>85~E!ez;d}Hs~X}0nWhS zA}FA{cVTb=jHlp_7(5duP|%Hwz*j;c1^c0i^fR$e+O5OjN|;2!w=n3zI%#(-?ih5# zu@t-(gB~okcKvX-pBtu7FpR+!a2y3+!{BoGKJ%mqm~^L|{Y1SB>$6nBu^pxBXz#-M zXV1GdQCOVc!Lj(H$3+|3RSWWBhWeb~bKQ~mqzDTvU;ZxZjzsmN+dFtaTA%gMYt5gp z)@z4)W6)o#J!Pv695UTT@?@8d!nF8~!nCN4!n9V7!nBr*!Vj;_sdCaN;RnFhU7}lx zZiGE?_Hjh!49}WyFy{=% zV3u!O{=rLn_W<=k>&AfB?!B?Xi2*vD_i=qiCB-}uAZnges(TU>z($r5RV#6GH zK*d5&&{J)MjbNw&H=FvZYpdmX6WdBDB25xC6*1Z~AiU=!srURO;{7<&1Y4O*!e)@1~cbPK5R8geLop03*N%FanG~@*>c# zZ2I%1Nx`PY2AbWU6e4^4xmQp$#|UW@O8xhxr{-*RVu-j-&elD`4AB-BzQ_nL0*nA7 zzz8HW0`1BW@0^zu3=vN-g7?Rb^xEiKoz54qJz;yVMbFw%PuRZj>WgsKNV4f$t?Zg+ zW9V&AbjSW(PHfvrANv}!ZGw+|Mt~7u1Q-EEpwl4Gu55eD#Yw@okH+4y^V9j~c07Ho zl`+z?9O~|8Zy7Smi9tH)Yu{%EN$|1H2rvSS03*N%bQ%QOs&o8zlIR?BZ~Db*X>+N| zbNi-W0mJbe(_HY@s(z3?)~l%R*oW57zo*mmjm}n4X>+N|w(aY$fQ8up!(iP*8CS_e zX(vPW1*@(BWm)LIK0EIk=$8g)7U?g=Q*VHqWnbCz<%-Rqj42Jj^}jd6i+CQ^aJatl z^{sFft{%<-pJ(;0pe!csIP3XsP?QR29BJRk9d|-M++0}*58v?8-EbfNJQfz@TyZZb z+e>$S_wD_lY&PwC;)6dz5oUZGbiH!@gHV9!=EDc?&wW^1fGYY;XeSKDbVtC~U;O1y zpo}?NV<0BdcI198fy$8Y3w8mmE_`36fp0B1bwS~esw*+0k@|F!wXhZ4rJBeqV%Wf8rbcd(Hm`I_szU_vWiF#h|RNbK(-ju^ggKWI^mAC_oH{(+oKYNMS2Iv z;;W52Hrrs)syXVu77RM-9ChIrH@wtVECwYB7MBe>tF*0Hj7SnJUYWLZsQKH8bN8Ds zH$HNuku}SNeNzh5H)T~7z4OUHX2QNH1r7L32?Z#9vbZ_FE#EA~59G&Ee-t;=PzGef zb8f;i!175DRr_gJtr}#<0oy$I!c>N!Y8EU`g`_F z9i={1f6@|Ca*6rt>s8u1;W)3Y&%%-YONeM=ZZe!0Q#VKYfDJkf=qY60M;)i`1 zA<^UTtd5B{j&WK|=CmIntWi)Y0Eh=gIMV*A5dUQa7y(9r5nu!ufn-9UUD^1sTa$u~ z55^Ag*Bi!fPrm&KR$H9bH3oaTJ@K9s!*trOu#p*NGQBXkE{p&pzz8q`j6jPJFwYP6 z0qF6@v_@CjbRBtcWQq-~kcWMqDwA>WqZ<@sbfrnPEXElgk*^kuB2m5q)w1STqtBsO zGjuLTL}D3XkIv!ct4M05mO9cTRqhL^^_JBak>D&XI5Z*{F>PKI2!-Ub)XG3@@QiCH zMzM}DsB~#5TCA_A&2I1paCvPoIutS>b4NO+zW*0l~-s;npe4++eVO-&pVklkR-`uPt?ctKObD(h~4 zC*g%!_-MqlLHt*1qvY!5b-u8-(jD;M`6)>+($bk_;b5S;!Km{ZvXfwc4X>A-rJ^dZ z&MkV(ai3G9#X8dH5+mqex9hfGwb5kEEsYejOvlVP(GzMiO73?QWr>b5R4ld53LDim zfuN@#6c;)T6!}z7F@uznuokH0nI8wJqAYs zO&`Hl3}ypO62WsA91k=D1V3PK9MB98j74iVLETkiS1ZbLMRdi+0)%zWZf+R^Gw(gAYTn zpH9vDOkr+iq_munS|qFPA2m)46-SP??mcFxwz%*`Mt~7u1Q-EEAej+pS5|i8J4wOH zGOQ8+P9+D?KADtiGdKT)yDDUwxyVk>(gG?P#GV>V@tNi=7y&(>mkNn6VOk z>@xz403*N%Fan(h0mZu7d7t4q|FCDSopzt$aO`h?TlQ3Ovd!{ab*fgzO1r4(aU1(m z@kl2I>tu_uhvxm1#v%F#Y4_7y(A0b0N^KjCRfUNx^7GVi#F^)Yz1E#qRvB%6Ok3ibCB;w6}we21a4gd#-=; z0rb#Wb+Tlw)A&uE6T@{{C!50zm*8Wc5nu!u0Y-ok=rjl@me$Uz4*v5n zd$!hTR~?MT{uX|0-wP2fuv{c6tSi$TI{B&1X@y&CYq}5WOaZ#|R)da^?(syN4|-Fm z?AJ7^d?OY*RB5h$eW1KyWw>NRT^ANU{o&)Qofxl^PIoFZUV@K(Mt~7u1Q-EEpwl4m zvoPKPS*foiCkyDP)DC!!1<^pzt4CRyZ+YC!MgH88N}fJ|n;g zFanGKBhYCOSTJ*TDcPjGQ7pnlH(Pm-{z3}m$a9SI#fiv^i%W_Z7tfzr?4CQPYza(4 z!X_rt%ROOF$Or@U$AF+<<-TgeFAhnE?&7{AcaR}ZOct~K!jZphoC?$5M+@ke^0N!g z;XQ71c))6NcqtYm*417R8v-b}(j4A$lQ}&2_vY}so6X@~JIvv2_n5=$-!zAJJZ%nl zd)plT_G@#vv)f*1Zk?}n6-0B4m=1I&lvkxZJl}~SJDvDY%?z2~W1kUV1Q-EEfD!04 z2sFu%|2GBCdP{{v@ua!LFyt(aEBVZj%^i&yvRcDIsI*mQY-PyDeQr*F*@it{C&nzy zPT09$Gh?=cg|9IJi~u9R2rvRkjX;x(d2b4yQk+P}EY{NsM?N!Vg$Mm*#%yM^2b(c( zX*B0IaqO5sww6I}W(G~&mwiTn5nu!u0Y;$HAkZX({vid%C6qxE*&v@8w7H`(gElkT z_GZwz-Krp~RKmaK}11xxH00Y-okU<4QeMj$y6Xp&Kcosts(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Wärmelast(Q_th_Last)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] ∈ [30, 30] + [2020-01-01 01:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00] ∈ [0, 0] + [2020-01-01 02:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00] ∈ [90, 90] + [2020-01-01 03:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 03:00:00] ∈ [110, 110] + [2020-01-01 04:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 04:00:00] ∈ [110, 110] + [2020-01-01 05:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 05:00:00] ∈ [20, 20] + [2020-01-01 06:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] ∈ [20, 20] + [2020-01-01 07:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] ∈ [20, 20] + [2020-01-01 08:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] ∈ [20, 20] + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Variable + -------- + Wärmelast(Q_th_Last)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable + -------- + Gastarif(Q_Gas)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Einspeisung(P_el)|total_flow_hours": |- + Variable + -------- + Einspeisung(P_el)|total_flow_hours ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 200] + [2020-01-01 01:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 200] + [2020-01-01 02:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 200] + [2020-01-01 03:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 200] + [2020-01-01 04:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 200] + [2020-01-01 05:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 200] + [2020-01-01 06:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 200] + [2020-01-01 07:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 200] + [2020-01-01 08:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 200] + "Kessel(Q_fu)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_fu)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_fu)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_fu)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_fu)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_fu)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_fu)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_fu)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_fu)|on_hours_total": |- + Variable + -------- + Kessel(Q_fu)|on_hours_total ∈ [0, inf] + "Kessel(Q_fu)|total_flow_hours": |- + Variable + -------- + Kessel(Q_fu)|total_flow_hours ∈ [0, inf] + "Kessel(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 50] + [2020-01-01 01:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 50] + [2020-01-01 02:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 50] + [2020-01-01 03:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 50] + [2020-01-01 04:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 50] + [2020-01-01 05:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 50] + [2020-01-01 06:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 50] + [2020-01-01 07:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 50] + [2020-01-01 08:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 50] + "Kessel(Q_th)|size": |- + Variable + -------- + Kessel(Q_th)|size ∈ [50, 50] + "Kessel(Q_th)->costs(periodic)": |- + Variable + -------- + Kessel(Q_th)->costs(periodic) ∈ [-inf, inf] + "Kessel(Q_th)->PE(periodic)": |- + Variable + -------- + Kessel(Q_th)->PE(periodic) ∈ [-inf, inf] + "Kessel(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|off[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|on_hours_total": |- + Variable + -------- + Kessel(Q_th)|on_hours_total ∈ [0, 1000] + "Kessel(Q_th)|switch|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|switch|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|switch|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|switch|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|switch|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|switch|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|switch|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|switch|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|switch|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|switch|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|switch|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|switch|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|switch|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|switch|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|switch|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|switch|off[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|switch|count": |- + Variable + -------- + Kessel(Q_th)|switch|count ∈ [0, 1000] + "Kessel(Q_th)|consecutive_on_hours": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] ∈ [0, 10] + [2020-01-01 01:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] ∈ [0, 10] + [2020-01-01 02:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] ∈ [0, 10] + [2020-01-01 03:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] ∈ [0, 10] + [2020-01-01 04:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] ∈ [0, 10] + [2020-01-01 05:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] ∈ [0, 10] + [2020-01-01 06:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] ∈ [0, 10] + [2020-01-01 07:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] ∈ [0, 10] + [2020-01-01 08:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] ∈ [0, 10] + "Kessel(Q_th)|consecutive_off_hours": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] ∈ [0, 10] + [2020-01-01 01:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] ∈ [0, 10] + [2020-01-01 02:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] ∈ [0, 10] + [2020-01-01 03:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] ∈ [0, 10] + [2020-01-01 04:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] ∈ [0, 10] + [2020-01-01 05:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] ∈ [0, 10] + [2020-01-01 06:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] ∈ [0, 10] + [2020-01-01 07:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] ∈ [0, 10] + [2020-01-01 08:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] ∈ [0, 10] + "Kessel(Q_th)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel(Q_th)|total_flow_hours": |- + Variable + -------- + Kessel(Q_th)|total_flow_hours ∈ [0, 1e+06] + "Kessel|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel|on_hours_total": |- + Variable + -------- + Kessel|on_hours_total ∈ [0, inf] + "Kessel->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher(Q_th_load)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_load)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_load)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_load)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_load)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_load)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_load)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_load)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_load)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_load)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_load)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_load)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_load)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_load)|total_flow_hours ∈ [0, inf] + "Speicher(Q_th_unload)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_unload)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_unload)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_unload)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_unload)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_unload)|total_flow_hours ∈ [0, inf] + "Speicher|charge_state": |- + Variable (time: 10) + ------------------- + [2020-01-01 00:00:00]: Speicher|charge_state[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Speicher|charge_state[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Speicher|charge_state[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Speicher|charge_state[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Speicher|charge_state[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Speicher|charge_state[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Speicher|charge_state[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Speicher|charge_state[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Speicher|charge_state[2020-01-01 08:00:00] ∈ [0, 1000] + [2020-01-01 09:00:00]: Speicher|charge_state[2020-01-01 09:00:00] ∈ [0, 1000] + "Speicher|netto_discharge": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher|netto_discharge[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Speicher|netto_discharge[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Speicher|netto_discharge[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Speicher|netto_discharge[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Speicher|netto_discharge[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Speicher|netto_discharge[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Speicher|netto_discharge[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Speicher|netto_discharge[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Speicher|netto_discharge[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher|size": |- + Variable + -------- + Speicher|size ∈ [0, 1000] + "Speicher->costs(periodic)": |- + Variable + -------- + Speicher->costs(periodic) ∈ [-inf, inf] + "Speicher->CO2(periodic)": |- + Variable + -------- + Speicher->CO2(periodic) ∈ [-inf, inf] + "Speicher|PiecewiseEffects|costs": |- + Variable + -------- + Speicher|PiecewiseEffects|costs ∈ [-inf, inf] + "Speicher|PiecewiseEffects|PE": |- + Variable + -------- + Speicher|PiecewiseEffects|PE ∈ [-inf, inf] + "Speicher|Piece_0|inside_piece": |- + Variable + -------- + Speicher|Piece_0|inside_piece ∈ {0, 1} + "Speicher|Piece_0|lambda0": |- + Variable + -------- + Speicher|Piece_0|lambda0 ∈ [0, 1] + "Speicher|Piece_0|lambda1": |- + Variable + -------- + Speicher|Piece_0|lambda1 ∈ [0, 1] + "Speicher|Piece_1|inside_piece": |- + Variable + -------- + Speicher|Piece_1|inside_piece ∈ {0, 1} + "Speicher|Piece_1|lambda0": |- + Variable + -------- + Speicher|Piece_1|lambda0 ∈ [0, 1] + "Speicher|Piece_1|lambda1": |- + Variable + -------- + Speicher|Piece_1|lambda1 ∈ [0, 1] + "Speicher->PE(periodic)": |- + Variable + -------- + Speicher->PE(periodic) ∈ [-inf, inf] + "KWK(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "KWK(Q_fu)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK(Q_fu)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK(Q_fu)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK(Q_fu)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK(Q_fu)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK(Q_fu)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK(Q_fu)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK(Q_fu)|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK(Q_fu)|on_hours_total": |- + Variable + -------- + KWK(Q_fu)|on_hours_total ∈ [0, inf] + "KWK(Q_fu)|total_flow_hours": |- + Variable + -------- + KWK(Q_fu)|total_flow_hours ∈ [0, inf] + "KWK(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: KWK(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: KWK(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: KWK(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: KWK(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: KWK(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: KWK(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: KWK(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: KWK(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "KWK(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK(Q_th)|on_hours_total": |- + Variable + -------- + KWK(Q_th)|on_hours_total ∈ [0, inf] + "KWK(Q_th)|total_flow_hours": |- + Variable + -------- + KWK(Q_th)|total_flow_hours ∈ [0, inf] + "KWK(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 60] + [2020-01-01 01:00:00]: KWK(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 60] + [2020-01-01 02:00:00]: KWK(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 60] + [2020-01-01 03:00:00]: KWK(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 60] + [2020-01-01 04:00:00]: KWK(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 60] + [2020-01-01 05:00:00]: KWK(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 60] + [2020-01-01 06:00:00]: KWK(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 60] + [2020-01-01 07:00:00]: KWK(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 60] + [2020-01-01 08:00:00]: KWK(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 60] + "KWK(P_el)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(P_el)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK(P_el)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK(P_el)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK(P_el)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK(P_el)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK(P_el)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK(P_el)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK(P_el)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK(P_el)|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK(P_el)|on_hours_total": |- + Variable + -------- + KWK(P_el)|on_hours_total ∈ [0, inf] + "KWK(P_el)|total_flow_hours": |- + Variable + -------- + KWK(P_el)|total_flow_hours ∈ [0, inf] + "KWK|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK|on_hours_total": |- + Variable + -------- + KWK|on_hours_total ∈ [0, inf] + "KWK|switch|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|switch|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|switch|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|switch|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|switch|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|switch|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|switch|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|switch|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK|switch|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|switch|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|switch|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|switch|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|switch|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|switch|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|switch|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|switch|off[2020-01-01 08:00:00] ∈ {0, 1} + "KWK->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: KWK->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: KWK->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: KWK->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: KWK->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: KWK->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: KWK->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: KWK->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: KWK->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Strom|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + ---------------------------- + +1 costs(periodic) - 1 Kessel(Q_th)->costs(periodic) - 1 Speicher->costs(periodic) = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + ---------------------------- + +1 costs(temporal) - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 9]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] - 1 Kessel->costs(temporal)[2020-01-01 00:00:00] - 1 KWK->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] - 1 Kessel->costs(temporal)[2020-01-01 01:00:00] - 1 KWK->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] - 1 Kessel->costs(temporal)[2020-01-01 02:00:00] - 1 KWK->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] - 1 Kessel->costs(temporal)[2020-01-01 03:00:00] - 1 KWK->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] - 1 Kessel->costs(temporal)[2020-01-01 04:00:00] - 1 KWK->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 05:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] - 1 Kessel->costs(temporal)[2020-01-01 05:00:00] - 1 KWK->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] - 1 Kessel->costs(temporal)[2020-01-01 06:00:00] - 1 KWK->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] - 1 Kessel->costs(temporal)[2020-01-01 07:00:00] - 1 KWK->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] - 1 Kessel->costs(temporal)[2020-01-01 08:00:00] - 1 KWK->costs(temporal)[2020-01-01 08:00:00] = -0.0 + costs: |- + Constraint `costs` + ------------------ + +1 costs - 1 costs(temporal) - 1 costs(periodic) = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + -------------------------- + +1 CO2(periodic) - 1 Speicher->CO2(periodic) = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + -------------------------- + +1 CO2(temporal) - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 08:00:00] = -0.0 + CO2: |- + Constraint `CO2` + ---------------- + +1 CO2 - 1 CO2(temporal) - 1 CO2(periodic) = -0.0 + PE(periodic): |- + Constraint `PE(periodic)` + ------------------------- + +1 PE(periodic) - 1 Kessel(Q_th)->PE(periodic) - 1 Speicher->PE(periodic) = -0.0 + PE(temporal): |- + Constraint `PE(temporal)` + ------------------------- + +1 PE(temporal) - 1 PE(temporal)|per_timestep[2020-01-01 00:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 01:00:00]... -1 PE(temporal)|per_timestep[2020-01-01 06:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 07:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "PE(temporal)|per_timestep": |- + Constraint `PE(temporal)|per_timestep` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + PE: |- + Constraint `PE` + --------------- + +1 PE - 1 PE(temporal) - 1 PE(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty = -0.0 + "CO2(temporal)->costs(temporal)": |- + Constraint `CO2(temporal)->costs(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Constraint `Wärmelast(Q_th_Last)|total_flow_hours` + -------------------------------------------------- + +1 Wärmelast(Q_th_Last)|total_flow_hours - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + --------------------------------------------- + +1 Gastarif(Q_Gas)|total_flow_hours - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + ----------------------------------------------- + +1 Einspeisung(P_el)|total_flow_hours - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_fu)|on_hours_total": |- + Constraint `Kessel(Q_fu)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_fu)|on_hours_total - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00]... -1 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_fu)|flow_rate|ub": |- + Constraint `Kessel(Q_fu)|flow_rate|ub` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_fu)|flow_rate|lb": |- + Constraint `Kessel(Q_fu)|flow_rate|lb` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_fu)|total_flow_hours": |- + Constraint `Kessel(Q_fu)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_fu)|total_flow_hours - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)->costs(periodic)": |- + Constraint `Kessel(Q_th)->costs(periodic)` + ------------------------------------------ + +1 Kessel(Q_th)->costs(periodic) - 10 Kessel(Q_th)|size = 1000.0 + "Kessel(Q_th)->PE(periodic)": |- + Constraint `Kessel(Q_th)->PE(periodic)` + --------------------------------------- + +1 Kessel(Q_th)->PE(periodic) - 2 Kessel(Q_th)|size = -0.0 + "Kessel(Q_th)|complementary": |- + Constraint `Kessel(Q_th)|complementary` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|off[2020-01-01 00:00:00] = 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|off[2020-01-01 01:00:00] = 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|off[2020-01-01 02:00:00] = 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|off[2020-01-01 03:00:00] = 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|off[2020-01-01 04:00:00] = 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|off[2020-01-01 05:00:00] = 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|off[2020-01-01 06:00:00] = 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|off[2020-01-01 07:00:00] = 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|off[2020-01-01 08:00:00] = 1.0 + "Kessel(Q_th)|on_hours_total": |- + Constraint `Kessel(Q_th)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_th)|on_hours_total - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00]... -1 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|switch|transition": |- + Constraint `Kessel(Q_th)|switch|transition` + [time: 8]: + ------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 08:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|on[2020-01-01 07:00:00] = -0.0 + "Kessel(Q_th)|switch|initial": |- + Constraint `Kessel(Q_th)|switch|initial` + ---------------------------------------- + +1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] = -1.0 + "Kessel(Q_th)|switch|mutex": |- + Constraint `Kessel(Q_th)|switch|mutex` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 08:00:00] ≤ 1.0 + "Kessel(Q_th)|switch|count": |- + Constraint `Kessel(Q_th)|switch|count` + -------------------------------------- + +1 Kessel(Q_th)|switch|count - 1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00]... -1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|consecutive_on_hours|ub": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|ub` + [time: 9]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 10 Kessel(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 10 Kessel(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 10 Kessel(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 10 Kessel(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 10 Kessel(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 10 Kessel(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 10 Kessel(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 10 Kessel(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 10 Kessel(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|consecutive_on_hours|forward": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|forward` + [time: 8]: + ----------------------------------------------------------------- + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] ≤ 1.0 + "Kessel(Q_th)|consecutive_on_hours|backward": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|backward` + [time: 8]: + ------------------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 10 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -9.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 10 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -9.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 10 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -9.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 10 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -9.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 10 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -9.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 10 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -9.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 10 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -9.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 10 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -9.0 + "Kessel(Q_th)|consecutive_on_hours|initial": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|initial` + ------------------------------------------------------ + +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 2 Kessel(Q_th)|on[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_th)|consecutive_on_hours|lb": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|lb` + [time: 9]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_th)|consecutive_off_hours|ub": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|ub` + [time: 9]: + ------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 9 Kessel(Q_th)|off[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 9 Kessel(Q_th)|off[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 9 Kessel(Q_th)|off[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 9 Kessel(Q_th)|off[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 9 Kessel(Q_th)|off[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 9 Kessel(Q_th)|off[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 9 Kessel(Q_th)|off[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 9 Kessel(Q_th)|off[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 9 Kessel(Q_th)|off[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|consecutive_off_hours|forward": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|forward` + [time: 8]: + ------------------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] ≤ 1.0 + "Kessel(Q_th)|consecutive_off_hours|backward": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|backward` + [time: 8]: + ------------------------------------------------------------------- + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 9 Kessel(Q_th)|off[2020-01-01 01:00:00] ≥ -8.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 9 Kessel(Q_th)|off[2020-01-01 02:00:00] ≥ -8.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 9 Kessel(Q_th)|off[2020-01-01 03:00:00] ≥ -8.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 9 Kessel(Q_th)|off[2020-01-01 04:00:00] ≥ -8.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 9 Kessel(Q_th)|off[2020-01-01 05:00:00] ≥ -8.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 9 Kessel(Q_th)|off[2020-01-01 06:00:00] ≥ -8.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 9 Kessel(Q_th)|off[2020-01-01 07:00:00] ≥ -8.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 9 Kessel(Q_th)|off[2020-01-01 08:00:00] ≥ -8.0 + "Kessel(Q_th)|consecutive_off_hours|initial": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|initial` + ------------------------------------------------------- + +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 1 Kessel(Q_th)|off[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_th)->costs(temporal)": |- + Constraint `Kessel(Q_th)->costs(temporal)` + [time: 9]: + ----------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|flow_rate|lb2": |- + Constraint `Kessel(Q_th)|flow_rate|lb2` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 5 Kessel(Q_th)|on[2020-01-01 00:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] - 5 Kessel(Q_th)|on[2020-01-01 01:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] - 5 Kessel(Q_th)|on[2020-01-01 02:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] - 5 Kessel(Q_th)|on[2020-01-01 03:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] - 5 Kessel(Q_th)|on[2020-01-01 04:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] - 5 Kessel(Q_th)|on[2020-01-01 05:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 5 Kessel(Q_th)|on[2020-01-01 06:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 5 Kessel(Q_th)|on[2020-01-01 07:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] - 5 Kessel(Q_th)|on[2020-01-01 08:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + "Kessel(Q_th)|flow_rate|ub2": |- + Constraint `Kessel(Q_th)|flow_rate|ub2` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + "Kessel(Q_th)|flow_rate|ub1": |- + Constraint `Kessel(Q_th)|flow_rate|ub1` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +50 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +50 Kessel(Q_th)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +50 Kessel(Q_th)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +50 Kessel(Q_th)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +50 Kessel(Q_th)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +50 Kessel(Q_th)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +50 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +50 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +50 Kessel(Q_th)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_th)|flow_rate|lb1": |- + Constraint `Kessel(Q_th)|flow_rate|lb1` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +5 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +5 Kessel(Q_th)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +5 Kessel(Q_th)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +5 Kessel(Q_th)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +5 Kessel(Q_th)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +5 Kessel(Q_th)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +5 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +5 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +5 Kessel(Q_th)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|total_flow_hours": |- + Constraint `Kessel(Q_th)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_th)|total_flow_hours - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|load_factor_max": |- + Constraint `Kessel(Q_th)|load_factor_max` + ----------------------------------------- + +1 Kessel(Q_th)|total_flow_hours - 9 Kessel(Q_th)|size ≤ -0.0 + "Kessel(Q_th)|load_factor_min": |- + Constraint `Kessel(Q_th)|load_factor_min` + ----------------------------------------- + +1 Kessel(Q_th)|total_flow_hours - 0.9 Kessel(Q_th)|size ≥ -0.0 + "Kessel|on|ub": |- + Constraint `Kessel|on|ub` + [time: 9]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 Kessel|on[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 02:00:00]: +1 Kessel|on[2020-01-01 02:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] ≤ 1e-05 + [2020-01-01 03:00:00]: +1 Kessel|on[2020-01-01 03:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] ≤ 1e-05 + [2020-01-01 04:00:00]: +1 Kessel|on[2020-01-01 04:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] ≤ 1e-05 + [2020-01-01 05:00:00]: +1 Kessel|on[2020-01-01 05:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] ≤ 1e-05 + [2020-01-01 06:00:00]: +1 Kessel|on[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] ≤ 1e-05 + [2020-01-01 07:00:00]: +1 Kessel|on[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] ≤ 1e-05 + [2020-01-01 08:00:00]: +1 Kessel|on[2020-01-01 08:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] ≤ 1e-05 + "Kessel|on|lb": |- + Constraint `Kessel|on|lb` + [time: 9]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel|on[2020-01-01 00:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel|on[2020-01-01 01:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 01:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel|on[2020-01-01 02:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 02:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel|on[2020-01-01 03:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 03:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel|on[2020-01-01 04:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 04:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel|on[2020-01-01 05:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 05:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel|on[2020-01-01 06:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel|on[2020-01-01 07:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel|on[2020-01-01 08:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 08:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "Kessel|on_hours_total": |- + Constraint `Kessel|on_hours_total` + ---------------------------------- + +1 Kessel|on_hours_total - 1 Kessel|on[2020-01-01 00:00:00] - 1 Kessel|on[2020-01-01 01:00:00]... -1 Kessel|on[2020-01-01 06:00:00] - 1 Kessel|on[2020-01-01 07:00:00] - 1 Kessel|on[2020-01-01 08:00:00] = -0.0 + "Kessel->costs(temporal)": |- + Constraint `Kessel->costs(temporal)` + [time: 9]: + ----------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel->costs(temporal)[2020-01-01 08:00:00] = -0.0 + "Kessel->CO2(temporal)": |- + Constraint `Kessel->CO2(temporal)` + [time: 9]: + --------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 00:00:00] - 1000 Kessel|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 01:00:00] - 1000 Kessel|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 02:00:00] - 1000 Kessel|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 03:00:00] - 1000 Kessel|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 04:00:00] - 1000 Kessel|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 05:00:00] - 1000 Kessel|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 06:00:00] - 1000 Kessel|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 07:00:00] - 1000 Kessel|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 08:00:00] - 1000 Kessel|on[2020-01-01 08:00:00] = -0.0 + "Kessel|conversion_0": |- + Constraint `Kessel|conversion_0` + [time: 9]: + ------------------------------------------- + [2020-01-01 00:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|on_hours_total": |- + Constraint `Speicher(Q_th_load)|on_hours_total` + ----------------------------------------------- + +1 Speicher(Q_th_load)|on_hours_total - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|flow_rate|ub": |- + Constraint `Speicher(Q_th_load)|flow_rate|ub` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_load)|flow_rate|lb": |- + Constraint `Speicher(Q_th_load)|flow_rate|lb` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_load)|total_flow_hours": |- + Constraint `Speicher(Q_th_load)|total_flow_hours` + ------------------------------------------------- + +1 Speicher(Q_th_load)|total_flow_hours - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|on_hours_total": |- + Constraint `Speicher(Q_th_unload)|on_hours_total` + ------------------------------------------------- + +1 Speicher(Q_th_unload)|on_hours_total - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|flow_rate|ub": |- + Constraint `Speicher(Q_th_unload)|flow_rate|ub` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_unload)|flow_rate|lb": |- + Constraint `Speicher(Q_th_unload)|flow_rate|lb` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_unload)|total_flow_hours": |- + Constraint `Speicher(Q_th_unload)|total_flow_hours` + --------------------------------------------------- + +1 Speicher(Q_th_unload)|total_flow_hours - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|prevent_simultaneous_use": |- + Constraint `Speicher|prevent_simultaneous_use` + [time: 9]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ 1.0 + "Speicher|netto_discharge": |- + Constraint `Speicher|netto_discharge` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 Speicher|netto_discharge[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher|netto_discharge[2020-01-01 01:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|netto_discharge[2020-01-01 02:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|netto_discharge[2020-01-01 03:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|netto_discharge[2020-01-01 04:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|netto_discharge[2020-01-01 05:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|netto_discharge[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|netto_discharge[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|netto_discharge[2020-01-01 08:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|charge_state": |- + Constraint `Speicher|charge_state` + [time: 9]: + --------------------------------------------- + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 0.92 Speicher|charge_state[2020-01-01 00:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 0.92 Speicher|charge_state[2020-01-01 01:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 0.92 Speicher|charge_state[2020-01-01 02:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 0.92 Speicher|charge_state[2020-01-01 03:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 0.92 Speicher|charge_state[2020-01-01 04:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 0.92 Speicher|charge_state[2020-01-01 05:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 0.92 Speicher|charge_state[2020-01-01 06:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 0.92 Speicher|charge_state[2020-01-01 07:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 0.92 Speicher|charge_state[2020-01-01 08:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher->costs(periodic)": |- + Constraint `Speicher->costs(periodic)` + -------------------------------------- + +1 Speicher->costs(periodic) - 0.01 Speicher|size - 1 Speicher|PiecewiseEffects|costs = -0.0 + "Speicher->CO2(periodic)": |- + Constraint `Speicher->CO2(periodic)` + ------------------------------------ + +1 Speicher->CO2(periodic) - 0.01 Speicher|size = -0.0 + "Speicher|Piece_0|inside_piece": |- + Constraint `Speicher|Piece_0|inside_piece` + ------------------------------------------ + +1 Speicher|Piece_0|inside_piece - 1 Speicher|Piece_0|lambda0 - 1 Speicher|Piece_0|lambda1 = -0.0 + "Speicher|Piece_1|inside_piece": |- + Constraint `Speicher|Piece_1|inside_piece` + ------------------------------------------ + +1 Speicher|Piece_1|inside_piece - 1 Speicher|Piece_1|lambda0 - 1 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|size|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|size|lambda` + ----------------------------------------------------------- + +1 Speicher|size - 5 Speicher|Piece_0|lambda0 - 25 Speicher|Piece_0|lambda1 - 25 Speicher|Piece_1|lambda0 - 100 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|size|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|size|single_segment` + ------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|lambda` + ----------------------------------------------------------------------------- + +1 Speicher|PiecewiseEffects|costs - 50 Speicher|Piece_0|lambda0 - 250 Speicher|Piece_0|lambda1 - 250 Speicher|Piece_1|lambda0 - 800 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|single_segment` + ------------------------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|lambda` + -------------------------------------------------------------------------- + +1 Speicher|PiecewiseEffects|PE - 5 Speicher|Piece_0|lambda0 - 25 Speicher|Piece_0|lambda1 - 25 Speicher|Piece_1|lambda0 - 100 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|single_segment` + ---------------------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher->PE(periodic)": |- + Constraint `Speicher->PE(periodic)` + ----------------------------------- + +1 Speicher->PE(periodic) - 1 Speicher|PiecewiseEffects|PE = -0.0 + "Speicher|charge_state|ub": |- + Constraint `Speicher|charge_state|ub` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 1 Speicher|size ≤ -0.0 + "Speicher|charge_state|lb": |- + Constraint `Speicher|charge_state|lb` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] ≥ -0.0 + "Speicher|initial_charge_state": |- + Constraint `Speicher|initial_charge_state` + ------------------------------------------ + +1 Speicher|charge_state[2020-01-01 00:00:00] = -0.0 + "Speicher|final_charge_max": |- + Constraint `Speicher|final_charge_max` + -------------------------------------- + +1 Speicher|charge_state[2020-01-01 09:00:00] ≤ 10.0 + "KWK(Q_fu)|on_hours_total": |- + Constraint `KWK(Q_fu)|on_hours_total` + ------------------------------------- + +1 KWK(Q_fu)|on_hours_total - 1 KWK(Q_fu)|on[2020-01-01 00:00:00] - 1 KWK(Q_fu)|on[2020-01-01 01:00:00]... -1 KWK(Q_fu)|on[2020-01-01 06:00:00] - 1 KWK(Q_fu)|on[2020-01-01 07:00:00] - 1 KWK(Q_fu)|on[2020-01-01 08:00:00] = -0.0 + "KWK(Q_fu)|flow_rate|ub": |- + Constraint `KWK(Q_fu)|flow_rate|ub` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1000 KWK(Q_fu)|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK(Q_fu)|flow_rate|lb": |- + Constraint `KWK(Q_fu)|flow_rate|lb` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK(Q_fu)|total_flow_hours": |- + Constraint `KWK(Q_fu)|total_flow_hours` + --------------------------------------- + +1 KWK(Q_fu)|total_flow_hours - 1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK(Q_th)|on_hours_total": |- + Constraint `KWK(Q_th)|on_hours_total` + ------------------------------------- + +1 KWK(Q_th)|on_hours_total - 1 KWK(Q_th)|on[2020-01-01 00:00:00] - 1 KWK(Q_th)|on[2020-01-01 01:00:00]... -1 KWK(Q_th)|on[2020-01-01 06:00:00] - 1 KWK(Q_th)|on[2020-01-01 07:00:00] - 1 KWK(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "KWK(Q_th)|flow_rate|ub": |- + Constraint `KWK(Q_th)|flow_rate|ub` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 1000 KWK(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00] - 1000 KWK(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00] - 1000 KWK(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00] - 1000 KWK(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00] - 1000 KWK(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00] - 1000 KWK(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 1000 KWK(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 1000 KWK(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] - 1000 KWK(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK(Q_th)|flow_rate|lb": |- + Constraint `KWK(Q_th)|flow_rate|lb` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK(Q_th)|total_flow_hours": |- + Constraint `KWK(Q_th)|total_flow_hours` + --------------------------------------- + +1 KWK(Q_th)|total_flow_hours - 1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK(P_el)|on_hours_total": |- + Constraint `KWK(P_el)|on_hours_total` + ------------------------------------- + +1 KWK(P_el)|on_hours_total - 1 KWK(P_el)|on[2020-01-01 00:00:00] - 1 KWK(P_el)|on[2020-01-01 01:00:00]... -1 KWK(P_el)|on[2020-01-01 06:00:00] - 1 KWK(P_el)|on[2020-01-01 07:00:00] - 1 KWK(P_el)|on[2020-01-01 08:00:00] = -0.0 + "KWK(P_el)|flow_rate|ub": |- + Constraint `KWK(P_el)|flow_rate|ub` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 60 KWK(P_el)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 60 KWK(P_el)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 60 KWK(P_el)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 60 KWK(P_el)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 60 KWK(P_el)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 60 KWK(P_el)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 60 KWK(P_el)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 60 KWK(P_el)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 60 KWK(P_el)|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK(P_el)|flow_rate|lb": |- + Constraint `KWK(P_el)|flow_rate|lb` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 5 KWK(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 5 KWK(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 5 KWK(P_el)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 5 KWK(P_el)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 5 KWK(P_el)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 5 KWK(P_el)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 5 KWK(P_el)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 5 KWK(P_el)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 5 KWK(P_el)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK(P_el)|total_flow_hours": |- + Constraint `KWK(P_el)|total_flow_hours` + --------------------------------------- + +1 KWK(P_el)|total_flow_hours - 1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 01:00:00]... -1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK|on|ub": |- + Constraint `KWK|on|ub` + [time: 9]: + --------------------------------- + [2020-01-01 00:00:00]: +1 KWK|on[2020-01-01 00:00:00] - 1 KWK(Q_fu)|on[2020-01-01 00:00:00] - 1 KWK(Q_th)|on[2020-01-01 00:00:00] - 1 KWK(P_el)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 KWK|on[2020-01-01 01:00:00] - 1 KWK(Q_fu)|on[2020-01-01 01:00:00] - 1 KWK(Q_th)|on[2020-01-01 01:00:00] - 1 KWK(P_el)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 02:00:00]: +1 KWK|on[2020-01-01 02:00:00] - 1 KWK(Q_fu)|on[2020-01-01 02:00:00] - 1 KWK(Q_th)|on[2020-01-01 02:00:00] - 1 KWK(P_el)|on[2020-01-01 02:00:00] ≤ 1e-05 + [2020-01-01 03:00:00]: +1 KWK|on[2020-01-01 03:00:00] - 1 KWK(Q_fu)|on[2020-01-01 03:00:00] - 1 KWK(Q_th)|on[2020-01-01 03:00:00] - 1 KWK(P_el)|on[2020-01-01 03:00:00] ≤ 1e-05 + [2020-01-01 04:00:00]: +1 KWK|on[2020-01-01 04:00:00] - 1 KWK(Q_fu)|on[2020-01-01 04:00:00] - 1 KWK(Q_th)|on[2020-01-01 04:00:00] - 1 KWK(P_el)|on[2020-01-01 04:00:00] ≤ 1e-05 + [2020-01-01 05:00:00]: +1 KWK|on[2020-01-01 05:00:00] - 1 KWK(Q_fu)|on[2020-01-01 05:00:00] - 1 KWK(Q_th)|on[2020-01-01 05:00:00] - 1 KWK(P_el)|on[2020-01-01 05:00:00] ≤ 1e-05 + [2020-01-01 06:00:00]: +1 KWK|on[2020-01-01 06:00:00] - 1 KWK(Q_fu)|on[2020-01-01 06:00:00] - 1 KWK(Q_th)|on[2020-01-01 06:00:00] - 1 KWK(P_el)|on[2020-01-01 06:00:00] ≤ 1e-05 + [2020-01-01 07:00:00]: +1 KWK|on[2020-01-01 07:00:00] - 1 KWK(Q_fu)|on[2020-01-01 07:00:00] - 1 KWK(Q_th)|on[2020-01-01 07:00:00] - 1 KWK(P_el)|on[2020-01-01 07:00:00] ≤ 1e-05 + [2020-01-01 08:00:00]: +1 KWK|on[2020-01-01 08:00:00] - 1 KWK(Q_fu)|on[2020-01-01 08:00:00] - 1 KWK(Q_th)|on[2020-01-01 08:00:00] - 1 KWK(P_el)|on[2020-01-01 08:00:00] ≤ 1e-05 + "KWK|on|lb": |- + Constraint `KWK|on|lb` + [time: 9]: + --------------------------------- + [2020-01-01 00:00:00]: +1 KWK|on[2020-01-01 00:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 00:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 00:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK|on[2020-01-01 01:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 01:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 01:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK|on[2020-01-01 02:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 02:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 02:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK|on[2020-01-01 03:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 03:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 03:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK|on[2020-01-01 04:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 04:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 04:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK|on[2020-01-01 05:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 05:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 05:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK|on[2020-01-01 06:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 06:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 06:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK|on[2020-01-01 07:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 07:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 07:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK|on[2020-01-01 08:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 08:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 08:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK|on_hours_total": |- + Constraint `KWK|on_hours_total` + ------------------------------- + +1 KWK|on_hours_total - 1 KWK|on[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 01:00:00]... -1 KWK|on[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 08:00:00] = -0.0 + "KWK|switch|transition": |- + Constraint `KWK|switch|transition` + [time: 8]: + --------------------------------------------- + [2020-01-01 01:00:00]: +1 KWK|switch|on[2020-01-01 01:00:00] - 1 KWK|switch|off[2020-01-01 01:00:00] - 1 KWK|on[2020-01-01 01:00:00] + 1 KWK|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK|switch|on[2020-01-01 02:00:00] - 1 KWK|switch|off[2020-01-01 02:00:00] - 1 KWK|on[2020-01-01 02:00:00] + 1 KWK|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK|switch|on[2020-01-01 03:00:00] - 1 KWK|switch|off[2020-01-01 03:00:00] - 1 KWK|on[2020-01-01 03:00:00] + 1 KWK|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK|switch|on[2020-01-01 04:00:00] - 1 KWK|switch|off[2020-01-01 04:00:00] - 1 KWK|on[2020-01-01 04:00:00] + 1 KWK|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK|switch|on[2020-01-01 05:00:00] - 1 KWK|switch|off[2020-01-01 05:00:00] - 1 KWK|on[2020-01-01 05:00:00] + 1 KWK|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK|switch|on[2020-01-01 06:00:00] - 1 KWK|switch|off[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 06:00:00] + 1 KWK|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK|switch|on[2020-01-01 07:00:00] - 1 KWK|switch|off[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 07:00:00] + 1 KWK|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK|switch|on[2020-01-01 08:00:00] - 1 KWK|switch|off[2020-01-01 08:00:00] - 1 KWK|on[2020-01-01 08:00:00] + 1 KWK|on[2020-01-01 07:00:00] = -0.0 + "KWK|switch|initial": |- + Constraint `KWK|switch|initial` + ------------------------------- + +1 KWK|switch|on[2020-01-01 00:00:00] - 1 KWK|switch|off[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 00:00:00] = -1.0 + "KWK|switch|mutex": |- + Constraint `KWK|switch|mutex` + [time: 9]: + ---------------------------------------- + [2020-01-01 00:00:00]: +1 KWK|switch|on[2020-01-01 00:00:00] + 1 KWK|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 KWK|switch|on[2020-01-01 01:00:00] + 1 KWK|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 KWK|switch|on[2020-01-01 02:00:00] + 1 KWK|switch|off[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 KWK|switch|on[2020-01-01 03:00:00] + 1 KWK|switch|off[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 KWK|switch|on[2020-01-01 04:00:00] + 1 KWK|switch|off[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 KWK|switch|on[2020-01-01 05:00:00] + 1 KWK|switch|off[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 KWK|switch|on[2020-01-01 06:00:00] + 1 KWK|switch|off[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 KWK|switch|on[2020-01-01 07:00:00] + 1 KWK|switch|off[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 KWK|switch|on[2020-01-01 08:00:00] + 1 KWK|switch|off[2020-01-01 08:00:00] ≤ 1.0 + "KWK->costs(temporal)": |- + Constraint `KWK->costs(temporal)` + [time: 9]: + -------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK->costs(temporal)[2020-01-01 00:00:00] - 0.01 KWK|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK->costs(temporal)[2020-01-01 01:00:00] - 0.01 KWK|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK->costs(temporal)[2020-01-01 02:00:00] - 0.01 KWK|switch|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK->costs(temporal)[2020-01-01 03:00:00] - 0.01 KWK|switch|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK->costs(temporal)[2020-01-01 04:00:00] - 0.01 KWK|switch|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK->costs(temporal)[2020-01-01 05:00:00] - 0.01 KWK|switch|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK->costs(temporal)[2020-01-01 06:00:00] - 0.01 KWK|switch|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK->costs(temporal)[2020-01-01 07:00:00] - 0.01 KWK|switch|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK->costs(temporal)[2020-01-01 08:00:00] - 0.01 KWK|switch|on[2020-01-01 08:00:00] = -0.0 + "KWK|conversion_0": |- + Constraint `KWK|conversion_0` + [time: 9]: + ---------------------------------------- + [2020-01-01 00:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK|conversion_1": |- + Constraint `KWK|conversion_1` + [time: 9]: + ---------------------------------------- + [2020-01-01 00:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.4 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 9]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] + 1 Strom|excess_input[2020-01-01 00:00:00] - 1 Strom|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] + 1 Strom|excess_input[2020-01-01 01:00:00] - 1 Strom|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] + 1 Strom|excess_input[2020-01-01 02:00:00] - 1 Strom|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] + 1 Strom|excess_input[2020-01-01 03:00:00] - 1 Strom|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] + 1 Strom|excess_input[2020-01-01 04:00:00] - 1 Strom|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] + 1 Strom|excess_input[2020-01-01 05:00:00] - 1 Strom|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] + 1 Strom|excess_input[2020-01-01 06:00:00] - 1 Strom|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] + 1 Strom|excess_input[2020-01-01 07:00:00] - 1 Strom|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] + 1 Strom|excess_input[2020-01-01 08:00:00] - 1 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 1e+05 Strom|excess_input[2020-01-01 00:00:00] - 1e+05 Strom|excess_input[2020-01-01 01:00:00]... -1e+05 Strom|excess_output[2020-01-01 06:00:00] - 1e+05 Strom|excess_output[2020-01-01 07:00:00] - 1e+05 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 9]: + ----------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Fernwärme|excess_input[2020-01-01 00:00:00] - 1 Fernwärme|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Fernwärme|excess_input[2020-01-01 01:00:00] - 1 Fernwärme|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Fernwärme|excess_input[2020-01-01 02:00:00] - 1 Fernwärme|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Fernwärme|excess_input[2020-01-01 03:00:00] - 1 Fernwärme|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Fernwärme|excess_input[2020-01-01 04:00:00] - 1 Fernwärme|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Fernwärme|excess_input[2020-01-01 05:00:00] - 1 Fernwärme|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Fernwärme|excess_input[2020-01-01 06:00:00] - 1 Fernwärme|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Fernwärme|excess_input[2020-01-01 07:00:00] - 1 Fernwärme|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Fernwärme|excess_input[2020-01-01 08:00:00] - 1 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00] - 1e+05 Fernwärme|excess_input[2020-01-01 01:00:00]... -1e+05 Fernwärme|excess_output[2020-01-01 06:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 07:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] + 1 Gas|excess_input[2020-01-01 02:00:00] - 1 Gas|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] + 1 Gas|excess_input[2020-01-01 03:00:00] - 1 Gas|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] + 1 Gas|excess_input[2020-01-01 04:00:00] - 1 Gas|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] + 1 Gas|excess_input[2020-01-01 05:00:00] - 1 Gas|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] + 1 Gas|excess_input[2020-01-01 06:00:00] - 1 Gas|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] + 1 Gas|excess_input[2020-01-01 07:00:00] - 1 Gas|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] + 1 Gas|excess_input[2020-01-01 08:00:00] - 1 Gas|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00] - 1e+05 Gas|excess_input[2020-01-01 01:00:00]... -1e+05 Gas|excess_output[2020-01-01 06:00:00] - 1e+05 Gas|excess_output[2020-01-01 07:00:00] - 1e+05 Gas|excess_output[2020-01-01 08:00:00] = -0.0 +binaries: + - "Kessel(Q_fu)|on" + - "Kessel(Q_th)|on" + - "Kessel(Q_th)|off" + - "Kessel(Q_th)|switch|on" + - "Kessel(Q_th)|switch|off" + - "Kessel|on" + - "Speicher(Q_th_load)|on" + - "Speicher(Q_th_unload)|on" + - "Speicher|Piece_0|inside_piece" + - "Speicher|Piece_1|inside_piece" + - "KWK(Q_fu)|on" + - "KWK(Q_th)|on" + - "KWK(P_el)|on" + - "KWK|on" + - "KWK|switch|on" + - "KWK|switch|off" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - PE(periodic) + - PE(temporal) + - "PE(temporal)|per_timestep" + - PE + - Penalty + - "CO2(temporal)->costs(temporal)" + - "Wärmelast(Q_th_Last)|flow_rate" + - "Wärmelast(Q_th_Last)|total_flow_hours" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "Kessel(Q_fu)|flow_rate" + - "Kessel(Q_fu)|on_hours_total" + - "Kessel(Q_fu)|total_flow_hours" + - "Kessel(Q_th)|flow_rate" + - "Kessel(Q_th)|size" + - "Kessel(Q_th)->costs(periodic)" + - "Kessel(Q_th)->PE(periodic)" + - "Kessel(Q_th)|on_hours_total" + - "Kessel(Q_th)|switch|count" + - "Kessel(Q_th)|consecutive_on_hours" + - "Kessel(Q_th)|consecutive_off_hours" + - "Kessel(Q_th)->costs(temporal)" + - "Kessel(Q_th)|total_flow_hours" + - "Kessel|on_hours_total" + - "Kessel->costs(temporal)" + - "Kessel->CO2(temporal)" + - "Speicher(Q_th_load)|flow_rate" + - "Speicher(Q_th_load)|on_hours_total" + - "Speicher(Q_th_load)|total_flow_hours" + - "Speicher(Q_th_unload)|flow_rate" + - "Speicher(Q_th_unload)|on_hours_total" + - "Speicher(Q_th_unload)|total_flow_hours" + - "Speicher|charge_state" + - "Speicher|netto_discharge" + - "Speicher|size" + - "Speicher->costs(periodic)" + - "Speicher->CO2(periodic)" + - "Speicher|PiecewiseEffects|costs" + - "Speicher|PiecewiseEffects|PE" + - "Speicher|Piece_0|lambda0" + - "Speicher|Piece_0|lambda1" + - "Speicher|Piece_1|lambda0" + - "Speicher|Piece_1|lambda1" + - "Speicher->PE(periodic)" + - "KWK(Q_fu)|flow_rate" + - "KWK(Q_fu)|on_hours_total" + - "KWK(Q_fu)|total_flow_hours" + - "KWK(Q_th)|flow_rate" + - "KWK(Q_th)|on_hours_total" + - "KWK(Q_th)|total_flow_hours" + - "KWK(P_el)|flow_rate" + - "KWK(P_el)|on_hours_total" + - "KWK(P_el)|total_flow_hours" + - "KWK|on_hours_total" + - "KWK->costs(temporal)" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/io_flow_system_base--solution.nc4 b/tests/ressources/v4-api/io_flow_system_base--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..67349a28dab98229ea022d8f8c540acb821ab547 GIT binary patch literal 162818 zcmeHQ2|!d;_dhd(h>D0NiiUz{2%-c^xuu{8YAT|bTjn^zAY;hT%%D`Lxa3l1R(@rD zmgc{#EYoZ=+ceGm+O1qlE6u*IP1DNMO67mNHNArfu;#^T+2TE$D20p ze<%C(jbLCQ;o^3LopK!5H*=xLU>34$R6f&eTom%|B{VbDPgXNBJyn_-_)VlTE9 zyPUB-Vs4Giv=uu`tTtz9@g#{ZvP`rV;V)H0$C%iu7KhC;vB=6&UGEtgpJTQbC6pHw z*{7Ku7MC>^nLRR4G4aF9_)~*|HqvKfv>2RMA~yn> zMk)>Pu8_L@nqqkC2U(p?sq=4*Rm4CJ^J+N{FSi%7{^kUhSx~CMKo#SI*$WeGZuVlc zBrs-)Q&pI&P_Hl+qbZC9owG2;;I!Q$$*)ptDWie{uVSmHm2;ZSl~?Gi3KZibPdO^j zURvz(Dv*hZHLuiVn`$*v;pb*5DB!@kxv)MeESW@T#ZT$h^3sW_l;uU9G$xyBbvSL9 zW3rn~D*&oIydpg_lq1jCK}@zZE$|c;)>X>GkG1Wrs+T&pw2Ii2bEGYr=pB2`db6U7 z?3R3UfhEsncbKPG%Dl2y#oN@+6ic6ngLaX13Xa+q$IV`;t3X8-EF5Wzoi-QtnO6of zhpiZ+Ek%0KQ%YS{@2X$0*lMMMx6fO=%M0v|X%CQ`o)QrhRJIbMJnG=ndZ5H;ZaaR30?xJ??(3DopsWYWq!o z$BY`Jez^|90IZPuy^4V}dX5^T9XX_om0($%724;ssKoksRHQi8sqRLxaYYICEP%1; z7rMEcLAK%D}cCFgE+6M?_$g4XHzLa3BcEn&(U9ko#dDkvh*Y2HR!9u z_^_xTt)S`7PTP_6PEpe6wVW#!zM&mvR`s2#Gyh4j(lGThlJD+zb5ye)Q%WlrMIXMR_lj5Y#H?tS6=85;kz@HpnF}_6A z7oWG#s<}#wtE>vK_^J%WRb3t8)US}D{!$Igb8OZ;>ol9wnpsd_&2u?%2yo)e%L7es zmYhuQcyn?&PBU%!R&xo<(I-QZWy-{Si=<7e%g4k#P8wh|aVb@0oFXUol`+Mo_#6zC zl1d!bsi=9Gowg~ZMJ`LR)n4i}mpawWIETdPi>asl%0r1#sw$2TT}qt%iZ^@ms6Z{S z72|YUj+PZpO6~Ij(3I|*M_mg~o~p%!6;n*m}s9Xb2rD9o2J zv#gHdX$q8T7&UQTFe;N4mAa_gZ+i0tcbl*T-I}XY`;ZqkgSzhJ*0MZYqcckwvkLl- z=6L#isc8~Sv=mv2@rA5;ME(v$G$pHA!ix70g1;F(4|v?7=GkQ3u4fU-#E=oX-RzwO z9}H-fSuLTs8p{%>=fIjJTD4p#)%9L+C9PYX0CV$_9*-~&OxPNT=c+v8(vg#MR?#DO zF0a~NzL++6)YsjIn(9csB`s;=&`1jsgpNG(a5?N#)P0dF1$p&`d%CWA&b@a!RMApq zUbw45JzAngp7ZHouTvpa-oA0akUD$R&W*EDG(*@cH+gK9rwkIf8ACg(L1qD75X*t+ z#g|weHhaD;Pns>#Ala$6R}>3yS#d+lVJVV$RRQIgjoD?JVs*N#C9FJ+fba}e>A6g5 zBbelBI|oZ*S$b9JA5h!rQgzu(jqUI$TRF<)O+C&i!O{;k^vWZOuf|TjeK5FN>m!l} zsqobVdG(O0|ENS&4qknz$D7s=3o4oBs|{*_=3zOR=MrUYtQ%=<4ALs0@TAq^>#O^#tuB&&oFz|8RNMS~ z)maUr_aKfEt47s}MXg_WN1xZ^;yjbFU3oS+ij`h(>~XRd=QG+PJ%7mL!wuRvHY93B z4mASWNU!#57}TxTMxIyO&nuDAa^m)AJO+6+T47@?Rt6ZR{ivQBRg70#J!91kRmI5r z3LYw!@68cU2F)6auV+S8hN4cW*i_e@w-Jkj<5n%Bq+YdKhj zG+W{JjkLV>t$wPMwtCGyRWTZ*8S^=t#~5nlVTNi1NhL0HeeWAo$aPi8U0%rmqZwf^} zVJCK^W0p)4VLZ}X0?Xq|5nebdD-@dd1EuiBkv7Fy>1;;MX}yLJx9aeK&(T!L$`_72 z8+VKw$G=#-f}^a=$g(M;dJYtE(9*nUrHZp)pVFu~C*Venjec%v{0m0|^igD4yRmXh zqoyt%X9fOZ@d}D+X{_oAm&KAMKhl83x5m}b`eN_`*$0!m@eFQX3>I1mMXf?d$UWg zF!}lMSrMO#s&CE}_(BV!h{toN+`k~T2 z4ihwmQ2YnxY^y6TzaTZkZg=G4Aq|(+DHY9f0f><*h-FKTd`5&O0@g{n*pV@~Pj0Ss zv4dR$VRh^`a7bo$?!ckh=G=@vgRy?pJeC^WkekaM8k#X+5Y^bITVvkRQK>xLGVZa` znVTIya1YCdGY#m?V|Q>5LZew_Oi+hkKgsShBvYzn9gJs{WNY#0opf1m%F4~ngs{mx zp#d|mWCa*v01lY&$Nr(4=PO+&fy2_9nzCv%j!9FxDzyQmR$>CrE<;9ir)GvUVZO<5 zRBj6IUU#P%bRh`sC#8f2*k!EKvTQ{~BP~UxR-a`vq2lNeN-Q;Vr)GkT5U2mz-#2^4 zPhpscVy`k82;=CQvomrWc3dxZ*-(hsC7)RQ$6%6==J)E{5lYmi4V_|;5 zRlQP@Qc{zyhBQ_cZ7AEK5)vM)I?S;? zWsb`^_7^Al(~7_A$~5&+J((^W|EJ@wKKZ>(A*Uzhjh@!}%?%Svy3SkgXwmxYZR?vQ zpB^6kT(jV$KcZg>**5n1lAW_N?^xWr*B^%^aFL@J;l@GLtd^lsYvqj|Kn2ue7=XD7A(P%P7FT1XC!@-L2rtsvA zFK--D;(TRh<=IAclh;4{?2~ojmus6vNjY^}n$B~!$v#w+jnA8~(s*hon0|w}X?0F% z;sHx;@?pt|h&c-v*4tXyJ#^C87K`q@v&GpxotH1XZT*bo<-a$y{G7ZzVea~=U6y}V zw;-WIyfvZ2k^L|KI^QHW?8$GVtgM)rR;j6}6}F!9)_+%cSVn=)bd+5M)_U3H_Pq9X5Ua_=wq z+%x0MAHQuigccPQ{a`q|tJ#wDg5CMqw=b69`f$SOWd{#`_FQP?mC2FMby?osIqzU) zbnu};;k!o#A6gNX;GUuZ{NPUHC(Z`UA^-{ zeO8}!hLFhpt0&1VqNr-pD}U8)3?C)dm5j4e^^cjG^!YV zN3$fOG3L#l4}YRA?CToV zTk8Fga=16GV(;sQZENa6OpK{Lmw{tx(t}Vj603lnr)2chsCE0tduH@;*M`sVBm=ov zmE51spQ$lY(v@-nt>44^Tg4b3m-34)KXuG7H?91X#cuy_LL=jEusE{*F)G?!vB=1l zhc8b@P};?qC}qXOdC?~tHf$KPKc^A&YhQPyk7O-bvX!mj%9X+GyJ^9ZEm-a&W9qb&hK7nP z-_21K?(rx|rJA~J9&={GFLlQ~-5Od=HO@zo_;u;RS>KQPYEAEXl|w>9Lo1`#-SXZs zbMtK*Mq9TWs|;RnTZijc+&XW|qpjQh*sO5f#6z97UvXmV7R$OhYv-&z^5rdX(~6j$ zn0L1=V5%HwonH3gF+)g;$QgV0b*YFkW%PpilNy}(MS8b4N-x^dtZ2*B0wzVjPD@xVY_UMN?Wu zMxE%3ThrYlWz2IZHm&s}iWoceQ6(*fJQmeUchpHHQ2-BdZVMP%gJu4g7~JYAW#;IThf zSh~+GJ(QNwer}zm4+RzM`u6Ok15ea_cE7Roy5+ClIb`sRsBQ;fc39YNP`dJpp1giz z(j`A+A@|{!^kxAdT8;;(koerbOcFoE6V1fD%7IIINCz&&M?d^1)1_f;(;eqsN}pMMJWBbvf0NnXrLaNb zl~=+vW!#Eo+}d-+tb<_}I%NIeXk1x!Degf{+iGonBxy6A+Oqj0uU_)sib75Kt%~xqK31y=-5=i zg#U%%i~_Ty8AU(a6kEP}F2VUBvl(|DG-ty!6B5LcBz9?O=jlpxbdDfWD$(@rs zC8yy3G0Dk2r2j)xn7(F$dR*_!vlQWs*5Z&XkU`Mb;9REzdm3VVz{hyW+(F zS6{o_pa=-+(a7p+{#BJypGZm}Q>Ys>1AGq}jqDn{L7E0I-ykWJA*?oFG8)52u^)U6 z#1hk_$E2_E_hI}OJx${p^we~g8Nj35lm5P$@lzd1iSLI!jRjr&)Z)S1$w@5hb-UBP z_ixUjgITBI00H4_`s1Ej4j!000$O01Y}VNv|1ofVO@ElG65b#Gpku#(`2F;ftlEq~(oDX`HX> zh0w$RKe6|~?s~T;W#60NFIZOvIIJ7aJpVbp6#-tz;?LY@?(ty;AUKB6hM>A~a6{FB z!r?ghGWW>~&vjB@y_7Gec@w1arNy~wcrm5RqvxZ%7Si7r+U*_f-`59!F|GY#)oLuD zf5yG9&1hHOly<)?)uZMd{7?1P^KMaxe#`BYC@ zn9_#Ra;r9+sd&t3!*MDmIc+!_A(+#KvjKrQZFnOd>=jP0O)Y<89e%!E; z>K)!jCp=asysb`nJDu<=bi(6w!rSYF$LoYA=!AFB3CGEbH>Rr-_s6W#%i{Ng6E^!Ll%a1hSMFow1;)rtax~F<;(5i8;Lh^)1UUEG0H_e*dvkHIozE@uM-{tmt8xoK{NLq(;i4hrZY;ijMC90SqvEn zl538*q+qROHvq{b=@hdRFcrzG5D(csC6RR62qF-~1QdGNaq*rz@eKm^|+*$&Z?T?2eTk|Bmj{=BpyvJhiqp?=yTIxmwopkH60kHayp4UcV| zXb8gEN-l_9v8A(Wh9HDTa*Z_B2M2ZG;f5f@)00Cnb$9d{;=t-kE{f-&aHx#mg{Kia zn}sr0M`C}v52p-4bO28}k*QcY{If5`)1c`4#HJyLB(bIHM5n3}Pi9hPB&Q~1ezA~3 zX)htv)5hNf_EexV1d;f%Xr+}!H&HZ+a|_RCRrzHO;w4!(=45_XPJtxxb#ts}o!@oy z@#z#p^4x-~x1lKq{OMslB(*cgffq5e`ITo|eW#_>E z_iQ%0xKz^G7hQb#+wa-13;O=KMdRP)IyMY1eR#lp)e7OVeQK2aTO=Enw#;67r_Kr? z*63Wf&%$1R%5^+y_nLIQ6+=2l%$wl;8+5h%H~U3nD-F}?SV0K{1Ofs9fq+0jAW#z! z@R#o0RMsO%Zy*)Y`@|TX9Q$V(XZoqdyO;Y5i>Ls{BC;ahQZ4h4oH_iF67!J$90;~% zGjrt3WvY3|Vs;N19iimkc?es;>-fcQY!QW4jA&7a70Mi~&u|KW)=P+nnaVHe$HDOv zyQfGeN_I~8n>6J`CwYb9lQ>PAX;;b z^PNI#4>9~cN=VC*G1}D}ZIV|Xp(M0qsZHY5pdG6y2`y{3)|8_8c1_t@O3;k|fXh9; znIM0GSTTm$Z6k3vm$^N^upo15n-Q{=64C0ZcOtKbG~Gst66KQWaRb$8OZ0d;ty==< z%}ZrLm(#kvcJdfXA!1%iNC;mbAP^7;2m}NIH5Y+unSUI(lLJbcHBDk`?LG+G1b(yI zz<#Rv$C4I*=lp}I>oW@CPNPR#&=))Zpt%6=Ts+==Pt*JL^igGdpO|I;Mxl>t5D}z6 zKp-Fx5C{kaYCZz~+8bCX>k)yvPjYNe{oU1~n=g8R3z^W(PxAe(n=1z-v0Ub!TGi)kJzYIr;_&`+x6swSK@lMW z0fB%(Kp-FxsNo3sOIP0+;JW(O%T7jCi>^N4F)m?3SC@75x`@ZMmz^m)r>_1U8XfVg zuFgtjj{Lt{SEoZQyi~lTSN8A`J>6XfhFBHBYvf+cSOtk`^Ib3J|b8cLw?Ekd8wAR`sH-27Ttc^b}nQ>x0iK$ z2E?du1`Sgr^OEWI!FWWPxoXnwU&!LcYjpc~ST-7f>~L@vygPYatBrcPeh*^O_>T!) zUxSDs1p)#Afq+0jAW-uWP&BHG)b%5~ajXJW*T3=T$P90dYWvG-3E2D45smDhEC?`V@eTbrwiqT%Y3Ri2HGX&AMDK6J=m<#Qt4yReN z;dcB3;*R1!pp}YSYv^sqA>yZRTevIgD)gx6r{54GnZ;Kz3*RcqjtJh?WiC*2gUnJXxIuC;)g&$ zARrJB2nYmf3j+Squm=UWhJE1Z^nac2hi(jL2JTP%2fa!bhwsu`(`=?ALPi-WiWcW_ z2?^l~1Ox&C0fB%(pyndrFO4fEz%{PUb8`NVV{wVUE&2SnT)4#f1^N5}`=)H3`R*Lv z8_AdCOP~C3@Zt*I6_@<{g8x4Ai4Exgz>skOv^33I1aR`JMn=84f!=CtyqFshe8Lw9 z2m}NI0s(|AShO0y|M_Z}CmlY{pF1&6lIKZbh{t#L z-t>~cB=g6_8uC*r0}8o+-&5RQvWfdE zL)ldhJYaNp(oS6)ee`Kco~8S5o|ree!4SU$0s;YnfIvVXP)iW#J7Qoq1k-t2xE&8? zw1sqP{GX`7Cc=awPPd7wyAu6%;GhnMiiW0NKqzG9DEDc{P%W7%#hhh-3^X*E4rwY)9xxu@U%S zbpXXsOB#}$p%=y8gyfabo5+<&CPNyLA0e3t8z*Kdxlznt@cE4FQtn)Z$scA7?47I4 zzbuRK-npV14Ac>HU4iJcAGR5!x3fjJLx`9BGDX682=>0@P*jBz2nYlO0s;YnfIy&z zB2XIdGAhQ*ej_ge7p_@K+4=8yQRrX*qh!-OoK>jbz#*C0xdVr0^Y3M{YrWz4uQ~o> z4fItXR

_=oxU@7@2lpY5+5jCTTj2O}Zw#R|!y{ACOslhL@kJ>P{OiSaM|?Xi${ z#~)0BpTpJnv~gCsdX^FIY15olef`-v&F0E0#Jk0>*XL4Z2%_0+bJg8qVk{_#lI7A6 z6vvu|u7xkoJbP)eYj7y#$|}fQ8x?P!z1V5ZD|OkXTFv%iel>Y>8%h(;lR&I~nt}qJ z=xlRJlprVac{AH(ol;_VSc(#|+Y)~VU;O3TYveJVh@a-*5xi0eo#%~eV^`v%$+-+8 z-3?c2Fn2I<(!5>Hu~YAip`GIuzS(_=k7n@A=#DntwRaVoi|m$sc00V?IL@dye_~Iv zFZXXTfAR&32oneh1Ox&C0f9h`Mxa{ePah|7WreiiT0ehc(}a1;bM{Rt?3${l!A0uG z;Rd0>=^!J51p)#Afq+0jAW(A=s1^^uc? zwCEWq--Rl;V)NvxZN-y4cizSeKLboB5hy*KHy~Q8(b3jF#Xo%KBRP5+9@&g1Uh=;e z8XiF*e1U*KKp-Fx5D3&71pKAp^$&0jul@ID^8Wc69v$8!@!a|5sL^^FADw0;Uh?b6 zJw-G-h`=1_=A06L1p)#Afq+0jARrK^NeEQSF71eZVwYC6OUtaTIZaLXR!eU*8!vi8 z)f;U8`#*0$a8)a;TK)TYItP-*he_}Kp=-rK&(2dvgi#}Z?OAbcjcKMVRj_^XZPd5+{sDzw$WQJXLdY% zxuHTo_XUdx69@ULTU?)2etJDbB10lHfA!Xlz|BRUyfOU^=z;mRfuB3)ya5rR z0MYOnEZqXl(O`B8ROT+)3fCh;d#Lwy(`~@*W(WVb&34Gf?udo!e&6~waKqfE-umWk z;C83$zk1udkcyclLdMf~zb9MYKGNye58-{Ow1;kZcPG4#jZc86PdDy@4N}419^bS_ zve6w25B+N12i!XRymZr-uo!uhVed1GzJaH(W>>)*_k8_d7=t)OL+6i! z#bpj+rSBwZ>O`5Vn=)c1C8O^t#rZBl+n5Ozl&~xB3W%VD<#~k`$0V!S=|X@*mJ%Ob zc2$~CUTk%_?B;x%lP6fckXY&aOf4u&vSVFhb=d6rw!DN@_i{5U7?l<-K=seMPJ(%W4_>uHvu_{~M?JT20H|f9Ka~*f&~Q zypmL^lJm#EZU3a61{tH`bQ7-#4blyU_$3e!2nYlO0s?_rf`Gr)oDT)~nsY&E^r~vn zrl-yl+O+D-eoK7vez|(|I)6##wekvVpzel5=Z=vj^Wt}gh6gwnTUw2l_Qn9lJahL8 zdUKr&ow55zG1t*SMg$841Ofs9fq+1u<|0rn`u*5dLcdq(_pMOC7W}?p!QXuXn~uYf zJk!^`iKYW7MANAgqI))Yd%B*6sb>W}iB5aSnFyPhgr@KX0s;YnfIvVXP;(Ke77cUn z{X)Z3X_!nqi&{E0&0j0XKLq%y={voa%JxAoeg*lL0LNnBk*RI@_@mYL>2x=ZPI;rh zNz~K-uO%jpKUV1f8bkys5D*9m1Ox&Cftrs%wdns#-xm76O8<{WL5usY$Buvc3bR(@ zq)UVJoP4q9olbfhXcjSP{6~cbszF4M0s(=5KtLcM5UBYG_-oDcj{sliyYc#zXVum; za4+6?IDUm8sHZFi&D|CmGKO}JSL`v|zJ}}5hM;R?PQ|uGd5+DRXPstqS~Cj@ta&bH zd7j4|2WK}Ym)nY+wtTC(gq8QqI^s{0`Q3IW zqzWN_k!8xnd`t4C^~9Q91#8OoXNk3sPAyVYwfJ}g@%PoqI)!TS<#WVJM{%_kCf1Z6 zo+s9Ra<0t?x=y`wGTps$;ss*Nlo>A@G-^=%Fmpj^Lb+mP#P~Ajl34upEEr{p3Dgth zQS+Xk>n|+o2RIf7e*I&%zp!W$;8@(58ac^dShNgqEZ(^_c80&Ohz)Qo_OE&T3x8qJ zA;7WNG5buMzp&^W;8=`aa^$$bu;>xsSgf|!ecxYL^bK$n24JMk0xpz$tc?M3TY>Pa~NCq}IVMB;!C?;N&LB6$@zGsQ3WN$}Cy^9!TUOB;!EY zp66D@2T|-!j7@~WL~@JaLx@ah$kH;a=8_wVWHbyVvKYxk$RY9pBs;+{BDW*i0)`XG zEw$$o`4z^-zz8C_z4hyeuP)B-_FbL@q+I9gHV(J(AI2CX(Bd&y3xMrs&VZ@n>PS!O)a38w~~noqZ<1 zN?VqRq+bJ^n%STkThccgjp!L9>zB+o0IN;NWvmR7(fG@&T-#?wu*78O(gc+{E>x0G z6EuZT{0HW2t1B!Z9a)$uLH02QLD!Y`62@x1>T*8jWCrMi9;_ z)NkOB%u7l*9mIT?cJ8H@CcHW%7U9Zs`kGjZF8#5w>AVy>l|Rclr8qmPK0o=$nf z<|_1< zP#~p(3_&!sG-MIZX*O40A;w>Of+tkTDnL~?9je-gQcbF{0{K~wKcTlTrP+RxaRIni ze#cP&jS5Vvg%bz}1Ox&C0fB%(pk^XaE%SqC4sd-)%nxMMz6}ajuMbvz73e3Uv>GYR zVd&Y}y8EQp(g7-Z+)Ulubk@^gTN0DT|3PT58bkys5D*9m1Ox&Cftrs%wP>(mM}!8e z(qLmz&<^(<)5Kq^zLNud)ptS2ga7dt7LEYNB6?WM+f-j4{@BTH3ed?n|6VicgrfLm z>w|rmCts1EQLysRl6iXb3mIf$Rs5!!2yr(+fkylg2nYlO0s;YnK#fJfUs~MK0N3LF zwZwQ=wam2~jn&#B9fqm3_o%PHXDw>}#u@C9qg%f8_zhSa^`@SNtG9xlBQ#usPxt}> zfq+0jARrK^H3(FTR#y@vv^v!adOMW2UH1N~s--vPMv2}~^+p`_#@?TLJfh70E`jB! zaAr&iMmOYJOHM|hyJXWHUi`|Tym-Z07$?^{yVPa1(atx>=nsoyZvKu1CoXjUaf_IL zaPY)mfq+0jARrJB2-G43)b=3JX6T|P%*_lzq=7Wy<^??s7WV#)YbA!D5i(9;o~8y1 z3Z5}=ebx{}hD@6xL#N)-2NB|3)+r@+hovat8WXXRfzu|rE{AU5fI#U-V# zm0`q0W=}6uG1*I9$dwdMTx1P3Oya`t1XznLMXsAywIBwvkJ>!T>L{MJ^-;$ZtE#|f zS`z12xpk4=oV?WM+Y#&aGV5h-R;B2^al|!F<_hm`ajMGPeI>Dw1=hwMEWEIgUc^IY zSwoRWDJ4IJqRC8aJ^RGT_#Fz{RO{Gm9w!&C_NryZv$r#^5uHJ~WNP+5)jDfDcFL}G zpWV%SBl(ip%H>mzU{^KGc>LEDh+SUT&R>~ar8aNARrJB z2nYlO0yQ52WtCYn?avg`D!)h2f$X8M?-7JFVHlYVW3#wYOL3&s28!L7$4ZBGua?|b@gpfFYnRQkflRGKA!b= zgof+`6%iy55C{ka1OftqnvFoUXvjH*LPJ(*$Q@D0-W~Y!yZ+LU*95qRT-wMsk3Dx) zofB6+1}i_LbYM#+flg)-O^2|E9`(n+?!8cr`E#K$6MVuK2nYlO0s;YnK&?Tb?}))! zP^aYRp{wB}Ho6nsJ@|ue@HiegkAt&KcXopv!2nmmWiNcz3(TR6;o(z_`T}laLv#2x zvPWOI4e!8pfG%f>GhqU5dMCk#H|z9=INa?{hMVtxI0sfBZzPnLK0XY#;~senXpwkL zE_{M}<{jZgow>O%3waaa`38+gLKyCycLn?L#-m{;mX-*OSDQye1S;4mP(EV&SQv^q zL_^z?;p3qUL%YN16q6O!;s$#X+_md~74~3hG4SoDl{bM6H`?36zUR7?LJ5Xm3E`oS zPlGf(-P{>wo?Ki818{>r33}W;{T7J8swcqrj@C2aB`Jp~Q^(JMLd-W7E*tiJ1?<6Q zCcwAGGZnBBb4Z4@->sShGqAq#@MzMm`OpI!6b)Co3Kzmu%=an?2HTyGfc1@o#E`m+ z;Q{>F2?|f#z8E6#FiJ8+o+-Z%7GWjZLHltZ=~*Jd+Wd`9(a|s2UCz0O*=Y%YYP!pr z-JZ|Z=q80Ua{>7G+a2!#Sn{8iFJ7nyeXTq@p-w{KkQ|*iqHy601Ox&C0fB%(Kp;?a z5GWg;H({mmlwr~?{Lf2nYlO0s;Ynz&{58 zWkuy8?=5Wz@LkWhcAv&hX}V3_GuvNQ)2rT6)1Q8$rceK@rYHVSO}}2BuO?AwltE3` z_OAzOzxMHW??IEv59$xH+d*_tb61-SU16IjR@ewW;R^%=0s;YnfIy(uARv7wO}@=v znaZ1;Bey;@)Py^!CTN6zaSL;JW>)6#%>tlCC@+~fl)9PY-)&Oi{ zF5foATI{shiy?%?OR74c-ByFa!0z`jM}Bx3r|IvLne>bMWeznBGu3p(9cnu2el@*g zm6|SFtERhcRMSGER%`fW4mBOJR86m5sHTlCtLc!HYPzcLasSgaYBG06QZo71O$RPi z!*&P_o8S|^KtLcM5D*9m1ZoWe=hU#HOnCUxpBgs1AH*E_Lc>;TpkmEhjYoB_S!*?H zvJ1_n7~qrt%T;zCb`AAP^7;2n1>k0{;&QiD@?g literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_flow_system_base--summary.yaml b/tests/ressources/v4-api/io_flow_system_base--summary.yaml new file mode 100644 index 000000000..588ba8b3b --- /dev/null +++ b/tests/ressources/v4-api/io_flow_system_base--summary.yaml @@ -0,0 +1,56 @@ +Name: io_flow_system_base +Number of timesteps: 9 +Calculation Type: FullCalculation +Constraints: 536 +Variables: 454 +Main Results: + Objective: -11597.87 + Penalty: 0.0 + Effects: + CO2 [kg]: + temporal: 1293.19 + periodic: 1.0 + total: 1294.19 + costs [€]: + temporal: -13898.87 + periodic: 2301.0 + total: -11597.87 + PE [kWh_PE]: + temporal: -0.0 + periodic: 200.0 + total: 200.0 + Invest-Decisions: + Invested: + Kessel(Q_th): 50.0 + Speicher: 100.0 + Not invested: {} + Buses with excess: [] +Durations: + modeling: 0.95 + solving: 1.54 + saving: 0.0 +Config: + config_name: flixopt + logging: + level: INFO + file: null + console: false + max_file_size: 10485760 + backup_count: 5 + verbose_tracebacks: false + modeling: + big: 10000000 + epsilon: 1.0e-05 + big_binary_bound: 100000 + solving: + mip_gap: 0.01 + time_limit_seconds: 300 + log_to_console: false + log_main_results: false + plotting: + default_show: false + default_engine: plotly + default_dpi: 300 + default_facet_cols: 3 + default_sequential_colorscale: turbo + default_qualitative_colorscale: plotly diff --git a/tests/ressources/v4-api/io_flow_system_long--flow_system.nc4 b/tests/ressources/v4-api/io_flow_system_long--flow_system.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..12d5400dadda988aac5a3d2a86f4e6cdff286882 GIT binary patch literal 161311 zcmeHQ2|!KD8=u=kDhY*1o0288p;FRH%2vo)Qn$KPH{CWWJo~;&p6wxfmdcAzwv;7> zX9?N2$eOK%`p=v*Q{CIW;XTj$%M9J$ojKpknfc9}bHCZXncK(Sv7vlRc_}$LKwJfO zn&DDRkRiU%cVAxmfIjxFQVpHdrF57;X?uLl*^K=XX3F9%?3b4U92BCgj6RpPMxOxm zW&tR^X$8MYgL*&?$N=CK8X6)1O<~Yg7>;fprQ_-89pEJpczWtsXz4fx@FUzN3PQPo zItE%g{`{~IfhXVB6AFZShVlZr@JcY0Gwf{Kwfgno5NK39yealcvO-Aud&0+> z4dDlVWffM*!iZmAdjmbW0iw0XBqdU5mC3iOjPaHAB{t?aSC!aQzM+=B5dUvhkTc&u zfEx;*V_(>!L>?43_?qzM3Oy>-#9<}z!$QCQ8DpYWd%`OH)gG*>a6Fix z-2h|!42z2duZl#8`PN6TH+-Reb-h*!e`~G6h}G&8`>NF_Nf_2A{QAY(6cw+kHT>F> zT$7Tcerqj?ru4-c6pip5YR`ceBnam61YtpbVjfJ z+RU5ti*;Bt!Z*}nZIQpV9&4s0t|q_v!D2}I`bVpp__sY==x6E+byJo0*Hujo`ERJ1 zTH=0d#nebjT)jZDs@{<`Vtj{3%$X|?Fv_FI&z>zGs%jyK`AY2)i^8B#e{M*iSAZw{ zJ>YrsxIx|%$y=OB4Zh}l!`erC^Mk^P2**(~AvG2!rfjq1d|k=657Lq;ebuF6{DRaG}EAK%y4GuSJ{E07xs zOI)*L1A+$l`VOoTfOo6@TPld)g?jsY@`IR|Ogj)yDEyISei5r8ApO#p4>c6esxS*J zrbB@)RrXyfHB*?dA-Y29@T;pL)W2F))Y>zstd&szFTN**WdBaBpnFus!?hBFN@&~1 z*&V4DA}!ml&p@F@#)?&Aq(-Y|Bx-Hc+yJN-h48$^JrlLYHbPnX2ag1!Hiywr%!~WW{m2x8o^)LV87yrgDnOU{9-e$F8a+xv3ID7_HPpPFFw|! z*1zJZt}a?t?yqiFVxMW)3jW@kwzhWl_fq`2cQ->qH2Ycg+g|mWM(w(`ytzTu*Bk!Q z)_jGz!5>pEKjBVkr8G>{+utk1k0(xP7V{GehkXM0UOr#@awqqJ??W8(iw}>uDBsX3 zYLEVJK1@D5!M9Qw7WDVYWaEA#og~uVCbVV(|0bp0Ucp}8ywHhoz_e-zff;OsBL}3W zqa{eerY%}bPo{#P_7e)nQnAuhnN01%LaDK3{>s$E3B%Oj`z@3QRe;*EBvuB-Wkxh% zTwh+$7gDH25~YLk_I2q`4+rJZa1b6r zLgPj?t4&x6#uq#2is|+W@~L*S%F*|+UIAV~-drD83|1>fuU$C4%?!Lpv179}->|lD z036Cy_I;SH7YgAVCz28QCw~nNcg*0ZpdJq}wIZU2tGTgc<`Y z2`eBBKJYNE&ZsbBLoaV6LARn&~)DrQ`5Desx z9S6G(aC!uXqFk{({x9bP$yLk6ct0^YfHI!kP7Z-Q0qTg0%L|!&63I+u7jmEj%-WYT z1I4Q6#ogbN4H02vU0J_YRyqh44m(S4$hdx#Kdg!Zq%QhR0JH3 z3JRCva5!4bq#*zVr4`XMqB5MLWTz>60a+y!BHaP`*=b5Jm7QeF!;_2-C^6_%)zRD{ zknRr1#HJ`J+8{Y;paK-(AMotY4fXc%HMQgOLww-d98U2uw??VJEHN2`_huYHh2@@VhW&!NAY(}4b-Zgw^lj-@2# zm@TP`CL4D%NrKJIa>qquP%^C0D}DCrSuCUoBT2zr%Cd8={cZX=FqxEv*HI?XJSv3A z#f2vw-P|0&tY9`GM;(BN=ms3f?*nQ0CF;yJ|H`Uk$U*VHuBzmkpj4$fuW%76XP=W$ z_|NB7E+0~WI9G(VirRn@%dTgCyMZBm_!|?-gN+EyZ0o>3L=zrZvobaaVp^M(X=n4! zCIWEC!{KN$~0}_ z6Oip1droJI(QJeHPWCQICr=x@m@m3C=k%62bFRl`?7H>gWcf6!DU*)AdY_(E_~K5P z+&WcDE1SmUUAG=+9T}uh9hHbfWZ*e^$KgpMmi?}3y>q+9?5xtxr=)WE z(;Ke4@18Mq>At;<(iOdql{VM7)3zY^;hNmPa$nwg)3oyt-RArkX%p`pnr+RgxV!d^ z6t8jQ2rubo9Znx|(@#tExLzJQyGLPvi z7o6RxkyjKv#do;v_%2DUTKhFzG^u7?(eZTL zfkP*)o@i>#lV6|I%~k!~?1_8Un>@DF)eTacH(F+wO1#F@bLXU5TV9;HVAcfRfE7ty z2KMRaopx^i9~0-^Gu{(ozELT#Js7dyKvinw;ugIQ^|){{XH%AY?B-Fsg5RuLGj`rLUEbP#snpPQE5@unEu|Er z^jgh%=P*m76@wl>eCK4*bqBv8cZEqycaOhvZ)}z2Nsnr(>vgQ}z^zS2-fQ6Tc1-Yn z86~;vGxxXu&B}O@%I{e-0=9b`Sn;Nt@y-bg+ZD@Sb5*;Y(sIvZZ?!=d%lv{n{Pn)C z{p9|;lX{QbB|J^gix zPsbT)EqlKi`De3Gk6Y`TE4u~g3>-M@p23by!<_e>y_OKW^~`T_N^a&uZ4w@4<+Ocq zsC4|=(s{APEn;1I?dibdYBsd6zShNUOz*@<`;DW9KGQ0c(wNtEl}Xg<6D840)`UKZ zo?#f&uG7Q&oBuk0cK)+D>t{%hlChYoV|f00+zQ9b`yX@Vw8J;)ZqMHS*Qq~WUply} z*<$%=a)0XhCv{ypxSy}JLRWJ~=bUpzk78dR)R^w5t8U!G&&B%T zR;oqf#Qj%iXwI}>Gii=@!tp*KQsb`O=rhN5}_ z%Lvboe{F9zUHzq&d)$rb&*HA@%^GH=H+g=G{e@4;+#he*w_Ud0-HRJr%$)bQ<)@AB zCY=si%j?)g_E1+1muvU)AG<0R-^hwNa`DoLQ4jTl{eu_F-@a_*9%z@f?SXB(+YdH2 z?A2^bpPt;DPFY$Bt=~S2AAfdt(Y2=I&t8pJj`Cd{o_N&ENk>Y_TJ3IGk+qp?>dg_SfVx4I=Nm%Sl(l+&F}wQE@ic% zbxQlpYi-AGT_&}(znjJQxppca#)EwOV{@}I;pVfXU(#H`Y+N4d|qt!aY{ zq{Clp;$IwcdVS^2omCZYC*>9%PLJSyyzRCr=#5RNm2>>F#9QfudKORql$_PbxGwf5tx23axyLBbiZj;^Yj4l>Omc~1GSSi(;)2rUJtVOM*kG~8` zJ#zSPtNcS6%g-z-@13+TWqn$~o%NviqCSTY9n$qYzUG7Pr8eNg?t$v7G_CgxY}Y>^ zWkQegE6Y0FFHE`oa#i4>1JPrqzgiZs>Hgm40Y#%-0XWug!e7>JPTVm&=UGtk;%Gi6 zUH$0Y1L;TawZ8qiqTH`S>U`4{1@Oo9I0yaGPSdK`8`P&42SlqifNDXchqsTqY%w_5 zu7&L8F)9nD4KkFU1(m5e%{kiDewe>GZUIuppp$f8avh2gwXiD~Jq~Fh04&3ik@70d zC@zXfT_!rPJui^wBdq;0(V(_#37}x5wu^dFtcIfv1yI^>m?I3T&RPN{LU+cQIn9Wgc5;E&H}iwH|Fi>7sB=9hw!|D z0B~H`d=R|GxJDQ?Fm}QSbH_Mmj3Y4eFh*jWjWHJE7L5Bbp2Tj`FJ{|bzoF(zR=j`0GY>YQCKEqgoQLaAAM{|sAF?PjhkI@a|Sd0@ePQ|zw<9dv{ zF&@Eq4&x1sPcar_tdD!1%`oa=G{tC#(G{Z?#$b$7FfPKl4r2nw!x+zEypFK|<4273 z;4cJnsu*=KnqaiWI0)kyjC_ofF)qZo7UM3AhcKSOn1}HR#t#@}@tA}P#x@v@G1_1p zh|v>c5XKmc3ox$1xD#V4#?u(DVSJ47Jw_P?mXD?wbub!X?1gavMh}dE7^5-H$M`$O z9T*Q{%))pT<0FjkFv8&s#x=pHjnNRJHOBrJM`H}Y7=>{j#?=_NV?2N{6XO+(4>7*Q zDAkb7M`Mgy7`tHXiLoEXQ5eT#oP=>M#yE`IFs5KUh4C`R2N;Vma+KJ7C}Y&b*cqc0 zMi-1DF^QD}ywrKHe)4Gt3nAqOgGaLg5H zV?bI;D%A;n0nD&0icAJ7Wh4$%ey5>Tc6_Ug33GRFp9SV~M&rB*%)pxqJMh*BD5Ejl zs-adFC%3^s4ay?on!`VoaWuw^6((3l)*(zaXTPI|?(?k4AJBG(RH&vRw}06Fr_7z~ z**ht~`=HTcM_xd{P_KY6u2`96$8* z@q*KFXd?`oeTY$nB}N+i_bD+d{mjCq=f6Lf=m)=DOw0@j(8)gLd)W@|V-Fh^ETIBq z->2P_G`0>nz>XCHN_`dvqOUviC$9gBmM&>_fN9}aA)WeFE&M6&SZKiF{MN4$5Y6p%P06 znF6`DX`HJb05{QNzGTV$^hHf3e*YGLZrN1#c`i!1@?A1ekIfNbT5*Vkhrt5IMkz$; zc=@4DAl!=t7ybB!@WaqvFP&h#zPOerrJ>^0QDXKn4e^GlLbpV>BWi4it~@x%wl%}Q zGZXdgZA}f=GGTzcP5dh{j;?(M0;E+-F|S(q1v%2t0`Ox< zrjsgV$nQBu@&;gIOa6r2Dx4xJ3vyZz_jYAtNP$Os8Yh|eOg$vm2wwAPSK`Y`R=sB; z>n(}@{_R}{WaIBu!2uHu%$cd(p)z=!~r1^=;W3{e^Jf^!wcw_dqHNu&BPBHmmR4Osy zj5;SKTvbB)%_M{)O$RyAaumTYj1aI|q3IZ=7s>}rJLN%73!aGR_?<^s_i-d4P3E@~tuE8f32gAq%O9CiT1}FoR0m=YnfHFWCpbSt3C<9;3 zz+hJg2Q)rU##acACLM2)ls=LU6%Nk38K4Z*0R|-L3uHW4 zw1|Vr04Bab^#xIesGl-G8K4YM1}Fn{j{!;g0-4_xEpY(V7epzce#!u4fHFWCpbXS` z1}ax+GYbgOs>5$H1TqKf50&!~KdB**hN*`Kuw2}%Z58qN-)x`h$ z-V8;1b~W*L*bm``)~kxy4*~Z{Fbi3Qmw-obd4B%Le3N14?$B~kEepWE?^X%a!V?8I z2T4+qO~{&9wn8dD1Hvl5GGFMBnlK;KM;V|DPzERil!3a)zz^MAwjqk8P*ffK$u^gv zZAV?)BHlAw2bsMz(wtPXhXU^zQcOUW6w!7zL$o2+)xpuh)uF$ggD11~w;Sw>piMhy z^Q?dyTD1q*2O2sILN+yl9J~YfWw1f2gAy+z&96y*Y@5ov1dT&8yUw;37=k9GE;m z+!8E@nKA;=lbf~znQ%voAvizFwiQr?ZLA|ms{gSK*aj184@P(1X#mV%3SB_+B_BHh zXXbA4(fVD$1b7P*&@6ws5eS7{H8U`H^waJjANCncKwt+obI==R(gdt8Ze$D4rmyCp zeSEnCSP1WC4*u9E+Z!Z6SwoPueYi8&23u`caMf;>3qS@kj6wUT)&0OECWYO)mj(h= zDBBgNohu&({Fv;Fw=NhCknxc&z(Z4YBv56F`OwMR8>BL!(hF{RgYGbs79e|TGanGb z++w@U-f(ahK5!jD#5~RW-!SLY+7Jv(|#Kz$F z@T-eJ2E$pzL9G>FFjI;H3Vq$#D*M+ynfk8>v%@+A2%ReTLSkMaORO6X!5Y5+;MX|# zXU-TtU@o(@4|!yrJWSMp+2_jm*&;*cSjSc=elY=%z|=6=!-(4nfb2a4yJ1ngF?O|>*s8EfP0_28 zbxzRRp5cV?vlUME72+mFwiAMUC~O8QSB%;<0V@KaZ9P3 zL1Nn`*%%1=LW+$6*$>EUN!JCHt5&0#Mz6)@7!u2PwTYK~e0D6hyg#@>SN^!)P`QDNZ2J}` z8u4EGPAPrq`__A1KU>|mGR3Yfx38LQ`>1EH!EO!%&!3leNY`^6V$e%jZLoh_8Q2+Z zGp*U%&3(GMPAnKTx4wn*kkYCA6j@!}a;fy+)h1?IJXv77?W@bGl27K^Q}7fJg~b&4@kD|q4Lrx<44FSBXqO&aoZ=BU{S zUSGeUw||~mKl^F7yryK2-Xv}DCL{9RA90HHmxQKV8X6yM+T!B%H<3|?3zg4bIh59U zQ^xAs-3rtS9B<_q1~$r`+Nd;nQSqEe_eNQk{T-d=>?u_0-CC)hQOgqt98Z=TD6iZ2 zz&9^q&U~X=IuEp;Em3-&RUY2RLax{42N#25UD`eSc=zg@aQ#hB!ltFY9Huz?WY3v5 z({jwR-rVkW^33T~ddpf)mmi#{*m#!QI0f4?4foi#lk2cEsotNPrVVN6YmqUlL$kQX zDNA)MTxYjS*xR_@?+RzaF2&8f>U7I^3Zgqc+y3r5WIIhe;l7}(?XY@F8>Kf}Hpt8QQoW8o z7cI88Y_pv=_+-p6y}*6VPj`^FTQ@La)3x|3I>YbrxK0n2EKkf-UDQ@4XGjO{JzM36 zI4-*}ZThA^8|<2;3h0a2f4l`8t3M>eY-JikWpdc(48}~ zT}t|>#y4y-Mt<7Pk;_X=;{!U(^Qf?DHUvI%Nq zx5`=CWGdX#oo2NE?DezF8XjLb&{bvMvKcG)#HTz`JrE|BskJg-&n(lvvF+B5-k3O8 z{ZY>~@_x37Lv=T#IcUs^ZI<6)X(u`J@iq?a+XkNTO89Nez&~3!t{l-g>}z?+Kepu9P*i?GP3c=SJAttpPAKl#EQ!f ztqePG^}4oM+rWP2B2~Sfjq0z+8|;{(efdwjzK_T4nb5aMMsmlN{g+Ni%?&$cqJ49d zrHcGvoqCFYwx4;r*@CtM#>#5zo2~XAsa14gj7BHdVUY7B4Q(y|ym0mUJQXlZrs>T9 z2d+ub@~i=-38%v&Y%=2BTsZV*^?;0iLk0%kj`4q`>3Hhe;{1=F&P;D)HR1KU6A!M% zYI3@3o-irY02`&*+OU92>kPqf-qu=Hc+0?nR}JW88NO(`pE#gBZizxjNl z-1OH4_j2YpfA)yKVDgk}`738nd7V~vIAWRSsENK?qd#2gu_5Y?_3d}NcQs0ndDZY} z$=fa)KHa#t!Mf;j2{>AD>_z#FnOmH#(~8dzdHpnZ^pVp1i1j_K-zKiMI&k~L@G0lc zy}B_aD=^|g_lnOm^{1r0nOX8StLNmhdz&MU-P(|N^z+5C2oTG|JAKe^}{G+1Y*@hK(9ED$X-*gSAEX?(X4-ZzW~trtVmjGvH6dqX+lxKa!NR z|H%HN6GMkBPTQ&)9&>Bt=pHHQlcReV78Yh*y?S+M@+7O2q=QHHUoPzD8Ga&ssQK8y z&&6llT1CIjUY%UAQSc=E<&LdA{5&c?9opK(Z@`Af+ln(Y=RVNyuWp?(DeZ>o8`D?M z-aQ*#v3cF6H5F&4ynKFC@M)FD&Fj~1TAuG-oVlZ^{($vy8c$AFytjToKrjE{X-PxO zmA}6tKQc@7g#+jivoIgjM;V|DPzERil!3a)K&`{1N07a}?>S6L#zY8y?_ttOeBnAu z@6>sQV;_5A3wTklKHufYz`+s5$sluy#HJKSh716;bUzs%637jJhsm?Y9=gD9>^XhC z@Q4FPhKvUph!^(dMT#*ZN6O5RfdeCqYb!o_<;iKx@o!;)WDJ=j0|!aIE+Tts9T{xq z$PnJum;=k0!l9E&J*x`mG?q=8BSQvLJBpPRUp6v~&5<6%|gdyCk1!Xbw;09|pS zqH5rar6d}e;`~B1Rtt1qOQMmfP>gVxkl@NFY(j)NCzL*y2CgNurSH+cu(i5mWSM zxooUjKY!=~q*g1~y!`MbC*Rk)HR?A#YPu_`)}D1XJPzx-_N+;7jUee|lIkU$N8%@a zLgFVqH{vHfGU6BQX^}^jT;Cg%GhR|pOVZp!Hhxo*H0ay|VS*xMfHFWCpbSt3>MjF6 zRJ)wJo+a`p*Dg`7QtsW-lv=gRd;l7LSM8GYWeNUh?UMBH$g?nbeE1Vd+NPv&{nR}q zc2z?_-$g=CB7E^^{v!ouThLH-t8Fc2nFf{}tSQH+xTP9p{BI{DEi|enw+YFz1IyzmFAv zMk)tV%bbx~^LW(u1Gs7MYNUs^kGgCzIN7d+?B+2l3#JV+l%ECnlFn()(UvrpP`S4h zvqnG`zcz^EZ0$O14sq&`@qE8~NMGcE=Pz z(MiRZlC%j;2@JSl<(6Eg+5};OB4vOwKpCJ6PzLHQ1Cbsk-85vYw26b3@~@@J22F(~ zw31>MY>=c*NLp6A36CZc!l*hyn4m}*pbSt3Ck38K4Z*T?YP>1!?v2SVEDqfmTzHL&<*G z1(V36LI3iEk^f0;jK52310Yp86)z7&W+IMeO`a`m7z0`gxxA~ZDo3U%OBc`&46&-;%z+mq2JF+Sq)>Vn#*u5GljLvgPdsWR*~e^tYc&a{?15`up&cEd)ho zWA+;K>%(m0WZoLmQc^>iUOT8<C6N(ugo(`K0k!_65}p`k(E;PMJd6Bd%zQLe$dA>oZG8H5RnlmW^BWq>k38K}Dq zd|@4B0Y0unl3GDVFGUF|Di#i*YK1T#)JGYh3{VCr1C)Wf$iNSs-;yt3DMU&Jnj9hP zAAYj=Ep*-i{}cZa%iWY8Vswi&bQ0K&CGaOUbn<=Y{m}Y?z;V$?yX79*lk!hzuJ
` z<@Lxq8R%u)*c+2y{Lt1d(^`DZ{A9mdXeq|Qy_eQu8X5Rr`zb8&@(z+VYQ)G@zDZdx z{iF;~1}FoR0m=Ynpbjzcch*yOCP$2m@Gz?ZRvvIT)g?p-qF%}XWq>k38K4Z*K?Wi{ z9$hIrciUV2*aRQ{VQqK|GZr)+vCOTBcihQzRHl_jAmi+?u34Fzn@=1V`{asI&iUS{ z?fKjdmMbGd0zc$#S-tdRa)&7Hpqz7;j;I(tKJ~Wv$TBNIM8@qnt0MRC?DUByT^=8{ zT)#^vXHbcD^T)CI>sz&1+_5NRYu1hXw^o3i?%=VZ3gordd}&( z=(L^poGp#+_<33v^>!eskw!PMS z_x(??o=Fi`?bGgWf3m+IHz!rM>C&vF=0=+EHfc-CipuZKJ$>(1ep8b_;B5+@W-o|n zmetbJ=R=FJPp3ye6Y}xkvm2pFJ7UX@n zyU8qKoNAWh>W(p1rq5J+Tlu<9$)29ReTc?m-}$37#?RlDTPnyr205RQ+KIVK?DYuu z$Sn2YC(Vah&l*;$rCD-QLExYAu#W01bau%qs)qHYBaeHr#tHxz74LV8 zc3u16cyQk&pv;mU-7Ls6_3N8RV=(;oYQi1i_IS$%@KDeQliE9@sGFGwgcQbGL0{si$8yAs4NI>$}yJdo?efCKT% zeIVah9F?rSRoHGvJ$U+$D%XS~Lrmc5)G!oL!*B;ll_LYs4q}|9keLW?eo#0!M8M+* zdHQ;Jhw?)V(_65ufFnaTuC*45A!_r&-HFI+;X6o@XYF06x)FJ8EUzV$ewD2YK?E<< z+uxHP^xG&Bg_r}VvUL&a&)T|p!6h_@5G^)YvCtb zp@JU9wr5Us|DoKyzg{P}LoX)d0Hb>lpesvc3&r{XIMs2k0^qFX06+A5oqV(`^n0!R zG1U{k6P>LioKvI>PzERilmW^>-DTkKto$*Tu<~bWC#p---IhX2Mj4=E+u@hb{AQ9pO)l73)oJnry&d{Ceon zhiOMP@Fp5*KFY~H+wgjiZI5=SuYN1&ms#Za(9B}b6UY2ENfsd$%hgIu${yvNE(x5R zU78;|#JuB8!RVK{cBx&S9W>|rx@N?_S{g9#&e1b>2A%AYs;}>0{Y=?;vGaq~xot9^ zP7IOh`t;E?_1IM*!9lqx+ds}$-{5Xy)ihb}&XarUP0ahxDIDL}{Z)PYmtBfNUM}+3 zJ8$ijhufo-Kfl!cY_RD4gefuI99#Q6o))c^_$aFThKyGm9?#r&$AZgO#0?)LHb<1^Zt3$8&i5XD{_3WUGwnWHyHXKd(X7$Jh9$SkPItf5-S>F^j1T3n z7ZiI}7->v-qW&N;t8n0&u1%v}UdXIS)D}c|RY;lEd(u{t*&i|~Bl@^KHKU5QC@0iU z8K4YM1}FoRfx6DX7pw_>t2$wZ*8&mR=o}znf+A&rGC&!i3{VE@E(4PHdugeV8j82a>opN*qvH%x50q? zyn9(Ts-|<5oi;WZw^4PHZJT#9l~Ve|d?p%Eq=!Po)>S#yIA~ePl$U%+t)>1a#rh|4 zBRzTqkAZ9_)@1wAyI%X|GF$`jci3M458@`kgEWx)JNG4dCRmjZZy$BpVsNruwN?d} zLeFW=(XPGKl)d$X6m^76uK?@9my<^I&y3>3cAf$z%oZaDFc)N%D}(Qz<;ta;Za|9ii2)Uz#9|L!M9F>(uyPv z?ifgD2cC3rM*=f6m@+^apbSt3CKFjp|x;{&}JW zqzq67CXtgZz(92s;4ttOFH1W+SVh8B`oqlUeJtP%>5?tuJwy~$KLbV?wQ z=44|1ft7_pKdAx4aXWL~+YWZ>59$$nd7x2!0CYiK2r4K5+9m$1qNx4;uho`p82zkM z4A>5KaRl{)#Nz0PMUOFR^3@mP4-*Aa)8t2IJKy!m99jXam|2uNm}q0noxG z>yY`eE}#SP#xlYki8qzGS~(G2z<4{6tIZprlsglz1@v}-|FGjRUPI!IgI;5pP3+D> zZ$}t_ovJ(l-GK@5x-ec-;++n?oj_OO-3Ptq03W>zz*ENCom|yXKsPcY-oemo4*y}d zknvg&Zzl8_f*!=Hst91Zm5-D&jsW zIkev?jusk58K4YM1}FoRfjZ5=57o6chSdpOs}*b!Z96EPlB8=%T2Jwq>RNUBS)zrb z3{VCr1C#;EfH($NU27VLqk^tVaX1__=!6_WX%zrN8f#fsj`^D^0MiO+pcs$+cZ7qG z*cDGvXojSvq@*Blm>38-Ko&~KHAQ05Qc|8%*n4O}K#^6|0h(fvmIf6PoT3dA6{rA3 z_y;`ub3?s-d`<26{16{rkXI;Iz|2Z86BR&Lp!p7I&yT}j$oCwN_)ld=`g7a|n7sv2Sa^pi3`8K4YM1}FoRfx5%Mf1kJcNt){x4*x>b_CWR zDo1;M()G2uC+3?7AI%L*Wd0;1jUz)AO)6JE99qDe#O=3~RYEy3?QjE8uP!2bJoWGu zM7(|N;_T_v&DRt04pAfIT34`Zgj$)H|F3Rzx%di?jb=Z^oGL!26^TLC zl(ujS=JLG#xgqdS?@)iw0KS(G%iWaYtSDvz!GF?|d9sqt2kpt=o{R>piNtwxdP(ZZ zNZKhlmiA<-wPpI1GC&!i3{VCr1HT3XtoCMD+bRM{I|rH717zpmSFIj!+aO+R`^k34 zAYCfF)shX8bS+6MHh-hK*01qU(NaYe9y z)Cs*)3$`Uwy>b;vdZ(ma*;}aIS?wvLUnv8W0m=YnfHLrFFz`clt?tQnLf6uUO+!s~ z!T?FSmZUMhG^%U;8V?mMC1rpzKpCJ6PzI_o@K4A1uGf(i8Eg;qAp=jm#Y0PEWf6u$9T2Uz2*X(ubzVY|d(4!1V~*4%3rXWS-G0NaWg zI6VH`E)We{lp*-2cX&5Yh1L>GLC6`Sy@0g^oBDgsK9CPX&A)O_0UNW$R z_8Uw=`c5Wb zO~&elCuV^-SSRKn!}9cb&=+RM7(8`Nyb4(3wTGRW=V9x*6Gk}R2D_o1iEbdhZ_pDE z%;aIogmX{9aF~KM*lxe>8IXrO7=Q^ETNgnLPfNu;*?>?~>xlQfZx5UrBV_-5@&HsmvM|^z95+}M+ z{3ly;qz79}nW@xTM>jVIFbn^7AR8wY@YwLpJMxg-*j#4ni z=fI7w58(3%IEEa6tSbX$^>VWP0{SYX1<8^|IwZ|1-J>HNkU8oo1C#;E0A+wO@M|$3 zyzdh#Aonz~r8zR>912}=TL?w>R?a`cDrX!Sa$dz3qOn^XO|Fq>rkL}V!gmV`s@k&1 z&m+R*)Qh&_g+()`cb`Ng=VN>^BAY$02P7gnNkfy|G1}WJ*vp$2I?}DP(<@$5|JF>(Yi8^ zydYjE&nrMkKCFb5uWIAM{*rORer~9+|6+`=fAMT#KiTF>(kJ_PiJ$DkC4REamiWmg zS>h+VV2S@a=be=#4Oh}!UJ2E334IhP1C#;E0A+wO@XIjpL&qr_yk-@mpM0DW9i3O; z!ngRRpR%U%fGGR5-Tp`@x1nA;TTC8uOw?As+e_>25OARRn9uFUiwKH zpbSt3C6w9n0#3#)}Lcb{~6Y*AL}xbUn0$1TaUvAmxml!}61@YCua6 z`dMV~t`iz9GE&~#WI8-!5V;>c<}0cJlZ7&DZUAU=eQALt zjabquh{04NCiGFH3{VCr1C#;Ez%RqV57h$SsMiTC5S=|!xO!mEf7+WUs3X0JoMOYd z>;v=vrV*1x-sEwfW46~ol7=j4%s7&2$b>$MlmW^BWq>k38Te%w_@`Rl>pG(4O)@^5 z@2ii~WO`r%+Ekh%2!yr>0--4aUtW-iL4uLetnSB=v8)*j89Wdh zYoRiUWrbrkt-KdE)C-$D@RK1@J+V|XAt@i8fHlI9t40K^v0#;@hf2E*0epeLGngB~ zn0ioXMPl^AF?8HQL->Kw+(>UOBL@o#%|jshO8XGndL)t!j->C%4GD@k86OhJtu^M} zwj`!4j;Yn#OHgZ+>4qeV9m%0H-#?)C`!qIYBjFfdf`8g$Dy}0vro7*uLSt?9qVF}A zq(Ms>bKXxi=r1)gdYv*r8K4YM1}Fn{j)5OK&U(s()$V?B+Z2qI>B}qkvfNFp?aXr( z0Joww*0RQy4|)Mp1z=hME$GTBp)1nN+2?GdDxUIHXP@`B7SEwHsF2_k8D(D@r~pOy z2R!?8L%n@`P3`#n5Fgkb3grrbGTi&e7?cKDK#Bt$Zs!D%SJ57t{RPrM0VaZyapVOA z4D|{KHA}&i8UbaLlD$(uhyHF(1NwWqIJpf5YVcmj6n=B~hqfe& zO9|yG6(%Dp_ChSq93{VCr z1C#;Ez%RqVf1(v$?@P5pq)=CCg~(W1f%dYa|4D5`4W+dqR2yAjZDj1#UIqY}5+SdH z`-fIIe5-~H?5p=n0AsuarH6V8)KLZ~1C#;E0A+wOP&XO)PjtFYW2sIjq|+I~#u8zkWIgMb{mUVZfen$bs&U@B5>s=3Xk)jaTPBXT?*4j$qyd_5pg z*guIc?0>OT*zden*q^#p*gt%Su)jfqu>Z+UVgEC1mzab`UL@aGY;slDU-Vko@333g zpZ!kQzw@K8zjKkWU+#mjKfQ(U_^G>-uwT_p*#FxoVgLX88GT=}=PYW?PSkdX=*~oP zI3i(@oOww6qGQ^k8aG+1Pvkdr(_Sk{14nC%#5psnfs3PshEWD61C#;E0A-*~Gf=Ar zZYd2+zN-d~kD3DnsRl0GxTpp$+#?V@CHwzf11B3{Nv+N*JuWRtBiANEBIrXkauG(T zmoh*ZpbSt3C!*0*Zt zGpUA7=%Yv(pbSt3CSYV3qQij)D$0A+wOKpFUD7^qca50D1kzN^MgmX#Bv8oO{qqZ<3KrLl_| iUpJcb$B1v$;IpU(FZ>WuA7y|tKpCJ6PzHVh2L1=zckqM& literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml b/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml new file mode 100644 index 000000000..c4917badc --- /dev/null +++ b/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml @@ -0,0 +1,1978 @@ +objective: |- + Objective: + ---------- + LinearExpression: +1 costs + 1 Penalty + Sense: min + Value: 343614.0490061482 +termination_condition: optimal +status: ok +nvars: 13283 +nvarsbin: 3168 +nvarscont: 10115 +ncons: 11557 +variables: + costs(periodic): |- + Variable + -------- + costs(periodic) ∈ [-inf, inf] + costs(temporal): |- + Variable + -------- + costs(temporal) ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: costs(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: costs(temporal)|per_timestep[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: costs(temporal)|per_timestep[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: costs(temporal)|per_timestep[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: costs(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: costs(temporal)|per_timestep[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: costs(temporal)|per_timestep[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: costs(temporal)|per_timestep[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: costs(temporal)|per_timestep[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: costs(temporal)|per_timestep[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: costs(temporal)|per_timestep[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: costs(temporal)|per_timestep[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: costs(temporal)|per_timestep[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: costs(temporal)|per_timestep[2020-01-03 23:45:00] ∈ [-inf, inf] + costs: |- + Variable + -------- + costs ∈ [-inf, inf] + CO2(periodic): |- + Variable + -------- + CO2(periodic) ∈ [-inf, inf] + CO2(temporal): |- + Variable + -------- + CO2(temporal) ∈ [-inf, inf] + "CO2(temporal)|per_timestep": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: CO2(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: CO2(temporal)|per_timestep[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: CO2(temporal)|per_timestep[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: CO2(temporal)|per_timestep[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: CO2(temporal)|per_timestep[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: CO2(temporal)|per_timestep[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: CO2(temporal)|per_timestep[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: CO2(temporal)|per_timestep[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: CO2(temporal)|per_timestep[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: CO2(temporal)|per_timestep[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: CO2(temporal)|per_timestep[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: CO2(temporal)|per_timestep[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: CO2(temporal)|per_timestep[2020-01-03 23:45:00] ∈ [-inf, inf] + CO2: |- + Variable + -------- + CO2 ∈ [-inf, inf] + PE(periodic): |- + Variable + -------- + PE(periodic) ∈ [-inf, inf] + PE(temporal): |- + Variable + -------- + PE(temporal) ∈ [-inf, inf] + "PE(temporal)|per_timestep": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: PE(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: PE(temporal)|per_timestep[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: PE(temporal)|per_timestep[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: PE(temporal)|per_timestep[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: PE(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: PE(temporal)|per_timestep[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: PE(temporal)|per_timestep[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: PE(temporal)|per_timestep[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: PE(temporal)|per_timestep[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: PE(temporal)|per_timestep[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: PE(temporal)|per_timestep[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: PE(temporal)|per_timestep[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: PE(temporal)|per_timestep[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: PE(temporal)|per_timestep[2020-01-03 23:45:00] ∈ [-inf, inf] + PE: |- + Variable + -------- + PE ∈ [-inf, inf] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "Wärmelast(Q_th_Last)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] ∈ [127.1, 127.1] + [2020-01-01 00:15:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:15:00] ∈ [122.2, 122.2] + [2020-01-01 00:30:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:30:00] ∈ [124.4, 124.4] + [2020-01-01 00:45:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:45:00] ∈ [127.7, 127.7] + [2020-01-01 01:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00] ∈ [130.7, 130.7] + [2020-01-01 01:15:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:15:00] ∈ [132.2, 132.2] + [2020-01-01 01:30:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:30:00] ∈ [132.4, 132.4] + ... + [2020-01-03 22:15:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 22:15:00] ∈ [168.9, 168.9] + [2020-01-03 22:30:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 22:30:00] ∈ [161.6, 161.6] + [2020-01-03 22:45:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 22:45:00] ∈ [157, 157] + [2020-01-03 23:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:00:00] ∈ [149.8, 149.8] + [2020-01-03 23:15:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:15:00] ∈ [146, 146] + [2020-01-03 23:30:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:30:00] ∈ [144.8, 144.8] + [2020-01-03 23:45:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:45:00] ∈ [143.5, 143.5] + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Variable + -------- + Wärmelast(Q_th_Last)|total_flow_hours ∈ [0, inf] + "Stromlast(P_el_Last)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 00:00:00] ∈ [58.39, 58.39] + [2020-01-01 00:15:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 00:15:00] ∈ [58.36, 58.36] + [2020-01-01 00:30:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 00:30:00] ∈ [58.11, 58.11] + [2020-01-01 00:45:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 00:45:00] ∈ [57.71, 57.71] + [2020-01-01 01:00:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 01:00:00] ∈ [55.53, 55.53] + [2020-01-01 01:15:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 01:15:00] ∈ [56.24, 56.24] + [2020-01-01 01:30:00]: Stromlast(P_el_Last)|flow_rate[2020-01-01 01:30:00] ∈ [55.17, 55.17] + ... + [2020-01-03 22:15:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 22:15:00] ∈ [102.2, 102.2] + [2020-01-03 22:30:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 22:30:00] ∈ [100, 100] + [2020-01-03 22:45:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 22:45:00] ∈ [96.9, 96.9] + [2020-01-03 23:00:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 23:00:00] ∈ [89.83, 89.83] + [2020-01-03 23:15:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 23:15:00] ∈ [91.91, 91.91] + [2020-01-03 23:30:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 23:30:00] ∈ [88.18, 88.18] + [2020-01-03 23:45:00]: Stromlast(P_el_Last)|flow_rate[2020-01-03 23:45:00] ∈ [85.54, 85.54] + "Stromlast(P_el_Last)|total_flow_hours": |- + Variable + -------- + Stromlast(P_el_Last)|total_flow_hours ∈ [0, inf] + "Kohletarif(Q_Kohle)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 00:15:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1000] + [2020-01-01 00:30:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1000] + [2020-01-01 00:45:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 01:15:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1000] + [2020-01-01 01:30:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1000] + ... + [2020-01-03 22:15:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1000] + [2020-01-03 22:30:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1000] + [2020-01-03 22:45:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1000] + [2020-01-03 23:00:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1000] + [2020-01-03 23:15:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1000] + [2020-01-03 23:30:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1000] + [2020-01-03 23:45:00]: Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1000] + "Kohletarif(Q_Kohle)|total_flow_hours": |- + Variable + -------- + Kohletarif(Q_Kohle)|total_flow_hours ∈ [0, inf] + "Kohletarif(Q_Kohle)->costs(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Kohletarif(Q_Kohle)->CO2(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 00:15:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1000] + [2020-01-01 00:30:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1000] + [2020-01-01 00:45:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 01:15:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1000] + [2020-01-01 01:30:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1000] + ... + [2020-01-03 22:15:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1000] + [2020-01-03 22:30:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1000] + [2020-01-03 22:45:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1000] + [2020-01-03 23:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1000] + [2020-01-03 23:15:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1000] + [2020-01-03 23:30:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1000] + [2020-01-03 23:45:00]: Gastarif(Q_Gas)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable + -------- + Gastarif(Q_Gas)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 00:15:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1000] + [2020-01-01 00:30:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1000] + [2020-01-01 00:45:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 01:15:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1000] + [2020-01-01 01:30:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1000] + ... + [2020-01-03 22:15:00]: Einspeisung(P_el)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1000] + [2020-01-03 22:30:00]: Einspeisung(P_el)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1000] + [2020-01-03 22:45:00]: Einspeisung(P_el)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1000] + [2020-01-03 23:00:00]: Einspeisung(P_el)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1000] + [2020-01-03 23:15:00]: Einspeisung(P_el)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1000] + [2020-01-03 23:30:00]: Einspeisung(P_el)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1000] + [2020-01-03 23:45:00]: Einspeisung(P_el)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1000] + "Einspeisung(P_el)|total_flow_hours": |- + Variable + -------- + Einspeisung(P_el)|total_flow_hours ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Einspeisung(P_el)->costs(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Stromtarif(P_el)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Stromtarif(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 00:15:00]: Stromtarif(P_el)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1000] + [2020-01-01 00:30:00]: Stromtarif(P_el)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1000] + [2020-01-01 00:45:00]: Stromtarif(P_el)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Stromtarif(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 01:15:00]: Stromtarif(P_el)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1000] + [2020-01-01 01:30:00]: Stromtarif(P_el)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1000] + ... + [2020-01-03 22:15:00]: Stromtarif(P_el)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1000] + [2020-01-03 22:30:00]: Stromtarif(P_el)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1000] + [2020-01-03 22:45:00]: Stromtarif(P_el)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1000] + [2020-01-03 23:00:00]: Stromtarif(P_el)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1000] + [2020-01-03 23:15:00]: Stromtarif(P_el)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1000] + [2020-01-03 23:30:00]: Stromtarif(P_el)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1000] + [2020-01-03 23:45:00]: Stromtarif(P_el)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1000] + "Stromtarif(P_el)|total_flow_hours": |- + Variable + -------- + Stromtarif(P_el)|total_flow_hours ∈ [0, inf] + "Stromtarif(P_el)->costs(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Stromtarif(P_el)->costs(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Stromtarif(P_el)->costs(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Stromtarif(P_el)->CO2(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Kessel(Q_fu)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 95] + [2020-01-01 00:15:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:15:00] ∈ [0, 95] + [2020-01-01 00:30:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:30:00] ∈ [0, 95] + [2020-01-01 00:45:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:45:00] ∈ [0, 95] + [2020-01-01 01:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 95] + [2020-01-01 01:15:00]: Kessel(Q_fu)|flow_rate[2020-01-01 01:15:00] ∈ [0, 95] + [2020-01-01 01:30:00]: Kessel(Q_fu)|flow_rate[2020-01-01 01:30:00] ∈ [0, 95] + ... + [2020-01-03 22:15:00]: Kessel(Q_fu)|flow_rate[2020-01-03 22:15:00] ∈ [0, 95] + [2020-01-03 22:30:00]: Kessel(Q_fu)|flow_rate[2020-01-03 22:30:00] ∈ [0, 95] + [2020-01-03 22:45:00]: Kessel(Q_fu)|flow_rate[2020-01-03 22:45:00] ∈ [0, 95] + [2020-01-03 23:00:00]: Kessel(Q_fu)|flow_rate[2020-01-03 23:00:00] ∈ [0, 95] + [2020-01-03 23:15:00]: Kessel(Q_fu)|flow_rate[2020-01-03 23:15:00] ∈ [0, 95] + [2020-01-03 23:30:00]: Kessel(Q_fu)|flow_rate[2020-01-03 23:30:00] ∈ [0, 95] + [2020-01-03 23:45:00]: Kessel(Q_fu)|flow_rate[2020-01-03 23:45:00] ∈ [0, 95] + "Kessel(Q_fu)|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kessel(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: Kessel(Q_fu)|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: Kessel(Q_fu)|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: Kessel(Q_fu)|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: Kessel(Q_fu)|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: Kessel(Q_fu)|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: Kessel(Q_fu)|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: Kessel(Q_fu)|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: Kessel(Q_fu)|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: Kessel(Q_fu)|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: Kessel(Q_fu)|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: Kessel(Q_fu)|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: Kessel(Q_fu)|on[2020-01-03 23:45:00] ∈ {0, 1} + "Kessel(Q_fu)|on_hours_total": |- + Variable + -------- + Kessel(Q_fu)|on_hours_total ∈ [0, inf] + "Kessel(Q_fu)|switch|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kessel(Q_fu)|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: Kessel(Q_fu)|switch|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: Kessel(Q_fu)|switch|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: Kessel(Q_fu)|switch|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_fu)|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: Kessel(Q_fu)|switch|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: Kessel(Q_fu)|switch|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: Kessel(Q_fu)|switch|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: Kessel(Q_fu)|switch|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: Kessel(Q_fu)|switch|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: Kessel(Q_fu)|switch|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: Kessel(Q_fu)|switch|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: Kessel(Q_fu)|switch|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: Kessel(Q_fu)|switch|on[2020-01-03 23:45:00] ∈ {0, 1} + "Kessel(Q_fu)|switch|off": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kessel(Q_fu)|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: Kessel(Q_fu)|switch|off[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: Kessel(Q_fu)|switch|off[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: Kessel(Q_fu)|switch|off[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_fu)|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: Kessel(Q_fu)|switch|off[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: Kessel(Q_fu)|switch|off[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: Kessel(Q_fu)|switch|off[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: Kessel(Q_fu)|switch|off[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: Kessel(Q_fu)|switch|off[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: Kessel(Q_fu)|switch|off[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: Kessel(Q_fu)|switch|off[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: Kessel(Q_fu)|switch|off[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: Kessel(Q_fu)|switch|off[2020-01-03 23:45:00] ∈ {0, 1} + "Kessel(Q_fu)->costs(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Kessel(Q_fu)->costs(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Kessel(Q_fu)->costs(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Kessel(Q_fu)|total_flow_hours": |- + Variable + -------- + Kessel(Q_fu)|total_flow_hours ∈ [0, inf] + "Kessel(Q_th)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 00:15:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1e+07] + [2020-01-01 00:30:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1e+07] + [2020-01-01 00:45:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 01:15:00]: Kessel(Q_th)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1e+07] + [2020-01-01 01:30:00]: Kessel(Q_th)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1e+07] + ... + [2020-01-03 22:15:00]: Kessel(Q_th)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1e+07] + [2020-01-03 22:30:00]: Kessel(Q_th)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1e+07] + [2020-01-03 22:45:00]: Kessel(Q_th)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1e+07] + [2020-01-03 23:00:00]: Kessel(Q_th)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1e+07] + [2020-01-03 23:15:00]: Kessel(Q_th)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1e+07] + [2020-01-03 23:30:00]: Kessel(Q_th)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1e+07] + [2020-01-03 23:45:00]: Kessel(Q_th)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1e+07] + "Kessel(Q_th)|total_flow_hours": |- + Variable + -------- + Kessel(Q_th)|total_flow_hours ∈ [0, inf] + "BHKW2(Q_fu)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 288] + [2020-01-01 00:15:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00] ∈ [0, 288] + [2020-01-01 00:30:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 00:30:00] ∈ [0, 288] + [2020-01-01 00:45:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 00:45:00] ∈ [0, 288] + [2020-01-01 01:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 288] + [2020-01-01 01:15:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 01:15:00] ∈ [0, 288] + [2020-01-01 01:30:00]: BHKW2(Q_fu)|flow_rate[2020-01-01 01:30:00] ∈ [0, 288] + ... + [2020-01-03 22:15:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 22:15:00] ∈ [0, 288] + [2020-01-03 22:30:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 22:30:00] ∈ [0, 288] + [2020-01-03 22:45:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 22:45:00] ∈ [0, 288] + [2020-01-03 23:00:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 23:00:00] ∈ [0, 288] + [2020-01-03 23:15:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] ∈ [0, 288] + [2020-01-03 23:30:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] ∈ [0, 288] + [2020-01-03 23:45:00]: BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] ∈ [0, 288] + "BHKW2(Q_fu)|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: BHKW2(Q_fu)|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: BHKW2(Q_fu)|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: BHKW2(Q_fu)|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: BHKW2(Q_fu)|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: BHKW2(Q_fu)|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: BHKW2(Q_fu)|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: BHKW2(Q_fu)|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: BHKW2(Q_fu)|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: BHKW2(Q_fu)|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: BHKW2(Q_fu)|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: BHKW2(Q_fu)|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: BHKW2(Q_fu)|on[2020-01-03 23:45:00] ∈ {0, 1} + "BHKW2(Q_fu)|on_hours_total": |- + Variable + -------- + BHKW2(Q_fu)|on_hours_total ∈ [0, inf] + "BHKW2(Q_fu)|total_flow_hours": |- + Variable + -------- + BHKW2(Q_fu)|total_flow_hours ∈ [0, inf] + "BHKW2(Q_th)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 00:15:00]: BHKW2(Q_th)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1e+07] + [2020-01-01 00:30:00]: BHKW2(Q_th)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1e+07] + [2020-01-01 00:45:00]: BHKW2(Q_th)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 01:15:00]: BHKW2(Q_th)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1e+07] + [2020-01-01 01:30:00]: BHKW2(Q_th)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1e+07] + ... + [2020-01-03 22:15:00]: BHKW2(Q_th)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1e+07] + [2020-01-03 22:30:00]: BHKW2(Q_th)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1e+07] + [2020-01-03 22:45:00]: BHKW2(Q_th)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1e+07] + [2020-01-03 23:00:00]: BHKW2(Q_th)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1e+07] + [2020-01-03 23:15:00]: BHKW2(Q_th)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1e+07] + [2020-01-03 23:30:00]: BHKW2(Q_th)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1e+07] + [2020-01-03 23:45:00]: BHKW2(Q_th)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1e+07] + "BHKW2(Q_th)|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: BHKW2(Q_th)|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: BHKW2(Q_th)|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: BHKW2(Q_th)|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: BHKW2(Q_th)|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: BHKW2(Q_th)|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: BHKW2(Q_th)|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: BHKW2(Q_th)|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: BHKW2(Q_th)|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: BHKW2(Q_th)|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: BHKW2(Q_th)|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: BHKW2(Q_th)|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: BHKW2(Q_th)|on[2020-01-03 23:45:00] ∈ {0, 1} + "BHKW2(Q_th)|on_hours_total": |- + Variable + -------- + BHKW2(Q_th)|on_hours_total ∈ [0, inf] + "BHKW2(Q_th)|total_flow_hours": |- + Variable + -------- + BHKW2(Q_th)|total_flow_hours ∈ [0, inf] + "BHKW2(P_el)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 00:15:00]: BHKW2(P_el)|flow_rate[2020-01-01 00:15:00] ∈ [0, 1e+07] + [2020-01-01 00:30:00]: BHKW2(P_el)|flow_rate[2020-01-01 00:30:00] ∈ [0, 1e+07] + [2020-01-01 00:45:00]: BHKW2(P_el)|flow_rate[2020-01-01 00:45:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 01:15:00]: BHKW2(P_el)|flow_rate[2020-01-01 01:15:00] ∈ [0, 1e+07] + [2020-01-01 01:30:00]: BHKW2(P_el)|flow_rate[2020-01-01 01:30:00] ∈ [0, 1e+07] + ... + [2020-01-03 22:15:00]: BHKW2(P_el)|flow_rate[2020-01-03 22:15:00] ∈ [0, 1e+07] + [2020-01-03 22:30:00]: BHKW2(P_el)|flow_rate[2020-01-03 22:30:00] ∈ [0, 1e+07] + [2020-01-03 22:45:00]: BHKW2(P_el)|flow_rate[2020-01-03 22:45:00] ∈ [0, 1e+07] + [2020-01-03 23:00:00]: BHKW2(P_el)|flow_rate[2020-01-03 23:00:00] ∈ [0, 1e+07] + [2020-01-03 23:15:00]: BHKW2(P_el)|flow_rate[2020-01-03 23:15:00] ∈ [0, 1e+07] + [2020-01-03 23:30:00]: BHKW2(P_el)|flow_rate[2020-01-03 23:30:00] ∈ [0, 1e+07] + [2020-01-03 23:45:00]: BHKW2(P_el)|flow_rate[2020-01-03 23:45:00] ∈ [0, 1e+07] + "BHKW2(P_el)|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2(P_el)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: BHKW2(P_el)|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: BHKW2(P_el)|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: BHKW2(P_el)|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2(P_el)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: BHKW2(P_el)|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: BHKW2(P_el)|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: BHKW2(P_el)|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: BHKW2(P_el)|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: BHKW2(P_el)|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: BHKW2(P_el)|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: BHKW2(P_el)|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: BHKW2(P_el)|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: BHKW2(P_el)|on[2020-01-03 23:45:00] ∈ {0, 1} + "BHKW2(P_el)|on_hours_total": |- + Variable + -------- + BHKW2(P_el)|on_hours_total ∈ [0, inf] + "BHKW2(P_el)|total_flow_hours": |- + Variable + -------- + BHKW2(P_el)|total_flow_hours ∈ [0, inf] + "BHKW2|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: BHKW2|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: BHKW2|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: BHKW2|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: BHKW2|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: BHKW2|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: BHKW2|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: BHKW2|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: BHKW2|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: BHKW2|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: BHKW2|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: BHKW2|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: BHKW2|on[2020-01-03 23:45:00] ∈ {0, 1} + "BHKW2|on_hours_total": |- + Variable + -------- + BHKW2|on_hours_total ∈ [0, inf] + "BHKW2|switch|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: BHKW2|switch|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: BHKW2|switch|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: BHKW2|switch|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: BHKW2|switch|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: BHKW2|switch|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: BHKW2|switch|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: BHKW2|switch|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: BHKW2|switch|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: BHKW2|switch|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: BHKW2|switch|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: BHKW2|switch|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: BHKW2|switch|on[2020-01-03 23:45:00] ∈ {0, 1} + "BHKW2|switch|off": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: BHKW2|switch|off[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: BHKW2|switch|off[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: BHKW2|switch|off[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: BHKW2|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: BHKW2|switch|off[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: BHKW2|switch|off[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: BHKW2|switch|off[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: BHKW2|switch|off[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: BHKW2|switch|off[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: BHKW2|switch|off[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: BHKW2|switch|off[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: BHKW2|switch|off[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: BHKW2|switch|off[2020-01-03 23:45:00] ∈ {0, 1} + "BHKW2->costs(temporal)": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: BHKW2->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: BHKW2->costs(temporal)[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: BHKW2->costs(temporal)[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: BHKW2->costs(temporal)[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: BHKW2->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: BHKW2->costs(temporal)[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: BHKW2->costs(temporal)[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: BHKW2->costs(temporal)[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: BHKW2->costs(temporal)[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: BHKW2->costs(temporal)[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: BHKW2->costs(temporal)[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: BHKW2->costs(temporal)[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: BHKW2->costs(temporal)[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: BHKW2->costs(temporal)[2020-01-03 23:45:00] ∈ [-inf, inf] + "Speicher(Q_th_load)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] ∈ [0, 137] + [2020-01-01 00:15:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00] ∈ [0, 137] + [2020-01-01 00:30:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:30:00] ∈ [0, 137] + [2020-01-01 00:45:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:45:00] ∈ [0, 137] + [2020-01-01 01:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] ∈ [0, 137] + [2020-01-01 01:15:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:15:00] ∈ [0, 137] + [2020-01-01 01:30:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:30:00] ∈ [0, 137] + ... + [2020-01-03 22:15:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 22:15:00] ∈ [0, 137] + [2020-01-03 22:30:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 22:30:00] ∈ [0, 137] + [2020-01-03 22:45:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 22:45:00] ∈ [0, 137] + [2020-01-03 23:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 23:00:00] ∈ [0, 137] + [2020-01-03 23:15:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] ∈ [0, 137] + [2020-01-03 23:30:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] ∈ [0, 137] + [2020-01-03 23:45:00]: Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] ∈ [0, 137] + "Speicher(Q_th_load)|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Speicher(Q_th_load)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: Speicher(Q_th_load)|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: Speicher(Q_th_load)|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: Speicher(Q_th_load)|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_load)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: Speicher(Q_th_load)|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: Speicher(Q_th_load)|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: Speicher(Q_th_load)|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: Speicher(Q_th_load)|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: Speicher(Q_th_load)|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: Speicher(Q_th_load)|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: Speicher(Q_th_load)|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: Speicher(Q_th_load)|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: Speicher(Q_th_load)|on[2020-01-03 23:45:00] ∈ {0, 1} + "Speicher(Q_th_load)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_load)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_load)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_load)|total_flow_hours ∈ [0, inf] + "Speicher(Q_th_unload)|flow_rate": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] ∈ [0, 158] + [2020-01-01 00:15:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00] ∈ [0, 158] + [2020-01-01 00:30:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:30:00] ∈ [0, 158] + [2020-01-01 00:45:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:45:00] ∈ [0, 158] + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] ∈ [0, 158] + [2020-01-01 01:15:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:15:00] ∈ [0, 158] + [2020-01-01 01:30:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:30:00] ∈ [0, 158] + ... + [2020-01-03 22:15:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 22:15:00] ∈ [0, 158] + [2020-01-03 22:30:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 22:30:00] ∈ [0, 158] + [2020-01-03 22:45:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 22:45:00] ∈ [0, 158] + [2020-01-03 23:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 23:00:00] ∈ [0, 158] + [2020-01-03 23:15:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00] ∈ [0, 158] + [2020-01-03 23:30:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00] ∈ [0, 158] + [2020-01-03 23:45:00]: Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00] ∈ [0, 158] + "Speicher(Q_th_unload)|on": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 00:15:00]: Speicher(Q_th_unload)|on[2020-01-01 00:15:00] ∈ {0, 1} + [2020-01-01 00:30:00]: Speicher(Q_th_unload)|on[2020-01-01 00:30:00] ∈ {0, 1} + [2020-01-01 00:45:00]: Speicher(Q_th_unload)|on[2020-01-01 00:45:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 01:15:00]: Speicher(Q_th_unload)|on[2020-01-01 01:15:00] ∈ {0, 1} + [2020-01-01 01:30:00]: Speicher(Q_th_unload)|on[2020-01-01 01:30:00] ∈ {0, 1} + ... + [2020-01-03 22:15:00]: Speicher(Q_th_unload)|on[2020-01-03 22:15:00] ∈ {0, 1} + [2020-01-03 22:30:00]: Speicher(Q_th_unload)|on[2020-01-03 22:30:00] ∈ {0, 1} + [2020-01-03 22:45:00]: Speicher(Q_th_unload)|on[2020-01-03 22:45:00] ∈ {0, 1} + [2020-01-03 23:00:00]: Speicher(Q_th_unload)|on[2020-01-03 23:00:00] ∈ {0, 1} + [2020-01-03 23:15:00]: Speicher(Q_th_unload)|on[2020-01-03 23:15:00] ∈ {0, 1} + [2020-01-03 23:30:00]: Speicher(Q_th_unload)|on[2020-01-03 23:30:00] ∈ {0, 1} + [2020-01-03 23:45:00]: Speicher(Q_th_unload)|on[2020-01-03 23:45:00] ∈ {0, 1} + "Speicher(Q_th_unload)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_unload)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_unload)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_unload)|total_flow_hours ∈ [0, inf] + "Speicher|charge_state": |- + Variable (time: 289) + -------------------- + [2020-01-01 00:00:00]: Speicher|charge_state[2020-01-01 00:00:00] ∈ [0, 684] + [2020-01-01 00:15:00]: Speicher|charge_state[2020-01-01 00:15:00] ∈ [0, 684] + [2020-01-01 00:30:00]: Speicher|charge_state[2020-01-01 00:30:00] ∈ [0, 684] + [2020-01-01 00:45:00]: Speicher|charge_state[2020-01-01 00:45:00] ∈ [0, 684] + [2020-01-01 01:00:00]: Speicher|charge_state[2020-01-01 01:00:00] ∈ [0, 684] + [2020-01-01 01:15:00]: Speicher|charge_state[2020-01-01 01:15:00] ∈ [0, 684] + [2020-01-01 01:30:00]: Speicher|charge_state[2020-01-01 01:30:00] ∈ [0, 684] + ... + [2020-01-03 22:30:00]: Speicher|charge_state[2020-01-03 22:30:00] ∈ [0, 684] + [2020-01-03 22:45:00]: Speicher|charge_state[2020-01-03 22:45:00] ∈ [0, 684] + [2020-01-03 23:00:00]: Speicher|charge_state[2020-01-03 23:00:00] ∈ [0, 684] + [2020-01-03 23:15:00]: Speicher|charge_state[2020-01-03 23:15:00] ∈ [0, 684] + [2020-01-03 23:30:00]: Speicher|charge_state[2020-01-03 23:30:00] ∈ [0, 684] + [2020-01-03 23:45:00]: Speicher|charge_state[2020-01-03 23:45:00] ∈ [0, 684] + [2020-01-04 00:00:00]: Speicher|charge_state[2020-01-04 00:00:00] ∈ [0, 684] + "Speicher|netto_discharge": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Speicher|netto_discharge[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 00:15:00]: Speicher|netto_discharge[2020-01-01 00:15:00] ∈ [-inf, inf] + [2020-01-01 00:30:00]: Speicher|netto_discharge[2020-01-01 00:30:00] ∈ [-inf, inf] + [2020-01-01 00:45:00]: Speicher|netto_discharge[2020-01-01 00:45:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Speicher|netto_discharge[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 01:15:00]: Speicher|netto_discharge[2020-01-01 01:15:00] ∈ [-inf, inf] + [2020-01-01 01:30:00]: Speicher|netto_discharge[2020-01-01 01:30:00] ∈ [-inf, inf] + ... + [2020-01-03 22:15:00]: Speicher|netto_discharge[2020-01-03 22:15:00] ∈ [-inf, inf] + [2020-01-03 22:30:00]: Speicher|netto_discharge[2020-01-03 22:30:00] ∈ [-inf, inf] + [2020-01-03 22:45:00]: Speicher|netto_discharge[2020-01-03 22:45:00] ∈ [-inf, inf] + [2020-01-03 23:00:00]: Speicher|netto_discharge[2020-01-03 23:00:00] ∈ [-inf, inf] + [2020-01-03 23:15:00]: Speicher|netto_discharge[2020-01-03 23:15:00] ∈ [-inf, inf] + [2020-01-03 23:30:00]: Speicher|netto_discharge[2020-01-03 23:30:00] ∈ [-inf, inf] + [2020-01-03 23:45:00]: Speicher|netto_discharge[2020-01-03 23:45:00] ∈ [-inf, inf] + "Strom|excess_input": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Strom|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Strom|excess_input[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Strom|excess_input[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Strom|excess_input[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Strom|excess_input[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Strom|excess_input[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Strom|excess_input[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Strom|excess_input[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Strom|excess_input[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Strom|excess_input[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Strom|excess_input[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Strom|excess_input[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Strom|excess_input[2020-01-03 23:45:00] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Strom|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Strom|excess_output[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Strom|excess_output[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Strom|excess_output[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Strom|excess_output[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Strom|excess_output[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Strom|excess_output[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Strom|excess_output[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Strom|excess_output[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Strom|excess_output[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Strom|excess_output[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Strom|excess_output[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Strom|excess_output[2020-01-03 23:45:00] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Fernwärme|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Fernwärme|excess_input[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Fernwärme|excess_input[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Fernwärme|excess_input[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Fernwärme|excess_input[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Fernwärme|excess_input[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Fernwärme|excess_input[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Fernwärme|excess_input[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Fernwärme|excess_input[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Fernwärme|excess_input[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Fernwärme|excess_input[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Fernwärme|excess_input[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Fernwärme|excess_input[2020-01-03 23:45:00] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Fernwärme|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Fernwärme|excess_output[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Fernwärme|excess_output[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Fernwärme|excess_output[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Fernwärme|excess_output[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Fernwärme|excess_output[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Fernwärme|excess_output[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Fernwärme|excess_output[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Fernwärme|excess_output[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Fernwärme|excess_output[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Fernwärme|excess_output[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Fernwärme|excess_output[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Fernwärme|excess_output[2020-01-03 23:45:00] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Gas|excess_input[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Gas|excess_input[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Gas|excess_input[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Gas|excess_input[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Gas|excess_input[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Gas|excess_input[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Gas|excess_input[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Gas|excess_input[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Gas|excess_input[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Gas|excess_input[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Gas|excess_input[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Gas|excess_input[2020-01-03 23:45:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Gas|excess_output[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Gas|excess_output[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Gas|excess_output[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Gas|excess_output[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Gas|excess_output[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Gas|excess_output[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Gas|excess_output[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Gas|excess_output[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Gas|excess_output[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Gas|excess_output[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Gas|excess_output[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Gas|excess_output[2020-01-03 23:45:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] + "Kohle|excess_input": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kohle|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Kohle|excess_input[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Kohle|excess_input[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Kohle|excess_input[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Kohle|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Kohle|excess_input[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Kohle|excess_input[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Kohle|excess_input[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Kohle|excess_input[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Kohle|excess_input[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Kohle|excess_input[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Kohle|excess_input[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Kohle|excess_input[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Kohle|excess_input[2020-01-03 23:45:00] ∈ [0, inf] + "Kohle|excess_output": |- + Variable (time: 288) + -------------------- + [2020-01-01 00:00:00]: Kohle|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 00:15:00]: Kohle|excess_output[2020-01-01 00:15:00] ∈ [0, inf] + [2020-01-01 00:30:00]: Kohle|excess_output[2020-01-01 00:30:00] ∈ [0, inf] + [2020-01-01 00:45:00]: Kohle|excess_output[2020-01-01 00:45:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Kohle|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 01:15:00]: Kohle|excess_output[2020-01-01 01:15:00] ∈ [0, inf] + [2020-01-01 01:30:00]: Kohle|excess_output[2020-01-01 01:30:00] ∈ [0, inf] + ... + [2020-01-03 22:15:00]: Kohle|excess_output[2020-01-03 22:15:00] ∈ [0, inf] + [2020-01-03 22:30:00]: Kohle|excess_output[2020-01-03 22:30:00] ∈ [0, inf] + [2020-01-03 22:45:00]: Kohle|excess_output[2020-01-03 22:45:00] ∈ [0, inf] + [2020-01-03 23:00:00]: Kohle|excess_output[2020-01-03 23:00:00] ∈ [0, inf] + [2020-01-03 23:15:00]: Kohle|excess_output[2020-01-03 23:15:00] ∈ [0, inf] + [2020-01-03 23:30:00]: Kohle|excess_output[2020-01-03 23:30:00] ∈ [0, inf] + [2020-01-03 23:45:00]: Kohle|excess_output[2020-01-03 23:45:00] ∈ [0, inf] + "Kohle->Penalty": |- + Variable + -------- + Kohle->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + ---------------------------- + +1 costs(periodic) = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + ---------------------------- + +1 costs(temporal) - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 00:15:00]... -1 costs(temporal)|per_timestep[2020-01-03 23:15:00] - 1 costs(temporal)|per_timestep[2020-01-03 23:30:00] - 1 costs(temporal)|per_timestep[2020-01-03 23:45:00] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 288]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:00:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:15:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:15:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:15:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:15:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:15:00] - 1 BHKW2->costs(temporal)[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:30:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:30:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:30:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:30:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:30:00] - 1 BHKW2->costs(temporal)[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:45:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:45:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:45:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:45:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:45:00] - 1 BHKW2->costs(temporal)[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 01:00:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 01:00:00] - 1 BHKW2->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:15:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:15:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:15:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 01:15:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 01:15:00] - 1 BHKW2->costs(temporal)[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:30:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:30:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:30:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-01 01:30:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-01 01:30:00] - 1 BHKW2->costs(temporal)[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 costs(temporal)|per_timestep[2020-01-03 22:15:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:15:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:15:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 22:15:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 22:15:00] - 1 BHKW2->costs(temporal)[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 costs(temporal)|per_timestep[2020-01-03 22:30:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:30:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:30:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 22:30:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 22:30:00] - 1 BHKW2->costs(temporal)[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 costs(temporal)|per_timestep[2020-01-03 22:45:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:45:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:45:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 22:45:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 22:45:00] - 1 BHKW2->costs(temporal)[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 costs(temporal)|per_timestep[2020-01-03 23:00:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:00:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:00:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:00:00] - 1 BHKW2->costs(temporal)[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 costs(temporal)|per_timestep[2020-01-03 23:15:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:15:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:15:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:15:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:15:00] - 1 BHKW2->costs(temporal)[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 costs(temporal)|per_timestep[2020-01-03 23:30:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:30:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:30:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:30:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:30:00] - 1 BHKW2->costs(temporal)[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 costs(temporal)|per_timestep[2020-01-03 23:45:00] - 1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:45:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:45:00]... -1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:45:00] - 1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:45:00] - 1 BHKW2->costs(temporal)[2020-01-03 23:45:00] = -0.0 + costs: |- + Constraint `costs` + ------------------ + +1 costs - 1 costs(temporal) - 1 costs(periodic) = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + -------------------------- + +1 CO2(periodic) = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + -------------------------- + +1 CO2(temporal) - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 00:15:00]... -1 CO2(temporal)|per_timestep[2020-01-03 23:15:00] - 1 CO2(temporal)|per_timestep[2020-01-03 23:30:00] - 1 CO2(temporal)|per_timestep[2020-01-03 23:45:00] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 288]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:15:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:15:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:15:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:30:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:30:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:30:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:45:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:45:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:45:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:15:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:15:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:15:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:30:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:30:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:30:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 CO2(temporal)|per_timestep[2020-01-03 22:15:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:15:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:15:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 CO2(temporal)|per_timestep[2020-01-03 22:30:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:30:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:30:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 CO2(temporal)|per_timestep[2020-01-03 22:45:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:45:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:45:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 CO2(temporal)|per_timestep[2020-01-03 23:00:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:00:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 CO2(temporal)|per_timestep[2020-01-03 23:15:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:15:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:15:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 CO2(temporal)|per_timestep[2020-01-03 23:30:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:30:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:30:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 CO2(temporal)|per_timestep[2020-01-03 23:45:00] - 1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:45:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:45:00] - 1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:45:00] = -0.0 + CO2: |- + Constraint `CO2` + ---------------- + +1 CO2 - 1 CO2(temporal) - 1 CO2(periodic) = -0.0 + PE(periodic): |- + Constraint `PE(periodic)` + ------------------------- + +1 PE(periodic) = -0.0 + PE(temporal): |- + Constraint `PE(temporal)` + ------------------------- + +1 PE(temporal) - 1 PE(temporal)|per_timestep[2020-01-01 00:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 00:15:00]... -1 PE(temporal)|per_timestep[2020-01-03 23:15:00] - 1 PE(temporal)|per_timestep[2020-01-03 23:30:00] - 1 PE(temporal)|per_timestep[2020-01-03 23:45:00] = -0.0 + "PE(temporal)|per_timestep": |- + Constraint `PE(temporal)|per_timestep` + [time: 288]: + --------------------------------------------------- + [2020-01-01 00:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 PE(temporal)|per_timestep[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 PE(temporal)|per_timestep[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 PE(temporal)|per_timestep[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 PE(temporal)|per_timestep[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 PE(temporal)|per_timestep[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 PE(temporal)|per_timestep[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 PE(temporal)|per_timestep[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 PE(temporal)|per_timestep[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 PE(temporal)|per_timestep[2020-01-03 23:45:00] = -0.0 + PE: |- + Constraint `PE` + --------------- + +1 PE - 1 PE(temporal) - 1 PE(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty - 1 Kohle->Penalty = -0.0 + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Constraint `Wärmelast(Q_th_Last)|total_flow_hours` + -------------------------------------------------- + +1 Wärmelast(Q_th_Last)|total_flow_hours - 0.25 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] - 0.25 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:15:00]... -0.25 Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:15:00] - 0.25 Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:30:00] - 0.25 Wärmelast(Q_th_Last)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Stromlast(P_el_Last)|total_flow_hours": |- + Constraint `Stromlast(P_el_Last)|total_flow_hours` + -------------------------------------------------- + +1 Stromlast(P_el_Last)|total_flow_hours - 0.25 Stromlast(P_el_Last)|flow_rate[2020-01-01 00:00:00] - 0.25 Stromlast(P_el_Last)|flow_rate[2020-01-01 00:15:00]... -0.25 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:15:00] - 0.25 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:30:00] - 0.25 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Kohletarif(Q_Kohle)|total_flow_hours": |- + Constraint `Kohletarif(Q_Kohle)|total_flow_hours` + ------------------------------------------------- + +1 Kohletarif(Q_Kohle)|total_flow_hours - 0.25 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:00:00] - 0.25 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:15:00]... -0.25 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:15:00] - 0.25 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:30:00] - 0.25 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Kohletarif(Q_Kohle)->costs(temporal)": |- + Constraint `Kohletarif(Q_Kohle)->costs(temporal)` + [time: 288]: + -------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:00:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:15:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:30:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 00:45:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:00:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:15:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-01 01:30:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:15:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:30:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 22:45:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:00:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:15:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:30:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Kohletarif(Q_Kohle)->costs(temporal)[2020-01-03 23:45:00] - 1.15 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Kohletarif(Q_Kohle)->CO2(temporal)": |- + Constraint `Kohletarif(Q_Kohle)->CO2(temporal)` + [time: 288]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:00:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:15:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:30:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 00:45:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:00:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:15:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-01 01:30:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:15:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:30:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 22:45:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:00:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:15:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:30:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Kohletarif(Q_Kohle)->CO2(temporal)[2020-01-03 23:45:00] - 0.075 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + --------------------------------------------- + +1 Gastarif(Q_Gas)|total_flow_hours - 0.25 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 0.25 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:15:00]... -0.25 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:15:00] - 0.25 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:30:00] - 0.25 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 288]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:15:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:30:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:45:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:15:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:30:00] - 8.115 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:15:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:30:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 22:45:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:00:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:15:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:30:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-03 23:45:00] - 8.16 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 288]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:15:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:30:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:45:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:15:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:30:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:15:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:30:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 22:45:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:00:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:15:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:30:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-03 23:45:00] - 0.075 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + ----------------------------------------------- + +1 Einspeisung(P_el)|total_flow_hours - 0.25 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] - 0.25 Einspeisung(P_el)|flow_rate[2020-01-01 00:15:00]... -0.25 Einspeisung(P_el)|flow_rate[2020-01-03 23:15:00] - 0.25 Einspeisung(P_el)|flow_rate[2020-01-03 23:30:00] - 0.25 Einspeisung(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 288]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] + 1.74 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:15:00] + 1.74 Einspeisung(P_el)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:30:00] + 1.74 Einspeisung(P_el)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:45:00] + 1.74 Einspeisung(P_el)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] + 0.5375 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:15:00] + 0.5375 Einspeisung(P_el)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:30:00] + 0.5375 Einspeisung(P_el)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 22:15:00] + 13.05 Einspeisung(P_el)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 22:30:00] + 13.05 Einspeisung(P_el)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 22:45:00] + 13.05 Einspeisung(P_el)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 23:00:00] + 11.24 Einspeisung(P_el)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 23:15:00] + 11.24 Einspeisung(P_el)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 23:30:00] + 11.24 Einspeisung(P_el)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-03 23:45:00] + 11.24 Einspeisung(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Stromtarif(P_el)|total_flow_hours": |- + Constraint `Stromtarif(P_el)|total_flow_hours` + ---------------------------------------------- + +1 Stromtarif(P_el)|total_flow_hours - 0.25 Stromtarif(P_el)|flow_rate[2020-01-01 00:00:00] - 0.25 Stromtarif(P_el)|flow_rate[2020-01-01 00:15:00]... -0.25 Stromtarif(P_el)|flow_rate[2020-01-03 23:15:00] - 0.25 Stromtarif(P_el)|flow_rate[2020-01-03 23:30:00] - 0.25 Stromtarif(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Stromtarif(P_el)->costs(temporal)": |- + Constraint `Stromtarif(P_el)->costs(temporal)` + [time: 288]: + ----------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:00:00] - 1.99 Stromtarif(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:15:00] - 1.99 Stromtarif(P_el)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:30:00] - 1.99 Stromtarif(P_el)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 00:45:00] - 1.99 Stromtarif(P_el)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 01:00:00] - 0.7875 Stromtarif(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 01:15:00] - 0.7875 Stromtarif(P_el)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-01 01:30:00] - 0.7875 Stromtarif(P_el)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 22:15:00] - 13.3 Stromtarif(P_el)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 22:30:00] - 13.3 Stromtarif(P_el)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 22:45:00] - 13.3 Stromtarif(P_el)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:00:00] - 11.49 Stromtarif(P_el)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:15:00] - 11.49 Stromtarif(P_el)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:30:00] - 11.49 Stromtarif(P_el)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Stromtarif(P_el)->costs(temporal)[2020-01-03 23:45:00] - 11.49 Stromtarif(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Stromtarif(P_el)->CO2(temporal)": |- + Constraint `Stromtarif(P_el)->CO2(temporal)` + [time: 288]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:00:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:15:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:30:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 00:45:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:00:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:15:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-01 01:30:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:15:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:30:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 22:45:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:00:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:15:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:30:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Stromtarif(P_el)->CO2(temporal)[2020-01-03 23:45:00] - 0.075 Stromtarif(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Kessel(Q_fu)|on_hours_total": |- + Constraint `Kessel(Q_fu)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_fu)|on_hours_total - 0.25 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 0.25 Kessel(Q_fu)|on[2020-01-01 00:15:00]... -0.25 Kessel(Q_fu)|on[2020-01-03 23:15:00] - 0.25 Kessel(Q_fu)|on[2020-01-03 23:30:00] - 0.25 Kessel(Q_fu)|on[2020-01-03 23:45:00] = -0.0 + "Kessel(Q_fu)|switch|transition": |- + Constraint `Kessel(Q_fu)|switch|transition` + [time: 287]: + -------------------------------------------------------- + [2020-01-01 00:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:15:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 00:15:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:15:00] + 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:30:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 00:30:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:30:00] + 1 Kessel(Q_fu)|on[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:45:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 00:45:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:45:00] + 1 Kessel(Q_fu)|on[2020-01-01 00:30:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00] + 1 Kessel(Q_fu)|on[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:15:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 01:15:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:15:00] + 1 Kessel(Q_fu)|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:30:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 01:30:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:30:00] + 1 Kessel(Q_fu)|on[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:45:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 01:45:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:45:00] + 1 Kessel(Q_fu)|on[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 22:15:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 22:15:00] - 1 Kessel(Q_fu)|on[2020-01-03 22:15:00] + 1 Kessel(Q_fu)|on[2020-01-03 22:00:00] = -0.0 + [2020-01-03 22:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 22:30:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 22:30:00] - 1 Kessel(Q_fu)|on[2020-01-03 22:30:00] + 1 Kessel(Q_fu)|on[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 22:45:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 22:45:00] - 1 Kessel(Q_fu)|on[2020-01-03 22:45:00] + 1 Kessel(Q_fu)|on[2020-01-03 22:30:00] = -0.0 + [2020-01-03 23:00:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:00:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 23:00:00] - 1 Kessel(Q_fu)|on[2020-01-03 23:00:00] + 1 Kessel(Q_fu)|on[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:15:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 23:15:00] - 1 Kessel(Q_fu)|on[2020-01-03 23:15:00] + 1 Kessel(Q_fu)|on[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:30:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 23:30:00] - 1 Kessel(Q_fu)|on[2020-01-03 23:30:00] + 1 Kessel(Q_fu)|on[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:45:00] - 1 Kessel(Q_fu)|switch|off[2020-01-03 23:45:00] - 1 Kessel(Q_fu)|on[2020-01-03 23:45:00] + 1 Kessel(Q_fu)|on[2020-01-03 23:30:00] = -0.0 + "Kessel(Q_fu)|switch|initial": |- + Constraint `Kessel(Q_fu)|switch|initial` + ---------------------------------------- + +1 Kessel(Q_fu)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|switch|off[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_fu)|switch|mutex": |- + Constraint `Kessel(Q_fu)|switch|mutex` + [time: 288]: + --------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:00:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 00:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:15:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 00:15:00] ≤ 1.0 + [2020-01-01 00:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:30:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 00:30:00] ≤ 1.0 + [2020-01-01 00:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 00:45:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 00:45:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:00:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 01:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:15:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 01:15:00] ≤ 1.0 + [2020-01-01 01:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-01 01:30:00] + 1 Kessel(Q_fu)|switch|off[2020-01-01 01:30:00] ≤ 1.0 + ... + [2020-01-03 22:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 22:15:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 22:15:00] ≤ 1.0 + [2020-01-03 22:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 22:30:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 22:30:00] ≤ 1.0 + [2020-01-03 22:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 22:45:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 22:45:00] ≤ 1.0 + [2020-01-03 23:00:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:00:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 23:00:00] ≤ 1.0 + [2020-01-03 23:15:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:15:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 23:15:00] ≤ 1.0 + [2020-01-03 23:30:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:30:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 23:30:00] ≤ 1.0 + [2020-01-03 23:45:00]: +1 Kessel(Q_fu)|switch|on[2020-01-03 23:45:00] + 1 Kessel(Q_fu)|switch|off[2020-01-03 23:45:00] ≤ 1.0 + "Kessel(Q_fu)->costs(temporal)": |- + Constraint `Kessel(Q_fu)->costs(temporal)` + [time: 288]: + ------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:00:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:15:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:30:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 00:45:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 01:00:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 01:15:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-01 01:30:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 22:15:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 22:30:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 22:45:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:00:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:15:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:30:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Kessel(Q_fu)->costs(temporal)[2020-01-03 23:45:00] - 1000 Kessel(Q_fu)|switch|on[2020-01-03 23:45:00] = -0.0 + "Kessel(Q_fu)|flow_rate|ub": |- + Constraint `Kessel(Q_fu)|flow_rate|ub` + [time: 288]: + --------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 95 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 00:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:15:00] - 95 Kessel(Q_fu)|on[2020-01-01 00:15:00] ≤ -0.0 + [2020-01-01 00:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:30:00] - 95 Kessel(Q_fu)|on[2020-01-01 00:30:00] ≤ -0.0 + [2020-01-01 00:45:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:45:00] - 95 Kessel(Q_fu)|on[2020-01-01 00:45:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 95 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 01:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:15:00] - 95 Kessel(Q_fu)|on[2020-01-01 01:15:00] ≤ -0.0 + [2020-01-01 01:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:30:00] - 95 Kessel(Q_fu)|on[2020-01-01 01:30:00] ≤ -0.0 + ... + [2020-01-03 22:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 22:15:00] - 95 Kessel(Q_fu)|on[2020-01-03 22:15:00] ≤ -0.0 + [2020-01-03 22:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 22:30:00] - 95 Kessel(Q_fu)|on[2020-01-03 22:30:00] ≤ -0.0 + [2020-01-03 22:45:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 22:45:00] - 95 Kessel(Q_fu)|on[2020-01-03 22:45:00] ≤ -0.0 + [2020-01-03 23:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:00:00] - 95 Kessel(Q_fu)|on[2020-01-03 23:00:00] ≤ -0.0 + [2020-01-03 23:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:15:00] - 95 Kessel(Q_fu)|on[2020-01-03 23:15:00] ≤ -0.0 + [2020-01-03 23:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:30:00] - 95 Kessel(Q_fu)|on[2020-01-03 23:30:00] ≤ -0.0 + [2020-01-03 23:45:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:45:00] - 95 Kessel(Q_fu)|on[2020-01-03 23:45:00] ≤ -0.0 + "Kessel(Q_fu)|flow_rate|lb": |- + Constraint `Kessel(Q_fu)|flow_rate|lb` + [time: 288]: + --------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 12 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:15:00] - 12 Kessel(Q_fu)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:30:00] - 12 Kessel(Q_fu)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:45:00] - 12 Kessel(Q_fu)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 12 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:15:00] - 12 Kessel(Q_fu)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:30:00] - 12 Kessel(Q_fu)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 22:15:00] - 12 Kessel(Q_fu)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 22:30:00] - 12 Kessel(Q_fu)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 22:45:00] - 12 Kessel(Q_fu)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:00:00] - 12 Kessel(Q_fu)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:15:00] - 12 Kessel(Q_fu)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:30:00] - 12 Kessel(Q_fu)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-03 23:45:00] - 12 Kessel(Q_fu)|on[2020-01-03 23:45:00] ≥ -0.0 + "Kessel(Q_fu)|total_flow_hours": |- + Constraint `Kessel(Q_fu)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_fu)|total_flow_hours - 0.25 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 0.25 Kessel(Q_fu)|flow_rate[2020-01-01 00:15:00]... -0.25 Kessel(Q_fu)|flow_rate[2020-01-03 23:15:00] - 0.25 Kessel(Q_fu)|flow_rate[2020-01-03 23:30:00] - 0.25 Kessel(Q_fu)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Kessel(Q_th)|total_flow_hours": |- + Constraint `Kessel(Q_th)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_th)|total_flow_hours - 0.25 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 0.25 Kessel(Q_th)|flow_rate[2020-01-01 00:15:00]... -0.25 Kessel(Q_th)|flow_rate[2020-01-03 23:15:00] - 0.25 Kessel(Q_th)|flow_rate[2020-01-03 23:30:00] - 0.25 Kessel(Q_th)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Kessel|conversion_0": |- + Constraint `Kessel|conversion_0` + [time: 288]: + --------------------------------------------- + [2020-01-01 00:00:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 00:15:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 00:30:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 00:45:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 01:15:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-01 01:30:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 22:15:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 22:30:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 22:45:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 23:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 23:15:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 23:30:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +0.85 Kessel(Q_fu)|flow_rate[2020-01-03 23:45:00] - 1 Kessel(Q_th)|flow_rate[2020-01-03 23:45:00] = -0.0 + "BHKW2(Q_fu)|on_hours_total": |- + Constraint `BHKW2(Q_fu)|on_hours_total` + --------------------------------------- + +1 BHKW2(Q_fu)|on_hours_total - 0.25 BHKW2(Q_fu)|on[2020-01-01 00:00:00] - 0.25 BHKW2(Q_fu)|on[2020-01-01 00:15:00]... -0.25 BHKW2(Q_fu)|on[2020-01-03 23:15:00] - 0.25 BHKW2(Q_fu)|on[2020-01-03 23:30:00] - 0.25 BHKW2(Q_fu)|on[2020-01-03 23:45:00] = -0.0 + "BHKW2(Q_fu)|flow_rate|ub": |- + Constraint `BHKW2(Q_fu)|flow_rate|ub` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 288 BHKW2(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00] - 288 BHKW2(Q_fu)|on[2020-01-01 00:15:00] ≤ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:30:00] - 288 BHKW2(Q_fu)|on[2020-01-01 00:30:00] ≤ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:45:00] - 288 BHKW2(Q_fu)|on[2020-01-01 00:45:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 288 BHKW2(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:15:00] - 288 BHKW2(Q_fu)|on[2020-01-01 01:15:00] ≤ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:30:00] - 288 BHKW2(Q_fu)|on[2020-01-01 01:30:00] ≤ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:15:00] - 288 BHKW2(Q_fu)|on[2020-01-03 22:15:00] ≤ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:30:00] - 288 BHKW2(Q_fu)|on[2020-01-03 22:30:00] ≤ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:45:00] - 288 BHKW2(Q_fu)|on[2020-01-03 22:45:00] ≤ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:00:00] - 288 BHKW2(Q_fu)|on[2020-01-03 23:00:00] ≤ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] - 288 BHKW2(Q_fu)|on[2020-01-03 23:15:00] ≤ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] - 288 BHKW2(Q_fu)|on[2020-01-03 23:30:00] ≤ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] - 288 BHKW2(Q_fu)|on[2020-01-03 23:45:00] ≤ -0.0 + "BHKW2(Q_fu)|flow_rate|lb": |- + Constraint `BHKW2(Q_fu)|flow_rate|lb` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 87 BHKW2(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00] - 87 BHKW2(Q_fu)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:30:00] - 87 BHKW2(Q_fu)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:45:00] - 87 BHKW2(Q_fu)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 87 BHKW2(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:15:00] - 87 BHKW2(Q_fu)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:30:00] - 87 BHKW2(Q_fu)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:15:00] - 87 BHKW2(Q_fu)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:30:00] - 87 BHKW2(Q_fu)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:45:00] - 87 BHKW2(Q_fu)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:00:00] - 87 BHKW2(Q_fu)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] - 87 BHKW2(Q_fu)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] - 87 BHKW2(Q_fu)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] - 87 BHKW2(Q_fu)|on[2020-01-03 23:45:00] ≥ -0.0 + "BHKW2(Q_fu)|total_flow_hours": |- + Constraint `BHKW2(Q_fu)|total_flow_hours` + ----------------------------------------- + +1 BHKW2(Q_fu)|total_flow_hours - 0.25 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 0.25 BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00]... -0.25 BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] - 0.25 BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] - 0.25 BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] = -0.0 + "BHKW2(Q_th)|on_hours_total": |- + Constraint `BHKW2(Q_th)|on_hours_total` + --------------------------------------- + +1 BHKW2(Q_th)|on_hours_total - 0.25 BHKW2(Q_th)|on[2020-01-01 00:00:00] - 0.25 BHKW2(Q_th)|on[2020-01-01 00:15:00]... -0.25 BHKW2(Q_th)|on[2020-01-03 23:15:00] - 0.25 BHKW2(Q_th)|on[2020-01-03 23:30:00] - 0.25 BHKW2(Q_th)|on[2020-01-03 23:45:00] = -0.0 + "BHKW2(Q_th)|flow_rate|ub": |- + Constraint `BHKW2(Q_th)|flow_rate|ub` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:15:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 00:15:00] ≤ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:30:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 00:30:00] ≤ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:45:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 00:45:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:15:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 01:15:00] ≤ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:30:00] - 1e+07 BHKW2(Q_th)|on[2020-01-01 01:30:00] ≤ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 22:15:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 22:15:00] ≤ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 22:30:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 22:30:00] ≤ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 22:45:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 22:45:00] ≤ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:00:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 23:00:00] ≤ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:15:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 23:15:00] ≤ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:30:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 23:30:00] ≤ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:45:00] - 1e+07 BHKW2(Q_th)|on[2020-01-03 23:45:00] ≤ -0.0 + "BHKW2(Q_th)|flow_rate|lb": |- + Constraint `BHKW2(Q_th)|flow_rate|lb` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:15:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:30:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 00:45:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:15:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-01 01:30:00] - 1e-05 BHKW2(Q_th)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 22:15:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 22:30:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 22:45:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:00:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:15:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:30:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2(Q_th)|flow_rate[2020-01-03 23:45:00] - 1e-05 BHKW2(Q_th)|on[2020-01-03 23:45:00] ≥ -0.0 + "BHKW2(Q_th)|total_flow_hours": |- + Constraint `BHKW2(Q_th)|total_flow_hours` + ----------------------------------------- + +1 BHKW2(Q_th)|total_flow_hours - 0.25 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] - 0.25 BHKW2(Q_th)|flow_rate[2020-01-01 00:15:00]... -0.25 BHKW2(Q_th)|flow_rate[2020-01-03 23:15:00] - 0.25 BHKW2(Q_th)|flow_rate[2020-01-03 23:30:00] - 0.25 BHKW2(Q_th)|flow_rate[2020-01-03 23:45:00] = -0.0 + "BHKW2(P_el)|on_hours_total": |- + Constraint `BHKW2(P_el)|on_hours_total` + --------------------------------------- + +1 BHKW2(P_el)|on_hours_total - 0.25 BHKW2(P_el)|on[2020-01-01 00:00:00] - 0.25 BHKW2(P_el)|on[2020-01-01 00:15:00]... -0.25 BHKW2(P_el)|on[2020-01-03 23:15:00] - 0.25 BHKW2(P_el)|on[2020-01-03 23:30:00] - 0.25 BHKW2(P_el)|on[2020-01-03 23:45:00] = -0.0 + "BHKW2(P_el)|flow_rate|ub": |- + Constraint `BHKW2(P_el)|flow_rate|ub` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:15:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 00:15:00] ≤ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:30:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 00:30:00] ≤ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:45:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 00:45:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:15:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 01:15:00] ≤ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:30:00] - 1e+07 BHKW2(P_el)|on[2020-01-01 01:30:00] ≤ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 22:15:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 22:15:00] ≤ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 22:30:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 22:30:00] ≤ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 22:45:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 22:45:00] ≤ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:00:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 23:00:00] ≤ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:15:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 23:15:00] ≤ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:30:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 23:30:00] ≤ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:45:00] - 1e+07 BHKW2(P_el)|on[2020-01-03 23:45:00] ≤ -0.0 + "BHKW2(P_el)|flow_rate|lb": |- + Constraint `BHKW2(P_el)|flow_rate|lb` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:15:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:30:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 00:45:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:15:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-01 01:30:00] - 1e-05 BHKW2(P_el)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 22:15:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 22:30:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 22:45:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:00:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:15:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:30:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2(P_el)|flow_rate[2020-01-03 23:45:00] - 1e-05 BHKW2(P_el)|on[2020-01-03 23:45:00] ≥ -0.0 + "BHKW2(P_el)|total_flow_hours": |- + Constraint `BHKW2(P_el)|total_flow_hours` + ----------------------------------------- + +1 BHKW2(P_el)|total_flow_hours - 0.25 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 0.25 BHKW2(P_el)|flow_rate[2020-01-01 00:15:00]... -0.25 BHKW2(P_el)|flow_rate[2020-01-03 23:15:00] - 0.25 BHKW2(P_el)|flow_rate[2020-01-03 23:30:00] - 0.25 BHKW2(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "BHKW2|on|ub": |- + Constraint `BHKW2|on|ub` + [time: 288]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|on[2020-01-01 00:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 00:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 00:00:00] - 1 BHKW2(P_el)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 00:15:00]: +1 BHKW2|on[2020-01-01 00:15:00] - 1 BHKW2(Q_fu)|on[2020-01-01 00:15:00] - 1 BHKW2(Q_th)|on[2020-01-01 00:15:00] - 1 BHKW2(P_el)|on[2020-01-01 00:15:00] ≤ 1e-05 + [2020-01-01 00:30:00]: +1 BHKW2|on[2020-01-01 00:30:00] - 1 BHKW2(Q_fu)|on[2020-01-01 00:30:00] - 1 BHKW2(Q_th)|on[2020-01-01 00:30:00] - 1 BHKW2(P_el)|on[2020-01-01 00:30:00] ≤ 1e-05 + [2020-01-01 00:45:00]: +1 BHKW2|on[2020-01-01 00:45:00] - 1 BHKW2(Q_fu)|on[2020-01-01 00:45:00] - 1 BHKW2(Q_th)|on[2020-01-01 00:45:00] - 1 BHKW2(P_el)|on[2020-01-01 00:45:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 BHKW2|on[2020-01-01 01:00:00] - 1 BHKW2(Q_fu)|on[2020-01-01 01:00:00] - 1 BHKW2(Q_th)|on[2020-01-01 01:00:00] - 1 BHKW2(P_el)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 01:15:00]: +1 BHKW2|on[2020-01-01 01:15:00] - 1 BHKW2(Q_fu)|on[2020-01-01 01:15:00] - 1 BHKW2(Q_th)|on[2020-01-01 01:15:00] - 1 BHKW2(P_el)|on[2020-01-01 01:15:00] ≤ 1e-05 + [2020-01-01 01:30:00]: +1 BHKW2|on[2020-01-01 01:30:00] - 1 BHKW2(Q_fu)|on[2020-01-01 01:30:00] - 1 BHKW2(Q_th)|on[2020-01-01 01:30:00] - 1 BHKW2(P_el)|on[2020-01-01 01:30:00] ≤ 1e-05 + ... + [2020-01-03 22:15:00]: +1 BHKW2|on[2020-01-03 22:15:00] - 1 BHKW2(Q_fu)|on[2020-01-03 22:15:00] - 1 BHKW2(Q_th)|on[2020-01-03 22:15:00] - 1 BHKW2(P_el)|on[2020-01-03 22:15:00] ≤ 1e-05 + [2020-01-03 22:30:00]: +1 BHKW2|on[2020-01-03 22:30:00] - 1 BHKW2(Q_fu)|on[2020-01-03 22:30:00] - 1 BHKW2(Q_th)|on[2020-01-03 22:30:00] - 1 BHKW2(P_el)|on[2020-01-03 22:30:00] ≤ 1e-05 + [2020-01-03 22:45:00]: +1 BHKW2|on[2020-01-03 22:45:00] - 1 BHKW2(Q_fu)|on[2020-01-03 22:45:00] - 1 BHKW2(Q_th)|on[2020-01-03 22:45:00] - 1 BHKW2(P_el)|on[2020-01-03 22:45:00] ≤ 1e-05 + [2020-01-03 23:00:00]: +1 BHKW2|on[2020-01-03 23:00:00] - 1 BHKW2(Q_fu)|on[2020-01-03 23:00:00] - 1 BHKW2(Q_th)|on[2020-01-03 23:00:00] - 1 BHKW2(P_el)|on[2020-01-03 23:00:00] ≤ 1e-05 + [2020-01-03 23:15:00]: +1 BHKW2|on[2020-01-03 23:15:00] - 1 BHKW2(Q_fu)|on[2020-01-03 23:15:00] - 1 BHKW2(Q_th)|on[2020-01-03 23:15:00] - 1 BHKW2(P_el)|on[2020-01-03 23:15:00] ≤ 1e-05 + [2020-01-03 23:30:00]: +1 BHKW2|on[2020-01-03 23:30:00] - 1 BHKW2(Q_fu)|on[2020-01-03 23:30:00] - 1 BHKW2(Q_th)|on[2020-01-03 23:30:00] - 1 BHKW2(P_el)|on[2020-01-03 23:30:00] ≤ 1e-05 + [2020-01-03 23:45:00]: +1 BHKW2|on[2020-01-03 23:45:00] - 1 BHKW2(Q_fu)|on[2020-01-03 23:45:00] - 1 BHKW2(Q_th)|on[2020-01-03 23:45:00] - 1 BHKW2(P_el)|on[2020-01-03 23:45:00] ≤ 1e-05 + "BHKW2|on|lb": |- + Constraint `BHKW2|on|lb` + [time: 288]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|on[2020-01-01 00:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 00:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 00:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 BHKW2|on[2020-01-01 00:15:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 00:15:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 00:15:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 BHKW2|on[2020-01-01 00:30:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 00:30:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 00:30:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 BHKW2|on[2020-01-01 00:45:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 00:45:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 00:45:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|on[2020-01-01 01:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 01:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 01:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 BHKW2|on[2020-01-01 01:15:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 01:15:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 01:15:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 BHKW2|on[2020-01-01 01:30:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-01 01:30:00] - 0.3333 BHKW2(Q_th)|on[2020-01-01 01:30:00] - 0.3333 BHKW2(P_el)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2|on[2020-01-03 22:15:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 22:15:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 22:15:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 BHKW2|on[2020-01-03 22:30:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 22:30:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 22:30:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 BHKW2|on[2020-01-03 22:45:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 22:45:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 22:45:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 BHKW2|on[2020-01-03 23:00:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 23:00:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 23:00:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 BHKW2|on[2020-01-03 23:15:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 23:15:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 23:15:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 BHKW2|on[2020-01-03 23:30:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 23:30:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 23:30:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 BHKW2|on[2020-01-03 23:45:00] - 0.3333 BHKW2(Q_fu)|on[2020-01-03 23:45:00] - 0.3333 BHKW2(Q_th)|on[2020-01-03 23:45:00] - 0.3333 BHKW2(P_el)|on[2020-01-03 23:45:00] ≥ -0.0 + "BHKW2|on_hours_total": |- + Constraint `BHKW2|on_hours_total` + --------------------------------- + +1 BHKW2|on_hours_total - 0.25 BHKW2|on[2020-01-01 00:00:00] - 0.25 BHKW2|on[2020-01-01 00:15:00]... -0.25 BHKW2|on[2020-01-03 23:15:00] - 0.25 BHKW2|on[2020-01-03 23:30:00] - 0.25 BHKW2|on[2020-01-03 23:45:00] = -0.0 + "BHKW2|switch|transition": |- + Constraint `BHKW2|switch|transition` + [time: 287]: + ------------------------------------------------- + [2020-01-01 00:15:00]: +1 BHKW2|switch|on[2020-01-01 00:15:00] - 1 BHKW2|switch|off[2020-01-01 00:15:00] - 1 BHKW2|on[2020-01-01 00:15:00] + 1 BHKW2|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:30:00]: +1 BHKW2|switch|on[2020-01-01 00:30:00] - 1 BHKW2|switch|off[2020-01-01 00:30:00] - 1 BHKW2|on[2020-01-01 00:30:00] + 1 BHKW2|on[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:45:00]: +1 BHKW2|switch|on[2020-01-01 00:45:00] - 1 BHKW2|switch|off[2020-01-01 00:45:00] - 1 BHKW2|on[2020-01-01 00:45:00] + 1 BHKW2|on[2020-01-01 00:30:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2|switch|on[2020-01-01 01:00:00] - 1 BHKW2|switch|off[2020-01-01 01:00:00] - 1 BHKW2|on[2020-01-01 01:00:00] + 1 BHKW2|on[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:15:00]: +1 BHKW2|switch|on[2020-01-01 01:15:00] - 1 BHKW2|switch|off[2020-01-01 01:15:00] - 1 BHKW2|on[2020-01-01 01:15:00] + 1 BHKW2|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:30:00]: +1 BHKW2|switch|on[2020-01-01 01:30:00] - 1 BHKW2|switch|off[2020-01-01 01:30:00] - 1 BHKW2|on[2020-01-01 01:30:00] + 1 BHKW2|on[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:45:00]: +1 BHKW2|switch|on[2020-01-01 01:45:00] - 1 BHKW2|switch|off[2020-01-01 01:45:00] - 1 BHKW2|on[2020-01-01 01:45:00] + 1 BHKW2|on[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2|switch|on[2020-01-03 22:15:00] - 1 BHKW2|switch|off[2020-01-03 22:15:00] - 1 BHKW2|on[2020-01-03 22:15:00] + 1 BHKW2|on[2020-01-03 22:00:00] = -0.0 + [2020-01-03 22:30:00]: +1 BHKW2|switch|on[2020-01-03 22:30:00] - 1 BHKW2|switch|off[2020-01-03 22:30:00] - 1 BHKW2|on[2020-01-03 22:30:00] + 1 BHKW2|on[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:45:00]: +1 BHKW2|switch|on[2020-01-03 22:45:00] - 1 BHKW2|switch|off[2020-01-03 22:45:00] - 1 BHKW2|on[2020-01-03 22:45:00] + 1 BHKW2|on[2020-01-03 22:30:00] = -0.0 + [2020-01-03 23:00:00]: +1 BHKW2|switch|on[2020-01-03 23:00:00] - 1 BHKW2|switch|off[2020-01-03 23:00:00] - 1 BHKW2|on[2020-01-03 23:00:00] + 1 BHKW2|on[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:15:00]: +1 BHKW2|switch|on[2020-01-03 23:15:00] - 1 BHKW2|switch|off[2020-01-03 23:15:00] - 1 BHKW2|on[2020-01-03 23:15:00] + 1 BHKW2|on[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:30:00]: +1 BHKW2|switch|on[2020-01-03 23:30:00] - 1 BHKW2|switch|off[2020-01-03 23:30:00] - 1 BHKW2|on[2020-01-03 23:30:00] + 1 BHKW2|on[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:45:00]: +1 BHKW2|switch|on[2020-01-03 23:45:00] - 1 BHKW2|switch|off[2020-01-03 23:45:00] - 1 BHKW2|on[2020-01-03 23:45:00] + 1 BHKW2|on[2020-01-03 23:30:00] = -0.0 + "BHKW2|switch|initial": |- + Constraint `BHKW2|switch|initial` + --------------------------------- + +1 BHKW2|switch|on[2020-01-01 00:00:00] - 1 BHKW2|switch|off[2020-01-01 00:00:00] - 1 BHKW2|on[2020-01-01 00:00:00] = -0.0 + "BHKW2|switch|mutex": |- + Constraint `BHKW2|switch|mutex` + [time: 288]: + -------------------------------------------- + [2020-01-01 00:00:00]: +1 BHKW2|switch|on[2020-01-01 00:00:00] + 1 BHKW2|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 00:15:00]: +1 BHKW2|switch|on[2020-01-01 00:15:00] + 1 BHKW2|switch|off[2020-01-01 00:15:00] ≤ 1.0 + [2020-01-01 00:30:00]: +1 BHKW2|switch|on[2020-01-01 00:30:00] + 1 BHKW2|switch|off[2020-01-01 00:30:00] ≤ 1.0 + [2020-01-01 00:45:00]: +1 BHKW2|switch|on[2020-01-01 00:45:00] + 1 BHKW2|switch|off[2020-01-01 00:45:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 BHKW2|switch|on[2020-01-01 01:00:00] + 1 BHKW2|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 01:15:00]: +1 BHKW2|switch|on[2020-01-01 01:15:00] + 1 BHKW2|switch|off[2020-01-01 01:15:00] ≤ 1.0 + [2020-01-01 01:30:00]: +1 BHKW2|switch|on[2020-01-01 01:30:00] + 1 BHKW2|switch|off[2020-01-01 01:30:00] ≤ 1.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2|switch|on[2020-01-03 22:15:00] + 1 BHKW2|switch|off[2020-01-03 22:15:00] ≤ 1.0 + [2020-01-03 22:30:00]: +1 BHKW2|switch|on[2020-01-03 22:30:00] + 1 BHKW2|switch|off[2020-01-03 22:30:00] ≤ 1.0 + [2020-01-03 22:45:00]: +1 BHKW2|switch|on[2020-01-03 22:45:00] + 1 BHKW2|switch|off[2020-01-03 22:45:00] ≤ 1.0 + [2020-01-03 23:00:00]: +1 BHKW2|switch|on[2020-01-03 23:00:00] + 1 BHKW2|switch|off[2020-01-03 23:00:00] ≤ 1.0 + [2020-01-03 23:15:00]: +1 BHKW2|switch|on[2020-01-03 23:15:00] + 1 BHKW2|switch|off[2020-01-03 23:15:00] ≤ 1.0 + [2020-01-03 23:30:00]: +1 BHKW2|switch|on[2020-01-03 23:30:00] + 1 BHKW2|switch|off[2020-01-03 23:30:00] ≤ 1.0 + [2020-01-03 23:45:00]: +1 BHKW2|switch|on[2020-01-03 23:45:00] + 1 BHKW2|switch|off[2020-01-03 23:45:00] ≤ 1.0 + "BHKW2->costs(temporal)": |- + Constraint `BHKW2->costs(temporal)` + [time: 288]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 00:00:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 BHKW2->costs(temporal)[2020-01-01 00:15:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 BHKW2->costs(temporal)[2020-01-01 00:30:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 BHKW2->costs(temporal)[2020-01-01 00:45:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 BHKW2->costs(temporal)[2020-01-01 01:00:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 BHKW2->costs(temporal)[2020-01-01 01:15:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 BHKW2->costs(temporal)[2020-01-01 01:30:00] - 2.4e+04 BHKW2|switch|on[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 BHKW2->costs(temporal)[2020-01-03 22:15:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 BHKW2->costs(temporal)[2020-01-03 22:30:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 BHKW2->costs(temporal)[2020-01-03 22:45:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 BHKW2->costs(temporal)[2020-01-03 23:00:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 BHKW2->costs(temporal)[2020-01-03 23:15:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 BHKW2->costs(temporal)[2020-01-03 23:30:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 BHKW2->costs(temporal)[2020-01-03 23:45:00] - 2.4e+04 BHKW2|switch|on[2020-01-03 23:45:00] = -0.0 + "BHKW2|conversion_0": |- + Constraint `BHKW2|conversion_0` + [time: 288]: + -------------------------------------------- + [2020-01-01 00:00:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 00:30:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 00:45:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 01:15:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-01 01:30:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 22:15:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 22:30:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 22:45:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 23:00:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +0.58 BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] - 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:45:00] = -0.0 + "BHKW2|conversion_1": |- + Constraint `BHKW2|conversion_1` + [time: 288]: + -------------------------------------------- + [2020-01-01 00:00:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 00:30:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 00:45:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 01:15:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-01 01:30:00] - 1 BHKW2(P_el)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 22:15:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 22:30:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 22:45:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 23:00:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +0.22 BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] - 1 BHKW2(P_el)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Speicher(Q_th_load)|on_hours_total": |- + Constraint `Speicher(Q_th_load)|on_hours_total` + ----------------------------------------------- + +1 Speicher(Q_th_load)|on_hours_total - 0.25 Speicher(Q_th_load)|on[2020-01-01 00:00:00] - 0.25 Speicher(Q_th_load)|on[2020-01-01 00:15:00]... -0.25 Speicher(Q_th_load)|on[2020-01-03 23:15:00] - 0.25 Speicher(Q_th_load)|on[2020-01-03 23:30:00] - 0.25 Speicher(Q_th_load)|on[2020-01-03 23:45:00] = -0.0 + "Speicher(Q_th_load)|flow_rate|ub": |- + Constraint `Speicher(Q_th_load)|flow_rate|ub` + [time: 288]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 137 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 00:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00] - 137 Speicher(Q_th_load)|on[2020-01-01 00:15:00] ≤ -0.0 + [2020-01-01 00:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:30:00] - 137 Speicher(Q_th_load)|on[2020-01-01 00:30:00] ≤ -0.0 + [2020-01-01 00:45:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:45:00] - 137 Speicher(Q_th_load)|on[2020-01-01 00:45:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 137 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 01:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:15:00] - 137 Speicher(Q_th_load)|on[2020-01-01 01:15:00] ≤ -0.0 + [2020-01-01 01:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:30:00] - 137 Speicher(Q_th_load)|on[2020-01-01 01:30:00] ≤ -0.0 + ... + [2020-01-03 22:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:15:00] - 137 Speicher(Q_th_load)|on[2020-01-03 22:15:00] ≤ -0.0 + [2020-01-03 22:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:30:00] - 137 Speicher(Q_th_load)|on[2020-01-03 22:30:00] ≤ -0.0 + [2020-01-03 22:45:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:45:00] - 137 Speicher(Q_th_load)|on[2020-01-03 22:45:00] ≤ -0.0 + [2020-01-03 23:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:00:00] - 137 Speicher(Q_th_load)|on[2020-01-03 23:00:00] ≤ -0.0 + [2020-01-03 23:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] - 137 Speicher(Q_th_load)|on[2020-01-03 23:15:00] ≤ -0.0 + [2020-01-03 23:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] - 137 Speicher(Q_th_load)|on[2020-01-03 23:30:00] ≤ -0.0 + [2020-01-03 23:45:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] - 137 Speicher(Q_th_load)|on[2020-01-03 23:45:00] ≤ -0.0 + "Speicher(Q_th_load)|flow_rate|lb": |- + Constraint `Speicher(Q_th_load)|flow_rate|lb` + [time: 288]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:30:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:45:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:15:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:30:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:15:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:30:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:45:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-03 23:45:00] ≥ -0.0 + "Speicher(Q_th_load)|total_flow_hours": |- + Constraint `Speicher(Q_th_load)|total_flow_hours` + ------------------------------------------------- + +1 Speicher(Q_th_load)|total_flow_hours - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00]... -0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Speicher(Q_th_unload)|on_hours_total": |- + Constraint `Speicher(Q_th_unload)|on_hours_total` + ------------------------------------------------- + +1 Speicher(Q_th_unload)|on_hours_total - 0.25 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] - 0.25 Speicher(Q_th_unload)|on[2020-01-01 00:15:00]... -0.25 Speicher(Q_th_unload)|on[2020-01-03 23:15:00] - 0.25 Speicher(Q_th_unload)|on[2020-01-03 23:30:00] - 0.25 Speicher(Q_th_unload)|on[2020-01-03 23:45:00] = -0.0 + "Speicher(Q_th_unload)|flow_rate|ub": |- + Constraint `Speicher(Q_th_unload)|flow_rate|ub` + [time: 288]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 00:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 00:15:00] ≤ -0.0 + [2020-01-01 00:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:30:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 00:30:00] ≤ -0.0 + [2020-01-01 00:45:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:45:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 00:45:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 01:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:15:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 01:15:00] ≤ -0.0 + [2020-01-01 01:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:30:00] - 158 Speicher(Q_th_unload)|on[2020-01-01 01:30:00] ≤ -0.0 + ... + [2020-01-03 22:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:15:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 22:15:00] ≤ -0.0 + [2020-01-03 22:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:30:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 22:30:00] ≤ -0.0 + [2020-01-03 22:45:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:45:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 22:45:00] ≤ -0.0 + [2020-01-03 23:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:00:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 23:00:00] ≤ -0.0 + [2020-01-03 23:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 23:15:00] ≤ -0.0 + [2020-01-03 23:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 23:30:00] ≤ -0.0 + [2020-01-03 23:45:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00] - 158 Speicher(Q_th_unload)|on[2020-01-03 23:45:00] ≤ -0.0 + "Speicher(Q_th_unload)|flow_rate|lb": |- + Constraint `Speicher(Q_th_unload)|flow_rate|lb` + [time: 288]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 00:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:15:00] ≥ -0.0 + [2020-01-01 00:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:30:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:30:00] ≥ -0.0 + [2020-01-01 00:45:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:45:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:45:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:15:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:15:00] ≥ -0.0 + [2020-01-01 01:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:30:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:30:00] ≥ -0.0 + ... + [2020-01-03 22:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:15:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 22:15:00] ≥ -0.0 + [2020-01-03 22:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:30:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 22:30:00] ≥ -0.0 + [2020-01-03 22:45:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:45:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 22:45:00] ≥ -0.0 + [2020-01-03 23:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 23:00:00] ≥ -0.0 + [2020-01-03 23:15:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 23:15:00] ≥ -0.0 + [2020-01-03 23:30:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 23:30:00] ≥ -0.0 + [2020-01-03 23:45:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-03 23:45:00] ≥ -0.0 + "Speicher(Q_th_unload)|total_flow_hours": |- + Constraint `Speicher(Q_th_unload)|total_flow_hours` + --------------------------------------------------- + +1 Speicher(Q_th_unload)|total_flow_hours - 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00]... -0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00] - 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00] - 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Speicher|prevent_simultaneous_use": |- + Constraint `Speicher|prevent_simultaneous_use` + [time: 288]: + ----------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 00:15:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:15:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:15:00] ≤ 1.0 + [2020-01-01 00:30:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:30:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:30:00] ≤ 1.0 + [2020-01-01 00:45:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:45:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:45:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 01:15:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:15:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:15:00] ≤ 1.0 + [2020-01-01 01:30:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:30:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:30:00] ≤ 1.0 + ... + [2020-01-03 22:15:00]: +1 Speicher(Q_th_load)|on[2020-01-03 22:15:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 22:15:00] ≤ 1.0 + [2020-01-03 22:30:00]: +1 Speicher(Q_th_load)|on[2020-01-03 22:30:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 22:30:00] ≤ 1.0 + [2020-01-03 22:45:00]: +1 Speicher(Q_th_load)|on[2020-01-03 22:45:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 22:45:00] ≤ 1.0 + [2020-01-03 23:00:00]: +1 Speicher(Q_th_load)|on[2020-01-03 23:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 23:00:00] ≤ 1.0 + [2020-01-03 23:15:00]: +1 Speicher(Q_th_load)|on[2020-01-03 23:15:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 23:15:00] ≤ 1.0 + [2020-01-03 23:30:00]: +1 Speicher(Q_th_load)|on[2020-01-03 23:30:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 23:30:00] ≤ 1.0 + [2020-01-03 23:45:00]: +1 Speicher(Q_th_load)|on[2020-01-03 23:45:00] + 1 Speicher(Q_th_unload)|on[2020-01-03 23:45:00] ≤ 1.0 + "Speicher|netto_discharge": |- + Constraint `Speicher|netto_discharge` + [time: 288]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|netto_discharge[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Speicher|netto_discharge[2020-01-01 00:15:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Speicher|netto_discharge[2020-01-01 00:30:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:30:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Speicher|netto_discharge[2020-01-01 00:45:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:45:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher|netto_discharge[2020-01-01 01:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Speicher|netto_discharge[2020-01-01 01:15:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:15:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Speicher|netto_discharge[2020-01-01 01:30:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:30:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Speicher|netto_discharge[2020-01-03 22:15:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:15:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Speicher|netto_discharge[2020-01-03 22:30:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:30:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Speicher|netto_discharge[2020-01-03 22:45:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:45:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Speicher|netto_discharge[2020-01-03 23:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Speicher|netto_discharge[2020-01-03 23:15:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Speicher|netto_discharge[2020-01-03 23:30:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Speicher|netto_discharge[2020-01-03 23:45:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Speicher|charge_state": |- + Constraint `Speicher|charge_state` + [time: 288]: + ----------------------------------------------- + [2020-01-01 00:15:00]: +1 Speicher|charge_state[2020-01-01 00:15:00] - 0.9997 Speicher|charge_state[2020-01-01 00:00:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:30:00]: +1 Speicher|charge_state[2020-01-01 00:30:00] - 0.9997 Speicher|charge_state[2020-01-01 00:15:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:45:00]: +1 Speicher|charge_state[2020-01-01 00:45:00] - 0.9997 Speicher|charge_state[2020-01-01 00:30:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 00:30:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:30:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 0.9997 Speicher|charge_state[2020-01-01 00:45:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 00:45:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:15:00]: +1 Speicher|charge_state[2020-01-01 01:15:00] - 0.9997 Speicher|charge_state[2020-01-01 01:00:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:30:00]: +1 Speicher|charge_state[2020-01-01 01:30:00] - 0.9997 Speicher|charge_state[2020-01-01 01:15:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 01:15:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:45:00]: +1 Speicher|charge_state[2020-01-01 01:45:00] - 0.9997 Speicher|charge_state[2020-01-01 01:30:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-01 01:30:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:30:00]: +1 Speicher|charge_state[2020-01-03 22:30:00] - 0.9997 Speicher|charge_state[2020-01-03 22:15:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 22:15:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:45:00]: +1 Speicher|charge_state[2020-01-03 22:45:00] - 0.9997 Speicher|charge_state[2020-01-03 22:30:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 22:30:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:30:00] = -0.0 + [2020-01-03 23:00:00]: +1 Speicher|charge_state[2020-01-03 23:00:00] - 0.9997 Speicher|charge_state[2020-01-03 22:45:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 22:45:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:15:00]: +1 Speicher|charge_state[2020-01-03 23:15:00] - 0.9997 Speicher|charge_state[2020-01-03 23:00:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:00:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:30:00]: +1 Speicher|charge_state[2020-01-03 23:30:00] - 0.9997 Speicher|charge_state[2020-01-03 23:15:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:45:00]: +1 Speicher|charge_state[2020-01-03 23:45:00] - 0.9997 Speicher|charge_state[2020-01-03 23:30:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00] = -0.0 + [2020-01-04 00:00:00]: +1 Speicher|charge_state[2020-01-04 00:00:00] - 0.9997 Speicher|charge_state[2020-01-03 23:45:00] - 0.25 Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] + 0.25 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00] = -0.0 + "Speicher|initial_charge_state": |- + Constraint `Speicher|initial_charge_state` + ------------------------------------------ + +1 Speicher|charge_state[2020-01-01 00:00:00] = 137.0 + "Speicher|final_charge_max": |- + Constraint `Speicher|final_charge_max` + -------------------------------------- + +1 Speicher|charge_state[2020-01-04 00:00:00] ≤ 158.0 + "Speicher|final_charge_min": |- + Constraint `Speicher|final_charge_min` + -------------------------------------- + +1 Speicher|charge_state[2020-01-04 00:00:00] ≥ 137.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 288]: + --------------------------------------- + [2020-01-01 00:00:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 00:00:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] + 1 Strom|excess_input[2020-01-01 00:00:00] - 1 Strom|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 00:15:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 00:15:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 00:15:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:15:00] + 1 Strom|excess_input[2020-01-01 00:15:00] - 1 Strom|excess_output[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 00:30:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 00:30:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 00:30:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:30:00] + 1 Strom|excess_input[2020-01-01 00:30:00] - 1 Strom|excess_output[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 00:45:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 00:45:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 00:45:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:45:00] + 1 Strom|excess_input[2020-01-01 00:45:00] - 1 Strom|excess_output[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 01:00:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 01:00:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 01:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] + 1 Strom|excess_input[2020-01-01 01:00:00] - 1 Strom|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 01:15:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 01:15:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 01:15:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:15:00] + 1 Strom|excess_input[2020-01-01 01:15:00] - 1 Strom|excess_output[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-01 01:30:00] + 1 BHKW2(P_el)|flow_rate[2020-01-01 01:30:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-01 01:30:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:30:00] + 1 Strom|excess_input[2020-01-01 01:30:00] - 1 Strom|excess_output[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 22:15:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 22:15:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 22:15:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 22:15:00] + 1 Strom|excess_input[2020-01-03 22:15:00] - 1 Strom|excess_output[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 22:30:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 22:30:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 22:30:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 22:30:00] + 1 Strom|excess_input[2020-01-03 22:30:00] - 1 Strom|excess_output[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 22:45:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 22:45:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 22:45:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 22:45:00] + 1 Strom|excess_input[2020-01-03 22:45:00] - 1 Strom|excess_output[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 23:00:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 23:00:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 23:00:00] + 1 Strom|excess_input[2020-01-03 23:00:00] - 1 Strom|excess_output[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 23:15:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 23:15:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:15:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 23:15:00] + 1 Strom|excess_input[2020-01-03 23:15:00] - 1 Strom|excess_output[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 23:30:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 23:30:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:30:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 23:30:00] + 1 Strom|excess_input[2020-01-03 23:30:00] - 1 Strom|excess_output[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Stromtarif(P_el)|flow_rate[2020-01-03 23:45:00] + 1 BHKW2(P_el)|flow_rate[2020-01-03 23:45:00] - 1 Stromlast(P_el_Last)|flow_rate[2020-01-03 23:45:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-03 23:45:00] + 1 Strom|excess_input[2020-01-03 23:45:00] - 1 Strom|excess_output[2020-01-03 23:45:00] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 2.5e+04 Strom|excess_input[2020-01-01 00:00:00] - 2.5e+04 Strom|excess_input[2020-01-01 00:15:00]... -2.5e+04 Strom|excess_output[2020-01-03 23:15:00] - 2.5e+04 Strom|excess_output[2020-01-03 23:30:00] - 2.5e+04 Strom|excess_output[2020-01-03 23:45:00] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 288]: + ------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Fernwärme|excess_input[2020-01-01 00:00:00] - 1 Fernwärme|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:15:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:15:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:15:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:15:00] + 1 Fernwärme|excess_input[2020-01-01 00:15:00] - 1 Fernwärme|excess_output[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:30:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:30:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:30:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:30:00] + 1 Fernwärme|excess_input[2020-01-01 00:30:00] - 1 Fernwärme|excess_output[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:45:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 00:45:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:45:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:45:00] + 1 Fernwärme|excess_input[2020-01-01 00:45:00] - 1 Fernwärme|excess_output[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Fernwärme|excess_input[2020-01-01 01:00:00] - 1 Fernwärme|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:15:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:15:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:15:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:15:00] + 1 Fernwärme|excess_input[2020-01-01 01:15:00] - 1 Fernwärme|excess_output[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:30:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-01 01:30:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:30:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:30:00] + 1 Fernwärme|excess_input[2020-01-01 01:30:00] - 1 Fernwärme|excess_output[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 22:15:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 22:15:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:15:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:15:00] + 1 Fernwärme|excess_input[2020-01-03 22:15:00] - 1 Fernwärme|excess_output[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 22:30:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 22:30:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:30:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:30:00] + 1 Fernwärme|excess_input[2020-01-03 22:30:00] - 1 Fernwärme|excess_output[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 22:45:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 22:45:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 22:45:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 22:45:00] + 1 Fernwärme|excess_input[2020-01-03 22:45:00] - 1 Fernwärme|excess_output[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 23:00:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:00:00] + 1 Fernwärme|excess_input[2020-01-03 23:00:00] - 1 Fernwärme|excess_output[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 23:15:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:15:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:15:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:15:00] + 1 Fernwärme|excess_input[2020-01-03 23:15:00] - 1 Fernwärme|excess_output[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 23:30:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:30:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:30:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:30:00] + 1 Fernwärme|excess_input[2020-01-03 23:30:00] - 1 Fernwärme|excess_output[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Kessel(Q_th)|flow_rate[2020-01-03 23:45:00] + 1 BHKW2(Q_th)|flow_rate[2020-01-03 23:45:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-03 23:45:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-03 23:45:00] + 1 Fernwärme|excess_input[2020-01-03 23:45:00] - 1 Fernwärme|excess_output[2020-01-03 23:45:00] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 2.5e+04 Fernwärme|excess_input[2020-01-01 00:00:00] - 2.5e+04 Fernwärme|excess_input[2020-01-01 00:15:00]... -2.5e+04 Fernwärme|excess_output[2020-01-03 23:15:00] - 2.5e+04 Fernwärme|excess_output[2020-01-03 23:30:00] - 2.5e+04 Fernwärme|excess_output[2020-01-03 23:45:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 288]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:15:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:15:00] + 1 Gas|excess_input[2020-01-01 00:15:00] - 1 Gas|excess_output[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:30:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:30:00] + 1 Gas|excess_input[2020-01-01 00:30:00] - 1 Gas|excess_output[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:45:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:45:00] + 1 Gas|excess_input[2020-01-01 00:45:00] - 1 Gas|excess_output[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:15:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:15:00] + 1 Gas|excess_input[2020-01-01 01:15:00] - 1 Gas|excess_output[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:30:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:30:00] + 1 Gas|excess_input[2020-01-01 01:30:00] - 1 Gas|excess_output[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:15:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 22:15:00] + 1 Gas|excess_input[2020-01-03 22:15:00] - 1 Gas|excess_output[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:30:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 22:30:00] + 1 Gas|excess_input[2020-01-03 22:30:00] - 1 Gas|excess_output[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 22:45:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 22:45:00] + 1 Gas|excess_input[2020-01-03 22:45:00] - 1 Gas|excess_output[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 23:00:00] + 1 Gas|excess_input[2020-01-03 23:00:00] - 1 Gas|excess_output[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:15:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 23:15:00] + 1 Gas|excess_input[2020-01-03 23:15:00] - 1 Gas|excess_output[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:30:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 23:30:00] + 1 Gas|excess_input[2020-01-03 23:30:00] - 1 Gas|excess_output[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-03 23:45:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-03 23:45:00] + 1 Gas|excess_input[2020-01-03 23:45:00] - 1 Gas|excess_output[2020-01-03 23:45:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 2.5e+04 Gas|excess_input[2020-01-01 00:00:00] - 2.5e+04 Gas|excess_input[2020-01-01 00:15:00]... -2.5e+04 Gas|excess_output[2020-01-03 23:15:00] - 2.5e+04 Gas|excess_output[2020-01-03 23:30:00] - 2.5e+04 Gas|excess_output[2020-01-03 23:45:00] = -0.0 + "Kohle|balance": |- + Constraint `Kohle|balance` + [time: 288]: + --------------------------------------- + [2020-01-01 00:00:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Kohle|excess_input[2020-01-01 00:00:00] - 1 Kohle|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 00:15:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:15:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:15:00] + 1 Kohle|excess_input[2020-01-01 00:15:00] - 1 Kohle|excess_output[2020-01-01 00:15:00] = -0.0 + [2020-01-01 00:30:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:30:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:30:00] + 1 Kohle|excess_input[2020-01-01 00:30:00] - 1 Kohle|excess_output[2020-01-01 00:30:00] = -0.0 + [2020-01-01 00:45:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 00:45:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 00:45:00] + 1 Kohle|excess_input[2020-01-01 00:45:00] - 1 Kohle|excess_output[2020-01-01 00:45:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Kohle|excess_input[2020-01-01 01:00:00] - 1 Kohle|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 01:15:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:15:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:15:00] + 1 Kohle|excess_input[2020-01-01 01:15:00] - 1 Kohle|excess_output[2020-01-01 01:15:00] = -0.0 + [2020-01-01 01:30:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-01 01:30:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-01 01:30:00] + 1 Kohle|excess_input[2020-01-01 01:30:00] - 1 Kohle|excess_output[2020-01-01 01:30:00] = -0.0 + ... + [2020-01-03 22:15:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:15:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:15:00] + 1 Kohle|excess_input[2020-01-03 22:15:00] - 1 Kohle|excess_output[2020-01-03 22:15:00] = -0.0 + [2020-01-03 22:30:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:30:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:30:00] + 1 Kohle|excess_input[2020-01-03 22:30:00] - 1 Kohle|excess_output[2020-01-03 22:30:00] = -0.0 + [2020-01-03 22:45:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 22:45:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 22:45:00] + 1 Kohle|excess_input[2020-01-03 22:45:00] - 1 Kohle|excess_output[2020-01-03 22:45:00] = -0.0 + [2020-01-03 23:00:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:00:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:00:00] + 1 Kohle|excess_input[2020-01-03 23:00:00] - 1 Kohle|excess_output[2020-01-03 23:00:00] = -0.0 + [2020-01-03 23:15:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:15:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:15:00] + 1 Kohle|excess_input[2020-01-03 23:15:00] - 1 Kohle|excess_output[2020-01-03 23:15:00] = -0.0 + [2020-01-03 23:30:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:30:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:30:00] + 1 Kohle|excess_input[2020-01-03 23:30:00] - 1 Kohle|excess_output[2020-01-03 23:30:00] = -0.0 + [2020-01-03 23:45:00]: +1 Kohletarif(Q_Kohle)|flow_rate[2020-01-03 23:45:00] - 1 BHKW2(Q_fu)|flow_rate[2020-01-03 23:45:00] + 1 Kohle|excess_input[2020-01-03 23:45:00] - 1 Kohle|excess_output[2020-01-03 23:45:00] = -0.0 + "Kohle->Penalty": |- + Constraint `Kohle->Penalty` + --------------------------- + +1 Kohle->Penalty - 2.5e+04 Kohle|excess_input[2020-01-01 00:00:00] - 2.5e+04 Kohle|excess_input[2020-01-01 00:15:00]... -2.5e+04 Kohle|excess_output[2020-01-03 23:15:00] - 2.5e+04 Kohle|excess_output[2020-01-03 23:30:00] - 2.5e+04 Kohle|excess_output[2020-01-03 23:45:00] = -0.0 +binaries: + - "Kessel(Q_fu)|on" + - "Kessel(Q_fu)|switch|on" + - "Kessel(Q_fu)|switch|off" + - "BHKW2(Q_fu)|on" + - "BHKW2(Q_th)|on" + - "BHKW2(P_el)|on" + - "BHKW2|on" + - "BHKW2|switch|on" + - "BHKW2|switch|off" + - "Speicher(Q_th_load)|on" + - "Speicher(Q_th_unload)|on" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - PE(periodic) + - PE(temporal) + - "PE(temporal)|per_timestep" + - PE + - Penalty + - "Wärmelast(Q_th_Last)|flow_rate" + - "Wärmelast(Q_th_Last)|total_flow_hours" + - "Stromlast(P_el_Last)|flow_rate" + - "Stromlast(P_el_Last)|total_flow_hours" + - "Kohletarif(Q_Kohle)|flow_rate" + - "Kohletarif(Q_Kohle)|total_flow_hours" + - "Kohletarif(Q_Kohle)->costs(temporal)" + - "Kohletarif(Q_Kohle)->CO2(temporal)" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "Stromtarif(P_el)|flow_rate" + - "Stromtarif(P_el)|total_flow_hours" + - "Stromtarif(P_el)->costs(temporal)" + - "Stromtarif(P_el)->CO2(temporal)" + - "Kessel(Q_fu)|flow_rate" + - "Kessel(Q_fu)|on_hours_total" + - "Kessel(Q_fu)->costs(temporal)" + - "Kessel(Q_fu)|total_flow_hours" + - "Kessel(Q_th)|flow_rate" + - "Kessel(Q_th)|total_flow_hours" + - "BHKW2(Q_fu)|flow_rate" + - "BHKW2(Q_fu)|on_hours_total" + - "BHKW2(Q_fu)|total_flow_hours" + - "BHKW2(Q_th)|flow_rate" + - "BHKW2(Q_th)|on_hours_total" + - "BHKW2(Q_th)|total_flow_hours" + - "BHKW2(P_el)|flow_rate" + - "BHKW2(P_el)|on_hours_total" + - "BHKW2(P_el)|total_flow_hours" + - "BHKW2|on_hours_total" + - "BHKW2->costs(temporal)" + - "Speicher(Q_th_load)|flow_rate" + - "Speicher(Q_th_load)|on_hours_total" + - "Speicher(Q_th_load)|total_flow_hours" + - "Speicher(Q_th_unload)|flow_rate" + - "Speicher(Q_th_unload)|on_hours_total" + - "Speicher(Q_th_unload)|total_flow_hours" + - "Speicher|charge_state" + - "Speicher|netto_discharge" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" + - "Kohle|excess_input" + - "Kohle|excess_output" + - "Kohle->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/io_flow_system_long--solution.nc4 b/tests/ressources/v4-api/io_flow_system_long--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..3bba656ec449c72efd74dc431a567ddaeecf99bd GIT binary patch literal 181709 zcmeEv2|QI@+x|ADC=|(%sbrQAWv&p)oJyw5WS&CiOcha*A&LlPOk^IT2vJF<3@KzL zWk~q%ea=2|&f$HY_j`N4=X;+2*}rm~eXn~>*Sgo*_gZ`Hy|2p4$Zg$1w*{Ys1V9}t z@bT(7K0?F~2Z&fK7^uk0sN-+--jC0U5E5v>VJh;-A9Joq-0gI=s;9mlO7$5-%0l>h?$-xoW0R@0^D06q#W46|Iwl*dV^YFf_3Of59RiX4Z=a4i*N6Rwj_9Hd5?iYr_hLAYyT->6UWIvH5$BO;jFIy*RG$IwT}^%06|L!Hbw$OsBR&j^zItBjB_*3U>)-^6O&jF16q zGeSx>&IlD_-HgB@uP=9Wv2ZdnUt1#&l*rVSRTre*$kxWu$-%$^*?_;A#lzWfl`t^A zht-->FwR922S*DqSN>m0YorHOrI?MnHd(B&HF>~c8}orQmJR9+#zt#lj9k&f&~yEb z&5f2ThAFJ&ljFbI_F&`MI9fP?jkVe+C>yY_0p$i(SaNG;ClgnMby(QgIU{;DY#5kL zhETF~cEZv^qj)s~xTe3lIAnp)*_t5%nZ>Uth^G8?ir|V>*At8=YhmMPXJX;#Y-5H# z;;an-_0Y$iHGx>gK~Hp}c3H36V5f>@x=^$=d}7Byr)3SR=qzDHM6z+*z|jdDU`^4f zSe0V&fC>Tm27h9VQka43Rt9tE_*0R7F#y$SO(j_|qodRD%StfxkhMQy;^>ID+_&c&_a+M22F%T19lwDaTqN=YV1XH#dSl#QF(2eSlwtf(z@f+dX|Zd z;jw0PMvU33387tc;UQ~-K;%e?7WkVOK_8^ha)3EoGghq^j2yBsslzHAMju2=3Eke- zTIQ-6dUK$6%T*%4D5Bdg7NHtN{9G^(zdtSHuZMPhC%8-D+d@);}F_ z;~u+S66h@c>b2|WB3aP@hj1fv69@EhYgLNH2r9(G$lSoe%tRj?^^m^eYJiQ2lasB! zv4ta218NLZ7)YX%xxSUHfiVV+>nR`yfb~MK2;LwIZ1)5`HD{YYEDB0xy~3cv{3>U#4}aSfhxf;f#(mKfj5PgS82^kzj;j z(SaV0G`@ArWn;BJWi$U~^j}P|ZXEMZTF-_FfZTb4bQ}eTaO7HzoQZ>t%PN)VeGMZF zi^f%N2i+xt(uY=n5WHgcK=?wB*5T2Ydp0aPy4pG;3c3P%={-zbjlk)FK7wUv=vhA) zX`t&aieN-AG_W$TF*3oNA^&$c!N?n}E|~r5zsuhmf_{zeYbyjNAG)1F0x&gnrx|00h;AFJ1xB0rK#73SuuNr*Y)$nseQ8K*1EcttWm%It z(l{|2^iLIbO~HP(3r4 zQf~up|FBSKxvbCdpDXv868@rio$Mi+*QB`Ss*TPv;sT0oxLDWKUt|7i!WavQP$GzE z(4}xg?+0tm2)*$T31GDmnsf~Vm~DjA+n|jQforbd=ourq+NetCCBp0*h?IX@t=H7= zR|{hn{#WxNmmxRc9#X?%9KQU@nwpvz!8c2esbJhHfdpV&^wA6!g1}*C;$UHGY+;00 zV1NWpCg9x{2Lmf?fd{Co?_^kZLOc&*4juv*4uA{W} z>alJrh`x*+vYtI4l85Sm%m>Y^*U1_~^p9r@GCx&W^eYBY`^H!*MC7Y)};!a zZtP$z(y>&~O&dEHtDfr(h<`HLDgmn<7A9a#e5~594TCx}#w8t{0n9+G`eP`d*B&$Q zPu2ZTMOv*nN*k&sTzOE0Rq0hVsK#r(3iRrtg<#cnZ76z0(L#`23{8Ypag0)6b~4Q1 zKXngxJwrk(1?JGVK_Iekq6Pk@^8cngu24nS8o-*iN0u6^`C&0ynLE?8(Rs(_SaFsvX^yP z__Gmzk+B+MZIeSn>=yr}3bpz=tGDQlzn%gX7wagYbFrSndN)y#H}9}mTEC!}gTs1U zu9q=pcmLNq>)rADkBhn5a@bd7*ql*?!fL?P0PN;N-M54Gey+}wQTk{r{ZOjtPUyO7 z|EdvDcN*7gMpW1zHzZ2)PdHP5P{P0Z2JUK;qRP3ZD`K~@5o)I{*xOb+AuFOu*ST4V z(IwZ@z;4iWv@qIpJq@fTTenyJ>6pJ*fugLT1mT$>?ihk4M`r_-_%AxvELpBY#oEyI zX;`DN4h3sN|9tiTFcx~%5$c%rht9Fykcz7&`t@Z$bLIN^q z^F0N)vmd#+Um76V21y9GpmXHre!vI0HGkUyC=~#ZMFK$00PV;J2!sIC;{cdQb_7x- z0H^>m@IRohY~o~OY$|lj*4Duo++X8l;)uu^N(BIz5d{SEMjR-FPRO_cuuQAZ0317c zL_-7d3;^`R08~a91tnQ!4FwfteT`#BPJ-pz0!90ED2&WGs~nR*fhsZnh9ySU^s)dl zZZs+hWN8*J6_!ECAe9`&k)idl5*ZUz7y^I@`J{sK5hYnfA&J0nsF2V~I0&EZyN2a7 zG-QEe@beFNVB#xK26&VJFi8OZ5X$AtTWvZ7IZ%88DyU&7nWa{nN{AE?S^*=hZ8A_1 zJm$SgwnIpOM<)m&s(FFcM#I~X0x}s$p8y~Qn+$3+ISVVR(*{<~ChO)685NQpsEyVh z^WK2u+VlU}ZwB6yF^F?AuvH-&*oI_RU-_7-gDtpf>tq2M5%fF=EBGIx34SaKw8;ug1Aul4!PVo}m$+j4$t<9GzJxt)Sn+Mt-m*_WXyuM;8pw zKIqC9PVelvEgxH-L_odo9c83!6r~xbY*=H9)IJ{fn?p5^Z89w2`d0QveydF}KEYN= zwN3h}#ObF#gh||aEfG|}{V7YWv zNQ&)MPwf21kIf%Fkt28EJj;}+yj$GGK-#jN4?Xu&4-^kxv3-Bd;>lLF2s@(Tdqwmk z%nn9RH<8DOl?2$gei3DKWHynBj@&)VPl$h9-$tr~);V=SGx;ZHYlAAW-P;V;`l}as z56joZUKDs6F5!CHse0n0h23Cp;?+!>`3E}!frD|Ji^7k`e@fQ7l=o4P4441dZF~O7 z9Rebc$3e1nrLPVbh8Ml_ZU4S+-dyIgw5hJ=_AH+HLr3#2muT|`$3`)YdH6>UE!vVA zExtGBZIu>yZzB6rs)^H-pzCf{XIc8u0|Egt-`r=s<_}fpNobR%C4TD+*{i8IQzR&R z-L*tR>eSv&>V&b9D<&8-gn<;*wDjK(uGo+~ zp4@3=O7r4boK)7s`OV%cr^{>?yACfED#xc@s+uJ`l#`sR?!w_TuFoh2onDbh8L*Eo5s?SSp>WSh%#;{rb8?Ngatj53#$csDP9 zcJ>#yca<#qlu4-XXte3azMr*mgF6bh(8;{p?=qI98+EF}w78F_=+;v{S3&VJUO9P@ zz21*ig2i^N^l{g0FBnp+EVi0uY*tiJ+D6{GIIX_>d4A@Zi&}lo1>;j+C6;_s26r$$ z;HW0NvZD4(hzyPW*0+xJ5BB=6Gx7p>Mz`C;8+cAJNbGMAK} zS=0xYGFRofYbKHTjW!lnkhWZ0Dj*GdYvb(1!P>#pYsM3IyQRaz^R44^x5C{WMOGYF zg!`Y4)F^HeT{5Vx*Bc|7JmzE(6ch>AWGY@STYR4rFe&m)b8G9_+R*^_X5*I@LfYFp zF1&iP^Emwi=}Y@Xa!;nga_ie|T;CsyIgUNuF(7zqWNw$+?hwI&+2ZF{+S1!=#IFv& zi7#V3TjBHLyhpS9-KFcN47@I%@QblCzM1ELiO+G!u&U?yn_F(m2M&g%gne^nOL%Fu zy&zk(w3`0@NZIM^GrJSTDtpbnXCLG>of^JXSy?|2_ob4qPWt&7dsV@`8CCK{FAtDf zo=oyHuP7ms**afJ>NV1qI6csuc$4ZAx8@d6jn`xnc{)V4)r{0hTyMyoJmZBAUod=U z&^f7jWc#@UM(ew0LtM8pQ|agZ78L?ntrYS?)Qy^UBfg-Dmqm^k-?K+Pe}ZoXp&77=pOJq%6?xk0cxLxs}*Y z(x%UCbKsQyb;+OCe?E1%rId>=42&9d7&u9G({1i$A6MFL ze>D7}iX8v5cS8yal6=~+N7f&wMzWb7@ywLzvsuE;x%s_TYAFvez0#9}QC8n#grcj$Df4aj{>v+M5uuja&|o^Mr8a3Eqo7zR~(M z%QS|DM$3Nl^_2!W?Lt;}c1`02SMRv8S0LbMvR*@iI!9af&6mS_@fm}vlT*%zXYbp$ z@0!set8zrPr2}k+*MftuwHuxd2naa2&#&sdKukc! z(VZm^3kx57K4U7V8XX^XqWONy!?s6M0+cFyDQdEm^zXF$J^v`|8S7o&`Js9Ld46xr z=Zl8EXQwS!^aGUw+N(@g#41g5&W8N_K<^~V8++#ncU?onE8U!Bsg+yryn&tH#AZ>K zdDLYe_+364>)+f*>-W&`f_yY$$Oi-P2q8BNI><5Zn$w9PIM;$ixgGzZg8AsQ>}O4J3mmAE+6HjD@v@G5TBrsSl8WUOFKd0e*hi8GPOl z=`XT?3Q*eC7T~aG;>hf10q&<{7T_1)=jA^D{$u9n7e)Ld1E)PiU<#X&o~Mz46*xUJ za6mYnkmCs@V&`CMWn$-KVWe;7U}9zqK4feI0O4d*phu59$YErJkrzgI4gs8i&rxJp zz~}I@(m)V=9tmSIjCn9t!}u0Ply5o(pRd5U4dJ~4z-}0MU=)K<5k@T-&0%zbF%ZVv zFg}1W7sh8WzJak1#z`2LVcZJa2m_4VFp9#c0OMI0&0xF;V*rd1FebtH1jZ^DU&Gi7 z;{=RLFp|M`MGqqvjE7;Ahw%)IrZ76g=nvy97!zU4fw259Eb5IjHJjpFhB<* zCya++JPzY&7)@Ywg3%Aga2W5y_!!0t7@J`1hH(tWMHsh0vsLh*g^>eB5g6rQ)P&I( zMn@Pg!*~t#Q0Y;KdNIqy_+y~=97-eA8fYA^}dl-FS41@6=jF~W&!q@;~Cyc`| z&cnC~xjX~xgpmzKAsCOrs1Bn6jCL@3!x#$VT^KW9EP=5e#ts<2z&HmZ@n$3+)G+Ra zQ4q$XFsi|L9!6UjyFc!o362^8IhhUtAkqBPlp@MM_i~=wofl(DkeHd+E z^n@`4##k8BU@U^M4#qYZ2VwjUBOxi0j~y_w!gv5iX&6;t)PvC)Mh_T+VY~z5BNz)| ztcCGCi~}%!gArWELmb;-WPy<%MkyGTVbq1u3PyJrufZ4t<3kt=V0-~%D~z9EoPiO4 zE3zDvFfzlqA4W+Sm0;9?(Gtc>FkXc*8pc!@^I?1r<2x8X!T1$Mylu#GP{7CpBOi4n_+YU11D@ zF%rgP81rDPhVdSf6-CfxT5l!#kCr#N;UNf&KkrSt6IyM=$A{h>gNIlUg%A&P)WD@q$SVT~ z@bP8!pdZM^ZYVNp`Ilhhwa+7v{(rn+jdXC+k3)$8zyl;8{@R`V=_4nva1@+7{F2`G zME(xAfkfkeB(9uBdP@|=NR(efVx=_Fd!c!VMAM-+L4eWQ3RA>FsSI+V^gmy|B|8Z@ zw*;UGQ$P#BzZTg~DrlSnXu&co8jpV%1%+{_IFuo@9&mr|F>=P>^VAnC&!PlHGdajI{drnr2L!HxmiQ#;|4c+ zK<5(S=;DD_s~PAD4qdLkLaxo~Js>>r{>=o`O-5BGQ}7cUcz+kI&Zc0Z;PH30Qu&;g zXQ=f702on1*5)h{P@SBZ89K)!gb0L=t!Ph~1f4)iT^x^duhROzd0{HCMHT?M3k$Ua zYNYsIx-dE0AhTb4VbWi^eeE|`D_#~Jpbq&yY)4&6pf0!FZVZ@H7%j4o~Z_rMIxx!vyLVV})MXP>AGI)rDM#EjUMGEoOSO(1(QDR`Q-d<- zz)XK9Qj8^sya?#P)Zc{^W62@!13EDE>5yV9IsFE5h7IJqH;|*&?=bTP@BJeVOgZxg za+VF`tQ*MpY#`seft+mv`MwS0>>J2AHjr~}Am`dZ&b@)0X9GF!26Da)Ky@^f z0EajRa17uWz%hVh0LK810UQH325=1guQPB;T~-!apGU3pqOcb=@x~|-7rZ3~B}VO6 zN6oKLavb6qz%hVh0LK810UQJW90r=4cXCt>lu3h+)ZFkE?{Zky_vEC~clFpP;`? z$r+PNLL*~3Jol_~*>SGWaiw=AtnJf`SE+X?V|?4ISb9LpuIk~1+r(v)T6ykqo9Jgx z_9(sXAqw8RssDo^#ll=|Bd^QP`?f#3o+-BhRNaGh&x-U61fsWICX=-b%s(g~D&SV) z+BfCZrtTX`*~%t4uw&v_K-tIPPcPVbc3+b%ynF55a_0H22s@RBFCD%HKOTDgj-*ND zxRm4zr%=wrhbepRgps&7C?vY-t5#=}^1RaeD7xhZwNdh1kLW25d<#ul;%oOx0vV`rLvJZl~KsLr18V3+GqtisLZE|Gz8M-dLS11goTBqh!c;Tc}kj_u-{ zW04uRo;l(?qtnxPOhct>&sOf8jl@#yt?GAsK3ACJZu?MF{jex~EAKVG-rEUH56fTZ z30jvW+kN|?I-nkYO?q>|oB|U$Z~kChmD7jt*Ufy5)q=+~6L?AbpJX;{J$ElW^@se> zPucsnQ7wCwiym}s;|x?KEiI(+v^=-R!9iSX8=0f7@xuLQl*_3Nq@fGk`=~cRm(p() zF;mgv3w(NdjKq>}=i__s(nbyyl6kz6V~X~tx(X)?$#%_b@46~oo}ja(j_#)2_vpri zwzDSm&l*Ta_pn6hJSgNY)W9d&N6sj*&EwAKo1U^H-tO(+HOFMVm@?^&w_JAd@)B|# zP5AaEo2r?jFaOE8iBvjs2LqCp*wfv+eXbM9&@S{mbd7vWGuBylh^|c9Ot|9yl3S#f zyX&oLR;p=(FYY@EW(Q?%v=r|#q&wQpzjw0{L!KYDl=f6MJbb2TMWVi97 zm%V8{5+i$*iGoBMGB^91=j|ZcS8I5h$ZhCESJBb3<)8tz!6f&?op*0koYEupe_8$V z>F12Dl49&@#^90#As5quQdHBqztHe)=8w5zAxXg^`&&q(r!lg+pF4o&QeAGA1qVX#GEq~(Q5 zyn<4EIlG;bFZ+i~>!QgU=WKNwIZdZ{FC^BmJ}!Of5!kFs`1B+1E-fLJ+ym*)JkA1s z#MNDiAC~mxANagfPv%`2*_1Nw@aX%4=Cryn1}C*$&v>e0MN|6fDyxhvX+rqq_x*hG5A9!-X@QhTb&-kr!&UeAel6H$^hP2g7P5TNiW`#`o zsI!t9&A3~qo#alSE)1EWOI9ZAOueNeXxG8+_i@Nx@TV%V{l43KFLE(!YqZy&)lIJf z;wn=<3gnBIepr6rm9k9Uqtthu+~M=r@Vb5EV@yihRqiRXbxQ>m63^c|K^S??r_w@; z^1;cs1K~M2K4~3uAwQNP^q%w8+W2vi-D-Xyp6bbz6n>lq2;USezUb-@=Qu1Nr#r~2 z>?ib^^@BpszVK2~H#bRz7!`qA-zKhAG>?})`!U$<;?Zon_3ZN*NjGC9&%xR9$q#j3 z$Yo?93B~1Jn1pp#yG*ZeL6+;c=prBPLJJBoO&*PpE5T-CH5`h zIX?U5FJ1fFwTn!NbzjMLi8g7Lc-C?|s@U1|g{r3=bT{%(Jy*bX!MjVvoxj~hB-DY& zSS@;co{3(!%d;1K)2H@?YibIJ1rnCsDf@PW=wOHvuc%dl`#pu{djsw4Rg&|DB^2xn zYmG$umHJlbA0E6hnjxiT?j#Mos4G4XZWViN{;h$whOVNS^+tC5{xfZ}A!5GSRoV9D zyFZ-p%AT5UTYAd4vt)3)k6dO4vs#^ZZTg}d!B|CHZCUwBJ;6%&cfQ%y{rscf75i2e z!agtUc%{S|j=E04S6&|!y6PF7-$j&ko+{+B8vho#swqM#IypQ&RdQfO_9kjmKdcM@ zKOarM^<`_24j5G{lyoTpuX<}^2Xb-H5xG{82dVkcydwbWWnLB{VoJXQ6$OPEiRJ+U z7NR}7Lx?Hx`01nxE6o8)fGqYno?fM@z?P}YOxu!x{SP+*QFeK!UG-uQJ5u!#koi-E zIISut;mH6{?8@_^YxK#KLaDZCHS#k^-IunL*wU8t<*c-NA!EQOm@g(wRm1XKZ6fEheRrh(eqtO_fjaN&g2 z;iIQc$^k^*KH(7noZw#3eL(nGc0zy}+PzaEz>m~*wK?Not=yujN zzyTpWT{6BMpar+oiU9VnHd6zy!QHH^04ZH9HBbS1hWvoAE;lV807`j*3%hk_0SR!M zDmPFt`DG9A4*balgpzaY1xmpb1cCPV;d_B1u*7tLX&wVRKn-#s0OThWfj>br5(Fez z->?Hdp!5LHdy9+%2nExn2R^HfastI*c@F|MuROVdec;AD0bn~>KR?2QWd#D3M1_Fs zpat;)+w`sp0mY!gVZd(klQ1v`62c4IJlS*zxDFO)A8;bCLKFxBi*pbl8eo$0X4?t}x22#P( zg8*tLG4KI#irPR7P=XD>3(^B0$o|TVIz@I=7St)y+UCMMPz=b)%b-6)CeONM1&)-84ZTrUB3ynk~pWFk)s zBDuKyuip6h`=7HN_d^;HYV8YUME~{2nINwbdMV)lwP#(SVfZ~udL7yd;mTR$FpOg9 z_pT5^7lwt&0FDh-2*F_&`NSbO`fTu^VcN0QLBWky3|B8($d+FHdl2q3C;?PC=s=Ap z$TQqu90NE8a17uWz%hVh;Ge|6@AADh{^q`Sw6eJ5@8UxHZ_Wj+ugAW>WF8U_j_g_} z5BvZ7c?h&-BeHZA@dEYLoeJq@|IK*_v?eDU=6)Fj)QS;mQ3%;M0DxMbL7k)4OHk(r zLs7qwm~}c-7Ja=7T;Eg6wcCV8h*~aWI#d0?!P*4zDPHK~a{4F1PZ6(KH$f$dM~GTc z+_!!V%nv<0y@MBmiG}OB3pZJ)saw94dYB`k|b72d!c=f%= zC|G|tnwJ`*)(bIWRK=nTaPv}hK5%C^25=1E7{D=rW8k02!0(!i8U4-YV$1Jukb=)p zHLW(v8=Uho7(Zx1vfqh+lMo8QdJ+F7H< z5X5l&ro9f|vET#O32EtbBL<$xTQssX7;dM$HOBvhOd~W&h}D6U)i9rJ`a;3dCueq1TcD%@~w>VbH z*L5Xh8sCl5x4gcPba(p&afAKGy6SsQa`O_L<0VX{x76yNBC#I#C)}=~ z)k><*IMK{=;>&K?i%FkCs@{Z!Zc7y^z1A76!FW+X!tqEv+jErw{L@9^?@2=3(#5(R zm+`_M_HkP7d49w@dT2z#nos6vf8_mk*@ucpCWwkkdD>s@*jo4Htl0}W-bMU?cS21i zr6e&?ow_eH`Pkn*;w54Zj!Ztb#yj93Avm`0G<9msSm8B>$0HA9KFREK`r??-d{+H=|JC~; z+v{G^-Xc4v-b+`{VJ4JSniBt1iS*5;!hOsJl?ty@wrhXftT%Ihx}T7dtRvtXr>}%S z==M9c{#Ma?1rgK2`DZ@Szqvx4l`K$deNg9B?bGA59QUdooowU2xp4StJ)`y2ozeH5 zI<+=u7;x{^aP+gD0$3(}uYLG%UZVbH%#9t_0^XTlpE0!Ce5}bwA%Zv}0pD8KU;1kE z9dWLGESE$>t;e?3?=cGHQg$e1_RVWd*qvB^-kvGr`XRPA1>8k$x7lC0*zxNT-5ONa zI^A_(M^R$b8}n-Cy@@^nx@=$b^Ph%jkn&1z$-iP7|8>8;${t=e+8A28goX4#q4Tb9 zx2C1#37B2g^-Cp~5Hbl2w^O=C>iUDf`atu;6g|JoSMrUyEA_4?Eo7b}-IqO4M=H-L zyqSk1gCz2lS_a#>0n5`TT0Tn?hGjCOGi!b|G7G<`yL3?5Q}%=h*>RS{)3?7p3ELJM zKN`hpmvjjKi7Fqrb7iqlkm;*|M!gg}Nv6;Hx(_oQ2w_qrE%N{3l>0SNG?D$&5t^HL ziC0fL3hzt4C6wt#t9~VxV>6fFh?6~UsnA3kTY?{jdM3#oDceT?Ec8oo7pl@{7+_c;YOZ%Jg zb@%s(bIE87={()KBR-VWfG{jb65vr(^B9TK4wXG8Hq@%n7NI?m&E6W3slYPvO<>8; z+dljx{%)@=b#r?L=-9X7nOzyO=C|~a=WhMD*zn=|5Bbb$=FjPVkG(>Q4_dyf5BYk8 z%iDD8$C12O?sB7+>_nG#iCJlcWGlTt$wtI_H^u42_Dxi?BpNruRp`$Jv;a-fzS(My zvTdrj@aw}32nEGxEK+>R4R)Fb6XrVAm6L_xi6|Y^y7#fvWTJ;AgS*0AHQ-SqgPd3O zBjM~|+liHL?`Fz_N}d-;-iQd1`dOkES~S#@-Sgw@O08GR=90-BD|XuefzgCAk*#eVFHVuF;)bw%F;`PEr3|Qo^q6*U0&R=xiOI)DOPUA5BaX<@I?@&#Zby2bRW?$_y*# zhxFg5akbEY9xqn-(%Rb_wK8*Q(z2x7arl)4yR1Y%LG-0a`Buvk&m@n&via07CXbaD zb#>qO=!+y=B(kzznXj1^8M9;}?8#`t+a$Y*{2I8-vqz!e6c22WBXIQe+E?8M^?OE>GCcjxOCX7 z%GT4nTI}1mS1WT;VvGBqw9@JSHS3+pNY@Rw-l>cv0@`%;I+gs2k ziR+f><9|tOY}hQgX)nS7tP&0_D9UFD(;_pneXFYqhFa6bJL8cVsd^?d_t?_ z@R*e^-Y#jeKqoTa(DPPi9q-SJUo>vnnn5i3eZe>(f8X5$r0F9t0g$i2GlOAY0CVStAKgY?^uld(6Syg4spR{JS4 zGfP&;WpuXq%Jy`3?S$0(yPd_V^A5fy5dPA9uAkLV_aH;=AzHSkl6)}+=UuyM9&YYp z*t(eO;}RG-Y|zX4qSonFNYKM$qK}ytwI$410JZDKtF;8~KkW63-P3t@>Ym2t*IA&s(t29w#a{E*$^Hj3w)B(g$?07c-5#)4K()Y` zREuO+>f2`@c#Di#ILoRl7tZD@Y`$u#KYHg$IMs`hcUKaWS{0i#Vr0^V9$uf8Njj}c zT(~`X_HyLunH%Gz&$tp<4^ow!l><)hI9DZ4#QUmLJDO|anw(q|KFv|pT{#*o*)3T% zhOL)b*-p?46B(=XAK3MJ3q|-W4}p43n&{I6*&8LrhFP0aF4qwa6+Pq-VYBf2m}t%$ zaeeTV$P)v;zHs4od*i(URqRxwU#KjoRRYD%(Z4-wEc>nSg<4Q$^huM(Zex}Pd39}m z)x3QM9jY}W!h0@@-Yj+7&rMfqx67XI)`P<7gq?|OJ%(Ej_H9)vPv*aUFUU$i!Q>bn z0g-Wl0x_UQbkcd7(PlwghU8BHX*W2H`yxyw1F4mWWjxi+?4wV9z+;e{>f=xLj1Z5X z=*W-LX3|?ZW6v4-SbvrscTywzn8)AJGSKhG<#*%^K(vbAxZB2P{r=EGLb2(p`phK?Gr(AF!D(wWJ;IT0?> z%ev{<2~yL;%`E;r?m8OR6to3)N%T=i@CK@-M1n=Hqhz^#MQDUU4i9klJrZ9XZ8-Rf zjH~d1&NlHa49^;mn`@d#Kh}J@qvIj*eX6_h_=y~DW>&W)H}Hy{9LlUr)1AQrySsVA5rKb znNV5$K5=W6d+>w0ZY!f?<|_j_LLscyxh>_Uv^Oo(Bx$yHu@aNr<^xL}BI>Sltd2xk z^v=#H4;%hqVui+I`TIX#p*X%(NHXXqJ`kK>6kE-qG?+QF`LmMd=gO{1qehR1wmQUA z_8K%o^xr24N>=!}%I&|D(8>cg)DSv3 zd11ocrkROc=Y~u7%1xKX58tXb?e`vHEMMukojmnvCdwtwYw%68?FZL^d-UWrL9;qP z`j7YKXU{9nbjN#szqP1WxX{`?tYPaqx~VvcZ7%A1)I_P%Xw{inPkFC}oWjbV84rSb z#In8S^E?++NPdoI+m?Q8jSmr)6kqI5+9bCB?%au9hNb1K>L@0!ubbvvCihkp{v12G z@Zq_O2TK>Mvuh_das!weaY|N{iM7<4?E&XPFIdkj4V74mMWXdq@EgX)-C+{ zbMD?@k(rzr-GZK3EtiI;F5_jN@=K;;SC;!VD)d&KeJC}|hc zwuonkUcN*o`fzK`E!%u~~^$r@?Qd@%nAw1{xn}jP2Fd*B2|#zxcDg z{<}@fvzB7+mUNe;u>4WmpXtjTf-70m`j@Ot-EBTmX`79*w<*V+jkOu-yuUK)J#u1& zP{d+TYNLf_mJO~?jTmw~_J7Q}~FNJ4QpW8s^z(Ce8*^$_d2g`y20h90^R1KFM&4T|>diYChFCv@F2LQZL+1l` zhGPK70FD7112_i$i3}jUHvkV0;U9ocx&j1$^fGv^UoY~W_a=cKsa=9sfly(n9ld{- z&--xGN#FQOJlO|hNVCFuvalx$eTu_E@0=(4>m5P!G)_>K#v??1cLnpkfmrV+eBXy8 z7LO41Z5Bq1R}Jz?qJ1#L_%kX3>gz4^vKBUub|w~%&NgO5Zt>dfh3Yx77Mseugs zOL}AX0y1-4Z-jdz^yQle2?Qs8*L6bN21)SW^*XUN=~N!tCp_#gK^IN%vt6L=LY4Zx zpYY%SQ|ua2QC9nU7s~bbeca@Z#sxm8*wAOCnKuj7@+gFeA3U7o8Sr|tnP>63R$f?L z^RyAAzGFa@vdPwFLhajv`pu78AA2qbw_KU2i+d^k^ZWae75xsC2W%co9}WyW8wt7n zJjUHc=coBT`?FW|!@UbGs(#lgZ(J}dnimKd5vmxS8k}%!k&JJm4 zC|O`g*G+6m4yh*H@swcYr)19j)Ht{8lTKycvdPc0UA&hjF8hTLQ8q;CODrzf*UAzT z+Z>fMB2xc2BjvJuMgE5Fsf6kGiQgX#*UXO(-HX$9IrAl3DJZy`hF;ds^TnpquX^ua zZy_-<4#lHL@9dT65?pDY_V-M4-xtp*W_hNj_{=4n!k9DqK}K6u9=}gNJ{)Sc|6b{Y z`IAf4IerIddh5)^U8)TZ5lRB&8CwRO80)X!70247%i?!*u#)B$ z+^Kk9HgQRtx$1jgT=2~yKBuo4(GBghHQuZQ#}2Y2*ee(&1KY;?97}#bUiwtF^0J2W&@$=BQ1s&r7xi#QVSuu z)7KLh++&~2#+aJ$vaoKEkkeozxV@VS4xTvY9}=aS=qzLzIo2uL#ERD14a@797W zx3>DY9F9{%W+v~>he_;;{wBybCn#dM<3t}-)XRV*|*w#4?JETp?_XMNfuAUN2J7R zyq(Yo|6x!q+frq+k;Zn`OA-6xDWf&d8t2Rf6kY2ezJ6nXQQZ36lTq5J<|l`=9{>Cx zkrV$W=*i^*MvrA5pCUVomz7g}G54sluNTZW2u2ky)(^%9=Y)=v#{JM(bZCCNuuS9f z^U02W?MI`XBDIO^o)e3)+>L@4CEPYQ0tcY--V17$N)WQpf0iyAOkP$tZ#q)6NAwjf zy;54e$Z}2xud8mi+ySkFWwmVD%N)vk-rhXSB3)Wh_+hWWVtY1W>yp8(<_{))e8qWf zVaZ)%({0@a?`Js7t!X4&f>{M=-m=3zf*AVyM(?UNbuupzDHa&-tMe@-a}t- z@1@?4fzam}%cbpKDtAbEpH1t~s%yM`f+IsmP5AluhB&K(J51RYsd;k!;;ojdDih@E z%rp8bzc1Wu3%$tB&+QypZryR;dy2ZN`%Bgf?sR->tL;x!7RKG`Oq?!u%)J+pvZJ%# z8KZHjuhKWMJ}W3*qjmfCkZYp*<6oZi{$b&4JuF*o-A2dsBk*3wZR*Fz(?oQ$X5MuS z_`0`6WSQrPdyAEAj~f1xuu$ncFemGIOh6_6!dHW*u>(RDZnq3G0{bT7k5kc^l30`* zN|ej=t*xu2yY)@ei)ZiJDZqkOii(T#5Sn}WFx5G!kc-gVc$t;e z)O4QygYRkA1;963gu>OWP_#>1>kchFow<3TPu$K>vBVsLpqs=ac&Afk2{u{@-HduS z4>bI(Io^F+a{~Uvt%RcUfjh%7fMWp10FD711OG$@kTap0xQMqj@5OCOUmP-ae;LTB zmXV$PQ*zS0Vc^aur}~#iPPuhoGz}j7ws0`LJ6_sHig-S(vE$Ox59c0*?2OZ*?AhmL zFQuGT8P1I9JuN`9Tp!29!sXFiYC4(Ky?=6oQ?gp(V^`z5LAK6Vt3<94;U=CJLNsC= zC0^aEfyrJu->wd+EVO>xCYqM)CTKtQazI zJtTdbnqWxD+dF8KS(-!owXfx~MEZ&pE#=UIr$qFATzI8+^uPmfCQ5g%2b z1i!byiR)rZ?wV&iXU=_3+-YSkswX!2E+Z*ycTe{j8^PC~9kpLmI!Ax%E_IPIJ67pL z_Lw2Yu`nS)nr-SsU^YYJ6aBP(+4rheK7X0sUqT;ht?LQCS+pF#LFp=unSxn)j8t$@ zf6c^8(R#&VT6gjl(TfBvI%9nrM|``}{etveFEWW7czthAkyUcb=(igL^<2Sc7HuRB zYVGOxvdVzQA`45)lFzlB^tXHU%gYwM zwa0p*qC_N1_3|!VGOY_ux?StX*!YvR-+K7#n*zR1CtYlR&c$S1G@)S#Ba*5C&BZSN z>9~TxTURs3g_V++s0*g&;&i{RL^K#~dY)*JawfeZt~l;MS$~kH&s3DzWhPSh5ux&I zgYN#mFA3361#fo}k`R%I-gw-VT#!|rxbjeAaFkSzGvlP^*tMn$vg*78P&%p zJT}jI-$UyVpH9szO+xTfX0R?!)OlpGMlfxh)RfV%qx;75(xt}g#EN(+S%&;Ew`k_G zf`X?e@#f@KxOtwvB%^=-t!PEas=GhWMIoOZG?%LT8mU%uFKqL~EVo}WY~@psjm*q+ zQ7$i{{?48LL~6;UlR$P-0e^JyeE_eeo_c1>-08?i_xBw5W@2>b#_Ky82+r|t?WvU{ z4JdH`lpe27>Y5VqD&teq)7g*Ko}sjkW@9#I&Q;zYxMkVY?^(?%iI1OlKw3y(C?z?0 zAblvl``E1J@`Bfwiu3-T?#8MqsAn^2H)}XA(s_+s@|l?&x>-`AwWT$@Wo%M3P15xA zp@AXK9|Dk_`y?mlop}|g99&#{yxiFjGq|$S zG9G4daPx9<)xAs`#hu~sjsgjKGXK@ zeVd4o(7U$QR?Rb-5jzKlj8oXy`vrFI{_OM0*5<;)?94}L85um>oJ4-%+aFU83{Xqc zU$|g7;uG0+N;Bd%m9be$^4@(iG7(NbmE=cRE)z4z(LLM*#M`M=Z8UMh+hF3f6@Trr zEpFoUPrNwd>V#te#{iB290NE8Fd0BjoT7DKYgfMGJ$-kv%QJlT1AW`ztIp*kYK{|; zS}iN?FJ6_ptr(0Q(Nw!z^Fh_Gg~E=Q;2pDLsgJ4G9a|5%>l!hZRXOv|pHAmqP=9vM zwdalHkaf>{{T>~IQTO86y4K`0)<}jE+4ONgo<+ESI{vhP1@g*>397vUX?9#H@?MU( z7oBTR)SE}A^?e{$`R9-1pVo^5?^2YCx{voh^j=)Fo}j!N?nGqT?HwyrJ<-V^<@mx^ z_3U{f>)cR_iZ=o-suSe*mYoM0?A$5cC9T`qi-Mo0T;j3me!VnxenMj*Fou$^*v}d$niEn@qBW*s=gVl?#P*b|*b zcUIwOMM=&#`h}kQ9oN2??cewGbZNQMO3fXurOUF^)SWiY7s8l6K^`Tb;hDg=r>iKw zC%rsN{l}*ZG54N4Ja1`e@$~d=%9~R>dJXYMRbE1VV?98Rj|f1$DHJurPo;P!=N&ySyDPCx$I{e3E7 zkz6HNys6#x%gXY@+e73!DM@}Qfy5Gw3Yp&Y+}(7G9i?6QnNn_&m+YS`7BkthHkW1` z*7P1;3R~2F&}$pp*WY>mYp-#=)O2CgT#PSKvL*ou#TE*u%KEyx%Bi`P3UBY_CA0Zv zaB@`t;^p(|hKAav=GunZ>gQEW^^NnBbCdB*J$?8b0{sHg%$zKI`&fDQaxhmm*S>mA zBoi0M5GPG6vY#p5Cn14?0!StzBARzSq!qJkdHKgO5qLkz=ZKsfoq0J&ovW9mq#ob4 zZORnq%{IM}=60Q*Cn6;Dr68GiD{Ke#mwqgNpNSP=U`~DclbMRuyb_OajHR-w2T$xV zJ7XU|o)oh&hXAwj&YeDqxr~5Q^zf^VCQKIS^P<&pQ<4Tf0C%Tpl^Wa+90NE8a17uW zz%lTTW#D)1r6l^B@1>NNyU+KR?D9?Bg>=ABdp1!ID-ZxH8ysXuAZsK5r~oqXKcKH{ z;$&oODs;@&*1_1q#=yzM5ugBfeR3cO5peH-~7GXOt*q%3n_MX{7YKH zpB2{{Xs_nq2DS!gy}jk{8Yi~?&BqD-O1y=?#4>~Uah8c@ndG2lelmR*ifj#jJUnnL z1P~uQM9pDQ_=iuCaig990DyUK(w$H?`1trB;32lrLx=}JcO1dlJb2LBLVp3k5edNG zaL5KrPUd{{8MNoV_11lrYH6wYFqEn8QBwER?Zg=S1&OD-dQf@PW< zePNExY6)x6C52&Z=XZ%kUeXb2oGl*dXJee<@~JZI>gbY-`4o|qw^qEuwIYU<+s9+B2qeyuF;T1m=<`Myc71S1EB z&e7TC{n?wUUw$zakNFUKyjnkt@6wW9g}Yo+dB)sQk+V|kq042SQ7umSADKupb`kno zrpu8Sd~vwbG)iv%!as1Mg_+E?*JRkBAZTMo4?r37FH>EkjQfdW0LK810UQH325=1g zBN%Yii}jSyKXb!=PuI%8&29Ndxz7~rA79QAbRKzB;jJAR8057%>~_6(ae%My#}zI~ zV)ZKaK)0FAk7&O!yX3s~AADSN-Iu#y!0}Om*rb3?p_lvfnE;QO)C@~9_k#_KhZh6d zq@C;U?(`3N1{9I$e)NAwcIn2M*QI?x@8Y9ejcg0um3ud9nGTx0+8N}Rl@&D9#?cfW zCB8pREFd7nJ@+o>Iucev0jTE4rqBr|89 zapwqUqtcl2i-KODwN=82#h8k?y^+~KM*da8re&Q}G8!Av_hq?}f;rOux}w}dIvVDR zpUq0@dz+JDg$Fvg@|Ud$(nj546zVw0n42j){cqekLhkWa_l)jcvDhKO(bj84k9>FR zqn8pd)?IWNukm9I&A-&vTcP(kHH!3<8SNbvFyd4MOaFeBgMN(QMn_K4sm)us(;lV` zTMV0zjt*b2w73BHrX^;?WyIa!FPJ)(P+SpTK`F3>V3*)S3kr3?_Np)f)jpq1W1F}> zRCr6V!9-2EeZDXtPY25=1E7{D=rW8mLl zz*Xe8N~pp#FvnVlOy zi}_vuQ+$@vO&qSr-1^c4uAe){Equ6RM^lZt%Nq{zrZ4_C*rVmh&dv3)YIcUa_NU^z z+HOgz;=x!>p8r#9MRHj;QdgvfCM&<9fdBE=Z!P1)7v0&kW6DJBEC!O>J}i$ZstTUy z{(tSA1zZ-}w!nv!Qjm~FLAtx7q(tcs=|+(TNl_X_P#RH51r(5!P$UHbNs;bUQbeWU z4SvkI2jB7Cci;0JpWYdNvcEO6CiZ{t`M$Mlt(>uHtv0pQ<-(PS=X|H!QYzf6zjPuO zExgZpvyjNHzc!k;-IwoNc-(E|olUjYQyjy@J3SF>Y_4wX=N`sAVmKB@+?S9fqGa^` zzW&3qyS^sVa`Sgn)lD8vaAh&K)r`j}y~NE~{NzBg?K(Tv7f99H?84keR1q+1zsST2<^N0@s! zGEuHi-wx+7qCWf5$Uq2fXSvjMl|x^?2|X&%wv+zYi53}6bRyPf)P}NSXHVVYQeB}% zdF8KwAFIK2MCH{-)`@U3^Rlt(^hu;g#*Gyxx#MpMJt1Ntl`6GUZgSjfwCIp2zC(sy z6B4L0DJ#;L*@c~+hiKVUgUCy+f_#L2pPEr6RB+1AG`k`jXY6JtW9F;7>~j)0_0i{o zFmfYZ@Nd@zTx4f(I!1dawmUVbn4eXX&aWUh+fbA4^U?13U^$sLs6mX~gLEb$aahyO z`GxfuXwgF$7G1NlR$jAcP74B2+(BrRg2fx=4{}_p(=Sr3mrL+n zR6B;Db~_QP3YD%2M_Y&s%~4nieZ}weJt-|tENMyoGo{pW0gN7_oP;u2W->_j(cC1) z)8`^llVy%d7U2^Tg|nZ#%I4BCWo#!iNfn41b(XHUl%}&zBgLth{xnY%7WvZnL-g_MiTUsdb4H*)pRG5NpI>fvj|9%E{~%6iWdxlV!4kL-ND%J3$>Lk{Ql zOy-!IxgL{qlJo=S8Z9EVceRF%2`pqi?x8%o%EEINJ2#uj*(~NTm1(2AB|qxvY8v7} zj0bX!k48Pxy2wnp&j3MUjC80{9giOwhszk9n7GrNKykXhn6TIQ`dJAXG#ZQ2NOL|U zRlVy(!7VBRii~7z)47}}ldK(gCnU06f|w{hs^yVG9O#(Uk<0vq2@@jfVvc#nz6CiR zQ!nnm<8Ig;XkI|WXS(-{G^Sm&j}txkJu-RO7;os7-gP>D!S`cbZ(&8{$g+>ia$O0# z*wzby;h|w8@0h6RT>}DMyJ^-5=esrK=;oRD101^_Cacsx?G*MAjYgc@ZcggXaIgB4m1V_GL&O}o_vU;y6HG_OMqETzySq6!D9WA3t0V5F z8i+H#_)^stA?ngRU}dQLUfB0DZrgFO?eU&7AIY1=@8^E>7iYH=e|ovxYF>HW{_LFy z-0e)^t*Yh*r5F9aY<%R;U8Y*-M=EVr6z`R|y1HF@ACOq$JsOo%>Uz;?^^3u})t80i zRHT%Yq@=@@_SQ?I8HYA5FZGvQI^WaMrxtsu)(6FBZKA@Vna#TA{8c8yv! z4kcw6ktD@i7rLQbj5m)W&-?r!^z&5ly~ak4-24}{^aF=*pDx-IFA8yb8r!-%v>D%D z8h$%eITOA(O!@5c@Qa!7g_5Bcr$$ck7HI9h*zA6kO?<~2_o-I#HkIuJ_HLi)!m>YG ze`?YxhgAc!&7k1Lt(oG%Y#wke++?q>JpYC`#fJFAvt4w}V!7$>H34b&f}8)vRw4*D z0sjIEybC4(6MzZ81YiQcH36^*c*}!#;5}J`ZaAS&s}Nt5T6m5 z@kp8xn!yHkks7ATS>I@Fd-1LL-LL2z-$JUf)7MaWy9`t*uTwt`RLJ4U$eKT9ubyO> zcsr7uX#0q*`O?6lPskFYZ8DzOajbro{YK(($Wm(F(j~?mMrmqZA%p7TM(!VSYb{US_^@DRJ>|L`7RN(-vVth@ zON;r^*<6f1bKiw#PRmCa*AtKKA1r9tpbqIn&oyY?05b>aqK_?SjWf;)9U6}AbyFGJDZ{;GRqA}^J-Wwed#k`QE)R44$6(Bsj>lX} zhSi5h2oBAPof<@b2b}2aSaKbrJ!-ISSnn?G#~7d75bm8;HoZhDNj7>>MISv5Bka<7 z`>62Jryzp$`il&}H`=UwQIR1!x-%aD(N;L7e3A#^0 zQ|X$~MY!7^IlMonG4zl)bB6H5nP{#umyu7r(Z15XY6BaZ5q7Odorz3znyYBp9<%Ij zyw z>XEs-VCFe%DPys>G{c^m*FBNHO@EVnxWCBASby++tLBUriOpN7OKIvs2~{Z@Id`gg z%~Z*S)h&b%si0q#Qi~UjVQMll7I{G0rof};s)bM0N4~L0>V7${#;r7TmCxRkTb8f= zvn=MQ!Z62Ux{&S$9fZQUMCcR~w2ZdIv;;?%IQTzCc- zjdbPHmS~Fsl}GUq8^Z`L}T~hKOrKgsU}@M z(iPCaBVj!(efy2FQOROs(;5xhQR35Wm%zrkXH2Sa+ci(|;FA%|(|TU)+lv9hED4n= zgJ%kCuaD68i;X918L;OLDQq!oDqVGq@ruxt!V~@6%^6^ObDBEf>1h;A_LpN^XB0QC z1EhebCf%ZGC;{cloz1h>*mF5avG^=UyIQhYC@rQRa4@Guj+-aTjOR$p_G@_pC##Qe zpq21M>At<`$eTqF*xxQ5>NE8T`U4i%ZuuJE-$l z_7Z1QZ8q3%95K|bB)NWL`9{nlN9I+wt)~mUDvVZD(aDr8m`|-&vWaz2bBw2N-f6`x zA0~ZL`9*TaQPCh}sn^db^4(3R%dH)jX`k3>NOPMXiO{8N=-gl$fd`Ptrn#(qn%%(-r-=; zTxKzVawK5OOMlcNKwRv_k{~^De$jhLm8~nfRb$EG5xK)9dL!L>%y(-NMSX6`kDnir zP#JK!2Y#%=|Tb~}T zgL3-q=oi-YH+XUlLB>LdP9`XEEI2$kr*y%ccVGgS@Az<7^pWdJ zkJ{_)%@zd2B2smWq2UYo`3?C&C5mx_pUiJLOMDt#19Se7#V5?dj_X!wv|oBadS*yo zJDr5|WNdb{2qC(Fv$ON+hfg0IF1tFqIk~yy6&4h63UFPsL23q!r$#3it?f-y?5#gV zMcsHDQ}!UoKh6jbnKJH{oRXrvyu6|!UB=ESbM8<%1?osS>5pfFKhuedo)i_mCwbP4 z$Q+p}xZ0G9k#_d1PV(ieNlDKh2a?a}3YC@%mOtwk5-eLsLkmvh(iv?0ltiu^yY=#{ z3{BLItDn2mse4WZ_asg3DbbBZIb!N4P%!fgV;v=po2u)ueF075@SG-8DN0K zN>JnktIPhj^i^bn#N*%q7Za$yzsZ3jC%^)U?x4sButH)oC{hD#kXQ|hY~X|JZ$x0N zi{n*9K1R#VQq9eeq{6)OKf1zS+1mYd|+kc&Y+}d(515X!*LlOD-XMf!db8h*n z^siFZSK|8xNS&EHBiKqRMe>$AT(y5rJ-07v;cn$~o*OOt{-;Uip9hq=_SZ9`3<>#u4xj##P*T||ygre3 z`3l#>gPjlT#QxZk*U*3}@1*KetD*BHR*jic1skCs>X)W*^Np@+TaUc$jQ$+nwxhY( zI7hyPEuc6YCosO0Eh4(A;IP%U)?ewH<234^_}rO6=*2B z`=*f2g7^Z%Y?;3X*Zj#>F^c`78inQFOP&CC^QLyw`e zn$HR>*HF6O=F7xDS_P_@+dB=MqEU&EXI_OS9O>m*mZhwx0OJ`0=rWQ%Gkbt5ikFsc@MB6vr7CP4&es<;GlxsmU}rxYnKfi+JA~ zDTLfa!z~#oVs>rN^GiG0?X)w7fhiE`H#v9ph5 zamvPax@Ws2#ds{JFtGajvzW;r=IYHRMI6RM-WZbq^MM&I@7MK#YBP3ygN zdqTpE_S8|>C7U!wU9Qk`DjzRMOzy4lHX(74uuK4k0+ZdH$Twqzqy>E!uSx5eH8$z9 z3TGLmzvg97)A4=9mXvmr;jZ9|JNK;g*4$%;bw;aM92nwB$M4w7*_?ayfZ~RE>(TID zQxA9Yj1jEPi*ic$da)moD95i%rPbQp$+^UiG9EXug)Psg*(sY8zI-hDEx~*q*ZRpi zSvj-kX#?1&i({5FTi8*bW@cXbU}4yam#kgwv8^im=nb(AR_U=|F25sYQMlv)Zn$U5 zg>wQj*kjZEG`gu|w~!_3*vuysC`iv3u#?8lc|F$iqIt7ezMjc?ZsL_eoxaMzVTq#{_AC7kMC$@MXE~UkKw;Q ziItCEk4))uyA$_uO1R~Wir|d^(q+NN6{r@tj+k{JI8JhyVY1WR&1Z>OG&|`&s&FgM znP~LflAfg6@sn(Ccz)OQ)D>PshA)b%Rnm%G%@uKp87z|(TIe2NVP3;HDl=8$*1@Jz z_!L+AxW3EUslukSg_ub=vkz}Z>E@Lcd&#lK1hCZ180a%DCi(ILF3 z_S|c^Op7u-K!eE$_-1;hU6LV+d2&(InCX;Kr`truR_iehz3bSzUQwi9_Ci~5 z0M3`@O=ZIf$_FFbPx8V7Pd!)(uq(9lUexAST6@F5;H!M5|E;ajY`xC=!+kN2Kh{Rr zy_I6Y&f)Oi-8j9#LC$V+K2yaDpXc);>3d({<(6x4WGV5XQ&T&*&suq(K6uu>s{7~) zI>mj_amryZ=NqoW!QY2^CD0S2IuV zi}fjpDv5<%$w##YMoq?5H&jjOJbi^ejV@bmj9kPOh)l?NB7Y9Is?s?RIaK@4$0K^fg|Y7nHUc-$O7w=@j|$DbV+T+F`hp$XQ_y3c}OKLcj+OO^hB1qH&5}4 zqspS&%((rH98|rnl6EupOZK}9Ta>p>4Y#6wN}| zc5cS`I?pzc$#xn98i2V#`NJbv92mP#KkB|jS=uI!?Q%6e7@8C`%_S4RAS0nd4ZmXt z;#ykT+Fv$u0$s#l%OMOkBvhzLKz=~c-p7E-jdCW8TK_P|E&3+VtfwRL;8$=rSJW19MK3bNFQpb z{Ns^btp5}{HPIVVgqkq_c#u8CZ!e4uz8rfS5-QZjA(E7n*XG`j9Qp_03J*vRYWy7e zv!1;j(-lYoY7UVdRQPiVxFjKz_w)Xz@Yoer9D%9Z`(81;SDAL z6MzZ81YiO%f!~wBPw5x@bPZu;!2Nu7q4#)jR80-)*40gq( zveCUT*kQUwxXmqlVX%Gn!eH~QqLP0NgWU~=!S+8823tr841>MdDfEvp*c<-{gY5u? z!RGmH80>*R!eE~~5C*&OU>NK`I1Dx%1{)584Tr)0?}fn@5Rn1C*H(qP0KWajCE9lu z3hjs6st^e{g$cj}U;;1!n85E#;HR`zX|Ka=RnXlv0LbjORf)jQm*n#*zHO^QgFR6F z`&26QX5m4TcA)wQP0E4fqA(UpM2P}ONMGll?5!sGr{Pza|1tMu%@+fI?`kMWru%(= z&@m{;3exxEVo85J6Tk+eVu9l;MzS`xwpu2(t`@-26XN^xTOc zhNUbeC;#J?3EWY?z;3AWqrQ7C{Nmp|#q+kW{>NWjf9r{RW8EZZX~u+MeyW^UvKVU; za@7tf;v{5bBocV2RoUpY=zb_EIK{Jzx)&KXPqCIAzF z3BUv(0`7)WZ+sO}(MYP6SHtY6JYG|*yyBU=BYUztllIQ>!2qN?XSz2Ufb}`8tm)TEPXTsUObiT5D5$zo&>oPAciL$v)z~HpL zspw8hu|Af9b>T&=WPldBr(gKoD$!-COxY#p=kGSi*+2CNtlgu~>%i@tPawX(_(g2Y z$0Lzd`(D9)xhF4Q9M)D&N4`43P+;eLfAyhghjij~4WdXTtB%attd8Nb6MU+d(!#NC zZf4C0J;Mz?-s@1DyX80BvSp@~Fz-}wp5iP=32(}$Q{i4t4|R6bDhut{&UKNJO}lv0 zQq%C-T=Sb)BxN}pFNXchseY`Q!oL6IAyrQOD4s1H4(+xQ_Cu+$^|5sFuFVpKlzlvW z+9m!U8fq*%OV9W4J{dYHPgWj0IvaWpsEQ7B7@!*_H!ND2JmZ%oT&Y__UeL8|eBzpg-CU&0%d6aEueF#s% z9i|!njXLH^<1=xAXub-FnUHY$7;m$SGObtG)MZ%a8PU=7M>!+%FZb z6*{`_P}R0Fv~xe?Ug?nQOT_RQ+#D_$^0+V48^eH$>*Fr6qkV_lWkc$Ly*P6@smBVf znoW64^01Grsd=2 zDqV8}Su9DrWh$?am7Y=!6DcKFDY%C9NCuW#OJH6KN3^2myv$6m&^kvu>KN$Zk<4f(-Y0|KzGI)eeK@*#RpUnu zv}2Sb8biP8B%foVG&=y$JqmrfBU1CpgK~4>LHQis!6snu(Sx!R;XxTVc2I_#H$hkZ z-%i_tTp&T$gIpIuGFzjy*7usZ)R59QY3%;I7ic%!%!Nq6DNFz+026=-zyy9@0zYN4 ztxpreP}(y#_Do7>&N%3&`8ylV>AfOA0q2Y3e4R6{WZ`0FZpkZUZ|`JoV+T6QbO!Li zDa#;RJ+l`*;F~m@JRX=6ryBaIYZn-ihi8Py*)u1VEtr z{wi=AYcI4$&bw59fCy(Vjz&8B+h9N#tTD#{J{RjyAOoySe1P?r>*0V2sLKg#%Opes zM=|#TWsq!p#{y1=0Wj!?tFvhwfC%|wfA@AGU=3c34p<%cxDPCWrwIUwov%^=cksHb z0OPRO1ArF%cnlcpT7Cc^;(6pM#0fnG0HPAiW(++@<5WtW344OLtMA(p-Pvt#dql3@@ zuj(iJfMW1@=>RoV&wch;${xQO;KthFr(ESnI;Xu#`yyuV}6rJvm;0}9w_I9yZkOCC1?vLOO z2!%ffcc`j_l%Z&Le>~)0MWA?H1*!Aw=V|{TRg5fb{}kDxyC2fy-PhZHNQ9of-Tewk zfp1@7{~;lTKR=}TAf(KHkR(F+Tape#kUHf03F9kxkd5FnbVzXjN`%m%Ki{x^8d4M5 zSHnf9K|w_9I%g0X`-k_FpVIS0vfoLuXO-?*r2qCkPoy9O#UoQ^eoARzyhl_FxHR@! zgsq*3LWdfJ&@1?>I1F*C z)sXv9EV_Sj7L4zky`ehtKT0LKB)-?d0R7f|dtJHx!2@VN+`#~mfK!+NOaLYT6MzZ) zz69J2z1AEEM^SJz!9E3JJW@1wq}puDtH^ksQHoK9@k#oXIChsu?ax*7j&=RFZ=zO8 z6*$+C58mX@UKoRzzdN?_pA$_cyzgKaj8umFcr?r-{PX1=YIIQbfH=zHlF`s zX}(rA5xv+u{1mU7pLvCX-)&ZV2+eG^;wqQQiSN{GVlgzTBD4Cs_z=0poIo#a z3}0M_oJHwXz04Ugh9pBS_aHHDDNf?UH|@CXBI?fzxSmwleroJ?AEFM1^%V=Y$r_U$*OfcAJ{6fqSg-+`PM2vluhe4(^I~z#Bm?R zx#L!cfpF6kXL;+RcFyL40SfV{*3X;?=~KC~%+N~`0u*Bmh`G+5Oyu?*=#Ey>5+Dgo zu%`W3e?9xzX@++pHZN~;dn+A_J>Oq`2ANA6m`*i$NyvNh;T(6KOHaIg)lA(cDSBEL zs)BUdjrxisgS@i$+X~2o=J6lL8&yi3FMNI_J~SxngW}^^&J=XzkNtjM*m`n{cU|v_ z)9AJGu-EGIYQ!qw;F{{9#LAjwSZbuXVLA@h1O%JVkYT+po^&P^PAe2?ijuO(^z$6R zdN|G&3g$K_%2A-~0+xU6GwqD@%egkLk>LqG!WA|dX@{m$PuKShtotnZrH-Lhtj(pH zb@VpQ$X8U_)k^bnv&EqY-Rxm_{S>8f#(OMPpgVhKnVq)cXh4Fs`@=Mz)n~(4fa-ZE zjVul32L%QC>>Nz&uS9*Y^ev4-B#`iyt7WQ!i`AlHy&mStX+6^F>DJID7(CvDC6ll< zNab}omhuZq?tGwm_{qZ@xtTN=ehWQXg~usAH_K10bFoJhy1K3V>fiGZCb+pVJss;~ zfmJ24DOr7g1*_^X^Yo;RC4**s8a_pFnTR&Ka^E^nLyaM2+|0)H$&V{p8qQ9&8b(_c z=ccK)&?gpHrNDRmmOR!~P8{h8ndjHf@CZD`CSD|5;J6ii^ny%Y1pB#2j~mn%>Ozh% z>vo)`LlIsRJ|(<%s^WwM2Sz(K@^j5wJQ4}#b;f7rCu8e(s`yDcxrm)+m?e8w2$~Y| zitC1RhfHg*%33Q^hdI&=NFGAa<--u-m$BE6WKr zCTE*=p!cB~HL`7x_dX~Mz+_^ee6AgG)^kTSAWOW)Yq6m|REBl4Qzv{r(zL(Wj!Q|@ z61-GZvtmWhJ&s=A?s)49+s&TMYLc^OQRAqvL*-gtB-GS$ujYD9Jmnz9v^hb^I?~SZ zVY5?sK`M57i9^vR@hHDIn?kj^(ZHJuAme@oc)6?ngYR!Vi&5CEe}3~BhtF=E?cU|i z$tU)_KQ3g|LiojSYOE{EHwFW|90iLoVSZ;%#r9lm>(q-@K7#f1&NcoIgO_GJtZ%5d zoxRIVQuV>d@O0}!Da$tBv#rnD&Ea@z$~2{-n^!jt0+&{c*JBGcg-VRd6y;FfSDl)8 zJk^jMY)ZyJ5kcoVQ2F+)@*6f&wWDT_#%r=>03}kKs(k%dU)I|Uh=S)uy=uKynf9)> z<}ukN6?3?HXQ8}-Or~6l`3iog1h;jsU8V`X#)ro%IOiqY{FLUBWPJM~Ep>e7y2J`7 zGah<^4<|8`z^(nIJmGH6Q|C^zhixMga-yNhc1UTr2GS<`3l#gUGAR2#7KGnIH@%AN zj}#JVqGFn7!KumJ)lu}>!PU*hapl9u<|<hFAMW@O1B%;7CVi4veHF&mb63fEc{wGh{qhe<3sp(CUuE-WdySk&CqZ@R_7@WL znop+r*o~8-#%9$=MzFa^kvnddoN?u0mMBC%3@GLt0tP;A`F{Q35Ui4uLrS=Mds#f5 zCfyFze>Z?I%!QLo0=3E-I0~d8NdxVISH(urOFxf-6H}!V&r$)T>-R5A?^e-UN01w< zAL)1lAPYXYjZ~g+_#N;NPb&2q2|4Frn6miki8-V-T4%8@%&$kvPG;(o}ux#8Cw5eJ@in55E=uvul$tKP{7)Y&kMTbfJ@^m2hgnw03`YkRs4Tj zC-qP5|NSMEh+F_b#pH6|zuF##5Tq{(UHGr`?d`A#Aw{u$MVh}>{Igq$=Ty*1;`=Aj z{?$p}`m=a-96C*6|Fq)=Pjj{VCL1ce&>5%q&mj5hGwkiIFhQ!4fBj6*#qI6>oE01v z=rpPQ)9C;D4&P>Gm=AH{{#l3wQJT=MZ&&L7s}|_DzB%aT7^S{vk)DKZ`b}yJTcqC* zfkl`AOaLYT6MzZ){sewXpQsWw!Zw2YME8A1QG*o?OABM+SML-3)*^-4FVK5rUBLC^ zdlu@RQ~ST#B47*kudu-TU;;1!m;g)wCh%Jm_$d}@*fH2b1!wO9fXu#ydIJ3Hl|4`P zQ%d6mD_j}}N`nS0jd3!sq2Il|01az^+5NhS%&A`dUi*OoQu-#%f!hz?5P?OQ089WT z026=-{Qd+G7At^+1V*X@SEzyi|LMv$=6|fuTJy!g-#ZTl=~NG5^d33}O{@M@eBYzg zH6{Ki7E-@BivoPIrw8J-zR5n=!uYZAT3Nvg6p)a;7xqx&&9m0;S+I+UXV|N52evNQ zf<3?k7GMG}0hjRw1^;c_y62o!~fS+gtTB)!`#si_)#{r;(qAB zU$s3^ePQm}-rJWRsoC&7i`L^iuV+m+qAdj-hW%ndB;XV#026=-zyx3dzb}EGV$t3b zge}?wvk3Oqgl)gzb^K8lt>!Oo(MAQ!eE2CfGe8BdnFnen9au97WTd6{z5$^%o_nA7 zwwbjPAHLV#Nc>I@y8Qll1>y<_XDoZ4p|%&aA5LKcFaekVOaLYT6Zm}y9Q3<^0{}Qw zhewc5zuFgIE{PzQ4&G+gCQeosM$RrKE*7)=2x|ffRc4>WAI>Gb?JQhe?2XKAoDnA! z=|HNo`>OcrE>8BBye-_#ES#N)fe$Dl?xdcuueGm(NPe{6jc->uemiR!a<&3J1msf%lE1ZZAy*~PaS|!r zli#y=tstdu(&;|9hy5EQum}@?3BUwk0x*H!o`9r=f-HdkMO|MGim!62n1}91w)WEKpKXZip;<{NZbKM z7C;^nnGWxrs{o10pm-91OkcnW6lnp-$^~LU@i+ikwLmc_(gBeD3iN{_J)jC*is;DR zWBd`WgdY?sfcl}#EJ)$MOn*v0_Gu@CxxF`?W3OxV-+s=}-kL<)MNR-w8k~QNA9zH# zo1JMy_4wPP?fkguTVMvLbR)lZ(N~b3i2hy+XblyS({KM486zqqw12Ns?rmQ$i1-Nq zg$cj}U;;1!m;g-RHzV*Yb zEkL{*!2fzpbmcET<4cMUG4Fy79k*SdG1j}y zYUpEflz4EOE*Yf}H9m6+m!7_yk?|(_x>xzJi$(oDVGagr zo5L>4Sm-Veg(e(kO^$_vd@0)n0}F8lEoM7UMaq_*3@1E`Qp*D;ZE%4@KU6v z{VZW=nT-1i+KY_C)n(7!h@P*yXwNf-Jd1X}(iBPH%wSM<{ONP6p82gLmhR)_MgF(W z_FhYmjsJu+XNw+m+%wv!8Y26wLuaJBm^JR2t(QTm)aYk*hvFv7%t)%S7W4MV%6)lJ2W zCD|`wyMs#2&y?esm>w}j)4#l8Vz$ZjiJ#V3{&hsCj{X_c()z;D>d9xgt?UW$iN#_n zs+vI_yT>;DFpWedrOs#DZ!_zPECs%tzUWJ9SdYhzd8%~C=S<3r#;9wj7x@N|?EJ;H zCwRmk)W?a44A!T0kE%CbdaZVOv>`U*@L2!DRjlwGRy&@`FEXwzof;2QZyvHdb?M5A zTa@cS-MfYhO#(yQ^WodRhW;l0>oG}lUwC}=%F~v0`-0I1#07TlB|o?`S9-zBVAS;4 zdSD@yPV4A%PLGXj?Y#%rVdcwdTS{7PH4l%(#K~S*^?p3tt*fjmdSytTVRIs9y~pmO z(VB`mNzqabjU>IvA@MiI*UH{b^KhEa`#RAjEL-%?U%hYFS6Eo|Htx!;Q|l_u{Q|oU z4RNAf+N?L+9m|}aDt3$<=X&rqNZ!}#O8h8OOH&Gd+1-*eQ%%o<9=$NwHDjl9GVN{e zTk*ZU*?4%Dri7o$b1<*ygJ05(zPAJs6q_T#3nKY6`CNLnI+ZWh#Ake1b59}@Vu*A% zTMN0`1T~D+C@Uzj%;a5JS~f5!)Yws5-X=tUcC49>XiD8^+r`u68dyU?xm@S@B zFKLSjmfX0^U1ZrhQggY!STzTmN*qe!*{cD6-ppAFbPWJLS7WUt>C5Er7iI;$Mv zhVR`nPmx>Rx*1S)kN-##WvD%7LI9)R+)lRSL#X)&Yb`|$^YC1%ZW?1n|gJA*=nmP$$d79Z;{eJX|w zC>L_r6mOF7)84IMELK^H@1J49F?fE@ck3R_xVNH*efiq@BXRMf-R)0jaGqHz4wcR? z(eLqgD6`6mY|2x=$c#m(YfmU-v3oDV$nc&~r1RM9PFdgL)3O1#ivEfh3hMgVd%Uaf zGbTZn4($i%;d|+j6X)!Z7Jw;4NNazRLYHe$7Y;96dmOrZ$cH;;x<|o(71zcJd z4Vav^?ynis)6Gn$=EsN$@u^5DF@Q+2j>PR026=-zyx3d|D1rk;e&P) z1u`p=s%3Kg863v|?lg94;&b|xWOMuvqSdO@Rhdv+Qmn(u@@GRXQJj2eQLlH`ECA0m z%+amvj@sdq^w?!&X#s*>eA=C5Eu7<)lzcT5>NON6bJdIN{C(<9#?SALZGRAn8}Yhq zOc7X-d|2u<$q^D9$rHDcP;k&SV<_oiA^gsQa>vJ=CVwj<*LMd0!PwKF2DBrqm{3-T?87=woFCdioQ&8yVNGnK1!BD zvO8Dh)x_NRwLbC6HtD0&xKU_#b?GVF-}?+tv$*F-XPe5+czyhAEH)|;oEa>};B~t> zbVK$sZ_~4T=kikS4xQ+Jh*o)y(m`JjZCtZdHy62m_LW=v@(I7v`Bv3rcW>Lynrx8^ z12!Y>t`l66br!a2*KlQ*OEsf=^7`6_^=I7QlB;7W)f$J`9CwMGXcmd&Zo&!=r{dyK z4S0E@fw|?`6^3L?`GiCfhggD1vbUlqFPgX<{_yUYrn*}G`@XO~>cEYlmFvPQDoy2~ z_>&oEl}eQHq~64>E_~)ZuinL5RZXCJIo`b%LY++0pHneyZ$vul+}vc*<4D79rbiqi zRJFrZ8fLo0-KT3wuX)TlfhoQx!g$=(!QTJg%&Wyf1(qEJLX&MG=Y`a?QW6q&t<44U zce!Pk=_M(dblAJuQ1DxL>=YsKaG8BB6+!F+-^HHx!SX@9H44Y!b`fw?$MsR*v^ZY&~~Ok=1R=l z2E5y`@s8e1uOt&K9&)za&fbp(H8`f^B74NczJcSPm|#hXE3 znz{A)+jLP*-$b@btT?hHWeSVO_A5Kwh0A3{qd8qj6uJw^SGrC=E@I7$KOYqyTyDo4 zbCXgZ<(#kRJ+HUx>+-TY_f`k$7gMG6>z!`e{gOLu$_}+cRv_zh4;v zALO=#T-F5}o1q2_{D%>*?kH0=@Jl-s9Fo8~yY_}BHoSo<{o`(1yEfOaLYT6MzZ81inMy zr%WgcybDh#IxwM#1uPwmeqIGcY5bkbow`mSisIK^?liS|bxBrTT?UZacbtp_u36gM zTepOS4gecydmq3>f-B%!M*s<25BL#WiU}Yc1%M@#y$@iZn#DulhdGs{ho%3j1)Tz0 z&>%W^g9*R{U;;1!n83dmfgiOzq2U)_o)AptsrXY`6V%0UYvMp_f(?8D>1}yx_TIz) z>jgTHt32qPhy39|GG}4D#J_4$^X)sIgRTLOVM8R~6ea)@fC<0^U;@7{0dN7LF$r3l zF=3dWDkqj~^#@dO3?`EI$y5MM5R&^(u`%r{U>oy*jmZvHKhk`T{2$f&sd$M13^|#C zJfQt5LBb#6X^ic?kw4qshTKT+JaDJ7*hvI{;(vIATTp2>=-h32D!g+}og3 zMiwDMe~16@5scWAa}7FzNcqAK%5-T57Y!kcu?jrIVca!uLE@O8PZ6hR9$f-4^z3BxDGZz~-3*twJW6;&%^j9G8qgu@`fALoHlyk_nU!lDI zy`J&E?tlANdlOLhhi4&%aBl)c0#0E9FaekVOaLbE`x5xE)`aT*Kpeyiwk9AFa0(NE z3BUwk0x*H!m%xv;CX)91&mdl~H35-;QD*1paGl0?PN&BX;h!HNw;X E0X%REuK)l5 literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_flow_system_long--summary.yaml b/tests/ressources/v4-api/io_flow_system_long--summary.yaml new file mode 100644 index 000000000..ad4f7dcf2 --- /dev/null +++ b/tests/ressources/v4-api/io_flow_system_long--summary.yaml @@ -0,0 +1,54 @@ +Name: io_flow_system_long +Number of timesteps: 288 +Calculation Type: FullCalculation +Constraints: 11557 +Variables: 13283 +Main Results: + Objective: 343614.05 + Penalty: 0.0 + Effects: + CO2 [kg]: + temporal: 7653.75 + periodic: -0.0 + total: 7653.75 + costs [€]: + temporal: 343614.05 + periodic: -0.0 + total: 343614.05 + PE [kWh_PE]: + temporal: -0.0 + periodic: -0.0 + total: 0.0 + Invest-Decisions: + Invested: {} + Not invested: {} + Buses with excess: [] +Durations: + modeling: 0.79 + solving: 5.6 + saving: 0.0 +Config: + config_name: flixopt + logging: + level: INFO + file: null + console: false + max_file_size: 10485760 + backup_count: 5 + verbose_tracebacks: false + modeling: + big: 10000000 + epsilon: 1.0e-05 + big_binary_bound: 100000 + solving: + mip_gap: 0.01 + time_limit_seconds: 300 + log_to_console: false + log_main_results: false + plotting: + default_show: false + default_engine: plotly + default_dpi: 300 + default_facet_cols: 3 + default_sequential_colorscale: turbo + default_qualitative_colorscale: plotly diff --git a/tests/ressources/v4-api/io_flow_system_segments--flow_system.nc4 b/tests/ressources/v4-api/io_flow_system_segments--flow_system.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..082c37eb583c9c9bd367e9c9adbcc3af412d86d7 GIT binary patch literal 181187 zcmeHQ31C#k`TsTvhY%zP$c-V$5lkR~fPf$bl0Xa)AXG#l%er|XE6Hxy-H=!!hX;bv zdMh5SP}Evcv|>g7wxY!gwcf2*3RbO0RZzU3it_*F&3wE2UiRf6>uNUNC_9<=zB%4+ z=FR)fH#6U?pPrM~sYCA$aqZg!xns)h+7+i?%1}41b6q#CaC*+%xK5tIaVh%6_{Hkp zhhya*caE3-A4;U(Ar5TfucRdLyJLv>1(+s1NbE5f|B8pU&>j*19Dcvo2VL>f(Ln$r z^A#y}yR+Qk^V#hw$7`G?I_^4`&|_p-l;^n%;6cK zw=2Eca+jyd7ZC9UWPDD|?eMxhc9*+EtJLtv?YH|}ztn_?-&>_&I$>o>u_Sh{!>
W#Bn)xq*!^Yp86qEyc7By8K}w$Hbyo)pA#R9A6L-dsA8#z(&_MjuT3rZ*OIO?Rk;;3n2A}Yc~i!d3{C}d?< zRF(T3ZcQ|hy0v-{icUjRv5}NwaZR;Qge}mi8R{V*j1fIm{>E1yMhvMs6$+^@N*HSj z{|wer9gJl4n#JpgSwm?ZRRM@mwbD|}>G#(M)@ zkQxk0d#Dg^uny}+XhJR47rCkRSU0V3HQD5C>*9^UyMZ94B;q!S)OYM~oucJcq;}h3? zvO;%ZY3b~sfWX0n-Im=~?eaUz>>fA9(LZ4qiQbOz6@6jd#KOSjFAIUm@{?n#;(V+g zpWjp}{d*G*VSia_t^BMI&gu)If2*;SqO%ELC8Q1a@u?~#WY+Sb_jP%9i36LBXk3a1 zP?v{2+RLZMxrp%n5h2_I2l9rljirz#XyAg2g+r;SZJm;&Z8J2xCYvvX@3 z$Xss>!DearVjBulM+P$uUJKuxMHSVN!Fb2loasr#hb6R8H;A4wf~XNJfTWe!fWqNs zxNnem)YLDJ_fa1EC7}PMGpwN1`6S5eXTDu|xsj?f9;R zgTg3)F|2waaZAwaddp&xz&Pa|M~Uj}?H09X7BR;PUvNV#30q)Dp%+7p1MrDQXQ&o* z96fSq6ZTfQ-7fbM{rNH3aILsjzJd6e!`?w>NQOxGTtQByM3qO3${;VwZB-lMUJ()~ zCw_PJ(iq1u*he~+7%6Z-8e=-k9Ns1PFm+>w{gT)P){Xg`hz_6fkz*GTvq44`E=sT; zQhgj2J9y2|f7KsdiDLBQ>&EJ7xrfL#0rRu zhGbUS=xGZHp-&LhF|-$}+iuK7sjYKC7DryssFkT=@~Fp(c;X^W1k^<1f7B<+{4t*> zvsQniMaD+r!_Sqj(hGic!#%NRP|>Yv`Ht#vN4%m9X-BD^L-LGxH5<|n*0Mej`gznQ zj=p}JsthI^rFx_cBVLKYgjEe*6m~#r*I5zjGW?Q*8+ueT5its5M;R1QU)jc`7ETyb zL$>30p=PSSM8e8oTwOnbaZ6q922!X;Qgr=(hsxjl1qivL_A5 z+=EjwV$`hEz2V_DN@4u4%60`4@|lp#0@{}I9pw(UQxhLDshh%N3g#DJ(DVw=aJe;y zcdD-MLj{=VmID(iA_9gRuf=Ux={LVXX&6Zp6~IPuLWMhKtpw``V2Og)6vI`+|1go1 z07i=NsA7>wvhgz%jZkolXKs{YJ17_gqQS93xJW-1I0#MHA%3P9;+q;^*nzBQc8!^Z zlg&h^!y46|jC!+1K_({lBB^Y%9Hr{*>A2LXJyk9d%)9UZ8GIqJNSFwUeERm^=uOJaJi$4fXe+PA?RQ8;H^90f2a>K=feNwIZW> zXhLJ6HGu>)oLtyXd}E>oDVS)B_23>k>_kS#fn8{{2w)dXu1VO1MhnFb=cA(0?!-6n zxUdUGiwJgCQvRw9s*OiT8$GYDv|aeHA8ig z=%oVMXZ5w$Wozpd6lE~Yjx|^WlRTzSZx)h77$Y@YC^56yU`f>UXCtyl$p-QiNT@Df z&sZO?)h&Wlz!<7TN@DaXq}l@dg;gUn98MuqqWPR&SEXNc+IXV?72}%TeY<>OaDYlP zui%nuE)Oqy&c6WlLAbCbcvT<$+e>lg-i}L*Dp9j7mgTGn(WMKm(@?sXntrBUpx}iR zy`@R@m5C*Uc^V-X@+?c2gn15>v1{qM6)vCn9EE!#T6|=BqyT9SH|z~l7!(UF%ltCC zykf$2w%1jmRupM&4ORQP9>j=oeI>#?Xe!q4@$2}CF$9kGjF<79#Z_VGPz3)z?Zl!U za_Je^Y~955IGfFOg7^a+`SFQju~`zXWRr{8CPSMO#g+JBA}klP!D_h_?FY3KEmuzg zpnG4j0uAEN09yWL_7k&(XgqX-MEnQ#S(@KjQkpf@H_M)lTGq8LeM6{qARkWwJaO(5| zDsh};iRF`eQ)S#Ol!Poz^+T6ciDaZu_mT4Mb4n=j6j7LXXd_qV&B~scs~55j-WP=w ztL@OcWa3qy!pmyCpQw|=@p#9ErT#|b)ZxhMhXYlogCpWMuBzIfgrX2{>po2Q zRIT{OgL<&V{p8=#f0e*I5o=YnffFUV_E}SBdp-DF@w>1QiS>^u_)oy3xa!1_X>Pr> zP0SiTZuqFQvXau#6ElZrW(^+$XN5ySR;u|<_^Tu(o5jdCrmPEXuHr6*MTvwH^(&lg z>VS161B)yR)X)xp>owC^j8z_;<;r`klCY zp~FWiacha1;;q}(#&zj=PP_Pn8J{P$y=U>_6B76A0@(7(fY)n^M~xZWZsA(nik<)q zU+Si#kY>`*rD{=xaEIcJuwkr(8kpEn0g2Zbsuq4o3@`i0Ip9;-mX#u zO5Pmxy>~Cx(d?N4=hYO4hA4(eVfCfMvv0XsxJM_+6hEJ2e8d%p;yP?}tX`7_kU6P+ zjxMxr*JPtmXsH`1fnuQr5wTWu+cxc;UtT(id}>g=^dteuSDg$H;@_(KU#t#YKnb6nab}s#Z}i7UwMUWx^Gs- zpN7aUi|f#HXgut%Zg+xS9$U$iPjv2Cx!MMMXPvmcv6s}#HcP&2={2dcLpW#aWCcBY zi~u7Lf&kINaq#30`O$h!b*zHC#_Pl-QGET01LwFZTqQ>KtCCB^{U8Y#LGADm<2K1~ zkYDNyM_=TX>~o>6KY3)v$c*%iO#DANBV)Y&e`2Pf7x75(^&KKkM>&q_9bTOz38Ey5 zhZ_^hH5~al?MuAc5}XrvxB+h4@Xq}K+S&9G!)c)-hK?r-3KSP7_OjUYv4!w$I`3&O zN&)e4ar+bz6N3>ExnX)9p#gm`_vb?|G3Kw^qgkM zoH|32$SF9anUP;KPyd{Y(M}Kir{f$ZCz0bmY&^n=zrVQlgZ(1q0N&58((mbmKaofx zW+_H2k;zg}+093H4L1&MMgjay6lU=D&*O4V`pv`csJ5_9MaCzNatphEjLbe<3!60a zHCgWwZDDeLW724uZ%$H5M&#R;=s;e7@Vz#Mwq<|Vh;(GzR!284-wDTN6-=J}NS=vG{Bi-TnCud2^@F)`z8W z*dYZRX?U(om6u3~ft{dqIEK`n^6e_vkcVGJ(X4bQd(LEhrpwyNzZ0NiyR@}*U-(;3 z4-Em#?sSqT(6eA-GP$OyOs*Lw(-d8!?pmnIWc<`!DO2W6&%uu^V%iaLEE#%Vi9|9E zs7CJn{fL+7L4*FZsf9CiNmb`ER#1(!b+DAB$|9`jx*|R5%ZT-)t;O(rB8C?({({Dgfm~K!K(SX=xBs9U&k?=?#$OaSzH&28sW_Ho#o{^*Xb2A z%XhJmKgr^{POZY^iyfox%;|TxxPG$5b-_P`Gp9qZz4sRYuA7F7k#p3!vi|eOaTpwg{UA;DS%BfWFb*>M!NJn+kb>vl7 zSLZqoR&-~^C(Yt|y2bV37S~5uT+gt$j$;|!nae}!Ec11wn_=a%EUqh}R0jto4o9e? zpbP9X0*nA7zz8q`i~u9R2rvRMguuMHxw%45PkJ8mX}oEERE-7_>V|o|ZIC4SeSj~LF3<-xB0Y-okU<4R}m`A{hFVK9s8GuWeFPI_WFeAVS zFanGKBM|clM0Ex4QcdD1CNadqq87S>SFE+XY|7GS^);Yv#TwAg`Wn!2eave>_Z*u$ zHm?X*ioywMK_@MDB3}X`Hl)mk8c4>VOygD+!KnnuZ`Zf`Esb5IZNtTT?}-JSwrqf% z0(9GE++rb?U_R3OS37FHth8c_R@$YTnJudNV2=@C1Q-EEfDvdt2t<`F{=p-GZQ*QD z?7-<;xclSC?-LYzW8VII-+vkQ2~PUlh+1U#35snr;}3lP7C1k>Y>gFrw9+-+$?Q?q z4gWF%i~u9R2rvSz2!X)TyWm9FfSZ~Z!uYhsC&6(1vlvztZSDruxV3mRWM6g^F~dJ6z@dtv z-Qg%k8vy;Q?&t*@ac^@v4E*fT-ta0GU>wx0?Aiyqqd*3nwdFuxcnyi#LOAPi%0PG) zt7JSp*zWK^*o*?H;JW%3L!dkE5+4g6|N7}6P>V{>99Z?xbE)7!Mmq|YzdtA)K0$%u zVB5Vi9X8|6^kLBB>ci=fiz$qOJ8FlFfDf=_qo86~uW^ux&o&DFxxHpQbjOVC@c4%p zZYE$_ov+t_TiG7);l=jf^q_?XL=7#`AfnPOKyQ*TZX}&B7B)_|^rMGm<htil#-C%g4K;fp+A>NtPgD1b~AuB$3vzbq&@MfWz$x8xE}AO0quZ?C-fj~ zd{-|A?RSTn`n!@Wi-_|B7#xRhqH>R85MPWd>;#uSX49WP-qufzi>52##6JtG62jg{ zhOksLH#aYLZtkq9xpv)B(HI04UogP4Kpj5KA2eB1g7#0{!Xz)W7x!gzN!D#9QR5(= zY$K@*f$Z5(*lhiy!bx|ee`|#?{8qIw{P3QG_vB5_nF4eMySV*gm#@yUC1B}wmmtiw zk`)PC0=6{W^`5`$4s|-YJVQ^MA1+TKC><(AYzf#Nbe9%hIQ(hf^vt#di41nH;iH?+ ze;{yd3D^L1*I-0>1_YsKOCa34p(Sel+-`g}{8K*H&EsUMwgh@$4>oG3`LWVrTUR39NaJ=|@)(B<6^fK9R6{8rcaR zK|xqx{)RsUa=9Icz+05j(-yqYsCD6FK-bj+m57D(~15Xn5bx zAY*>ys~#tL8vk3#%co8M6Umc;phqBmagLlE?unATu#+T7chJiq8G1za&ex=D;MZ!r zLJt)XRDZm};}tU`9A*R<0Y-okU<6_wfxv90u1*$e?WS47en;^K(%`n#1H`(g_j)3# z>jDqmB-@sG%w~P)T!bcdBWnj<)cc>?w!5L;k=DNe=i4GV6GW|z{AiD~XuLz+!-$^! zbF7#*4Wmew{QolZCMeiv1Q-EEfDvE>S`7kGWt*PgNnBev+Z4qgcwhVvfl-UDA&tfw z%oEf}LO;Ry(^*5JZ54qCFb;(nx4DWi8^Ls1yNvd^}q`hpZI`i?z{*whj%Q5KHd2r<) zYnsYN;}s&5hG;0l1rU-!{$&Ih0Y-okU<4R}7(yVxsI2vQiDFN65)uN*2_{46UTU=+ zZ*_fpsROH}uX(FcsA%~rMey7H^o_rojC`S%r8Y}IOQVKUu`ufH2<_V`H?i(K-e+8%-F@GhxtD*ZU=8{qKm; zz7#4%*Y9Yz!$9W9 zs6OwLELpC#l6BO0j!4;Xzs-FY7RJcCaC+vz_~v3!5+hi&-M@2lbFnCo5iI)tYtk|KWWJDO$@i;wox-BY3K!&$GR(h>03*N%FanGKBM>_XGlr;LVwkz4Kl3~bNe)BmEW~o!v$i&}`k`Sj1+paMWDbR<;9Mf>2%y*T*1STJEV1CY|1!qz6i2=xdNJ_c%(_ z$&X^?+qhFm{M3fU9W}YhBtA%qpDI(YRbFr*p0~>FcDa}6C7UyVq77EjQjF2)pv}-o z1xYfJiV@zk8VOqI?sxG>Fg%cal@VYB7y(9r5r|;~nmZCa5F;bOyie}(=S|O_0w0bI z*7ma($-k?wkp7!*NI(Cm^w*4$jO+h;Y;P)~ zdzBfTtR4Pk1Q-EEfDvE>S`h+K)yd8oE*VY>*Jq0j$#3=Fc%ObQwNTJPd|cd@KNz1) zEWC}=52j86+^m$7KQnh$QGVep`;7dec_8-rCgDG^=~!${62}b6_(H`io$&XKmwyX= z;Usvb>Wc&0n#%CrW`-v*ddj@~ zS(1E2^t~;(6 zu!9<`0QfOj3}?{Y*D$ycCQxuVniDOCi4@#`!G%G4T4K5SI2`OKCl;=cgW8M^YAqC9 zKQ2E~ec|^lyf3`COM0J3VbMmlV{Fs9YiZwwJ^!nIII3EZ!c*nv1lzej_9wtv*q#(& zf#v*9($XWe`rx1g=wuE zg=sArg_8;o9JJCX;RhhB>!fOmZi)vKj(PwY;$KF95nu!u0Y-okh$RG~%9fwZjS03a zCi-?fZ|@L!n><1zQL}DkA+@lE7@v7#z$5QnGR=wsTAldYiy0un%|0W*2rvSS03*<9 z5HRi=MZM3adF5}|5@>RyXHli*a+Yb{p>yp1GP~F`nOZAOO88ZZBy+Zep$e;0!-<;D zJ6JQ8qNO%2nmqPkRT@PbrlR#W=2qnn7VR(NNSLN+28S0m7w*tZib$lW!HBYWFHfb2 zH1!jRSevgOP%+!#byR46&Fibh&8Du3stWzQiS$B>NRveMMGQG7W3!VY(&;6^h~~$# zJIfs2C7Rvmclb5ON*R$FcvMFKx1S+1Cp~Hl)t8H-Noun$x*$^e@)@eRk=B)9X(^}Q z%(-FYc>uTHLv2d>i#8j>S3PbFH)J!Ojyj=ObdCvyX|p;DwQ(-6Vvtt)+QrNu2|o52 z0Y-okU<4R}R)auub&ktpMCUlm)8};E=2DyA9_c&HSH!AA5^!w)MmqkYySwl&{*ntC``NNL69bpwtf4* zhd`Q6I{f6j4?}hWpw*zZ*Iu{-GTR7aT<`9m@u)Jyl>IB;6VNXn&|cFke;vIGx}yP- z3GnsjZ$AUlywafMe|#1;B821M;o=D|g0zKnv}WSpper7rn+{J+c7e?=e%ke2Dz_N4m_QOrs zSjWJrx19YB%)#P}hpU&p@LyPfWtar7ls)mOG8*-7t>XcZhMTm%-f|G0z{kvn+jqZm z5MICsN`qzhYoEhRv_>`-u6=s-A$T1BOowH!_WMG&5|s{PzU%lkNLx=2IzIdcq+zE& z4c~JFp1|^^!AU6}eFuNT;-tc=7f$>h&cdym>5$O>njfGSt~?(Ji>~^7#ZS__n%fty zjFG-@?XqQ~jr(TMIM+Sb?kKb+j8GLbns%Jj-Txs^2GdGQHK*Ta_mtXQ`VNr_&F#Oh zOm>;J1hNWt=5eKCuhhKy{*p(RQi5bxY=U)y;_R`o#R??%bU7tQcF78@lbh|*oLaTZ zr{&5=t*vvx<8>`@x#jhYTHK!E^}kv{IgqKdnUTvubC>LMQ~G3#BHBESRhm7QTr5O&ani`X|MQ+`wa>!CiM3}i;^ zo03_J-;}Stls;M9oYkCfmgEQe$5MS1ZGOstY zdv;l~*Sb9uBUto$U|YC-)=la!UWyScIzK$Pm+{+)vzDv6otH%+56o^)i1+sgrf-{K%w^pR|c9C~Y!T9g&i&?^%8=rB0TwBT{l5^Iu#f z)245w*>CRm;vX^cF5Kqr@ ziwv6$mD=)fGO|fQz9siQP1qxmlR2=u>NMwA~}k#iD17U@`5kmo5>l9pLx>xW;ld zS)vrF^ZSkJS?C76gMk)8H`r$c7y(9r5nu!uftW!cs%(7AT`|GN`(f=r-f#P!*xQd_ zw#8{)W3af_vUW|~uMkHTNYy*T3^Qgr4}K6vfDvE>7y(AW5&`4_1^#@3JdT7?O?OM6ay7Pl1kRO_w6fkG4 zJx0Q3)h8^o-u!10E(pz9*y)#9w|j;JW`w3D1y7UVf z6Qjuy=Ee2R_cXLlS)ccjB{;IGQS&|nZjPV4tP=oh7AN zQ#~GU33f1k%?C-S6xSDsK{CYI(8(gcV}3o0&rwiWRG<1D~i}@PUoMbHb!rk5OHm&Wh?!$GWy>>_gcf5zPFwx zr#1I_L@43v{UGj~=|e&H

GXyIzI2dRO2sUFd6=q>lh+__y4OD!6RbNK5&b4@U9+u+tcj7)+e^C+ca)8c z=60#cO<4XHgA3nqjkKZ5(m`|baUuuH;$Ccuyn#4iK~QEg>d{4RO^=uI+YW~8)UkYvk7 zzWPrqhMGu1CVvStR1+c`WCR!iMt~7u1Y#e70L#)BJd1^?maHo5$+lZ!MDJ%GnyD-w zM#*B)v5$Tt#wnH?M{d=|Kx{F$d2)p@CUgxkRNAy6r2#sB_27$EjMZwDhmRR6!N)!$ zzz8q`i~u9hY7mI3PW8~2F~QPK#n$o6kaveR0=tOq(Uh9a%ezPb)v{ioQ)XJw22I57 zu3mq>RK8%eQJP-2BUi0{){4Pe>0H+{gC+RbX9O4lMt~7u1X>LOl7&UtQbwB&MymrY zkcdUrP{LqrZ$(uD76vrn(O73NqU_|f<3NjCmix@6;l#o8h33~H0M-zi?fH?Eo< zZ^dY>bh0-vqir?47e6Q?zz8q`i~u7*2sA>kXmxI0)6e=@ko*&IsL0No4@L0S_FWp+ z2<#%PldZTl7Id<&Jic44i#6+H$v!2uPO>mbVR+`>ovawHmCkl6Gu!}t{0Aez2rvSS z03*;^5NHHTiyXr}FeWA#?l5c|H(b&6SX8kqoDvh*orc)m_^P%=zF$pcxMU`s-cI-O zk=Ix;UMrpM4raUrANz~|BftnS0*pYbK_IHE?a4VY!P?TWb=>~UYuQo7Zt9|#z)sN3 zuP(ZHy?nu%%XsPNA9`KSn7iW}D+X+3z3XXazyu%ri~u9R2rvSSK&wF@sx0pBWii3x zhGXl!K zkxuwy!{A}O54H|y#aArqu;C)+PlYiCTTg(GI*UJ$-M-gO{Bf-f+-Oi4a_%^C9eVE` znD>GeBkqm&!?|~v5r>0?uQ39Q03*N%Faj}+KvY>>>gt$abs5+qCLAohII7rva%D_l zmx@kht+!5YecV9PI6)oG|+3&vg-67uF6?^4Q zL3)Qz*k=sS{JdyZhgtsLl!H7ZIceZOJuTdvLZ@vG*Yt(7b)sG}!4?B_g zV6;n@+z4YaT|3-+aLtX-JpmvM-p-wPi#i+nlS9S7fod$-=`e81|NRE!8Ob*vd3`fn zj}!lC;Bs8B1!n4r9erxm-5}3n-gCjne*k%4^kYk3*b3P?zJ~`rb{`0nWLYre%#U~f zBn?b*bg+q~3l`_RMVO=CJW#UMsB?5_gzd}kB+h}8x@Bqh{-f%D0J%N3^|4~m$ueG@ z-=55%>tMnc7y(9r5nu!ufmlc2C($`y_n1_43U!@O)wOz^^JoO2^MTQW0(=&kJMvll z7vB(n)lb$F(zvd7Rr`~KA8-3wu{zR&62LY%X5kWZ^q9~Qy5WCd&vTWRpY15G(x6N7 zB&AQC3|So^>lm{CI2$?<0Uh}=bYvBrDgSED@5zS?^#O(1`kL7`g?Xo5Q+3YkKQxwp z#35t2*WPootQfV`Dvq(tsGC#u9G4Mb1Q-EEfDves2**l@{IkMo4BuK|48K)v3?IJS7~Xz^F+5K`i1fNJV*PU)KrF@ z#|+!ph&jXvFanGKBfto>0tD)1*nQ(6GolPz*ku!rd}i1Z5Bg<>ZDh1Rwa(hium>D9 zmhZV~8GG}l=S+bQ$EqsCk!Zgc5ACxh{6bwwEtp?WJKLo>wQ847o9b~d*Suo*Sv$w> zFOxSiYkhu)*H4Mt63$j}hcqUx<}O+Ey)2e3VSdB8mR8AJGi0s<+sXMOTf#XF=NgQQ zx!T)P%mt0lRXywIlPE47fmqM8Qm&b`nCr5x6!SclYf6#d>#3;KYMh$SXRp-Uj&lEn z=zHy@<(_JLnWxG-zaK?fNDrB(dEM2!?(kM<^~QX^KgC?6VkS>>`09XmrZ(znw@UhPbFanGKBfto> z8U*TP?B($=CZdd8oDeD;`OMfQ9`wtMy>&5m+NMnPzjyx|N1DpuZ(#;c@UhPbFanGK zBfto>8U*TP@U`)H@>C>s?quwgd}i>*hQR*b$Y37P!6nbDgN z;UFWx2rvSS03#6l2-M5yH^jr(h%)+73Q+Qy(HmPBGkRw9p)G=JebTj&Tc#~*D#L$_ z89u?sJ|n;gFanGKBhYFPsF&g277ybh%J8!kuH-YrH#Rh8_{{J_TZEb6lc|1^Ie7E_ z^rkZYmzePreC#s^(AKD@sV*GUU m7RBi>c1nWP2msG^3+vwD5kOd6_#z{~2rvSS03#5~2>d_8edf&o literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_flow_system_segments--model_documentation.yaml b/tests/ressources/v4-api/io_flow_system_segments--model_documentation.yaml new file mode 100644 index 000000000..2ac0e8b68 --- /dev/null +++ b/tests/ressources/v4-api/io_flow_system_segments--model_documentation.yaml @@ -0,0 +1,1914 @@ +objective: |- + Objective: + ---------- + LinearExpression: +1 costs + 1 Penalty + Sense: min + Value: -11005.751896495389 +termination_condition: optimal +status: ok +nvars: 508 +nvarsbin: 146 +nvarscont: 362 +ncons: 590 +variables: + costs(periodic): |- + Variable + -------- + costs(periodic) ∈ [-inf, inf] + costs(temporal): |- + Variable + -------- + costs(temporal) ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: costs(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: costs(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: costs(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: costs(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: costs(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: costs(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: costs(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: costs(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: costs(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + costs: |- + Variable + -------- + costs ∈ [-inf, inf] + CO2(periodic): |- + Variable + -------- + CO2(periodic) ∈ [-inf, inf] + CO2(temporal): |- + Variable + -------- + CO2(temporal) ∈ [-inf, inf] + "CO2(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + CO2: |- + Variable + -------- + CO2 ∈ [-inf, inf] + PE(periodic): |- + Variable + -------- + PE(periodic) ∈ [-inf, inf] + PE(temporal): |- + Variable + -------- + PE(temporal) ∈ [-inf, inf] + "PE(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: PE(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: PE(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: PE(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: PE(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: PE(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: PE(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: PE(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: PE(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: PE(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + PE: |- + Variable + -------- + PE ∈ [-inf, 3500] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "CO2(temporal)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Wärmelast(Q_th_Last)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] ∈ [30, 30] + [2020-01-01 01:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00] ∈ [0, 0] + [2020-01-01 02:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00] ∈ [90, 90] + [2020-01-01 03:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 03:00:00] ∈ [110, 110] + [2020-01-01 04:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 04:00:00] ∈ [110, 110] + [2020-01-01 05:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 05:00:00] ∈ [20, 20] + [2020-01-01 06:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] ∈ [20, 20] + [2020-01-01 07:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] ∈ [20, 20] + [2020-01-01 08:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] ∈ [20, 20] + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Variable + -------- + Wärmelast(Q_th_Last)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable + -------- + Gastarif(Q_Gas)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Einspeisung(P_el)|total_flow_hours": |- + Variable + -------- + Einspeisung(P_el)|total_flow_hours ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 200] + [2020-01-01 01:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 200] + [2020-01-01 02:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 200] + [2020-01-01 03:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 200] + [2020-01-01 04:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 200] + [2020-01-01 05:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 200] + [2020-01-01 06:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 200] + [2020-01-01 07:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 200] + [2020-01-01 08:00:00]: Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 200] + "Kessel(Q_fu)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_fu)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_fu)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_fu)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_fu)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_fu)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_fu)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_fu)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_fu)|on_hours_total": |- + Variable + -------- + Kessel(Q_fu)|on_hours_total ∈ [0, inf] + "Kessel(Q_fu)|total_flow_hours": |- + Variable + -------- + Kessel(Q_fu)|total_flow_hours ∈ [0, inf] + "Kessel(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 50] + [2020-01-01 01:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 50] + [2020-01-01 02:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 50] + [2020-01-01 03:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 50] + [2020-01-01 04:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 50] + [2020-01-01 05:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 50] + [2020-01-01 06:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 50] + [2020-01-01 07:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 50] + [2020-01-01 08:00:00]: Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 50] + "Kessel(Q_th)|size": |- + Variable + -------- + Kessel(Q_th)|size ∈ [50, 50] + "Kessel(Q_th)->costs(periodic)": |- + Variable + -------- + Kessel(Q_th)->costs(periodic) ∈ [-inf, inf] + "Kessel(Q_th)->PE(periodic)": |- + Variable + -------- + Kessel(Q_th)->PE(periodic) ∈ [-inf, inf] + "Kessel(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|off[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|on_hours_total": |- + Variable + -------- + Kessel(Q_th)|on_hours_total ∈ [0, 1000] + "Kessel(Q_th)|switch|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|switch|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|switch|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|switch|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|switch|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|switch|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|switch|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|switch|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|switch|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel(Q_th)|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel(Q_th)|switch|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel(Q_th)|switch|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel(Q_th)|switch|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel(Q_th)|switch|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel(Q_th)|switch|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel(Q_th)|switch|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel(Q_th)|switch|off[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel(Q_th)|switch|count": |- + Variable + -------- + Kessel(Q_th)|switch|count ∈ [0, 1000] + "Kessel(Q_th)|consecutive_on_hours": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] ∈ [0, 10] + [2020-01-01 01:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] ∈ [0, 10] + [2020-01-01 02:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] ∈ [0, 10] + [2020-01-01 03:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] ∈ [0, 10] + [2020-01-01 04:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] ∈ [0, 10] + [2020-01-01 05:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] ∈ [0, 10] + [2020-01-01 06:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] ∈ [0, 10] + [2020-01-01 07:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] ∈ [0, 10] + [2020-01-01 08:00:00]: Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] ∈ [0, 10] + "Kessel(Q_th)|consecutive_off_hours": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] ∈ [0, 10] + [2020-01-01 01:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] ∈ [0, 10] + [2020-01-01 02:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] ∈ [0, 10] + [2020-01-01 03:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] ∈ [0, 10] + [2020-01-01 04:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] ∈ [0, 10] + [2020-01-01 05:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] ∈ [0, 10] + [2020-01-01 06:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] ∈ [0, 10] + [2020-01-01 07:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] ∈ [0, 10] + [2020-01-01 08:00:00]: Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] ∈ [0, 10] + "Kessel(Q_th)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel(Q_th)|total_flow_hours": |- + Variable + -------- + Kessel(Q_th)|total_flow_hours ∈ [0, 1e+06] + "Kessel|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Kessel|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Kessel|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Kessel|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Kessel|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Kessel|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Kessel|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Kessel|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Kessel|on[2020-01-01 08:00:00] ∈ {0, 1} + "Kessel|on_hours_total": |- + Variable + -------- + Kessel|on_hours_total ∈ [0, inf] + "Kessel->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Kessel->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Kessel->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Kessel->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Kessel->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Kessel->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Kessel->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Kessel->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Kessel->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Kessel->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Kessel->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher(Q_th_load)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_load)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_load)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_load)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_load)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_load)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_load)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_load)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_load)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_load)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_load)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_load)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_load)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_load)|total_flow_hours ∈ [0, inf] + "Speicher(Q_th_unload)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_unload)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_unload)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_unload)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_unload)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_unload)|total_flow_hours ∈ [0, inf] + "Speicher|charge_state": |- + Variable (time: 10) + ------------------- + [2020-01-01 00:00:00]: Speicher|charge_state[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Speicher|charge_state[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Speicher|charge_state[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Speicher|charge_state[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Speicher|charge_state[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Speicher|charge_state[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Speicher|charge_state[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Speicher|charge_state[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Speicher|charge_state[2020-01-01 08:00:00] ∈ [0, 1000] + [2020-01-01 09:00:00]: Speicher|charge_state[2020-01-01 09:00:00] ∈ [0, 1000] + "Speicher|netto_discharge": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher|netto_discharge[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Speicher|netto_discharge[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Speicher|netto_discharge[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Speicher|netto_discharge[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Speicher|netto_discharge[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Speicher|netto_discharge[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Speicher|netto_discharge[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Speicher|netto_discharge[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Speicher|netto_discharge[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher|size": |- + Variable + -------- + Speicher|size ∈ [0, 1000] + "Speicher->costs(periodic)": |- + Variable + -------- + Speicher->costs(periodic) ∈ [-inf, inf] + "Speicher->CO2(periodic)": |- + Variable + -------- + Speicher->CO2(periodic) ∈ [-inf, inf] + "Speicher|PiecewiseEffects|costs": |- + Variable + -------- + Speicher|PiecewiseEffects|costs ∈ [-inf, inf] + "Speicher|PiecewiseEffects|PE": |- + Variable + -------- + Speicher|PiecewiseEffects|PE ∈ [-inf, inf] + "Speicher|Piece_0|inside_piece": |- + Variable + -------- + Speicher|Piece_0|inside_piece ∈ {0, 1} + "Speicher|Piece_0|lambda0": |- + Variable + -------- + Speicher|Piece_0|lambda0 ∈ [0, 1] + "Speicher|Piece_0|lambda1": |- + Variable + -------- + Speicher|Piece_0|lambda1 ∈ [0, 1] + "Speicher|Piece_1|inside_piece": |- + Variable + -------- + Speicher|Piece_1|inside_piece ∈ {0, 1} + "Speicher|Piece_1|lambda0": |- + Variable + -------- + Speicher|Piece_1|lambda0 ∈ [0, 1] + "Speicher|Piece_1|lambda1": |- + Variable + -------- + Speicher|Piece_1|lambda1 ∈ [0, 1] + "Speicher->PE(periodic)": |- + Variable + -------- + Speicher->PE(periodic) ∈ [-inf, inf] + "KWK(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "KWK(Q_fu)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_fu)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK(Q_fu)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK(Q_fu)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK(Q_fu)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK(Q_fu)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK(Q_fu)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK(Q_fu)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK(Q_fu)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK(Q_fu)|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK(Q_fu)|on_hours_total": |- + Variable + -------- + KWK(Q_fu)|on_hours_total ∈ [0, inf] + "KWK(Q_fu)|total_flow_hours": |- + Variable + -------- + KWK(Q_fu)|total_flow_hours ∈ [0, inf] + "KWK(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 3300] + [2020-01-01 01:00:00]: KWK(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 3300] + [2020-01-01 02:00:00]: KWK(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 3300] + [2020-01-01 03:00:00]: KWK(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 3300] + [2020-01-01 04:00:00]: KWK(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 3300] + [2020-01-01 05:00:00]: KWK(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 3300] + [2020-01-01 06:00:00]: KWK(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 3300] + [2020-01-01 07:00:00]: KWK(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 3300] + [2020-01-01 08:00:00]: KWK(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 3300] + "KWK(P_el)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(P_el)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK(P_el)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK(P_el)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK(P_el)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK(P_el)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK(P_el)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK(P_el)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK(P_el)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK(P_el)|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK(P_el)|on_hours_total": |- + Variable + -------- + KWK(P_el)|on_hours_total ∈ [0, inf] + "KWK(P_el)|total_flow_hours": |- + Variable + -------- + KWK(P_el)|total_flow_hours ∈ [0, inf] + "KWK(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: KWK(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: KWK(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: KWK(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: KWK(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: KWK(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: KWK(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: KWK(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: KWK(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "KWK(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK(Q_th)|on_hours_total": |- + Variable + -------- + KWK(Q_th)|on_hours_total ∈ [0, inf] + "KWK(Q_th)|total_flow_hours": |- + Variable + -------- + KWK(Q_th)|total_flow_hours ∈ [0, inf] + "KWK|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK|on_hours_total": |- + Variable + -------- + KWK|on_hours_total ∈ [0, inf] + "KWK|switch|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|switch|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|switch|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|switch|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|switch|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|switch|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|switch|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|switch|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|switch|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|switch|on[2020-01-01 08:00:00] ∈ {0, 1} + "KWK|switch|off": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|switch|off[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|switch|off[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|switch|off[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|switch|off[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|switch|off[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|switch|off[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|switch|off[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|switch|off[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|switch|off[2020-01-01 08:00:00] ∈ {0, 1} + "KWK->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: KWK->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: KWK->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: KWK->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: KWK->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: KWK->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: KWK->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: KWK->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: KWK->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "KWK|Piece_0|inside_piece": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|Piece_0|inside_piece[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|Piece_0|inside_piece[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|Piece_0|inside_piece[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|Piece_0|inside_piece[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|Piece_0|inside_piece[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|Piece_0|inside_piece[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|Piece_0|inside_piece[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|Piece_0|inside_piece[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|Piece_0|inside_piece[2020-01-01 08:00:00] ∈ {0, 1} + "KWK|Piece_0|lambda0": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|Piece_0|lambda0[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: KWK|Piece_0|lambda0[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: KWK|Piece_0|lambda0[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: KWK|Piece_0|lambda0[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: KWK|Piece_0|lambda0[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: KWK|Piece_0|lambda0[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: KWK|Piece_0|lambda0[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: KWK|Piece_0|lambda0[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: KWK|Piece_0|lambda0[2020-01-01 08:00:00] ∈ [0, 1] + "KWK|Piece_0|lambda1": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|Piece_0|lambda1[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: KWK|Piece_0|lambda1[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: KWK|Piece_0|lambda1[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: KWK|Piece_0|lambda1[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: KWK|Piece_0|lambda1[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: KWK|Piece_0|lambda1[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: KWK|Piece_0|lambda1[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: KWK|Piece_0|lambda1[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: KWK|Piece_0|lambda1[2020-01-01 08:00:00] ∈ [0, 1] + "KWK|Piece_1|inside_piece": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|Piece_1|inside_piece[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: KWK|Piece_1|inside_piece[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: KWK|Piece_1|inside_piece[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: KWK|Piece_1|inside_piece[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: KWK|Piece_1|inside_piece[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: KWK|Piece_1|inside_piece[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: KWK|Piece_1|inside_piece[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: KWK|Piece_1|inside_piece[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: KWK|Piece_1|inside_piece[2020-01-01 08:00:00] ∈ {0, 1} + "KWK|Piece_1|lambda0": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|Piece_1|lambda0[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: KWK|Piece_1|lambda0[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: KWK|Piece_1|lambda0[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: KWK|Piece_1|lambda0[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: KWK|Piece_1|lambda0[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: KWK|Piece_1|lambda0[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: KWK|Piece_1|lambda0[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: KWK|Piece_1|lambda0[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: KWK|Piece_1|lambda0[2020-01-01 08:00:00] ∈ [0, 1] + "KWK|Piece_1|lambda1": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: KWK|Piece_1|lambda1[2020-01-01 00:00:00] ∈ [0, 1] + [2020-01-01 01:00:00]: KWK|Piece_1|lambda1[2020-01-01 01:00:00] ∈ [0, 1] + [2020-01-01 02:00:00]: KWK|Piece_1|lambda1[2020-01-01 02:00:00] ∈ [0, 1] + [2020-01-01 03:00:00]: KWK|Piece_1|lambda1[2020-01-01 03:00:00] ∈ [0, 1] + [2020-01-01 04:00:00]: KWK|Piece_1|lambda1[2020-01-01 04:00:00] ∈ [0, 1] + [2020-01-01 05:00:00]: KWK|Piece_1|lambda1[2020-01-01 05:00:00] ∈ [0, 1] + [2020-01-01 06:00:00]: KWK|Piece_1|lambda1[2020-01-01 06:00:00] ∈ [0, 1] + [2020-01-01 07:00:00]: KWK|Piece_1|lambda1[2020-01-01 07:00:00] ∈ [0, 1] + [2020-01-01 08:00:00]: KWK|Piece_1|lambda1[2020-01-01 08:00:00] ∈ [0, 1] + "Strom|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + ---------------------------- + +1 costs(periodic) - 1 Kessel(Q_th)->costs(periodic) - 1 Speicher->costs(periodic) = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + ---------------------------- + +1 costs(temporal) - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 9]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] - 1 Kessel->costs(temporal)[2020-01-01 00:00:00] - 1 KWK->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] - 1 Kessel->costs(temporal)[2020-01-01 01:00:00] - 1 KWK->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] - 1 Kessel->costs(temporal)[2020-01-01 02:00:00] - 1 KWK->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] - 1 Kessel->costs(temporal)[2020-01-01 03:00:00] - 1 KWK->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] - 1 Kessel->costs(temporal)[2020-01-01 04:00:00] - 1 KWK->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 05:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] - 1 Kessel->costs(temporal)[2020-01-01 05:00:00] - 1 KWK->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] - 1 Kessel->costs(temporal)[2020-01-01 06:00:00] - 1 KWK->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] - 1 Kessel->costs(temporal)[2020-01-01 07:00:00] - 1 KWK->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00]... -1 Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] - 1 Kessel->costs(temporal)[2020-01-01 08:00:00] - 1 KWK->costs(temporal)[2020-01-01 08:00:00] = -0.0 + costs: |- + Constraint `costs` + ------------------ + +1 costs - 1 costs(temporal) - 1 costs(periodic) = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + -------------------------- + +1 CO2(periodic) - 1 Speicher->CO2(periodic) = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + -------------------------- + +1 CO2(temporal) - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 1 Kessel->CO2(temporal)[2020-01-01 08:00:00] = -0.0 + CO2: |- + Constraint `CO2` + ---------------- + +1 CO2 - 1 CO2(temporal) - 1 CO2(periodic) = -0.0 + PE(periodic): |- + Constraint `PE(periodic)` + ------------------------- + +1 PE(periodic) - 1 Kessel(Q_th)->PE(periodic) - 1 Speicher->PE(periodic) = -0.0 + PE(temporal): |- + Constraint `PE(temporal)` + ------------------------- + +1 PE(temporal) - 1 PE(temporal)|per_timestep[2020-01-01 00:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 01:00:00]... -1 PE(temporal)|per_timestep[2020-01-01 06:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 07:00:00] - 1 PE(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "PE(temporal)|per_timestep": |- + Constraint `PE(temporal)|per_timestep` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 PE(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + PE: |- + Constraint `PE` + --------------- + +1 PE - 1 PE(temporal) - 1 PE(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty = -0.0 + "CO2(temporal)->costs(temporal)": |- + Constraint `CO2(temporal)->costs(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Constraint `Wärmelast(Q_th_Last)|total_flow_hours` + -------------------------------------------------- + +1 Wärmelast(Q_th_Last)|total_flow_hours - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + --------------------------------------------- + +1 Gastarif(Q_Gas)|total_flow_hours - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + ----------------------------------------------- + +1 Einspeisung(P_el)|total_flow_hours - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] + 40 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_fu)|on_hours_total": |- + Constraint `Kessel(Q_fu)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_fu)|on_hours_total - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00]... -1 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_fu)|flow_rate|ub": |- + Constraint `Kessel(Q_fu)|flow_rate|ub` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 200 Kessel(Q_fu)|on[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_fu)|flow_rate|lb": |- + Constraint `Kessel(Q_fu)|flow_rate|lb` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e-05 Kessel(Q_fu)|on[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_fu)|total_flow_hours": |- + Constraint `Kessel(Q_fu)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_fu)|total_flow_hours - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)->costs(periodic)": |- + Constraint `Kessel(Q_th)->costs(periodic)` + ------------------------------------------ + +1 Kessel(Q_th)->costs(periodic) - 10 Kessel(Q_th)|size = 1000.0 + "Kessel(Q_th)->PE(periodic)": |- + Constraint `Kessel(Q_th)->PE(periodic)` + --------------------------------------- + +1 Kessel(Q_th)->PE(periodic) - 2 Kessel(Q_th)|size = -0.0 + "Kessel(Q_th)|complementary": |- + Constraint `Kessel(Q_th)|complementary` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|off[2020-01-01 00:00:00] = 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|off[2020-01-01 01:00:00] = 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|off[2020-01-01 02:00:00] = 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|off[2020-01-01 03:00:00] = 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|off[2020-01-01 04:00:00] = 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|off[2020-01-01 05:00:00] = 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|off[2020-01-01 06:00:00] = 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|off[2020-01-01 07:00:00] = 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|off[2020-01-01 08:00:00] = 1.0 + "Kessel(Q_th)|on_hours_total": |- + Constraint `Kessel(Q_th)|on_hours_total` + ---------------------------------------- + +1 Kessel(Q_th)|on_hours_total - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00]... -1 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|switch|transition": |- + Constraint `Kessel(Q_th)|switch|transition` + [time: 8]: + ------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 08:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|on[2020-01-01 07:00:00] = -0.0 + "Kessel(Q_th)|switch|initial": |- + Constraint `Kessel(Q_th)|switch|initial` + ---------------------------------------- + +1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|switch|off[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] = -1.0 + "Kessel(Q_th)|switch|mutex": |- + Constraint `Kessel(Q_th)|switch|mutex` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] + 1 Kessel(Q_th)|switch|off[2020-01-01 08:00:00] ≤ 1.0 + "Kessel(Q_th)|switch|count": |- + Constraint `Kessel(Q_th)|switch|count` + -------------------------------------- + +1 Kessel(Q_th)|switch|count - 1 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 01:00:00]... -1 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|consecutive_on_hours|ub": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|ub` + [time: 9]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 10 Kessel(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 10 Kessel(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 10 Kessel(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 10 Kessel(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 10 Kessel(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 10 Kessel(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 10 Kessel(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 10 Kessel(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 10 Kessel(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|consecutive_on_hours|forward": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|forward` + [time: 8]: + ----------------------------------------------------------------- + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] ≤ 1.0 + "Kessel(Q_th)|consecutive_on_hours|backward": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|backward` + [time: 8]: + ------------------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 10 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -9.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 10 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -9.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 10 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -9.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 10 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -9.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 10 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -9.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 10 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -9.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 10 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -9.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 10 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -9.0 + "Kessel(Q_th)|consecutive_on_hours|initial": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|initial` + ------------------------------------------------------ + +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 2 Kessel(Q_th)|on[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_th)|consecutive_on_hours|lb": |- + Constraint `Kessel(Q_th)|consecutive_on_hours|lb` + [time: 9]: + ------------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] + 1 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] + 1 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] + 1 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] + 1 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] + 1 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] + 1 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] + 1 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] + 1 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_on_hours[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_th)|consecutive_off_hours|ub": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|ub` + [time: 9]: + ------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 9 Kessel(Q_th)|off[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 9 Kessel(Q_th)|off[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 9 Kessel(Q_th)|off[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 9 Kessel(Q_th)|off[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 9 Kessel(Q_th)|off[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 9 Kessel(Q_th)|off[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 9 Kessel(Q_th)|off[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 9 Kessel(Q_th)|off[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 9 Kessel(Q_th)|off[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|consecutive_off_hours|forward": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|forward` + [time: 8]: + ------------------------------------------------------------------ + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] ≤ 1.0 + "Kessel(Q_th)|consecutive_off_hours|backward": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|backward` + [time: 8]: + ------------------------------------------------------------------- + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 9 Kessel(Q_th)|off[2020-01-01 01:00:00] ≥ -8.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 01:00:00] - 9 Kessel(Q_th)|off[2020-01-01 02:00:00] ≥ -8.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 02:00:00] - 9 Kessel(Q_th)|off[2020-01-01 03:00:00] ≥ -8.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 03:00:00] - 9 Kessel(Q_th)|off[2020-01-01 04:00:00] ≥ -8.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 04:00:00] - 9 Kessel(Q_th)|off[2020-01-01 05:00:00] ≥ -8.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 05:00:00] - 9 Kessel(Q_th)|off[2020-01-01 06:00:00] ≥ -8.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 06:00:00] - 9 Kessel(Q_th)|off[2020-01-01 07:00:00] ≥ -8.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 08:00:00] - 1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 07:00:00] - 9 Kessel(Q_th)|off[2020-01-01 08:00:00] ≥ -8.0 + "Kessel(Q_th)|consecutive_off_hours|initial": |- + Constraint `Kessel(Q_th)|consecutive_off_hours|initial` + ------------------------------------------------------- + +1 Kessel(Q_th)|consecutive_off_hours[2020-01-01 00:00:00] - 1 Kessel(Q_th)|off[2020-01-01 00:00:00] = -0.0 + "Kessel(Q_th)->costs(temporal)": |- + Constraint `Kessel(Q_th)->costs(temporal)` + [time: 9]: + ----------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 00:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 01:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 02:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 03:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 04:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 05:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 06:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 07:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)->costs(temporal)[2020-01-01 08:00:00] - 0.01 Kessel(Q_th)|switch|on[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|flow_rate|lb2": |- + Constraint `Kessel(Q_th)|flow_rate|lb2` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 5 Kessel(Q_th)|on[2020-01-01 00:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] - 5 Kessel(Q_th)|on[2020-01-01 01:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] - 5 Kessel(Q_th)|on[2020-01-01 02:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] - 5 Kessel(Q_th)|on[2020-01-01 03:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] - 5 Kessel(Q_th)|on[2020-01-01 04:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] - 5 Kessel(Q_th)|on[2020-01-01 05:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 5 Kessel(Q_th)|on[2020-01-01 06:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 5 Kessel(Q_th)|on[2020-01-01 07:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] - 5 Kessel(Q_th)|on[2020-01-01 08:00:00] - 0.1 Kessel(Q_th)|size ≥ -5.0 + "Kessel(Q_th)|flow_rate|ub2": |- + Constraint `Kessel(Q_th)|flow_rate|ub2` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_th)|size ≤ -0.0 + "Kessel(Q_th)|flow_rate|ub1": |- + Constraint `Kessel(Q_th)|flow_rate|ub1` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +50 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +50 Kessel(Q_th)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +50 Kessel(Q_th)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +50 Kessel(Q_th)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +50 Kessel(Q_th)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +50 Kessel(Q_th)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +50 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +50 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +50 Kessel(Q_th)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ≥ -0.0 + "Kessel(Q_th)|flow_rate|lb1": |- + Constraint `Kessel(Q_th)|flow_rate|lb1` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +5 Kessel(Q_th)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +5 Kessel(Q_th)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +5 Kessel(Q_th)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +5 Kessel(Q_th)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +5 Kessel(Q_th)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +5 Kessel(Q_th)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +5 Kessel(Q_th)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +5 Kessel(Q_th)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +5 Kessel(Q_th)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] ≤ -0.0 + "Kessel(Q_th)|total_flow_hours": |- + Constraint `Kessel(Q_th)|total_flow_hours` + ------------------------------------------ + +1 Kessel(Q_th)|total_flow_hours - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Kessel(Q_th)|load_factor_max": |- + Constraint `Kessel(Q_th)|load_factor_max` + ----------------------------------------- + +1 Kessel(Q_th)|total_flow_hours - 9 Kessel(Q_th)|size ≤ -0.0 + "Kessel(Q_th)|load_factor_min": |- + Constraint `Kessel(Q_th)|load_factor_min` + ----------------------------------------- + +1 Kessel(Q_th)|total_flow_hours - 0.9 Kessel(Q_th)|size ≥ -0.0 + "Kessel|on|ub": |- + Constraint `Kessel|on|ub` + [time: 9]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel|on[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 1 Kessel(Q_th)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 Kessel|on[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 01:00:00] - 1 Kessel(Q_th)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 02:00:00]: +1 Kessel|on[2020-01-01 02:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 02:00:00] - 1 Kessel(Q_th)|on[2020-01-01 02:00:00] ≤ 1e-05 + [2020-01-01 03:00:00]: +1 Kessel|on[2020-01-01 03:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 03:00:00] - 1 Kessel(Q_th)|on[2020-01-01 03:00:00] ≤ 1e-05 + [2020-01-01 04:00:00]: +1 Kessel|on[2020-01-01 04:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 04:00:00] - 1 Kessel(Q_th)|on[2020-01-01 04:00:00] ≤ 1e-05 + [2020-01-01 05:00:00]: +1 Kessel|on[2020-01-01 05:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 05:00:00] - 1 Kessel(Q_th)|on[2020-01-01 05:00:00] ≤ 1e-05 + [2020-01-01 06:00:00]: +1 Kessel|on[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 1 Kessel(Q_th)|on[2020-01-01 06:00:00] ≤ 1e-05 + [2020-01-01 07:00:00]: +1 Kessel|on[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 1 Kessel(Q_th)|on[2020-01-01 07:00:00] ≤ 1e-05 + [2020-01-01 08:00:00]: +1 Kessel|on[2020-01-01 08:00:00] - 1 Kessel(Q_fu)|on[2020-01-01 08:00:00] - 1 Kessel(Q_th)|on[2020-01-01 08:00:00] ≤ 1e-05 + "Kessel|on|lb": |- + Constraint `Kessel|on|lb` + [time: 9]: + ------------------------------------ + [2020-01-01 00:00:00]: +1 Kessel|on[2020-01-01 00:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 00:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Kessel|on[2020-01-01 01:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 01:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Kessel|on[2020-01-01 02:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 02:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Kessel|on[2020-01-01 03:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 03:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Kessel|on[2020-01-01 04:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 04:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Kessel|on[2020-01-01 05:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 05:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Kessel|on[2020-01-01 06:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 06:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Kessel|on[2020-01-01 07:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 07:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Kessel|on[2020-01-01 08:00:00] - 0.5 Kessel(Q_fu)|on[2020-01-01 08:00:00] - 0.5 Kessel(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "Kessel|on_hours_total": |- + Constraint `Kessel|on_hours_total` + ---------------------------------- + +1 Kessel|on_hours_total - 1 Kessel|on[2020-01-01 00:00:00] - 1 Kessel|on[2020-01-01 01:00:00]... -1 Kessel|on[2020-01-01 06:00:00] - 1 Kessel|on[2020-01-01 07:00:00] - 1 Kessel|on[2020-01-01 08:00:00] = -0.0 + "Kessel->costs(temporal)": |- + Constraint `Kessel->costs(temporal)` + [time: 9]: + ----------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel->costs(temporal)[2020-01-01 08:00:00] = -0.0 + "Kessel->CO2(temporal)": |- + Constraint `Kessel->CO2(temporal)` + [time: 9]: + --------------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 00:00:00] - 1000 Kessel|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 01:00:00] - 1000 Kessel|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 02:00:00] - 1000 Kessel|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 03:00:00] - 1000 Kessel|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 04:00:00] - 1000 Kessel|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 05:00:00] - 1000 Kessel|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 06:00:00] - 1000 Kessel|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 07:00:00] - 1000 Kessel|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel->CO2(temporal)[2020-01-01 08:00:00] - 1000 Kessel|on[2020-01-01 08:00:00] = -0.0 + "Kessel|conversion_0": |- + Constraint `Kessel|conversion_0` + [time: 9]: + ------------------------------------------- + [2020-01-01 00:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|on_hours_total": |- + Constraint `Speicher(Q_th_load)|on_hours_total` + ----------------------------------------------- + +1 Speicher(Q_th_load)|on_hours_total - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|flow_rate|ub": |- + Constraint `Speicher(Q_th_load)|flow_rate|ub` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_load)|flow_rate|lb": |- + Constraint `Speicher(Q_th_load)|flow_rate|lb` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_load)|total_flow_hours": |- + Constraint `Speicher(Q_th_load)|total_flow_hours` + ------------------------------------------------- + +1 Speicher(Q_th_load)|total_flow_hours - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|on_hours_total": |- + Constraint `Speicher(Q_th_unload)|on_hours_total` + ------------------------------------------------- + +1 Speicher(Q_th_unload)|on_hours_total - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|flow_rate|ub": |- + Constraint `Speicher(Q_th_unload)|flow_rate|ub` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_unload)|flow_rate|lb": |- + Constraint `Speicher(Q_th_unload)|flow_rate|lb` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_unload)|total_flow_hours": |- + Constraint `Speicher(Q_th_unload)|total_flow_hours` + --------------------------------------------------- + +1 Speicher(Q_th_unload)|total_flow_hours - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|prevent_simultaneous_use": |- + Constraint `Speicher|prevent_simultaneous_use` + [time: 9]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ 1.0 + "Speicher|netto_discharge": |- + Constraint `Speicher|netto_discharge` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 Speicher|netto_discharge[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher|netto_discharge[2020-01-01 01:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|netto_discharge[2020-01-01 02:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|netto_discharge[2020-01-01 03:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|netto_discharge[2020-01-01 04:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|netto_discharge[2020-01-01 05:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|netto_discharge[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|netto_discharge[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|netto_discharge[2020-01-01 08:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|charge_state": |- + Constraint `Speicher|charge_state` + [time: 9]: + --------------------------------------------- + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 0.92 Speicher|charge_state[2020-01-01 00:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 0.92 Speicher|charge_state[2020-01-01 01:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 0.92 Speicher|charge_state[2020-01-01 02:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 0.92 Speicher|charge_state[2020-01-01 03:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 0.92 Speicher|charge_state[2020-01-01 04:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 0.92 Speicher|charge_state[2020-01-01 05:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 0.92 Speicher|charge_state[2020-01-01 06:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 0.92 Speicher|charge_state[2020-01-01 07:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 0.92 Speicher|charge_state[2020-01-01 08:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher->costs(periodic)": |- + Constraint `Speicher->costs(periodic)` + -------------------------------------- + +1 Speicher->costs(periodic) - 0.01 Speicher|size - 1 Speicher|PiecewiseEffects|costs = -0.0 + "Speicher->CO2(periodic)": |- + Constraint `Speicher->CO2(periodic)` + ------------------------------------ + +1 Speicher->CO2(periodic) - 0.01 Speicher|size = -0.0 + "Speicher|Piece_0|inside_piece": |- + Constraint `Speicher|Piece_0|inside_piece` + ------------------------------------------ + +1 Speicher|Piece_0|inside_piece - 1 Speicher|Piece_0|lambda0 - 1 Speicher|Piece_0|lambda1 = -0.0 + "Speicher|Piece_1|inside_piece": |- + Constraint `Speicher|Piece_1|inside_piece` + ------------------------------------------ + +1 Speicher|Piece_1|inside_piece - 1 Speicher|Piece_1|lambda0 - 1 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|size|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|size|lambda` + ----------------------------------------------------------- + +1 Speicher|size - 5 Speicher|Piece_0|lambda0 - 25 Speicher|Piece_0|lambda1 - 25 Speicher|Piece_1|lambda0 - 100 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|size|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|size|single_segment` + ------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|lambda` + ----------------------------------------------------------------------------- + +1 Speicher|PiecewiseEffects|costs - 50 Speicher|Piece_0|lambda0 - 250 Speicher|Piece_0|lambda1 - 250 Speicher|Piece_1|lambda0 - 800 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|costs|single_segment` + ------------------------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|lambda": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|lambda` + -------------------------------------------------------------------------- + +1 Speicher|PiecewiseEffects|PE - 5 Speicher|Piece_0|lambda0 - 25 Speicher|Piece_0|lambda1 - 25 Speicher|Piece_1|lambda0 - 100 Speicher|Piece_1|lambda1 = -0.0 + "Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|single_segment": |- + Constraint `Speicher|PiecewiseEffects|Speicher|PiecewiseEffects|PE|single_segment` + ---------------------------------------------------------------------------------- + +1 Speicher|Piece_0|inside_piece + 1 Speicher|Piece_1|inside_piece ≤ 1.0 + "Speicher->PE(periodic)": |- + Constraint `Speicher->PE(periodic)` + ----------------------------------- + +1 Speicher->PE(periodic) - 1 Speicher|PiecewiseEffects|PE = -0.0 + "Speicher|charge_state|ub": |- + Constraint `Speicher|charge_state|ub` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 1 Speicher|size ≤ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 1 Speicher|size ≤ -0.0 + "Speicher|charge_state|lb": |- + Constraint `Speicher|charge_state|lb` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] ≥ -0.0 + "Speicher|initial_charge_state": |- + Constraint `Speicher|initial_charge_state` + ------------------------------------------ + +1 Speicher|charge_state[2020-01-01 00:00:00] = -0.0 + "Speicher|final_charge_max": |- + Constraint `Speicher|final_charge_max` + -------------------------------------- + +1 Speicher|charge_state[2020-01-01 09:00:00] ≤ 10.0 + "KWK(Q_fu)|on_hours_total": |- + Constraint `KWK(Q_fu)|on_hours_total` + ------------------------------------- + +1 KWK(Q_fu)|on_hours_total - 1 KWK(Q_fu)|on[2020-01-01 00:00:00] - 1 KWK(Q_fu)|on[2020-01-01 01:00:00]... -1 KWK(Q_fu)|on[2020-01-01 06:00:00] - 1 KWK(Q_fu)|on[2020-01-01 07:00:00] - 1 KWK(Q_fu)|on[2020-01-01 08:00:00] = -0.0 + "KWK(Q_fu)|flow_rate|ub": |- + Constraint `KWK(Q_fu)|flow_rate|ub` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e+07 KWK(Q_fu)|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK(Q_fu)|flow_rate|lb": |- + Constraint `KWK(Q_fu)|flow_rate|lb` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1e-05 KWK(Q_fu)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK(Q_fu)|total_flow_hours": |- + Constraint `KWK(Q_fu)|total_flow_hours` + --------------------------------------- + +1 KWK(Q_fu)|total_flow_hours - 1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK(P_el)|on_hours_total": |- + Constraint `KWK(P_el)|on_hours_total` + ------------------------------------- + +1 KWK(P_el)|on_hours_total - 1 KWK(P_el)|on[2020-01-01 00:00:00] - 1 KWK(P_el)|on[2020-01-01 01:00:00]... -1 KWK(P_el)|on[2020-01-01 06:00:00] - 1 KWK(P_el)|on[2020-01-01 07:00:00] - 1 KWK(P_el)|on[2020-01-01 08:00:00] = -0.0 + "KWK(P_el)|flow_rate|ub": |- + Constraint `KWK(P_el)|flow_rate|ub` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 3300 KWK(P_el)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 3300 KWK(P_el)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 3300 KWK(P_el)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 3300 KWK(P_el)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 3300 KWK(P_el)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 3300 KWK(P_el)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 3300 KWK(P_el)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 3300 KWK(P_el)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 3300 KWK(P_el)|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK(P_el)|flow_rate|lb": |- + Constraint `KWK(P_el)|flow_rate|lb` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 1e-05 KWK(P_el)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK(P_el)|total_flow_hours": |- + Constraint `KWK(P_el)|total_flow_hours` + --------------------------------------- + +1 KWK(P_el)|total_flow_hours - 1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 01:00:00]... -1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK(Q_th)|on_hours_total": |- + Constraint `KWK(Q_th)|on_hours_total` + ------------------------------------- + +1 KWK(Q_th)|on_hours_total - 1 KWK(Q_th)|on[2020-01-01 00:00:00] - 1 KWK(Q_th)|on[2020-01-01 01:00:00]... -1 KWK(Q_th)|on[2020-01-01 06:00:00] - 1 KWK(Q_th)|on[2020-01-01 07:00:00] - 1 KWK(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "KWK(Q_th)|flow_rate|ub": |- + Constraint `KWK(Q_th)|flow_rate|ub` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] - 1e+07 KWK(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK(Q_th)|flow_rate|lb": |- + Constraint `KWK(Q_th)|flow_rate|lb` + [time: 9]: + ---------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] - 1e-05 KWK(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK(Q_th)|total_flow_hours": |- + Constraint `KWK(Q_th)|total_flow_hours` + --------------------------------------- + +1 KWK(Q_th)|total_flow_hours - 1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "KWK|on|ub": |- + Constraint `KWK|on|ub` + [time: 9]: + --------------------------------- + [2020-01-01 00:00:00]: +1 KWK|on[2020-01-01 00:00:00] - 1 KWK(Q_fu)|on[2020-01-01 00:00:00] - 1 KWK(P_el)|on[2020-01-01 00:00:00] - 1 KWK(Q_th)|on[2020-01-01 00:00:00] ≤ 1e-05 + [2020-01-01 01:00:00]: +1 KWK|on[2020-01-01 01:00:00] - 1 KWK(Q_fu)|on[2020-01-01 01:00:00] - 1 KWK(P_el)|on[2020-01-01 01:00:00] - 1 KWK(Q_th)|on[2020-01-01 01:00:00] ≤ 1e-05 + [2020-01-01 02:00:00]: +1 KWK|on[2020-01-01 02:00:00] - 1 KWK(Q_fu)|on[2020-01-01 02:00:00] - 1 KWK(P_el)|on[2020-01-01 02:00:00] - 1 KWK(Q_th)|on[2020-01-01 02:00:00] ≤ 1e-05 + [2020-01-01 03:00:00]: +1 KWK|on[2020-01-01 03:00:00] - 1 KWK(Q_fu)|on[2020-01-01 03:00:00] - 1 KWK(P_el)|on[2020-01-01 03:00:00] - 1 KWK(Q_th)|on[2020-01-01 03:00:00] ≤ 1e-05 + [2020-01-01 04:00:00]: +1 KWK|on[2020-01-01 04:00:00] - 1 KWK(Q_fu)|on[2020-01-01 04:00:00] - 1 KWK(P_el)|on[2020-01-01 04:00:00] - 1 KWK(Q_th)|on[2020-01-01 04:00:00] ≤ 1e-05 + [2020-01-01 05:00:00]: +1 KWK|on[2020-01-01 05:00:00] - 1 KWK(Q_fu)|on[2020-01-01 05:00:00] - 1 KWK(P_el)|on[2020-01-01 05:00:00] - 1 KWK(Q_th)|on[2020-01-01 05:00:00] ≤ 1e-05 + [2020-01-01 06:00:00]: +1 KWK|on[2020-01-01 06:00:00] - 1 KWK(Q_fu)|on[2020-01-01 06:00:00] - 1 KWK(P_el)|on[2020-01-01 06:00:00] - 1 KWK(Q_th)|on[2020-01-01 06:00:00] ≤ 1e-05 + [2020-01-01 07:00:00]: +1 KWK|on[2020-01-01 07:00:00] - 1 KWK(Q_fu)|on[2020-01-01 07:00:00] - 1 KWK(P_el)|on[2020-01-01 07:00:00] - 1 KWK(Q_th)|on[2020-01-01 07:00:00] ≤ 1e-05 + [2020-01-01 08:00:00]: +1 KWK|on[2020-01-01 08:00:00] - 1 KWK(Q_fu)|on[2020-01-01 08:00:00] - 1 KWK(P_el)|on[2020-01-01 08:00:00] - 1 KWK(Q_th)|on[2020-01-01 08:00:00] ≤ 1e-05 + "KWK|on|lb": |- + Constraint `KWK|on|lb` + [time: 9]: + --------------------------------- + [2020-01-01 00:00:00]: +1 KWK|on[2020-01-01 00:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 00:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 00:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 KWK|on[2020-01-01 01:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 01:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 01:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 KWK|on[2020-01-01 02:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 02:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 02:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 KWK|on[2020-01-01 03:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 03:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 03:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 KWK|on[2020-01-01 04:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 04:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 04:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 KWK|on[2020-01-01 05:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 05:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 05:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 KWK|on[2020-01-01 06:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 06:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 06:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 KWK|on[2020-01-01 07:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 07:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 07:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 KWK|on[2020-01-01 08:00:00] - 0.3333 KWK(Q_fu)|on[2020-01-01 08:00:00] - 0.3333 KWK(P_el)|on[2020-01-01 08:00:00] - 0.3333 KWK(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "KWK|on_hours_total": |- + Constraint `KWK|on_hours_total` + ------------------------------- + +1 KWK|on_hours_total - 1 KWK|on[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 01:00:00]... -1 KWK|on[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 08:00:00] = -0.0 + "KWK|switch|transition": |- + Constraint `KWK|switch|transition` + [time: 8]: + --------------------------------------------- + [2020-01-01 01:00:00]: +1 KWK|switch|on[2020-01-01 01:00:00] - 1 KWK|switch|off[2020-01-01 01:00:00] - 1 KWK|on[2020-01-01 01:00:00] + 1 KWK|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK|switch|on[2020-01-01 02:00:00] - 1 KWK|switch|off[2020-01-01 02:00:00] - 1 KWK|on[2020-01-01 02:00:00] + 1 KWK|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK|switch|on[2020-01-01 03:00:00] - 1 KWK|switch|off[2020-01-01 03:00:00] - 1 KWK|on[2020-01-01 03:00:00] + 1 KWK|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK|switch|on[2020-01-01 04:00:00] - 1 KWK|switch|off[2020-01-01 04:00:00] - 1 KWK|on[2020-01-01 04:00:00] + 1 KWK|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK|switch|on[2020-01-01 05:00:00] - 1 KWK|switch|off[2020-01-01 05:00:00] - 1 KWK|on[2020-01-01 05:00:00] + 1 KWK|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK|switch|on[2020-01-01 06:00:00] - 1 KWK|switch|off[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 06:00:00] + 1 KWK|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK|switch|on[2020-01-01 07:00:00] - 1 KWK|switch|off[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 07:00:00] + 1 KWK|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK|switch|on[2020-01-01 08:00:00] - 1 KWK|switch|off[2020-01-01 08:00:00] - 1 KWK|on[2020-01-01 08:00:00] + 1 KWK|on[2020-01-01 07:00:00] = -0.0 + "KWK|switch|initial": |- + Constraint `KWK|switch|initial` + ------------------------------- + +1 KWK|switch|on[2020-01-01 00:00:00] - 1 KWK|switch|off[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 00:00:00] = -1.0 + "KWK|switch|mutex": |- + Constraint `KWK|switch|mutex` + [time: 9]: + ---------------------------------------- + [2020-01-01 00:00:00]: +1 KWK|switch|on[2020-01-01 00:00:00] + 1 KWK|switch|off[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 KWK|switch|on[2020-01-01 01:00:00] + 1 KWK|switch|off[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 KWK|switch|on[2020-01-01 02:00:00] + 1 KWK|switch|off[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 KWK|switch|on[2020-01-01 03:00:00] + 1 KWK|switch|off[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 KWK|switch|on[2020-01-01 04:00:00] + 1 KWK|switch|off[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 KWK|switch|on[2020-01-01 05:00:00] + 1 KWK|switch|off[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 KWK|switch|on[2020-01-01 06:00:00] + 1 KWK|switch|off[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 KWK|switch|on[2020-01-01 07:00:00] + 1 KWK|switch|off[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 KWK|switch|on[2020-01-01 08:00:00] + 1 KWK|switch|off[2020-01-01 08:00:00] ≤ 1.0 + "KWK->costs(temporal)": |- + Constraint `KWK->costs(temporal)` + [time: 9]: + -------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK->costs(temporal)[2020-01-01 00:00:00] - 0.01 KWK|switch|on[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK->costs(temporal)[2020-01-01 01:00:00] - 0.01 KWK|switch|on[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK->costs(temporal)[2020-01-01 02:00:00] - 0.01 KWK|switch|on[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK->costs(temporal)[2020-01-01 03:00:00] - 0.01 KWK|switch|on[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK->costs(temporal)[2020-01-01 04:00:00] - 0.01 KWK|switch|on[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK->costs(temporal)[2020-01-01 05:00:00] - 0.01 KWK|switch|on[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK->costs(temporal)[2020-01-01 06:00:00] - 0.01 KWK|switch|on[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK->costs(temporal)[2020-01-01 07:00:00] - 0.01 KWK|switch|on[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK->costs(temporal)[2020-01-01 08:00:00] - 0.01 KWK|switch|on[2020-01-01 08:00:00] = -0.0 + "KWK|Piece_0|inside_piece": |- + Constraint `KWK|Piece_0|inside_piece` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 00:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 00:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 01:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 01:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 02:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 02:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 03:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 03:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 04:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 04:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 05:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 05:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 06:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 06:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 07:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 07:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 08:00:00] - 1 KWK|Piece_0|lambda0[2020-01-01 08:00:00] - 1 KWK|Piece_0|lambda1[2020-01-01 08:00:00] = -0.0 + "KWK|Piece_1|inside_piece": |- + Constraint `KWK|Piece_1|inside_piece` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 00:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 01:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 02:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 03:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 04:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 05:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 06:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 07:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 KWK|Piece_1|lambda0[2020-01-01 08:00:00] - 1 KWK|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "KWK|KWK(P_el)|flow_rate|lambda": |- + Constraint `KWK|KWK(P_el)|flow_rate|lambda` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 5 KWK|Piece_0|lambda0[2020-01-01 00:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 00:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 00:00:00] - 60 KWK|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 5.125 KWK|Piece_0|lambda0[2020-01-01 01:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 01:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 01:00:00] - 61.25 KWK|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 5.25 KWK|Piece_0|lambda0[2020-01-01 02:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 02:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 02:00:00] - 62.5 KWK|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 5.375 KWK|Piece_0|lambda0[2020-01-01 03:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 03:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 03:00:00] - 63.75 KWK|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 5.5 KWK|Piece_0|lambda0[2020-01-01 04:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 04:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 04:00:00] - 65 KWK|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 5.625 KWK|Piece_0|lambda0[2020-01-01 05:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 05:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 05:00:00] - 66.25 KWK|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 5.75 KWK|Piece_0|lambda0[2020-01-01 06:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 06:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 06:00:00] - 67.5 KWK|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 5.875 KWK|Piece_0|lambda0[2020-01-01 07:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 07:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 07:00:00] - 68.75 KWK|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 08:00:00] - 30 KWK|Piece_0|lambda1[2020-01-01 08:00:00] - 40 KWK|Piece_1|lambda0[2020-01-01 08:00:00] - 70 KWK|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "KWK|KWK(P_el)|flow_rate|single_segment": |- + Constraint `KWK|KWK(P_el)|flow_rate|single_segment` + [time: 9]: + -------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 00:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 01:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 KWK|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 02:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 KWK|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 03:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 KWK|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 04:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 KWK|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 05:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 KWK|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 06:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 07:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 08:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 KWK|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK|KWK(Q_th)|flow_rate|lambda": |- + Constraint `KWK|KWK(Q_th)|flow_rate|lambda` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 00:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 00:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 00:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 01:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 01:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 01:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 02:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 02:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 02:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 03:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 03:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 03:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 04:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 04:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 04:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 05:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 05:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 05:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 06:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 06:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 06:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 07:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 07:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 07:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00] - 6 KWK|Piece_0|lambda0[2020-01-01 08:00:00] - 35 KWK|Piece_0|lambda1[2020-01-01 08:00:00] - 45 KWK|Piece_1|lambda0[2020-01-01 08:00:00] - 100 KWK|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "KWK|KWK(Q_th)|flow_rate|single_segment": |- + Constraint `KWK|KWK(Q_th)|flow_rate|single_segment` + [time: 9]: + -------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 00:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 01:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 KWK|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 02:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 KWK|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 03:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 KWK|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 04:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 KWK|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 05:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 KWK|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 06:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 07:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 08:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 KWK|on[2020-01-01 08:00:00] ≤ -0.0 + "KWK|KWK(Q_fu)|flow_rate|lambda": |- + Constraint `KWK|KWK(Q_fu)|flow_rate|lambda` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 00:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 00:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 00:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 01:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 01:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 01:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 02:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 02:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 02:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 03:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 03:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 03:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 04:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 04:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 04:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 05:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 05:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 05:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 06:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 06:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 06:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 07:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 07:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 07:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] - 12 KWK|Piece_0|lambda0[2020-01-01 08:00:00] - 70 KWK|Piece_0|lambda1[2020-01-01 08:00:00] - 90 KWK|Piece_1|lambda0[2020-01-01 08:00:00] - 200 KWK|Piece_1|lambda1[2020-01-01 08:00:00] = -0.0 + "KWK|KWK(Q_fu)|flow_rate|single_segment": |- + Constraint `KWK|KWK(Q_fu)|flow_rate|single_segment` + [time: 9]: + -------------------------------------------------------------- + [2020-01-01 00:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 00:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 00:00:00] - 1 KWK|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 01:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 01:00:00] - 1 KWK|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 02:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 02:00:00] - 1 KWK|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 03:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 03:00:00] - 1 KWK|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 04:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 04:00:00] - 1 KWK|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 05:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 05:00:00] - 1 KWK|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 06:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 06:00:00] - 1 KWK|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 07:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 07:00:00] - 1 KWK|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 KWK|Piece_0|inside_piece[2020-01-01 08:00:00] + 1 KWK|Piece_1|inside_piece[2020-01-01 08:00:00] - 1 KWK|on[2020-01-01 08:00:00] ≤ -0.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 9]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] + 1 Strom|excess_input[2020-01-01 00:00:00] - 1 Strom|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 01:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] + 1 Strom|excess_input[2020-01-01 01:00:00] - 1 Strom|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 02:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] + 1 Strom|excess_input[2020-01-01 02:00:00] - 1 Strom|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 03:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] + 1 Strom|excess_input[2020-01-01 03:00:00] - 1 Strom|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 04:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] + 1 Strom|excess_input[2020-01-01 04:00:00] - 1 Strom|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 05:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] + 1 Strom|excess_input[2020-01-01 05:00:00] - 1 Strom|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] + 1 Strom|excess_input[2020-01-01 06:00:00] - 1 Strom|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] + 1 Strom|excess_input[2020-01-01 07:00:00] - 1 Strom|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 KWK(P_el)|flow_rate[2020-01-01 08:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] + 1 Strom|excess_input[2020-01-01 08:00:00] - 1 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 1e+05 Strom|excess_input[2020-01-01 00:00:00] - 1e+05 Strom|excess_input[2020-01-01 01:00:00]... -1e+05 Strom|excess_output[2020-01-01 06:00:00] - 1e+05 Strom|excess_output[2020-01-01 07:00:00] - 1e+05 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 9]: + ----------------------------------------- + [2020-01-01 00:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 00:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Fernwärme|excess_input[2020-01-01 00:00:00] - 1 Fernwärme|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Fernwärme|excess_input[2020-01-01 01:00:00] - 1 Fernwärme|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 02:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Fernwärme|excess_input[2020-01-01 02:00:00] - 1 Fernwärme|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 03:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Fernwärme|excess_input[2020-01-01 03:00:00] - 1 Fernwärme|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 04:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Fernwärme|excess_input[2020-01-01 04:00:00] - 1 Fernwärme|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 05:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Fernwärme|excess_input[2020-01-01 05:00:00] - 1 Fernwärme|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 06:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Fernwärme|excess_input[2020-01-01 06:00:00] - 1 Fernwärme|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 07:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Fernwärme|excess_input[2020-01-01 07:00:00] - 1 Fernwärme|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Kessel(Q_th)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 KWK(Q_th)|flow_rate[2020-01-01 08:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Fernwärme|excess_input[2020-01-01 08:00:00] - 1 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00] - 1e+05 Fernwärme|excess_input[2020-01-01 01:00:00]... -1e+05 Fernwärme|excess_output[2020-01-01 06:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 07:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 02:00:00] + 1 Gas|excess_input[2020-01-01 02:00:00] - 1 Gas|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 03:00:00] + 1 Gas|excess_input[2020-01-01 03:00:00] - 1 Gas|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 04:00:00] + 1 Gas|excess_input[2020-01-01 04:00:00] - 1 Gas|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 05:00:00] + 1 Gas|excess_input[2020-01-01 05:00:00] - 1 Gas|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 06:00:00] + 1 Gas|excess_input[2020-01-01 06:00:00] - 1 Gas|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 07:00:00] + 1 Gas|excess_input[2020-01-01 07:00:00] - 1 Gas|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] - 1 Kessel(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 KWK(Q_fu)|flow_rate[2020-01-01 08:00:00] + 1 Gas|excess_input[2020-01-01 08:00:00] - 1 Gas|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00] - 1e+05 Gas|excess_input[2020-01-01 01:00:00]... -1e+05 Gas|excess_output[2020-01-01 06:00:00] - 1e+05 Gas|excess_output[2020-01-01 07:00:00] - 1e+05 Gas|excess_output[2020-01-01 08:00:00] = -0.0 +binaries: + - "Kessel(Q_fu)|on" + - "Kessel(Q_th)|on" + - "Kessel(Q_th)|off" + - "Kessel(Q_th)|switch|on" + - "Kessel(Q_th)|switch|off" + - "Kessel|on" + - "Speicher(Q_th_load)|on" + - "Speicher(Q_th_unload)|on" + - "Speicher|Piece_0|inside_piece" + - "Speicher|Piece_1|inside_piece" + - "KWK(Q_fu)|on" + - "KWK(P_el)|on" + - "KWK(Q_th)|on" + - "KWK|on" + - "KWK|switch|on" + - "KWK|switch|off" + - "KWK|Piece_0|inside_piece" + - "KWK|Piece_1|inside_piece" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - PE(periodic) + - PE(temporal) + - "PE(temporal)|per_timestep" + - PE + - Penalty + - "CO2(temporal)->costs(temporal)" + - "Wärmelast(Q_th_Last)|flow_rate" + - "Wärmelast(Q_th_Last)|total_flow_hours" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "Kessel(Q_fu)|flow_rate" + - "Kessel(Q_fu)|on_hours_total" + - "Kessel(Q_fu)|total_flow_hours" + - "Kessel(Q_th)|flow_rate" + - "Kessel(Q_th)|size" + - "Kessel(Q_th)->costs(periodic)" + - "Kessel(Q_th)->PE(periodic)" + - "Kessel(Q_th)|on_hours_total" + - "Kessel(Q_th)|switch|count" + - "Kessel(Q_th)|consecutive_on_hours" + - "Kessel(Q_th)|consecutive_off_hours" + - "Kessel(Q_th)->costs(temporal)" + - "Kessel(Q_th)|total_flow_hours" + - "Kessel|on_hours_total" + - "Kessel->costs(temporal)" + - "Kessel->CO2(temporal)" + - "Speicher(Q_th_load)|flow_rate" + - "Speicher(Q_th_load)|on_hours_total" + - "Speicher(Q_th_load)|total_flow_hours" + - "Speicher(Q_th_unload)|flow_rate" + - "Speicher(Q_th_unload)|on_hours_total" + - "Speicher(Q_th_unload)|total_flow_hours" + - "Speicher|charge_state" + - "Speicher|netto_discharge" + - "Speicher|size" + - "Speicher->costs(periodic)" + - "Speicher->CO2(periodic)" + - "Speicher|PiecewiseEffects|costs" + - "Speicher|PiecewiseEffects|PE" + - "Speicher|Piece_0|lambda0" + - "Speicher|Piece_0|lambda1" + - "Speicher|Piece_1|lambda0" + - "Speicher|Piece_1|lambda1" + - "Speicher->PE(periodic)" + - "KWK(Q_fu)|flow_rate" + - "KWK(Q_fu)|on_hours_total" + - "KWK(Q_fu)|total_flow_hours" + - "KWK(P_el)|flow_rate" + - "KWK(P_el)|on_hours_total" + - "KWK(P_el)|total_flow_hours" + - "KWK(Q_th)|flow_rate" + - "KWK(Q_th)|on_hours_total" + - "KWK(Q_th)|total_flow_hours" + - "KWK|on_hours_total" + - "KWK->costs(temporal)" + - "KWK|Piece_0|lambda0" + - "KWK|Piece_0|lambda1" + - "KWK|Piece_1|lambda0" + - "KWK|Piece_1|lambda1" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/io_flow_system_segments--solution.nc4 b/tests/ressources/v4-api/io_flow_system_segments--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..06a36cb99338b0d962d1fe48e863d3a1140252e1 GIT binary patch literal 182466 zcmeHQ2|!d;_dmlRZX@CjZXhWkxC}^cUkWam<%VKvrNID$j3PrYxP=R9YNn+vre$V* zR(@YtYGs=l+!WOk`u`;Dx_@DdkJ8$N_nTPr{$_L(Ca_8K8?(%;3-22Ym z&U?6j-+py!HLc}SqXv*Glif!U+{cRn?{sP>=JuuCQ#$QJ8gBsuqU~xEda-jhR*)W_H{$OYy`-E(J zmNm*6U_kI8IV*?Cg! zJ*9BggOy;YABRY4G2ug#@TUd^ZKTJC(PD5_ ziJS;%9#VM#_X??>UsDW!`T^G5T&eLN3{}KH4s&~Q9-eQ{V(rZdEHgb%gMli>1G5_@ z+T83}Ns_=MNt~*}92t6ru^3HZEU4VV7(=dYswBTkt)-08)7^@_LalNq*&L}Eo~l4G z9`cl7w`OZd(I?FPMTYFJoSbA6ie#(tLN5x zQjb|{1l6s+)YGo`U<%_^J(*RX!?e1qr>-r6^dYD`o*n)DubzE%|` z?5x^$lix8T2dH1J126z9q<*hrAdQ|Q2WUqQDPtvA7H5U_*cX*p4_yW0Jg6{O13B1P z0B6%HfX8|+U}zGP8YgOO;F9XZf}I6$HoXFPtj7YhP0aJpm;0ttfD$0Teh}pZn>E#% zWX?x5(3WOR%4Vbtuo9PPnUIoZ;RC%(5+2M)LnSz>oSdTaJ?2EgQ67~-E(+AQB)On> zkkj(lip}QkvIS58e|l4Ytqj`H$SX{;XeQge9D>&m@I(=W7R zu)8Qroxx@PA`KWCF_Rw}WnCo?+CiBzCw3_pBBZo@Y)-_9U}}anM?F9*p>Crz#pI`E zSaQZ#scpAwN}bvW!vX|`O>!OEmKsnSVI@zD&7o*4KD<|)QgH}=HmK5VMF^0Ka2 z6=LyJ8H&4db%;~HLdrCRYRCuTNw!>Te0sVy)sc((U@p#pUC?xANr-ok_b|?@%RmN~ zAzCL+8u2x88u50kSrQHM(p$tWF}+GWO-U5y>>TSv91D_iZ4>e`9hNMsJuf#YFIRe9 zDNN-^oW7X4%C9`kDjBNcxGJc`$*NY8D~}5GbXyiKd&tqU;!mkPb^uN3o_W-@aOJtO z_;D%M7e1aF38{0$=F>rS-QBr7)r`2VTsPv>ubsP?Q;nof<1&6L;nL9T+IN%~HrvN! z+V_kSubmm8V9mreK=m6?6X*6GRLAqo2VyRo7n?qtTi5V3 z4qjt&ml>XZN;Q5i+6JqD6HeU>5W8u}*&9b;zMS08nv*q2fl>{lCe95;W%8(2W{^+a zobHW}EY9ha^O-PMx8~}}n7RNDnt;0Q`PRv)xK^4ZVax=}b2P`(Z)c5EE6t}Zo!zFoAkJZxnQDQnq^!%a#C&;U2^C0s%_=J^9(Nab+)0VIuaVv z)&dTV2#5+DdFJ8Bu}@I9MWPhs)*2q>iY!0(9VgW=AZ6x;yDHS>NwmmwJ{|0JDx}KW zGw#3^WM)1>OM znHt+^RkqZW$(wqdQG%r(YUq_Nim%4@Jv}fupVmVp4^rW)336*8Rr^tisvO+fP?M!c zne>>Gr-xG&MZ(~r1ndItd3q8PDJ`oL&qO8Io+_YX5a_z}Zt2yDs|zZb=Bo{Af#zWe z@#TrKHr9!>HU?>xP`J`+@%7aF6;>BXKkg?_OjO4$`1XPtMz>c2lUOyXZY*kr#69|| zCKp$kjGc~PlcP}S^~Ne^%}QgmOM2ePj zlqV-{mxsq7w})2P*b^%Q4AXv8{YDkz_N=b4>IYTD$oo4kDpvVN9hg$8S!40kXH;b< z>J)85xR&OO)a;eAlHA%r1Bj=pxT5U>G_R2x)^e~4X?#)YAkAX*k#?JVDk!iR4bm*A z+{a@KRq{|tx$>gI5I3j9QH)G!Q3z#$9}LoLr%_juq=j?1ZQ`plaBi@9NPG1sh_ro~ zRlwsBh^soVAfGN0M={)vVzAz#3~A0mOn!H&S7gc^-DnS5Gqfqe?&BIoXnusotE zw8!C0iM^V)hQjQ8E68WbJjBTF3nk{7i+94x&ymQOD*6dKIVBx;MabBiOsMph!1DM~ zg!*Ny1bf8M)A2@1L2m|y)_V}1$yMU0DUrIXQiu~_CyqSLH5aeoC@V8EjtnsbqZ|}* z%y5@RzNxH(qU!a)a%bxpd<)wtjhxnh43^1Nqo^uTg`zsf6-5?v&BZGy%D7!+50}M~ zCO;Awd}~|{ttSRIkUcP|JHICe4!oxrPZ)UOyNbr}l*}o@o^}{DEAjF{7f<>8jcO{5 z<~|V9XhH`gv|WK}B8@6U@aB_uDava=V!1*Sdfe~uSeQHtd5*g>LR8Q-Hzg%3zcJmp zcz?SN)m565@@B)#)pbTC1$$BG?<=TY9Qtf-O{>eQ?xXr_Zq4XP6~D&h3S7E9K%Jr6 zD?t-IZQ3-vf`SfrQt@}Rb@o^Mo(mWZ4OzI4!Co}~AeeWC;KREHuA%l|= z`}7)!^`pmQsnOllWzNhYefkfe8vE$hm_O-PxAAn#xW`IouIa|4!z>%lv^SQ=?%*Dn zf>~vZP>o*$8r*A8yj00*7|$xn*5c9oGwYqF`z0pE!&3QjkpVL=V+9yO07{JbBY4&L z1f}UDa9Da{LspG?A+btR#ngtFGECswWXOoFbViN(%r_b)b!I*_ud~q%x)7N9GJYe} z#wKHp*3XuiIl_{eXZ2V%6Dp1lp~O-%S2_cF@?U@F?>9|@k{RYEY*i)${v6$;!F>{P z?6_X+u%QsK%T}TIkHI8gk?0ZK4o@YawDpMT(5*wKb{T2uxAlnX5Eav*Ge`}m4dsoh zt*VFA($jXny`b>;W6yn(-*nN+xcU7zFPfdOvxpKC9;`adu{LFn%Q?0eCwXth-_>QB zcR_%fGCleJ)Z{bumyAt*r|0Z~0?Uc_`uq7EUmmw~^M&qyb9)Ay{(eiApI>Ca>GQ8Q z^qU*hDd^{8-Ch|r`Q)C*pEY$#-!&#?()NX$js;gwUeyx57$36x(Am~KOQvrt`quKo zp_pGvV*eTb{)|26pNM0{9NB&5iGt$?tNHo)b@uD$H+Rz5nS}#PElsA!dbP989ql*w z`;bFPbMG*jmWGV@=y@#e#ZIO}hxRmBQMmTc$o z|IBWY8Ye%0yG_bj^Sjowp&()VndK6lEAT|*8R zv|HZEzth;iI{IxmvS`*Qh-p zd_nEn`wx^JXODE$*5FKZ+JeN|XBT3Y|9EiXV@uBd-y2IG4BWF~O3E(BiG`0fU;NhL zcaHB0+CL&>{BsZdw!BmO*9!_;Y(M$giYYB>q^<3|a?*)~yZ!xIwyc+DX}Plc`RQHb zW_~cO2fW%X>Va#j z!>5ZH{8%HP?6oOxIV1>^Qxh!70T(dKgpWdY7MXvKUHr$KUe6V@^4S`lvTSS7UjLM} zY2j(fW>~-M%XTTrT`xRuIk9WXBPaK)SpM{dZ@_fG2)_<(R#U28=@u}SJ)F|beBd85 z!MLU4>~%>YXJ!{~KUD1J`-5T2vjH0!TXx#ag2`Q9t+^*+?i(vg+O_R^`b>56AF~UJ zw{JFV{daX(k>S^b_rEi-l0S0+cfLnTu3v1+ zU0CY!jA~D_+Li9cXSg$MTIrdV^9xGmeegk#**$9DL+*S&;5(|7^b{9&L$zPaEQMiR zUk%)oGwY4jC52mlDLzow&#&2o=2u(7p1*1@WQ-xf`7=}I2A_-bnG^JbA?jA+A>Osl z#Io3u)R~4BT|W)plQZ*;(&L4WuBX41!H{Z|G1d39R4axo)+#xZ(a7Ra_1Y)@P~A9tQIBPJ*M)@t ztMMs^wBOZY;`+?4;{Yo&**dczuIuS`EB^4^bFa_X_LF9=fBY{Ag8Sx=>H)<~{U#$@ z>1U-+6cj9ZVSd5!*Z`jb(~7+2dm{QSU0c2Py26#uK61Z{Y?*^ zHq@V1nF>BsD;Q>T>{ooU(Ed~w~|W7pZCzUdEmu1B4t9L0ule=^l2I7ND%fK$h| z7bX1m2oAYFtc^99qRI*iCnX*Y3fx#QYSPGj!{Z?%M*ld$Z>}jI@`Fw*3R=O|4F}F7 zC+|IUxwxn#`SjksB@EKPRt6ea`Kx^Mq4(Un!PCv=BVCSki8*rgun~qhs=vvL4u~_` z53T>)&c&;A-1&zKEK7Zi#@YQA_!+kh%nFI@7v;BOf$xUD-n~#z*dXrE3p@J6Ep4#) z?jMGJve%rru%Oq`PmeuPyzAgy4;33~6#2r(J?iB#yzIYDX=Y5_8S6KHR$uyZ7_( zE@_RwjZMDywIyBlAC9GT45%YJO12e+oO>R};ROZD3yNE89cNjSoV?7GGR2(D$Kk-? zfq`esI^j4RRfywo*=GTbmo5%!()i_nU6zKp&pS2T%(4Pwm|t{J^}td~T^yZPC7N3C zDuu>Lqjc*9QaiIgRSj(=t?B8aB9%&O#355s zY0K&$Ol5WPj{%jSOH8pbpcZtIX+%D#23=sP(1qG8xSkPyVfy@7zX5wl$?gIroA}VN zLDr$zRKSS;`QwZNGol$qU)uy*ntCpQSutno&h##2?vRJKExEqP+MDGqU33n?bGND1 zkZ5zXxxG0G{|_;nyG#F@qL{vBM4e2!+@EU6#2Kw6M^ZVN+R3uW&ar1&vmLh7q_H{H zv39((p9S#DA0v+_0)l!pvU-|-T}i2rB&Cok)U_J}BJ1PB%n=x*X#n#Ll0sR7)dq|{ zKFdb2AAAnP64Ru|sIT$&V*G!5n#MKg%Ti_lt6841>%Qz_J4uP}iw%th{r#!MGl}Cm zu*_}8YrW##oJ|8+qZ*+u1hDCkb80#8&cxvmgk>@*ZG!(8xSpmz*hH|bKmI|-e($J0 zY8n+i@J6gua-;EJz-)&R%Y`y%}oSQF5Eh__(vT*+Z|^nJSly%hm^$fJuq(o-k* z3qj!U1xxD*byNomzldkC0Q<}%pHg7GkuN6y6kY+gI9CBLrX9(=_|@E#{w~=O*xkFY z5BbIP$=zlw;Ep~+21;Wtdu5>G=xckC%m~% zcnh8ImOA0`oXM@+5FLJeVM&R32&)B2xyuD7itRA}I+);<0jXlh1%f-2jvr_5uxJUqGOBeO#|b#Mw0zCb`A zAP^7;2m}NI0s(=5K;R}uVEC~3c(y)I>%8O-(ZS@fyb(mv+IcmF3tu205D*9m1Ox&C zfvSUmcef(EyOYiKDBd|T>lmw}a@OFr{TzJS((!JQY<2NOySjZ<`-#r&*%0}-v;miW zkFu?gpA2VSJ@oQGJ*{g1udCbNp7P!xMF_2nkPyB=Kp-Fx5C{kasxAV`VHoLH1=Dl> zyOVGaSMoDP4c7-B={>xEUp!8VAk@ZntF-XKd-$0ZAF#>-;5*XcCvo{PuDTM}>dQRR z$+clZGgR9!FK8nlVxc`}@=2b2Aps^s2$H;{*|9ukkjy~-mZ@*t(R=v7eo*b~H+YI{ z9G>wAgT6cd;|Fiz&tN$C#EBZv7Eh3b!8iL?)qz=fXe1IQ-Cj}$3Q>`43j+sjtPcnA zXBcFZg*AkIcnT#F9^PEH5sbjlNO1ai%xLl(BrM)U3`wFkp5=#TcIC@M#II3PPfAA zc-AHyHm-X2R`^!p4Sa7vTlfd6t?l94p{LtIJOXnYoLjgq0`_7Nk&v}}S|qH;&}azm zFs&Ul!c#nL@#4bQX6T8M8VWDI^g)z#05Jso?_UrD@mSw(FuldH&Tt8N&5-@eH=W@; z;@BRR4BXQdp2G7oVQ{(OzOJwX8E%6HZ~b2nNJ1Ri!^+aSy@8!yX#yt$yZ45Nu)Yz{ z=~7laBx7kEV8ch%?tm}^$_!JMtW1FCkv9tKnbGgI=zNPU`BA{+m8luk-BO0GVlz}?&Eg(w&C;IKq0 zqRKI((@)SEYtYzv$Fw_=!PsA9$9haK9#5CuWF*@GBE;QlBpc!Jb=h%Yp>s^o2t^~x zc|w@W51m?q$r#%W=&+KEHJwqCMUajr$x=oqlAsCV5{0#vU4JAyNT-;kfQd-nhRrFv zS0$288$lxku`SB9?6~yN*&_XPi%=PQvw>P}ln-lDB(v#mN8ho*~lJjL(Z0W3;!55L1TwRUz!Tm8j z+~A9Nx^gI{?k33>R}H>cUCA})c_O`li5>aH&%-@nzAU-b)SUz?CBIp5??*Riq`oZQ}Sm}49Rm4S#LvA4*1i>j`!+ioY!j?ZkBZ6 z84|2?MZ$fjhIVZJw=PBJpL}??x3re!l^lzR{?^$Xi&^E_Iq?2Ho4AQwh*-yBfqejWQMY3V(%RY@p>Z}lAjmo=oHuv_>-kNB4r4MTfRP&I=@^TQNs`27b+M%NRD&-q7q(Qb2DyEbgK{+Z(mW=3 zWaG0bxctv$qLPg6o#jttSR=4g}j{U;@%B};7*w+BjC zO-X23v!$jK&9`gdbxJ@BpUqspnV|gwbZyAow+C6V zjS@x5CDr5xs?nBces5a01kjt84wF-9y<&L`rEoDXB_xC|5D*9m1Ox&CfvSr@h0H%P z9^-(LW_{D|gRo8Dm7U%mrkZ~QHsfj?q2%592UFMWLxPxEOk2=@cm6?h0p7R(E#rQC zT~8lXw)cry_8W9n2MB#sjfbEF0s;YnfIvVXP!$pI*4{vrtVhuK3Q{pE%XzJUzp`6b zh;H8SSuR$jbrNtl?HMI@5HoSh$9|G-E}c9y8s>H8ASK9M(6ou2erFbd&CKxbu=sxQ z!{P_`iBFO&0C&b^c($INW^q_@t$65>EfzDuOvA&cS-CcQ7Sv$zd>-Hoes6o_;TQtnf`jZyWY8v zg+g~H_=GPI5C{ka1Oftqn+AajSzBJbp5rU@RaswUi@>*?c%`UZef1ciEeLO}EwfUY zBmYM0t8~Vi*8p zUzy#g_3ys7SlJ1XF6Ld|uU7MKMrT^2mVjLD-8fS^y!h3|QyGAwmeYFJqT6fZ6wN*QW?ZEeOVDJr+IU93RXlS4=JtaeS#Rt zEJi&gW5$?kn`-^?DDlvzFr0-W4;hS8z7&!9EAfZ$AJEh_&-OiCKk6{~H)3ujGdq!D z6|iT``JFgIWsU&X?DFmD=|7w#mRn>NCzw1FS1{}ULENMb*GbH_+EO#DInwjCe3~z* zOI&&y_N{V3T5kvCDMyIabS*-H76=Fg1Ofs9fk4$mz*`#j;7YDx=SQ!fd$k|BF`yZ^ z3(OSUpxtNB*Vogy!gYk@7ol7n(`2)W3niW1&A@d~1Io{F4JV~A>`6C{eSFPXgEy-M4$t82rwthdW_Dp>6AW9iKj8ev? zlm;WfC3f%CfX9$7A^|?MadM$H3vLZ?jD2p?kZpv;%&hl@pav`FEyz3d^R>>K(#5<9 z;S)|EAP^7;2m}NIHx~lEhu=9E{OG(bEI>Wu7U)YD6r#4#7EVpzbgR|C&&#%2@Q(bW zXV&&U#4P+uh(Pb*1N(s=9j1o0*!~>=)l2Rg;iqBRLK`A`A{hZ;L}nn_4wM!7Cy|T+ zx(4&DXi@9+S`BiRiDWH%kj za8PUnzKmof#>?&~A{hdTcD)Z{+rd95wh>MZBj9!-W08!89z;HXWJl;pfw9gGq6 z_ymtB8%)t46F)cY7dqJ@`xDbrH+pLa<7_40!T9+3_!lLM@(ozGGy3=}2OsuJv0G|F z%QQZcN%;WwxzfIO4vHU~c;}G8{Bxy2$jKn3uaq)#o?PN^Q-fuLj`_>_OFwZ<0w6GP ztKWq9OJ>_ct%*Ov6Mw$;8u^+I#7}eZM!Zr8o$HP21zm}cCg(DY zbT?e7foU*t(!5>Hv3<`zL!!eKzFK{Wk7n?V>5ewuwRdDBW!f!i>~?tJ7|y6Se&u{n;Zbq%{V17ptyHG7&*cPEW)3Br9dY)-u`{E7Dmb9188%U7hAFW15TmKZ_er4kwdKz9RF=_l; zl!NCyLYyJi03=9(fIvVXAP^7;R6zv1rQy9$$u+!_FYX%Hum7FB;YH*pb)-5Kp-Fx5C{kaZW;tCWS90>JlBZCsYm(LV-4ed*wx;wU2g<%tIzhc^+rKf9cDeb-pfg&pb@rs6yy)z zelKh=0R+P>=L7DC$r#!VMnxH|vgz!{4whKqFrpR$9s2oXLu>p@OBkFyQ1*cI#g<#( z=o?-0AR8GvLV)R&Nx)4%&p7|+Way7ZuscBaCDW!tBVT63`um)g)8TC?vk4RLpAH#l zQ#uqH4E=s4a4Xj*eJ;%eZXSB=sTXGhH%UF{U)H&BmsIfT4hQD}yE_*Qw>dH%hKX3j zZQuvCMX(T`A`BvHRDTpM;?MSwac;q*z>R4KUdmr8eORV7M1S)6)4&aX+gB`k7P2wl zHt@lgvghC=R*zK^(Ej|z}FS5ei`midBG9#=%5urdQ_RHk`GG-R={hWy>{_YM98K0BTWdO@Y=7@grK-tTBGeo@|oOi_x zk>C@)KtLcM5D*9m1a2AxxP}M@_Dx1++8C`KH)PA%^+IAL6WIW95K|js%236w=Feh` z5p)w0pmatJW;EpcM2iq(ILp z>{;L-R{BnorcRW(`caO}q-69xr7+JWXdmWO0VV7r1Ko%c=BH*@a>iPdavccp;-`p@ zKFOp!LVlLj;jkyA*>ZV;4v!EkSw0D(EXj^_wl&9QPqU@AjabHcv248=1C>XzLVk&u zF%T5O7YGOh1Ofs9fxu0JK!vO+Cokgqida*Y*OZ%~yu}WDrL)SiOGzS|z&Tgmz5BJA z2+X-`+yuX^^4Br11llFNE?4)~L+U+>uk_uRuT`AP^7;2m}NIRS5xa ztvUCu$M3_K8 zARrJB2nYnKGy)Z(VJ0sZ8m3CaY>qN^`KyQ8cx%~M1xz_mfbZe?3H$T;$>&R{SI;9}(t2yQEo+2SWVjZ#f zlm$^S?7`WS%=xygTw9toDVvqoc|GyR%KT2d6H0UdgejetG3{-ooOAN{+?8QMqTlg~h)rITkJMe^CC;SnI(vm#hxI+$aGG972?B_)N1V8VZpG}!7$ zO-qmIW4Gs|*|N~aUoHe-PLcsm2$7zH7Xetd(|PY(QrX|S07^`*I zQiCt`N0W2rWY1ds0)H}tFZItr*XX1SdtOd%l4LV+;67rdzT4EvsT_bIo-Iw- z5|XT$E)%x2{lrBbUaB1DvSxx2imw zbY!?xuJhN#HCX17kz-u;tn?EUO(Tqq9FKOb-0H80H9^ivMvk#+E4QwMm}zYCLzuC^ zt=~`t4NG-cMD8S;BQ*o#11|A+m8=5%-F+z4q#CQAyJ4TMrAlfh`6(5zSboP*0F4UH zK2I^i7YGOh1Ofs9fq+1usvuAy^MjvHa(zh54`hA46^hg1d2_G(*N?~)JxQ;(Pey4q zQkuh1d1^~Cr1hm)e}l0Oduc-5C{ka1OinH0dMW*gvxpZt!&Yv zv_XGSS~~h-gxa_y%@(Em*)lUnSTggh9>4s=*4E`^KFvB`=?u{5F#k;pb#Ak^v$wE_ zsN`7mnNwqEh0I(WhsDfAlI~^l%q0XxdFAl@pS>lS@s(UMzdanC>n$t>RdOtR?v0xx zk91eK)2+Q>bH#b2ygNnXX#Zh-Khc|4(*70klD}GBgdkeXD+vkV3j_oL0s(=5K%nX( z;4Lj}d?nY?F3qzY^A;96YjAU+m35At6M6b>mHpF!J+7zy({Suv&0=~o`=`4$P3gj0 z;Rc`8Yk5Y@XjL=XP;8CrdmZO0q&4=*9Z2kq%IgcQu{GZCe|WdIMyQ7MD)$KW)uC#~ z5E2ONyW zv!Wt%LGg11#VxjuOJ6)Tc~tF`Y1UE2McFmC4oglLo19==zpQ1ZHF?x;&lhjow&kn; zY>V%Gah}n1zzClnZ19ub%7b(qTEa>FCtB7RC{(OG5E8-{2nYlO0s;YnK-EP+PhZfx zqcIq`&Ps>~eSwe=zCb`AAP^7;2n4Dw0u{0n*)&?c@?8m+dc1pw`&JaNgu$JgDJzjT z;6^=Pb=!2jf>zyl@!>;x@rnfoPDcJRCX4ksx@}GUk1j(Kow^}PWAP2`Dy)5b!bXEH zx683jwQ40;8J2E zBM|H^xJPqt$NnT%G7!P;o-3@fCAWq_yk8i6$!>%PuBaEA5*L}1a4A-8zpZg=VkJ`( zE*UDO+g7(BF0w%3fh#J!BXN;oiu#F;9Q%ZP>*Q2xZf=q-D?87z(M(KauA+g8$)4vx zuKal7x}O?A;zH|h)+|e=V@j<%h#^I02)M(Nt17Aa7|sF}GJ>6G#!DA_De_)Q8*HZw zf9-y(LRzCVOtgk-pD_$umQ?j_fGeRuppX`GSI03ksG?I~A5S$;r!1 zDO1eZoy-@F>th0k2L_%k>l72SCaN$aV}99ZB_|pOe1GypSli2641PZtc6MsmL2v0n z@ABQANO1nlg5Y!Jgu3v2v59^B4P9s)i(2JVY8ZPEZ`MyTOeQ)t29Hyk zCK*a8z?A`vVSc|A&#N07*fegT--8#XLS&5Z5ylC#tCt0>nptPh)S6>^JoLu5C53-x zAG&Zpc2zsZb+S{PSkCp5$y`!%>`$}bxc7LwE?qzM+4DnkY4Ki2i8;~*%YEfOzbwYb z>I{B!gUx;J4&?3NDUr^B|~7XIloy&8P-%+9^O z>C;Nj%sKvl^XkqEnttTy(N6Gd%ehmbtVg|cmU?gMvLZ0dGQGO0aGvQu2}|qt33&2g z@jAaxx_^46*(dLvJ6?bOU&VWq?e@AUh)G_(+PhdPPZ$v-5|sGI+kA)4w(eOneOnRb zFMNT3KtLcM5D*CbT?8s**XhyzV%JHv>(myTvCg8)^0!lN7V zWW6=x9zsJV_=GPI5C{ka1Oftqn+Ad2!w2?*YUjtteF)w0-h3(&AtF_ zq4|M#4#JQ+tPUs7zIPbfNku&Od(u(3fcZwk+&JTx@F?<{;mB(XzlB#Z-`n8B$G`p# z?m>+&7^3(7bRL#t4(;Ll*~J&&Xf=Qkc)YG7u1tL#wtk9r6!6L#00s;YnfIvVXP^A&55DmKdb3%hw zY0zerv8O%@ZBQYt@#PxP8miWa!qymb;+4hNCZnHC(9@{Hb;gB7LZj9}Mg$841Ofs9 zfq+1u>LTE+RnYmBd=<27ot6m|qR*~-Q|PlQeKs09TTJ1WqpZ(e?^7JwHEH@d2K9IP z0tV3&_J2B2Ps3*4O84a65*oHASVWjWKp-Fx5C{kasx$%>qE$X#B(zGER@n(<_l1i1a=9HTfsv75C{ka1Ofs9 zfxyjzfVXtKcPhD#_j}g>{IKeZZR&O({Jxrw_*hMkKB1=P{H~^dIH{)lnbbG$R{N;w z{ebw|cL)3KP7&U#f-AugJHEpfNOar zcxPhL__gGoL&4%BYlMXG1p)#Afq+0jAW(G?7}BTz0J(BUc}=?;&m=>_kp>Hl@xAl}x%H=6lo4oOwm$(V=qG;-EAJh?cbk$Zwggb4%$ z0s;YnfIy&1BT%kJKG2B9_q?f*GaDPskuNlIwFWEJ#MOBGub)EEu8C_k^89$UhCVKE z>TB1kp(h9poevt~uRuT`AP^7;2n22-1j^OWM;p;fwKp|%vy3eHLPJ+;q(Vbi<5AT# z^vwxsjXi7W#Y_GA_w5ZY_Lh4FuB49-th3YLn1WN!nzUtg&ID_|b#kgTH#fq9pKE4TOq%UD@n8=}jtERU zQ@wj|s{FAuSGxQ1q}$oSL?m6ia(~{BWawn+u&k?kz^^pck!7%S#$4fWFvPk+(4`RW z0C!c6)9LoPLLsL!XIyqpxi7H1YDFll*W?V#&RG(u3x=Elj}r*O&ak&ehc~rAH*!Q_ z^y}K7zRVk_3mGIKgC^wG{jQ)l;Pm>d^;#YN_`}YSccsor!ofNn;)zS+ft)yluCO5V zxO^c_=?>J?2K*2O=U$alRjYg5OZ1@dn95NV4g_6`bzTUcYmx2)iU>82Xo)Mh*y~>$ z%gGTiv7P4(FLC+;u4*2-sE((cQ?3X7%jeY<7V5>p8j%Vw5`Qyp+&IitzQI}0AYKE1 zQ1`jQ-etP8#_RXi)YUY?5<_ZYchxtUU6BHNzz>z_an`zmt{Oe82PKLo;AZ+~dOWit z1iqZFL4I^kY!OFt5?IjYHz5yP}cd69ZbpFOgNG0m;sHA;CMpncGbGv z-tY?OF;3A5L@xx?EnRhre;IT~OI3O6^=i?*EDfu{O5NazkU~AG=GZh=6ESC&a5RxQ znpiOVt6k7rS3r){c%XYcx;rce9cfIAQpT|c^;#THFaHN=lav|4LRaEdkz zZ9EL)jTO1ZiJ=4$0#&r8#TJhkVuNuZ>~;AX%~D*NcscQS{RyIq$$T6Zh*=N2RF16h zM7>dTI3~m($w?zGqx0(vzywsQ2c5jFTT?KyXr=;wKJUo+q^8ancKLNa2PyPj{_3d2 zjJCDN<#YMndNm{>M=^+|B;fVMn?zJNP#AMaBq$8?P7Qzy&CKie>V7wGz`R{b5*YkF zbp;LX05srW$O|K{$K{4*UdU$=Po3@)eH&OTy*keHbaFu*IXzqU>ch?gX8Mj*vZ=ji}jQ=}MkVp5jj z{E;eH+|_EE(!m?AN?;HE^P7*@}RXyOhnVmda- zq`V%XONK$j^~9+`7|q;fA=DrS#z0-T>D8w?zN)&|VE`kBnu4E^T8hC)f@&p?A+v|l zo;A{4aPsA2x*@~}fTE{xYfN(DHuFF}N@o_SR%K;?Hw|X;)y=KFGOs@b%ZN~2yv0CF z7mTKcoHf1w&2qvb1UOXvRfU5AvBZiR$fM%U=i~|NFqWYiwb&SQbL%lSu6Q-s?5ZiP znB}YkaVWN9!5h=aXix&eI1|N8%t+Me)U5kJ^bC64@n-f!5sc({O6uHhNio6fZlP{Q zW3c7KArT4|g-jDC`6je^BjF}BcnkHh6i}uU;fyr(B+u|sEwPDkadkn|5YebiWFWzr z5)Kp=>PYDm%0;%E*f7L;3I;WyrU8wN7}sK?+7eKk03e1WV+?Oe%JKb zv0G|-nWlB;;SNpHPT)V_K{qXn>vp?>;#lgA&tV<9@Q}12+|Sjw@T`@Z-x{U)Et8?F zM_;b+WobhhYMZTY*14QCjdf>P@Q*nw^{~6zQ(PJd1gk-B0Gd~kG>?U`Y>`1oTRiA; zPu5Tdc`{VYrPI%?suC(@u8`(=oHS)dS!LCfnU&6}(sQRn{yKBE$g{onl6f;rE2d$N z9kw}^B|X$j^4^V6$lN^P%zBMSBZ<}zkZ*sdh_X)OnMq?Eq$0fX+!oF zgEQs%H{L3*sw!g#oRU$4O8bTyX9sPB8C9?W#-&=)7hC0&(7C2IC6TOe&;hA*eYoHX;}qVs94yoxA5oViS-N4 zTGg}jzRiw<&#j%1#aRBd(Kng1R=?n(T~|3y?sZ|Ow9g9u1=~hvcJ}<#vFv$~@}QdwGR!F>+#-<^ii?Za z=AU)d?vIvq%dTBmyOy!3pLW=0pUy|BcI+wQl&(bOPSZ+h;OyoAuoJl$}TD_DjZ%o68_IFEF35P&l<_ai!>1M#dZwPGQo}rS5SyZ zTukEm0zJAcb1N5^f4CTbYt>R%nVfa<7aL0ER7`?Oglf)&xU2IwuavD_V`uO}!Lzb< z^Ji0YAN?SpqFzu)n->3ajUzLDJf)abHECTq<-suB|BUaHqORmo`XS=hgp zvB{+~rwcH|PEU*)b%TsyC&!+TogBl}N?Oc@JYEbJT@n0Ndennh!?6mi;aE6pIQr4W zba_+ck2M_CgVyj&NghMbXKwyj=}(lwG2vWw!yhaCNisMlT)`a^ezFa{(Cx*EUx-$5 z!bSIw6V7+;^2eG_HI~POD+O>&xKfwKgsUMmCcL*yHYU7}O?Y3M@P0Por~|W>i_6gb zv4&@h(Ae++HsLuo;Yy^8i9gqdp3mF-vF1mHg02o59tMz02oM5<03kpK5CVh%AwUQa z0)#-45STN&tc>gFWA^db#D4%6cL$jZKVM#q6WIWTPC8t3(P5)NhwY0>?PBpif-Tta{lAOr{jLLg-j zkUMS*kLAR5^G{H0JYV9 zxe_*27@X3;O?@iG9l7d?Qc@QsKj8TRwx?}kb^4g?KZ}FKF&Vt+X~6`A;@DkHsCWGT zW$@1-COXW8JDgb%(b-;^o>bicdrcjuSPnO@F1 z^zZs~8XF4KW7(0f2X$ck;Q-cPc7OMQnd1Cp9$Qm&cXu`!jz^7V1ONF{Z`K3S9LpLm z@79N9z~Qb!wx`qA1KD!;S-}1_`l%6YIEbu8Y)8Z3)7dY9Z4_Jl<3AU%F+ebpb+|ig zH2W5sb|I@7a_U%C36YIrA6{HIjyVO}rLL@rtOqpSVs^*TlS&vrj`SmT==Oc3>;@pn zV+A|DD`T%izkvMqeS8Y*Btl=h|DtKE0nUPrW(BKmnZeeHct5V`bw0ZfQp;t3U;O$7 z?2iy{5v!eh?;SPxOPcR^}IQEKoYkUNdt-ol(Ie2nW#Mlad$}1+7FudS{r+-~|#^W|exV3a_C%w!^ zVEL^I(h}q!Rr$4aY&6C>Z+Ti)l3L9`;u>2^2bjc@fK47!#ih8Gj*YOlIb(P>ms>CG zGFZlZ%m;b3bgZmqo}oR)L+@HTjB4UB(u+MSAAKRh-UV1fZ0_9{GxR#R^h~% zU7KY24<(KMmRYr}N*e#(@t3aVz5s*F6~FF!ftHS=Qe(9s+oQOKBG-epfaBL_qZVSW z!jQ&_(PTATcN4jFqR@-+;5Wrc2CV%DZypf0NQ_^Kj5tKbV^legzA$1XD9HGurQ=}Q z&&YYadmnnQL3$i*hZ*#d9IAw3FL%gWi|jZY_cYi|_ceTY9TMU|eVRdNq+`0FVb&Jp zz`^@u!#qE~8-b4p2e(R^$lo8@7xLOkUl_UVH)l&MT1a0#)h8=~k9S-`K+)XZ9A}a& z{v=ml%_kxK_N*O^>Z>2-Mo5#Xug0klU7SlLq>SMtiT*_TY8*b0zR$hROgsHGj!a04 z?g-Tr(2o-e%snK=I ztK4pWGS@BmaTnd=y>2mohlRTZdU$WLTgTv6EQwF#uTJZj2pIH>5Fi8y0YZQfND&02 zyxKy$G_v`APk5|yY8%_7!S^71&|&r7My1O?Gj?K9rAyrTfNo1mm$-*Y)FAx1aQwy` zJ82Vle<3ZpD@fWzD99xQ2mwNX5Fi9n27y-5jvl^Q;%k*UQ+8Je2cqoU_r}E0+c)dv z#^V-!eOo=bG5^rW*>GE{{+Aj~lRRsMg#3g6AwUQa0)#-jN1#>Y+5PuQ zTuGi)U;Fv-T4%x5zJ@$2K6X1aP2&*p2VGkmD9yK!_rX((_XUADYwdhS4( z{Ke9VY?cQ94Ih08hv>8K##hpPcSg-8=JUyLQvUu4hj(k~c)9OsrX#NIfPa}DNu4|6F zM4en49^7WnCvQEy&RC5IgH&J(sF@ZR|DZ5gA z*Dzi-ql>S+s;Z3P_0Aetj{8Ofl=udauen)c4fcrqFTYU00Xqvm<^~!*=FLg_HDe`Q zVcYN9t|dRYyxG2 z3G>I$2}>{iB?JfoLVyq;1PFn4guoB|hCH#Id_x}IFkq>$=PJ&^r#T!8gZu+>#8z!` zFIM9Qr6!G;_vSjs!*&vz-Km#BB(aH#p+AHGAwUQa0)#*+A<&{awVvr_DX7J)93}Tm zHW%t1Z@Gp-mrYc<7wBWs+L@Y4Qilw%YWungN>oHL_$UW|67f_$jgsP%Hzj zskj57aHyeH4>~=*z;fr3Kwa>sN0BQ>aSgC?mCh_O^He(|WLo+_#nZFQ>krlH-cX%? zasDi)?vqxE%CnF#R}tpK5?YHsE*F^wHHAqQeoSv<%2P~(VpED!{AGhApJK8)b`reZ zDXNhq!CN6DKOsN}5CVh%A<*s-Xi*8i_#26*b#Fo&`zn44lp^iQ6Awu2TKEK7Mi(jn zSusr6{TDl`+oH}I|Pa1AwUQa0)zk|kTM8J z36E*oFx6dzdLIMt84Ne2vQNNU%y7Rc>ko!L3mEPyWs|`>ni(ywL3r~p zsz<>)22xf}4_Iv!vwZYU5#9pyt_E)&Q@T^ewu85b4aK*A6y9Oz?F9P<@}L8#XE=C^ z*a-AGh4*yy-XMqz(ffpWI}*J;z>aAV{HLDD;2jO{sHXwE;~>}S`6YNq!F%<5EO^gA zZy&IG3OMh1ZzF~z&u!5iE-OdM;RKKpW((Tr9(8`@?Tb5}&NH1t%(&ZJw&b2dTV+Sg!)L|EFlF~R_k!BE__e7yTprJw1b0QSG?vM_!+*?K z?)CZRx_osyJ2`uzl4;Lj#hI-5`!u*?LW4*3Yjmae=$c!rmX0`oznwH~w?}#_Nz)2X zatHxJfDj-A2!Yf=pj9No&&x<6H0_Z-6&l?Buil*A+#NJleJa|n!1jw~DbU~Ty|NGO zBt*MC*4s%!MEJ-h1PB2_fDj-AQU(FD4Kn!3y0QM{Y%LwPGYlxLnB}bVd&BwXIX!g+ z4eo${nH~&z1AeE+?BCL zJ)ZkWf<*YpB?JfoLVyq;1X2cpR{1Ku?>wmov!3=z*?o%ql;!Sa``xlO3N?)zXBB%8 z@yrdnX<7Vpc2^MCrObW~>(GUVqz&bM2WMk!ZDvm%=5RQ`(F7%TH3rA>SO(sXc5re0 zT4-Zdh53=hJ=gCA-EM1J*+{lLkE(fIrTod>b;&b!^1WyAOr{j zLVyrR1q51DqV&yg7ZN2GnVhd3*!n}Y>u`ikJZ)XOu60>aZeU@*GU*NrjJRj1qE{#q zk)vxGTcLFA%Bep8P|}8^!|*`habG0L0@lsfK40h zq;tD7Vc(K;j_{F72oM5<03kpKqznQrDxDu$+b*PYZe;E!uM7d9y1nartr8|~kjCz@ z>h;0Zb`q!E8M97?1wR=JepfKoC>S}pga9Ex2oM5<03pzB5HR$3$9Rv&_;#YxJmk7x z-9y|$yDe_Ku3bpq+@|w$?~nSa>=4)eJfp}?0=3(5+>a#Cb~Bn#K?ngtfDj-A2!W;| zAnq0EaM49iY+`qTq0J(eyHK+B-P|BWq*MEq99-4Z=!mY3At3G*>9G9C>>Jq@*sna6 zl^*`bElggDu`|438YRHXD>Re2 zJwlhf{T<}1y+1Ab&7*uvyI6H)L!&r!?}$ue_1TBHwl;k@x^sojdy?wiO6T9G1r5Kfh>5D;Ay2ZiyHF7dQEL0=<*c|KieG$ zg+q~mF%KXI-Zj{rbJWNZi=yyS?0ry@we6;2E`#;dWujd;XkHL8uu7y>qkkiA>$KiZ zLbcl`K8Yk$gqK`GfDj-A2mwMMWe|{hzx9pT1xecJJHtN6yAMghh^(|Io7Xwe-Uc6d zcjxiGJ0y{vzvC^T;(`Xd*8{JdJ=acRwbQB2B8e5@BbN{$1PB2_fDlL-1X@L6efpOq zu?jmCQq_f0*TY7#4I*Ri|J&V10;a$YwivbYOKg0&z*UP6EnAOr{jLZJO4 z&?*w_uHTRZYm#93{?B)>_@Z+YcD^RhGWPCQ#_}H9 zdjd(pN-b~;%*iS{y*Xd^(t z94w!uv6J8o9ULy2T~=N;yR5Rb%sG8Z)f{#P9A@K2d8=JvS4a;t_9O6clVR1~8r{#Y zpk^8TJsgUICtKWH!gY`QL3b+ud>-}eP)B<(sCPd8lJ2G|vw!?jvwtOIBl;;?7wu#0 z!|TlcSzFBh?7Pi=w#)3_b&uJf>el9(yU*3Si@>Ur#eK|(GHy~v|ME3g);Cwe-9Qp9 z!bdJ4KnM^5ga9FsG6*y(;ojz81xb}~QGi94BwTYtOZ8m`i6mS+WQVAox7FUBGpxzt zK3hrRjf)Ef5(0z(AwUQa0__=rMkU^d9c)NaC0_MmnxRV)ueoiJ#49&WASza!u2tf- k+K<>fX!U$Mov)oe>4!)HM!3l(1PB2_fDj-AQU-zl18uK`^8f$< literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_simple_flow_system--model_documentation.yaml b/tests/ressources/v4-api/io_simple_flow_system--model_documentation.yaml new file mode 100644 index 000000000..af47d3d6c --- /dev/null +++ b/tests/ressources/v4-api/io_simple_flow_system--model_documentation.yaml @@ -0,0 +1,944 @@ +objective: |- + Objective: + ---------- + LinearExpression: +1 costs + 1 Penalty + Sense: min + Value: 81.88394666666667 +termination_condition: optimal +status: ok +nvars: 279 +nvarsbin: 36 +nvarscont: 243 +ncons: 253 +variables: + costs(periodic): |- + Variable + -------- + costs(periodic) ∈ [-inf, inf] + costs(temporal): |- + Variable + -------- + costs(temporal) ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: costs(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: costs(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: costs(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: costs(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: costs(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: costs(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: costs(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: costs(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: costs(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, inf] + costs: |- + Variable + -------- + costs ∈ [-inf, inf] + CO2(periodic): |- + Variable + -------- + CO2(periodic) ∈ [-inf, inf] + CO2(temporal): |- + Variable + -------- + CO2(temporal) ∈ [-inf, inf] + "CO2(temporal)|per_timestep": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)|per_timestep[2020-01-01 00:00:00] ∈ [-inf, 1000] + [2020-01-01 01:00:00]: CO2(temporal)|per_timestep[2020-01-01 01:00:00] ∈ [-inf, 1000] + [2020-01-01 02:00:00]: CO2(temporal)|per_timestep[2020-01-01 02:00:00] ∈ [-inf, 1000] + [2020-01-01 03:00:00]: CO2(temporal)|per_timestep[2020-01-01 03:00:00] ∈ [-inf, 1000] + [2020-01-01 04:00:00]: CO2(temporal)|per_timestep[2020-01-01 04:00:00] ∈ [-inf, 1000] + [2020-01-01 05:00:00]: CO2(temporal)|per_timestep[2020-01-01 05:00:00] ∈ [-inf, 1000] + [2020-01-01 06:00:00]: CO2(temporal)|per_timestep[2020-01-01 06:00:00] ∈ [-inf, 1000] + [2020-01-01 07:00:00]: CO2(temporal)|per_timestep[2020-01-01 07:00:00] ∈ [-inf, 1000] + [2020-01-01 08:00:00]: CO2(temporal)|per_timestep[2020-01-01 08:00:00] ∈ [-inf, 1000] + CO2: |- + Variable + -------- + CO2 ∈ [-inf, inf] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "CO2(temporal)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher(Q_th_load)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_load)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_load)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_load)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_load)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_load)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_load)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_load)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_load)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_load)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_load)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_load)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_load)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_load)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_load)|total_flow_hours ∈ [0, inf] + "Speicher(Q_th_unload)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+04] + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+04] + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+04] + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+04] + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+04] + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+04] + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+04] + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+04] + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+04] + "Speicher(Q_th_unload)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Speicher(Q_th_unload)|on_hours_total": |- + Variable + -------- + Speicher(Q_th_unload)|on_hours_total ∈ [0, inf] + "Speicher(Q_th_unload)|total_flow_hours": |- + Variable + -------- + Speicher(Q_th_unload)|total_flow_hours ∈ [0, inf] + "Speicher|charge_state": |- + Variable (time: 10) + ------------------- + [2020-01-01 00:00:00]: Speicher|charge_state[2020-01-01 00:00:00] ∈ [0, 8e+06] + [2020-01-01 01:00:00]: Speicher|charge_state[2020-01-01 01:00:00] ∈ [0, 7e+06] + [2020-01-01 02:00:00]: Speicher|charge_state[2020-01-01 02:00:00] ∈ [0, 8e+06] + [2020-01-01 03:00:00]: Speicher|charge_state[2020-01-01 03:00:00] ∈ [0, 8e+06] + [2020-01-01 04:00:00]: Speicher|charge_state[2020-01-01 04:00:00] ∈ [0, 8e+06] + [2020-01-01 05:00:00]: Speicher|charge_state[2020-01-01 05:00:00] ∈ [0, 8e+06] + [2020-01-01 06:00:00]: Speicher|charge_state[2020-01-01 06:00:00] ∈ [0, 8e+06] + [2020-01-01 07:00:00]: Speicher|charge_state[2020-01-01 07:00:00] ∈ [0, 8e+06] + [2020-01-01 08:00:00]: Speicher|charge_state[2020-01-01 08:00:00] ∈ [0, 8e+06] + [2020-01-01 09:00:00]: Speicher|charge_state[2020-01-01 09:00:00] ∈ [0, 8e+06] + "Speicher|netto_discharge": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Speicher|netto_discharge[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Speicher|netto_discharge[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Speicher|netto_discharge[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Speicher|netto_discharge[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Speicher|netto_discharge[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Speicher|netto_discharge[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Speicher|netto_discharge[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Speicher|netto_discharge[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Speicher|netto_discharge[2020-01-01 08:00:00] ∈ [-inf, inf] + "Speicher|size": |- + Variable + -------- + Speicher|size ∈ [30, 30] + "Speicher->costs(periodic)": |- + Variable + -------- + Speicher->costs(periodic) ∈ [-inf, inf] + "Boiler(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Boiler(Q_fu)|total_flow_hours": |- + Variable + -------- + Boiler(Q_fu)|total_flow_hours ∈ [0, inf] + "Boiler(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 50] + [2020-01-01 01:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 50] + [2020-01-01 02:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 50] + [2020-01-01 03:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 50] + [2020-01-01 04:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 50] + [2020-01-01 05:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 50] + [2020-01-01 06:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 50] + [2020-01-01 07:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 50] + [2020-01-01 08:00:00]: Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 50] + "Boiler(Q_th)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Boiler(Q_th)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: Boiler(Q_th)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: Boiler(Q_th)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: Boiler(Q_th)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: Boiler(Q_th)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: Boiler(Q_th)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: Boiler(Q_th)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: Boiler(Q_th)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: Boiler(Q_th)|on[2020-01-01 08:00:00] ∈ {0, 1} + "Boiler(Q_th)|on_hours_total": |- + Variable + -------- + Boiler(Q_th)|on_hours_total ∈ [0, inf] + "Boiler(Q_th)|total_flow_hours": |- + Variable + -------- + Boiler(Q_th)|total_flow_hours ∈ [0, inf] + "Wärmelast(Q_th_Last)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] ∈ [30, 30] + [2020-01-01 01:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00] ∈ [0, 0] + [2020-01-01 02:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00] ∈ [90, 90] + [2020-01-01 03:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 03:00:00] ∈ [110, 110] + [2020-01-01 04:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 04:00:00] ∈ [110, 110] + [2020-01-01 05:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 05:00:00] ∈ [20, 20] + [2020-01-01 06:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] ∈ [20, 20] + [2020-01-01 07:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] ∈ [20, 20] + [2020-01-01 08:00:00]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] ∈ [20, 20] + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Variable + -------- + Wärmelast(Q_th_Last)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1000] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1000] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1000] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1000] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1000] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1000] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1000] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1000] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable + -------- + Gastarif(Q_Gas)|total_flow_hours ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "Einspeisung(P_el)|total_flow_hours": |- + Variable + -------- + Einspeisung(P_el)|total_flow_hours ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] ∈ [-inf, inf] + [2020-01-01 01:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] ∈ [-inf, inf] + [2020-01-01 02:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] ∈ [-inf, inf] + [2020-01-01 03:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] ∈ [-inf, inf] + [2020-01-01 04:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] ∈ [-inf, inf] + [2020-01-01 05:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] ∈ [-inf, inf] + [2020-01-01 06:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] ∈ [-inf, inf] + [2020-01-01 07:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] ∈ [-inf, inf] + [2020-01-01 08:00:00]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] ∈ [-inf, inf] + "CHP_unit(Q_fu)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "CHP_unit(Q_fu)|total_flow_hours": |- + Variable + -------- + CHP_unit(Q_fu)|total_flow_hours ∈ [0, inf] + "CHP_unit(Q_th)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00] ∈ [0, 1e+07] + [2020-01-01 01:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00] ∈ [0, 1e+07] + [2020-01-01 02:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 02:00:00] ∈ [0, 1e+07] + [2020-01-01 03:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 03:00:00] ∈ [0, 1e+07] + [2020-01-01 04:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 04:00:00] ∈ [0, 1e+07] + [2020-01-01 05:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 05:00:00] ∈ [0, 1e+07] + [2020-01-01 06:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00] ∈ [0, 1e+07] + [2020-01-01 07:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00] ∈ [0, 1e+07] + [2020-01-01 08:00:00]: CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00] ∈ [0, 1e+07] + "CHP_unit(Q_th)|total_flow_hours": |- + Variable + -------- + CHP_unit(Q_th)|total_flow_hours ∈ [0, inf] + "CHP_unit(P_el)|flow_rate": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00] ∈ [0, 60] + [2020-01-01 01:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00] ∈ [0, 60] + [2020-01-01 02:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00] ∈ [0, 60] + [2020-01-01 03:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 03:00:00] ∈ [0, 60] + [2020-01-01 04:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 04:00:00] ∈ [0, 60] + [2020-01-01 05:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 05:00:00] ∈ [0, 60] + [2020-01-01 06:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00] ∈ [0, 60] + [2020-01-01 07:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00] ∈ [0, 60] + [2020-01-01 08:00:00]: CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00] ∈ [0, 60] + "CHP_unit(P_el)|on": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: CHP_unit(P_el)|on[2020-01-01 00:00:00] ∈ {0, 1} + [2020-01-01 01:00:00]: CHP_unit(P_el)|on[2020-01-01 01:00:00] ∈ {0, 1} + [2020-01-01 02:00:00]: CHP_unit(P_el)|on[2020-01-01 02:00:00] ∈ {0, 1} + [2020-01-01 03:00:00]: CHP_unit(P_el)|on[2020-01-01 03:00:00] ∈ {0, 1} + [2020-01-01 04:00:00]: CHP_unit(P_el)|on[2020-01-01 04:00:00] ∈ {0, 1} + [2020-01-01 05:00:00]: CHP_unit(P_el)|on[2020-01-01 05:00:00] ∈ {0, 1} + [2020-01-01 06:00:00]: CHP_unit(P_el)|on[2020-01-01 06:00:00] ∈ {0, 1} + [2020-01-01 07:00:00]: CHP_unit(P_el)|on[2020-01-01 07:00:00] ∈ {0, 1} + [2020-01-01 08:00:00]: CHP_unit(P_el)|on[2020-01-01 08:00:00] ∈ {0, 1} + "CHP_unit(P_el)|on_hours_total": |- + Variable + -------- + CHP_unit(P_el)|on_hours_total ∈ [0, inf] + "CHP_unit(P_el)|total_flow_hours": |- + Variable + -------- + CHP_unit(P_el)|total_flow_hours ∈ [0, inf] + "Strom|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Strom|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Strom|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Strom|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Strom|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Strom|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Strom|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Strom|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Strom|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Strom|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Fernwärme|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Fernwärme|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Fernwärme|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Fernwärme|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Fernwärme|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Fernwärme|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Fernwärme|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Fernwärme|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Fernwärme|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_input[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_input[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_input[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_input[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_input[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_input[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_input[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_input[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_input[2020-01-01 08:00:00] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 9) + ------------------ + [2020-01-01 00:00:00]: Gas|excess_output[2020-01-01 00:00:00] ∈ [0, inf] + [2020-01-01 01:00:00]: Gas|excess_output[2020-01-01 01:00:00] ∈ [0, inf] + [2020-01-01 02:00:00]: Gas|excess_output[2020-01-01 02:00:00] ∈ [0, inf] + [2020-01-01 03:00:00]: Gas|excess_output[2020-01-01 03:00:00] ∈ [0, inf] + [2020-01-01 04:00:00]: Gas|excess_output[2020-01-01 04:00:00] ∈ [0, inf] + [2020-01-01 05:00:00]: Gas|excess_output[2020-01-01 05:00:00] ∈ [0, inf] + [2020-01-01 06:00:00]: Gas|excess_output[2020-01-01 06:00:00] ∈ [0, inf] + [2020-01-01 07:00:00]: Gas|excess_output[2020-01-01 07:00:00] ∈ [0, inf] + [2020-01-01 08:00:00]: Gas|excess_output[2020-01-01 08:00:00] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + ---------------------------- + +1 costs(periodic) - 1 Speicher->costs(periodic) = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + ---------------------------- + +1 costs(temporal) - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 9]: + ---------------------------------------------------- + [2020-01-01 00:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 03:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 04:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 05:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] = -0.0 + costs: |- + Constraint `costs` + ------------------ + +1 costs - 1 costs(temporal) - 1 costs(periodic) = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + -------------------------- + +1 CO2(periodic) = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + -------------------------- + +1 CO2(temporal) - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 9]: + -------------------------------------------------- + [2020-01-01 00:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 02:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 03:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 04:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 05:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] = -0.0 + CO2: |- + Constraint `CO2` + ---------------- + +1 CO2 - 1 CO2(temporal) - 1 CO2(periodic) = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty = -0.0 + "CO2(temporal)->costs(temporal)": |- + Constraint `CO2(temporal)->costs(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 03:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 04:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 05:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|on_hours_total": |- + Constraint `Speicher(Q_th_load)|on_hours_total` + ----------------------------------------------- + +1 Speicher(Q_th_load)|on_hours_total - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_load)|flow_rate|ub": |- + Constraint `Speicher(Q_th_load)|flow_rate|ub` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_load)|flow_rate|lb": |- + Constraint `Speicher(Q_th_load)|flow_rate|lb` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_load)|total_flow_hours": |- + Constraint `Speicher(Q_th_load)|total_flow_hours` + ------------------------------------------------- + +1 Speicher(Q_th_load)|total_flow_hours - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|on_hours_total": |- + Constraint `Speicher(Q_th_unload)|on_hours_total` + ------------------------------------------------- + +1 Speicher(Q_th_unload)|on_hours_total - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] = -0.0 + "Speicher(Q_th_unload)|flow_rate|ub": |- + Constraint `Speicher(Q_th_unload)|flow_rate|ub` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ -0.0 + "Speicher(Q_th_unload)|flow_rate|lb": |- + Constraint `Speicher(Q_th_unload)|flow_rate|lb` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≥ -0.0 + "Speicher(Q_th_unload)|total_flow_hours": |- + Constraint `Speicher(Q_th_unload)|total_flow_hours` + --------------------------------------------------- + +1 Speicher(Q_th_unload)|total_flow_hours - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|prevent_simultaneous_use": |- + Constraint `Speicher|prevent_simultaneous_use` + [time: 9]: + --------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00] ≤ 1.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00] ≤ 1.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 02:00:00] ≤ 1.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 03:00:00] ≤ 1.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 04:00:00] ≤ 1.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 05:00:00] ≤ 1.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00] ≤ 1.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00] ≤ 1.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00] ≤ 1.0 + "Speicher|netto_discharge": |- + Constraint `Speicher|netto_discharge` + [time: 9]: + ------------------------------------------------ + [2020-01-01 00:00:00]: +1 Speicher|netto_discharge[2020-01-01 00:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher|netto_discharge[2020-01-01 01:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|netto_discharge[2020-01-01 02:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|netto_discharge[2020-01-01 03:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|netto_discharge[2020-01-01 04:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|netto_discharge[2020-01-01 05:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|netto_discharge[2020-01-01 06:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|netto_discharge[2020-01-01 07:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|netto_discharge[2020-01-01 08:00:00] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher|charge_state": |- + Constraint `Speicher|charge_state` + [time: 9]: + --------------------------------------------- + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 0.92 Speicher|charge_state[2020-01-01 00:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 0.92 Speicher|charge_state[2020-01-01 01:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 0.92 Speicher|charge_state[2020-01-01 02:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 0.92 Speicher|charge_state[2020-01-01 03:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 03:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 0.92 Speicher|charge_state[2020-01-01 04:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 04:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 0.92 Speicher|charge_state[2020-01-01 05:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 05:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 0.92 Speicher|charge_state[2020-01-01 06:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 0.92 Speicher|charge_state[2020-01-01 07:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 0.92 Speicher|charge_state[2020-01-01 08:00:00] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Speicher->costs(periodic)": |- + Constraint `Speicher->costs(periodic)` + -------------------------------------- + +1 Speicher->costs(periodic) = 20.0 + "Speicher|charge_state|ub": |- + Constraint `Speicher|charge_state|ub` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] - 0.7 Speicher|size ≤ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] - 0.8 Speicher|size ≤ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] - 0.8 Speicher|size ≤ -0.0 + "Speicher|charge_state|lb": |- + Constraint `Speicher|charge_state|lb` + [time: 10]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher|charge_state[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Speicher|charge_state[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Speicher|charge_state[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Speicher|charge_state[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Speicher|charge_state[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Speicher|charge_state[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Speicher|charge_state[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Speicher|charge_state[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Speicher|charge_state[2020-01-01 08:00:00] ≥ -0.0 + [2020-01-01 09:00:00]: +1 Speicher|charge_state[2020-01-01 09:00:00] ≥ -0.0 + "Speicher|initial_charge_state": |- + Constraint `Speicher|initial_charge_state` + ------------------------------------------ + +1 Speicher|charge_state[2020-01-01 00:00:00] = -0.0 + "Boiler(Q_fu)|total_flow_hours": |- + Constraint `Boiler(Q_fu)|total_flow_hours` + ------------------------------------------ + +1 Boiler(Q_fu)|total_flow_hours - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Boiler(Q_th)|on_hours_total": |- + Constraint `Boiler(Q_th)|on_hours_total` + ---------------------------------------- + +1 Boiler(Q_th)|on_hours_total - 1 Boiler(Q_th)|on[2020-01-01 00:00:00] - 1 Boiler(Q_th)|on[2020-01-01 01:00:00]... -1 Boiler(Q_th)|on[2020-01-01 06:00:00] - 1 Boiler(Q_th)|on[2020-01-01 07:00:00] - 1 Boiler(Q_th)|on[2020-01-01 08:00:00] = -0.0 + "Boiler(Q_th)|flow_rate|ub": |- + Constraint `Boiler(Q_th)|flow_rate|ub` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] - 50 Boiler(Q_th)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] - 50 Boiler(Q_th)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] - 50 Boiler(Q_th)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] - 50 Boiler(Q_th)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] - 50 Boiler(Q_th)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] - 50 Boiler(Q_th)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] - 50 Boiler(Q_th)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] - 50 Boiler(Q_th)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] - 50 Boiler(Q_th)|on[2020-01-01 08:00:00] ≤ -0.0 + "Boiler(Q_th)|flow_rate|lb": |- + Constraint `Boiler(Q_th)|flow_rate|lb` + [time: 9]: + ------------------------------------------------- + [2020-01-01 00:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] - 5 Boiler(Q_th)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] - 5 Boiler(Q_th)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] - 5 Boiler(Q_th)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] - 5 Boiler(Q_th)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] - 5 Boiler(Q_th)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] - 5 Boiler(Q_th)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] - 5 Boiler(Q_th)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] - 5 Boiler(Q_th)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] - 5 Boiler(Q_th)|on[2020-01-01 08:00:00] ≥ -0.0 + "Boiler(Q_th)|total_flow_hours": |- + Constraint `Boiler(Q_th)|total_flow_hours` + ------------------------------------------ + +1 Boiler(Q_th)|total_flow_hours - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Boiler|conversion_0": |- + Constraint `Boiler|conversion_0` + [time: 9]: + ------------------------------------------- + [2020-01-01 00:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Constraint `Wärmelast(Q_th_Last)|total_flow_hours` + -------------------------------------------------- + +1 Wärmelast(Q_th_Last)|total_flow_hours - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + --------------------------------------------- + +1 Gastarif(Q_Gas)|total_flow_hours - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 9]: + -------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 03:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 04:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 05:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 9]: + ------------------------------------------------------ + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 03:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 04:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 05:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + ----------------------------------------------- + +1 Einspeisung(P_el)|total_flow_hours - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 9]: + ---------------------------------------------------------- + [2020-01-01 00:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 03:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 04:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 05:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP_unit(Q_fu)|total_flow_hours": |- + Constraint `CHP_unit(Q_fu)|total_flow_hours` + -------------------------------------------- + +1 CHP_unit(Q_fu)|total_flow_hours - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00]... -1 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP_unit(Q_th)|total_flow_hours": |- + Constraint `CHP_unit(Q_th)|total_flow_hours` + -------------------------------------------- + +1 CHP_unit(Q_th)|total_flow_hours - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP_unit(P_el)|on_hours_total": |- + Constraint `CHP_unit(P_el)|on_hours_total` + ------------------------------------------ + +1 CHP_unit(P_el)|on_hours_total - 1 CHP_unit(P_el)|on[2020-01-01 00:00:00] - 1 CHP_unit(P_el)|on[2020-01-01 01:00:00]... -1 CHP_unit(P_el)|on[2020-01-01 06:00:00] - 1 CHP_unit(P_el)|on[2020-01-01 07:00:00] - 1 CHP_unit(P_el)|on[2020-01-01 08:00:00] = -0.0 + "CHP_unit(P_el)|flow_rate|ub": |- + Constraint `CHP_unit(P_el)|flow_rate|ub` + [time: 9]: + --------------------------------------------------- + [2020-01-01 00:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 00:00:00] ≤ -0.0 + [2020-01-01 01:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 01:00:00] ≤ -0.0 + [2020-01-01 02:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 02:00:00] ≤ -0.0 + [2020-01-01 03:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 03:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 03:00:00] ≤ -0.0 + [2020-01-01 04:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 04:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 04:00:00] ≤ -0.0 + [2020-01-01 05:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 05:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 05:00:00] ≤ -0.0 + [2020-01-01 06:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 06:00:00] ≤ -0.0 + [2020-01-01 07:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 07:00:00] ≤ -0.0 + [2020-01-01 08:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00] - 60 CHP_unit(P_el)|on[2020-01-01 08:00:00] ≤ -0.0 + "CHP_unit(P_el)|flow_rate|lb": |- + Constraint `CHP_unit(P_el)|flow_rate|lb` + [time: 9]: + --------------------------------------------------- + [2020-01-01 00:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 00:00:00] ≥ -0.0 + [2020-01-01 01:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 01:00:00] ≥ -0.0 + [2020-01-01 02:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 02:00:00] ≥ -0.0 + [2020-01-01 03:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 03:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 03:00:00] ≥ -0.0 + [2020-01-01 04:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 04:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 04:00:00] ≥ -0.0 + [2020-01-01 05:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 05:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 05:00:00] ≥ -0.0 + [2020-01-01 06:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 06:00:00] ≥ -0.0 + [2020-01-01 07:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 07:00:00] ≥ -0.0 + [2020-01-01 08:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00] - 5 CHP_unit(P_el)|on[2020-01-01 08:00:00] ≥ -0.0 + "CHP_unit(P_el)|total_flow_hours": |- + Constraint `CHP_unit(P_el)|total_flow_hours` + -------------------------------------------- + +1 CHP_unit(P_el)|total_flow_hours - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00]... -1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP_unit|conversion_0": |- + Constraint `CHP_unit|conversion_0` + [time: 9]: + --------------------------------------------- + [2020-01-01 00:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00] = -0.0 + "CHP_unit|conversion_1": |- + Constraint `CHP_unit|conversion_1` + [time: 9]: + --------------------------------------------- + [2020-01-01 00:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00] = -0.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 9]: + ------------------------------------- + [2020-01-01 00:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00] + 1 Strom|excess_input[2020-01-01 00:00:00] - 1 Strom|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00] + 1 Strom|excess_input[2020-01-01 01:00:00] - 1 Strom|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00] + 1 Strom|excess_input[2020-01-01 02:00:00] - 1 Strom|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 03:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 03:00:00] + 1 Strom|excess_input[2020-01-01 03:00:00] - 1 Strom|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 04:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 04:00:00] + 1 Strom|excess_input[2020-01-01 04:00:00] - 1 Strom|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 05:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 05:00:00] + 1 Strom|excess_input[2020-01-01 05:00:00] - 1 Strom|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00] + 1 Strom|excess_input[2020-01-01 06:00:00] - 1 Strom|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00] + 1 Strom|excess_input[2020-01-01 07:00:00] - 1 Strom|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00] + 1 Strom|excess_input[2020-01-01 08:00:00] - 1 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 1e+05 Strom|excess_input[2020-01-01 00:00:00] - 1e+05 Strom|excess_input[2020-01-01 01:00:00]... -1e+05 Strom|excess_output[2020-01-01 06:00:00] - 1e+05 Strom|excess_output[2020-01-01 07:00:00] - 1e+05 Strom|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 9]: + ----------------------------------------- + [2020-01-01 00:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00] + 1 Fernwärme|excess_input[2020-01-01 00:00:00] - 1 Fernwärme|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00] + 1 Fernwärme|excess_input[2020-01-01 01:00:00] - 1 Fernwärme|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 02:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00] + 1 Fernwärme|excess_input[2020-01-01 02:00:00] - 1 Fernwärme|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 03:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 03:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 03:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 03:00:00] + 1 Fernwärme|excess_input[2020-01-01 03:00:00] - 1 Fernwärme|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 04:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 04:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 04:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 04:00:00] + 1 Fernwärme|excess_input[2020-01-01 04:00:00] - 1 Fernwärme|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 05:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 05:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 05:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 05:00:00] + 1 Fernwärme|excess_input[2020-01-01 05:00:00] - 1 Fernwärme|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00] + 1 Fernwärme|excess_input[2020-01-01 06:00:00] - 1 Fernwärme|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00] + 1 Fernwärme|excess_input[2020-01-01 07:00:00] - 1 Fernwärme|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00] + 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00] + 1 Fernwärme|excess_input[2020-01-01 08:00:00] - 1 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00] - 1e+05 Fernwärme|excess_input[2020-01-01 01:00:00]... -1e+05 Fernwärme|excess_output[2020-01-01 06:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 07:00:00] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 9]: + ----------------------------------- + [2020-01-01 00:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00] + 1 Gas|excess_input[2020-01-01 00:00:00] - 1 Gas|excess_output[2020-01-01 00:00:00] = -0.0 + [2020-01-01 01:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00] + 1 Gas|excess_input[2020-01-01 01:00:00] - 1 Gas|excess_output[2020-01-01 01:00:00] = -0.0 + [2020-01-01 02:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00] + 1 Gas|excess_input[2020-01-01 02:00:00] - 1 Gas|excess_output[2020-01-01 02:00:00] = -0.0 + [2020-01-01 03:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 03:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 03:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 03:00:00] + 1 Gas|excess_input[2020-01-01 03:00:00] - 1 Gas|excess_output[2020-01-01 03:00:00] = -0.0 + [2020-01-01 04:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 04:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 04:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 04:00:00] + 1 Gas|excess_input[2020-01-01 04:00:00] - 1 Gas|excess_output[2020-01-01 04:00:00] = -0.0 + [2020-01-01 05:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 05:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 05:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 05:00:00] + 1 Gas|excess_input[2020-01-01 05:00:00] - 1 Gas|excess_output[2020-01-01 05:00:00] = -0.0 + [2020-01-01 06:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00] + 1 Gas|excess_input[2020-01-01 06:00:00] - 1 Gas|excess_output[2020-01-01 06:00:00] = -0.0 + [2020-01-01 07:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00] + 1 Gas|excess_input[2020-01-01 07:00:00] - 1 Gas|excess_output[2020-01-01 07:00:00] = -0.0 + [2020-01-01 08:00:00]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00] + 1 Gas|excess_input[2020-01-01 08:00:00] - 1 Gas|excess_output[2020-01-01 08:00:00] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00] - 1e+05 Gas|excess_input[2020-01-01 01:00:00]... -1e+05 Gas|excess_output[2020-01-01 06:00:00] - 1e+05 Gas|excess_output[2020-01-01 07:00:00] - 1e+05 Gas|excess_output[2020-01-01 08:00:00] = -0.0 +binaries: + - "Speicher(Q_th_load)|on" + - "Speicher(Q_th_unload)|on" + - "Boiler(Q_th)|on" + - "CHP_unit(P_el)|on" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - Penalty + - "CO2(temporal)->costs(temporal)" + - "Speicher(Q_th_load)|flow_rate" + - "Speicher(Q_th_load)|on_hours_total" + - "Speicher(Q_th_load)|total_flow_hours" + - "Speicher(Q_th_unload)|flow_rate" + - "Speicher(Q_th_unload)|on_hours_total" + - "Speicher(Q_th_unload)|total_flow_hours" + - "Speicher|charge_state" + - "Speicher|netto_discharge" + - "Speicher|size" + - "Speicher->costs(periodic)" + - "Boiler(Q_fu)|flow_rate" + - "Boiler(Q_fu)|total_flow_hours" + - "Boiler(Q_th)|flow_rate" + - "Boiler(Q_th)|on_hours_total" + - "Boiler(Q_th)|total_flow_hours" + - "Wärmelast(Q_th_Last)|flow_rate" + - "Wärmelast(Q_th_Last)|total_flow_hours" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "CHP_unit(Q_fu)|flow_rate" + - "CHP_unit(Q_fu)|total_flow_hours" + - "CHP_unit(Q_th)|flow_rate" + - "CHP_unit(Q_th)|total_flow_hours" + - "CHP_unit(P_el)|flow_rate" + - "CHP_unit(P_el)|on_hours_total" + - "CHP_unit(P_el)|total_flow_hours" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/io_simple_flow_system--solution.nc4 b/tests/ressources/v4-api/io_simple_flow_system--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..1c189d522f0c23c9fdc172289caa478ac20296ac GIT binary patch literal 102763 zcmeHQ31AdO)_$E#LV$q;5C~_6a0rAWkbnW@42ggt1Oh0mG7QNi3=T8dnF$~UNYHq# zvg!(~iYSWU{VT}AzpJi@tj7Yn?t&n~qKK$?z#`X*%m1pYU(a;+GzrT{{v=fzYO3nh z^}Scsuc}{F-#vO%c9TYJ8%4#%0lD*vyZHf0j!IP$8m3%vcKqm36Qi08NRCRDBclf? zX+QPjKc1S#{r42VQ5499BqXr-g`IiowcG>i{!aKS8e$<1EC7x`z~_e+81)v$N1=af za;A4qiPz)w1pLW^ZMP4M8sQYy2E zT5o`zb<|rLFp_E7BjdrEZe*dp6UjF%#3D0C=h;g=u7Fk~)L5j@3I(MY+80vR1q34` zySClh>?|!DjB55gyVI?cEL|FxEnQ?a$_&FCy?jxj1_=w7(2wCx3DrlY8ZFgJs9K2* z97RTT$+lC~hA+}W zp~f0;pcIr^{HYsm`owBsP_0Zs1oV=m&#r|d*nb@z?|nWBLcuKk!%vMh^qx}63T8Qc z#ZEh7$De*`g2x#Mc#Ac%0r+zrEBis~#%R1;97w zSSTx%=ek;;CXGMV)if7AAzi5Dgwj;WZe0aoMM9aIsiIJts=?+wHHVs)Ml4YWOW1Z9 zsk9Ji%c{Ce{4Xrct+NG4eV!Kj8Du(Xxg|8JMG@TrJf-IQwBia)|~u zXktV9q-O-DGhxMrTBWHVJTD9yy;kNlC4@9F2)nj^hPt6hWg^ciDsmPm+eMk<`)e_0 z5k|y$B&KyQar#`|LRSG_kzqu@iTh7JhuauYhP3v8YmU<&aF(z_b&}D0C@V0SKiuM|}>c$z5GQgom%RjV`(1g}|XqZGE73?w98U(?BnFb;%R8xWh)iAXf zM8Q~6IP~R`80W(DrS^7I)@HJmEi~FOMRkKsMQjUIWq;`WXdD!wsoKG+NvW3FS9K1y zuxA=88$_%vPER2V@r;~B%06&NG!tvJXts+IzI)34iuMs0n$M(rOb7c#cX;(W;APpV zRgn&2tAMT5r7i@zZZg)uu1iA}X@S?KYoXVrU4|`C{r;H30$oGYhioLbB2`9EWg&7e zKMxHYPzjmfQy|>P)}@*AK)>~ADA%})9d07k))zjH+Fk7kr>xcPtYMr}34AoMa!dq{ zZE0P2#Z|4zOj}=rIt4(BfIiXCe;t9g_xi+Y^}Sk|)SeS{hyY-eq0=fE>oMsbvPAPuSZ%Mv z5g2+NhDh7{a0KCYPx(sOfKB*@;uEvV_nYA=4o)R=!tL!{ax+z)8Aqrhw$vyC z`_u#@`)G$w^N=KZ&S4^{f`wtXO~RI>s4d~ss%9irbkVG&j2C96kt!TJiRzM?tFn}! z2pNV(E*Frk0gg6x5GFI0n(w-3*lJE@V67>sc8r>n8F0A?>(DRhFEYCdmk}Ff1ZWF1 zj00Wr!i5XbwgVmRM&s{wGp0Pw4M;$eu3+&|k|Z@^KhTjMZDl4S322YPO;UzKOj8yU z-IIlxRS3FrZcy^JVo;LBW1(exW=8_i$v{Rddfz&Nkw(K6V8uVM=Q;xgg+=L^Uazmv z<-s>(ez|H^3V=;+Al5BA@>#%|0@xJ@;7c%rz`JcajyuiF)+qsqb5U=%JZ1=G84{v9vpB9f^P{B?m9B91g32_>6awogIVUtmmNBMf zyWH+64tJ?DY~4(#h*#vZ{HzTyl>fSvf4#-&OBv?YEG`30IlA`T%sihLH-!Q&6e4ED zl#G82CdGq+g$Y>3s&mFxDV_EN3c933Xv|%e@?U zO~nhJal-WBN2g!Wv+MEP;gpeZV9jBU@sv3(=g2P}v>N}=TkmX=IA_PKZX{OJWVW;|0^F5R4QG-2hk zhQ%Fj@7H#7yEk8bpyJWR<*^CpO3Eu1z~{vc$5IZZ1eibl>Z^bA*{DA@Oh{e%@O$?^ zRAjZ-cDplDEIa#GYu z>YjbKO+5*H&qVK5x-tB%L7m6mdfNbA;<1AAiVh{q+ppZ!sQC3eHbgnBjoT#tb<1ig zCmL3@v?AL8yj-NMLwb68 zx$EjXUjAxU3)`8`-aH7>Ntm&-fjn2h@CA(Oh8?LDQq+`wiEm9kT(Z2+%BSNBI&A(Y z6rH)HtF!1&uqD1h;xi3k^Oa3A;^)Pk@;!JDW=d;SIP0;PDC=LASiMC{;I54gc79X2 zVdq;@7bdhyd+PQjpO44dAnMfcym&Z%b<#4{=IV(aQpO=?@+MAgwRX{>MX`!dt^Iq0 zos*es>BH*xHJjmf-`K=r^?fvad0ay3t8c*i-IBERXz$_6uTDs{42+r@Us3M3GwJ@x zF&69jMU5LbUMww1`ss91M#+p}2{=wxSUTS<_Z_02zsuPnqXf1eJ27_bSRax#O~qDE zd&Rm{mcU2u;2;GFU*6EDQKSAuIN=p*8Yi5~2+bPL5U?ecl~*L4V#Pncg*`o(OCBEV z7Y>G~Gg9%cXlOi7n$NO?hB-ZeK3*TbSUTN&LD_{b5D*Ax5QvnHwx^csXvLlH{ee_)>FLQm7&9|&j**@InccCGLt$%9&)ZVH6@PAus z>R|bQE85z}VE%?&?<{b*adGDG$tovPJ6RDWKCjzZ5^xpRi+#>wFPg=B0J`kzdZQ{J z=IgJjl=>7>3YkLPxD^8_DvH_pOY$;+`4Tn|*Ke#f5FHhDTrv1(Yao`H7Cq7C8vh76 z>!mK!I9sn*4kxT(Wh$=u{+=na5|2v@wvfB@rNtxpv-_~ZGtVY}8rhPqIgF{%5Dy7# z`4e1P=8Vao1Z}WRw(4w+e+=Ak%O57O$FIVF(6Qg|B)Ol~b2Y3~48? z+d*9tsx-8YRs0MkUsWEC3>t%S3jl2B550xwi-IRMCihfj6Nx$bf49J#+l`k>a!TS> zTNaqHJ4zO0j~+7;=u{2s&Imj2)ZQiB-}PtiKlL;B_q+oi2mJT-=b^txfBHkD;9OM8 z;Y>T8Csnb%Aw4L8he_SY#fN&y2sY8!WPF;&VV!#D_UuT(dPgmXwcn9%AEu`wz;b1F zxq$;kkIq;d3rm&;O0*2CYTuDIfJevd8~45n>*ahf6;I#|sG$c_r#xQ$8U-EZt>1dD zKeCSx{$R2moqGg}zczDx4toO7d@ldSAkCG(PG*V0$yy&z8%O$hdCJCo`gqz{(#I>0 z7Xv*Bik_ar1>_;x1o?M>p9XviZ*P=xRW z0s;YnfIvVXAP^7;2m}NI0s(=5K;VK1Oq!UL#rEg*c2U_Txl)x~DoWO`t0`Xi0s(=5 zKtLcM5D*B|9Rwo#Dk8FPve^seC;ClDWNlP!4H_ucj`T_=vQ@Iz1W8le9jbbth}-T* z*{hFvaeeQ8=0AP^7;2n6ab0;)00C0fF5R`dvZJ73!@ z;eP76{a+&|jUI*Oq^RsQ#(k^8?lISKn-vMj_Hd77RU4TqmQlsaRExjo(h;Oudj4=q zc0QH`WZp}*DddwpSs)MQqkSS7G36HW6goRbexJ(s+m4)+lMOLH9+ILV18q^d!Kiol z$HLS2GYMvQxUmh)MT;4<5KjD`PLPG%>;ap8_^LA;LXPx=rSaXnKqXe6277it*aZe- z&)P!KtL?9Z?~%4Y{NaiJy%ILd1Yb-z+5=i*{|10($HEk-z@Po$ov24s;eMp;15Kyj zlMXGhwn0$x!=Zt28XMgk9?0350V}b#Zm{Z1{77K-Agy7?zfO&XH!xc&-15MxJa`;q z6XDAzMofSmSV9kIlX6WyOvQ?O!K;m%O@RYg+f~qPt^Ed=gpKS6qfalG1})_hI-gFM z4mPA61i#&N&4-yT*ta306iP6*FSI>B_5l8%y}6jW&-E8HdPC+LDLXcatT$_0sRofMXl zi4#;JaVn?=H5)P51I^bJ$7PJ{m|(2Tc`{#8#Ez_%U<0P602wPOVnQ}biZqgG667Kf z-DMEus`$ttLnJtW&9KQ<%yQ~#B<_VmsW?R}Daa-7Y}@y5qL>=;vqz88+Ud?6bl)E( z3$fh7j@Xi|nq`k;bjA@OOiJIbKBTkE)T5?Hd3c*V%%WFIV9 zNY26=x>jYeDOpGo+iI@x(lp|pfz&IK(`Y1KF_mKJT|$FAr^n$A+%m#JDI~caHH8~) z^%^&mGLUR{po9J)cV`4o)W7Z~dJ_It;pn}dA@hik#Ip$z%J={7U(eG4BK4$xvz9-p z*M8alD~`pI3!Uwc{MnNG3OOrizlT(uU;JzdJCq)olOvJcqGD6ep(|f(rr8xcenN{< zWUFKki}$7Vf2;1Un1oiNN0_CrWCJ+JCWlq0ti$d!+a*(u?;x4hy{n8FilzC4rY4FP zzCb`AAP^7;2m}NIbq9eO(KnlTIemn-HAx&pB4J24iOO)2nYlO0s;YnK;1{6 zM)c3elq*w&{;BAn>;=cJZE5#u^iO9){;Gvgimd+0UVnW#6F#`;OIpre%bTS?eL>-! z_us8t>+-?GvT`$hRDGeQ8)BWV)JBN?P%R!JBoGh?2m}NI0)e`SK%{ID1}J(2y+@^2 z>c&%}q_?nl;p`U7OTR@i5*M`3J@@*4tz8aUDXkte;X%nlR!-{Y9YXCywBNhfQNd+I zvXCuQ7qS5f&7}Vh!`|B|8`(@HX|vIXE!2->9Im7sWLA|JK8M#+c|Vbo$(626RJgV) z10JPpWSZ42d=2`}j95t-N#|@y88siN9`_j0(S1{D7s_-Wx^D6ek+$YPpbZsC_C2au z)Ylt`mh8Ym zv-5^^@;X%>zR}Xbt{kL1MQ*LHF)L?w(`zcb>2+dOcGkqK+{`SyeADYdoW|IsQs@Xc z{LVn|%GW|PGW7UeUJt~vbpB4nCf@|hYGsc6OMOp5mT|mP0GhlgyfAl6g4wzi&7i}& zEU|74i;IX92nYlO0s;YnKwUZhz$ z=E(o0^;23w^IGu>7M0)LYo@Q#0+ndVFA@4GK_PsBfIvVXAP^7;)EfjMwYPkyqDR!$ z_bkP;6VF8oi{I9AEY3IcpQw>_%zk!l06MXbQPweRG%bi*G5><=m`?%kKZxW$JB?xT zFZViz-oVMSfdAalylLhXLVR z{g_RaO!eq7EX|)k_JP^D$IPDolvwu=w89q%2m}NI0s(B2m}NI0s(=5 zK%lN55Gf7oky@@{9Zy^?UGyiIMo!%ER0lJStF?)UOcolK2{IyDARrJB2nYlO0(BRG zNNHSwTCQ<5f8nFeHL}~<`4cW&Vz*V->OL6SoLlzy`iC* zir$b=cv|zXe>7Vg&|4RxCBICp4G0S13j_oL0s(=5K%m|rP$T+q=3$Pn(1#U$n0@Hr z#HZ;Gb8e(c(q*%*zRts0aoMe_*+(d($b5tXV8uVvPXOrkVKVNa!TilvYd4zd$GwS2 z=RYa*V;v$QC=d_`2m}NI0)e`ZfVx9@*)+0!1sv7Ou95NcZp#&wRCnHO*~^1gjhr+l z7h=iK9J0_vwg-&3i8r^+;$!?r$JRSy;_AL&)WaT*oRpIdv2=a_JjnlKpu+-iKL+~% zod$q6FqjJJw)6KG>sOTl>e2nhrP0s;YnfIy%wBA~8T zQQHRi?@ur0_TcECA}Tw&bEUT2LV4)K?!-&Cr_sMZ&}(R)9a7*?yh_`qm$aw3aka6a z^TG9!g%&Rzb*GDa56v9kzq@)+m`ao^w7hATonQ83QUVV;+)Mq6@XzY4~L|7mo5D*9m1Ox(g4*{;RFS#rhKXEM>e$i1;>pF5R zhAA6N#V7Ut7r#<5a@(rb9Jan;--Jp4d^I;}%($%F{4wKm?KxxeCjq-WDFOdlD;;F_ zRFdKr>K|7&${8>%nyeo`?DVS^GYw9C?}4T-b0s(=5KtLcM5U3Xj)QASR z?Fym6q4_ufX>iT)_n1~E=S6A<{Li&~2mDVT9$azxcfe^!ng%}Y8&mkY!40~Y>DQx) zNas%x`n3)b5flgr1Ox&C0f9i>M<7xf-B-0-qdUD~KU%|9bt7|CcZ6K5O+!^09lh=+ zIedTFXLHOnyiP=<^H&KCPlt#I3IqfK0s(=5K%nj;P$N62SN0S;sG1#AcEGi3{KnNa z!j1Qa32tb((F(ay`SY3A^gF0}eVZ&|X_grET)&iy)xX~n`ZvKRe1U*KKp-Fx5D3&8 z1ZqU%+cZFEd>W0fCCb~gUlx86sr~Mb%8{emdWP@DN4~*BaR1-;yY>1v9U`O2HlW){WAgg#F2311)}5D*9m1Ox*027#K<$8Qw+xJDnx3nbv-rtdAj*d18C2B^O> zVBhSIdYfs4@&Uata^6^XeSo+nAPh(%N+2K*5C{ka1Ojyo0qw0)xTCkfUDQL8g)X1% zV7RBqKFeF`^V{XCmJX+J%}%n=?XG#`R zo|4i)%y=TAYi(O-h`gl%q&hN$sOYxarZQFUp?OY^!yUNgcX>oWmzuWDcKST?wyyEb zacU|&Qb?3(3VRccl)ToB(}rB(Mru#ETP@!c{>|fuE%GhoF^f+x zoe%u#=Mlf+@U@E>$I)!R_23>fl@_i}A|T&F9`m)Y<09CE9kfA<3164PMr3^tSd(^S ziE=Obi(fr?8{|dYk-giP=(N^V*o-0>2tO@#nJT zz%SAM=)-L*fL{sjUHQPH!0+%r{rN4cU@Ts(coj5xX5$mU@BQw6VCd7(1q*8hFITKt z3;d$(1pJQiin4Pr1HZ|;^=r3ohSk`zUXbzZ(l>!$6}}f9+5-G)^Vq|k{sOt! zw`BOP_lXaHUk`rd$3K3ISy=3X!=(p+Uq`;@rF*{se#!X@KkqpT{Lb>PZ`<+{9Khz- zpm_0L&cg<5ZwlNOw}GAjwOBH0WOt-;B7%vIExg$awR(SJPHP0=#FibuiPV!Rx0XMd zcBLJ}FCogq zysDP(5TCuJ!KabJVr?zQV%y$#e&Ev)9idVur=+b>7pw0t68gRhpZFmV5C{ka1Oftq z`hvjt%+c4yu}^$Lv~;j5?{%Kid29P9=p=s$K9zk5eqvU3*2Jvb%q;#T_`1QDl|@lPxt}> Pfq+0jARrK^HwgS6dnbe~ literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_simple_flow_system--summary.yaml b/tests/ressources/v4-api/io_simple_flow_system--summary.yaml new file mode 100644 index 000000000..51aa40d7a --- /dev/null +++ b/tests/ressources/v4-api/io_simple_flow_system--summary.yaml @@ -0,0 +1,51 @@ +Name: io_simple_flow_system +Number of timesteps: 9 +Calculation Type: FullCalculation +Constraints: 253 +Variables: 279 +Main Results: + Objective: 81.88 + Penalty: 0.0 + Effects: + CO2 [kg]: + temporal: 255.09 + periodic: -0.0 + total: 255.09 + costs [€]: + temporal: 61.88 + periodic: 20.0 + total: 81.88 + Invest-Decisions: + Invested: + Speicher: 30.0 + Not invested: {} + Buses with excess: [] +Durations: + modeling: 0.69 + solving: 0.78 + saving: 0.0 +Config: + config_name: flixopt + logging: + level: INFO + file: null + console: false + max_file_size: 10485760 + backup_count: 5 + verbose_tracebacks: false + modeling: + big: 10000000 + epsilon: 1.0e-05 + big_binary_bound: 100000 + solving: + mip_gap: 0.01 + time_limit_seconds: 300 + log_to_console: false + log_main_results: false + plotting: + default_show: false + default_engine: plotly + default_dpi: 300 + default_facet_cols: 3 + default_sequential_colorscale: turbo + default_qualitative_colorscale: plotly diff --git a/tests/ressources/v4-api/io_simple_flow_system_scenarios--flow_system.nc4 b/tests/ressources/v4-api/io_simple_flow_system_scenarios--flow_system.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..af8160c46dc9a9614d25260289ba070b62089a1e GIT binary patch literal 184035 zcmeHQ3t&{m)t=2R5J`9`AaBC^4Iv2xP(TO?L?9qR5fztZvr85>yJ2_3GYAwbVzJiZ z+h2=Tt&jQ^UucW9YO%J~{z}!-3Tj)m_=B`sEVcaS+_~rO-r2p`tgZiDM)tL72 z`n}Qx^1?S+#v5kJxOJAW;Z^(g`1ia)_*V%1rpSG?6Hs>1Qe+E<5Uxlh6c%Ry>jvQC z!`Jn7I^BL(IP7%xosieJ%pY7;xh5R()bt&m*S9)Y7YaLrUMC1doDpA*2kz8@+~|?{ zvA1hOo|V2}UDyx_8!}oD8E%gPK#-~KEOv%o3Myj3upsNbGOX{@BmU%*fRhQJ|=X;7mHQH0K zO85|ffu1wiNI9flyAA0>9=|K%Tj_Du_yWF~x|#-(#EF`cyH+=@d*6hsK_-e3^j-f=v8Z6Zi$2;H~3wM_+0)5i# ztyVri-ny7C&vaK9shH1=>3K=MGbULBSNaw~zEPg+o{8!dCxagXf&+iC8da-Ebxf@q z{GJ+xj#MZ8o%iN%9f=?g43bp<5>WZ?_c z)@eV87bovVpvBC>=RmT?Xffu8NnHlhN1H%?K@6~JLqRXRM|zL3PHvG5ie+R)9a6qf z)>*|RFlA!u!Hvm8Pq2OwWRvixC0-}Rc7#_l0@|=QK?}mKncJ*{8p4n;SQlx0^XV_X z-gNOl1C%ke6kJAIDGnnEswy5QW(}ov(&+0#A7A`UHr-vLQePkpW<lLmrd& zU=&Z23Z20+CH*8q#bS_YJN4bn7roSa(y@jv#f7W5Wm6-TuFH#uN&xq0*Ul{GPL^Yye zN2N-{rg0DKwK0Y(RwVA$`t|E!ycPo3w{X4n@AG~=y=2ZTIm(NCAxC`WrS?}2BS#tb z=%scAL%*ibLZ`Gm;krbpwa3CW@u%wiR(eeQDLPF<+7y=#ls8UO?h`*p;g1?D8Mz9d z1^Jmo(?;gh^RD`DV9@_O?de3BokA9s!J|thJ@JW8U1;1S3Q$FV^e9C8*!YBFJ z3ZLZXD14HitMEyFp28>jN`+7I^DX!nD16FCpX)Q)h4NWwA%Bs=C;3YhKIOki;gh^m z;gkGgg-`NJ6h6tj6+X#VS@69IpYmC%@F^dk!YBD<3ZLYcTkvZXKIIco_>@nr!YBC^ z3ZLXd7W|09r+n%ZKIOAY;gkGog-`Np6+X$YQ}`smUg4AcWeT67=e=?0qGPbY_^VAmn@sjX4fla#2wLS z?`pFNw1M#-kPxy(i_UmyABsE-rMeM|_p>#_*lt^>8(jICgb@%cu|#{Y1~3;P^0Xr312IsH*V1e4e{}nBJF*~1 z?t$G|8ucpGQHY*<#np34X3V7WWm%R_W^vXKEeApNhM<8DAzplLa~@`u3pS-K>LFJ$ zYf5FM<{^i8VF9L<&n~T~ET2>1tSp%_t5oFnL%tod(p>5)rpzwYN3>{*9Q#nDC1hfwtpAlo zT2euF7~wX|61Oz8E4FXSsEXFIr1bZ`xAtF$%_HmavEGigbh|HID6t_RJK4wQ);@{3 zWNQOG_N=UHb&D6f6vCBq8@>3J%k>cXjm)g3Bza9VVv(Kult3UYQgDbDRa_7#SM~@!;@WT%$O`7!X z#qFP6ed+S*>YK*ayt}PyVVAi!QI*{yXZ59Lbm-uMJX+L?iRNeBI%fF=YuEmJxPS3q zU%T1o^A)ZT&z3)5|K*W)9$z}@QQNwGLfkf}ehVhr4Fi&0us)Dx@2vTUkNjokx^?Ts zlM~wlm}jl)JZN0uxZU0N?e0}9#IK5XJP&Ei6@TENmrt8kySeV^O=krTw=cf;7j2&0 z-|~y6ZDPmWO9yGiI=J5!SbR-)AqGC%t1NL%8UU)WpkN79vds_0jabN>K{t&bx4S|X z=&kMRI>!~rT~$>D3B)4d&>lZ+hppugT6}u&;Kr&8FTAj*%T0N6FB+7MN8$#F#Km=3MMRFj`IXLW#{F^}xpq@mh$tWTgH5$A-WEs;siIR6OXGT(E(}aa3PyU{<_?CAB?c6Vp*~ z`Dg1r2b2XV3qdK-f>d}qbu8SZX>!w0gR+Ypux`-4Df9XL7r6X&9+3!7w8%(dqFCm7 zbVDvoMxedW4y-cBDQZs4DzBU`a3&Bf4b=7!&_p?5j-=_KOv*~@q~+I6h$_=BOou!m z{7Ob57iJ3+88oOgqV|XDejvJV)9u@)j{nDX^XHY8V!u!=Ld}%avy6?l>b52Eut6|j zO*k+Di~u9R2rvSSKxQJ)lzOVv5;y6ih4XYkn^;M8Pm<5Qi`r9agg0DUJiTm2`BXtG zx$*Y;4N~ag8)SUwD;bBYWTIWK%6RtKavV-ox`utZZt*`)WPKG!t;_#*(+{;Wf+mbQ zb$T>m7?2V_`SHt|OW5NN_USWq{)}m0tN>0q@RX{-HK$3)Y=XS2R_^@n%w5l0>96GT zCmSI8_g2Dp3;yXXApL1Dcm~6nu<{Ug$#I3W znPr?^#&W^hYQF~-;JBSjL!PBUn5zb7);jyZ-x+#%e~=PcFwkgt6d(hFN?UpwXye8@ z2)d`izshAESI9{Jo2^Y^+q3NV&6FH`ggSO??ZlA_)9EOmf|H3}Dh&!uEY)YY0K8;y zbzV1w+Ej>Exf5xKe@x21_){4W>BZJi;7-~HpgpW_o6 z8d1*$*X-1E;Y2l~QQ;hTFczF>Tu&2rpS`+iOMx16Y$?#u=(1&3{cjZQJ=aTkFNZrA za;HfYzWFFS=C*VDlds^q*WP+#Zs^&5nPwHV#O}}z%2qY_?j5oOQLA9cX9u>md28Y2 zR(1hm*-$vD*azxc#N*rzp~v?a0Y-okU<4QeMt~7G`4EtH)rB@&n(eBFtOvuc`r85t zShLwx>9u3Pz1Czw;5z^JFPq+@Y~GBy0zHhgG-nxEXTt;KHr=)(2OvX+RChh5c>q1R zWdzxgv89zph&+hf=+in`V!@Mze~nEXd1u#;tgHvxsUTK9_S&J%Uqm@B`SvUOWuf@U^o{qY*Q*{q z@T(SXJG-nBe2By=5*-1{*t9^gPQp~uT(KH#0%@zj85;eixuE;i3yNRt(!C!2`Dqe~ zVq?jHo}mp^Ud0BQN0KuYLL4|>-X)smHz-Y)mamMovOlc6n$A${4))3?G&yDj7y(9r z5nu!|7lCFSwO$pJz-Gv(HLiR_-Hg0%&=o7(YQuPm@r)E^2ITsMU6)CCE|*d2t98li zsys)kjEQh=K-W*7*H!xTeT3rh?B6{pMDP6)7Se`~A2ic5>@Qq+ncYesrYQlLCjReW zMK9*@_;`$%!w4_}i~u9R2rvSSKqes|b#~Zkvp?1<-K!+lpDVGlSS7K3lf0csUvJ`7 z65HoiubMi4R+(tgtNn9!;R9`Zyg2f&0WHKH7{(qX?(NtwN4x{vfnr1D9UaA*){7oYxoc%C*W-cLN%>RDBuR#0n6YELz-=J4TFvr{#;9pkjO3F1aA*>YFzWHB53 z>x;zgN83#WIowC*z-_-R5qm&jpcr!3e@jI+WClg=v9nxE*0`_SyKtu13Eo6w#E^A2 z&lb;W`F>o}<$Upu1D1M-zbt)yfoP*WqV|HjmxxW;BkbG$At#8}?&(}5HflLI zZ|M-!_7*A-_fC0urC0`K7$)9+y8m~@Y*>{sNGx3V)Hcxx@+}bA{f|E)8~Eh-tF=FX zqX(Qy=pOZq!dZ@f+F~BNB~dVuWNS=pDfumaPmhBvbT01 zQuab)TO--o(YDuu?8LC4lMJ$jjoB95ZK^=v0vIjeE>!*Hj-E)bfxG#zk)$5((?~iK zM(>0@*GyVW0?icTx*faa9%AVEm)gEo0KOI|hK4l8Oh&+UEIktF!^JDMTI}ovczy-{ zgbf<+F!nMVG}|HUGByDH6YN<_I!$$z&6sB1Z=w6Xe;u_Moiv;F>ZNl8Y!15Tz+JEC z*a4e^irk)3(0TSWmuGWeaWHgAv{Ve2CDAnB*IZR*bI_}pWHFjNZ_SuAbkJ+o&0H`# zsyueZl+8h_l?EmjR?maG(Jw1)bI|LWG@&fs!)quZz1T*r;!o+09zeeHdz6gc%QL8; z_0i*{X^2QzjRG0J05Z3@zePL>6o&~j7y(9r5nu!u0Y-ok$YccMC{TVwUYS;>aG3VS zXmAaeW=g`D6rXLAP@(~W>Njmy*T9I+6ikuQz8Gj*VW1eV(T6g%Jt!!3Y)rG>IO%-o zw$4+nbZ)~Y$4AG65=GZ0JBlok7*W1t1Q-EEfDvE>7=a8yKG97^? z9VzX8r-W10+E22PQuOqh`&j);RwJc`Q<2hn!mMj4h%m_rFanGKBftn`J_1duYi)Tz z0(z3`THT-)e{B)!VWn%)Fr(Ugwy>_HLc%m7zz8q`i~u8$@d!v=tC@Cn|8%Fs7uVFJ zpnsKOs+4A^X;~A+G!2;EUEO;?u`p-y6zmDtXI@lM*R-co6)B|{1N230U%Ch)Ezp7~ zqG@Rp(X?WTXqqV|I_ppC-BwyA&4QDx8egYqo3xk;8y^GvLP{L?FC)MRFanGKBftnS z0-1tDe!dWSoi(wOA7isphRcDTxAx^6i1hGH?Uw<&DJL0!Fg$RYl|3`WEE-4cV0$JG6J{_1i~u9R z2rvSS03(pe2sEju%IM!pC{vgznSv=&nkk`~5sEQ`^zNU~2Xg%6;V164(z#<)eSEkP z_9(hG&lwod@C75l2rvSS03(pG2uNM4iT6)9^aqKjs&h3kPMjv4D}7_cu=`bN`xle$ z7aNmLOJBgF&+BJ(v(nzI)^xqe+FQoHnOreOfDvE>7y(AW3V{=1=Kq!VW$}3CA8G7JG}-!#)Y zO3xvQW+J<$fjz_0=+O**$f=#M0Oo-fD2}y82EmU9 zo*xsbmgmP%Q`#K3-6n=;o+zW1!DwnncPVZuFUzoN7?rt)F5hjzi+6=;JbqU=0_WI7 zs-3goN*1R36cWaLrZ5aoEG$ozH_BEU3VPvOoXTS|kzJ7J(jaHhq=7vdv z3F2X_Stme+S&RT9zz8q`i~u9R2xKk-QnSvt*|afuTu(zg_ zQ;2g!QI04&4vIsIws^-rEb6m(bVGx_pR|gqW~%jw-6_3~%Q)z12n~5MjEC#|SI(L) zTdj#ab4xCft#gul=1v6cy7@Sj8HM;%fHfBJ5}=>IXm{JD-97RGr4$Q*-u%O? z$E<9!WIiz8XPXQV^;v_~QPlgOvsyp@vl)06a5pW+UNBjI{HTF2`TuF}re zIpaD?rLF0Nlzr4xC36bQX-Ji`IR@xY>Rjpzglj#%a9v>O;JHqZU!Dmw{ZYz%pf1=q zUQn$%DTX!&9`B2x!9=q1s`e-on*SOH+34)b2UnhJrAbo7%sE7<`xT9n{ez;|@D(G# z2rvSS03*N%Fanu~K$CjvfABr2Myun^4fq00LC{n31(J`DW4P2}xwDYAi*};DfXx-B zmCr7%s4SmT;ha@oIbY!Mmw1>CF89EZRNP5i%>`*%Oaz+MAHL=WsWK<>a%sToI8j$1 zltUN63XvspE?kfJS;z07KfK*?-8-&=$V$ojk*-0QN`}~Ht_M~ueHqZFa%DBm7Om&YLg!rb``fduG|^lmRpN_dibl%*{fTj6E+fDQFanGKBftnS0-1uq)cNHVqGdO# z&Q}iDpkM5&mvq;=@06xOuXmsL*(W5!aRwnUb^fd}(Xu<$XhaKa{~kmx0&;}tN#s>P zP8PJ9Ty%m3=Hmse5f>F2nMcBVKzNYoL*y2?TPSFew|G_~X#uzR6v(lHR%VNSaE@$| z7(i(k069bqByuB=V<2xm?9|A?M0SED8sk7*53_+R5<`jHq>;mj+zI4BVc0-_1hN2X ztcNyW4HbxyL{0{BpcqA@N4uL(8>T4Pp)L{8U8V}-~XAjiOedUy!P z34n(lJ_52(6cgD!2eZPXHMB4r$U$OJ@Y;FANhLlZMkF@x<`Id6zI526u_F?dK)<sQnBe4^yoQ|1`21k3SJ60c0$BaD{Q(y11u{~~wAlA*1U|oTP5wdZc1VGF_>TP)& z74{VHEY*_3HVnDA6@#ig?0W>9AFV$kX;>pjAi|%g4fPDFhdn zU*XS|T)L-PD8}}1m@R~(d+xZy%3?7_Jfvvc-_C5Y#9_h=Mt~7u1Q-EEfDvE>G8qA> zbvM(QihcefRorINy3>26;zH;sSRvZc;3Bx*U4Q%CsarPEX0gwdJphj z#z$slWkF=q>>!M70wy$tVcqmQVvTc?c+twz=Dv4Cp9nEFtJZ6_d`;LQP3i26@mLz&u%+J3fDRL!@<}0Pt zl04H#PHos6@}7UCT21Mi~u9R2rvQ}g@7C7n`EpwcN%I~c98=vHRx1R=JWe6aQW*zqC?(f!_%iIM-&|g z1u4<_CRE?_?iK8WY-2UQ#X$e)pOyQX`uvh)dwnHa-=KOAsble~CTkr1C}9-?UOjZg zO0&(?Wvrr$6%7|V83xvLB@Xr*5Zr(C6*atEqVddSZi@9(4WkFO!tx_%S}%G2|<<{(PMrYe!<^@qphimy`W6eHYuS%QC(VSK z|LaHY5qJV@vG~`3T@UJ~a@G%A@{m{qM{DGZXKwlJBSN0HIcNB_kBNMc9WNgG_m@wI z>$S{2Km6Xy!VcUKV!+BrU(rttEqE&YhIj`Y>iUZxT-f%1g*+S6^|t3tQK3CJG;#GG z#C_T$ijT~DN61rYS6o!~XZ@hiAFTNG$3mV)y5E!Ysn`O^W{4GU^gJTuk)?M&G4+U$ zr+L2l=Zd2OmE-Q>^u8Y*6Y?-oN3U!DE96Oy_6x;Q;++%-O^z7>Mt~7u1Q>zLML>G~H1nQe2hNq#7KzqMoYH%S)j-F?@o?HL zHUQV&*8jOhw%WIK*5R(#@R>qboOS5F(7LsnWFLg+S%)3&a2+eFtSl7|y0sDmB0^{z z(Ahwd{R)*?8yw$w7*8{?br9kZ_Apy#Sh~^*FJN_kBnK`A7q1=@veKNB?Mb#*(V+1W z7+8~*IPhOafDvE>7y(9r5nu!|4S^fWeap2REkLs0x*e|PcY61!$PJ@T3r z&1}b{cR#lXU>a*H;yh2=x+mX<2*Nk@#!}}RXsGcO!Ije(pA=(Yt<`|&&wwT?TvZ0x+!szVQk8d6h z$3;^6&{3MyK;6F>^M6(rRvQvh;?ESzisz^lfS6y-BP!d3jJ?UA?FI=J4j=7wuztIbH^T+jC4^d!XhE|a?BP%3g@iy%K4%zbR;x=&V+yH9+zda*<{r*l?<^K z)<$5((wl(p`f<7c>snlYd_g|r8(UoWJ()2rhKLNfBsgXS7y(9r5nu!u0Y)G*5tvglV`jECOmDY6GE~-ahF;a&pJs`n znl+J+*2KKhveJ2_6(yz8nivZ@I9d}`u81q_f%O$+R#f?FJb|z;7!cWbA2#oTkf&K2 zbebW>Tj^1nj1ULT*Dv(wM!%VUc#WBU>TxqYV7Hm>z28h9KWL_J`_fDwt1;7`_97iy z@&~mx)1Jv@de<;BO?zxnuCxm=(XXl|NA(~yQeB^;dXrH-DL<+w(Z@!T{VYp%`cF$*T3KZ9CM68L6-$i0&l1AKOh$ka zU<4QeMj)dQKutXN61yl&tHzzLV?^;nS|_6OZ4=EPl15IN4Qb>=_g-R_Ck>tMlZH<8 z&hMG!`&@6P-`ioPXWnn7NyDf7NW&-k^ViJsuDxcOEC7-x3xH^{0Ei|Ffapz~=t|~G z76Ea|A|U#_Ji3zdWFZijECiyvPoXO*PZk4l$zmXyEC!-awsT9GS`#M=gz&m&)ZquL zH1lM8nH4G;I?t7u-!-Nf0Y-okU<4QeMt~8>Gz2sY&2JY)X|>Qs>o8Hw7McWvG#5PtriZATJZe!jXRu-IPx~6dW@Gi~u9R z2rvSS03&cpAfQ=r+w5X&S}i!*`kG?4;ACeajh!txw&1WwP=BCxSwv6Wxc}p?Ytb!X zi|&;8<>pE<0*nA7zz8q`i~u7*2xu1F|JX%wS}nRFJ$s7TqLYA-#?BTUTXfhXs6VI{ z9qqJ1_xI)&xA?ji-b%Lc^j{;67y(9r5nu!u0Y-okI5iN^EWDrE#kjOucyx{|#cbip z-b5NZTX<~YVUM8xkj%oPy%b4)*%u$ZX=U+sO7g>X6I c(T~^yOau$_7y(9r5nu!u0Y-ok$XEpa9~PSSLI3~& literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_simple_flow_system_scenarios--model_documentation.yaml b/tests/ressources/v4-api/io_simple_flow_system_scenarios--model_documentation.yaml new file mode 100644 index 000000000..c14f18133 --- /dev/null +++ b/tests/ressources/v4-api/io_simple_flow_system_scenarios--model_documentation.yaml @@ -0,0 +1,1375 @@ +objective: |- + Objective: + ---------- + LinearExpression: +0.5 costs[A] + 0.25 costs[B] + 0.25 costs[C] + 1 Penalty + Sense: min + Value: 75.37394666666668 +termination_condition: optimal +status: ok +nvars: 829 +nvarsbin: 108 +nvarscont: 721 +ncons: 753 +variables: + costs(periodic): |- + Variable (scenario: 3) + ---------------------- + [A]: costs(periodic)[A] ∈ [-inf, inf] + [B]: costs(periodic)[B] ∈ [-inf, inf] + [C]: costs(periodic)[C] ∈ [-inf, inf] + costs(temporal): |- + Variable (scenario: 3) + ---------------------- + [A]: costs(temporal)[A] ∈ [-inf, inf] + [B]: costs(temporal)[B] ∈ [-inf, inf] + [C]: costs(temporal)[C] ∈ [-inf, inf] + "costs(temporal)|per_timestep": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: costs(temporal)|per_timestep[2020-01-01 00:00:00, A] ∈ [-inf, inf] + [2020-01-01 00:00:00, B]: costs(temporal)|per_timestep[2020-01-01 00:00:00, B] ∈ [-inf, inf] + [2020-01-01 00:00:00, C]: costs(temporal)|per_timestep[2020-01-01 00:00:00, C] ∈ [-inf, inf] + [2020-01-01 01:00:00, A]: costs(temporal)|per_timestep[2020-01-01 01:00:00, A] ∈ [-inf, inf] + [2020-01-01 01:00:00, B]: costs(temporal)|per_timestep[2020-01-01 01:00:00, B] ∈ [-inf, inf] + [2020-01-01 01:00:00, C]: costs(temporal)|per_timestep[2020-01-01 01:00:00, C] ∈ [-inf, inf] + [2020-01-01 02:00:00, A]: costs(temporal)|per_timestep[2020-01-01 02:00:00, A] ∈ [-inf, inf] + ... + [2020-01-01 06:00:00, C]: costs(temporal)|per_timestep[2020-01-01 06:00:00, C] ∈ [-inf, inf] + [2020-01-01 07:00:00, A]: costs(temporal)|per_timestep[2020-01-01 07:00:00, A] ∈ [-inf, inf] + [2020-01-01 07:00:00, B]: costs(temporal)|per_timestep[2020-01-01 07:00:00, B] ∈ [-inf, inf] + [2020-01-01 07:00:00, C]: costs(temporal)|per_timestep[2020-01-01 07:00:00, C] ∈ [-inf, inf] + [2020-01-01 08:00:00, A]: costs(temporal)|per_timestep[2020-01-01 08:00:00, A] ∈ [-inf, inf] + [2020-01-01 08:00:00, B]: costs(temporal)|per_timestep[2020-01-01 08:00:00, B] ∈ [-inf, inf] + [2020-01-01 08:00:00, C]: costs(temporal)|per_timestep[2020-01-01 08:00:00, C] ∈ [-inf, inf] + costs: |- + Variable (scenario: 3) + ---------------------- + [A]: costs[A] ∈ [-inf, inf] + [B]: costs[B] ∈ [-inf, inf] + [C]: costs[C] ∈ [-inf, inf] + CO2(periodic): |- + Variable (scenario: 3) + ---------------------- + [A]: CO2(periodic)[A] ∈ [-inf, inf] + [B]: CO2(periodic)[B] ∈ [-inf, inf] + [C]: CO2(periodic)[C] ∈ [-inf, inf] + CO2(temporal): |- + Variable (scenario: 3) + ---------------------- + [A]: CO2(temporal)[A] ∈ [-inf, inf] + [B]: CO2(temporal)[B] ∈ [-inf, inf] + [C]: CO2(temporal)[C] ∈ [-inf, inf] + "CO2(temporal)|per_timestep": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: CO2(temporal)|per_timestep[2020-01-01 00:00:00, A] ∈ [-inf, 1000] + [2020-01-01 00:00:00, B]: CO2(temporal)|per_timestep[2020-01-01 00:00:00, B] ∈ [-inf, 1000] + [2020-01-01 00:00:00, C]: CO2(temporal)|per_timestep[2020-01-01 00:00:00, C] ∈ [-inf, 1000] + [2020-01-01 01:00:00, A]: CO2(temporal)|per_timestep[2020-01-01 01:00:00, A] ∈ [-inf, 1000] + [2020-01-01 01:00:00, B]: CO2(temporal)|per_timestep[2020-01-01 01:00:00, B] ∈ [-inf, 1000] + [2020-01-01 01:00:00, C]: CO2(temporal)|per_timestep[2020-01-01 01:00:00, C] ∈ [-inf, 1000] + [2020-01-01 02:00:00, A]: CO2(temporal)|per_timestep[2020-01-01 02:00:00, A] ∈ [-inf, 1000] + ... + [2020-01-01 06:00:00, C]: CO2(temporal)|per_timestep[2020-01-01 06:00:00, C] ∈ [-inf, 1000] + [2020-01-01 07:00:00, A]: CO2(temporal)|per_timestep[2020-01-01 07:00:00, A] ∈ [-inf, 1000] + [2020-01-01 07:00:00, B]: CO2(temporal)|per_timestep[2020-01-01 07:00:00, B] ∈ [-inf, 1000] + [2020-01-01 07:00:00, C]: CO2(temporal)|per_timestep[2020-01-01 07:00:00, C] ∈ [-inf, 1000] + [2020-01-01 08:00:00, A]: CO2(temporal)|per_timestep[2020-01-01 08:00:00, A] ∈ [-inf, 1000] + [2020-01-01 08:00:00, B]: CO2(temporal)|per_timestep[2020-01-01 08:00:00, B] ∈ [-inf, 1000] + [2020-01-01 08:00:00, C]: CO2(temporal)|per_timestep[2020-01-01 08:00:00, C] ∈ [-inf, 1000] + CO2: |- + Variable (scenario: 3) + ---------------------- + [A]: CO2[A] ∈ [-inf, inf] + [B]: CO2[B] ∈ [-inf, inf] + [C]: CO2[C] ∈ [-inf, inf] + Penalty: |- + Variable + -------- + Penalty ∈ [-inf, inf] + "CO2(temporal)->costs(temporal)": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, A] ∈ [-inf, inf] + [2020-01-01 00:00:00, B]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, B] ∈ [-inf, inf] + [2020-01-01 00:00:00, C]: CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, C] ∈ [-inf, inf] + [2020-01-01 01:00:00, A]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, A] ∈ [-inf, inf] + [2020-01-01 01:00:00, B]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, B] ∈ [-inf, inf] + [2020-01-01 01:00:00, C]: CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, C] ∈ [-inf, inf] + [2020-01-01 02:00:00, A]: CO2(temporal)->costs(temporal)[2020-01-01 02:00:00, A] ∈ [-inf, inf] + ... + [2020-01-01 06:00:00, C]: CO2(temporal)->costs(temporal)[2020-01-01 06:00:00, C] ∈ [-inf, inf] + [2020-01-01 07:00:00, A]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, A] ∈ [-inf, inf] + [2020-01-01 07:00:00, B]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, B] ∈ [-inf, inf] + [2020-01-01 07:00:00, C]: CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, C] ∈ [-inf, inf] + [2020-01-01 08:00:00, A]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, A] ∈ [-inf, inf] + [2020-01-01 08:00:00, B]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, B] ∈ [-inf, inf] + [2020-01-01 08:00:00, C]: CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, C] ∈ [-inf, inf] + "Speicher(Q_th_load)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1e+04] + [2020-01-01 00:00:00, B]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1e+04] + [2020-01-01 00:00:00, C]: Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1e+04] + [2020-01-01 01:00:00, A]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1e+04] + [2020-01-01 01:00:00, B]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1e+04] + [2020-01-01 01:00:00, C]: Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1e+04] + [2020-01-01 02:00:00, A]: Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1e+04] + ... + [2020-01-01 06:00:00, C]: Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1e+04] + [2020-01-01 07:00:00, A]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1e+04] + [2020-01-01 07:00:00, B]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1e+04] + [2020-01-01 07:00:00, C]: Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1e+04] + [2020-01-01 08:00:00, A]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1e+04] + [2020-01-01 08:00:00, B]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1e+04] + [2020-01-01 08:00:00, C]: Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1e+04] + "Speicher(Q_th_load)|on": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Speicher(Q_th_load)|on[2020-01-01 00:00:00, A] ∈ {0, 1} + [2020-01-01 00:00:00, B]: Speicher(Q_th_load)|on[2020-01-01 00:00:00, B] ∈ {0, 1} + [2020-01-01 00:00:00, C]: Speicher(Q_th_load)|on[2020-01-01 00:00:00, C] ∈ {0, 1} + [2020-01-01 01:00:00, A]: Speicher(Q_th_load)|on[2020-01-01 01:00:00, A] ∈ {0, 1} + [2020-01-01 01:00:00, B]: Speicher(Q_th_load)|on[2020-01-01 01:00:00, B] ∈ {0, 1} + [2020-01-01 01:00:00, C]: Speicher(Q_th_load)|on[2020-01-01 01:00:00, C] ∈ {0, 1} + [2020-01-01 02:00:00, A]: Speicher(Q_th_load)|on[2020-01-01 02:00:00, A] ∈ {0, 1} + ... + [2020-01-01 06:00:00, C]: Speicher(Q_th_load)|on[2020-01-01 06:00:00, C] ∈ {0, 1} + [2020-01-01 07:00:00, A]: Speicher(Q_th_load)|on[2020-01-01 07:00:00, A] ∈ {0, 1} + [2020-01-01 07:00:00, B]: Speicher(Q_th_load)|on[2020-01-01 07:00:00, B] ∈ {0, 1} + [2020-01-01 07:00:00, C]: Speicher(Q_th_load)|on[2020-01-01 07:00:00, C] ∈ {0, 1} + [2020-01-01 08:00:00, A]: Speicher(Q_th_load)|on[2020-01-01 08:00:00, A] ∈ {0, 1} + [2020-01-01 08:00:00, B]: Speicher(Q_th_load)|on[2020-01-01 08:00:00, B] ∈ {0, 1} + [2020-01-01 08:00:00, C]: Speicher(Q_th_load)|on[2020-01-01 08:00:00, C] ∈ {0, 1} + "Speicher(Q_th_load)|on_hours_total": |- + Variable (scenario: 3) + ---------------------- + [A]: Speicher(Q_th_load)|on_hours_total[A] ∈ [0, inf] + [B]: Speicher(Q_th_load)|on_hours_total[B] ∈ [0, inf] + [C]: Speicher(Q_th_load)|on_hours_total[C] ∈ [0, inf] + "Speicher(Q_th_load)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Speicher(Q_th_load)|total_flow_hours[A] ∈ [0, inf] + [B]: Speicher(Q_th_load)|total_flow_hours[B] ∈ [0, inf] + [C]: Speicher(Q_th_load)|total_flow_hours[C] ∈ [0, inf] + "Speicher(Q_th_unload)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1e+04] + [2020-01-01 00:00:00, B]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1e+04] + [2020-01-01 00:00:00, C]: Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1e+04] + [2020-01-01 01:00:00, A]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1e+04] + [2020-01-01 01:00:00, B]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1e+04] + [2020-01-01 01:00:00, C]: Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1e+04] + [2020-01-01 02:00:00, A]: Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1e+04] + ... + [2020-01-01 06:00:00, C]: Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1e+04] + [2020-01-01 07:00:00, A]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1e+04] + [2020-01-01 07:00:00, B]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1e+04] + [2020-01-01 07:00:00, C]: Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1e+04] + [2020-01-01 08:00:00, A]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1e+04] + [2020-01-01 08:00:00, B]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1e+04] + [2020-01-01 08:00:00, C]: Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1e+04] + "Speicher(Q_th_unload)|on": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00, A] ∈ {0, 1} + [2020-01-01 00:00:00, B]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00, B] ∈ {0, 1} + [2020-01-01 00:00:00, C]: Speicher(Q_th_unload)|on[2020-01-01 00:00:00, C] ∈ {0, 1} + [2020-01-01 01:00:00, A]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00, A] ∈ {0, 1} + [2020-01-01 01:00:00, B]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00, B] ∈ {0, 1} + [2020-01-01 01:00:00, C]: Speicher(Q_th_unload)|on[2020-01-01 01:00:00, C] ∈ {0, 1} + [2020-01-01 02:00:00, A]: Speicher(Q_th_unload)|on[2020-01-01 02:00:00, A] ∈ {0, 1} + ... + [2020-01-01 06:00:00, C]: Speicher(Q_th_unload)|on[2020-01-01 06:00:00, C] ∈ {0, 1} + [2020-01-01 07:00:00, A]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00, A] ∈ {0, 1} + [2020-01-01 07:00:00, B]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00, B] ∈ {0, 1} + [2020-01-01 07:00:00, C]: Speicher(Q_th_unload)|on[2020-01-01 07:00:00, C] ∈ {0, 1} + [2020-01-01 08:00:00, A]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00, A] ∈ {0, 1} + [2020-01-01 08:00:00, B]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00, B] ∈ {0, 1} + [2020-01-01 08:00:00, C]: Speicher(Q_th_unload)|on[2020-01-01 08:00:00, C] ∈ {0, 1} + "Speicher(Q_th_unload)|on_hours_total": |- + Variable (scenario: 3) + ---------------------- + [A]: Speicher(Q_th_unload)|on_hours_total[A] ∈ [0, inf] + [B]: Speicher(Q_th_unload)|on_hours_total[B] ∈ [0, inf] + [C]: Speicher(Q_th_unload)|on_hours_total[C] ∈ [0, inf] + "Speicher(Q_th_unload)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Speicher(Q_th_unload)|total_flow_hours[A] ∈ [0, inf] + [B]: Speicher(Q_th_unload)|total_flow_hours[B] ∈ [0, inf] + [C]: Speicher(Q_th_unload)|total_flow_hours[C] ∈ [0, inf] + "Speicher|charge_state": |- + Variable (time: 10, scenario: 3) + -------------------------------- + [2020-01-01 00:00:00, A]: Speicher|charge_state[2020-01-01 00:00:00, A] ∈ [0, 8e+06] + [2020-01-01 00:00:00, B]: Speicher|charge_state[2020-01-01 00:00:00, B] ∈ [0, 8e+06] + [2020-01-01 00:00:00, C]: Speicher|charge_state[2020-01-01 00:00:00, C] ∈ [0, 8e+06] + [2020-01-01 01:00:00, A]: Speicher|charge_state[2020-01-01 01:00:00, A] ∈ [0, 7e+06] + [2020-01-01 01:00:00, B]: Speicher|charge_state[2020-01-01 01:00:00, B] ∈ [0, 7e+06] + [2020-01-01 01:00:00, C]: Speicher|charge_state[2020-01-01 01:00:00, C] ∈ [0, 7e+06] + [2020-01-01 02:00:00, A]: Speicher|charge_state[2020-01-01 02:00:00, A] ∈ [0, 8e+06] + ... + [2020-01-01 07:00:00, C]: Speicher|charge_state[2020-01-01 07:00:00, C] ∈ [0, 8e+06] + [2020-01-01 08:00:00, A]: Speicher|charge_state[2020-01-01 08:00:00, A] ∈ [0, 8e+06] + [2020-01-01 08:00:00, B]: Speicher|charge_state[2020-01-01 08:00:00, B] ∈ [0, 8e+06] + [2020-01-01 08:00:00, C]: Speicher|charge_state[2020-01-01 08:00:00, C] ∈ [0, 8e+06] + [2020-01-01 09:00:00, A]: Speicher|charge_state[2020-01-01 09:00:00, A] ∈ [0, 8e+06] + [2020-01-01 09:00:00, B]: Speicher|charge_state[2020-01-01 09:00:00, B] ∈ [0, 8e+06] + [2020-01-01 09:00:00, C]: Speicher|charge_state[2020-01-01 09:00:00, C] ∈ [0, 8e+06] + "Speicher|netto_discharge": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Speicher|netto_discharge[2020-01-01 00:00:00, A] ∈ [-inf, inf] + [2020-01-01 00:00:00, B]: Speicher|netto_discharge[2020-01-01 00:00:00, B] ∈ [-inf, inf] + [2020-01-01 00:00:00, C]: Speicher|netto_discharge[2020-01-01 00:00:00, C] ∈ [-inf, inf] + [2020-01-01 01:00:00, A]: Speicher|netto_discharge[2020-01-01 01:00:00, A] ∈ [-inf, inf] + [2020-01-01 01:00:00, B]: Speicher|netto_discharge[2020-01-01 01:00:00, B] ∈ [-inf, inf] + [2020-01-01 01:00:00, C]: Speicher|netto_discharge[2020-01-01 01:00:00, C] ∈ [-inf, inf] + [2020-01-01 02:00:00, A]: Speicher|netto_discharge[2020-01-01 02:00:00, A] ∈ [-inf, inf] + ... + [2020-01-01 06:00:00, C]: Speicher|netto_discharge[2020-01-01 06:00:00, C] ∈ [-inf, inf] + [2020-01-01 07:00:00, A]: Speicher|netto_discharge[2020-01-01 07:00:00, A] ∈ [-inf, inf] + [2020-01-01 07:00:00, B]: Speicher|netto_discharge[2020-01-01 07:00:00, B] ∈ [-inf, inf] + [2020-01-01 07:00:00, C]: Speicher|netto_discharge[2020-01-01 07:00:00, C] ∈ [-inf, inf] + [2020-01-01 08:00:00, A]: Speicher|netto_discharge[2020-01-01 08:00:00, A] ∈ [-inf, inf] + [2020-01-01 08:00:00, B]: Speicher|netto_discharge[2020-01-01 08:00:00, B] ∈ [-inf, inf] + [2020-01-01 08:00:00, C]: Speicher|netto_discharge[2020-01-01 08:00:00, C] ∈ [-inf, inf] + "Speicher|size": |- + Variable (scenario: 3) + ---------------------- + [A]: Speicher|size[A] ∈ [30, 30] + [B]: Speicher|size[B] ∈ [30, 30] + [C]: Speicher|size[C] ∈ [30, 30] + "Speicher->costs(periodic)": |- + Variable (scenario: 3) + ---------------------- + [A]: Speicher->costs(periodic)[A] ∈ [-inf, inf] + [B]: Speicher->costs(periodic)[B] ∈ [-inf, inf] + [C]: Speicher->costs(periodic)[C] ∈ [-inf, inf] + "Boiler(Q_fu)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1e+07] + [2020-01-01 00:00:00, B]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1e+07] + [2020-01-01 00:00:00, C]: Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1e+07] + [2020-01-01 01:00:00, A]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1e+07] + [2020-01-01 01:00:00, B]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1e+07] + [2020-01-01 01:00:00, C]: Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1e+07] + [2020-01-01 02:00:00, A]: Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1e+07] + ... + [2020-01-01 06:00:00, C]: Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1e+07] + [2020-01-01 07:00:00, A]: Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1e+07] + [2020-01-01 07:00:00, B]: Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1e+07] + [2020-01-01 07:00:00, C]: Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1e+07] + [2020-01-01 08:00:00, A]: Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1e+07] + [2020-01-01 08:00:00, B]: Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1e+07] + [2020-01-01 08:00:00, C]: Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1e+07] + "Boiler(Q_fu)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Boiler(Q_fu)|total_flow_hours[A] ∈ [0, inf] + [B]: Boiler(Q_fu)|total_flow_hours[B] ∈ [0, inf] + [C]: Boiler(Q_fu)|total_flow_hours[C] ∈ [0, inf] + "Boiler(Q_th)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 50] + [2020-01-01 00:00:00, B]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 50] + [2020-01-01 00:00:00, C]: Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 50] + [2020-01-01 01:00:00, A]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 50] + [2020-01-01 01:00:00, B]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 50] + [2020-01-01 01:00:00, C]: Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 50] + [2020-01-01 02:00:00, A]: Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 50] + ... + [2020-01-01 06:00:00, C]: Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 50] + [2020-01-01 07:00:00, A]: Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 50] + [2020-01-01 07:00:00, B]: Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 50] + [2020-01-01 07:00:00, C]: Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 50] + [2020-01-01 08:00:00, A]: Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 50] + [2020-01-01 08:00:00, B]: Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 50] + [2020-01-01 08:00:00, C]: Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 50] + "Boiler(Q_th)|on": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Boiler(Q_th)|on[2020-01-01 00:00:00, A] ∈ {0, 1} + [2020-01-01 00:00:00, B]: Boiler(Q_th)|on[2020-01-01 00:00:00, B] ∈ {0, 1} + [2020-01-01 00:00:00, C]: Boiler(Q_th)|on[2020-01-01 00:00:00, C] ∈ {0, 1} + [2020-01-01 01:00:00, A]: Boiler(Q_th)|on[2020-01-01 01:00:00, A] ∈ {0, 1} + [2020-01-01 01:00:00, B]: Boiler(Q_th)|on[2020-01-01 01:00:00, B] ∈ {0, 1} + [2020-01-01 01:00:00, C]: Boiler(Q_th)|on[2020-01-01 01:00:00, C] ∈ {0, 1} + [2020-01-01 02:00:00, A]: Boiler(Q_th)|on[2020-01-01 02:00:00, A] ∈ {0, 1} + ... + [2020-01-01 06:00:00, C]: Boiler(Q_th)|on[2020-01-01 06:00:00, C] ∈ {0, 1} + [2020-01-01 07:00:00, A]: Boiler(Q_th)|on[2020-01-01 07:00:00, A] ∈ {0, 1} + [2020-01-01 07:00:00, B]: Boiler(Q_th)|on[2020-01-01 07:00:00, B] ∈ {0, 1} + [2020-01-01 07:00:00, C]: Boiler(Q_th)|on[2020-01-01 07:00:00, C] ∈ {0, 1} + [2020-01-01 08:00:00, A]: Boiler(Q_th)|on[2020-01-01 08:00:00, A] ∈ {0, 1} + [2020-01-01 08:00:00, B]: Boiler(Q_th)|on[2020-01-01 08:00:00, B] ∈ {0, 1} + [2020-01-01 08:00:00, C]: Boiler(Q_th)|on[2020-01-01 08:00:00, C] ∈ {0, 1} + "Boiler(Q_th)|on_hours_total": |- + Variable (scenario: 3) + ---------------------- + [A]: Boiler(Q_th)|on_hours_total[A] ∈ [0, inf] + [B]: Boiler(Q_th)|on_hours_total[B] ∈ [0, inf] + [C]: Boiler(Q_th)|on_hours_total[C] ∈ [0, inf] + "Boiler(Q_th)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Boiler(Q_th)|total_flow_hours[A] ∈ [0, inf] + [B]: Boiler(Q_th)|total_flow_hours[B] ∈ [0, inf] + [C]: Boiler(Q_th)|total_flow_hours[C] ∈ [0, inf] + "Wärmelast(Q_th_Last)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, A] ∈ [30, 30] + [2020-01-01 00:00:00, B]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, B] ∈ [30, 30] + [2020-01-01 00:00:00, C]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, C] ∈ [30, 30] + [2020-01-01 01:00:00, A]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 0] + [2020-01-01 01:00:00, B]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 0] + [2020-01-01 01:00:00, C]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 0] + [2020-01-01 02:00:00, A]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00, A] ∈ [90, 90] + ... + [2020-01-01 06:00:00, C]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00, C] ∈ [20, 20] + [2020-01-01 07:00:00, A]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, A] ∈ [20, 20] + [2020-01-01 07:00:00, B]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, B] ∈ [20, 20] + [2020-01-01 07:00:00, C]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, C] ∈ [20, 20] + [2020-01-01 08:00:00, A]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, A] ∈ [20, 20] + [2020-01-01 08:00:00, B]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, B] ∈ [20, 20] + [2020-01-01 08:00:00, C]: Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, C] ∈ [20, 20] + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Wärmelast(Q_th_Last)|total_flow_hours[A] ∈ [0, inf] + [B]: Wärmelast(Q_th_Last)|total_flow_hours[B] ∈ [0, inf] + [C]: Wärmelast(Q_th_Last)|total_flow_hours[C] ∈ [0, inf] + "Gastarif(Q_Gas)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1000] + [2020-01-01 00:00:00, B]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1000] + [2020-01-01 00:00:00, C]: Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1000] + [2020-01-01 01:00:00, A]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1000] + [2020-01-01 01:00:00, B]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1000] + [2020-01-01 01:00:00, C]: Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1000] + [2020-01-01 02:00:00, A]: Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1000] + ... + [2020-01-01 06:00:00, C]: Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1000] + [2020-01-01 07:00:00, A]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1000] + [2020-01-01 07:00:00, B]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1000] + [2020-01-01 07:00:00, C]: Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1000] + [2020-01-01 08:00:00, A]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1000] + [2020-01-01 08:00:00, B]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1000] + [2020-01-01 08:00:00, C]: Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1000] + "Gastarif(Q_Gas)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Gastarif(Q_Gas)|total_flow_hours[A] ∈ [0, inf] + [B]: Gastarif(Q_Gas)|total_flow_hours[B] ∈ [0, inf] + [C]: Gastarif(Q_Gas)|total_flow_hours[C] ∈ [0, inf] + "Gastarif(Q_Gas)->costs(temporal)": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, A] ∈ [-inf, inf] + [2020-01-01 00:00:00, B]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, B] ∈ [-inf, inf] + [2020-01-01 00:00:00, C]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, C] ∈ [-inf, inf] + [2020-01-01 01:00:00, A]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, A] ∈ [-inf, inf] + [2020-01-01 01:00:00, B]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, B] ∈ [-inf, inf] + [2020-01-01 01:00:00, C]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, C] ∈ [-inf, inf] + [2020-01-01 02:00:00, A]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, A] ∈ [-inf, inf] + ... + [2020-01-01 06:00:00, C]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00, C] ∈ [-inf, inf] + [2020-01-01 07:00:00, A]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, A] ∈ [-inf, inf] + [2020-01-01 07:00:00, B]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, B] ∈ [-inf, inf] + [2020-01-01 07:00:00, C]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, C] ∈ [-inf, inf] + [2020-01-01 08:00:00, A]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, A] ∈ [-inf, inf] + [2020-01-01 08:00:00, B]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, B] ∈ [-inf, inf] + [2020-01-01 08:00:00, C]: Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, C] ∈ [-inf, inf] + "Gastarif(Q_Gas)->CO2(temporal)": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, A] ∈ [-inf, inf] + [2020-01-01 00:00:00, B]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, B] ∈ [-inf, inf] + [2020-01-01 00:00:00, C]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, C] ∈ [-inf, inf] + [2020-01-01 01:00:00, A]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, A] ∈ [-inf, inf] + [2020-01-01 01:00:00, B]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, B] ∈ [-inf, inf] + [2020-01-01 01:00:00, C]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, C] ∈ [-inf, inf] + [2020-01-01 02:00:00, A]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00, A] ∈ [-inf, inf] + ... + [2020-01-01 06:00:00, C]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00, C] ∈ [-inf, inf] + [2020-01-01 07:00:00, A]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, A] ∈ [-inf, inf] + [2020-01-01 07:00:00, B]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, B] ∈ [-inf, inf] + [2020-01-01 07:00:00, C]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, C] ∈ [-inf, inf] + [2020-01-01 08:00:00, A]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, A] ∈ [-inf, inf] + [2020-01-01 08:00:00, B]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, B] ∈ [-inf, inf] + [2020-01-01 08:00:00, C]: Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, C] ∈ [-inf, inf] + "Einspeisung(P_el)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1e+07] + [2020-01-01 00:00:00, B]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1e+07] + [2020-01-01 00:00:00, C]: Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1e+07] + [2020-01-01 01:00:00, A]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1e+07] + [2020-01-01 01:00:00, B]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1e+07] + [2020-01-01 01:00:00, C]: Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1e+07] + [2020-01-01 02:00:00, A]: Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1e+07] + ... + [2020-01-01 06:00:00, C]: Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1e+07] + [2020-01-01 07:00:00, A]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1e+07] + [2020-01-01 07:00:00, B]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1e+07] + [2020-01-01 07:00:00, C]: Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1e+07] + [2020-01-01 08:00:00, A]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1e+07] + [2020-01-01 08:00:00, B]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1e+07] + [2020-01-01 08:00:00, C]: Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1e+07] + "Einspeisung(P_el)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: Einspeisung(P_el)|total_flow_hours[A] ∈ [0, inf] + [B]: Einspeisung(P_el)|total_flow_hours[B] ∈ [0, inf] + [C]: Einspeisung(P_el)|total_flow_hours[C] ∈ [0, inf] + "Einspeisung(P_el)->costs(temporal)": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, A] ∈ [-inf, inf] + [2020-01-01 00:00:00, B]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, B] ∈ [-inf, inf] + [2020-01-01 00:00:00, C]: Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, C] ∈ [-inf, inf] + [2020-01-01 01:00:00, A]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, A] ∈ [-inf, inf] + [2020-01-01 01:00:00, B]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, B] ∈ [-inf, inf] + [2020-01-01 01:00:00, C]: Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, C] ∈ [-inf, inf] + [2020-01-01 02:00:00, A]: Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00, A] ∈ [-inf, inf] + ... + [2020-01-01 06:00:00, C]: Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00, C] ∈ [-inf, inf] + [2020-01-01 07:00:00, A]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, A] ∈ [-inf, inf] + [2020-01-01 07:00:00, B]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, B] ∈ [-inf, inf] + [2020-01-01 07:00:00, C]: Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, C] ∈ [-inf, inf] + [2020-01-01 08:00:00, A]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, A] ∈ [-inf, inf] + [2020-01-01 08:00:00, B]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, B] ∈ [-inf, inf] + [2020-01-01 08:00:00, C]: Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, C] ∈ [-inf, inf] + "CHP_unit(Q_fu)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1e+07] + [2020-01-01 00:00:00, B]: CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1e+07] + [2020-01-01 00:00:00, C]: CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1e+07] + [2020-01-01 01:00:00, A]: CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1e+07] + [2020-01-01 01:00:00, B]: CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1e+07] + [2020-01-01 01:00:00, C]: CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1e+07] + [2020-01-01 02:00:00, A]: CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1e+07] + ... + [2020-01-01 06:00:00, C]: CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1e+07] + [2020-01-01 07:00:00, A]: CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1e+07] + [2020-01-01 07:00:00, B]: CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1e+07] + [2020-01-01 07:00:00, C]: CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1e+07] + [2020-01-01 08:00:00, A]: CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1e+07] + [2020-01-01 08:00:00, B]: CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1e+07] + [2020-01-01 08:00:00, C]: CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1e+07] + "CHP_unit(Q_fu)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: CHP_unit(Q_fu)|total_flow_hours[A] ∈ [0, inf] + [B]: CHP_unit(Q_fu)|total_flow_hours[B] ∈ [0, inf] + [C]: CHP_unit(Q_fu)|total_flow_hours[C] ∈ [0, inf] + "CHP_unit(Q_th)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 1e+07] + [2020-01-01 00:00:00, B]: CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 1e+07] + [2020-01-01 00:00:00, C]: CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 1e+07] + [2020-01-01 01:00:00, A]: CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 1e+07] + [2020-01-01 01:00:00, B]: CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 1e+07] + [2020-01-01 01:00:00, C]: CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 1e+07] + [2020-01-01 02:00:00, A]: CHP_unit(Q_th)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 1e+07] + ... + [2020-01-01 06:00:00, C]: CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 1e+07] + [2020-01-01 07:00:00, A]: CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 1e+07] + [2020-01-01 07:00:00, B]: CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 1e+07] + [2020-01-01 07:00:00, C]: CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 1e+07] + [2020-01-01 08:00:00, A]: CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 1e+07] + [2020-01-01 08:00:00, B]: CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 1e+07] + [2020-01-01 08:00:00, C]: CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 1e+07] + "CHP_unit(Q_th)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: CHP_unit(Q_th)|total_flow_hours[A] ∈ [0, inf] + [B]: CHP_unit(Q_th)|total_flow_hours[B] ∈ [0, inf] + [C]: CHP_unit(Q_th)|total_flow_hours[C] ∈ [0, inf] + "CHP_unit(P_el)|flow_rate": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, A] ∈ [0, 60] + [2020-01-01 00:00:00, B]: CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, B] ∈ [0, 60] + [2020-01-01 00:00:00, C]: CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, C] ∈ [0, 60] + [2020-01-01 01:00:00, A]: CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, A] ∈ [0, 60] + [2020-01-01 01:00:00, B]: CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, B] ∈ [0, 60] + [2020-01-01 01:00:00, C]: CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, C] ∈ [0, 60] + [2020-01-01 02:00:00, A]: CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00, A] ∈ [0, 60] + ... + [2020-01-01 06:00:00, C]: CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, C] ∈ [0, 60] + [2020-01-01 07:00:00, A]: CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, A] ∈ [0, 60] + [2020-01-01 07:00:00, B]: CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, B] ∈ [0, 60] + [2020-01-01 07:00:00, C]: CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, C] ∈ [0, 60] + [2020-01-01 08:00:00, A]: CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, A] ∈ [0, 60] + [2020-01-01 08:00:00, B]: CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, B] ∈ [0, 60] + [2020-01-01 08:00:00, C]: CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, C] ∈ [0, 60] + "CHP_unit(P_el)|on": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: CHP_unit(P_el)|on[2020-01-01 00:00:00, A] ∈ {0, 1} + [2020-01-01 00:00:00, B]: CHP_unit(P_el)|on[2020-01-01 00:00:00, B] ∈ {0, 1} + [2020-01-01 00:00:00, C]: CHP_unit(P_el)|on[2020-01-01 00:00:00, C] ∈ {0, 1} + [2020-01-01 01:00:00, A]: CHP_unit(P_el)|on[2020-01-01 01:00:00, A] ∈ {0, 1} + [2020-01-01 01:00:00, B]: CHP_unit(P_el)|on[2020-01-01 01:00:00, B] ∈ {0, 1} + [2020-01-01 01:00:00, C]: CHP_unit(P_el)|on[2020-01-01 01:00:00, C] ∈ {0, 1} + [2020-01-01 02:00:00, A]: CHP_unit(P_el)|on[2020-01-01 02:00:00, A] ∈ {0, 1} + ... + [2020-01-01 06:00:00, C]: CHP_unit(P_el)|on[2020-01-01 06:00:00, C] ∈ {0, 1} + [2020-01-01 07:00:00, A]: CHP_unit(P_el)|on[2020-01-01 07:00:00, A] ∈ {0, 1} + [2020-01-01 07:00:00, B]: CHP_unit(P_el)|on[2020-01-01 07:00:00, B] ∈ {0, 1} + [2020-01-01 07:00:00, C]: CHP_unit(P_el)|on[2020-01-01 07:00:00, C] ∈ {0, 1} + [2020-01-01 08:00:00, A]: CHP_unit(P_el)|on[2020-01-01 08:00:00, A] ∈ {0, 1} + [2020-01-01 08:00:00, B]: CHP_unit(P_el)|on[2020-01-01 08:00:00, B] ∈ {0, 1} + [2020-01-01 08:00:00, C]: CHP_unit(P_el)|on[2020-01-01 08:00:00, C] ∈ {0, 1} + "CHP_unit(P_el)|on_hours_total": |- + Variable (scenario: 3) + ---------------------- + [A]: CHP_unit(P_el)|on_hours_total[A] ∈ [0, inf] + [B]: CHP_unit(P_el)|on_hours_total[B] ∈ [0, inf] + [C]: CHP_unit(P_el)|on_hours_total[C] ∈ [0, inf] + "CHP_unit(P_el)|total_flow_hours": |- + Variable (scenario: 3) + ---------------------- + [A]: CHP_unit(P_el)|total_flow_hours[A] ∈ [0, inf] + [B]: CHP_unit(P_el)|total_flow_hours[B] ∈ [0, inf] + [C]: CHP_unit(P_el)|total_flow_hours[C] ∈ [0, inf] + "Strom|excess_input": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Strom|excess_input[2020-01-01 00:00:00, A] ∈ [0, inf] + [2020-01-01 00:00:00, B]: Strom|excess_input[2020-01-01 00:00:00, B] ∈ [0, inf] + [2020-01-01 00:00:00, C]: Strom|excess_input[2020-01-01 00:00:00, C] ∈ [0, inf] + [2020-01-01 01:00:00, A]: Strom|excess_input[2020-01-01 01:00:00, A] ∈ [0, inf] + [2020-01-01 01:00:00, B]: Strom|excess_input[2020-01-01 01:00:00, B] ∈ [0, inf] + [2020-01-01 01:00:00, C]: Strom|excess_input[2020-01-01 01:00:00, C] ∈ [0, inf] + [2020-01-01 02:00:00, A]: Strom|excess_input[2020-01-01 02:00:00, A] ∈ [0, inf] + ... + [2020-01-01 06:00:00, C]: Strom|excess_input[2020-01-01 06:00:00, C] ∈ [0, inf] + [2020-01-01 07:00:00, A]: Strom|excess_input[2020-01-01 07:00:00, A] ∈ [0, inf] + [2020-01-01 07:00:00, B]: Strom|excess_input[2020-01-01 07:00:00, B] ∈ [0, inf] + [2020-01-01 07:00:00, C]: Strom|excess_input[2020-01-01 07:00:00, C] ∈ [0, inf] + [2020-01-01 08:00:00, A]: Strom|excess_input[2020-01-01 08:00:00, A] ∈ [0, inf] + [2020-01-01 08:00:00, B]: Strom|excess_input[2020-01-01 08:00:00, B] ∈ [0, inf] + [2020-01-01 08:00:00, C]: Strom|excess_input[2020-01-01 08:00:00, C] ∈ [0, inf] + "Strom|excess_output": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Strom|excess_output[2020-01-01 00:00:00, A] ∈ [0, inf] + [2020-01-01 00:00:00, B]: Strom|excess_output[2020-01-01 00:00:00, B] ∈ [0, inf] + [2020-01-01 00:00:00, C]: Strom|excess_output[2020-01-01 00:00:00, C] ∈ [0, inf] + [2020-01-01 01:00:00, A]: Strom|excess_output[2020-01-01 01:00:00, A] ∈ [0, inf] + [2020-01-01 01:00:00, B]: Strom|excess_output[2020-01-01 01:00:00, B] ∈ [0, inf] + [2020-01-01 01:00:00, C]: Strom|excess_output[2020-01-01 01:00:00, C] ∈ [0, inf] + [2020-01-01 02:00:00, A]: Strom|excess_output[2020-01-01 02:00:00, A] ∈ [0, inf] + ... + [2020-01-01 06:00:00, C]: Strom|excess_output[2020-01-01 06:00:00, C] ∈ [0, inf] + [2020-01-01 07:00:00, A]: Strom|excess_output[2020-01-01 07:00:00, A] ∈ [0, inf] + [2020-01-01 07:00:00, B]: Strom|excess_output[2020-01-01 07:00:00, B] ∈ [0, inf] + [2020-01-01 07:00:00, C]: Strom|excess_output[2020-01-01 07:00:00, C] ∈ [0, inf] + [2020-01-01 08:00:00, A]: Strom|excess_output[2020-01-01 08:00:00, A] ∈ [0, inf] + [2020-01-01 08:00:00, B]: Strom|excess_output[2020-01-01 08:00:00, B] ∈ [0, inf] + [2020-01-01 08:00:00, C]: Strom|excess_output[2020-01-01 08:00:00, C] ∈ [0, inf] + "Strom->Penalty": |- + Variable + -------- + Strom->Penalty ∈ [-inf, inf] + "Fernwärme|excess_input": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Fernwärme|excess_input[2020-01-01 00:00:00, A] ∈ [0, inf] + [2020-01-01 00:00:00, B]: Fernwärme|excess_input[2020-01-01 00:00:00, B] ∈ [0, inf] + [2020-01-01 00:00:00, C]: Fernwärme|excess_input[2020-01-01 00:00:00, C] ∈ [0, inf] + [2020-01-01 01:00:00, A]: Fernwärme|excess_input[2020-01-01 01:00:00, A] ∈ [0, inf] + [2020-01-01 01:00:00, B]: Fernwärme|excess_input[2020-01-01 01:00:00, B] ∈ [0, inf] + [2020-01-01 01:00:00, C]: Fernwärme|excess_input[2020-01-01 01:00:00, C] ∈ [0, inf] + [2020-01-01 02:00:00, A]: Fernwärme|excess_input[2020-01-01 02:00:00, A] ∈ [0, inf] + ... + [2020-01-01 06:00:00, C]: Fernwärme|excess_input[2020-01-01 06:00:00, C] ∈ [0, inf] + [2020-01-01 07:00:00, A]: Fernwärme|excess_input[2020-01-01 07:00:00, A] ∈ [0, inf] + [2020-01-01 07:00:00, B]: Fernwärme|excess_input[2020-01-01 07:00:00, B] ∈ [0, inf] + [2020-01-01 07:00:00, C]: Fernwärme|excess_input[2020-01-01 07:00:00, C] ∈ [0, inf] + [2020-01-01 08:00:00, A]: Fernwärme|excess_input[2020-01-01 08:00:00, A] ∈ [0, inf] + [2020-01-01 08:00:00, B]: Fernwärme|excess_input[2020-01-01 08:00:00, B] ∈ [0, inf] + [2020-01-01 08:00:00, C]: Fernwärme|excess_input[2020-01-01 08:00:00, C] ∈ [0, inf] + "Fernwärme|excess_output": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Fernwärme|excess_output[2020-01-01 00:00:00, A] ∈ [0, inf] + [2020-01-01 00:00:00, B]: Fernwärme|excess_output[2020-01-01 00:00:00, B] ∈ [0, inf] + [2020-01-01 00:00:00, C]: Fernwärme|excess_output[2020-01-01 00:00:00, C] ∈ [0, inf] + [2020-01-01 01:00:00, A]: Fernwärme|excess_output[2020-01-01 01:00:00, A] ∈ [0, inf] + [2020-01-01 01:00:00, B]: Fernwärme|excess_output[2020-01-01 01:00:00, B] ∈ [0, inf] + [2020-01-01 01:00:00, C]: Fernwärme|excess_output[2020-01-01 01:00:00, C] ∈ [0, inf] + [2020-01-01 02:00:00, A]: Fernwärme|excess_output[2020-01-01 02:00:00, A] ∈ [0, inf] + ... + [2020-01-01 06:00:00, C]: Fernwärme|excess_output[2020-01-01 06:00:00, C] ∈ [0, inf] + [2020-01-01 07:00:00, A]: Fernwärme|excess_output[2020-01-01 07:00:00, A] ∈ [0, inf] + [2020-01-01 07:00:00, B]: Fernwärme|excess_output[2020-01-01 07:00:00, B] ∈ [0, inf] + [2020-01-01 07:00:00, C]: Fernwärme|excess_output[2020-01-01 07:00:00, C] ∈ [0, inf] + [2020-01-01 08:00:00, A]: Fernwärme|excess_output[2020-01-01 08:00:00, A] ∈ [0, inf] + [2020-01-01 08:00:00, B]: Fernwärme|excess_output[2020-01-01 08:00:00, B] ∈ [0, inf] + [2020-01-01 08:00:00, C]: Fernwärme|excess_output[2020-01-01 08:00:00, C] ∈ [0, inf] + "Fernwärme->Penalty": |- + Variable + -------- + Fernwärme->Penalty ∈ [-inf, inf] + "Gas|excess_input": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Gas|excess_input[2020-01-01 00:00:00, A] ∈ [0, inf] + [2020-01-01 00:00:00, B]: Gas|excess_input[2020-01-01 00:00:00, B] ∈ [0, inf] + [2020-01-01 00:00:00, C]: Gas|excess_input[2020-01-01 00:00:00, C] ∈ [0, inf] + [2020-01-01 01:00:00, A]: Gas|excess_input[2020-01-01 01:00:00, A] ∈ [0, inf] + [2020-01-01 01:00:00, B]: Gas|excess_input[2020-01-01 01:00:00, B] ∈ [0, inf] + [2020-01-01 01:00:00, C]: Gas|excess_input[2020-01-01 01:00:00, C] ∈ [0, inf] + [2020-01-01 02:00:00, A]: Gas|excess_input[2020-01-01 02:00:00, A] ∈ [0, inf] + ... + [2020-01-01 06:00:00, C]: Gas|excess_input[2020-01-01 06:00:00, C] ∈ [0, inf] + [2020-01-01 07:00:00, A]: Gas|excess_input[2020-01-01 07:00:00, A] ∈ [0, inf] + [2020-01-01 07:00:00, B]: Gas|excess_input[2020-01-01 07:00:00, B] ∈ [0, inf] + [2020-01-01 07:00:00, C]: Gas|excess_input[2020-01-01 07:00:00, C] ∈ [0, inf] + [2020-01-01 08:00:00, A]: Gas|excess_input[2020-01-01 08:00:00, A] ∈ [0, inf] + [2020-01-01 08:00:00, B]: Gas|excess_input[2020-01-01 08:00:00, B] ∈ [0, inf] + [2020-01-01 08:00:00, C]: Gas|excess_input[2020-01-01 08:00:00, C] ∈ [0, inf] + "Gas|excess_output": |- + Variable (time: 9, scenario: 3) + ------------------------------- + [2020-01-01 00:00:00, A]: Gas|excess_output[2020-01-01 00:00:00, A] ∈ [0, inf] + [2020-01-01 00:00:00, B]: Gas|excess_output[2020-01-01 00:00:00, B] ∈ [0, inf] + [2020-01-01 00:00:00, C]: Gas|excess_output[2020-01-01 00:00:00, C] ∈ [0, inf] + [2020-01-01 01:00:00, A]: Gas|excess_output[2020-01-01 01:00:00, A] ∈ [0, inf] + [2020-01-01 01:00:00, B]: Gas|excess_output[2020-01-01 01:00:00, B] ∈ [0, inf] + [2020-01-01 01:00:00, C]: Gas|excess_output[2020-01-01 01:00:00, C] ∈ [0, inf] + [2020-01-01 02:00:00, A]: Gas|excess_output[2020-01-01 02:00:00, A] ∈ [0, inf] + ... + [2020-01-01 06:00:00, C]: Gas|excess_output[2020-01-01 06:00:00, C] ∈ [0, inf] + [2020-01-01 07:00:00, A]: Gas|excess_output[2020-01-01 07:00:00, A] ∈ [0, inf] + [2020-01-01 07:00:00, B]: Gas|excess_output[2020-01-01 07:00:00, B] ∈ [0, inf] + [2020-01-01 07:00:00, C]: Gas|excess_output[2020-01-01 07:00:00, C] ∈ [0, inf] + [2020-01-01 08:00:00, A]: Gas|excess_output[2020-01-01 08:00:00, A] ∈ [0, inf] + [2020-01-01 08:00:00, B]: Gas|excess_output[2020-01-01 08:00:00, B] ∈ [0, inf] + [2020-01-01 08:00:00, C]: Gas|excess_output[2020-01-01 08:00:00, C] ∈ [0, inf] + "Gas->Penalty": |- + Variable + -------- + Gas->Penalty ∈ [-inf, inf] +constraints: + costs(periodic): |- + Constraint `costs(periodic)` + [scenario: 3]: + ------------------------------------------- + [A]: +1 costs(periodic)[A] - 1 Speicher->costs(periodic)[A] = -0.0 + [B]: +1 costs(periodic)[B] - 1 Speicher->costs(periodic)[B] = -0.0 + [C]: +1 costs(periodic)[C] - 1 Speicher->costs(periodic)[C] = -0.0 + costs(temporal): |- + Constraint `costs(temporal)` + [scenario: 3]: + ------------------------------------------- + [A]: +1 costs(temporal)[A] - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00, A] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00, A]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00, A] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00, A] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 costs(temporal)[B] - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00, B] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00, B]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00, B] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00, B] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 costs(temporal)[C] - 1 costs(temporal)|per_timestep[2020-01-01 00:00:00, C] - 1 costs(temporal)|per_timestep[2020-01-01 01:00:00, C]... -1 costs(temporal)|per_timestep[2020-01-01 06:00:00, C] - 1 costs(temporal)|per_timestep[2020-01-01 07:00:00, C] - 1 costs(temporal)|per_timestep[2020-01-01 08:00:00, C] = -0.0 + "costs(temporal)|per_timestep": |- + Constraint `costs(temporal)|per_timestep` + [time: 9, scenario: 3]: + ----------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00, A] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, A] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, A] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00, B] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, B] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, B] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 costs(temporal)|per_timestep[2020-01-01 00:00:00, C] - 1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, C] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, C] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00, A] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, A] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, A] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00, B] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, B] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, B] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 costs(temporal)|per_timestep[2020-01-01 01:00:00, C] - 1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, C] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, C] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 costs(temporal)|per_timestep[2020-01-01 02:00:00, A] - 1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00, A] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, A] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 costs(temporal)|per_timestep[2020-01-01 06:00:00, C] - 1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00, C] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00, C] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00, A] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, A] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, A] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00, B] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, B] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, B] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 costs(temporal)|per_timestep[2020-01-01 07:00:00, C] - 1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, C] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, C] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00, A] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, A] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, A] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00, B] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, B] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, B] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 costs(temporal)|per_timestep[2020-01-01 08:00:00, C] - 1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, C] - 1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, C] - 1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, C] = -0.0 + costs: |- + Constraint `costs` + [scenario: 3]: + --------------------------------- + [A]: +1 costs[A] - 1 costs(temporal)[A] - 1 costs(periodic)[A] = -0.0 + [B]: +1 costs[B] - 1 costs(temporal)[B] - 1 costs(periodic)[B] = -0.0 + [C]: +1 costs[C] - 1 costs(temporal)[C] - 1 costs(periodic)[C] = -0.0 + CO2(periodic): |- + Constraint `CO2(periodic)` + [scenario: 3]: + ----------------------------------------- + [A]: +1 CO2(periodic)[A] = -0.0 + [B]: +1 CO2(periodic)[B] = -0.0 + [C]: +1 CO2(periodic)[C] = -0.0 + CO2(temporal): |- + Constraint `CO2(temporal)` + [scenario: 3]: + ----------------------------------------- + [A]: +1 CO2(temporal)[A] - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00, A] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00, A]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00, A] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00, A] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 CO2(temporal)[B] - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00, B] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00, B]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00, B] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00, B] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 CO2(temporal)[C] - 1 CO2(temporal)|per_timestep[2020-01-01 00:00:00, C] - 1 CO2(temporal)|per_timestep[2020-01-01 01:00:00, C]... -1 CO2(temporal)|per_timestep[2020-01-01 06:00:00, C] - 1 CO2(temporal)|per_timestep[2020-01-01 07:00:00, C] - 1 CO2(temporal)|per_timestep[2020-01-01 08:00:00, C] = -0.0 + "CO2(temporal)|per_timestep": |- + Constraint `CO2(temporal)|per_timestep` + [time: 9, scenario: 3]: + --------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00, A] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00, B] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 CO2(temporal)|per_timestep[2020-01-01 00:00:00, C] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00, A] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00, B] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 CO2(temporal)|per_timestep[2020-01-01 01:00:00, C] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 CO2(temporal)|per_timestep[2020-01-01 02:00:00, A] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 CO2(temporal)|per_timestep[2020-01-01 06:00:00, C] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00, A] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00, B] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 CO2(temporal)|per_timestep[2020-01-01 07:00:00, C] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00, A] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00, B] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 CO2(temporal)|per_timestep[2020-01-01 08:00:00, C] - 1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, C] = -0.0 + CO2: |- + Constraint `CO2` + [scenario: 3]: + ------------------------------- + [A]: +1 CO2[A] - 1 CO2(temporal)[A] - 1 CO2(periodic)[A] = -0.0 + [B]: +1 CO2[B] - 1 CO2(temporal)[B] - 1 CO2(periodic)[B] = -0.0 + [C]: +1 CO2[C] - 1 CO2(temporal)[C] - 1 CO2(periodic)[C] = -0.0 + Penalty: |- + Constraint `Penalty` + -------------------- + +1 Penalty - 1 Strom->Penalty - 1 Fernwärme->Penalty - 1 Gas->Penalty = -0.0 + "CO2(temporal)->costs(temporal)": |- + Constraint `CO2(temporal)->costs(temporal)` + [time: 9, scenario: 3]: + ------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, A] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, B] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 CO2(temporal)->costs(temporal)[2020-01-01 00:00:00, C] - 0.2 CO2(temporal)|per_timestep[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, A] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, B] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 CO2(temporal)->costs(temporal)[2020-01-01 01:00:00, C] - 0.2 CO2(temporal)|per_timestep[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 CO2(temporal)->costs(temporal)[2020-01-01 02:00:00, A] - 0.2 CO2(temporal)|per_timestep[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 CO2(temporal)->costs(temporal)[2020-01-01 06:00:00, C] - 0.2 CO2(temporal)|per_timestep[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, A] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, B] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 CO2(temporal)->costs(temporal)[2020-01-01 07:00:00, C] - 0.2 CO2(temporal)|per_timestep[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, A] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, B] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 CO2(temporal)->costs(temporal)[2020-01-01 08:00:00, C] - 0.2 CO2(temporal)|per_timestep[2020-01-01 08:00:00, C] = -0.0 + "Speicher(Q_th_load)|on_hours_total": |- + Constraint `Speicher(Q_th_load)|on_hours_total` + [scenario: 3]: + -------------------------------------------------------------- + [A]: +1 Speicher(Q_th_load)|on_hours_total[A] - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00, A] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00, A]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00, A] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00, A] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Speicher(Q_th_load)|on_hours_total[B] - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00, B] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00, B]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00, B] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00, B] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Speicher(Q_th_load)|on_hours_total[C] - 1 Speicher(Q_th_load)|on[2020-01-01 00:00:00, C] - 1 Speicher(Q_th_load)|on[2020-01-01 01:00:00, C]... -1 Speicher(Q_th_load)|on[2020-01-01 06:00:00, C] - 1 Speicher(Q_th_load)|on[2020-01-01 07:00:00, C] - 1 Speicher(Q_th_load)|on[2020-01-01 08:00:00, C] = -0.0 + "Speicher(Q_th_load)|flow_rate|ub": |- + Constraint `Speicher(Q_th_load)|flow_rate|ub` + [time: 9, scenario: 3]: + --------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, A] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00, A] ≤ -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, B] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00, B] ≤ -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, C] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 00:00:00, C] ≤ -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, A] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00, A] ≤ -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, B] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00, B] ≤ -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, C] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 01:00:00, C] ≤ -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00, A] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 02:00:00, A] ≤ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, C] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 06:00:00, C] ≤ -0.0 + [2020-01-01 07:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, A] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00, A] ≤ -0.0 + [2020-01-01 07:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, B] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00, B] ≤ -0.0 + [2020-01-01 07:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, C] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 07:00:00, C] ≤ -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, A] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00, A] ≤ -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, B] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00, B] ≤ -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, C] - 1e+04 Speicher(Q_th_load)|on[2020-01-01 08:00:00, C] ≤ -0.0 + "Speicher(Q_th_load)|flow_rate|lb": |- + Constraint `Speicher(Q_th_load)|flow_rate|lb` + [time: 9, scenario: 3]: + --------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, A] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00, A] ≥ -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, B] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00, B] ≥ -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, C] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 00:00:00, C] ≥ -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, A] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00, A] ≥ -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, B] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00, B] ≥ -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, C] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 01:00:00, C] ≥ -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00, A] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 02:00:00, A] ≥ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, C] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 06:00:00, C] ≥ -0.0 + [2020-01-01 07:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, A] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00, A] ≥ -0.0 + [2020-01-01 07:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, B] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00, B] ≥ -0.0 + [2020-01-01 07:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, C] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 07:00:00, C] ≥ -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, A] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00, A] ≥ -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, B] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00, B] ≥ -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, C] - 1e-05 Speicher(Q_th_load)|on[2020-01-01 08:00:00, C] ≥ -0.0 + "Speicher(Q_th_load)|total_flow_hours": |- + Constraint `Speicher(Q_th_load)|total_flow_hours` + [scenario: 3]: + ---------------------------------------------------------------- + [A]: +1 Speicher(Q_th_load)|total_flow_hours[A] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, A] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, A]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, A] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, A] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Speicher(Q_th_load)|total_flow_hours[B] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, B] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, B]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, B] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, B] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Speicher(Q_th_load)|total_flow_hours[C] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, C] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, C]... -1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, C] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, C] - 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Speicher(Q_th_unload)|on_hours_total": |- + Constraint `Speicher(Q_th_unload)|on_hours_total` + [scenario: 3]: + ---------------------------------------------------------------- + [A]: +1 Speicher(Q_th_unload)|on_hours_total[A] - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, A] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, A]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00, A] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, A] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Speicher(Q_th_unload)|on_hours_total[B] - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, B] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, B]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00, B] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, B] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Speicher(Q_th_unload)|on_hours_total[C] - 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, C] - 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, C]... -1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00, C] - 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, C] - 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, C] = -0.0 + "Speicher(Q_th_unload)|flow_rate|ub": |- + Constraint `Speicher(Q_th_unload)|flow_rate|ub` + [time: 9, scenario: 3]: + ----------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, A] ≤ -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, B] ≤ -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, C] ≤ -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, A] ≤ -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, B] ≤ -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, C] ≤ -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00, A] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 02:00:00, A] ≤ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 06:00:00, C] ≤ -0.0 + [2020-01-01 07:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, A] ≤ -0.0 + [2020-01-01 07:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, B] ≤ -0.0 + [2020-01-01 07:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, C] ≤ -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, A] ≤ -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, B] ≤ -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] - 1e+04 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, C] ≤ -0.0 + "Speicher(Q_th_unload)|flow_rate|lb": |- + Constraint `Speicher(Q_th_unload)|flow_rate|lb` + [time: 9, scenario: 3]: + ----------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, A] ≥ -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, B] ≥ -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, C] ≥ -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, A] ≥ -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, B] ≥ -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, C] ≥ -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00, A] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 02:00:00, A] ≥ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 06:00:00, C] ≥ -0.0 + [2020-01-01 07:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, A] ≥ -0.0 + [2020-01-01 07:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, B] ≥ -0.0 + [2020-01-01 07:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, C] ≥ -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, A] ≥ -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, B] ≥ -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] - 1e-05 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, C] ≥ -0.0 + "Speicher(Q_th_unload)|total_flow_hours": |- + Constraint `Speicher(Q_th_unload)|total_flow_hours` + [scenario: 3]: + ------------------------------------------------------------------ + [A]: +1 Speicher(Q_th_unload)|total_flow_hours[A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Speicher(Q_th_unload)|total_flow_hours[B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Speicher(Q_th_unload)|total_flow_hours[C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C]... -1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Speicher|prevent_simultaneous_use": |- + Constraint `Speicher|prevent_simultaneous_use` + [time: 9, scenario: 3]: + ---------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00, A] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, A] ≤ 1.0 + [2020-01-01 00:00:00, B]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00, B] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, B] ≤ 1.0 + [2020-01-01 00:00:00, C]: +1 Speicher(Q_th_load)|on[2020-01-01 00:00:00, C] + 1 Speicher(Q_th_unload)|on[2020-01-01 00:00:00, C] ≤ 1.0 + [2020-01-01 01:00:00, A]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00, A] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, A] ≤ 1.0 + [2020-01-01 01:00:00, B]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00, B] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, B] ≤ 1.0 + [2020-01-01 01:00:00, C]: +1 Speicher(Q_th_load)|on[2020-01-01 01:00:00, C] + 1 Speicher(Q_th_unload)|on[2020-01-01 01:00:00, C] ≤ 1.0 + [2020-01-01 02:00:00, A]: +1 Speicher(Q_th_load)|on[2020-01-01 02:00:00, A] + 1 Speicher(Q_th_unload)|on[2020-01-01 02:00:00, A] ≤ 1.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher(Q_th_load)|on[2020-01-01 06:00:00, C] + 1 Speicher(Q_th_unload)|on[2020-01-01 06:00:00, C] ≤ 1.0 + [2020-01-01 07:00:00, A]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00, A] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, A] ≤ 1.0 + [2020-01-01 07:00:00, B]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00, B] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, B] ≤ 1.0 + [2020-01-01 07:00:00, C]: +1 Speicher(Q_th_load)|on[2020-01-01 07:00:00, C] + 1 Speicher(Q_th_unload)|on[2020-01-01 07:00:00, C] ≤ 1.0 + [2020-01-01 08:00:00, A]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00, A] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, A] ≤ 1.0 + [2020-01-01 08:00:00, B]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00, B] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, B] ≤ 1.0 + [2020-01-01 08:00:00, C]: +1 Speicher(Q_th_load)|on[2020-01-01 08:00:00, C] + 1 Speicher(Q_th_unload)|on[2020-01-01 08:00:00, C] ≤ 1.0 + "Speicher|netto_discharge": |- + Constraint `Speicher|netto_discharge` + [time: 9, scenario: 3]: + ------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher|netto_discharge[2020-01-01 00:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher|netto_discharge[2020-01-01 00:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher|netto_discharge[2020-01-01 00:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher|netto_discharge[2020-01-01 01:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher|netto_discharge[2020-01-01 01:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher|netto_discharge[2020-01-01 01:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher|netto_discharge[2020-01-01 02:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00, A] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher|netto_discharge[2020-01-01 06:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 Speicher|netto_discharge[2020-01-01 07:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 Speicher|netto_discharge[2020-01-01 07:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 Speicher|netto_discharge[2020-01-01 07:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher|netto_discharge[2020-01-01 08:00:00, A] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher|netto_discharge[2020-01-01 08:00:00, B] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher|netto_discharge[2020-01-01 08:00:00, C] - 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] + 1 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Speicher|charge_state": |- + Constraint `Speicher|charge_state` + [time: 9, scenario: 3]: + ---------------------------------------------------------- + [2020-01-01 01:00:00, A]: +1 Speicher|charge_state[2020-01-01 01:00:00, A] - 0.92 Speicher|charge_state[2020-01-01 00:00:00, A] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, A] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher|charge_state[2020-01-01 01:00:00, B] - 0.92 Speicher|charge_state[2020-01-01 00:00:00, B] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, B] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher|charge_state[2020-01-01 01:00:00, C] - 0.92 Speicher|charge_state[2020-01-01 00:00:00, C] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 00:00:00, C] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher|charge_state[2020-01-01 02:00:00, A] - 0.92 Speicher|charge_state[2020-01-01 01:00:00, A] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, A] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 02:00:00, B]: +1 Speicher|charge_state[2020-01-01 02:00:00, B] - 0.92 Speicher|charge_state[2020-01-01 01:00:00, B] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, B] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 02:00:00, C]: +1 Speicher|charge_state[2020-01-01 02:00:00, C] - 0.92 Speicher|charge_state[2020-01-01 01:00:00, C] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 01:00:00, C] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 03:00:00, A]: +1 Speicher|charge_state[2020-01-01 03:00:00, A] - 0.92 Speicher|charge_state[2020-01-01 02:00:00, A] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 02:00:00, A] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 07:00:00, C]: +1 Speicher|charge_state[2020-01-01 07:00:00, C] - 0.92 Speicher|charge_state[2020-01-01 06:00:00, C] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 06:00:00, C] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher|charge_state[2020-01-01 08:00:00, A] - 0.92 Speicher|charge_state[2020-01-01 07:00:00, A] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, A] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher|charge_state[2020-01-01 08:00:00, B] - 0.92 Speicher|charge_state[2020-01-01 07:00:00, B] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, B] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher|charge_state[2020-01-01 08:00:00, C] - 0.92 Speicher|charge_state[2020-01-01 07:00:00, C] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 07:00:00, C] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 09:00:00, A]: +1 Speicher|charge_state[2020-01-01 09:00:00, A] - 0.92 Speicher|charge_state[2020-01-01 08:00:00, A] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, A] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 09:00:00, B]: +1 Speicher|charge_state[2020-01-01 09:00:00, B] - 0.92 Speicher|charge_state[2020-01-01 08:00:00, B] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, B] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 09:00:00, C]: +1 Speicher|charge_state[2020-01-01 09:00:00, C] - 0.92 Speicher|charge_state[2020-01-01 08:00:00, C] - 0.9 Speicher(Q_th_load)|flow_rate[2020-01-01 08:00:00, C] + 1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Speicher->costs(periodic)": |- + Constraint `Speicher->costs(periodic)` + [scenario: 3]: + ----------------------------------------------------- + [A]: +1 Speicher->costs(periodic)[A] = 20.0 + [B]: +1 Speicher->costs(periodic)[B] = 20.0 + [C]: +1 Speicher->costs(periodic)[C] = 20.0 + "Speicher|charge_state|ub": |- + Constraint `Speicher|charge_state|ub` + [time: 10, scenario: 3]: + -------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher|charge_state[2020-01-01 00:00:00, A] - 0.8 Speicher|size[A] ≤ -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher|charge_state[2020-01-01 00:00:00, B] - 0.8 Speicher|size[B] ≤ -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher|charge_state[2020-01-01 00:00:00, C] - 0.8 Speicher|size[C] ≤ -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher|charge_state[2020-01-01 01:00:00, A] - 0.7 Speicher|size[A] ≤ -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher|charge_state[2020-01-01 01:00:00, B] - 0.7 Speicher|size[B] ≤ -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher|charge_state[2020-01-01 01:00:00, C] - 0.7 Speicher|size[C] ≤ -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher|charge_state[2020-01-01 02:00:00, A] - 0.8 Speicher|size[A] ≤ -0.0 + ... + [2020-01-01 07:00:00, C]: +1 Speicher|charge_state[2020-01-01 07:00:00, C] - 0.8 Speicher|size[C] ≤ -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher|charge_state[2020-01-01 08:00:00, A] - 0.8 Speicher|size[A] ≤ -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher|charge_state[2020-01-01 08:00:00, B] - 0.8 Speicher|size[B] ≤ -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher|charge_state[2020-01-01 08:00:00, C] - 0.8 Speicher|size[C] ≤ -0.0 + [2020-01-01 09:00:00, A]: +1 Speicher|charge_state[2020-01-01 09:00:00, A] - 0.8 Speicher|size[A] ≤ -0.0 + [2020-01-01 09:00:00, B]: +1 Speicher|charge_state[2020-01-01 09:00:00, B] - 0.8 Speicher|size[B] ≤ -0.0 + [2020-01-01 09:00:00, C]: +1 Speicher|charge_state[2020-01-01 09:00:00, C] - 0.8 Speicher|size[C] ≤ -0.0 + "Speicher|charge_state|lb": |- + Constraint `Speicher|charge_state|lb` + [time: 10, scenario: 3]: + -------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Speicher|charge_state[2020-01-01 00:00:00, A] ≥ -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher|charge_state[2020-01-01 00:00:00, B] ≥ -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher|charge_state[2020-01-01 00:00:00, C] ≥ -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher|charge_state[2020-01-01 01:00:00, A] ≥ -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher|charge_state[2020-01-01 01:00:00, B] ≥ -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher|charge_state[2020-01-01 01:00:00, C] ≥ -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher|charge_state[2020-01-01 02:00:00, A] ≥ -0.0 + ... + [2020-01-01 07:00:00, C]: +1 Speicher|charge_state[2020-01-01 07:00:00, C] ≥ -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher|charge_state[2020-01-01 08:00:00, A] ≥ -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher|charge_state[2020-01-01 08:00:00, B] ≥ -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher|charge_state[2020-01-01 08:00:00, C] ≥ -0.0 + [2020-01-01 09:00:00, A]: +1 Speicher|charge_state[2020-01-01 09:00:00, A] ≥ -0.0 + [2020-01-01 09:00:00, B]: +1 Speicher|charge_state[2020-01-01 09:00:00, B] ≥ -0.0 + [2020-01-01 09:00:00, C]: +1 Speicher|charge_state[2020-01-01 09:00:00, C] ≥ -0.0 + "Speicher|initial_charge_state": |- + Constraint `Speicher|initial_charge_state` + [scenario: 3]: + --------------------------------------------------------- + [A]: +1 Speicher|charge_state[2020-01-01 00:00:00, A] = -0.0 + [B]: +1 Speicher|charge_state[2020-01-01 00:00:00, B] = -0.0 + [C]: +1 Speicher|charge_state[2020-01-01 00:00:00, C] = -0.0 + "Boiler(Q_fu)|total_flow_hours": |- + Constraint `Boiler(Q_fu)|total_flow_hours` + [scenario: 3]: + --------------------------------------------------------- + [A]: +1 Boiler(Q_fu)|total_flow_hours[A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, A]... -1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Boiler(Q_fu)|total_flow_hours[B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, B]... -1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Boiler(Q_fu)|total_flow_hours[C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, C]... -1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Boiler(Q_th)|on_hours_total": |- + Constraint `Boiler(Q_th)|on_hours_total` + [scenario: 3]: + ------------------------------------------------------- + [A]: +1 Boiler(Q_th)|on_hours_total[A] - 1 Boiler(Q_th)|on[2020-01-01 00:00:00, A] - 1 Boiler(Q_th)|on[2020-01-01 01:00:00, A]... -1 Boiler(Q_th)|on[2020-01-01 06:00:00, A] - 1 Boiler(Q_th)|on[2020-01-01 07:00:00, A] - 1 Boiler(Q_th)|on[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Boiler(Q_th)|on_hours_total[B] - 1 Boiler(Q_th)|on[2020-01-01 00:00:00, B] - 1 Boiler(Q_th)|on[2020-01-01 01:00:00, B]... -1 Boiler(Q_th)|on[2020-01-01 06:00:00, B] - 1 Boiler(Q_th)|on[2020-01-01 07:00:00, B] - 1 Boiler(Q_th)|on[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Boiler(Q_th)|on_hours_total[C] - 1 Boiler(Q_th)|on[2020-01-01 00:00:00, C] - 1 Boiler(Q_th)|on[2020-01-01 01:00:00, C]... -1 Boiler(Q_th)|on[2020-01-01 06:00:00, C] - 1 Boiler(Q_th)|on[2020-01-01 07:00:00, C] - 1 Boiler(Q_th)|on[2020-01-01 08:00:00, C] = -0.0 + "Boiler(Q_th)|flow_rate|ub": |- + Constraint `Boiler(Q_th)|flow_rate|ub` + [time: 9, scenario: 3]: + -------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, A] - 50 Boiler(Q_th)|on[2020-01-01 00:00:00, A] ≤ -0.0 + [2020-01-01 00:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, B] - 50 Boiler(Q_th)|on[2020-01-01 00:00:00, B] ≤ -0.0 + [2020-01-01 00:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, C] - 50 Boiler(Q_th)|on[2020-01-01 00:00:00, C] ≤ -0.0 + [2020-01-01 01:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, A] - 50 Boiler(Q_th)|on[2020-01-01 01:00:00, A] ≤ -0.0 + [2020-01-01 01:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, B] - 50 Boiler(Q_th)|on[2020-01-01 01:00:00, B] ≤ -0.0 + [2020-01-01 01:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, C] - 50 Boiler(Q_th)|on[2020-01-01 01:00:00, C] ≤ -0.0 + [2020-01-01 02:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, A] - 50 Boiler(Q_th)|on[2020-01-01 02:00:00, A] ≤ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, C] - 50 Boiler(Q_th)|on[2020-01-01 06:00:00, C] ≤ -0.0 + [2020-01-01 07:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, A] - 50 Boiler(Q_th)|on[2020-01-01 07:00:00, A] ≤ -0.0 + [2020-01-01 07:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, B] - 50 Boiler(Q_th)|on[2020-01-01 07:00:00, B] ≤ -0.0 + [2020-01-01 07:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, C] - 50 Boiler(Q_th)|on[2020-01-01 07:00:00, C] ≤ -0.0 + [2020-01-01 08:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, A] - 50 Boiler(Q_th)|on[2020-01-01 08:00:00, A] ≤ -0.0 + [2020-01-01 08:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, B] - 50 Boiler(Q_th)|on[2020-01-01 08:00:00, B] ≤ -0.0 + [2020-01-01 08:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, C] - 50 Boiler(Q_th)|on[2020-01-01 08:00:00, C] ≤ -0.0 + "Boiler(Q_th)|flow_rate|lb": |- + Constraint `Boiler(Q_th)|flow_rate|lb` + [time: 9, scenario: 3]: + -------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, A] - 5 Boiler(Q_th)|on[2020-01-01 00:00:00, A] ≥ -0.0 + [2020-01-01 00:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, B] - 5 Boiler(Q_th)|on[2020-01-01 00:00:00, B] ≥ -0.0 + [2020-01-01 00:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, C] - 5 Boiler(Q_th)|on[2020-01-01 00:00:00, C] ≥ -0.0 + [2020-01-01 01:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, A] - 5 Boiler(Q_th)|on[2020-01-01 01:00:00, A] ≥ -0.0 + [2020-01-01 01:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, B] - 5 Boiler(Q_th)|on[2020-01-01 01:00:00, B] ≥ -0.0 + [2020-01-01 01:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, C] - 5 Boiler(Q_th)|on[2020-01-01 01:00:00, C] ≥ -0.0 + [2020-01-01 02:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, A] - 5 Boiler(Q_th)|on[2020-01-01 02:00:00, A] ≥ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, C] - 5 Boiler(Q_th)|on[2020-01-01 06:00:00, C] ≥ -0.0 + [2020-01-01 07:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, A] - 5 Boiler(Q_th)|on[2020-01-01 07:00:00, A] ≥ -0.0 + [2020-01-01 07:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, B] - 5 Boiler(Q_th)|on[2020-01-01 07:00:00, B] ≥ -0.0 + [2020-01-01 07:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, C] - 5 Boiler(Q_th)|on[2020-01-01 07:00:00, C] ≥ -0.0 + [2020-01-01 08:00:00, A]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, A] - 5 Boiler(Q_th)|on[2020-01-01 08:00:00, A] ≥ -0.0 + [2020-01-01 08:00:00, B]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, B] - 5 Boiler(Q_th)|on[2020-01-01 08:00:00, B] ≥ -0.0 + [2020-01-01 08:00:00, C]: +1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, C] - 5 Boiler(Q_th)|on[2020-01-01 08:00:00, C] ≥ -0.0 + "Boiler(Q_th)|total_flow_hours": |- + Constraint `Boiler(Q_th)|total_flow_hours` + [scenario: 3]: + --------------------------------------------------------- + [A]: +1 Boiler(Q_th)|total_flow_hours[A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, A]... -1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Boiler(Q_th)|total_flow_hours[B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, B]... -1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Boiler(Q_th)|total_flow_hours[C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, C]... -1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Boiler|conversion_0": |- + Constraint `Boiler|conversion_0` + [time: 9, scenario: 3]: + -------------------------------------------------------- + [2020-01-01 00:00:00, A]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, A] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, B] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +0.5 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, C] - 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Wärmelast(Q_th_Last)|total_flow_hours": |- + Constraint `Wärmelast(Q_th_Last)|total_flow_hours` + [scenario: 3]: + ----------------------------------------------------------------- + [A]: +1 Wärmelast(Q_th_Last)|total_flow_hours[A] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, A] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, A]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00, A] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, A] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Wärmelast(Q_th_Last)|total_flow_hours[B] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, B] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, B]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00, B] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, B] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Wärmelast(Q_th_Last)|total_flow_hours[C] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, C] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, C]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00, C] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, C] - 1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Gastarif(Q_Gas)|total_flow_hours": |- + Constraint `Gastarif(Q_Gas)|total_flow_hours` + [scenario: 3]: + ------------------------------------------------------------ + [A]: +1 Gastarif(Q_Gas)|total_flow_hours[A] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, A] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, A]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, A] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, A] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Gastarif(Q_Gas)|total_flow_hours[B] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, B] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, B]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, B] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, B] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Gastarif(Q_Gas)|total_flow_hours[C] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, C] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, C]... -1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, C] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, C] - 1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Gastarif(Q_Gas)->costs(temporal)": |- + Constraint `Gastarif(Q_Gas)->costs(temporal)` + [time: 9, scenario: 3]: + --------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, A] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, B] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 00:00:00, C] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, A] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, B] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 01:00:00, C] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 02:00:00, A] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 06:00:00, C] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, A] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, B] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 07:00:00, C] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, A] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, B] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Gastarif(Q_Gas)->costs(temporal)[2020-01-01 08:00:00, C] - 0.04 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Gastarif(Q_Gas)->CO2(temporal)": |- + Constraint `Gastarif(Q_Gas)->CO2(temporal)` + [time: 9, scenario: 3]: + ------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, A] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, B] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 00:00:00, C] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, A] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, B] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 01:00:00, C] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 02:00:00, A] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 06:00:00, C] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, A] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, B] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 07:00:00, C] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, A] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, B] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Gastarif(Q_Gas)->CO2(temporal)[2020-01-01 08:00:00, C] - 0.3 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Einspeisung(P_el)|total_flow_hours": |- + Constraint `Einspeisung(P_el)|total_flow_hours` + [scenario: 3]: + -------------------------------------------------------------- + [A]: +1 Einspeisung(P_el)|total_flow_hours[A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, A]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 Einspeisung(P_el)|total_flow_hours[B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, B]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 Einspeisung(P_el)|total_flow_hours[C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, C]... -1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Einspeisung(P_el)->costs(temporal)": |- + Constraint `Einspeisung(P_el)->costs(temporal)` + [time: 9, scenario: 3]: + ----------------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, A] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, B] + 0.1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 00:00:00, C] + 0.15 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, A] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, B] + 0.1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 01:00:00, C] + 0.15 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 02:00:00, A] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 06:00:00, C] + 0.15 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, A] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, B] + 0.1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 07:00:00, C] + 0.15 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, A] + 0.08 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, B] + 0.1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Einspeisung(P_el)->costs(temporal)[2020-01-01 08:00:00, C] + 0.15 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "CHP_unit(Q_fu)|total_flow_hours": |- + Constraint `CHP_unit(Q_fu)|total_flow_hours` + [scenario: 3]: + ----------------------------------------------------------- + [A]: +1 CHP_unit(Q_fu)|total_flow_hours[A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, A]... -1 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 CHP_unit(Q_fu)|total_flow_hours[B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, B]... -1 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 CHP_unit(Q_fu)|total_flow_hours[C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, C]... -1 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "CHP_unit(Q_th)|total_flow_hours": |- + Constraint `CHP_unit(Q_th)|total_flow_hours` + [scenario: 3]: + ----------------------------------------------------------- + [A]: +1 CHP_unit(Q_th)|total_flow_hours[A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, A]... -1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 CHP_unit(Q_th)|total_flow_hours[B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, B]... -1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 CHP_unit(Q_th)|total_flow_hours[C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, C]... -1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "CHP_unit(P_el)|on_hours_total": |- + Constraint `CHP_unit(P_el)|on_hours_total` + [scenario: 3]: + --------------------------------------------------------- + [A]: +1 CHP_unit(P_el)|on_hours_total[A] - 1 CHP_unit(P_el)|on[2020-01-01 00:00:00, A] - 1 CHP_unit(P_el)|on[2020-01-01 01:00:00, A]... -1 CHP_unit(P_el)|on[2020-01-01 06:00:00, A] - 1 CHP_unit(P_el)|on[2020-01-01 07:00:00, A] - 1 CHP_unit(P_el)|on[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 CHP_unit(P_el)|on_hours_total[B] - 1 CHP_unit(P_el)|on[2020-01-01 00:00:00, B] - 1 CHP_unit(P_el)|on[2020-01-01 01:00:00, B]... -1 CHP_unit(P_el)|on[2020-01-01 06:00:00, B] - 1 CHP_unit(P_el)|on[2020-01-01 07:00:00, B] - 1 CHP_unit(P_el)|on[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 CHP_unit(P_el)|on_hours_total[C] - 1 CHP_unit(P_el)|on[2020-01-01 00:00:00, C] - 1 CHP_unit(P_el)|on[2020-01-01 01:00:00, C]... -1 CHP_unit(P_el)|on[2020-01-01 06:00:00, C] - 1 CHP_unit(P_el)|on[2020-01-01 07:00:00, C] - 1 CHP_unit(P_el)|on[2020-01-01 08:00:00, C] = -0.0 + "CHP_unit(P_el)|flow_rate|ub": |- + Constraint `CHP_unit(P_el)|flow_rate|ub` + [time: 9, scenario: 3]: + ---------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, A] - 60 CHP_unit(P_el)|on[2020-01-01 00:00:00, A] ≤ -0.0 + [2020-01-01 00:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, B] - 60 CHP_unit(P_el)|on[2020-01-01 00:00:00, B] ≤ -0.0 + [2020-01-01 00:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, C] - 60 CHP_unit(P_el)|on[2020-01-01 00:00:00, C] ≤ -0.0 + [2020-01-01 01:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, A] - 60 CHP_unit(P_el)|on[2020-01-01 01:00:00, A] ≤ -0.0 + [2020-01-01 01:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, B] - 60 CHP_unit(P_el)|on[2020-01-01 01:00:00, B] ≤ -0.0 + [2020-01-01 01:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, C] - 60 CHP_unit(P_el)|on[2020-01-01 01:00:00, C] ≤ -0.0 + [2020-01-01 02:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00, A] - 60 CHP_unit(P_el)|on[2020-01-01 02:00:00, A] ≤ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, C] - 60 CHP_unit(P_el)|on[2020-01-01 06:00:00, C] ≤ -0.0 + [2020-01-01 07:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, A] - 60 CHP_unit(P_el)|on[2020-01-01 07:00:00, A] ≤ -0.0 + [2020-01-01 07:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, B] - 60 CHP_unit(P_el)|on[2020-01-01 07:00:00, B] ≤ -0.0 + [2020-01-01 07:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, C] - 60 CHP_unit(P_el)|on[2020-01-01 07:00:00, C] ≤ -0.0 + [2020-01-01 08:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, A] - 60 CHP_unit(P_el)|on[2020-01-01 08:00:00, A] ≤ -0.0 + [2020-01-01 08:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, B] - 60 CHP_unit(P_el)|on[2020-01-01 08:00:00, B] ≤ -0.0 + [2020-01-01 08:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, C] - 60 CHP_unit(P_el)|on[2020-01-01 08:00:00, C] ≤ -0.0 + "CHP_unit(P_el)|flow_rate|lb": |- + Constraint `CHP_unit(P_el)|flow_rate|lb` + [time: 9, scenario: 3]: + ---------------------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, A] - 5 CHP_unit(P_el)|on[2020-01-01 00:00:00, A] ≥ -0.0 + [2020-01-01 00:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, B] - 5 CHP_unit(P_el)|on[2020-01-01 00:00:00, B] ≥ -0.0 + [2020-01-01 00:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, C] - 5 CHP_unit(P_el)|on[2020-01-01 00:00:00, C] ≥ -0.0 + [2020-01-01 01:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, A] - 5 CHP_unit(P_el)|on[2020-01-01 01:00:00, A] ≥ -0.0 + [2020-01-01 01:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, B] - 5 CHP_unit(P_el)|on[2020-01-01 01:00:00, B] ≥ -0.0 + [2020-01-01 01:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, C] - 5 CHP_unit(P_el)|on[2020-01-01 01:00:00, C] ≥ -0.0 + [2020-01-01 02:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00, A] - 5 CHP_unit(P_el)|on[2020-01-01 02:00:00, A] ≥ -0.0 + ... + [2020-01-01 06:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, C] - 5 CHP_unit(P_el)|on[2020-01-01 06:00:00, C] ≥ -0.0 + [2020-01-01 07:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, A] - 5 CHP_unit(P_el)|on[2020-01-01 07:00:00, A] ≥ -0.0 + [2020-01-01 07:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, B] - 5 CHP_unit(P_el)|on[2020-01-01 07:00:00, B] ≥ -0.0 + [2020-01-01 07:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, C] - 5 CHP_unit(P_el)|on[2020-01-01 07:00:00, C] ≥ -0.0 + [2020-01-01 08:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, A] - 5 CHP_unit(P_el)|on[2020-01-01 08:00:00, A] ≥ -0.0 + [2020-01-01 08:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, B] - 5 CHP_unit(P_el)|on[2020-01-01 08:00:00, B] ≥ -0.0 + [2020-01-01 08:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, C] - 5 CHP_unit(P_el)|on[2020-01-01 08:00:00, C] ≥ -0.0 + "CHP_unit(P_el)|total_flow_hours": |- + Constraint `CHP_unit(P_el)|total_flow_hours` + [scenario: 3]: + ----------------------------------------------------------- + [A]: +1 CHP_unit(P_el)|total_flow_hours[A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, A]... -1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [B]: +1 CHP_unit(P_el)|total_flow_hours[B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, B]... -1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [C]: +1 CHP_unit(P_el)|total_flow_hours[C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, C]... -1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "CHP_unit|conversion_0": |- + Constraint `CHP_unit|conversion_0` + [time: 9, scenario: 3]: + ---------------------------------------------------------- + [2020-01-01 00:00:00, A]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, A] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, B] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +0.5 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, C] - 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "CHP_unit|conversion_1": |- + Constraint `CHP_unit|conversion_1` + [time: 9, scenario: 3]: + ---------------------------------------------------------- + [2020-01-01 00:00:00, A]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, A] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, B] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +0.4 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, C] - 1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, C] = -0.0 + "Strom|balance": |- + Constraint `Strom|balance` + [time: 9, scenario: 3]: + -------------------------------------------------- + [2020-01-01 00:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, A] + 1 Strom|excess_input[2020-01-01 00:00:00, A] - 1 Strom|excess_output[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, B] + 1 Strom|excess_input[2020-01-01 00:00:00, B] - 1 Strom|excess_output[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 00:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 00:00:00, C] + 1 Strom|excess_input[2020-01-01 00:00:00, C] - 1 Strom|excess_output[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, A] + 1 Strom|excess_input[2020-01-01 01:00:00, A] - 1 Strom|excess_output[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, B] + 1 Strom|excess_input[2020-01-01 01:00:00, B] - 1 Strom|excess_output[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 01:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 01:00:00, C] + 1 Strom|excess_input[2020-01-01 01:00:00, C] - 1 Strom|excess_output[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 02:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 02:00:00, A] + 1 Strom|excess_input[2020-01-01 02:00:00, A] - 1 Strom|excess_output[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 06:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 06:00:00, C] + 1 Strom|excess_input[2020-01-01 06:00:00, C] - 1 Strom|excess_output[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, A] + 1 Strom|excess_input[2020-01-01 07:00:00, A] - 1 Strom|excess_output[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, B] + 1 Strom|excess_input[2020-01-01 07:00:00, B] - 1 Strom|excess_output[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 07:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 07:00:00, C] + 1 Strom|excess_input[2020-01-01 07:00:00, C] - 1 Strom|excess_output[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, A] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, A] + 1 Strom|excess_input[2020-01-01 08:00:00, A] - 1 Strom|excess_output[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, B] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, B] + 1 Strom|excess_input[2020-01-01 08:00:00, B] - 1 Strom|excess_output[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 CHP_unit(P_el)|flow_rate[2020-01-01 08:00:00, C] - 1 Einspeisung(P_el)|flow_rate[2020-01-01 08:00:00, C] + 1 Strom|excess_input[2020-01-01 08:00:00, C] - 1 Strom|excess_output[2020-01-01 08:00:00, C] = -0.0 + "Strom->Penalty": |- + Constraint `Strom->Penalty` + --------------------------- + +1 Strom->Penalty - 1e+05 Strom|excess_input[2020-01-01 00:00:00, A] - 1e+05 Strom|excess_input[2020-01-01 00:00:00, B]... -1e+05 Strom|excess_output[2020-01-01 08:00:00, A] - 1e+05 Strom|excess_output[2020-01-01 08:00:00, B] - 1e+05 Strom|excess_output[2020-01-01 08:00:00, C] = -0.0 + "Fernwärme|balance": |- + Constraint `Fernwärme|balance` + [time: 9, scenario: 3]: + ------------------------------------------------------ + [2020-01-01 00:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, A] + 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, A] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, A]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, A] + 1 Fernwärme|excess_input[2020-01-01 00:00:00, A] - 1 Fernwärme|excess_output[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, B] + 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, B] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, B]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, B] + 1 Fernwärme|excess_input[2020-01-01 00:00:00, B] - 1 Fernwärme|excess_output[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 00:00:00, C] + 1 Boiler(Q_th)|flow_rate[2020-01-01 00:00:00, C] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 00:00:00, C]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 00:00:00, C] + 1 Fernwärme|excess_input[2020-01-01 00:00:00, C] - 1 Fernwärme|excess_output[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, A] + 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, A] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, A]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, A] + 1 Fernwärme|excess_input[2020-01-01 01:00:00, A] - 1 Fernwärme|excess_output[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, B] + 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, B] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, B]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, B] + 1 Fernwärme|excess_input[2020-01-01 01:00:00, B] - 1 Fernwärme|excess_output[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 01:00:00, C] + 1 Boiler(Q_th)|flow_rate[2020-01-01 01:00:00, C] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 01:00:00, C]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 01:00:00, C] + 1 Fernwärme|excess_input[2020-01-01 01:00:00, C] - 1 Fernwärme|excess_output[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 02:00:00, A] + 1 Boiler(Q_th)|flow_rate[2020-01-01 02:00:00, A] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 02:00:00, A]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 02:00:00, A] + 1 Fernwärme|excess_input[2020-01-01 02:00:00, A] - 1 Fernwärme|excess_output[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 06:00:00, C] + 1 Boiler(Q_th)|flow_rate[2020-01-01 06:00:00, C] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 06:00:00, C]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 06:00:00, C] + 1 Fernwärme|excess_input[2020-01-01 06:00:00, C] - 1 Fernwärme|excess_output[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, A] + 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, A] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, A]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, A] + 1 Fernwärme|excess_input[2020-01-01 07:00:00, A] - 1 Fernwärme|excess_output[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, B] + 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, B] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, B]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, B] + 1 Fernwärme|excess_input[2020-01-01 07:00:00, B] - 1 Fernwärme|excess_output[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 07:00:00, C] + 1 Boiler(Q_th)|flow_rate[2020-01-01 07:00:00, C] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 07:00:00, C]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 07:00:00, C] + 1 Fernwärme|excess_input[2020-01-01 07:00:00, C] - 1 Fernwärme|excess_output[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, A] + 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, A] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, A]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, A] + 1 Fernwärme|excess_input[2020-01-01 08:00:00, A] - 1 Fernwärme|excess_output[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, B] + 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, B] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, B]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, B] + 1 Fernwärme|excess_input[2020-01-01 08:00:00, B] - 1 Fernwärme|excess_output[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Speicher(Q_th_unload)|flow_rate[2020-01-01 08:00:00, C] + 1 Boiler(Q_th)|flow_rate[2020-01-01 08:00:00, C] + 1 CHP_unit(Q_th)|flow_rate[2020-01-01 08:00:00, C]... -1 Wärmelast(Q_th_Last)|flow_rate[2020-01-01 08:00:00, C] + 1 Fernwärme|excess_input[2020-01-01 08:00:00, C] - 1 Fernwärme|excess_output[2020-01-01 08:00:00, C] = -0.0 + "Fernwärme->Penalty": |- + Constraint `Fernwärme->Penalty` + ------------------------------- + +1 Fernwärme->Penalty - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00, A] - 1e+05 Fernwärme|excess_input[2020-01-01 00:00:00, B]... -1e+05 Fernwärme|excess_output[2020-01-01 08:00:00, A] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00, B] - 1e+05 Fernwärme|excess_output[2020-01-01 08:00:00, C] = -0.0 + "Gas|balance": |- + Constraint `Gas|balance` + [time: 9, scenario: 3]: + ------------------------------------------------ + [2020-01-01 00:00:00, A]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, A] + 1 Gas|excess_input[2020-01-01 00:00:00, A] - 1 Gas|excess_output[2020-01-01 00:00:00, A] = -0.0 + [2020-01-01 00:00:00, B]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, B] + 1 Gas|excess_input[2020-01-01 00:00:00, B] - 1 Gas|excess_output[2020-01-01 00:00:00, B] = -0.0 + [2020-01-01 00:00:00, C]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 00:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 00:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 00:00:00, C] + 1 Gas|excess_input[2020-01-01 00:00:00, C] - 1 Gas|excess_output[2020-01-01 00:00:00, C] = -0.0 + [2020-01-01 01:00:00, A]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, A] + 1 Gas|excess_input[2020-01-01 01:00:00, A] - 1 Gas|excess_output[2020-01-01 01:00:00, A] = -0.0 + [2020-01-01 01:00:00, B]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, B] + 1 Gas|excess_input[2020-01-01 01:00:00, B] - 1 Gas|excess_output[2020-01-01 01:00:00, B] = -0.0 + [2020-01-01 01:00:00, C]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 01:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 01:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 01:00:00, C] + 1 Gas|excess_input[2020-01-01 01:00:00, C] - 1 Gas|excess_output[2020-01-01 01:00:00, C] = -0.0 + [2020-01-01 02:00:00, A]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 02:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 02:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 02:00:00, A] + 1 Gas|excess_input[2020-01-01 02:00:00, A] - 1 Gas|excess_output[2020-01-01 02:00:00, A] = -0.0 + ... + [2020-01-01 06:00:00, C]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 06:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 06:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 06:00:00, C] + 1 Gas|excess_input[2020-01-01 06:00:00, C] - 1 Gas|excess_output[2020-01-01 06:00:00, C] = -0.0 + [2020-01-01 07:00:00, A]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, A] + 1 Gas|excess_input[2020-01-01 07:00:00, A] - 1 Gas|excess_output[2020-01-01 07:00:00, A] = -0.0 + [2020-01-01 07:00:00, B]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, B] + 1 Gas|excess_input[2020-01-01 07:00:00, B] - 1 Gas|excess_output[2020-01-01 07:00:00, B] = -0.0 + [2020-01-01 07:00:00, C]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 07:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 07:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 07:00:00, C] + 1 Gas|excess_input[2020-01-01 07:00:00, C] - 1 Gas|excess_output[2020-01-01 07:00:00, C] = -0.0 + [2020-01-01 08:00:00, A]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, A] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, A] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, A] + 1 Gas|excess_input[2020-01-01 08:00:00, A] - 1 Gas|excess_output[2020-01-01 08:00:00, A] = -0.0 + [2020-01-01 08:00:00, B]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, B] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, B] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, B] + 1 Gas|excess_input[2020-01-01 08:00:00, B] - 1 Gas|excess_output[2020-01-01 08:00:00, B] = -0.0 + [2020-01-01 08:00:00, C]: +1 Gastarif(Q_Gas)|flow_rate[2020-01-01 08:00:00, C] - 1 Boiler(Q_fu)|flow_rate[2020-01-01 08:00:00, C] - 1 CHP_unit(Q_fu)|flow_rate[2020-01-01 08:00:00, C] + 1 Gas|excess_input[2020-01-01 08:00:00, C] - 1 Gas|excess_output[2020-01-01 08:00:00, C] = -0.0 + "Gas->Penalty": |- + Constraint `Gas->Penalty` + ------------------------- + +1 Gas->Penalty - 1e+05 Gas|excess_input[2020-01-01 00:00:00, A] - 1e+05 Gas|excess_input[2020-01-01 00:00:00, B]... -1e+05 Gas|excess_output[2020-01-01 08:00:00, A] - 1e+05 Gas|excess_output[2020-01-01 08:00:00, B] - 1e+05 Gas|excess_output[2020-01-01 08:00:00, C] = -0.0 + "Speicher|size|scenario_independent": |- + Constraint `Speicher|size|scenario_independent` + [scenario: 2]: + -------------------------------------------------------------- + [B]: +1 Speicher|size[A] - 1 Speicher|size[B] = -0.0 + [C]: +1 Speicher|size[A] - 1 Speicher|size[C] = -0.0 +binaries: + - "Speicher(Q_th_load)|on" + - "Speicher(Q_th_unload)|on" + - "Boiler(Q_th)|on" + - "CHP_unit(P_el)|on" +integers: [] +continuous: + - costs(periodic) + - costs(temporal) + - "costs(temporal)|per_timestep" + - costs + - CO2(periodic) + - CO2(temporal) + - "CO2(temporal)|per_timestep" + - CO2 + - Penalty + - "CO2(temporal)->costs(temporal)" + - "Speicher(Q_th_load)|flow_rate" + - "Speicher(Q_th_load)|on_hours_total" + - "Speicher(Q_th_load)|total_flow_hours" + - "Speicher(Q_th_unload)|flow_rate" + - "Speicher(Q_th_unload)|on_hours_total" + - "Speicher(Q_th_unload)|total_flow_hours" + - "Speicher|charge_state" + - "Speicher|netto_discharge" + - "Speicher|size" + - "Speicher->costs(periodic)" + - "Boiler(Q_fu)|flow_rate" + - "Boiler(Q_fu)|total_flow_hours" + - "Boiler(Q_th)|flow_rate" + - "Boiler(Q_th)|on_hours_total" + - "Boiler(Q_th)|total_flow_hours" + - "Wärmelast(Q_th_Last)|flow_rate" + - "Wärmelast(Q_th_Last)|total_flow_hours" + - "Gastarif(Q_Gas)|flow_rate" + - "Gastarif(Q_Gas)|total_flow_hours" + - "Gastarif(Q_Gas)->costs(temporal)" + - "Gastarif(Q_Gas)->CO2(temporal)" + - "Einspeisung(P_el)|flow_rate" + - "Einspeisung(P_el)|total_flow_hours" + - "Einspeisung(P_el)->costs(temporal)" + - "CHP_unit(Q_fu)|flow_rate" + - "CHP_unit(Q_fu)|total_flow_hours" + - "CHP_unit(Q_th)|flow_rate" + - "CHP_unit(Q_th)|total_flow_hours" + - "CHP_unit(P_el)|flow_rate" + - "CHP_unit(P_el)|on_hours_total" + - "CHP_unit(P_el)|total_flow_hours" + - "Strom|excess_input" + - "Strom|excess_output" + - "Strom->Penalty" + - "Fernwärme|excess_input" + - "Fernwärme|excess_output" + - "Fernwärme->Penalty" + - "Gas|excess_input" + - "Gas|excess_output" + - "Gas->Penalty" +infeasible_constraints: '' diff --git a/tests/ressources/v4-api/io_simple_flow_system_scenarios--solution.nc4 b/tests/ressources/v4-api/io_simple_flow_system_scenarios--solution.nc4 new file mode 100644 index 0000000000000000000000000000000000000000..c626f2dd9a8b0a4e880b708357fcef4423ac39bb GIT binary patch literal 171583 zcmeI52VfLM_rT|JM-m_eLJd6$p@f=1Xi5nsA@o23C`gWwT*zU#i@6Jg-o&mT@E1`( znxG;m2m<0~2}Q6{6~Rgo5djsIB1QghcJ^&<_ihQnGr)asl+4b|o7tJ)%|+O64^T{B<~*C#scsUAFG#2x1%|lg&n2zvGz^#M>U^uC z^Ds{smFP)kOSYzEX~IO?(sN=mfuc&p8kW3f8&Y@^f- z+%>?hjk^Rk(&h_<-Gkj&dU`9}U^ExP?lF`qm-x864)_fVAA7fmf<})thZElLnQ9b@ zuNwypfmREbn#WBWctZ?sC{iH-ZA;QdSK}xwzeY}!J{cN9dY1ObPw{mtJ%&t5&q~W3 zWibOg@$07q*ep(`-JD@{2npT@F$|D7v&`A{v$T#SUmo0BY;Ucxt6h@v6vm!F?rd}G@Heq=P>6vB-KL^x(BCLVyq9wQ~8tQ~SybX2Br|$Zw3oyx& zpKftD%o1qcx;zI9s2*Q>ng}D)veRto;{E7Sd+OYK5sT*bs^VP#@$)u97e<9YwaxraM(;R#`laxA%4dxkY#^vJ-&X@T*l+_Y?Wk4YeFc3Q_+98OCPPgK(~ znswp{7RLAVdnjk;-@Y^deM`4HWGKqOnecMMp?FIdY9#nVYu3p_pztazG2XQhf*Ugx zB1}}3f*Vy2cX4Y9?kRbqFQvq5&O=%5+=5ElOoBXwh9jn+ZtzzTA3{~C-}U|I{!qAv zsvlNW$PKA|MaSSBd#Dx?e9%CObC)b*fiUdAfynlPv$HF$Nn8oeg01cpGh<709aXfmSw z$a-@qQmF{MnM=Eueh=MhKoR5(A03{aY)zPc9cYI>-O_a*#rE_fRo~BZ9HqGGCmf^R zaADn^b4)=zO*|c)2FHiAuHWOjp_iHZenk`(gyEFjs zax1hV#!HO4ht#6QAgsF7o&?-V?m58x-MH`-D?V3V zU&hne-apQ!QfKZ@sN8HZQ*PC#1h`ipj?k%oBvD?}Fp3mWg&v1ZJf9PXj*(ibzjg3Fza`~;{IbbAgo!ILLXhPfSJU^E)8`w#l~LXU3!`-mAK+@Fcr zA>vZ{E2f+jdKe2Yr7M^wqB5mqmy{-4caz=HZQ&aIyUP9nvW@;-WH(NKLHmK0BA~P; z9R15`{D;K~k06ad%9qpe57zN7uj3!0@yGjC)cE6l`D_|)wB@QIycK^;r>e#u(+So1 zqkMIZKg!qC_@jI+jX%oQ*72{S;~%E+$MnNB{+NC}jX%mqYWz{YzK(wb9sfoee@s70 z96re`2iY#lpm<^NBLwO|3MmmOlPphAJdWN4Jz#o z{qNPtV>&}M{wRN+#vkQ}Yy43@Rmb0~P{4xCujX%m;H2x?*O5>06SsH(o zAFc66`TI5gC_hHykMcH+Kg#E5{89b^jX%oE-YgUwD0+}h1c(3;AOb{y2>j0x5DQ3{ z!BCkO-Ope!U=LrhEAvi!b%TNNH6#2VIKc$6QdRk-u`&1K=79)d^YB2a18g+RY9suj zg~h7W;wwv-u?@pzEm}LM3l}xA$}9-}F>^nQGd&|Swwv9an_;!VoLL8}07?u`g|RRx z%lwAipv|wv3YQP%6)y9*7Z~BY`*AoXW#gK$vyk`GbeZJ(kGq;L8sUc zB9sEQP`rL!`o>H0e9VK(JJKySm~U-oJY^&N7Yv9%5D|5^jMJO7TR7*|AsK zMeyno<)|XJ&m1|FMc{?TRs=*NyL|E8Lp+s0X+X#5=eJ(&0rDoraTU9cX3aaeTP&Aq z9wwWZXtuI)KxL^h0chTsf<@af_v@CFYlj&xPAfbQJP$nIyo%%{N*!A^g&EE8;B<^_ z-oAOOrdb)8tvkjvkBM#GhE)SG=H@GvtId!$=ilX5_$>4BIafCy$8&Y_W}ly$J|Zrl zL4yXt!NJV5+%P;pb>g;PDxLVQS?=5+_n!;+;^>*W#cU}VAx^GmePkHl4PWN z!j;^%pnSrJhr95h!qGzp=O<9{a_=!deLgMZ%cWhyfY5tgw>5~jiPo4cK zB&p4g{06lQ7W3kmU8YYmqg(n}EmwZT#Osh{lL-L_4e%n>7AS^Y{zf&bsvu9c5`?X}m=epu%&XW;DY%*+OL z4$TZGe{}ActgOR7{^&n9YhXe`!lg@>Y&P59fBy|H_!^0ach0UG{8pFAlRL7o51Oti z@~(2NKt-=wv*z0QGc^J1qsJQV+rPi>9G3Lk=|k&VWq!(9&Ye4V-@biMJPlr-E^O6m z)GkxY%-xHg?9nDN(lop2o`??XzI=W7w)w}8969pC4=Do&?%T6x&%S*l6Z|?)xsp>* z?&njd43jR!H_lJJf6N%mv}qCkeU`lV;`-5FG_KIw|MBczy~?DVZ&&r+`1tr&vcs$1 z3+3t1pm(ocM`PM|?D*}+AD7ww_9M;D9ot!c*sx&%0Ra_u`VZg8t08Ap^$DDE=-k8G z9xi{+2UD+HG(?^`bLNeY4}AHhk%g=Z_(L?{x}7Gi-Lxrym0xCj3L4aA$BD)%BP^EV zoc-4R<>qiHW@r#LB6DOxxka6)KGkF6%P$AaUj5KR{&fy*vVVW{>Ep+be^7tL%P%*q zUw>AEi;$JTZHAyF%gQCa%`=i)zkC@fBd;DdhAt`n_rKY?vMu?kcRPQYvtq@Hb?eqGSTH0nFVEpvzjEcunKO+nZ(-ov{M0cY#e}f% zpzeFC%-xcZ^=$jnhrA1Z= zHcewW?Mx@xD>WZ_Fea&8gS3E(8&__v_iNYMSATA}=0F*?yL9*P2fw@AxqD>m72CfW zI`8Kf($9U@dr+@8Uf;01M*2M)4h(ecib?4H=7H2VFVso@wEg${SFD&{zS@R}69W6# zv19prqtso7iNZtmBHYo^wQ@>V?ncKtKZB3l>;nR6DR`-vcda3l;zNrJ(J~=Vz zhZi@P&p>y^&O#)Rq*?AXp>nR4otkZe_*fs$LuQ29?9P~w8@G$uU-Cl z+{<^Js8exT)DWqCY=!m__V^WOAG=d7d)1Ot6&HJ4+1y zd$ylBeR^8PJ@?!b8~SY6^tzp=@b|E#_S)&Z;U(QuC062YfLa(dXi!{57W|&yuhIk1 z&=}h1r^N-+%B>!{p-dvYq>et_tVN5R^;WG~^>~lL0|taFI6d7M@XPn_f4^tXv0q>iD+1Yk`i#mtakJ^3o=`*KJZJTe&%*@Qlm_KJu5}1^fE02o1mpT1(9DmPU znUHqyUwU~y-_r6iWTbk|%sF!^bXd1^>C!(JY*@QCx^?SwGY!Vb-{3tE@XZqb23WbT z#zXn3Wx>SzEnBt>-ekPxo0|uu!0*JcL7PT=)HdDUKk(H>mY^O%K|#Oo7`4KbSzw9J ztg$U5Y2z0cKP|guVa}nvR!_pu&*iT!ep)s1-U|zNz|U8?*iQQ&iM*WiQVjfZjSF3T zw%gp-p0ft^h&wd((+=-fZ$GR4{IH)s>7Uu|(%EA>|276p3k*L0YmX(o{y)ta{3*WQ zW!qg-#NTDbmih!CVVxCCF}5s=y#~Ru#@GaZp&7e4wXD=n@blwq&ka%xZW|<(S<#=a z#EHA}Tky!JP@4Wtg_7S==z-sL=GTmUAuQ?d=EpjGo{*dz&)UnQum;dS{^B}|0aWJm z;9v$&z0U9~8|pH4geyaaod(vP7hqYZWsSfBAL;KioefhZMXo#dF|xAIx#8WL1Z#Ho z;I!;K3-g4NcgRplLR(4>um-`m1>RjK51ledsjxTEr)P2s;~xTfM}sSSJUgCJ;whq{ z$7PDGv$hGT{$ZgmeJmN$0P~@+SP(Gr)Suy)xW>mPYlAgnd%15;?tZaV%E0(|-Ym2o z!Voz*t+hc`-O(Q#Coc&ZB0vO)01+SpM8G!*l%$#}l*HHML0_D7QNlXvtX`rbmt%bj zjc~xJFZ>e{dv;~G=@SpG@`w;x`jN2DwHCrd7Yn<~x`Jy`2u|3L)ztWJ)?c}u)l@#> z_gmoX&V^d%riVlc9~2e~@|uFp6Z~@9nr@!^0Cf_Mtr;}^r73!9Yq*>rt+j*HRxJ{8 z69FPX1c(3;@Oc8Lxr8yZQ+)UADu4bg*6F6sZE82*XX2%k}<2?yzE*|4l6Em!)U%)cq~eC6cY zvn@GJYr1(^&j{ejDwmvC(Z55l0n+;(4rMO)rtFN5a7)3k{lIakFBp|8nnY%+Do{Zq8Fa z^-SxzJY}QqXuJ1x-5{8tUA)0$PgHO)xh&+KQ$lwTT(?>|{thion5Hybvp=}}rDtFl zl6vFd8ce$pKUC_PlGq&{C*V>R3ZK!apoKsL-vfjYdp~@Ck|gENrOHcEmuHFQR48?> z`ug=fA9_cxU$Ib5OwVfDRvn^!3Tb#;&4*k>fCvx)B0vO)01>#;35b5#j3Q_Bdzx-? z)3bLbW(aJ>=!bRTF^bg>6N<9B|K-IVkXNVE@cjjz`=MsHgn@}kjL#JElV;=aGK0a+ zsMw8xDHDto8C2S38#@ppw*Fs}=(9@#f>s!GGKMY{*M4l>YbSd0z-}WoX?(x>Y5%66Cw?xnUL!OCEdS--ZS;1i4TWj`j3CS?{%sR`> z4fH_Cpe;M$V^I>zXJOzJ8sX)Kg)Pr(VrVa&6ZZYT@l9h@Hs(awgW3AVdU_`>nJ06W z^iEG$$d3pR0U|&Ih=5NMxFve$#PNbD>7BCP$@fD&e&L;Pt|cmKILpebCy|nOS19tW zN3WKuUh`j2Ob_+0^Q)d7syF_5jr35Te$Pfg1|_4|reA-m#{xjMF?*_fqe%8TYzone9Xv2Mk`00}$r>#4 z%~}mvHSlf8HZIxRkX3;_z*?~%2AqmwRbcXLYi9dwauYTkE?csle$Pj<&5&+$7M%K6 zEUN-{YtM3iJ=TU*gv6S$r~B+`#|mKPYXi3EV)?Et8jw|EpZ$Km7drvbqS^ST7bUT` z!8ersxTMPfRz=EW^(GyX*$l`-Q}$+An795N+^sDOdC7bavqQQuEb+pGp{$dXLcI$W zQdv)sZO>+ZaoECshs46ziO;V+z-B-(>#?ubx65OXgKrCVss0GxnuROXKW@?ni%+4H zHTe{0VS0cSAvICSZIzq=O&C!Z08SV|NJ&f737aU-y`F6LfHMlFXv;=4IliBYWO|8)fKJg0E248f zgf@{DQAj?b)kynma<^!l9Fb)DL0fGE*_4fVP^3qk`z(dfFldyr*#gd{($+4LhiIk$ z_xlb7CJL6YUBoH{udXfN+rdEPC~FHi_Cq@p`WKOh?mU)Pw%ze+Y3gZ86AA8F0h`0a zx9?d7m+bw=s#Qry?5p2FW?!UwgM=G;%!QKG9-P#hoRQj$2%J2IH?i7ux)YZbo_8BF+o zl){y4;BpIt37`2IsuN4qnV625z&C;sg!|4%UwknHB*C_-+0OCj7GVg!BkHIUcRR$? zummIETckFgYvgiNSm6OeCs(69zGkX=lDFHAY!-s@U%iouK`JSCM;IRRAqOcKWH&N) zk4Zj6fCvx)B0vO)01+SpcOrpX@}=~HX9OzVli&*G4U9;2;W2!6B?#Y0q0xQgrCt1$ zFQuE$@iG^V+j;j(X?;j};f@|5s*khjV!tnCsL;E&Yyh_$+^5l3kL(>&O|QQa&P(jU z$H((57fX-F4-#ne?>gLgaaFfhzt-@tc07-`uND7nm-=RhyYI|zPkaKS zYiao7Q*LWiMbG=)x*v71|L=q#JzYN&(z>2mq|y25+r;%~Q5X>*0z`la5CI}U1nztS zw?#i^PHoSGVUEpT5cXG&GRP)e(~_)*$8M@g}D&uA&``c835&KvoniX6f!xoLFb_M7Cj zB?IN#OOzP9y!CTfxWkEY(|75SI(pxK_z6VUGef8!bUi#2Mg)ie5g-CYfCvx)pCceN z>JmPsWa%e@V==zpPC=7S1>nw?Ca*=gGqU&B-0Y7ymY?ck(6mUJNjA(RpfR1%nAU3W@N% zpx-PV#AEBE zu6O_pCjN1go9Y;j8$0A!a;^3ZYkHJ93Lh3B>GD^vzl(@nM5W8Intm>h7vLOatvtDj z01+SpM1TkofjghT&1%+nKP<|=OGZ%KuLyy-mZ#d!B86M_tw-EGc=jA)QR_;q2DX4N z0c-A`f9(CA^)xM1HDxf0^$2NN3Jba*0z`la5CJ0azd}H0TG1tP?zI^G{QCa{+Y+Cn z;l1HxC_r4sJHHo>dH(0whDY=?FKMy-b(+%)8V!u*wqFMp1rY%vKm>>Y5g-CYzy}DF zyawJ+-fZ;F*1$J}^xa;lfh*tQ2WUp^+yRV>eMTvc33qf#N}#$W6~as9Q$Nq`YOb54<{5&Q?Eq43OZoS8OgxlPkTa zr=jCXUnqW=?91DX=-6Qjjilm>HyNz)I7*V1c(3;AOb|d7YPVW?G~TNlic5Dw6!3w?h+jf zO^&0%9SvH;_0ai!*Vb+&fQi41m8$w#qUt!zfbJp)_k!^5ahNS38<$$OEiLB`ET;Xg zuN_6iHSt`Q8)fagaI%)qP6*M{U5CjsdR7yS4ofq0^+=IF5g-CYfCvx)B0vOugMjG6 zuo7GwH@vh^uSTx0{)(|vS3moYo+dpCBk0%lz{o@l59>4b%*O(|ri>c2pVhrac3qQsVpN?CtK2r=vc9Sms zQQ2UsF3VKyYPV)vavKdWXXd#a?}aHDOf_V|+A2ZqnOj3D3k(JmKjoU6!i1e!E(y;I zKtX=|H8CCA&+F-DkthX$TwXm8c5D@F{LBUbMLNvGvnGvP*X>2i}C8_Gt= zvSC_TZSp>Y5g-CYfC${_1VqoOBu_lKIz}k8B|fX$tJ}Cm-JP@z`j!7((^|D6^fQYn+`qFT zl<)U;_m*FpDLp`OGsduAhOP0fu~GhdJ%TV4(%9oPJpr26q5(usB0vO)01+SpK1kq} z%xkHZqt=)H=VvAJ=_zks`Q=BhRf=yIHRlRMxLcoB)mS#$FWRPjU6GDOhL0--)cq8@ zGXE?S64sfC@!&WXTb9LMgW%%s>MY7+?5Z<{CvX}R*r2ZH&~?+uL4$Mec4)~+F91~bg-=P|*E z+cM_8k#6s-iX z&^r^bwx;KRBlt9r8>x~_1c(3;AOb|d_XwzFqqcrTs8XoCdG~yhPC(D#c&nXIR*Qc? z^uqBXcQ~=3xKjxNtMTeH`We^AGbDUKQRO8Xwes!)UX9*Uf1gVp-TX5>O)`w%(}QV3 znxqFRlkGhaQBR#@sz0565e~dnLMT^>pZ;j4Q^G0-0Q2-Gj0z`la z5CI}U1bl)(*OZ?9m_P32$2!42fYEG|JiuQ4#0x^(tZVLgd9hEFmkOaKkdT}l&)UnY z8w~-B{l#mXZLYunrGq> z6L}H=B0vO)01@yh0=LBs<$kM$LhAz)KfF8o-yPZ-M}sqz`JC)0GtTcR$uAK1YVt4? z-0^?z2?I-+;XUE_+=Y6YX9^d*j(Jq0fznv_bzo5t5g-CYfCvx)B0vOufI!!jJ_*bp z1~P@Q!B}?`tA)-5;EZ6(J{z0C*_`3oG3*35qZu9z!>W~HtR)M>xIMwyo`s`x1~{8S zVzPN1oUK?rbXI}MKCM_JIupSe!|J1RJUE-P2IzbloUK_ybbcc_8=*4<#%P;BA!O45 zoGn>nblRj)Wd_JXDYPkuej*k0;rj{j-asayY+g%KXwh!L;{)re|yRC@x(z_#z2xaydx3E!Y7J{PWudpa1Z&MAz6k4|CY8l0<7 z3sE`SU?n8>?8^407kX5AL|iZZNZ99Eizq`E3;XmHVPDfRJA=1$X4cZb&C}}yhZWvS zb@i>L^UK>kH}I^IAp%5z2oM1xKm>f0z-{sQC4Z;TZs_w1v@(tYKezPKxO;>9qu#T7 zsk$r&+lu{e{+%vMD%|qzvm0jL@Qfhn4DR_r%z|cb_r(bv&!5nT`OF>zS(> z4V5<%Zb(xV9Oy3*AOb{y2oM1xKm>e^z-`e(+4wf~P*mG$Vh^PUG&k2COCq>uZT|6r zTe3X7*XN>^uqX6CzdXDT)JFH@<+GOT-d^ecDti6QL9&dVHJtCh>SCy$=>mf;i2xBG0z`la z5CJ0Kg9L7ierDwNLgA$^VbH=j3hZb0)42PCd(;p6pDD?ONNJipj0AU|yuI98S%_5J z9*Z*7jwb@<%)5_Y((Az}^DKp^+uwE6gK=X*9z=i$5CI}U1c(3;@MQwGMGxk~Gt`6e z_@!(BG(FcI%|LKh+}iYklI+2Z*5u)Sa9{YK$5&u^tp|hafOwkRET5dcSFcA?RfxF# zJ*w%+&|E(^MC3sPhyW2F0z|;)2;3H$tTRxotDv!XXkV_HE1yZ@>K+X4(J4;^-|4f5 zv}5sFO;%Z~ET93Ox9OzPz3p%a;B!cGG9aht<5r&ypy>l@BUEz^_E9pgene zPu2VSqHOXfm)+eGMM8fqLE0k>$&gJ1hyW2F0z`la5CPvHa9i|IR}HgF#VPSsHzVZE%d-m^V?$a|lg;j?}!@DHa;2+nlp$lU`{Tpr9K4}KXxVkOi zj{mUp8(>LByX)|MC$Uc;!v7xJ{;^xqhpiqbibK0JM2MO&gSB$a*QZ2nBo@05yL^YJ z*#|{(H{XXfCyAQj9lc`IPCUP_5t?)mZ`S617H4`!W^6aRJvYN@OLJNrtO7J>la#wK z-FD4`z4xr~)CvlgNSn{&lYs3Xp9FLV7C5S_cVvg`?p^SW)nLLda)`3kxY*m2jL@C^jKUk7#)+xziOUrhS@7+t(yupO~^H)o- znDQ3`kauK;`5tL|B@FN)v^ z03j|S;$|yzQ3lTeC~Y4(+LG?Hjw;^Gj<-O74 zSZrAqdkun%J7y$Co}ODJ>ck=EsKkcy#O=4+#qIetWXTBUzUP13jXwFQUvG9aG^VZ{ z{l%-(=XPYqtbtReOi4{m?HPS|hH1)`i$|u_{QS!=jjZ+f1`p^BGVz}?PiDA0y9UD$ zGYu*s5weK@5g-CYfC%^=f&A2A>oY%V92tH8fz=x~wh0IbU|Y5Z*Va=bP!ZPyv0DBx zisAIF3Q3Sn1c(3;AOb{y2oM3^B;aAJYV6ptg9i`p5H)b&UUq@uG**Qq$R+|r zfCvx)B0vO)fNv7WPkp|n<>N!^M^(?6IcH9V4(paKUHa#O4Qtm%w{CrIrokBb+p(SH z1HM`E-g|Y}%6&B+($h0Ti@;ML9}JCRq-P=tvWWl@AOb{y2oM1x;F|=xru6K`N=?1+ zR6ZN;&scM|X@)3h&4L)QAfoo#C;a~M&B9ZuSl5(339Qt~+&WVj-?=7?RT^+|8ruU4 zJ)+q1Rwrh#1+XS7g1z?BvYD(OeA8~kT065IWiLZpY0ZweeB?1!1y*B3vaIuuJ;jzl zv}pF$OQmMBkO0P-u+XcMo?$CWbAf$(K3KqPlCS-Rr=MrfL$vzr!qM@I7++V^mX&*D z!xGjWe4|;T?>enuoguNRZ0+>rFR_mxg<9;HT~l6X9Uz64Z2F`tYgr8VHeuD?nfMml z0y%5S+O2%5fLS4hmh2Flzl9}2CS#cY@$enY3T2C6XPW)7oBap^;q1hpZ-2@7!PF6K z!tuQC*e6oX4!-`x59}MMY^$#xJjE7Dcl-RieivC4kgds1&fIdDErq*rGhM4~A&A>IC6C!zgQ-q@{QKi8mIthN&?Cl+DGdfff0s(a>U%cw1l?u2eFxYdVIn zp3Ej!QRas3ou=?V=(GH46e#i^{59PkgUtaYcSdy7TeJDf#S z{1vlcjHJDN26u6H(OtV&ouAqhFlVC5Cw!w0uX9QrUexMNTzH8M2$xl&TUkMg9=KLg zb}I`WWp{R~UG@2y9by?>=6;cz2jx)ju3$}=_}N>St>WAHsp%s^Cmc4~_;}JpF`hK; ztH@z`<4GYpw+NIMY-2D@e?k&u69FPX1c(3;@Ld92kBAHC)vH%>w8{+dO&M`tlGUT zUG2`Xsoj=2YWG7M)ovV+!~5YeR_Mk7ICSHH8@h3T4c)l&8M<)*4c)le7`kUZ-g=I= zTEJL&IQUK-iazp4xo(2RtHs#nugGEhCdh-ai&M*1& zqwQcx=AXX9@FM`Gm)pj8O?jt9a^D+2a-xPjE%P5AIniz0Eq;atjf0gdu17AO?flfT zVB-CjEn5~JAJ0b-%*_K*^hOb+9T+_)B>66ocLYWen%0UW$R+|rfCvx)B0vO)fNv6z zrnL+{ymNNl{ESnlP8ml0Y|6Y@UGkXR4MtL=OCkxfi2xBG0z`la5CJ0Kn*_Y6OSX`Q zW04f;l1PGVB0vO)01+SpM1TnRCIP-EFeux|Vx=Qqqxr(uf$<6P1LOO3ix)?{wt?^U z{D{|#G-sN_;w(JtHN!f_VslvSHWtXkrS-Z@9F>X3I-)&Gvmmx}O31hEqjux$ zJ@lpJwt@umz}bT6#+f$gRt^yrc$sn*sO&CSvi|68F*objyjwgQ$9qeUy*r~W2WpDf zCeEmP0Io;wi5th?m$=2i3Hj{TB)L|DYWcxN4*aNWZ@ouh;;m%R#`mP`%~nmvD`De% z4t?=Ghi-h&p&Q?0=*IULy74`QZhTLn8{b3d#`g}o@x6m?e6OJUPMZ~s&pGBFpL2BM zbB=C2-xu8hug>a<*Z2-WcX88Bo89mUjC=F8H^-7D$`d^?H#C-nB*-QLM1Tko0U|&I zh=6Yr@T5y(NpE(p+itmois_I}i6qD-0z`la5CI}U1c-od5|F-6PBOyY&fXkXZz;n< zo4!w~TMv%= Ee{;YFumAu6 literal 0 HcmV?d00001 diff --git a/tests/ressources/v4-api/io_simple_flow_system_scenarios--summary.yaml b/tests/ressources/v4-api/io_simple_flow_system_scenarios--summary.yaml new file mode 100644 index 000000000..305bc6aa4 --- /dev/null +++ b/tests/ressources/v4-api/io_simple_flow_system_scenarios--summary.yaml @@ -0,0 +1,51 @@ +Name: io_simple_flow_system_scenarios +Number of timesteps: 9 +Calculation Type: FullCalculation +Constraints: 753 +Variables: 829 +Main Results: + Objective: 75.37 + Penalty: 0.0 + Effects: + CO2 [kg]: + temporal: [255.09, 255.09, 255.09] + periodic: [-0.0, -0.0, -0.0] + total: [255.09, 255.09, 255.09] + costs [€]: + temporal: [61.88, 56.1, 41.63] + periodic: [20.0, 20.0, 20.0] + total: [81.88, 76.1, 61.63] + Invest-Decisions: + Invested: + Speicher: [30.0, 30.0, 30.0] + Not invested: {} + Buses with excess: [] +Durations: + modeling: 1.19 + solving: 0.64 + saving: 0.0 +Config: + config_name: flixopt + logging: + level: INFO + file: null + console: false + max_file_size: 10485760 + backup_count: 5 + verbose_tracebacks: false + modeling: + big: 10000000 + epsilon: 1.0e-05 + big_binary_bound: 100000 + solving: + mip_gap: 0.01 + time_limit_seconds: 300 + log_to_console: false + log_main_results: false + plotting: + default_show: false + default_engine: plotly + default_dpi: 300 + default_facet_cols: 3 + default_sequential_colorscale: turbo + default_qualitative_colorscale: plotly diff --git a/tests/test_io_conversion.py b/tests/test_io_conversion.py index 2c6c02705..7ef949eb4 100644 --- a/tests/test_io_conversion.py +++ b/tests/test_io_conversion.py @@ -1,5 +1,8 @@ """Tests for the IO conversion utilities for backwards compatibility.""" +import pathlib + +import pytest import xarray as xr from flixopt.io import ( @@ -666,3 +669,73 @@ def test_old_results_can_be_saved_new_format(self, tmp_path): loaded = fx.FlowSystem.from_netcdf(new_path) assert loaded is not None assert loaded.solution is not None + + +class TestV4APIConversion: + """Tests for converting v4 API result files to the new format.""" + + V4_API_PATH = pathlib.Path(__file__).parent / 'ressources' / 'v4-api' + + # All result names in the v4-api folder + V4_RESULT_NAMES = [ + '00_minimal', + '01_simple', + '02_complex', + '04_scenarios', + 'io_flow_system_base', + 'io_flow_system_long', + 'io_flow_system_segments', + 'io_simple_flow_system', + 'io_simple_flow_system_scenarios', + ] + + @pytest.mark.parametrize('result_name', V4_RESULT_NAMES) + def test_v4_results_can_be_loaded(self, result_name): + """Test that v4 API results can be loaded.""" + import flixopt as fx + + fs = fx.FlowSystem.from_old_results(self.V4_API_PATH, result_name) + + # Verify FlowSystem was loaded + assert fs is not None + assert fs.name == result_name + + # Verify solution was attached + assert fs.solution is not None + assert len(fs.solution.data_vars) > 0 + + # Verify we have components + assert len(fs.components) > 0 + + @pytest.mark.parametrize('result_name', V4_RESULT_NAMES) + def test_v4_results_can_be_saved_and_reloaded(self, result_name, tmp_path): + """Test that v4 API results can be saved in new format and reloaded.""" + import flixopt as fx + + # Load old results + fs = fx.FlowSystem.from_old_results(self.V4_API_PATH, result_name) + + # Save in new format + new_path = tmp_path / f'{result_name}_migrated.nc' + fs.to_netcdf(new_path) + + # Reload and verify + loaded = fx.FlowSystem.from_netcdf(new_path) + assert loaded is not None + assert loaded.solution is not None + assert len(loaded.solution.data_vars) == len(fs.solution.data_vars) + assert len(loaded.components) == len(fs.components) + + @pytest.mark.parametrize('result_name', V4_RESULT_NAMES) + def test_v4_solution_variables_accessible(self, result_name): + """Test that solution variables from v4 results are accessible.""" + import flixopt as fx + + fs = fx.FlowSystem.from_old_results(self.V4_API_PATH, result_name) + + # Check that we can access solution variables + for var_name in list(fs.solution.data_vars)[:5]: # Check first 5 variables + var = fs.solution[var_name] + assert var is not None + # Variables should have data + assert var.size > 0 From 5754068c896cb022918c54d62788e0d16bb05a80 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:23:57 +0100 Subject: [PATCH 49/88] Update migration guide --- ...tion-guide-v6.md => migration-guide-v5.md} | 80 +++++++++++++------ flixopt/flow_system.py | 33 ++++---- mkdocs.yml | 2 +- 3 files changed, 73 insertions(+), 42 deletions(-) rename docs/user-guide/{migration-guide-v6.md => migration-guide-v5.md} (85%) diff --git a/docs/user-guide/migration-guide-v6.md b/docs/user-guide/migration-guide-v5.md similarity index 85% rename from docs/user-guide/migration-guide-v6.md rename to docs/user-guide/migration-guide-v5.md index 164ff5a28..856571a61 100644 --- a/docs/user-guide/migration-guide-v6.md +++ b/docs/user-guide/migration-guide-v5.md @@ -1,4 +1,4 @@ -# Migration Guide: v5.x → v6.0.0 +# Migration Guide: v4.x → v5.0.0 !!! tip "Quick Start" ```bash @@ -10,9 +10,9 @@ ## Overview -v6.0.0 introduces a streamlined API for optimization and results access. The key changes are: +v5.0.0 introduces a streamlined API for optimization and results access. The key changes are: -| Aspect | Old API (v5.x) | New API (v6.0.0) | +| Aspect | Old API (v4.x) | New API (v5.0.0) | |--------|----------------|------------------| | **Optimization** | `fx.Optimization` class | `FlowSystem.optimize()` method | | **Results access** | `element.submodel.variable.solution` | `flow_system.solution['variable_name']` | @@ -20,13 +20,13 @@ v6.0.0 introduces a streamlined API for optimization and results access. The key --- -## 💥 Breaking Changes in v6.0.0 +## 💥 Breaking Changes in v5.0.0 ### Optimization API The `Optimization` class is removed. Use `FlowSystem.optimize()` directly. -=== "v5.x (Old)" +=== "v4.x (Old)" ```python import flixopt as fx @@ -44,7 +44,7 @@ The `Optimization` class is removed. Use `FlowSystem.optimize()` directly. costs = results.model['costs'].solution.item() ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python import flixopt as fx @@ -74,7 +74,7 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset #### Effect Values -=== "v5.x (Old)" +=== "v4.x (Old)" ```python # Via element reference costs = flow_system.effects['costs'] @@ -84,7 +84,7 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset total_costs = optimization.results.model['costs'].solution.item() ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python # Direct access via solution Dataset total_costs = flow_system.solution['costs'].item() @@ -97,27 +97,27 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset #### Flow Rates -=== "v5.x (Old)" +=== "v4.x (Old)" ```python boiler = flow_system.components['Boiler'] flow_rate = boiler.thermal_flow.submodel.flow_rate.solution.values ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python flow_rate = flow_system.solution['Boiler(Q_th)|flow_rate'].values ``` #### Investment Variables -=== "v5.x (Old)" +=== "v4.x (Old)" ```python boiler = flow_system.components['Boiler'] size = boiler.thermal_flow.submodel.investment.size.solution.item() invested = boiler.thermal_flow.submodel.investment.invested.solution.item() ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python size = flow_system.solution['Boiler(Q_th)|size'].item() invested = flow_system.solution['Boiler(Q_th)|invested'].item() @@ -125,7 +125,7 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset #### Status Variables -=== "v5.x (Old)" +=== "v4.x (Old)" ```python boiler = flow_system.components['Boiler'] status = boiler.thermal_flow.submodel.status.status.solution.values @@ -133,7 +133,7 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset shutdown = boiler.thermal_flow.submodel.status.shutdown.solution.values ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python status = flow_system.solution['Boiler(Q_th)|status'].values startup = flow_system.solution['Boiler(Q_th)|startup'].values @@ -142,14 +142,14 @@ Results are now accessed via `flow_system.solution`, which is an `xarray.Dataset #### Storage Variables -=== "v5.x (Old)" +=== "v4.x (Old)" ```python storage = flow_system.components['Speicher'] charge_state = storage.submodel.charge_state.solution.values netto_discharge = storage.submodel.netto_discharge.solution.values ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python charge_state = flow_system.solution['Speicher|charge_state'].values netto_discharge = flow_system.solution['Speicher|netto_discharge'].values @@ -214,12 +214,12 @@ boiler_vars = [v for v in flow_system.solution.data_vars if 'Boiler' in v] ### Saving Results -=== "v5.x (Old)" +=== "v4.x (Old)" ```python optimization.results.to_file(folder='results', name='my_model') ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python # Save entire FlowSystem with solution flow_system.to_netcdf('results/my_model.nc4') @@ -230,12 +230,12 @@ boiler_vars = [v for v in flow_system.solution.data_vars if 'Boiler' in v] ### Loading Results -=== "v5.x (Old)" +=== "v4.x (Old)" ```python results = fx.results.Results.from_file('results', 'my_model') ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python import xarray as xr @@ -246,6 +246,35 @@ boiler_vars = [v for v in flow_system.solution.data_vars if 'Boiler' in v] solution = xr.open_dataset('results/solution.nc4') ``` +### Migrating Old Result Files + +If you have result files saved with the old API (v4.x), you can migrate them to the new format using `FlowSystem.from_old_results()`. This method: + +- Loads the old multi-file format (`*--flow_system.nc4`, `*--solution.nc4`) +- Renames deprecated parameters in the FlowSystem structure (e.g., `on_off_parameters` → `status_parameters`) +- Attaches the solution data to the FlowSystem + +```python +# Load old results +flow_system = fx.FlowSystem.from_old_results('results_folder', 'my_model') + +# Access basic solution data (flow rates, sizes, charge states, etc.) +flow_system.solution['Boiler(Q_th)|flow_rate'].plot() + +# Save in new single-file format +flow_system.to_netcdf('results/my_model_migrated.nc4') +``` + +!!! warning "Limitations" + This is a best-effort migration for accessing old results: + + - **Solution variable names are NOT renamed** - only basic variables work + (flow rates, sizes, charge states, effect totals) + - Advanced variable access may require using the original variable names + - Summary metadata (solver info, timing) is not loaded + + For full compatibility, re-run optimizations with the new API. + --- ## Working with xarray Dataset @@ -278,7 +307,7 @@ df = flow_system.solution.to_dataframe() The new API also applies to advanced optimization modes: -=== "v5.x (Old)" +=== "v4.x (Old)" ```python calc = fx.SegmentedOptimization('model', flow_system, timesteps_per_segment=96) @@ -286,7 +315,7 @@ The new API also applies to advanced optimization modes: results = calc.results ``` -=== "v6.0.0 (New)" +=== "v5.0.0 (New)" ```python # Use transform accessor for segmented optimization flow_system.transform.segment(timesteps_per_segment=96) @@ -343,8 +372,9 @@ stats.total_effects['costs'].groupby('component_type').sum() | **Replace Optimization class** | Use `flow_system.optimize(solver)` instead | | **Update results access** | Use `flow_system.solution['var_name']` pattern | | **Update I/O code** | Use `to_netcdf()` / `from_netcdf()` | +| **Migrate old result files** | Use `FlowSystem.from_old_results(folder, name)` | | **Update transform methods** | Use `flow_system.transform.sel/isel/resample()` instead | -| **Test thoroughly** | Verify results match v5.x outputs | +| **Test thoroughly** | Verify results match v4.x outputs | | **Remove deprecated imports** | Remove `fx.Optimization`, `fx.Results` | --- @@ -382,8 +412,8 @@ The `sel()`, `isel()`, and `resample()` methods have been moved from `FlowSystem | Version | Status | |---------|--------| -| v5.x | `Optimization` class deprecated with warning | -| v6.0.0 | `Optimization` class removed, `sel/isel/resample` methods deprecated | +| v4.x | `Optimization` and `Results` classes available | +| v5.0.0 | `Optimization` and `Results` deprecated, new API available | !!! warning "Update your code" The `Optimization` and `Results` classes are deprecated and will be removed in a future version. diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 0f5954718..e28e37368 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -760,11 +760,15 @@ def from_old_results(cls, folder: str | pathlib.Path, name: str) -> FlowSystem: Load a FlowSystem from old-format Results files (pre-v5 API). This method loads results saved with the deprecated Results API - (which used multiple files) and converts them to a FlowSystem with - the solution attached. + (which used multiple files: ``*--flow_system.nc4``, ``*--solution.nc4``) + and converts them to a FlowSystem with the solution attached. - The parameter names are automatically converted from older flixopt - versions to the current naming conventions. + The method performs the following: + + - Loads the old multi-file format + - Renames deprecated parameters in the FlowSystem structure + (e.g., ``on_off_parameters`` → ``status_parameters``) + - Attaches the solution data to the FlowSystem Args: folder: Directory containing the saved result files @@ -774,25 +778,22 @@ def from_old_results(cls, folder: str | pathlib.Path, name: str) -> FlowSystem: FlowSystem instance with solution attached Warning: - This is a best-effort migration utility. It loads the FlowSystem - structure and solution data, but does NOT provide the full - functionality of the old Results class: + This is a best-effort migration for accessing old results: - - The linopy model is NOT loaded - - Element submodels are NOT recreated - - No re-optimization possible without calling optimize() again - - Summary metadata (solver info, timing) is NOT loaded + - **Solution variable names are NOT renamed** - only basic variables + work (flow rates, sizes, charge states, effect totals) + - Advanced variable access may require using the original names + - Summary metadata (solver info, timing) is not loaded - For full results analysis, the solution data is available via - ``flow_system.solution`` as an xarray Dataset. + For full compatibility, re-run optimizations with the new API. Examples: ```python - # Load old results and get FlowSystem with solution + # Load old results fs = FlowSystem.from_old_results('results_folder', 'my_optimization') - # Access solution data - fs.solution['Boiler|flow_rate'].plot() + # Access basic solution data + fs.solution['Boiler(Q_th)|flow_rate'].plot() # Save in new single-file format fs.to_netcdf('my_optimization.nc') diff --git a/mkdocs.yml b/mkdocs.yml index 5ce16769e..f414c1ab4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -45,7 +45,7 @@ nav: - Troubleshooting: user-guide/troubleshooting.md - Community: user-guide/support.md - Migration & Updates: - - Migration Guide v6: user-guide/migration-guide-v6.md + - Migration Guide v5: user-guide/migration-guide-v5.md - Migration Guide v3: user-guide/migration-guide-v3.md - Release Notes: changelog.md - Roadmap: roadmap.md From 4508dcf9db6f63aa882f2edf180030def9525b2c Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 15:50:07 +0100 Subject: [PATCH 50/88] Improve Tests for old api conversion --- flixopt/io.py | 45 ++++++++++++++---- .../v4-api/00_minimal--summary.yaml | 4 +- .../ressources/v4-api/01_simple--summary.yaml | 4 +- .../02_complex--model_documentation.yaml | 2 +- .../v4-api/02_complex--solution.nc4 | Bin 177549 -> 181598 bytes .../v4-api/02_complex--summary.yaml | 14 +++--- .../v4-api/04_scenarios--summary.yaml | 4 +- ...flow_system_base--model_documentation.yaml | 2 +- .../v4-api/io_flow_system_base--solution.nc4 | Bin 162818 -> 162802 bytes .../v4-api/io_flow_system_base--summary.yaml | 4 +- ...flow_system_long--model_documentation.yaml | 2 +- .../v4-api/io_flow_system_long--solution.nc4 | Bin 181709 -> 183027 bytes .../v4-api/io_flow_system_long--summary.yaml | 10 ++-- .../io_flow_system_segments--summary.yaml | 4 +- .../io_simple_flow_system--summary.yaml | 4 +- ...simple_flow_system_scenarios--summary.yaml | 4 +- tests/test_io_conversion.py | 32 +++++++++++++ 17 files changed, 97 insertions(+), 38 deletions(-) diff --git a/flixopt/io.py b/flixopt/io.py index 3936a5e00..0994b841d 100644 --- a/flixopt/io.py +++ b/flixopt/io.py @@ -626,9 +626,8 @@ def load_dataset_from_netcdf(path: str | pathlib.Path) -> xr.Dataset: 'source': 'outputs', 'sink': 'inputs', 'prevent_simultaneous_sink_and_source': 'prevent_simultaneous_flow_rates', - # Storage - # Note: 'lastValueOfSim' → 'equals_final' is a value change, not a key change - # Linear converter parameters + # LinearConverter flow/efficiency parameters (pre-v4 files) + # These are needed for very old files that use short flow names 'Q_fu': 'fuel_flow', 'P_el': 'electrical_flow', 'Q_th': 'thermal_flow', @@ -637,6 +636,8 @@ def load_dataset_from_netcdf(path: str | pathlib.Path) -> xr.Dataset: 'eta_th': 'thermal_efficiency', 'eta_el': 'electrical_efficiency', 'COP': 'cop', + # Storage + # Note: 'lastValueOfSim' → 'equals_final' is a value change, not a key change # Class renames (v4.2.0) 'FullCalculation': 'Optimization', 'AggregatedCalculation': 'ClusteredOptimization', @@ -646,9 +647,16 @@ def load_dataset_from_netcdf(path: str | pathlib.Path) -> xr.Dataset: 'Aggregation': 'Clustering', 'AggregationParameters': 'ClusteringParameters', 'AggregationModel': 'ClusteringModel', - # OnOffParameters → StatusParameters + # OnOffParameters → StatusParameters (class and attribute names) 'OnOffParameters': 'StatusParameters', 'on_off_parameters': 'status_parameters', + # StatusParameters attribute renames (applies to both Flow-level and Component-level) + 'effects_per_switch_on': 'effects_per_startup', + 'effects_per_running_hour': 'effects_per_active_hour', + 'consecutive_on_hours_min': 'min_uptime', + 'consecutive_on_hours_max': 'max_uptime', + 'consecutive_off_hours_min': 'min_downtime', + 'consecutive_off_hours_max': 'max_downtime', # TimeSeriesData 'agg_group': 'aggregation_group', 'agg_weight': 'aggregation_weight', @@ -660,13 +668,26 @@ def load_dataset_from_netcdf(path: str | pathlib.Path) -> xr.Dataset: } -def _rename_keys_recursive(obj: Any, key_renames: dict[str, str], value_renames: dict[str, dict]) -> Any: +# Keys that should NOT have their child keys renamed (they reference flow labels) +_FLOW_LABEL_REFERENCE_KEYS = {'piecewises', 'conversion_factors'} + +# Keys that ARE flow parameters on components (should be renamed) +_FLOW_PARAMETER_KEYS = {'Q_fu', 'P_el', 'Q_th', 'Q_ab', 'eta', 'eta_th', 'eta_el', 'COP'} + + +def _rename_keys_recursive( + obj: Any, + key_renames: dict[str, str], + value_renames: dict[str, dict], + skip_flow_renames: bool = False, +) -> Any: """Recursively rename keys and values in nested data structures. Args: obj: The object to process (dict, list, or scalar) key_renames: Mapping of old key names to new key names value_renames: Mapping of key names to {old_value: new_value} dicts + skip_flow_renames: If True, skip renaming flow parameter keys (for inside piecewises) Returns: The processed object with renamed keys and values @@ -674,11 +695,17 @@ def _rename_keys_recursive(obj: Any, key_renames: dict[str, str], value_renames: if isinstance(obj, dict): new_dict = {} for key, value in obj.items(): - # Rename the key if needed - new_key = key_renames.get(key, key) + # Determine if we should skip flow renames for children + child_skip_flow_renames = skip_flow_renames or key in _FLOW_LABEL_REFERENCE_KEYS + + # Rename the key if needed (skip flow params if in reference context) + if skip_flow_renames and key in _FLOW_PARAMETER_KEYS: + new_key = key # Don't rename flow labels inside piecewises etc. + else: + new_key = key_renames.get(key, key) # Process the value recursively - new_value = _rename_keys_recursive(value, key_renames, value_renames) + new_value = _rename_keys_recursive(value, key_renames, value_renames, child_skip_flow_renames) # Check if this key has value renames if key in value_renames and isinstance(new_value, str): @@ -692,7 +719,7 @@ def _rename_keys_recursive(obj: Any, key_renames: dict[str, str], value_renames: return new_dict elif isinstance(obj, list): - return [_rename_keys_recursive(item, key_renames, value_renames) for item in obj] + return [_rename_keys_recursive(item, key_renames, value_renames, skip_flow_renames) for item in obj] else: return obj diff --git a/tests/ressources/v4-api/00_minimal--summary.yaml b/tests/ressources/v4-api/00_minimal--summary.yaml index eeda74161..598c501ed 100644 --- a/tests/ressources/v4-api/00_minimal--summary.yaml +++ b/tests/ressources/v4-api/00_minimal--summary.yaml @@ -16,8 +16,8 @@ Main Results: Not invested: {} Buses with excess: [] Durations: - modeling: 0.25 - solving: 0.1 + modeling: 0.39 + solving: 0.17 saving: 0.0 Config: config_name: flixopt diff --git a/tests/ressources/v4-api/01_simple--summary.yaml b/tests/ressources/v4-api/01_simple--summary.yaml index 415b90de3..87984de57 100644 --- a/tests/ressources/v4-api/01_simple--summary.yaml +++ b/tests/ressources/v4-api/01_simple--summary.yaml @@ -21,8 +21,8 @@ Main Results: Not invested: {} Buses with excess: [] Durations: - modeling: 0.63 - solving: 0.91 + modeling: 0.65 + solving: 0.38 saving: 0.0 Config: config_name: flixopt diff --git a/tests/ressources/v4-api/02_complex--model_documentation.yaml b/tests/ressources/v4-api/02_complex--model_documentation.yaml index 040022b69..d77ed31f6 100644 --- a/tests/ressources/v4-api/02_complex--model_documentation.yaml +++ b/tests/ressources/v4-api/02_complex--model_documentation.yaml @@ -3,7 +3,7 @@ objective: |- ---------- LinearExpression: +1 costs + 1 Penalty Sense: min - Value: -10623.180480056364 + Value: -10711.526565761338 termination_condition: optimal status: ok nvars: 507 diff --git a/tests/ressources/v4-api/02_complex--solution.nc4 b/tests/ressources/v4-api/02_complex--solution.nc4 index d94cc1b49a0123a79ef5871faf10e0c8d3f7937b..7c9068c8baf7339c19f0347a63de503648599d7d 100644 GIT binary patch delta 5922 zcmd5=X;>528lH0|29PmC*#i@69f_L6XaG0fV&!?j%U+?)UQRLE<)bJSp;$gC*0?=_n1l^Abg>m4id zUXV*xdjdgh3@X*EF}5OCN=u*3oJbJTy-T0?X3jmeIApC-ajD>xaZAm%h-+;RF*C`x zIL5Q-Til>gCRVjpYqV2k3t~J4Ca)=JdQ6;re|-8iP1|;0c#9;h$O+0QnjArr89^=y zxsvJp+{xm`nYkeZu~Hm)q1cR{Yd{cKb`}+EN`DSBPM`l)BSfSLISX)~gSPSKw5czBi#Mv*|k(|#zm<~=kaxdmxrUsv0hbdFPHKat54dOOM zI|pVT5D|p;D|w_pHYcA~K^^ovk#$jCquHgwco9SmLF^Dm8VC2lgRSx&Rcfwj3W?a+ zlKm3N<9PY3S+Y-~>aUlrQ`)+?lnionsoBK1;+EnN6qLkVJ{S}Krht(&eEF;W9(A`> zVI)~wv@EtJwWY>Un0#bm)ppM`apSOuKX@kfUlldHpsv{O1{QlL%ljWoTf+Tt++<_k zX^BalL9R$3l-J2juoy@CraxK9_ZCvATgZ|Ljg5uM*zvMtKWFO-Uwnp5jqYKo$DUEGkBWjd76)=}41to$7Cq%M5BsFzYhe#Sgv1F>~0 z!FaIgYeU-DWG}+j9y6K5`VfmUJ2Y)zl;lmBdVX0_nL0_%^i5K=!9&y_W>W4`9LtC_ zzf|5!Dl@}0cY_?ubH=rYS^sqGl5CvAxVT%v3cP&fxU7=G=0`j1)#c~6`MZ?gkXj6% zKB>I1)~wa5pnTl;h^9Ton>$UW6`5XRXO_n?b7LcOO++gsl3Td#s&k+DV`D@4!_b}= zO7ogzIrAn&bJgkSd*!0Wx78TOSB=RZfLGNdNFxhkiNXXy{L97dc=U2*Y4GQ3va(BQ zY2<;B!NFDGGx_|v?u*^|o>L6W`37Rl6#G4<&vmvu?ytKD`>M5F1kttcZC911%%VD@ zy<(>_h^#*STbD7u$}!Kpy~`U9b}yV<93!gLTz^>{RCleRzN%s3rH-$axImh&sbqTL z$7uTlF9%KEcp+_^w7{_<>KWzlFB|jU?}0eo9IwuwQ*cRLnj(qs@idUAquJr0)Sq+iY3@J0PrlwpTtBMP> z1~Bs!l`TEV>$tftj+RD&6iS$8q$&@Z55d=z?WhV~qhg_kKK~`~pv*^41$7)|;dS6P z{tB052jX(guffmnin7x45A(^uHcpR znSE9DB)NqTB;1%BWcrx4O@*PrmmA9$t=>-WS`5-uR%yQhT(4YzETWDIZ@pB zcJ?+o$|+Gk$H4?{cDXK-W3%0WLtxL{Ijn!De48oUIs}qX7#LbqHr*RS08 zW}Iy>nrrr6`)j>(H($NzLYa2l`0%_l!D#HnjT0R;a}bliDh%R7{JNcT zdVfDR4dNj>j8hcLy}Su(eQ^ zyMl)hgmHZ_NB@?sA9xP6&2&z8i`5K^hEtV8&-0!|m^5~mY8Tx(8rY!D2gd4>WRPm8 z-aP^20BTY+2_~t7WI$qM?huTQPy6s`fOU!uu)ms5Kb;6k)q=vqK+V8CdGwCmfCPKk z6hlMm$S;Awm#$ZW3Z7>AnV9Ygud7pL0~-ijSnc2mJLBMHb`qW;|@a!p#BW5s=Vq`jQUX2M5q^ zwlOv1st+`3kL{qz2%g+R_udTxc;Xp%1$5+eoOJwZd-B2-gK%mwf1j8Uq zL9B1wFOX=OR0Q;|-r|LTOa!=ZUAhths}WFlrE?(y3J@^*q3C-AY(_wjw{Cd|C_=y+ ze?P66JqYLoMRQO@DFRj&!OQGvx=3B92H!(qMhAV%tX;E8Kyh)v1_4KTWIWZh(ULm5 z#GVeg35@8Rvp}Tn#bY|7T$_4a1g;S8>IT(}`$iln5z%uw|2xFI76Fkdik|N>hjK0G zpjI@q>u1^o#zT<8j&2%(Ur`E{znnlE?Hph>(`eQSy-k%VLksT2EO>c645gPn2JYH^ z|6E=97=#$&b_ArJ{&J3IXDxK#nhk$p0aa3!02n$lX$Gg9bLpw=%(LJQ(sJAqIssmK zPKlBp4PXEe(W?O*#8m7MfG)tCz60REo?^6P0B;H{htP}`LD&=6(N2&Fai*t0I1sqf zS?q^5y$?bMX0y~V9}eWm?!+0Wp)tXysf*^%bq$au%u}SKE}J?YGEHSeOK{i=^7H9H z9LjlCbuX{cy_Fb{IJ7bBa{>LJQYi{! z_-L_CxM>%Q{q<#~J{bs4Y z`iAC>5QVaSBvAUHm2e#MLRQ?76U_bNv4S&JXyYNU9}hEc?m!-7A9|RMV?&XL?*EZV zK0*(J6DR1e%e9=A`Z1xSMq*=vwWSwgSl0{(Tl(ZuXa^G~(D#hjsx)35X8x;R7r>)``-atZ zx!0e05yb0zTYXeL2YD-e*PEI-q^^EEwnqI`Tiurmr>>gF+9YZ2m0*|F>wf?; ChK;}g delta 4857 zcmc&&X;f3!7S1_0l7LA-K}j^s$RI)!!3tO)2r7yLwN|A#5D}>r5hb7~mPBN5K+y{v zu!>M^t%^@DVx&b0f)!;_s)$w*>R9wC2qI4K?v(e$wccyH)?2Ih2U*`a`}_7jd$-WV%j-HSfq}3caBdlX&M3LKk5B9_Y%gq33x&(-%f3#D z|Ni!LqreB-D{FrW9saB6O71*u;o*qdi26ZlVeIo|=ByL`lkTg-C;4m}`!!;hM^K(k--Cxy8B`Z=p zU%9r2HhpzBKH{8mjJf%c#8`RWyia&OVy(7CRbbBY?zA!Z6LliX6m7|rNf3J?yJ%T& z8*32n1?$}oK?^A`|3cAr-_3x1Qs^RGw<)-mH%oL@8SKqlB|N(+_yo_Fmmb>0PI;Ed zbClgYfBtqu-J~nYZK;@vgh=`DZHB|TDr$!h6)UKurY-H@EHUc6)LL)EUnX^}b~V`) z+$EYTF-Zy@&1>gv(-!W=LPS0A_gvS9E_+4IA{hg&bB+_s}O@{p4jVqkb%wP~k?)n=fY6u;6E+KFKXi z-6B1SNx8Sed(U;~)ou+tT~`EZr$ulhs)2fpDDe|vrfB-t5{bK;yE58~g>N)kKswH6 zCn&WRJYEmK$8v!oYsLYN8{KY3vJHs~8$!B*DObHmUS_E}U(VCh(@Qtu>!tLB%jRxh z!o&PZJuazk% zj9-y?diH#keV7YogH`q)?(dh}3S({Rf7YjQEyL7L`}(N^yh;2ssWfo{n zb~m<_I_sb8sQ=bbq~478yQ-Ot@DE3iiSTskAph5;hfnK9Z|60>HL1v@BU~>d0h00I zFyzC7W+;>ox%m9*0CkwpNB|wb!Z^-=S3yvTTltr>^#-Z@ z(b;c-6dyL}3s6I?>5tW1$6Y7m;1>$!W#5ZXZ=G^!2yzGlLUm;DB7NYC`+jT+e;u!h zUJNF4ff#R#DQ8b{+Vi>k>52z>z?Q-*eXZu=mdXGyhJtv~V_TFT17g*p*f#*Wxie&c zYFGc@Ni)iLIt3Nw>xa?C1*$F#&0P$HaE`m?@+J_&Ra@=AAaI~U$kVMA=NLmgxftIx2cb>?k;DC#jW0lw*}0`Q(m~i z3yd&6qbZE4_(y#nda#>upt;QhH4qN*WMZ8|3Ya*pZ{9b{FCdU>OpZGS;Ug);EtiCF z9S9hu?5RTbBH#zDbgTl3#i_bKYXHkSgl3H)SbDQYE=H;ZXrbZS05=Ff_M~&ADRu^T zA(%u}aDi^o$^&#ky3&UkCvfcqykgv0_M100N63?(L$4FVcAvga6hQFnt2{*h$RCym`K?tlJ;CKe!SfWn4v2wP|n`J z^5*ZPv*((~r(BEORH-##iGZkeD!puwb!sZr zJUb~Yh>Dm$go=lC&v?REWJF996S=cSnhq3Pjo&t42e8f+bQ)ae6?1Rt_z0Dy~HH!)!X{5QJMIRnmi-sHk z-fa72-e*w79pHq%J^;j2&cOpxwx5F*H2{G|dlYyQ-ApSA%`Y~QXMh1T_AKqUp>Pn5 zLstph2|N|hF#fZ&SZX_z#_Y1l@f7}&#?MzbRZ%#a#*XWZvM9Wc#tWxg)KXYU<6~!@ zNyvNG8cl`<{08A~^sH}Qt-J>%(w;2fMA?P-b&O1 zoTORN|M(H3RLUr9vPF8UZoq^jPoqmanka3YdG)ubA`=>;?N5kmQ4;~a&{RADQ@G#; zEm(0;p`lQ$@Of3N1Q3UmuU557PawarEQ7?fT*iS~G;Fg%e(SV)SbMF+I1fVxC zMVkS106cUIz%hW2ZUSg;Af#slu;-yrNC;R!XaGi_(U35)LGvKA2cu9T`Qw5PL1+sk zsFwJ#UGJqME~I;yCHPFSX4Oh(@1XD~d88sfMFxp}6C()*`B0jGd@vZwzPmH#OEjbv zj6@k5p#(j}pc|;7qs30yF(cKhQ-{uR{gp z0^f06h;EiaBTdUD5YEL`Z)SXuA5kgnpPcBPD9)spXG)3XeH9x$S*$9Xfs(UF4a5&z z24aO|AddGw5=al+)`@TrMA~i;0F8a9JMqJz{RX(z%#`8OtD;E)@eu>$H(begXAuq$ z(Kj@E@}`3=ng%ti7lU^kd(xH#1bV_8PQ(js@a^cPett4JFs&nBFL||+&hD! zXtFIuE}6}cZ7H%Ul_$9@h}f5`c3C1nqf!f`lDEpDCnDnO?Dc)lCp1$;G4(?jrif%( zS|qTr6hofRlZyO`JmNDW^`U_;3W|UdY<3u9$R!P{<;`{I1`k>e#VR=|7Ck*ZJj*KL zJ^n|z;3rBRwXcCftZW5C;*g}vp^wl|J{--Cd@)!?Tak@{StU?blek#tUWj+LpJ7kl zZ5c=x?A2bTj$?^}WrdWOlS4c%@h`T?31)@~4eFAO7+Ax<+5=NRYy#b^>l_F@2Rb-% z70Z|$;6ITy*^e`biL;^YC@Td`2W+{{e2P3KA$(m} zcudUVO`4VtHKn?cI=gmaoRpmwagS zUgG7Oneu$NQIJV(^l{L}QYhA3I0jF^zdPr1{%X#@pD?fn&angWKdU}{L^qkoF{a5} ziPVjKyG21hk+6*=bTiH}Y7C(kl9>hGW7kE*RGOC^q*Ftr wv;J?-3{1*HKZLaLX=gc9+iPYPiFPz zWLn;?a?K4`RB6;Ts{(UZYMNvZsITOc%CBd?OY8WuUtdw(!a9#{&rPh;QRP6O{6g6b z3d#OPWYs@UZb5X6a*47)z7piPHM*Y^j zoq4blhS?-1POE89*M#m~ORgX?q&M&9)Rw5>qFt_Cza8<%-o$ zs0?9?cUIdis!C#5#{K&fN=0eH*9a=TyR)U}P*7pyjjfG#=Cq5jG^NXd@lrEmC zWT{A0Cn>rm5XdA&L%7)&g$6fn_GCqVfwrLF)bOosba~W8X;?L|v#6St+W+vdRZNPh z<$6iy7Qoph5><3%MVuE10)z%DZgxEtedfNth(^mg^f~XeFO~H&9<}Jz^UGDDsUKC1%l#~~1U6(HbrA^8zLKBczuy@v z{K>NZ3fd?}8TzQ_F|ohrUf}a@+^2S28~SMOwc}y3zW;O|BDB9mO!XJ5{;hw-ydZ4f z+}`z!x1CiO{-CLdGDX-(Ugp?5zZtC7+oY$bFGv@D&BMNXY&#pmiPFY>P3=e@ zY3+R&(SaHE@xj1%6#YDxA+4FwYK<<@pjutzoj6aQF73$LUuL+Z0sIyaaL&@5k*U2Z zJaMI>=Bi$AB$^sJXXW@c(_tJPcvrYqE2CD^Rdj+`_8JFs`$QQP#L~~e~zuiBvgw(1>^ew6++Vw z7~Y}6JihE@V%+BXE>c5-PCD^+##!^r8=F+06 zS9WR>KYws6n49g9t-HR{`Bd5sec^Ru)Q+;49lh{!t8B`~sqhR%eXNe_mo&2L`O;L7 zx6(3nrf>VQM!U|YMny~Uo#<1o4Qbc})jZdz)JXd^*J+@31I|vhNrnrAWxp9UO?Y{_ zP9}F@S+b_SZ#8v&Zwg*;>T8O6Bs6TIs4=cZM<~iu6Jd3ZqLOQ}!k1~zUz^@g>ER)>7AIn3c{yoV z|5xt6*rD(uq!cEJY88D+L+dB**p8#>$V2sL)qM9)1r z-Efy@**#(4rV2pski{9PR9AV9jl9w(T^b)BPjA4tZH^q`bo{guzo32qBocFi&v7~q zeT|g}Wj{l(hoIthoEgW8{fN#W8S#4Dr{EA`DF;6ZAp^xQkQhH93=|<=`|_gaC6N=a z*@9_=txum4d03h$&~g6Kc%_86oRHPeoju7zP?{Ll{f$kU zeyl{XG=vK*kbJP^VS-R3h5%bcYQhheY*(!;X-(<`z^TM`^Cx^T2(2_cyPb{%M<8-X zlXssps(22V!Gr`xmuRxK^ai=C#t|gqmGIS3#@05{9)hVz>?FJX2CdH=64}D62OV^S ztQiRWw0a1V`6aC{Bn`d(x!0%6f?aF&jfrzyX{7vau4#wG-lj7=qa-zoXrrTa$n%fRk9z2GNezKh2ht zU!{OSU@(&G>|uK-vi&0T8&A53+A(WDG=SR>Pve&m!_*o64rs{vc6WU+t9Cm&{5x&_aS#H*B$gxIagd<+QJNvlX)zyFi2^Uq-q&@@n7bcRUi}m>p%rW*S4}eUV_1*zcT4uNIUmpP2nPy;G z;jp%+r*wI$>ceaDe{xIybH3iYOaJj`3Xpyn8f{cT-+aIl`W9{ZB}hfI!)p4DTvm<6 z`PBL`H;n=I98cm}poH8t35v+|lb{!R@w@-K(fc%zO9=Br@LCpUPKxp5Dtgc0PwUz8 zB#s9=`4Sor%Usfu=@mTS2UHQxf!C9x5n~+9*njU5E>Cx7c7ZRMcm+rt>h7}hfQ1sn zZh{GE%*L|~ zmUYK_S_5dUPYsW)Q80(i(e<-|$%t`+WjH8?jco5Rf-fhdY2q@JRu7m%eMx^Bj6GwX z2!1_><~%yP@F}c++}xT!nq9fH@?|t+Fv&?<_6pbou~R76LtDedzw|UW^wfs^D3P4* zL|~$T(Xj!1cUs94h!5quqxrR6PWSHJV!?T z`Wf=_4eR9{k1P~GTQ~j5(lEf8%?e?5Q^TgNUcM|Ue)-Cz2lwSohIh+JYtuep-BR&Wp)K%TLJgTWB8o>?14;?{5g@FP8}p&OV; zPO*m0&ZF6=04K`q(PDYb(nYZ;39A-OnGWgc+LtV}hO0n;Iae=Q>_m=Bn|7EG$^pkE z<5>kcGagFu`#n+jxy`oU%Fu{11}x<)vw^|1fwn}?K;{mnVCOg9!s;gT!9uf?H!Zb5 zvo;j<#zM2Lti{D^$-)_6HW$NY+;G^!I_BIqw;Pnlo3)3~+959=jYryRS#9M}m$(L+ z|A%saSePkYJ=@`=MbE+oTK1$19edJV23{>2nFAZyJ03b>t;WD*5WFOdahQQm9}Y<= z2RihAHu{@G7?zQ?^H)~Koz>}X-i_weyAG-H-#>qg&D+jJ^}$~Fu$lj_vl}MrnXUcF z0X-Ste*TX9AsLRq1L;g`KZAYw+V3OaY)GF>^qBa6kJtUfc>gw}XZ)UXH+Hb4_>@gR z+55jFbf5n%bc0{dRK|U==oOnv-0!v6oA}>TiwXZ}Li~w66P!5hiy>@+DeSg+$NL9J C-a#Ay delta 5113 zcmd5EB{=DqKQ3Uto2bIzPIeShR}zwh4Pz4v#Q zgq~MgnSELX0z;SzG5QgsPYlbAxF$F*u5r>r@|&-umPDUZi0o~`4zE?SaBhFp%HU5e z&Q-36ch0FuFtr%mTwyHkU(8k*vmM_EmE7~8C*rSXez0}Bh3A`2jNjVYdK1U4T%BNI z8QInN^iV@Bg2lQeOLyeFJnOVeniBRl_~+V!a~M?bHRbR32~ITS&lOFc&dzb*K7u$d z-1DKjvcpCmhU<%~PFBr}Ppp=y2lY7OisQ$>1W%vnGUv0E6U$okuENJtrPi7Tx6eJkvzSqjkCtyVbW@Q zhc4C0=ef8h{%?O3tS0hiPLjRt*^}W#0M?-MRB@hH@F^b8O}|-(opUF??c<2%K^4wx z;s^u+e&INxr?4=6;LXc=z>AHIeFz4dj0>b|npe%=vK^&-HKKn{$Ky5yPd!D!`HCE2ua1t6NVQN8^R?qF{WoT2v{{J-Hbqv#w$pfw zXvZSKPGPUEu8#C^J7p`eV{6lQ5l7a@fq~1q2}Qr?MtNo{O52Ybi(lh;U3HY>uR_L{ zq0yAjMmhg3pAp_+-*pUsiP?TSrVn|=WiGWL0}(x(*s`c|-`56y_?v>8U zQP1P?cxqw!#w*?7Cg&@ISJ!o`*?F5CmKATxsr$yl`jK&T`HIf>8*F;(>mtju%CgG3 z?ry}^7mM5}aF;p^SNpF{OS#$&xTgH{*4xwNBHYIl%Z(b_+oPr*J!!10&N#L%c@5n% z&!Z&u`(;Z|duC3w9|yw0_#Nh@j|RNT6)o*o~Z6nM(Pg zwr^mfEbzGrJ4emqnaQ$W@6HIBsbv%}p1$v}2j}y1Fm1q!JrW{~8(RUVDYs@s-JP#8L)PL;b-D(=0^yp|%8^ON1+G|*36OQS9 z3Ybw5dH_Pm=cntoI$@?d)PTRloZZJfX*rhPTW$2eQ?QunAONv zNQ1((fHz^_WCBXR_6p*Xk^wLWK1Q0yE^o{u&c$Sz3z)BEKc+3Pq4$-RZQm*)*7~vG z3#1?XBw-&B5$}ih&%nq!6*!CM{OyB6S(2hF;Vl3xg~9eYTwq8{O{-x&F}-X~s{#QM z`SMATm9l6S*-ZjIuvTPb?a&767=wJI(cPlmOhfG?$3q}R@$O{qucQ0=@vr#wz310f zkU?pqP&RNCU1ifD@S+W%$XQtnK_XXCR^2_zpnQd$Q`Xz>Yyf7YI7}Iz9$j@0v&}vJ#&!Q z{UU(JW9kKVI$rN0^n>`o2svMgPzN~*!N8U=z?^)xl_DFR-P8h?Xb3}l+wbKIeEb5r zyhiCLH3HN<7^AE+1sk}^ z7%zb1Oln}7=Ir%c@E(46P!DiP>tJAOhcumf-w!;n4Yz_i*iiTwKp zU{4;sKyh2Gf$U`RO%fiUDyDQ#2ax~zi;T?xZs3u|h4~iH z1T@4rx-tE$Oxr~xJVYj!Ja@GsgdQaNcO_eqq65H|yh&1w1|UX5e={rrIuL$?#Gzum zL3ZnwO+BvM{T=Xw5W17?WuOMnIgw2R7$N33~-bj?`$o-U135s#nV%NDB$%Cgr zJh(<0R|6Yxo%E;%{@@0gQw=7Ao1}t1yic}O0}F7M?5hS2;2~*sn!0;LE<8=u03%~g z10n1MM8>a%A|jdmfVSyZ20+=ZNcUI2GcT)_kbW!)ec4+MhTs&ono6WkpM z^Fxh87l6HH(`SuJNc9w_@$;l^bG`SBK7rR6)(i5@VQ5uRFxTBucHR zyltn_kq@PSB}olIO#{ZGu`e240X%dzBtXm=*1@C&t~6_@i!>k(6v#J*lKJ!xg$Q7d zOv{G|zq?$c^&ai&m*^*SkKmaataU9PJt9jMfW>SK+v{<+kd#J4vGV){z~&O^WpQv} zw8nZeWqsNI*=1y1%2>xH>BZzw=f5ld=n4h&j%s*x(_@Oy$N!nH!VJmfvczE&i`l3*Y}XA+G1h1ZUqE+s!1nZ)l|c1@GuUA^-pY diff --git a/tests/ressources/v4-api/io_flow_system_base--summary.yaml b/tests/ressources/v4-api/io_flow_system_base--summary.yaml index 588ba8b3b..cb5ecf49c 100644 --- a/tests/ressources/v4-api/io_flow_system_base--summary.yaml +++ b/tests/ressources/v4-api/io_flow_system_base--summary.yaml @@ -26,8 +26,8 @@ Main Results: Not invested: {} Buses with excess: [] Durations: - modeling: 0.95 - solving: 1.54 + modeling: 0.98 + solving: 1.63 saving: 0.0 Config: config_name: flixopt diff --git a/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml b/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml index c4917badc..c04ba651a 100644 --- a/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml +++ b/tests/ressources/v4-api/io_flow_system_long--model_documentation.yaml @@ -3,7 +3,7 @@ objective: |- ---------- LinearExpression: +1 costs + 1 Penalty Sense: min - Value: 343614.0490061482 + Value: 343613.2950319929 termination_condition: optimal status: ok nvars: 13283 diff --git a/tests/ressources/v4-api/io_flow_system_long--solution.nc4 b/tests/ressources/v4-api/io_flow_system_long--solution.nc4 index 3bba656ec449c72efd74dc431a567ddaeecf99bd..311aa66a3e4ee560fe2614bad1d29e938f77abe2 100644 GIT binary patch delta 21675 zcmd42byS>BlQ23nxCJLbaCdii2oO981a}A?TnBfT3>pH#-Q6X4NPyr@aED+az&AjC zyKmlm&)Ku*yXWpcf6PO5S65e6*Hcwp-Hb$_oF<{f65*T=HW%rb^%7$z!qA@`111>eItZ!NOE#KD|#JQWRu0W z-&K3PjuD5e0^&uHfBZR;Y%NIURw1!M+W9+#)tIr|;)C8)AAftrFQ3787e@Wp35#nE zeqYTMMWWTJO!%g3a{JY&fD0H&{*BQvE#yZ|so9(QSsN@LcJYwZCQuct$mfR3AdB)itKW@KMAN!j^)yR~pbMw|4;fn>x&5KZ*5}Ye%UBi_#U-F4iwh zT;xx&)ZT^ZAQA&)S_{r^i|Af2bi;x*mjb$?H0-0&7kMZfcjj43TCmNd^m8!{H<5c_|5kNs z7e}dB`{<+uKbqNRujJXj10sBRVTO#)IGFLz-bd4VKKo=9eQ8oo7Qbgf{-c=WK&#o1 zw%43*UvuTKvi_*-%|f38LVTZ8A%9k_ABIU!(mA%Ss%xtLs{_7VAGpsTB`q9fLGx+( znAjA~FL_NTv&V_gp465NYJrZg!KLPMVJDP-8n2TXrjap-=xdo;6l9q6czqiw|%uRHd;_Eq5*Z}DZ;r+HiI zpPDsb26P}#X>a(@zX0n5`vhAGyDEmIwIV$;y`ERn6nfU-X-E^)rN~PvoPq_-A_$*9 z$@dYFZ?+w>2u<^A|A1isY_MUn@Yav@Y>r4i^3Bqv_GB|y>Wh-&NI3#%uiccb zIIzBoC|N`GO0J2ve5U-!W09_I=(>=6GA>BbYP%>fCV217=ePQxQzo}hm7y^K81G0T zZHSl2un#>`D7^D_TCP{#ikE>Y=R?==!j1>e0|>qjcXzC{$K|gO4t=*ua*!2}`FP=( zFvsq5_U>Q@OfS5`gbyCv&GX1);Bv?~8hgD@?zzAMGp&qh_wty$%8D?oKlt^E;8*sWRLLco2hljbGKI>J4ctvZRnjb7UwqJCqvy&59)~Z+RV8oCVtNerofXEth#D= zRD=wfCW>62;+uAs^oN_-^AvU%spagHNfT#QCoe@gk831!QPyzF!f+D^mz3lRs=(Z}N*@`ijknc#uP*u-ppV+@yRIsY>#?z-k2bvK z9;_75;k!sWvYB$#6H4|du2%02xL&c@=;D{Y(XFEudaV<)_p2NH8NjB( zll1i7vI?Ji+t!L$td7!`DPg=z0`;hu(LUchxI|Vj$Xm^-acfgc!Ls|#o7)jYQpPQP}Y= zZf|FoOe78QFd`?^&S5hAFtmWgFs=PmxHoX^?T%UWPuD(amBz%>+nov}R$k}wT957> zvCFR=GS}6?W3q_fW5C^?c?wQfVXVlE3t|RCl?=A9)oW?;t^ElyfZ3!1Yoy#iZs4yc z>ZNywGNp|N%w88Kp5+^+1Y?Hd{zj8URnnCQIC-ZDaNF9>hGFOwd<-pNbJkvB4HiX+ zjR+`N8u=+<*}C~f^o1mh8SvfOq0fOUE`-4#8?KXvV}<7#w=P(}%0o~0y$x*5wuL{X zkp#^Cx7%rCdA;+Sxm>5WYOA$Y$M`u1hQgPl%-Lv*pFY#N_ohG3?KW5}!}KCsGP5i= zYF!U{h5|G4x`j6PylyLMhaqtER3O-MtIaHe`cva_Pl4vi*=q)E#gAp*LfTc^U$OXd zrDul64QE`Xp7&jYl}!mKh=wI-69q#PhcLN~R-T%*hWom`sw#W=tz!^8Ax zd&KLCFyNUtwsfiCt+{eqX(RQR`)E8sc~CSW1;f_tTbkt55s|gG?IZyE$Q9VANp%QXO zCCbn!=%lr2goTJv+5Y0O8(f?pWi`OPEs{T{28FFo-L|8qA%_JF-MIP=t=MZ`x%1+q zdML@zwE7MV4{2B4h~6b6f&tm=+zI~#eEnIpZbePgs$Y17SR(Cpi-2CzJ({RqH53 zgJA!mC=Z*e{+6X$NQoQ+w1|)(&Vl#ISq~8m!jIE$UvCwI<}hEq`Q|S00QOI*Id>yc zi=@LD-r(4r%8aoMji7C-yni7-IcbuE_||MIrjGMFkA_z5YOYP5ygK#Eq3>JFQ4;`K8@5L8|SVxo~%JwIN z_=akD-PekFFRX>QoP~2F!FuVCD7wE*;H!1h0cl1+OZqEXJDhH#(TTX|kdO{13`HV} zyn-}|E{WC2aMCL~M+S^!s^GdXbPss=;zEARCYX1A zH+;rHkknbzo!D`*VmlkOb6YvaE(-L+D%+1++)1$=q-8**4e#iBV5kZS`3=N_iJBj&lv2Gzx3NTH@8A|>4s=(FOEesGpa^D zaMFdD-8#w4#ol%~rA}y6MNf3#On`-4gM!WVmRf1To#F{*g|@iqVBqI_Us1%e(#3F>Z>h)d=auY3WdRHA%9h^oKab-CW`w`6zem?6S)i%lqP5me=$mFfZ219Et{@(rP`?SWX zs2BS2L%)A?=rT44v(A+k!#~qZ*TG&9ze|9*QK~+V7wO6esi(Dxh?6^mou%4?+{&)A znA;EM)Nd0d-QPvnW)!~M$B_ezJ0fkq&_Yi_N|B-*I97#@E)L;^!lgBZagF zGIk2$x{(GbU&AULA8j2nfCNu7VkBwq2LQtS6xrhRNm>4xS>f#0W6qdE>Ig~ zm5^Lk&ItQ@IdMVBdANv(Th_~0c!rZ=Ax_=OIYP~)nc1tq$N}+S1eB|t$!W69U2KuH zAd*!oId0+Upglvf0fF~P>jY^YwA`7n_(tm zKzTvOK6c8{t}<`7bV!S(I9}0T+s1s9tPT1mEJgW!?BsXp9_sBEc;2skPPnm7AyMr*B*9yrFOkc9{K1qw?#MK_cFt4w2{m7a}T# z-g6My=C-MH8{pNseNsiSilzIJ*7BiT-}kE9ZEx`Rl%V|(UUBjic%?dd^y+pWJopPO zeS=cyA&4bV*vwhu39G-r5X};^7e=1?w52Jg)<6=pi_A;FK_3MG1enmpHazA7K!Dm~EC+DmUgSSu!QW${KVYdmf5Za)2UhCg zVOfHtI}Z`tug5NxKg0id^Suo&tWI*5g9mZjJme5KB5zC|k_6#LSd0zfcS2{Gb2WuO z4G@M;>rntqD4AZW>`|xyb}-U5fO>HRpfqB_O={2m*y@{7eqeP`Gz}2=JKM!k6Tt-ex0-*dSTLQoW09r3Gr4!s&+kvhL z{A*mmfCSq$CJ-i8Li!p9Ff(CvjT2a$0P}+#$e+OdgB)g6377z!^o6;*`a>8I1xk1^ zE|KwGDKJd-z=TfrR&2gCrPX`h5wW4Y02mNxMKJ+wQwN<23bC-r;OrTH`w!8;_qo_T znw#GG1Xv~Bm8j!5B*@vkWO#Bm)v`${{%vZgZwwVuKf1UoN=j;sEm~5sI%kG1OYhrw z6UgL_oKXr=p>}QBkOF)E$?N{E^!KJi0~=0nwfhrmYWvt-rwmu`JQuugSKYvw*Yg+d z00WlI5)B^sRR%1${oH{}aB+IR;vSJGRoy^oWQ2|`Hf-$F)W>kI$=zX(pMJe-U|?~k>xug6tc%JHzaE8*hU2ZEZ zCA)91eS%`lh#^VTDH$Fa4PcPMI%oFX#5k~=?KzF{$J%wvjciV(n zJ0uv~iJUGhe~xR=?^FPe-nC)hp23ogmU^)n~E z&-`_>XMLA=&g4iIgDhq_0>r?t{nZ9AWg}N;m)l1mX!XcdhRcjOXqw7fZ`@ty3+OoL z-Mg^-`jdhLGBV-&Nb4q-dpa#83 zpA8+2A|CpU#J!{2(P8?Fe2&G0q5uY|w{P86a-%Z|%H#6p<<3H3%c8AISwwW~LG3)y zPYbJjom$J~fQQ)`gVLRr_|T+C+d|J&E&+9^;&swa`PAgQco$aJ`X}ZJgsQ(EWv08+k zDGqVUP>86;`PI;IX|za>a{l3GHpRTkMfzUL-Wbgr2QYy+L!zknM`XD+TOxmb--fHI zn368*$YWf>n0OhBhTmNys@?tcH>FW<1Fs#ft09U3XN(>#Viz$&L25<)`{!MF8t|i0 ztuuUn1y}q(+>K=m%g{AbzZGs!L>$3v{8}6;a9*5xwe1O1)mABIN_*+gjzEO@6n%0U zWwZ$7n*?5>@>XcRmA#c;vX@OD?h4gnvoL)3H#b0O``p> zzgqS4>~ny9CTsIt(ctG4lAw>*E|@j_l2vv;RTdCtS9-lGWlx)nK;mqeb6;$>T<6DB z`5oL$-Wj40j$3dM@XKDmX#R>(LoNAE8A9>2zujigJx zPb~kT$t-gR$6@Bz|r?%w-|E7pJvPKj8Ln9)<>AW6q}tB#7sKNwlnqjRh+q2E`bRv=9>UMD~6R zvZls7_GuHrM|Ix#cA4PF8ftBN9rxt6o&S;-7J;Z?3nKmwgb%`oyLaHAy`R-&Ew>0@ zs6+hft~rK4)aO8>$zq;Yrttdo$w*BNUJjXoi=1glsw!HHR3{~s)N)@E?Wmfz7Lw`P zEE>xck$7Q3v&EYx9Su#bZKe@QZL`x<{}cNyjBtbza#Lnhmj?vCVTg;?}f~024{Z+3L?rWh}ZgA*3G=X@ZYZ!Mb(d zhMd}q&Fp-=u7~I5R0~hOyOYHdza=IVf?=tP{2-o3s#D!Xt$ZPM6Cc}<7a7vLk5+by zg1pf{UHMB#@xtE6y|RFgRaBYU*+nf(N-e?C{N*xD7SLIWb4KoXC64Iz;_rH47;yv! zJ8HLAjoH=Vy?Et03nO1Bh(p53K7z-uP+^L41xFMpzO4)pA))ITeSHaEH%D3ZL!+yV- z#A$|1uvNw6GOx{{LhUOVV~GnvVK#*V3|P=g=3qz!#gyk|o}i{y8FIo@G*6Aiw$ihY zYTtzGt(I(rCmUSO28VO6)O73$lxve}bL^W@6+;m0wxia{EVb(^l~-%qwR29(tVMTv z%1A{`OfU)=I8k9=dls*3*mu%{6ZS-m7q_<%Gz4L$LMTT?^Ha>)f~6)?Wwwv05kO5f-yd+H<1kS76D%I)C2u_yT@A&&aHQ>s!it332M;&Vc90by z4jDXY_Dn-{A@q(^TImc4cN${TjFi?$#L0y!7qONK&2|g9uUMkz*n_CCe&#B+OlejJ z#V=_*clX*$&>`J97`X9tbZ$s`NEEp7_H(r-tpD<5m?zHw|0krQTqqKzN<_KWm=yjYfF&wWy&#qhW0yc12VbzqBz*;Hz08-iUm zTNwhcJoz!VJesPHyX-t&8$&rwWuA2B0lgWCz&1WBo|X2#Df ztCewg%d=9ED8bgdoD#8?b|F^pNAgBJ#n+W$D$BfaBMiUQby8hGG}E3G@HfDKUuWeC z+5oXEH+maiG0@&w7s!?9F+Ah^MTsi}^^f-Q+nLyz#AF@i3_dkS2k1u%Y5_SdFMja^ zZt#@9!UTlILhaxOINz+8oQi`(C|!{}p}RlPUY;sRMi8qz)U;~ankQnwh{I@$>n#;^ zBF?*xJJIJD$Uy^PNJz)Ba6&8yfayxq&p&zfK49jMVYMa`ys#N^hR7KO&wKtWzwY%TnoP%OVnz52LM0kvWYnXJe3X~L z?IIW+G|6|*ZkJ5Cn#3PHCjO(xWCi6{#sd+-QD0HGG~9_0js#sfHk>!fV{qTZ;F{5> z73LBp_Q}PR1`ZmJ2k;azhsP2KiHYdq{W zy!ZV_`T}R_+~%U=LF?v+yNe4!eL!+_=3ql=giYO*L6MKnkL1?^<7$VNB<*j%4%5`f zgGXO^AZ!YGPLgQY752?yZQCuq(VPqSl(E@J823mrgO}M-+|_rIxfDsWWthne<^bk z(G_x9g)2MSAtWsKp;|GK>awF3TnOG$E}vE1cs7}WM4df6Enn=+uS6R8fy$aAEq@7o zXL`&=1OjXep|q-~Uxk$f`%3FboA%LAujEID4D&9RDd^DsdhzUXkqX!sfWL|m`Rz%O zH(Th1L2u`g&I`DKm#+#2P*JvBZ?BkYhT*H5KP0ra%m=3c>q_Q6$aHch7)jD%LE@BN3P$@%Z(p_XT#yKDb6o^-yujkBraT~rXjG{`rPo`XbxYW zA9&_^k$CGXqK=;)rGFr)S*FJXR9KWU!(W8V=bJS2c+GdSTh9fxzSPc^4E#=yQD!rx z3HM|BxrgDJBRnckRJg(n3x;Nr?ImV#H#hE&y!d>0J-Wj7U$ExYGGigg&CVn zq?NQc&3`q2*Kq*bgS90geSUilRxdkeTdzmOtp@uoI@QGhbSGnPz$(fIcm~9T($!Ta zOet51w$}p0$sc*pxXo~?dvZ|t!Si#^WR#NKGxvrBAtm}n>YX7gw5iB%vd2E=!6zt9 zdSA)gQ^z`(IBt}_q^u?;*|BovI!4UeOM!?B#s%IAS6cD#E(2ya7&iJVk^&}kTC}G2 zi9Gv#r#;Y@-;xxudeUv>*!_HG4L(S@yqsCzA%3l3cP{VDJfyvG=`(e11^%rBRVxZW ztff9#gP-D#Tr_s5sM-E&jpzQ@sWD!ZIP2%0p=*RY7X_B;b}pQLL8e?!{YN3B)|09`Ud^2_A>2> zs#4mPFFqq;pAza(ncd{ELW~u7Oz0Slgd2s@M~`=^HW1QK>O6GcpVqZlK)7xT^<(ckVubNtND*)%jFKnE4C{YEwv5z|f|RXd;neg5boC;C zoX*4_4^c5PTJEcVKH&3b8M(Ga6QLvtzfd11Ss z@3wclmCMYS(%Q&2N68!jCx;iz<&obm#cRXYCSJ|Uhy{_gUmlEiKXM9qWFnD#beMOaCZzgctnc>&4)}(1Whx>QPGkt4` zS{cO8=)g3aTxJmvK<1V}30x-}kyKtwxxcuW;B@-i7Pa0rxc!%mX{KRjK{dQ6hM;6b z@#UK+xroxFy9rYw`Z1udd!=QM$F-mFiYz&VSk|0QlMsIwlcInB!Cmf!t zochP>_jur!86}u7fbyq;E2J?i$MZZB)N!>-!Ee}X`nYFimz@OHL%_H~MAbQTKgbwn z&8?-x4#u2OV=K>I&wf8{LVEg>Zse642@K##;1WU7q4_o?SC!{ZghWXpYiG}b_3aMx zt)8Le@?jgyD#8NBOWm?HtL9!hX}D|^QU|QtIinfG2m?le4~k=v$AM)p&-$JPs(Qxj zB~xO$kFoWgRxkhfRHFK? zJnrQ(l4S1OUSr_cu`jp3q5KjPeu8=_{DOWjNT%;Y!B{SHC_)UZG-iRvtg?6|Rt!hf zCoX2<^54w%FbBv2GD@ zP(HmnF`|wmLd)@ICdZl=M8?w z7XuCgCmH-GtR`Vts%3jkRKoqJI_6Y_IZSNg-l!iH-CBz9Xfi>n%UR#HP~kb#NBl%X zjz*zLKc)IqH1OkKykGPK2gqin+nTx84%?Ua*b_-wmn_6a~1Q zp2hi|Ud;L9%cyUVMDeyB`OD!=l5WS|rAdN;=ieJPAL0>E@!o@isBIsr9_IFXQ13{l z^v^Mc0WO^XXakiDzCkCop`U_LpkI3f)$MXTzTrnyNDo*CixM?wB_1D*46#FNA`%`0 zcCVZIm;};e4=0L`Pe@3JPbg-M55%eH&0QqPdm{hDQw1GB=!z)-$(jX{Kuaw5XCY6F zp_4S;PlC}+y%GbR1Zb>-1-5@4$wua@uqw(Dh6yhPg`m{A*5WJrsM)*3m{`Jmbg;T{ ze|NB0hv+8zbpr3_JOg}CL2UZx8E@LI`z9mvWmow zt6#G?-=Sah=xglVwH~zHwJl{{d$sEW+z7F)$%7mai{mW!5Gp6LhO;tMam#-2WN0JW7%xSNgkGyyDn3OMLb5O8j{1r6y;7NOQ#tb2Eld=0=2Z5A6HLmM0Gk%e zrcjg#GQ8K2ei<`49~Fmc*2^p@8jp{wt<8(f>s~fHVDvNe(Ws*(aK{Db-RWmNHoQ3UL4>jfgSo zJW1@4n640(_yV+@H!>dxPpOlgN5FeWBoXoX)NzesI)Sxr3aSaUX<`bcJ)bmqMD4^a zk_Du3qsF89ex2l5D&g$c%Q)+{U9xS7pLQTr_qf>`S${g`vh_?Lr`uKL;&w(5^)d7C`;xX(TY{UTfVQ9)FI zirFXYPyX7j;SNmRW8kl&apJmOI%ZxXbwB5)Bxhc7_DBceL=!|jz%c$$t&+k>_ zr4h;a4d&cpW}4C*CKotp2n^8^pv*GO?il9d5q;sgdO6-7$q(l|y4v zGZ-TY=EEDG7ZQON{XclIgJr@cOXG|5RW_RmN~4wi&12H(Em;WRIDXHWUHY%_?iMh@ zWZBJ%-fCqYX2|jKGf9wP+-CEJ)Oml~(~f%nMS5w*-@1;(bgZnsK;&-rIO{z38Qcmn z!;a+a1G}R0-$oonlIiz$9NRRlC z;fhU&LF5L3+z_mBAU$Mq40uZxHFS4(*Ul;CW3fE5*c>S4f)0i6Sj2=`g!GzH0>vKO zGNg1Ihz2Q}1rk6u8-Y(C<+H%25WZt*qCXb(m{Bv~LMKQiyf*pwj9TTz-x)T64Tslb zl+k~PGFv6G8=UXtHMb>s&ql*TZE6Bob(+b9=Wg>c5b{bNLrj7k$(a;}bZR8VQZ(N&qjm_Q;>U_C^s3A!_mZG*TpL3hS#rO>T0kP$@E0qJQ1GJ~onAgA~JZP3kOGqm4e z5F*qJ?N^+FST+Nhi8ZGm=LEv?J}?0QAWFz7yyoz-vnAVuR5t^uL1inD*=8UaOw;Q9 zW*ZxV(E@b^Y+ZjWfdD!TYj6zx!4fk5SOQ(UX6pY6OL+O;wuD&7-E_BRX@wej?E znc2FamLmJG%+T))diUU=Mgt~-D�lD*M0beEz>;l=#mw0sv~Ie{)WM8QAwP2I}>% z2Acb4;g%w!3?GU~J~MyT_ZgI)W(^b{YEa0o5R6S=JF${u)8o8t z-~XP}AsOHManiCysJcr3byChh)aq5wDH0YHtsiPmFw12?h_4*bOPVC*k<>pIlAt$` z?w_*fHn#uoa~TZ&J@?6wI{v>1yzkPdhd{K5gyzL0`x{wGK&u}ME3^x z3{Yo zAhPd3Sdbh%=$#F(2aP?}(P2LQ@h78o9C;7!s`#-1+c-MX;jh5WWc+X;js_~o(?Gzz zlDh{Zs~$`d)BppGa(Ey!ruwW_5cG3_hCBHCGCfT7AMyo|L$wF;&5sRWe9eJBtp0bu z(EqLuxXzhPlZ^#R^AlO@xLaYCD zxh>B?4=$HetM-x5zq#Ci__EFW4n*3&r!Nq!E&2~CkSb-6I~e2s<|$z3j}!YhI@oG0 zJonvyKW=*Jm(}De{$24XjIdZ(BpN))oIlx03_lX#uz4-ImTxO52Bdt6h$leDo7X%t z>I_CeC!vD=gQp8|=(E_%Y`zJ0wt1auKC5x8TtP5i38tv+(M_yitUddRR<~t{eY(I$ z-v~os=$QENh8?OY&~o?fZygp5PV0t~}dyjE9L9&l>7MM4*u}z99O7| z;t~3+-oFG6Y?psf-X6YOd_Cf#-^6uPiD)Y<77N$26nDvLPjAw2?os!3ey09Lu-gUh z&IB1edEv8Tb#q;N!IA}={)X&hx;Uy-7(0^`7FVZ=%QbaG>lF_*W^i`6!c%|s=mw8w z+5W2oddy-KjBb@kY}l1VOGCCLRSdpsiDi}~Vl3p=p_%s)MDBc^=h3;ld8-pJu$+E; zps>3q5Q*SkKiSkJ(yN)>{>`ffrR!teQWDv{5JmrxnOlU|8lm( z8;vyE*{iE_f#66;n|w?uZe5CKjr9wL6tC0u;54Y%AjxzNbpnBPYgZ!G*_8pBzAD3C zm7k4waf+ge;?njHBGu6`S`5XaMx+~XIB@n<_$qX=Y(4y0M#oCda~U$^LARu?PA6cZ z248g)*nUnT7}appw{rf??1|qAY-1dMUyo-PX1^KR&%NOFIw+Yvd1Fx3!(W^2c&~8; zKGRfuBJIW>IJQH_Ty?>?>+Z^DE=y$DAHRD1FyvJd7Q=w=p_lv3p@U3dz0Q*^P)E*q zxJ{EcGp&$v4zlB{!MfTHZn06dw0&SuNntRVZDp0%zFJ*Jh&X|TtwH}iD6YQk zJIrn%#>{r-hX@DHQqbZEdzJ zgXPqvQfEFg9#sn$5{RF^pp%h7L`+Ofv}eP_%slKwC4KdRZHQ?P;A$(>-N967ZSmH2 z{or6@XLS{|s=M>ct{O!QW9+%EV*>9f7ICg*Dg%)9!1JWUsT_C0gv!dE5S@$E!k_tTd~2N? zk9ZVpYE^wFUe7d29g5ij2|l(h(r|+Z;Lhn~%%e{R0`4mbcMzp_AQWKX!xmJDFCXeb z5y1N1IIe3`>b*<-Pn;4| zPcCX0YR6G-tXpOt-G9@g`=@>W$NfV$Uzo7@o)P1a?_wY_(0e+_g&2q)M8yE15C>6$ zbgUq<;vg!}jy1$a97GCovxP*9gXlnkc8~^fC?1vrWbMA+I|YIy0U`&5r9zk_Kop>- z=@1nO5HV<58e%5_rE?|&Nt6Il!MHYo5*$Xb!T*0p*MEyF+<=GB@-L41-+jLv*Vf?4>{{3)50n0ea#YU$n=VowZ*cpg~ z4ifN@a{FE2VBxlQN2D zmSU25L&Ka5m$NA62sNt2-wxxaz{)EEZud!uh>Fs!03*QME6b<_O=({n_-l`uuZ=#%Ma?_-~ zVXa)O!qMVD4b7xDruO6O_1pJif%&#PW=xJ*IK!*%rnv!Lbhev6Uk4RA@dx0Cg0Ni0 zoKoRoBz+|TdF+=RCurPY(G2avx~ZYKQ9B(=Fqqm{gHi~KNzC)D}A-RsorAM z9z)%=%b1m|`-Fp^McxnzNb&)8yjpr?n2FZW`FcOpZ}1p{DU5v>W%{R>(REOvbnxY)$V zG4^YNI1DJr0GO4QzOsa2NPFKDYh>~JzZ#%)EpG+90diQCGxyLW<02Xi0qWp>yd`^v z`s`~|y{wBNOh1_Hw385@%xAiO>d8yAX-o|0k>b3x!t#Ur2G&1>9?X}2LQjG)GKd`` zXi2YkaZ#qkx-~!+!@4A$Q*&3fL^vA7UlZ~6i$pxZ>8p~@cKtXhcKYwd05J)#WIweI z)WY2QQ)4qxGIvEIu}`ygzWYuwoPrTRj?Ki&+!cw$uF2LpcIqF9#GcG?{|CHcXy{BCNtwwb6x6JH7Wy020r)FgITm zb)4qKf`vq`<=d`37+vu`>nk;}Id2cRCzOjI>VIoCw_Q2pPGcqB?f8leXVqZ>hjC}v zo0v3VguP^*)Z1}nYEjv0F~^&9%l1K<_OIK!`PC=vIZ z)3Y_Ag)V5anS%2~j~t6f%nkad?|#U0tPR!70EHK-%*`!}S#QW(PqH>@>~3RXSUn5M zHSvyD->qAxWw(nO$rqzRvhcG5ph|Z-|E>SS=UsPue`!<*2`>|K%krj?%UKVYvhTKm zV3Rku)-BU{`lsjV>|Odr9Cs_w2%Ab|+Vymz!ej&F*XKdNoX;|H#HVu^Hek6eA_Dhx^ zbL!2F`$1Q^NOO1&$u~VWzJo$AmHEa}{4&~%zTIW|-c;+Ftw^=P$~=RHuR{C~ zpJ~BU!aEtH*&BcAEkAtgCz?xSZ8oAme>=d=ui)WPldx=MwrT&}d65sxv7{MEpXNMLExE@<8Xz%`8P<^<&A-cQqsK|Elyiw%T#^;=V_nMU=b_EISp>xDKowpQq~EtVQWBb8bn`3MFkNgCLqd6E6B(x%uLPC&LSWLs~N^WgN$EX^$DK?4azfw z*Azqs_R?j}O=(+@oSXpltjKw}Vyu+*Ecf_6A*p8A(iUiPM}Q6KL_=_gh2`krkqU)fEUgeO3=k(ZpK1s#G^Z;Mm#}_FN%wvKw9-Laoe1E99;!Nbf66?@cntv$XvATE(CDFP zb>Wwf<>D7{e_9!!t-9m;)d`sPEzlb+-ih9d*ycoiq;XFD0+UWjNMJ6=EL)AKZ=9=@ zHZo2@Qk@u_afQo?k#h%OKqNUM;iPkk>Lz}wQlZ3nY~=ntI#EM?h@=Oi<~aUGJN3oK8aTs&C8tZR?1iZEdG-{o9w0r zSx>bhqFBRHSta+|VeB#HoyRT#mB5Qq?ZxitPB+=&>}oWRSbU8N4w*N8OdNtIw|Gww zQeM8=HI$>7oy3J{??n92^$P6mB-f&)3)ex&7nK&Al>GK0e?}B|)SvBn^?$bD-K?`N zM*P}USHHhsaga%6f=r*##=2L#H~u_u`02*vFV)A(oK^+BnA`RK;-ugEAML4QnY1mk zxq4fMQ_aO$n;qg;T>Qw(_EE&O^uu|-w;Jcq#dYlwn0{&6rBsKhB0&t(?*98)A|X`I zEOSU-KI!ZJv#(Bsm-NZ>Zc)E3JV9EwfIB!Woz*tw<_D3PLhGdMy?FK*9bEtZ-|4=! zzjk~(Fk5vZLx)9pVeoMu1?z>g-55{3O00etn7ykZ-a+)+Jf5{}PK|==V(YE0$X%Q+ zvESg&*O<&Y??SsNU;mxcsdH723aVj${&jM~x_XhipSta=+U9R{={;i!pEos8{_F6DqbZ6RGRm*c`U;>zk&li=Vco_+B+! zrY7{})5)?zr)!bsXA7>0+Ad4BoZQ+DEqyU$={`TPTI*t zrc`66TOnNaSLQzO%9=2LkA)p`KlAKQ-x|vlY_K6p>b-*RF0>`xP4e~SHL`$Nd}LQa3q zl5?!r?1i=(YpFOH?tOEt%ksm4q??)r#%4v^mwej!OwO?+=2%X|?tOj};=O*>M<3pB z&m~?$!Jhy5SLNBVx@xsCK7HA5^cUD>ncfSUHra#c^k-qdXNTV&JnlPvyUB)qy0RI0 zje$#NWH5vUs#k4nW4SCde|q;-cJnu@@{>PX<7e}0>tRR`uW$*mO0fqF-}JF z=TDqB?bzpc2XCJC^1QY4jpFAci)wEkl9}kC)2Z6F$6@NNTMQPZr}pdVx<0CKT@}-J z+4*C2aAmfQ+@tdz&Sp10y!Z6GWw?3flds$@zxUR47Q8jw_GWXNJ~#D}xsf`9QsXb}$@5@_3P@C7XTaV1n#2Pir{#V2yI{|4FZmzFRoG7j_t zmU?PUA_IK}0i+E>0moL*=OC#v!vS**kj6V=1RC3+!H^M>^$ZN?BSzwL5F<#Sb_By$ zH-rF)4;;}0QE;%__~;d2TcK?F{G&{2lU?JWsrK?pPJ3u zi1b>@H1!ZP5rS5Ous*pP3Z9LBdi5En7B zz~*N-^OLetlS?woQU&)j0au=EW`s|BF};Qu%Cg1tBWO`d6cfndau8=8Jq2+l2ka~| E0AFWENB{r; delta 20173 zcmc({bzD_nvp;^$AqAwn1XQFu1nH9Q6p&8o?oFeDfYbp&I+RZ7?k=Sp0cjBF`W?W} zeI7sG`@HV!{=VP)-2DfeHGB4~S+nM>ne|?C&Ot0{e<*4sDQ z!kQ^jhl@lxGY$7~CufGFseBGYluVaH5$&5KcMtwS+ra|@zTK3D`Q6Qf)4E0yl*bsH zqlx-6<)1ALH8ZEbaOF)+#!4pkWWeE3f5nOeQUGhdq^+jd#`Az5D6Rmhsou*)&oNZ7 zs%bi$ld1)&#VFhFxE;PW#>GQjo-4e=>E#=p(WP;*?E98KOg?IBevIdsuP5YPTwwoz znf{X@g5aRgSjzTGuShs$2ohDY#?hbyh8<#)iWtuzblKT!&{?PeKH;tOFg?f7uDjLl zP!#aPia*2u(jW4<&T5ek6ytaFSF2e%o;|dpY8oM5HUPNQ$=P zZ002CfUV+aXN7zpxT3Ue^kI;9w`wI}$=srg&<)8Q~Bh zOsu)m#-8G+&4KhfltM?LbkDKL`yj(JX42|7t>jTTH=eIo+F-bvD3W0%-LLv#$@?}n z5V-pSN=SN&hQ{x zNLMk%VPZFz+68Wlo`}elNLcDq?wLxuC%FU@)z8h$rRA{JtiHA#duvg8|8a~R!g_Kw z$p(dkQ3Vo4NyiT)AqN>08O&n66n2Y%fnd*9D7c!hY6)E?x)n*Azgg)5v3XESnw?#EN zA2VnCCd4*oBHk@HKx+y&{jqSWK2L;|Ehyoa=Yh}3)7El+ZPeWKUsGX^)T9rp*#Yr) zZnY|cs*k4dQnzYfn_zU&Yx;6wSM|3qq#0ep37k&nhjy8GFEd-DGzb%s9CBXUAQ$iA zTbUAcv?K`@emc1aD5%%lo=@{!R>`O2cr+iOJuS&9Q+B0sT65TI7HlGAA5ctM&*8=t zVJaVD8dq4Rv{jyha9%RzA!oR*& z>gJxc;;R33ktxqlYWKkH{1zsq>Z-0{u&!Iy~HXLk42s|zmWTP%7)>nNJb zJ=HSM0yg_<8c|1GE-O((Mr@p&Xs9M1%$qSJ#g0x|c#k-?yH}A-R$I}$=31)QXp=_b zy)@|TdAWtQE9zts5)ucpDUg0we?C?cw9EZV?fy5-&dngtLE~-<4sG;Fz_NcB|2fGi zYPbD4hWCTj2J6^yy2IjUj$0KtE9|Np$As==VeBhMHSMp*^CsH(-mDL&)RSvA`kv`~ z4SIgOe5Y#Q<1Z7CU}yZkJkW#5am}!K?)h-EyF4prM0Uh4=f|ntR@jwAymhT4X&d$G zMH*!3&zk1Vfuqdw0oC>BCZMTjCFw^KahFiLhP@*Dqx@#c>TXulSF#xa=8d%oV)sw# zP<=MW)Av^f)8FGR)2pHIstlp=m+K(dwvyvz&<$fad8cskSQ>scnA%kn#(t4XZv9a+ z%nh9aSFiknWi~@(oyT*Bb{LKYE|TbS&#^J@lhZT0n(L@E)xd8Oa%%vzZ)aS1?>7J{2_D%l9R^0dI;6D7WW@L8pKQxv+lxfGC`hohd|i{05@6C! z6nXL>)*tOayoG;3JnY;0T>Iz8UW57j;;22FgL<2#{0{4l#0wU|X7VIOlu_nMW@^|4W*^Z6$qYVvht*gBL}HztoY>ZALn_sa z2H7Jf64SdI9!U(Y_E%PqQe)6DB*3&XTum~JF1~*8dTmz(hK5F00Vh381|<_5Rv!rW z!J(}hLx8Z9|I!PheD z36mTiKElG?a;%RHfw!TdZzl{jgMxx&sRNqz*%E^CMeu7sRaIqv*Dz&Qj8B2e45p2K z8vl&ThNbWbv#n50@54ku`y!WjBG5B6GsvvZ0;sj08~SPPzq-~7mJ6C_HobnWZ#LJlYL72X)x3^!nW?UPA%G0IyX-1mmQW( zDTNG)KNf9588U&G>H2ZY)Rp6LmE-mNLB#m-flnP!N1ig?pGX1{v}^uk8H-rIt5xoq z1R#+d$|=DjNVC0|Zjm1c;m)phwN$?}V2i)+k0x#x{DqT^ zm(9J_ZDG%6T-h%i>)T_26`UQ>p!&u2<&MV;WN*c*KE6%9D$t*fu~Yce?eH_Sc&+#= z@_@o~L4gjZa9SQ7tho;n$gU1j>27+8t@%J5L%-G{FG>fVQP%MsuPP11LX8NqKGvG1 zp>JB6zNneDT+n1oW8kdi+s2~ull)9Vx3xs6_gB;0E8C9TG)k-rP5lD=nrmP~7wyDp z+G9$wZR-PJ=L4O&K2a5g>4*2}@%s=3pL|pPIQPBLqzrwgy7g0a-hIZm0rRn`1D_gz zj+gA#^;vem&JHL2NYCTeJqsjrn?R4tVed8xFZ_x_9IsGKv& zwF~hyTj=N``RdGRblPA=)VeAH?^iD#Iymq>Lq~JeH9k#i!Me)nMGZftr^dV2E~xj7 z+e|@=DY!y?3;7ijesQv=kdZ^9Kslqp79ee}I$gC}g+_RQJ^eAvSj~Kpst0pC$8shag6DI`_#fu9#qJs{Sc)y^tAKW7?&AoEG5e z7TrpPyKnHr6Q}ZMRV;F}=Aj{j{AlO$YDNl$MzaKFc`0WFlvw|;Sk39HWGR{P=kEF3 zIsT1@@(3Zky#@CI&C78Rs5=eS5!}~grmIEjuR>OoRx><#raneCs=h=G>~8I@_?|yq zTSI?QRFt1dy!We|{(5gpH4P0tB#<4jVA7c_M((pK9ZY9^BOaqekd12|IVl~wy`Afp z#Kk99sXF*R432F{jc|MM`@zwpaedvB_W@txKQ9gOJTLCyHLx|J9H05Aq3j$<`lC2t zcXh?{sLU>Hd{nDsuKXRs*X%}X)e{l()hrokx4~uoy+o|R`@kk0(dhv}NOuYaAn`t> zOnC`N_>sqVERtCIM*dUcgF<>kKQYW0PLFsqDb!pPO-AW@%lPHw!Z@{dy5S*J8qQJ) zxJ3@aowloy{OuCd>A49bX868~IE)zC!Pu8icL-BfEz~VnN2NAKI}}o+@=tJ_Cwy2ogl-bPhi2XuP{4=Tb}EHV;maZr}A=Cycff&vg*r_*OH^&~TW zyOpyTuQ!mgw;etoW)9|dMUXlv5ws(p-RJ^LN z1L7=s_^F&|9d^6PCjpCV_5k~ZBBDKY>?0RC3T>5%9!=f6Hc(Pi_9ELCzPg#KvFYq9 zj5)c5cNh-ee@1mtV{AQ;!&XR^e>^J~QiXVuECV0+!nesn3oBE0WF@Mk#5Z^HIPB~) z=4Crmr%eDITJ&HhUyk>KjHu_7peUqJzH>K+B*%3&3Efpj`2da~su@6PjykFi)!kh{ zDnWrQ`q$3e#=-5nmb2AaSFb_S`u9D#qqWIy<0nt4LI+7wZ@UwoQ( zK&{rhlipFm&SoK8IhPagGz!dlQTf;sm{#y)nQ-L}cVIA9ipMTDc{%Ia(y_3w`Y=jO zjqO=5eEo;|U&08SVRDSTR+XN~Qtgj|?d%n@%Gdd&?5jGBxR>M>u1P*|MsDT{Dw#V8 zfjYWs^dS()kom7(qBi2jL8{226lRU_qp)XwMa@O_=43N6K1F-HC*zkD}IapiQhySU5A%Cq&55#|`sWVnLBWK4BSY!l)W2i6pe+3eLZj zggXQ&!clbGhE583A?Ttjm>lOXVJ6VZ}x5EfCD6ayiEV38LU1O^$?Wai(+elSS+ zwr>#V=}vL*Ef?Yq7sf3Yfz%xrcDJ_Z=0fK(Dt~G)y%YgSRjHO z%O2D*BZHI56x!VCiU^Wd_IuR&>%b8`v~@ zaG4$K5DoX86%2~z{7wn?Ssok>9`l8pJ^d{h85JftGZjwe)*yT~H}i{oKSQ-#K~z!( z83*7!X;t*AH^aMu?CB`15^^tPo_@{IMn-;bslJ$C#9!Vs`}Z+#hkEI`GuD6|RuO%mGyK4L>k_!o)B_I(G@a{lT z@1IY5H;Qaz91h0Jo0{jJX1|`;5A@FU1gKMJpS{v(tI_bVsY=k$3o*K{P&}6Rd_CNZ zIk|4fywsz$B!HD*zRR4?wbkG$;-0bor=L9gUhaO!IM?h4wxl`<);|xWx5kC)Q*b7! zP|GSmG>+BpcxY2JA1)+?zF%W<`k5c!J8{$oP{E0EQf8F+GcF!@9+~G+Tj@D5t^(FB zipm|wDd4b*vKfRgS0(PQMJzoM_8!OiUA6cH`%mA+2lXW&w!QC#H~p+dIx6=g+)MB@ ztZe^X`l)AP=~2QriAH+&wgdIN$=1xa_?7QV*b>mreeX-h6+ItsrZAYDK~9}7y65j# z7P^o3B$d#pu9=y9)sNsOjQ_>XbPTX_zrvAOz%Ar_>>5#6NbDl`w$L_-Key^gaw&sL5d(3o2j@Vkamo@Z_sXsx`A=4kj($$7}H7XY(y@moJ(H9%{9iIdCZ@ff$D9kD%rf{MpN zlV5sIVMvO~H*D;%x4g_L-Lk-$g|qd#c&qg|@q@GACx`hW{Cs+JD$72f3 zOZb3i_1Mt$AE~EJe!$AHxVI>qLW<>2gNnoz4h#2a!~Ecdos{Re#HPp=4Tk&;Vsj;v zxz2H6I&c|d6(;mdXDb304hH%xd>}|*-*cpJF0L_keD%0E{5W-WbuRSq@Bt>99dh#I zftShT$vZYo1M=uxai*r!Q^ZxEx3YFmF$06)kq{71PS4yt-OXyie)O1CppwMIkenQ7 zL{Um(qoCr{`1thb?6={8j+UU~m&eb{7^74Cs^0_^G>{ zg8YiOG2Ps&c&D|sJ`j-*o10hpCgF!aOD};7d5^dOR?iWKgD%QK2*LNDi)s)8xUauJ zl}ap-Yb4-i-D^vV86gx^VcDstTUgb7*2Oe*_17t9 z-fW7HuOQ+{MBk*x<(c!GR8hV{6NgA`YqI>v_q4wDtq(G#D^@*p-}MDd!FG?0%ie@=PK?& z{Yyal#>4mNwLszEd394w`0je1f)r~lMtRjv*_XsxpX{ajSY~Fze*KZjSk=ou^A|+y z+0_$%<4f(b&f16R1GCP>)17&%iR{dA-pfaMD;n~L2V^}2&$3GtShhx|m~c!ycYxm9 z(IZkX7yoICUaZ);IfYPRUq#>4fDw?)yJx_qr<&%}!HdImd@F0-m(O;;=4V8Z&CP1q zun&EA)E>fej$fXwa}_ibZE`{@CQWdxN=+4dyf+hEMA}!XmrGrg+pjNeon22lgrL3`IG^ldlTDV4l|pv)K6erKVwzAy8N}ik8o%A z<_J8Mz_muK+{71dg+kHeXBUIodgqy|GiC`cZA;JN+~3=+h6B>gwQmXMNd0{I(3*n! zsx4lXuJ>4Q(Bd;;3CW*Cv zDa6}%4{GNB0M&DYqoK%Pc4^^9YCN=Z1Row50hu?lcsi@Hur>YqlgjEQfGR#X?l!6^x#8q&WP9CZ zUu$|}il8{@mo4{r3Qcx))m`wh#5FxbOE((H*stnq4y)Ova#yJ@Phc+7oTidvb=+ZF z{_GXDhv7FSDe<_10$2G4pc?OxKCe{p(sc?>d{+vxc|I1z`0Ax{!RWDi+~>51tiMc* zK12?EP`NcbIQn6y0BTUB=WqM*YC$kBLfB%0&;f2UP&)b7G$j58s2`wfD7c zS}5P5Mz?l(a|KM*pRTNVpRwI|yKh!jxki7moG1J833DZRGHQ?-x{5!r@wz-ps%N|udAPgj_m|0$n_o{^TWt6y3{=G~hn1V!Ty&v<#Kw6$M+AR*bXe3hG**VEhM z`w17hr>6-~WBlvbI5!8!*YR)P)HKv$@K@H1vmZZMVk0B_?%Qu`WBIA5;B#(%J_9{1 zLO>LDG2Y4wo)C$p<*NWPFTK87$TJZh@=w4pO8Q)c1q26 z>m>Mgodn-6gC*g}w~J)F?vQrVS4Q=Z=hNO%M>8bjtNl|~!b*-iaayC-o*n&l?$-ue z!fHw%+h!C4MltOW;l5Hh*7=(He6aPBc&C!^s=4H(y<)%2Qn@ABZEpD0n)Te6-kgrX zrf1Dj*SD-(syI@aB9f%DmKe|F=M|NdH+_Yb*>csh&*wh@=jYZtSRbRD5KL!*M2^;-DN;el4nIXreFW>WaEr!aHdnU8mI595X~d%>KvUcozM4ouIGUMDBa z!6uf^dRiP(i)NkWqFAQyuD{H@J{z25Ur9fDc(gV9t}bhknZ=@Ks`&80lAovOa1*i7 zfD|VrPyR50y(X{)LSHNs0hm4WWGjlMHkxY=UIzw9I4W{jKBD;ORmjd~tax;-gluTr zdY5U|(LwQYqKzVXw0%uWWw9(0mo5rfH7JeNIz&r#`aG$);-v*>hxMww^(No`Fk_~! zP_Junx^DZRb?GmThc{*8Y#H%j`NnTRD&DE&52veB=JFZ}mCu$f6Ov0m>Ay0xxHz=d z1?sE_N&(yNoc7VRIqUrIY30*0Yv`RP*$z3=g3JbtF;P(SDaO99E!%R(*pLZs(SFTw z05+yKD-L_Vj4?oa`PTOvuYbgac#p=L1#3M1xYe<4jA)EbqhHV*pWCo!)GX-3j8(t5P?_qH7Ow(qJPHHDd6} zPJZ)Bx**v@jwosPuWA+fK}GjA_!Haqpw|;Q87k@X@XGV@RhyX+{rqL(6X*^K}7zz0iq0jPO6 zPN)<-+8xxDL?p!SEnsdp7(G>Bdm10I_(nn?AV4{4A|kZc=AJ~2_RE@Wbzo(+#@Zrr ze9QAxPRzNLwj$COHSZOheL^^T7!hGIZvOYVpO7Lm`WAV8Zst_0^}?H4L5X3?Lvo7?Gb` zssJFNpCvw@tegH)Am}dOVPAS)^T3vBur8lR4OqX7IM>UZw@qAFn$rI{Z`>oeUj;o* z@I%N_gG0td!E|cs>FR3QJHBoNfU8ThlR?-**wfM7-rC#SIWXAS+u7RQJkZm3vU|Ln z@?dTOLc_MiCPYC?$wW;BFg&86Xd3M7Z$}VIN+L}XLgZ$Ckm8$~iiruzLO?(`aeJzj zKzMa^c7*`T6n%vyB#6x$Xu8~d1O#3(p`*)V>YE`A3(>osoFKr%`(YxVxK~ZU_%F|{ z4i6H!Nhxx=FDP)S%$vaQTa-=BbKqyiPskToz=9OUG;9>c`1tpH)62*~PVwvgw~HfG z4+%^N5g;gIJ-b4R3j<3+5N>wejc^iaOt+i<976EjrXN-l00M>8I6K~w1F8NZqr=Fw zJ@&6|w(Mot3p`+ONF^m67#EDXZ2C1^K~hW^a-Rj-yaaw#nTHQHfk4J7GFZ=$E3qlT z(_lzB-ECu+4h%*FS61$`fK@OcsEU87b1zz6!U$R{3GT-ykhueEFiT}%01oVW&@hBJ zT2`W553W>{0XswB-r4`w3FihWD8NGpMV9Pf{-J@Y0{9RKUL^4d0+rJMQ-V>Uwi;k{ zFafkf1568MhVE&AnIY4*P)bcO6C}bDs-y{i0!j3Odfc>8eWAIUVCskU?!Un$c!pa= zKp=DxNf`|`8YMkbXId{?8(JUefhL$9&M5^9L#qg)$=e8j11peW!`q=j73ILraKHS1 zD-7Vm1TA7A`oj>B-y-jBrsm-o|G+a|!|;rH>*|FYJR?l29HY1Y2G8)m!816I;Yn`s zj4>FV5%33|!6OgDGtNhN{()zl{R7XiyTvmA7@)!ap8*=Tc*gX9;2979z%$DJ#502a z|Kl0JzXCM=O?U?IuKEo2ROsdy{J@=i*{mQ@!F zr_Y9Zr$I1ikWYjpo9*BP35kgbg)rfp@(~{)`opD>5N@TN5wpk=XQz^bo;qo$Umg$!_8~J3M^4eM<8t4KMu1Yckd%T=we^_@XT7;kQCxhQ*<$A)FRx~H{0dd z$G6r6_mE0qIVpY3T|%CF;PU}tDXG1LSU3@nX z1QxyB6B#rlTr~x!l66Kn z>bvvLYdp0WA;5zPyNbdK|GEAPBlUzWhf-})DdtL!v|rD{Jsq+&uaq0hY#61#5)rRD zc|D?};;``ZU)~|2mx>oat##;FY$mmxYDZFH(TQfi&}7yatYkt;kL!qgEaTiOR7N(* z&Z$uuu-DmQI#Q)Q&QUarB|}^jvas<+8q^dMWH@`Jd=ZdW1R=(7Yn=f zfc`NqRe5Zuu**%V>E5_?2;rQohNe0{tAQ2HqAx^ge2N(q~kSv z=?B_1uCq3Pu2KIvGzcN2LstOzF@GJ*dfyR!+YMQ{ME3D_H2tSPn=wx&oi$(C)Cbup zEY|RE6S2;E*i}hvyHcQSf3E6oX8LTv@;bKrqT9y)5jV!Klg(hw%qLG z-^ON2#j3zJmU!GFB>ghR=_k=+TTEYzjxoN}PiXT5Aan=|JWs@ul!;S+jgB~m5f7df z&ZFXTj`*P7A!_}ZRG@f*Zg$|s(xMf%A7Wv$IW8!7TyZSEe|p)7gp>WTBRPU;+T$>T zw>tkd68 zc|>=i%nwz@NbJli9o$ALzC>obl^TqR+N(Bw!>LCGW%B7H&M)_WM?k}y{5<2rZ)hv( zi(KC3p`3rP%oOX?G$d#^xglZDS=PDb`3r9gNKTWZ)|PY$eORB4r{)z>!zngCHHUFj z?_95`^#fk{B1fZeuh3^$axxLwd**zua@IXrd?NM<28OpA-<8G(Hm5VuEL%ak8Y1_D zN6Hp8Eva+f684*Yu%fi>!GqRnhk4z}x%TnF_drjUz&TCasZytz-JuwC-_1@S}sex&up9gBo5 z6EB_8fJbysqNTFhl&SVfOUlb*bktwU!>ywsMoSs763I$DmZWEXh;uJ6>Vog-wMQ$# z8?ly9h(L-)|4Q*B12viQJ#boxd`Jrex@-=La(_^98gq<_WShqR(<%=t?5_mKC!F8Z zNI#L!V+Kx9NM`t5d-=Do+D+(i1-5_6tXG$Qv|u0P?w(2mtL+uX9=ftEyu2UNd#nmu zU!@>5;OJ)7dU$+(sw-$oGK39~#{6?VpTPRF?ST7d8-)L78&&ep_J1>;aDx6GP!hfV z6!_OR0~RfAFUD?j^}9f6RRr6!#g+V1c=PW09b5>AVZ2XCJ01QwG0nZcIgZvx=y9NQ zp}Pq;aF{K3_Nc%t+J;6}fr;;D7T$GFyw%B<)1gf2ptON0>=5L z{@1GiiZ5u;T^BG3#h-`4$RJRE>D6a2JkxLWNu#mAq>%VL=s+Eq8iH8|J*opgfW&=< z64Zm~Ax(`?v3f8gq^}9;SPy$XHU&+rhdocOht}OZH=cp6!=97b&E9DVhUfk*7x{MY z1>1E!-G{O_fFDCTR-rE%z!Y#JYd5MOvRfXBo5ZwoUeXG$2si=RX-@h0#=Qr)*&4ZpvI*RV8l;W4{SB>%CsE zk@CX{eT7w6z!D&+WDCqeBztZrNXiAw{!i0ZF!JZLL9<-ISAg5gf^a=a6(v$%jL}D8 zR$-41RvffMONmS}9XFf~a$7r!AODDnOf>F7E~7jNdBLv5W`#j%Xm?LmTPBkA@fKTl zU)6TAP+UA$c2$XbJ|4Be59~D0cZVE2AwSNW-Feo|2QU<>Bn7Wp&QYFpE2d~6k_TAq z2_k#x0ae3>ad?2&rVlakJYht5BYHuQB=#yLwi|~*yf^I}4Nuzqb<8EsLDYjT=GEgK z>iE}^I|V_W8pr^KUBQmn@rzGu0#8z2vbqHeu!*t|+<#}oW)sn&&F%b9_VSByZHn^r zcFpS{G@N10P!)eO)#ACSA2yPE#7yStQ>6h_9gGwP)Wpqzrbm{QJOg~k93Idrmo1So zX7obARh~H+&T%+$SeLh_$Wg`|%f`|8X`pO;x_PZ5E_FKVXCuVQgh07iT>@6Ahly;! z^jM6%IyYfZg88GL9dGk%g`fO*ZPEUo%}X9XPJ626IfPXMw3=?vj?3{ddy}o$X*}Mx zX|3&?2r=U;052<+5!z9YKEolAJXlH+yoH??uh%H5T~_B4|0ekJo?PArOB$lW&nf>S z#___6Yv&|Esuu(7OszT`s&TSt7=~JKaS}#3rm7h(_v~j{0z(X_h*A0~zB>}}W|Z;u zM2nhy^7oiV$zEc70~>E}v^{sVB}zbRtwv6!YoUcR5EY)_&0BAglYz9FF5EFbed@jK zpT3Atf3lfrG(6G0CR5*N(<;Wn#t20WemDN4?+aY_n%81F_gMbbKGUOmtiS|wx9kk| zStBDtkO~)CT3cuE`Dzm9aFv6LSW4OX7Q$w3gzfH&+KAJ^<4GwF;xwm znFl>6fOx{i47sN(?8_N&gOFGaVt-1D05Ng@Hvf18KB<<<;!nZ8qfbp({Dg~}@}YRzfbmog zla=$Of+SCOYQEtx;v~FYH{%(}L{?ScJ=!N^bsDdwJg$@iKMS^a?sRs%5ob6b(G1^; zGMuWgVU_1Mg^6nFm8&2B$UFgz#hU|`m%Sdn$|4(5@KAEpHt`Sq877XDo)@=dWW4@zGj3p|VSrNr=QMNVgllic zdd=NDRAo>qiH)#n&-r$;bm_)rm_N675};Kxo*(zam8s|nHo=}UbUPg z+&UC210e-kKCgk~iO`x#bh?gC2X*m6w)j0;J&$Q`-aB#s{#7*ge)H9KO((H69-QW53jhfNtQCW!~!|y7e zJG0XXl|k-<%_B(kRnUh=L6E0e@4+<*_kV!0F-6n; z2uWCG!W0CBmp8#Dj~r=kKLNf>LOz_1caK)4Nd z?4x(lFO(;a>Xz{AjzC_zVf*?nc#ci|89DtDw#4otU)&@t9?p&Yg(^$J8UL1+IXk`^ zJtu2*12H2)9_2xqmcicQmB5{#ziJ0z#ez3iqNQH{f8JAa{hvKQEwsF=(SY8jYS^Ry zl&TRP{x!avnBN_E>2s5bKx9!W4Xhy;VBo<`PXV+4CEW2};S>K=I{7aWk>7QXFeUz; zi2U8W|Hq*B|1?7V_x;I#N<2h=8-e8nj78~nsd4~@=e@Hg2=gw5b9A+EGBWqFH8t({ z2{k-{A@5$;(9jbY@;-$Gt-WcZ;6lHjfY~8+(um%TGWQJTWLEz))ew2g z-*ZX{<3&+N-u_=oF0KDV%A+Tz}pVwrfz#gZMNL>yRk=Rlp55p4@?AhzeN;V#{RL4K_Z|2 zmhce9c-g>Ve=9-lP6B*%i1^;^vKFX#$42oO#)cygJ@tesHo-RYWmr>o5P zT~Cp9V00uj5D1O@{ydaV7(xNr;DWvshR{OFHKA{WArB#?a?nCy$fJis3U?yG@PAb! zqpLVM*jh6RD4N(9SUI_i=|T^MAv6%hm(T|yFaaVjpwc3cN01>{8LFFoEk2Q<3W1zIEaXo?_K`#n#>-ltxb9ByYE|0UFbABl7JKOh$ zy#{B#>|1@`{xEa>7FJK_y{Tlz= z|DGPdh^ThH?IoQS-)>O*>MP*U%MMJod(Wz7y`QHwbVvIM?{H3oZ2|-?mjQOctPUt2 z-%Llw*nb)T~9LT6mg{l%&5W0deK1{?OqBXQ^c5!LMUcSxqstbGn#qMfJPeso&) zaL=-BgEYz{M zpXF=ZXs*e?SunVpvOi!9gh$;&%ilis%G(&zQc&Xenbmo6zFcrRZu3*`MA4YAe7A*4 zgxUZ}aP+}R^|w`a7UM0z;c>#g$<&r_vdv^!S@}1pPvo;xMaL=b>&{Ln|5pu$P&fN( zhc9x&^AA|Fz6HwwWmuZ@@)!s7hF0v}!gsoCvOYGZa3A;3D&l^_ufITLgD5wkXKT z)2|i#?C$I8mZ@GT?_c5~*5da*##>R*yL9q!@`E{xFxjzu+59;i5g|H*oZe+d*x;*z zD?ZmnjTBvRG_d+wCUEIS)K(f+{^g;QI$l*fXv z>&fgHPtvcocB6MXb)ty~=aib+Hx*Rz@5i)5MiG1_^qQaKnKB68-+R&F{l z-{RU)A(3*L{1ks23v7jBV^w}~sLQyQ6BE#%e;PV1$U|)=1t>(gV0-m%krvhroCh|2 zMFUVhYza)kYMLiOa%m+EPk`lZhYO?lyb%g*I7uO#YIWXAUJ|Lrq zDBpibjap5d5%|=TQ)8sMpJmCEjI)JQrG@lip-Q<;fOp%&_^s>3%RN5myr-)^X;6LY zeNkaTbV4){iuYhRG(=UIAmB5hDV%<}5C*}-lojsb=M-Nj?`U4lbL+$9oPyxok?rJZ z@HEc!m;3kOA;l~uy!1I!Uk(es-=!|kJ*l`R?UWyy%E8ec)$>&tT={gAqIeBrok(;8 zWNBo#%00A~9KR#5n++3$Iw+W=Bhzo`{CJhWKL;9$)if`{t6sBL)&&|0-A6GZWQB08 zRBYRSWKzZ&^Kr4{KV)`_vUkPm-cFK5RnJ0y^tSsoKdyzIM%Y3r4gFN;>ur~I>RC`= zPC;IzMzN=9Rg`N}VhN5t(K)OCPzP3HU%nG}r&Rw+RAh`R;rl9!V%um5W|6T%#jfSe zCBI3*#z8TxRg7qaBrSlNY-rtkZk67xKrG)-a?SJSp}xR^P{^kcfhV5td*7T%xN`K= zev~dwOPZw^%SLFFCbQFdfv}`jrBw(S+URl_+NbcZ+8R(wb@Q?sY02laoVJ*Eb6#c@ zX*01>_QR0auTqN{FPU!G;(=4#axY&L8w{2U4<~13R|;$o?WF6k z^?8zdPbMLe&n^zqzpO>K6uM}px9IM2K##sLZduc zJdqc{fD@-Nd)JS6v!-QuPx~al*OaMLQw8;_wt7Sxj=eo5Nq!VoyHbmg z(P}b{F~VW@v)jm$^$8wmepk|le`d1s(S#S9KILm-B7U1P5|t4X+%I+-IEk!6Z8kcr z3@1#EC1KRa<<$MkC7a9i)MkW4G>JZ6d?llxHN&Jf4F1Yq!askl$JCfRI*pxK|{0?BWv^68%}1#6rIG!2LRq&-5CQ$~<+1m?vXNJnQtt8@c(-!l1G zfJDYd6ew|u0;x%!?ZFjW*?x8TLcv!ssn&L?&sX8Ra)wXw+R@=5H8ymy@5prEqyheq zp5IPSWhAaX9s|=IJLzIN9S-ko(KMZ`aS%5tH=)>Pq6{-sbMCnMjhnlb^+I{)r}c^B zIg|6=!GnS4u-WPdh-v_pT1mLnnirp5Ji@*gCwvm?4bD3Et@iP@DR386@xjIzgtcamrRydG>kWQK6xzqs2q>Q3Dzr#BUIP`y%E zIf&;S;T9T#1SS2>QR!g`8uAo}>_6wIuo7(ulzAEKa+{~#{9we&x$o}nPctBFD(+@i z-Sv=mC-8QM)%iOE3?cTAyUhS8EABb~7-6qdTd}vmZvSP1{ePQ~D!%+PVHJ4+x%t}Y zKQ5NCc%eJxITLQz<(r}o(p!aX>wl-LH>YewCCnwanQeVLKQIUW!#^}{Sa!qzLAYtF zB>dTC>G#6@^Sl{WhMXHq%L9g2y5Wai=rXqERwn 0 + + @pytest.mark.parametrize('result_name', V4_RESULT_NAMES) + def test_v4_reoptimized_objective_matches_original(self, result_name): + """Test that re-solving the migrated FlowSystem gives the same objective effect.""" + import flixopt as fx + + # Load old results + fs = fx.FlowSystem.from_old_results(self.V4_API_PATH, result_name) + + # Get the objective effect label + objective_effect_label = fs.effects.objective_effect.label + + # Get the original effect total from the old solution (sum for multi-scenario) + old_effect_total = float(fs.solution[objective_effect_label].values.sum()) + old_objective = float(fs.solution['objective'].values.sum()) + + # Re-solve the FlowSystem + fs.optimize(fx.solvers.HighsSolver(mip_gap=0)) + + # Get new objective effect total (sum for multi-scenario) + new_objective = float(fs.solution['objective'].item()) + new_effect_total = float(fs.solution[objective_effect_label].sum().item()) + + # Verify objective matches (within tolerance) + assert new_objective == pytest.approx(old_objective, rel=1e-5, abs=1), ( + f'Objective mismatch for {result_name}: new={new_objective}, old={old_objective}' + ) + + assert new_effect_total == pytest.approx(old_effect_total, rel=1e-5, abs=1), ( + f'Effect {objective_effect_label} mismatch for {result_name}: ' + f'new={new_effect_total}, old={old_effect_total}' + ) From ddd614b619d9eaedc8298b62139a542e1ea9bb9b Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 16:46:42 +0100 Subject: [PATCH 51/88] Make IO more strict to prevent silent errors. - Added strict validation that raises TypeError for unknown parameters - Uses _deferred_init_attrs class attribute to handle internal attributes - Unknown params now give helpful error messages suggesting they may need conversion --- flixopt/io.py | 4 ++++ flixopt/structure.py | 36 +++++++++++++++++++++++++++--------- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/flixopt/io.py b/flixopt/io.py index 0994b841d..38c3e6286 100644 --- a/flixopt/io.py +++ b/flixopt/io.py @@ -657,6 +657,10 @@ def load_dataset_from_netcdf(path: str | pathlib.Path) -> xr.Dataset: 'consecutive_on_hours_max': 'max_uptime', 'consecutive_off_hours_min': 'min_downtime', 'consecutive_off_hours_max': 'max_downtime', + 'force_switch_on': 'force_startup_tracking', + 'on_hours_min': 'active_hours_min', + 'on_hours_max': 'active_hours_max', + 'switch_on_max': 'startup_limit', # TimeSeriesData 'agg_group': 'aggregation_group', 'agg_weight': 'aggregation_weight', diff --git a/flixopt/structure.py b/flixopt/structure.py index 536b2a697..f317adaad 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -15,6 +15,7 @@ from typing import ( TYPE_CHECKING, Any, + ClassVar, Generic, Literal, TypeVar, @@ -785,18 +786,31 @@ def _resolve_reference_structure(cls, structure, arrays_dict: dict[str, xr.DataA # Get valid constructor parameters for this class init_params = set(inspect.signature(nested_class.__init__).parameters.keys()) - # Separate constructor args from extra attributes - constructor_args = {k: v for k, v in resolved_nested_data.items() if k in init_params} - extra_attrs = {k: v for k, v in resolved_nested_data.items() if k not in init_params} - - # Create instance with constructor args - instance = nested_class(**constructor_args) - - # Set extra attributes (like _variable_names, _constraint_names) - for attr_name, attr_value in extra_attrs.items(): + # Check for deferred init attributes (defined as class attribute on Element subclasses) + # These are serialized but set after construction, not passed to child __init__ + deferred_attr_names = getattr(nested_class, '_deferred_init_attrs', set()) + deferred_attrs = {k: v for k, v in resolved_nested_data.items() if k in deferred_attr_names} + constructor_data = {k: v for k, v in resolved_nested_data.items() if k not in deferred_attr_names} + + # Check for unknown parameters - these could be typos or renamed params + unknown_params = set(constructor_data.keys()) - init_params + if unknown_params: + raise TypeError( + f'{class_name}.__init__() got unexpected keyword arguments: {unknown_params}. ' + f'This may indicate renamed parameters that need conversion. ' + f'Valid parameters are: {init_params - {"self"}}' + ) + + # Create instance with constructor parameters + instance = nested_class(**constructor_data) + + # Set internal attributes after construction + for attr_name, attr_value in deferred_attrs.items(): setattr(instance, attr_name, attr_value) return instance + except TypeError as e: + raise ValueError(f'Failed to create instance of {class_name}: {e}') from e except Exception as e: raise ValueError(f'Failed to create instance of {class_name}: {e}') from e else: @@ -1045,6 +1059,10 @@ class Element(Interface): submodel: ElementModel | None + # Attributes that are serialized but set after construction (not passed to child __init__) + # These are internal state populated during modeling, not user-facing parameters + _deferred_init_attrs: ClassVar[set[str]] = {'_variable_names', '_constraint_names'} + def __init__( self, label: str, From eb160aa1fa5522c6ccb6461f85162018aa7e5e36 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:05:03 +0100 Subject: [PATCH 52/88] Add deprecation warning for method for old results --- flixopt/flow_system.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index e28e37368..a4a06e41f 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -798,7 +798,16 @@ def from_old_results(cls, folder: str | pathlib.Path, name: str) -> FlowSystem: # Save in new single-file format fs.to_netcdf('my_optimization.nc') ``` + + Deprecated: + This method will be removed in v6. """ + warnings.warn( + f'from_old_results() is deprecated and will be removed in v{DEPRECATION_REMOVAL_VERSION}. ' + 'This utility is only for migrating results from flixopt versions before v5.', + DeprecationWarning, + stacklevel=2, + ) import json from flixopt.io import convert_old_dataset, load_dataset_from_netcdf From 10939bc10775b3cb89258cae56580f7dfd380dca Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 09:31:23 +0100 Subject: [PATCH 53/88] Adjust notebook config to plotly_white theme --- flixopt/config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/flixopt/config.py b/flixopt/config.py index a98d1dd6f..9560042e3 100644 --- a/flixopt/config.py +++ b/flixopt/config.py @@ -810,6 +810,7 @@ def notebook(cls) -> type[CONFIG]: # Set plotly to render inline in notebooks pio.renderers.default = 'notebook' + pio.templates.default = 'plotly_white' # Disable default show since notebooks render via _repr_html_ cls.Plotting.default_show = False From 6bc4d4d628ff14bb6024520b4b6e5e52f757104d Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:00:11 +0100 Subject: [PATCH 54/88] Add default compression to netcdf filesand overwrite=False --- flixopt/flow_system.py | 4 ++-- flixopt/structure.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index a4a06e41f..763aeac9f 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -707,7 +707,7 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: return flow_system - def to_netcdf(self, path: str | pathlib.Path, compression: int = 0, overwrite: bool = True): + def to_netcdf(self, path: str | pathlib.Path, compression: int = 5, overwrite: bool = False): """ Save the FlowSystem to a NetCDF file. Ensures FlowSystem is connected before saving. @@ -718,7 +718,7 @@ def to_netcdf(self, path: str | pathlib.Path, compression: int = 0, overwrite: b Args: path: The path to the netCDF file. Parent directories are created if they don't exist. compression: The compression level to use when saving the file (0-9). - overwrite: If True (default), overwrite existing file. If False, raise error if file exists. + overwrite: If True, overwrite existing file. If False, raise error if file exists. Raises: FileExistsError: If overwrite=False and file already exists. diff --git a/flixopt/structure.py b/flixopt/structure.py index f317adaad..590fe8ba0 100644 --- a/flixopt/structure.py +++ b/flixopt/structure.py @@ -886,14 +886,14 @@ def to_dataset(self) -> xr.Dataset: f'Original Error: {e}' ) from e - def to_netcdf(self, path: str | pathlib.Path, compression: int = 0, overwrite: bool = True): + def to_netcdf(self, path: str | pathlib.Path, compression: int = 5, overwrite: bool = False): """ Save the object to a NetCDF file. Args: path: Path to save the NetCDF file. Parent directories are created if they don't exist. compression: Compression level (0-9) - overwrite: If True (default), overwrite existing file. If False, raise error if file exists. + overwrite: If True, overwrite existing file. If False, raise error if file exists. Raises: FileExistsError: If overwrite=False and file already exists. From 31e08354217940953d2d73427dfef3a12e13eee8 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:01:46 +0100 Subject: [PATCH 55/88] Add effect selecrtipon to sankey --- flixopt/statistics_accessor.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 0ed790f44..e2d59d8a1 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -1199,7 +1199,9 @@ def _build_effects_sankey( - Links: Contributions from each component to each effect Args: - select: xarray-style selection. + select: xarray-style selection. Supports 'effect' key to filter + which effects are shown (e.g., select={'effect': 'costs'} or + select={'effect': ['costs', 'CO2']}). colors: Color specification for nodes. **plotly_kwargs: Additional Plotly layout arguments. @@ -1208,11 +1210,24 @@ def _build_effects_sankey( """ total_effects = self._stats.total_effects + # Extract effect filter from select (not passed to xarray sel) + effect_filter: str | list[str] | None = None + if select is not None: + select = dict(select) # Make a copy to avoid mutating original + effect_filter = select.pop('effect', None) + + # Determine which effects to include + effect_names = list(total_effects.data_vars) + if effect_filter is not None: + if isinstance(effect_filter, str): + effect_filter = [effect_filter] + effect_names = [e for e in effect_names if e in effect_filter] + # Collect all links: component -> effect nodes: set[str] = set() links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} - for effect_name in total_effects.data_vars: + for effect_name in effect_names: effect_data = total_effects[effect_name] effect_data = _apply_selection(effect_data, select) From e5462289d582fb52f7ad14eb897eea3a81943005 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:23:46 +0100 Subject: [PATCH 56/88] Use sankey accessor with better selections --- flixopt/statistics_accessor.py | 349 +++++++++++++++++++++++++++++---- 1 file changed, 307 insertions(+), 42 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index e2d59d8a1..748d56702 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -48,6 +48,14 @@ """For include/exclude filtering: 'Boiler' or ['Boiler', 'CHP']""" +# Sankey select types with Literal keys for IDE autocomplete +FlowSankeySelect = dict[Literal['flow', 'bus', 'component', 'time', 'period', 'scenario'], Any] +"""Select options for flow-based sankey: flow, bus, component, time, period, scenario.""" + +EffectsSankeySelect = dict[Literal['effect', 'component', 'contributor', 'period', 'scenario'], Any] +"""Select options for effects sankey: effect, component, contributor, period, scenario.""" + + def _reshape_time_for_heatmap( data: xr.DataArray, reshape: tuple[str, str], @@ -755,6 +763,222 @@ def get_contributor_type(contributor: str) -> str: return ds +# --- Sankey Plot Accessor --- + + +class SankeyPlotAccessor: + """Sankey diagram accessor. Access via ``flow_system.statistics.plot.sankey``. + + Provides typed methods for different sankey diagram types. + + Examples: + >>> fs.statistics.plot.sankey.flows(select={'bus': 'HeatBus'}) + >>> fs.statistics.plot.sankey.effects(select={'effect': 'costs'}) + >>> fs.statistics.plot.sankey.sizes(select={'component': 'Boiler'}) + """ + + def __init__(self, plot_accessor: StatisticsPlotAccessor) -> None: + self._plot = plot_accessor + self._stats = plot_accessor._stats + self._fs = plot_accessor._fs + + def __call__( + self, + *, + mode: Literal['flow_hours', 'sizes', 'peak_flow', 'effects'] = 'flow_hours', + timestep: int | str | None = None, + aggregate: Literal['sum', 'mean'] = 'sum', + select: SelectType | None = None, + max_size: float | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram (deprecated, use specific methods instead). + + .. deprecated:: + Use the specific methods instead: + - `sankey.flows()` for flow_hours mode + - `sankey.sizes()` for sizes mode + - `sankey.peak_flow()` for peak_flow mode + - `sankey.effects()` for effects mode + + These provide better type hints and clearer APIs. + """ + import warnings + + warnings.warn( + 'Calling sankey() directly is deprecated. ' + 'Use sankey.flows(), sankey.sizes(), sankey.peak_flow(), or sankey.effects() instead.', + DeprecationWarning, + stacklevel=2, + ) + return self._plot._sankey_impl( + mode=mode, + timestep=timestep, + aggregate=aggregate, + select=select, + max_size=max_size, + colors=colors, + show=show, + **plotly_kwargs, + ) + + def flows( + self, + *, + timestep: int | str | None = None, + aggregate: Literal['sum', 'mean'] = 'sum', + select: FlowSankeySelect | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram of energy/material flow amounts. + + Args: + timestep: Specific timestep to show, or None for aggregation. + aggregate: How to aggregate if timestep is None ('sum' or 'mean'). + select: Filter options: + - flow: filter by flow label (e.g., 'Boiler|Q_th') + - bus: filter by bus label (e.g., 'HeatBus') + - component: filter by component label (e.g., 'Boiler') + - time, period, scenario: xarray dimension selection + colors: Color specification for nodes. + show: Whether to display the figure. + **plotly_kwargs: Additional arguments passed to Plotly layout. + + Returns: + PlotResult with Sankey flow data and figure. + + Examples: + >>> fs.statistics.plot.sankey.flows() + >>> fs.statistics.plot.sankey.flows(select={'bus': 'HeatBus'}) + >>> fs.statistics.plot.sankey.flows(select={'component': ['Boiler', 'CHP']}) + """ + return self._plot._sankey_impl( + mode='flow_hours', + timestep=timestep, + aggregate=aggregate, + select=select, + colors=colors, + show=show, + **plotly_kwargs, + ) + + def sizes( + self, + *, + select: FlowSankeySelect | None = None, + max_size: float | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram of investment sizes/capacities. + + Args: + select: Filter options: + - flow: filter by flow label (e.g., 'Boiler|Q_th') + - bus: filter by bus label (e.g., 'HeatBus') + - component: filter by component label (e.g., 'Boiler') + - period, scenario: xarray dimension selection + max_size: Filter flows with sizes exceeding this value. + colors: Color specification for nodes. + show: Whether to display the figure. + **plotly_kwargs: Additional arguments passed to Plotly layout. + + Returns: + PlotResult with Sankey size data and figure. + + Examples: + >>> fs.statistics.plot.sankey.sizes() + >>> fs.statistics.plot.sankey.sizes(select={'component': 'Boiler'}) + >>> fs.statistics.plot.sankey.sizes(max_size=1000) + """ + return self._plot._sankey_impl( + mode='sizes', + select=select, + max_size=max_size, + colors=colors, + show=show, + **plotly_kwargs, + ) + + def peak_flow( + self, + *, + select: FlowSankeySelect | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram of peak (maximum) flow rates. + + Args: + select: Filter options: + - flow: filter by flow label (e.g., 'Boiler|Q_th') + - bus: filter by bus label (e.g., 'HeatBus') + - component: filter by component label (e.g., 'Boiler') + - time, period, scenario: xarray dimension selection + colors: Color specification for nodes. + show: Whether to display the figure. + **plotly_kwargs: Additional arguments passed to Plotly layout. + + Returns: + PlotResult with Sankey peak flow data and figure. + + Examples: + >>> fs.statistics.plot.sankey.peak_flow() + >>> fs.statistics.plot.sankey.peak_flow(select={'bus': 'ElectricityBus'}) + """ + return self._plot._sankey_impl( + mode='peak_flow', + select=select, + colors=colors, + show=show, + **plotly_kwargs, + ) + + def effects( + self, + *, + select: EffectsSankeySelect | None = None, + colors: ColorType | None = None, + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot Sankey diagram of component contributions to effects. + + Shows how each component contributes to costs, CO2, and other effects. + + Args: + select: Filter options: + - effect: filter which effects are shown (e.g., 'costs', ['costs', 'CO2']) + - component: filter by component label (e.g., 'Boiler') + - contributor: filter by contributor label (e.g., 'Boiler|Q_th') + - period, scenario: xarray dimension selection + colors: Color specification for nodes. + show: Whether to display the figure. + **plotly_kwargs: Additional arguments passed to Plotly layout. + + Returns: + PlotResult with Sankey effects data and figure. + + Examples: + >>> fs.statistics.plot.sankey.effects() + >>> fs.statistics.plot.sankey.effects(select={'effect': 'costs'}) + >>> fs.statistics.plot.sankey.effects(select={'effect': ['costs', 'CO2'], 'component': 'Boiler'}) + """ + return self._plot._sankey_impl( + mode='effects', + select=select, + colors=colors, + show=show, + **plotly_kwargs, + ) + + # --- Statistics Plot Accessor --- @@ -767,6 +991,22 @@ class StatisticsPlotAccessor: def __init__(self, statistics: StatisticsAccessor) -> None: self._stats = statistics self._fs = statistics._fs + self._sankey: SankeyPlotAccessor | None = None + + @property + def sankey(self) -> SankeyPlotAccessor: + """Access sankey diagram methods with typed select options. + + Returns: + SankeyPlotAccessor with methods: flows(), sizes(), peak_flow(), effects() + + Examples: + >>> fs.statistics.plot.sankey.flows(select={'bus': 'HeatBus'}) + >>> fs.statistics.plot.sankey.effects(select={'effect': 'costs'}) + """ + if self._sankey is None: + self._sankey = SankeyPlotAccessor(self) + return self._sankey def _get_color_map_for_balance(self, node: str, flow_labels: list[str]) -> dict[str, str]: """Build color map for balance plot. @@ -1199,9 +1439,14 @@ def _build_effects_sankey( - Links: Contributions from each component to each effect Args: - select: xarray-style selection. Supports 'effect' key to filter - which effects are shown (e.g., select={'effect': 'costs'} or - select={'effect': ['costs', 'CO2']}). + select: xarray-style selection. Supports special keys: + - 'effect': filter which effects are shown + (e.g., select={'effect': 'costs'} or {'effect': ['costs', 'CO2']}) + - 'component': filter which components (source nodes) are shown + (e.g., select={'component': 'Boiler'} or {'component': ['Boiler', 'CHP']}) + - 'contributor': filter which contributors are included + (e.g., select={'contributor': 'Boiler|Q_th'}) + Standard xarray dimensions (period, scenario) are also supported. colors: Color specification for nodes. **plotly_kwargs: Additional Plotly layout arguments. @@ -1210,17 +1455,27 @@ def _build_effects_sankey( """ total_effects = self._stats.total_effects - # Extract effect filter from select (not passed to xarray sel) + # Extract special filters from select (not passed to xarray sel) effect_filter: str | list[str] | None = None + component_filter: str | list[str] | None = None + contributor_filter: str | list[str] | None = None if select is not None: select = dict(select) # Make a copy to avoid mutating original effect_filter = select.pop('effect', None) + component_filter = select.pop('component', None) + contributor_filter = select.pop('contributor', None) + + # Normalize filters to lists + if isinstance(effect_filter, str): + effect_filter = [effect_filter] + if isinstance(component_filter, str): + component_filter = [component_filter] + if isinstance(contributor_filter, str): + contributor_filter = [contributor_filter] # Determine which effects to include effect_names = list(total_effects.data_vars) if effect_filter is not None: - if isinstance(effect_filter, str): - effect_filter = [effect_filter] effect_names = [e for e in effect_names if e in effect_filter] # Collect all links: component -> effect @@ -1240,6 +1495,12 @@ def _build_effects_sankey( components = effect_data.coords['component'].values for contributor, component in zip(contributors, components, strict=False): + # Apply component and contributor filters + if component_filter is not None and component not in component_filter: + continue + if contributor_filter is not None and contributor not in contributor_filter: + continue + value = float(effect_data.sel(contributor=contributor).values) if not np.isfinite(value) or abs(value) < 1e-6: continue @@ -1295,12 +1556,18 @@ def _build_sankey_links( self, ds: xr.Dataset, min_value: float = 1e-6, + flow_filter: list[str] | None = None, + bus_filter: list[str] | None = None, + component_filter: list[str] | None = None, ) -> tuple[set[str], dict[str, list]]: """Build Sankey nodes and links from flow data. Args: ds: Dataset with flow values (one variable per flow). min_value: Minimum value threshold to include a link. + flow_filter: List of flow labels to include (None = all). + bus_filter: List of bus labels to include (None = all). + component_filter: List of component labels to include (None = all). Returns: Tuple of (nodes set, links dict with source/target/value/label). @@ -1312,13 +1579,20 @@ def _build_sankey_links( label = flow.label_full if label not in ds: continue - value = float(ds[label].values) - if abs(value) < min_value: - continue - # flow.bus and flow.component are already strings (bus label, component label_full) + # Apply filters + if flow_filter is not None and label not in flow_filter: + continue bus_label = flow.bus comp_label = flow.component + if bus_filter is not None and bus_label not in bus_filter: + continue + if component_filter is not None and comp_label not in component_filter: + continue + + value = float(ds[label].values) + if abs(value) < min_value: + continue if flow.is_input_in_component: source = bus_label @@ -1380,7 +1654,7 @@ def _create_sankey_figure( fig.update_layout(title=title, **plotly_kwargs) return fig - def sankey( + def _sankey_impl( self, *, mode: Literal['flow_hours', 'sizes', 'peak_flow', 'effects'] = 'flow_hours', @@ -1392,48 +1666,39 @@ def sankey( show: bool | None = None, **plotly_kwargs: Any, ) -> PlotResult: - """Plot Sankey diagram of the flow system. - - Args: - mode: What to display: - - 'flow_hours': Energy/material amounts (default) - - 'sizes': Investment capacities - - 'peak_flow': Maximum flow rates - - 'effects': Component contributions to all effects (costs, CO2, etc.) - timestep: Specific timestep to show, or None for aggregation (flow_hours only). - aggregate: How to aggregate if timestep is None ('sum' or 'mean', flow_hours only). - select: xarray-style selection. - max_size: Filter flows with sizes exceeding this value (sizes mode only). - colors: Color specification for nodes (colorscale name, color list, or label-to-color dict). - show: Whether to display. - **plotly_kwargs: Additional arguments passed to Plotly layout. - - Returns: - PlotResult with Sankey flow data and figure. - - Examples: - >>> # Show energy flows (default) - >>> flow_system.statistics.plot.sankey() - >>> # Show investment sizes/capacities - >>> flow_system.statistics.plot.sankey(mode='sizes') - >>> # Show peak flow rates - >>> flow_system.statistics.plot.sankey(mode='peak_flow') - >>> # Show effect contributions (components -> effects like costs, CO2) - >>> flow_system.statistics.plot.sankey(mode='effects') - """ + """Internal implementation for Sankey diagrams.""" self._stats._require_solution() if mode == 'effects': fig, sankey_ds = self._build_effects_sankey(select, colors, **plotly_kwargs) else: - ds, title = self._prepare_sankey_data(mode, timestep, aggregate, select) + # Extract special filters from select (not passed to xarray sel) + flow_filter: list[str] | None = None + bus_filter: list[str] | None = None + component_filter: list[str] | None = None + if select is not None: + select = dict(select) # Make a copy to avoid mutating original + flow_filter = select.pop('flow', None) + bus_filter = select.pop('bus', None) + component_filter = select.pop('component', None) + # Normalize to lists + if isinstance(flow_filter, str): + flow_filter = [flow_filter] + if isinstance(bus_filter, str): + bus_filter = [bus_filter] + if isinstance(component_filter, str): + component_filter = [component_filter] + + ds, title = self._prepare_sankey_data(mode, timestep, aggregate, select if select else None) # Apply max_size filter for sizes mode if max_size is not None and mode == 'sizes' and ds.data_vars: valid_labels = [lbl for lbl in ds.data_vars if float(ds[lbl].max()) < max_size] ds = ds[valid_labels] - nodes, links = self._build_sankey_links(ds) + nodes, links = self._build_sankey_links( + ds, flow_filter=flow_filter, bus_filter=bus_filter, component_filter=component_filter + ) fig = self._create_sankey_figure(nodes, links, colors, title, **plotly_kwargs) n_links = len(links['value']) From e0f0e918da3e2f5bcf83e4317c9c82f740eefa69 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:33:05 +0100 Subject: [PATCH 57/88] refactor complete. Here's the new structure: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SankeyPlotAccessor (self-contained): class SankeyPlotAccessor: # Private helpers _extract_flow_filters() # Extract flow/bus/component from select _build_flow_links() # Build nodes & links for flow-based sankeys _create_figure() # Create Plotly Sankey figure _finalize() # Create PlotResult, handle show # Public API flows(select: FlowSankeySelect, ...) # Energy flow amounts sizes(select: FlowSankeySelect, ...) # Investment capacities peak_flow(select: FlowSankeySelect, ...) # Maximum flow rates effects(select: EffectsSankeySelect, ...) # Component → effects Type hints (with Literal keys): FlowSankeySelect = dict[Literal['flow', 'bus', 'component', 'time', 'period', 'scenario'], Any] EffectsSankeySelect = dict[Literal['effect', 'component', 'contributor', 'period', 'scenario'], Any] Usage: fs.statistics.plot.sankey.flows(select={'bus': 'HeatBus'}) fs.statistics.plot.sankey.effects(select={'effect': 'costs'}) fs.statistics.plot.sankey.sizes(select={'component': 'Boiler'}) fs.statistics.plot.sankey.peak_flow() No more generic sankey(mode=...) - clean, typed methods only. --- flixopt/statistics_accessor.py | 684 ++++++++++++--------------------- 1 file changed, 244 insertions(+), 440 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 748d56702..068aec96f 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -782,48 +782,129 @@ def __init__(self, plot_accessor: StatisticsPlotAccessor) -> None: self._stats = plot_accessor._stats self._fs = plot_accessor._fs - def __call__( + def _extract_flow_filters( + self, select: FlowSankeySelect | None + ) -> tuple[SelectType | None, list[str] | None, list[str] | None, list[str] | None]: + """Extract special filters from select dict. + + Returns: + Tuple of (xarray_select, flow_filter, bus_filter, component_filter). + """ + if select is None: + return None, None, None, None + + select = dict(select) # Copy to avoid mutating original + flow_filter = select.pop('flow', None) + bus_filter = select.pop('bus', None) + component_filter = select.pop('component', None) + + # Normalize to lists + if isinstance(flow_filter, str): + flow_filter = [flow_filter] + if isinstance(bus_filter, str): + bus_filter = [bus_filter] + if isinstance(component_filter, str): + component_filter = [component_filter] + + return select if select else None, flow_filter, bus_filter, component_filter + + def _build_flow_links( self, - *, - mode: Literal['flow_hours', 'sizes', 'peak_flow', 'effects'] = 'flow_hours', - timestep: int | str | None = None, - aggregate: Literal['sum', 'mean'] = 'sum', - select: SelectType | None = None, - max_size: float | None = None, - colors: ColorType | None = None, - show: bool | None = None, - **plotly_kwargs: Any, - ) -> PlotResult: - """Plot Sankey diagram (deprecated, use specific methods instead). + ds: xr.Dataset, + flow_filter: list[str] | None = None, + bus_filter: list[str] | None = None, + component_filter: list[str] | None = None, + min_value: float = 1e-6, + ) -> tuple[set[str], dict[str, list]]: + """Build Sankey nodes and links from flow data.""" + nodes: set[str] = set() + links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} + + for flow in self._fs.flows.values(): + label = flow.label_full + if label not in ds: + continue - .. deprecated:: - Use the specific methods instead: - - `sankey.flows()` for flow_hours mode - - `sankey.sizes()` for sizes mode - - `sankey.peak_flow()` for peak_flow mode - - `sankey.effects()` for effects mode + # Apply filters + if flow_filter is not None and label not in flow_filter: + continue + bus_label = flow.bus + comp_label = flow.component + if bus_filter is not None and bus_label not in bus_filter: + continue + if component_filter is not None and comp_label not in component_filter: + continue - These provide better type hints and clearer APIs. - """ - import warnings + value = float(ds[label].values) + if abs(value) < min_value: + continue + + if flow.is_input_in_component: + source, target = bus_label, comp_label + else: + source, target = comp_label, bus_label + + nodes.add(source) + nodes.add(target) + links['source'].append(source) + links['target'].append(target) + links['value'].append(abs(value)) + links['label'].append(label) - warnings.warn( - 'Calling sankey() directly is deprecated. ' - 'Use sankey.flows(), sankey.sizes(), sankey.peak_flow(), or sankey.effects() instead.', - DeprecationWarning, - stacklevel=2, + return nodes, links + + def _create_figure( + self, + nodes: set[str], + links: dict[str, list], + colors: ColorType | None, + title: str, + **plotly_kwargs: Any, + ) -> go.Figure: + """Create Plotly Sankey figure.""" + node_list = list(nodes) + node_indices = {n: i for i, n in enumerate(node_list)} + + color_map = process_colors(colors, node_list) + node_colors = [color_map[node] for node in node_list] + + fig = go.Figure( + data=[ + go.Sankey( + node=dict( + pad=15, thickness=20, line=dict(color='black', width=0.5), label=node_list, color=node_colors + ), + link=dict( + source=[node_indices[s] for s in links['source']], + target=[node_indices[t] for t in links['target']], + value=links['value'], + label=links['label'], + ), + ) + ] ) - return self._plot._sankey_impl( - mode=mode, - timestep=timestep, - aggregate=aggregate, - select=select, - max_size=max_size, - colors=colors, - show=show, - **plotly_kwargs, + fig.update_layout(title=title, **plotly_kwargs) + return fig + + def _finalize(self, fig: go.Figure, links: dict[str, list], show: bool | None) -> PlotResult: + """Create PlotResult and optionally show figure.""" + sankey_ds = xr.Dataset( + {'value': ('link', links['value'])}, + coords={ + 'link': range(len(links['value'])), + 'source': ('link', links['source']), + 'target': ('link', links['target']), + 'label': ('link', links['label']), + }, ) + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=sankey_ds, figure=fig) + def flows( self, *, @@ -850,21 +931,35 @@ def flows( Returns: PlotResult with Sankey flow data and figure. - - Examples: - >>> fs.statistics.plot.sankey.flows() - >>> fs.statistics.plot.sankey.flows(select={'bus': 'HeatBus'}) - >>> fs.statistics.plot.sankey.flows(select={'component': ['Boiler', 'CHP']}) """ - return self._plot._sankey_impl( - mode='flow_hours', - timestep=timestep, - aggregate=aggregate, - select=select, - colors=colors, - show=show, - **plotly_kwargs, - ) + self._stats._require_solution() + xr_select, flow_filter, bus_filter, component_filter = self._extract_flow_filters(select) + + ds = self._stats.flow_hours.copy() + + # Apply period/scenario weights + if 'period' in ds.dims and self._fs.period_weights is not None: + ds = ds * self._fs.period_weights + if 'scenario' in ds.dims and self._fs.scenario_weights is not None: + weights = self._fs.scenario_weights / self._fs.scenario_weights.sum() + ds = ds * weights + + ds = _apply_selection(ds, xr_select) + + # Time aggregation + if timestep is not None: + ds = ds.isel(time=timestep) if isinstance(timestep, int) else ds.sel(time=timestep) + elif 'time' in ds.dims: + ds = getattr(ds, aggregate)(dim='time') + + # Collapse remaining dimensions + for dim in ['period', 'scenario']: + if dim in ds.dims: + ds = ds.sum(dim=dim) + + nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter) + fig = self._create_figure(nodes, links, colors, 'Energy Flow', **plotly_kwargs) + return self._finalize(fig, links, show) def sizes( self, @@ -890,20 +985,26 @@ def sizes( Returns: PlotResult with Sankey size data and figure. - - Examples: - >>> fs.statistics.plot.sankey.sizes() - >>> fs.statistics.plot.sankey.sizes(select={'component': 'Boiler'}) - >>> fs.statistics.plot.sankey.sizes(max_size=1000) """ - return self._plot._sankey_impl( - mode='sizes', - select=select, - max_size=max_size, - colors=colors, - show=show, - **plotly_kwargs, - ) + self._stats._require_solution() + xr_select, flow_filter, bus_filter, component_filter = self._extract_flow_filters(select) + + ds = self._stats.sizes.copy() + ds = _apply_selection(ds, xr_select) + + # Collapse remaining dimensions + for dim in ['period', 'scenario']: + if dim in ds.dims: + ds = ds.max(dim=dim) + + # Apply max_size filter + if max_size is not None and ds.data_vars: + valid_labels = [lbl for lbl in ds.data_vars if float(ds[lbl].max()) < max_size] + ds = ds[valid_labels] + + nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter) + fig = self._create_figure(nodes, links, colors, 'Investment Sizes (Capacities)', **plotly_kwargs) + return self._finalize(fig, links, show) def peak_flow( self, @@ -927,18 +1028,21 @@ def peak_flow( Returns: PlotResult with Sankey peak flow data and figure. - - Examples: - >>> fs.statistics.plot.sankey.peak_flow() - >>> fs.statistics.plot.sankey.peak_flow(select={'bus': 'ElectricityBus'}) """ - return self._plot._sankey_impl( - mode='peak_flow', - select=select, - colors=colors, - show=show, - **plotly_kwargs, - ) + self._stats._require_solution() + xr_select, flow_filter, bus_filter, component_filter = self._extract_flow_filters(select) + + ds = self._stats.flow_rates.copy() + ds = _apply_selection(ds, xr_select) + + # Take max over all dimensions + for dim in ['time', 'period', 'scenario']: + if dim in ds.dims: + ds = ds.max(dim=dim) + + nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter) + fig = self._create_figure(nodes, links, colors, 'Peak Flow Rates', **plotly_kwargs) + return self._finalize(fig, links, show) def effects( self, @@ -964,19 +1068,74 @@ def effects( Returns: PlotResult with Sankey effects data and figure. - - Examples: - >>> fs.statistics.plot.sankey.effects() - >>> fs.statistics.plot.sankey.effects(select={'effect': 'costs'}) - >>> fs.statistics.plot.sankey.effects(select={'effect': ['costs', 'CO2'], 'component': 'Boiler'}) """ - return self._plot._sankey_impl( - mode='effects', - select=select, - colors=colors, - show=show, - **plotly_kwargs, - ) + self._stats._require_solution() + total_effects = self._stats.total_effects + + # Extract special filters from select + effect_filter: list[str] | None = None + component_filter: list[str] | None = None + contributor_filter: list[str] | None = None + xr_select: SelectType | None = None + + if select is not None: + select = dict(select) # Copy to avoid mutating + effect_filter = select.pop('effect', None) + component_filter = select.pop('component', None) + contributor_filter = select.pop('contributor', None) + xr_select = select if select else None + + # Normalize to lists + if isinstance(effect_filter, str): + effect_filter = [effect_filter] + if isinstance(component_filter, str): + component_filter = [component_filter] + if isinstance(contributor_filter, str): + contributor_filter = [contributor_filter] + + # Determine which effects to include + effect_names = list(total_effects.data_vars) + if effect_filter is not None: + effect_names = [e for e in effect_names if e in effect_filter] + + # Collect all links: component -> effect + nodes: set[str] = set() + links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} + + for effect_name in effect_names: + effect_data = total_effects[effect_name] + effect_data = _apply_selection(effect_data, xr_select) + + # Sum over remaining dimensions + for dim in ['period', 'scenario']: + if dim in effect_data.dims: + effect_data = effect_data.sum(dim=dim) + + contributors = effect_data.coords['contributor'].values + components = effect_data.coords['component'].values + + for contributor, component in zip(contributors, components, strict=False): + if component_filter is not None and component not in component_filter: + continue + if contributor_filter is not None and contributor not in contributor_filter: + continue + + value = float(effect_data.sel(contributor=contributor).values) + if not np.isfinite(value) or abs(value) < 1e-6: + continue + + source = str(component) + target = f'[{effect_name}]' + + nodes.add(source) + nodes.add(target) + links['source'].append(source) + links['target'].append(target) + links['value'].append(abs(value)) + links['label'].append(f'{contributor} → {effect_name}: {value:.2f}') + + fig = self._create_figure(nodes, links, colors, 'Effect Contributions by Component', **plotly_kwargs) + return self._finalize(fig, links, show) # --- Statistics Plot Accessor --- @@ -1364,361 +1523,6 @@ def flows( return PlotResult(data=ds, figure=fig) - def _prepare_sankey_data( - self, - mode: Literal['flow_hours', 'sizes', 'peak_flow'], - timestep: int | str | None, - aggregate: Literal['sum', 'mean'], - select: SelectType | None, - ) -> tuple[xr.Dataset, str]: - """Prepare data for Sankey diagram based on mode. - - Args: - mode: What to display - flow_hours, sizes, or peak_flow. - timestep: Specific timestep (only for flow_hours mode). - aggregate: Aggregation method (only for flow_hours mode). - select: xarray-style selection. - - Returns: - Tuple of (prepared Dataset, title string). - """ - if mode == 'sizes': - ds = self._stats.sizes.copy() - title = 'Investment Sizes (Capacities)' - elif mode == 'peak_flow': - ds = self._stats.flow_rates.copy() - ds = _apply_selection(ds, select) - if 'time' in ds.dims: - ds = ds.max(dim='time') - for dim in ['period', 'scenario']: - if dim in ds.dims: - ds = ds.max(dim=dim) - return ds, 'Peak Flow Rates' - else: # flow_hours - ds = self._stats.flow_hours.copy() - title = 'Energy Flow' - - # Apply weights for flow_hours - if mode == 'flow_hours': - if 'period' in ds.dims and self._fs.period_weights is not None: - ds = ds * self._fs.period_weights - if 'scenario' in ds.dims and self._fs.scenario_weights is not None: - weights = self._fs.scenario_weights / self._fs.scenario_weights.sum() - ds = ds * weights - - ds = _apply_selection(ds, select) - - # Time aggregation (only for flow_hours) - if mode == 'flow_hours': - if timestep is not None: - if isinstance(timestep, int): - ds = ds.isel(time=timestep) - else: - ds = ds.sel(time=timestep) - elif 'time' in ds.dims: - ds = getattr(ds, aggregate)(dim='time') - - # Collapse remaining dimensions - for dim in ['period', 'scenario']: - if dim in ds.dims: - ds = ds.sum(dim=dim) if mode == 'flow_hours' else ds.max(dim=dim) - - return ds, title - - def _build_effects_sankey( - self, - select: SelectType | None, - colors: ColorType | None, - **plotly_kwargs: Any, - ) -> tuple[go.Figure, xr.Dataset]: - """Build Sankey diagram showing contributions from components to effects. - - Creates a Sankey with: - - Left side: Components (grouped by type) - - Right side: Effects (costs, CO2, etc.) - - Links: Contributions from each component to each effect - - Args: - select: xarray-style selection. Supports special keys: - - 'effect': filter which effects are shown - (e.g., select={'effect': 'costs'} or {'effect': ['costs', 'CO2']}) - - 'component': filter which components (source nodes) are shown - (e.g., select={'component': 'Boiler'} or {'component': ['Boiler', 'CHP']}) - - 'contributor': filter which contributors are included - (e.g., select={'contributor': 'Boiler|Q_th'}) - Standard xarray dimensions (period, scenario) are also supported. - colors: Color specification for nodes. - **plotly_kwargs: Additional Plotly layout arguments. - - Returns: - Tuple of (Plotly Figure, Dataset with link data). - """ - total_effects = self._stats.total_effects - - # Extract special filters from select (not passed to xarray sel) - effect_filter: str | list[str] | None = None - component_filter: str | list[str] | None = None - contributor_filter: str | list[str] | None = None - if select is not None: - select = dict(select) # Make a copy to avoid mutating original - effect_filter = select.pop('effect', None) - component_filter = select.pop('component', None) - contributor_filter = select.pop('contributor', None) - - # Normalize filters to lists - if isinstance(effect_filter, str): - effect_filter = [effect_filter] - if isinstance(component_filter, str): - component_filter = [component_filter] - if isinstance(contributor_filter, str): - contributor_filter = [contributor_filter] - - # Determine which effects to include - effect_names = list(total_effects.data_vars) - if effect_filter is not None: - effect_names = [e for e in effect_names if e in effect_filter] - - # Collect all links: component -> effect - nodes: set[str] = set() - links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} - - for effect_name in effect_names: - effect_data = total_effects[effect_name] - effect_data = _apply_selection(effect_data, select) - - # Sum over any remaining dimensions - for dim in ['period', 'scenario']: - if dim in effect_data.dims: - effect_data = effect_data.sum(dim=dim) - - contributors = effect_data.coords['contributor'].values - components = effect_data.coords['component'].values - - for contributor, component in zip(contributors, components, strict=False): - # Apply component and contributor filters - if component_filter is not None and component not in component_filter: - continue - if contributor_filter is not None and contributor not in contributor_filter: - continue - - value = float(effect_data.sel(contributor=contributor).values) - if not np.isfinite(value) or abs(value) < 1e-6: - continue - - # Use component as source node, effect as target - source = str(component) - target = f'[{effect_name}]' # Bracket notation to distinguish effects - - nodes.add(source) - nodes.add(target) - links['source'].append(source) - links['target'].append(target) - links['value'].append(abs(value)) - links['label'].append(f'{contributor} → {effect_name}: {value:.2f}') - - # Create figure - node_list = list(nodes) - node_indices = {n: i for i, n in enumerate(node_list)} - - color_map = process_colors(colors, node_list) - node_colors = [color_map[node] for node in node_list] - - fig = go.Figure( - data=[ - go.Sankey( - node=dict( - pad=15, thickness=20, line=dict(color='black', width=0.5), label=node_list, color=node_colors - ), - link=dict( - source=[node_indices[s] for s in links['source']], - target=[node_indices[t] for t in links['target']], - value=links['value'], - label=links['label'], - ), - ) - ] - ) - fig.update_layout(title='Effect Contributions by Component', **plotly_kwargs) - - sankey_ds = xr.Dataset( - {'value': ('link', links['value'])}, - coords={ - 'link': range(len(links['value'])), - 'source': ('link', links['source']), - 'target': ('link', links['target']), - 'label': ('link', links['label']), - }, - ) - - return fig, sankey_ds - - def _build_sankey_links( - self, - ds: xr.Dataset, - min_value: float = 1e-6, - flow_filter: list[str] | None = None, - bus_filter: list[str] | None = None, - component_filter: list[str] | None = None, - ) -> tuple[set[str], dict[str, list]]: - """Build Sankey nodes and links from flow data. - - Args: - ds: Dataset with flow values (one variable per flow). - min_value: Minimum value threshold to include a link. - flow_filter: List of flow labels to include (None = all). - bus_filter: List of bus labels to include (None = all). - component_filter: List of component labels to include (None = all). - - Returns: - Tuple of (nodes set, links dict with source/target/value/label). - """ - nodes: set[str] = set() - links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} - - for flow in self._fs.flows.values(): - label = flow.label_full - if label not in ds: - continue - - # Apply filters - if flow_filter is not None and label not in flow_filter: - continue - bus_label = flow.bus - comp_label = flow.component - if bus_filter is not None and bus_label not in bus_filter: - continue - if component_filter is not None and comp_label not in component_filter: - continue - - value = float(ds[label].values) - if abs(value) < min_value: - continue - - if flow.is_input_in_component: - source = bus_label - target = comp_label - else: - source = comp_label - target = bus_label - - nodes.add(source) - nodes.add(target) - links['source'].append(source) - links['target'].append(target) - links['value'].append(abs(value)) - links['label'].append(label) - - return nodes, links - - def _create_sankey_figure( - self, - nodes: set[str], - links: dict[str, list], - colors: ColorType | None, - title: str, - **plotly_kwargs: Any, - ) -> go.Figure: - """Create Plotly Sankey figure. - - Args: - nodes: Set of node labels. - links: Dict with source, target, value, label lists. - colors: Color specification for nodes. - title: Figure title. - **plotly_kwargs: Additional Plotly layout arguments. - - Returns: - Plotly Figure with Sankey diagram. - """ - node_list = list(nodes) - node_indices = {n: i for i, n in enumerate(node_list)} - - color_map = process_colors(colors, node_list) - node_colors = [color_map[node] for node in node_list] - - fig = go.Figure( - data=[ - go.Sankey( - node=dict( - pad=15, thickness=20, line=dict(color='black', width=0.5), label=node_list, color=node_colors - ), - link=dict( - source=[node_indices[s] for s in links['source']], - target=[node_indices[t] for t in links['target']], - value=links['value'], - label=links['label'], - ), - ) - ] - ) - fig.update_layout(title=title, **plotly_kwargs) - return fig - - def _sankey_impl( - self, - *, - mode: Literal['flow_hours', 'sizes', 'peak_flow', 'effects'] = 'flow_hours', - timestep: int | str | None = None, - aggregate: Literal['sum', 'mean'] = 'sum', - select: SelectType | None = None, - max_size: float | None = None, - colors: ColorType | None = None, - show: bool | None = None, - **plotly_kwargs: Any, - ) -> PlotResult: - """Internal implementation for Sankey diagrams.""" - self._stats._require_solution() - - if mode == 'effects': - fig, sankey_ds = self._build_effects_sankey(select, colors, **plotly_kwargs) - else: - # Extract special filters from select (not passed to xarray sel) - flow_filter: list[str] | None = None - bus_filter: list[str] | None = None - component_filter: list[str] | None = None - if select is not None: - select = dict(select) # Make a copy to avoid mutating original - flow_filter = select.pop('flow', None) - bus_filter = select.pop('bus', None) - component_filter = select.pop('component', None) - # Normalize to lists - if isinstance(flow_filter, str): - flow_filter = [flow_filter] - if isinstance(bus_filter, str): - bus_filter = [bus_filter] - if isinstance(component_filter, str): - component_filter = [component_filter] - - ds, title = self._prepare_sankey_data(mode, timestep, aggregate, select if select else None) - - # Apply max_size filter for sizes mode - if max_size is not None and mode == 'sizes' and ds.data_vars: - valid_labels = [lbl for lbl in ds.data_vars if float(ds[lbl].max()) < max_size] - ds = ds[valid_labels] - - nodes, links = self._build_sankey_links( - ds, flow_filter=flow_filter, bus_filter=bus_filter, component_filter=component_filter - ) - fig = self._create_sankey_figure(nodes, links, colors, title, **plotly_kwargs) - - n_links = len(links['value']) - sankey_ds = xr.Dataset( - {'value': ('link', links['value'])}, - coords={ - 'link': range(n_links), - 'source': ('link', links['source']), - 'target': ('link', links['target']), - 'label': ('link', links['label']), - }, - ) - - if show is None: - show = CONFIG.Plotting.default_show - if show: - fig.show() - - return PlotResult(data=sankey_ds, figure=fig) - def sizes( self, *, From e234941f64c857434f3a4f32b704f06aaaefbcff Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:35:31 +0100 Subject: [PATCH 58/88] drop=True by default in _apply_selection --- flixopt/statistics_accessor.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 068aec96f..f21bae1f8 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -245,13 +245,20 @@ def _filter_by_pattern( return result -def _apply_selection(ds: xr.Dataset, select: SelectType | None) -> xr.Dataset: - """Apply xarray-style selection to dataset.""" +def _apply_selection(ds: xr.Dataset, select: SelectType | None, drop: bool = True) -> xr.Dataset: + """Apply xarray-style selection to dataset. + + Args: + ds: Dataset to select from. + select: xarray-style selection dict. + drop: If True (default), drop dimensions that become scalar after selection. + This prevents auto-faceting when selecting a single value. + """ if select is None: return ds valid_select = {k: v for k, v in select.items() if k in ds.dims or k in ds.coords} if valid_select: - ds = ds.sel(valid_select) + ds = ds.sel(valid_select, drop=drop) return ds From bf306ca08d588c61c08e08bd3acfc09301178f5b Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:49:04 +0100 Subject: [PATCH 59/88] Update notebooks and docs --- docs/notebooks/01-quickstart.ipynb | 2 +- docs/notebooks/02-heat-system.ipynb | 2 +- .../03-investment-optimization.ipynb | 2 +- .../04-operational-constraints.ipynb | 2 +- docs/notebooks/05-multi-carrier-system.ipynb | 2 +- docs/notebooks/06-piecewise-efficiency.ipynb | 2 +- docs/notebooks/07-scenarios-and-periods.ipynb | 2 +- .../08-large-scale-optimization.ipynb | 2 +- docs/user-guide/results-plotting.md | 49 ++++++++++++++----- flixopt/topology_accessor.py | 4 +- tests/test_solution_and_plotting.py | 48 +++++++++--------- 11 files changed, 71 insertions(+), 46 deletions(-) diff --git a/docs/notebooks/01-quickstart.ipynb b/docs/notebooks/01-quickstart.ipynb index c7178c750..be0da5779 100644 --- a/docs/notebooks/01-quickstart.ipynb +++ b/docs/notebooks/01-quickstart.ipynb @@ -253,7 +253,7 @@ "metadata": {}, "outputs": [], "source": [ - "flow_system.statistics.plot.sankey()" + "flow_system.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/02-heat-system.ipynb b/docs/notebooks/02-heat-system.ipynb index 933366e25..2e258eb8a 100644 --- a/docs/notebooks/02-heat-system.ipynb +++ b/docs/notebooks/02-heat-system.ipynb @@ -365,7 +365,7 @@ "metadata": {}, "outputs": [], "source": [ - "flow_system.statistics.plot.sankey()" + "flow_system.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/03-investment-optimization.ipynb b/docs/notebooks/03-investment-optimization.ipynb index c20d77f0a..61acc959f 100644 --- a/docs/notebooks/03-investment-optimization.ipynb +++ b/docs/notebooks/03-investment-optimization.ipynb @@ -417,7 +417,7 @@ "metadata": {}, "outputs": [], "source": [ - "flow_system.statistics.plot.sankey()" + "flow_system.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/04-operational-constraints.ipynb b/docs/notebooks/04-operational-constraints.ipynb index f2505ed41..b7c8923ad 100644 --- a/docs/notebooks/04-operational-constraints.ipynb +++ b/docs/notebooks/04-operational-constraints.ipynb @@ -385,7 +385,7 @@ "metadata": {}, "outputs": [], "source": [ - "flow_system.statistics.plot.sankey()" + "flow_system.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/05-multi-carrier-system.ipynb b/docs/notebooks/05-multi-carrier-system.ipynb index 50c59dd3e..9e1a77bcc 100644 --- a/docs/notebooks/05-multi-carrier-system.ipynb +++ b/docs/notebooks/05-multi-carrier-system.ipynb @@ -484,7 +484,7 @@ "metadata": {}, "outputs": [], "source": [ - "flow_system.statistics.plot.sankey()" + "flow_system.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/06-piecewise-efficiency.ipynb b/docs/notebooks/06-piecewise-efficiency.ipynb index ce87a93c6..af3cb5375 100644 --- a/docs/notebooks/06-piecewise-efficiency.ipynb +++ b/docs/notebooks/06-piecewise-efficiency.ipynb @@ -559,7 +559,7 @@ "metadata": {}, "outputs": [], "source": [ - "fs_piecewise_invest.statistics.plot.sankey()" + "fs_piecewise_invest.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/07-scenarios-and-periods.ipynb b/docs/notebooks/07-scenarios-and-periods.ipynb index 3daee6bb4..37fc52732 100644 --- a/docs/notebooks/07-scenarios-and-periods.ipynb +++ b/docs/notebooks/07-scenarios-and-periods.ipynb @@ -481,7 +481,7 @@ "metadata": {}, "outputs": [], "source": [ - "flow_system.statistics.plot.sankey()" + "flow_system.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/notebooks/08-large-scale-optimization.ipynb b/docs/notebooks/08-large-scale-optimization.ipynb index c2f7af123..4d745f4b4 100644 --- a/docs/notebooks/08-large-scale-optimization.ipynb +++ b/docs/notebooks/08-large-scale-optimization.ipynb @@ -451,7 +451,7 @@ "metadata": {}, "outputs": [], "source": [ - "fs_full.statistics.plot.sankey()" + "fs_full.statistics.plot.sankey.flows()" ] }, { diff --git a/docs/user-guide/results-plotting.md b/docs/user-guide/results-plotting.md index c64111772..84d39f350 100644 --- a/docs/user-guide/results-plotting.md +++ b/docs/user-guide/results-plotting.md @@ -12,7 +12,7 @@ flow_system.optimize(fx.solvers.HighsSolver()) # Access plotting via statistics flow_system.statistics.plot.balance('ElectricityBus') -flow_system.statistics.plot.sankey() +flow_system.statistics.plot.sankey.flows() flow_system.statistics.plot.heatmap('Boiler(Q_th)|flow_rate') ``` @@ -164,20 +164,45 @@ flow_system.statistics.plot.compare(['Battery1', 'Battery2'], variable='charge_s ### Sankey Diagram -Visualize energy/material flows as a Sankey diagram: +Visualize energy/material flows as a Sankey diagram. Access via the `sankey` accessor: ```python -flow_system.statistics.plot.sankey() -flow_system.statistics.plot.sankey(timestep=100) -flow_system.statistics.plot.sankey(aggregate='mean') +# Energy flow amounts (default) +flow_system.statistics.plot.sankey.flows() +flow_system.statistics.plot.sankey.flows(timestep=100) +flow_system.statistics.plot.sankey.flows(aggregate='mean') + +# Investment sizes/capacities +flow_system.statistics.plot.sankey.sizes() + +# Peak flow rates +flow_system.statistics.plot.sankey.peak_flow() + +# Effect contributions (costs, CO2, etc.) +flow_system.statistics.plot.sankey.effects() +flow_system.statistics.plot.sankey.effects(select={'effect': 'costs'}) ``` -**Key parameters:** +**Available methods:** -| Parameter | Type | Description | -|-----------|------|-------------| -| `timestep` | int or str | Specific timestep, or None for aggregation | -| `aggregate` | `'sum'`, `'mean'` | Aggregation method when timestep is None | +| Method | Description | +|--------|-------------| +| `sankey.flows()` | Energy/material flow amounts | +| `sankey.sizes()` | Investment sizes/capacities | +| `sankey.peak_flow()` | Maximum flow rates | +| `sankey.effects()` | Component contributions to effects | + +**Select options for filtering:** + +```python +# Filter by bus or component +flow_system.statistics.plot.sankey.flows(select={'bus': 'HeatBus'}) +flow_system.statistics.plot.sankey.flows(select={'component': ['Boiler', 'CHP']}) + +# Filter effects by name +flow_system.statistics.plot.sankey.effects(select={'effect': 'costs'}) +flow_system.statistics.plot.sankey.effects(select={'effect': ['costs', 'CO2']}) +``` ### Effects Plot @@ -345,7 +370,7 @@ heat_bus = fx.Bus('HeatNetwork', carrier='heat') elec_bus = fx.Bus('Grid', carrier='electricity') # Plots automatically use carrier colors for bus-related elements -flow_system.statistics.plot.sankey() # Buses colored by carrier +flow_system.statistics.plot.sankey.flows() # Buses colored by carrier ``` ### Custom Carriers @@ -489,7 +514,7 @@ flow_system.statistics.plot.compare( plots = { 'balance': flow_system.statistics.plot.balance('HeatBus', show=False), 'storage': flow_system.statistics.plot.storage('ThermalStorage', show=False), - 'sankey': flow_system.statistics.plot.sankey(show=False), + 'sankey': flow_system.statistics.plot.sankey.flows(show=False), 'costs': flow_system.statistics.plot.effects(effect='costs', show=False), } diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py index 2bbb5e782..ca61a7a23 100644 --- a/flixopt/topology_accessor.py +++ b/flixopt/topology_accessor.py @@ -215,14 +215,14 @@ def plot( Notes: This visualization shows the network structure without optimization results. - For visualizations that include flow values, use `flow_system.statistics.plot.sankey()` + For visualizations that include flow values, use `flow_system.statistics.plot.sankey.flows()` after running an optimization. Hover over nodes and links to see detailed element information. See Also: - `plot_legacy()`: Previous PyVis-based network visualization. - - `statistics.plot.sankey()`: Sankey with actual flow values from optimization. + - `statistics.plot.sankey.flows()`: Sankey with actual flow values from optimization. """ if not self._fs.connected_and_transformed: self._fs.connect_and_transform() diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index 09f126613..5b9d86fd5 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -671,11 +671,11 @@ def test_export_matplotlib_to_png(self, simple_flow_system, highs_solver, tmp_pa class TestSankeyDiagram: """Tests for Sankey diagram functionality.""" - def test_sankey_flow_hours_mode(self, simple_flow_system, highs_solver): - """Test Sankey diagram with flow_hours mode (default).""" + def test_sankey_flows(self, simple_flow_system, highs_solver): + """Test Sankey diagram with flows() method.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(show=False) + result = simple_flow_system.statistics.plot.sankey.flows(show=False) assert result.figure is not None assert result.data is not None @@ -684,21 +684,21 @@ def test_sankey_flow_hours_mode(self, simple_flow_system, highs_solver): assert 'target' in result.data.coords assert len(result.data.link) > 0 - def test_sankey_peak_flow_mode(self, simple_flow_system, highs_solver): - """Test Sankey diagram with peak_flow mode.""" + def test_sankey_peak_flow(self, simple_flow_system, highs_solver): + """Test Sankey diagram with peak_flow() method.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(mode='peak_flow', show=False) + result = simple_flow_system.statistics.plot.sankey.peak_flow(show=False) assert result.figure is not None assert result.data is not None assert len(result.data.link) > 0 - def test_sankey_sizes_mode(self, simple_flow_system, highs_solver): - """Test Sankey diagram with sizes mode shows investment sizes.""" + def test_sankey_sizes(self, simple_flow_system, highs_solver): + """Test Sankey diagram with sizes() method shows investment sizes.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(mode='sizes', show=False) + result = simple_flow_system.statistics.plot.sankey.sizes(show=False) assert result.figure is not None assert result.data is not None @@ -710,19 +710,19 @@ def test_sankey_sizes_max_size_filter(self, simple_flow_system, highs_solver): simple_flow_system.optimize(highs_solver) # Get all sizes (no filter) - result_all = simple_flow_system.statistics.plot.sankey(mode='sizes', max_size=None, show=False) + result_all = simple_flow_system.statistics.plot.sankey.sizes(max_size=None, show=False) # Get filtered sizes - result_filtered = simple_flow_system.statistics.plot.sankey(mode='sizes', max_size=100, show=False) + result_filtered = simple_flow_system.statistics.plot.sankey.sizes(max_size=100, show=False) # Filtered should have fewer or equal links assert len(result_filtered.data.link) <= len(result_all.data.link) - def test_sankey_effects_mode(self, simple_flow_system, highs_solver): - """Test Sankey diagram with effects mode.""" + def test_sankey_effects(self, simple_flow_system, highs_solver): + """Test Sankey diagram with effects() method.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(mode='effects', show=False) + result = simple_flow_system.statistics.plot.sankey.effects(show=False) assert result.figure is not None assert result.data is not None @@ -733,30 +733,30 @@ def test_sankey_effects_mode(self, simple_flow_system, highs_solver): assert any('[' in str(t) for t in targets), 'Effects should appear as [effect_name] in targets' def test_sankey_effects_includes_costs_and_co2(self, simple_flow_system, highs_solver): - """Test that effects mode includes both costs and CO2.""" + """Test that effects() method includes both costs and CO2.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(mode='effects', show=False) + result = simple_flow_system.statistics.plot.sankey.effects(show=False) targets = [str(t) for t in result.data.target.values] # Should have at least costs effect assert '[costs]' in targets, 'Should include costs effect' - def test_sankey_with_timestep_selection(self, simple_flow_system, highs_solver): - """Test Sankey with specific timestep.""" + def test_sankey_flows_with_timestep(self, simple_flow_system, highs_solver): + """Test Sankey flows with specific timestep.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(timestep=0, show=False) + result = simple_flow_system.statistics.plot.sankey.flows(timestep=0, show=False) assert result.figure is not None assert len(result.data.link) > 0 - def test_sankey_with_mean_aggregate(self, simple_flow_system, highs_solver): - """Test Sankey with mean aggregation.""" + def test_sankey_flows_with_mean_aggregate(self, simple_flow_system, highs_solver): + """Test Sankey flows with mean aggregation.""" simple_flow_system.optimize(highs_solver) - result_sum = simple_flow_system.statistics.plot.sankey(aggregate='sum', show=False) - result_mean = simple_flow_system.statistics.plot.sankey(aggregate='mean', show=False) + result_sum = simple_flow_system.statistics.plot.sankey.flows(aggregate='sum', show=False) + result_mean = simple_flow_system.statistics.plot.sankey.flows(aggregate='mean', show=False) # Both should produce valid results assert result_sum.figure is not None @@ -770,7 +770,7 @@ def test_sankey_returns_plot_result(self, simple_flow_system, highs_solver): """Test that sankey returns PlotResult with figure and data.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey(show=False) + result = simple_flow_system.statistics.plot.sankey.flows(show=False) # Check PlotResult structure assert hasattr(result, 'figure') From 5b99d42293b9f7aa9e8d4d83d69d8d559192d9ba Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:52:39 +0100 Subject: [PATCH 60/88] Removed timestep parameter - now use select={'time': ...} with datetime values: # Old API (removed) sankey.flows(timestep=100) # New API sankey.flows(select={'time': '2023-01-01 12:00'}) sankey.flows(select={'time': slice('2023-01-01', '2023-01-15')}) --- docs/user-guide/results-plotting.md | 4 ++-- flixopt/statistics_accessor.py | 15 +++++---------- tests/test_solution_and_plotting.py | 8 +++++--- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/user-guide/results-plotting.md b/docs/user-guide/results-plotting.md index 84d39f350..352ce37ec 100644 --- a/docs/user-guide/results-plotting.md +++ b/docs/user-guide/results-plotting.md @@ -169,8 +169,8 @@ Visualize energy/material flows as a Sankey diagram. Access via the `sankey` acc ```python # Energy flow amounts (default) flow_system.statistics.plot.sankey.flows() -flow_system.statistics.plot.sankey.flows(timestep=100) -flow_system.statistics.plot.sankey.flows(aggregate='mean') +flow_system.statistics.plot.sankey.flows(select={'time': '2023-01-01 12:00'}) # specific time +flow_system.statistics.plot.sankey.flows(aggregate='mean') # mean instead of sum # Investment sizes/capacities flow_system.statistics.plot.sankey.sizes() diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index f21bae1f8..471cfb5d7 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -915,7 +915,6 @@ def _finalize(self, fig: go.Figure, links: dict[str, list], show: bool | None) - def flows( self, *, - timestep: int | str | None = None, aggregate: Literal['sum', 'mean'] = 'sum', select: FlowSankeySelect | None = None, colors: ColorType | None = None, @@ -925,13 +924,13 @@ def flows( """Plot Sankey diagram of energy/material flow amounts. Args: - timestep: Specific timestep to show, or None for aggregation. - aggregate: How to aggregate if timestep is None ('sum' or 'mean'). + aggregate: How to aggregate over time ('sum' or 'mean'). select: Filter options: - flow: filter by flow label (e.g., 'Boiler|Q_th') - bus: filter by bus label (e.g., 'HeatBus') - component: filter by component label (e.g., 'Boiler') - - time, period, scenario: xarray dimension selection + - time: select specific time (e.g., 100 or '2023-01-01') + - period, scenario: xarray dimension selection colors: Color specification for nodes. show: Whether to display the figure. **plotly_kwargs: Additional arguments passed to Plotly layout. @@ -953,13 +952,9 @@ def flows( ds = _apply_selection(ds, xr_select) - # Time aggregation - if timestep is not None: - ds = ds.isel(time=timestep) if isinstance(timestep, int) else ds.sel(time=timestep) - elif 'time' in ds.dims: + # Aggregate remaining dimensions + if 'time' in ds.dims: ds = getattr(ds, aggregate)(dim='time') - - # Collapse remaining dimensions for dim in ['period', 'scenario']: if dim in ds.dims: ds = ds.sum(dim=dim) diff --git a/tests/test_solution_and_plotting.py b/tests/test_solution_and_plotting.py index 5b9d86fd5..04e926e6f 100644 --- a/tests/test_solution_and_plotting.py +++ b/tests/test_solution_and_plotting.py @@ -742,11 +742,13 @@ def test_sankey_effects_includes_costs_and_co2(self, simple_flow_system, highs_s # Should have at least costs effect assert '[costs]' in targets, 'Should include costs effect' - def test_sankey_flows_with_timestep(self, simple_flow_system, highs_solver): - """Test Sankey flows with specific timestep.""" + def test_sankey_flows_with_time_select(self, simple_flow_system, highs_solver): + """Test Sankey flows with specific time selection.""" simple_flow_system.optimize(highs_solver) - result = simple_flow_system.statistics.plot.sankey.flows(timestep=0, show=False) + # Get first timestamp from the data + first_time = simple_flow_system.statistics.flow_hours.time.values[0] + result = simple_flow_system.statistics.plot.sankey.flows(select={'time': first_time}, show=False) assert result.figure is not None assert len(result.data.link) > 0 From cd0cfbcaf7b29fc600f1db68d646ef121824d74b Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:08:54 +0100 Subject: [PATCH 61/88] Added carriers to notebooks --- docs/notebooks/02-heat-system.ipynb | 18 +++---- .../03-investment-optimization.ipynb | 54 +++++++++---------- .../04-operational-constraints.ipynb | 24 ++++----- 3 files changed, 48 insertions(+), 48 deletions(-) diff --git a/docs/notebooks/02-heat-system.ipynb b/docs/notebooks/02-heat-system.ipynb index 2e258eb8a..fd868ea9a 100644 --- a/docs/notebooks/02-heat-system.ipynb +++ b/docs/notebooks/02-heat-system.ipynb @@ -125,14 +125,14 @@ "metadata": {}, "outputs": [], "source": [ - "# Time-of-use gas prices (€/kWh)\n", + "# Time-of-use gas prices (\u20ac/kWh)\n", "gas_price = np.where(\n", " (hour_of_day >= 6) & (hour_of_day <= 22),\n", " 0.08, # Peak: 6am-10pm\n", " 0.05, # Off-peak: 10pm-6am\n", ")\n", "\n", - "fig = px.line(x=timesteps, y=gas_price, title='Gas Price [€/kWh]', labels={'x': 'Time', 'y': '€/kWh'})\n", + "fig = px.line(x=timesteps, y=gas_price, title='Gas Price [\u20ac/kWh]', labels={'x': 'Time', 'y': '\u20ac/kWh'})\n", "fig" ] }, @@ -149,9 +149,9 @@ "- Office building heat demand\n", "\n", "```\n", - "Gas Grid ──► [Gas] ──► Boiler ──► [Heat] ◄──► Storage\n", - " │\n", - " ▼\n", + "Gas Grid \u2500\u2500\u25ba [Gas] \u2500\u2500\u25ba Boiler \u2500\u2500\u25ba [Heat] \u25c4\u2500\u2500\u25ba Storage\n", + " \u2502\n", + " \u25bc\n", " Office\n", "```" ] @@ -167,10 +167,10 @@ "\n", "flow_system.add_elements(\n", " # === Buses ===\n", - " fx.Bus('Gas'),\n", - " fx.Bus('Heat'),\n", + " fx.Bus('Gas', carrier='gas'),\n", + " fx.Bus('Heat', carrier='heat'),\n", " # === Effect ===\n", - " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('costs', '\u20ac', 'Operating Costs', is_standard=True, is_objective=True),\n", " # === Gas Supply with time-varying price ===\n", " fx.Source(\n", " 'GasGrid',\n", @@ -311,7 +311,7 @@ "total_costs = flow_system.solution['costs'].item()\n", "total_heat = heat_demand.sum()\n", "\n", - "print(f'Total operating costs: {total_costs:.2f} €')\n", + "print(f'Total operating costs: {total_costs:.2f} \u20ac')\n", "print(f'Total heat delivered: {total_heat:.0f} kWh')\n", "print(f'Average cost: {total_costs / total_heat * 100:.2f} ct/kWh')" ] diff --git a/docs/notebooks/03-investment-optimization.ipynb b/docs/notebooks/03-investment-optimization.ipynb index 61acc959f..c3ffe2cdd 100644 --- a/docs/notebooks/03-investment-optimization.ipynb +++ b/docs/notebooks/03-investment-optimization.ipynb @@ -59,13 +59,13 @@ "- **Pool**: Constant heat demand of 150 kW during operating hours\n", "\n", "```\n", - " ☀️ Solar ──► [Heat] ◄── Boiler ◄── [Gas]\n", - " │\n", - " ▼\n", + " \u2600\ufe0f Solar \u2500\u2500\u25ba [Heat] \u25c4\u2500\u2500 Boiler \u25c4\u2500\u2500 [Gas]\n", + " \u2502\n", + " \u25bc\n", " Buffer Tank\n", - " │\n", - " ▼\n", - " Pool 🏊\n", + " \u2502\n", + " \u25bc\n", + " Pool \ud83c\udfca\n", "```" ] }, @@ -91,7 +91,7 @@ "hours = np.arange(168)\n", "hour_of_day = hours % 24\n", "\n", - "# Solar radiation profile (kW/m² equivalent, simplified)\n", + "# Solar radiation profile (kW/m\u00b2 equivalent, simplified)\n", "# Peak around noon, zero at night\n", "solar_profile = np.maximum(0, np.sin((hour_of_day - 6) * np.pi / 12)) * 0.8\n", "solar_profile = np.where((hour_of_day >= 6) & (hour_of_day <= 20), solar_profile, 0)\n", @@ -138,7 +138,7 @@ "source": [ "## Define Costs\n", "\n", - "Investment costs are **annualized** (€/year) to compare with operating costs:" + "Investment costs are **annualized** (\u20ac/year) to compare with operating costs:" ] }, { @@ -149,14 +149,14 @@ "outputs": [], "source": [ "# Cost parameters\n", - "GAS_PRICE = 0.12 # €/kWh - high gas price makes solar attractive\n", + "GAS_PRICE = 0.12 # \u20ac/kWh - high gas price makes solar attractive\n", "\n", - "# Solar collectors: 400 €/kW installed, 20-year lifetime → ~25 €/kW/year annualized\n", + "# Solar collectors: 400 \u20ac/kW installed, 20-year lifetime \u2192 ~25 \u20ac/kW/year annualized\n", "# (simplified, real calculation would include interest rate)\n", - "SOLAR_COST_PER_KW = 20 # €/kW/year\n", + "SOLAR_COST_PER_KW = 20 # \u20ac/kW/year\n", "\n", - "# Buffer tank: 50 €/kWh capacity, 30-year lifetime → ~2 €/kWh/year\n", - "TANK_COST_PER_KWH = 1.5 # €/kWh/year\n", + "# Buffer tank: 50 \u20ac/kWh capacity, 30-year lifetime \u2192 ~2 \u20ac/kWh/year\n", + "TANK_COST_PER_KWH = 1.5 # \u20ac/kWh/year\n", "\n", "# Scale factor: We model 1 week, but costs are annual\n", "# So we scale investment costs to weekly equivalent\n", @@ -164,8 +164,8 @@ "SOLAR_COST_WEEKLY = SOLAR_COST_PER_KW / WEEKS_PER_YEAR\n", "TANK_COST_WEEKLY = TANK_COST_PER_KWH / WEEKS_PER_YEAR\n", "\n", - "print(f'Solar cost: {SOLAR_COST_WEEKLY:.3f} €/kW/week')\n", - "print(f'Tank cost: {TANK_COST_WEEKLY:.4f} €/kWh/week')" + "print(f'Solar cost: {SOLAR_COST_WEEKLY:.3f} \u20ac/kW/week')\n", + "print(f'Tank cost: {TANK_COST_WEEKLY:.4f} \u20ac/kWh/week')" ] }, { @@ -189,10 +189,10 @@ "\n", "flow_system.add_elements(\n", " # === Buses ===\n", - " fx.Bus('Heat'),\n", - " fx.Bus('Gas'),\n", + " fx.Bus('Heat', carrier='heat'),\n", + " fx.Bus('Gas', carrier='gas'),\n", " # === Effects ===\n", - " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('costs', '\u20ac', 'Total Costs', is_standard=True, is_objective=True),\n", " # === Gas Supply ===\n", " fx.Source(\n", " 'GasGrid',\n", @@ -324,11 +324,11 @@ "gas_costs = total_costs - solar_invest - tank_invest\n", "\n", "print('=== Weekly Cost Breakdown ===')\n", - "print(f'Solar investment: {solar_invest:.2f} € ({solar_invest / total_costs * 100:.1f}%)')\n", - "print(f'Tank investment: {tank_invest:.2f} € ({tank_invest / total_costs * 100:.1f}%)')\n", - "print(f'Gas operating: {gas_costs:.2f} € ({gas_costs / total_costs * 100:.1f}%)')\n", - "print('─────────────────────────────')\n", - "print(f'Total: {total_costs:.2f} €')" + "print(f'Solar investment: {solar_invest:.2f} \u20ac ({solar_invest / total_costs * 100:.1f}%)')\n", + "print(f'Tank investment: {tank_invest:.2f} \u20ac ({tank_invest / total_costs * 100:.1f}%)')\n", + "print(f'Gas operating: {gas_costs:.2f} \u20ac ({gas_costs / total_costs * 100:.1f}%)')\n", + "print('\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500')\n", + "print(f'Total: {total_costs:.2f} \u20ac')" ] }, { @@ -394,10 +394,10 @@ "savings_pct = savings / gas_only_cost * 100\n", "\n", "print('=== Comparison with Gas-Only ===')\n", - "print(f'Gas-only cost: {gas_only_cost:.2f} €/week')\n", - "print(f'With solar: {total_costs:.2f} €/week')\n", - "print(f'Savings: {savings:.2f} €/week ({savings_pct:.1f}%)')\n", - "print(f'Annual savings: {savings * 52:.0f} €/year')" + "print(f'Gas-only cost: {gas_only_cost:.2f} \u20ac/week')\n", + "print(f'With solar: {total_costs:.2f} \u20ac/week')\n", + "print(f'Savings: {savings:.2f} \u20ac/week ({savings_pct:.1f}%)')\n", + "print(f'Annual savings: {savings * 52:.0f} \u20ac/year')" ] }, { diff --git a/docs/notebooks/04-operational-constraints.ipynb b/docs/notebooks/04-operational-constraints.ipynb index b7c8923ad..b0172b1fe 100644 --- a/docs/notebooks/04-operational-constraints.ipynb +++ b/docs/notebooks/04-operational-constraints.ipynb @@ -53,7 +53,7 @@ "\n", "The factory has:\n", "\n", - "- **Industrial boiler**: 500 kW capacity, startup cost of 50€, minimum 4h uptime\n", + "- **Industrial boiler**: 500 kW capacity, startup cost of 50\u20ac, minimum 4h uptime\n", "- **Small backup boiler**: 100 kW, no startup constraints (always available)\n", "- **Steam demand**: Varies with production schedule (high during shifts, low overnight)\n", "\n", @@ -132,10 +132,10 @@ "\n", "flow_system.add_elements(\n", " # === Buses ===\n", - " fx.Bus('Gas'),\n", - " fx.Bus('Steam'),\n", + " fx.Bus('Gas', carrier='gas'),\n", + " fx.Bus('Steam', carrier='heat'),\n", " # === Effect ===\n", - " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('costs', '\u20ac', 'Operating Costs', is_standard=True, is_objective=True),\n", " # === Gas Supply ===\n", " fx.Source(\n", " 'GasGrid',\n", @@ -147,7 +147,7 @@ " thermal_efficiency=0.94, # High efficiency\n", " # StatusParameters define on/off behavior\n", " status_parameters=fx.StatusParameters(\n", - " effects_per_startup={'costs': 50}, # 50€ startup cost\n", + " effects_per_startup={'costs': 50}, # 50\u20ac startup cost\n", " min_uptime=4, # Must run at least 4 hours once started\n", " min_downtime=2, # Must stay off at least 2 hours\n", " ),\n", @@ -284,7 +284,7 @@ "id": "18", "metadata": {}, "outputs": [], - "source": "total_startups = int(flow_system.solution['MainBoiler|startup'].sum().item())\ntotal_costs = flow_system.solution['costs'].item()\nstartup_costs = total_startups * 50\ngas_costs = total_costs - startup_costs\n\nprint('=== Cost Breakdown ===')\nprint(f'Number of startups: {total_startups}')\nprint(f'Startup costs: {startup_costs:.0f} €')\nprint(f'Gas costs: {gas_costs:.2f} €')\nprint(f'Total costs: {total_costs:.2f} €')" + "source": "total_startups = int(flow_system.solution['MainBoiler|startup'].sum().item())\ntotal_costs = flow_system.solution['costs'].item()\nstartup_costs = total_startups * 50\ngas_costs = total_costs - startup_costs\n\nprint('=== Cost Breakdown ===')\nprint(f'Number of startups: {total_startups}')\nprint(f'Startup costs: {startup_costs:.0f} \u20ac')\nprint(f'Gas costs: {gas_costs:.2f} \u20ac')\nprint(f'Total costs: {total_costs:.2f} \u20ac')" }, { "cell_type": "markdown", @@ -337,9 +337,9 @@ "fs_unconstrained = fx.FlowSystem(timesteps)\n", "\n", "fs_unconstrained.add_elements(\n", - " fx.Bus('Gas'),\n", - " fx.Bus('Steam'),\n", - " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", + " fx.Bus('Gas', carrier='gas'),\n", + " fx.Bus('Steam', carrier='heat'),\n", + " fx.Effect('costs', '\u20ac', 'Operating Costs', is_standard=True, is_objective=True),\n", " fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)]),\n", " # Main boiler WITHOUT status parameters\n", " fx.linear_converters.Boiler(\n", @@ -361,10 +361,10 @@ "unconstrained_costs = fs_unconstrained.solution['costs'].item()\n", "\n", "print('=== Comparison ===')\n", - "print(f'With constraints: {total_costs:.2f} €')\n", - "print(f'Without constraints: {unconstrained_costs:.2f} €')\n", + "print(f'With constraints: {total_costs:.2f} \u20ac')\n", + "print(f'Without constraints: {unconstrained_costs:.2f} \u20ac')\n", "print(\n", - " f'Constraint cost: {total_costs - unconstrained_costs:.2f} € ({(total_costs - unconstrained_costs) / unconstrained_costs * 100:.1f}%)'\n", + " f'Constraint cost: {total_costs - unconstrained_costs:.2f} \u20ac ({(total_costs - unconstrained_costs) / unconstrained_costs * 100:.1f}%)'\n", ")" ] }, From 6616bfd7d1532dc60f6b30e20f11fba11a6e6e8e Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:18:49 +0100 Subject: [PATCH 62/88] Added carriers to notebooks --- .../04-operational-constraints.ipynb | 4653 ++++++++++++++++- 1 file changed, 4514 insertions(+), 139 deletions(-) diff --git a/docs/notebooks/04-operational-constraints.ipynb b/docs/notebooks/04-operational-constraints.ipynb index b0172b1fe..2fbd78cb9 100644 --- a/docs/notebooks/04-operational-constraints.ipynb +++ b/docs/notebooks/04-operational-constraints.ipynb @@ -29,20 +29,16 @@ }, { "cell_type": "code", - "execution_count": null, "id": "2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:33.779260Z", + "start_time": "2025-12-12T10:09:29.075288Z" + } + }, + "source": "import numpy as np\nimport pandas as pd\nimport plotly.express as px\nimport xarray as xr\n\nimport flixopt as fx\n\nfx.CONFIG.notebook()", "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import plotly.express as px\n", - "import xarray as xr\n", - "\n", - "import flixopt as fx\n", - "\n", - "fx.CONFIG.notebook()" - ] + "execution_count": null }, { "cell_type": "markdown", @@ -53,7 +49,7 @@ "\n", "The factory has:\n", "\n", - "- **Industrial boiler**: 500 kW capacity, startup cost of 50\u20ac, minimum 4h uptime\n", + "- **Industrial boiler**: 500 kW capacity, startup cost of 50€, minimum 4h uptime\n", "- **Small backup boiler**: 100 kW, no startup constraints (always available)\n", "- **Steam demand**: Varies with production schedule (high during shifts, low overnight)\n", "\n", @@ -70,10 +66,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "5", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:33.901073Z", + "start_time": "2025-12-12T10:09:33.889283Z" + } + }, "source": [ "# 3 days, hourly resolution\n", "timesteps = pd.date_range('2024-03-11', periods=72, freq='h')\n", @@ -101,17 +100,3968 @@ "\n", "print(f'Peak demand: {steam_demand.max():.0f} kW')\n", "print(f'Min demand: {steam_demand.min():.0f} kW')" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Peak demand: 435 kW\n", + "Min demand: 50 kW\n" + ] + } + ], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": null, "id": "6", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:34.074761Z", + "start_time": "2025-12-12T10:09:33.923626Z" + } + }, "source": [ "px.line(x=timesteps, y=steam_demand, title='Factory Steam Demand', labels={'x': 'Time', 'y': 'kW'})" - ] + ], + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + }, + { + "data": { + "text/html": [ + "

" + ] + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + } + ], + "execution_count": 3 }, { "cell_type": "markdown", @@ -123,57 +4073,16 @@ }, { "cell_type": "code", - "execution_count": null, "id": "8", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:38.270762Z", + "start_time": "2025-12-12T10:09:38.098962Z" + } + }, + "source": "flow_system = fx.FlowSystem(timesteps)\n\n# Define and register a custom carrier for process steam\nsteam_carrier = fx.Carrier('steam', color='#87CEEB', unit='kW_th', description='Process steam')\nflow_system.add_carriers(steam_carrier)\n\nflow_system.add_elements(\n # === Buses ===\n fx.Bus('Gas', carrier='gas'),\n fx.Bus('Steam', carrier='steam'),\n # === Effect ===\n fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n # === Gas Supply ===\n fx.Source(\n 'GasGrid',\n outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)],\n ),\n # === Main Industrial Boiler (with operational constraints) ===\n fx.linear_converters.Boiler(\n 'MainBoiler',\n thermal_efficiency=0.94, # High efficiency\n # StatusParameters define on/off behavior\n status_parameters=fx.StatusParameters(\n effects_per_startup={'costs': 50}, # 50€ startup cost\n min_uptime=4, # Must run at least 4 hours once started\n min_downtime=2, # Must stay off at least 2 hours\n ),\n thermal_flow=fx.Flow(\n 'Steam',\n bus='Steam',\n size=500,\n relative_minimum=0.3, # Minimum load: 30% = 150 kW\n ),\n fuel_flow=fx.Flow('Gas', bus='Gas'),\n ),\n # === Backup Boiler (flexible, but less efficient) ===\n fx.linear_converters.Boiler(\n 'BackupBoiler',\n thermal_efficiency=0.85, # Lower efficiency\n # No status parameters = can turn on/off freely\n thermal_flow=fx.Flow('Steam', bus='Steam', size=150),\n fuel_flow=fx.Flow('Gas', bus='Gas'),\n ),\n # === Factory Steam Demand ===\n fx.Sink(\n 'Factory',\n inputs=[fx.Flow('Steam', bus='Steam', size=1, fixed_relative_profile=steam_demand)],\n ),\n)", "outputs": [], - "source": [ - "flow_system = fx.FlowSystem(timesteps)\n", - "\n", - "flow_system.add_elements(\n", - " # === Buses ===\n", - " fx.Bus('Gas', carrier='gas'),\n", - " fx.Bus('Steam', carrier='heat'),\n", - " # === Effect ===\n", - " fx.Effect('costs', '\u20ac', 'Operating Costs', is_standard=True, is_objective=True),\n", - " # === Gas Supply ===\n", - " fx.Source(\n", - " 'GasGrid',\n", - " outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)],\n", - " ),\n", - " # === Main Industrial Boiler (with operational constraints) ===\n", - " fx.linear_converters.Boiler(\n", - " 'MainBoiler',\n", - " thermal_efficiency=0.94, # High efficiency\n", - " # StatusParameters define on/off behavior\n", - " status_parameters=fx.StatusParameters(\n", - " effects_per_startup={'costs': 50}, # 50\u20ac startup cost\n", - " min_uptime=4, # Must run at least 4 hours once started\n", - " min_downtime=2, # Must stay off at least 2 hours\n", - " ),\n", - " thermal_flow=fx.Flow(\n", - " 'Steam',\n", - " bus='Steam',\n", - " size=500,\n", - " relative_minimum=0.3, # Minimum load: 30% = 150 kW\n", - " ),\n", - " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", - " ),\n", - " # === Backup Boiler (flexible, but less efficient) ===\n", - " fx.linear_converters.Boiler(\n", - " 'BackupBoiler',\n", - " thermal_efficiency=0.85, # Lower efficiency\n", - " # No status parameters = can turn on/off freely\n", - " thermal_flow=fx.Flow('Steam', bus='Steam', size=150),\n", - " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", - " ),\n", - " # === Factory Steam Demand ===\n", - " fx.Sink(\n", - " 'Factory',\n", - " inputs=[fx.Flow('Steam', bus='Steam', size=1, fixed_relative_profile=steam_demand)],\n", - " ),\n", - ")" - ] + "execution_count": null }, { "cell_type": "markdown", @@ -185,13 +4094,68 @@ }, { "cell_type": "code", - "execution_count": null, "id": "10", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:40.554120Z", + "start_time": "2025-12-12T10:09:38.362282Z" + } + }, "source": [ "flow_system.optimize(fx.solvers.HighsSolver(mip_gap=0.01));" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Running HiGHS 1.12.0 (git hash: 755a8e0): Copyright (c) 2025 HiGHS under MIT licence terms\n", + "MIP linopy-problem-6hzam9p_ has 1814 rows; 1311 cols; 5121 nonzeros; 432 integer variables (432 binary)\n", + "Coefficient ranges:\n", + " Matrix [1e-05, 1e+07]\n", + " Cost [1e+00, 1e+00]\n", + " Bound [1e+00, 1e+07]\n", + " RHS [1e-05, 7e+01]\n", + "WARNING: Problem has some excessively large column bounds\n", + "WARNING: Problem has some excessively small row bounds\n", + "WARNING: Consider scaling the bounds by 1e-1, or setting the user_bound_scale option to -4\n", + "Presolving model\n", + "1212 rows, 645 cols, 2987 nonzeros 0s\n", + "0 rows, 0 cols, 0 nonzeros 0s\n", + "Presolve reductions: rows 0(-1814); columns 0(-1311); nonzeros 0(-5121) - Reduced to empty\n", + "Presolve: Optimal\n", + "\n", + "Src: B => Branching; C => Central rounding; F => Feasibility pump; H => Heuristic;\n", + " I => Shifting; J => Feasibility jump; L => Sub-MIP; P => Empty MIP; R => Randomized rounding;\n", + " S => Solve LP; T => Evaluate node; U => Unbounded; X => User solution; Y => HiGHS solution;\n", + " Z => ZI Round; l => Trivial lower; p => Trivial point; u => Trivial upper; z => Trivial zero\n", + "\n", + " Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work \n", + "Src Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time\n", + "\n", + " 0 0 0 0.00% 1441.320174 1441.320174 0.00% 0 0 0 0 0.0s\n", + "\n", + "Solving report\n", + " Model linopy-problem-6hzam9p_\n", + " Status Optimal\n", + " Primal bound 1441.3201735\n", + " Dual bound 1441.3201735\n", + " Gap 0% (tolerance: 1%)\n", + " P-D integral 0\n", + " Solution status feasible\n", + " 1441.3201735 (objective)\n", + " 0 (bound viol.)\n", + " 0 (int. viol.)\n", + " 0 (row viol.)\n", + " Timing 0.01\n", + " Max sub-MIP depth 0\n", + " Nodes 0\n", + " Repair LPs 0\n", + " LP iterations 0\n" + ] + } + ], + "execution_count": 5 }, { "cell_type": "markdown", @@ -207,13 +4171,196 @@ }, { "cell_type": "code", - "execution_count": null, "id": "12", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:40.792746Z", + "start_time": "2025-12-12T10:09:40.580142Z" + } + }, "source": [ "flow_system.statistics.plot.balance('Steam')" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 2kB\n", + "Dimensions: (time: 73)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 584B 2024-03-11 ... 2024-03-14\n", + "Data variables:\n", + " MainBoiler(Steam) (time) float64 584B -0.0 -0.0 -0.0 ... -0.0 -0.0 nan\n", + " BackupBoiler(Steam) (time) float64 584B -58.29 -99.95 -85.66 ... -63.38 nan\n", + " Factory(Steam) (time) float64 584B 58.29 99.95 85.66 ... 63.38 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=MainBoiler(Steam)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'MainBoiler(Steam)',\n", + " 'marker': {'color': '#EF553B', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'MainBoiler(Steam)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-03-11T00:00:00.000000000', '2024-03-11T01:00:00.000000000',\n", + " '2024-03-11T02:00:00.000000000', '2024-03-11T03:00:00.000000000',\n", + " '2024-03-11T04:00:00.000000000', '2024-03-11T05:00:00.000000000',\n", + " '2024-03-11T06:00:00.000000000', '2024-03-11T07:00:00.000000000',\n", + " '2024-03-11T08:00:00.000000000', '2024-03-11T09:00:00.000000000',\n", + " '2024-03-11T10:00:00.000000000', '2024-03-11T11:00:00.000000000',\n", + " '2024-03-11T12:00:00.000000000', '2024-03-11T13:00:00.000000000',\n", + " '2024-03-11T14:00:00.000000000', '2024-03-11T15:00:00.000000000',\n", + " '2024-03-11T16:00:00.000000000', '2024-03-11T17:00:00.000000000',\n", + " '2024-03-11T18:00:00.000000000', '2024-03-11T19:00:00.000000000',\n", + " '2024-03-11T20:00:00.000000000', '2024-03-11T21:00:00.000000000',\n", + " '2024-03-11T22:00:00.000000000', '2024-03-11T23:00:00.000000000',\n", + " '2024-03-12T00:00:00.000000000', '2024-03-12T01:00:00.000000000',\n", + " '2024-03-12T02:00:00.000000000', '2024-03-12T03:00:00.000000000',\n", + " '2024-03-12T04:00:00.000000000', '2024-03-12T05:00:00.000000000',\n", + " '2024-03-12T06:00:00.000000000', '2024-03-12T07:00:00.000000000',\n", + " '2024-03-12T08:00:00.000000000', '2024-03-12T09:00:00.000000000',\n", + " '2024-03-12T10:00:00.000000000', '2024-03-12T11:00:00.000000000',\n", + " '2024-03-12T12:00:00.000000000', '2024-03-12T13:00:00.000000000',\n", + " '2024-03-12T14:00:00.000000000', '2024-03-12T15:00:00.000000000',\n", + " '2024-03-12T16:00:00.000000000', '2024-03-12T17:00:00.000000000',\n", + " '2024-03-12T18:00:00.000000000', '2024-03-12T19:00:00.000000000',\n", + " '2024-03-12T20:00:00.000000000', '2024-03-12T21:00:00.000000000',\n", + " '2024-03-12T22:00:00.000000000', '2024-03-12T23:00:00.000000000',\n", + " '2024-03-13T00:00:00.000000000', '2024-03-13T01:00:00.000000000',\n", + " '2024-03-13T02:00:00.000000000', '2024-03-13T03:00:00.000000000',\n", + " '2024-03-13T04:00:00.000000000', '2024-03-13T05:00:00.000000000',\n", + " '2024-03-13T06:00:00.000000000', '2024-03-13T07:00:00.000000000',\n", + " '2024-03-13T08:00:00.000000000', '2024-03-13T09:00:00.000000000',\n", + " '2024-03-13T10:00:00.000000000', '2024-03-13T11:00:00.000000000',\n", + " '2024-03-13T12:00:00.000000000', '2024-03-13T13:00:00.000000000',\n", + " '2024-03-13T14:00:00.000000000', '2024-03-13T15:00:00.000000000',\n", + " '2024-03-13T16:00:00.000000000', '2024-03-13T17:00:00.000000000',\n", + " '2024-03-13T18:00:00.000000000', '2024-03-13T19:00:00.000000000',\n", + " '2024-03-13T20:00:00.000000000', '2024-03-13T21:00:00.000000000',\n", + " '2024-03-13T22:00:00.000000000', '2024-03-13T23:00:00.000000000',\n", + " '2024-03-14T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'AAAAAAgAAAAAAAAACAAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=BackupBoiler(Steam)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'BackupBoiler(Steam)',\n", + " 'marker': {'color': '#00CC96', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'BackupBoiler(Steam)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-03-11T00:00:00.000000000', '2024-03-11T01:00:00.000000000',\n", + " '2024-03-11T02:00:00.000000000', '2024-03-11T03:00:00.000000000',\n", + " '2024-03-11T04:00:00.000000000', '2024-03-11T05:00:00.000000000',\n", + " '2024-03-11T06:00:00.000000000', '2024-03-11T07:00:00.000000000',\n", + " '2024-03-11T08:00:00.000000000', '2024-03-11T09:00:00.000000000',\n", + " '2024-03-11T10:00:00.000000000', '2024-03-11T11:00:00.000000000',\n", + " '2024-03-11T12:00:00.000000000', '2024-03-11T13:00:00.000000000',\n", + " '2024-03-11T14:00:00.000000000', '2024-03-11T15:00:00.000000000',\n", + " '2024-03-11T16:00:00.000000000', '2024-03-11T17:00:00.000000000',\n", + " '2024-03-11T18:00:00.000000000', '2024-03-11T19:00:00.000000000',\n", + " '2024-03-11T20:00:00.000000000', '2024-03-11T21:00:00.000000000',\n", + " '2024-03-11T22:00:00.000000000', '2024-03-11T23:00:00.000000000',\n", + " '2024-03-12T00:00:00.000000000', '2024-03-12T01:00:00.000000000',\n", + " '2024-03-12T02:00:00.000000000', '2024-03-12T03:00:00.000000000',\n", + " '2024-03-12T04:00:00.000000000', '2024-03-12T05:00:00.000000000',\n", + " '2024-03-12T06:00:00.000000000', '2024-03-12T07:00:00.000000000',\n", + " '2024-03-12T08:00:00.000000000', '2024-03-12T09:00:00.000000000',\n", + " '2024-03-12T10:00:00.000000000', '2024-03-12T11:00:00.000000000',\n", + " '2024-03-12T12:00:00.000000000', '2024-03-12T13:00:00.000000000',\n", + " '2024-03-12T14:00:00.000000000', '2024-03-12T15:00:00.000000000',\n", + " '2024-03-12T16:00:00.000000000', '2024-03-12T17:00:00.000000000',\n", + " '2024-03-12T18:00:00.000000000', '2024-03-12T19:00:00.000000000',\n", + " '2024-03-12T20:00:00.000000000', '2024-03-12T21:00:00.000000000',\n", + " '2024-03-12T22:00:00.000000000', '2024-03-12T23:00:00.000000000',\n", + " '2024-03-13T00:00:00.000000000', '2024-03-13T01:00:00.000000000',\n", + " '2024-03-13T02:00:00.000000000', '2024-03-13T03:00:00.000000000',\n", + " '2024-03-13T04:00:00.000000000', '2024-03-13T05:00:00.000000000',\n", + " '2024-03-13T06:00:00.000000000', '2024-03-13T07:00:00.000000000',\n", + " '2024-03-13T08:00:00.000000000', '2024-03-13T09:00:00.000000000',\n", + " '2024-03-13T10:00:00.000000000', '2024-03-13T11:00:00.000000000',\n", + " '2024-03-13T12:00:00.000000000', '2024-03-13T13:00:00.000000000',\n", + " '2024-03-13T14:00:00.000000000', '2024-03-13T15:00:00.000000000',\n", + " '2024-03-13T16:00:00.000000000', '2024-03-13T17:00:00.000000000',\n", + " '2024-03-13T18:00:00.000000000', '2024-03-13T19:00:00.000000000',\n", + " '2024-03-13T20:00:00.000000000', '2024-03-13T21:00:00.000000000',\n", + " '2024-03-13T22:00:00.000000000', '2024-03-13T23:00:00.000000000',\n", + " '2024-03-14T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('mN+4IMkkTcCAdOsnmvxYwMQF7WQ2al' ... 'IhmldWwF2t/0Q+sE/AAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Factory(Steam)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Factory(Steam)',\n", + " 'marker': {'color': '#AB63FA', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Factory(Steam)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-03-11T00:00:00.000000000', '2024-03-11T01:00:00.000000000',\n", + " '2024-03-11T02:00:00.000000000', '2024-03-11T03:00:00.000000000',\n", + " '2024-03-11T04:00:00.000000000', '2024-03-11T05:00:00.000000000',\n", + " '2024-03-11T06:00:00.000000000', '2024-03-11T07:00:00.000000000',\n", + " '2024-03-11T08:00:00.000000000', '2024-03-11T09:00:00.000000000',\n", + " '2024-03-11T10:00:00.000000000', '2024-03-11T11:00:00.000000000',\n", + " '2024-03-11T12:00:00.000000000', '2024-03-11T13:00:00.000000000',\n", + " '2024-03-11T14:00:00.000000000', '2024-03-11T15:00:00.000000000',\n", + " '2024-03-11T16:00:00.000000000', '2024-03-11T17:00:00.000000000',\n", + " '2024-03-11T18:00:00.000000000', '2024-03-11T19:00:00.000000000',\n", + " '2024-03-11T20:00:00.000000000', '2024-03-11T21:00:00.000000000',\n", + " '2024-03-11T22:00:00.000000000', '2024-03-11T23:00:00.000000000',\n", + " '2024-03-12T00:00:00.000000000', '2024-03-12T01:00:00.000000000',\n", + " '2024-03-12T02:00:00.000000000', '2024-03-12T03:00:00.000000000',\n", + " '2024-03-12T04:00:00.000000000', '2024-03-12T05:00:00.000000000',\n", + " '2024-03-12T06:00:00.000000000', '2024-03-12T07:00:00.000000000',\n", + " '2024-03-12T08:00:00.000000000', '2024-03-12T09:00:00.000000000',\n", + " '2024-03-12T10:00:00.000000000', '2024-03-12T11:00:00.000000000',\n", + " '2024-03-12T12:00:00.000000000', '2024-03-12T13:00:00.000000000',\n", + " '2024-03-12T14:00:00.000000000', '2024-03-12T15:00:00.000000000',\n", + " '2024-03-12T16:00:00.000000000', '2024-03-12T17:00:00.000000000',\n", + " '2024-03-12T18:00:00.000000000', '2024-03-12T19:00:00.000000000',\n", + " '2024-03-12T20:00:00.000000000', '2024-03-12T21:00:00.000000000',\n", + " '2024-03-12T22:00:00.000000000', '2024-03-12T23:00:00.000000000',\n", + " '2024-03-13T00:00:00.000000000', '2024-03-13T01:00:00.000000000',\n", + " '2024-03-13T02:00:00.000000000', '2024-03-13T03:00:00.000000000',\n", + " '2024-03-13T04:00:00.000000000', '2024-03-13T05:00:00.000000000',\n", + " '2024-03-13T06:00:00.000000000', '2024-03-13T07:00:00.000000000',\n", + " '2024-03-13T08:00:00.000000000', '2024-03-13T09:00:00.000000000',\n", + " '2024-03-13T10:00:00.000000000', '2024-03-13T11:00:00.000000000',\n", + " '2024-03-13T12:00:00.000000000', '2024-03-13T13:00:00.000000000',\n", + " '2024-03-13T14:00:00.000000000', '2024-03-13T15:00:00.000000000',\n", + " '2024-03-13T16:00:00.000000000', '2024-03-13T17:00:00.000000000',\n", + " '2024-03-13T18:00:00.000000000', '2024-03-13T19:00:00.000000000',\n", + " '2024-03-13T20:00:00.000000000', '2024-03-13T21:00:00.000000000',\n", + " '2024-03-13T22:00:00.000000000', '2024-03-13T23:00:00.000000000',\n", + " '2024-03-14T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('l9+4IMkkTUCAdOsnmvxYQMQF7WQ2al' ... 'IhmldWQF6t/0Q+sE9AAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Steam (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 6 }, { "cell_type": "markdown", @@ -230,13 +4377,73 @@ }, { "cell_type": "code", - "execution_count": null, "id": "14", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:41.061182Z", + "start_time": "2025-12-12T10:09:40.850044Z" + } + }, "source": [ "flow_system.statistics.plot.heatmap('MainBoiler(Steam)')" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 992B\n", + "Dimensions: (timeframe: 4, timestep: 24)\n", + "Coordinates:\n", + " * timeframe (timeframe) object 32B '2024-03-11' '2024-03-12' ... '2024-03-14'\n", + " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", + "Data variables:\n", + " value (timestep, timeframe) float64 768B 0.0 0.0 0.0 ... 0.0 0.0 nan, figure=Figure({\n", + " 'data': [{'coloraxis': 'coloraxis',\n", + " 'hovertemplate': ('timeframe: %{x}
timestep: %' ... 'flow_rate: %{z}'),\n", + " 'name': '0',\n", + " 'type': 'heatmap',\n", + " 'x': array(['2024-03-11', '2024-03-12', '2024-03-13', '2024-03-14'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", + " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", + " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", + " dtype=object),\n", + " 'yaxis': 'y',\n", + " 'z': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAPh/'),\n", + " 'dtype': 'f8',\n", + " 'shape': '24, 4'}}],\n", + " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'MainBoiler(Steam)|flow_rate'}},\n", + " 'colorscale': [[0.0, '#30123b'],\n", + " [0.07142857142857142, '#4145ab'],\n", + " [0.14285714285714285, '#4675ed'],\n", + " [0.21428571428571427, '#39a2fc'],\n", + " [0.2857142857142857, '#1bcfd4'],\n", + " [0.35714285714285715, '#24eca6'],\n", + " [0.42857142857142855, '#61fc6c'], [0.5,\n", + " '#a4fc3b'], [0.5714285714285714,\n", + " '#d1e834'], [0.6428571428571429,\n", + " '#f3c63a'], [0.7142857142857143,\n", + " '#fe9b2d'], [0.7857142857142857,\n", + " '#f36315'], [0.8571428571428571,\n", + " '#d93806'], [0.9285714285714286,\n", + " '#b11901'], [1.0, '#7a0402']]},\n", + " 'margin': {'t': 60},\n", + " 'template': '...',\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", + " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 7 }, { "cell_type": "markdown", @@ -250,10 +4457,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "16", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:41.315830Z", + "start_time": "2025-12-12T10:09:41.184920Z" + } + }, "source": [ "# Merge solution DataArrays directly - xarray aligns coordinates automatically\n", "status_ds = xr.Dataset(\n", @@ -268,7 +4478,46 @@ "fig.update_yaxes(matches=None, showticklabels=True)\n", "fig.for_each_annotation(lambda a: a.update(text=a.text.split('=')[-1]))\n", "fig" - ] + ], + "outputs": [ + { + "data": { + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data", + "jetTransient": { + "display_id": null + } + } + ], + "execution_count": 8 }, { "cell_type": "markdown", @@ -280,11 +4529,28 @@ }, { "cell_type": "code", - "execution_count": null, "id": "18", - "metadata": {}, - "outputs": [], - "source": "total_startups = int(flow_system.solution['MainBoiler|startup'].sum().item())\ntotal_costs = flow_system.solution['costs'].item()\nstartup_costs = total_startups * 50\ngas_costs = total_costs - startup_costs\n\nprint('=== Cost Breakdown ===')\nprint(f'Number of startups: {total_startups}')\nprint(f'Startup costs: {startup_costs:.0f} \u20ac')\nprint(f'Gas costs: {gas_costs:.2f} \u20ac')\nprint(f'Total costs: {total_costs:.2f} \u20ac')" + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:41.443170Z", + "start_time": "2025-12-12T10:09:41.430976Z" + } + }, + "source": "total_startups = int(flow_system.solution['MainBoiler|startup'].sum().item())\ntotal_costs = flow_system.solution['costs'].item()\nstartup_costs = total_startups * 50\ngas_costs = total_costs - startup_costs\n\nprint('=== Cost Breakdown ===')\nprint(f'Number of startups: {total_startups}')\nprint(f'Startup costs: {startup_costs:.0f} €')\nprint(f'Gas costs: {gas_costs:.2f} €')\nprint(f'Total costs: {total_costs:.2f} €')", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== Cost Breakdown ===\n", + "Number of startups: 3\n", + "Startup costs: 150 €\n", + "Gas costs: 1291.32 €\n", + "Total costs: 1441.32 €\n" + ] + } + ], + "execution_count": 9 }, { "cell_type": "markdown", @@ -298,23 +4564,115 @@ }, { "cell_type": "code", - "execution_count": null, "id": "20", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:41.543723Z", + "start_time": "2025-12-12T10:09:41.463211Z" + } + }, "source": [ "flow_system.statistics.plot.duration_curve('MainBoiler(Steam)')" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 1kB\n", + "Dimensions: (duration: 73)\n", + "Coordinates:\n", + " * duration (duration) int64 584B 0 1 2 3 4 5 6 ... 67 68 69 70 71 72\n", + "Data variables:\n", + " MainBoiler(Steam) (duration) float64 584B nan 435.1 429.9 ... 0.0 0.0 0.0, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=MainBoiler(Steam)
duration=%{x}
value=%{y}',\n", + " 'legendgroup': 'MainBoiler(Steam)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'MainBoiler(Steam)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", + " 'dtype': 'i1'},\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('/////////3+Tw6lGkDF7QCDE7iqb3n' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Duration Curve'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 10 }, { "cell_type": "code", - "execution_count": null, "id": "21", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:41.641113Z", + "start_time": "2025-12-12T10:09:41.565242Z" + } + }, "source": [ "flow_system.statistics.plot.duration_curve('BackupBoiler(Steam)')" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 1kB\n", + "Dimensions: (duration: 73)\n", + "Coordinates:\n", + " * duration (duration) int64 584B 0 1 2 3 4 5 ... 67 68 69 70 71 72\n", + "Data variables:\n", + " BackupBoiler(Steam) (duration) float64 584B nan 127.8 ... -2.543e-14, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=BackupBoiler(Steam)
duration=%{x}
value=%{y}',\n", + " 'legendgroup': 'BackupBoiler(Steam)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'BackupBoiler(Steam)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", + " 'dtype': 'i1'},\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('/////////3/DcRZAOvZfQHoLJc/SMF' ... 'nA0x0XvXh0E0qVJBy9UQm+McCgHL0='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Duration Curve'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 11 }, { "cell_type": "markdown", @@ -328,45 +4686,16 @@ }, { "cell_type": "code", - "execution_count": null, "id": "23", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:42.275686Z", + "start_time": "2025-12-12T10:09:41.660745Z" + } + }, + "source": "# Build unconstrained system\nfs_unconstrained = fx.FlowSystem(timesteps)\nfs_unconstrained.add_carriers(steam_carrier) # Reuse the custom carrier\n\nfs_unconstrained.add_elements(\n fx.Bus('Gas', carrier='gas'),\n fx.Bus('Steam', carrier='steam'),\n fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)]),\n # Main boiler WITHOUT status parameters\n fx.linear_converters.Boiler(\n 'MainBoiler',\n thermal_efficiency=0.94,\n thermal_flow=fx.Flow('Steam', bus='Steam', size=500),\n fuel_flow=fx.Flow('Gas', bus='Gas'),\n ),\n fx.linear_converters.Boiler(\n 'BackupBoiler',\n thermal_efficiency=0.85,\n thermal_flow=fx.Flow('Steam', bus='Steam', size=150),\n fuel_flow=fx.Flow('Gas', bus='Gas'),\n ),\n fx.Sink('Factory', inputs=[fx.Flow('Steam', bus='Steam', size=1, fixed_relative_profile=steam_demand)]),\n)\n\nfs_unconstrained.optimize(fx.solvers.HighsSolver())\nunconstrained_costs = fs_unconstrained.solution['costs'].item()\n\nprint('=== Comparison ===')\nprint(f'With constraints: {total_costs:.2f} €')\nprint(f'Without constraints: {unconstrained_costs:.2f} €')\nprint(\n f'Constraint cost: {total_costs - unconstrained_costs:.2f} € ({(total_costs - unconstrained_costs) / unconstrained_costs * 100:.1f}%)'\n)", "outputs": [], - "source": [ - "# Build unconstrained system\n", - "fs_unconstrained = fx.FlowSystem(timesteps)\n", - "\n", - "fs_unconstrained.add_elements(\n", - " fx.Bus('Gas', carrier='gas'),\n", - " fx.Bus('Steam', carrier='heat'),\n", - " fx.Effect('costs', '\u20ac', 'Operating Costs', is_standard=True, is_objective=True),\n", - " fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=1000, effects_per_flow_hour=0.06)]),\n", - " # Main boiler WITHOUT status parameters\n", - " fx.linear_converters.Boiler(\n", - " 'MainBoiler',\n", - " thermal_efficiency=0.94,\n", - " thermal_flow=fx.Flow('Steam', bus='Steam', size=500),\n", - " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", - " ),\n", - " fx.linear_converters.Boiler(\n", - " 'BackupBoiler',\n", - " thermal_efficiency=0.85,\n", - " thermal_flow=fx.Flow('Steam', bus='Steam', size=150),\n", - " fuel_flow=fx.Flow('Gas', bus='Gas'),\n", - " ),\n", - " fx.Sink('Factory', inputs=[fx.Flow('Steam', bus='Steam', size=1, fixed_relative_profile=steam_demand)]),\n", - ")\n", - "\n", - "fs_unconstrained.optimize(fx.solvers.HighsSolver())\n", - "unconstrained_costs = fs_unconstrained.solution['costs'].item()\n", - "\n", - "print('=== Comparison ===')\n", - "print(f'With constraints: {total_costs:.2f} \u20ac')\n", - "print(f'Without constraints: {unconstrained_costs:.2f} \u20ac')\n", - "print(\n", - " f'Constraint cost: {total_costs - unconstrained_costs:.2f} \u20ac ({(total_costs - unconstrained_costs) / unconstrained_costs * 100:.1f}%)'\n", - ")" - ] + "execution_count": null }, { "cell_type": "markdown", @@ -380,13 +4709,59 @@ }, { "cell_type": "code", - "execution_count": null, "id": "25", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T10:09:42.358234Z", + "start_time": "2025-12-12T10:09:42.304711Z" + } + }, "source": [ "flow_system.statistics.plot.sankey.flows()" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 1kB\n", + "Dimensions: (link: 6)\n", + "Coordinates:\n", + " * link (link) int64 48B 0 1 2 3 4 5\n", + " source (link) \n", + "
" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 13 }, { "cell_type": "markdown", From b9aee817c95b08f73093f4d66ab496e65317b259 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:35:57 +0100 Subject: [PATCH 63/88] Summary of Carrier Enhancements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Carrier attribute on flow_rates/flow_hours - Each flow variable now has a carrier attribute - Enables filtering: flow_system.statistics.flow_rates['Boiler(Steam)'].attrs['carrier'] → 'steam' 2. Carrier filtering in sankey - New filter option: select={'carrier': 'heat'} - Example: fs.statistics.plot.sankey.flows(select={'carrier': 'steam'}) 3. Carrier colors in sankey (subtle/transparent) - Links: Colored by carrier with 40% opacity (e.g., rgba(255, 0, 0, 0.4)) - Bus nodes: Colored by their carrier color 4. Carrier colors in topology - topology.plot(): Links colored by carrier (subtle) - topology.infos(): Now includes carrier_color in edge data - topology.plot_legacy(): Edges colored by carrier 5. Carrier-level balance plot # Show all heat production/consumption system-wide fs.statistics.plot.carrier_balance('heat') # Energy units fs.statistics.plot.carrier_balance('electricity', unit='flow_hours') - Positive: Inputs to carrier buses (production/sources) - Negative: Outputs from carrier buses (consumption/sinks) - Colors from component.color for each flow --- flixopt/statistics_accessor.py | 297 +++++++++++++++++++++++++++++---- flixopt/topology_accessor.py | 29 +++- 2 files changed, 287 insertions(+), 39 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 471cfb5d7..5fe6ac568 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -49,8 +49,8 @@ # Sankey select types with Literal keys for IDE autocomplete -FlowSankeySelect = dict[Literal['flow', 'bus', 'component', 'time', 'period', 'scenario'], Any] -"""Select options for flow-based sankey: flow, bus, component, time, period, scenario.""" +FlowSankeySelect = dict[Literal['flow', 'bus', 'component', 'carrier', 'time', 'period', 'scenario'], Any] +"""Select options for flow-based sankey: flow, bus, component, carrier, time, period, scenario.""" EffectsSankeySelect = dict[Literal['effect', 'component', 'contributor', 'period', 'scenario'], Any] """Select options for effects sankey: effect, component, contributor, period, scenario.""" @@ -262,6 +262,26 @@ def _apply_selection(ds: xr.Dataset, select: SelectType | None, drop: bool = Tru return ds +def _filter_by_carrier(ds: xr.Dataset, carrier: str | list[str] | None) -> xr.Dataset: + """Filter dataset variables by carrier attribute. + + Args: + ds: Dataset with variables that have 'carrier' attributes. + carrier: Carrier name(s) to keep. None means no filtering. + + Returns: + Dataset containing only variables matching the carrier(s). + """ + if carrier is None: + return ds + + carriers = [carrier] if isinstance(carrier, str) else carrier + carriers = [c.lower() for c in carriers] + + matching_vars = [var for var in ds.data_vars if ds[var].attrs.get('carrier', '').lower() in carriers] + return ds[matching_vars] if matching_vars else xr.Dataset() + + def _resolve_facets( ds: xr.Dataset, facet_col: str | None, @@ -391,6 +411,7 @@ def __init__(self, flow_system: FlowSystem) -> None: self._temporal_effects: xr.Dataset | None = None self._periodic_effects: xr.Dataset | None = None self._total_effects: xr.Dataset | None = None + self._carrier_colors: dict[str, str] | None = None # Plotting accessor (lazy) self._plot: StatisticsPlotAccessor | None = None @@ -417,20 +438,43 @@ def plot(self) -> StatisticsPlotAccessor: @property def flow_rates(self) -> xr.Dataset: - """All flow rates as a Dataset with flow labels as variable names.""" + """All flow rates as a Dataset with flow labels as variable names. + + Each variable has a 'carrier' attribute indicating the carrier type + of the bus it connects to (e.g., 'heat', 'electricity', 'gas'). + """ self._require_solution() if self._flow_rates is None: flow_rate_vars = [v for v in self._fs.solution.data_vars if v.endswith('|flow_rate')] - self._flow_rates = xr.Dataset({v.replace('|flow_rate', ''): self._fs.solution[v] for v in flow_rate_vars}) + data_vars = {} + for v in flow_rate_vars: + flow_label = v.replace('|flow_rate', '') + da = self._fs.solution[v].copy() + # Add carrier as attribute + carrier = self._fs.get_carrier(flow_label) + da.attrs['carrier'] = carrier.name if carrier else None + data_vars[flow_label] = da + self._flow_rates = xr.Dataset(data_vars) return self._flow_rates @property def flow_hours(self) -> xr.Dataset: - """All flow hours (energy) as a Dataset with flow labels as variable names.""" + """All flow hours (energy) as a Dataset with flow labels as variable names. + + Each variable has a 'carrier' attribute indicating the carrier type + of the bus it connects to (e.g., 'heat', 'electricity', 'gas'). + """ self._require_solution() if self._flow_hours is None: hours = self._fs.hours_per_timestep - self._flow_hours = self.flow_rates * hours + flow_rates = self.flow_rates + # Multiply and preserve carrier attributes + data_vars = {} + for var in flow_rates.data_vars: + da = flow_rates[var] * hours + da.attrs['carrier'] = flow_rates[var].attrs.get('carrier') + data_vars[var] = da + self._flow_hours = xr.Dataset(data_vars) return self._flow_hours @property @@ -791,19 +835,20 @@ def __init__(self, plot_accessor: StatisticsPlotAccessor) -> None: def _extract_flow_filters( self, select: FlowSankeySelect | None - ) -> tuple[SelectType | None, list[str] | None, list[str] | None, list[str] | None]: + ) -> tuple[SelectType | None, list[str] | None, list[str] | None, list[str] | None, list[str] | None]: """Extract special filters from select dict. Returns: - Tuple of (xarray_select, flow_filter, bus_filter, component_filter). + Tuple of (xarray_select, flow_filter, bus_filter, component_filter, carrier_filter). """ if select is None: - return None, None, None, None + return None, None, None, None, None select = dict(select) # Copy to avoid mutating original flow_filter = select.pop('flow', None) bus_filter = select.pop('bus', None) component_filter = select.pop('component', None) + carrier_filter = select.pop('carrier', None) # Normalize to lists if isinstance(flow_filter, str): @@ -812,8 +857,10 @@ def _extract_flow_filters( bus_filter = [bus_filter] if isinstance(component_filter, str): component_filter = [component_filter] + if isinstance(carrier_filter, str): + carrier_filter = [carrier_filter] - return select if select else None, flow_filter, bus_filter, component_filter + return select if select else None, flow_filter, bus_filter, component_filter, carrier_filter def _build_flow_links( self, @@ -821,11 +868,16 @@ def _build_flow_links( flow_filter: list[str] | None = None, bus_filter: list[str] | None = None, component_filter: list[str] | None = None, + carrier_filter: list[str] | None = None, min_value: float = 1e-6, ) -> tuple[set[str], dict[str, list]]: """Build Sankey nodes and links from flow data.""" nodes: set[str] = set() - links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': []} + links: dict[str, list] = {'source': [], 'target': [], 'value': [], 'label': [], 'carrier': []} + + # Normalize carrier filter to lowercase + if carrier_filter is not None: + carrier_filter = [c.lower() for c in carrier_filter] for flow in self._fs.flows.values(): label = flow.label_full @@ -839,6 +891,14 @@ def _build_flow_links( comp_label = flow.component if bus_filter is not None and bus_label not in bus_filter: continue + + # Get carrier for this flow + carrier = self._fs.get_carrier(label) + carrier_name = carrier.name if carrier else None + + if carrier_filter is not None: + if carrier_name is None or carrier_name.lower() not in carrier_filter: + continue if component_filter is not None and comp_label not in component_filter: continue @@ -857,6 +917,7 @@ def _build_flow_links( links['target'].append(target) links['value'].append(abs(value)) links['label'].append(label) + links['carrier'].append(carrier_name) return nodes, links @@ -872,8 +933,20 @@ def _create_figure( node_list = list(nodes) node_indices = {n: i for i, n in enumerate(node_list)} - color_map = process_colors(colors, node_list) - node_colors = [color_map[node] for node in node_list] + # Build node colors: buses use carrier colors, components use process_colors + node_colors = self._get_node_colors(node_list, colors) + + # Build link colors from carrier colors (subtle/semi-transparent) + link_colors = self._get_link_colors(links.get('carrier', [])) + + link_dict: dict[str, Any] = dict( + source=[node_indices[s] for s in links['source']], + target=[node_indices[t] for t in links['target']], + value=links['value'], + label=links['label'], + ) + if link_colors: + link_dict['color'] = link_colors fig = go.Figure( data=[ @@ -881,29 +954,73 @@ def _create_figure( node=dict( pad=15, thickness=20, line=dict(color='black', width=0.5), label=node_list, color=node_colors ), - link=dict( - source=[node_indices[s] for s in links['source']], - target=[node_indices[t] for t in links['target']], - value=links['value'], - label=links['label'], - ), + link=link_dict, ) ] ) fig.update_layout(title=title, **plotly_kwargs) return fig + def _get_node_colors(self, node_list: list[str], colors: ColorType | None) -> list[str]: + """Get colors for nodes: buses use carrier colors, components use process_colors.""" + # Get fallback colors from process_colors + fallback_colors = process_colors(colors, node_list) + + node_colors = [] + for node in node_list: + # Check if node is a bus + if node in self._fs.buses: + bus = self._fs.buses[node] + if bus.carrier: + carrier = self._fs.carriers.get(bus.carrier) + if carrier and carrier.color: + node_colors.append(carrier.color) + continue + # Fall back to process_colors + node_colors.append(fallback_colors[node]) + + return node_colors + + def _get_link_colors(self, carriers: list[str | None]) -> list[str]: + """Get subtle/semi-transparent colors for links based on their carriers.""" + if not carriers: + return [] + + link_colors = [] + for carrier_name in carriers: + if carrier_name is None: + link_colors.append('rgba(200, 200, 200, 0.4)') # Default gray + continue + + carrier = self._fs.carriers.get(carrier_name) + if carrier and carrier.color: + # Convert hex color to rgba with transparency + hex_color = carrier.color.lstrip('#') + if len(hex_color) == 6: + r = int(hex_color[0:2], 16) + g = int(hex_color[2:4], 16) + b = int(hex_color[4:6], 16) + link_colors.append(f'rgba({r}, {g}, {b}, 0.4)') + else: + link_colors.append('rgba(200, 200, 200, 0.4)') + else: + link_colors.append('rgba(200, 200, 200, 0.4)') + + return link_colors + def _finalize(self, fig: go.Figure, links: dict[str, list], show: bool | None) -> PlotResult: """Create PlotResult and optionally show figure.""" - sankey_ds = xr.Dataset( - {'value': ('link', links['value'])}, - coords={ - 'link': range(len(links['value'])), - 'source': ('link', links['source']), - 'target': ('link', links['target']), - 'label': ('link', links['label']), - }, - ) + coords: dict[str, Any] = { + 'link': range(len(links['value'])), + 'source': ('link', links['source']), + 'target': ('link', links['target']), + 'label': ('link', links['label']), + } + # Add carrier if present + if 'carrier' in links: + coords['carrier'] = ('link', links['carrier']) + + sankey_ds = xr.Dataset({'value': ('link', links['value'])}, coords=coords) if show is None: show = CONFIG.Plotting.default_show @@ -939,7 +1056,7 @@ def flows( PlotResult with Sankey flow data and figure. """ self._stats._require_solution() - xr_select, flow_filter, bus_filter, component_filter = self._extract_flow_filters(select) + xr_select, flow_filter, bus_filter, component_filter, carrier_filter = self._extract_flow_filters(select) ds = self._stats.flow_hours.copy() @@ -959,7 +1076,7 @@ def flows( if dim in ds.dims: ds = ds.sum(dim=dim) - nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter) + nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter, carrier_filter) fig = self._create_figure(nodes, links, colors, 'Energy Flow', **plotly_kwargs) return self._finalize(fig, links, show) @@ -989,7 +1106,7 @@ def sizes( PlotResult with Sankey size data and figure. """ self._stats._require_solution() - xr_select, flow_filter, bus_filter, component_filter = self._extract_flow_filters(select) + xr_select, flow_filter, bus_filter, component_filter, carrier_filter = self._extract_flow_filters(select) ds = self._stats.sizes.copy() ds = _apply_selection(ds, xr_select) @@ -1004,7 +1121,7 @@ def sizes( valid_labels = [lbl for lbl in ds.data_vars if float(ds[lbl].max()) < max_size] ds = ds[valid_labels] - nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter) + nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter, carrier_filter) fig = self._create_figure(nodes, links, colors, 'Investment Sizes (Capacities)', **plotly_kwargs) return self._finalize(fig, links, show) @@ -1032,7 +1149,7 @@ def peak_flow( PlotResult with Sankey peak flow data and figure. """ self._stats._require_solution() - xr_select, flow_filter, bus_filter, component_filter = self._extract_flow_filters(select) + xr_select, flow_filter, bus_filter, component_filter, carrier_filter = self._extract_flow_filters(select) ds = self._stats.flow_rates.copy() ds = _apply_selection(ds, xr_select) @@ -1042,7 +1159,7 @@ def peak_flow( if dim in ds.dims: ds = ds.max(dim=dim) - nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter) + nodes, links = self._build_flow_links(ds, flow_filter, bus_filter, component_filter, carrier_filter) fig = self._create_figure(nodes, links, colors, 'Peak Flow Rates', **plotly_kwargs) return self._finalize(fig, links, show) @@ -1323,6 +1440,118 @@ def balance( return PlotResult(data=ds, figure=fig) + def carrier_balance( + self, + carrier: str, + *, + select: SelectType | None = None, + include: FilterType | None = None, + exclude: FilterType | None = None, + unit: Literal['flow_rate', 'flow_hours'] = 'flow_rate', + colors: ColorType | None = None, + facet_col: str | None = 'period', + facet_row: str | None = 'scenario', + show: bool | None = None, + **plotly_kwargs: Any, + ) -> PlotResult: + """Plot carrier-level balance showing all flows of a carrier type. + + Shows production (positive) and consumption (negative) of a carrier + across all buses of that carrier type in the system. + + Args: + carrier: Carrier name (e.g., 'heat', 'electricity', 'gas'). + select: xarray-style selection dict. + include: Only include flows containing these substrings. + exclude: Exclude flows containing these substrings. + unit: 'flow_rate' (power) or 'flow_hours' (energy). + colors: Color specification (colorscale name, color list, or label-to-color dict). + facet_col: Dimension for column facets. + facet_row: Dimension for row facets. + show: Whether to display the plot. + + Returns: + PlotResult with .data and .figure. + + Examples: + >>> fs.statistics.plot.carrier_balance('heat') + >>> fs.statistics.plot.carrier_balance('electricity', unit='flow_hours') + + Notes: + - Inputs to carrier buses (from sources/converters) are shown as positive + - Outputs from carrier buses (to sinks/converters) are shown as negative + - Internal transfers between buses of the same carrier appear on both sides + """ + self._stats._require_solution() + carrier = carrier.lower() + + # Find all buses with this carrier + carrier_buses = [bus for bus in self._fs.buses.values() if bus.carrier == carrier] + if not carrier_buses: + raise KeyError(f"No buses found with carrier '{carrier}'") + + # Collect all flows connected to these buses + input_labels: list[str] = [] # Inputs to buses = production + output_labels: list[str] = [] # Outputs from buses = consumption + + for bus in carrier_buses: + for flow in bus.inputs: + input_labels.append(flow.label_full) + for flow in bus.outputs: + output_labels.append(flow.label_full) + + all_labels = input_labels + output_labels + filtered_labels = _filter_by_pattern(all_labels, include, exclude) + if not filtered_labels: + logger.warning(f'No flows remaining after filtering for carrier {carrier}') + return PlotResult(data=xr.Dataset(), figure=go.Figure()) + + # Get data from statistics + if unit == 'flow_rate': + ds = self._stats.flow_rates[[lbl for lbl in filtered_labels if lbl in self._stats.flow_rates]] + else: + ds = self._stats.flow_hours[[lbl for lbl in filtered_labels if lbl in self._stats.flow_hours]] + + # Negate outputs (consumption) - opposite convention from bus balance + for label in output_labels: + if label in ds: + ds[label] = -ds[label] + + ds = _apply_selection(ds, select) + actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) + + # Use component colors for flows + if colors is None: + color_map = {} + uncolored = [] + for label in ds.data_vars: + flow = self._fs.flows.get(label) + if flow: + comp = self._fs.components.get(flow.component) + if comp and comp.color: + color_map[label] = comp.color + continue + uncolored.append(label) + if uncolored: + color_map.update(process_colors(CONFIG.Plotting.default_qualitative_colorscale, uncolored)) + colors = color_map + + fig = _create_stacked_bar( + ds, + colors=colors, + title=f'{carrier.capitalize()} Balance ({unit})', + facet_col=actual_facet_col, + facet_row=actual_facet_row, + **plotly_kwargs, + ) + + if show is None: + show = CONFIG.Plotting.default_show + if show: + fig.show() + + return PlotResult(data=ds, figure=fig) + def heatmap( self, variables: str | list[str], diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py index ca61a7a23..db16e186a 100644 --- a/flixopt/topology_accessor.py +++ b/flixopt/topology_accessor.py @@ -67,13 +67,15 @@ def _plot_network( ) for edge in edge_infos.values(): + # Use carrier color if available, otherwise default gray + edge_color = edge.get('carrier_color', '#222831') or '#222831' net.add_edge( edge['start'], edge['end'], label=edge['label'], title=edge['infos'].replace(')', '\n)'), font={'color': '#4D4D4D', 'size': 14}, - color='#222831', + color=edge_color, ) net.barnes_hut(central_gravity=0.8, spring_length=50, spring_strength=0.05, gravity=-10000) @@ -168,15 +170,16 @@ def infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: for node in chain(self._fs.components.values(), self._fs.buses.values()) } - edges = { - flow.label_full: { + edges = {} + for flow in self._fs.flows.values(): + carrier = self._fs.get_carrier(flow.label_full) + edges[flow.label_full] = { 'label': flow.label, 'start': flow.bus if flow.is_input_in_component else flow.component, 'end': flow.component if flow.is_input_in_component else flow.bus, 'infos': flow.__str__(), + 'carrier_color': carrier.color if carrier else None, } - for flow in self._fs.flows.values() - } return nodes, edges @@ -235,6 +238,7 @@ def plot( 'value': [], 'label': [], 'customdata': [], # For hover text + 'color': [], # Carrier-based colors } # Collect node hover info (format repr for HTML display) @@ -263,6 +267,20 @@ def plot( links['label'].append(flow.label_full) links['customdata'].append(repr(flow).replace('\n', '
')) # Flow repr for hover + # Get carrier color for this flow (subtle/semi-transparent) + carrier = self._fs.get_carrier(flow.label_full) + if carrier and carrier.color: + hex_color = carrier.color.lstrip('#') + if len(hex_color) == 6: + r = int(hex_color[0:2], 16) + g = int(hex_color[2:4], 16) + b = int(hex_color[4:6], 16) + links['color'].append(f'rgba({r}, {g}, {b}, 0.4)') + else: + links['color'].append('rgba(200, 200, 200, 0.4)') + else: + links['color'].append('rgba(200, 200, 200, 0.4)') + # Create figure node_list = list(nodes) node_indices = {n: i for i, n in enumerate(node_list)} @@ -302,6 +320,7 @@ def plot( label=links['label'], customdata=links['customdata'], hovertemplate='%{customdata}', + color=links['color'], # Carrier-based colors ), ) ] From 6c88996010d8a588e196db0bbb48ff28076e8b60 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:42:03 +0100 Subject: [PATCH 64/88] Improve carrier color handling --- flixopt/statistics_accessor.py | 55 ++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 5fe6ac568..a6fa4d50b 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -421,6 +421,17 @@ def _require_solution(self) -> xr.Dataset: raise RuntimeError('FlowSystem has no solution. Run optimize() or solve() first.') return self._fs.solution + @property + def carrier_colors(self) -> dict[str, str]: + """Cached mapping of carrier name to color. + + Returns: + Dict mapping carrier names (lowercase) to hex color strings. + """ + if self._carrier_colors is None: + self._carrier_colors = {name: carrier.color for name, carrier in self._fs.carriers.items() if carrier.color} + return self._carrier_colors + @property def plot(self) -> StatisticsPlotAccessor: """Access plotting methods for statistics. @@ -879,6 +890,9 @@ def _build_flow_links( if carrier_filter is not None: carrier_filter = [c.lower() for c in carrier_filter] + # Use flow_rates to get carrier names from xarray attributes (already computed) + flow_rates = self._stats.flow_rates + for flow in self._fs.flows.values(): label = flow.label_full if label not in ds: @@ -892,9 +906,8 @@ def _build_flow_links( if bus_filter is not None and bus_label not in bus_filter: continue - # Get carrier for this flow - carrier = self._fs.get_carrier(label) - carrier_name = carrier.name if carrier else None + # Get carrier name from flow_rates xarray attribute (efficient lookup) + carrier_name = flow_rates[label].attrs.get('carrier') if label in flow_rates else None if carrier_filter is not None: if carrier_name is None or carrier_name.lower() not in carrier_filter: @@ -966,15 +979,18 @@ def _get_node_colors(self, node_list: list[str], colors: ColorType | None) -> li # Get fallback colors from process_colors fallback_colors = process_colors(colors, node_list) + # Use cached carrier colors for efficiency + carrier_colors = self._stats.carrier_colors + node_colors = [] for node in node_list: # Check if node is a bus if node in self._fs.buses: bus = self._fs.buses[node] if bus.carrier: - carrier = self._fs.carriers.get(bus.carrier) - if carrier and carrier.color: - node_colors.append(carrier.color) + color = carrier_colors.get(bus.carrier.lower()) + if color: + node_colors.append(color) continue # Fall back to process_colors node_colors.append(fallback_colors[node]) @@ -986,25 +1002,29 @@ def _get_link_colors(self, carriers: list[str | None]) -> list[str]: if not carriers: return [] + # Use cached carrier colors for efficiency + carrier_colors = self._stats.carrier_colors + default_gray = 'rgba(200, 200, 200, 0.4)' + link_colors = [] for carrier_name in carriers: if carrier_name is None: - link_colors.append('rgba(200, 200, 200, 0.4)') # Default gray + link_colors.append(default_gray) continue - carrier = self._fs.carriers.get(carrier_name) - if carrier and carrier.color: + hex_color = carrier_colors.get(carrier_name.lower() if carrier_name else '') + if hex_color: # Convert hex color to rgba with transparency - hex_color = carrier.color.lstrip('#') + hex_color = hex_color.lstrip('#') if len(hex_color) == 6: r = int(hex_color[0:2], 16) g = int(hex_color[2:4], 16) b = int(hex_color[4:6], 16) link_colors.append(f'rgba({r}, {g}, {b}, 0.4)') else: - link_colors.append('rgba(200, 200, 200, 0.4)') + link_colors.append(default_gray) else: - link_colors.append('rgba(200, 200, 200, 0.4)') + link_colors.append(default_gray) return link_colors @@ -1290,7 +1310,7 @@ def _get_color_map_for_balance(self, node: str, flow_labels: list[str]) -> dict[ """Build color map for balance plot. - Bus balance: colors from component.color - - Component balance: colors from flow's carrier + - Component balance: colors from flow's carrier (using cached carrier_colors) Raises: RuntimeError: If FlowSystem is not connected_and_transformed. @@ -1304,12 +1324,17 @@ def _get_color_map_for_balance(self, node: str, flow_labels: list[str]) -> dict[ color_map = {} uncolored = [] + # Get cached carrier colors for efficient lookup + carrier_colors = self._stats.carrier_colors + flow_rates = self._stats.flow_rates + for label in flow_labels: if is_bus: color = self._fs.components[self._fs.flows[label].component].color else: - carrier = self._fs.get_carrier(label) # get_carrier accepts flow labels - color = carrier.color if carrier else None + # Use carrier name from xarray attribute (already computed) + cached colors + carrier_name = flow_rates[label].attrs.get('carrier') if label in flow_rates else None + color = carrier_colors.get(carrier_name) if carrier_name else None if color: color_map[label] = color From 8c16baa50f4a478157f17fd90aae58d8de9d6740 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:52:51 +0100 Subject: [PATCH 65/88] Improve carrier color handling 1. Centralized Hex Color Handling in color_processing.py 2. Simplified Carrier Retrieval in flow_system.py 3. Updated statistics_accessor.py 4. Updated topology_accessor.py --- flixopt/color_processing.py | 31 +++++++++++++++++++++++++++++++ flixopt/flow_system.py | 28 ++++++++++++++++++++++++++++ flixopt/statistics_accessor.py | 28 ++++++---------------------- flixopt/topology_accessor.py | 29 +++++++++++++++-------------- 4 files changed, 80 insertions(+), 36 deletions(-) diff --git a/flixopt/color_processing.py b/flixopt/color_processing.py index f6e9a3b9f..624ffa83f 100644 --- a/flixopt/color_processing.py +++ b/flixopt/color_processing.py @@ -109,6 +109,37 @@ def _rgb_string_to_hex(color: str) -> str: return color +def hex_to_rgba(hex_color: str, alpha: float = 1.0) -> str: + """Convert hex color to RGBA string format. + + Args: + hex_color: Color in hex format '#RRGGBB' or 'RRGGBB'. + alpha: Alpha/opacity value between 0.0 and 1.0. + + Returns: + Color in RGBA format 'rgba(R, G, B, A)'. + + Examples: + >>> hex_to_rgba('#FF0000') + 'rgba(255, 0, 0, 1.0)' + >>> hex_to_rgba('#FF0000', 0.5) + 'rgba(255, 0, 0, 0.5)' + >>> hex_to_rgba('invalid') + 'rgba(200, 200, 200, 1.0)' + """ + try: + hex_color = hex_color.lstrip('#') + if len(hex_color) == 6: + r = int(hex_color[0:2], 16) + g = int(hex_color[2:4], 16) + b = int(hex_color[4:6], 16) + return f'rgba({r}, {g}, {b}, {alpha})' + except (ValueError, AttributeError): + pass + # Fallback to gray + return f'rgba(200, 200, 200, {alpha})' + + def process_colors( colors: None | str | list[str] | dict[str, str], labels: list[str], diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index 763aeac9f..eea13612a 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -223,6 +223,9 @@ def __init__( # Carrier container - local carriers override CONFIG.Carriers self._carriers: CarrierContainer = CarrierContainer() + # Cached flow→carrier mapping (built lazily after connect_and_transform) + self._flow_carriers: dict[str, str] | None = None + # Use properties to validate and store scenario dimension settings self.scenario_independent_sizes = scenario_independent_sizes self.scenario_independent_flow_rates = scenario_independent_flow_rates @@ -1187,6 +1190,31 @@ def carriers(self) -> CarrierContainer: """Carriers registered on this FlowSystem.""" return self._carriers + @property + def flow_carriers(self) -> dict[str, str]: + """Cached mapping of flow labels to carrier names. + + Returns: + Dict mapping flow label to carrier name (lowercase). + Flows without a carrier are not included. + + Raises: + RuntimeError: If FlowSystem is not connected_and_transformed. + """ + if not self.connected_and_transformed: + raise RuntimeError( + 'FlowSystem is not connected_and_transformed. Call FlowSystem.connect_and_transform() first.' + ) + + if self._flow_carriers is None: + self._flow_carriers = {} + for flow_label, flow in self.flows.items(): + bus = self.buses.get(flow.bus) + if bus and bus.carrier: + self._flow_carriers[flow_label] = bus.carrier.lower() + + return self._flow_carriers + def create_model(self, normalize_weights: bool = True) -> FlowSystemModel: """ Create a linopy model from the FlowSystem. diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index a6fa4d50b..df0c9bf84 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -30,7 +30,7 @@ import plotly.graph_objects as go import xarray as xr -from .color_processing import ColorType, process_colors +from .color_processing import ColorType, hex_to_rgba, process_colors from .config import CONFIG if TYPE_CHECKING: @@ -457,13 +457,13 @@ def flow_rates(self) -> xr.Dataset: self._require_solution() if self._flow_rates is None: flow_rate_vars = [v for v in self._fs.solution.data_vars if v.endswith('|flow_rate')] + flow_carriers = self._fs.flow_carriers # Cached lookup data_vars = {} for v in flow_rate_vars: flow_label = v.replace('|flow_rate', '') da = self._fs.solution[v].copy() - # Add carrier as attribute - carrier = self._fs.get_carrier(flow_label) - da.attrs['carrier'] = carrier.name if carrier else None + # Add carrier as attribute (from cached mapping) + da.attrs['carrier'] = flow_carriers.get(flow_label) data_vars[flow_label] = da self._flow_rates = xr.Dataset(data_vars) return self._flow_rates @@ -1004,27 +1004,11 @@ def _get_link_colors(self, carriers: list[str | None]) -> list[str]: # Use cached carrier colors for efficiency carrier_colors = self._stats.carrier_colors - default_gray = 'rgba(200, 200, 200, 0.4)' link_colors = [] for carrier_name in carriers: - if carrier_name is None: - link_colors.append(default_gray) - continue - - hex_color = carrier_colors.get(carrier_name.lower() if carrier_name else '') - if hex_color: - # Convert hex color to rgba with transparency - hex_color = hex_color.lstrip('#') - if len(hex_color) == 6: - r = int(hex_color[0:2], 16) - g = int(hex_color[2:4], 16) - b = int(hex_color[4:6], 16) - link_colors.append(f'rgba({r}, {g}, {b}, 0.4)') - else: - link_colors.append(default_gray) - else: - link_colors.append(default_gray) + hex_color = carrier_colors.get(carrier_name.lower()) if carrier_name else None + link_colors.append(hex_to_rgba(hex_color, alpha=0.4) if hex_color else hex_to_rgba('', alpha=0.4)) return link_colors diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py index db16e186a..dcca76a81 100644 --- a/flixopt/topology_accessor.py +++ b/flixopt/topology_accessor.py @@ -15,7 +15,7 @@ import plotly.graph_objects as go -from .color_processing import ColorType, process_colors +from .color_processing import ColorType, hex_to_rgba, process_colors from .config import CONFIG, DEPRECATION_REMOVAL_VERSION if TYPE_CHECKING: @@ -170,9 +170,14 @@ def infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: for node in chain(self._fs.components.values(), self._fs.buses.values()) } + # Use cached flow_carriers for efficient carrier lookup + flow_carriers = self._fs.flow_carriers + carriers = self._fs.carriers + edges = {} for flow in self._fs.flows.values(): - carrier = self._fs.get_carrier(flow.label_full) + carrier_name = flow_carriers.get(flow.label_full) + carrier = carriers.get(carrier_name) if carrier_name else None edges[flow.label_full] = { 'label': flow.label, 'start': flow.bus if flow.is_input_in_component else flow.component, @@ -248,6 +253,10 @@ def plot( for bus in self._fs.buses.values(): node_hover[bus.label] = repr(bus).replace('\n', '
') + # Use cached flow_carriers for efficient carrier lookup + flow_carriers = self._fs.flow_carriers + carriers = self._fs.carriers + for flow in self._fs.flows.values(): bus_label = flow.bus comp_label = flow.component @@ -268,18 +277,10 @@ def plot( links['customdata'].append(repr(flow).replace('\n', '
')) # Flow repr for hover # Get carrier color for this flow (subtle/semi-transparent) - carrier = self._fs.get_carrier(flow.label_full) - if carrier and carrier.color: - hex_color = carrier.color.lstrip('#') - if len(hex_color) == 6: - r = int(hex_color[0:2], 16) - g = int(hex_color[2:4], 16) - b = int(hex_color[4:6], 16) - links['color'].append(f'rgba({r}, {g}, {b}, 0.4)') - else: - links['color'].append('rgba(200, 200, 200, 0.4)') - else: - links['color'].append('rgba(200, 200, 200, 0.4)') + carrier_name = flow_carriers.get(flow.label_full) + carrier = carriers.get(carrier_name) if carrier_name else None + color = carrier.color if carrier and carrier.color else None + links['color'].append(hex_to_rgba(color, alpha=0.4) if color else hex_to_rgba('', alpha=0.4)) # Create figure node_list = list(nodes) From 45891533b8c68e86432ca165d3f48fafc5015c9d Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:57:53 +0100 Subject: [PATCH 66/88] Make color handling more robust Uses matplotlib.colors.to_rgba() under the hood, which handles all standard color formats that ma --- flixopt/color_processing.py | 54 ++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 16 deletions(-) diff --git a/flixopt/color_processing.py b/flixopt/color_processing.py index 624ffa83f..62d8a9542 100644 --- a/flixopt/color_processing.py +++ b/flixopt/color_processing.py @@ -109,35 +109,57 @@ def _rgb_string_to_hex(color: str) -> str: return color -def hex_to_rgba(hex_color: str, alpha: float = 1.0) -> str: - """Convert hex color to RGBA string format. +def color_to_rgba(color: str | None, alpha: float = 1.0) -> str: + """Convert any valid color to RGBA string format. + + Handles hex colors (with or without #), named colors, and rgb/rgba strings. Args: - hex_color: Color in hex format '#RRGGBB' or 'RRGGBB'. + color: Color in any valid format (hex '#FF0000' or 'FF0000', + named 'red', rgb 'rgb(255,0,0)', rgba 'rgba(255,0,0,1)'). alpha: Alpha/opacity value between 0.0 and 1.0. Returns: Color in RGBA format 'rgba(R, G, B, A)'. Examples: - >>> hex_to_rgba('#FF0000') + >>> color_to_rgba('#FF0000') + 'rgba(255, 0, 0, 1.0)' + >>> color_to_rgba('FF0000') 'rgba(255, 0, 0, 1.0)' - >>> hex_to_rgba('#FF0000', 0.5) + >>> color_to_rgba('red', 0.5) 'rgba(255, 0, 0, 0.5)' - >>> hex_to_rgba('invalid') + >>> color_to_rgba('forestgreen', 0.4) + 'rgba(34, 139, 34, 0.4)' + >>> color_to_rgba(None) 'rgba(200, 200, 200, 1.0)' """ + if not color: + return f'rgba(200, 200, 200, {alpha})' + try: - hex_color = hex_color.lstrip('#') - if len(hex_color) == 6: - r = int(hex_color[0:2], 16) - g = int(hex_color[2:4], 16) - b = int(hex_color[4:6], 16) - return f'rgba({r}, {g}, {b}, {alpha})' - except (ValueError, AttributeError): - pass - # Fallback to gray - return f'rgba(200, 200, 200, {alpha})' + # Use matplotlib's robust color conversion (handles hex, named, etc.) + rgba = mcolors.to_rgba(color) + except ValueError: + # Try adding # prefix for bare hex colors (e.g., 'FF0000' -> '#FF0000') + if len(color) == 6 and all(c in '0123456789ABCDEFabcdef' for c in color): + try: + rgba = mcolors.to_rgba(f'#{color}') + except ValueError: + return f'rgba(200, 200, 200, {alpha})' + else: + return f'rgba(200, 200, 200, {alpha})' + except TypeError: + return f'rgba(200, 200, 200, {alpha})' + + r = int(round(rgba[0] * 255)) + g = int(round(rgba[1] * 255)) + b = int(round(rgba[2] * 255)) + return f'rgba({r}, {g}, {b}, {alpha})' + + +# Alias for backwards compatibility +hex_to_rgba = color_to_rgba def process_colors( From d8e87d9eb657b9986662c7cc952a65d3c4fd3b9a Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:22:28 +0100 Subject: [PATCH 67/88] Summary of Changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. flow_system.py - Added self._topology: TopologyAccessor | None = None in __init__ - Changed topology property to cache the accessor (like statistics) - Added self._topology = None in _invalidate_model() for invalidation on structure changes 2. topology_accessor.py - Added cached color properties in __init__: - _carrier_colors - _component_colors - _bus_colors - Added three new properties: - carrier_colors - maps carrier name → hex color - component_colors - maps component label → hex color - bus_colors - maps bus label → hex color (from carrier) - Updated infos() and plot() to use cached colors 3. statistics_accessor.py - Removed _carrier_colors from __init__ - Changed carrier_colors to delegate to self._fs.topology.carrier_colors - Added component_colors and bus_colors properties (delegating to topology) - Updated _get_color_map_for_balance() to use cached component_colors - Updated carrier_balance() to use cached component_colors Architecture FlowSystem └── topology (cached TopologyAccessor) ├── carrier_colors ─┐ ├── component_colors ├── Cached once, invalidated on structure change └── bus_colors ─┘ └── statistics (cached StatisticsAccessor) ├── carrier_colors ─┐ ├── component_colors ├── Delegates to topology └── bus_colors ─┘ All 79 tests pass. --- flixopt/flow_system.py | 18 +++++-- flixopt/statistics_accessor.py | 47 +++++++++++++---- flixopt/topology_accessor.py | 96 +++++++++++++++++++++++++++++----- 3 files changed, 131 insertions(+), 30 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index eea13612a..fb37fb002 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -220,6 +220,9 @@ def __init__( # Statistics accessor cache - lazily initialized, invalidated on new solution self._statistics: StatisticsAccessor | None = None + # Topology accessor cache - lazily initialized, invalidated on structure change + self._topology: TopologyAccessor | None = None + # Carrier container - local carriers override CONFIG.Carriers self._carriers: CarrierContainer = CarrierContainer() @@ -1369,7 +1372,8 @@ def _invalidate_model(self) -> None: """Invalidate the model and element submodels when structure changes. This clears the model, resets the ``connected_and_transformed`` flag, - and clears all element submodels and variable/constraint names. + clears all element submodels and variable/constraint names, and invalidates + the topology accessor cache. Called internally by :meth:`add_elements`, :meth:`add_carriers`, :meth:`reset`, and :meth:`invalidate`. @@ -1380,6 +1384,7 @@ def _invalidate_model(self) -> None: """ self.model = None self._connected_and_transformed = False + self._topology = None # Invalidate topology accessor (and its cached colors) for element in self.values(): element.submodel = None element._variable_names = [] @@ -1537,11 +1542,12 @@ def topology(self) -> TopologyAccessor: """ Access network topology inspection and visualization methods. - This property returns a TopologyAccessor that provides methods to inspect - the network structure and visualize it. + This property returns a cached TopologyAccessor that provides methods to inspect + the network structure and visualize it. The accessor is invalidated when the + FlowSystem structure changes (via reset() or invalidate()). Returns: - A TopologyAccessor instance. + A cached TopologyAccessor instance. Examples: Visualize the network: @@ -1559,7 +1565,9 @@ def topology(self) -> TopologyAccessor: >>> nodes, edges = flow_system.topology.infos() """ - return TopologyAccessor(self) + if self._topology is None: + self._topology = TopologyAccessor(self) + return self._topology def plot_network( self, diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index df0c9bf84..6113cedc9 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -411,7 +411,6 @@ def __init__(self, flow_system: FlowSystem) -> None: self._temporal_effects: xr.Dataset | None = None self._periodic_effects: xr.Dataset | None = None self._total_effects: xr.Dataset | None = None - self._carrier_colors: dict[str, str] | None = None # Plotting accessor (lazy) self._plot: StatisticsPlotAccessor | None = None @@ -425,12 +424,34 @@ def _require_solution(self) -> xr.Dataset: def carrier_colors(self) -> dict[str, str]: """Cached mapping of carrier name to color. + Delegates to topology accessor for centralized color caching. + Returns: Dict mapping carrier names (lowercase) to hex color strings. """ - if self._carrier_colors is None: - self._carrier_colors = {name: carrier.color for name, carrier in self._fs.carriers.items() if carrier.color} - return self._carrier_colors + return self._fs.topology.carrier_colors + + @property + def component_colors(self) -> dict[str, str]: + """Cached mapping of component label to color. + + Delegates to topology accessor for centralized color caching. + + Returns: + Dict mapping component labels to hex color strings. + """ + return self._fs.topology.component_colors + + @property + def bus_colors(self) -> dict[str, str]: + """Cached mapping of bus label to color (from carrier). + + Delegates to topology accessor for centralized color caching. + + Returns: + Dict mapping bus labels to hex color strings. + """ + return self._fs.topology.bus_colors @property def plot(self) -> StatisticsPlotAccessor: @@ -1293,7 +1314,7 @@ def sankey(self) -> SankeyPlotAccessor: def _get_color_map_for_balance(self, node: str, flow_labels: list[str]) -> dict[str, str]: """Build color map for balance plot. - - Bus balance: colors from component.color + - Bus balance: colors from component.color (using cached component_colors) - Component balance: colors from flow's carrier (using cached carrier_colors) Raises: @@ -1308,13 +1329,16 @@ def _get_color_map_for_balance(self, node: str, flow_labels: list[str]) -> dict[ color_map = {} uncolored = [] - # Get cached carrier colors for efficient lookup + # Get cached colors for efficient lookup carrier_colors = self._stats.carrier_colors + component_colors = self._stats.component_colors flow_rates = self._stats.flow_rates for label in flow_labels: if is_bus: - color = self._fs.components[self._fs.flows[label].component].color + # Use cached component colors + comp_label = self._fs.flows[label].component + color = component_colors.get(comp_label) else: # Use carrier name from xarray attribute (already computed) + cached colors carrier_name = flow_rates[label].attrs.get('carrier') if label in flow_rates else None @@ -1529,16 +1553,17 @@ def carrier_balance( ds = _apply_selection(ds, select) actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row) - # Use component colors for flows + # Use cached component colors for flows if colors is None: + component_colors = self._stats.component_colors color_map = {} uncolored = [] for label in ds.data_vars: flow = self._fs.flows.get(label) if flow: - comp = self._fs.components.get(flow.component) - if comp and comp.color: - color_map[label] = comp.color + color = component_colors.get(flow.component) + if color: + color_map[label] = color continue uncolored.append(label) if uncolored: diff --git a/flixopt/topology_accessor.py b/flixopt/topology_accessor.py index dcca76a81..191806e6c 100644 --- a/flixopt/topology_accessor.py +++ b/flixopt/topology_accessor.py @@ -140,6 +140,67 @@ def __init__(self, flow_system: FlowSystem) -> None: """ self._fs = flow_system + # Cached color mappings (lazily initialized) + self._carrier_colors: dict[str, str] | None = None + self._component_colors: dict[str, str] | None = None + self._bus_colors: dict[str, str] | None = None + + @property + def carrier_colors(self) -> dict[str, str]: + """Cached mapping of carrier name to hex color. + + Returns: + Dict mapping carrier names (lowercase) to hex color strings. + Only carriers with a color defined are included. + + Examples: + >>> fs.topology.carrier_colors + {'electricity': '#FECB52', 'heat': '#D62728', 'gas': '#1F77B4'} + """ + if self._carrier_colors is None: + self._carrier_colors = {name: carrier.color for name, carrier in self._fs.carriers.items() if carrier.color} + return self._carrier_colors + + @property + def component_colors(self) -> dict[str, str]: + """Cached mapping of component label to hex color. + + Returns: + Dict mapping component labels to hex color strings. + Only components with a color defined are included. + + Examples: + >>> fs.topology.component_colors + {'Boiler': '#1f77b4', 'CHP': '#ff7f0e', 'HeatPump': '#2ca02c'} + """ + if self._component_colors is None: + self._component_colors = {label: comp.color for label, comp in self._fs.components.items() if comp.color} + return self._component_colors + + @property + def bus_colors(self) -> dict[str, str]: + """Cached mapping of bus label to hex color (from carrier). + + Bus colors are derived from their associated carrier's color. + + Returns: + Dict mapping bus labels to hex color strings. + Only buses with a carrier that has a color defined are included. + + Examples: + >>> fs.topology.bus_colors + {'ElectricityBus': '#FECB52', 'HeatBus': '#D62728'} + """ + if self._bus_colors is None: + carrier_colors = self.carrier_colors + self._bus_colors = {} + for label, bus in self._fs.buses.items(): + if bus.carrier: + color = carrier_colors.get(bus.carrier.lower()) + if color: + self._bus_colors[label] = color + return self._bus_colors + def infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: """ Get network topology information as dictionaries. @@ -170,20 +231,19 @@ def infos(self) -> tuple[dict[str, dict[str, str]], dict[str, dict[str, str]]]: for node in chain(self._fs.components.values(), self._fs.buses.values()) } - # Use cached flow_carriers for efficient carrier lookup + # Use cached colors for efficient lookup flow_carriers = self._fs.flow_carriers - carriers = self._fs.carriers + carrier_colors = self.carrier_colors edges = {} for flow in self._fs.flows.values(): carrier_name = flow_carriers.get(flow.label_full) - carrier = carriers.get(carrier_name) if carrier_name else None edges[flow.label_full] = { 'label': flow.label, 'start': flow.bus if flow.is_input_in_component else flow.component, 'end': flow.component if flow.is_input_in_component else flow.bus, 'infos': flow.__str__(), - 'carrier_color': carrier.color if carrier else None, + 'carrier_color': carrier_colors.get(carrier_name) if carrier_name else None, } return nodes, edges @@ -253,9 +313,9 @@ def plot( for bus in self._fs.buses.values(): node_hover[bus.label] = repr(bus).replace('\n', '
') - # Use cached flow_carriers for efficient carrier lookup + # Use cached colors for efficient lookup flow_carriers = self._fs.flow_carriers - carriers = self._fs.carriers + carrier_colors = self.carrier_colors for flow in self._fs.flows.values(): bus_label = flow.bus @@ -276,27 +336,35 @@ def plot( links['label'].append(flow.label_full) links['customdata'].append(repr(flow).replace('\n', '
')) # Flow repr for hover - # Get carrier color for this flow (subtle/semi-transparent) + # Get carrier color for this flow (subtle/semi-transparent) using cached colors carrier_name = flow_carriers.get(flow.label_full) - carrier = carriers.get(carrier_name) if carrier_name else None - color = carrier.color if carrier and carrier.color else None + color = carrier_colors.get(carrier_name) if carrier_name else None links['color'].append(hex_to_rgba(color, alpha=0.4) if color else hex_to_rgba('', alpha=0.4)) # Create figure node_list = list(nodes) node_indices = {n: i for i, n in enumerate(node_list)} - # Get colors for buses only, then apply to all nodes - bus_labels = [bus.label for bus in self._fs.buses.values()] - bus_color_map = process_colors(colors, bus_labels) + # Get colors for buses and components using cached colors + bus_colors_cached = self.bus_colors + component_colors_cached = self.component_colors + + # If user provided colors, process them for buses + if colors is not None: + bus_labels = [bus.label for bus in self._fs.buses.values()] + bus_color_map = process_colors(colors, bus_labels) + else: + bus_color_map = bus_colors_cached - # Assign colors to nodes: buses get their color, components get a neutral gray + # Assign colors to nodes: buses get their color, components get their color or neutral gray node_colors = [] for node in node_list: if node in bus_color_map: node_colors.append(bus_color_map[node]) + elif node in component_colors_cached: + node_colors.append(component_colors_cached[node]) else: - # Component - use a neutral gray + # Fallback - use a neutral gray node_colors.append('#808080') # Build hover text for nodes From 7876f12df240493e2e59f3cfc8616bd8a41c3f9d Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:26:23 +0100 Subject: [PATCH 68/88] Use chached properties in plots --- flixopt/statistics_accessor.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/flixopt/statistics_accessor.py b/flixopt/statistics_accessor.py index 6113cedc9..f1c02c1b9 100644 --- a/flixopt/statistics_accessor.py +++ b/flixopt/statistics_accessor.py @@ -996,25 +996,21 @@ def _create_figure( return fig def _get_node_colors(self, node_list: list[str], colors: ColorType | None) -> list[str]: - """Get colors for nodes: buses use carrier colors, components use process_colors.""" + """Get colors for nodes: buses use cached bus_colors, components use process_colors.""" # Get fallback colors from process_colors fallback_colors = process_colors(colors, node_list) - # Use cached carrier colors for efficiency - carrier_colors = self._stats.carrier_colors + # Use cached bus colors for efficiency + bus_colors = self._stats.bus_colors node_colors = [] for node in node_list: - # Check if node is a bus - if node in self._fs.buses: - bus = self._fs.buses[node] - if bus.carrier: - color = carrier_colors.get(bus.carrier.lower()) - if color: - node_colors.append(color) - continue - # Fall back to process_colors - node_colors.append(fallback_colors[node]) + # Check if node is a bus with a cached color + if node in bus_colors: + node_colors.append(bus_colors[node]) + else: + # Fall back to process_colors + node_colors.append(fallback_colors[node]) return node_colors From f8c81b6db08e94a15154a147822e5f7d67b550ec Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:43:05 +0100 Subject: [PATCH 69/88] Added script to create systems for notbeook showing results --- .../data/generate_example_systems.py | 307 ++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 docs/notebooks/data/generate_example_systems.py diff --git a/docs/notebooks/data/generate_example_systems.py b/docs/notebooks/data/generate_example_systems.py new file mode 100644 index 000000000..6c9cda264 --- /dev/null +++ b/docs/notebooks/data/generate_example_systems.py @@ -0,0 +1,307 @@ +"""Generate example FlowSystem files for the plotting notebook. + +This script creates three FlowSystems of varying complexity: +1. simple_system - Basic heat system (boiler + storage + sink) +2. complex_system - Multi-carrier with multiple effects and piecewise efficiency +3. multiperiod_system - System with periods and scenarios + +Run this script to regenerate the example data files. +""" + +from pathlib import Path + +import numpy as np +import pandas as pd + +import flixopt as fx + +# Output directory (same as this script) +OUTPUT_DIR = Path(__file__).parent + + +def create_simple_system() -> fx.FlowSystem: + """Create a simple heat system with boiler, storage, and demand. + + Components: + - Gas boiler (150 kW) + - Thermal storage (500 kWh) + - Office heat demand + + One week, hourly resolution. + """ + # One week, hourly + timesteps = pd.date_range('2024-01-15', periods=168, freq='h') + + # Create demand pattern + hours = np.arange(168) + hour_of_day = hours % 24 + day_of_week = (hours // 24) % 7 + + base_demand = np.where((hour_of_day >= 7) & (hour_of_day <= 18), 80, 30) + weekend_factor = np.where(day_of_week >= 5, 0.5, 1.0) + + np.random.seed(42) + heat_demand = base_demand * weekend_factor + np.random.normal(0, 5, len(hours)) + heat_demand = np.clip(heat_demand, 20, 100) + + # Time-varying gas price + gas_price = np.where((hour_of_day >= 6) & (hour_of_day <= 22), 0.08, 0.05) + + fs = fx.FlowSystem(timesteps) + fs.add_elements( + fx.Bus('Gas', carrier='gas'), + fx.Bus('Heat', carrier='heat'), + fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True), + fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=500, effects_per_flow_hour=gas_price)]), + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.92, + thermal_flow=fx.Flow('Heat', bus='Heat', size=150), + fuel_flow=fx.Flow('Gas', bus='Gas'), + ), + fx.Storage( + 'ThermalStorage', + capacity_in_flow_hours=500, + initial_charge_state=250, + minimal_final_charge_state=200, + eta_charge=0.98, + eta_discharge=0.98, + relative_loss_per_hour=0.005, + charging=fx.Flow('Charge', bus='Heat', size=100), + discharging=fx.Flow('Discharge', bus='Heat', size=100), + ), + fx.Sink('Office', inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand)]), + ) + return fs + + +def create_complex_system() -> fx.FlowSystem: + """Create a complex multi-carrier system with multiple effects. + + Components: + - Gas grid (with CO2 emissions) + - Electricity grid (with time-varying price and CO2) + - CHP with piecewise efficiency + - Heat pump + - Gas boiler (backup) + - Thermal storage + - Heat demand + + Effects: costs (objective), CO2 + + Three days, hourly resolution. + """ + timesteps = pd.date_range('2024-06-01', periods=72, freq='h') + hours = np.arange(72) + hour_of_day = hours % 24 + + # Demand profiles + np.random.seed(123) + heat_demand = 50 + 30 * np.sin(2 * np.pi * hour_of_day / 24 - np.pi / 2) + np.random.normal(0, 5, 72) + heat_demand = np.clip(heat_demand, 20, 100) + + electricity_demand = 20 + 15 * np.sin(2 * np.pi * hour_of_day / 24) + np.random.normal(0, 3, 72) + electricity_demand = np.clip(electricity_demand, 10, 50) + + # Price profiles + electricity_price = np.where((hour_of_day >= 8) & (hour_of_day <= 20), 0.25, 0.12) + gas_price = 0.06 + + # CO2 factors (kg/kWh) + electricity_co2 = np.where((hour_of_day >= 8) & (hour_of_day <= 20), 0.4, 0.3) # Higher during peak + gas_co2 = 0.2 + + fs = fx.FlowSystem(timesteps) + fs.add_elements( + # Buses + fx.Bus('Gas', carrier='gas'), + fx.Bus('Electricity', carrier='electricity'), + fx.Bus('Heat', carrier='heat'), + # Effects + fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True), + fx.Effect('CO2', 'kg', 'CO2 Emissions'), + # Gas supply + fx.Source( + 'GasGrid', + outputs=[fx.Flow('Gas', bus='Gas', size=300, effects_per_flow_hour={'costs': gas_price, 'CO2': gas_co2})], + ), + # Electricity grid (import and export) + fx.Source( + 'ElectricityImport', + outputs=[ + fx.Flow( + 'El', + bus='Electricity', + size=100, + effects_per_flow_hour={'costs': electricity_price, 'CO2': electricity_co2}, + ) + ], + ), + fx.Sink( + 'ElectricityExport', + inputs=[ + fx.Flow('El', bus='Electricity', size=50, effects_per_flow_hour={'costs': -electricity_price * 0.8}) + ], + ), + # CHP with piecewise efficiency (efficiency varies with load) + fx.LinearConverter( + 'CHP', + inputs=[fx.Flow('Gas', bus='Gas')], + outputs=[fx.Flow('El', bus='Electricity'), fx.Flow('Heat', bus='Heat')], + piecewise_conversion=fx.PiecewiseConversion( + { + 'Gas': fx.Piecewise( + [ + fx.Piece(start=80, end=160), # Part load + fx.Piece(start=160, end=200), # Full load + ] + ), + 'El': fx.Piecewise( + [ + fx.Piece(start=25, end=60), # ~31-38% electrical efficiency + fx.Piece(start=60, end=80), # ~38-40% electrical efficiency + ] + ), + 'Heat': fx.Piecewise( + [ + fx.Piece(start=35, end=70), # ~44% thermal efficiency + fx.Piece(start=70, end=85), # ~43% thermal efficiency + ] + ), + } + ), + status_parameters=fx.StatusParameters(effects_per_active_hour={'costs': 2}), + ), + # Heat pump + fx.linear_converters.HeatPump( + 'HeatPump', + thermal_flow=fx.Flow('Heat', bus='Heat', size=40), + electrical_flow=fx.Flow('El', bus='Electricity'), + cop=3.5, + ), + # Backup boiler + fx.linear_converters.Boiler( + 'BackupBoiler', + thermal_flow=fx.Flow('Heat', bus='Heat', size=80), + fuel_flow=fx.Flow('Gas', bus='Gas'), + thermal_efficiency=0.90, + ), + # Thermal storage + fx.Storage( + 'HeatStorage', + capacity_in_flow_hours=200, + initial_charge_state=100, + eta_charge=0.95, + eta_discharge=0.95, + charging=fx.Flow('Charge', bus='Heat', size=50), + discharging=fx.Flow('Discharge', bus='Heat', size=50), + ), + # Demands + fx.Sink('HeatDemand', inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand)]), + fx.Sink( + 'ElDemand', inputs=[fx.Flow('El', bus='Electricity', size=1, fixed_relative_profile=electricity_demand)] + ), + ) + return fs + + +def create_multiperiod_system() -> fx.FlowSystem: + """Create a system with multiple periods and scenarios. + + Same structure as simple system but with: + - 3 planning periods (years 2024, 2025, 2026) + - 2 scenarios (high demand, low demand) + + Each period: 48 hours (2 days representative) + """ + timesteps = pd.date_range('2024-01-01', periods=48, freq='h') + hour_of_day = np.arange(48) % 24 + + # Period definitions (years) + periods = pd.Index([2024, 2025, 2026], name='period') + + # Scenario definitions + scenarios = pd.Index(['high_demand', 'low_demand'], name='scenario') + scenario_weights = np.array([0.3, 0.7]) + + # Base demand pattern (hourly) + base_pattern = np.where((hour_of_day >= 7) & (hour_of_day <= 18), 80.0, 35.0) + + # Scenario-specific scaling + np.random.seed(42) + high_demand = base_pattern * 1.2 + np.random.normal(0, 5, 48) + low_demand = base_pattern * 0.85 + np.random.normal(0, 3, 48) + + # Create DataFrame with scenario columns + heat_demand = pd.DataFrame( + { + 'high_demand': np.clip(high_demand, 20, 120), + 'low_demand': np.clip(low_demand, 15, 90), + }, + index=timesteps, + ) + + # Gas price varies by period (rising costs) + gas_prices = np.array([0.06, 0.08, 0.10]) # Per period + + fs = fx.FlowSystem( + timesteps, + periods=periods, + scenarios=scenarios, + scenario_weights=scenario_weights, + ) + + fs.add_elements( + fx.Bus('Gas', carrier='gas'), + fx.Bus('Heat', carrier='heat'), + fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True), + fx.Source('GasGrid', outputs=[fx.Flow('Gas', bus='Gas', size=500, effects_per_flow_hour=gas_prices)]), + fx.linear_converters.Boiler( + 'Boiler', + thermal_efficiency=0.92, + thermal_flow=fx.Flow('Heat', bus='Heat', size=200), + fuel_flow=fx.Flow('Gas', bus='Gas'), + ), + fx.Storage( + 'ThermalStorage', + capacity_in_flow_hours=300, + initial_charge_state=150, + eta_charge=0.98, + eta_discharge=0.98, + charging=fx.Flow('Charge', bus='Heat', size=80), + discharging=fx.Flow('Discharge', bus='Heat', size=80), + ), + fx.Sink('Building', inputs=[fx.Flow('Heat', bus='Heat', size=1, fixed_relative_profile=heat_demand)]), + ) + return fs + + +def main(): + """Generate all example systems and save to netCDF.""" + solver = fx.solvers.HighsSolver(log_to_console=False) + + systems = [ + ('simple_system', create_simple_system), + ('complex_system', create_complex_system), + ('multiperiod_system', create_multiperiod_system), + ] + + for name, create_func in systems: + print(f'Creating {name}...') + fs = create_func() + + print(' Optimizing...') + fs.optimize(solver) + + output_path = OUTPUT_DIR / f'{name}.nc4' + print(f' Saving to {output_path}...') + fs.to_netcdf(output_path, overwrite=True) + + print(f' Done. Objective: {fs.solution["objective"].item():.2f}') + print() + + print('All systems generated successfully!') + + +if __name__ == '__main__': + main() From 5f38a00208610ced30db63515f84f9155e9e00b2 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:47:38 +0100 Subject: [PATCH 70/88] Add notebook for results access --- .../09-plotting-and-data-access.ipynb | 1001 +++++++++++++++++ 1 file changed, 1001 insertions(+) create mode 100644 docs/notebooks/09-plotting-and-data-access.ipynb diff --git a/docs/notebooks/09-plotting-and-data-access.ipynb b/docs/notebooks/09-plotting-and-data-access.ipynb new file mode 100644 index 000000000..e40b3b219 --- /dev/null +++ b/docs/notebooks/09-plotting-and-data-access.ipynb @@ -0,0 +1,1001 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Plotting and Data Access\n", + "\n", + "This notebook provides a comprehensive guide to accessing optimization results and creating visualizations in flixopt.\n", + "\n", + "**Topics covered:**\n", + "- Loading saved FlowSystems from NetCDF files\n", + "- Accessing data (flow rates, sizes, effects, charge states)\n", + "- Time series plots (balance, flows, storage)\n", + "- Aggregated plots (sizes, effects, duration curves)\n", + "- Heatmaps with time reshaping\n", + "- Sankey diagrams\n", + "- Topology visualization\n", + "- Color customization and export" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Setup" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## Generate Example Data\n", + "\n", + "First, run the script that generates three example FlowSystems with solutions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4", + "metadata": {}, + "outputs": [], + "source": [ + "# Run the generation script (only needed once, or to regenerate)\n", + "!python data/generate_example_systems.py" + ] + }, + { + "cell_type": "markdown", + "id": "5", + "metadata": {}, + "source": [ + "## 1. Loading Saved FlowSystems\n", + "\n", + "FlowSystems can be saved to and loaded from NetCDF files, preserving the full structure and solution:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "DATA_DIR = Path('data')\n", + "\n", + "# Load the three example systems\n", + "simple = fx.FlowSystem.from_netcdf(DATA_DIR / 'simple_system.nc4')\n", + "complex_sys = fx.FlowSystem.from_netcdf(DATA_DIR / 'complex_system.nc4')\n", + "multiperiod = fx.FlowSystem.from_netcdf(DATA_DIR / 'multiperiod_system.nc4')\n", + "\n", + "print('Loaded systems:')\n", + "print(f' simple: {len(simple.components)} components, {len(simple.buses)} buses')\n", + "print(f' complex_sys: {len(complex_sys.components)} components, {len(complex_sys.buses)} buses')\n", + "print(f' multiperiod: {len(multiperiod.components)} components, dims={dict(multiperiod.solution.sizes)}')" + ] + }, + { + "cell_type": "markdown", + "id": "7", + "metadata": {}, + "source": [ + "## 2. Data Access via `statistics`\n", + "\n", + "The `statistics` accessor provides convenient access to processed optimization results." + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "### 2.1 Flow Rates\n", + "\n", + "Time series of flow rates (power) for each flow:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "flow_rates = simple.statistics.flow_rates\n", + "print('Flow rates dataset:')\n", + "print(f' Variables: {list(flow_rates.data_vars)}')\n", + "print(f' Dimensions: {dict(flow_rates.sizes)}')\n", + "flow_rates" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "### 2.2 Flow Hours (Energy)\n", + "\n", + "Energy values (flow rate × time step duration):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "flow_hours = simple.statistics.flow_hours\n", + "print('Total energy by flow:')\n", + "for var in flow_hours.data_vars:\n", + " total = flow_hours[var].sum().item()\n", + " print(f' {var}: {total:.1f} kWh')" + ] + }, + { + "cell_type": "markdown", + "id": "12", + "metadata": {}, + "source": [ + "### 2.3 Sizes\n", + "\n", + "Component and flow sizes (capacity values):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "sizes = simple.statistics.sizes\n", + "print('Sizes:')\n", + "sizes" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [ + "### 2.4 Charge States (Storage)\n", + "\n", + "Time series of storage charge levels:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "charge_states = simple.statistics.charge_states\n", + "print('Charge states:')\n", + "charge_states" + ] + }, + { + "cell_type": "markdown", + "id": "16", + "metadata": {}, + "source": [ + "### 2.5 Effects\n", + "\n", + "Effects (costs, emissions, etc.) at different aggregation levels:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "# Temporal effects (per timestep)\n", + "print('Temporal effects (time series):')\n", + "print(simple.statistics.temporal_effects)\n", + "\n", + "# Total effects (scalar)\n", + "print('\\nTotal effects:')\n", + "print(simple.statistics.total_effects)" + ] + }, + { + "cell_type": "markdown", + "id": "18", + "metadata": {}, + "source": [ + "For multi-effect systems:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "print('Complex system effects:')\n", + "print(f' Effects defined: {list(complex_sys.effects.keys())}')\n", + "print('\\nTotal effects:')\n", + "complex_sys.statistics.total_effects" + ] + }, + { + "cell_type": "markdown", + "id": "20", + "metadata": {}, + "source": [ + "### 2.6 Cached Colors\n", + "\n", + "Colors are cached for consistent visualization:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "print('Carrier colors:', simple.topology.carrier_colors)\n", + "print('Bus colors:', simple.topology.bus_colors)\n", + "print('Component colors:', simple.topology.component_colors)" + ] + }, + { + "cell_type": "markdown", + "id": "22", + "metadata": {}, + "source": [ + "## 3. Time Series Plots" + ] + }, + { + "cell_type": "markdown", + "id": "23", + "metadata": {}, + "source": [ + "### 3.1 Balance Plot\n", + "\n", + "Shows inflows and outflows for a bus or component:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "# Bus balance (all flows connected to a bus)\n", + "simple.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "# Component balance (all flows of a component)\n", + "simple.statistics.plot.balance('ThermalStorage')" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "### 3.2 Carrier Balance\n", + "\n", + "Shows all flows of a specific carrier across the system:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "complex_sys.statistics.plot.carrier_balance('heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "complex_sys.statistics.plot.carrier_balance('electricity')" + ] + }, + { + "cell_type": "markdown", + "id": "29", + "metadata": {}, + "source": [ + "### 3.3 Flow Rates Plot\n", + "\n", + "Plot multiple flow rates together:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30", + "metadata": {}, + "outputs": [], + "source": [ + "# All flows\n", + "simple.statistics.plot.flows()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "# Specific flows with line mode\n", + "simple.statistics.plot.flows(variables=['Boiler(Heat)', 'Office(Heat)'], mode='line', title='Boiler Output vs Demand')" + ] + }, + { + "cell_type": "markdown", + "id": "32", + "metadata": {}, + "source": [ + "### 3.4 Storage Plot\n", + "\n", + "Combined view of storage charge state and flows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.storage('ThermalStorage')" + ] + }, + { + "cell_type": "markdown", + "id": "34", + "metadata": {}, + "source": [ + "### 3.5 Charge States Plot\n", + "\n", + "Plot charge state time series directly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "35", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.charge_states('ThermalStorage')" + ] + }, + { + "cell_type": "markdown", + "id": "36", + "metadata": {}, + "source": [ + "## 4. Aggregated Plots" + ] + }, + { + "cell_type": "markdown", + "id": "37", + "metadata": {}, + "source": [ + "### 4.1 Sizes Plot\n", + "\n", + "Bar chart of component/flow sizes:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "38", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.sizes()" + ] + }, + { + "cell_type": "markdown", + "id": "39", + "metadata": {}, + "source": [ + "### 4.2 Effects Plot\n", + "\n", + "Bar chart of effect totals by component:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.effects('costs')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41", + "metadata": {}, + "outputs": [], + "source": [ + "# Multi-effect system: compare costs and CO2\n", + "complex_sys.statistics.plot.effects('costs', title='Operating Costs by Component')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42", + "metadata": {}, + "outputs": [], + "source": [ + "complex_sys.statistics.plot.effects('CO2', title='CO2 Emissions by Component')" + ] + }, + { + "cell_type": "markdown", + "id": "43", + "metadata": {}, + "source": [ + "### 4.3 Duration Curve\n", + "\n", + "Shows how often each power level is reached:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.duration_curve('Boiler(Heat)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45", + "metadata": {}, + "outputs": [], + "source": [ + "# Multiple variables\n", + "complex_sys.statistics.plot.duration_curve(\n", + " ['CHP(Heat)', 'HeatPump(Heat)', 'BackupBoiler(Q_th)'], title='Heat Generation Duration Curves'\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "46", + "metadata": {}, + "source": [ + "## 5. Heatmaps\n", + "\n", + "Heatmaps reshape time series into 2D grids (e.g., hour-of-day vs day):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47", + "metadata": {}, + "outputs": [], + "source": [ + "# Auto-reshape based on data frequency\n", + "simple.statistics.plot.heatmap('Boiler(Heat)')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48", + "metadata": {}, + "outputs": [], + "source": [ + "# Storage charge state heatmap\n", + "simple.statistics.plot.heatmap('ThermalStorage')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49", + "metadata": {}, + "outputs": [], + "source": [ + "# Custom colorscale\n", + "simple.statistics.plot.heatmap('Office(Heat)', color_continuous_scale='Blues', title='Heat Demand Pattern')" + ] + }, + { + "cell_type": "markdown", + "id": "50", + "metadata": {}, + "source": [ + "## 6. Sankey Diagrams\n", + "\n", + "Sankey diagrams visualize energy flows through the system." + ] + }, + { + "cell_type": "markdown", + "id": "51", + "metadata": {}, + "source": [ + "### 6.1 Flow Sankey\n", + "\n", + "Total energy flows:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.sankey.flows()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "53", + "metadata": {}, + "outputs": [], + "source": [ + "# Complex system with multiple carriers\n", + "complex_sys.statistics.plot.sankey.flows()" + ] + }, + { + "cell_type": "markdown", + "id": "54", + "metadata": {}, + "source": [ + "### 6.2 Sizes Sankey\n", + "\n", + "Capacity/size allocation:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "55", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.sankey.sizes()" + ] + }, + { + "cell_type": "markdown", + "id": "56", + "metadata": {}, + "source": [ + "### 6.3 Peak Flow Sankey\n", + "\n", + "Maximum flow rates (peak power):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.sankey.peak_flow()" + ] + }, + { + "cell_type": "markdown", + "id": "58", + "metadata": {}, + "source": [ + "### 6.4 Effects Sankey\n", + "\n", + "Cost/emission allocation:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "59", + "metadata": {}, + "outputs": [], + "source": [ + "simple.statistics.plot.sankey.effects('costs')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60", + "metadata": {}, + "outputs": [], + "source": [ + "# CO2 allocation in complex system\n", + "complex_sys.statistics.plot.sankey.effects('CO2', title='CO2 Emissions Flow')" + ] + }, + { + "cell_type": "markdown", + "id": "61", + "metadata": {}, + "source": [ + "### 6.5 Filtering with `select`\n", + "\n", + "Filter Sankey to specific buses or carriers:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "62", + "metadata": {}, + "outputs": [], + "source": [ + "# Only heat flows\n", + "complex_sys.statistics.plot.sankey.flows(select={'bus': 'Heat'})" + ] + }, + { + "cell_type": "markdown", + "id": "63", + "metadata": {}, + "source": [ + "## 7. Topology Visualization\n", + "\n", + "Visualize the system structure (no solution data required)." + ] + }, + { + "cell_type": "markdown", + "id": "64", + "metadata": {}, + "source": [ + "### 7.1 Topology Plot\n", + "\n", + "Sankey-style network diagram:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65", + "metadata": {}, + "outputs": [], + "source": [ + "simple.topology.plot()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66", + "metadata": {}, + "outputs": [], + "source": [ + "complex_sys.topology.plot(title='Complex System Topology')" + ] + }, + { + "cell_type": "markdown", + "id": "67", + "metadata": {}, + "source": [ + "### 7.2 Topology Info\n", + "\n", + "Get node and edge information programmatically:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "68", + "metadata": {}, + "outputs": [], + "source": [ + "nodes, edges = simple.topology.infos()\n", + "\n", + "print('Nodes:')\n", + "for label, info in nodes.items():\n", + " print(f' {label}: {info[\"class\"]}')\n", + "\n", + "print('\\nEdges (flows):')\n", + "for label, info in edges.items():\n", + " print(f' {info[\"start\"]} -> {info[\"end\"]}: {label}')" + ] + }, + { + "cell_type": "markdown", + "id": "69", + "metadata": {}, + "source": [ + "## 8. Multi-Period/Scenario Data\n", + "\n", + "Working with multi-dimensional results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70", + "metadata": {}, + "outputs": [], + "source": [ + "print('Multiperiod system dimensions:')\n", + "print(f' Periods: {list(multiperiod.periods)}')\n", + "print(f' Scenarios: {list(multiperiod.scenarios)}')\n", + "print(f' Solution dims: {dict(multiperiod.solution.sizes)}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71", + "metadata": {}, + "outputs": [], + "source": [ + "# Balance plot with faceting by scenario\n", + "multiperiod.statistics.plot.balance('Heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72", + "metadata": {}, + "outputs": [], + "source": [ + "# Filter to specific scenario/period\n", + "multiperiod.statistics.plot.balance('Heat', select={'scenario': 'high_demand', 'period': 2024})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73", + "metadata": {}, + "outputs": [], + "source": [ + "# Sankey aggregates across all dimensions by default\n", + "multiperiod.statistics.plot.sankey.flows()" + ] + }, + { + "cell_type": "markdown", + "id": "74", + "metadata": {}, + "source": [ + "## 9. Color Customization\n", + "\n", + "Colors can be customized in multiple ways:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75", + "metadata": {}, + "outputs": [], + "source": [ + "# Using a colorscale name\n", + "simple.statistics.plot.balance('Heat', colors='Set2')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "76", + "metadata": {}, + "outputs": [], + "source": [ + "# Using a list of colors\n", + "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "77", + "metadata": {}, + "outputs": [], + "source": [ + "# Using a dictionary for specific labels\n", + "simple.statistics.plot.balance(\n", + " 'Heat',\n", + " colors={\n", + " 'Boiler(Heat)': 'orangered',\n", + " 'ThermalStorage(Charge)': 'steelblue',\n", + " 'ThermalStorage(Discharge)': 'lightblue',\n", + " 'Office(Heat)': 'forestgreen',\n", + " },\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "78", + "metadata": {}, + "source": [ + "## 10. Exporting Results\n", + "\n", + "Plots return a `PlotResult` with data and figure that can be exported:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79", + "metadata": {}, + "outputs": [], + "source": [ + "# Get plot result\n", + "result = simple.statistics.plot.balance('Heat')\n", + "\n", + "print('PlotResult contains:')\n", + "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", + "print(f' figure: {type(result.figure).__name__}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80", + "metadata": {}, + "outputs": [], + "source": [ + "# Export data to pandas DataFrame\n", + "df = result.data.to_dataframe()\n", + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81", + "metadata": {}, + "outputs": [], + "source": [ + "# Export figure to HTML (interactive)\n", + "# result.figure.write_html('balance_plot.html')\n", + "\n", + "# Export figure to image\n", + "# result.figure.write_image('balance_plot.png', scale=2)" + ] + }, + { + "cell_type": "markdown", + "id": "82", + "metadata": {}, + "source": [ + "## 11. Using Matplotlib Backend\n", + "\n", + "Most plots support both Plotly (default) and Matplotlib:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "83", + "metadata": {}, + "outputs": [], + "source": [ + "# Balance with matplotlib\n", + "simple.statistics.plot.balance('Heat', backend='matplotlib')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84", + "metadata": {}, + "outputs": [], + "source": [ + "# Heatmap with matplotlib\n", + "simple.statistics.plot.heatmap('Boiler(Heat)', backend='matplotlib')" + ] + }, + { + "cell_type": "markdown", + "id": "85", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "### Data Access\n", + "\n", + "| Property | Description |\n", + "|----------|-------------|\n", + "| `statistics.flow_rates` | Time series of flow rates (power) |\n", + "| `statistics.flow_hours` | Energy values (rate × duration) |\n", + "| `statistics.sizes` | Component/flow capacities |\n", + "| `statistics.charge_states` | Storage charge levels |\n", + "| `statistics.temporal_effects` | Effects per timestep |\n", + "| `statistics.periodic_effects` | Effects per period |\n", + "| `statistics.total_effects` | Aggregated effect totals |\n", + "| `topology.carrier_colors` | Cached carrier color mapping |\n", + "| `topology.component_colors` | Cached component color mapping |\n", + "| `topology.bus_colors` | Cached bus color mapping |\n", + "\n", + "### Plot Methods\n", + "\n", + "| Method | Description |\n", + "|--------|-------------|\n", + "| `plot.balance(node)` | Stacked bar of in/outflows |\n", + "| `plot.carrier_balance(carrier)` | Balance for all flows of a carrier |\n", + "| `plot.flows(variables)` | Time series line/area plot |\n", + "| `plot.storage(component)` | Combined charge state and flows |\n", + "| `plot.charge_states(component)` | Charge state time series |\n", + "| `plot.sizes()` | Bar chart of sizes |\n", + "| `plot.effects(effect)` | Bar chart of effect contributions |\n", + "| `plot.duration_curve(variables)` | Sorted duration curve |\n", + "| `plot.heatmap(variable)` | 2D time-reshaped heatmap |\n", + "| `plot.sankey.flows()` | Energy flow Sankey |\n", + "| `plot.sankey.sizes()` | Capacity Sankey |\n", + "| `plot.sankey.peak_flow()` | Peak power Sankey |\n", + "| `plot.sankey.effects(effect)` | Effect allocation Sankey |\n", + "| `topology.plot()` | System structure diagram |" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 1828ecf5f489b61d9b17987fb8ba24bda7ee5f8c Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:55:59 +0100 Subject: [PATCH 71/88] Always amrk loaded FLowSystem as transformed --- flixopt/flow_system.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index fb37fb002..c9753ca56 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -711,6 +711,10 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: carrier = cls._resolve_reference_structure(carrier_data, {}) flow_system._carriers.add(carrier) + # Mark as connected since to_netcdf enforces connected_and_transformed state. + # The solution (if present) is stored separately and not affected by this flag. + flow_system._connected_and_transformed = True + return flow_system def to_netcdf(self, path: str | pathlib.Path, compression: int = 5, overwrite: bool = False): From 636127c576131e5af936d0681635315bc5dcf5e2 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:56:26 +0100 Subject: [PATCH 72/88] Add notebook for resuls show off --- .../09-plotting-and-data-access.ipynb | 3933 ++++++++++++++++- 1 file changed, 3770 insertions(+), 163 deletions(-) diff --git a/docs/notebooks/09-plotting-and-data-access.ipynb b/docs/notebooks/09-plotting-and-data-access.ipynb index e40b3b219..b1cceb4fb 100644 --- a/docs/notebooks/09-plotting-and-data-access.ipynb +++ b/docs/notebooks/09-plotting-and-data-access.ipynb @@ -30,17 +30,33 @@ }, { "cell_type": "code", - "execution_count": null, "id": "2", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:18.715855Z", + "start_time": "2025-12-12T11:56:16.251759Z" + } + }, "source": [ "from pathlib import Path\n", "\n", "import flixopt as fx\n", "\n", "fx.CONFIG.notebook()" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "flixopt.config.CONFIG" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 1 }, { "cell_type": "markdown", @@ -54,14 +70,42 @@ }, { "cell_type": "code", - "execution_count": null, "id": "4", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.243774Z", + "start_time": "2025-12-12T11:56:18.723151Z" + } + }, "source": [ "# Run the generation script (only needed once, or to regenerate)\n", "!python data/generate_example_systems.py" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Creating simple_system...\r\n", + " Optimizing...\r\n", + " Saving to /Users/felix/PycharmProjects/flixopt_182303/docs/notebooks/data/simple_system.nc4...\r\n", + " Done. Objective: 558.83\r\n", + "\r\n", + "Creating complex_system...\r\n", + " Optimizing...\r\n", + " Saving to /Users/felix/PycharmProjects/flixopt_182303/docs/notebooks/data/complex_system.nc4...\r\n", + " Done. Objective: 220.25\r\n", + "\r\n", + "Creating multiperiod_system...\r\n", + " Optimizing...\r\n", + " Saving to /Users/felix/PycharmProjects/flixopt_182303/docs/notebooks/data/multiperiod_system.nc4...\r\n", + " Done. Objective: 644.93\r\n", + "\r\n", + "All systems generated successfully!\r\n" + ] + } + ], + "execution_count": 2 }, { "cell_type": "markdown", @@ -75,10 +119,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "6", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.439849Z", + "start_time": "2025-12-12T11:56:23.295415Z" + } + }, "source": [ "DATA_DIR = Path('data')\n", "\n", @@ -91,7 +138,20 @@ "print(f' simple: {len(simple.components)} components, {len(simple.buses)} buses')\n", "print(f' complex_sys: {len(complex_sys.components)} components, {len(complex_sys.buses)} buses')\n", "print(f' multiperiod: {len(multiperiod.components)} components, dims={dict(multiperiod.solution.sizes)}')" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loaded systems:\n", + " simple: 4 components, 2 buses\n", + " complex_sys: 9 components, 3 buses\n", + " multiperiod: 4 components, dims={'scenario': 2, 'period': 3, 'time': 49}\n" + ] + } + ], + "execution_count": 3 }, { "cell_type": "markdown", @@ -115,17 +175,860 @@ }, { "cell_type": "code", - "execution_count": null, "id": "9", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.463744Z", + "start_time": "2025-12-12T11:56:23.445329Z" + } + }, "source": [ "flow_rates = simple.statistics.flow_rates\n", "print('Flow rates dataset:')\n", "print(f' Variables: {list(flow_rates.data_vars)}')\n", "print(f' Dimensions: {dict(flow_rates.sizes)}')\n", "flow_rates" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Flow rates dataset:\n", + " Variables: ['GasGrid(Gas)', 'Boiler(Gas)', 'Boiler(Heat)', 'ThermalStorage(Charge)', 'ThermalStorage(Discharge)', 'Office(Heat)']\n", + " Dimensions: {'time': 169}\n" + ] + }, + { + "data": { + "text/plain": [ + " Size: 9kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " GasGrid(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", + " Boiler(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", + " Boiler(Heat) (time) float64 1kB 32.48 29.31 ... 124.5 nan\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan\n", + " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan" + ], + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 9kB\n",
+       "Dimensions:                    (time: 169)\n",
+       "Coordinates:\n",
+       "  * time                       (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n",
+       "Data variables:\n",
+       "    GasGrid(Gas)               (time) float64 1kB 35.31 31.86 ... 135.3 nan\n",
+       "    Boiler(Gas)                (time) float64 1kB 35.31 31.86 ... 135.3 nan\n",
+       "    Boiler(Heat)               (time) float64 1kB 32.48 29.31 ... 124.5 nan\n",
+       "    ThermalStorage(Charge)     (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n",
+       "    ThermalStorage(Discharge)  (time) float64 1kB 0.0 -5.275e-13 ... nan\n",
+       "    Office(Heat)               (time) float64 1kB 32.48 29.31 ... 24.48 nan
" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 4 }, { "cell_type": "markdown", @@ -139,17 +1042,36 @@ }, { "cell_type": "code", - "execution_count": null, "id": "11", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.524210Z", + "start_time": "2025-12-12T11:56:23.513311Z" + } + }, "source": [ "flow_hours = simple.statistics.flow_hours\n", "print('Total energy by flow:')\n", "for var in flow_hours.data_vars:\n", " total = flow_hours[var].sum().item()\n", " print(f' {var}: {total:.1f} kWh')" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total energy by flow:\n", + " GasGrid(Gas): 8936.7 kWh\n", + " Boiler(Gas): 8936.7 kWh\n", + " Boiler(Heat): 8221.7 kWh\n", + " ThermalStorage(Charge): 3457.2 kWh\n", + " ThermalStorage(Discharge): 3242.8 kWh\n", + " Office(Heat): 8007.3 kWh\n" + ] + } + ], + "execution_count": 5 }, { "cell_type": "markdown", @@ -163,15 +1085,525 @@ }, { "cell_type": "code", - "execution_count": null, "id": "13", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.542120Z", + "start_time": "2025-12-12T11:56:23.536181Z" + } + }, "source": [ "sizes = simple.statistics.sizes\n", "print('Sizes:')\n", "sizes" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sizes:\n" + ] + }, + { + "data": { + "text/plain": [ + " Size: 0B\n", + "Dimensions: ()\n", + "Data variables:\n", + " *empty*" + ], + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 0B\n",
+       "Dimensions:  ()\n",
+       "Data variables:\n",
+       "    *empty*
" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 6 }, { "cell_type": "markdown", @@ -185,15 +1617,653 @@ }, { "cell_type": "code", - "execution_count": null, "id": "15", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.566800Z", + "start_time": "2025-12-12T11:56:23.557923Z" + } + }, "source": [ "charge_states = simple.statistics.charge_states\n", "print('Charge states:')\n", "charge_states" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Charge states:\n" + ] + }, + { + "data": { + "text/plain": [ + " Size: 3kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", + "Data variables:\n", + " ThermalStorage (time) float64 1kB 250.0 248.8 247.5 ... 103.0 102.5 200.0" + ], + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 3kB\n",
+       "Dimensions:         (time: 169)\n",
+       "Coordinates:\n",
+       "  * time            (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n",
+       "Data variables:\n",
+       "    ThermalStorage  (time) float64 1kB 250.0 248.8 247.5 ... 103.0 102.5 200.0
" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 7 }, { "cell_type": "markdown", @@ -207,10 +2277,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "17", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.613626Z", + "start_time": "2025-12-12T11:56:23.603113Z" + } + }, "source": [ "# Temporal effects (per timestep)\n", "print('Temporal effects (time series):')\n", @@ -219,7 +2292,38 @@ "# Total effects (scalar)\n", "print('\\nTotal effects:')\n", "print(simple.statistics.total_effects)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Temporal effects (time series):\n", + " Size: 4kB\n", + "Dimensions: (contributor: 1, time: 169)\n", + "Coordinates:\n", + " * contributor (contributor) object 8B 'GasGrid(Gas)'\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", + " component (contributor) Size: 76B\n", + "Dimensions: (contributor: 1)\n", + "Coordinates:\n", + " * contributor (contributor) object 8B 'GasGrid(Gas)'\n", + " component (contributor) Size: 640B\n", + "Dimensions: (contributor: 4)\n", + "Coordinates:\n", + " * contributor (contributor) object 32B 'CHP' ... 'GasGrid(Gas)'\n", + " component (contributor) \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 640B\n",
+       "Dimensions:         (contributor: 4)\n",
+       "Coordinates:\n",
+       "  * contributor     (contributor) object 32B 'CHP' ... 'GasGrid(Gas)'\n",
+       "    component       (contributor) <U17 272B 'CHP' ... 'GasGrid'\n",
+       "    component_type  (contributor) <U15 240B 'LinearConverter' ... 'Source'\n",
+       "Data variables:\n",
+       "    costs           (contributor) float64 32B 78.0 -386.3 118.1 410.4\n",
+       "    CO2             (contributor) float64 32B nan nan 295.3 1.368e+03\n",
+       "    Penalty         (contributor) float64 32B nan nan nan nan
" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 9 }, { "cell_type": "markdown", @@ -254,15 +2885,30 @@ }, { "cell_type": "code", - "execution_count": null, "id": "21", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.665589Z", + "start_time": "2025-12-12T11:56:23.663574Z" + } + }, "source": [ "print('Carrier colors:', simple.topology.carrier_colors)\n", "print('Bus colors:', simple.topology.bus_colors)\n", "print('Component colors:', simple.topology.component_colors)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Carrier colors: {'gas': '#1F77B4', 'heat': '#D62728'}\n", + "Bus colors: {'Gas': '#1F77B4', 'Heat': '#D62728'}\n", + "Component colors: {}\n" + ] + } + ], + "execution_count": 10 }, { "cell_type": "markdown", @@ -284,25 +2930,286 @@ }, { "cell_type": "code", - "execution_count": null, "id": "24", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.721172Z", + "start_time": "2025-12-12T11:56:23.680735Z" + } + }, "source": [ "# Bus balance (all flows connected to a bus)\n", "simple.statistics.plot.balance('Heat')" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001B[2m2025-12-12 12:56:23.681\u001B[0m \u001B[33mWARNING \u001B[0m │ No flows remaining after filtering for node Heat\n" + ] + }, + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 0B\n", + "Dimensions: ()\n", + "Data variables:\n", + " *empty*, figure=Figure({\n", + " 'data': [], 'layout': {'template': '...'}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 11 }, { "cell_type": "code", - "execution_count": null, "id": "25", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.831433Z", + "start_time": "2025-12-12T11:56:23.730649Z" + } + }, "source": [ "# Component balance (all flows of a component)\n", "simple.statistics.plot.balance('ThermalStorage')" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 4kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " ThermalStorage(Charge) (time) float64 1kB -0.0 3.748e-13 ... -100.0 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAUfPDBB19aPby8nSEx72' ... 'AAAAAAgNj//////1jAAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49ivby8nSEx72' ... 'AAAAAgPWP9SoFav2i9AAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'ThermalStorage (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 12 }, { "cell_type": "markdown", @@ -316,23 +3223,87 @@ }, { "cell_type": "code", - "execution_count": null, "id": "27", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.879363Z", + "start_time": "2025-12-12T11:56:23.851911Z" + } + }, "source": [ "complex_sys.statistics.plot.carrier_balance('heat')" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001B[2m2025-12-12 12:56:23.853\u001B[0m \u001B[33mWARNING \u001B[0m │ No flows remaining after filtering for carrier heat\n" + ] + }, + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 0B\n", + "Dimensions: ()\n", + "Data variables:\n", + " *empty*, figure=Figure({\n", + " 'data': [], 'layout': {'template': '...'}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 13 }, { "cell_type": "code", - "execution_count": null, "id": "28", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:23.923087Z", + "start_time": "2025-12-12T11:56:23.892538Z" + } + }, "source": [ "complex_sys.statistics.plot.carrier_balance('electricity')" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001B[2m2025-12-12 12:56:23.893\u001B[0m \u001B[33mWARNING \u001B[0m │ No flows remaining after filtering for carrier electricity\n" + ] + }, + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 0B\n", + "Dimensions: ()\n", + "Data variables:\n", + " *empty*, figure=Figure({\n", + " 'data': [], 'layout': {'template': '...'}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 14 }, { "cell_type": "markdown", @@ -346,25 +3317,661 @@ }, { "cell_type": "code", - "execution_count": null, "id": "30", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:24.016569Z", + "start_time": "2025-12-12T11:56:23.930814Z" + } + }, "source": [ "# All flows\n", "simple.statistics.plot.flows()" - ] + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 9kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " GasGrid(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", + " Boiler(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", + " Boiler(Heat) (time) float64 1kB 32.48 29.31 ... 124.5 nan\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan\n", + " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=GasGrid(Gas)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'GasGrid(Gas)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'GasGrid(Gas)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Boiler(Gas)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Gas)',\n", + " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Gas)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'line': {'color': '#00CC96', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Heat)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QED3U8WNBU89QHjXQkqFnk' ... '////8zQPW5+Ef5Hl9AAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'line': {'color': '#AB63FA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'line': {'color': '#FFA15A', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49ivby8nSEx72' ... 'AAAAAgPWP9SoFav2i9AAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Office(Heat)',\n", + " 'line': {'color': '#19D3F3', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Office(Heat)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Flows (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 15 }, { "cell_type": "code", - "execution_count": null, "id": "31", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T11:56:24.390992Z", + "start_time": "2025-12-12T11:56:24.047415Z" + } + }, "source": [ "# Specific flows with line mode\n", "simple.statistics.plot.flows(variables=['Boiler(Heat)', 'Office(Heat)'], mode='line', title='Boiler Output vs Demand')" - ] + ], + "outputs": [ + { + "ename": "TypeError", + "evalue": "flixopt.statistics_accessor._create_line() got multiple values for keyword argument 'title'", + "output_type": "error", + "traceback": [ + "\u001B[31m---------------------------------------------------------------------------\u001B[39m", + "\u001B[31mTypeError\u001B[39m Traceback (most recent call last)", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[16]\u001B[39m\u001B[32m, line 2\u001B[39m\n\u001B[32m 1\u001B[39m \u001B[38;5;66;03m# Specific flows with line mode\u001B[39;00m\n\u001B[32m----> \u001B[39m\u001B[32m2\u001B[39m \u001B[43msimple\u001B[49m\u001B[43m.\u001B[49m\u001B[43mstatistics\u001B[49m\u001B[43m.\u001B[49m\u001B[43mplot\u001B[49m\u001B[43m.\u001B[49m\u001B[43mflows\u001B[49m\u001B[43m(\u001B[49m\u001B[43mvariables\u001B[49m\u001B[43m=\u001B[49m\u001B[43m[\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mBoiler(Heat)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mOffice(Heat)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmode\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mline\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mtitle\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mBoiler Output vs Demand\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n", + "\u001B[36mFile \u001B[39m\u001B[32m~/PycharmProjects/flixopt_182303/flixopt/statistics_accessor.py:1771\u001B[39m, in \u001B[36mStatisticsPlotAccessor.flows\u001B[39m\u001B[34m(self, start, end, component, select, unit, colors, facet_col, facet_row, show, **plotly_kwargs)\u001B[39m\n\u001B[32m 1768\u001B[39m ds = _apply_selection(ds, select)\n\u001B[32m 1769\u001B[39m actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row)\n\u001B[32m-> \u001B[39m\u001B[32m1771\u001B[39m fig = _create_line(\n\u001B[32m 1772\u001B[39m ds,\n\u001B[32m 1773\u001B[39m colors=colors,\n\u001B[32m 1774\u001B[39m title=\u001B[33mf\u001B[39m\u001B[33m'\u001B[39m\u001B[33mFlows (\u001B[39m\u001B[38;5;132;01m{\u001B[39;00munit\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m)\u001B[39m\u001B[33m'\u001B[39m,\n\u001B[32m 1775\u001B[39m facet_col=actual_facet_col,\n\u001B[32m 1776\u001B[39m facet_row=actual_facet_row,\n\u001B[32m 1777\u001B[39m **plotly_kwargs,\n\u001B[32m 1778\u001B[39m )\n\u001B[32m 1780\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m show \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[32m 1781\u001B[39m show = CONFIG.Plotting.default_show\n", + "\u001B[31mTypeError\u001B[39m: flixopt.statistics_accessor._create_line() got multiple values for keyword argument 'title'" + ] + } + ], + "execution_count": 16 }, { "cell_type": "markdown", @@ -378,13 +3985,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "33", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.storage('ThermalStorage')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -398,13 +4005,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "35", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.charge_states('ThermalStorage')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -426,13 +4033,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "38", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.sizes()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -446,34 +4053,34 @@ }, { "cell_type": "code", - "execution_count": null, "id": "40", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.effects('costs')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "41", "metadata": {}, - "outputs": [], "source": [ "# Multi-effect system: compare costs and CO2\n", "complex_sys.statistics.plot.effects('costs', title='Operating Costs by Component')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "42", "metadata": {}, - "outputs": [], "source": [ "complex_sys.statistics.plot.effects('CO2', title='CO2 Emissions by Component')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -487,26 +4094,26 @@ }, { "cell_type": "code", - "execution_count": null, "id": "44", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.duration_curve('Boiler(Heat)')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "45", "metadata": {}, - "outputs": [], "source": [ "# Multiple variables\n", "complex_sys.statistics.plot.duration_curve(\n", " ['CHP(Heat)', 'HeatPump(Heat)', 'BackupBoiler(Q_th)'], title='Heat Generation Duration Curves'\n", ")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -520,36 +4127,36 @@ }, { "cell_type": "code", - "execution_count": null, "id": "47", "metadata": {}, - "outputs": [], "source": [ "# Auto-reshape based on data frequency\n", "simple.statistics.plot.heatmap('Boiler(Heat)')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "48", "metadata": {}, - "outputs": [], "source": [ "# Storage charge state heatmap\n", "simple.statistics.plot.heatmap('ThermalStorage')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "49", "metadata": {}, - "outputs": [], "source": [ "# Custom colorscale\n", "simple.statistics.plot.heatmap('Office(Heat)', color_continuous_scale='Blues', title='Heat Demand Pattern')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -573,24 +4180,24 @@ }, { "cell_type": "code", - "execution_count": null, "id": "52", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.sankey.flows()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "53", "metadata": {}, - "outputs": [], "source": [ "# Complex system with multiple carriers\n", "complex_sys.statistics.plot.sankey.flows()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -604,13 +4211,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "55", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.sankey.sizes()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -624,13 +4231,13 @@ }, { "cell_type": "code", - "execution_count": null, "id": "57", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.sankey.peak_flow()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -644,24 +4251,24 @@ }, { "cell_type": "code", - "execution_count": null, "id": "59", "metadata": {}, - "outputs": [], "source": [ "simple.statistics.plot.sankey.effects('costs')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "60", "metadata": {}, - "outputs": [], "source": [ "# CO2 allocation in complex system\n", "complex_sys.statistics.plot.sankey.effects('CO2', title='CO2 Emissions Flow')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -675,14 +4282,14 @@ }, { "cell_type": "code", - "execution_count": null, "id": "62", "metadata": {}, - "outputs": [], "source": [ "# Only heat flows\n", "complex_sys.statistics.plot.sankey.flows(select={'bus': 'Heat'})" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -706,23 +4313,23 @@ }, { "cell_type": "code", - "execution_count": null, "id": "65", "metadata": {}, - "outputs": [], "source": [ "simple.topology.plot()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "66", "metadata": {}, - "outputs": [], "source": [ "complex_sys.topology.plot(title='Complex System Topology')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -736,10 +4343,8 @@ }, { "cell_type": "code", - "execution_count": null, "id": "68", "metadata": {}, - "outputs": [], "source": [ "nodes, edges = simple.topology.infos()\n", "\n", @@ -750,7 +4355,9 @@ "print('\\nEdges (flows):')\n", "for label, info in edges.items():\n", " print(f' {info[\"start\"]} -> {info[\"end\"]}: {label}')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -764,49 +4371,49 @@ }, { "cell_type": "code", - "execution_count": null, "id": "70", "metadata": {}, - "outputs": [], "source": [ "print('Multiperiod system dimensions:')\n", "print(f' Periods: {list(multiperiod.periods)}')\n", "print(f' Scenarios: {list(multiperiod.scenarios)}')\n", "print(f' Solution dims: {dict(multiperiod.solution.sizes)}')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "71", "metadata": {}, - "outputs": [], "source": [ "# Balance plot with faceting by scenario\n", "multiperiod.statistics.plot.balance('Heat')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "72", "metadata": {}, - "outputs": [], "source": [ "# Filter to specific scenario/period\n", "multiperiod.statistics.plot.balance('Heat', select={'scenario': 'high_demand', 'period': 2024})" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "73", "metadata": {}, - "outputs": [], "source": [ "# Sankey aggregates across all dimensions by default\n", "multiperiod.statistics.plot.sankey.flows()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -820,32 +4427,30 @@ }, { "cell_type": "code", - "execution_count": null, "id": "75", "metadata": {}, - "outputs": [], "source": [ "# Using a colorscale name\n", "simple.statistics.plot.balance('Heat', colors='Set2')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "76", "metadata": {}, - "outputs": [], "source": [ "# Using a list of colors\n", "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "77", "metadata": {}, - "outputs": [], "source": [ "# Using a dictionary for specific labels\n", "simple.statistics.plot.balance(\n", @@ -857,7 +4462,9 @@ " 'Office(Heat)': 'forestgreen',\n", " },\n", ")" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -871,10 +4478,8 @@ }, { "cell_type": "code", - "execution_count": null, "id": "79", "metadata": {}, - "outputs": [], "source": [ "# Get plot result\n", "result = simple.statistics.plot.balance('Heat')\n", @@ -882,33 +4487,35 @@ "print('PlotResult contains:')\n", "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", "print(f' figure: {type(result.figure).__name__}')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "80", "metadata": {}, - "outputs": [], "source": [ "# Export data to pandas DataFrame\n", "df = result.data.to_dataframe()\n", "df.head()" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "81", "metadata": {}, - "outputs": [], "source": [ "# Export figure to HTML (interactive)\n", "# result.figure.write_html('balance_plot.html')\n", "\n", "# Export figure to image\n", "# result.figure.write_image('balance_plot.png', scale=2)" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -922,25 +4529,25 @@ }, { "cell_type": "code", - "execution_count": null, "id": "83", "metadata": {}, - "outputs": [], "source": [ "# Balance with matplotlib\n", "simple.statistics.plot.balance('Heat', backend='matplotlib')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "code", - "execution_count": null, "id": "84", "metadata": {}, - "outputs": [], "source": [ "# Heatmap with matplotlib\n", "simple.statistics.plot.heatmap('Boiler(Heat)', backend='matplotlib')" - ] + ], + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", From 23612e3b28b5508c340666c1972734a77ca07da4 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 12:57:23 +0100 Subject: [PATCH 73/88] Add notebook for resuls show off --- .../notebooks/09-plotting-and-data-access.ipynb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/notebooks/09-plotting-and-data-access.ipynb b/docs/notebooks/09-plotting-and-data-access.ipynb index b1cceb4fb..4b2e0f237 100644 --- a/docs/notebooks/09-plotting-and-data-access.ipynb +++ b/docs/notebooks/09-plotting-and-data-access.ipynb @@ -3949,29 +3949,30 @@ "id": "31", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T11:56:24.390992Z", - "start_time": "2025-12-12T11:56:24.047415Z" + "end_time": "2025-12-12T11:56:58.775631Z", + "start_time": "2025-12-12T11:56:58.696156Z" } }, "source": [ "# Specific flows with line mode\n", - "simple.statistics.plot.flows(variables=['Boiler(Heat)', 'Office(Heat)'], mode='line', title='Boiler Output vs Demand')" + "simple.statistics.plot.flows(variables=['Boiler(Heat)', 'Office(Heat)'], mode='line')" ], "outputs": [ { "ename": "TypeError", - "evalue": "flixopt.statistics_accessor._create_line() got multiple values for keyword argument 'title'", + "evalue": "line() got an unexpected keyword argument 'variables'", "output_type": "error", "traceback": [ "\u001B[31m---------------------------------------------------------------------------\u001B[39m", "\u001B[31mTypeError\u001B[39m Traceback (most recent call last)", - "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[16]\u001B[39m\u001B[32m, line 2\u001B[39m\n\u001B[32m 1\u001B[39m \u001B[38;5;66;03m# Specific flows with line mode\u001B[39;00m\n\u001B[32m----> \u001B[39m\u001B[32m2\u001B[39m \u001B[43msimple\u001B[49m\u001B[43m.\u001B[49m\u001B[43mstatistics\u001B[49m\u001B[43m.\u001B[49m\u001B[43mplot\u001B[49m\u001B[43m.\u001B[49m\u001B[43mflows\u001B[49m\u001B[43m(\u001B[49m\u001B[43mvariables\u001B[49m\u001B[43m=\u001B[49m\u001B[43m[\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mBoiler(Heat)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mOffice(Heat)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmode\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mline\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mtitle\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mBoiler Output vs Demand\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n", - "\u001B[36mFile \u001B[39m\u001B[32m~/PycharmProjects/flixopt_182303/flixopt/statistics_accessor.py:1771\u001B[39m, in \u001B[36mStatisticsPlotAccessor.flows\u001B[39m\u001B[34m(self, start, end, component, select, unit, colors, facet_col, facet_row, show, **plotly_kwargs)\u001B[39m\n\u001B[32m 1768\u001B[39m ds = _apply_selection(ds, select)\n\u001B[32m 1769\u001B[39m actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row)\n\u001B[32m-> \u001B[39m\u001B[32m1771\u001B[39m fig = _create_line(\n\u001B[32m 1772\u001B[39m ds,\n\u001B[32m 1773\u001B[39m colors=colors,\n\u001B[32m 1774\u001B[39m title=\u001B[33mf\u001B[39m\u001B[33m'\u001B[39m\u001B[33mFlows (\u001B[39m\u001B[38;5;132;01m{\u001B[39;00munit\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m)\u001B[39m\u001B[33m'\u001B[39m,\n\u001B[32m 1775\u001B[39m facet_col=actual_facet_col,\n\u001B[32m 1776\u001B[39m facet_row=actual_facet_row,\n\u001B[32m 1777\u001B[39m **plotly_kwargs,\n\u001B[32m 1778\u001B[39m )\n\u001B[32m 1780\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m show \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[32m 1781\u001B[39m show = CONFIG.Plotting.default_show\n", - "\u001B[31mTypeError\u001B[39m: flixopt.statistics_accessor._create_line() got multiple values for keyword argument 'title'" + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[17]\u001B[39m\u001B[32m, line 2\u001B[39m\n\u001B[32m 1\u001B[39m \u001B[38;5;66;03m# Specific flows with line mode\u001B[39;00m\n\u001B[32m----> \u001B[39m\u001B[32m2\u001B[39m \u001B[43msimple\u001B[49m\u001B[43m.\u001B[49m\u001B[43mstatistics\u001B[49m\u001B[43m.\u001B[49m\u001B[43mplot\u001B[49m\u001B[43m.\u001B[49m\u001B[43mflows\u001B[49m\u001B[43m(\u001B[49m\u001B[43mvariables\u001B[49m\u001B[43m=\u001B[49m\u001B[43m[\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mBoiler(Heat)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mOffice(Heat)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mmode\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mline\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m)\u001B[49m\n", + "\u001B[36mFile \u001B[39m\u001B[32m~/PycharmProjects/flixopt_182303/flixopt/statistics_accessor.py:1771\u001B[39m, in \u001B[36mStatisticsPlotAccessor.flows\u001B[39m\u001B[34m(self, start, end, component, select, unit, colors, facet_col, facet_row, show, **plotly_kwargs)\u001B[39m\n\u001B[32m 1768\u001B[39m ds = _apply_selection(ds, select)\n\u001B[32m 1769\u001B[39m actual_facet_col, actual_facet_row = _resolve_facets(ds, facet_col, facet_row)\n\u001B[32m-> \u001B[39m\u001B[32m1771\u001B[39m fig = \u001B[43m_create_line\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 1772\u001B[39m \u001B[43m \u001B[49m\u001B[43mds\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1773\u001B[39m \u001B[43m \u001B[49m\u001B[43mcolors\u001B[49m\u001B[43m=\u001B[49m\u001B[43mcolors\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1774\u001B[39m \u001B[43m \u001B[49m\u001B[43mtitle\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43mf\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mFlows (\u001B[39;49m\u001B[38;5;132;43;01m{\u001B[39;49;00m\u001B[43munit\u001B[49m\u001B[38;5;132;43;01m}\u001B[39;49;00m\u001B[33;43m)\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[32m 1775\u001B[39m \u001B[43m \u001B[49m\u001B[43mfacet_col\u001B[49m\u001B[43m=\u001B[49m\u001B[43mactual_facet_col\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1776\u001B[39m \u001B[43m \u001B[49m\u001B[43mfacet_row\u001B[49m\u001B[43m=\u001B[49m\u001B[43mactual_facet_row\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1777\u001B[39m \u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mplotly_kwargs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1778\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[32m 1780\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m show \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[32m 1781\u001B[39m show = CONFIG.Plotting.default_show\n", + "\u001B[36mFile \u001B[39m\u001B[32m~/PycharmProjects/flixopt_182303/flixopt/statistics_accessor.py:355\u001B[39m, in \u001B[36m_create_line\u001B[39m\u001B[34m(ds, colors, title, facet_col, facet_row, **plotly_kwargs)\u001B[39m\n\u001B[32m 353\u001B[39m variables = df[\u001B[33m'\u001B[39m\u001B[33mvariable\u001B[39m\u001B[33m'\u001B[39m].unique().tolist()\n\u001B[32m 354\u001B[39m color_map = process_colors(colors, variables, default_colorscale=CONFIG.Plotting.default_qualitative_colorscale)\n\u001B[32m--> \u001B[39m\u001B[32m355\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mpx\u001B[49m\u001B[43m.\u001B[49m\u001B[43mline\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 356\u001B[39m \u001B[43m \u001B[49m\u001B[43mdf\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 357\u001B[39m \u001B[43m \u001B[49m\u001B[43mx\u001B[49m\u001B[43m=\u001B[49m\u001B[43mx_col\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 358\u001B[39m \u001B[43m \u001B[49m\u001B[43my\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mvalue\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[32m 359\u001B[39m \u001B[43m \u001B[49m\u001B[43mcolor\u001B[49m\u001B[43m=\u001B[49m\u001B[33;43m'\u001B[39;49m\u001B[33;43mvariable\u001B[39;49m\u001B[33;43m'\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[32m 360\u001B[39m \u001B[43m \u001B[49m\u001B[43mfacet_col\u001B[49m\u001B[43m=\u001B[49m\u001B[43mfacet_col\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 361\u001B[39m \u001B[43m \u001B[49m\u001B[43mfacet_row\u001B[49m\u001B[43m=\u001B[49m\u001B[43mfacet_row\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 362\u001B[39m \u001B[43m \u001B[49m\u001B[43mcolor_discrete_map\u001B[49m\u001B[43m=\u001B[49m\u001B[43mcolor_map\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 363\u001B[39m \u001B[43m \u001B[49m\u001B[43mtitle\u001B[49m\u001B[43m=\u001B[49m\u001B[43mtitle\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 364\u001B[39m \u001B[43m \u001B[49m\u001B[43m*\u001B[49m\u001B[43m*\u001B[49m\u001B[43mplotly_kwargs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 365\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[31mTypeError\u001B[39m: line() got an unexpected keyword argument 'variables'" ] } ], - "execution_count": 16 + "execution_count": 17 }, { "cell_type": "markdown", From 570ab3de1d05c1f7b3ac738bd0235822e75b457f Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:05:38 +0100 Subject: [PATCH 74/88] Re-Connect FLow_system when loading from dataset --- flixopt/flow_system.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/flixopt/flow_system.py b/flixopt/flow_system.py index c9753ca56..598cefb16 100644 --- a/flixopt/flow_system.py +++ b/flixopt/flow_system.py @@ -711,9 +711,8 @@ def from_dataset(cls, ds: xr.Dataset) -> FlowSystem: carrier = cls._resolve_reference_structure(carrier_data, {}) flow_system._carriers.add(carrier) - # Mark as connected since to_netcdf enforces connected_and_transformed state. - # The solution (if present) is stored separately and not affected by this flag. - flow_system._connected_and_transformed = True + # Reconnect network to populate bus inputs/outputs (not stored in NetCDF). + flow_system.connect_and_transform() return flow_system From e4ad346e2e69f781a81ab0ad6eda464e94354f47 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:08:12 +0100 Subject: [PATCH 75/88] Update notebook and add to docs --- .../09-plotting-and-data-access.ipynb | 10526 ++++++++++++++-- docs/notebooks/index.md | 7 + 2 files changed, 9811 insertions(+), 722 deletions(-) diff --git a/docs/notebooks/09-plotting-and-data-access.ipynb b/docs/notebooks/09-plotting-and-data-access.ipynb index 4b2e0f237..7b4a0e3fe 100644 --- a/docs/notebooks/09-plotting-and-data-access.ipynb +++ b/docs/notebooks/09-plotting-and-data-access.ipynb @@ -33,8 +33,8 @@ "id": "2", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T11:56:18.715855Z", - "start_time": "2025-12-12T11:56:16.251759Z" + "end_time": "2025-12-12T12:06:29.505282Z", + "start_time": "2025-12-12T12:06:26.542476Z" } }, "source": [ @@ -73,8 +73,8 @@ "id": "4", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T11:56:23.243774Z", - "start_time": "2025-12-12T11:56:18.723151Z" + "end_time": "2025-12-12T12:06:35.136859Z", + "start_time": "2025-12-12T12:06:29.554928Z" } }, "source": [ @@ -122,8 +122,8 @@ "id": "6", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T11:56:23.439849Z", - "start_time": "2025-12-12T11:56:23.295415Z" + "end_time": "2025-12-12T12:06:35.466083Z", + "start_time": "2025-12-12T12:06:35.210813Z" } }, "source": [ @@ -178,8 +178,8 @@ "id": "9", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T11:56:23.463744Z", - "start_time": "2025-12-12T11:56:23.445329Z" + "end_time": "2025-12-12T12:06:35.534937Z", + "start_time": "2025-12-12T12:06:35.496736Z" } }, "source": [ @@ -703,7 +703,7 @@ " Boiler(Heat) (time) float64 1kB 32.48 29.31 ... 124.5 nan\n", " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan\n", - " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 41 }, { "cell_type": "markdown", @@ -4429,29 +12146,884 @@ { "cell_type": "code", "id": "75", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:06:58.557731Z", + "start_time": "2025-12-12T12:06:58.171959Z" + } + }, "source": [ "# Using a colorscale name\n", "simple.statistics.plot.balance('Heat', colors='Set2')" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 7kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " Boiler(Heat) (time) float64 1kB -32.48 -29.31 ... -124.5 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB -0.0 5.275e-13 ... nan\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#66c2a5', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QMD3U8WNBU89wHjXQkqFnk' ... '////8zwPW5+Ef5Hl/AAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'marker': {'color': '#fc8d62', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAKPvjgg49iPby8nSEx72' ... 'AAAAAgvWP9SoFav2g9AAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'marker': {'color': '#8da0cb', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Office(Heat)',\n", + " 'marker': {'color': '#e78ac3', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Office(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Heat (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 42 }, { "cell_type": "code", "id": "76", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:06:59.181165Z", + "start_time": "2025-12-12T12:06:58.735466Z" + } + }, "source": [ "# Using a list of colors\n", "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 7kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " Boiler(Heat) (time) float64 1kB -32.48 -29.31 ... -124.5 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB -0.0 5.275e-13 ... nan\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#e41a1c', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QMD3U8WNBU89wHjXQkqFnk' ... '////8zwPW5+Ef5Hl/AAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'marker': {'color': '#377eb8', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAKPvjgg49iPby8nSEx72' ... 'AAAAAgvWP9SoFav2g9AAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'marker': {'color': '#4daf4a', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Office(Heat)',\n", + " 'marker': {'color': '#984ea3', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Office(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Heat (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 43 }, { "cell_type": "code", "id": "77", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:06:59.730556Z", + "start_time": "2025-12-12T12:06:59.234563Z" + } + }, "source": [ "# Using a dictionary for specific labels\n", "simple.statistics.plot.balance(\n", @@ -4464,8 +13036,428 @@ " },\n", ")" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 7kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " Boiler(Heat) (time) float64 1kB -32.48 -29.31 ... -124.5 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB -0.0 5.275e-13 ... nan\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': 'orangered', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QMD3U8WNBU89wHjXQkqFnk' ... '////8zwPW5+Ef5Hl/AAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'marker': {'color': 'lightblue', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAKPvjgg49iPby8nSEx72' ... 'AAAAAgvWP9SoFav2g9AAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'marker': {'color': 'steelblue', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Office(Heat)',\n", + " 'marker': {'color': 'forestgreen', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'Office(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Heat (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 44 }, { "cell_type": "markdown", @@ -4480,7 +13472,12 @@ { "cell_type": "code", "id": "79", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:07:00.118627Z", + "start_time": "2025-12-12T12:06:59.813869Z" + } + }, "source": [ "# Get plot result\n", "result = simple.statistics.plot.balance('Heat')\n", @@ -4489,25 +13486,142 @@ "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", "print(f' figure: {type(result.figure).__name__}')" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PlotResult contains:\n", + " data: Dataset with vars ['Boiler(Heat)', 'ThermalStorage(Discharge)', 'ThermalStorage(Charge)', 'Office(Heat)']\n", + " figure: Figure\n" + ] + } + ], + "execution_count": 45 }, { "cell_type": "code", "id": "80", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:07:00.477422Z", + "start_time": "2025-12-12T12:07:00.433079Z" + } + }, "source": [ "# Export data to pandas DataFrame\n", "df = result.data.to_dataframe()\n", "df.head()" ], - "outputs": [], - "execution_count": null + "outputs": [ + { + "data": { + "text/plain": [ + " Boiler(Heat) ThermalStorage(Discharge) \\\n", + "time \n", + "2024-01-15 00:00:00 -32.483571 -0.000000e+00 \n", + "2024-01-15 01:00:00 -29.308678 5.275242e-13 \n", + "2024-01-15 02:00:00 -33.238443 -7.086767e-13 \n", + "2024-01-15 03:00:00 -101.411593 -3.516828e-13 \n", + "2024-01-15 04:00:00 -128.829233 -5.613288e-13 \n", + "\n", + " ThermalStorage(Charge) Office(Heat) \n", + "time \n", + "2024-01-15 00:00:00 0.000000e+00 32.483571 \n", + "2024-01-15 01:00:00 -3.747575e-13 29.308678 \n", + "2024-01-15 02:00:00 8.792069e-13 33.238443 \n", + "2024-01-15 03:00:00 6.379644e+01 37.615149 \n", + "2024-01-15 04:00:00 1.000000e+02 28.829233 " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Boiler(Heat)ThermalStorage(Discharge)ThermalStorage(Charge)Office(Heat)
time
2024-01-15 00:00:00-32.483571-0.000000e+000.000000e+0032.483571
2024-01-15 01:00:00-29.3086785.275242e-13-3.747575e-1329.308678
2024-01-15 02:00:00-33.238443-7.086767e-138.792069e-1333.238443
2024-01-15 03:00:00-101.411593-3.516828e-136.379644e+0137.615149
2024-01-15 04:00:00-128.829233-5.613288e-131.000000e+0228.829233
\n", + "
" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 46 }, { "cell_type": "code", "id": "81", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:07:00.727727Z", + "start_time": "2025-12-12T12:07:00.707525Z" + } + }, "source": [ "# Export figure to HTML (interactive)\n", "# result.figure.write_html('balance_plot.html')\n", @@ -4516,39 +13630,7 @@ "# result.figure.write_image('balance_plot.png', scale=2)" ], "outputs": [], - "execution_count": null - }, - { - "cell_type": "markdown", - "id": "82", - "metadata": {}, - "source": [ - "## 11. Using Matplotlib Backend\n", - "\n", - "Most plots support both Plotly (default) and Matplotlib:" - ] - }, - { - "cell_type": "code", - "id": "83", - "metadata": {}, - "source": [ - "# Balance with matplotlib\n", - "simple.statistics.plot.balance('Heat', backend='matplotlib')" - ], - "outputs": [], - "execution_count": null - }, - { - "cell_type": "code", - "id": "84", - "metadata": {}, - "source": [ - "# Heatmap with matplotlib\n", - "simple.statistics.plot.heatmap('Boiler(Heat)', backend='matplotlib')" - ], - "outputs": [], - "execution_count": null + "execution_count": 47 }, { "cell_type": "markdown", diff --git a/docs/notebooks/index.md b/docs/notebooks/index.md index b8003f6bb..cbcfab61e 100644 --- a/docs/notebooks/index.md +++ b/docs/notebooks/index.md @@ -30,6 +30,12 @@ Learn flixopt through practical examples organized by topic. Each notebook inclu | [07-Scenarios and Periods](07-scenarios-and-periods.ipynb) | Multi-year planning with uncertain demand scenarios | | [08-Large-Scale Optimization](08-large-scale-optimization.ipynb) | Speed up large problems with resampling and two-stage optimization | +## Results & Visualization + +| Notebook | Description | +|----------|-------------| +| [09-Plotting and Data Access](09-plotting-and-data-access.ipynb) | Access optimization results and create visualizations | + ## Key Concepts by Notebook | Concept | Introduced In | @@ -42,3 +48,4 @@ Learn flixopt through practical examples organized by topic. Each notebook inclu | `Piecewise`, variable efficiency | 06-Piecewise | | Periods, scenarios, weights | 07-Scenarios | | `transform.resample()`, `fix_sizes()` | 08-Large-Scale | +| `statistics`, `topology`, plotting | 09-Plotting | From ef2b3fd5222d498305aa7c5632160d73334013d2 Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:08:19 +0100 Subject: [PATCH 76/88] Update notebook and add to docs --- mkdocs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mkdocs.yml b/mkdocs.yml index f414c1ab4..8537a00c8 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -64,6 +64,8 @@ nav: - Scenarios & Scaling: - Scenarios and Periods: notebooks/07-scenarios-and-periods.ipynb - Large-Scale Optimization: notebooks/08-large-scale-optimization.ipynb + - Results & Visualization: + - Plotting and Data Access: notebooks/09-plotting-and-data-access.ipynb - API Reference: api-reference/ From 3fad6fe7188e38a06d44a8a6cfe3c77fdb4f01de Mon Sep 17 00:00:00 2001 From: FBumann <117816358+FBumann@users.noreply.github.com> Date: Fri, 12 Dec 2025 13:12:12 +0100 Subject: [PATCH 77/88] Update notebook names and docs headers --- docs/notebooks/01-quickstart.ipynb | 16 +---- docs/notebooks/02-heat-system.ipynb | 29 +++------ .../03-investment-optimization.ipynb | 65 ++++++++----------- .../04-operational-constraints.ipynb | 15 +---- docs/notebooks/05-multi-carrier-system.ipynb | 15 +---- docs/notebooks/06-piecewise-efficiency.ipynb | 15 +---- docs/notebooks/07-scenarios-and-periods.ipynb | 15 +---- .../08-large-scale-optimization.ipynb | 15 +---- .../09-plotting-and-data-access.ipynb | 18 +---- docs/notebooks/index.md | 44 ++++++------- mkdocs.yml | 26 ++++---- 11 files changed, 77 insertions(+), 196 deletions(-) diff --git a/docs/notebooks/01-quickstart.ipynb b/docs/notebooks/01-quickstart.ipynb index be0da5779..ba4becd0c 100644 --- a/docs/notebooks/01-quickstart.ipynb +++ b/docs/notebooks/01-quickstart.ipynb @@ -4,21 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Quickstart: Heating a Small Workshop\n", - "\n", - "## User Story\n", - "\n", - "> *You manage a small workshop that needs heating. You have a gas boiler and want to find the optimal operation schedule to minimize heating costs over the next few hours.*\n", - "\n", - "This notebook introduces the **core concepts** of flixopt:\n", - "\n", - "- **FlowSystem**: The container for your energy system model\n", - "- **Bus**: Balance nodes where energy flows meet\n", - "- **Effect**: Quantities to track and optimize (costs, emissions)\n", - "- **Components**: Equipment like boilers, sources, and sinks\n", - "- **Flow**: Connections between components and buses" - ] + "source": "# Quickstart\n\nHeat a small workshop with a gas boiler - the minimal working example.\n\nThis notebook introduces the **core concepts** of flixopt:\n\n- **FlowSystem**: The container for your energy system model\n- **Bus**: Balance nodes where energy flows meet\n- **Effect**: Quantities to track and optimize (costs, emissions)\n- **Components**: Equipment like boilers, sources, and sinks\n- **Flow**: Connections between components and buses" }, { "cell_type": "markdown", diff --git a/docs/notebooks/02-heat-system.ipynb b/docs/notebooks/02-heat-system.ipynb index fd868ea9a..5028065fd 100644 --- a/docs/notebooks/02-heat-system.ipynb +++ b/docs/notebooks/02-heat-system.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# District Heating System with Thermal Storage\n", - "\n", - "## User Story\n", - "\n", - "> *You operate a small district heating network serving an office building. The system has a gas boiler and a thermal storage tank. Electricity prices vary throughout the day, and you want to optimize when to charge/discharge the storage to minimize costs.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **Storage**: Thermal buffer tanks with charging/discharging\n", - "- **Time series data**: Using real demand profiles\n", - "- **Multiple components**: Combining boiler, storage, and loads\n", - "- **Result visualization**: Heatmaps, balance plots, and charge states" - ] + "source": "# Heat System\n\nDistrict heating with thermal storage and time-varying prices.\n\nThis notebook introduces:\n\n- **Storage**: Thermal buffer tanks with charging/discharging\n- **Time series data**: Using real demand profiles\n- **Multiple components**: Combining boiler, storage, and loads\n- **Result visualization**: Heatmaps, balance plots, and charge states" }, { "cell_type": "markdown", @@ -125,14 +112,14 @@ "metadata": {}, "outputs": [], "source": [ - "# Time-of-use gas prices (\u20ac/kWh)\n", + "# Time-of-use gas prices (€/kWh)\n", "gas_price = np.where(\n", " (hour_of_day >= 6) & (hour_of_day <= 22),\n", " 0.08, # Peak: 6am-10pm\n", " 0.05, # Off-peak: 10pm-6am\n", ")\n", "\n", - "fig = px.line(x=timesteps, y=gas_price, title='Gas Price [\u20ac/kWh]', labels={'x': 'Time', 'y': '\u20ac/kWh'})\n", + "fig = px.line(x=timesteps, y=gas_price, title='Gas Price [€/kWh]', labels={'x': 'Time', 'y': '€/kWh'})\n", "fig" ] }, @@ -149,9 +136,9 @@ "- Office building heat demand\n", "\n", "```\n", - "Gas Grid \u2500\u2500\u25ba [Gas] \u2500\u2500\u25ba Boiler \u2500\u2500\u25ba [Heat] \u25c4\u2500\u2500\u25ba Storage\n", - " \u2502\n", - " \u25bc\n", + "Gas Grid ──► [Gas] ──► Boiler ──► [Heat] ◄──► Storage\n", + " │\n", + " ▼\n", " Office\n", "```" ] @@ -170,7 +157,7 @@ " fx.Bus('Gas', carrier='gas'),\n", " fx.Bus('Heat', carrier='heat'),\n", " # === Effect ===\n", - " fx.Effect('costs', '\u20ac', 'Operating Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('costs', '€', 'Operating Costs', is_standard=True, is_objective=True),\n", " # === Gas Supply with time-varying price ===\n", " fx.Source(\n", " 'GasGrid',\n", @@ -311,7 +298,7 @@ "total_costs = flow_system.solution['costs'].item()\n", "total_heat = heat_demand.sum()\n", "\n", - "print(f'Total operating costs: {total_costs:.2f} \u20ac')\n", + "print(f'Total operating costs: {total_costs:.2f} €')\n", "print(f'Total heat delivered: {total_heat:.0f} kWh')\n", "print(f'Average cost: {total_costs / total_heat * 100:.2f} ct/kWh')" ] diff --git a/docs/notebooks/03-investment-optimization.ipynb b/docs/notebooks/03-investment-optimization.ipynb index c3ffe2cdd..478f93798 100644 --- a/docs/notebooks/03-investment-optimization.ipynb +++ b/docs/notebooks/03-investment-optimization.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Investment Optimization: Sizing a Solar Heating System\n", - "\n", - "## User Story\n", - "\n", - "> *You're designing a solar thermal system for a swimming pool. You need to decide: How large should the solar collectors be? How big should the buffer tank be? The goal is to minimize total costs (investment + operation) over the planning horizon.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **InvestParameters**: Define investment decisions with size bounds and costs\n", - "- **Investment costs**: Fixed costs and size-dependent costs\n", - "- **Optimal sizing**: Let the optimizer find the best equipment sizes\n", - "- **Trade-off analysis**: Balance investment vs. operating costs" - ] + "source": "# Sizing\n\nSize a solar heating system - let the optimizer decide equipment sizes.\n\nThis notebook introduces:\n\n- **InvestParameters**: Define investment decisions with size bounds and costs\n- **Investment costs**: Fixed costs and size-dependent costs\n- **Optimal sizing**: Let the optimizer find the best equipment sizes\n- **Trade-off analysis**: Balance investment vs. operating costs" }, { "cell_type": "markdown", @@ -59,13 +46,13 @@ "- **Pool**: Constant heat demand of 150 kW during operating hours\n", "\n", "```\n", - " \u2600\ufe0f Solar \u2500\u2500\u25ba [Heat] \u25c4\u2500\u2500 Boiler \u25c4\u2500\u2500 [Gas]\n", - " \u2502\n", - " \u25bc\n", + " ☀️ Solar ──► [Heat] ◄── Boiler ◄── [Gas]\n", + " │\n", + " ▼\n", " Buffer Tank\n", - " \u2502\n", - " \u25bc\n", - " Pool \ud83c\udfca\n", + " │\n", + " ▼\n", + " Pool 🏊\n", "```" ] }, @@ -91,7 +78,7 @@ "hours = np.arange(168)\n", "hour_of_day = hours % 24\n", "\n", - "# Solar radiation profile (kW/m\u00b2 equivalent, simplified)\n", + "# Solar radiation profile (kW/m² equivalent, simplified)\n", "# Peak around noon, zero at night\n", "solar_profile = np.maximum(0, np.sin((hour_of_day - 6) * np.pi / 12)) * 0.8\n", "solar_profile = np.where((hour_of_day >= 6) & (hour_of_day <= 20), solar_profile, 0)\n", @@ -138,7 +125,7 @@ "source": [ "## Define Costs\n", "\n", - "Investment costs are **annualized** (\u20ac/year) to compare with operating costs:" + "Investment costs are **annualized** (€/year) to compare with operating costs:" ] }, { @@ -149,14 +136,14 @@ "outputs": [], "source": [ "# Cost parameters\n", - "GAS_PRICE = 0.12 # \u20ac/kWh - high gas price makes solar attractive\n", + "GAS_PRICE = 0.12 # €/kWh - high gas price makes solar attractive\n", "\n", - "# Solar collectors: 400 \u20ac/kW installed, 20-year lifetime \u2192 ~25 \u20ac/kW/year annualized\n", + "# Solar collectors: 400 €/kW installed, 20-year lifetime → ~25 €/kW/year annualized\n", "# (simplified, real calculation would include interest rate)\n", - "SOLAR_COST_PER_KW = 20 # \u20ac/kW/year\n", + "SOLAR_COST_PER_KW = 20 # €/kW/year\n", "\n", - "# Buffer tank: 50 \u20ac/kWh capacity, 30-year lifetime \u2192 ~2 \u20ac/kWh/year\n", - "TANK_COST_PER_KWH = 1.5 # \u20ac/kWh/year\n", + "# Buffer tank: 50 €/kWh capacity, 30-year lifetime → ~2 €/kWh/year\n", + "TANK_COST_PER_KWH = 1.5 # €/kWh/year\n", "\n", "# Scale factor: We model 1 week, but costs are annual\n", "# So we scale investment costs to weekly equivalent\n", @@ -164,8 +151,8 @@ "SOLAR_COST_WEEKLY = SOLAR_COST_PER_KW / WEEKS_PER_YEAR\n", "TANK_COST_WEEKLY = TANK_COST_PER_KWH / WEEKS_PER_YEAR\n", "\n", - "print(f'Solar cost: {SOLAR_COST_WEEKLY:.3f} \u20ac/kW/week')\n", - "print(f'Tank cost: {TANK_COST_WEEKLY:.4f} \u20ac/kWh/week')" + "print(f'Solar cost: {SOLAR_COST_WEEKLY:.3f} €/kW/week')\n", + "print(f'Tank cost: {TANK_COST_WEEKLY:.4f} €/kWh/week')" ] }, { @@ -192,7 +179,7 @@ " fx.Bus('Heat', carrier='heat'),\n", " fx.Bus('Gas', carrier='gas'),\n", " # === Effects ===\n", - " fx.Effect('costs', '\u20ac', 'Total Costs', is_standard=True, is_objective=True),\n", + " fx.Effect('costs', '€', 'Total Costs', is_standard=True, is_objective=True),\n", " # === Gas Supply ===\n", " fx.Source(\n", " 'GasGrid',\n", @@ -324,11 +311,11 @@ "gas_costs = total_costs - solar_invest - tank_invest\n", "\n", "print('=== Weekly Cost Breakdown ===')\n", - "print(f'Solar investment: {solar_invest:.2f} \u20ac ({solar_invest / total_costs * 100:.1f}%)')\n", - "print(f'Tank investment: {tank_invest:.2f} \u20ac ({tank_invest / total_costs * 100:.1f}%)')\n", - "print(f'Gas operating: {gas_costs:.2f} \u20ac ({gas_costs / total_costs * 100:.1f}%)')\n", - "print('\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500')\n", - "print(f'Total: {total_costs:.2f} \u20ac')" + "print(f'Solar investment: {solar_invest:.2f} € ({solar_invest / total_costs * 100:.1f}%)')\n", + "print(f'Tank investment: {tank_invest:.2f} € ({tank_invest / total_costs * 100:.1f}%)')\n", + "print(f'Gas operating: {gas_costs:.2f} € ({gas_costs / total_costs * 100:.1f}%)')\n", + "print('─────────────────────────────')\n", + "print(f'Total: {total_costs:.2f} €')" ] }, { @@ -394,10 +381,10 @@ "savings_pct = savings / gas_only_cost * 100\n", "\n", "print('=== Comparison with Gas-Only ===')\n", - "print(f'Gas-only cost: {gas_only_cost:.2f} \u20ac/week')\n", - "print(f'With solar: {total_costs:.2f} \u20ac/week')\n", - "print(f'Savings: {savings:.2f} \u20ac/week ({savings_pct:.1f}%)')\n", - "print(f'Annual savings: {savings * 52:.0f} \u20ac/year')" + "print(f'Gas-only cost: {gas_only_cost:.2f} €/week')\n", + "print(f'With solar: {total_costs:.2f} €/week')\n", + "print(f'Savings: {savings:.2f} €/week ({savings_pct:.1f}%)')\n", + "print(f'Annual savings: {savings * 52:.0f} €/year')" ] }, { diff --git a/docs/notebooks/04-operational-constraints.ipynb b/docs/notebooks/04-operational-constraints.ipynb index 2fbd78cb9..44aea26ff 100644 --- a/docs/notebooks/04-operational-constraints.ipynb +++ b/docs/notebooks/04-operational-constraints.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Operational Constraints: Industrial Boiler with Startup Costs\n", - "\n", - "## User Story\n", - "\n", - "> *You operate an industrial steam boiler for a factory. The boiler has significant startup costs (fuel for warmup, operator time) and can't be cycled on/off frequently due to thermal stress. You need to find an operating schedule that minimizes costs while respecting these operational constraints.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **StatusParameters**: Model on/off decisions with constraints\n", - "- **Startup costs**: Penalties for turning equipment on\n", - "- **Minimum uptime/downtime**: Prevent rapid cycling\n", - "- **Minimum load**: Equipment can't run below a certain output" - ] + "source": "# Constraints\n\nIndustrial boiler with startup costs, minimum uptime, and load constraints.\n\nThis notebook introduces:\n\n- **StatusParameters**: Model on/off decisions with constraints\n- **Startup costs**: Penalties for turning equipment on\n- **Minimum uptime/downtime**: Prevent rapid cycling\n- **Minimum load**: Equipment can't run below a certain output" }, { "cell_type": "markdown", diff --git a/docs/notebooks/05-multi-carrier-system.ipynb b/docs/notebooks/05-multi-carrier-system.ipynb index 9e1a77bcc..de2ce1b5f 100644 --- a/docs/notebooks/05-multi-carrier-system.ipynb +++ b/docs/notebooks/05-multi-carrier-system.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Multi-Carrier System: Hospital with CHP\n", - "\n", - "## User Story\n", - "\n", - "> *You're the energy manager of a hospital. The facility needs both electricity and heat around the clock. You have a Combined Heat and Power (CHP) unit that produces both simultaneously, plus a gas boiler for backup heat and a grid connection for electricity. Your goal is to minimize energy costs while ensuring reliable supply.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **Multiple energy carriers**: Electricity, heat, and gas in one system\n", - "- **CHP (Cogeneration)**: Equipment producing multiple outputs\n", - "- **Electricity market**: Buying and selling to the grid\n", - "- **Carrier colors**: Visual distinction between energy types" - ] + "source": "# Multi-Carrier\n\nHospital with CHP producing both electricity and heat.\n\nThis notebook introduces:\n\n- **Multiple energy carriers**: Electricity, heat, and gas in one system\n- **CHP (Cogeneration)**: Equipment producing multiple outputs\n- **Electricity market**: Buying and selling to the grid\n- **Carrier colors**: Visual distinction between energy types" }, { "cell_type": "markdown", diff --git a/docs/notebooks/06-piecewise-efficiency.ipynb b/docs/notebooks/06-piecewise-efficiency.ipynb index af3cb5375..bb50793ff 100644 --- a/docs/notebooks/06-piecewise-efficiency.ipynb +++ b/docs/notebooks/06-piecewise-efficiency.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Piecewise Efficiency: Heat Pump with Variable COP\n", - "\n", - "## User Story\n", - "\n", - "> *You're installing a heat pump for a commercial building. The heat pump's efficiency (COP - Coefficient of Performance) varies with the outdoor temperature: it's more efficient in mild weather than in cold weather. You want to model this realistically to accurately predict operating costs.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **Piecewise linear functions**: Approximate non-linear behavior\n", - "- **Variable efficiency**: COP changes with operating conditions\n", - "- **LinearConverter with segments**: Multiple operating points\n", - "- **Piecewise effects**: Non-linear cost curves" - ] + "source": "# Piecewise\n\nHeat pump with temperature-dependent COP and part-load curves.\n\nThis notebook introduces:\n\n- **Piecewise linear functions**: Approximate non-linear behavior\n- **Variable efficiency**: COP changes with operating conditions\n- **LinearConverter with segments**: Multiple operating points\n- **Piecewise effects**: Non-linear cost curves" }, { "cell_type": "markdown", diff --git a/docs/notebooks/07-scenarios-and-periods.ipynb b/docs/notebooks/07-scenarios-and-periods.ipynb index 37fc52732..c8294ba7e 100644 --- a/docs/notebooks/07-scenarios-and-periods.ipynb +++ b/docs/notebooks/07-scenarios-and-periods.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Scenarios and Periods: Investment Planning Under Uncertainty\n", - "\n", - "## User Story\n", - "\n", - "> *You're planning a district heating system for a new residential development. The project spans 3 years, and you face uncertainty: Will the winter be mild or harsh? Will gas prices stay stable or spike? You need to make investment decisions today that work well across multiple possible futures.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **Periods**: Multiple planning years with different conditions\n", - "- **Scenarios**: Uncertain futures (mild vs. harsh winter)\n", - "- **Scenario weights**: Probability-weighted optimization\n", - "- **Multi-dimensional data**: Parameters that vary by time, period, and scenario" - ] + "source": "# Scenarios\n\nMulti-year planning with uncertain demand scenarios.\n\nThis notebook introduces:\n\n- **Periods**: Multiple planning years with different conditions\n- **Scenarios**: Uncertain futures (mild vs. harsh winter)\n- **Scenario weights**: Probability-weighted optimization\n- **Multi-dimensional data**: Parameters that vary by time, period, and scenario" }, { "cell_type": "markdown", diff --git a/docs/notebooks/08-large-scale-optimization.ipynb b/docs/notebooks/08-large-scale-optimization.ipynb index 4d745f4b4..3dcbb4bb9 100644 --- a/docs/notebooks/08-large-scale-optimization.ipynb +++ b/docs/notebooks/08-large-scale-optimization.ipynb @@ -4,20 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Large-Scale Optimization: Computational Efficiency Techniques\n", - "\n", - "## User Story\n", - "\n", - "> *You're planning a district energy system with a full year of hourly data (8,760 timesteps). The optimization takes hours to complete. You need to find ways to get good solutions faster for iterative design exploration.*\n", - "\n", - "This notebook introduces:\n", - "\n", - "- **Resampling**: Reduce time resolution (e.g., hourly → 4-hourly)\n", - "- **Clustering**: Identify typical periods (e.g., 8 representative days)\n", - "- **Two-stage optimization**: Size with reduced data, dispatch at full resolution\n", - "- **Speed vs. accuracy trade-offs**: When to use each technique" - ] + "source": "# Large-Scale\n\nSpeed up large problems with resampling and two-stage optimization.\n\nThis notebook introduces:\n\n- **Resampling**: Reduce time resolution (e.g., hourly → 4-hourly)\n- **Clustering**: Identify typical periods (e.g., 8 representative days)\n- **Two-stage optimization**: Size with reduced data, dispatch at full resolution\n- **Speed vs. accuracy trade-offs**: When to use each technique" }, { "cell_type": "markdown", diff --git a/docs/notebooks/09-plotting-and-data-access.ipynb b/docs/notebooks/09-plotting-and-data-access.ipynb index 7b4a0e3fe..7ab92bbec 100644 --- a/docs/notebooks/09-plotting-and-data-access.ipynb +++ b/docs/notebooks/09-plotting-and-data-access.ipynb @@ -4,21 +4,7 @@ "cell_type": "markdown", "id": "0", "metadata": {}, - "source": [ - "# Plotting and Data Access\n", - "\n", - "This notebook provides a comprehensive guide to accessing optimization results and creating visualizations in flixopt.\n", - "\n", - "**Topics covered:**\n", - "- Loading saved FlowSystems from NetCDF files\n", - "- Accessing data (flow rates, sizes, effects, charge states)\n", - "- Time series plots (balance, flows, storage)\n", - "- Aggregated plots (sizes, effects, duration curves)\n", - "- Heatmaps with time reshaping\n", - "- Sankey diagrams\n", - "- Topology visualization\n", - "- Color customization and export" - ] + "source": "# Plotting\n\nAccess optimization results and create visualizations.\n\nThis notebook covers:\n\n- Loading saved FlowSystems from NetCDF files\n- Accessing data (flow rates, sizes, effects, charge states)\n- Time series plots (balance, flows, storage)\n- Aggregated plots (sizes, effects, duration curves)\n- Heatmaps with time reshaping\n- Sankey diagrams\n- Topology visualization\n- Color customization and export" }, { "cell_type": "markdown", @@ -6896,7 +6882,7 @@ "\n", "`).concat($R(e),`\n", "`));var s=new U_({actual:e,expected:t,message:r,operator:i,stackStartFn:n});throw s.generatedMessage=o,s}}Ef.match=function e(t,r,n){T4e(t,r,n,e,\"match\")};Ef.doesNotMatch=function e(t,r,n){T4e(t,r,n,e,\"doesNotMatch\")};function A4e(){for(var e=arguments.length,t=new Array(e),r=0;r{var xE=1e3,bE=xE*60,wE=bE*60,TE=wE*24,FEt=TE*365.25;M4e.exports=function(e,t){t=t||{};var r=typeof e;if(r===\"string\"&&e.length>0)return zEt(e);if(r===\"number\"&&isNaN(e)===!1)return t.long?qEt(e):OEt(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))};function zEt(e){if(e=String(e),!(e.length>100)){var t=/^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||\"ms\").toLowerCase();switch(n){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*FEt;case\"days\":case\"day\":case\"d\":return r*TE;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*wE;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*bE;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*xE;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function OEt(e){return e>=TE?Math.round(e/TE)+\"d\":e>=wE?Math.round(e/wE)+\"h\":e>=bE?Math.round(e/bE)+\"m\":e>=xE?Math.round(e/xE)+\"s\":e+\"ms\"}function qEt(e){return iD(e,TE,\"day\")||iD(e,wE,\"hour\")||iD(e,bE,\"minute\")||iD(e,xE,\"second\")||e+\" ms\"}function iD(e,t,r){if(!(e{Lc=k4e.exports=nW.debug=nW.default=nW;Lc.coerce=GEt;Lc.disable=UEt;Lc.enable=NEt;Lc.enabled=VEt;Lc.humanize=E4e();Lc.names=[];Lc.skips=[];Lc.formatters={};var iW;function BEt(e){var t=0,r;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return Lc.colors[Math.abs(t)%Lc.colors.length]}function nW(e){function t(){if(t.enabled){var r=t,n=+new Date,i=n-(iW||n);r.diff=i,r.prev=iW,r.curr=n,iW=n;for(var a=new Array(arguments.length),o=0;o{lp=P4e.exports=C4e();lp.log=WEt;lp.formatArgs=jEt;lp.save=XEt;lp.load=L4e;lp.useColors=HEt;lp.storage=typeof chrome!=\"undefined\"&&typeof chrome.storage!=\"undefined\"?chrome.storage.local:ZEt();lp.colors=[\"lightseagreen\",\"forestgreen\",\"goldenrod\",\"dodgerblue\",\"darkorchid\",\"crimson\"];function HEt(){return typeof window!=\"undefined\"&&window.process&&window.process.type===\"renderer\"?!0:typeof document!=\"undefined\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!=\"undefined\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!=\"undefined\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!=\"undefined\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}lp.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return\"[UnexpectedJSONParseError]: \"+t.message}};function jEt(e){var t=this.useColors;if(e[0]=(t?\"%c\":\"\")+this.namespace+(t?\" %c\":\" \")+e[0]+(t?\"%c \":\" \")+\"+\"+lp.humanize(this.diff),!!t){var r=\"color: \"+this.color;e.splice(1,0,r,\"color: inherit\");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(a){a!==\"%%\"&&(n++,a===\"%c\"&&(i=n))}),e.splice(i,0,r)}}function WEt(){return typeof console==\"object\"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function XEt(e){try{e==null?lp.storage.removeItem(\"debug\"):lp.storage.debug=e}catch(t){}}function L4e(){var e;try{e=lp.storage.debug}catch(t){}return!e&&typeof process!=\"undefined\"&&\"env\"in process&&(e=process.env.DEBUG),e}lp.enable(L4e());function ZEt(){try{return window.localStorage}catch(e){}}});var N4e=ye((_dr,B4e)=>{var _A=sE(),V_=I4e()(\"stream-parser\");B4e.exports=KEt;var D4e=-1,nD=0,YEt=1,F4e=2;function KEt(e){var t=e&&typeof e._transform==\"function\",r=e&&typeof e._write==\"function\";if(!t&&!r)throw new Error(\"must pass a Writable or Transform stream in\");V_(\"extending Parser into stream\"),e._bytes=JEt,e._skipBytes=$Et,t&&(e._passthrough=QEt),t?e._transform=tkt:e._write=ekt}function AE(e){V_(\"initializing parser stream\"),e._parserBytesLeft=0,e._parserBuffers=[],e._parserBuffered=0,e._parserState=D4e,e._parserCallback=null,typeof e.push==\"function\"&&(e._parserOutput=e.push.bind(e)),e._parserInit=!0}function JEt(e,t){_A(!this._parserCallback,'there is already a \"callback\" set!'),_A(isFinite(e)&&e>0,'can only buffer a finite number of bytes > 0, got \"'+e+'\"'),this._parserInit||AE(this),V_(\"buffering %o bytes\",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=nD}function $Et(e,t){_A(!this._parserCallback,'there is already a \"callback\" set!'),_A(e>0,'can only skip > 0 bytes, got \"'+e+'\"'),this._parserInit||AE(this),V_(\"skipping %o bytes\",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=YEt}function QEt(e,t){_A(!this._parserCallback,'There is already a \"callback\" set!'),_A(e>0,'can only pass through > 0 bytes, got \"'+e+'\"'),this._parserInit||AE(this),V_(\"passing through %o bytes\",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=F4e}function ekt(e,t,r){this._parserInit||AE(this),V_(\"write(%o bytes)\",e.length),typeof t==\"function\"&&(r=t),O4e(this,e,null,r)}function tkt(e,t,r){this._parserInit||AE(this),V_(\"transform(%o bytes)\",e.length),typeof t!=\"function\"&&(t=this._parserOutput),O4e(this,e,t,r)}function z4e(e,t,r,n){return e._parserBytesLeft<=0?n(new Error(\"got data but not currently parsing anything\")):t.length<=e._parserBytesLeft?function(){return R4e(e,t,r,n)}:function(){var i=t.slice(0,e._parserBytesLeft);return R4e(e,i,r,function(a){if(a)return n(a);if(t.length>i.length)return function(){return z4e(e,t.slice(i.length),r,n)}})}}function R4e(e,t,r,n){if(e._parserBytesLeft-=t.length,V_(\"%o bytes left for stream piece\",e._parserBytesLeft),e._parserState===nD?(e._parserBuffers.push(t),e._parserBuffered+=t.length):e._parserState===F4e&&r(t),e._parserBytesLeft===0){var i=e._parserCallback;if(i&&e._parserState===nD&&e._parserBuffers.length>1&&(t=Buffer.concat(e._parserBuffers,e._parserBuffered)),e._parserState!==nD&&(t=null),e._parserCallback=null,e._parserBuffered=0,e._parserState=D4e,e._parserBuffers.splice(0),i){var a=[];t&&a.push(t),r&&a.push(r);var o=i.length>a.length;o&&a.push(q4e(n));var s=i.apply(e,a);if(!o||n===s)return n}}else return n}var O4e=q4e(z4e);function q4e(e){return function(){for(var t=e.apply(this,arguments);typeof t==\"function\";)t=t();return t}}});var rc=ye(Hy=>{\"use strict\";var U4e=RSe().Transform,rkt=N4e();function SE(){U4e.call(this,{readableObjectMode:!0})}SE.prototype=Object.create(U4e.prototype);SE.prototype.constructor=SE;rkt(SE.prototype);Hy.ParserStream=SE;Hy.sliceEq=function(e,t,r){for(var n=t,i=0;i{\"use strict\";var xA=rc().readUInt16BE,oW=rc().readUInt32BE;function ME(e,t){if(e.length<4+t)return null;var r=oW(e,t);return e.length>4&15,n=e[4]&15,i=e[5]>>4&15,a=xA(e,6),o=8,s=0;sa.width||i.width===a.width&&i.height>a.height?i:a}),r=e.reduce(function(i,a){return i.height>a.height||i.height===a.height&&i.width>a.width?i:a}),n;return t.width>r.height||t.width===r.height&&t.height>r.width?n=t:n=r,n}oD.exports.readSizeFromMeta=function(e){var t={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(skt(e,t),!!t.sizes.length){var r=lkt(t.sizes),n=1;t.transforms.forEach(function(a){var o={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},s={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(a.type===\"imir\"&&(a.value===0?n=s[n]:(n=s[n],n=o[n],n=o[n])),a.type===\"irot\")for(var l=0;l{\"use strict\";function sD(e,t){var r=new Error(e);return r.code=t,r}function ukt(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}function jy(e,t,r){this.input=e.subarray(t,r),this.start=t;var n=String.fromCharCode.apply(null,this.input.subarray(0,4));if(n!==\"II*\\0\"&&n!==\"MM\\0*\")throw sD(\"invalid TIFF signature\",\"EBADDATA\");this.big_endian=n[0]===\"M\"}jy.prototype.each=function(e){this.aborted=!1;var t=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:t}];this.ifds_to_read.length>0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,e)}};jy.prototype.read_uint16=function(e){var t=this.input;if(e+2>t.length)throw sD(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?t[e]*256+t[e+1]:t[e]+t[e+1]*256};jy.prototype.read_uint32=function(e){var t=this.input;if(e+4>t.length)throw sD(\"unexpected EOF\",\"EBADDATA\");return this.big_endian?t[e]*16777216+t[e+1]*65536+t[e+2]*256+t[e+3]:t[e]+t[e+1]*256+t[e+2]*65536+t[e+3]*16777216};jy.prototype.is_subifd_link=function(e,t){return e===0&&t===34665||e===0&&t===34853||e===34665&&t===40965};jy.prototype.exif_format_length=function(e){switch(e){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}};jy.prototype.exif_format_read=function(e,t){var r;switch(e){case 1:case 2:return r=this.input[t],r;case 6:return r=this.input[t],r|(r&128)*33554430;case 3:return r=this.read_uint16(t),r;case 8:return r=this.read_uint16(t),r|(r&32768)*131070;case 4:return r=this.read_uint32(t),r;case 9:return r=this.read_uint32(t),r|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}};jy.prototype.scan_ifd=function(e,t,r){var n=this.read_uint16(t);t+=2;for(var i=0;ithis.input.length)throw sD(\"unexpected EOF\",\"EBADDATA\");for(var h=[],d=c,v=0;v0&&(this.ifds_to_read.push({id:a,offset:h[0]}),f=!0);var b={is_big_endian:this.big_endian,ifd:e,tag:a,format:o,count:s,entry_offset:t+this.start,data_length:u,data_offset:c+this.start,value:h,is_subifd_link:f};if(r(b)===!1){this.aborted=!0;return}t+=12}e===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(t)})};sW.exports.ExifParser=jy;sW.exports.get_orientation=function(e){var t=0;try{return new jy(e,0,e.length).each(function(r){if(r.ifd===0&&r.tag===274&&Array.isArray(r.value))return t=r.value[0],!1}),t}catch(r){return-1}}});var H4e=ye((Tdr,G4e)=>{\"use strict\";var ckt=rc().str2arr,fkt=rc().sliceEq,hkt=rc().readUInt32BE,uD=V4e(),dkt=lD(),vkt=ckt(\"ftyp\");G4e.exports=function(e){if(fkt(e,4,vkt)){var t=uD.unbox(e,0);if(t){var r=uD.getMimeType(t.data);if(r){for(var n,i=t.end;;){var a=uD.unbox(e,i);if(!a)break;if(i=a.end,a.boxtype===\"mdat\")return;if(a.boxtype===\"meta\"){n=a.data;break}}if(n){var o=uD.readSizeFromMeta(n);if(o){var s={width:o.width,height:o.height,type:r.type,mime:r.mime,wUnits:\"px\",hUnits:\"px\"};if(o.variants.length>1&&(s.variants=o.variants),o.orientation&&(s.orientation=o.orientation),o.exif_location&&o.exif_location.offset+o.exif_location.length<=e.length){var l=hkt(e,o.exif_location.offset),u=e.slice(o.exif_location.offset+l+4,o.exif_location.offset+o.exif_location.length),c=dkt.get_orientation(u);c>0&&(s.orientation=c)}return s}}}}}}});var X4e=ye((Adr,W4e)=>{\"use strict\";var pkt=rc().str2arr,gkt=rc().sliceEq,j4e=rc().readUInt16LE,mkt=pkt(\"BM\");W4e.exports=function(e){if(!(e.length<26)&&gkt(e,0,mkt))return{width:j4e(e,18),height:j4e(e,22),type:\"bmp\",mime:\"image/bmp\",wUnits:\"px\",hUnits:\"px\"}}});var $4e=ye((Sdr,J4e)=>{\"use strict\";var K4e=rc().str2arr,Z4e=rc().sliceEq,Y4e=rc().readUInt16LE,ykt=K4e(\"GIF87a\"),_kt=K4e(\"GIF89a\");J4e.exports=function(e){if(!(e.length<10)&&!(!Z4e(e,0,ykt)&&!Z4e(e,0,_kt)))return{width:Y4e(e,6),height:Y4e(e,8),type:\"gif\",mime:\"image/gif\",wUnits:\"px\",hUnits:\"px\"}}});var tEe=ye((Mdr,eEe)=>{\"use strict\";var lW=rc().readUInt16LE,xkt=0,bkt=1,Q4e=16;eEe.exports=function(e){var t=lW(e,0),r=lW(e,2),n=lW(e,4);if(!(t!==xkt||r!==bkt||!n)){for(var i=[],a={width:0,height:0},o=0;oa.width||l>a.height)&&(a=u)}return{width:a.width,height:a.height,variants:i,type:\"ico\",mime:\"image/x-icon\",wUnits:\"px\",hUnits:\"px\"}}}});var iEe=ye((Edr,rEe)=>{\"use strict\";var uW=rc().readUInt16BE,wkt=rc().str2arr,Tkt=rc().sliceEq,Akt=lD(),Skt=wkt(\"Exif\\0\\0\");rEe.exports=function(e){if(!(e.length<2)&&!(e[0]!==255||e[1]!==216||e[2]!==255))for(var t=2;;){for(;;){if(e.length-t<2)return;if(e[t++]===255)break}for(var r=e[t++],n;r===255;)r=e[t++];if(208<=r&&r<=217||r===1)n=0;else if(192<=r&&r<=254){if(e.length-t<2)return;n=uW(e,t)-2,t+=2}else return;if(r===217||r===218)return;var i;if(r===225&&n>=10&&Tkt(e,t,Skt)&&(i=Akt.get_orientation(e.slice(t+6,t+n))),n>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(e.length-t0&&(a.orientation=i),a}t+=n}}});var lEe=ye((kdr,sEe)=>{\"use strict\";var oEe=rc().str2arr,nEe=rc().sliceEq,aEe=rc().readUInt32BE,Mkt=oEe(`\\x89PNG\\r\n", - "\u001A\n", + "\u001a\n", "`),Ekt=oEe(\"IHDR\");sEe.exports=function(e){if(!(e.length<24)&&nEe(e,0,Mkt)&&nEe(e,12,Ekt))return{width:aEe(e,16),height:aEe(e,20),type:\"png\",mime:\"image/png\",wUnits:\"px\",hUnits:\"px\"}}});var fEe=ye((Cdr,cEe)=>{\"use strict\";var kkt=rc().str2arr,Ckt=rc().sliceEq,uEe=rc().readUInt32BE,Lkt=kkt(\"8BPS\\0\u0001\");cEe.exports=function(e){if(!(e.length<22)&&Ckt(e,0,Lkt))return{width:uEe(e,18),height:uEe(e,14),type:\"psd\",mime:\"image/vnd.adobe.photoshop\",wUnits:\"px\",hUnits:\"px\"}}});var vEe=ye((Ldr,dEe)=>{\"use strict\";function Pkt(e){return e===32||e===9||e===13||e===10}function bA(e){return typeof e==\"number\"&&isFinite(e)&&e>0}function Ikt(e){var t=0,r=e.length;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t]*>/,Dkt=/^<([-_.:a-zA-Z0-9]+:)?svg\\s/,Fkt=/[^-]\\bwidth=\"([^%]+?)\"|[^-]\\bwidth='([^%]+?)'/,zkt=/\\bheight=\"([^%]+?)\"|\\bheight='([^%]+?)'/,Okt=/\\bview[bB]ox=\"(.+?)\"|\\bview[bB]ox='(.+?)'/,hEe=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function qkt(e){var t=e.match(Fkt),r=e.match(zkt),n=e.match(Okt);return{width:t&&(t[1]||t[2]),height:r&&(r[1]||r[2]),viewbox:n&&(n[1]||n[2])}}function Um(e){return hEe.test(e)?e.match(hEe)[0]:\"px\"}dEe.exports=function(e){if(Ikt(e)){for(var t=\"\",r=0;r{\"use strict\";var mEe=rc().str2arr,pEe=rc().sliceEq,Bkt=rc().readUInt16LE,Nkt=rc().readUInt16BE,Ukt=rc().readUInt32LE,Vkt=rc().readUInt32BE,Gkt=mEe(\"II*\\0\"),Hkt=mEe(\"MM\\0*\");function cD(e,t,r){return r?Nkt(e,t):Bkt(e,t)}function cW(e,t,r){return r?Vkt(e,t):Ukt(e,t)}function gEe(e,t,r){var n=cD(e,t+2,r),i=cW(e,t+4,r);return i!==1||n!==3&&n!==4?null:n===3?cD(e,t+8,r):cW(e,t+8,r)}yEe.exports=function(e){if(!(e.length<8)&&!(!pEe(e,0,Gkt)&&!pEe(e,0,Hkt))){var t=e[0]===77,r=cW(e,4,t)-8;if(!(r<0)){var n=r+8;if(!(e.length-n<2)){var i=cD(e,n+0,t)*12;if(!(i<=0)&&(n+=2,!(e.length-n{\"use strict\";var wEe=rc().str2arr,xEe=rc().sliceEq,bEe=rc().readUInt16LE,fW=rc().readUInt32LE,jkt=lD(),Wkt=wEe(\"RIFF\"),Xkt=wEe(\"WEBP\");function Zkt(e,t){if(!(e[t+3]!==157||e[t+4]!==1||e[t+5]!==42))return{width:bEe(e,t+6)&16383,height:bEe(e,t+8)&16383,type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}function Ykt(e,t){if(e[t]===47){var r=fW(e,t+1);return{width:(r&16383)+1,height:(r>>14&16383)+1,type:\"webp\",mime:\"image/webp\",wUnits:\"px\",hUnits:\"px\"}}}function Kkt(e,t){return{width:(e[t+6]<<16|e[t+5]<<8|e[t+4])+1,height:(e[t+9]<e.length)){for(;t+8=10?r=r||Zkt(e,t+8):a===\"VP8L\"&&o>=9?r=r||Ykt(e,t+8):a===\"VP8X\"&&o>=10?r=r||Kkt(e,t+8):a===\"EXIF\"&&(n=jkt.get_orientation(e.slice(t+8,t+8+o)),t=1/0),t+=8+o}if(r)return n>0&&(r.orientation=n),r}}}});var MEe=ye((Rdr,SEe)=>{\"use strict\";SEe.exports={avif:H4e(),bmp:X4e(),gif:$4e(),ico:tEe(),jpeg:iEe(),png:lEe(),psd:fEe(),svg:vEe(),tiff:_Ee(),webp:AEe()}});var EEe=ye((Ddr,dW)=>{\"use strict\";var hW=MEe();function Jkt(e){for(var t=Object.keys(hW),r=0;r{\"use strict\";var $kt=EEe(),Qkt=Py().IMAGE_URL_PREFIX,eCt=c2().Buffer;kEe.getImageSize=function(e){var t=e.replace(Qkt,\"\"),r=new eCt(t,\"base64\");return $kt(r)}});var IEe=ye((zdr,PEe)=>{\"use strict\";var LEe=Dr(),tCt=ZT(),rCt=Eo(),fD=ho(),iCt=Dr().maxRowLength,nCt=CEe().getImageSize;PEe.exports=function(t,r){var n,i;if(r._hasZ)n=r.z.length,i=iCt(r.z);else if(r._hasSource){var a=nCt(r.source);n=a.height,i=a.width}var o=fD.getFromId(t,r.xaxis||\"x\"),s=fD.getFromId(t,r.yaxis||\"y\"),l=o.d2c(r.x0)-r.dx/2,u=s.d2c(r.y0)-r.dy/2,c,f=[l,l+i*r.dx],h=[u,u+n*r.dy];if(o&&o.type===\"log\")for(c=0;c{\"use strict\";var lCt=Oa(),A2=Dr(),REe=A2.strTranslate,uCt=Wp(),cCt=ZT(),fCt=QV(),hCt=f8().STYLE;DEe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis,s=!t._context._exportedPlot&&fCt();A2.makeTraceGroups(i,n,\"im\").each(function(l){var u=lCt.select(this),c=l[0],f=c.trace,h=(f.zsmooth===\"fast\"||f.zsmooth===!1&&s)&&!f._hasZ&&f._hasSource&&a.type===\"linear\"&&o.type===\"linear\";f._realImage=h;var d=c.z,v=c.x0,_=c.y0,b=c.w,p=c.h,k=f.dx,E=f.dy,S,L,x,C,M,g;for(g=0;S===void 0&&g0;)L=a.c2p(v+g*k),g--;for(g=0;C===void 0&&g0;)M=o.c2p(_+g*E),g--;if(Lj[0];if(re||oe){var _e=S+T/2,Ee=C+z/2;H+=\"transform:\"+REe(_e+\"px\",Ee+\"px\")+\"scale(\"+(re?-1:1)+\",\"+(oe?-1:1)+\")\"+REe(-_e+\"px\",-Ee+\"px\")+\";\"}}Z.attr(\"style\",H);var Ce=new Promise(function(me){if(f._hasZ)me();else if(f._hasSource)if(f._canvas&&f._canvas.el.width===b&&f._canvas.el.height===p&&f._canvas.source===f.source)me();else{var ie=document.createElement(\"canvas\");ie.width=b,ie.height=p;var Se=ie.getContext(\"2d\",{willReadFrequently:!0});f._image=f._image||new Image;var Le=f._image;Le.onload=function(){Se.drawImage(Le,0,0),f._canvas={el:ie,source:f.source},me()},Le.setAttribute(\"src\",f.source)}}).then(function(){var me,ie;if(f._hasZ)ie=G(function(Ae,Fe){var Pe=d[Fe][Ae];return A2.isTypedArray(Pe)&&(Pe=Array.from(Pe)),Pe}),me=ie.toDataURL(\"image/png\");else if(f._hasSource)if(h)me=f.source;else{var Se=f._canvas.el.getContext(\"2d\",{willReadFrequently:!0}),Le=Se.getImageData(0,0,b,p).data;ie=G(function(Ae,Fe){var Pe=4*(Fe*b+Ae);return[Le[Pe],Le[Pe+1],Le[Pe+2],Le[Pe+3]]}),me=ie.toDataURL(\"image/png\")}Z.attr({\"xlink:href\":me,height:z,width:T,x:S,y:C})});t._promises.push(Ce)})}});var OEe=ye((qdr,zEe)=>{\"use strict\";var dCt=Oa();zEe.exports=function(t){dCt.select(t).selectAll(\".im image\").style(\"opacity\",function(r){return r[0].trace.opacity})}});var UEe=ye((Bdr,NEe)=>{\"use strict\";var qEe=vf(),BEe=Dr(),hD=BEe.isArrayOrTypedArray,vCt=ZT();NEe.exports=function(t,r,n){var i=t.cd[0],a=i.trace,o=t.xa,s=t.ya;if(!(qEe.inbox(r-i.x0,r-(i.x0+i.w*a.dx),0)>0||qEe.inbox(n-i.y0,n-(i.y0+i.h*a.dy),0)>0)){var l=Math.floor((r-i.x0)/a.dx),u=Math.floor(Math.abs(n-i.y0)/a.dy),c;if(a._hasZ?c=i.z[u][l]:a._hasSource&&(c=a._canvas.el.getContext(\"2d\",{willReadFrequently:!0}).getImageData(l,u,1,1).data),!!c){var f=i.hi||a.hoverinfo,h;if(f){var d=f.split(\"+\");d.indexOf(\"all\")!==-1&&(d=[\"color\"]),d.indexOf(\"color\")!==-1&&(h=!0)}var v=vCt.colormodel[a.colormodel],_=v.colormodel||a.colormodel,b=_.length,p=a._scaler(c),k=v.suffix,E=[];(a.hovertemplate||h)&&(E.push(\"[\"+[p[0]+k[0],p[1]+k[1],p[2]+k[2]].join(\", \")),b===4&&E.push(\", \"+p[3]+k[3]),E.push(\"]\"),E=E.join(\"\"),t.extraText=_.toUpperCase()+\": \"+E);var S;hD(a.hovertext)&&hD(a.hovertext[u])?S=a.hovertext[u][l]:hD(a.text)&&hD(a.text[u])&&(S=a.text[u][l]);var L=s.c2p(i.y0+(u+.5)*a.dy),x=i.x0+(l+.5)*a.dx,C=i.y0+(u+.5)*a.dy,M=\"[\"+c.slice(0,a.colormodel.length).join(\", \")+\"]\";return[BEe.extendFlat(t,{index:[u,l],x0:o.c2p(i.x0+l*a.dx),x1:o.c2p(i.x0+(l+1)*a.dx),y0:L,y1:L,color:p,xVal:x,xLabelVal:x,yVal:C,yLabelVal:C,zLabelVal:M,text:S,hovertemplateLabels:{zLabel:M,colorLabel:E,\"color[0]Label\":p[0]+k[0],\"color[1]Label\":p[1]+k[1],\"color[2]Label\":p[2]+k[2],\"color[3]Label\":p[3]+k[3]}})]}}}});var GEe=ye((Ndr,VEe)=>{\"use strict\";VEe.exports=function(t,r){return\"xVal\"in r&&(t.x=r.xVal),\"yVal\"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t.color=r.color,t.colormodel=r.trace.colormodel,t.z||(t.z=r.color),t}});var jEe=ye((Udr,HEe)=>{\"use strict\";HEe.exports={attributes:uH(),supplyDefaults:U3e(),calc:IEe(),plot:FEe(),style:OEe(),hoverPoints:UEe(),eventData:GEe(),moduleType:\"trace\",name:\"image\",basePlotModule:ph(),categories:[\"cartesian\",\"svg\",\"2dMap\",\"noSortingByValue\"],animatable:!1,meta:{}}});var XEe=ye((Vdr,WEe)=>{\"use strict\";WEe.exports=jEe()});var S2=ye((Gdr,YEe)=>{\"use strict\";var pCt=Gl(),gCt=Cc().attributes,mCt=ec(),yCt=Lh(),{hovertemplateAttrs:_Ct,texttemplateAttrs:xCt,templatefallbackAttrs:ZEe}=Ll(),EE=Ao().extendFlat,bCt=Pd().pattern,dD=mCt({editType:\"plot\",arrayOk:!0,colorEditType:\"plot\"});YEe.exports={labels:{valType:\"data_array\",editType:\"calc\"},label0:{valType:\"number\",dflt:0,editType:\"calc\"},dlabel:{valType:\"number\",dflt:1,editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},marker:{colors:{valType:\"data_array\",editType:\"calc\"},line:{color:{valType:\"color\",dflt:yCt.defaultLine,arrayOk:!0,editType:\"style\"},width:{valType:\"number\",min:0,dflt:0,arrayOk:!0,editType:\"style\"},editType:\"calc\"},pattern:bCt,editType:\"calc\"},text:{valType:\"data_array\",editType:\"plot\"},hovertext:{valType:\"string\",dflt:\"\",arrayOk:!0,editType:\"style\"},scalegroup:{valType:\"string\",dflt:\"\",editType:\"calc\"},textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"percent\"],extras:[\"none\"],editType:\"calc\"},hoverinfo:EE({},pCt.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:_Ct({},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),hovertemplatefallback:ZEe(),texttemplate:xCt({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"percent\",\"text\"]}),texttemplatefallback:ZEe({editType:\"plot\"}),textposition:{valType:\"enumerated\",values:[\"inside\",\"outside\",\"auto\",\"none\"],dflt:\"auto\",arrayOk:!0,editType:\"plot\"},textfont:EE({},dD,{}),insidetextorientation:{valType:\"enumerated\",values:[\"horizontal\",\"radial\",\"tangential\",\"auto\"],dflt:\"auto\",editType:\"plot\"},insidetextfont:EE({},dD,{}),outsidetextfont:EE({},dD,{}),automargin:{valType:\"boolean\",dflt:!1,editType:\"plot\"},title:{text:{valType:\"string\",dflt:\"\",editType:\"plot\"},font:EE({},dD,{}),position:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle center\",\"bottom left\",\"bottom center\",\"bottom right\"],editType:\"plot\"},editType:\"plot\"},domain:gCt({name:\"pie\",trace:!0,editType:\"calc\"}),hole:{valType:\"number\",min:0,max:1,dflt:0,editType:\"calc\"},sort:{valType:\"boolean\",dflt:!0,editType:\"calc\"},direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"],dflt:\"counterclockwise\",editType:\"calc\"},rotation:{valType:\"angle\",dflt:0,editType:\"calc\"},pull:{valType:\"number\",min:0,max:1,dflt:0,arrayOk:!0,editType:\"calc\"}}});var M2=ye((Hdr,$Ee)=>{\"use strict\";var wCt=Eo(),kE=Dr(),TCt=S2(),ACt=Cc().defaults,SCt=r0().handleText,MCt=Dr().coercePattern;function KEe(e,t){var r=kE.isArrayOrTypedArray(e),n=kE.isArrayOrTypedArray(t),i=Math.min(r?e.length:1/0,n?t.length:1/0);if(isFinite(i)||(i=0),i&&n){for(var a,o=0;o0){a=!0;break}}a||(i=0)}return{hasLabels:r,hasValues:n,len:i}}function JEe(e,t,r,n,i){var a=n(\"marker.line.width\");a&&n(\"marker.line.color\",i?void 0:r.paper_bgcolor);var o=n(\"marker.colors\");MCt(n,\"marker.pattern\",o),e.marker&&!t.marker.pattern.fgcolor&&(t.marker.pattern.fgcolor=e.marker.colors),t.marker.pattern.bgcolor||(t.marker.pattern.bgcolor=r.paper_bgcolor)}function ECt(e,t,r,n){function i(k,E){return kE.coerce(e,t,TCt,k,E)}var a=i(\"labels\"),o=i(\"values\"),s=KEe(a,o),l=s.len;if(t._hasLabels=s.hasLabels,t._hasValues=s.hasValues,!t._hasLabels&&t._hasValues&&(i(\"label0\"),i(\"dlabel\")),!l){t.visible=!1;return}t._length=l,JEe(e,t,n,i,!0),i(\"scalegroup\");var u=i(\"text\"),c=i(\"texttemplate\");i(\"texttemplatefallback\");var f;if(c||(f=i(\"textinfo\",kE.isArrayOrTypedArray(u)?\"text+percent\":\"percent\")),i(\"hovertext\"),i(\"hovertemplate\"),i(\"hovertemplatefallback\"),c||f&&f!==\"none\"){var h=i(\"textposition\");SCt(e,t,n,i,h,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var d=Array.isArray(h)||h===\"auto\",v=d||h===\"outside\";v&&i(\"automargin\"),(h===\"inside\"||h===\"auto\"||Array.isArray(h))&&i(\"insidetextorientation\")}else f===\"none\"&&i(\"textposition\",\"none\");ACt(t,n,i);var _=i(\"hole\"),b=i(\"title.text\");if(b){var p=i(\"title.position\",_?\"middle center\":\"top center\");!_&&p===\"middle center\"&&(t.title.position=\"top center\"),kE.coerceFont(i,\"title.font\",n.font)}i(\"sort\"),i(\"direction\"),i(\"rotation\"),i(\"pull\")}$Ee.exports={handleLabelsAndValues:KEe,handleMarkerDefaults:JEe,supplyDefaults:ECt}});var vD=ye((jdr,QEe)=>{\"use strict\";QEe.exports={hiddenlabels:{valType:\"data_array\",editType:\"calc\"},piecolorway:{valType:\"colorlist\",editType:\"calc\"},extendpiecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}});var tke=ye((Wdr,eke)=>{\"use strict\";var kCt=Dr(),CCt=vD();eke.exports=function(t,r){function n(i,a){return kCt.coerce(t,r,CCt,i,a)}n(\"hiddenlabels\"),n(\"piecolorway\",r.colorway),n(\"extendpiecolors\")}});var wA=ye((Xdr,nke)=>{\"use strict\";var LCt=Eo(),vW=cd(),PCt=ka(),ICt={};function RCt(e,t){var r=[],n=e._fullLayout,i=n.hiddenlabels||[],a=t.labels,o=t.marker.colors||[],s=t.values,l=t._length,u=t._hasValues&&l,c,f;if(t.dlabel)for(a=new Array(l),c=0;c=0});var S=t.type===\"funnelarea\"?_:t.sort;return S&&r.sort(function(L,x){return x.v-L.v}),r[0]&&(r[0].vTotal=v),r}function rke(e){return function(r,n){return!r||(r=vW(r),!r.isValid())?!1:(r=PCt.addOpacity(r,r.getAlpha()),e[n]||(e[n]=r),r)}}function DCt(e,t){var r=(t||{}).type;r||(r=\"pie\");var n=e._fullLayout,i=e.calcdata,a=n[r+\"colorway\"],o=n[\"_\"+r+\"colormap\"];n[\"extend\"+r+\"colors\"]&&(a=ike(a,ICt));for(var s=0,l=0;l{\"use strict\";var FCt=ip().appendArrayMultiPointValues;ake.exports=function(t,r){var n={curveNumber:r.index,pointNumbers:t.pts,data:r._input,fullData:r,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return t.pts.length===1&&(n.pointNumber=n.i=t.pts[0]),FCt(n,r,t.pts),r.type===\"funnelarea\"&&(delete n.v,delete n.i),n}});var yD=ye((Ydr,Eke)=>{\"use strict\";var Fp=Oa(),zCt=Mc(),pD=vf(),hke=ka(),Wy=So(),rv=Dr(),OCt=rv.strScale,ske=rv.strTranslate,pW=ru(),dke=bv(),qCt=dke.recordMinTextSize,BCt=dke.clearMinTextSize,vke=e2().TEXTPAD,ns=l_(),gD=oke(),lke=Dr().isValidTextValue;function NCt(e,t){var r=e._context.staticPlot,n=e._fullLayout,i=n._size;BCt(\"pie\",n),mke(t,e),Ake(t,i);var a=rv.makeTraceGroups(n._pielayer,t,\"trace\").each(function(o){var s=Fp.select(this),l=o[0],u=l.trace;YCt(o),s.attr(\"stroke-linejoin\",\"round\"),s.each(function(){var c=Fp.select(this).selectAll(\"g.slice\").data(o);c.enter().append(\"g\").classed(\"slice\",!0),c.exit().remove();var f=[[[],[]],[[],[]]],h=!1;c.each(function(S,L){if(S.hidden){Fp.select(this).selectAll(\"path,g\").remove();return}S.pointNumber=S.i,S.curveNumber=u.index,f[S.pxmid[1]<0?0:1][S.pxmid[0]<0?0:1].push(S);var x=l.cx,C=l.cy,M=Fp.select(this),g=M.selectAll(\"path.surface\").data([S]);if(g.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":r?\"none\":\"all\"}),M.call(pke,e,o),u.pull){var P=+ns.castOption(u.pull,S.pts)||0;P>0&&(x+=P*S.pxmid[0],C+=P*S.pxmid[1])}S.cxFinal=x,S.cyFinal=C;function T(N,j,re,oe){var _e=oe*(j[0]-N[0]),Ee=oe*(j[1]-N[1]);return\"a\"+oe*l.r+\",\"+oe*l.r+\" 0 \"+S.largeArc+(re?\" 1 \":\" 0 \")+_e+\",\"+Ee}var z=u.hole;if(S.v===l.vTotal){var O=\"M\"+(x+S.px0[0])+\",\"+(C+S.px0[1])+T(S.px0,S.pxmid,!0,1)+T(S.pxmid,S.px0,!0,1)+\"Z\";z?g.attr(\"d\",\"M\"+(x+z*S.px0[0])+\",\"+(C+z*S.px0[1])+T(S.px0,S.pxmid,!1,z)+T(S.pxmid,S.px0,!1,z)+\"Z\"+O):g.attr(\"d\",O)}else{var V=T(S.px0,S.px1,!0,1);if(z){var G=1-z;g.attr(\"d\",\"M\"+(x+z*S.px1[0])+\",\"+(C+z*S.px1[1])+T(S.px1,S.px0,!1,z)+\"l\"+G*S.px0[0]+\",\"+G*S.px0[1]+V+\"Z\")}else g.attr(\"d\",\"M\"+x+\",\"+C+\"l\"+S.px0[0]+\",\"+S.px0[1]+V+\"Z\")}Ske(e,S,l);var Z=ns.castOption(u.textposition,S.pts),H=M.selectAll(\"g.slicetext\").data(S.text&&Z!==\"none\"?[0]:[]);H.enter().append(\"g\").classed(\"slicetext\",!0),H.exit().remove(),H.each(function(){var N=rv.ensureSingle(Fp.select(this),\"text\",\"\",function(ie){ie.attr(\"data-notex\",1)}),j=rv.ensureUniformFontSize(e,Z===\"outside\"?VCt(u,S,n.font):gke(u,S,n.font));N.text(S.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(Wy.font,j).call(pW.convertToTspans,e);var re=Wy.bBox(N.node()),oe;if(Z===\"outside\")oe=fke(re,S);else if(oe=yke(re,S,l),Z===\"auto\"&&oe.scale<1){var _e=rv.ensureUniformFontSize(e,u.outsidetextfont);N.call(Wy.font,_e),re=Wy.bBox(N.node()),oe=fke(re,S)}var Ee=oe.textPosAngle,Ce=Ee===void 0?S.pxmid:mD(l.r,Ee);if(oe.targetX=x+Ce[0]*oe.rCenter+(oe.x||0),oe.targetY=C+Ce[1]*oe.rCenter+(oe.y||0),Mke(oe,re),oe.outside){var me=oe.targetY;S.yLabelMin=me-re.height/2,S.yLabelMid=me,S.yLabelMax=me+re.height/2,S.labelExtraX=0,S.labelExtraY=0,h=!0}oe.fontSize=j.size,qCt(u.type,oe,n),o[L].transform=oe,rv.setTransormAndDisplay(N,oe)})});var d=Fp.select(this).selectAll(\"g.titletext\").data(u.title.text?[0]:[]);if(d.enter().append(\"g\").classed(\"titletext\",!0),d.exit().remove(),d.each(function(){var S=rv.ensureSingle(Fp.select(this),\"text\",\"\",function(C){C.attr(\"data-notex\",1)}),L=u.title.text;u._meta&&(L=rv.templateString(L,u._meta)),S.text(L).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(Wy.font,u.title.font).call(pW.convertToTspans,e);var x;u.title.position===\"middle center\"?x=jCt(l):x=wke(l,i),S.attr(\"transform\",ske(x.x,x.y)+OCt(Math.min(1,x.scale))+ske(x.tx,x.ty))}),h&&XCt(f,u),UCt(c,u),h&&u.automargin){var v=Wy.bBox(s.node()),_=u.domain,b=i.w*(_.x[1]-_.x[0]),p=i.h*(_.y[1]-_.y[0]),k=(.5*b-l.r)/i.w,E=(.5*p-l.r)/i.h;zCt.autoMargin(e,\"pie.\"+u.uid+\".automargin\",{xl:_.x[0]-k,xr:_.x[1]+k,yb:_.y[0]-E,yt:_.y[1]+E,l:Math.max(l.cx-l.r-v.left,0),r:Math.max(v.right-(l.cx+l.r),0),b:Math.max(v.bottom-(l.cy+l.r),0),t:Math.max(l.cy-l.r-v.top,0),pad:5})}})});setTimeout(function(){a.selectAll(\"tspan\").each(function(){var o=Fp.select(this);o.attr(\"dy\")&&o.attr(\"dy\",o.attr(\"dy\"))})},0)}function UCt(e,t){e.each(function(r){var n=Fp.select(this);if(!r.labelExtraX&&!r.labelExtraY){n.select(\"path.textline\").remove();return}var i=n.select(\"g.slicetext text\");r.transform.targetX+=r.labelExtraX,r.transform.targetY+=r.labelExtraY,rv.setTransormAndDisplay(i,r.transform);var a=r.cxFinal+r.pxmid[0],o=r.cyFinal+r.pxmid[1],s=\"M\"+a+\",\"+o,l=(r.yLabelMax-r.yLabelMin)*(r.pxmid[0]<0?-1:1)/4;if(r.labelExtraX){var u=r.labelExtraX*r.pxmid[1]/r.pxmid[0],c=r.yLabelMid+r.labelExtraY-(r.cyFinal+r.pxmid[1]);Math.abs(u)>Math.abs(c)?s+=\"l\"+c*r.pxmid[0]/r.pxmid[1]+\",\"+c+\"H\"+(a+r.labelExtraX+l):s+=\"l\"+r.labelExtraX+\",\"+u+\"v\"+(c-u)+\"h\"+l}else s+=\"V\"+(r.yLabelMid+r.labelExtraY)+\"h\"+l;rv.ensureSingle(n,\"path\",\"textline\").call(hke.stroke,t.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,t.outsidetextfont.size/8),d:s,fill:\"none\"})})}function pke(e,t,r){var n=r[0],i=n.cx,a=n.cy,o=n.trace,s=o.type===\"funnelarea\";\"_hasHoverLabel\"in o||(o._hasHoverLabel=!1),\"_hasHoverEvent\"in o||(o._hasHoverEvent=!1),e.on(\"mouseover\",function(l){var u=t._fullLayout,c=t._fullData[o.index];if(!(t._dragging||u.hovermode===!1)){var f=c.hoverinfo;if(Array.isArray(f)&&(f=pD.castHoverinfo({hoverinfo:[ns.castOption(f,l.pts)],_module:o._module},u,0)),f===\"all\"&&(f=\"label+text+value+percent+name\"),c.hovertemplate||f!==\"none\"&&f!==\"skip\"&&f){var h=l.rInscribed||0,d=i+l.pxmid[0]*(1-h),v=a+l.pxmid[1]*(1-h),_=u.separators,b=[];if(f&&f.indexOf(\"label\")!==-1&&b.push(l.label),l.text=ns.castOption(c.hovertext||c.text,l.pts),f&&f.indexOf(\"text\")!==-1){var p=l.text;rv.isValidTextValue(p)&&b.push(p)}l.value=l.v,l.valueLabel=ns.formatPieValue(l.v,_),f&&f.indexOf(\"value\")!==-1&&b.push(l.valueLabel),l.percent=l.v/n.vTotal,l.percentLabel=ns.formatPiePercent(l.percent,_),f&&f.indexOf(\"percent\")!==-1&&b.push(l.percentLabel);var k=c.hoverlabel,E=k.font,S=[];pD.loneHover({trace:o,x0:d-h*n.r,x1:d+h*n.r,y:v,_x0:s?i+l.TL[0]:d-h*n.r,_x1:s?i+l.TR[0]:d+h*n.r,_y0:s?a+l.TL[1]:v-h*n.r,_y1:s?a+l.BL[1]:v+h*n.r,text:b.join(\"
\"),name:c.hovertemplate||f.indexOf(\"name\")!==-1?c.name:void 0,idealAlign:l.pxmid[0]<0?\"left\":\"right\",color:ns.castOption(k.bgcolor,l.pts)||l.color,borderColor:ns.castOption(k.bordercolor,l.pts),fontFamily:ns.castOption(E.family,l.pts),fontSize:ns.castOption(E.size,l.pts),fontColor:ns.castOption(E.color,l.pts),nameLength:ns.castOption(k.namelength,l.pts),textAlign:ns.castOption(k.align,l.pts),hovertemplate:ns.castOption(c.hovertemplate,l.pts),hovertemplateLabels:l,eventData:[gD(l,c)]},{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:t,inOut_bbox:S}),l.bbox=S[0],o._hasHoverLabel=!0}o._hasHoverEvent=!0,t.emit(\"plotly_hover\",{points:[gD(l,c)],event:Fp.event})}}),e.on(\"mouseout\",function(l){var u=t._fullLayout,c=t._fullData[o.index],f=Fp.select(this).datum();o._hasHoverEvent&&(l.originalEvent=Fp.event,t.emit(\"plotly_unhover\",{points:[gD(f,c)],event:Fp.event}),o._hasHoverEvent=!1),o._hasHoverLabel&&(pD.loneUnhover(u._hoverlayer.node()),o._hasHoverLabel=!1)}),e.on(\"click\",function(l){var u=t._fullLayout,c=t._fullData[o.index];t._dragging||u.hovermode===!1||(t._hoverdata=[gD(l,c)],pD.click(t,Fp.event))})}function VCt(e,t,r){var n=ns.castOption(e.outsidetextfont.color,t.pts)||ns.castOption(e.textfont.color,t.pts)||r.color,i=ns.castOption(e.outsidetextfont.family,t.pts)||ns.castOption(e.textfont.family,t.pts)||r.family,a=ns.castOption(e.outsidetextfont.size,t.pts)||ns.castOption(e.textfont.size,t.pts)||r.size,o=ns.castOption(e.outsidetextfont.weight,t.pts)||ns.castOption(e.textfont.weight,t.pts)||r.weight,s=ns.castOption(e.outsidetextfont.style,t.pts)||ns.castOption(e.textfont.style,t.pts)||r.style,l=ns.castOption(e.outsidetextfont.variant,t.pts)||ns.castOption(e.textfont.variant,t.pts)||r.variant,u=ns.castOption(e.outsidetextfont.textcase,t.pts)||ns.castOption(e.textfont.textcase,t.pts)||r.textcase,c=ns.castOption(e.outsidetextfont.lineposition,t.pts)||ns.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=ns.castOption(e.outsidetextfont.shadow,t.pts)||ns.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n,family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function gke(e,t,r){var n=ns.castOption(e.insidetextfont.color,t.pts);!n&&e._input.textfont&&(n=ns.castOption(e._input.textfont.color,t.pts));var i=ns.castOption(e.insidetextfont.family,t.pts)||ns.castOption(e.textfont.family,t.pts)||r.family,a=ns.castOption(e.insidetextfont.size,t.pts)||ns.castOption(e.textfont.size,t.pts)||r.size,o=ns.castOption(e.insidetextfont.weight,t.pts)||ns.castOption(e.textfont.weight,t.pts)||r.weight,s=ns.castOption(e.insidetextfont.style,t.pts)||ns.castOption(e.textfont.style,t.pts)||r.style,l=ns.castOption(e.insidetextfont.variant,t.pts)||ns.castOption(e.textfont.variant,t.pts)||r.variant,u=ns.castOption(e.insidetextfont.textcase,t.pts)||ns.castOption(e.textfont.textcase,t.pts)||r.textcase,c=ns.castOption(e.insidetextfont.lineposition,t.pts)||ns.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=ns.castOption(e.insidetextfont.shadow,t.pts)||ns.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n||hke.contrast(t.color),family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function mke(e,t){for(var r,n,i=0;i=-4;k-=2)p(Math.PI*k,\"tan\");for(k=4;k>=-4;k-=2)p(Math.PI*(k+1),\"tan\")}if(f||d){for(k=4;k>=-4;k-=2)p(Math.PI*(k+1.5),\"rad\");for(k=4;k>=-4;k-=2)p(Math.PI*(k+.5),\"rad\")}}if(s||v||f){var E=Math.sqrt(e.width*e.width+e.height*e.height);if(b={scale:i*n*2/E,rCenter:1-i,rotate:0},b.textPosAngle=(t.startangle+t.stopangle)/2,b.scale>=1)return b;_.push(b)}(v||d)&&(b=uke(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,_.push(b)),(v||h)&&(b=cke(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,_.push(b));for(var S=0,L=0,x=0;x<_.length;x++){var C=_[x].scale;if(L=1)break}return _[S]}function GCt(e,t){var r=e.startangle,n=e.stopangle;return r>t&&t>n||r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function jCt(e){var t=Math.sqrt(e.titleBox.width*e.titleBox.width+e.titleBox.height*e.titleBox.height);return{x:e.cx,y:e.cy,scale:e.trace.hole*e.r*2/t,tx:0,ty:-e.titleBox.height/2+e.trace.title.font.size}}function wke(e,t){var r=1,n=1,i,a=e.trace,o={x:e.cx,y:e.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=Tke(a),a.title.position.indexOf(\"top\")!==-1?(o.y-=(1+i)*e.r,s.ty-=e.titleBox.height):a.title.position.indexOf(\"bottom\")!==-1&&(o.y+=(1+i)*e.r);var l=WCt(e.r,e.trace.aspectratio),u=t.w*(a.domain.x[1]-a.domain.x[0])/2;return a.title.position.indexOf(\"left\")!==-1?(u=u+l,o.x-=(1+i)*l,s.tx+=e.titleBox.width/2):a.title.position.indexOf(\"center\")!==-1?u*=2:a.title.position.indexOf(\"right\")!==-1&&(u=u+l,o.x+=(1+i)*l,s.tx-=e.titleBox.width/2),r=u/e.titleBox.width,n=gW(e,t)/e.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function WCt(e,t){return e/(t===void 0?1:t)}function gW(e,t){var r=e.trace,n=t.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(e.titleBox.height,n/2)}function Tke(e){var t=e.pull;if(!t)return 0;var r;if(rv.isArrayOrTypedArray(t))for(t=0,r=0;rt&&(t=e.pull[r]);return t}function XCt(e,t){var r,n,i,a,o,s,l,u,c,f,h,d,v;function _(E,S){return E.pxmid[1]-S.pxmid[1]}function b(E,S){return S.pxmid[1]-E.pxmid[1]}function p(E,S){S||(S={});var L=S.labelExtraY+(n?S.yLabelMax:S.yLabelMin),x=n?E.yLabelMin:E.yLabelMax,C=n?E.yLabelMax:E.yLabelMin,M=E.cyFinal+o(E.px0[1],E.px1[1]),g=L-x,P,T,z,O,V,G;if(g*l>0&&(E.labelExtraY=g),!!rv.isArrayOrTypedArray(t.pull))for(T=0;T=(ns.castOption(t.pull,z.pts)||0))&&((E.pxmid[1]-z.pxmid[1])*l>0?(O=z.cyFinal+o(z.px0[1],z.px1[1]),g=O-x-E.labelExtraY,g*l>0&&(E.labelExtraY+=g)):(C+E.labelExtraY-M)*l>0&&(P=3*s*Math.abs(T-f.indexOf(E)),V=z.cxFinal+a(z.px0[0],z.px1[0]),G=V+P-(E.cxFinal+E.pxmid[0])-E.labelExtraX,G*s>0&&(E.labelExtraX+=G)))}for(n=0;n<2;n++)for(i=n?_:b,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,u=e[n][r],u.sort(i),c=e[1-n][r],f=c.concat(u),d=[],h=0;h1?(u=r.r,c=u/i.aspectratio):(c=r.r,u=c*i.aspectratio),u*=(1+i.baseratio)/2,l=u*c}o=Math.min(o,l/r.vTotal)}for(n=0;nt.vTotal/2?1:0,u.halfangle=Math.PI*Math.min(u.v/t.vTotal,.5),u.ring=1-n.hole,u.rInscribed=HCt(u,t))}function mD(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}function Ske(e,t,r){var n=e._fullLayout,i=r.trace,a=i.texttemplate,o=i.textinfo;if(!a&&o&&o!==\"none\"){var s=o.split(\"+\"),l=function(S){return s.indexOf(S)!==-1},u=l(\"label\"),c=l(\"text\"),f=l(\"value\"),h=l(\"percent\"),d=n.separators,v;if(v=u?[t.label]:[],c){var _=ns.getFirstFilled(i.text,t.pts);lke(_)&&v.push(_)}f&&v.push(ns.formatPieValue(t.v,d)),h&&v.push(ns.formatPiePercent(t.v/r.vTotal,d)),t.text=v.join(\"
\")}function b(S){return{label:S.label,value:S.v,valueLabel:ns.formatPieValue(S.v,n.separators),percent:S.v/r.vTotal,percentLabel:ns.formatPiePercent(S.v/r.vTotal,n.separators),color:S.color,text:S.text,customdata:rv.castOption(i,S.i,\"customdata\")}}if(a){var p=rv.castOption(i,t.i,\"texttemplate\");if(!p)t.text=\"\";else{var k=b(t),E=ns.getFirstFilled(i.text,t.pts);(lke(E)||E===\"\")&&(k.text=E),t.text=rv.texttemplateString({data:[k,i._meta],fallback:i.texttemplatefallback,labels:k,locale:e._fullLayout._d3locale,template:p})}}}function Mke(e,t){var r=e.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(t.left+t.right)/2,o=(t.top+t.bottom)/2;e.textX=a*n-o*i,e.textY=a*i+o*n,e.noCenter=!0}Eke.exports={plot:NCt,formatSliceLabel:Ske,transformInsideText:yke,determineInsideTextFont:gke,positionTitleOutside:wke,prerenderTitles:mke,layoutAreas:Ake,attachFxHandlers:pke,computeTransform:Mke}});var Lke=ye((Kdr,Cke)=>{\"use strict\";var kke=Oa(),KCt=q3(),JCt=bv().resizeText;Cke.exports=function(t){var r=t._fullLayout._pielayer.selectAll(\".trace\");JCt(t,r,\"pie\"),r.each(function(n){var i=n[0],a=i.trace,o=kke.select(this);o.style({opacity:a.opacity}),o.selectAll(\"path.surface\").each(function(s){kke.select(this).call(KCt,s,a,t)})})}});var Ike=ye(TA=>{\"use strict\";var Pke=Mc();TA.name=\"pie\";TA.plot=function(e,t,r,n){Pke.plotBasePlot(TA.name,e,t,r,n)};TA.clean=function(e,t,r,n){Pke.cleanBasePlot(TA.name,e,t,r,n)}});var Dke=ye(($dr,Rke)=>{\"use strict\";Rke.exports={attributes:S2(),supplyDefaults:M2().supplyDefaults,supplyLayoutDefaults:tke(),layoutAttributes:vD(),calc:wA().calc,crossTraceCalc:wA().crossTraceCalc,plot:yD().plot,style:Lke(),styleOne:q3(),moduleType:\"trace\",name:\"pie\",basePlotModule:Ike(),categories:[\"pie-like\",\"pie\",\"showLegend\"],meta:{}}});var zke=ye((Qdr,Fke)=>{\"use strict\";Fke.exports=Dke()});var qke=ye(AA=>{\"use strict\";var Oke=Mc();AA.name=\"sunburst\";AA.plot=function(e,t,r,n){Oke.plotBasePlot(AA.name,e,t,r,n)};AA.clean=function(e,t,r,n){Oke.cleanBasePlot(AA.name,e,t,r,n)}});var mW=ye((tvr,Bke)=>{\"use strict\";Bke.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"linear\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"]}});var LE=ye((rvr,Vke)=>{\"use strict\";var $Ct=Gl(),{hovertemplateAttrs:QCt,texttemplateAttrs:e6t,templatefallbackAttrs:Nke}=Ll(),t6t=Tu(),r6t=Cc().attributes,Xy=S2(),Uke=mW(),CE=Ao().extendFlat,i6t=Pd().pattern;Vke.exports={labels:{valType:\"data_array\",editType:\"calc\"},parents:{valType:\"data_array\",editType:\"calc\"},values:{valType:\"data_array\",editType:\"calc\"},branchvalues:{valType:\"enumerated\",values:[\"remainder\",\"total\"],dflt:\"remainder\",editType:\"calc\"},count:{valType:\"flaglist\",flags:[\"branches\",\"leaves\"],dflt:\"leaves\",editType:\"calc\"},level:{valType:\"any\",editType:\"plot\",anim:!0},maxdepth:{valType:\"integer\",editType:\"plot\",dflt:-1},marker:CE({colors:{valType:\"data_array\",editType:\"calc\"},line:{color:CE({},Xy.marker.line.color,{dflt:null}),width:CE({},Xy.marker.line.width,{dflt:1}),editType:\"calc\"},pattern:i6t,editType:\"calc\"},t6t(\"marker\",{colorAttr:\"colors\",anim:!1})),leaf:{opacity:{valType:\"number\",editType:\"style\",min:0,max:1},editType:\"plot\"},text:Xy.text,textinfo:{valType:\"flaglist\",flags:[\"label\",\"text\",\"value\",\"current path\",\"percent root\",\"percent entry\",\"percent parent\"],extras:[\"none\"],editType:\"plot\"},texttemplate:e6t({editType:\"plot\"},{keys:Uke.eventDataKeys.concat([\"label\",\"value\"])}),texttemplatefallback:Nke({editType:\"plot\"}),hovertext:Xy.hovertext,hoverinfo:CE({},$Ct.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"name\",\"current path\",\"percent root\",\"percent entry\",\"percent parent\"],dflt:\"label+text+value+name\"}),hovertemplate:QCt({},{keys:Uke.eventDataKeys}),hovertemplatefallback:Nke(),textfont:Xy.textfont,insidetextorientation:Xy.insidetextorientation,insidetextfont:Xy.insidetextfont,outsidetextfont:CE({},Xy.outsidetextfont,{}),rotation:{valType:\"angle\",dflt:0,editType:\"plot\"},sort:Xy.sort,root:{color:{valType:\"color\",editType:\"calc\",dflt:\"rgba(0,0,0,0)\"},editType:\"calc\"},domain:r6t({name:\"sunburst\",trace:!0,editType:\"calc\"})}});var yW=ye((ivr,Gke)=>{\"use strict\";Gke.exports={sunburstcolorway:{valType:\"colorlist\",editType:\"calc\"},extendsunburstcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}});var Xke=ye((nvr,Wke)=>{\"use strict\";var Hke=Dr(),n6t=LE(),a6t=Cc().defaults,o6t=r0().handleText,s6t=M2().handleMarkerDefaults,jke=tc(),l6t=jke.hasColorscale,u6t=jke.handleDefaults;Wke.exports=function(t,r,n,i){function a(h,d){return Hke.coerce(t,r,n6t,h,d)}var o=a(\"labels\"),s=a(\"parents\");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a(\"values\");l&&l.length?a(\"branchvalues\"):a(\"count\"),a(\"level\"),a(\"maxdepth\"),s6t(t,r,i,a);var u=r._hasColorscale=l6t(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis;u&&u6t(t,r,i,a,{prefix:\"marker.\",cLetter:\"c\"}),a(\"leaf.opacity\",u?1:.7);var c=a(\"text\");a(\"texttemplate\"),a(\"texttemplatefallback\"),r.texttemplate||a(\"textinfo\",Hke.isArrayOrTypedArray(c)?\"text+label\":\"label\"),a(\"hovertext\"),a(\"hovertemplate\"),a(\"hovertemplatefallback\");var f=\"auto\";o6t(t,r,i,a,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a(\"insidetextorientation\"),a(\"sort\"),a(\"rotation\"),a(\"root.color\"),a6t(r,i,a),r._length=null}});var Yke=ye((avr,Zke)=>{\"use strict\";var c6t=Dr(),f6t=yW();Zke.exports=function(t,r){function n(i,a){return c6t.coerce(t,r,f6t,i,a)}n(\"sunburstcolorway\",r.colorway),n(\"extendsunburstcolors\")}});var PE=ye((_D,Kke)=>{(function(e,t){typeof _D==\"object\"&&typeof Kke!=\"undefined\"?t(_D):(e=e||self,t(e.d3=e.d3||{}))})(_D,function(e){\"use strict\";function t(je,tt){return je.parent===tt.parent?1:2}function r(je){return je.reduce(n,0)/je.length}function n(je,tt){return je+tt.x}function i(je){return 1+je.reduce(a,0)}function a(je,tt){return Math.max(je,tt.y)}function o(je){for(var tt;tt=je.children;)je=tt[0];return je}function s(je){for(var tt;tt=je.children;)je=tt[tt.length-1];return je}function l(){var je=t,tt=1,xt=1,Ie=!1;function xe(ke){var vt,ir=0;ke.eachAfter(function($r){var di=$r.children;di?($r.x=r(di),$r.y=i(di)):($r.x=vt?ir+=je($r,vt):0,$r.y=0,vt=$r)});var ar=o(ke),vr=s(ke),ii=ar.x-je(ar,vr)/2,pi=vr.x+je(vr,ar)/2;return ke.eachAfter(Ie?function($r){$r.x=($r.x-ke.x)*tt,$r.y=(ke.y-$r.y)*xt}:function($r){$r.x=($r.x-ii)/(pi-ii)*tt,$r.y=(1-(ke.y?$r.y/ke.y:1))*xt})}return xe.separation=function(ke){return arguments.length?(je=ke,xe):je},xe.size=function(ke){return arguments.length?(Ie=!1,tt=+ke[0],xt=+ke[1],xe):Ie?null:[tt,xt]},xe.nodeSize=function(ke){return arguments.length?(Ie=!0,tt=+ke[0],xt=+ke[1],xe):Ie?[tt,xt]:null},xe}function u(je){var tt=0,xt=je.children,Ie=xt&&xt.length;if(!Ie)tt=1;else for(;--Ie>=0;)tt+=xt[Ie].value;je.value=tt}function c(){return this.eachAfter(u)}function f(je){var tt=this,xt,Ie=[tt],xe,ke,vt;do for(xt=Ie.reverse(),Ie=[];tt=xt.pop();)if(je(tt),xe=tt.children,xe)for(ke=0,vt=xe.length;ke=0;--xe)xt.push(Ie[xe]);return this}function d(je){for(var tt=this,xt=[tt],Ie=[],xe,ke,vt;tt=xt.pop();)if(Ie.push(tt),xe=tt.children,xe)for(ke=0,vt=xe.length;ke=0;)xt+=Ie[xe].value;tt.value=xt})}function _(je){return this.eachBefore(function(tt){tt.children&&tt.children.sort(je)})}function b(je){for(var tt=this,xt=p(tt,je),Ie=[tt];tt!==xt;)tt=tt.parent,Ie.push(tt);for(var xe=Ie.length;je!==xt;)Ie.splice(xe,0,je),je=je.parent;return Ie}function p(je,tt){if(je===tt)return je;var xt=je.ancestors(),Ie=tt.ancestors(),xe=null;for(je=xt.pop(),tt=Ie.pop();je===tt;)xe=je,je=xt.pop(),tt=Ie.pop();return xe}function k(){for(var je=this,tt=[je];je=je.parent;)tt.push(je);return tt}function E(){var je=[];return this.each(function(tt){je.push(tt)}),je}function S(){var je=[];return this.eachBefore(function(tt){tt.children||je.push(tt)}),je}function L(){var je=this,tt=[];return je.each(function(xt){xt!==je&&tt.push({source:xt.parent,target:xt})}),tt}function x(je,tt){var xt=new T(je),Ie=+je.value&&(xt.value=je.value),xe,ke=[xt],vt,ir,ar,vr;for(tt==null&&(tt=M);xe=ke.pop();)if(Ie&&(xe.value=+xe.data.value),(ir=tt(xe.data))&&(vr=ir.length))for(xe.children=new Array(vr),ar=vr-1;ar>=0;--ar)ke.push(vt=xe.children[ar]=new T(ir[ar])),vt.parent=xe,vt.depth=xe.depth+1;return xt.eachBefore(P)}function C(){return x(this).eachBefore(g)}function M(je){return je.children}function g(je){je.data=je.data.data}function P(je){var tt=0;do je.height=tt;while((je=je.parent)&&je.height<++tt)}function T(je){this.data=je,this.depth=this.height=0,this.parent=null}T.prototype=x.prototype={constructor:T,count:c,each:f,eachAfter:d,eachBefore:h,sum:v,sort:_,path:b,ancestors:k,descendants:E,leaves:S,links:L,copy:C};var z=Array.prototype.slice;function O(je){for(var tt=je.length,xt,Ie;tt;)Ie=Math.random()*tt--|0,xt=je[tt],je[tt]=je[Ie],je[Ie]=xt;return je}function V(je){for(var tt=0,xt=(je=O(z.call(je))).length,Ie=[],xe,ke;tt0&&xt*xt>Ie*Ie+xe*xe}function N(je,tt){for(var xt=0;xtar?(xe=(vr+ar-ke)/(2*vr),ir=Math.sqrt(Math.max(0,ar/vr-xe*xe)),xt.x=je.x-xe*Ie-ir*vt,xt.y=je.y-xe*vt+ir*Ie):(xe=(vr+ke-ar)/(2*vr),ir=Math.sqrt(Math.max(0,ke/vr-xe*xe)),xt.x=tt.x+xe*Ie-ir*vt,xt.y=tt.y+xe*vt+ir*Ie)):(xt.x=tt.x+xt.r,xt.y=tt.y)}function Ce(je,tt){var xt=je.r+tt.r-1e-6,Ie=tt.x-je.x,xe=tt.y-je.y;return xt>0&&xt*xt>Ie*Ie+xe*xe}function me(je){var tt=je._,xt=je.next._,Ie=tt.r+xt.r,xe=(tt.x*xt.r+xt.x*tt.r)/Ie,ke=(tt.y*xt.r+xt.y*tt.r)/Ie;return xe*xe+ke*ke}function ie(je){this._=je,this.next=null,this.previous=null}function Se(je){if(!(xe=je.length))return 0;var tt,xt,Ie,xe,ke,vt,ir,ar,vr,ii,pi;if(tt=je[0],tt.x=0,tt.y=0,!(xe>1))return tt.r;if(xt=je[1],tt.x=-xt.r,xt.x=tt.r,xt.y=0,!(xe>2))return tt.r+xt.r;Ee(xt,tt,Ie=je[2]),tt=new ie(tt),xt=new ie(xt),Ie=new ie(Ie),tt.next=Ie.previous=xt,xt.next=tt.previous=Ie,Ie.next=xt.previous=tt;e:for(ir=3;ir0)throw new Error(\"cycle\");return ir}return xt.id=function(Ie){return arguments.length?(je=Fe(Ie),xt):je},xt.parentId=function(Ie){return arguments.length?(tt=Fe(Ie),xt):tt},xt}function $e(je,tt){return je.parent===tt.parent?1:2}function St(je){var tt=je.children;return tt?tt[0]:je.t}function Qt(je){var tt=je.children;return tt?tt[tt.length-1]:je.t}function Vt(je,tt,xt){var Ie=xt/(tt.i-je.i);tt.c-=Ie,tt.s+=xt,je.c+=Ie,tt.z+=xt,tt.m+=xt}function _t(je){for(var tt=0,xt=0,Ie=je.children,xe=Ie.length,ke;--xe>=0;)ke=Ie[xe],ke.z+=tt,ke.m+=tt,tt+=ke.s+(xt+=ke.c)}function It(je,tt,xt){return je.a.parent===tt.parent?je.a:xt}function mt(je,tt){this._=je,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=tt}mt.prototype=Object.create(T.prototype);function er(je){for(var tt=new mt(je,0),xt,Ie=[tt],xe,ke,vt,ir;xt=Ie.pop();)if(ke=xt._.children)for(xt.children=new Array(ir=ke.length),vt=ir-1;vt>=0;--vt)Ie.push(xe=xt.children[vt]=new mt(ke[vt],vt)),xe.parent=xt;return(tt.parent=new mt(null,0)).children=[tt],tt}function lr(){var je=$e,tt=1,xt=1,Ie=null;function xe(vr){var ii=er(vr);if(ii.eachAfter(ke),ii.parent.m=-ii.z,ii.eachBefore(vt),Ie)vr.eachBefore(ar);else{var pi=vr,$r=vr,di=vr;vr.eachBefore(function(qn){qn.x$r.x&&($r=qn),qn.depth>di.depth&&(di=qn)});var ji=pi===$r?1:je(pi,$r)/2,In=ji-pi.x,wi=tt/($r.x+ji+In),On=xt/(di.depth||1);vr.eachBefore(function(qn){qn.x=(qn.x+In)*wi,qn.y=qn.depth*On})}return vr}function ke(vr){var ii=vr.children,pi=vr.parent.children,$r=vr.i?pi[vr.i-1]:null;if(ii){_t(vr);var di=(ii[0].z+ii[ii.length-1].z)/2;$r?(vr.z=$r.z+je(vr._,$r._),vr.m=vr.z-di):vr.z=di}else $r&&(vr.z=$r.z+je(vr._,$r._));vr.parent.A=ir(vr,$r,vr.parent.A||pi[0])}function vt(vr){vr._.x=vr.z+vr.parent.m,vr.m+=vr.parent.m}function ir(vr,ii,pi){if(ii){for(var $r=vr,di=vr,ji=ii,In=$r.parent.children[0],wi=$r.m,On=di.m,qn=ji.m,Fn=In.m,ra;ji=Qt(ji),$r=St($r),ji&&$r;)In=St(In),di=Qt(di),di.a=vr,ra=ji.z+qn-$r.z-wi+je(ji._,$r._),ra>0&&(Vt(It(ji,vr,pi),vr,ra),wi+=ra,On+=ra),qn+=ji.m,wi+=$r.m,Fn+=In.m,On+=di.m;ji&&!Qt(di)&&(di.t=ji,di.m+=qn-On),$r&&!St(In)&&(In.t=$r,In.m+=wi-Fn,pi=vr)}return pi}function ar(vr){vr.x*=tt,vr.y=vr.depth*xt}return xe.separation=function(vr){return arguments.length?(je=vr,xe):je},xe.size=function(vr){return arguments.length?(Ie=!1,tt=+vr[0],xt=+vr[1],xe):Ie?null:[tt,xt]},xe.nodeSize=function(vr){return arguments.length?(Ie=!0,tt=+vr[0],xt=+vr[1],xe):Ie?[tt,xt]:null},xe}function Tr(je,tt,xt,Ie,xe){for(var ke=je.children,vt,ir=-1,ar=ke.length,vr=je.value&&(xe-xt)/je.value;++irqn&&(qn=vr),Ut=wi*wi*la,Fn=Math.max(qn/Ut,Ut/On),Fn>ra){wi-=vr;break}ra=Fn}vt.push(ar={value:wi,dice:di1?Ie:1)},xt}(Lr);function Vr(){var je=Br,tt=!1,xt=1,Ie=1,xe=[0],ke=Pe,vt=Pe,ir=Pe,ar=Pe,vr=Pe;function ii($r){return $r.x0=$r.y0=0,$r.x1=xt,$r.y1=Ie,$r.eachBefore(pi),xe=[0],tt&&$r.eachBefore(Zt),$r}function pi($r){var di=xe[$r.depth],ji=$r.x0+di,In=$r.y0+di,wi=$r.x1-di,On=$r.y1-di;wi=$r-1){var qn=ke[pi];qn.x0=ji,qn.y0=In,qn.x1=wi,qn.y1=On;return}for(var Fn=vr[pi],ra=di/2+Fn,la=pi+1,Ut=$r-1;la>>1;vr[wt]On-In){var Er=(ji*nr+wi*rr)/di;ii(pi,la,rr,ji,In,Er,On),ii(la,$r,nr,Er,In,wi,On)}else{var Xr=(In*nr+On*rr)/di;ii(pi,la,rr,ji,In,wi,Xr),ii(la,$r,nr,ji,Xr,wi,On)}}}function Ge(je,tt,xt,Ie,xe){(je.depth&1?Tr:st)(je,tt,xt,Ie,xe)}var Je=function je(tt){function xt(Ie,xe,ke,vt,ir){if((ar=Ie._squarify)&&ar.ratio===tt)for(var ar,vr,ii,pi,$r=-1,di,ji=ar.length,In=Ie.value;++$r1?Ie:1)},xt}(Lr);e.cluster=l,e.hierarchy=x,e.pack=ce,e.packEnclose=V,e.packSiblings=Le,e.partition=lt,e.stratify=cr,e.tree=lr,e.treemap=Vr,e.treemapBinary=dt,e.treemapDice=st,e.treemapResquarify=Je,e.treemapSlice=Tr,e.treemapSliceDice=Ge,e.treemapSquarify=Br,Object.defineProperty(e,\"__esModule\",{value:!0})})});var RE=ye(IE=>{\"use strict\";var Jke=PE(),h6t=Eo(),SA=Dr(),d6t=tc().makeColorScaleFuncFromTrace,v6t=wA().makePullColorFn,p6t=wA().generateExtendedColors,g6t=tc().calc,m6t=fs().ALMOST_EQUAL,y6t={},_6t={},x6t={};IE.calc=function(e,t){var r=e._fullLayout,n=t.ids,i=SA.isArrayOrTypedArray(n),a=t.labels,o=t.parents,s=t.values,l=SA.isArrayOrTypedArray(s),u=[],c={},f={},h=function(H,N){c[H]?c[H].push(N):c[H]=[N],f[N]=1},d=function(H){return H||typeof H==\"number\"},v=function(H){return!l||h6t(s[H])&&s[H]>=0},_,b,p;i?(_=Math.min(n.length,o.length),b=function(H){return d(n[H])&&v(H)},p=function(H){return String(n[H])}):(_=Math.min(a.length,o.length),b=function(H){return d(a[H])&&v(H)},p=function(H){return String(a[H])}),l&&(_=Math.min(_,s.length));for(var k=0;k<_;k++)if(b(k)){var E=p(k),S=d(o[k])?String(o[k]):\"\",L={i:k,id:E,pid:S,label:d(a[k])?String(a[k]):\"\"};l&&(L.v=+s[k]),u.push(L),h(S,E)}if(c[\"\"]){if(c[\"\"].length>1){for(var M=SA.randstr(),g=0;g{});function Gm(){}function eCe(){return this.rgb().formatHex()}function k6t(){return this.rgb().formatHex8()}function C6t(){return sCe(this).formatHsl()}function tCe(){return this.rgb().formatRgb()}function j_(e){var t,r;return e=(e+\"\").trim().toLowerCase(),(t=b6t.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?rCe(t):r===3?new _d(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?bD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?bD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=w6t.exec(e))?new _d(t[1],t[2],t[3],1):(t=T6t.exec(e))?new _d(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=A6t.exec(e))?bD(t[1],t[2],t[3],t[4]):(t=S6t.exec(e))?bD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=M6t.exec(e))?aCe(t[1],t[2]/100,t[3]/100,1):(t=E6t.exec(e))?aCe(t[1],t[2]/100,t[3]/100,t[4]):Qke.hasOwnProperty(e)?rCe(Qke[e]):e===\"transparent\"?new _d(NaN,NaN,NaN,0):null}function rCe(e){return new _d(e>>16&255,e>>8&255,e&255,1)}function bD(e,t,r,n){return n<=0&&(e=t=r=NaN),new _d(e,t,r,n)}function FE(e){return e instanceof Gm||(e=j_(e)),e?(e=e.rgb(),new _d(e.r,e.g,e.b,e.opacity)):new _d}function EA(e,t,r,n){return arguments.length===1?FE(e):new _d(e,t,r,n==null?1:n)}function _d(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function iCe(){return`#${E2(this.r)}${E2(this.g)}${E2(this.b)}`}function L6t(){return`#${E2(this.r)}${E2(this.g)}${E2(this.b)}${E2((isNaN(this.opacity)?1:this.opacity)*255)}`}function nCe(){let e=TD(this.opacity);return`${e===1?\"rgb(\":\"rgba(\"}${k2(this.r)}, ${k2(this.g)}, ${k2(this.b)}${e===1?\")\":`, ${e})`}`}function TD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function k2(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function E2(e){return e=k2(e),(e<16?\"0\":\"\")+e.toString(16)}function aCe(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Xg(e,t,r,n)}function sCe(e){if(e instanceof Xg)return new Xg(e.h,e.s,e.l,e.opacity);if(e instanceof Gm||(e=j_(e)),!e)return new Xg;if(e instanceof Xg)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new Xg(o,s,l,e.opacity)}function zE(e,t,r,n){return arguments.length===1?sCe(e):new Xg(e,t,r,n==null?1:n)}function Xg(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function oCe(e){return e=(e||0)%360,e<0?e+360:e}function wD(e){return Math.max(0,Math.min(1,e||0))}function _W(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var H_,C2,MA,DE,Vm,b6t,w6t,T6t,A6t,S6t,M6t,E6t,Qke,AD=gu(()=>{xD();H_=.7,C2=1/H_,MA=\"\\\\s*([+-]?\\\\d+)\\\\s*\",DE=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",Vm=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",b6t=/^#([0-9a-f]{3,8})$/,w6t=new RegExp(`^rgb\\\\(${MA},${MA},${MA}\\\\)$`),T6t=new RegExp(`^rgb\\\\(${Vm},${Vm},${Vm}\\\\)$`),A6t=new RegExp(`^rgba\\\\(${MA},${MA},${MA},${DE}\\\\)$`),S6t=new RegExp(`^rgba\\\\(${Vm},${Vm},${Vm},${DE}\\\\)$`),M6t=new RegExp(`^hsl\\\\(${DE},${Vm},${Vm}\\\\)$`),E6t=new RegExp(`^hsla\\\\(${DE},${Vm},${Vm},${DE}\\\\)$`),Qke={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Zy(Gm,j_,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:eCe,formatHex:eCe,formatHex8:k6t,formatHsl:C6t,formatRgb:tCe,toString:tCe});Zy(_d,EA,G_(Gm,{brighter(e){return e=e==null?C2:Math.pow(C2,e),new _d(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?H_:Math.pow(H_,e),new _d(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new _d(k2(this.r),k2(this.g),k2(this.b),TD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:iCe,formatHex:iCe,formatHex8:L6t,formatRgb:nCe,toString:nCe}));Zy(Xg,zE,G_(Gm,{brighter(e){return e=e==null?C2:Math.pow(C2,e),new Xg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?H_:Math.pow(H_,e),new Xg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new _d(_W(e>=240?e-240:e+120,i,n),_W(e,i,n),_W(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Xg(oCe(this.h),wD(this.s),wD(this.l),TD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=TD(this.opacity);return`${e===1?\"hsl(\":\"hsla(\"}${oCe(this.h)}, ${wD(this.s)*100}%, ${wD(this.l)*100}%${e===1?\")\":`, ${e})`}`}}))});var SD,MD,xW=gu(()=>{SD=Math.PI/180,MD=180/Math.PI});function dCe(e){if(e instanceof Hm)return new Hm(e.l,e.a,e.b,e.opacity);if(e instanceof Yy)return vCe(e);e instanceof _d||(e=FE(e));var t=AW(e.r),r=AW(e.g),n=AW(e.b),i=bW((.2225045*t+.7168786*r+.0606169*n)/uCe),a,o;return t===r&&r===n?a=o=i:(a=bW((.4360747*t+.3850649*r+.1430804*n)/lCe),o=bW((.0139322*t+.0971045*r+.7141733*n)/cCe)),new Hm(116*i-16,500*(a-i),200*(i-o),e.opacity)}function CA(e,t,r,n){return arguments.length===1?dCe(e):new Hm(e,t,r,n==null?1:n)}function Hm(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function bW(e){return e>P6t?Math.pow(e,1/3):e/hCe+fCe}function wW(e){return e>kA?e*e*e:hCe*(e-fCe)}function TW(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function AW(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function I6t(e){if(e instanceof Yy)return new Yy(e.h,e.c,e.l,e.opacity);if(e instanceof Hm||(e=dCe(e)),e.a===0&&e.b===0)return new Yy(NaN,0{xD();AD();xW();ED=18,lCe=.96422,uCe=1,cCe=.82521,fCe=4/29,kA=6/29,hCe=3*kA*kA,P6t=kA*kA*kA;Zy(Hm,CA,G_(Gm,{brighter(e){return new Hm(this.l+ED*(e==null?1:e),this.a,this.b,this.opacity)},darker(e){return new Hm(this.l-ED*(e==null?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=lCe*wW(t),e=uCe*wW(e),r=cCe*wW(r),new _d(TW(3.1338561*t-1.6168667*e-.4906146*r),TW(-.9787684*t+1.9161415*e+.033454*r),TW(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Zy(Yy,OE,G_(Gm,{brighter(e){return new Yy(this.h,this.c,this.l+ED*(e==null?1:e),this.opacity)},darker(e){return new Yy(this.h,this.c,this.l-ED*(e==null?1:e),this.opacity)},rgb(){return vCe(this).rgb()}}))});function R6t(e){if(e instanceof L2)return new L2(e.h,e.s,e.l,e.opacity);e instanceof _d||(e=FE(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(yCe*n+gCe*t-mCe*r)/(yCe+gCe-mCe),a=n-i,o=(qE*(r-i)-MW*a)/kD,s=Math.sqrt(o*o+a*a)/(qE*i*(1-i)),l=s?Math.atan2(o,a)*MD-120:NaN;return new L2(l<0?l+360:l,s,i,e.opacity)}function LA(e,t,r,n){return arguments.length===1?R6t(e):new L2(e,t,r,n==null?1:n)}function L2(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var _Ce,SW,MW,kD,qE,gCe,mCe,yCe,xCe=gu(()=>{xD();AD();xW();_Ce=-.14861,SW=1.78277,MW=-.29227,kD=-.90649,qE=1.97294,gCe=qE*kD,mCe=qE*SW,yCe=SW*MW-kD*_Ce;Zy(L2,LA,G_(Gm,{brighter(e){return e=e==null?C2:Math.pow(C2,e),new L2(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?H_:Math.pow(H_,e),new L2(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*SD,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new _d(255*(t+r*(_Ce*n+SW*i)),255*(t+r*(MW*n+kD*i)),255*(t+r*(qE*n)),this.opacity)}}))});var P2=gu(()=>{AD();pCe();xCe()});function EW(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function CD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n{});function PD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],o=e[(n+1)%t],s=e[(n+2)%t];return EW((r-n/t)*t,i,a,o,s)}}var kW=gu(()=>{LD()});var PA,CW=gu(()=>{PA=e=>()=>e});function bCe(e,t){return function(r){return e+r*t}}function D6t(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function W_(e,t){var r=t-e;return r?bCe(e,r>180||r<-180?r-360*Math.round(r/360):r):PA(isNaN(e)?t:e)}function wCe(e){return(e=+e)==1?$f:function(t,r){return r-t?D6t(t,r,e):PA(isNaN(t)?r:t)}}function $f(e,t){var r=t-e;return r?bCe(e,r):PA(isNaN(e)?t:e)}var I2=gu(()=>{CW()});function TCe(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;o{P2();LD();kW();I2();BE=function e(t){var r=wCe(t);function n(i,a){var o=r((i=EA(i)).r,(a=EA(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=$f(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+\"\"}}return n.gamma=e,n}(1);ACe=TCe(CD),SCe=TCe(PD)});function IA(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{});function MCe(e,t){return(ID(t)?IA:PW)(e,t)}function PW(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),o;for(o=0;o{NE();RD()});function DD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var RW=gu(()=>{});function zp(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var UE=gu(()=>{});function FD(e,t){var r={},n={},i;(e===null||typeof e!=\"object\")&&(e={}),(t===null||typeof t!=\"object\")&&(t={});for(i in t)i in e?r[i]=X_(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var DW=gu(()=>{NE()});function F6t(e){return function(){return e}}function z6t(e){return function(t){return e(t)+\"\"}}function zD(e,t){var r=zW.lastIndex=FW.lastIndex=0,n,i,a,o=-1,s=[],l=[];for(e=e+\"\",t=t+\"\";(n=zW.exec(e))&&(i=FW.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:zp(n,i)})),r=FW.lastIndex;return r{UE();zW=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,FW=new RegExp(zW.source,\"g\")});function X_(e,t){var r=typeof t,n;return t==null||r===\"boolean\"?PA(t):(r===\"number\"?zp:r===\"string\"?(n=j_(t))?(t=n,BE):zD:t instanceof j_?BE:t instanceof Date?DD:ID(t)?IA:Array.isArray(t)?PW:typeof t.valueOf!=\"function\"&&typeof t.toString!=\"function\"||isNaN(t)?FD:zp)(e,t)}var NE=gu(()=>{P2();LW();IW();RW();UE();DW();OW();CW();RD()});function ECe(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var kCe=gu(()=>{});function CCe(e,t){var r=W_(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var LCe=gu(()=>{I2()});function PCe(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var ICe=gu(()=>{});function qW(e,t,r,n,i,a){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n{RCe=180/Math.PI,OD={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function FCe(e){let t=new(typeof DOMMatrix==\"function\"?DOMMatrix:WebKitCSSMatrix)(e+\"\");return t.isIdentity?OD:qW(t.a,t.b,t.c,t.d,t.e,t.f)}function zCe(e){return e==null?OD:(qD||(qD=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")),qD.setAttribute(\"transform\",e),(e=qD.transform.baseVal.consolidate())?(e=e.matrix,qW(e.a,e.b,e.c,e.d,e.e,e.f)):OD)}var qD,OCe=gu(()=>{DCe()});function qCe(e,t,r,n){function i(u){return u.length?u.pop()+\" \":\"\"}function a(u,c,f,h,d,v){if(u!==f||c!==h){var _=d.push(\"translate(\",null,t,null,r);v.push({i:_-4,x:zp(u,f)},{i:_-2,x:zp(c,h)})}else(f||h)&&d.push(\"translate(\"+f+t+h+r)}function o(u,c,f,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:f.push(i(f)+\"rotate(\",null,n)-2,x:zp(u,c)})):c&&f.push(i(f)+\"rotate(\"+c+n)}function s(u,c,f,h){u!==c?h.push({i:f.push(i(f)+\"skewX(\",null,n)-2,x:zp(u,c)}):c&&f.push(i(f)+\"skewX(\"+c+n)}function l(u,c,f,h,d,v){if(u!==f||c!==h){var _=d.push(i(d)+\"scale(\",null,\",\",null,\")\");v.push({i:_-4,x:zp(u,f)},{i:_-2,x:zp(c,h)})}else(f!==1||h!==1)&&d.push(i(d)+\"scale(\"+f+\",\"+h+\")\")}return function(u,c){var f=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,h),o(u.rotate,c.rotate,f,h),s(u.skewX,c.skewX,f,h),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,h),u=c=null,function(d){for(var v=-1,_=h.length,b;++v<_;)f[(b=h[v]).i]=b.x(d);return f.join(\"\")}}}var BCe,NCe,UCe=gu(()=>{UE();OCe();BCe=qCe(FCe,\"px, \",\"px)\",\"deg)\"),NCe=qCe(zCe,\", \",\")\",\")\")});function VCe(e){return((e=Math.exp(e))+1/e)/2}function q6t(e){return((e=Math.exp(e))-1/e)/2}function B6t(e){return((e=Math.exp(2*e))-1)/(e+1)}var O6t,GCe,HCe=gu(()=>{O6t=1e-12;GCe=function e(t,r,n){function i(a,o){var s=a[0],l=a[1],u=a[2],c=o[0],f=o[1],h=o[2],d=c-s,v=f-l,_=d*d+v*v,b,p;if(_{P2();I2();WCe=jCe(W_),XCe=jCe($f)});function BW(e,t){var r=$f((e=CA(e)).l,(t=CA(t)).l),n=$f(e.a,t.a),i=$f(e.b,t.b),a=$f(e.opacity,t.opacity);return function(o){return e.l=r(o),e.a=n(o),e.b=i(o),e.opacity=a(o),e+\"\"}}var YCe=gu(()=>{P2();I2()});function KCe(e){return function(t,r){var n=e((t=OE(t)).h,(r=OE(r)).h),i=$f(t.c,r.c),a=$f(t.l,r.l),o=$f(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+\"\"}}}var JCe,$Ce,QCe=gu(()=>{P2();I2();JCe=KCe(W_),$Ce=KCe($f)});function e6e(e){return function t(r){r=+r;function n(i,a){var o=e((i=LA(i)).h,(a=LA(a)).h),s=$f(i.s,a.s),l=$f(i.l,a.l),u=$f(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=l(Math.pow(c,r)),i.opacity=u(c),i+\"\"}}return n.gamma=t,n}(1)}var t6e,r6e,i6e=gu(()=>{P2();I2();t6e=e6e(W_),r6e=e6e($f)});function NW(e,t){t===void 0&&(t=e,e=X_);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r{NE()});function a6e(e,t){for(var r=new Array(t),n=0;n{});var R2={};uee(R2,{interpolate:()=>X_,interpolateArray:()=>MCe,interpolateBasis:()=>CD,interpolateBasisClosed:()=>PD,interpolateCubehelix:()=>t6e,interpolateCubehelixLong:()=>r6e,interpolateDate:()=>DD,interpolateDiscrete:()=>ECe,interpolateHcl:()=>JCe,interpolateHclLong:()=>$Ce,interpolateHsl:()=>WCe,interpolateHslLong:()=>XCe,interpolateHue:()=>CCe,interpolateLab:()=>BW,interpolateNumber:()=>zp,interpolateNumberArray:()=>IA,interpolateObject:()=>FD,interpolateRgb:()=>BE,interpolateRgbBasis:()=>ACe,interpolateRgbBasisClosed:()=>SCe,interpolateRound:()=>PCe,interpolateString:()=>zD,interpolateTransformCss:()=>BCe,interpolateTransformSvg:()=>NCe,interpolateZoom:()=>GCe,piecewise:()=>NW,quantize:()=>a6e});var D2=gu(()=>{NE();IW();LD();kW();RW();kCe();LCe();UE();RD();DW();ICe();OW();UCe();HCe();LW();ZCe();YCe();QCe();i6e();n6e();o6e()});var BD=ye((Ypr,s6e)=>{\"use strict\";var N6t=So(),U6t=ka();s6e.exports=function(t,r,n,i,a){var o=r.data.data,s=o.i,l=a||o.color;if(s>=0){r.i=o.i;var u=n.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=l,r.color=l):(u.color=l,r.color=l),N6t.pointStyle(t,n,i,r)}else U6t.fill(t,l)}});var UW=ye((Kpr,h6e)=>{\"use strict\";var l6e=Oa(),u6e=ka(),c6e=Dr(),V6t=bv().resizeText,G6t=BD();function H6t(e){var t=e._fullLayout._sunburstlayer.selectAll(\".trace\");V6t(e,t,\"sunburst\"),t.each(function(r){var n=l6e.select(this),i=r[0],a=i.trace;n.style(\"opacity\",a.opacity),n.selectAll(\"path.surface\").each(function(o){l6e.select(this).call(f6e,o,a,e)})})}function f6e(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=c6e.castOption(r,o,\"marker.line.color\")||u6e.defaultLine,l=c6e.castOption(r,o,\"marker.line.width\")||0;e.call(G6t,t,r,n).style(\"stroke-width\",l).call(u6e.stroke,s).style(\"opacity\",a?r.leaf.opacity:null)}h6e.exports={style:H6t,styleOne:f6e}});var Ky=ye(Bs=>{\"use strict\";var F2=Dr(),j6t=ka(),W6t=Ag(),d6e=l_();Bs.findEntryWithLevel=function(e,t){var r;return t&&e.eachAfter(function(n){if(Bs.getPtId(n)===t)return r=n.copy()}),r||e};Bs.findEntryWithChild=function(e,t){var r;return e.eachAfter(function(n){for(var i=n.children||[],a=0;a0)};Bs.getMaxDepth=function(e){return e.maxdepth>=0?e.maxdepth:1/0};Bs.isHeader=function(e,t){return!(Bs.isLeaf(e)||e.depth===t._maxDepth-1)};function v6e(e){return e.data.data.pid}Bs.getParent=function(e,t){return Bs.findEntryWithLevel(e,v6e(t))};Bs.listPath=function(e,t){var r=e.parent;if(!r)return[];var n=t?[r.data[t]]:[r];return Bs.listPath(r,t).concat(n)};Bs.getPath=function(e){return Bs.listPath(e,\"label\").join(\"/\")+\"/\"};Bs.formatValue=d6e.formatPieValue;Bs.formatPercent=function(e,t){var r=F2.formatPercent(e,0);return r===\"0%\"&&(r=d6e.formatPiePercent(e,t)),r}});var HE=ye(($pr,m6e)=>{\"use strict\";var RA=Oa(),p6e=qa(),Y6t=ip().appendArrayPointValue,VE=vf(),g6e=Dr(),K6t=y3(),rd=Ky(),J6t=l_(),$6t=J6t.formatPieValue;m6e.exports=function(t,r,n,i,a){var o=i[0],s=o.trace,l=o.hierarchy,u=s.type===\"sunburst\",c=s.type===\"treemap\"||s.type===\"icicle\";\"_hasHoverLabel\"in s||(s._hasHoverLabel=!1),\"_hasHoverEvent\"in s||(s._hasHoverEvent=!1);var f=function(v){var _=n._fullLayout;if(!(n._dragging||_.hovermode===!1)){var b=n._fullData[s.index],p=v.data.data,k=p.i,E=rd.isHierarchyRoot(v),S=rd.getParent(l,v),L=rd.getValue(v),x=function(Ee){return g6e.castOption(b,k,Ee)},C=x(\"hovertemplate\"),M=VE.castHoverinfo(b,_,k),g=_.separators,P;if(C||M&&M!==\"none\"&&M!==\"skip\"){var T,z;u&&(T=o.cx+v.pxmid[0]*(1-v.rInscribed),z=o.cy+v.pxmid[1]*(1-v.rInscribed)),c&&(T=v._hoverX,z=v._hoverY);var O={},V=[],G=[],Z=function(Ee){return V.indexOf(Ee)!==-1};M&&(V=M===\"all\"?b._module.attributes.hoverinfo.flags:M.split(\"+\")),O.label=p.label,Z(\"label\")&&O.label&&G.push(O.label),p.hasOwnProperty(\"v\")&&(O.value=p.v,O.valueLabel=$6t(O.value,g),Z(\"value\")&&G.push(O.valueLabel)),O.currentPath=v.currentPath=rd.getPath(v.data),Z(\"current path\")&&!E&&G.push(O.currentPath);var H,N=[],j=function(){N.indexOf(H)===-1&&(G.push(H),N.push(H))};O.percentParent=v.percentParent=L/rd.getValue(S),O.parent=v.parentString=rd.getPtLabel(S),Z(\"percent parent\")&&(H=rd.formatPercent(O.percentParent,g)+\" of \"+O.parent,j()),O.percentEntry=v.percentEntry=L/rd.getValue(r),O.entry=v.entry=rd.getPtLabel(r),Z(\"percent entry\")&&!E&&!v.onPathbar&&(H=rd.formatPercent(O.percentEntry,g)+\" of \"+O.entry,j()),O.percentRoot=v.percentRoot=L/rd.getValue(l),O.root=v.root=rd.getPtLabel(l),Z(\"percent root\")&&!E&&(H=rd.formatPercent(O.percentRoot,g)+\" of \"+O.root,j()),O.text=x(\"hovertext\")||x(\"text\"),Z(\"text\")&&(H=O.text,g6e.isValidTextValue(H)&&G.push(H)),P=[GE(v,b,a.eventDataKeys)];var re={trace:b,y:z,_x0:v._x0,_x1:v._x1,_y0:v._y0,_y1:v._y1,text:G.join(\"
\"),name:C||Z(\"name\")?b.name:void 0,color:x(\"hoverlabel.bgcolor\")||p.color,borderColor:x(\"hoverlabel.bordercolor\"),fontFamily:x(\"hoverlabel.font.family\"),fontSize:x(\"hoverlabel.font.size\"),fontColor:x(\"hoverlabel.font.color\"),fontWeight:x(\"hoverlabel.font.weight\"),fontStyle:x(\"hoverlabel.font.style\"),fontVariant:x(\"hoverlabel.font.variant\"),nameLength:x(\"hoverlabel.namelength\"),textAlign:x(\"hoverlabel.align\"),hovertemplate:C,hovertemplateLabels:O,eventData:P};u&&(re.x0=T-v.rInscribed*v.rpx1,re.x1=T+v.rInscribed*v.rpx1,re.idealAlign=v.pxmid[0]<0?\"left\":\"right\"),c&&(re.x=T,re.idealAlign=T<0?\"left\":\"right\");var oe=[];VE.loneHover(re,{container:_._hoverlayer.node(),outerContainer:_._paper.node(),gd:n,inOut_bbox:oe}),P[0].bbox=oe[0],s._hasHoverLabel=!0}if(c){var _e=t.select(\"path.surface\");a.styleOne(_e,v,b,n,{hovered:!0})}s._hasHoverEvent=!0,n.emit(\"plotly_hover\",{points:P||[GE(v,b,a.eventDataKeys)],event:RA.event})}},h=function(v){var _=n._fullLayout,b=n._fullData[s.index],p=RA.select(this).datum();if(s._hasHoverEvent&&(v.originalEvent=RA.event,n.emit(\"plotly_unhover\",{points:[GE(p,b,a.eventDataKeys)],event:RA.event}),s._hasHoverEvent=!1),s._hasHoverLabel&&(VE.loneUnhover(_._hoverlayer.node()),s._hasHoverLabel=!1),c){var k=t.select(\"path.surface\");a.styleOne(k,p,b,n,{hovered:!1})}},d=function(v){var _=n._fullLayout,b=n._fullData[s.index],p=u&&(rd.isHierarchyRoot(v)||rd.isLeaf(v)),k=rd.getPtId(v),E=rd.isEntry(v)?rd.findEntryWithChild(l,k):rd.findEntryWithLevel(l,k),S=rd.getPtId(E),L={points:[GE(v,b,a.eventDataKeys)],event:RA.event};p||(L.nextLevel=S);var x=K6t.triggerHandler(n,\"plotly_\"+s.type+\"click\",L);if(x!==!1&&_.hovermode&&(n._hoverdata=[GE(v,b,a.eventDataKeys)],VE.click(n,RA.event)),!p&&x!==!1&&!n._dragging&&!n._transitioning){p6e.call(\"_storeDirectGUIEdit\",b,_._tracePreGUI[b.uid],{level:b.level});var C={data:[{level:S}],traces:[s.index]},M={frame:{redraw:!1,duration:a.transitionTime},transition:{duration:a.transitionTime,easing:a.transitionEasing},mode:\"immediate\",fromcurrent:!0};VE.loneUnhover(_._hoverlayer.node()),p6e.call(\"animate\",n,C,M)}};t.on(\"mouseover\",f),t.on(\"mouseout\",h),t.on(\"click\",d)};function GE(e,t,r){for(var n=e.data.data,i={curveNumber:t.index,pointNumber:n.i,data:t._input,fullData:t},a=0;a{\"use strict\";var jE=Oa(),Q6t=PE(),Zg=(D2(),ob(R2)).interpolate,y6e=So(),Av=Dr(),eLt=ru(),w6e=bv(),_6e=w6e.recordMinTextSize,tLt=w6e.clearMinTextSize,T6e=yD(),rLt=l_().getRotationAngle,iLt=T6e.computeTransform,nLt=T6e.transformInsideText,aLt=UW().styleOne,oLt=N0().resizeText,sLt=HE(),VW=mW(),Rl=Ky();ND.plot=function(e,t,r,n){var i=e._fullLayout,a=i._sunburstlayer,o,s,l=!r,u=!i.uniformtext.mode&&Rl.hasTransition(r);if(tLt(\"sunburst\",i),o=a.selectAll(\"g.trace.sunburst\").data(t,function(f){return f[0].trace.uid}),o.enter().append(\"g\").classed(\"trace\",!0).classed(\"sunburst\",!0).attr(\"stroke-linejoin\",\"round\"),o.order(),u){n&&(s=n());var c=jE.transition().duration(r.duration).ease(r.easing).each(\"end\",function(){s&&s()}).each(\"interrupt\",function(){s&&s()});c.each(function(){a.selectAll(\"g.trace\").each(function(f){x6e(e,f,this,r)})})}else o.each(function(f){x6e(e,f,this,r)}),i.uniformtext.mode&&oLt(e,i._sunburstlayer.selectAll(\".trace\"),\"sunburst\");l&&o.exit().remove()};function x6e(e,t,r,n){var i=e._context.staticPlot,a=e._fullLayout,o=!a.uniformtext.mode&&Rl.hasTransition(n),s=jE.select(r),l=s.selectAll(\"g.slice\"),u=t[0],c=u.trace,f=u.hierarchy,h=Rl.findEntryWithLevel(f,c.level),d=Rl.getMaxDepth(c),v=a._size,_=c.domain,b=v.w*(_.x[1]-_.x[0]),p=v.h*(_.y[1]-_.y[0]),k=.5*Math.min(b,p),E=u.cx=v.l+v.w*(_.x[1]+_.x[0])/2,S=u.cy=v.t+v.h*(1-_.y[0])-p/2;if(!h)return l.remove();var L=null,x={};o&&l.each(function(me){x[Rl.getPtId(me)]={rpx0:me.rpx0,rpx1:me.rpx1,x0:me.x0,x1:me.x1,transform:me.transform},!L&&Rl.isEntry(me)&&(L=me)});var C=lLt(h).descendants(),M=h.height+1,g=0,P=d;u.hasMultipleRoots&&Rl.isHierarchyRoot(h)&&(C=C.slice(1),M-=1,g=1,P+=1),C=C.filter(function(me){return me.y1<=P});var T=rLt(c.rotation);T&&C.forEach(function(me){me.x0+=T,me.x1+=T});var z=Math.min(M,d),O=function(me){return(me-g)/z*k},V=function(me,ie){return[me*Math.cos(ie),-me*Math.sin(ie)]},G=function(me){return Av.pathAnnulus(me.rpx0,me.rpx1,me.x0,me.x1,E,S)},Z=function(me){return E+b6e(me)[0]*(me.transform.rCenter||0)+(me.transform.x||0)},H=function(me){return S+b6e(me)[1]*(me.transform.rCenter||0)+(me.transform.y||0)};l=l.data(C,Rl.getPtId),l.enter().append(\"g\").classed(\"slice\",!0),o?l.exit().transition().each(function(){var me=jE.select(this),ie=me.select(\"path.surface\");ie.transition().attrTween(\"d\",function(Le){var Ae=oe(Le);return function(Fe){return G(Ae(Fe))}});var Se=me.select(\"g.slicetext\");Se.attr(\"opacity\",0)}).remove():l.exit().remove(),l.order();var N=null;if(o&&L){var j=Rl.getPtId(L);l.each(function(me){N===null&&Rl.getPtId(me)===j&&(N=me.x1)})}var re=l;o&&(re=re.transition().each(\"end\",function(){var me=jE.select(this);Rl.setSliceCursor(me,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:!1})})),re.each(function(me){var ie=jE.select(this),Se=Av.ensureSingle(ie,\"path\",\"surface\",function(Re){Re.style(\"pointer-events\",i?\"none\":\"all\")});me.rpx0=O(me.y0),me.rpx1=O(me.y1),me.xmid=(me.x0+me.x1)/2,me.pxmid=V(me.rpx1,me.xmid),me.midangle=-(me.xmid-Math.PI/2),me.startangle=-(me.x0-Math.PI/2),me.stopangle=-(me.x1-Math.PI/2),me.halfangle=.5*Math.min(Av.angleDelta(me.x0,me.x1)||Math.PI,Math.PI),me.ring=1-me.rpx0/me.rpx1,me.rInscribed=uLt(me,c),o?Se.transition().attrTween(\"d\",function(Re){var ce=_e(Re);return function(Ze){return G(ce(Ze))}}):Se.attr(\"d\",G),ie.call(sLt,h,e,t,{eventDataKeys:VW.eventDataKeys,transitionTime:VW.CLICK_TRANSITION_TIME,transitionEasing:VW.CLICK_TRANSITION_EASING}).call(Rl.setSliceCursor,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:e._transitioning}),Se.call(aLt,me,c,e);var Le=Av.ensureSingle(ie,\"g\",\"slicetext\"),Ae=Av.ensureSingle(Le,\"text\",\"\",function(Re){Re.attr(\"data-notex\",1)}),Fe=Av.ensureUniformFontSize(e,Rl.determineTextFont(c,me,a.font));Ae.text(ND.formatSliceLabel(me,h,c,t,a)).classed(\"slicetext\",!0).attr(\"text-anchor\",\"middle\").call(y6e.font,Fe).call(eLt.convertToTspans,e);var Pe=y6e.bBox(Ae.node());me.transform=nLt(Pe,me,u),me.transform.targetX=Z(me),me.transform.targetY=H(me);var ge=function(Re,ce){var Ze=Re.transform;return iLt(Ze,ce),Ze.fontSize=Fe.size,_6e(c.type,Ze,a),Av.getTextTransform(Ze)};o?Ae.transition().attrTween(\"transform\",function(Re){var ce=Ee(Re);return function(Ze){return ge(ce(Ze),Pe)}}):Ae.attr(\"transform\",ge(me,Pe))});function oe(me){var ie=Rl.getPtId(me),Se=x[ie],Le=x[Rl.getPtId(h)],Ae;if(Le){var Fe=(me.x1>Le.x1?2*Math.PI:0)+T;Ae=me.rpx1N?2*Math.PI:0)+T;Se={x0:Ae,x1:Ae}}else Se={rpx0:k,rpx1:k},Av.extendFlat(Se,Ce(me));else Se={rpx0:0,rpx1:0};else Se={x0:T,x1:T};return Zg(Se,Le)}function Ee(me){var ie=x[Rl.getPtId(me)],Se,Le=me.transform;if(ie)Se=ie;else if(Se={rpx1:me.rpx1,transform:{textPosAngle:Le.textPosAngle,scale:0,rotate:Le.rotate,rCenter:Le.rCenter,x:Le.x,y:Le.y}},L)if(me.parent)if(N){var Ae=me.x1>N?2*Math.PI:0;Se.x0=Se.x1=Ae}else Av.extendFlat(Se,Ce(me));else Se.x0=Se.x1=T;else Se.x0=Se.x1=T;var Fe=Zg(Se.transform.textPosAngle,me.transform.textPosAngle),Pe=Zg(Se.rpx1,me.rpx1),ge=Zg(Se.x0,me.x0),Re=Zg(Se.x1,me.x1),ce=Zg(Se.transform.scale,Le.scale),Ze=Zg(Se.transform.rotate,Le.rotate),ut=Le.rCenter===0?3:Se.transform.rCenter===0?1/3:1,pt=Zg(Se.transform.rCenter,Le.rCenter),Zt=function(st){return pt(Math.pow(st,ut))};return function(st){var lt=Pe(st),Gt=ge(st),Nt=Re(st),Jt=Zt(st),sr=V(lt,(Gt+Nt)/2),wr=Fe(st),cr={pxmid:sr,rpx1:lt,transform:{textPosAngle:wr,rCenter:Jt,x:Le.x,y:Le.y}};return _6e(c.type,Le,a),{transform:{targetX:Z(cr),targetY:H(cr),scale:ce(st),rotate:Ze(st),rCenter:Jt}}}}function Ce(me){var ie=me.parent,Se=x[Rl.getPtId(ie)],Le={};if(Se){var Ae=ie.children,Fe=Ae.indexOf(me),Pe=Ae.length,ge=Zg(Se.x0,Se.x1);Le.x0=ge(Fe/Pe),Le.x1=ge(Fe/Pe)}else Le.x0=Le.x1=0;return Le}}function lLt(e){return Q6t.partition().size([2*Math.PI,e.height+1])(e)}ND.formatSliceLabel=function(e,t,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!a&&(!o||o===\"none\"))return\"\";var s=i.separators,l=n[0],u=e.data.data,c=l.hierarchy,f=Rl.isHierarchyRoot(e),h=Rl.getParent(c,e),d=Rl.getValue(e);if(!a){var v=o.split(\"+\"),_=function(g){return v.indexOf(g)!==-1},b=[],p;if(_(\"label\")&&u.label&&b.push(u.label),u.hasOwnProperty(\"v\")&&_(\"value\")&&b.push(Rl.formatValue(u.v,s)),!f){_(\"current path\")&&b.push(Rl.getPath(e.data));var k=0;_(\"percent parent\")&&k++,_(\"percent entry\")&&k++,_(\"percent root\")&&k++;var E=k>1;if(k){var S,L=function(g){p=Rl.formatPercent(S,s),E&&(p+=\" of \"+g),b.push(p)};_(\"percent parent\")&&!f&&(S=d/Rl.getValue(h),L(\"parent\")),_(\"percent entry\")&&(S=d/Rl.getValue(t),L(\"entry\")),_(\"percent root\")&&(S=d/Rl.getValue(c),L(\"root\"))}}return _(\"text\")&&(p=Av.castOption(r,u.i,\"text\"),Av.isValidTextValue(p)&&b.push(p)),b.join(\"
\")}var x=Av.castOption(r,u.i,\"texttemplate\");if(!x)return\"\";var C={};u.label&&(C.label=u.label),u.hasOwnProperty(\"v\")&&(C.value=u.v,C.valueLabel=Rl.formatValue(u.v,s)),C.currentPath=Rl.getPath(e.data),f||(C.percentParent=d/Rl.getValue(h),C.percentParentLabel=Rl.formatPercent(C.percentParent,s),C.parent=Rl.getPtLabel(h)),C.percentEntry=d/Rl.getValue(t),C.percentEntryLabel=Rl.formatPercent(C.percentEntry,s),C.entry=Rl.getPtLabel(t),C.percentRoot=d/Rl.getValue(c),C.percentRootLabel=Rl.formatPercent(C.percentRoot,s),C.root=Rl.getPtLabel(c),u.hasOwnProperty(\"color\")&&(C.color=u.color);var M=Av.castOption(r,u.i,\"text\");return(Av.isValidTextValue(M)||M===\"\")&&(C.text=M),C.customdata=Av.castOption(r,u.i,\"customdata\"),Av.texttemplateString({data:[C,r._meta],fallback:r.texttemplatefallback,labels:C,locale:i._d3locale,template:x})};function uLt(e){return e.rpx0===0&&Av.isFullCircle([e.x0,e.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(e.halfangle)),e.ring/2))}function b6e(e){return cLt(e.rpx1,e.transform.textPosAngle)}function cLt(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}});var S6e=ye((e0r,A6e)=>{\"use strict\";A6e.exports={moduleType:\"trace\",name:\"sunburst\",basePlotModule:qke(),categories:[],animatable:!0,attributes:LE(),layoutAttributes:yW(),supplyDefaults:Xke(),supplyLayoutDefaults:Yke(),calc:RE().calc,crossTraceCalc:RE().crossTraceCalc,plot:UD().plot,style:UW().style,colorbar:$d(),meta:{}}});var E6e=ye((t0r,M6e)=>{\"use strict\";M6e.exports=S6e()});var C6e=ye(DA=>{\"use strict\";var k6e=Mc();DA.name=\"treemap\";DA.plot=function(e,t,r,n){k6e.plotBasePlot(DA.name,e,t,r,n)};DA.clean=function(e,t,r,n){k6e.cleanBasePlot(DA.name,e,t,r,n)}});var z2=ye((i0r,L6e)=>{\"use strict\";L6e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:\"poly\",eventDataKeys:[\"currentPath\",\"root\",\"entry\",\"percentRoot\",\"percentEntry\",\"percentParent\"],gapWithPathbar:1}});var VD=ye((n0r,R6e)=>{\"use strict\";var{hovertemplateAttrs:fLt,texttemplateAttrs:hLt,templatefallbackAttrs:P6e}=Ll(),dLt=Tu(),vLt=Cc().attributes,O2=S2(),Q0=LE(),I6e=z2(),GW=Ao().extendFlat,pLt=Pd().pattern;R6e.exports={labels:Q0.labels,parents:Q0.parents,values:Q0.values,branchvalues:Q0.branchvalues,count:Q0.count,level:Q0.level,maxdepth:Q0.maxdepth,tiling:{packing:{valType:\"enumerated\",values:[\"squarify\",\"binary\",\"dice\",\"slice\",\"slice-dice\",\"dice-slice\"],dflt:\"squarify\",editType:\"plot\"},squarifyratio:{valType:\"number\",min:1,dflt:1,editType:\"plot\"},flip:{valType:\"flaglist\",flags:[\"x\",\"y\"],dflt:\"\",editType:\"plot\"},pad:{valType:\"number\",min:0,dflt:3,editType:\"plot\"},editType:\"calc\"},marker:GW({pad:{t:{valType:\"number\",min:0,editType:\"plot\"},l:{valType:\"number\",min:0,editType:\"plot\"},r:{valType:\"number\",min:0,editType:\"plot\"},b:{valType:\"number\",min:0,editType:\"plot\"},editType:\"calc\"},colors:Q0.marker.colors,pattern:pLt,depthfade:{valType:\"enumerated\",values:[!0,!1,\"reversed\"],editType:\"style\"},line:Q0.marker.line,cornerradius:{valType:\"number\",min:0,dflt:0,editType:\"plot\"},editType:\"calc\"},dLt(\"marker\",{colorAttr:\"colors\",anim:!1})),pathbar:{visible:{valType:\"boolean\",dflt:!0,editType:\"plot\"},side:{valType:\"enumerated\",values:[\"top\",\"bottom\"],dflt:\"top\",editType:\"plot\"},edgeshape:{valType:\"enumerated\",values:[\">\",\"<\",\"|\",\"/\",\"\\\\\"],dflt:\">\",editType:\"plot\"},thickness:{valType:\"number\",min:12,editType:\"plot\"},textfont:GW({},O2.textfont,{}),editType:\"calc\"},text:O2.text,textinfo:Q0.textinfo,texttemplate:hLt({editType:\"plot\"},{keys:I6e.eventDataKeys.concat([\"label\",\"value\"])}),texttemplatefallback:P6e({editType:\"plot\"}),hovertext:O2.hovertext,hoverinfo:Q0.hoverinfo,hovertemplate:fLt({},{keys:I6e.eventDataKeys}),hovertemplatefallback:P6e(),textfont:O2.textfont,insidetextfont:O2.insidetextfont,outsidetextfont:GW({},O2.outsidetextfont,{}),textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"top left\",editType:\"plot\"},sort:O2.sort,root:Q0.root,domain:vLt({name:\"treemap\",trace:!0,editType:\"calc\"})}});var HW=ye((a0r,D6e)=>{\"use strict\";D6e.exports={treemapcolorway:{valType:\"colorlist\",editType:\"calc\"},extendtreemapcolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}});var q6e=ye((o0r,O6e)=>{\"use strict\";var F6e=Dr(),gLt=VD(),mLt=ka(),yLt=Cc().defaults,_Lt=r0().handleText,xLt=e2().TEXTPAD,bLt=M2().handleMarkerDefaults,z6e=tc(),wLt=z6e.hasColorscale,TLt=z6e.handleDefaults;O6e.exports=function(t,r,n,i){function a(b,p){return F6e.coerce(t,r,gLt,b,p)}var o=a(\"labels\"),s=a(\"parents\");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a(\"values\");l&&l.length?a(\"branchvalues\"):a(\"count\"),a(\"level\"),a(\"maxdepth\");var u=a(\"tiling.packing\");u===\"squarify\"&&a(\"tiling.squarifyratio\"),a(\"tiling.flip\"),a(\"tiling.pad\");var c=a(\"text\");a(\"texttemplate\"),a(\"texttemplatefallback\"),r.texttemplate||a(\"textinfo\",F6e.isArrayOrTypedArray(c)?\"text+label\":\"label\"),a(\"hovertext\"),a(\"hovertemplate\"),a(\"hovertemplatefallback\");var f=a(\"pathbar.visible\"),h=\"auto\";_Lt(t,r,i,a,h,{hasPathbar:f,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a(\"textposition\");var d=r.textposition.indexOf(\"bottom\")!==-1;bLt(t,r,i,a);var v=r._hasColorscale=wLt(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis;v?TLt(t,r,i,a,{prefix:\"marker.\",cLetter:\"c\"}):a(\"marker.depthfade\",!(r.marker.colors||[]).length);var _=r.textfont.size*2;a(\"marker.pad.t\",d?_/4:_),a(\"marker.pad.l\",_/4),a(\"marker.pad.r\",_/4),a(\"marker.pad.b\",d?_:_/4),a(\"marker.cornerradius\"),r._hovered={marker:{line:{width:2,color:mLt.contrast(i.paper_bgcolor)}}},f&&(a(\"pathbar.thickness\",r.pathbar.textfont.size+2*xLt),a(\"pathbar.side\"),a(\"pathbar.edgeshape\")),a(\"sort\"),a(\"root.color\"),yLt(r,i,a),r._length=null}});var N6e=ye((s0r,B6e)=>{\"use strict\";var ALt=Dr(),SLt=HW();B6e.exports=function(t,r){function n(i,a){return ALt.coerce(t,r,SLt,i,a)}n(\"treemapcolorway\",r.colorway),n(\"extendtreemapcolors\")}});var WW=ye(jW=>{\"use strict\";var U6e=RE();jW.calc=function(e,t){return U6e.calc(e,t)};jW.crossTraceCalc=function(e){return U6e._runCrossTraceCalc(\"treemap\",e)}});var XW=ye((u0r,V6e)=>{\"use strict\";V6e.exports=function e(t,r,n){var i;n.swapXY&&(i=t.x0,t.x0=t.y0,t.y0=i,i=t.x1,t.x1=t.y1,t.y1=i),n.flipX&&(i=t.x0,t.x0=r[0]-t.x1,t.x1=r[0]-i),n.flipY&&(i=t.y0,t.y0=r[1]-t.y1,t.y1=r[1]-i);var a=t.children;if(a)for(var o=0;o{\"use strict\";var FA=PE(),MLt=XW();G6e.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.packing===\"dice-slice\",s=n.pad[a?\"bottom\":\"top\"],l=n.pad[i?\"right\":\"left\"],u=n.pad[i?\"left\":\"right\"],c=n.pad[a?\"top\":\"bottom\"],f;o&&(f=l,l=s,s=f,f=u,u=c,c=f);var h=FA.treemap().tile(ELt(n.packing,n.squarifyratio)).paddingInner(n.pad.inner).paddingLeft(l).paddingRight(u).paddingTop(s).paddingBottom(c).size(o?[r[1],r[0]]:r)(t);return(o||i||a)&&MLt(h,r,{swapXY:o,flipX:i,flipY:a}),h};function ELt(e,t){switch(e){case\"squarify\":return FA.treemapSquarify.ratio(t);case\"binary\":return FA.treemapBinary;case\"dice\":return FA.treemapDice;case\"slice\":return FA.treemapSlice;default:return FA.treemapSliceDice}}});var GD=ye((f0r,X6e)=>{\"use strict\";var H6e=Oa(),zA=ka(),j6e=Dr(),YW=Ky(),kLt=bv().resizeText,CLt=BD();function LLt(e){var t=e._fullLayout._treemaplayer.selectAll(\".trace\");kLt(e,t,\"treemap\"),t.each(function(r){var n=H6e.select(this),i=r[0],a=i.trace;n.style(\"opacity\",a.opacity),n.selectAll(\"path.surface\").each(function(o){H6e.select(this).call(W6e,o,a,e,{hovered:!1})})})}function W6e(e,t,r,n,i){var a=(i||{}).hovered,o=t.data.data,s=o.i,l,u,c=o.color,f=YW.isHierarchyRoot(t),h=1;if(a)l=r._hovered.marker.line.color,u=r._hovered.marker.line.width;else if(f&&c===r.root.color)h=100,l=\"rgba(0,0,0,0)\",u=0;else if(l=j6e.castOption(r,s,\"marker.line.color\")||zA.defaultLine,u=j6e.castOption(r,s,\"marker.line.width\")||0,!r._hasColorscale&&!t.onPathbar){var d=r.marker.depthfade;if(d){var v=zA.combine(zA.addOpacity(r._backgroundColor,.75),c),_;if(d===!0){var b=YW.getMaxDepth(r);isFinite(b)?YW.isLeaf(t)?_=0:_=r._maxVisibleLayers-(t.data.depth-r._entryDepth):_=t.data.height+1}else _=t.data.depth-r._entryDepth,r._atRootLevel||_++;if(_>0)for(var p=0;p<_;p++){var k=.5*p/_;c=zA.combine(zA.addOpacity(v,k),c)}}}e.call(CLt,t,r,n,c).style(\"stroke-width\",u).call(zA.stroke,l).style(\"opacity\",h)}X6e.exports={style:LLt,styleOne:W6e}});var $6e=ye((h0r,J6e)=>{\"use strict\";var Z6e=Oa(),HD=Dr(),Y6e=So(),PLt=ru(),ILt=ZW(),K6e=GD().styleOne,KW=z2(),OA=Ky(),RLt=HE(),JW=!0;J6e.exports=function(t,r,n,i,a){var o=a.barDifY,s=a.width,l=a.height,u=a.viewX,c=a.viewY,f=a.pathSlice,h=a.toMoveInsideSlice,d=a.strTransform,v=a.hasTransition,_=a.handleSlicesExit,b=a.makeUpdateSliceInterpolator,p=a.makeUpdateTextInterpolator,k={},E=t._context.staticPlot,S=t._fullLayout,L=r[0],x=L.trace,C=L.hierarchy,M=s/x._entryDepth,g=OA.listPath(n.data,\"id\"),P=ILt(C.copy(),[s,l],{packing:\"dice\",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();P=P.filter(function(z){var O=g.indexOf(z.data.id);return O===-1?!1:(z.x0=M*O,z.x1=M*(O+1),z.y0=o,z.y1=o+l,z.onPathbar=!0,!0)}),P.reverse(),i=i.data(P,OA.getPtId),i.enter().append(\"g\").classed(\"pathbar\",!0),_(i,JW,k,[s,l],f),i.order();var T=i;v&&(T=T.transition().each(\"end\",function(){var z=Z6e.select(this);OA.setSliceCursor(z,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),T.each(function(z){z._x0=u(z.x0),z._x1=u(z.x1),z._y0=c(z.y0),z._y1=c(z.y1),z._hoverX=u(z.x1-Math.min(s,l)/2),z._hoverY=c(z.y1-l/2);var O=Z6e.select(this),V=HD.ensureSingle(O,\"path\",\"surface\",function(N){N.style(\"pointer-events\",E?\"none\":\"all\")});v?V.transition().attrTween(\"d\",function(N){var j=b(N,JW,k,[s,l]);return function(re){return f(j(re))}}):V.attr(\"d\",f),O.call(RLt,n,t,r,{styleOne:K6e,eventDataKeys:KW.eventDataKeys,transitionTime:KW.CLICK_TRANSITION_TIME,transitionEasing:KW.CLICK_TRANSITION_EASING}).call(OA.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),V.call(K6e,z,x,t,{hovered:!1}),z._text=(OA.getPtLabel(z)||\"\").split(\"
\").join(\" \")||\"\";var G=HD.ensureSingle(O,\"g\",\"slicetext\"),Z=HD.ensureSingle(G,\"text\",\"\",function(N){N.attr(\"data-notex\",1)}),H=HD.ensureUniformFontSize(t,OA.determineTextFont(x,z,S.font,{onPathbar:!0}));Z.text(z._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",\"start\").call(Y6e.font,H).call(PLt.convertToTspans,t),z.textBB=Y6e.bBox(Z.node()),z.transform=h(z,{fontSize:H.size,onPathbar:!0}),z.transform.fontSize=H.size,v?Z.transition().attrTween(\"transform\",function(N){var j=p(N,JW,k,[s,l]);return function(re){return d(j(re))}}):Z.attr(\"transform\",d(z))})}});var rLe=ye((d0r,tLe)=>{\"use strict\";var Q6e=Oa(),$W=(D2(),ob(R2)).interpolate,Z_=Ky(),WE=Dr(),eLe=e2().TEXTPAD,DLt=n2(),FLt=DLt.toMoveInsideBar,zLt=bv(),QW=zLt.recordMinTextSize,OLt=z2(),qLt=$6e();function q2(e){return Z_.isHierarchyRoot(e)?\"\":Z_.getPtId(e)}tLe.exports=function(t,r,n,i,a){var o=t._fullLayout,s=r[0],l=s.trace,u=l.type,c=u===\"icicle\",f=s.hierarchy,h=Z_.findEntryWithLevel(f,l.level),d=Q6e.select(n),v=d.selectAll(\"g.pathbar\"),_=d.selectAll(\"g.slice\");if(!h){v.remove(),_.remove();return}var b=Z_.isHierarchyRoot(h),p=!o.uniformtext.mode&&Z_.hasTransition(i),k=Z_.getMaxDepth(l),E=function($e){return $e.data.depth-h.data.depth-1?C+P:-(g+P):0,z={x0:M,x1:M,y0:T,y1:T+g},O=function($e,St,Qt){var Vt=l.tiling.pad,_t=function(lr){return lr-Vt<=St.x0},It=function(lr){return lr+Vt>=St.x1},mt=function(lr){return lr-Vt<=St.y0},er=function(lr){return lr+Vt>=St.y1};return $e.x0===St.x0&&$e.x1===St.x1&&$e.y0===St.y0&&$e.y1===St.y1?{x0:$e.x0,x1:$e.x1,y0:$e.y0,y1:$e.y1}:{x0:_t($e.x0-Vt)?0:It($e.x0-Vt)?Qt[0]:$e.x0,x1:_t($e.x1+Vt)?0:It($e.x1+Vt)?Qt[0]:$e.x1,y0:mt($e.y0-Vt)?0:er($e.y0-Vt)?Qt[1]:$e.y0,y1:mt($e.y1+Vt)?0:er($e.y1+Vt)?Qt[1]:$e.y1}},V=null,G={},Z={},H=null,N=function($e,St){return St?G[q2($e)]:Z[q2($e)]},j=function($e,St,Qt,Vt){if(St)return G[q2(f)]||z;var _t=Z[l.level]||Qt;return E($e)?O($e,_t,Vt):{}};s.hasMultipleRoots&&b&&k++,l._maxDepth=k,l._backgroundColor=o.paper_bgcolor,l._entryDepth=h.data.depth,l._atRootLevel=b;var re=-x/2+S.l+S.w*(L.x[1]+L.x[0])/2,oe=-C/2+S.t+S.h*(1-(L.y[1]+L.y[0])/2),_e=function($e){return re+$e},Ee=function($e){return oe+$e},Ce=Ee(0),me=_e(0),ie=function($e){return me+$e},Se=function($e){return Ce+$e};function Le($e,St){return $e+\",\"+St}var Ae=ie(0),Fe=function($e){$e.x=Math.max(Ae,$e.x)},Pe=l.pathbar.edgeshape,ge=function($e){var St=ie(Math.max(Math.min($e.x0,$e.x0),0)),Qt=ie(Math.min(Math.max($e.x1,$e.x1),M)),Vt=Se($e.y0),_t=Se($e.y1),It=g/2,mt={},er={};mt.x=St,er.x=Qt,mt.y=er.y=(Vt+_t)/2;var lr={x:St,y:Vt},Tr={x:Qt,y:Vt},Lr={x:Qt,y:_t},ti={x:St,y:_t};return Pe===\">\"?(lr.x-=It,Tr.x-=It,Lr.x-=It,ti.x-=It):Pe===\"/\"?(Lr.x-=It,ti.x-=It,mt.x-=It/2,er.x-=It/2):Pe===\"\\\\\"?(lr.x-=It,Tr.x-=It,mt.x-=It/2,er.x-=It/2):Pe===\"<\"&&(mt.x-=It,er.x-=It),Fe(lr),Fe(ti),Fe(mt),Fe(Tr),Fe(Lr),Fe(er),\"M\"+Le(lr.x,lr.y)+\"L\"+Le(Tr.x,Tr.y)+\"L\"+Le(er.x,er.y)+\"L\"+Le(Lr.x,Lr.y)+\"L\"+Le(ti.x,ti.y)+\"L\"+Le(mt.x,mt.y)+\"Z\"},Re=l[c?\"tiling\":\"marker\"].pad,ce=function($e){return l.textposition.indexOf($e)!==-1},Ze=ce(\"top\"),ut=ce(\"left\"),pt=ce(\"right\"),Zt=ce(\"bottom\"),st=function($e){var St=_e($e.x0),Qt=_e($e.x1),Vt=Ee($e.y0),_t=Ee($e.y1),It=Qt-St,mt=_t-Vt;if(!It||!mt)return\"\";var er=l.marker.cornerradius||0,lr=Math.min(er,It/2,mt/2);lr&&$e.data&&$e.data.data&&$e.data.data.label&&(Ze&&(lr=Math.min(lr,Re.t)),ut&&(lr=Math.min(lr,Re.l)),pt&&(lr=Math.min(lr,Re.r)),Zt&&(lr=Math.min(lr,Re.b)));var Tr=function(Lr,ti){return lr?\"a\"+Le(lr,lr)+\" 0 0 1 \"+Le(Lr,ti):\"\"};return\"M\"+Le(St,Vt+lr)+Tr(lr,-lr)+\"L\"+Le(Qt-lr,Vt)+Tr(lr,lr)+\"L\"+Le(Qt,_t-lr)+Tr(-lr,lr)+\"L\"+Le(St+lr,_t)+Tr(-lr,-lr)+\"Z\"},lt=function($e,St){var Qt=$e.x0,Vt=$e.x1,_t=$e.y0,It=$e.y1,mt=$e.textBB,er=Ze||St.isHeader&&!Zt,lr=er?\"start\":Zt?\"end\":\"middle\",Tr=ce(\"right\"),Lr=ce(\"left\")||St.onPathbar,ti=Lr?-1:Tr?1:0;if(St.isHeader){if(Qt+=(c?Re:Re.l)-eLe,Vt-=(c?Re:Re.r)-eLe,Qt>=Vt){var Br=(Qt+Vt)/2;Qt=Br,Vt=Br}var Vr;Zt?(Vr=It-(c?Re:Re.b),_t{\"use strict\";var BLt=Oa(),NLt=Ky(),ULt=bv(),VLt=ULt.clearMinTextSize,GLt=N0().resizeText,iLe=rLe();nLe.exports=function(t,r,n,i,a){var o=a.type,s=a.drawDescendants,l=t._fullLayout,u=l[\"_\"+o+\"layer\"],c,f,h=!n;if(VLt(o,l),c=u.selectAll(\"g.trace.\"+o).data(r,function(v){return v[0].trace.uid}),c.enter().append(\"g\").classed(\"trace\",!0).classed(o,!0),c.order(),!l.uniformtext.mode&&NLt.hasTransition(n)){i&&(f=i());var d=BLt.transition().duration(n.duration).ease(n.easing).each(\"end\",function(){f&&f()}).each(\"interrupt\",function(){f&&f()});d.each(function(){u.selectAll(\"g.trace\").each(function(v){iLe(t,v,this,n,s)})})}else c.each(function(v){iLe(t,v,this,n,s)}),l.uniformtext.mode&&GLt(t,u.selectAll(\".trace\"),o);h&&c.exit().remove()}});var uLe=ye((p0r,lLe)=>{\"use strict\";var aLe=Oa(),jD=Dr(),oLe=So(),HLt=ru(),jLt=ZW(),sLe=GD().styleOne,tX=z2(),Y_=Ky(),WLt=HE(),XLt=UD().formatSliceLabel,rX=!1;lLe.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,_=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,k={},E=t._context.staticPlot,S=t._fullLayout,L=r[0],x=L.trace,C=x.textposition.indexOf(\"left\")!==-1,M=x.textposition.indexOf(\"right\")!==-1,g=x.textposition.indexOf(\"bottom\")!==-1,P=!g&&!x.marker.pad.t||g&&!x.marker.pad.b,T=jLt(n,[o,s],{packing:x.tiling.packing,squarifyratio:x.tiling.squarifyratio,flipX:x.tiling.flip.indexOf(\"x\")>-1,flipY:x.tiling.flip.indexOf(\"y\")>-1,pad:{inner:x.tiling.pad,top:x.marker.pad.t,left:x.marker.pad.l,right:x.marker.pad.r,bottom:x.marker.pad.b}}),z=T.descendants(),O=1/0,V=-1/0;z.forEach(function(j){var re=j.depth;re>=x._maxDepth?(j.x0=j.x1=(j.x0+j.x1)/2,j.y0=j.y1=(j.y0+j.y1)/2):(O=Math.min(O,re),V=Math.max(V,re))}),i=i.data(z,Y_.getPtId),x._maxVisibleLayers=isFinite(V)?V-O+1:0,i.enter().append(\"g\").classed(\"slice\",!0),v(i,rX,k,[o,s],c),i.order();var G=null;if(d&&p){var Z=Y_.getPtId(p);i.each(function(j){G===null&&Y_.getPtId(j)===Z&&(G={x0:j.x0,x1:j.x1,y0:j.y0,y1:j.y1})})}var H=function(){return G||{x0:0,x1:o,y0:0,y1:s}},N=i;return d&&(N=N.transition().each(\"end\",function(){var j=aLe.select(this);Y_.setSliceCursor(j,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),N.each(function(j){var re=Y_.isHeader(j,x);j._x0=l(j.x0),j._x1=l(j.x1),j._y0=u(j.y0),j._y1=u(j.y1),j._hoverX=l(j.x1-x.marker.pad.r),j._hoverY=u(g?j.y1-x.marker.pad.b/2:j.y0+x.marker.pad.t/2);var oe=aLe.select(this),_e=jD.ensureSingle(oe,\"path\",\"surface\",function(Le){Le.style(\"pointer-events\",E?\"none\":\"all\")});d?_e.transition().attrTween(\"d\",function(Le){var Ae=_(Le,rX,H(),[o,s]);return function(Fe){return c(Ae(Fe))}}):_e.attr(\"d\",c),oe.call(WLt,n,t,r,{styleOne:sLe,eventDataKeys:tX.eventDataKeys,transitionTime:tX.CLICK_TRANSITION_TIME,transitionEasing:tX.CLICK_TRANSITION_EASING}).call(Y_.setSliceCursor,t,{isTransitioning:t._transitioning}),_e.call(sLe,j,x,t,{hovered:!1}),j.x0===j.x1||j.y0===j.y1?j._text=\"\":re?j._text=P?\"\":Y_.getPtLabel(j)||\"\":j._text=XLt(j,n,x,r,S)||\"\";var Ee=jD.ensureSingle(oe,\"g\",\"slicetext\"),Ce=jD.ensureSingle(Ee,\"text\",\"\",function(Le){Le.attr(\"data-notex\",1)}),me=jD.ensureUniformFontSize(t,Y_.determineTextFont(x,j,S.font)),ie=j._text||\" \",Se=re&&ie.indexOf(\"
\")===-1;Ce.text(ie).classed(\"slicetext\",!0).attr(\"text-anchor\",M?\"end\":C||Se?\"start\":\"middle\").call(oLe.font,me).call(HLt.convertToTspans,t),j.textBB=oLe.bBox(Ce.node()),j.transform=f(j,{fontSize:me.size,isHeader:re}),j.transform.fontSize=me.size,d?Ce.transition().attrTween(\"transform\",function(Le){var Ae=b(Le,rX,H(),[o,s]);return function(Fe){return h(Ae(Fe))}}):Ce.attr(\"transform\",h(j))}),G}});var fLe=ye((g0r,cLe)=>{\"use strict\";var ZLt=eX(),YLt=uLe();cLe.exports=function(t,r,n,i){return ZLt(t,r,n,i,{type:\"treemap\",drawDescendants:YLt})}});var dLe=ye((m0r,hLe)=>{\"use strict\";hLe.exports={moduleType:\"trace\",name:\"treemap\",basePlotModule:C6e(),categories:[],animatable:!0,attributes:VD(),layoutAttributes:HW(),supplyDefaults:q6e(),supplyLayoutDefaults:N6e(),calc:WW().calc,crossTraceCalc:WW().crossTraceCalc,plot:fLe(),style:GD().style,colorbar:$d(),meta:{}}});var pLe=ye((y0r,vLe)=>{\"use strict\";vLe.exports=dLe()});var mLe=ye(qA=>{\"use strict\";var gLe=Mc();qA.name=\"icicle\";qA.plot=function(e,t,r,n){gLe.plotBasePlot(qA.name,e,t,r,n)};qA.clean=function(e,t,r,n){gLe.cleanBasePlot(qA.name,e,t,r,n)}});var iX=ye((x0r,xLe)=>{\"use strict\";var{hovertemplateAttrs:KLt,texttemplateAttrs:JLt,templatefallbackAttrs:yLe}=Ll(),$Lt=Tu(),QLt=Cc().attributes,XE=S2(),o0=LE(),WD=VD(),_Le=z2(),ePt=Ao().extendFlat,tPt=Pd().pattern;xLe.exports={labels:o0.labels,parents:o0.parents,values:o0.values,branchvalues:o0.branchvalues,count:o0.count,level:o0.level,maxdepth:o0.maxdepth,tiling:{orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"h\",editType:\"plot\"},flip:WD.tiling.flip,pad:{valType:\"number\",min:0,dflt:0,editType:\"plot\"},editType:\"calc\"},marker:ePt({colors:o0.marker.colors,line:o0.marker.line,pattern:tPt,editType:\"calc\"},$Lt(\"marker\",{colorAttr:\"colors\",anim:!1})),leaf:o0.leaf,pathbar:WD.pathbar,text:XE.text,textinfo:o0.textinfo,texttemplate:JLt({editType:\"plot\"},{keys:_Le.eventDataKeys.concat([\"label\",\"value\"])}),texttemplatefallback:yLe({editType:\"plot\"}),hovertext:XE.hovertext,hoverinfo:o0.hoverinfo,hovertemplate:KLt({},{keys:_Le.eventDataKeys}),hovertemplatefallback:yLe(),textfont:XE.textfont,insidetextfont:XE.insidetextfont,outsidetextfont:WD.outsidetextfont,textposition:WD.textposition,sort:XE.sort,root:o0.root,domain:QLt({name:\"icicle\",trace:!0,editType:\"calc\"})}});var nX=ye((b0r,bLe)=>{\"use strict\";bLe.exports={iciclecolorway:{valType:\"colorlist\",editType:\"calc\"},extendiciclecolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}});var SLe=ye((w0r,ALe)=>{\"use strict\";var wLe=Dr(),rPt=iX(),iPt=ka(),nPt=Cc().defaults,aPt=r0().handleText,oPt=e2().TEXTPAD,sPt=M2().handleMarkerDefaults,TLe=tc(),lPt=TLe.hasColorscale,uPt=TLe.handleDefaults;ALe.exports=function(t,r,n,i){function a(d,v){return wLe.coerce(t,r,rPt,d,v)}var o=a(\"labels\"),s=a(\"parents\");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a(\"values\");l&&l.length?a(\"branchvalues\"):a(\"count\"),a(\"level\"),a(\"maxdepth\"),a(\"tiling.orientation\"),a(\"tiling.flip\"),a(\"tiling.pad\");var u=a(\"text\");a(\"texttemplate\"),a(\"texttemplatefallback\"),r.texttemplate||a(\"textinfo\",wLe.isArrayOrTypedArray(u)?\"text+label\":\"label\"),a(\"hovertext\"),a(\"hovertemplate\"),a(\"hovertemplatefallback\");var c=a(\"pathbar.visible\"),f=\"auto\";aPt(t,r,i,a,f,{hasPathbar:c,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a(\"textposition\"),sPt(t,r,i,a);var h=r._hasColorscale=lPt(t,\"marker\",\"colors\")||(t.marker||{}).coloraxis;h&&uPt(t,r,i,a,{prefix:\"marker.\",cLetter:\"c\"}),a(\"leaf.opacity\",h?1:.7),r._hovered={marker:{line:{width:2,color:iPt.contrast(i.paper_bgcolor)}}},c&&(a(\"pathbar.thickness\",r.pathbar.textfont.size+2*oPt),a(\"pathbar.side\"),a(\"pathbar.edgeshape\")),a(\"sort\"),a(\"root.color\"),nPt(r,i,a),r._length=null}});var ELe=ye((T0r,MLe)=>{\"use strict\";var cPt=Dr(),fPt=nX();MLe.exports=function(t,r){function n(i,a){return cPt.coerce(t,r,fPt,i,a)}n(\"iciclecolorway\",r.colorway),n(\"extendiciclecolors\")}});var oX=ye(aX=>{\"use strict\";var kLe=RE();aX.calc=function(e,t){return kLe.calc(e,t)};aX.crossTraceCalc=function(e){return kLe._runCrossTraceCalc(\"icicle\",e)}});var LLe=ye((S0r,CLe)=>{\"use strict\";var hPt=PE(),dPt=XW();CLe.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.orientation===\"h\",s=n.maxDepth,l=r[0],u=r[1];s&&(l=(t.height+1)*r[0]/Math.min(t.height+1,s),u=(t.height+1)*r[1]/Math.min(t.height+1,s));var c=hPt.partition().padding(n.pad.inner).size(o?[r[1],l]:[r[0],u])(t);return(o||i||a)&&dPt(c,r,{swapXY:o,flipX:i,flipY:a}),c}});var sX=ye((M0r,FLe)=>{\"use strict\";var PLe=Oa(),ILe=ka(),RLe=Dr(),vPt=bv().resizeText,pPt=BD();function gPt(e){var t=e._fullLayout._iciclelayer.selectAll(\".trace\");vPt(e,t,\"icicle\"),t.each(function(r){var n=PLe.select(this),i=r[0],a=i.trace;n.style(\"opacity\",a.opacity),n.selectAll(\"path.surface\").each(function(o){PLe.select(this).call(DLe,o,a,e)})})}function DLe(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=RLe.castOption(r,o,\"marker.line.color\")||ILe.defaultLine,l=RLe.castOption(r,o,\"marker.line.width\")||0;e.call(pPt,t,r,n).style(\"stroke-width\",l).call(ILe.stroke,s).style(\"opacity\",a?r.leaf.opacity:null)}FLe.exports={style:gPt,styleOne:DLe}});var NLe=ye((E0r,BLe)=>{\"use strict\";var zLe=Oa(),XD=Dr(),OLe=So(),mPt=ru(),yPt=LLe(),qLe=sX().styleOne,lX=z2(),BA=Ky(),_Pt=HE(),xPt=UD().formatSliceLabel,uX=!1;BLe.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,_=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,k={},E=t._context.staticPlot,S=t._fullLayout,L=r[0],x=L.trace,C=x.textposition.indexOf(\"left\")!==-1,M=x.textposition.indexOf(\"right\")!==-1,g=x.textposition.indexOf(\"bottom\")!==-1,P=yPt(n,[o,s],{flipX:x.tiling.flip.indexOf(\"x\")>-1,flipY:x.tiling.flip.indexOf(\"y\")>-1,orientation:x.tiling.orientation,pad:{inner:x.tiling.pad},maxDepth:x._maxDepth}),T=P.descendants(),z=1/0,O=-1/0;T.forEach(function(N){var j=N.depth;j>=x._maxDepth?(N.x0=N.x1=(N.x0+N.x1)/2,N.y0=N.y1=(N.y0+N.y1)/2):(z=Math.min(z,j),O=Math.max(O,j))}),i=i.data(T,BA.getPtId),x._maxVisibleLayers=isFinite(O)?O-z+1:0,i.enter().append(\"g\").classed(\"slice\",!0),v(i,uX,k,[o,s],c),i.order();var V=null;if(d&&p){var G=BA.getPtId(p);i.each(function(N){V===null&&BA.getPtId(N)===G&&(V={x0:N.x0,x1:N.x1,y0:N.y0,y1:N.y1})})}var Z=function(){return V||{x0:0,x1:o,y0:0,y1:s}},H=i;return d&&(H=H.transition().each(\"end\",function(){var N=zLe.select(this);BA.setSliceCursor(N,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),H.each(function(N){N._x0=l(N.x0),N._x1=l(N.x1),N._y0=u(N.y0),N._y1=u(N.y1),N._hoverX=l(N.x1-x.tiling.pad),N._hoverY=u(g?N.y1-x.tiling.pad/2:N.y0+x.tiling.pad/2);var j=zLe.select(this),re=XD.ensureSingle(j,\"path\",\"surface\",function(Ce){Ce.style(\"pointer-events\",E?\"none\":\"all\")});d?re.transition().attrTween(\"d\",function(Ce){var me=_(Ce,uX,Z(),[o,s],{orientation:x.tiling.orientation,flipX:x.tiling.flip.indexOf(\"x\")>-1,flipY:x.tiling.flip.indexOf(\"y\")>-1});return function(ie){return c(me(ie))}}):re.attr(\"d\",c),j.call(_Pt,n,t,r,{styleOne:qLe,eventDataKeys:lX.eventDataKeys,transitionTime:lX.CLICK_TRANSITION_TIME,transitionEasing:lX.CLICK_TRANSITION_EASING}).call(BA.setSliceCursor,t,{isTransitioning:t._transitioning}),re.call(qLe,N,x,t,{hovered:!1}),N.x0===N.x1||N.y0===N.y1?N._text=\"\":N._text=xPt(N,n,x,r,S)||\"\";var oe=XD.ensureSingle(j,\"g\",\"slicetext\"),_e=XD.ensureSingle(oe,\"text\",\"\",function(Ce){Ce.attr(\"data-notex\",1)}),Ee=XD.ensureUniformFontSize(t,BA.determineTextFont(x,N,S.font));_e.text(N._text||\" \").classed(\"slicetext\",!0).attr(\"text-anchor\",M?\"end\":C?\"start\":\"middle\").call(OLe.font,Ee).call(mPt.convertToTspans,t),N.textBB=OLe.bBox(_e.node()),N.transform=f(N,{fontSize:Ee.size}),N.transform.fontSize=Ee.size,d?_e.transition().attrTween(\"transform\",function(Ce){var me=b(Ce,uX,Z(),[o,s]);return function(ie){return h(me(ie))}}):_e.attr(\"transform\",h(N))}),V}});var VLe=ye((k0r,ULe)=>{\"use strict\";var bPt=eX(),wPt=NLe();ULe.exports=function(t,r,n,i){return bPt(t,r,n,i,{type:\"icicle\",drawDescendants:wPt})}});var HLe=ye((C0r,GLe)=>{\"use strict\";GLe.exports={moduleType:\"trace\",name:\"icicle\",basePlotModule:mLe(),categories:[],animatable:!0,attributes:iX(),layoutAttributes:nX(),supplyDefaults:SLe(),supplyLayoutDefaults:ELe(),calc:oX().calc,crossTraceCalc:oX().crossTraceCalc,plot:VLe(),style:sX().style,colorbar:$d(),meta:{}}});var WLe=ye((L0r,jLe)=>{\"use strict\";jLe.exports=HLe()});var ZLe=ye(NA=>{\"use strict\";var XLe=Mc();NA.name=\"funnelarea\";NA.plot=function(e,t,r,n){XLe.plotBasePlot(NA.name,e,t,r,n)};NA.clean=function(e,t,r,n){XLe.cleanBasePlot(NA.name,e,t,r,n)}});var cX=ye((I0r,KLe)=>{\"use strict\";var iv=S2(),TPt=Gl(),APt=Cc().attributes,{hovertemplateAttrs:SPt,texttemplateAttrs:MPt,templatefallbackAttrs:YLe}=Ll(),B2=Ao().extendFlat;KLe.exports={labels:iv.labels,label0:iv.label0,dlabel:iv.dlabel,values:iv.values,marker:{colors:iv.marker.colors,line:{color:B2({},iv.marker.line.color,{dflt:null}),width:B2({},iv.marker.line.width,{dflt:1}),editType:\"calc\"},pattern:iv.marker.pattern,editType:\"calc\"},text:iv.text,hovertext:iv.hovertext,scalegroup:B2({},iv.scalegroup,{}),textinfo:B2({},iv.textinfo,{flags:[\"label\",\"text\",\"value\",\"percent\"]}),texttemplate:MPt({editType:\"plot\"},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),texttemplatefallback:YLe({editType:\"plot\"}),hoverinfo:B2({},TPt.hoverinfo,{flags:[\"label\",\"text\",\"value\",\"percent\",\"name\"]}),hovertemplate:SPt({},{keys:[\"label\",\"color\",\"value\",\"text\",\"percent\"]}),hovertemplatefallback:YLe(),textposition:B2({},iv.textposition,{values:[\"inside\",\"none\"],dflt:\"inside\"}),textfont:iv.textfont,insidetextfont:iv.insidetextfont,title:{text:iv.title.text,font:iv.title.font,position:B2({},iv.title.position,{values:[\"top left\",\"top center\",\"top right\"],dflt:\"top center\"}),editType:\"plot\"},domain:APt({name:\"funnelarea\",trace:!0,editType:\"calc\"}),aspectratio:{valType:\"number\",min:0,dflt:1,editType:\"plot\"},baseratio:{valType:\"number\",min:0,max:1,dflt:.333,editType:\"plot\"}}});var fX=ye((R0r,JLe)=>{\"use strict\";var EPt=vD().hiddenlabels;JLe.exports={hiddenlabels:EPt,funnelareacolorway:{valType:\"colorlist\",editType:\"calc\"},extendfunnelareacolors:{valType:\"boolean\",dflt:!0,editType:\"calc\"}}});var ePe=ye((D0r,QLe)=>{\"use strict\";var $Le=Dr(),kPt=cX(),CPt=Cc().defaults,LPt=r0().handleText,PPt=M2().handleLabelsAndValues,IPt=M2().handleMarkerDefaults;QLe.exports=function(t,r,n,i){function a(_,b){return $Le.coerce(t,r,kPt,_,b)}var o=a(\"labels\"),s=a(\"values\"),l=PPt(o,s),u=l.len;if(r._hasLabels=l.hasLabels,r._hasValues=l.hasValues,!r._hasLabels&&r._hasValues&&(a(\"label0\"),a(\"dlabel\")),!u){r.visible=!1;return}r._length=u,IPt(t,r,i,a),a(\"scalegroup\");var c=a(\"text\"),f=a(\"texttemplate\");a(\"texttemplatefallback\");var h;if(f||(h=a(\"textinfo\",Array.isArray(c)?\"text+percent\":\"percent\")),a(\"hovertext\"),a(\"hovertemplate\"),a(\"hovertemplatefallback\"),f||h&&h!==\"none\"){var d=a(\"textposition\");LPt(t,r,i,a,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else h===\"none\"&&a(\"textposition\",\"none\");CPt(r,i,a);var v=a(\"title.text\");v&&(a(\"title.position\"),$Le.coerceFont(a,\"title.font\",i.font)),a(\"aspectratio\"),a(\"baseratio\")}});var rPe=ye((F0r,tPe)=>{\"use strict\";var RPt=Dr(),DPt=fX();tPe.exports=function(t,r){function n(i,a){return RPt.coerce(t,r,DPt,i,a)}n(\"hiddenlabels\"),n(\"funnelareacolorway\",r.colorway),n(\"extendfunnelareacolors\")}});var hX=ye((z0r,nPe)=>{\"use strict\";var iPe=wA();function FPt(e,t){return iPe.calc(e,t)}function zPt(e){iPe.crossTraceCalc(e,{type:\"funnelarea\"})}nPe.exports={calc:FPt,crossTraceCalc:zPt}});var uPe=ye((O0r,lPe)=>{\"use strict\";var N2=Oa(),dX=So(),K_=Dr(),OPt=K_.strScale,aPe=K_.strTranslate,oPe=ru(),qPt=n2(),BPt=qPt.toMoveInsideBar,sPe=bv(),NPt=sPe.recordMinTextSize,UPt=sPe.clearMinTextSize,VPt=l_(),UA=yD(),GPt=UA.attachFxHandlers,HPt=UA.determineInsideTextFont,jPt=UA.layoutAreas,WPt=UA.prerenderTitles,XPt=UA.positionTitleOutside,ZPt=UA.formatSliceLabel;lPe.exports=function(t,r){var n=t._context.staticPlot,i=t._fullLayout;UPt(\"funnelarea\",i),WPt(r,t),jPt(r,i._size),K_.makeTraceGroups(i._funnelarealayer,r,\"trace\").each(function(a){var o=N2.select(this),s=a[0],l=s.trace;KPt(a),o.each(function(){var u=N2.select(this).selectAll(\"g.slice\").data(a);u.enter().append(\"g\").classed(\"slice\",!0),u.exit().remove(),u.each(function(f,h){if(f.hidden){N2.select(this).selectAll(\"path,g\").remove();return}f.pointNumber=f.i,f.curveNumber=l.index;var d=s.cx,v=s.cy,_=N2.select(this),b=_.selectAll(\"path.surface\").data([f]);b.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":n?\"none\":\"all\"}),_.call(GPt,t,a);var p=\"M\"+(d+f.TR[0])+\",\"+(v+f.TR[1])+vX(f.TR,f.BR)+vX(f.BR,f.BL)+vX(f.BL,f.TL)+\"Z\";b.attr(\"d\",p),ZPt(t,f,s);var k=VPt.castOption(l.textposition,f.pts),E=_.selectAll(\"g.slicetext\").data(f.text&&k!==\"none\"?[0]:[]);E.enter().append(\"g\").classed(\"slicetext\",!0),E.exit().remove(),E.each(function(){var S=K_.ensureSingle(N2.select(this),\"text\",\"\",function(z){z.attr(\"data-notex\",1)}),L=K_.ensureUniformFontSize(t,HPt(l,f,i.font));S.text(f.text).attr({class:\"slicetext\",transform:\"\",\"text-anchor\":\"middle\"}).call(dX.font,L).call(oPe.convertToTspans,t);var x=dX.bBox(S.node()),C,M,g,P=Math.min(f.BL[1],f.BR[1])+v,T=Math.max(f.TL[1],f.TR[1])+v;M=Math.max(f.TL[0],f.BL[0])+d,g=Math.min(f.TR[0],f.BR[0])+d,C=BPt(M,g,P,T,x,{isHorizontal:!0,constrained:!0,angle:0,anchor:\"middle\"}),C.fontSize=L.size,NPt(l.type,C,i),a[h].transform=C,K_.setTransormAndDisplay(S,C)})});var c=N2.select(this).selectAll(\"g.titletext\").data(l.title.text?[0]:[]);c.enter().append(\"g\").classed(\"titletext\",!0),c.exit().remove(),c.each(function(){var f=K_.ensureSingle(N2.select(this),\"text\",\"\",function(v){v.attr(\"data-notex\",1)}),h=l.title.text;l._meta&&(h=K_.templateString(h,l._meta)),f.text(h).attr({class:\"titletext\",transform:\"\",\"text-anchor\":\"middle\"}).call(dX.font,l.title.font).call(oPe.convertToTspans,t);var d=XPt(s,i._size);f.attr(\"transform\",aPe(d.x,d.y)+OPt(Math.min(1,d.scale))+aPe(d.tx,d.ty))})})})};function vX(e,t){var r=t[0]-e[0],n=t[1]-e[1];return\"l\"+r+\",\"+n}function YPt(e,t){return[.5*(e[0]+t[0]),.5*(e[1]+t[1])]}function KPt(e){if(!e.length)return;var t=e[0],r=t.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a=Math.pow(i,2),o=t.vTotal,s=o*a/(1-a),l=o,u=s/o;function c(){var O=Math.sqrt(u);return{x:O,y:-O}}function f(){var O=c();return[O.x,O.y]}var h,d=[];d.push(f());var v,_;for(v=e.length-1;v>-1;v--)if(_=e[v],!_.hidden){var b=_.v/l;u+=b,d.push(f())}var p=1/0,k=-1/0;for(v=0;v-1;v--)if(_=e[v],!_.hidden){P+=1;var T=d[P][0],z=d[P][1];_.TL=[-T,z],_.TR=[T,z],_.BL=M,_.BR=g,_.pxmid=YPt(_.TR,_.BR),M=_.TL,g=_.TR}}});var hPe=ye((q0r,fPe)=>{\"use strict\";var cPe=Oa(),JPt=q3(),$Pt=bv().resizeText;fPe.exports=function(t){var r=t._fullLayout._funnelarealayer.selectAll(\".trace\");$Pt(t,r,\"funnelarea\"),r.each(function(n){var i=n[0],a=i.trace,o=cPe.select(this);o.style({opacity:a.opacity}),o.selectAll(\"path.surface\").each(function(s){cPe.select(this).call(JPt,s,a,t)})})}});var vPe=ye((B0r,dPe)=>{\"use strict\";dPe.exports={moduleType:\"trace\",name:\"funnelarea\",basePlotModule:ZLe(),categories:[\"pie-like\",\"funnelarea\",\"showLegend\"],attributes:cX(),layoutAttributes:fX(),supplyDefaults:ePe(),supplyLayoutDefaults:rPe(),calc:hX().calc,crossTraceCalc:hX().crossTraceCalc,plot:uPe(),style:hPe(),styleOne:q3(),meta:{}}});var gPe=ye((N0r,pPe)=>{\"use strict\";pPe.exports=vPe()});var Od=ye((U0r,mPe)=>{(function(){var e={24:function(i){var a={left:0,top:0};i.exports=o;function o(l,u,c){u=u||l.currentTarget||l.srcElement,Array.isArray(c)||(c=[0,0]);var f=l.clientX||0,h=l.clientY||0,d=s(u);return c[0]=f-d.left,c[1]=h-d.top,c}function s(l){return l===window||l===document||l===document.body?a:l.getBoundingClientRect()}},109:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[2],h=s[0]-c,d=s[2]-f,v=Math.sin(u),_=Math.cos(u);return o[0]=c+d*v+h*_,o[1]=s[1],o[2]=f+d*_-h*v,o}},160:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.max(s[0],l[0]),o[1]=Math.max(s[1],l[1]),o[2]=Math.max(s[2],l[2]),o[3]=Math.max(s[3],l[3]),o}},216:function(i){\"use strict\";i.exports=a;function a(o,s){for(var l={},u=0;u1){v[0]in h||(h[v[0]]=[]),h=h[v[0]];for(var _=1;_=0;--N){var Se=Z[N];j=Se[0];var Le=V[j],Ae=Le[0],Fe=Le[1],Pe=O[Ae],ge=O[Fe];if((Pe[0]-ge[0]||Pe[1]-ge[1])<0){var Re=Ae;Ae=Fe,Fe=Re}Le[0]=Ae;var ce=Le[1]=Se[1],Ze;for(H&&(Ze=Le[2]);N>0&&Z[N-1][0]===j;){var Se=Z[--N],ut=Se[1];H?V.push([ce,ut,Ze]):V.push([ce,ut]),ce=ut}H?V.push([ce,Fe,Ze]):V.push([ce,Fe])}return re}function x(O,V,G){for(var Z=V.length,H=new s(Z),N=[],j=0;jV[2]?1:0)}function g(O,V,G){if(O.length!==0){if(V)for(var Z=0;Z0||j.length>0}function z(O,V,G){var Z;if(G){Z=V;for(var H=new Array(V.length),N=0;N Date: Fri, 12 Dec 2025 13:24:17 +0100 Subject: [PATCH 78/88] Update results notebook --- .../09-plotting-and-data-access.ipynb | 5591 ++--------------- .../data/generate_example_systems.py | 38 +- 2 files changed, 429 insertions(+), 5200 deletions(-) diff --git a/docs/notebooks/09-plotting-and-data-access.ipynb b/docs/notebooks/09-plotting-and-data-access.ipynb index 7ab92bbec..cadcc240a 100644 --- a/docs/notebooks/09-plotting-and-data-access.ipynb +++ b/docs/notebooks/09-plotting-and-data-access.ipynb @@ -16,6 +16,7 @@ }, { "cell_type": "code", + "execution_count": 1, "id": "2", "metadata": { "ExecuteTime": { @@ -23,13 +24,6 @@ "start_time": "2025-12-12T12:06:26.542476Z" } }, - "source": [ - "from pathlib import Path\n", - "\n", - "import flixopt as fx\n", - "\n", - "fx.CONFIG.notebook()" - ], "outputs": [ { "data": { @@ -42,7 +36,13 @@ "output_type": "execute_result" } ], - "execution_count": 1 + "source": [ + "from pathlib import Path\n", + "\n", + "import flixopt as fx\n", + "\n", + "fx.CONFIG.notebook()" + ] }, { "cell_type": "markdown", @@ -56,6 +56,7 @@ }, { "cell_type": "code", + "execution_count": 2, "id": "4", "metadata": { "ExecuteTime": { @@ -63,10 +64,6 @@ "start_time": "2025-12-12T12:06:29.554928Z" } }, - "source": [ - "# Run the generation script (only needed once, or to regenerate)\n", - "!python data/generate_example_systems.py" - ], "outputs": [ { "name": "stdout", @@ -91,7 +88,10 @@ ] } ], - "execution_count": 2 + "source": [ + "# Run the generation script (only needed once, or to regenerate)\n", + "!python data/generate_example_systems.py" + ] }, { "cell_type": "markdown", @@ -105,6 +105,7 @@ }, { "cell_type": "code", + "execution_count": 3, "id": "6", "metadata": { "ExecuteTime": { @@ -112,19 +113,6 @@ "start_time": "2025-12-12T12:06:35.210813Z" } }, - "source": [ - "DATA_DIR = Path('data')\n", - "\n", - "# Load the three example systems\n", - "simple = fx.FlowSystem.from_netcdf(DATA_DIR / 'simple_system.nc4')\n", - "complex_sys = fx.FlowSystem.from_netcdf(DATA_DIR / 'complex_system.nc4')\n", - "multiperiod = fx.FlowSystem.from_netcdf(DATA_DIR / 'multiperiod_system.nc4')\n", - "\n", - "print('Loaded systems:')\n", - "print(f' simple: {len(simple.components)} components, {len(simple.buses)} buses')\n", - "print(f' complex_sys: {len(complex_sys.components)} components, {len(complex_sys.buses)} buses')\n", - "print(f' multiperiod: {len(multiperiod.components)} components, dims={dict(multiperiod.solution.sizes)}')" - ], "outputs": [ { "name": "stdout", @@ -137,30 +125,39 @@ ] } ], - "execution_count": 3 + "source": [ + "DATA_DIR = Path('data')\n", + "\n", + "# Load the three example systems\n", + "simple = fx.FlowSystem.from_netcdf(DATA_DIR / 'simple_system.nc4')\n", + "complex_sys = fx.FlowSystem.from_netcdf(DATA_DIR / 'complex_system.nc4')\n", + "multiperiod = fx.FlowSystem.from_netcdf(DATA_DIR / 'multiperiod_system.nc4')\n", + "\n", + "print('Loaded systems:')\n", + "print(f' simple: {len(simple.components)} components, {len(simple.buses)} buses')\n", + "print(f' complex_sys: {len(complex_sys.components)} components, {len(complex_sys.buses)} buses')\n", + "print(f' multiperiod: {len(multiperiod.components)} components, dims={dict(multiperiod.solution.sizes)}')" + ] }, { "cell_type": "markdown", "id": "7", "metadata": {}, - "source": [ - "## 2. Data Access via `statistics`\n", - "\n", - "The `statistics` accessor provides convenient access to processed optimization results." - ] + "source": "## 2. Quick Overview: Balance Plot\n\nLet's start with the most common visualization - a balance plot showing energy flows:" }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "id": "8", "metadata": {}, + "outputs": [], "source": [ - "### 2.1 Flow Rates\n", - "\n", - "Time series of flow rates (power) for each flow:" + "# Balance plot for the Heat bus - shows all inflows and outflows\n", + "simple.statistics.plot.balance('Heat')" ] }, { - "cell_type": "code", + "cell_type": "markdown", "id": "9", "metadata": { "ExecuteTime": { @@ -168,866 +165,25 @@ "start_time": "2025-12-12T12:06:35.496736Z" } }, - "source": [ - "flow_rates = simple.statistics.flow_rates\n", - "print('Flow rates dataset:')\n", - "print(f' Variables: {list(flow_rates.data_vars)}')\n", - "print(f' Dimensions: {dict(flow_rates.sizes)}')\n", - "flow_rates" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Flow rates dataset:\n", - " Variables: ['GasGrid(Gas)', 'Boiler(Gas)', 'Boiler(Heat)', 'ThermalStorage(Charge)', 'ThermalStorage(Discharge)', 'Office(Heat)']\n", - " Dimensions: {'time': 169}\n" - ] - }, - { - "data": { - "text/plain": [ - " Size: 9kB\n", - "Dimensions: (time: 169)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", - "Data variables:\n", - " GasGrid(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", - " Boiler(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", - " Boiler(Heat) (time) float64 1kB 32.48 29.31 ... 124.5 nan\n", - " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", - " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan\n", - " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan" - ], - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 9kB\n",
-       "Dimensions:                    (time: 169)\n",
-       "Coordinates:\n",
-       "  * time                       (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n",
-       "Data variables:\n",
-       "    GasGrid(Gas)               (time) float64 1kB 35.31 31.86 ... 135.3 nan\n",
-       "    Boiler(Gas)                (time) float64 1kB 35.31 31.86 ... 135.3 nan\n",
-       "    Boiler(Heat)               (time) float64 1kB 32.48 29.31 ... 124.5 nan\n",
-       "    ThermalStorage(Charge)     (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n",
-       "    ThermalStorage(Discharge)  (time) float64 1kB 0.0 -5.275e-13 ... nan\n",
-       "    Office(Heat)               (time) float64 1kB 32.48 29.31 ... 24.48 nan
" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 4 + "source": "### Accessing Plot Data\n\nEvery plot returns a `PlotResult` with both the figure and underlying data. Use `.data.to_dataframe()` to get a pandas DataFrame:" }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "id": "10", "metadata": {}, + "outputs": [], "source": [ - "### 2.2 Flow Hours (Energy)\n", + "# Get plot result and access the underlying data\n", + "result = simple.statistics.plot.balance('Heat', show=False)\n", "\n", - "Energy values (flow rate × time step duration):" + "# Convert to DataFrame for easy viewing/export\n", + "df = result.data.to_dataframe()\n", + "df.head(10)" ] }, { - "cell_type": "code", + "cell_type": "markdown", "id": "11", "metadata": { "ExecuteTime": { @@ -1035,42 +191,18 @@ "start_time": "2025-12-12T12:06:35.585811Z" } }, - "source": [ - "flow_hours = simple.statistics.flow_hours\n", - "print('Total energy by flow:')\n", - "for var in flow_hours.data_vars:\n", - " total = flow_hours[var].sum().item()\n", - " print(f' {var}: {total:.1f} kWh')" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total energy by flow:\n", - " GasGrid(Gas): 8936.7 kWh\n", - " Boiler(Gas): 8936.7 kWh\n", - " Boiler(Heat): 8221.7 kWh\n", - " ThermalStorage(Charge): 3457.2 kWh\n", - " ThermalStorage(Discharge): 3242.8 kWh\n", - " Office(Heat): 8007.3 kWh\n" - ] - } - ], - "execution_count": 5 + "source": "### Energy Totals\n\nGet total energy by flow using `flow_hours`:" }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": null, "id": "12", "metadata": {}, - "source": [ - "### 2.3 Sizes\n", - "\n", - "Component and flow sizes (capacity values):" - ] + "outputs": [], + "source": "import pandas as pd\n\n# Total energy per flow\ntotals = {var: float(simple.statistics.flow_hours[var].sum()) for var in simple.statistics.flow_hours.data_vars}\n\npd.Series(totals, name='Energy [kWh]').to_frame().T" }, { - "cell_type": "code", + "cell_type": "markdown", "id": "13", "metadata": { "ExecuteTime": { @@ -1078,531 +210,17 @@ "start_time": "2025-12-12T12:06:35.735084Z" } }, - "source": [ - "sizes = simple.statistics.sizes\n", - "print('Sizes:')\n", - "sizes" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sizes:\n" - ] - }, - { - "data": { - "text/plain": [ - " Size: 0B\n", - "Dimensions: ()\n", - "Data variables:\n", - " *empty*" - ], - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 0B\n",
-       "Dimensions:  ()\n",
-       "Data variables:\n",
-       "    *empty*
" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 6 + "source": "## 3. Time Series Plots" }, { "cell_type": "markdown", "id": "14", "metadata": {}, - "source": [ - "### 2.4 Charge States (Storage)\n", - "\n", - "Time series of storage charge levels:" - ] + "source": "### 3.1 Balance Plot\n\nShows inflows (positive) and outflows (negative) for a bus or component:" }, { "cell_type": "code", + "execution_count": null, "id": "15", "metadata": { "ExecuteTime": { @@ -1610,3506 +228,80 @@ "start_time": "2025-12-12T12:06:35.844281Z" } }, + "outputs": [], "source": [ - "charge_states = simple.statistics.charge_states\n", - "print('Charge states:')\n", - "charge_states" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Charge states:\n" - ] - }, - { - "data": { - "text/plain": [ - " Size: 3kB\n", - "Dimensions: (time: 169)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", - "Data variables:\n", - " ThermalStorage (time) float64 1kB 250.0 248.8 247.5 ... 103.0 102.5 200.0" - ], - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 3kB\n",
-       "Dimensions:         (time: 169)\n",
-       "Coordinates:\n",
-       "  * time            (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n",
-       "Data variables:\n",
-       "    ThermalStorage  (time) float64 1kB 250.0 248.8 247.5 ... 103.0 102.5 200.0
" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 7 + "# Component balance (all flows of a component)\n", + "simple.statistics.plot.balance('ThermalStorage')" + ] }, { "cell_type": "markdown", "id": "16", "metadata": {}, - "source": [ - "### 2.5 Effects\n", - "\n", - "Effects (costs, emissions, etc.) at different aggregation levels:" - ] + "source": "### 3.2 Carrier Balance\n\nShows all flows of a specific carrier across the entire system:" }, { "cell_type": "code", + "execution_count": null, "id": "17", "metadata": { "ExecuteTime": { "end_time": "2025-12-12T12:06:36.112518Z", "start_time": "2025-12-12T12:06:36.004885Z" } - }, - "source": [ - "# Temporal effects (per timestep)\n", - "print('Temporal effects (time series):')\n", - "print(simple.statistics.temporal_effects)\n", - "\n", - "# Total effects (scalar)\n", - "print('\\nTotal effects:')\n", - "print(simple.statistics.total_effects)" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Temporal effects (time series):\n", - " Size: 4kB\n", - "Dimensions: (contributor: 1, time: 169)\n", - "Coordinates:\n", - " * contributor (contributor) object 8B 'GasGrid(Gas)'\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", - " component (contributor) Size: 76B\n", - "Dimensions: (contributor: 1)\n", - "Coordinates:\n", - " * contributor (contributor) object 8B 'GasGrid(Gas)'\n", - " component (contributor) Size: 640B\n", - "Dimensions: (contributor: 4)\n", - "Coordinates:\n", - " * contributor (contributor) object 32B 'CHP' ... 'GasGrid(Gas)'\n", - " component (contributor) \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset> Size: 640B\n",
-       "Dimensions:         (contributor: 4)\n",
-       "Coordinates:\n",
-       "  * contributor     (contributor) object 32B 'CHP' ... 'GasGrid(Gas)'\n",
-       "    component       (contributor) <U17 272B 'CHP' ... 'GasGrid'\n",
-       "    component_type  (contributor) <U15 240B 'LinearConverter' ... 'Source'\n",
-       "Data variables:\n",
-       "    costs           (contributor) float64 32B 78.0 -386.3 118.1 410.4\n",
-       "    CO2             (contributor) float64 32B nan nan 295.3 1.368e+03\n",
-       "    Penalty         (contributor) float64 32B nan nan nan nan
" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 9 - }, - { - "cell_type": "markdown", - "id": "20", - "metadata": {}, - "source": [ - "### 2.6 Cached Colors\n", - "\n", - "Colors are cached for consistent visualization:" - ] - }, - { - "cell_type": "code", - "id": "21", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:36.455687Z", - "start_time": "2025-12-12T12:06:36.450204Z" - } - }, - "source": [ - "print('Carrier colors:', simple.topology.carrier_colors)\n", - "print('Bus colors:', simple.topology.bus_colors)\n", - "print('Component colors:', simple.topology.component_colors)" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Carrier colors: {'gas': '#1F77B4', 'heat': '#D62728'}\n", - "Bus colors: {'Gas': '#1F77B4', 'Heat': '#D62728'}\n", - "Component colors: {'GasGrid': '#636EFA', 'Boiler': '#EF553B', 'ThermalStorage': '#00CC96', 'Office': '#AB63FA'}\n" - ] - } - ], - "execution_count": 10 - }, - { - "cell_type": "markdown", - "id": "22", - "metadata": {}, - "source": [ - "## 3. Time Series Plots" - ] - }, - { - "cell_type": "markdown", - "id": "23", - "metadata": {}, - "source": [ - "### 3.1 Balance Plot\n", - "\n", - "Shows inflows and outflows for a bus or component:" - ] - }, - { - "cell_type": "code", - "id": "24", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:37.067828Z", - "start_time": "2025-12-12T12:06:36.621228Z" - } - }, - "source": [ - "# Bus balance (all flows connected to a bus)\n", - "simple.statistics.plot.balance('Heat')" - ], - "outputs": [ - { - "data": { - "text/plain": [ - "PlotResult(data= Size: 7kB\n", - "Dimensions: (time: 169)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", - "Data variables:\n", - " Boiler(Heat) (time) float64 1kB -32.48 -29.31 ... -124.5 nan\n", - " ThermalStorage(Discharge) (time) float64 1kB -0.0 5.275e-13 ... nan\n", - " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", - " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Boiler(Heat)',\n", - " 'marker': {'color': '#EF553B', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'Boiler(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('5ZuWpeU9QMD3U8WNBU89wHjXQkqFnk' ... '////8zwPW5+Ef5Hl/AAAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ThermalStorage(Discharge)',\n", - " 'marker': {'color': '#00CC96', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ThermalStorage(Discharge)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAKPvjgg49iPby8nSEx72' ... 'AAAAAgvWP9SoFav2g9AAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ThermalStorage(Charge)',\n", - " 'marker': {'color': '#00CC96', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ThermalStorage(Charge)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Office(Heat)',\n", - " 'marker': {'color': '#AB63FA', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'Office(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'bargap': 0,\n", - " 'bargroupgap': 0,\n", - " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'Heat (flow_rate)'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ], - "text/html": [ - "
\n", - "
" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 11 - }, - { - "cell_type": "code", - "id": "25", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:37.693967Z", - "start_time": "2025-12-12T12:06:37.250496Z" - } - }, - "source": [ - "# Component balance (all flows of a component)\n", - "simple.statistics.plot.balance('ThermalStorage')" - ], - "outputs": [ - { - "data": { - "text/plain": [ - "PlotResult(data= Size: 4kB\n", - "Dimensions: (time: 169)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", - "Data variables:\n", - " ThermalStorage(Charge) (time) float64 1kB -0.0 3.748e-13 ... -100.0 nan\n", - " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ThermalStorage(Charge)',\n", - " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ThermalStorage(Charge)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAUfPDBB19aPby8nSEx72' ... 'AAAAAAgNj//////1jAAAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ThermalStorage(Discharge)',\n", - " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ThermalStorage(Discharge)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49ivby8nSEx72' ... 'AAAAAgPWP9SoFav2i9AAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'bargap': 0,\n", - " 'bargroupgap': 0,\n", - " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'ThermalStorage (flow_rate)'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ], - "text/html": [ - "
\n", - "
" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 12 - }, - { - "cell_type": "markdown", - "id": "26", - "metadata": {}, - "source": [ - "### 3.2 Carrier Balance\n", - "\n", - "Shows all flows of a specific carrier across the system:" - ] - }, - { - "cell_type": "code", - "id": "27", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:38.347003Z", - "start_time": "2025-12-12T12:06:37.864304Z" - } - }, - "source": [ - "complex_sys.statistics.plot.carrier_balance('heat')" - ], - "outputs": [ - { - "data": { - "text/plain": [ - "PlotResult(data= Size: 4kB\n", - "Dimensions: (time: 73)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 584B 2024-06-01 ... 2024-06-04\n", - "Data variables:\n", - " CHP(Heat) (time) float64 584B 0.0 0.0 0.0 0.0 ... 0.0 0.0 nan\n", - " HeatPump(Heat) (time) float64 584B -0.0 0.0 25.43 ... 0.0 0.0 nan\n", - " BackupBoiler(Heat) (time) float64 584B 0.0 0.0 0.0 0.0 ... 0.0 0.0 nan\n", - " HeatStorage(Discharge) (time) float64 584B 20.0 26.01 1e-05 ... 20.0 nan\n", - " HeatStorage(Charge) (time) float64 584B -0.0 -3.74e-15 ... nan\n", - " HeatDemand(Heat) (time) float64 584B -20.0 -26.01 ... -20.0 nan, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=CHP(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'CHP(Heat)',\n", - " 'marker': {'color': '#AB63FA', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'CHP(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=HeatPump(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'HeatPump(Heat)',\n", - " 'marker': {'color': '#FFA15A', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'HeatPump(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAAJ6RVIMibz' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=BackupBoiler(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'BackupBoiler(Heat)',\n", - " 'marker': {'color': '#19D3F3', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'BackupBoiler(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=HeatStorage(Discharge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'HeatStorage(Discharge)',\n", - " 'marker': {'color': '#FF6692', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'HeatStorage(Discharge)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAANEBdQRe1SgI6QGS+pYa1+O' ... 'Dnhlw6QAIAAAAAADRAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=HeatStorage(Charge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'HeatStorage(Charge)',\n", - " 'marker': {'color': '#FF6692', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'HeatStorage(Charge)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIB5DeU1lNfwvMprKC9rFT' ... 'M0SIMkvXkN5TWU1wC9AAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=HeatDemand(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'HeatDemand(Heat)',\n", - " 'marker': {'color': '#B6E880', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'HeatDemand(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAANMBcQRe1SgI6wOQ9Gisjbz' ... 'Dnhlw6wAAAAAAAADTAAAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'bargap': 0,\n", - " 'bargroupgap': 0,\n", - " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'Heat Balance (flow_rate)'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ], - "text/html": [ - "
\n", - "
" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 13 - }, - { - "cell_type": "code", - "id": "28", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:38.636085Z", - "start_time": "2025-12-12T12:06:38.399686Z" - } - }, - "source": [ - "complex_sys.statistics.plot.carrier_balance('electricity')" - ], - "outputs": [ - { - "data": { - "text/plain": [ - "PlotResult(data= Size: 4kB\n", - "Dimensions: (time: 73)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 584B 2024-06-01 ... 2024-06-04\n", - "Data variables:\n", - " ElectricityImport(El) (time) float64 584B 23.49 20.59 28.4 ... 17.12 nan\n", - " CHP(El) (time) float64 584B 0.0 0.0 -1.776e-15 ... 0.0 nan\n", - " ElectricityExport(El) (time) float64 584B -0.0 -0.0 -0.0 ... -0.0 -0.0 nan\n", - " HeatPump(El) (time) float64 584B -0.0 -0.0 -7.267 ... -0.0 nan\n", - " ElDemand(El) (time) float64 584B -23.49 -20.59 ... -17.12 nan, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=ElectricityImport(El)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElectricityImport(El)',\n", - " 'marker': {'color': '#EF553B', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElectricityImport(El)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('2HsanZJ8N0B/T9mTNpc0QHDqdn3IZT' ... 'ANSU0wQAE5VciyHTFAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=CHP(El)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'CHP(El)',\n", - " 'marker': {'color': '#AB63FA', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'CHP(El)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAO' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ElectricityExport(El)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElectricityExport(El)',\n", - " 'marker': {'color': '#00CC96', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElectricityExport(El)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'AAAAAAgAAAAAAAAACAAAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=HeatPump(El)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'HeatPump(El)',\n", - " 'marker': {'color': '#FFA15A', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'HeatPump(El)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgEddzgNMER' ... 'AAAAAAgAAAAAAAAACAAAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ElDemand(El)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElDemand(El)',\n", - " 'marker': {'color': '#FF97FF', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElDemand(El)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", - " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", - " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", - " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", - " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", - " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", - " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", - " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", - " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", - " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", - " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", - " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", - " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", - " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", - " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", - " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", - " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", - " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", - " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", - " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", - " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", - " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", - " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", - " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", - " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", - " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", - " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", - " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", - " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", - " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", - " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", - " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", - " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", - " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", - " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", - " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", - " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('2HsanZJ8N8B/T9mTNpc0wB5Tg3x1IT' ... 'ANSU0wwAE5VciyHTHAAAAAAAAA+P8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'bargap': 0,\n", - " 'bargroupgap': 0,\n", - " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'Electricity Balance (flow_rate)'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ], - "text/html": [ - "
\n", - "
" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 14 - }, - { - "cell_type": "markdown", - "id": "29", - "metadata": {}, - "source": [ - "### 3.3 Flow Rates Plot\n", - "\n", - "Plot multiple flow rates together:" - ] - }, - { - "cell_type": "code", - "id": "30", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:40.294523Z", - "start_time": "2025-12-12T12:06:38.673529Z" - } - }, - "source": [ - "# All flows\n", - "simple.statistics.plot.flows()" - ], - "outputs": [ - { - "data": { - "text/plain": [ - "PlotResult(data= Size: 9kB\n", - "Dimensions: (time: 169)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", - "Data variables:\n", - " GasGrid(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", - " Boiler(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", - " Boiler(Heat) (time) float64 1kB 32.48 29.31 ... 124.5 nan\n", - " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", - " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan\n", - " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=GasGrid(Gas)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'GasGrid(Gas)',\n", - " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'GasGrid(Gas)',\n", - " 'showlegend': True,\n", - " 'type': 'scattergl',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=Boiler(Gas)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Boiler(Gas)',\n", - " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'Boiler(Gas)',\n", - " 'showlegend': True,\n", - " 'type': 'scattergl',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Boiler(Heat)',\n", - " 'line': {'color': '#00CC96', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'Boiler(Heat)',\n", - " 'showlegend': True,\n", - " 'type': 'scattergl',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('5ZuWpeU9QED3U8WNBU89QHjXQkqFnk' ... '////8zQPW5+Ef5Hl9AAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ThermalStorage(Charge)',\n", - " 'line': {'color': '#AB63FA', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'ThermalStorage(Charge)',\n", - " 'showlegend': True,\n", - " 'type': 'scattergl',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'ThermalStorage(Discharge)',\n", - " 'line': {'color': '#FFA15A', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'ThermalStorage(Discharge)',\n", - " 'showlegend': True,\n", - " 'type': 'scattergl',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49ivby8nSEx72' ... 'AAAAAgPWP9SoFav2i9AAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Office(Heat)',\n", - " 'line': {'color': '#19D3F3', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'Office(Heat)',\n", - " 'showlegend': True,\n", - " 'type': 'scattergl',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'Flows (flow_rate)'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ], - "text/html": [ - "
\n", - "
" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 15 - }, - { - "cell_type": "code", - "id": "31", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:41.074134Z", - "start_time": "2025-12-12T12:06:40.896398Z" - } - }, - "source": "# Flows filtered by component\nsimple.statistics.plot.flows(component='Boiler')", - "outputs": [ - { - "data": { - "text/plain": [ - "PlotResult(data= Size: 4kB\n", - "Dimensions: (time: 169)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", - "Data variables:\n", - " Boiler(Gas) (time) float64 1kB 35.31 31.86 36.13 110.2 ... 21.74 135.3 nan\n", - " Boiler(Heat) (time) float64 1kB 32.48 29.31 33.24 101.4 ... 20.0 124.5 nan, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=Boiler(Gas)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Boiler(Gas)',\n", - " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'Boiler(Gas)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'type': 'scatter',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", - " 'legendgroup': 'Boiler(Heat)',\n", - " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'Boiler(Heat)',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'type': 'scatter',\n", - " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", - " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", - " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", - " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", - " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", - " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", - " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", - " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", - " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", - " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", - " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", - " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", - " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", - " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", - " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", - " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", - " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", - " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", - " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", - " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", - " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", - " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", - " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", - " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", - " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", - " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", - " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", - " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", - " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", - " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", - " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", - " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", - " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", - " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", - " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", - " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", - " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", - " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", - " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", - " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", - " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", - " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", - " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", - " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", - " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", - " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", - " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", - " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", - " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", - " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", - " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", - " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", - " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", - " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", - " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", - " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", - " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", - " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", - " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", - " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", - " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", - " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", - " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", - " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", - " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", - " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", - " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", - " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", - " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", - " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", - " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", - " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", - " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", - " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", - " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", - " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", - " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", - " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", - " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", - " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", - " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", - " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", - " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", - " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", - " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': ('5ZuWpeU9QED3U8WNBU89QHjXQkqFnk' ... '////8zQPW5+Ef5Hl9AAAAAAAAA+H8='),\n", - " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'Flows (flow_rate)'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ], - "text/html": [ - "
\n", - "
" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" + }, + "outputs": [], + "source": [ + "complex_sys.statistics.plot.carrier_balance('heat')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "complex_sys.statistics.plot.carrier_balance('electricity')" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:06:36.266666Z", + "start_time": "2025-12-12T12:06:36.198686Z" } - ], - "execution_count": 16 + }, + "source": "### 3.3 Flow Rates\n\nPlot multiple flow rates together:" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [ + "# All flows\n", + "simple.statistics.plot.flows()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:06:36.455687Z", + "start_time": "2025-12-12T12:06:36.450204Z" + } + }, + "outputs": [], + "source": [ + "# Flows filtered by component\n", + "simple.statistics.plot.flows(component='Boiler')" + ] }, { "cell_type": "markdown", @@ -5123,6 +315,7 @@ }, { "cell_type": "code", + "execution_count": 17, "id": "33", "metadata": { "ExecuteTime": { @@ -5130,12 +323,13 @@ "start_time": "2025-12-12T12:06:41.441569Z" } }, - "source": [ - "simple.statistics.plot.storage('ThermalStorage')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 5kB\n", "Dimensions: (time: 169)\n", @@ -5447,10 +641,6 @@ " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}},\n", " 'yaxis2': {'overlaying': 'y', 'showgrid': False, 'side': 'right', 'title': {'text': 'Charge State'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 17, @@ -5458,7 +648,9 @@ "output_type": "execute_result" } ], - "execution_count": 17 + "source": [ + "simple.statistics.plot.storage('ThermalStorage')" + ] }, { "cell_type": "markdown", @@ -5472,6 +664,7 @@ }, { "cell_type": "code", + "execution_count": 18, "id": "35", "metadata": { "ExecuteTime": { @@ -5479,12 +672,13 @@ "start_time": "2025-12-12T12:06:41.807633Z" } }, - "source": [ - "simple.statistics.plot.charge_states('ThermalStorage')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 3kB\n", "Dimensions: (time: 169)\n", @@ -5596,10 +790,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'Charge State'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 18, @@ -5607,7 +797,9 @@ "output_type": "execute_result" } ], - "execution_count": 18 + "source": [ + "simple.statistics.plot.charge_states('ThermalStorage')" + ] }, { "cell_type": "markdown", @@ -5629,6 +821,7 @@ }, { "cell_type": "code", + "execution_count": 19, "id": "38", "metadata": { "ExecuteTime": { @@ -5636,12 +829,13 @@ "start_time": "2025-12-12T12:06:42.126462Z" } }, - "source": [ - "simple.statistics.plot.sizes()" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 0B\n", "Dimensions: ()\n", @@ -5649,10 +843,6 @@ " *empty*, figure=Figure({\n", " 'data': [], 'layout': {'template': '...'}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 19, @@ -5660,7 +850,9 @@ "output_type": "execute_result" } ], - "execution_count": 19 + "source": [ + "simple.statistics.plot.sizes()" + ] }, { "cell_type": "markdown", @@ -5674,6 +866,7 @@ }, { "cell_type": "code", + "execution_count": 20, "id": "40", "metadata": { "ExecuteTime": { @@ -5681,10 +874,13 @@ "start_time": "2025-12-12T12:06:42.283099Z" } }, - "source": "simple.statistics.plot.effects(effect='costs')", "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 24B\n", "Dimensions: (effect: 1, component: 1)\n", @@ -5718,10 +914,6 @@ " 'title': {'text': 'component'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 20, @@ -5729,10 +921,13 @@ "output_type": "execute_result" } ], - "execution_count": 20 + "source": [ + "simple.statistics.plot.effects(effect='costs')" + ] }, { "cell_type": "code", + "execution_count": 21, "id": "41", "metadata": { "ExecuteTime": { @@ -5740,10 +935,13 @@ "start_time": "2025-12-12T12:06:42.560263Z" } }, - "source": "# Multi-effect system: compare costs and CO2\ncomplex_sys.statistics.plot.effects(effect='costs')", "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 72B\n", "Dimensions: (effect: 1, component: 4)\n", @@ -5814,10 +1012,6 @@ " 'title': {'text': 'component'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 21, @@ -5825,10 +1019,14 @@ "output_type": "execute_result" } ], - "execution_count": 21 + "source": [ + "# Multi-effect system: compare costs and CO2\n", + "complex_sys.statistics.plot.effects(effect='costs')" + ] }, { "cell_type": "code", + "execution_count": 22, "id": "42", "metadata": { "ExecuteTime": { @@ -5836,10 +1034,13 @@ "start_time": "2025-12-12T12:06:43.136118Z" } }, - "source": "complex_sys.statistics.plot.effects(effect='CO2')", "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 72B\n", "Dimensions: (effect: 1, component: 4)\n", @@ -5910,10 +1111,6 @@ " 'title': {'text': 'component'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 22, @@ -5921,7 +1118,9 @@ "output_type": "execute_result" } ], - "execution_count": 22 + "source": [ + "complex_sys.statistics.plot.effects(effect='CO2')" + ] }, { "cell_type": "markdown", @@ -5935,6 +1134,7 @@ }, { "cell_type": "code", + "execution_count": 23, "id": "44", "metadata": { "ExecuteTime": { @@ -5942,12 +1142,13 @@ "start_time": "2025-12-12T12:06:44.248704Z" } }, - "source": [ - "simple.statistics.plot.duration_curve('Boiler(Heat)')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 3kB\n", "Dimensions: (duration: 169)\n", @@ -5976,10 +1177,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 23, @@ -5987,10 +1184,13 @@ "output_type": "execute_result" } ], - "execution_count": 23 + "source": [ + "simple.statistics.plot.duration_curve('Boiler(Heat)')" + ] }, { "cell_type": "code", + "execution_count": 24, "id": "45", "metadata": { "ExecuteTime": { @@ -5998,10 +1198,13 @@ "start_time": "2025-12-12T12:06:46.454534Z" } }, - "source": "# Multiple variables\ncomplex_sys.statistics.plot.duration_curve(['CHP(Heat)', 'HeatPump(Heat)', 'BackupBoiler(Heat)'])", "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 2kB\n", "Dimensions: (duration: 73)\n", @@ -6062,10 +1265,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 24, @@ -6073,7 +1272,10 @@ "output_type": "execute_result" } ], - "execution_count": 24 + "source": [ + "# Multiple variables\n", + "complex_sys.statistics.plot.duration_curve(['CHP(Heat)', 'HeatPump(Heat)', 'BackupBoiler(Heat)'])" + ] }, { "cell_type": "markdown", @@ -6087,6 +1289,7 @@ }, { "cell_type": "code", + "execution_count": 25, "id": "47", "metadata": { "ExecuteTime": { @@ -6094,13 +1297,13 @@ "start_time": "2025-12-12T12:06:47.328779Z" } }, - "source": [ - "# Auto-reshape based on data frequency\n", - "simple.statistics.plot.heatmap('Boiler(Heat)')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 2kB\n", "Dimensions: (timeframe: 8, timestep: 24)\n", @@ -6144,10 +1347,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 25, @@ -6155,10 +1354,14 @@ "output_type": "execute_result" } ], - "execution_count": 25 + "source": [ + "# Auto-reshape based on data frequency\n", + "simple.statistics.plot.heatmap('Boiler(Heat)')" + ] }, { "cell_type": "code", + "execution_count": 26, "id": "48", "metadata": { "ExecuteTime": { @@ -6166,13 +1369,13 @@ "start_time": "2025-12-12T12:06:47.811215Z" } }, - "source": [ - "# Storage charge state heatmap\n", - "simple.statistics.plot.heatmap('ThermalStorage')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 2kB\n", "Dimensions: (timeframe: 8, timestep: 24)\n", @@ -6216,10 +1419,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 26, @@ -6227,10 +1426,14 @@ "output_type": "execute_result" } ], - "execution_count": 26 + "source": [ + "# Storage charge state heatmap\n", + "simple.statistics.plot.heatmap('ThermalStorage')" + ] }, { "cell_type": "code", + "execution_count": 27, "id": "49", "metadata": { "ExecuteTime": { @@ -6238,13 +1441,13 @@ "start_time": "2025-12-12T12:06:48.901232Z" } }, - "source": [ - "# Custom colorscale\n", - "simple.statistics.plot.heatmap('Office(Heat)', color_continuous_scale='Blues', title='Heat Demand Pattern')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 2kB\n", "Dimensions: (timeframe: 8, timestep: 24)\n", @@ -6283,10 +1486,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 27, @@ -6294,7 +1493,10 @@ "output_type": "execute_result" } ], - "execution_count": 27 + "source": [ + "# Custom colorscale\n", + "simple.statistics.plot.heatmap('Office(Heat)', color_continuous_scale='Blues', title='Heat Demand Pattern')" + ] }, { "cell_type": "markdown", @@ -6318,6 +1520,7 @@ }, { "cell_type": "code", + "execution_count": 28, "id": "52", "metadata": { "ExecuteTime": { @@ -6325,12 +1528,13 @@ "start_time": "2025-12-12T12:06:49.299561Z" } }, - "source": [ - "simple.statistics.plot.sankey.flows()" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 1kB\n", "Dimensions: (link: 6)\n", @@ -6363,10 +1567,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Energy Flow'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 28, @@ -6374,10 +1574,13 @@ "output_type": "execute_result" } ], - "execution_count": 28 + "source": [ + "simple.statistics.plot.sankey.flows()" + ] }, { "cell_type": "code", + "execution_count": 29, "id": "53", "metadata": { "ExecuteTime": { @@ -6385,13 +1588,13 @@ "start_time": "2025-12-12T12:06:49.710667Z" } }, - "source": [ - "# Complex system with multiple carriers\n", - "complex_sys.statistics.plot.sankey.flows()" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 3kB\n", "Dimensions: (link: 12)\n", @@ -6434,10 +1637,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Energy Flow'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 29, @@ -6445,7 +1644,10 @@ "output_type": "execute_result" } ], - "execution_count": 29 + "source": [ + "# Complex system with multiple carriers\n", + "complex_sys.statistics.plot.sankey.flows()" + ] }, { "cell_type": "markdown", @@ -6459,19 +1661,21 @@ }, { "cell_type": "code", + "execution_count": 49, "id": "55", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:50.746478Z", - "start_time": "2025-12-12T12:06:50.531391Z" + "end_time": "2025-12-12T12:17:33.502630Z", + "start_time": "2025-12-12T12:17:33.383793Z" } }, - "source": [ - "simple.statistics.plot.sankey.sizes()" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 0B\n", "Dimensions: (link: 0)\n", @@ -6488,18 +1692,16 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Investment Sizes (Capacities)'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, - "execution_count": 30, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], - "execution_count": 30 + "source": [ + "multiperiod.statistics.plot.sankey.sizes()" + ] }, { "cell_type": "markdown", @@ -6513,6 +1715,7 @@ }, { "cell_type": "code", + "execution_count": 31, "id": "57", "metadata": { "ExecuteTime": { @@ -6520,12 +1723,13 @@ "start_time": "2025-12-12T12:06:51.237341Z" } }, - "source": [ - "simple.statistics.plot.sankey.peak_flow()" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 1kB\n", "Dimensions: (link: 6)\n", @@ -6558,10 +1762,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Peak Flow Rates'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 31, @@ -6569,7 +1769,9 @@ "output_type": "execute_result" } ], - "execution_count": 31 + "source": [ + "simple.statistics.plot.sankey.peak_flow()" + ] }, { "cell_type": "markdown", @@ -6583,6 +1785,7 @@ }, { "cell_type": "code", + "execution_count": 32, "id": "59", "metadata": { "ExecuteTime": { @@ -6590,10 +1793,13 @@ "start_time": "2025-12-12T12:06:51.762360Z" } }, - "source": "simple.statistics.plot.sankey.effects(select={'effect': 'costs'})", "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 184B\n", "Dimensions: (link: 1)\n", @@ -6616,10 +1822,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Effect Contributions by Component'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 32, @@ -6627,10 +1829,13 @@ "output_type": "execute_result" } ], - "execution_count": 32 + "source": [ + "simple.statistics.plot.sankey.effects(select={'effect': 'costs'})" + ] }, { "cell_type": "code", + "execution_count": 33, "id": "60", "metadata": { "ExecuteTime": { @@ -6638,10 +1843,13 @@ "start_time": "2025-12-12T12:06:51.930820Z" } }, - "source": "# CO2 allocation in complex system\ncomplex_sys.statistics.plot.sankey.effects(select={'effect': 'CO2'})", "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 488B\n", "Dimensions: (link: 2)\n", @@ -6665,10 +1873,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Effect Contributions by Component'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 33, @@ -6676,7 +1880,10 @@ "output_type": "execute_result" } ], - "execution_count": 33 + "source": [ + "# CO2 allocation in complex system\n", + "complex_sys.statistics.plot.sankey.effects(select={'effect': 'CO2'})" + ] }, { "cell_type": "markdown", @@ -6690,6 +1897,7 @@ }, { "cell_type": "code", + "execution_count": 34, "id": "62", "metadata": { "ExecuteTime": { @@ -6697,13 +1905,13 @@ "start_time": "2025-12-12T12:06:52.419881Z" } }, - "source": [ - "# Only heat flows\n", - "complex_sys.statistics.plot.sankey.flows(select={'bus': 'Heat'})" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 1kB\n", "Dimensions: (link: 5)\n", @@ -6733,10 +1941,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Energy Flow'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 34, @@ -6744,7 +1948,10 @@ "output_type": "execute_result" } ], - "execution_count": 34 + "source": [ + "# Only heat flows\n", + "complex_sys.statistics.plot.sankey.flows(select={'bus': 'Heat'})" + ] }, { "cell_type": "markdown", @@ -6768,6 +1975,7 @@ }, { "cell_type": "code", + "execution_count": 35, "id": "65", "metadata": { "ExecuteTime": { @@ -6775,9 +1983,6 @@ "start_time": "2025-12-12T12:06:53.652513Z" } }, - "source": [ - "simple.topology.plot()" - ], "outputs": [ { "data": { @@ -10671,11 +5876,11 @@ " " ] }, - "metadata": {}, - "output_type": "display_data", "jetTransient": { "display_id": null - } + }, + "metadata": {}, + "output_type": "display_data" }, { "data": { @@ -10707,17 +5912,20 @@ " }) }; " ] }, - "metadata": {}, - "output_type": "display_data", "jetTransient": { "display_id": null - } + }, + "metadata": {}, + "output_type": "display_data" } ], - "execution_count": 35 + "source": [ + "simple.topology.plot()" + ] }, { "cell_type": "code", + "execution_count": 36, "id": "66", "metadata": { "ExecuteTime": { @@ -10725,9 +5933,6 @@ "start_time": "2025-12-12T12:06:54.669190Z" } }, - "source": [ - "complex_sys.topology.plot(title='Complex System Topology')" - ], "outputs": [ { "data": { @@ -10759,14 +5964,16 @@ " }) }; " ] }, - "metadata": {}, - "output_type": "display_data", "jetTransient": { "display_id": null - } + }, + "metadata": {}, + "output_type": "display_data" } ], - "execution_count": 36 + "source": [ + "complex_sys.topology.plot(title='Complex System Topology')" + ] }, { "cell_type": "markdown", @@ -10780,6 +5987,7 @@ }, { "cell_type": "code", + "execution_count": 37, "id": "68", "metadata": { "ExecuteTime": { @@ -10787,17 +5995,6 @@ "start_time": "2025-12-12T12:06:54.902442Z" } }, - "source": [ - "nodes, edges = simple.topology.infos()\n", - "\n", - "print('Nodes:')\n", - "for label, info in nodes.items():\n", - " print(f' {label}: {info[\"class\"]}')\n", - "\n", - "print('\\nEdges (flows):')\n", - "for label, info in edges.items():\n", - " print(f' {info[\"start\"]} -> {info[\"end\"]}: {label}')" - ], "outputs": [ { "name": "stdout", @@ -10821,7 +6018,17 @@ ] } ], - "execution_count": 37 + "source": [ + "nodes, edges = simple.topology.infos()\n", + "\n", + "print('Nodes:')\n", + "for label, info in nodes.items():\n", + " print(f' {label}: {info[\"class\"]}')\n", + "\n", + "print('\\nEdges (flows):')\n", + "for label, info in edges.items():\n", + " print(f' {info[\"start\"]} -> {info[\"end\"]}: {label}')" + ] }, { "cell_type": "markdown", @@ -10835,6 +6042,7 @@ }, { "cell_type": "code", + "execution_count": 38, "id": "70", "metadata": { "ExecuteTime": { @@ -10842,12 +6050,6 @@ "start_time": "2025-12-12T12:06:55.064186Z" } }, - "source": [ - "print('Multiperiod system dimensions:')\n", - "print(f' Periods: {list(multiperiod.periods)}')\n", - "print(f' Scenarios: {list(multiperiod.scenarios)}')\n", - "print(f' Solution dims: {dict(multiperiod.solution.sizes)}')" - ], "outputs": [ { "name": "stdout", @@ -10860,10 +6062,16 @@ ] } ], - "execution_count": 38 + "source": [ + "print('Multiperiod system dimensions:')\n", + "print(f' Periods: {list(multiperiod.periods)}')\n", + "print(f' Scenarios: {list(multiperiod.scenarios)}')\n", + "print(f' Solution dims: {dict(multiperiod.solution.sizes)}')" + ] }, { "cell_type": "code", + "execution_count": 39, "id": "71", "metadata": { "ExecuteTime": { @@ -10871,13 +6079,13 @@ "start_time": "2025-12-12T12:06:55.650661Z" } }, - "source": [ - "# Balance plot with faceting by scenario\n", - "multiperiod.statistics.plot.balance('Heat')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 10kB\n", "Dimensions: (time: 49, period: 3, scenario: 2)\n", @@ -11850,10 +7058,6 @@ " 'yaxis5': {'anchor': 'x5', 'domain': [0.515, 1.0], 'matches': 'y', 'showticklabels': False},\n", " 'yaxis6': {'anchor': 'x6', 'domain': [0.515, 1.0], 'matches': 'y', 'showticklabels': False}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 39, @@ -11861,10 +7065,14 @@ "output_type": "execute_result" } ], - "execution_count": 39 + "source": [ + "# Balance plot with faceting by scenario\n", + "multiperiod.statistics.plot.balance('Heat')" + ] }, { "cell_type": "code", + "execution_count": 40, "id": "72", "metadata": { "ExecuteTime": { @@ -11872,13 +7080,13 @@ "start_time": "2025-12-12T12:06:57.451036Z" } }, - "source": [ - "# Filter to specific scenario/period\n", - "multiperiod.statistics.plot.balance('Heat', select={'scenario': 'high_demand', 'period': 2024})" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 2kB\n", "Dimensions: (time: 49)\n", @@ -12046,10 +7254,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 40, @@ -12057,10 +7261,14 @@ "output_type": "execute_result" } ], - "execution_count": 40 + "source": [ + "# Filter to specific scenario/period\n", + "multiperiod.statistics.plot.balance('Heat', select={'scenario': 'high_demand', 'period': 2024})" + ] }, { "cell_type": "code", + "execution_count": 41, "id": "73", "metadata": { "ExecuteTime": { @@ -12068,13 +7276,13 @@ "start_time": "2025-12-12T12:06:57.778237Z" } }, - "source": [ - "# Sankey aggregates across all dimensions by default\n", - "multiperiod.statistics.plot.sankey.flows()" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 1kB\n", "Dimensions: (link: 5)\n", @@ -12106,10 +7314,6 @@ " 'type': 'sankey'}],\n", " 'layout': {'template': '...', 'title': {'text': 'Energy Flow'}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 41, @@ -12117,7 +7321,10 @@ "output_type": "execute_result" } ], - "execution_count": 41 + "source": [ + "# Sankey aggregates across all dimensions by default\n", + "multiperiod.statistics.plot.sankey.flows()" + ] }, { "cell_type": "markdown", @@ -12131,6 +7338,7 @@ }, { "cell_type": "code", + "execution_count": 42, "id": "75", "metadata": { "ExecuteTime": { @@ -12138,13 +7346,13 @@ "start_time": "2025-12-12T12:06:58.171959Z" } }, - "source": [ - "# Using a colorscale name\n", - "simple.statistics.plot.balance('Heat', colors='Set2')" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 7kB\n", "Dimensions: (time: 169)\n", @@ -12552,10 +7760,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 42, @@ -12563,10 +7767,14 @@ "output_type": "execute_result" } ], - "execution_count": 42 + "source": [ + "# Using a colorscale name\n", + "simple.statistics.plot.balance('Heat', colors='Set2')" + ] }, { "cell_type": "code", + "execution_count": 43, "id": "76", "metadata": { "ExecuteTime": { @@ -12574,13 +7782,13 @@ "start_time": "2025-12-12T12:06:58.735466Z" } }, - "source": [ - "# Using a list of colors\n", - "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 7kB\n", "Dimensions: (time: 169)\n", @@ -12988,10 +8196,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 43, @@ -12999,10 +8203,14 @@ "output_type": "execute_result" } ], - "execution_count": 43 + "source": [ + "# Using a list of colors\n", + "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" + ] }, { "cell_type": "code", + "execution_count": 44, "id": "77", "metadata": { "ExecuteTime": { @@ -13010,21 +8218,13 @@ "start_time": "2025-12-12T12:06:59.234563Z" } }, - "source": [ - "# Using a dictionary for specific labels\n", - "simple.statistics.plot.balance(\n", - " 'Heat',\n", - " colors={\n", - " 'Boiler(Heat)': 'orangered',\n", - " 'ThermalStorage(Charge)': 'steelblue',\n", - " 'ThermalStorage(Discharge)': 'lightblue',\n", - " 'Office(Heat)': 'forestgreen',\n", - " },\n", - ")" - ], "outputs": [ { "data": { + "text/html": [ + "
\n", + "
" + ], "text/plain": [ "PlotResult(data= Size: 7kB\n", "Dimensions: (time: 169)\n", @@ -13432,10 +8632,6 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" - ], - "text/html": [ - "
\n", - "
" ] }, "execution_count": 44, @@ -13443,7 +8639,18 @@ "output_type": "execute_result" } ], - "execution_count": 44 + "source": [ + "# Using a dictionary for specific labels\n", + "simple.statistics.plot.balance(\n", + " 'Heat',\n", + " colors={\n", + " 'Boiler(Heat)': 'orangered',\n", + " 'ThermalStorage(Charge)': 'steelblue',\n", + " 'ThermalStorage(Discharge)': 'lightblue',\n", + " 'Office(Heat)': 'forestgreen',\n", + " },\n", + ")" + ] }, { "cell_type": "markdown", @@ -13457,6 +8664,7 @@ }, { "cell_type": "code", + "execution_count": 45, "id": "79", "metadata": { "ExecuteTime": { @@ -13464,14 +8672,6 @@ "start_time": "2025-12-12T12:06:59.813869Z" } }, - "source": [ - "# Get plot result\n", - "result = simple.statistics.plot.balance('Heat')\n", - "\n", - "print('PlotResult contains:')\n", - "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", - "print(f' figure: {type(result.figure).__name__}')" - ], "outputs": [ { "name": "stdout", @@ -13483,10 +8683,18 @@ ] } ], - "execution_count": 45 + "source": [ + "# Get plot result\n", + "result = simple.statistics.plot.balance('Heat')\n", + "\n", + "print('PlotResult contains:')\n", + "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", + "print(f' figure: {type(result.figure).__name__}')" + ] }, { "cell_type": "code", + "execution_count": 46, "id": "80", "metadata": { "ExecuteTime": { @@ -13494,31 +8702,9 @@ "start_time": "2025-12-12T12:07:00.433079Z" } }, - "source": [ - "# Export data to pandas DataFrame\n", - "df = result.data.to_dataframe()\n", - "df.head()" - ], "outputs": [ { "data": { - "text/plain": [ - " Boiler(Heat) ThermalStorage(Discharge) \\\n", - "time \n", - "2024-01-15 00:00:00 -32.483571 -0.000000e+00 \n", - "2024-01-15 01:00:00 -29.308678 5.275242e-13 \n", - "2024-01-15 02:00:00 -33.238443 -7.086767e-13 \n", - "2024-01-15 03:00:00 -101.411593 -3.516828e-13 \n", - "2024-01-15 04:00:00 -128.829233 -5.613288e-13 \n", - "\n", - " ThermalStorage(Charge) Office(Heat) \n", - "time \n", - "2024-01-15 00:00:00 0.000000e+00 32.483571 \n", - "2024-01-15 01:00:00 -3.747575e-13 29.308678 \n", - "2024-01-15 02:00:00 8.792069e-13 33.238443 \n", - "2024-01-15 03:00:00 6.379644e+01 37.615149 \n", - "2024-01-15 04:00:00 1.000000e+02 28.829233 " - ], "text/html": [ "
\n", "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Boiler(Heat)ThermalStorage(Discharge)ThermalStorage(Charge)Office(Heat)
time
2024-01-15 00:00:00-32.483571-0.000000e+000.000000e+0032.483571
2024-01-15 01:00:00-29.3086785.275242e-13-3.747575e-1329.308678
2024-01-15 02:00:00-33.238443-7.086767e-138.792069e-1333.238443
2024-01-15 03:00:00-101.411593-3.516828e-136.379644e+0137.615149
2024-01-15 04:00:00-128.829233-5.613288e-131.000000e+0228.829233
2024-01-15 05:00:00-128.829315-7.033655e-131.000000e+0228.829315
2024-01-15 06:00:00-0.000000-3.789606e+011.055048e-1237.896064
2024-01-15 07:00:00-0.000000-8.383717e+017.033655e-1383.837174
2024-01-15 08:00:00-0.000000-7.765263e+01-7.673862e-1377.652628
2024-01-15 09:00:00-0.000000-8.271280e+017.033655e-1382.712800
\n", + "
" ] }, - "execution_count": 19, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "simple.statistics.plot.sizes()" - ] + "execution_count": 5 }, { "cell_type": "markdown", - "id": "39", - "metadata": {}, - "source": [ - "### 4.2 Effects Plot\n", - "\n", - "Bar chart of effect totals by component:" - ] + "id": "11", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-12T12:06:35.617665Z", + "start_time": "2025-12-12T12:06:35.585811Z" + } + }, + "source": "### Energy Totals\n\nGet total energy by flow using `flow_hours`:" }, { "cell_type": "code", - "execution_count": 20, - "id": "40", + "id": "12", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:42.497806Z", - "start_time": "2025-12-12T12:06:42.283099Z" + "end_time": "2025-12-13T14:13:15.948455Z", + "start_time": "2025-12-13T14:13:15.924150Z" } }, + "source": "import pandas as pd\n\n# Total energy per flow\ntotals = {var: float(simple.statistics.flow_hours[var].sum()) for var in simple.statistics.flow_hours.data_vars}\n\npd.Series(totals, name='Energy [kWh]').to_frame().T", "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ - "PlotResult(data= Size: 24B\n", - "Dimensions: (effect: 1, component: 1)\n", - "Coordinates:\n", - " * effect (effect) object 8B 'costs'\n", - " * component (component) object 8B 'GasGrid'\n", - "Data variables:\n", - " total (effect, component) float64 8B 558.8, figure=Figure({\n", - " 'data': [{'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'GasGrid',\n", - " 'marker': {'color': '#a4fc3b', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'GasGrid',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['GasGrid'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': 'sDkY5qR2gUA=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'bargap': 0,\n", - " 'bargroupgap': 0,\n", - " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'component'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'costs (total) by component'},\n", - " 'xaxis': {'anchor': 'y',\n", - " 'categoryarray': [GasGrid],\n", - " 'categoryorder': 'array',\n", - " 'domain': [0.0, 1.0],\n", - " 'title': {'text': 'component'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" + " GasGrid(Gas) Boiler(Gas) Boiler(Heat) ThermalStorage(Charge) \\\n", + "Energy [kWh] 8936.665406 8936.665406 8221.732173 3457.182735 \n", + "\n", + " ThermalStorage(Discharge) Office(Heat) \n", + "Energy [kWh] 3242.788948 8007.338386 " + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
GasGrid(Gas)Boiler(Gas)Boiler(Heat)ThermalStorage(Charge)ThermalStorage(Discharge)Office(Heat)
Energy [kWh]8936.6654068936.6654068221.7321733457.1827353242.7889488007.338386
\n", + "
" ] }, - "execution_count": 20, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "simple.statistics.plot.effects(effect='costs')" - ] + "execution_count": 6 }, { - "cell_type": "code", - "execution_count": 21, - "id": "41", + "cell_type": "markdown", + "id": "13", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:43.064579Z", - "start_time": "2025-12-12T12:06:42.560263Z" + "end_time": "2025-12-12T12:06:35.754890Z", + "start_time": "2025-12-12T12:06:35.735084Z" } }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 72B\n", - "Dimensions: (effect: 1, component: 4)\n", - "Coordinates:\n", - " * effect (effect) object 8B 'costs'\n", - " * component (component) object 32B 'CHP' 'ElectricityExport' ... 'GasGrid'\n", - "Data variables:\n", - " total (effect, component) float64 32B 78.0 -386.3 118.1 410.4, figure=Figure({\n", - " 'data': [{'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'CHP',\n", - " 'marker': {'color': '#30123b', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'CHP',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['CHP'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': 'AAAAAACAU0A=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElectricityExport',\n", - " 'marker': {'color': '#21e2b5', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElectricityExport',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['ElectricityExport'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': '3ObHwIskeMA=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElectricityImport',\n", - " 'marker': {'color': '#f7b836', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElectricityImport',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['ElectricityImport'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': 'A0vkOKSHXUA=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'GasGrid',\n", - " 'marker': {'color': '#7a0402', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'GasGrid',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['GasGrid'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': 'AUZx5ZymeUA=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'bargap': 0,\n", - " 'bargroupgap': 0,\n", - " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'component'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'costs (total) by component'},\n", - " 'xaxis': {'anchor': 'y',\n", - " 'categoryarray': [CHP, ElectricityExport,\n", - " ElectricityImport, GasGrid],\n", - " 'categoryorder': 'array',\n", - " 'domain': [0.0, 1.0],\n", - " 'title': {'text': 'component'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Multi-effect system: compare costs and CO2\n", - "complex_sys.statistics.plot.effects(effect='costs')" - ] + "source": "## 3. Time Series Plots" + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": "### 3.1 Balance Plot\n\nShows inflows (positive) and outflows (negative) for a bus or component:" }, { "cell_type": "code", - "execution_count": 22, - "id": "42", + "id": "15", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:43.867944Z", - "start_time": "2025-12-12T12:06:43.136118Z" + "end_time": "2025-12-13T14:13:16.412850Z", + "start_time": "2025-12-13T14:13:16.305115Z" } }, + "source": [ + "# Component balance (all flows of a component)\n", + "simple.statistics.plot.balance('ThermalStorage')" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ - "PlotResult(data= Size: 72B\n", - "Dimensions: (effect: 1, component: 4)\n", + "PlotResult(data= Size: 4kB\n", + "Dimensions: (time: 169)\n", "Coordinates:\n", - " * effect (effect) object 8B 'CO2'\n", - " * component (component) object 32B 'CHP' 'ElectricityExport' ... 'GasGrid'\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", "Data variables:\n", - " total (effect, component) float64 32B 0.0 0.0 295.3 1.368e+03, figure=Figure({\n", - " 'data': [{'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'CHP',\n", - " 'marker': {'color': '#30123b', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'CHP',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['CHP'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElectricityExport',\n", - " 'marker': {'color': '#21e2b5', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElectricityExport',\n", + " ThermalStorage(Charge) (time) float64 1kB -0.0 3.748e-13 ... -100.0 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Charge)',\n", " 'orientation': 'v',\n", " 'showlegend': True,\n", " 'textposition': 'auto',\n", " 'type': 'bar',\n", - " 'x': array(['ElectricityExport'], dtype=object),\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'y': {'bdata': ('AAAAAAAAAIAUfPDBB19aPby8nSEx72' ... 'AAAAAAgNj//////1jAAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", - " {'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'ElectricityImport',\n", - " 'marker': {'color': '#f7b836', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'ElectricityImport',\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Discharge)',\n", " 'orientation': 'v',\n", " 'showlegend': True,\n", " 'textposition': 'auto',\n", " 'type': 'bar',\n", - " 'x': array(['ElectricityImport'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': {'bdata': '4q6Oo8Z0ckA=', 'dtype': 'f8'},\n", - " 'yaxis': 'y'},\n", - " {'hovertemplate': 'component=%{x}
value=%{y}',\n", - " 'legendgroup': 'GasGrid',\n", - " 'marker': {'color': '#7a0402', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", - " 'name': 'GasGrid',\n", - " 'orientation': 'v',\n", - " 'showlegend': True,\n", - " 'textposition': 'auto',\n", - " 'type': 'bar',\n", - " 'x': array(['GasGrid'], dtype=object),\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': 'AmXeaS1glUA=', 'dtype': 'f8'},\n", + " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49ivby8nSEx72' ... 'AAAAAgPWP9SoFav2i9AAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", " 'yaxis': 'y'}],\n", " 'layout': {'bargap': 0,\n", " 'bargroupgap': 0,\n", " 'barmode': 'relative',\n", - " 'legend': {'title': {'text': 'component'}, 'tracegroupgap': 0},\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", " 'template': '...',\n", - " 'title': {'text': 'CO2 (total) by component'},\n", - " 'xaxis': {'anchor': 'y',\n", - " 'categoryarray': [CHP, ElectricityExport,\n", - " ElectricityImport, GasGrid],\n", - " 'categoryorder': 'array',\n", - " 'domain': [0.0, 1.0],\n", - " 'title': {'text': 'component'}},\n", + " 'title': {'text': 'ThermalStorage (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 22, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "complex_sys.statistics.plot.effects(effect='CO2')" - ] + "execution_count": 7 }, { "cell_type": "markdown", - "id": "43", + "id": "16", "metadata": {}, - "source": [ - "### 4.3 Duration Curve\n", - "\n", - "Shows how often each power level is reached:" - ] + "source": "### 3.2 Carrier Balance\n\nShows all flows of a specific carrier across the entire system:" }, { "cell_type": "code", - "execution_count": 23, - "id": "44", + "id": "17", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:44.614581Z", - "start_time": "2025-12-12T12:06:44.248704Z" + "end_time": "2025-12-13T14:13:16.630015Z", + "start_time": "2025-12-13T14:13:16.539450Z" } }, + "source": [ + "complex_sys.statistics.plot.carrier_balance('heat')" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ - "PlotResult(data= Size: 3kB\n", - "Dimensions: (duration: 169)\n", + "PlotResult(data= Size: 4kB\n", + "Dimensions: (time: 73)\n", "Coordinates:\n", - " * duration (duration) int64 1kB 0 1 2 3 4 5 6 ... 163 164 165 166 167 168\n", + " * time (time) datetime64[ns] 584B 2024-06-01 ... 2024-06-04\n", "Data variables:\n", - " Boiler(Heat) (duration) float64 1kB nan 137.8 134.1 133.1 ... 0.0 0.0 0.0, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
duration=%{x}
value=%{y}',\n", - " 'legendgroup': 'Boiler(Heat)',\n", - " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'Boiler(Heat)',\n", + " CHP(Heat) (time) float64 584B 0.0 0.0 0.0 0.0 ... 0.0 0.0 nan\n", + " HeatPump(Heat) (time) float64 584B 0.0 0.0 0.0 0.0 ... 0.0 0.0 nan\n", + " BackupBoiler(Heat) (time) float64 584B 20.0 26.01 25.43 ... 20.0 nan\n", + " HeatStorage(Discharge) (time) float64 584B 0.0 0.0 0.0 ... 0.0 nan\n", + " HeatStorage(Charge) (time) float64 584B -0.0 -0.0 -0.0 ... -0.0 nan\n", + " HeatDemand(Heat) (time) float64 584B -20.0 -26.01 ... -20.0 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=CHP(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'CHP(Heat)',\n", + " 'marker': {'color': '#AB63FA', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'CHP(Heat)',\n", " 'orientation': 'v',\n", " 'showlegend': True,\n", - " 'type': 'scatter',\n", - " 'x': {'bdata': ('AAABAAIAAwAEAAUABgAHAAgACQAKAA' ... '4AnwCgAKEAogCjAKQApQCmAKcAqAA='),\n", - " 'dtype': 'i2'},\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('/////////39oQtzNVzphQLt+ZyCBw2' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=HeatPump(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatPump(Heat)',\n", + " 'marker': {'color': '#FFA15A', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatPump(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=BackupBoiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'BackupBoiler(Heat)',\n", + " 'marker': {'color': '#19D3F3', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'BackupBoiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAANEBcQRe1SgI6QOU9Gisjbz' ... 'Dnhlw6QAAAAAAAADRAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=HeatStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatStorage(Discharge)',\n", + " 'marker': {'color': '#FF6692', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatStorage(Discharge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'RO7MQ7PQAAAAAAAAAAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=HeatStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatStorage(Charge)',\n", + " 'marker': {'color': '#FF6692', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatStorage(Charge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'RO7MQ+vQAAAAAAAACAAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=HeatDemand(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatDemand(Heat)',\n", + " 'marker': {'color': '#B6E880', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatDemand(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAANMBcQRe1SgI6wOQ9Gisjbz' ... 'Dnhlw6wAAAAAAAADTAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'}],\n", - " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", " 'template': '...',\n", - " 'title': {'text': 'Duration Curve'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", + " 'title': {'text': 'Heat Balance (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 23, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "simple.statistics.plot.duration_curve('Boiler(Heat)')" - ] + "execution_count": 8 }, { "cell_type": "code", - "execution_count": 24, - "id": "45", + "id": "18", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:46.830321Z", - "start_time": "2025-12-12T12:06:46.454534Z" + "end_time": "2025-12-13T14:13:16.765682Z", + "start_time": "2025-12-13T14:13:16.660109Z" } }, + "source": [ + "complex_sys.statistics.plot.carrier_balance('electricity')" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ - "PlotResult(data= Size: 2kB\n", - "Dimensions: (duration: 73)\n", + "PlotResult(data= Size: 4kB\n", + "Dimensions: (time: 73)\n", "Coordinates:\n", - " * duration (duration) int64 584B 0 1 2 3 4 5 ... 67 68 69 70 71 72\n", + " * time (time) datetime64[ns] 584B 2024-06-01 ... 2024-06-04\n", "Data variables:\n", - " CHP(Heat) (duration) float64 584B nan 85.0 85.0 ... 0.0 0.0 0.0\n", - " HeatPump(Heat) (duration) float64 584B nan 40.0 40.0 ... 0.0 0.0 0.0\n", - " BackupBoiler(Heat) (duration) float64 584B nan 0.0 0.0 0.0 ... 0.0 0.0 0.0, figure=Figure({\n", - " 'data': [{'hovertemplate': 'variable=CHP(Heat)
duration=%{x}
value=%{y}',\n", - " 'legendgroup': 'CHP(Heat)',\n", - " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'CHP(Heat)',\n", + " ElectricityImport(El) (time) float64 584B 23.49 20.59 21.13 ... 17.12 nan\n", + " CHP(El) (time) float64 584B 0.0 0.0 0.0 0.0 ... 0.0 0.0 nan\n", + " ElectricityExport(El) (time) float64 584B -0.0 -0.0 -0.0 ... -0.0 -0.0 nan\n", + " HeatPump(El) (time) float64 584B -0.0 -0.0 -0.0 ... -0.0 -0.0 nan\n", + " ElDemand(El) (time) float64 584B -23.49 -20.59 ... -17.12 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=ElectricityImport(El)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElectricityImport(El)',\n", + " 'marker': {'color': '#EF553B', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElectricityImport(El)',\n", " 'orientation': 'v',\n", " 'showlegend': True,\n", - " 'type': 'scatter',\n", - " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", - " 'dtype': 'i1'},\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('/////////38AAAAAAEBVQAAAAAAAQF' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'y': {'bdata': ('2HsanZJ8N0B/T9mTNpc0QB5Tg3x1IT' ... 'ANSU0wQAE5VciyHTFAAAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=HeatPump(Heat)
duration=%{x}
value=%{y}',\n", - " 'legendgroup': 'HeatPump(Heat)',\n", - " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'HeatPump(Heat)',\n", + " {'hovertemplate': 'variable=CHP(El)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'CHP(El)',\n", + " 'marker': {'color': '#AB63FA', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'CHP(El)',\n", " 'orientation': 'v',\n", " 'showlegend': True,\n", - " 'type': 'scatter',\n", - " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", - " 'dtype': 'i1'},\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('/////////38AAAAAAABEQAAAAAAAAE' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", - " {'hovertemplate': 'variable=BackupBoiler(Heat)
duration=%{x}
value=%{y}',\n", - " 'legendgroup': 'BackupBoiler(Heat)',\n", - " 'line': {'color': '#00CC96', 'dash': 'solid'},\n", - " 'marker': {'symbol': 'circle'},\n", - " 'mode': 'lines',\n", - " 'name': 'BackupBoiler(Heat)',\n", + " {'hovertemplate': 'variable=ElectricityExport(El)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElectricityExport(El)',\n", + " 'marker': {'color': '#00CC96', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElectricityExport(El)',\n", " 'orientation': 'v',\n", " 'showlegend': True,\n", - " 'type': 'scatter',\n", - " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", - " 'dtype': 'i1'},\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('/////////38AAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'AAAAAAgAAAAAAAAACAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", - " 'yaxis': 'y'}],\n", - " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", - " 'template': '...',\n", - " 'title': {'text': 'Duration Curve'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", - " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", - "}))" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Multiple variables\n", - "complex_sys.statistics.plot.duration_curve(['CHP(Heat)', 'HeatPump(Heat)', 'BackupBoiler(Heat)'])" - ] - }, - { - "cell_type": "markdown", - "id": "46", - "metadata": {}, - "source": [ - "## 5. Heatmaps\n", - "\n", - "Heatmaps reshape time series into 2D grids (e.g., hour-of-day vs day):" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "47", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:47.605052Z", - "start_time": "2025-12-12T12:06:47.328779Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 2kB\n", - "Dimensions: (timeframe: 8, timestep: 24)\n", - "Coordinates:\n", - " * timeframe (timeframe) object 64B '2024-01-15' '2024-01-16' ... '2024-01-22'\n", - " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", - "Data variables:\n", - " value (timestep, timeframe) float64 2kB 32.48 42.84 47.28 ... 124.5 nan, figure=Figure({\n", - " 'data': [{'coloraxis': 'coloraxis',\n", - " 'hovertemplate': 'timeframe: %{x}
timestep: %{y}
Boiler(Heat)|flow_rate: %{z}',\n", - " 'name': '0',\n", - " 'type': 'heatmap',\n", - " 'x': array(['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19',\n", - " '2024-01-20', '2024-01-21', '2024-01-22'], dtype=object),\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=HeatPump(El)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatPump(El)',\n", + " 'marker': {'color': '#FFA15A', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatPump(El)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", - " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", - " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", - " dtype=object),\n", - " 'yaxis': 'y',\n", - " 'z': {'bdata': ('5ZuWpeU9QED8nmEA1mtFQOR8bxYopE' ... '//////M0D1ufhH+R5fQAAAAAAAAPh/'),\n", - " 'dtype': 'f8',\n", - " 'shape': '24, 8'}}],\n", - " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'Boiler(Heat)|flow_rate'}},\n", - " 'colorscale': [[0.0, '#30123b'],\n", - " [0.07142857142857142, '#4145ab'],\n", - " [0.14285714285714285, '#4675ed'],\n", - " [0.21428571428571427, '#39a2fc'],\n", - " [0.2857142857142857, '#1bcfd4'],\n", - " [0.35714285714285715, '#24eca6'],\n", - " [0.42857142857142855, '#61fc6c'], [0.5,\n", - " '#a4fc3b'], [0.5714285714285714,\n", - " '#d1e834'], [0.6428571428571429,\n", - " '#f3c63a'], [0.7142857142857143,\n", - " '#fe9b2d'], [0.7857142857142857,\n", - " '#f36315'], [0.8571428571428571,\n", - " '#d93806'], [0.9285714285714286,\n", - " '#b11901'], [1.0, '#7a0402']]},\n", - " 'margin': {'t': 60},\n", + " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'AAAAAAgAAAAAAAAACAAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ElDemand(El)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElDemand(El)',\n", + " 'marker': {'color': '#FF97FF', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElDemand(El)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-06-01T00:00:00.000000000', '2024-06-01T01:00:00.000000000',\n", + " '2024-06-01T02:00:00.000000000', '2024-06-01T03:00:00.000000000',\n", + " '2024-06-01T04:00:00.000000000', '2024-06-01T05:00:00.000000000',\n", + " '2024-06-01T06:00:00.000000000', '2024-06-01T07:00:00.000000000',\n", + " '2024-06-01T08:00:00.000000000', '2024-06-01T09:00:00.000000000',\n", + " '2024-06-01T10:00:00.000000000', '2024-06-01T11:00:00.000000000',\n", + " '2024-06-01T12:00:00.000000000', '2024-06-01T13:00:00.000000000',\n", + " '2024-06-01T14:00:00.000000000', '2024-06-01T15:00:00.000000000',\n", + " '2024-06-01T16:00:00.000000000', '2024-06-01T17:00:00.000000000',\n", + " '2024-06-01T18:00:00.000000000', '2024-06-01T19:00:00.000000000',\n", + " '2024-06-01T20:00:00.000000000', '2024-06-01T21:00:00.000000000',\n", + " '2024-06-01T22:00:00.000000000', '2024-06-01T23:00:00.000000000',\n", + " '2024-06-02T00:00:00.000000000', '2024-06-02T01:00:00.000000000',\n", + " '2024-06-02T02:00:00.000000000', '2024-06-02T03:00:00.000000000',\n", + " '2024-06-02T04:00:00.000000000', '2024-06-02T05:00:00.000000000',\n", + " '2024-06-02T06:00:00.000000000', '2024-06-02T07:00:00.000000000',\n", + " '2024-06-02T08:00:00.000000000', '2024-06-02T09:00:00.000000000',\n", + " '2024-06-02T10:00:00.000000000', '2024-06-02T11:00:00.000000000',\n", + " '2024-06-02T12:00:00.000000000', '2024-06-02T13:00:00.000000000',\n", + " '2024-06-02T14:00:00.000000000', '2024-06-02T15:00:00.000000000',\n", + " '2024-06-02T16:00:00.000000000', '2024-06-02T17:00:00.000000000',\n", + " '2024-06-02T18:00:00.000000000', '2024-06-02T19:00:00.000000000',\n", + " '2024-06-02T20:00:00.000000000', '2024-06-02T21:00:00.000000000',\n", + " '2024-06-02T22:00:00.000000000', '2024-06-02T23:00:00.000000000',\n", + " '2024-06-03T00:00:00.000000000', '2024-06-03T01:00:00.000000000',\n", + " '2024-06-03T02:00:00.000000000', '2024-06-03T03:00:00.000000000',\n", + " '2024-06-03T04:00:00.000000000', '2024-06-03T05:00:00.000000000',\n", + " '2024-06-03T06:00:00.000000000', '2024-06-03T07:00:00.000000000',\n", + " '2024-06-03T08:00:00.000000000', '2024-06-03T09:00:00.000000000',\n", + " '2024-06-03T10:00:00.000000000', '2024-06-03T11:00:00.000000000',\n", + " '2024-06-03T12:00:00.000000000', '2024-06-03T13:00:00.000000000',\n", + " '2024-06-03T14:00:00.000000000', '2024-06-03T15:00:00.000000000',\n", + " '2024-06-03T16:00:00.000000000', '2024-06-03T17:00:00.000000000',\n", + " '2024-06-03T18:00:00.000000000', '2024-06-03T19:00:00.000000000',\n", + " '2024-06-03T20:00:00.000000000', '2024-06-03T21:00:00.000000000',\n", + " '2024-06-03T22:00:00.000000000', '2024-06-03T23:00:00.000000000',\n", + " '2024-06-04T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('2HsanZJ8N8B/T9mTNpc0wB5Tg3x1IT' ... 'ANSU0wwAE5VciyHTHAAAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", " 'template': '...',\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", - " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", + " 'title': {'text': 'Electricity Balance (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 25, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Auto-reshape based on data frequency\n", - "simple.statistics.plot.heatmap('Boiler(Heat)')" - ] + "execution_count": 9 }, { - "cell_type": "code", - "execution_count": 26, - "id": "48", + "cell_type": "markdown", + "id": "19", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:48.600387Z", - "start_time": "2025-12-12T12:06:47.811215Z" + "end_time": "2025-12-12T12:06:36.266666Z", + "start_time": "2025-12-12T12:06:36.198686Z" } }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 2kB\n", - "Dimensions: (timeframe: 8, timestep: 24)\n", - "Coordinates:\n", - " * timeframe (timeframe) object 64B '2024-01-15' '2024-01-16' ... '2024-01-22'\n", - " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", - "Data variables:\n", - " value (timestep, timeframe) float64 2kB 250.0 1.379e-14 ... 102.5 nan, figure=Figure({\n", - " 'data': [{'coloraxis': 'coloraxis',\n", - " 'hovertemplate': ('timeframe: %{x}
timestep: %' ... 'rge_state: %{z}'),\n", - " 'name': '0',\n", - " 'type': 'heatmap',\n", - " 'x': array(['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19',\n", - " '2024-01-20', '2024-01-21', '2024-01-22'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", - " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", - " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", - " dtype=object),\n", - " 'yaxis': 'y',\n", - " 'z': {'bdata': ('AAAAAABAb0DkBdNVug0PPZGJ+Pa5Lj' ... 'AAAAAAAADw5ELUzaBZQAAAAAAAAPh/'),\n", - " 'dtype': 'f8',\n", - " 'shape': '24, 8'}}],\n", - " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'ThermalStorage|charge_state'}},\n", - " 'colorscale': [[0.0, '#30123b'],\n", - " [0.07142857142857142, '#4145ab'],\n", - " [0.14285714285714285, '#4675ed'],\n", - " [0.21428571428571427, '#39a2fc'],\n", - " [0.2857142857142857, '#1bcfd4'],\n", - " [0.35714285714285715, '#24eca6'],\n", - " [0.42857142857142855, '#61fc6c'], [0.5,\n", - " '#a4fc3b'], [0.5714285714285714,\n", - " '#d1e834'], [0.6428571428571429,\n", - " '#f3c63a'], [0.7142857142857143,\n", - " '#fe9b2d'], [0.7857142857142857,\n", - " '#f36315'], [0.8571428571428571,\n", - " '#d93806'], [0.9285714285714286,\n", - " '#b11901'], [1.0, '#7a0402']]},\n", - " 'margin': {'t': 60},\n", - " 'template': '...',\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", - " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", - "}))" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Storage charge state heatmap\n", - "simple.statistics.plot.heatmap('ThermalStorage')" - ] + "source": "### 3.3 Flow Rates\n\nPlot multiple flow rates together:" }, { "cell_type": "code", - "execution_count": 27, - "id": "49", + "id": "20", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:49.215856Z", - "start_time": "2025-12-12T12:06:48.901232Z" + "end_time": "2025-12-13T14:13:16.863735Z", + "start_time": "2025-12-13T14:13:16.783096Z" } }, + "source": [ + "# All flows\n", + "simple.statistics.plot.flows()" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ - "PlotResult(data= Size: 2kB\n", - "Dimensions: (timeframe: 8, timestep: 24)\n", + "PlotResult(data= Size: 9kB\n", + "Dimensions: (time: 169)\n", "Coordinates:\n", - " * timeframe (timeframe) object 64B '2024-01-15' '2024-01-16' ... '2024-01-22'\n", - " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", "Data variables:\n", - " value (timestep, timeframe) float64 2kB 32.48 27.28 31.72 ... 24.48 nan, figure=Figure({\n", - " 'data': [{'coloraxis': 'coloraxis',\n", - " 'hovertemplate': 'timeframe: %{x}
timestep: %{y}
Office(Heat)|flow_rate: %{z}',\n", - " 'name': '0',\n", - " 'type': 'heatmap',\n", - " 'x': array(['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19',\n", - " '2024-01-20', '2024-01-21', '2024-01-22'], dtype=object),\n", - " 'xaxis': 'x',\n", - " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", - " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", - " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", - " dtype=object),\n", - " 'yaxis': 'y',\n", - " 'z': {'bdata': ('5ZuWpeU9QEDqSDirMEc7QB8FVNfUtz' ... 'AAAAAANECu5+If5Xs4QAAAAAAAAPh/'),\n", - " 'dtype': 'f8',\n", - " 'shape': '24, 8'}}],\n", - " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'Office(Heat)|flow_rate'}},\n", - " 'colorscale': [[0.0, 'rgb(247,251,255)'], [0.125,\n", - " 'rgb(222,235,247)'], [0.25,\n", - " 'rgb(198,219,239)'], [0.375,\n", - " 'rgb(158,202,225)'], [0.5,\n", - " 'rgb(107,174,214)'], [0.625,\n", - " 'rgb(66,146,198)'], [0.75,\n", - " 'rgb(33,113,181)'], [0.875,\n", - " 'rgb(8,81,156)'], [1.0,\n", - " 'rgb(8,48,107)']]},\n", - " 'template': '...',\n", - " 'title': {'text': 'Heat Demand Pattern'},\n", - " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", - " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", - "}))" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Custom colorscale\n", - "simple.statistics.plot.heatmap('Office(Heat)', color_continuous_scale='Blues', title='Heat Demand Pattern')" - ] - }, - { - "cell_type": "markdown", - "id": "50", - "metadata": {}, - "source": [ - "## 6. Sankey Diagrams\n", - "\n", - "Sankey diagrams visualize energy flows through the system." - ] - }, - { - "cell_type": "markdown", - "id": "51", - "metadata": {}, - "source": [ - "### 6.1 Flow Sankey\n", - "\n", - "Total energy flows:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "52", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:49.583991Z", - "start_time": "2025-12-12T12:06:49.299561Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 1kB\n", - "Dimensions: (link: 6)\n", - "Coordinates:\n", - " * link (link) int64 48B 0 1 2 3 4 5\n", - " source (link) \n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 3kB\n", - "Dimensions: (link: 12)\n", - "Coordinates:\n", - " * link (link) int64 96B 0 1 2 3 4 5 6 7 8 9 10 11\n", - " source (link) \n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 0B\n", - "Dimensions: (link: 0)\n", - "Coordinates:\n", - " * link (link) float64 0B \n", - " source (link) float64 0B \n", - " target (link) float64 0B \n", - " label (link) float64 0B \n", - " carrier (link) float64 0B \n", - "Data variables:\n", - " value (link) float64 0B , figure=Figure({\n", - " 'data': [{'link': {'label': [], 'source': [], 'target': [], 'value': []},\n", - " 'node': {'color': [], 'label': [], 'line': {'color': 'black', 'width': 0.5}, 'pad': 15, 'thickness': 20},\n", - " 'type': 'sankey'}],\n", - " 'layout': {'template': '...', 'title': {'text': 'Investment Sizes (Capacities)'}}\n", - "}))" - ] - }, - "execution_count": 49, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multiperiod.statistics.plot.sankey.sizes()" - ] - }, - { - "cell_type": "markdown", - "id": "56", - "metadata": {}, - "source": [ - "### 6.3 Peak Flow Sankey\n", - "\n", - "Maximum flow rates (peak power):" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "57", - "metadata": { - "ExecuteTime": { - "end_time": "2025-12-12T12:06:51.458035Z", - "start_time": "2025-12-12T12:06:51.237341Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 1kB\n", - "Dimensions: (link: 6)\n", - "Coordinates:\n", - " * link (link) int64 48B 0 1 2 3 4 5\n", - " source (link) \n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 184B\n", - "Dimensions: (link: 1)\n", - "Coordinates:\n", - " * link (link) int64 8B 0\n", - " source (link) \n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 488B\n", - "Dimensions: (link: 2)\n", - "Coordinates:\n", - " * link (link) int64 16B 0 1\n", - " source (link) \n", - "
" - ], - "text/plain": [ - "PlotResult(data= Size: 1kB\n", - "Dimensions: (link: 5)\n", - "Coordinates:\n", - " * link (link) int64 40B 0 1 2 3 4\n", - " source (link) \n", - " window.PlotlyConfig = {MathJaxConfig: 'local'};\n", - " if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n", - " \n", - " \n", - " " + " GasGrid(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", + " Boiler(Gas) (time) float64 1kB 35.31 31.86 ... 135.3 nan\n", + " Boiler(Heat) (time) float64 1kB 32.48 29.31 ... 124.5 nan\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB 0.0 -5.275e-13 ... nan\n", + " Office(Heat) (time) float64 1kB 32.48 29.31 ... 24.48 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=GasGrid(Gas)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'GasGrid(Gas)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'GasGrid(Gas)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Boiler(Gas)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Gas)',\n", + " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Gas)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'line': {'color': '#00CC96', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Heat)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QED3U8WNBU89QHjXQkqFnk' ... '////8zQPW5+Ef5Hl9AAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'line': {'color': '#AB63FA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'line': {'color': '#FFA15A', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49ivby8nSEx72' ... 'AAAAAgPWP9SoFav2i9AAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Office(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Office(Heat)',\n", + " 'line': {'color': '#19D3F3', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Office(Heat)',\n", + " 'showlegend': True,\n", + " 'type': 'scattergl',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QEDMU8WNBU89QGDXQkqFnk' ... 'AAAAA0QK7n4h/lezhAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Flows (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 10 + }, + { + "cell_type": "code", + "id": "21", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:16.936035Z", + "start_time": "2025-12-13T14:13:16.880022Z" + } + }, + "source": [ + "# Flows filtered by component\n", + "simple.statistics.plot.flows(component='Boiler')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 4kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", + "Data variables:\n", + " Boiler(Gas) (time) float64 1kB 35.31 31.86 36.13 110.2 ... 21.74 135.3 nan\n", + " Boiler(Heat) (time) float64 1kB 32.48 29.31 33.24 101.4 ... 20.0 124.5 nan, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=Boiler(Gas)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Gas)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Gas)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('GuEHDXSnQUD261BXdds/QI2yoZ56EE' ... 'SmN701QKxDuYXg6WBAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('5ZuWpeU9QED3U8WNBU89QHjXQkqFnk' ... '////8zQPW5+Ef5Hl9AAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Flows (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 11 + }, + { + "cell_type": "markdown", + "id": "32", + "metadata": {}, + "source": [ + "### 3.4 Storage Plot\n", + "\n", + "Combined view of storage charge state and flows:" + ] + }, + { + "cell_type": "code", + "id": "33", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.166751Z", + "start_time": "2025-12-13T14:13:16.985913Z" + } + }, + "source": [ + "simple.statistics.plot.storage('ThermalStorage')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 5kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-...\n", + "Data variables:\n", + " ThermalStorage(Charge) (time) float64 1kB 0.0 -3.748e-13 ... 100.0 nan\n", + " ThermalStorage(Discharge) (time) float64 1kB -0.0 5.275e-13 ... nan\n", + " charge_state (time) float64 1kB 250.0 248.8 ... 102.5 200.0, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Charge)',\n", + " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Charge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAAAUfPDBB19avby8nSEx72' ... 'AAAAAAANj//////1hAAAAAAAAA+H8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage(Discharge)',\n", + " 'marker': {'color': '#D62728', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage(Discharge)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAAAAAIAKPvjgg49iPby8nSEx72' ... 'AAAAAgvWP9SoFav2g9AAAAAAAA+P8='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'time=%{x}
value=%{y}',\n", + " 'legendgroup': '',\n", + " 'line': {'color': 'black', 'width': 2},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'charge_state',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAABAb0AAAAAAABhvQDkzMzMz8G' ... 'LbxcFZQPDkQtTNoFlAAAAAAAAAaUA='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y2'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'ThermalStorage Operation (flow_rate)'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}},\n", + " 'yaxis2': {'overlaying': 'y', 'showgrid': False, 'side': 'right', 'title': {'text': 'Charge State'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 12 + }, + { + "cell_type": "markdown", + "id": "34", + "metadata": {}, + "source": [ + "### 3.5 Charge States Plot\n", + "\n", + "Plot charge state time series directly:" + ] + }, + { + "cell_type": "code", + "id": "35", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.297322Z", + "start_time": "2025-12-13T14:13:17.214857Z" + } + }, + "source": [ + "simple.statistics.plot.charge_states('ThermalStorage')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 3kB\n", + "Dimensions: (time: 169)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 1kB 2024-01-15 ... 2024-01-22\n", + "Data variables:\n", + " ThermalStorage (time) float64 1kB 250.0 248.8 247.5 ... 103.0 102.5 200.0, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=ThermalStorage
time=%{x}
value=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': array(['2024-01-15T00:00:00.000000000', '2024-01-15T01:00:00.000000000',\n", + " '2024-01-15T02:00:00.000000000', '2024-01-15T03:00:00.000000000',\n", + " '2024-01-15T04:00:00.000000000', '2024-01-15T05:00:00.000000000',\n", + " '2024-01-15T06:00:00.000000000', '2024-01-15T07:00:00.000000000',\n", + " '2024-01-15T08:00:00.000000000', '2024-01-15T09:00:00.000000000',\n", + " '2024-01-15T10:00:00.000000000', '2024-01-15T11:00:00.000000000',\n", + " '2024-01-15T12:00:00.000000000', '2024-01-15T13:00:00.000000000',\n", + " '2024-01-15T14:00:00.000000000', '2024-01-15T15:00:00.000000000',\n", + " '2024-01-15T16:00:00.000000000', '2024-01-15T17:00:00.000000000',\n", + " '2024-01-15T18:00:00.000000000', '2024-01-15T19:00:00.000000000',\n", + " '2024-01-15T20:00:00.000000000', '2024-01-15T21:00:00.000000000',\n", + " '2024-01-15T22:00:00.000000000', '2024-01-15T23:00:00.000000000',\n", + " '2024-01-16T00:00:00.000000000', '2024-01-16T01:00:00.000000000',\n", + " '2024-01-16T02:00:00.000000000', '2024-01-16T03:00:00.000000000',\n", + " '2024-01-16T04:00:00.000000000', '2024-01-16T05:00:00.000000000',\n", + " '2024-01-16T06:00:00.000000000', '2024-01-16T07:00:00.000000000',\n", + " '2024-01-16T08:00:00.000000000', '2024-01-16T09:00:00.000000000',\n", + " '2024-01-16T10:00:00.000000000', '2024-01-16T11:00:00.000000000',\n", + " '2024-01-16T12:00:00.000000000', '2024-01-16T13:00:00.000000000',\n", + " '2024-01-16T14:00:00.000000000', '2024-01-16T15:00:00.000000000',\n", + " '2024-01-16T16:00:00.000000000', '2024-01-16T17:00:00.000000000',\n", + " '2024-01-16T18:00:00.000000000', '2024-01-16T19:00:00.000000000',\n", + " '2024-01-16T20:00:00.000000000', '2024-01-16T21:00:00.000000000',\n", + " '2024-01-16T22:00:00.000000000', '2024-01-16T23:00:00.000000000',\n", + " '2024-01-17T00:00:00.000000000', '2024-01-17T01:00:00.000000000',\n", + " '2024-01-17T02:00:00.000000000', '2024-01-17T03:00:00.000000000',\n", + " '2024-01-17T04:00:00.000000000', '2024-01-17T05:00:00.000000000',\n", + " '2024-01-17T06:00:00.000000000', '2024-01-17T07:00:00.000000000',\n", + " '2024-01-17T08:00:00.000000000', '2024-01-17T09:00:00.000000000',\n", + " '2024-01-17T10:00:00.000000000', '2024-01-17T11:00:00.000000000',\n", + " '2024-01-17T12:00:00.000000000', '2024-01-17T13:00:00.000000000',\n", + " '2024-01-17T14:00:00.000000000', '2024-01-17T15:00:00.000000000',\n", + " '2024-01-17T16:00:00.000000000', '2024-01-17T17:00:00.000000000',\n", + " '2024-01-17T18:00:00.000000000', '2024-01-17T19:00:00.000000000',\n", + " '2024-01-17T20:00:00.000000000', '2024-01-17T21:00:00.000000000',\n", + " '2024-01-17T22:00:00.000000000', '2024-01-17T23:00:00.000000000',\n", + " '2024-01-18T00:00:00.000000000', '2024-01-18T01:00:00.000000000',\n", + " '2024-01-18T02:00:00.000000000', '2024-01-18T03:00:00.000000000',\n", + " '2024-01-18T04:00:00.000000000', '2024-01-18T05:00:00.000000000',\n", + " '2024-01-18T06:00:00.000000000', '2024-01-18T07:00:00.000000000',\n", + " '2024-01-18T08:00:00.000000000', '2024-01-18T09:00:00.000000000',\n", + " '2024-01-18T10:00:00.000000000', '2024-01-18T11:00:00.000000000',\n", + " '2024-01-18T12:00:00.000000000', '2024-01-18T13:00:00.000000000',\n", + " '2024-01-18T14:00:00.000000000', '2024-01-18T15:00:00.000000000',\n", + " '2024-01-18T16:00:00.000000000', '2024-01-18T17:00:00.000000000',\n", + " '2024-01-18T18:00:00.000000000', '2024-01-18T19:00:00.000000000',\n", + " '2024-01-18T20:00:00.000000000', '2024-01-18T21:00:00.000000000',\n", + " '2024-01-18T22:00:00.000000000', '2024-01-18T23:00:00.000000000',\n", + " '2024-01-19T00:00:00.000000000', '2024-01-19T01:00:00.000000000',\n", + " '2024-01-19T02:00:00.000000000', '2024-01-19T03:00:00.000000000',\n", + " '2024-01-19T04:00:00.000000000', '2024-01-19T05:00:00.000000000',\n", + " '2024-01-19T06:00:00.000000000', '2024-01-19T07:00:00.000000000',\n", + " '2024-01-19T08:00:00.000000000', '2024-01-19T09:00:00.000000000',\n", + " '2024-01-19T10:00:00.000000000', '2024-01-19T11:00:00.000000000',\n", + " '2024-01-19T12:00:00.000000000', '2024-01-19T13:00:00.000000000',\n", + " '2024-01-19T14:00:00.000000000', '2024-01-19T15:00:00.000000000',\n", + " '2024-01-19T16:00:00.000000000', '2024-01-19T17:00:00.000000000',\n", + " '2024-01-19T18:00:00.000000000', '2024-01-19T19:00:00.000000000',\n", + " '2024-01-19T20:00:00.000000000', '2024-01-19T21:00:00.000000000',\n", + " '2024-01-19T22:00:00.000000000', '2024-01-19T23:00:00.000000000',\n", + " '2024-01-20T00:00:00.000000000', '2024-01-20T01:00:00.000000000',\n", + " '2024-01-20T02:00:00.000000000', '2024-01-20T03:00:00.000000000',\n", + " '2024-01-20T04:00:00.000000000', '2024-01-20T05:00:00.000000000',\n", + " '2024-01-20T06:00:00.000000000', '2024-01-20T07:00:00.000000000',\n", + " '2024-01-20T08:00:00.000000000', '2024-01-20T09:00:00.000000000',\n", + " '2024-01-20T10:00:00.000000000', '2024-01-20T11:00:00.000000000',\n", + " '2024-01-20T12:00:00.000000000', '2024-01-20T13:00:00.000000000',\n", + " '2024-01-20T14:00:00.000000000', '2024-01-20T15:00:00.000000000',\n", + " '2024-01-20T16:00:00.000000000', '2024-01-20T17:00:00.000000000',\n", + " '2024-01-20T18:00:00.000000000', '2024-01-20T19:00:00.000000000',\n", + " '2024-01-20T20:00:00.000000000', '2024-01-20T21:00:00.000000000',\n", + " '2024-01-20T22:00:00.000000000', '2024-01-20T23:00:00.000000000',\n", + " '2024-01-21T00:00:00.000000000', '2024-01-21T01:00:00.000000000',\n", + " '2024-01-21T02:00:00.000000000', '2024-01-21T03:00:00.000000000',\n", + " '2024-01-21T04:00:00.000000000', '2024-01-21T05:00:00.000000000',\n", + " '2024-01-21T06:00:00.000000000', '2024-01-21T07:00:00.000000000',\n", + " '2024-01-21T08:00:00.000000000', '2024-01-21T09:00:00.000000000',\n", + " '2024-01-21T10:00:00.000000000', '2024-01-21T11:00:00.000000000',\n", + " '2024-01-21T12:00:00.000000000', '2024-01-21T13:00:00.000000000',\n", + " '2024-01-21T14:00:00.000000000', '2024-01-21T15:00:00.000000000',\n", + " '2024-01-21T16:00:00.000000000', '2024-01-21T17:00:00.000000000',\n", + " '2024-01-21T18:00:00.000000000', '2024-01-21T19:00:00.000000000',\n", + " '2024-01-21T20:00:00.000000000', '2024-01-21T21:00:00.000000000',\n", + " '2024-01-21T22:00:00.000000000', '2024-01-21T23:00:00.000000000',\n", + " '2024-01-22T00:00:00.000000000'], dtype='datetime64[ns]'),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('AAAAAABAb0AAAAAAABhvQDkzMzMz8G' ... 'LbxcFZQPDkQtTNoFlAAAAAAAAAaUA='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Storage Charge States'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'Charge State'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 13 + }, + { + "cell_type": "markdown", + "id": "36", + "metadata": {}, + "source": [ + "## 4. Aggregated Plots" + ] + }, + { + "cell_type": "markdown", + "id": "37", + "metadata": {}, + "source": [ + "### 4.1 Sizes Plot\n", + "\n", + "Bar chart of component/flow sizes:" + ] + }, + { + "cell_type": "code", + "id": "38", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:17:12.906249Z", + "start_time": "2025-12-13T14:17:12.823893Z" + } + }, + "source": "multiperiod.statistics.plot.sizes()", + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 208B\n", + "Dimensions: (period: 3, scenario: 2)\n", + "Coordinates:\n", + " * period (period) int64 24B 2024 2025 2026\n", + " * scenario (scenario) scenario=high_demand
period=2024
Size=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#30123b', 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['Boiler(Heat)'], dtype=object),\n", + " 'xaxis': 'x4',\n", + " 'y': {'bdata': 'PvP9oLpQWkA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y4'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=high_demand
period=2025
Size=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#30123b', 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['Boiler(Heat)'], dtype=object),\n", + " 'xaxis': 'x5',\n", + " 'y': {'bdata': 'PvP9oLpQWkA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y5'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=high_demand
period=2026
Size=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#30123b', 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['Boiler(Heat)'], dtype=object),\n", + " 'xaxis': 'x6',\n", + " 'y': {'bdata': 'PvP9oLpQWkA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y6'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=low_demand
period=2024
Size=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#30123b', 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['Boiler(Heat)'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'PvP9oLpQWkA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=low_demand
period=2025
Size=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#30123b', 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['Boiler(Heat)'], dtype=object),\n", + " 'xaxis': 'x2',\n", + " 'y': {'bdata': 'PvP9oLpQWkA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y2'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=low_demand
period=2026
Size=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'marker': {'color': '#30123b', 'pattern': {'shape': ''}},\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['Boiler(Heat)'], dtype=object),\n", + " 'xaxis': 'x3',\n", + " 'y': {'bdata': 'PvP9oLpQWkA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y3'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=high_demand
period=2024
Size=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'marker': {'color': '#7a0402', 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ThermalStorage'], dtype=object),\n", + " 'xaxis': 'x4',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y4'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=high_demand
period=2025
Size=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'marker': {'color': '#7a0402', 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ThermalStorage'], dtype=object),\n", + " 'xaxis': 'x5',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y5'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=high_demand
period=2026
Size=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'marker': {'color': '#7a0402', 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ThermalStorage'], dtype=object),\n", + " 'xaxis': 'x6',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y6'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=low_demand
period=2024
Size=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'marker': {'color': '#7a0402', 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ThermalStorage'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=low_demand
period=2025
Size=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'marker': {'color': '#7a0402', 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ThermalStorage'], dtype=object),\n", + " 'xaxis': 'x2',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y2'},\n", + " {'hovertemplate': 'Flow=%{x}
scenario=low_demand
period=2026
Size=%{y}',\n", + " 'legendgroup': 'ThermalStorage',\n", + " 'marker': {'color': '#7a0402', 'pattern': {'shape': ''}},\n", + " 'name': 'ThermalStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': False,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ThermalStorage'], dtype=object),\n", + " 'xaxis': 'x3',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y3'}],\n", + " 'layout': {'annotations': [{'font': {},\n", + " 'showarrow': False,\n", + " 'text': 'period=2024',\n", + " 'x': 0.15666666666666665,\n", + " 'xanchor': 'center',\n", + " 'xref': 'paper',\n", + " 'y': 1.0,\n", + " 'yanchor': 'bottom',\n", + " 'yref': 'paper'},\n", + " {'font': {},\n", + " 'showarrow': False,\n", + " 'text': 'period=2025',\n", + " 'x': 0.49,\n", + " 'xanchor': 'center',\n", + " 'xref': 'paper',\n", + " 'y': 1.0,\n", + " 'yanchor': 'bottom',\n", + " 'yref': 'paper'},\n", + " {'font': {},\n", + " 'showarrow': False,\n", + " 'text': 'period=2026',\n", + " 'x': 0.8233333333333333,\n", + " 'xanchor': 'center',\n", + " 'xref': 'paper',\n", + " 'y': 1.0,\n", + " 'yanchor': 'bottom',\n", + " 'yref': 'paper'},\n", + " {'font': {},\n", + " 'showarrow': False,\n", + " 'text': 'scenario=low_demand',\n", + " 'textangle': 90,\n", + " 'x': 0.98,\n", + " 'xanchor': 'left',\n", + " 'xref': 'paper',\n", + " 'y': 0.2425,\n", + " 'yanchor': 'middle',\n", + " 'yref': 'paper'},\n", + " {'font': {},\n", + " 'showarrow': False,\n", + " 'text': 'scenario=high_demand',\n", + " 'textangle': 90,\n", + " 'x': 0.98,\n", + " 'xanchor': 'left',\n", + " 'xref': 'paper',\n", + " 'y': 0.7575000000000001,\n", + " 'yanchor': 'middle',\n", + " 'yref': 'paper'}],\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'Flow'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Investment Sizes'},\n", + " 'xaxis': {'anchor': 'y',\n", + " 'categoryarray': [Boiler(Heat), ThermalStorage],\n", + " 'categoryorder': 'array',\n", + " 'domain': [0.0, 0.3133333333333333],\n", + " 'title': {'text': 'Flow'}},\n", + " 'xaxis2': {'anchor': 'y2',\n", + " 'categoryarray': [Boiler(Heat), ThermalStorage],\n", + " 'categoryorder': 'array',\n", + " 'domain': [0.3333333333333333, 0.6466666666666666],\n", + " 'matches': 'x',\n", + " 'title': {'text': 'Flow'}},\n", + " 'xaxis3': {'anchor': 'y3',\n", + " 'categoryarray': [Boiler(Heat), ThermalStorage],\n", + " 'categoryorder': 'array',\n", + " 'domain': [0.6666666666666666, 0.98],\n", + " 'matches': 'x',\n", + " 'title': {'text': 'Flow'}},\n", + " 'xaxis4': {'anchor': 'y4', 'domain': [0.0, 0.3133333333333333], 'matches': 'x', 'showticklabels': False},\n", + " 'xaxis5': {'anchor': 'y5',\n", + " 'domain': [0.3333333333333333, 0.6466666666666666],\n", + " 'matches': 'x',\n", + " 'showticklabels': False},\n", + " 'xaxis6': {'anchor': 'y6', 'domain': [0.6666666666666666, 0.98], 'matches': 'x', 'showticklabels': False},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 0.485], 'title': {'text': 'Size'}},\n", + " 'yaxis2': {'anchor': 'x2', 'domain': [0.0, 0.485], 'matches': 'y', 'showticklabels': False},\n", + " 'yaxis3': {'anchor': 'x3', 'domain': [0.0, 0.485], 'matches': 'y', 'showticklabels': False},\n", + " 'yaxis4': {'anchor': 'x4', 'domain': [0.515, 1.0], 'matches': 'y', 'title': {'text': 'Size'}},\n", + " 'yaxis5': {'anchor': 'x5', 'domain': [0.515, 1.0], 'matches': 'y', 'showticklabels': False},\n", + " 'yaxis6': {'anchor': 'x6', 'domain': [0.515, 1.0], 'matches': 'y', 'showticklabels': False}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 46 + }, + { + "cell_type": "markdown", + "id": "39", + "metadata": {}, + "source": [ + "### 4.2 Effects Plot\n", + "\n", + "Bar chart of effect totals by component:" + ] + }, + { + "cell_type": "code", + "id": "40", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.440231Z", + "start_time": "2025-12-13T14:13:17.355184Z" + } + }, + "source": [ + "simple.statistics.plot.effects(effect='costs')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 24B\n", + "Dimensions: (effect: 1, component: 1)\n", + "Coordinates:\n", + " * effect (effect) object 8B 'costs'\n", + " * component (component) object 8B 'GasGrid'\n", + "Data variables:\n", + " total (effect, component) float64 8B 558.8, figure=Figure({\n", + " 'data': [{'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'GasGrid',\n", + " 'marker': {'color': '#a4fc3b', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'GasGrid',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['GasGrid'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'sDkY5qR2gUA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'component'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'costs (total) by component'},\n", + " 'xaxis': {'anchor': 'y',\n", + " 'categoryarray': [GasGrid],\n", + " 'categoryorder': 'array',\n", + " 'domain': [0.0, 1.0],\n", + " 'title': {'text': 'component'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 15 + }, + { + "cell_type": "code", + "id": "41", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.547032Z", + "start_time": "2025-12-13T14:13:17.454197Z" + } + }, + "source": [ + "# Multi-effect system: compare costs and CO2\n", + "complex_sys.statistics.plot.effects(effect='costs')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 104B\n", + "Dimensions: (effect: 1, component: 6)\n", + "Coordinates:\n", + " * effect (effect) object 8B 'costs'\n", + " * component (component) object 48B 'CHP' ... 'HeatStorage'\n", + "Data variables:\n", + " total (effect, component) float64 48B 76.0 -297.4 102.9 420.8 0.0 0.0, figure=Figure({\n", + " 'data': [{'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'CHP',\n", + " 'marker': {'color': '#30123b', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'CHP',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['CHP'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAU0A=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElectricityExport',\n", + " 'marker': {'color': '#3c99f9', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElectricityExport',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ElectricityExport'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'QuE7D7GWcsA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElectricityImport',\n", + " 'marker': {'color': '#49f683', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElectricityImport',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ElectricityImport'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'mB7bhVm8WUA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'GasGrid',\n", + " 'marker': {'color': '#dfda36', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'GasGrid',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['GasGrid'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'VVvjiWRNekA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatPump',\n", + " 'marker': {'color': '#ee5a12', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatPump',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['HeatPump'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatStorage',\n", + " 'marker': {'color': '#7a0402', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['HeatStorage'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'component'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'costs (total) by component'},\n", + " 'xaxis': {'anchor': 'y',\n", + " 'categoryarray': [CHP, ElectricityExport,\n", + " ElectricityImport, GasGrid, HeatPump,\n", + " HeatStorage],\n", + " 'categoryorder': 'array',\n", + " 'domain': [0.0, 1.0],\n", + " 'title': {'text': 'component'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 16 + }, + { + "cell_type": "code", + "id": "42", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.616154Z", + "start_time": "2025-12-13T14:13:17.558702Z" + } + }, + "source": [ + "complex_sys.statistics.plot.effects(effect='CO2')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 104B\n", + "Dimensions: (effect: 1, component: 6)\n", + "Coordinates:\n", + " * effect (effect) object 8B 'CO2'\n", + " * component (component) object 48B 'CHP' ... 'HeatStorage'\n", + "Data variables:\n", + " total (effect, component) float64 48B 0.0 0.0 255.1 1.403e+03 0.0 0.0, figure=Figure({\n", + " 'data': [{'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'CHP',\n", + " 'marker': {'color': '#30123b', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'CHP',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['CHP'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElectricityExport',\n", + " 'marker': {'color': '#3c99f9', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElectricityExport',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ElectricityExport'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'ElectricityImport',\n", + " 'marker': {'color': '#49f683', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'ElectricityImport',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['ElectricityImport'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'PuZR52/jb0A=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'GasGrid',\n", + " 'marker': {'color': '#dfda36', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'GasGrid',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['GasGrid'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'HMySHSnrlUA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatPump',\n", + " 'marker': {'color': '#ee5a12', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatPump',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['HeatPump'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'component=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatStorage',\n", + " 'marker': {'color': '#7a0402', 'line': {'width': 0}, 'pattern': {'shape': ''}},\n", + " 'name': 'HeatStorage',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'textposition': 'auto',\n", + " 'type': 'bar',\n", + " 'x': array(['HeatStorage'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': 'AAAAAAAAAAA=', 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'bargap': 0,\n", + " 'bargroupgap': 0,\n", + " 'barmode': 'relative',\n", + " 'legend': {'title': {'text': 'component'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'CO2 (total) by component'},\n", + " 'xaxis': {'anchor': 'y',\n", + " 'categoryarray': [CHP, ElectricityExport,\n", + " ElectricityImport, GasGrid, HeatPump,\n", + " HeatStorage],\n", + " 'categoryorder': 'array',\n", + " 'domain': [0.0, 1.0],\n", + " 'title': {'text': 'component'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 17 + }, + { + "cell_type": "markdown", + "id": "43", + "metadata": {}, + "source": [ + "### 4.3 Duration Curve\n", + "\n", + "Shows how often each power level is reached:" + ] + }, + { + "cell_type": "code", + "id": "44", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.659929Z", + "start_time": "2025-12-13T14:13:17.624261Z" + } + }, + "source": [ + "simple.statistics.plot.duration_curve('Boiler(Heat)')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 3kB\n", + "Dimensions: (duration: 169)\n", + "Coordinates:\n", + " * duration (duration) int64 1kB 0 1 2 3 4 5 6 ... 163 164 165 166 167 168\n", + "Data variables:\n", + " Boiler(Heat) (duration) float64 1kB nan 137.8 134.1 133.1 ... 0.0 0.0 0.0, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
duration=%{x}
value=%{y}',\n", + " 'legendgroup': 'Boiler(Heat)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'Boiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': {'bdata': ('AAABAAIAAwAEAAUABgAHAAgACQAKAA' ... '4AnwCgAKEAogCjAKQApQCmAKcAqAA='),\n", + " 'dtype': 'i2'},\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('/////////39oQtzNVzphQLt+ZyCBw2' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Duration Curve'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 18 + }, + { + "cell_type": "code", + "id": "45", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.711351Z", + "start_time": "2025-12-13T14:13:17.670270Z" + } + }, + "source": [ + "# Multiple variables\n", + "complex_sys.statistics.plot.duration_curve(['CHP(Heat)', 'HeatPump(Heat)', 'BackupBoiler(Heat)'])" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 2kB\n", + "Dimensions: (duration: 73)\n", + "Coordinates:\n", + " * duration (duration) int64 584B 0 1 2 3 4 5 ... 67 68 69 70 71 72\n", + "Data variables:\n", + " CHP(Heat) (duration) float64 584B nan 80.88 80.62 ... 0.0 0.0 0.0\n", + " HeatPump(Heat) (duration) float64 584B nan 0.0 0.0 0.0 ... 0.0 0.0 0.0\n", + " BackupBoiler(Heat) (duration) float64 584B nan 63.11 ... -8.993e-15, figure=Figure({\n", + " 'data': [{'hovertemplate': 'variable=CHP(Heat)
duration=%{x}
value=%{y}',\n", + " 'legendgroup': 'CHP(Heat)',\n", + " 'line': {'color': '#636EFA', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'CHP(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", + " 'dtype': 'i1'},\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('/////////39Gwcq9YjhUQOyIZIeOJ1' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=HeatPump(Heat)
duration=%{x}
value=%{y}',\n", + " 'legendgroup': 'HeatPump(Heat)',\n", + " 'line': {'color': '#EF553B', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'HeatPump(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", + " 'dtype': 'i1'},\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('/////////38AAAAAAAAAAAAAAAAAAA' ... 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAA='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'},\n", + " {'hovertemplate': 'variable=BackupBoiler(Heat)
duration=%{x}
value=%{y}',\n", + " 'legendgroup': 'BackupBoiler(Heat)',\n", + " 'line': {'color': '#00CC96', 'dash': 'solid'},\n", + " 'marker': {'symbol': 'circle'},\n", + " 'mode': 'lines',\n", + " 'name': 'BackupBoiler(Heat)',\n", + " 'orientation': 'v',\n", + " 'showlegend': True,\n", + " 'type': 'scatter',\n", + " 'x': {'bdata': ('AAECAwQFBgcICQoLDA0ODxAREhMUFR' ... 'Q1Njc4OTo7PD0+P0BBQkNERUZHSA=='),\n", + " 'dtype': 'i1'},\n", + " 'xaxis': 'x',\n", + " 'y': {'bdata': ('/////////38h4dgzOo5PQDMD0m1cz0' ... 'AAAACwvAAAAAAAALi8AAAAAABABL0='),\n", + " 'dtype': 'f8'},\n", + " 'yaxis': 'y'}],\n", + " 'layout': {'legend': {'title': {'text': 'variable'}, 'tracegroupgap': 0},\n", + " 'template': '...',\n", + " 'title': {'text': 'Duration Curve'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'Timesteps'}},\n", + " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 19 + }, + { + "cell_type": "markdown", + "id": "46", + "metadata": {}, + "source": [ + "## 5. Heatmaps\n", + "\n", + "Heatmaps reshape time series into 2D grids (e.g., hour-of-day vs day):" + ] + }, + { + "cell_type": "code", + "id": "47", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.799982Z", + "start_time": "2025-12-13T14:13:17.729391Z" + } + }, + "source": [ + "# Auto-reshape based on data frequency\n", + "simple.statistics.plot.heatmap('Boiler(Heat)')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 2kB\n", + "Dimensions: (timeframe: 8, timestep: 24)\n", + "Coordinates:\n", + " * timeframe (timeframe) object 64B '2024-01-15' '2024-01-16' ... '2024-01-22'\n", + " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", + "Data variables:\n", + " value (timestep, timeframe) float64 2kB 32.48 42.84 47.28 ... 124.5 nan, figure=Figure({\n", + " 'data': [{'coloraxis': 'coloraxis',\n", + " 'hovertemplate': 'timeframe: %{x}
timestep: %{y}
Boiler(Heat)|flow_rate: %{z}',\n", + " 'name': '0',\n", + " 'type': 'heatmap',\n", + " 'x': array(['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19',\n", + " '2024-01-20', '2024-01-21', '2024-01-22'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", + " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", + " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", + " dtype=object),\n", + " 'yaxis': 'y',\n", + " 'z': {'bdata': ('5ZuWpeU9QED8nmEA1mtFQOR8bxYopE' ... '//////M0D1ufhH+R5fQAAAAAAAAPh/'),\n", + " 'dtype': 'f8',\n", + " 'shape': '24, 8'}}],\n", + " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'Boiler(Heat)|flow_rate'}},\n", + " 'colorscale': [[0.0, '#30123b'],\n", + " [0.07142857142857142, '#4145ab'],\n", + " [0.14285714285714285, '#4675ed'],\n", + " [0.21428571428571427, '#39a2fc'],\n", + " [0.2857142857142857, '#1bcfd4'],\n", + " [0.35714285714285715, '#24eca6'],\n", + " [0.42857142857142855, '#61fc6c'], [0.5,\n", + " '#a4fc3b'], [0.5714285714285714,\n", + " '#d1e834'], [0.6428571428571429,\n", + " '#f3c63a'], [0.7142857142857143,\n", + " '#fe9b2d'], [0.7857142857142857,\n", + " '#f36315'], [0.8571428571428571,\n", + " '#d93806'], [0.9285714285714286,\n", + " '#b11901'], [1.0, '#7a0402']]},\n", + " 'margin': {'t': 60},\n", + " 'template': '...',\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", + " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 20 + }, + { + "cell_type": "code", + "id": "48", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.849042Z", + "start_time": "2025-12-13T14:13:17.808302Z" + } + }, + "source": [ + "# Storage charge state heatmap\n", + "simple.statistics.plot.heatmap('ThermalStorage')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 2kB\n", + "Dimensions: (timeframe: 8, timestep: 24)\n", + "Coordinates:\n", + " * timeframe (timeframe) object 64B '2024-01-15' '2024-01-16' ... '2024-01-22'\n", + " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", + "Data variables:\n", + " value (timestep, timeframe) float64 2kB 250.0 1.379e-14 ... 102.5 nan, figure=Figure({\n", + " 'data': [{'coloraxis': 'coloraxis',\n", + " 'hovertemplate': ('timeframe: %{x}
timestep: %' ... 'rge_state: %{z}'),\n", + " 'name': '0',\n", + " 'type': 'heatmap',\n", + " 'x': array(['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19',\n", + " '2024-01-20', '2024-01-21', '2024-01-22'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", + " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", + " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", + " dtype=object),\n", + " 'yaxis': 'y',\n", + " 'z': {'bdata': ('AAAAAABAb0DkBdNVug0PPZGJ+Pa5Lj' ... 'AAAAAAAADw5ELUzaBZQAAAAAAAAPh/'),\n", + " 'dtype': 'f8',\n", + " 'shape': '24, 8'}}],\n", + " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'ThermalStorage|charge_state'}},\n", + " 'colorscale': [[0.0, '#30123b'],\n", + " [0.07142857142857142, '#4145ab'],\n", + " [0.14285714285714285, '#4675ed'],\n", + " [0.21428571428571427, '#39a2fc'],\n", + " [0.2857142857142857, '#1bcfd4'],\n", + " [0.35714285714285715, '#24eca6'],\n", + " [0.42857142857142855, '#61fc6c'], [0.5,\n", + " '#a4fc3b'], [0.5714285714285714,\n", + " '#d1e834'], [0.6428571428571429,\n", + " '#f3c63a'], [0.7142857142857143,\n", + " '#fe9b2d'], [0.7857142857142857,\n", + " '#f36315'], [0.8571428571428571,\n", + " '#d93806'], [0.9285714285714286,\n", + " '#b11901'], [1.0, '#7a0402']]},\n", + " 'margin': {'t': 60},\n", + " 'template': '...',\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", + " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 21 + }, + { + "cell_type": "code", + "id": "49", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.900833Z", + "start_time": "2025-12-13T14:13:17.858196Z" + } + }, + "source": [ + "# Custom colorscale\n", + "simple.statistics.plot.heatmap('Office(Heat)', color_continuous_scale='Blues', title='Heat Demand Pattern')" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 2kB\n", + "Dimensions: (timeframe: 8, timestep: 24)\n", + "Coordinates:\n", + " * timeframe (timeframe) object 64B '2024-01-15' '2024-01-16' ... '2024-01-22'\n", + " * timestep (timestep) object 192B '00:00' '01:00' ... '22:00' '23:00'\n", + "Data variables:\n", + " value (timestep, timeframe) float64 2kB 32.48 27.28 31.72 ... 24.48 nan, figure=Figure({\n", + " 'data': [{'coloraxis': 'coloraxis',\n", + " 'hovertemplate': 'timeframe: %{x}
timestep: %{y}
Office(Heat)|flow_rate: %{z}',\n", + " 'name': '0',\n", + " 'type': 'heatmap',\n", + " 'x': array(['2024-01-15', '2024-01-16', '2024-01-17', '2024-01-18', '2024-01-19',\n", + " '2024-01-20', '2024-01-21', '2024-01-22'], dtype=object),\n", + " 'xaxis': 'x',\n", + " 'y': array(['00:00', '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00',\n", + " '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00',\n", + " '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00'],\n", + " dtype=object),\n", + " 'yaxis': 'y',\n", + " 'z': {'bdata': ('5ZuWpeU9QEDqSDirMEc7QB8FVNfUtz' ... 'AAAAAANECu5+If5Xs4QAAAAAAAAPh/'),\n", + " 'dtype': 'f8',\n", + " 'shape': '24, 8'}}],\n", + " 'layout': {'coloraxis': {'colorbar': {'title': {'text': 'Office(Heat)|flow_rate'}},\n", + " 'colorscale': [[0.0, 'rgb(247,251,255)'], [0.125,\n", + " 'rgb(222,235,247)'], [0.25,\n", + " 'rgb(198,219,239)'], [0.375,\n", + " 'rgb(158,202,225)'], [0.5,\n", + " 'rgb(107,174,214)'], [0.625,\n", + " 'rgb(66,146,198)'], [0.75,\n", + " 'rgb(33,113,181)'], [0.875,\n", + " 'rgb(8,81,156)'], [1.0,\n", + " 'rgb(8,48,107)']]},\n", + " 'template': '...',\n", + " 'title': {'text': 'Heat Demand Pattern'},\n", + " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'timeframe'}},\n", + " 'yaxis': {'anchor': 'x', 'autorange': 'reversed', 'domain': [0.0, 1.0], 'title': {'text': 'timestep'}}}\n", + "}))" + ], + "text/html": [ + "
\n", + "
" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 22 + }, + { + "cell_type": "markdown", + "id": "50", + "metadata": {}, + "source": [ + "## 6. Sankey Diagrams\n", + "\n", + "Sankey diagrams visualize energy flows through the system." + ] + }, + { + "cell_type": "markdown", + "id": "51", + "metadata": {}, + "source": [ + "### 6.1 Flow Sankey\n", + "\n", + "Total energy flows:" + ] + }, + { + "cell_type": "code", + "id": "52", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.930662Z", + "start_time": "2025-12-13T14:13:17.908846Z" + } + }, + "source": [ + "simple.statistics.plot.sankey.flows()" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 1kB\n", + "Dimensions: (link: 6)\n", + "Coordinates:\n", + " * link (link) int64 48B 0 1 2 3 4 5\n", + " source (link) \n", + "
" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 23 + }, + { + "cell_type": "code", + "id": "53", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.970954Z", + "start_time": "2025-12-13T14:13:17.939809Z" + } + }, + "source": [ + "# Complex system with multiple carriers\n", + "complex_sys.statistics.plot.sankey.flows()" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 3kB\n", + "Dimensions: (link: 10)\n", + "Coordinates:\n", + " * link (link) int64 80B 0 1 2 3 4 5 6 7 8 9\n", + " source (link) \n", + "
" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 24 + }, + { + "cell_type": "markdown", + "id": "54", + "metadata": {}, + "source": [ + "### 6.2 Sizes Sankey\n", + "\n", + "Capacity/size allocation:" + ] + }, + { + "cell_type": "code", + "id": "55", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:17.993818Z", + "start_time": "2025-12-13T14:13:17.977340Z" + } + }, + "source": [ + "multiperiod.statistics.plot.sankey.sizes()" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 120B\n", + "Dimensions: (link: 1)\n", + "Coordinates:\n", + " * link (link) int64 8B 0\n", + " source (link) \n", + "
" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 25 + }, + { + "cell_type": "markdown", + "id": "56", + "metadata": {}, + "source": [ + "### 6.3 Peak Flow Sankey\n", + "\n", + "Maximum flow rates (peak power):" + ] + }, + { + "cell_type": "code", + "id": "57", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:18.029364Z", + "start_time": "2025-12-13T14:13:18.001651Z" + } + }, + "source": [ + "simple.statistics.plot.sankey.peak_flow()" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 1kB\n", + "Dimensions: (link: 6)\n", + "Coordinates:\n", + " * link (link) int64 48B 0 1 2 3 4 5\n", + " source (link) \n", + "
" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 26 + }, + { + "cell_type": "markdown", + "id": "58", + "metadata": {}, + "source": [ + "### 6.4 Effects Sankey\n", + "\n", + "Cost/emission allocation:" + ] + }, + { + "cell_type": "code", + "id": "59", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:18.051137Z", + "start_time": "2025-12-13T14:13:18.037718Z" + } + }, + "source": [ + "simple.statistics.plot.sankey.effects(select={'effect': 'costs'})" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 184B\n", + "Dimensions: (link: 1)\n", + "Coordinates:\n", + " * link (link) int64 8B 0\n", + " source (link) \n", + "
" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 27 + }, + { + "cell_type": "code", + "id": "60", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:18.072870Z", + "start_time": "2025-12-13T14:13:18.057665Z" + } + }, + "source": [ + "# CO2 allocation in complex system\n", + "complex_sys.statistics.plot.sankey.effects(select={'effect': 'CO2'})" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 488B\n", + "Dimensions: (link: 2)\n", + "Coordinates:\n", + " * link (link) int64 16B 0 1\n", + " source (link) \n", + "
" ] }, - "jetTransient": { - "display_id": null + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 28 + }, + { + "cell_type": "markdown", + "id": "61", + "metadata": {}, + "source": [ + "### 6.5 Filtering with `select`\n", + "\n", + "Filter Sankey to specific buses or carriers:" + ] + }, + { + "cell_type": "code", + "id": "62", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:18.102271Z", + "start_time": "2025-12-13T14:13:18.087615Z" + } + }, + "source": [ + "# Only heat flows\n", + "complex_sys.statistics.plot.sankey.flows(select={'bus': 'Heat'})" + ], + "outputs": [ + { + "data": { + "text/plain": [ + "PlotResult(data= Size: 576B\n", + "Dimensions: (link: 3)\n", + "Coordinates:\n", + " * link (link) int64 24B 0 1 2\n", + " source (link) \n", + "
" + ] }, + "execution_count": 29, "metadata": {}, - "output_type": "display_data" - }, + "output_type": "execute_result" + } + ], + "execution_count": 29 + }, + { + "cell_type": "markdown", + "id": "63", + "metadata": {}, + "source": [ + "## 7. Topology Visualization\n", + "\n", + "Visualize the system structure (no solution data required)." + ] + }, + { + "cell_type": "markdown", + "id": "64", + "metadata": {}, + "source": [ + "### 7.1 Topology Plot\n", + "\n", + "Sankey-style network diagram:" + ] + }, + { + "cell_type": "code", + "id": "65", + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-13T14:13:18.129663Z", + "start_time": "2025-12-13T14:13:18.109005Z" + } + }, + "source": [ + "simple.topology.plot()" + ], + "outputs": [ { "data": { + "text/plain": [ + "PlotResult(data= Size: 1kB\n", + "Dimensions: (link: 6)\n", + "Coordinates:\n", + " * link (link) ',\n", + " 'label': [Boiler(Gas), Boiler(Heat), GasGrid(Gas),\n", + " Office(Heat), ThermalStorage(Charge),\n", + " ThermalStorage(Discharge)],\n", + " 'source': [5, 4, 0, 1, 1, 2],\n", + " 'target': [4, 1, 5, 3, 2, 1],\n", + " 'value': [1, 1, 1, 1, 1, 1]},\n", + " 'node': {'color': [#636EFA, #D62728, #00CC96, #AB63FA, #EF553B,\n", + " #1F77B4],\n", + " 'customdata': [Source('GasGrid')
outputs:
*\n", + " Flow('GasGrid(Gas)', bus='Gas', size=500.0,\n", + " effects_per_flow_hour={'costs': ~0.1}),\n", + " Bus('Heat', carrier='heat')
inputs:
\n", + " * Flow('Boiler(Heat)', bus='Heat',\n", + " size=150.0)
*\n", + " Flow('ThermalStorage(Discharge)', bus='Heat',\n", + " size=100.0,\n", + " status_parameters=StatusParameters())
\n", + " outputs:
*\n", + " Flow('ThermalStorage(Charge)', bus='Heat',\n", + " size=100.0,\n", + " status_parameters=StatusParameters())
\n", + " * Flow('Office(Heat)', bus='Heat', size=1.0,\n", + " fixed_relative_profile=20.0-92.3),\n", + " Storage('ThermalStorage',\n", + " capacity_in_flow_hours=500.0,\n", + " initial_charge_state=250.0,\n", + " minimal_final_charge_state=200.0,\n", + " eta_charge=1.0, eta_discharge=1.0,\n", + " relative_loss_per_hour=0.0)
inputs:
\n", + " * Flow('ThermalStorage(Charge)', bus='Heat',\n", + " size=100.0,\n", + " status_parameters=StatusParameters())
\n", + " outputs:
*\n", + " Flow('ThermalStorage(Discharge)', bus='Heat',\n", + " size=100.0,\n", + " status_parameters=StatusParameters()),\n", + " Sink('Office')
inputs:
*\n", + " Flow('Office(Heat)', bus='Heat', size=1.0,\n", + " fixed_relative_profile=20.0-92.3),\n", + " Boiler('Boiler', thermal_efficiency=0.9,\n", + " fuel_flow=Flow('Boiler(Gas)', bus='Gas'),\n", + " thermal_flow=Flow('Boiler(Heat)', bus='Heat',\n", + " size=150.0))
inputs:
*\n", + " Flow('Boiler(Gas)', bus='Gas')
\n", + " outputs:
* Flow('Boiler(Heat)',\n", + " bus='Heat', size=150.0), Bus('Gas',\n", + " carrier='gas')
inputs:
*\n", + " Flow('GasGrid(Gas)', bus='Gas', size=500.0,\n", + " effects_per_flow_hour={'costs': ~0.1})
\n", + " outputs:
* Flow('Boiler(Gas)',\n", + " bus='Gas')],\n", + " 'hovertemplate': '%{customdata}',\n", + " 'label': [GasGrid, Heat, ThermalStorage, Office, Boiler,\n", + " Gas],\n", + " 'line': {'color': 'black', 'width': 0.5},\n", + " 'pad': 15,\n", + " 'thickness': 20},\n", + " 'type': 'sankey'}],\n", + " 'layout': {'template': '...', 'title': {'text': 'Flow System Topology'}}\n", + "}))" + ], "text/html": [ - "
" + "
\n", + "
" ] }, - "jetTransient": { - "display_id": null - }, + "execution_count": 30, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], - "source": [ - "simple.topology.plot()" - ] + "execution_count": 30 }, { "cell_type": "code", - "execution_count": 36, "id": "66", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:54.740689Z", - "start_time": "2025-12-12T12:06:54.669190Z" + "end_time": "2025-12-13T14:13:18.157403Z", + "start_time": "2025-12-13T14:13:18.136357Z" } }, + "source": [ + "complex_sys.topology.plot(title='Complex System Topology')" + ], "outputs": [ { "data": { + "text/plain": [ + "PlotResult(data= Size: 3kB\n", + "Dimensions: (link: 14)\n", + "Coordinates:\n", + " * link (link) ',\n", + " 'label': [BackupBoiler(Gas), BackupBoiler(Heat), CHP(El),\n", + " CHP(Gas), CHP(Heat), ElDemand(El),\n", + " ElectricityExport(El), ElectricityImport(El),\n", + " GasGrid(Gas), HeatDemand(Heat), HeatPump(El),\n", + " HeatPump(Heat), HeatStorage(Charge),\n", + " HeatStorage(Discharge)],\n", + " 'source': [11, 1, 9, 11, 9, 0, 0, 10, 2, 6, 0, 3, 6, 8],\n", + " 'target': [1, 6, 0, 9, 6, 4, 5, 0, 11, 7, 3, 6, 8, 6],\n", + " 'value': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]},\n", + " 'node': {'color': [#FECB52, #19D3F3, #636EFA, #FFA15A, #FF97FF,\n", + " #00CC96, #D62728, #B6E880, #FF6692, #AB63FA,\n", + " #EF553B, #1F77B4],\n", + " 'customdata': [Bus('Electricity',\n", + " carrier='electricity')
inputs:
*\n", + " Flow('ElectricityImport(El)',\n", + " bus='Electricity', size=100.0,\n", + " effects_per_flow_hour={'costs': 0.1-0.2,\n", + " 'CO2': 0.3-0.4})
* Flow('CHP(El)',\n", + " bus='Electricity', size=80.0,\n", + " status_parameters=StatusParameters())
\n", + " outputs:
*\n", + " Flow('ElectricityExport(El)',\n", + " bus='Electricity', size=50.0,\n", + " effects_per_flow_hour={'costs': -0.2--\n", + " 0.1})
* Flow('HeatPump(El)',\n", + " bus='Electricity')
*\n", + " Flow('ElDemand(El)', bus='Electricity',\n", + " size=1.0, fixed_relative_profile=10.0-42.3),\n", + " Boiler('BackupBoiler',\n", + " thermal_efficiency=0.9,\n", + " fuel_flow=Flow('BackupBoiler(Gas)',\n", + " bus='Gas'),\n", + " thermal_flow=Flow('BackupBoiler(Heat)',\n", + " bus='Heat', size=80.0))
inputs:
*\n", + " Flow('BackupBoiler(Gas)', bus='Gas')
\n", + " outputs:
* Flow('BackupBoiler(Heat)',\n", + " bus='Heat', size=80.0), Source('GasGrid')
\n", + " outputs:
* Flow('GasGrid(Gas)',\n", + " bus='Gas', size=300.0,\n", + " effects_per_flow_hour={'costs': 0.1, 'CO2':\n", + " 0.2}), HeatPump('HeatPump', cop=3.5,\n", + " electrical_flow=Flow('HeatPump(El)',\n", + " bus='Electricity'),\n", + " thermal_flow=Flow('HeatPump(Heat)',\n", + " bus='Heat', size=InvestP...)
inputs:
\n", + " * Flow('HeatPump(El)', bus='Electricity')
\n", + " outputs:
* Flow('HeatPump(Heat)',\n", + " bus='Heat',\n", + " size=InvestParameters(minimum_size=0.0,\n", + " maximum_size...), Sink('ElDemand')
\n", + " inputs:
* Flow('ElDemand(El)',\n", + " bus='Electricity', size=1.0,\n", + " fixed_relative_profile=10.0-42.3),\n", + " Sink('ElectricityExport')
inputs:
\n", + " * Flow('ElectricityExport(El)',\n", + " bus='Electricity', size=50.0,\n", + " effects_per_flow_hour={'costs': -0.2--0.1}),\n", + " Bus('Heat', carrier='heat')
inputs:
\n", + " * Flow('CHP(Heat)', bus='Heat', size=85.0,\n", + " status_parameters=StatusParameters())
\n", + " * Flow('HeatPump(Heat)', bus='Heat',\n", + " size=InvestParameters(minimum_size=0.0,\n", + " maximum_size...)
*\n", + " Flow('BackupBoiler(Heat)', bus='Heat',\n", + " size=80.0)
*\n", + " Flow('HeatStorage(Discharge)', bus='Heat',\n", + " size=50.0,\n", + " status_parameters=StatusParameters())
\n", + " outputs:
* Flow('HeatStorage(Charge)',\n", + " bus='Heat', size=50.0,\n", + " status_parameters=StatusParameters())
\n", + " * Flow('HeatDemand(Heat)', bus='Heat',\n", + " size=1.0, fixed_relative_profile=20.0-87.5),\n", + " Sink('HeatDemand')
inputs:
*\n", + " Flow('HeatDemand(Heat)', bus='Heat',\n", + " size=1.0, fixed_relative_profile=20.0-87.5),\n", + " Storage('HeatStorage', capacity_in_flow_hours\n", + " =InvestParameters(minimum_size=0.0,\n", + " maximum_size..., eta_charge=1.0,\n", + " eta_discharge=1.0)
inputs:
*\n", + " Flow('HeatStorage(Charge)', bus='Heat',\n", + " size=50.0,\n", + " status_parameters=StatusParameters())
\n", + " outputs:
*\n", + " Flow('HeatStorage(Discharge)', bus='Heat',\n", + " size=50.0,\n", + " status_parameters=StatusParameters()),\n", + " LinearConverter('CHP', status_parameters=Stat\n", + " usParameters(effects_per_active_hour={'cost..\n", + " ., piecewise_conversion=PiecewiseConversion(p\n", + " iecewises={'Gas': Piecewis...)
\n", + " inputs:
* Flow('CHP(Gas)', bus='Gas',\n", + " size=200.0,\n", + " status_parameters=StatusParameters())
\n", + " outputs:
* Flow('CHP(El)',\n", + " bus='Electricity', size=80.0,\n", + " status_parameters=StatusParameters())
\n", + " * Flow('CHP(Heat)', bus='Heat', size=85.0,\n", + " status_parameters=StatusParameters()),\n", + " Source('ElectricityImport')
outputs:
\n", + " * Flow('ElectricityImport(El)',\n", + " bus='Electricity', size=100.0,\n", + " effects_per_flow_hour={'costs': 0.1-0.2,\n", + " 'CO2': 0.3-0.4}), Bus('Gas',\n", + " carrier='gas')
inputs:
*\n", + " Flow('GasGrid(Gas)', bus='Gas', size=300.0,\n", + " effects_per_flow_hour={'costs': 0.1, 'CO2':\n", + " 0.2})
outputs:
* Flow('CHP(Gas)',\n", + " bus='Gas', size=200.0,\n", + " status_parameters=StatusParameters())
\n", + " * Flow('BackupBoiler(Gas)', bus='Gas')],\n", + " 'hovertemplate': '%{customdata}',\n", + " 'label': [Electricity, BackupBoiler, GasGrid, HeatPump,\n", + " ElDemand, ElectricityExport, Heat, HeatDemand,\n", + " HeatStorage, CHP, ElectricityImport, Gas],\n", + " 'line': {'color': 'black', 'width': 0.5},\n", + " 'pad': 15,\n", + " 'thickness': 20},\n", + " 'type': 'sankey'}],\n", + " 'layout': {'template': '...', 'title': {'text': 'Complex System Topology'}}\n", + "}))" + ], "text/html": [ - "
" + "
\n", + "
" ] }, - "jetTransient": { - "display_id": null - }, + "execution_count": 31, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], - "source": [ - "complex_sys.topology.plot(title='Complex System Topology')" - ] + "execution_count": 31 }, { "cell_type": "markdown", @@ -5987,14 +4882,24 @@ }, { "cell_type": "code", - "execution_count": 37, "id": "68", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:54.957830Z", - "start_time": "2025-12-12T12:06:54.902442Z" + "end_time": "2025-12-13T14:13:18.168871Z", + "start_time": "2025-12-13T14:13:18.165083Z" } }, + "source": [ + "nodes, edges = simple.topology.infos()\n", + "\n", + "print('Nodes:')\n", + "for label, info in nodes.items():\n", + " print(f' {label}: {info[\"class\"]}')\n", + "\n", + "print('\\nEdges (flows):')\n", + "for label, info in edges.items():\n", + " print(f' {info[\"start\"]} -> {info[\"end\"]}: {label}')" + ], "outputs": [ { "name": "stdout", @@ -6018,17 +4923,7 @@ ] } ], - "source": [ - "nodes, edges = simple.topology.infos()\n", - "\n", - "print('Nodes:')\n", - "for label, info in nodes.items():\n", - " print(f' {label}: {info[\"class\"]}')\n", - "\n", - "print('\\nEdges (flows):')\n", - "for label, info in edges.items():\n", - " print(f' {info[\"start\"]} -> {info[\"end\"]}: {label}')" - ] + "execution_count": 32 }, { "cell_type": "markdown", @@ -6042,14 +4937,19 @@ }, { "cell_type": "code", - "execution_count": 38, "id": "70", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:55.088528Z", - "start_time": "2025-12-12T12:06:55.064186Z" + "end_time": "2025-12-13T14:13:18.194588Z", + "start_time": "2025-12-13T14:13:18.191374Z" } }, + "source": [ + "print('Multiperiod system dimensions:')\n", + "print(f' Periods: {list(multiperiod.periods)}')\n", + "print(f' Scenarios: {list(multiperiod.scenarios)}')\n", + "print(f' Solution dims: {dict(multiperiod.solution.sizes)}')" + ], "outputs": [ { "name": "stdout", @@ -6062,30 +4962,24 @@ ] } ], - "source": [ - "print('Multiperiod system dimensions:')\n", - "print(f' Periods: {list(multiperiod.periods)}')\n", - "print(f' Scenarios: {list(multiperiod.scenarios)}')\n", - "print(f' Solution dims: {dict(multiperiod.solution.sizes)}')" - ] + "execution_count": 33 }, { "cell_type": "code", - "execution_count": 39, "id": "71", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:57.157602Z", - "start_time": "2025-12-12T12:06:55.650661Z" + "end_time": "2025-12-13T14:13:18.325331Z", + "start_time": "2025-12-13T14:13:18.199791Z" } }, + "source": [ + "# Balance plot with faceting by scenario\n", + "multiperiod.statistics.plot.balance('Heat')" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ "PlotResult(data= Size: 10kB\n", "Dimensions: (time: 49, period: 3, scenario: 2)\n", @@ -6094,9 +4988,9 @@ " * period (period) int64 24B 2024 2025 2026\n", " * scenario (scenario) scena' ... '}
value=%{y}'),\n", " 'legendgroup': 'Boiler(Heat)',\n", @@ -6132,7 +5026,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x4',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'rxMNlDwFS20eeOpEfAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('5JuWpeU9RsDiqeLGgqdEwF3XQkqFnk' ... 'rxMNlDwFu20eeOpEfAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y4'},\n", " {'hovertemplate': ('variable=Boiler(Heat)
scena' ... '}
value=%{y}'),\n", @@ -6169,7 +5063,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x5',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'rxMNlDwGC20eeOpEfAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('5JuWpeU9RsDiqeLGgqdEwF3XQkqFnk' ... 'rxMNlDwFu20eeOpEfAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y5'},\n", " {'hovertemplate': ('variable=Boiler(Heat)
scena' ... '}
value=%{y}'),\n", @@ -6206,7 +5100,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x6',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'rxMNlDwGC20eeOpEfAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('5JuWpeU9RsDiqeLGgqdEwFvXQkqFnk' ... 'rxMNlDwFy20eeOpEfAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y6'},\n", " {'hovertemplate': ('variable=Boiler(Heat)
scena' ... '}
value=%{y}'),\n", @@ -6243,7 +5137,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'Vm3JI8wDyyyUAFXDnAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('EgPMGubHPsD7i30z/HU4wBwgRYDluD' ... 'Vm3JI8wDayyUAFXDnAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", " {'hovertemplate': ('variable=Boiler(Heat)
scena' ... '}
value=%{y}'),\n", @@ -6280,7 +5174,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x2',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'Vm3JI8wDyyyUAFXDnAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('EgPMGubHPsD7i30z/HU4wBwgRYDluD' ... 'Vm3JI8wDayyUAFXDnAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y2'},\n", " {'hovertemplate': ('variable=Boiler(Heat)
scena' ... '}
value=%{y}'),\n", @@ -6317,7 +5211,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x3',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'Vm3JI8wDyyyUAFXDnAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('EgPMGubHPsD7i30z/HU4wBwgRYDluD' ... 'Vm3JI8wDayyUAFXDnAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y3'},\n", " {'hovertemplate': ('variable=ThermalStorage(Discha' ... '}
value=%{y}'),\n", @@ -6354,7 +5248,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x4',\n", - " 'y': {'bdata': ('5ZuWpeU9RsDsqeLGgqdEwEfXQkqFnk' ... 'JRKxBKPe7+DqGhoTi9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('iAK1fqVASD1j/UqBWr9nPQo++OCDj2' ... 'jgg89hPWP9SoFav2g9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y4'},\n", " {'hovertemplate': ('variable=ThermalStorage(Discha' ... '}
value=%{y}'),\n", @@ -6391,7 +5285,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x5',\n", - " 'y': {'bdata': ('5ZuWpeU9RsDsqeLGgqdEwEfXQkqFnk' ... '1P1R87PWP9SoFav0e9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('iAK1fqVASD1j/UqBWr9nPQo++OCDj2' ... 'qBWr9oPWP9SoFav2g9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y5'},\n", " {'hovertemplate': ('variable=ThermalStorage(Discha' ... '}
value=%{y}'),\n", @@ -6428,7 +5322,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x6',\n", - " 'y': {'bdata': ('5ZuWpeU9RsDPqeLGgqdEwFTXQkqFnk' ... 'AAAAAAgGP9SoFav0e9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('iAK1fqVASD1j/UqBWr9oPby8nSExr2' ... 'qBWr9oPQo++OCDz2E9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y6'},\n", " {'hovertemplate': ('variable=ThermalStorage(Discha' ... '}
value=%{y}'),\n", @@ -6465,7 +5359,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('EgPMGubHPsAnjH0z/HU4wAkgRYDluD' ... 'j1K22OPWP9SoFavzg9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('AAAAAAAAAIC3nSExb8dkPbedITFvx2' ... 'Exb8dkPbedITFvx2Q9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", " {'hovertemplate': ('variable=ThermalStorage(Discha' ... '}
value=%{y}'),\n", @@ -6502,7 +5396,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x2',\n", - " 'y': {'bdata': ('EgPMGubHPsCfi30z/HU4wDogRYDluD' ... '2guF0/PWP9SoFavzg9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('AAAAAAAAAIC3nSExb8dkPbedITFvx2' ... 'Exb8dkPbedITFvx2Q9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y2'},\n", " {'hovertemplate': ('variable=ThermalStorage(Discha' ... '}
value=%{y}'),\n", @@ -6539,7 +5433,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x3',\n", - " 'y': {'bdata': ('EgPMGubHPsCfi30z/HU4wDogRYDluD' ... 'DGEbwovWP9SoFavzg9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('AAAAAAAAAIC3nSExb8dkPbedITFvx2' ... 'Exb8dkPbedITFvp2U9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y3'},\n", " {'hovertemplate': ('variable=ThermalStorage(Charge' ... '}
value=%{y}'),\n", @@ -6576,7 +5470,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x4',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAoPWP9SoFav0' ... 'SjViA+vW73dwgNDQU9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('iAK1fqVASb1j/UqBWr9ovQo++OCDT2' ... 'jgg49ivWP9SoFav2m9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y4'},\n", " {'hovertemplate': ('variable=ThermalStorage(Charge' ... '}
value=%{y}'),\n", @@ -6613,7 +5507,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x5',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAoPWP9SoFav0' ... '6n6o9DvWP9SoFav0g9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('iAK1fqVASb1j/UqBWr9ovQo++OCDT2' ... 'qBWr9pvWP9SoFav2m9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y5'},\n", " {'hovertemplate': ('variable=ThermalStorage(Charge' ... '}
value=%{y}'),\n", @@ -6650,7 +5544,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x6',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAABHvWT9SoFavz' ... 'AAAAAAAGP9SoFav0g9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('iAK1fqVASb1j/UqBWr9pvby8nSEx72' ... 'qBWr9pvQo++OCDj2K9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y6'},\n", " {'hovertemplate': ('variable=ThermalStorage(Charge' ... '}
value=%{y}'),\n", @@ -6687,7 +5581,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAKPvjgg49CPQAAAAAAAD' ... 'j1K7WPvWP9SoFavzm9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('AAAAAAAAAAC3nSExb6dlvbedITFvp2' ... 'Exb6dlvbedITFvp2W9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", " {'hovertemplate': ('variable=ThermalStorage(Charge' ... '}
value=%{y}'),\n", @@ -6724,7 +5618,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x2',\n", - " 'y': {'bdata': ('AAAAAAAAAABj/UqBWr9YvQAAAAAAAD' ... '2guF0xvWP9SoFavzm9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('AAAAAAAAAAC3nSExb6dlvbedITFvp2' ... 'Exb6dlvbedITFvp2W9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y2'},\n", " {'hovertemplate': ('variable=ThermalStorage(Charge' ... '}
value=%{y}'),\n", @@ -6761,7 +5655,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x3',\n", - " 'y': {'bdata': ('AAAAAAAAAABj/UqBWr9YvQAAAAAAAD' ... '9y3IcWvWP9SoFavzm9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('AAAAAAAAAAC3nSExb6dlvbedITFvp2' ... 'Exb6dlvbedITFvh2a9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y3'},\n", " {'hovertemplate': ('variable=Building(Heat)
sce' ... '}
value=%{y}'),\n", @@ -7058,44 +5952,44 @@ " 'yaxis5': {'anchor': 'x5', 'domain': [0.515, 1.0], 'matches': 'y', 'showticklabels': False},\n", " 'yaxis6': {'anchor': 'x6', 'domain': [0.515, 1.0], 'matches': 'y', 'showticklabels': False}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 39, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Balance plot with faceting by scenario\n", - "multiperiod.statistics.plot.balance('Heat')" - ] + "execution_count": 34 }, { "cell_type": "code", - "execution_count": 40, "id": "72", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:57.734537Z", - "start_time": "2025-12-12T12:06:57.451036Z" + "end_time": "2025-12-13T14:13:18.395048Z", + "start_time": "2025-12-13T14:13:18.341709Z" } }, + "source": [ + "# Filter to specific scenario/period\n", + "multiperiod.statistics.plot.balance('Heat', select={'scenario': 'high_demand', 'period': 2024})" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ "PlotResult(data= Size: 2kB\n", "Dimensions: (time: 49)\n", "Coordinates:\n", " * time (time) datetime64[ns] 392B 2024-01-01 ... 2024...\n", "Data variables:\n", - " Boiler(Heat) (time) float64 392B -0.0 -0.0 -0.0 ... -47.29 nan\n", - " ThermalStorage(Discharge) (time) float64 392B -44.48 -41.31 ... nan\n", - " ThermalStorage(Charge) (time) float64 392B 0.0 4.263e-14 ... nan\n", + " Boiler(Heat) (time) float64 392B -44.48 -41.31 ... -47.29 nan\n", + " ThermalStorage(Discharge) (time) float64 392B 1.723e-13 6.749e-13 ... nan\n", + " ThermalStorage(Charge) (time) float64 392B -1.794e-13 -7.034e-13 ... nan\n", " Building(Heat) (time) float64 392B 44.48 41.31 ... 47.29 nan, figure=Figure({\n", " 'data': [{'hovertemplate': 'variable=Boiler(Heat)
time=%{x}
value=%{y}',\n", " 'legendgroup': 'Boiler(Heat)',\n", @@ -7131,7 +6025,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAIAAAAAAAAAAgAAAAAAAAA' ... 'rxMNlDwFS20eeOpEfAAAAAAAAA+P8='),\n", + " 'y': {'bdata': ('5JuWpeU9RsDiqeLGgqdEwF3XQkqFnk' ... 'rxMNlDwFu20eeOpEfAAAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", " {'hovertemplate': 'variable=ThermalStorage(Discharge)
time=%{x}
value=%{y}',\n", @@ -7168,7 +6062,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('5ZuWpeU9RsDsqeLGgqdEwEfXQkqFnk' ... 'JRKxBKPe7+DqGhoTi9AAAAAAAA+P8='),\n", + " 'y': {'bdata': ('iAK1fqVASD1j/UqBWr9nPQo++OCDj2' ... 'jgg89hPWP9SoFav2g9AAAAAAAA+P8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", " {'hovertemplate': 'variable=ThermalStorage(Charge)
time=%{x}
value=%{y}',\n", @@ -7205,7 +6099,7 @@ " '2024-01-02T22:00:00.000000000', '2024-01-02T23:00:00.000000000',\n", " '2024-01-03T00:00:00.000000000'], dtype='datetime64[ns]'),\n", " 'xaxis': 'x',\n", - " 'y': {'bdata': ('AAAAAAAAAAAAAAAAAAAoPWP9SoFav0' ... 'SjViA+vW73dwgNDQU9AAAAAAAA+H8='),\n", + " 'y': {'bdata': ('iAK1fqVASb1j/UqBWr9ovQo++OCDT2' ... 'jgg49ivWP9SoFav2m9AAAAAAAA+H8='),\n", " 'dtype': 'f8'},\n", " 'yaxis': 'y'},\n", " {'hovertemplate': 'variable=Building(Heat)
time=%{x}
value=%{y}',\n", @@ -7254,77 +6148,74 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 40, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Filter to specific scenario/period\n", - "multiperiod.statistics.plot.balance('Heat', select={'scenario': 'high_demand', 'period': 2024})" - ] + "execution_count": 35 }, { "cell_type": "code", - "execution_count": 41, "id": "73", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:58.022014Z", - "start_time": "2025-12-12T12:06:57.778237Z" + "end_time": "2025-12-13T14:13:18.481894Z", + "start_time": "2025-12-13T14:13:18.459661Z" } }, + "source": [ + "# Sankey aggregates across all dimensions by default\n", + "multiperiod.statistics.plot.sankey.flows()" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ - "PlotResult(data= Size: 1kB\n", - "Dimensions: (link: 5)\n", + "PlotResult(data= Size: 592B\n", + "Dimensions: (link: 4)\n", "Coordinates:\n", - " * link (link) int64 40B 0 1 2 3 4\n", - " source (link) \n", + "
" ] }, - "execution_count": 41, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Sankey aggregates across all dimensions by default\n", - "multiperiod.statistics.plot.sankey.flows()" - ] + "execution_count": 36 }, { "cell_type": "markdown", @@ -7338,21 +6229,20 @@ }, { "cell_type": "code", - "execution_count": 42, "id": "75", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:58.557731Z", - "start_time": "2025-12-12T12:06:58.171959Z" + "end_time": "2025-12-13T14:13:18.553613Z", + "start_time": "2025-12-13T14:13:18.488703Z" } }, + "source": [ + "# Using a colorscale name\n", + "simple.statistics.plot.balance('Heat', colors='Set2')" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ "PlotResult(data= Size: 7kB\n", "Dimensions: (time: 169)\n", @@ -7760,35 +6650,35 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 42, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Using a colorscale name\n", - "simple.statistics.plot.balance('Heat', colors='Set2')" - ] + "execution_count": 37 }, { "cell_type": "code", - "execution_count": 43, "id": "76", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:59.181165Z", - "start_time": "2025-12-12T12:06:58.735466Z" + "end_time": "2025-12-13T14:13:18.619651Z", + "start_time": "2025-12-13T14:13:18.562286Z" } }, + "source": [ + "# Using a list of colors\n", + "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ "PlotResult(data= Size: 7kB\n", "Dimensions: (time: 169)\n", @@ -8196,35 +7086,43 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 43, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Using a list of colors\n", - "simple.statistics.plot.balance('Heat', colors=['#e41a1c', '#377eb8', '#4daf4a', '#984ea3'])" - ] + "execution_count": 38 }, { "cell_type": "code", - "execution_count": 44, "id": "77", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:06:59.730556Z", - "start_time": "2025-12-12T12:06:59.234563Z" + "end_time": "2025-12-13T14:13:18.672843Z", + "start_time": "2025-12-13T14:13:18.628572Z" } }, + "source": [ + "# Using a dictionary for specific labels\n", + "simple.statistics.plot.balance(\n", + " 'Heat',\n", + " colors={\n", + " 'Boiler(Heat)': 'orangered',\n", + " 'ThermalStorage(Charge)': 'steelblue',\n", + " 'ThermalStorage(Discharge)': 'lightblue',\n", + " 'Office(Heat)': 'forestgreen',\n", + " },\n", + ")" + ], "outputs": [ { "data": { - "text/html": [ - "
\n", - "
" - ], "text/plain": [ "PlotResult(data= Size: 7kB\n", "Dimensions: (time: 169)\n", @@ -8632,25 +7530,18 @@ " 'xaxis': {'anchor': 'y', 'domain': [0.0, 1.0], 'title': {'text': 'time'}},\n", " 'yaxis': {'anchor': 'x', 'domain': [0.0, 1.0], 'title': {'text': 'value'}}}\n", "}))" + ], + "text/html": [ + "
\n", + "
" ] }, - "execution_count": 44, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "# Using a dictionary for specific labels\n", - "simple.statistics.plot.balance(\n", - " 'Heat',\n", - " colors={\n", - " 'Boiler(Heat)': 'orangered',\n", - " 'ThermalStorage(Charge)': 'steelblue',\n", - " 'ThermalStorage(Discharge)': 'lightblue',\n", - " 'Office(Heat)': 'forestgreen',\n", - " },\n", - ")" - ] + "execution_count": 39 }, { "cell_type": "markdown", @@ -8664,14 +7555,21 @@ }, { "cell_type": "code", - "execution_count": 45, "id": "79", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:07:00.118627Z", - "start_time": "2025-12-12T12:06:59.813869Z" + "end_time": "2025-12-13T14:13:18.710193Z", + "start_time": "2025-12-13T14:13:18.681521Z" } }, + "source": [ + "# Get plot result\n", + "result = simple.statistics.plot.balance('Heat')\n", + "\n", + "print('PlotResult contains:')\n", + "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", + "print(f' figure: {type(result.figure).__name__}')" + ], "outputs": [ { "name": "stdout", @@ -8683,28 +7581,42 @@ ] } ], - "source": [ - "# Get plot result\n", - "result = simple.statistics.plot.balance('Heat')\n", - "\n", - "print('PlotResult contains:')\n", - "print(f' data: {type(result.data).__name__} with vars {list(result.data.data_vars)}')\n", - "print(f' figure: {type(result.figure).__name__}')" - ] + "execution_count": 40 }, { "cell_type": "code", - "execution_count": 46, "id": "80", "metadata": { "ExecuteTime": { - "end_time": "2025-12-12T12:07:00.477422Z", - "start_time": "2025-12-12T12:07:00.433079Z" + "end_time": "2025-12-13T14:13:18.736577Z", + "start_time": "2025-12-13T14:13:18.723621Z" } }, + "source": [ + "# Export data to pandas DataFrame\n", + "df = result.data.to_dataframe()\n", + "df.head()" + ], "outputs": [ { "data": { + "text/plain": [ + " Boiler(Heat) ThermalStorage(Discharge) \\\n", + "time \n", + "2024-01-15 00:00:00 -32.483571 -0.000000e+00 \n", + "2024-01-15 01:00:00 -29.308678 5.275242e-13 \n", + "2024-01-15 02:00:00 -33.238443 -7.086767e-13 \n", + "2024-01-15 03:00:00 -101.411593 -3.516828e-13 \n", + "2024-01-15 04:00:00 -128.829233 -5.613288e-13 \n", + "\n", + " ThermalStorage(Charge) Office(Heat) \n", + "time \n", + "2024-01-15 00:00:00 0.000000e+00 32.483571 \n", + "2024-01-15 01:00:00 -3.747575e-13 29.308678 \n", + "2024-01-15 02:00:00 8.792069e-13 33.238443 \n", + "2024-01-15 03:00:00 6.379644e+01 37.615149 \n", + "2024-01-15 04:00:00 1.000000e+02 28.829233 " + ], "text/html": [ "
\n", "