atmos-validation 2.0.0__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/CHANGELOG.md +19 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/PKG-INFO +1 -1
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/main.py +17 -9
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/dimvars_validator.py +1 -1
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/varinterval_validator.py +1 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/pyproject.toml +1 -1
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-conventional-commit-linter.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-cov-comment.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-doctest.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-lint-pr.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-test-pr.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/ci-trufflehog-scan.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/pypi-publisher.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.github/workflows/release-please.yml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.gitignore +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.pre-commit-config.yaml +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.vscode/extensions.json +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/.vscode/settings.json +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/LICENSE +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/README.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/SECURITY.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/__main__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/attrs_to_meta.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/df_to_nc.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/main.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/measurement_metadata_to_schema.json +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/parsers.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/utils.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/classification_level.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/data_usability_level.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/data_usability_levels.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/dim_constants.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/installation_type.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/installation_types.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/instrument_type.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/instrument_types.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/metadata.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/parameter_config.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/parameter_configs.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/qc_tests.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/test_classification_level.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/test_parameter_configs.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/test_unique_configs.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/date_helper.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_date.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_metadata.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_names.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parameter_info.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parameter_info_list.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parser.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_position.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/main.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/result_file.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/row_parser.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/utils.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/validate_result.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_blacklisted_globals.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_data_usability_validation.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_dimvars_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_file_attributes.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_final_reports_validation.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_height_depth_validation.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_height_longname_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_installation_types_validation.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_lat_lon_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_main.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_sig_digs.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_spatial_validators.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_time_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_util.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_varattrs_validation.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/test_varinterval_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/utils.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validation_logger.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validation_settings.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/dims_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/spatial_validators.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/dims/time_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/file_attributes.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/root_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/tests/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/__init__.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/sig_dig_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/varattrs_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/vardims_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/validators/variables/variables_validator.py +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/docs/ascii_format.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/docs/conventions.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/docs/run.md +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/example_ascii_measurement.dat +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/example_netcdf_measurement.nc +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/hindcast_example/example_hindcast_20160101_20160131_T744.nc +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/hindcast_example/example_hindcast_20160201_20160229_T696.nc +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/examples/hindcast_example/example_hindcast_20160301_20160331_T744.nc +0 -0
- {atmos_validation-2.0.0 → atmos_validation-2.0.2}/uv.lock +0 -0
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.0.2](https://github.com/equinor/atmos-validation/compare/v2.0.1...v2.0.2) (2025-09-10)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* Fix xarray future warnings ([#66](https://github.com/equinor/atmos-validation/issues/66)) ([2b8ef08](https://github.com/equinor/atmos-validation/commit/2b8ef08248e7f74cf097d179c7dd8d9522bacfe7))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Optimization
|
|
12
|
+
|
|
13
|
+
* Fix dataset load performance bottlenecks ([#67](https://github.com/equinor/atmos-validation/issues/67)) ([b899558](https://github.com/equinor/atmos-validation/commit/b899558a13dfe3ffa9138f5ef34836d20f9f8fa2))
|
|
14
|
+
|
|
15
|
+
## [2.0.1](https://github.com/equinor/atmos-validation/compare/v2.0.0...v2.0.1) (2025-09-09)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Optimization
|
|
19
|
+
|
|
20
|
+
* Adjust compatibility settings for open_mfdataset ([#64](https://github.com/equinor/atmos-validation/issues/64)) ([9e5825f](https://github.com/equinor/atmos-validation/commit/9e5825f0d666d135f32d06242514258b8288ba9e))
|
|
21
|
+
|
|
3
22
|
## [2.0.0](https://github.com/equinor/atmos-validation/compare/v1.11.0...v2.0.0) (2025-09-05)
|
|
4
23
|
|
|
5
24
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: atmos_validation
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.2
|
|
4
4
|
Summary: A python library containing automated data validation tools for the Atmos Data Service
|
|
5
5
|
Project-URL: Repository, https://github.com/equinor/atmos-validation
|
|
6
6
|
Project-URL: Documentation, https://github.com/equinor/atmos-validation/tree/main/docs
|
|
@@ -83,7 +83,7 @@ def validate(
|
|
|
83
83
|
injected_logger: pass a logger to be used for validation
|
|
84
84
|
additional_args: see docstring "Options" for available additional_args.
|
|
85
85
|
batch_size: Since open_mfdataset is slow for opening large amount of files,
|
|
86
|
-
validation can be run in batches. Defaults to
|
|
86
|
+
validation can be run in batches. Defaults to 1000 files per open_mfdataset/batch.
|
|
87
87
|
|
|
88
88
|
Returns:
|
|
89
89
|
ValidationResult containing errors and warning from running validation
|
|
@@ -148,14 +148,22 @@ def load_paths(path: str, batch_size: int) -> List[List[str]]:
|
|
|
148
148
|
|
|
149
149
|
def open_mf_dataset(paths: List[str]) -> xr.Dataset:
|
|
150
150
|
xr.set_options(use_new_combine_kwarg_defaults=True)
|
|
151
|
-
|
|
152
|
-
paths
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
151
|
+
if len(paths) > 1:
|
|
152
|
+
log.info("Running open mfdataset for %s files", len(paths))
|
|
153
|
+
ds = xr.open_mfdataset(
|
|
154
|
+
paths,
|
|
155
|
+
engine="h5netcdf",
|
|
156
|
+
concat_dim="Time",
|
|
157
|
+
compat="override",
|
|
158
|
+
data_vars="minimal",
|
|
159
|
+
combine="nested",
|
|
160
|
+
chunks="auto",
|
|
161
|
+
parallel=True,
|
|
162
|
+
)
|
|
163
|
+
else:
|
|
164
|
+
log.info("Running open dataset for single file %s", paths[0])
|
|
165
|
+
ds = xr.open_dataset(paths[0], engine="h5netcdf")
|
|
166
|
+
return ds
|
|
159
167
|
|
|
160
168
|
|
|
161
169
|
def pretty_print_result(results: List[str], description: str, width: int = 150):
|
|
@@ -17,7 +17,7 @@ def dimvars_validator(
|
|
|
17
17
|
Incidentally, this also verifies that height/depth dimensions are
|
|
18
18
|
correctly attached
|
|
19
19
|
"""
|
|
20
|
-
alldims = {str(key) for key in ds.
|
|
20
|
+
alldims = {str(key) for key in ds.sizes.keys()}
|
|
21
21
|
result = []
|
|
22
22
|
for var in ds.keys():
|
|
23
23
|
var = str(var)
|
|
@@ -136,6 +136,7 @@ def _check_randomly_selected_intervals_min_max(
|
|
|
136
136
|
|
|
137
137
|
slice_tuple = _get_slice_tuple(dims, actual, rand)
|
|
138
138
|
vals = actual[slice_tuple]
|
|
139
|
+
vals.load()
|
|
139
140
|
result += undermin_validator(actual, expected, slice_tuple, vals)
|
|
140
141
|
result += overmax_validator(actual, expected, slice_tuple, vals)
|
|
141
142
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/__init__.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/attrs_to_meta.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/convert_ascii/df_to_nc.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/classification_level.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/data_usability_level.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/data_usability_levels.py
RENAMED
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/installation_type.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/installation_types.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/instrument_type.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/instrument_types.py
RENAMED
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/parameter_config.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/parameter_configs.py
RENAMED
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/schemas/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/__init__.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/date_helper.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_date.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_metadata.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_parser.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/header_position.py
RENAMED
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/result_file.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/row_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_ascii/validate_result.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/__init__.py
RENAMED
|
File without changes
|
{atmos_validation-2.0.0 → atmos_validation-2.0.2}/atmos_validation/validate_netcdf/tests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|