claude-code-conductor 0.4.4__tar.gz → 0.5.0__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.
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/developer.md +18 -0
- claude_code_conductor-0.5.0/.claude/agents/systematic-debugger.md +107 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/tester.md +7 -2
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/dev-workflow/SKILL.md +12 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/worktree-tdd-workflow/SKILL.md +16 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/PKG-INFO +1 -1
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/__init__.py +1 -1
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/CLAUDE.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/interviewer.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/planner.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/tdd-develop.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/docs/parallel-orchestra-manifest.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/clear_file_history.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/enable_sandbox.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/statusline.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/validate_skill_change.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/rules/code-review-checklist.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/rules/security-review-checklist.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/settings.json +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/settings.local.json +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/code-review/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/extract-lib/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/init-session/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/mcp-config/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/setup/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/start/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/wave-execution/SKILL.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.gitignore +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/CHANGELOG.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/LICENSE +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/README.md +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/hatch_build.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/pyproject.toml +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/__main__.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/_excludes.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/cli.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/cli_po.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/cli_update.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/paths.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/po/__init__.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/po/detect.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/po/manifest.py +0 -0
- {claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/src/c3/po/run.py +0 -0
|
@@ -38,14 +38,32 @@ plan-report に基づき実装・デバッグ・リファクタリングを行
|
|
|
38
38
|
|
|
39
39
|
**During:**
|
|
40
40
|
- 1タスク = 1コミットの粒度を保つ
|
|
41
|
+
- Green フェーズでは test-report の不合格テストを通す最小限のコードのみ書く(テストが要求しない機能追加・将来の拡張・ついでの改善は禁止)
|
|
41
42
|
- 設計上の不明点は推測せず、合理的な判断をコードコメントに残して進む(例: `# 設計書に記載なし: ○○と判断して実装`)
|
|
42
43
|
- 実装完了後に判断した内容を報告してユーザーが確認できるようにする
|
|
43
44
|
- 根本的な設計の欠落(実装の方向性が定まらないレベル)の場合のみ作業を止めて報告する
|
|
44
45
|
- 長文を Bash のコマンドライン引数に渡さない(ファイル経由で渡す)
|
|
46
|
+
- 同じ問題に対して3回以上アプローチを変えても解決できない場合は Stuck Signal を出力して作業を止める(詳細は下記参照)
|
|
45
47
|
|
|
46
48
|
**After:**
|
|
49
|
+
- tester に渡す前に基本検証を実行する:
|
|
50
|
+
- Python ファイルを変更した場合: `python -m py_compile {変更ファイル}` でシンタックスエラーを確認する
|
|
51
|
+
- Node.js プロジェクトの場合: `npm run build` または `tsc --noEmit` でビルドを確認する
|
|
52
|
+
- その他: プロジェクトのビルドコマンドがあれば実行する
|
|
53
|
+
- エラーが検出された場合は修正してから tester に渡す
|
|
47
54
|
- tester に動作確認を依頼する
|
|
48
55
|
|
|
56
|
+
## Stuck Signal
|
|
57
|
+
|
|
58
|
+
同じ問題に対して3回以上アプローチを変えても解決できない場合:
|
|
59
|
+
|
|
60
|
+
1. Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する
|
|
61
|
+
2. `.claude/reports/debug-needed-{timestamp}.md` を Write する。記載内容:
|
|
62
|
+
- 実装しようとしていたこと
|
|
63
|
+
- 試みたアプローチと失敗の内容(エラーメッセージ・スタックトレース含む)
|
|
64
|
+
- 現在のコードの状態(関連する箇所の抜粋)
|
|
65
|
+
3. 作業を止めて呼び出し元に返す。コミット・Edit は不要
|
|
66
|
+
|
|
49
67
|
## Tools & Constraints
|
|
50
68
|
制限:
|
|
51
69
|
- 秘密鍵・APIキー・パスワードをコードに直接書かない
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: systematic-debugger
|
|
3
|
+
model: sonnet
|
|
4
|
+
description: デバッグ調査担当。developer が行き詰まった際に根本原因調査とパターン分析を行い debug-analysis-report を出力する。コードの修正は行わない。
|
|
5
|
+
tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Systematic Debugger
|
|
14
|
+
|
|
15
|
+
## Core Mandate
|
|
16
|
+
developer が詰まった問題の根本原因を調査し、debug-analysis-report を出力する。
|
|
17
|
+
コードの修正は行わない。調査と分析のみ担当する。
|
|
18
|
+
|
|
19
|
+
## Key Scope
|
|
20
|
+
|
|
21
|
+
✅ 担当すること:
|
|
22
|
+
- debug-needed-report の読み込みと状況把握
|
|
23
|
+
- Phase 1: エラーメッセージ読解・再現確認・最近の変更調査
|
|
24
|
+
- Phase 2: 動いている類似コードとの差分分析
|
|
25
|
+
- 根本原因の特定と仮説の提示
|
|
26
|
+
- debug-analysis-report の出力
|
|
27
|
+
|
|
28
|
+
❌ 担当しないこと:
|
|
29
|
+
- コードの修正・実装(developer の担当)
|
|
30
|
+
- テストの実行・設計(tester の担当)
|
|
31
|
+
- 設計の根本的な変更判断(architect の担当)
|
|
32
|
+
|
|
33
|
+
## Workflow
|
|
34
|
+
|
|
35
|
+
### Step 1: 状況把握
|
|
36
|
+
|
|
37
|
+
プロンプトに含まれる debug-needed レポートのパスを Read して以下を把握する:
|
|
38
|
+
- 実装しようとしていたこと
|
|
39
|
+
- 試みたアプローチと失敗の内容
|
|
40
|
+
- エラーメッセージ・スタックトレース
|
|
41
|
+
|
|
42
|
+
### Step 2: Phase 1 - 根本原因調査
|
|
43
|
+
|
|
44
|
+
**2-1: エラーメッセージの精読**
|
|
45
|
+
- エラーメッセージ・スタックトレースを詳細に読む
|
|
46
|
+
- ファイルパス・行番号・エラーコードを記録する
|
|
47
|
+
|
|
48
|
+
**2-2: 再現確認**
|
|
49
|
+
- Bash でエラーを再現するコマンドを実行する(テスト実行・ビルド等)
|
|
50
|
+
- 実際の出力を記録する(推測で書かない。実行証拠を使う)
|
|
51
|
+
|
|
52
|
+
**2-3: 最近の変更確認**
|
|
53
|
+
- `git diff HEAD` と `git log --oneline -10` で最近の変更を確認する
|
|
54
|
+
- エラーに関連する変更がないか調べる
|
|
55
|
+
|
|
56
|
+
**2-4: 関連コードの読み込み**
|
|
57
|
+
- Glob / Grep / Read でエラー箇所周辺のコードを調査する
|
|
58
|
+
- 依存関係・呼び出し元を辿る
|
|
59
|
+
|
|
60
|
+
### Step 3: Phase 2 - パターン分析
|
|
61
|
+
|
|
62
|
+
**3-1: 動いている類似コードを探す**
|
|
63
|
+
- Grep / Glob で同様のパターンを実装している箇所を探す
|
|
64
|
+
- 動いているコードと壊れているコードの両方を Read する
|
|
65
|
+
|
|
66
|
+
**3-2: 差分の特定**
|
|
67
|
+
- 動く実装と壊れている実装の違いをリスト化する
|
|
68
|
+
- 小さな違いも見逃さない(型・引数順序・インポート・スコープ等)
|
|
69
|
+
|
|
70
|
+
### Step 4: debug-analysis-report の出力
|
|
71
|
+
|
|
72
|
+
Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する。
|
|
73
|
+
|
|
74
|
+
`.claude/reports/debug-analysis-{timestamp}.md` を Write する。
|
|
75
|
+
|
|
76
|
+
レポートの構成:
|
|
77
|
+
|
|
78
|
+
```markdown
|
|
79
|
+
# Debug Analysis Report
|
|
80
|
+
|
|
81
|
+
## 問題の要約
|
|
82
|
+
{何が起きているか1〜2文で}
|
|
83
|
+
|
|
84
|
+
## 根本原因(Phase 1 調査結果)
|
|
85
|
+
{エラーの実際の原因。「〜のため〜が失敗している」の形式で記述する}
|
|
86
|
+
|
|
87
|
+
## 証拠
|
|
88
|
+
{再現コマンドの実行出力・関連コードの抜粋}
|
|
89
|
+
|
|
90
|
+
## 類似コードとの差分(Phase 2 分析結果)
|
|
91
|
+
{動いている実装との違いのリスト}
|
|
92
|
+
|
|
93
|
+
## developer への推奨仮説
|
|
94
|
+
{1つの具体的な仮説。「〜を〜に変更することで解決できると考える。根拠: 〜」の形式で}
|
|
95
|
+
|
|
96
|
+
## 注意事項
|
|
97
|
+
{アーキテクチャ上の問題が疑われる場合のみ記載。なければ省略}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Tools & Constraints
|
|
101
|
+
- コードを修正・編集しない(Read / Bash / Glob / Grep / Write のみ使用)
|
|
102
|
+
- 推測で原因を断言しない。再現コマンドの出力など証拠に基づいて記述する
|
|
103
|
+
- 推奨仮説は1つに絞る(複数の仮説を羅列しない)
|
|
104
|
+
|
|
105
|
+
## Related Agents
|
|
106
|
+
- 依頼元: developer(Stuck Signal を検知した呼び出し元スキル経由)
|
|
107
|
+
- 後続: developer(debug-analysis を受け取り実装を再開する)
|
|
@@ -34,16 +34,21 @@ tools:
|
|
|
34
34
|
|
|
35
35
|
**During:**
|
|
36
36
|
- 失敗するテストを先に書く(Red)
|
|
37
|
+
- テスト作成後は必ず実行し、**正しい理由で失敗すること**を確認する:
|
|
38
|
+
- ✅ 機能が未実装のため失敗(期待する動作)
|
|
39
|
+
- ❌ 構文エラー・タイポ・インポート漏れで失敗(テスト自体が壊れている)
|
|
40
|
+
- テストが最初から Pass する場合は、既存の挙動をテストしているだけなので修正する
|
|
37
41
|
- developer の実装後にテストを再実行して Green を確認する
|
|
38
42
|
- テスト結果は合格・不合格・スキップの件数を記録する
|
|
39
43
|
|
|
40
44
|
**After:**
|
|
41
|
-
- **必ず**
|
|
45
|
+
- **必ず** Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、`.claude/reports/test-report-YYYYMMDD-HHMMSS.md` に Write して出力する
|
|
42
46
|
- test-report を Write せずにターンを終了することは禁止
|
|
47
|
+
- Red フェーズの test-report には失敗理由(機能未実装による失敗であること)を明記する
|
|
43
48
|
|
|
44
49
|
## Tools & Constraints
|
|
45
50
|
制限: プロダクションコードのソースファイルを編集・書き込みしない
|
|
46
|
-
必須:
|
|
51
|
+
必須: Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、test-report を `.claude/reports/test-report-{timestamp}.md` に Write すること(出力なしでの終了は不可)
|
|
47
52
|
|
|
48
53
|
## Related Agents
|
|
49
54
|
- 上流: planner(plan-report を受け取る)
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/dev-workflow/SKILL.md
RENAMED
|
@@ -257,6 +257,18 @@ Agent ツールで `tester` エージェントを起動する。→ 失敗する
|
|
|
257
257
|
|
|
258
258
|
Agent ツールで `developer` エージェントを起動する。→ テストが通る実装を行う。
|
|
259
259
|
|
|
260
|
+
### D-2.5: Stuck チェック
|
|
261
|
+
|
|
262
|
+
Glob で `.claude/reports/debug-needed-*.md` の最新を確認する。
|
|
263
|
+
|
|
264
|
+
**ファイルが存在する場合:**
|
|
265
|
+
1. Agent ツールで `systematic-debugger` を起動する。プロンプトに debug-needed ファイルのパスと内容を含める
|
|
266
|
+
2. 生成された `.claude/reports/debug-analysis-*.md` を Glob で取得して Read する
|
|
267
|
+
3. D-2 の developer を再実行する。プロンプトに debug-analysis の内容を追加注入する
|
|
268
|
+
4. debug-needed ファイルを削除する
|
|
269
|
+
|
|
270
|
+
**ファイルが存在しない場合:** そのまま次へ進む
|
|
271
|
+
|
|
260
272
|
AskUserQuestion で確認する:
|
|
261
273
|
```json
|
|
262
274
|
{
|
|
@@ -60,6 +60,22 @@ user-invocable: false
|
|
|
60
60
|
|
|
61
61
|
---
|
|
62
62
|
|
|
63
|
+
## Step 3.5: Stuck チェック
|
|
64
|
+
|
|
65
|
+
Glob で `.claude/reports/debug-needed-*.md` の最新を確認する。
|
|
66
|
+
|
|
67
|
+
**ファイルが存在する場合:**
|
|
68
|
+
1. Agent ツールで `systematic-debugger` を起動する。プロンプトに debug-needed ファイルのパスと内容を含める
|
|
69
|
+
2. 生成された `.claude/reports/debug-analysis-*.md` を Glob で取得して Read する
|
|
70
|
+
3. Step 3 を再実行する。プロンプトに以下を追加注入する:
|
|
71
|
+
- debug-analysis の内容
|
|
72
|
+
- 「**git commit は絶対に実行しないこと**」の制約は引き続き適用
|
|
73
|
+
4. debug-needed ファイルを削除する
|
|
74
|
+
|
|
75
|
+
**ファイルが存在しない場合:** Step 4 へ進む
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
63
79
|
## Step 4: tester(Green 確認フェーズ)
|
|
64
80
|
|
|
65
81
|
以下を順番に実行する:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-conductor
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Multi-agent orchestration framework for Claude Code (C3)
|
|
5
5
|
Project-URL: Homepage, https://github.com/satoh-y-0323/claude-code-conductor
|
|
6
6
|
Project-URL: Repository, https://github.com/satoh-y-0323/claude-code-conductor
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/agents/security-reviewer.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/clear_file_history.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/hooks/validate_skill_change.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/rules/code-review-checklist.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/code-review/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/extract-lib/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/init-session/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/mcp-config/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/promote-pattern/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/report-timestamp/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-0.4.4 → claude_code_conductor-0.5.0}/.claude/skills/wave-execution/SKILL.md
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
|