fixos 2.2.25__tar.gz → 2.2.26__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.
Files changed (142) hide show
  1. {fixos-2.2.25 → fixos-2.2.26}/CHANGELOG.md +11 -0
  2. {fixos-2.2.25 → fixos-2.2.26}/PKG-INFO +5 -5
  3. {fixos-2.2.25 → fixos-2.2.26}/README.md +4 -4
  4. {fixos-2.2.25 → fixos-2.2.26}/fixos/__init__.py +1 -1
  5. {fixos-2.2.25 → fixos-2.2.26}/fixos.egg-info/PKG-INFO +5 -5
  6. {fixos-2.2.25 → fixos-2.2.26}/pyproject.toml +1 -1
  7. {fixos-2.2.25 → fixos-2.2.26}/setup.py +1 -1
  8. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_anonymization_layers.py +1 -1
  9. {fixos-2.2.25 → fixos-2.2.26}/.env.example +0 -0
  10. {fixos-2.2.25 → fixos-2.2.26}/LICENSE +0 -0
  11. {fixos-2.2.25 → fixos-2.2.26}/MANIFEST.in +0 -0
  12. {fixos-2.2.25 → fixos-2.2.26}/docker/README.md +0 -0
  13. {fixos-2.2.25 → fixos-2.2.26}/docker/TEST_RESULTS.md +0 -0
  14. {fixos-2.2.25 → fixos-2.2.26}/docker/TEST_RESULTS_V2.md +0 -0
  15. {fixos-2.2.25 → fixos-2.2.26}/docker/alpine/Dockerfile +0 -0
  16. {fixos-2.2.25 → fixos-2.2.26}/docker/arch/Dockerfile +0 -0
  17. {fixos-2.2.25 → fixos-2.2.26}/docker/base/Dockerfile +0 -0
  18. {fixos-2.2.25 → fixos-2.2.26}/docker/broken-audio/Dockerfile +0 -0
  19. {fixos-2.2.25 → fixos-2.2.26}/docker/broken-full/Dockerfile +0 -0
  20. {fixos-2.2.25 → fixos-2.2.26}/docker/broken-network/Dockerfile +0 -0
  21. {fixos-2.2.25 → fixos-2.2.26}/docker/broken-thumbnails/Dockerfile +0 -0
  22. {fixos-2.2.25 → fixos-2.2.26}/docker/debian/Dockerfile +0 -0
  23. {fixos-2.2.25 → fixos-2.2.26}/docker/docker-compose.multi-system.yml +0 -0
  24. {fixos-2.2.25 → fixos-2.2.26}/docker/docker-compose.yml +0 -0
  25. {fixos-2.2.25 → fixos-2.2.26}/docker/fedora/Dockerfile +0 -0
  26. {fixos-2.2.25 → fixos-2.2.26}/docker/test-multi-system.sh +0 -0
  27. {fixos-2.2.25 → fixos-2.2.26}/docker/ubuntu/Dockerfile +0 -0
  28. {fixos-2.2.25 → fixos-2.2.26}/docs/examples/advanced_usage.py +0 -0
  29. {fixos-2.2.25 → fixos-2.2.26}/docs/examples/quickstart.py +0 -0
  30. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/__init__.py +0 -0
  31. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/autonomous.py +0 -0
  32. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/autonomous_session.py +0 -0
  33. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/hitl.py +0 -0
  34. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/hitl_session.py +0 -0
  35. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/session_core.py +0 -0
  36. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/session_handlers.py +0 -0
  37. {fixos-2.2.25 → fixos-2.2.26}/fixos/agent/session_io.py +0 -0
  38. {fixos-2.2.25 → fixos-2.2.26}/fixos/anonymizer.py +0 -0
  39. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/__init__.py +0 -0
  40. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/ask_cmd.py +0 -0
  41. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/cleanup_cmd.py +0 -0
  42. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/config_cmd.py +0 -0
  43. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/features_cmd.py +0 -0
  44. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/fix_cmd.py +0 -0
  45. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/history_cmd.py +0 -0
  46. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/main.py +0 -0
  47. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/orchestrate_cmd.py +0 -0
  48. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/profile_cmd.py +0 -0
  49. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/provider_cmd.py +0 -0
  50. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/quickfix_cmd.py +0 -0
  51. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/report_cmd.py +0 -0
  52. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/rollback_cmd.py +0 -0
  53. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/scan_cmd.py +0 -0
  54. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/shared.py +0 -0
  55. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/token_cmd.py +0 -0
  56. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli/watch_cmd.py +0 -0
  57. {fixos-2.2.25 → fixos-2.2.26}/fixos/cli.py +0 -0
  58. {fixos-2.2.25 → fixos-2.2.26}/fixos/config.py +0 -0
  59. {fixos-2.2.25 → fixos-2.2.26}/fixos/config_interactive.py +0 -0
  60. {fixos-2.2.25 → fixos-2.2.26}/fixos/constants.py +0 -0
  61. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/__init__.py +0 -0
  62. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/__init__.py +0 -0
  63. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/_shared.py +0 -0
  64. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/audio.py +0 -0
  65. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/hardware.py +0 -0
  66. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/resources.py +0 -0
  67. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/security.py +0 -0
  68. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/system_core.py +0 -0
  69. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/checks/thumbnails.py +0 -0
  70. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/dev_project_analyzer.py +0 -0
  71. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/disk_analyzer.py +0 -0
  72. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/flatpak_analyzer.py +0 -0
  73. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/service_cleanup.py +0 -0
  74. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/service_details.py +0 -0
  75. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/service_scanner.py +0 -0
  76. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/storage_analyzer.py +0 -0
  77. {fixos-2.2.25 → fixos-2.2.26}/fixos/diagnostics/system_checks.py +0 -0
  78. {fixos-2.2.25 → fixos-2.2.26}/fixos/features/__init__.py +0 -0
  79. {fixos-2.2.25 → fixos-2.2.26}/fixos/features/auditor.py +0 -0
  80. {fixos-2.2.25 → fixos-2.2.26}/fixos/features/catalog.py +0 -0
  81. {fixos-2.2.25 → fixos-2.2.26}/fixos/features/installer.py +0 -0
  82. {fixos-2.2.25 → fixos-2.2.26}/fixos/features/profiles.py +0 -0
  83. {fixos-2.2.25 → fixos-2.2.26}/fixos/features/renderer.py +0 -0
  84. {fixos-2.2.25 → fixos-2.2.26}/fixos/fixes/__init__.py +0 -0
  85. {fixos-2.2.25 → fixos-2.2.26}/fixos/interactive/__init__.py +0 -0
  86. {fixos-2.2.25 → fixos-2.2.26}/fixos/interactive/cleanup_planner.py +0 -0
  87. {fixos-2.2.25 → fixos-2.2.26}/fixos/llm_shell.py +0 -0
  88. {fixos-2.2.25 → fixos-2.2.26}/fixos/orchestrator/__init__.py +0 -0
  89. {fixos-2.2.25 → fixos-2.2.26}/fixos/orchestrator/executor.py +0 -0
  90. {fixos-2.2.25 → fixos-2.2.26}/fixos/orchestrator/graph.py +0 -0
  91. {fixos-2.2.25 → fixos-2.2.26}/fixos/orchestrator/orchestrator.py +0 -0
  92. {fixos-2.2.25 → fixos-2.2.26}/fixos/orchestrator/rollback.py +0 -0
  93. {fixos-2.2.25 → fixos-2.2.26}/fixos/platform_utils.py +0 -0
  94. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/__init__.py +0 -0
  95. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/base.py +0 -0
  96. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/__init__.py +0 -0
  97. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/audio.py +0 -0
  98. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/disk.py +0 -0
  99. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/hardware.py +0 -0
  100. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/resources.py +0 -0
  101. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/security.py +0 -0
  102. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/builtin/thumbnails.py +0 -0
  103. {fixos-2.2.25 → fixos-2.2.26}/fixos/plugins/registry.py +0 -0
  104. {fixos-2.2.25 → fixos-2.2.26}/fixos/profiles/__init__.py +0 -0
  105. {fixos-2.2.25 → fixos-2.2.26}/fixos/providers/__init__.py +0 -0
  106. {fixos-2.2.25 → fixos-2.2.26}/fixos/providers/llm.py +0 -0
  107. {fixos-2.2.25 → fixos-2.2.26}/fixos/providers/llm_analyzer.py +0 -0
  108. {fixos-2.2.25 → fixos-2.2.26}/fixos/providers/schemas.py +0 -0
  109. {fixos-2.2.25 → fixos-2.2.26}/fixos/system_checks.py +0 -0
  110. {fixos-2.2.25 → fixos-2.2.26}/fixos/utils/__init__.py +0 -0
  111. {fixos-2.2.25 → fixos-2.2.26}/fixos/utils/anonymizer.py +0 -0
  112. {fixos-2.2.25 → fixos-2.2.26}/fixos/utils/terminal.py +0 -0
  113. {fixos-2.2.25 → fixos-2.2.26}/fixos/utils/timeout.py +0 -0
  114. {fixos-2.2.25 → fixos-2.2.26}/fixos/utils/web_search.py +0 -0
  115. {fixos-2.2.25 → fixos-2.2.26}/fixos/watch.py +0 -0
  116. {fixos-2.2.25 → fixos-2.2.26}/fixos.egg-info/SOURCES.txt +0 -0
  117. {fixos-2.2.25 → fixos-2.2.26}/fixos.egg-info/dependency_links.txt +0 -0
  118. {fixos-2.2.25 → fixos-2.2.26}/fixos.egg-info/entry_points.txt +0 -0
  119. {fixos-2.2.25 → fixos-2.2.26}/fixos.egg-info/requires.txt +0 -0
  120. {fixos-2.2.25 → fixos-2.2.26}/fixos.egg-info/top_level.txt +0 -0
  121. {fixos-2.2.25 → fixos-2.2.26}/pytest.ini +0 -0
  122. {fixos-2.2.25 → fixos-2.2.26}/requirements-dev.txt +0 -0
  123. {fixos-2.2.25 → fixos-2.2.26}/requirements.txt +0 -0
  124. {fixos-2.2.25 → fixos-2.2.26}/scripts/pyqual-calibrate.py +0 -0
  125. {fixos-2.2.25 → fixos-2.2.26}/setup.cfg +0 -0
  126. {fixos-2.2.25 → fixos-2.2.26}/tests/__init__.py +0 -0
  127. {fixos-2.2.25 → fixos-2.2.26}/tests/conftest.py +0 -0
  128. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/__init__.py +0 -0
  129. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_audio_broken.py +0 -0
  130. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_cli.py +0 -0
  131. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_executor.py +0 -0
  132. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_multi_system.py +0 -0
  133. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_network_broken.py +0 -0
  134. {fixos-2.2.25 → fixos-2.2.26}/tests/e2e/test_thumbnails_broken.py +0 -0
  135. {fixos-2.2.25 → fixos-2.2.26}/tests/test_fixos.py +0 -0
  136. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/__init__.py +0 -0
  137. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/test_anonymizer.py +0 -0
  138. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/test_core.py +0 -0
  139. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/test_executor.py +0 -0
  140. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/test_orchestrator.py +0 -0
  141. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/test_service_cleanup.py +0 -0
  142. {fixos-2.2.25 → fixos-2.2.26}/tests/unit/test_service_scanner.py +0 -0
@@ -150,6 +150,17 @@ fix(goal): code analysis engine
150
150
  - **refactor(cli):** Usunięto zduplikowany kod ujednolicając funkcje analizy dysku do wspólnego helpera `_run_disk_analysis`.
151
151
  - **refactor(ui):** Usunięto ikony Unicode z CLI i sformatowano wyjście `stderr` oraz standardowego logowania na czysty kod Markdown dla poprawy czytelności w oknach terminalowych.
152
152
 
153
+ ## [2.2.26] - 2026-05-04
154
+
155
+ ### Docs
156
+ - Update README.md
157
+
158
+ ### Test
159
+ - Update tests/e2e/test_anonymization_layers.py
160
+
161
+ ### Other
162
+ - Update uv.lock
163
+
153
164
  ## [2.2.25] - 2026-05-04
154
165
 
155
166
  ### Docs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fixos
3
- Version: 2.2.25
3
+ Version: 2.2.26
4
4
  Summary: AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues
5
5
  Home-page: https://github.com/wronai/fixos
6
6
  Author: fixos contributors
@@ -63,11 +63,11 @@ AI-powered OS Diagnostics
63
63
 
64
64
  ## AI Cost Tracking
65
65
 
66
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.25-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
67
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-25.6h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
66
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.26-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
67
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-26.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
68
68
 
69
- - 🤖 **LLM usage:** $7.5000 (124 commits)
70
- - 👤 **Human dev:** ~$2561 (25.6h @ $100/h, 30min dedup)
69
+ - 🤖 **LLM usage:** $7.5000 (125 commits)
70
+ - 👤 **Human dev:** ~$2603 (26.0h @ $100/h, 30min dedup)
71
71
 
72
72
  Generated on 2026-05-04 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
73
73
 
@@ -19,11 +19,11 @@ AI-powered OS Diagnostics
19
19
 
20
20
  ## AI Cost Tracking
21
21
 
22
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.25-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
23
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-25.6h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
22
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.26-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
23
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-26.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
24
24
 
25
- - 🤖 **LLM usage:** $7.5000 (124 commits)
26
- - 👤 **Human dev:** ~$2561 (25.6h @ $100/h, 30min dedup)
25
+ - 🤖 **LLM usage:** $7.5000 (125 commits)
26
+ - 👤 **Human dev:** ~$2603 (26.0h @ $100/h, 30min dedup)
27
27
 
28
28
  Generated on 2026-05-04 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
29
29
 
@@ -1,2 +1,2 @@
1
1
  """fixos – AI-powered Linux/Windows diagnostics and repair."""
2
- __version__ = "2.2.25"
2
+ __version__ = "2.2.26"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fixos
3
- Version: 2.2.25
3
+ Version: 2.2.26
4
4
  Summary: AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues
5
5
  Home-page: https://github.com/wronai/fixos
6
6
  Author: fixos contributors
@@ -63,11 +63,11 @@ AI-powered OS Diagnostics
63
63
 
64
64
  ## AI Cost Tracking
65
65
 
66
- ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.25-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
67
- ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-25.6h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
66
+ ![PyPI](https://img.shields.io/badge/pypi-costs-blue) ![Version](https://img.shields.io/badge/version-2.2.26-blue) ![Python](https://img.shields.io/badge/python-3.9+-blue) ![License](https://img.shields.io/badge/license-Apache--2.0-green)
67
+ ![AI Cost](https://img.shields.io/badge/AI%20Cost-$7.50-orange) ![Human Time](https://img.shields.io/badge/Human%20Time-26.0h-blue) ![Model](https://img.shields.io/badge/Model-openrouter%2Fqwen%2Fqwen3--coder--next-lightgrey)
68
68
 
69
- - 🤖 **LLM usage:** $7.5000 (124 commits)
70
- - 👤 **Human dev:** ~$2561 (25.6h @ $100/h, 30min dedup)
69
+ - 🤖 **LLM usage:** $7.5000 (125 commits)
70
+ - 👤 **Human dev:** ~$2603 (26.0h @ $100/h, 30min dedup)
71
71
 
72
72
  Generated on 2026-05-04 using [openrouter/qwen/qwen3-coder-next](https://openrouter.ai/qwen/qwen3-coder-next)
73
73
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "fixos"
7
- version = "2.2.25"
7
+ version = "2.2.26"
8
8
  description = "AI-powered Linux/Windows diagnostics and repair – audio, hardware, system issues"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -5,7 +5,7 @@ long_description = (Path(__file__).parent / "README.md").read_text(encoding="utf
5
5
 
6
6
  setup(
7
7
  name="fixos",
8
- version="2.2.24",
8
+ version="2.2.25",
9
9
  description="AI-powered Linux/Windows diagnostics and repair with anonymization",
10
10
  long_description=long_description,
11
11
  long_description_content_type="text/markdown",
@@ -686,7 +686,7 @@ class TestDeanonymizationLayer:
686
686
  assert "[HOSTNAME]" not in executed_cmd
687
687
  assert "[USER]" not in executed_cmd
688
688
 
689
- @patch("fixos.platform_utils.run_command")
689
+ @patch("fixos.agent.session_handlers.run_command")
690
690
  def test_run_single_command_deanonymizes(self, mock_run):
691
691
  from fixos.agent.session_handlers import run_single_command
692
692
 
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