dulus 0.2.14__tar.gz → 0.2.15__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 (157) hide show
  1. {dulus-0.2.14/dulus.egg-info → dulus-0.2.15}/PKG-INFO +3 -3
  2. {dulus-0.2.14 → dulus-0.2.15}/README.md +2 -2
  3. dulus-0.2.15/docs/poetry-banner.png +0 -0
  4. {dulus-0.2.14 → dulus-0.2.15/dulus.egg-info}/PKG-INFO +3 -3
  5. {dulus-0.2.14 → dulus-0.2.15}/dulus.egg-info/SOURCES.txt +1 -0
  6. {dulus-0.2.14 → dulus-0.2.15}/pyproject.toml +1 -1
  7. {dulus-0.2.14 → dulus-0.2.15}/LICENSE +0 -0
  8. {dulus-0.2.14 → dulus-0.2.15}/MANIFEST.in +0 -0
  9. {dulus-0.2.14 → dulus-0.2.15}/agent.py +0 -0
  10. {dulus-0.2.14 → dulus-0.2.15}/backend/__init__.py +0 -0
  11. {dulus-0.2.14 → dulus-0.2.15}/backend/compressor.py +0 -0
  12. {dulus-0.2.14 → dulus-0.2.15}/backend/context.py +0 -0
  13. {dulus-0.2.14 → dulus-0.2.15}/backend/githook.py +0 -0
  14. {dulus-0.2.14 → dulus-0.2.15}/backend/marketplace.py +0 -0
  15. {dulus-0.2.14 → dulus-0.2.15}/backend/mempalace_bridge.py +0 -0
  16. {dulus-0.2.14 → dulus-0.2.15}/backend/personas.py +0 -0
  17. {dulus-0.2.14 → dulus-0.2.15}/backend/plugins.py +0 -0
  18. {dulus-0.2.14 → dulus-0.2.15}/backend/server.py +0 -0
  19. {dulus-0.2.14 → dulus-0.2.15}/backend/tasks.py +0 -0
  20. {dulus-0.2.14 → dulus-0.2.15}/batch_api.py +0 -0
  21. {dulus-0.2.14 → dulus-0.2.15}/checkpoint/__init__.py +0 -0
  22. {dulus-0.2.14 → dulus-0.2.15}/checkpoint/hooks.py +0 -0
  23. {dulus-0.2.14 → dulus-0.2.15}/checkpoint/store.py +0 -0
  24. {dulus-0.2.14 → dulus-0.2.15}/checkpoint/types.py +0 -0
  25. {dulus-0.2.14 → dulus-0.2.15}/claude_code_watcher.py +0 -0
  26. {dulus-0.2.14 → dulus-0.2.15}/clipboard_utils.py +0 -0
  27. {dulus-0.2.14 → dulus-0.2.15}/cloudsave.py +0 -0
  28. {dulus-0.2.14 → dulus-0.2.15}/common.py +0 -0
  29. {dulus-0.2.14 → dulus-0.2.15}/compaction.py +0 -0
  30. {dulus-0.2.14 → dulus-0.2.15}/config.py +0 -0
  31. {dulus-0.2.14 → dulus-0.2.15}/context.py +0 -0
  32. {dulus-0.2.14 → dulus-0.2.15}/data/__init__.py +0 -0
  33. {dulus-0.2.14 → dulus-0.2.15}/data/active_persona.json +0 -0
  34. {dulus-0.2.14 → dulus-0.2.15}/data/context.json +0 -0
  35. {dulus-0.2.14 → dulus-0.2.15}/data/marketplace.json +0 -0
  36. {dulus-0.2.14 → dulus-0.2.15}/data/personas.json +0 -0
  37. {dulus-0.2.14 → dulus-0.2.15}/data/tasks.json +0 -0
  38. {dulus-0.2.14 → dulus-0.2.15}/docs/README.md +0 -0
  39. {dulus-0.2.14 → dulus-0.2.15}/docs/__init__.py +0 -0
  40. {dulus-0.2.14 → dulus-0.2.15}/docs/api.html +0 -0
  41. {dulus-0.2.14 → dulus-0.2.15}/docs/architecture.md +0 -0
  42. {dulus-0.2.14 → dulus-0.2.15}/docs/azure-speech-template.json +0 -0
  43. {dulus-0.2.14 → dulus-0.2.15}/docs/dashboard/index.html +0 -0
  44. {dulus-0.2.14 → dulus-0.2.15}/docs/divider.svg +0 -0
  45. {dulus-0.2.14 → dulus-0.2.15}/docs/generate.py +0 -0
  46. {dulus-0.2.14 → dulus-0.2.15}/docs/hero.svg +0 -0
  47. {dulus-0.2.14 → dulus-0.2.15}/docs/index.html +0 -0
  48. {dulus-0.2.14 → dulus-0.2.15}/docs/news.md +0 -0
  49. {dulus-0.2.14 → dulus-0.2.15}/docs/nvidia-models.svg +0 -0
  50. {dulus-0.2.14 → dulus-0.2.15}/docs/particle-playground.html +0 -0
  51. {dulus-0.2.14 → dulus-0.2.15}/docs/personas/index.html +0 -0
  52. {dulus-0.2.14 → dulus-0.2.15}/docs/preview.html +0 -0
  53. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-agents.svg +0 -0
  54. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-brainstorm.svg +0 -0
  55. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-bridges.svg +0 -0
  56. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-features.svg +0 -0
  57. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-freetier.svg +0 -0
  58. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-memory.svg +0 -0
  59. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-models.svg +0 -0
  60. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-perms.svg +0 -0
  61. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-plugins.svg +0 -0
  62. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-quickstart.svg +0 -0
  63. {dulus-0.2.14 → dulus-0.2.15}/docs/sec-ssj.svg +0 -0
  64. {dulus-0.2.14 → dulus-0.2.15}/docs/spinners.svg +0 -0
  65. {dulus-0.2.14 → dulus-0.2.15}/docs/split-pane.svg +0 -0
  66. {dulus-0.2.14 → dulus-0.2.15}/docs/terminal-boot.svg +0 -0
  67. {dulus-0.2.14 → dulus-0.2.15}/docs/uploads/particle-playground.html +0 -0
  68. {dulus-0.2.14 → dulus-0.2.15}/dulus.egg-info/dependency_links.txt +0 -0
  69. {dulus-0.2.14 → dulus-0.2.15}/dulus.egg-info/entry_points.txt +0 -0
  70. {dulus-0.2.14 → dulus-0.2.15}/dulus.egg-info/requires.txt +0 -0
  71. {dulus-0.2.14 → dulus-0.2.15}/dulus.egg-info/top_level.txt +0 -0
  72. {dulus-0.2.14 → dulus-0.2.15}/dulus.py +0 -0
  73. {dulus-0.2.14 → dulus-0.2.15}/dulus_gui.py +0 -0
  74. {dulus-0.2.14 → dulus-0.2.15}/dulus_mcp/__init__.py +0 -0
  75. {dulus-0.2.14 → dulus-0.2.15}/dulus_mcp/client.py +0 -0
  76. {dulus-0.2.14 → dulus-0.2.15}/dulus_mcp/config.py +0 -0
  77. {dulus-0.2.14 → dulus-0.2.15}/dulus_mcp/tools.py +0 -0
  78. {dulus-0.2.14 → dulus-0.2.15}/dulus_mcp/types.py +0 -0
  79. {dulus-0.2.14 → dulus-0.2.15}/gui/__init__.py +0 -0
  80. {dulus-0.2.14 → dulus-0.2.15}/gui/agent_bridge.py +0 -0
  81. {dulus-0.2.14 → dulus-0.2.15}/gui/chat_widget.py +0 -0
  82. {dulus-0.2.14 → dulus-0.2.15}/gui/main_window.py +0 -0
  83. {dulus-0.2.14 → dulus-0.2.15}/gui/personas.py +0 -0
  84. {dulus-0.2.14 → dulus-0.2.15}/gui/session_utils.py +0 -0
  85. {dulus-0.2.14 → dulus-0.2.15}/gui/settings_dialog.py +0 -0
  86. {dulus-0.2.14 → dulus-0.2.15}/gui/sidebar.py +0 -0
  87. {dulus-0.2.14 → dulus-0.2.15}/gui/tasks_view.py +0 -0
  88. {dulus-0.2.14 → dulus-0.2.15}/gui/themes.py +0 -0
  89. {dulus-0.2.14 → dulus-0.2.15}/gui/tool_panel.py +0 -0
  90. {dulus-0.2.14 → dulus-0.2.15}/input.py +0 -0
  91. {dulus-0.2.14 → dulus-0.2.15}/license_manager.py +0 -0
  92. {dulus-0.2.14 → dulus-0.2.15}/memory/__init__.py +0 -0
  93. {dulus-0.2.14 → dulus-0.2.15}/memory/audit.py +0 -0
  94. {dulus-0.2.14 → dulus-0.2.15}/memory/consolidator.py +0 -0
  95. {dulus-0.2.14 → dulus-0.2.15}/memory/context.py +0 -0
  96. {dulus-0.2.14 → dulus-0.2.15}/memory/offload.py +0 -0
  97. {dulus-0.2.14 → dulus-0.2.15}/memory/palace.py +0 -0
  98. {dulus-0.2.14 → dulus-0.2.15}/memory/scan.py +0 -0
  99. {dulus-0.2.14 → dulus-0.2.15}/memory/sessions.py +0 -0
  100. {dulus-0.2.14 → dulus-0.2.15}/memory/store.py +0 -0
  101. {dulus-0.2.14 → dulus-0.2.15}/memory/tools.py +0 -0
  102. {dulus-0.2.14 → dulus-0.2.15}/memory/types.py +0 -0
  103. {dulus-0.2.14 → dulus-0.2.15}/memory/vector_search.py +0 -0
  104. {dulus-0.2.14 → dulus-0.2.15}/multi_agent/__init__.py +0 -0
  105. {dulus-0.2.14 → dulus-0.2.15}/multi_agent/subagent.py +0 -0
  106. {dulus-0.2.14 → dulus-0.2.15}/multi_agent/tools.py +0 -0
  107. {dulus-0.2.14 → dulus-0.2.15}/offload_helper.py +0 -0
  108. {dulus-0.2.14 → dulus-0.2.15}/plugin/__init__.py +0 -0
  109. {dulus-0.2.14 → dulus-0.2.15}/plugin/autoadapter.py +0 -0
  110. {dulus-0.2.14 → dulus-0.2.15}/plugin/loader.py +0 -0
  111. {dulus-0.2.14 → dulus-0.2.15}/plugin/recommend.py +0 -0
  112. {dulus-0.2.14 → dulus-0.2.15}/plugin/store.py +0 -0
  113. {dulus-0.2.14 → dulus-0.2.15}/plugin/types.py +0 -0
  114. {dulus-0.2.14 → dulus-0.2.15}/providers.py +0 -0
  115. {dulus-0.2.14 → dulus-0.2.15}/setup.cfg +0 -0
  116. {dulus-0.2.14 → dulus-0.2.15}/skill/__init__.py +0 -0
  117. {dulus-0.2.14 → dulus-0.2.15}/skill/builtin.py +0 -0
  118. {dulus-0.2.14 → dulus-0.2.15}/skill/clawhub.py +0 -0
  119. {dulus-0.2.14 → dulus-0.2.15}/skill/executor.py +0 -0
  120. {dulus-0.2.14 → dulus-0.2.15}/skill/loader.py +0 -0
  121. {dulus-0.2.14 → dulus-0.2.15}/skill/tools.py +0 -0
  122. {dulus-0.2.14 → dulus-0.2.15}/skills.py +0 -0
  123. {dulus-0.2.14 → dulus-0.2.15}/spinner.py +0 -0
  124. {dulus-0.2.14 → dulus-0.2.15}/string_utils.py +0 -0
  125. {dulus-0.2.14 → dulus-0.2.15}/subagent.py +0 -0
  126. {dulus-0.2.14 → dulus-0.2.15}/task/__init__.py +0 -0
  127. {dulus-0.2.14 → dulus-0.2.15}/task/store.py +0 -0
  128. {dulus-0.2.14 → dulus-0.2.15}/task/tools.py +0 -0
  129. {dulus-0.2.14 → dulus-0.2.15}/task/types.py +0 -0
  130. {dulus-0.2.14 → dulus-0.2.15}/tests/test_checkpoint.py +0 -0
  131. {dulus-0.2.14 → dulus-0.2.15}/tests/test_compaction.py +0 -0
  132. {dulus-0.2.14 → dulus-0.2.15}/tests/test_diff_view.py +0 -0
  133. {dulus-0.2.14 → dulus-0.2.15}/tests/test_injection_fix.py +0 -0
  134. {dulus-0.2.14 → dulus-0.2.15}/tests/test_license.py +0 -0
  135. {dulus-0.2.14 → dulus-0.2.15}/tests/test_mcp.py +0 -0
  136. {dulus-0.2.14 → dulus-0.2.15}/tests/test_memory.py +0 -0
  137. {dulus-0.2.14 → dulus-0.2.15}/tests/test_plugin.py +0 -0
  138. {dulus-0.2.14 → dulus-0.2.15}/tests/test_skills.py +0 -0
  139. {dulus-0.2.14 → dulus-0.2.15}/tests/test_subagent.py +0 -0
  140. {dulus-0.2.14 → dulus-0.2.15}/tests/test_task.py +0 -0
  141. {dulus-0.2.14 → dulus-0.2.15}/tests/test_telegram_buffer.py +0 -0
  142. {dulus-0.2.14 → dulus-0.2.15}/tests/test_tool_registry.py +0 -0
  143. {dulus-0.2.14 → dulus-0.2.15}/tests/test_voice.py +0 -0
  144. {dulus-0.2.14 → dulus-0.2.15}/tmux_offloader.py +0 -0
  145. {dulus-0.2.14 → dulus-0.2.15}/tmux_tools.py +0 -0
  146. {dulus-0.2.14 → dulus-0.2.15}/tool_registry.py +0 -0
  147. {dulus-0.2.14 → dulus-0.2.15}/tools.py +0 -0
  148. {dulus-0.2.14 → dulus-0.2.15}/ui/__init__.py +0 -0
  149. {dulus-0.2.14 → dulus-0.2.15}/ui/input.py +0 -0
  150. {dulus-0.2.14 → dulus-0.2.15}/ui/render.py +0 -0
  151. {dulus-0.2.14 → dulus-0.2.15}/voice/__init__.py +0 -0
  152. {dulus-0.2.14 → dulus-0.2.15}/voice/keyterms.py +0 -0
  153. {dulus-0.2.14 → dulus-0.2.15}/voice/recorder.py +0 -0
  154. {dulus-0.2.14 → dulus-0.2.15}/voice/stt.py +0 -0
  155. {dulus-0.2.14 → dulus-0.2.15}/voice/tts.py +0 -0
  156. {dulus-0.2.14 → dulus-0.2.15}/webchat.py +0 -0
  157. {dulus-0.2.14 → dulus-0.2.15}/webchat_server.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.14
3
+ Version: 0.2.15
4
4
  Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
5
5
  Author: KevRojo
6
6
  License: GPL-3.0
@@ -67,7 +67,7 @@ SET /sticky_input ON since the first run for the best experience!
67
67
  <a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
68
68
  <img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
69
69
  <img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
70
- <img src="https://img.shields.io/badge/version-v0.2.14-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
70
+ <img src="https://img.shields.io/badge/version-v0.2.15-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
71
71
  <img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
72
72
  <img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
73
73
  <img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
@@ -91,7 +91,7 @@ Talent cant be copied.
91
91
 
92
92
  Dulus Reduce your IA costs by 60% parsing webchats and claude-code directly. Write poetry while Anthropic only see text.
93
93
 
94
- <img width="3189" height="1489" alt="image" src="https://github.com/user-attachments/assets/8fe96b65-6ae9-4ef7-9d85-0086abc64d23" />
94
+ <p align="center"><img src="https://raw.githubusercontent.com/KevRojo/Dulus/main/docs/poetry-banner.png" alt="Anthropic only sees text while you and Claude are writing poetry" width="100%"></p>
95
95
 
96
96
 
97
97
  Dulus is a **lightweight Python reimplementation of Claude Code** that isn't locked to Claude. It ships the whole loop — REPL, tool dispatch, streaming, context compaction, checkpoints, sub-agents, voice, Telegram bridge, MCP, plugins — in roughly **12K lines you can actually read**. Fork it. Bend it. Run it offline against Qwen on your M2.
@@ -22,7 +22,7 @@ SET /sticky_input ON since the first run for the best experience!
22
22
  <a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
23
23
  <img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
24
24
  <img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
25
- <img src="https://img.shields.io/badge/version-v0.2.14-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
25
+ <img src="https://img.shields.io/badge/version-v0.2.15-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
26
26
  <img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
27
27
  <img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
28
28
  <img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
@@ -46,7 +46,7 @@ Talent cant be copied.
46
46
 
47
47
  Dulus Reduce your IA costs by 60% parsing webchats and claude-code directly. Write poetry while Anthropic only see text.
48
48
 
49
- <img width="3189" height="1489" alt="image" src="https://github.com/user-attachments/assets/8fe96b65-6ae9-4ef7-9d85-0086abc64d23" />
49
+ <p align="center"><img src="https://raw.githubusercontent.com/KevRojo/Dulus/main/docs/poetry-banner.png" alt="Anthropic only sees text while you and Claude are writing poetry" width="100%"></p>
50
50
 
51
51
 
52
52
  Dulus is a **lightweight Python reimplementation of Claude Code** that isn't locked to Claude. It ships the whole loop — REPL, tool dispatch, streaming, context compaction, checkpoints, sub-agents, voice, Telegram bridge, MCP, plugins — in roughly **12K lines you can actually read**. Fork it. Bend it. Run it offline against Qwen on your M2.
Binary file
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dulus
3
- Version: 0.2.14
3
+ Version: 0.2.15
4
4
  Summary: Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace
5
5
  Author: KevRojo
6
6
  License: GPL-3.0
@@ -67,7 +67,7 @@ SET /sticky_input ON since the first run for the best experience!
67
67
  <a href="https://pypi.org/project/dulus/"><img src="https://static.pepy.tech/badge/dulus?style=flat-square" alt="downloads"/></a>
68
68
  <img src="https://img.shields.io/badge/python-3.11+-ff6b1f?style=flat-square&labelColor=07070a" alt="python"/>
69
69
  <img src="https://img.shields.io/badge/license-GPLv3-ff6b1f?style=flat-square&labelColor=07070a" alt="license"/>
70
- <img src="https://img.shields.io/badge/version-v0.2.14-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
70
+ <img src="https://img.shields.io/badge/version-v0.2.15-ff6b1f?style=flat-square&labelColor=07070a" alt="version"/>
71
71
  <img src="https://img.shields.io/badge/providers-11-ff6b1f?style=flat-square&labelColor=07070a" alt="providers"/>
72
72
  <img src="https://img.shields.io/badge/tools-27-ff6b1f?style=flat-square&labelColor=07070a" alt="tools"/>
73
73
  <img src="https://img.shields.io/badge/tests-263+-ff6b1f?style=flat-square&labelColor=07070a" alt="tests"/>
@@ -91,7 +91,7 @@ Talent cant be copied.
91
91
 
92
92
  Dulus Reduce your IA costs by 60% parsing webchats and claude-code directly. Write poetry while Anthropic only see text.
93
93
 
94
- <img width="3189" height="1489" alt="image" src="https://github.com/user-attachments/assets/8fe96b65-6ae9-4ef7-9d85-0086abc64d23" />
94
+ <p align="center"><img src="https://raw.githubusercontent.com/KevRojo/Dulus/main/docs/poetry-banner.png" alt="Anthropic only sees text while you and Claude are writing poetry" width="100%"></p>
95
95
 
96
96
 
97
97
  Dulus is a **lightweight Python reimplementation of Claude Code** that isn't locked to Claude. It ships the whole loop — REPL, tool dispatch, streaming, context compaction, checkpoints, sub-agents, voice, Telegram bridge, MCP, plugins — in roughly **12K lines you can actually read**. Fork it. Bend it. Run it offline against Qwen on your M2.
@@ -59,6 +59,7 @@ docs/index.html
59
59
  docs/news.md
60
60
  docs/nvidia-models.svg
61
61
  docs/particle-playground.html
62
+ docs/poetry-banner.png
62
63
  docs/preview.html
63
64
  docs/sec-agents.svg
64
65
  docs/sec-brainstorm.svg
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "dulus"
7
- version = "0.2.14"
7
+ version = "0.2.15"
8
8
  description = "Spanish-first multi-provider AI CLI — 14 NVIDIA models free, Mesa Redonda, voice, TTS, RTK token reducer, MemPalace"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
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