slide2vec 5.9.0__tar.gz → 5.9.1__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.
- {slide2vec-5.9.0 → slide2vec-5.9.1}/PKG-INFO +1 -1
- {slide2vec-5.9.0 → slide2vec-5.9.1}/pyproject.toml +2 -2
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/__init__.py +1 -1
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/prism.py +2 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/PKG-INFO +1 -1
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/SOURCES.txt +1 -0
- slide2vec-5.9.1/tests/test_prism.py +52 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/LICENSE +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/README.md +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/setup.cfg +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/__main__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/api.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/artifacts.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/cli.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/configs/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/configs/default.yaml +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/configs/resources.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/dataset.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/tile_reader.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/data/tile_store.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/dense_image_worker.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/dense_worker.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/direct_embed_worker.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/image_worker.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/pipeline_worker.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/distributed/worker_entry.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/base.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/conch.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/dinov2.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/genbio.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/gigapath.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/gpfm.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/hibou.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/hoptimus.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/isight.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/lunit.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/midnight.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/blocks.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/case.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/loading.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/slide.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/moozy/types.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/mstar.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/musk.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/phikon.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/prism2.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/prost40m.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/rudolfv2.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/titan.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/uni.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/virchow.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/models/waiv.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/registry.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/encoders/validation.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/inference.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/progress.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/artifacts_collect.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/batching.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/cpu_budget.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_encode.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_encoder_input.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_reading.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_recipe.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_shard.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_image_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_regions.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_shard.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_sliding.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/dense_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/distributed.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/distributed_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/effective_encoder_input.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/embedding.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/embedding_persist.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/embedding_pipeline.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/encoder_input_contract.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/hierarchical.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/image_shard.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/image_specs.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/image_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/manifest.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/model_settings.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/patient_pipeline.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/persist_callbacks.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/persistence.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/pooled_encoder_input.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/preprocessing.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/process_list.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/progress_bridge.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/registry.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/serialization.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/sharding.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/slide_encode.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/tiling.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/tiling_pipeline.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/types.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/runtime/worker_io.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/__init__.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/config.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/coordinates.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/log_utils.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/tiling_io.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec/utils/utils.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/dependency_links.txt +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/entry_points.txt +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/not-zip-safe +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/requires.txt +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/slide2vec.egg-info/top_level.txt +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_architecture_runtime_split.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_attention_extraction.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_encode_kit.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_encoder_input.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_extraction.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_reading.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_resume.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_shard.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_image_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_regions.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_shard.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_sliding.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_source_spacing.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dense_worker.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_dinov2_natimage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_capabilities.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_input_contract.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_plugins.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_provider_failures.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_encoder_registry.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_gpfm_genbio_heavy.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_hs2p_package_cutover.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_image_shard.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_image_stage.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_isight.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_load_model_hf_auth.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_mascaret.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_on_slide_persisted.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_output_consistency.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_patch_size_metadata.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_patient_manifest.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_phaet.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_pooled_encoder_input.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_pooled_geometry.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_prism2.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_progress.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_regression_core.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_regression_inference.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_regression_models.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_rudolfv2.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_runtime_batching.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_sharding.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_slide_coordinate_preparation.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_soma_migration.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_tile_store.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_tiling_pipeline.py +0 -0
- {slide2vec-5.9.0 → slide2vec-5.9.1}/tests/test_titan.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "slide2vec"
|
|
7
|
-
version = "5.9.
|
|
7
|
+
version = "5.9.1"
|
|
8
8
|
description = "Embedding of whole slide images with Foundation Models"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -180,7 +180,7 @@ no_implicit_reexport = true
|
|
|
180
180
|
max-line-length = 160
|
|
181
181
|
|
|
182
182
|
[tool.bumpver]
|
|
183
|
-
current_version = "5.9.
|
|
183
|
+
current_version = "5.9.1"
|
|
184
184
|
version_pattern = "MAJOR.MINOR.PATCH"
|
|
185
185
|
commit = false
|
|
186
186
|
tag = false
|
|
@@ -46,5 +46,7 @@ class PrismSlideEncoder(SlideEncoder):
|
|
|
46
46
|
) -> torch.Tensor:
|
|
47
47
|
if tile_features.ndim == 2:
|
|
48
48
|
tile_features = tile_features.unsqueeze(0)
|
|
49
|
+
# Stored feature precision can differ from PRISM's weights; CPU has no autocast.
|
|
50
|
+
tile_features = tile_features.to(dtype=self._model.dtype)
|
|
49
51
|
reprs = self._model.slide_representations(tile_features)
|
|
50
52
|
return reprs["image_embedding"].squeeze(0)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""PRISM accepts persisted features independently of their storage dtype."""
|
|
2
|
+
|
|
3
|
+
from types import SimpleNamespace
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
torch = pytest.importorskip("torch")
|
|
8
|
+
pytest.importorskip("transformers")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class _TinyPrism(torch.nn.Module):
|
|
12
|
+
def __init__(self, dtype):
|
|
13
|
+
super().__init__()
|
|
14
|
+
self.weight = torch.nn.Parameter(
|
|
15
|
+
torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=dtype)
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def dtype(self):
|
|
20
|
+
return self.weight.dtype
|
|
21
|
+
|
|
22
|
+
def slide_representations(self, tile_features):
|
|
23
|
+
projected = torch.nn.functional.linear(tile_features, self.weight)
|
|
24
|
+
return {"image_embedding": projected.sum(dim=1)}
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.mark.parametrize(
|
|
28
|
+
("stored_dtype", "model_dtype"),
|
|
29
|
+
[
|
|
30
|
+
(torch.float16, torch.float32),
|
|
31
|
+
(torch.bfloat16, torch.float32),
|
|
32
|
+
(torch.float32, torch.float32),
|
|
33
|
+
(torch.float32, torch.float16),
|
|
34
|
+
],
|
|
35
|
+
)
|
|
36
|
+
def test_prism_aggregates_features_in_model_dtype(monkeypatch, stored_dtype, model_dtype):
|
|
37
|
+
import slide2vec.encoders.models.prism as prism
|
|
38
|
+
|
|
39
|
+
monkeypatch.setattr(
|
|
40
|
+
prism,
|
|
41
|
+
"AutoModel",
|
|
42
|
+
SimpleNamespace(from_pretrained=lambda *args, **kwargs: _TinyPrism(model_dtype)),
|
|
43
|
+
)
|
|
44
|
+
encoder = prism.PrismSlideEncoder().to("cpu")
|
|
45
|
+
features = torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=stored_dtype)
|
|
46
|
+
|
|
47
|
+
embedding = encoder.encode_slide(features)
|
|
48
|
+
|
|
49
|
+
torch.testing.assert_close(
|
|
50
|
+
embedding, torch.tensor([16.0, 36.0], dtype=model_dtype), rtol=0, atol=0,
|
|
51
|
+
)
|
|
52
|
+
assert features.dtype == stored_dtype
|
|
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
|
|
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
|
|
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
|
|
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
|