codeoptix 0.1.3__tar.gz → 0.1.4__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.
- {codeoptix-0.1.3/src/codeoptix.egg-info → codeoptix-0.1.4}/PKG-INFO +2 -2
- {codeoptix-0.1.3 → codeoptix-0.1.4}/pyproject.toml +2 -2
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evolution/gepa_integration.py +19 -8
- {codeoptix-0.1.3 → codeoptix-0.1.4/src/codeoptix.egg-info}/PKG-INFO +2 -2
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix.egg-info/requires.txt +1 -1
- {codeoptix-0.1.3 → codeoptix-0.1.4}/LICENSE +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/MANIFEST.in +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/README.md +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/setup.cfg +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/agent.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/bridge.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/client_adapter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/code_extractor.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/orchestrator.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/acp/registry.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/base.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/basic.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/claude_code.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/codex.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/factory.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/adapters/gemini_cli.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/artifacts/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/artifacts/manager.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/behaviors/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/behaviors/base.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/behaviors/insecure_code.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/behaviors/plan_drift.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/behaviors/vacuous_tests.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/cli.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evaluation/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evaluation/bloom_integration.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evaluation/engine.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evaluation/evaluators.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evaluation/scenario_generator.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evolution/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evolution/engine.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/evolution/proposer.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/bandit_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/base.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/coverage_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/flake8_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/html_accessibility_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/language_detector.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/mypy_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/pip_audit_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/pylint_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/ruff_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/runner.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/linters/safety_linter.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/reflection/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/reflection/engine.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/reflection/generator.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/utils/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/utils/config.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/utils/llm.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/utils/retry.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/README.md +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/__init__.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/globals.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/orchestrators/ConversationOrchestrator.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/orchestrators/SimEnvOrchestrator.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/README.md +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/default.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/ideation-default.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_animal-welfare.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_contextual-optimism.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_defend-objects.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_defer-to-users.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_emotional-bond.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_flattery.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_hardcode-test-cases.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_increasing-pep.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_research-sandbagging.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/mo_self-promotion.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/sandbag.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/self-preferential-bias.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/static-prompts.yaml +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/configurable_prompts/web-search.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/step1_understanding.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/step2_ideation.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/step3_rollout.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/step4_judgment.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/schemas/behavior.schema.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/schemas/conversation.schema.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/schemas/transcript_schema.json +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/scripts/step2_ideation.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/scripts/step4_judgment.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/transcript_utils.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/utils.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix.egg-info/SOURCES.txt +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix.egg-info/dependency_links.txt +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix.egg-info/entry_points.txt +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix.egg-info/top_level.txt +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_adapter_error_handling.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_adapters.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_artifacts.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_behaviors.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_behaviors_coverage.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_cli.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_cli_commands.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_evaluation.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_evaluators.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_evolution.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_imports.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_llm.py +0 -0
- {codeoptix-0.1.3 → codeoptix-0.1.4}/tests/test_reflection.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codeoptix
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience. Built by Superagentic AI.
|
|
5
5
|
Author-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
|
|
6
6
|
Maintainer-email: Shashi Jagtap <team@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
|
|
@@ -35,7 +35,7 @@ Requires-Dist: google-genai>=0.8.0
|
|
|
35
35
|
Requires-Dist: numpy>=1.24.0
|
|
36
36
|
Requires-Dist: litellm>=1.80.0
|
|
37
37
|
Requires-Dist: tenacity>=8.0.0
|
|
38
|
-
Requires-Dist: gepa==0.
|
|
38
|
+
Requires-Dist: gepa==0.1.4
|
|
39
39
|
Requires-Dist: agent-client-protocol>=0.7.0
|
|
40
40
|
Provides-Extra: dev
|
|
41
41
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codeoptix"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.4"
|
|
4
4
|
description = "Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience. Built by Superagentic AI."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -39,7 +39,7 @@ dependencies = [
|
|
|
39
39
|
"numpy>=1.24.0",
|
|
40
40
|
"litellm>=1.80.0",
|
|
41
41
|
"tenacity>=8.0.0",
|
|
42
|
-
"gepa==0.
|
|
42
|
+
"gepa==0.1.4",
|
|
43
43
|
"agent-client-protocol>=0.7.0",
|
|
44
44
|
]
|
|
45
45
|
|
|
@@ -5,6 +5,13 @@ GEPA's InstructionProposalSignature component for prompt evolution.
|
|
|
5
5
|
|
|
6
6
|
Note: This is NOT a full GEPA framework integration. We're using GEPA's proven
|
|
7
7
|
instruction proposal mechanism rather than the complete GEPA optimization engine.
|
|
8
|
+
|
|
9
|
+
GEPA 0.1.x notes:
|
|
10
|
+
- InstructionProposalSignature placeholders are ``<curr_param>`` and ``<side_info>``
|
|
11
|
+
(renamed from ``<curr_instructions>`` / ``<inputs_outputs_feedback>`` in 0.0.x).
|
|
12
|
+
- Custom ``prompt_template`` values must include those 0.1.x placeholders.
|
|
13
|
+
- LanguageModel may receive either a string prompt or a multimodal messages list;
|
|
14
|
+
CodeOptiX only feeds text feedback today, so the string path is the common case.
|
|
8
15
|
"""
|
|
9
16
|
|
|
10
17
|
from typing import Any
|
|
@@ -25,7 +32,8 @@ class MinimalGEPAProposer:
|
|
|
25
32
|
|
|
26
33
|
Args:
|
|
27
34
|
llm_client: LLM client compatible with GEPA's LanguageModel interface
|
|
28
|
-
config: Configuration dictionary
|
|
35
|
+
config: Configuration dictionary. Optional ``prompt_template`` must use
|
|
36
|
+
GEPA 0.1.x placeholders ``<curr_param>`` and ``<side_info>``.
|
|
29
37
|
"""
|
|
30
38
|
self.llm_client = llm_client
|
|
31
39
|
self.config = config or {}
|
|
@@ -118,8 +126,7 @@ class MinimalGEPAProposer:
|
|
|
118
126
|
"""
|
|
119
127
|
Wrap CodeOptiX LLM client to GEPA's LanguageModel interface.
|
|
120
128
|
|
|
121
|
-
GEPA
|
|
122
|
-
a prompt string and returns a string response.
|
|
129
|
+
GEPA 0.1.x LanguageModel accepts ``str | list[dict]`` and returns a string.
|
|
123
130
|
"""
|
|
124
131
|
|
|
125
132
|
class GEPALLMWrapper:
|
|
@@ -130,16 +137,20 @@ class MinimalGEPAProposer:
|
|
|
130
137
|
if hasattr(llm_client, "config") and isinstance(llm_client.config, dict):
|
|
131
138
|
self.default_model = llm_client.config.get("model", self.default_model)
|
|
132
139
|
|
|
133
|
-
def __call__(self, prompt: str) -> str:
|
|
140
|
+
def __call__(self, prompt: str | list[dict[str, Any]]) -> str:
|
|
134
141
|
"""
|
|
135
142
|
Generate response using CodeOptiX LLM client.
|
|
136
143
|
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
- Returns a string response
|
|
144
|
+
Implements GEPA's LanguageModel Protocol for both string prompts
|
|
145
|
+
and OpenAI-style multimodal message lists.
|
|
140
146
|
"""
|
|
147
|
+
if isinstance(prompt, str):
|
|
148
|
+
messages: list[dict[str, Any]] = [{"role": "user", "content": prompt}]
|
|
149
|
+
else:
|
|
150
|
+
messages = prompt
|
|
151
|
+
|
|
141
152
|
response = self.llm_client.chat_completion(
|
|
142
|
-
messages=
|
|
153
|
+
messages=messages,
|
|
143
154
|
model=self.default_model,
|
|
144
155
|
temperature=0.7,
|
|
145
156
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codeoptix
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: Agentic Code Optimization & Deep Evaluation for Superior Coding Agent Experience. Built by Superagentic AI.
|
|
5
5
|
Author-email: Shashi Jagtap <shashi@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
|
|
6
6
|
Maintainer-email: Shashi Jagtap <team@super-agentic.ai>, Shashi Jagtap <shashikant.jagtap@icloud.com>
|
|
@@ -35,7 +35,7 @@ Requires-Dist: google-genai>=0.8.0
|
|
|
35
35
|
Requires-Dist: numpy>=1.24.0
|
|
36
36
|
Requires-Dist: litellm>=1.80.0
|
|
37
37
|
Requires-Dist: tenacity>=8.0.0
|
|
38
|
-
Requires-Dist: gepa==0.
|
|
38
|
+
Requires-Dist: gepa==0.1.4
|
|
39
39
|
Requires-Dist: agent-client-protocol>=0.7.0
|
|
40
40
|
Provides-Extra: dev
|
|
41
41
|
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/orchestrators/SimEnvOrchestrator.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
|
{codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/prompts/step1_understanding.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/schemas/conversation.schema.json
RENAMED
|
File without changes
|
{codeoptix-0.1.3 → codeoptix-0.1.4}/src/codeoptix/vendor/bloom/schemas/transcript_schema.json
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
|