Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,14 @@ context features (−0.006 typed F1 [−0.027, +0.020]) or the part-of-speech fe
documents to 0.143 with 120, then stays flat (0.145 with all 239); span agreement keeps rising
slowly. See [`reports/crf-ablations/`](reports/crf-ablations/README.md).

**Ablations and learning curve (DeBERTa, held-out half, three seeds each).** DeBERTa needs far
more data than the CRF: typed agreement is 0.075 with 60 training documents, 0.097 with 120 and
0.197 with all 239, and every reduced-data seed is clearly worse than the full model. Removing
heading/list context or the group objective makes no clear difference to held-out typed
agreement. Without context, the false-prerequisite rate is higher for all three seeds, and
hand-labelled typed F1 is lower for all three (clear for one seed each). See
[`reports/neural/ablation-1/`](reports/neural/ablation-1/README.md).

95% project-group bootstrap intervals (1,000 resamples). Full reports, including scores against
the 28 model-made dev records (which measure agreement with the drafting model, not accuracy),
are in [`reports/pilot/`](reports/pilot/README.md). The paired difference from adding `batch-01` (+0.214 typed F1,
Expand Down
11 changes: 10 additions & 1 deletion docs/model_card.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,16 @@ Measured on the CRF, as agreement with the 172 model-drafted dev records
- **Learning curve:** typed agreement rises from 0.054 with 30 training documents to 0.143 with
120, then stays flat at about 0.14. Span agreement keeps rising slowly.

The group-objective ablation and transformer learning curves need a GPU and have not been run.
Measured on DeBERTa-v3-small, as agreement with the held-out half (61 documents), three seeds
each ([`reports/neural/ablation-1/`](../reports/neural/ablation-1/README.md)):
- **Learning curve:** typed agreement is 0.075 with 60 training documents, 0.097 with 120 and
0.197 with 239. Every reduced-data seed is clearly worse, so unlike the CRF, DeBERTa is
still data-limited.
- **Context:** removing it makes no clear difference to held-out typed agreement. The
false-prerequisite rate is higher, and hand-labelled typed F1 lower, for all three seeds
(each clear for one seed).
- **Group objective:** not measurable, because no run reproduces a drafted group exactly.
Without it, results vary four times as much across seeds.

## Release process

Expand Down
6 changes: 4 additions & 2 deletions docs/training_on_gpu.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,10 @@ On a T4 it takes about 1–1.5 hours:
```

Only `triggermap-neural-results.tgz` is needed back. `score_neural.sh` picks one best run per
grid, which suits model comparisons but not ablations, so these results are scored per variant
instead.
grid, which suits model comparisons but not ablations. Score this run with
`bash scripts/gpu/score_ablations.sh <archive>` instead: it reports every seed and compares
each variant with the full model trained with the same seed. Results of the first run are in
[`reports/neural/ablation-1/`](../reports/neural/ablation-1/README.md).

## Scoring on the development machine

Expand Down
4 changes: 2 additions & 2 deletions reports/crf-ablations/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,8 @@ Every run, with intervals, is in [`experiment.md`](experiment.md).
agreement much. The limit is the attribute classifiers (category and role), not the number of
spans.
- **The group-objective ablation does not apply to the CRF.** Its group classifier is separate
and predicts no matching group. That ablation is planned for the transformer
(`configs/experiments/ablations.toml`), which needs a GPU.
and predicts no matching group. The transformer's ablations, including the group objective,
are in [`../neural/ablation-1/`](../neural/ablation-1/README.md).

Every number here is agreement with model drafts or a 10-document slice; neither is a release
result.
Expand Down
107 changes: 107 additions & 0 deletions reports/neural/ablation-1/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# Transformer ablations and learning curve (ablation-1, 2026-11-08)

A Kaggle run (one Tesla T4) of
[`configs/experiments/ablations.toml`](../../../configs/experiments/ablations.toml).

**Recipe:** the best grid cell of neural run 3, with one factor changed at a time:
- DeBERTa-v3-small, `sqrt` span-tag weights, learning rate 5e-5;
- up to 20 epochs, patience 3, no early stop before epoch 6;
- three seeds for every variant.

**Data:**
- **Training:** the train split of `pilot-2`, `batch-01` and `batch-02` (239 documents), as in
runs 1–3.
- **Early stopping:** the selection half of the model-drafted dev records
(`splits/selection-v1/selection.json`, 111 documents). Nothing else was used for it.
- **Scored on:** the held-out half (61 documents in 46 other project groups) and the 10
hand-labelled dev documents. Against model drafts, the scores measure **agreement with the
drafting model, not accuracy**.
- **Untouched:** the test split.

**No run is selected:** every seed is reported, and each variant is compared with the full
model trained with the same seed.

**Variants:**

| Variant | Change |
|---|---|
| `full` | none |
| `no-context` | no heading or list context in the windows |
| `no-group` | group loss weight 0 |
| `docs-60`, `docs-120` | a seeded random subset of 60 or 120 training documents |

## Results (held-out half, 61 documents)

Mean ± SD across the three seeds. The last column is typed F1 on the 10 hand-labelled dev
documents.

| Variant | Typed F1 | Exact span F1 | Exact span precision | False-prerequisite rate | Hand-labelled typed F1 |
|---|---:|---:|---:|---:|---:|
| full | 0.197 ± 0.012 | 0.230 ± 0.012 | 0.166 ± 0.012 | 0.493 ± 0.070 | 0.328 ± 0.043 |
| no-context | 0.199 ± 0.027 | 0.235 ± 0.028 | 0.168 ± 0.024 | 0.527 ± 0.074 | 0.256 ± 0.035 |
| no-group | 0.185 ± 0.048 | 0.227 ± 0.059 | 0.163 ± 0.056 | 0.541 ± 0.111 | 0.281 ± 0.093 |
| docs-120 | 0.097 ± 0.041 | 0.119 ± 0.040 | 0.076 ± 0.031 | 0.697 ± 0.086 | 0.186 ± 0.105 |
| docs-60 | 0.075 ± 0.031 | 0.090 ± 0.040 | 0.060 ± 0.030 | 0.633 ± 0.047 | 0.104 ± 0.066 |

For reference, the CRF (`crf-batches-01-02`) scores 0.127 typed F1 and a 0.412
false-prerequisite rate on the same 61 documents ([`../run-3/`](../run-3/README.md)).

### Paired differences against the full model, same seed (B − A)

95% project-group bootstrap intervals, 1,000 resamples. Bold marks a clear difference.

| Variant | Seed | Typed F1, held-out | False-prerequisite rate, held-out | Typed F1, hand-labelled (10) |
|---|---:|---:|---:|---:|
| no-context | 0 | +0.019 [−0.021, +0.062] | +0.038 [−0.021, +0.091] | −0.073 [−0.190, +0.021] |
| no-context | 1 | +0.000 [−0.028, +0.027] | **+0.042 [+0.005, +0.078]** | −0.027 [−0.079, +0.009] |
| no-context | 2 | −0.012 [−0.044, +0.026] | +0.023 [−0.022, +0.064] | **−0.117 [−0.232, −0.034]** |
| no-group | 0 | −0.015 [−0.060, +0.028] | +0.031 [−0.024, +0.089] | −0.009 [−0.113, +0.101] |
| no-group | 1 | +0.030 [−0.003, +0.064] | **−0.070 [−0.117, −0.024]** | +0.030 [−0.054, +0.134] |
| no-group | 2 | **−0.051 [−0.081, −0.017]** | **+0.183 [+0.132, +0.238]** | **−0.162 [−0.325, −0.018]** |
| docs-120 | 0 | **−0.120 [−0.180, −0.063]** | **+0.240 [+0.160, +0.312]** | **−0.215 [−0.308, −0.110]** |
| docs-120 | 1 | **−0.057 [−0.092, −0.024]** | **+0.062 [+0.012, +0.108]** | +0.024 [−0.067, +0.104] |
| docs-120 | 2 | **−0.124 [−0.169, −0.083]** | **+0.310 [+0.256, +0.369]** | **−0.233 [−0.428, −0.064]** |
| docs-60 | 0 | **−0.162 [−0.219, −0.110]** | **+0.209 [+0.122, +0.293]** | **−0.335 [−0.565, −0.122]** |
| docs-60 | 1 | **−0.125 [−0.174, −0.083]** | **+0.110 [+0.060, +0.166]** | **−0.133 [−0.307, −0.036]** |
| docs-60 | 2 | **−0.078 [−0.123, −0.031]** | **+0.101 [+0.038, +0.170]** | **−0.204 [−0.431, −0.003]** |

Full reports: `compare_holdout_*.md`, `compare_manual_*.md`, and `<run>_dev_holdout.md` /
`<run>_dev_manual.md` for every run. Selection-half scores are in
[`experiment.md`](experiment.md).

## Reading

- **DeBERTa needs much more data than the CRF.** With 60 or 120 training documents, every seed
is clearly worse than with all 239, on typed agreement and on invented prerequisites. Typed
agreement roughly doubles from 120 to 239 documents (0.097 → 0.197). The CRF, by contrast,
stops improving at about 120 documents ([`../../crf-ablations/`](../../crf-ablations/README.md);
measured on all 172 agreement records). So more training documents would likely raise
DeBERTa's agreement further. With model-drafted labels, though, that means agreement with the
drafting model, not shown accuracy.
- **Heading and list context: no clear effect on held-out agreement,** but every sign points
the same way. Without context, the false-prerequisite rate is higher for all three seeds
(+0.023 to +0.042, clear for one), and hand-labelled typed F1 is lower for all three (0.328 →
0.256 on average, clear for one seed). That is weak evidence that context helps; 61 and 10
documents cannot settle it.
- **Group objective: not measurable here.** No run reproduces a single drafted group exactly
(group F1 0.000 everywhere), so its own target cannot be scored. Its effect on spans is
inconsistent: one seed is clearly better without it, and one is clearly worse.
- **Training is unstable at this data size.** The worse seeds stopped early: `no-group` seed 2
peaked at epoch 6, and `docs-120` seeds 0 and 2 at epochs 9 and 7. Without the group loss,
the spread across seeds is four times larger (SD 0.048 against 0.012). Single runs should
not be trusted; seed means are the unit of comparison.
- **The recipe reproduces.** The three `full` seeds score 0.208, 0.198 and 0.185 held-out.
Run 3 scored 0.207, 0.198 and 0.185 with the same settings.

## Provenance

- Results archive SHA-256 `34451e81108226bb1067b8a458b7b1491c9979aa4309e8e69237c5044a5f3240`.
- Per-run `metadata/` (configuration, base revision, training hash and origins, per-epoch
losses and dev scores, peak GPU memory) and every run's `predictions/` are committed. The
weights are not.

To rescore from the archive:

```bash
bash scripts/gpu/score_ablations.sh ~/Downloads/triggermap-neural-results.tgz
```
57 changes: 57 additions & 0 deletions reports/neural/ablation-1/ablation-1-docs-120-seed0_dev_holdout.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Agreement with model drafts (held-out half): ablation-1-docs-120-seed0

- Gold: `annotations/batches/batch-03.jsonl`, `annotations/batches/batch-06.jsonl` (dev split of `splits/pool-v1.json`; origin: all; subset `splits/selection-v1/holdout.json`; 61 documents)
- Predictions: `reports/neural/ablation-1/predictions/ablation-1-docs-120-seed0.jsonl` (ablation-1-docs-120-seed0)
- Bootstrap: 1000 resamples, project clusters, seed 0
- Documents: 61 (57 with gold conditions, 4 without)

## Headline metrics (95% bootstrap intervals)

| Metric | Estimate | 95% CI |
|---|---:|:---:|
| Typed condition micro-F1 (span + category + role) | 0.089 | [0.057, 0.122] |
| Exact span F1 | 0.109 | [0.072, 0.148] |
| Exact span precision | 0.068 | [0.044, 0.094] |
| Exact span recall | 0.271 | [0.194, 0.339] |
| Role macro-F1 (roles with gold support) | 0.049 | [0.021, 0.100] |
| Category macro-F1 | 0.070 | [0.042, 0.100] |
| Group exact-match F1 | 0.000 | [0.000, 0.000] |
| Complete-document exact match, documents with conditions | 0.000 | [0.000, 0.000] |
| Complete-document exact match, documents without conditions | 0.000 | [0.000, 0.000] |
| False prerequisite rate (lower is better) | 0.668 | [0.602, 0.723] |
| Reversed meaning rate (lower is better) | 0.033 | [0.006, 0.063] |
| Category accuracy on exactly matched spans | 0.842 | [0.717, 0.951] |
| Role accuracy on exactly matched spans | 0.974 | [0.905, 1.000] |

## Per-role results (exact span + role)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| REQUIRED | 0.070 | 0.292 | 0.113 | 120 |
| EXCEPTION | 0.000 | 0.000 | 0.000 | 2 |
| NOT_REQUIRED | 0.053 | 0.200 | 0.083 | 10 |
| UNCERTAIN | 0.000 | 0.000 | 0.000 | 8 |

## Per-category results (exact span + category)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| CONFIGURATION | 0.014 | 0.056 | 0.023 | 18 |
| USAGE | 0.064 | 0.315 | 0.106 | 54 |
| ACCESS | 0.067 | 0.241 | 0.105 | 54 |
| PLATFORM | 0.033 | 0.071 | 0.045 | 14 |

## Precision versus coverage

| Coverage | Confidence ≥ | Typed precision | Retained recall |
|---:|---:|---:|---:|
| 10% | 0.559 | 0.089 | 0.036 |
| 20% | 0.519 | 0.089 | 0.071 |
| 30% | 0.490 | 0.089 | 0.107 |
| 40% | 0.463 | 0.089 | 0.143 |
| 50% | 0.438 | 0.079 | 0.157 |
| 60% | 0.413 | 0.083 | 0.200 |
| 70% | 0.387 | 0.077 | 0.214 |
| 80% | 0.346 | 0.067 | 0.214 |
| 90% | 0.283 | 0.062 | 0.221 |
| 100% | 0.150 | 0.055 | 0.221 |
57 changes: 57 additions & 0 deletions reports/neural/ablation-1/ablation-1-docs-120-seed0_dev_manual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Hand-labelled dev: ablation-1-docs-120-seed0

- Gold: `annotations/pilot/pilot-2.jsonl` (dev split of `splits/pool-v1.json`; origin: manual; 10 documents)
- Predictions: `reports/neural/ablation-1/predictions/ablation-1-docs-120-seed0.jsonl` (ablation-1-docs-120-seed0)
- Bootstrap: 1000 resamples, project clusters, seed 0
- Documents: 10 (9 with gold conditions, 1 without)

## Headline metrics (95% bootstrap intervals)

| Metric | Estimate | 95% CI |
|---|---:|:---:|
| Typed condition micro-F1 (span + category + role) | 0.148 | [0.000, 0.346] |
| Exact span F1 | 0.173 | [0.038, 0.367] |
| Exact span precision | 0.109 | [0.023, 0.250] |
| Exact span recall | 0.412 | [0.091, 0.714] |
| Role macro-F1 (roles with gold support) | 0.096 | [0.021, 0.340] |
| Category macro-F1 | 0.105 | [0.000, 0.333] |
| Group exact-match F1 | 0.100 | [0.000, 0.353] |
| Complete-document exact match, documents with conditions | 0.111 | [0.000, 0.333] |
| Complete-document exact match, documents without conditions | 1.000 | [0.000, 1.000] |
| False prerequisite rate (lower is better) | 0.632 | [0.425, 0.768] |
| Reversed meaning rate (lower is better) | 0.000 | [0.000, 0.000] |
| Category accuracy on exactly matched spans | 0.857 | [0.000, 1.000] |
| Role accuracy on exactly matched spans | 1.000 | [1.000, 1.000] |

## Per-role results (exact span + role)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| REQUIRED | 0.123 | 0.438 | 0.192 | 16 |
| EXCEPTION | 0.000 | 0.000 | 0.000 | 0 |
| NOT_REQUIRED | 0.000 | 0.000 | 0.000 | 0 |
| UNCERTAIN | 0.000 | 0.000 | 0.000 | 1 |

## Per-category results (exact span + category)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| CONFIGURATION | 0.000 | 0.000 | 0.000 | 1 |
| USAGE | 0.105 | 0.444 | 0.170 | 9 |
| ACCESS | 0.182 | 0.400 | 0.250 | 5 |
| PLATFORM | 0.000 | 0.000 | 0.000 | 2 |

## Precision versus coverage

| Coverage | Confidence ≥ | Typed precision | Retained recall |
|---:|---:|---:|---:|
| 9% | 0.611 | 0.000 | 0.000 |
| 20% | 0.565 | 0.077 | 0.059 |
| 30% | 0.530 | 0.158 | 0.176 |
| 41% | 0.497 | 0.192 | 0.294 |
| 50% | 0.488 | 0.156 | 0.294 |
| 59% | 0.452 | 0.132 | 0.294 |
| 70% | 0.405 | 0.111 | 0.294 |
| 80% | 0.381 | 0.098 | 0.294 |
| 91% | 0.313 | 0.103 | 0.353 |
| 100% | 0.163 | 0.094 | 0.353 |
57 changes: 57 additions & 0 deletions reports/neural/ablation-1/ablation-1-docs-120-seed1_dev_holdout.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Agreement with model drafts (held-out half): ablation-1-docs-120-seed1

- Gold: `annotations/batches/batch-03.jsonl`, `annotations/batches/batch-06.jsonl` (dev split of `splits/pool-v1.json`; origin: all; subset `splits/selection-v1/holdout.json`; 61 documents)
- Predictions: `reports/neural/ablation-1/predictions/ablation-1-docs-120-seed1.jsonl` (ablation-1-docs-120-seed1)
- Bootstrap: 1000 resamples, project clusters, seed 0
- Documents: 61 (57 with gold conditions, 4 without)

## Headline metrics (95% bootstrap intervals)

| Metric | Estimate | 95% CI |
|---|---:|:---:|
| Typed condition micro-F1 (span + category + role) | 0.141 | [0.103, 0.198] |
| Exact span F1 | 0.163 | [0.119, 0.226] |
| Exact span precision | 0.110 | [0.078, 0.159] |
| Exact span recall | 0.314 | [0.237, 0.401] |
| Role macro-F1 (roles with gold support) | 0.056 | [0.039, 0.099] |
| Category macro-F1 | 0.102 | [0.073, 0.140] |
| Group exact-match F1 | 0.000 | [0.000, 0.000] |
| Complete-document exact match, documents with conditions | 0.018 | [0.000, 0.052] |
| Complete-document exact match, documents without conditions | 0.750 | [0.000, 1.000] |
| False prerequisite rate (lower is better) | 0.629 | [0.546, 0.700] |
| Reversed meaning rate (lower is better) | 0.056 | [0.013, 0.109] |
| Category accuracy on exactly matched spans | 0.886 | [0.762, 0.978] |
| Role accuracy on exactly matched spans | 0.955 | [0.889, 1.000] |

## Per-role results (exact span + role)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| REQUIRED | 0.128 | 0.342 | 0.186 | 120 |
| EXCEPTION | 0.000 | 0.000 | 0.000 | 2 |
| NOT_REQUIRED | 0.000 | 0.000 | 0.000 | 10 |
| UNCERTAIN | 0.022 | 0.125 | 0.037 | 8 |

## Per-category results (exact span + category)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| CONFIGURATION | 0.034 | 0.111 | 0.052 | 18 |
| USAGE | 0.107 | 0.389 | 0.167 | 54 |
| ACCESS | 0.139 | 0.296 | 0.189 | 54 |
| PLATFORM | 0.000 | 0.000 | 0.000 | 14 |

## Precision versus coverage

| Coverage | Confidence ≥ | Typed precision | Retained recall |
|---:|---:|---:|---:|
| 10% | 0.844 | 0.200 | 0.057 |
| 20% | 0.735 | 0.225 | 0.129 |
| 30% | 0.667 | 0.200 | 0.171 |
| 40% | 0.611 | 0.175 | 0.200 |
| 50% | 0.555 | 0.145 | 0.207 |
| 60% | 0.514 | 0.121 | 0.207 |
| 70% | 0.466 | 0.114 | 0.229 |
| 80% | 0.429 | 0.116 | 0.264 |
| 90% | 0.360 | 0.103 | 0.264 |
| 100% | 0.188 | 0.095 | 0.271 |
57 changes: 57 additions & 0 deletions reports/neural/ablation-1/ablation-1-docs-120-seed1_dev_manual.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Hand-labelled dev: ablation-1-docs-120-seed1

- Gold: `annotations/pilot/pilot-2.jsonl` (dev split of `splits/pool-v1.json`; origin: manual; 10 documents)
- Predictions: `reports/neural/ablation-1/predictions/ablation-1-docs-120-seed1.jsonl` (ablation-1-docs-120-seed1)
- Bootstrap: 1000 resamples, project clusters, seed 0
- Documents: 10 (9 with gold conditions, 1 without)

## Headline metrics (95% bootstrap intervals)

| Metric | Estimate | 95% CI |
|---|---:|:---:|
| Typed condition micro-F1 (span + category + role) | 0.305 | [0.197, 0.455] |
| Exact span F1 | 0.339 | [0.233, 0.480] |
| Exact span precision | 0.238 | [0.151, 0.387] |
| Exact span recall | 0.588 | [0.444, 0.727] |
| Role macro-F1 (roles with gold support) | 0.204 | [0.164, 0.500] |
| Category macro-F1 | 0.199 | [0.130, 0.404] |
| Group exact-match F1 | 0.167 | [0.000, 0.421] |
| Complete-document exact match, documents with conditions | 0.111 | [0.000, 0.300] |
| Complete-document exact match, documents without conditions | 1.000 | [0.000, 1.000] |
| False prerequisite rate (lower is better) | 0.545 | [0.360, 0.698] |
| Reversed meaning rate (lower is better) | 0.000 | [0.000, 0.000] |
| Category accuracy on exactly matched spans | 0.900 | [0.700, 1.000] |
| Role accuracy on exactly matched spans | 1.000 | [1.000, 1.000] |

## Per-role results (exact span + role)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| REQUIRED | 0.303 | 0.625 | 0.408 | 16 |
| EXCEPTION | 0.000 | 0.000 | 0.000 | 0 |
| NOT_REQUIRED | 0.000 | 0.000 | 0.000 | 0 |
| UNCERTAIN | 0.000 | 0.000 | 0.000 | 1 |

## Per-category results (exact span + category)

| Label | Precision | Recall | F1 | Gold support |
|---|---:|---:|---:|---:|
| CONFIGURATION | 0.000 | 0.000 | 0.000 | 1 |
| USAGE | 0.222 | 0.667 | 0.333 | 9 |
| ACCESS | 0.375 | 0.600 | 0.462 | 5 |
| PLATFORM | 0.000 | 0.000 | 0.000 | 2 |

## Precision versus coverage

| Coverage | Confidence ≥ | Typed precision | Retained recall |
|---:|---:|---:|---:|
| 10% | 0.916 | 0.750 | 0.176 |
| 19% | 0.784 | 0.500 | 0.235 |
| 31% | 0.710 | 0.385 | 0.294 |
| 40% | 0.542 | 0.294 | 0.294 |
| 50% | 0.522 | 0.286 | 0.353 |
| 60% | 0.507 | 0.280 | 0.412 |
| 69% | 0.498 | 0.241 | 0.412 |
| 81% | 0.447 | 0.235 | 0.471 |
| 90% | 0.391 | 0.211 | 0.471 |
| 100% | 0.307 | 0.214 | 0.529 |
Loading