docassert 0.16.0__tar.gz → 0.17.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.
- {docassert-0.16.0/docassert.egg-info → docassert-0.17.0}/PKG-INFO +3 -1
- {docassert-0.16.0 → docassert-0.17.0}/README.md +2 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/__init__.py +1 -1
- {docassert-0.16.0 → docassert-0.17.0/docassert.egg-info}/PKG-INFO +3 -1
- {docassert-0.16.0 → docassert-0.17.0}/docassert.egg-info/SOURCES.txt +1 -0
- {docassert-0.16.0 → docassert-0.17.0}/pyproject.toml +1 -1
- docassert-0.17.0/tests/test_report_extract.py +70 -0
- {docassert-0.16.0 → docassert-0.17.0}/LICENSE +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/NOTICE +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/__main__.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/consistency.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/adr.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/benefits-realization.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/brd.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/business-case.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/charter.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/data-migration-plan.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/frnfr.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/hypercare-plan.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/operations.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/post-implementation-review.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/prd.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/project.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/qa-test-plan.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/raci-stakeholder.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/release-cutover-plan.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/risk-register.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/rollback-plan.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/runbook.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/status-report.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/test-cases.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/user-story.criteria.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/profiles/agile-delivery.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/profiles/lean-startup.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/profiles/operations.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/profiles/regulated-industry.yaml +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/adr.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/benefits-realization.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/brd.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/business-case.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/charter.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/data-migration-plan.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/frnfr.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/hypercare-plan.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/operations.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/post-implementation-review.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/prd.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/project.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/qa-test-plan.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/raci-stakeholder.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/release-cutover-plan.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/risk-register.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/rollback-plan.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/runbook.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/status-report.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/test-cases.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/user-story.schema.json +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/skills/doc-to-pmo/SKILL.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/adr.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/benefits-realization.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/brd.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/business-case.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/charter.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/data-migration-plan.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/frnfr.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/hypercare-plan.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/operations.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/post-implementation-review.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/prd.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/project.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/qa-test-plan.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/raci-stakeholder.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/release-cutover-plan.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/risk-register.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/rollback-plan.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/runbook.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/status-report.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/test-cases.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/user-story.template.md +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/bridge/__init__.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/bridge/board.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/bridge/gh.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/bridge/ops.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/bridge/plan.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/cli.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/config.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/consistency.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/extract.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/graph.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/loader.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/models.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/profiles.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/projects.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/report.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/rtm.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/scaffold.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/semantic.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/status/__init__.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/status/derive.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/status/render.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert/structural.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert.egg-info/dependency_links.txt +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert.egg-info/entry_points.txt +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert.egg-info/requires.txt +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/docassert.egg-info/top_level.txt +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/setup.cfg +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_badge.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_bridge.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_config.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_consistency.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_defects.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_draft_relaxation.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_extract.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_graph.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_json_report.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_kinds_delivery.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_kinds_governance.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_kinds_operate.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_kinds_reporting.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_profiles.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_projects.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_scaffold.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_semantic.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_status.py +0 -0
- {docassert-0.16.0 → docassert-0.17.0}/tests/test_structural.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docassert
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
4
4
|
Summary: Unit testing for business documents — validate structured Markdown docs against a configurable audit standard.
|
|
5
5
|
Author: C4G Enterprises Inc.
|
|
6
6
|
License: Apache-2.0
|
|
@@ -102,6 +102,8 @@ flagged as TODOs, never invented). The skill's source is
|
|
|
102
102
|
| `docassert extract <file>` | Extract plain text from a source `.docx` / `.pdf` / `.md` / `.txt` (the first step of doc-to-pmo conversion). Needs the `convert` extra: `pip install "docassert[convert]"`. |
|
|
103
103
|
|
|
104
104
|
Every document-reading command accepts `--documents-dir` (default `documents/`).
|
|
105
|
+
The full flag-by-flag reference, and what 1.x does and does not promise to
|
|
106
|
+
keep stable, live in [STABILITY.md](STABILITY.md).
|
|
105
107
|
AI alignment grades at most `alignment_limit` links per run (default 25; set it
|
|
106
108
|
in `consistency.yaml`, `0` = no cap) so API cost stays bounded on large graphs.
|
|
107
109
|
|
|
@@ -62,6 +62,8 @@ flagged as TODOs, never invented). The skill's source is
|
|
|
62
62
|
| `docassert extract <file>` | Extract plain text from a source `.docx` / `.pdf` / `.md` / `.txt` (the first step of doc-to-pmo conversion). Needs the `convert` extra: `pip install "docassert[convert]"`. |
|
|
63
63
|
|
|
64
64
|
Every document-reading command accepts `--documents-dir` (default `documents/`).
|
|
65
|
+
The full flag-by-flag reference, and what 1.x does and does not promise to
|
|
66
|
+
keep stable, live in [STABILITY.md](STABILITY.md).
|
|
65
67
|
AI alignment grades at most `alignment_limit` links per run (default 25; set it
|
|
66
68
|
in `consistency.yaml`, `0` = no cap) so API cost stays bounded on large graphs.
|
|
67
69
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docassert
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.0
|
|
4
4
|
Summary: Unit testing for business documents — validate structured Markdown docs against a configurable audit standard.
|
|
5
5
|
Author: C4G Enterprises Inc.
|
|
6
6
|
License: Apache-2.0
|
|
@@ -102,6 +102,8 @@ flagged as TODOs, never invented). The skill's source is
|
|
|
102
102
|
| `docassert extract <file>` | Extract plain text from a source `.docx` / `.pdf` / `.md` / `.txt` (the first step of doc-to-pmo conversion). Needs the `convert` extra: `pip install "docassert[convert]"`. |
|
|
103
103
|
|
|
104
104
|
Every document-reading command accepts `--documents-dir` (default `documents/`).
|
|
105
|
+
The full flag-by-flag reference, and what 1.x does and does not promise to
|
|
106
|
+
keep stable, live in [STABILITY.md](STABILITY.md).
|
|
105
107
|
AI alignment grades at most `alignment_limit` links per run (default 25; set it
|
|
106
108
|
in `consistency.yaml`, `0` = no cap) so API cost stays bounded on large graphs.
|
|
107
109
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Coverage for the report renderers, extraction text paths, and the module
|
|
2
|
+
entry point — the last stretch to the 85% floor (ENG-US-009)."""
|
|
3
|
+
import runpy
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from docassert import report
|
|
8
|
+
from docassert.extract import extract
|
|
9
|
+
from docassert.models import CheckResult
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _results():
|
|
13
|
+
return {
|
|
14
|
+
"documents/a.md": [
|
|
15
|
+
CheckResult("frontmatter-schema", True, True, "ok"),
|
|
16
|
+
CheckResult("required-sections", False, True, "missing: Scope"),
|
|
17
|
+
CheckResult("alignment", False, False, "weak link", kind="semantic",
|
|
18
|
+
score=0.4),
|
|
19
|
+
],
|
|
20
|
+
"documents/b.md": [CheckResult("unique-id", True, True, "unique")],
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def test_markdown_report_carries_verdicts():
|
|
25
|
+
md = report.markdown(_results())
|
|
26
|
+
assert "a.md" in md and "required-sections" in md
|
|
27
|
+
assert "🔴" in md and "🟢" in md and "⚪" not in md.split("alignment")[0]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def test_junit_report_is_valid_xml_with_failures():
|
|
31
|
+
import xml.etree.ElementTree as ET
|
|
32
|
+
xml = report.junit(_results())
|
|
33
|
+
root = ET.fromstring(xml)
|
|
34
|
+
assert root.tag in {"testsuite", "testsuites"}
|
|
35
|
+
assert int(root.get("failures", root.get("errors", "0"))) >= 1 or \
|
|
36
|
+
any(int(s.get("failures", "0")) >= 1 for s in root.iter("testsuite"))
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def test_json_console_and_summary_agree_on_failure():
|
|
40
|
+
res = _results()
|
|
41
|
+
assert "1 blocking failure" in report.summary_line(res) \
|
|
42
|
+
or "blocking" in report.summary_line(res)
|
|
43
|
+
assert "required-sections" in report.console(res)
|
|
44
|
+
assert '"passed": false' in report.json_report(res)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_extract_reads_md_and_txt(tmp_path):
|
|
48
|
+
md = tmp_path / "s.md"
|
|
49
|
+
md.write_text("# hello", encoding="utf-8")
|
|
50
|
+
txt = tmp_path / "s.txt"
|
|
51
|
+
txt.write_text("plain", encoding="utf-8")
|
|
52
|
+
assert extract(md) == "# hello"
|
|
53
|
+
assert extract(txt) == "plain"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def test_extract_rejects_unknown_and_missing(tmp_path):
|
|
57
|
+
odd = tmp_path / "s.xyz"
|
|
58
|
+
odd.write_text("x", encoding="utf-8")
|
|
59
|
+
with pytest.raises(ValueError):
|
|
60
|
+
extract(odd)
|
|
61
|
+
with pytest.raises(FileNotFoundError):
|
|
62
|
+
extract(tmp_path / "absent.md")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def test_module_entry_point_reports_version(capsys, monkeypatch):
|
|
66
|
+
monkeypatch.setattr("sys.argv", ["docassert", "--version"])
|
|
67
|
+
with pytest.raises(SystemExit) as exc:
|
|
68
|
+
runpy.run_module("docassert.__main__", run_name="__main__")
|
|
69
|
+
assert exc.value.code == 0
|
|
70
|
+
assert "docassert" in capsys.readouterr().out
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/benefits-realization.criteria.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/data-migration-plan.criteria.yaml
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
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/raci-stakeholder.criteria.yaml
RENAMED
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/criteria/release-cutover-plan.criteria.yaml
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
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/benefits-realization.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/data-migration-plan.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/post-implementation-review.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/schema/release-cutover-plan.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
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/benefits-realization.template.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/data-migration-plan.template.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
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/raci-stakeholder.template.md
RENAMED
|
File without changes
|
{docassert-0.16.0 → docassert-0.17.0}/docassert/_data/templates/release-cutover-plan.template.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|