Commit 4472789
feat(agent): interaction quality ops & recipe, bad-case HTML report, and robust JSONL / HF meta loading (#957)
* poc of agent-related ops
Made-with: Cursor
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* preliminary test of minimal_configs (01 to 05) (#944)
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* test of minimal_configs (06 to 08); optimize some agent ops (#947)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* feat(agent ops): end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples (#949)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* fix(agent): multi-turn tool dialog, bad-case gating, report zh-tier + evidence
Made-with: Cursor
* fix(agent): llm_quality record schema + dialog history caps & prompt truncation
- Normalize LLM recommendation to list[str] in parse_output (fixes HF datasets shard align)
- agent_dialog_normalize_mapper: configurable history caps, head+tail write-back, meta flag
- dialog_* mappers: shared max_*_chars_for_prompt via dialog_llm_input_utils
- Recipe/docs: agent_interaction_quality_analysis, PERFORMANCE_LLM, BAD_CASE_INSIGHTS
- Tests: agent_dialog_normalize_mapper, llm_analysis_filter parse_output
- build_op_doc: exclude dialog_llm_input_utils helper; video_camera_pose droid_args docstring
Made-with: Cursor
* fix(agent-ops): multi-turn tool dialog, bad-case gating, report zh-tier + evidence, dialog history caps (#950)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* fix(agent): multi-turn tool dialog, bad-case gating, report zh-tier + evidence
Made-with: Cursor
* fix(agent): llm_quality record schema + dialog history caps & prompt truncation
- Normalize LLM recommendation to list[str] in parse_output (fixes HF datasets shard align)
- agent_dialog_normalize_mapper: configurable history caps, head+tail write-back, meta flag
- dialog_* mappers: shared max_*_chars_for_prompt via dialog_llm_input_utils
- Recipe/docs: agent_interaction_quality_analysis, PERFORMANCE_LLM, BAD_CASE_INSIGHTS
- Tests: agent_dialog_normalize_mapper, llm_analysis_filter parse_output
- build_op_doc: exclude dialog_llm_input_utils helper; video_camera_pose droid_args docstring
Made-with: Cursor
* feat(agent): bad-case HTML report UX + HF meta stability for normalize
Bad-case report (generate_bad_case_report.py):
- CJK fonts for matplotlib/body; bar labels; section order (charts → insights → cases)
- LLM page-top summary: compact digest, shorter prompt/tokens/timeout; default qwen3.5-plus
- Drilldown: page cap + sidecar *_drilldown_full.jsonl; copy and nav tweaks
- Richer agent_insight_llm cards; rule-based fallback summary
agent_dialog_normalize_mapper:
- Stable HF Arrow meta: always agent_dialog_history_compressed bool; list[str] placeholders
for empty tool/skill types; filter falsy in tool_type_mapper and skill_insight_mapper
Pipeline: run_bad_case_pipeline report uses argv array safe under set -u; BAD_CASE_REPORT_LLM=1
Tests + recipe yaml aligned.
Made-with: Cursor
* feat(agent): bad-case HTML report UX + HF meta stability for normalize (#951)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* fix(agent): multi-turn tool dialog, bad-case gating, report zh-tier + evidence
Made-with: Cursor
* fix(agent): llm_quality record schema + dialog history caps & prompt truncation
- Normalize LLM recommendation to list[str] in parse_output (fixes HF datasets shard align)
- agent_dialog_normalize_mapper: configurable history caps, head+tail write-back, meta flag
- dialog_* mappers: shared max_*_chars_for_prompt via dialog_llm_input_utils
- Recipe/docs: agent_interaction_quality_analysis, PERFORMANCE_LLM, BAD_CASE_INSIGHTS
- Tests: agent_dialog_normalize_mapper, llm_analysis_filter parse_output
- build_op_doc: exclude dialog_llm_input_utils helper; video_camera_pose droid_args docstring
Made-with: Cursor
* feat(agent): bad-case HTML report UX + HF meta stability for normalize
Bad-case report (generate_bad_case_report.py):
- CJK fonts for matplotlib/body; bar labels; section order (charts → insights → cases)
- LLM page-top summary: compact digest, shorter prompt/tokens/timeout; default qwen3.5-plus
- Drilldown: page cap + sidecar *_drilldown_full.jsonl; copy and nav tweaks
- Richer agent_insight_llm cards; rule-based fallback summary
agent_dialog_normalize_mapper:
- Stable HF Arrow meta: always agent_dialog_history_compressed bool; list[str] placeholders
for empty tool/skill types; filter falsy in tool_type_mapper and skill_insight_mapper
Pipeline: run_bad_case_pipeline report uses argv array safe under set -u; BAD_CASE_REPORT_LLM=1
Tests + recipe yaml aligned.
Made-with: Cursor
* fix: optional stdlib json for HF datasets JSONL (ujson Value too big)
- Add DATA_JUICER_USE_STDLIB_JSON env patch in init_configs
- Document workaround in config_all.yaml and DatasetCfg guides
Made-with: Cursor
* fix large int error (#952)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* fix(agent): multi-turn tool dialog, bad-case gating, report zh-tier + evidence
Made-with: Cursor
* fix(agent): llm_quality record schema + dialog history caps & prompt truncation
- Normalize LLM recommendation to list[str] in parse_output (fixes HF datasets shard align)
- agent_dialog_normalize_mapper: configurable history caps, head+tail write-back, meta flag
- dialog_* mappers: shared max_*_chars_for_prompt via dialog_llm_input_utils
- Recipe/docs: agent_interaction_quality_analysis, PERFORMANCE_LLM, BAD_CASE_INSIGHTS
- Tests: agent_dialog_normalize_mapper, llm_analysis_filter parse_output
- build_op_doc: exclude dialog_llm_input_utils helper; video_camera_pose droid_args docstring
Made-with: Cursor
* feat(agent): bad-case HTML report UX + HF meta stability for normalize
Bad-case report (generate_bad_case_report.py):
- CJK fonts for matplotlib/body; bar labels; section order (charts → insights → cases)
- LLM page-top summary: compact digest, shorter prompt/tokens/timeout; default qwen3.5-plus
- Drilldown: page cap + sidecar *_drilldown_full.jsonl; copy and nav tweaks
- Richer agent_insight_llm cards; rule-based fallback summary
agent_dialog_normalize_mapper:
- Stable HF Arrow meta: always agent_dialog_history_compressed bool; list[str] placeholders
for empty tool/skill types; filter falsy in tool_type_mapper and skill_insight_mapper
Pipeline: run_bad_case_pipeline report uses argv array safe under set -u; BAD_CASE_REPORT_LLM=1
Tests + recipe yaml aligned.
Made-with: Cursor
* fix: optional stdlib json for HF datasets JSONL (ujson Value too big)
- Add DATA_JUICER_USE_STDLIB_JSON env patch in init_configs
- Document workaround in config_all.yaml and DatasetCfg guides
Made-with: Cursor
* feat: lenient JSONL load (stdlib json, skip bad lines)
- Add load_jsonl_lenient config and DATA_JUICER_JSONL_LENIENT env
- Stream jsonl-only inputs via Dataset.from_generator; document in DatasetCfg
- Add unit tests for jsonl_lenient_loader
Made-with: Cursor
* feat: lenient JSONL load (stdlib json, skip bad lines) (#953)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* fix(agent): multi-turn tool dialog, bad-case gating, report zh-tier + evidence
Made-with: Cursor
* fix(agent): llm_quality record schema + dialog history caps & prompt truncation
- Normalize LLM recommendation to list[str] in parse_output (fixes HF datasets shard align)
- agent_dialog_normalize_mapper: configurable history caps, head+tail write-back, meta flag
- dialog_* mappers: shared max_*_chars_for_prompt via dialog_llm_input_utils
- Recipe/docs: agent_interaction_quality_analysis, PERFORMANCE_LLM, BAD_CASE_INSIGHTS
- Tests: agent_dialog_normalize_mapper, llm_analysis_filter parse_output
- build_op_doc: exclude dialog_llm_input_utils helper; video_camera_pose droid_args docstring
Made-with: Cursor
* feat(agent): bad-case HTML report UX + HF meta stability for normalize
Bad-case report (generate_bad_case_report.py):
- CJK fonts for matplotlib/body; bar labels; section order (charts → insights → cases)
- LLM page-top summary: compact digest, shorter prompt/tokens/timeout; default qwen3.5-plus
- Drilldown: page cap + sidecar *_drilldown_full.jsonl; copy and nav tweaks
- Richer agent_insight_llm cards; rule-based fallback summary
agent_dialog_normalize_mapper:
- Stable HF Arrow meta: always agent_dialog_history_compressed bool; list[str] placeholders
for empty tool/skill types; filter falsy in tool_type_mapper and skill_insight_mapper
Pipeline: run_bad_case_pipeline report uses argv array safe under set -u; BAD_CASE_REPORT_LLM=1
Tests + recipe yaml aligned.
Made-with: Cursor
* fix: optional stdlib json for HF datasets JSONL (ujson Value too big)
- Add DATA_JUICER_USE_STDLIB_JSON env patch in init_configs
- Document workaround in config_all.yaml and DatasetCfg guides
Made-with: Cursor
* feat: lenient JSONL load (stdlib json, skip bad lines)
- Add load_jsonl_lenient config and DATA_JUICER_JSONL_LENIENT env
- Stream jsonl-only inputs via Dataset.from_generator; document in DatasetCfg
- Add unit tests for jsonl_lenient_loader
Made-with: Cursor
* fix(lenient jsonl): do not fall back to HF when folder mixes .json
Mixed extensions previously forced HuggingFace JSON loader and ujson
(Value too big). Now only jsonl* shards are read; others are skipped
with warnings. Log line [lenient jsonl] ACTIVE confirms the path.
Made-with: Cursor
* fix(lenient jsonl): do not fall back to HF when folder mixes .json (#954)
* preliminary test of minimal_configs (01 to 05)
Made-with: Cursor
* test of minimal_configs (06 to 08), optimize some ops
Made-with: Cursor
* conflits resolved and gemini'suggestion adopted
Made-with: Cursor
* end-to-end yaml, analysis toolchain, ui developed; tested on small-scale samples
Made-with: Cursor
* fix(agent): multi-turn tool dialog, bad-case gating, report zh-tier + evidence
Made-with: Cursor
* fix(agent): llm_quality record schema + dialog history caps & prompt truncation
- Normalize LLM recommendation to list[str] in parse_output (fixes HF datasets shard align)
- agent_dialog_normalize_mapper: configurable history caps, head+tail write-back, meta flag
- dialog_* mappers: shared max_*_chars_for_prompt via dialog_llm_input_utils
- Recipe/docs: agent_interaction_quality_analysis, PERFORMANCE_LLM, BAD_CASE_INSIGHTS
- Tests: agent_dialog_normalize_mapper, llm_analysis_filter parse_output
- build_op_doc: exclude dialog_llm_input_utils helper; video_camera_pose droid_args docstring
Made-with: Cursor
* feat(agent): bad-case HTML report UX + HF meta stability for normalize
Bad-case report (generate_bad_case_report.py):
- CJK fonts for matplotlib/body; bar labels; section order (charts → insights → cases)
- LLM page-top summary: compact digest, shorter prompt/tokens/timeout; default qwen3.5-plus
- Drilldown: page cap + sidecar *_drilldown_full.jsonl; copy and nav tweaks
- Richer agent_insight_llm cards; rule-based fallback summary
agent_dialog_normalize_mapper:
- Stable HF Arrow meta: always agent_dialog_history_compressed bool; list[str] placeholders
for empty tool/skill types; filter falsy in tool_type_mapper and skill_insight_mapper
Pipeline: run_bad_case_pipeline report uses argv array safe under set -u; BAD_CASE_REPORT_LLM=1
Tests + recipe yaml aligned.
Made-with: Cursor
* fix: optional stdlib json for HF datasets JSONL (ujson Value too big)
- Add DATA_JUICER_USE_STDLIB_JSON env patch in init_configs
- Document workaround in config_all.yaml and DatasetCfg guides
Made-with: Cursor
* feat: lenient JSONL load (stdlib json, skip bad lines)
- Add load_jsonl_lenient config and DATA_JUICER_JSONL_LENIENT env
- Stream jsonl-only inputs via Dataset.from_generator; document in DatasetCfg
- Add unit tests for jsonl_lenient_loader
Made-with: Cursor
* fix(lenient jsonl): do not fall back to HF when folder mixes .json
Mixed extensions previously forced HuggingFace JSON loader and ujson
(Value too big). Now only jsonl* shards are read; others are skipped
with warnings. Log line [lenient jsonl] ACTIVE confirms the path.
Made-with: Cursor
* * no need to convert to str
* use list type for the arg to avoid ckpt failure
* feat(agent): dialog quality mappers, bad-case report UX, pipeline & tests
- Add dialog_* LLM axis mappers, trace coherence, tool relevance, PII suspect
- agent_output_locale; extend bad-case signals, insight & usage/tool mappers
- generate_bad_case_report: TOC/sidebar, insight↔drill links, snapshot 算子 row
- Recipe/docs/Operators.md/pyproject; mapper & locale tests
- build_op_doc: exclude dialog_quality_llm_utils (helper, not an OP)
Made-with: Cursor
* feat(demos/agent): enrich bad-case report and agent skill insights
- HTML report: macro distributions (tools, skills, intent/topic/sentiment) with bar charts and optional word clouds; TOC and chart section wiring.
- Omit PII audit / redaction–related samples from high_precision and watchlist insight excerpts (drilldown/export unchanged).
- agent_skill_insight_mapper: prompt asks for concrete ~10-char (zh) / 4–8-word (en) capability phrases; forbid vague read/write–style tags.
- Docs: root README link to demos/agent; maintainer checklist in demos/agent README; YAML/minimal_configs notes.
- Tests: generate_bad_case_report smoke (PII omission); agent_skill_insight prompt assertions.
Made-with: Cursor
* * fix some problems
* * update op doc building logics: remove those base classes that are not registered into the OPERATORS
* * fix accelerator assignment
* * check if it's a dict before nested query
* feat(agent): enrich bad-case report and skill insight parsing
- agent_skill_insight_mapper: split labels on ,,、;; for CN/EN separators
- generate_bad_case_report: mirror split in macro stats (no re-run required)
- Optional semantic clustering for insight headlines/audit (scikit-learn)
- Insight model tabs: default full model id, family mode flag; order by batch volume
- Stack request_model chart: Top 5 by requests + merged remainder bar
- Extend model family hints (Kimi, GLM, MiniMax); tab/chart copy updates
- Smoke tests: PII omission, skill-insight macro split; --no-insight-semantic-cluster in PII run
Made-with: Cursor
* feat(agent): PII mappers, recipe notes, and bad-case report PII grouping
PII / redaction:
- Expand pii_redaction_mapper (PEM/JWT/URL/IP/MAC ordering, optional extended PII) with tests.
- pii_llm_suspect_mapper: spaCy install/locks, safer logging; prompts mention URL/IP/MAC/JWT/PEM leaks.
Reporting / demo:
- generate_bad_case_report: non-PII vs PII-flagged insight subsections; minimal PII cards;
headline clusters use non-PII rows only; align redaction placeholders for grouping.
- agent_interaction_quality_analysis.yaml: pii_redaction indentation and default-behavior comment.
Recent branch history (already on upstream before this commit):
- OP doc build skips unregistered base classes; accelerator assignment fix;
nested-query dict guard; bad-case report + skill insight parsing enrichments.
Made-with: Cursor
* feat(agent): dual PII-safe/audit reports and diversified drilldown
- Default writes safe HTML plus *_pii_audit.html; --report-pii-variants safe|audit|both
- Case study: ~half high_precision / half watchlist quota with spillover
- Reuse char TF-IDF + MiniBatchKMeans round-robin for Insight cards and case-study page
- Remove in-page PII minimal-card split; safe variant omits PII rows from insight + drill
- run_bad_case_pipeline.sh echoes audit path; smoke tests updated
Made-with: Cursor
* feat(agent): dialog shape and token/latency metrics in bad-case report
- New section #sec-dialog-metrics: messages length, user turns, agent_turn_count,
text chars, choices length, tool-touch message count, tokens (meta then stats), latency.
- Optional matplotlib histograms when --no-charts is off; TOC and charts intro link to section.
- Smoke test asserts sec-dialog-metrics anchor.
Made-with: Cursor
* feat(agent): multi-jsonl report input and provenance fold
- Repeatable --input in generate_bad_case_report and verify; load_merged_rows reads paths in order.
- run_bad_case_pipeline report: multiple JSONL, optional trailing OUT.html.
- Multi-input: compact page meta and bottom #sec-data-provenance details for audit.
Made-with: Cursor
* + add dataset encryption and decryption
* feat(agent): streaming bad-case report scan and message in case study
- Default one-pass stream: exact tier/signal/cohort/macro counts without loading all rows.
- Bounded drill/insight candidate pools (--drill-retention-cap, --insight-retention-cap);
dialog histograms use per-metric reservoir sampling (--dialog-metric-samples).
- --eager-load-all-rows restores legacy full in-memory load (small data / debug).
- Case study block shows message (fallback response); jsonl export includes both;
PII/signal snippets and suspect_empty evidence prefer message text.
Made-with: Cursor
* + make json compat work
+ use DataJuicerTestCaseBase instead of unittest.TestCase
+ add test cases for datasets_json_compat
* feat(agent): polish bad-case report case study and refresh agent docs
- Case study: format messages[] as role-labeled turns; show response in its own panel
- Support User:/Assistant:-style plain-text threads for readability
- Update BAD_CASE_INSIGHTS.md and QUICKSTART_BAD_CASE.md
Made-with: Cursor
* - remove redundant docs and contents
+ add a demo video for bad case report
+ add a script to download demo dataset
* * limit the cpu count of single container to 128
* + add ray tag for ray executor encrypt test cases
* * update datasets to >= 4.7.0 to support JSON type and ujson loading
* fix test case bugs
* update cudf-cu12 to follow newer pyarrow
* refactor: enhance signature annotation resolution for ops search functionality
* * use num_proc=None to disable multiprocessing for get_access_log
* use num_proc None to disable multi-processing
* * fix test cases
* remove image_captioning_from_gpt4v_mapper
+ add normalization to llm_analysis results
* * loose the assertion condition
* check num_proc before comparison
* normalize the records as well
* * use dumped string for llm tags
* fix test case
* * fix test cases
* * update model dist
---------
Co-authored-by: 烈霖 <lielin.hyl@alibaba-inc.com>
Co-authored-by: cmgzn <zdongs@outlook.com>1 parent 003e2a8 commit 4472789
File tree
139 files changed
+15739
-1047
lines changed- .pre-commit-hooks
- data_juicer
- config
- core
- data
- executor
- format
- ops
- filter
- mapper
- tools
- utils
- demos/agent
- minimal_configs
- scripts
- docs
- op_doc_enhance_workflow
- operators/mapper
- tests
- config
- core
- data
- executor
- tracer
- demos/agent
- format
- ops
- filter
- mapper
- utils
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
139 files changed
+15739
-1047
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
42 | 45 | | |
43 | 46 | | |
44 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
80 | 87 | | |
81 | 88 | | |
82 | 89 | | |
| |||
273 | 280 | | |
274 | 281 | | |
275 | 282 | | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
276 | 293 | | |
277 | 294 | | |
278 | 295 | | |
| |||
375 | 392 | | |
376 | 393 | | |
377 | 394 | | |
| 395 | + | |
| 396 | + | |
378 | 397 | | |
379 | 398 | | |
380 | 399 | | |
| |||
658 | 677 | | |
659 | 678 | | |
660 | 679 | | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
661 | 715 | | |
662 | 716 | | |
663 | 717 | | |
| |||
666 | 720 | | |
667 | 721 | | |
668 | 722 | | |
| 723 | + | |
669 | 724 | | |
670 | 725 | | |
671 | 726 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
| 190 | + | |
190 | 191 | | |
191 | 192 | | |
192 | 193 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
269 | 269 | | |
270 | 270 | | |
271 | 271 | | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
272 | 299 | | |
273 | 300 | | |
274 | 301 | | |
| |||
764 | 791 | | |
765 | 792 | | |
766 | 793 | | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
767 | 801 | | |
768 | 802 | | |
769 | 803 | | |
| |||
985 | 1019 | | |
986 | 1020 | | |
987 | 1021 | | |
| 1022 | + | |
| 1023 | + | |
| 1024 | + | |
| 1025 | + | |
| 1026 | + | |
| 1027 | + | |
| 1028 | + | |
| 1029 | + | |
| 1030 | + | |
| 1031 | + | |
| 1032 | + | |
| 1033 | + | |
| 1034 | + | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
| 1042 | + | |
| 1043 | + | |
| 1044 | + | |
| 1045 | + | |
| 1046 | + | |
| 1047 | + | |
| 1048 | + | |
| 1049 | + | |
| 1050 | + | |
| 1051 | + | |
| 1052 | + | |
988 | 1053 | | |
989 | 1054 | | |
990 | 1055 | | |
| |||
1203 | 1268 | | |
1204 | 1269 | | |
1205 | 1270 | | |
1206 | | - | |
| 1271 | + | |
| 1272 | + | |
1207 | 1273 | | |
1208 | 1274 | | |
1209 | 1275 | | |
| 1276 | + | |
1210 | 1277 | | |
1211 | | - | |
1212 | 1278 | | |
1213 | | - | |
1214 | | - | |
| 1279 | + | |
| 1280 | + | |
| 1281 | + | |
| 1282 | + | |
| 1283 | + | |
| 1284 | + | |
1215 | 1285 | | |
1216 | 1286 | | |
1217 | 1287 | | |
| |||
1224 | 1294 | | |
1225 | 1295 | | |
1226 | 1296 | | |
1227 | | - | |
| 1297 | + | |
1228 | 1298 | | |
| 1299 | + | |
1229 | 1300 | | |
1230 | 1301 | | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
| 1305 | + | |
| 1306 | + | |
| 1307 | + | |
1231 | 1308 | | |
1232 | | - | |
| 1309 | + | |
| 1310 | + | |
| 1311 | + | |
| 1312 | + | |
| 1313 | + | |
| 1314 | + | |
| 1315 | + | |
1233 | 1316 | | |
1234 | 1317 | | |
1235 | | - | |
1236 | 1318 | | |
1237 | 1319 | | |
1238 | 1320 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
36 | 41 | | |
| 42 | + | |
37 | 43 | | |
38 | 44 | | |
39 | 45 | | |
| |||
56 | 62 | | |
57 | 63 | | |
58 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
59 | 70 | | |
60 | 71 | | |
61 | 72 | | |
| |||
338 | 349 | | |
339 | 350 | | |
340 | 351 | | |
341 | | - | |
342 | | - | |
343 | | - | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | 352 | | |
352 | 353 | | |
353 | 354 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
156 | 156 | | |
157 | 157 | | |
158 | 158 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| 116 | + | |
| 117 | + | |
116 | 118 | | |
117 | 119 | | |
118 | 120 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
| 118 | + | |
117 | 119 | | |
118 | 120 | | |
119 | 121 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
244 | 244 | | |
245 | 245 | | |
246 | 246 | | |
| 247 | + | |
| 248 | + | |
247 | 249 | | |
248 | 250 | | |
249 | 251 | | |
| |||
0 commit comments