openrunner-sdk 2.13.2__tar.gz → 2.13.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.
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/PKG-INFO +1 -1
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/__init__.py +17 -1
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/install_commands.py +107 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/pyproject.toml +1 -1
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/.gitignore +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/=6.0 +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/=8.1 +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/README.md +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/api_client.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/artifact.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/buffer.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/cache.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/cli.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/config.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/cost.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/dataset.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/environment.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/evaluation.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/feedback.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/git_info.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/guardrails.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/__init__.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/accelerate.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/anthropic_tracer.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/catboost.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/diffusers.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/fastai.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/forced_alignment.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/gladia.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/gymnasium.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/huggingface.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/hydra.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/ignite.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/jax.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/keras.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/langchain.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/lightgbm.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/lightning.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/llamaindex.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/openai_finetune.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/openai_tracer.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/optuna.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/pytorch.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/sb3.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/sklearn.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/tensorflow.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/trl.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/tts.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/ultralytics.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/voice_agent.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/whisper.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/integration/xgboost.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/launch.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/media.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/migrate.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/model.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/offline.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/pii.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/plot.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/prompt.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/query_api.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/redact.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/run.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/scorers.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/sender.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/session.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/settings.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/summary.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/sweep.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/system_metrics.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/tensorboard.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/trace.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/transcript_formatter.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/wal.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/wandb_compat/__init__.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/wandb_compat/_shim.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/openrunner/wer.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/__init__.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/conftest.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_alert.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_aliases.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_api_client.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_artifact.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_buffer.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_cache.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_class_scorers.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_cli.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_config.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_evaluation.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_finish.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_git_info.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_init.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_fastai.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_huggingface.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_keras.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_langchain.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_lightning.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_pytorch.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_sklearn.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_integration_xgboost.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_launch.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_log.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_log_code.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_media.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_migrate.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_offline.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_offline_sync.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_pii.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_plot.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_query_api.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_resume.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_sdk_features.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_sender.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_summary.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_sweep.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_system_metrics.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_trace.py +0 -0
- {openrunner_sdk-2.13.2 → openrunner_sdk-2.13.4}/tests/test_wandb_compat.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrunner-sdk
|
|
3
|
-
Version: 2.13.
|
|
3
|
+
Version: 2.13.4
|
|
4
4
|
Summary: OpenRunner SDK - W&B-compatible ML experiment tracking client
|
|
5
5
|
Project-URL: Homepage, https://github.com/jqueguiner/openrunner
|
|
6
6
|
Project-URL: Repository, https://github.com/jqueguiner/openrunner
|
|
@@ -120,10 +120,26 @@ launch.from_run = _launch_from_run # type: ignore[attr-defined]
|
|
|
120
120
|
# openrunner.trace.patch_openai() syntax
|
|
121
121
|
trace.patch_openai = _patch_openai # type: ignore[attr-defined]
|
|
122
122
|
|
|
123
|
-
__version__ = "2.13.
|
|
123
|
+
__version__ = "2.13.4"
|
|
124
124
|
|
|
125
125
|
logger = logging.getLogger("openrunner")
|
|
126
126
|
|
|
127
|
+
# Auto-install/update slash commands on import if version changed
|
|
128
|
+
def _auto_install_on_import():
|
|
129
|
+
try:
|
|
130
|
+
from pathlib import Path
|
|
131
|
+
marker = Path.home() / ".openrunner" / ".commands_version"
|
|
132
|
+
if marker.exists() and marker.read_text().strip() == __version__:
|
|
133
|
+
return
|
|
134
|
+
from openrunner.install_commands import install_all
|
|
135
|
+
install_all()
|
|
136
|
+
marker.parent.mkdir(parents=True, exist_ok=True)
|
|
137
|
+
marker.write_text(__version__)
|
|
138
|
+
except Exception:
|
|
139
|
+
pass
|
|
140
|
+
|
|
141
|
+
_auto_install_on_import()
|
|
142
|
+
|
|
127
143
|
# Active run state
|
|
128
144
|
_active_run: Run | None = None
|
|
129
145
|
|
|
@@ -281,6 +281,109 @@ Show the response to the user.
|
|
|
281
281
|
"""
|
|
282
282
|
|
|
283
283
|
|
|
284
|
+
LOGIN_CMD = """---
|
|
285
|
+
name: {prefix}login
|
|
286
|
+
description: Authenticate OpenRunner CLI via browser
|
|
287
|
+
allowed-tools:
|
|
288
|
+
- Bash
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
Run the OpenRunner browser-based login:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
python3 -c "
|
|
295
|
+
import sys, os, subprocess
|
|
296
|
+
for p in [os.path.expanduser(f'~/.local/lib/python3.{{v}}/site-packages') for v in (12,11,10)]:
|
|
297
|
+
if os.path.isdir(p): sys.path.insert(0, p)
|
|
298
|
+
subprocess.run([sys.executable, '-m', 'openrunner.cli', 'login'])
|
|
299
|
+
" || echo 'Run: pip install openrunner-sdk && openrunner login'
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
If browser doesn't open, copy the URL shown and open it manually.
|
|
303
|
+
After approval, the CLI gets its token automatically.
|
|
304
|
+
"""
|
|
305
|
+
|
|
306
|
+
CODE_UPLOAD_CMD = """---
|
|
307
|
+
name: {prefix}code-upload
|
|
308
|
+
description: Upload current directory code to OpenRunner as artifact (redacted)
|
|
309
|
+
allowed-tools:
|
|
310
|
+
- Bash
|
|
311
|
+
- AskUserQuestion
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
Upload redacted source code from CWD to OpenRunner as artifact:
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
python3 -c "
|
|
318
|
+
import sys, os
|
|
319
|
+
from pathlib import Path
|
|
320
|
+
for p in [os.path.expanduser(f'~/.local/lib/python3.{{v}}/site-packages') for v in (12,11,10)]:
|
|
321
|
+
if os.path.isdir(p): sys.path.insert(0, p)
|
|
322
|
+
|
|
323
|
+
from openrunner.session import get_session_config
|
|
324
|
+
from openrunner.api_client import APIClient
|
|
325
|
+
from openrunner.redact import redact_text
|
|
326
|
+
import tempfile, shutil
|
|
327
|
+
|
|
328
|
+
config = get_session_config()
|
|
329
|
+
if not config.get('api_key'):
|
|
330
|
+
print('Not configured. Run /openrunner:setup first.')
|
|
331
|
+
sys.exit(1)
|
|
332
|
+
|
|
333
|
+
project_name = config.get('project', '')
|
|
334
|
+
CODE_EXTENSIONS = ('.py', '.yaml', '.yml', '.toml', '.cfg', '.sh', '.json', 'Dockerfile', 'Makefile', 'requirements.txt', 'pyproject.toml')
|
|
335
|
+
SKIP_DIRS = {{'.git', '__pycache__', 'node_modules', 'venv', '.venv', 'dist', 'build', '.openrunner'}}
|
|
336
|
+
|
|
337
|
+
cwd = Path.cwd()
|
|
338
|
+
files_collected = []
|
|
339
|
+
for fpath in sorted(cwd.rglob('*')):
|
|
340
|
+
if not fpath.is_file(): continue
|
|
341
|
+
rel = str(fpath.relative_to(cwd))
|
|
342
|
+
parts = Path(rel).parts
|
|
343
|
+
if any(p.startswith('.') or p in SKIP_DIRS for p in parts): continue
|
|
344
|
+
if not any(rel.endswith(ext) or rel == ext for ext in CODE_EXTENSIONS): continue
|
|
345
|
+
if fpath.stat().st_size > 1_000_000: continue
|
|
346
|
+
files_collected.append((rel, fpath))
|
|
347
|
+
|
|
348
|
+
print(f'Found {{len(files_collected)}} source files')
|
|
349
|
+
if not files_collected:
|
|
350
|
+
print('No source files found.')
|
|
351
|
+
sys.exit(1)
|
|
352
|
+
|
|
353
|
+
tmp_dir = Path(tempfile.mkdtemp(prefix='or-code-'))
|
|
354
|
+
redacted_count = 0
|
|
355
|
+
for rel, fpath in files_collected:
|
|
356
|
+
content = fpath.read_text(errors='replace')
|
|
357
|
+
result = redact_text(content, mode='regex')
|
|
358
|
+
redacted_count += result.redacted_count
|
|
359
|
+
dest = tmp_dir / rel
|
|
360
|
+
dest.parent.mkdir(parents=True, exist_ok=True)
|
|
361
|
+
dest.write_text(result.text)
|
|
362
|
+
|
|
363
|
+
if redacted_count > 0:
|
|
364
|
+
print(f'Redacted {{redacted_count}} secrets')
|
|
365
|
+
|
|
366
|
+
import openrunner
|
|
367
|
+
os.environ['OPENRUNNER_API_KEY'] = config['api_key']
|
|
368
|
+
os.environ['OPENRUNNER_BASE_URL'] = config.get('base_url', 'https://openrun.gladia.io')
|
|
369
|
+
run = openrunner.init(project=project_name, name='code-upload', save_code=False)
|
|
370
|
+
artifact = openrunner.Artifact('source-code', type='code')
|
|
371
|
+
artifact.add_dir(str(tmp_dir))
|
|
372
|
+
result = run.log_artifact(artifact)
|
|
373
|
+
run.finish()
|
|
374
|
+
shutil.rmtree(tmp_dir, ignore_errors=True)
|
|
375
|
+
|
|
376
|
+
if result:
|
|
377
|
+
print(f'Uploaded source-code artifact (v{{result.get(\"version\", \"?\")}}) — {{len(files_collected)}} files, {{redacted_count}} secrets redacted')
|
|
378
|
+
else:
|
|
379
|
+
print('Upload failed.')
|
|
380
|
+
"
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Report result to user.
|
|
384
|
+
"""
|
|
385
|
+
|
|
386
|
+
|
|
284
387
|
def install_claude_code() -> list[str]:
|
|
285
388
|
"""Install commands in ~/.claude/commands/openrunner/."""
|
|
286
389
|
cmd_dir = Path.home() / ".claude" / "commands" / "openrunner"
|
|
@@ -292,6 +395,8 @@ def install_claude_code() -> list[str]:
|
|
|
292
395
|
"setup.md": SETUP_CMD,
|
|
293
396
|
"list-sessions.md": LIST_SESSIONS_CMD,
|
|
294
397
|
"chat.md": CHAT_CMD,
|
|
398
|
+
"login.md": LOGIN_CMD,
|
|
399
|
+
"code-upload.md": CODE_UPLOAD_CMD,
|
|
295
400
|
}
|
|
296
401
|
|
|
297
402
|
files = []
|
|
@@ -313,6 +418,8 @@ def _install_all_commands_to_dir(cmd_dir: Path, prefix: str = "openrunner:") ->
|
|
|
313
418
|
"setup.md": SETUP_CMD,
|
|
314
419
|
"list-sessions.md": LIST_SESSIONS_CMD,
|
|
315
420
|
"chat.md": CHAT_CMD,
|
|
421
|
+
"login.md": LOGIN_CMD,
|
|
422
|
+
"code-upload.md": CODE_UPLOAD_CMD,
|
|
316
423
|
}
|
|
317
424
|
|
|
318
425
|
files = []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|