From 6dd782800c9d1a0d2bfe524a3433e881cd5b4946 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Tue, 6 Oct 2026 22:32:45 -0500 Subject: [PATCH 01/13] correct: Redact edit characters (#132) CorrectionEdit was a plain dataclass, so repr() of a correction candidate disclosed each edit's observed and replacement characters. The replacement can be true recovery text. Exclude those two fields from dataclass repr while preserving explicit field access, equality, hashing, and correction behavior. Add a regression that repairs eight erasures and verifies the candidate representation does not reveal the restored characters. Fixes #129 --- src/codex32/correction.py | 6 +++--- tests/test_public_api.py | 21 ++++++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/codex32/correction.py b/src/codex32/correction.py index 9abd345b..5df1a1cc 100644 --- a/src/codex32/correction.py +++ b/src/codex32/correction.py @@ -22,7 +22,7 @@ """Fixed BCH correction derived from PR #70, with reverse-indexed coordinates.""" from collections.abc import Callable, Sequence -from dataclasses import dataclass, replace +from dataclasses import dataclass, field, replace from functools import cache, lru_cache from math import comb from time import monotonic @@ -85,8 +85,8 @@ def __init__( class CorrectionEdit: kind: Literal["substitution", "erasure", "insertion", "deletion", "transposition"] reverse_index: int - observed: str - replacement: str + observed: str = field(repr=False) + replacement: str = field(repr=False) @dataclass(frozen=True, slots=True) diff --git a/tests/test_public_api.py b/tests/test_public_api.py index 09d66d49..1901802c 100644 --- a/tests/test_public_api.py +++ b/tests/test_public_api.py @@ -11,7 +11,16 @@ from data.bip93_vectors import VECTOR_2 import codex32 -from codex32 import CorrectionCandidate, Header, MasterSeed, Share, parse_codex32 +from codex32 import ( + CorrectionCandidate, + CorrectionContext, + Header, + MasterSeed, + Profile, + Share, + correct, + parse_codex32, +) from codex32.errors import InvalidIdentifier, InvalidShareIndex, InvalidThreshold @@ -95,6 +104,16 @@ def test_artifact_default_rendering_does_not_disclose_recovery_text() -> None: assert repr(share) == "Share()" +def test_correction_edits_do_not_render_recovery_characters() -> None: + text = VECTOR_2["share_A"] + candidate = correct(CorrectionContext(Profile.MS), text[:9] + "?" * 8 + text[17:])[0] + rendered = repr(candidate) + + assert len(candidate.edits) == 8 + assert all(f"'{edit.replacement}'" not in rendered for edit in candidate.edits) + assert "observed" not in rendered and "replacement" not in rendered + + def test_master_seed_default_rendering_does_not_disclose_seed_material() -> None: secret = MasterSeed.from_seed(bytes(range(16)), identifier="test") From 85e862198af34125a7b41c8263cee5986dc60910 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Thu, 8 Oct 2026 01:51:01 +0000 Subject: [PATCH 02/13] api: Remove unused public entry points core_descriptors(private=False) asked a named Bitcoin Core wallet for its HD key and built public descriptors from it, but only type-checked the seed it was given, so a wallet holding a different seed returned that wallet's descriptors. Nothing calls it: ms32 wallet hands Core the root xprv with addhdkey and Core builds the descriptors itself with createwalletdescriptor, and Core's listdescriptors and exportwatchonlywallet already provide public descriptors. We are pre-1.0, so delete public API that no command or tool calls instead of maintaining it: - core_descriptors, the WalletPublicDeriver protocol, the descriptor checksum (DESCSUM) and record helpers, and the Core adapter's public_descriptors, gethdkeys and derivehdkey calls; - generate_core_lightning_secret and CreationCeremony.core_lightning, which created fresh Core Lightning secrets that no command creates, and the CL padding check only fresh CL generation reached. Parsing, recovering, deriving and re-sharing an existing cl secret are unchanged. The real-Core fixture and installed-wheel smoke test now check xprv and tprv serialization through master_xprv. The package exports 22 names. The installed package drops from 5,196 to 4,965 logical lines. Fixes #128 Refs #63 Claude-Session: https://claude.ai/code/session_01T233rKgZqE5wzDm3EVTHL1 --- docs/developer/api.md | 57 ++++++--------- src/codex32/__init__.py | 5 +- src/codex32/_bitcoin_core.py | 77 ------------------- src/codex32/checksums.py | 6 +- src/codex32/generation.py | 45 +----------- src/codex32/profiles/cl32.py | 23 +----- src/codex32/wallet.py | 126 +------------------------------- tests/test_bitcoin_core.py | 7 +- tests/test_generation.py | 40 ++-------- tests/test_wallet.py | 120 ++---------------------------- tools/bitcoin_core_regtest.py | 7 +- tools/verify_installed_wheel.py | 4 - 12 files changed, 49 insertions(+), 468 deletions(-) diff --git a/docs/developer/api.md b/docs/developer/api.md index 4e6cd06f..a5891c1e 100644 --- a/docs/developer/api.md +++ b/docs/developer/api.md @@ -44,8 +44,8 @@ generic parse-length failure. | CLI competitor scheduling and pruning | `_competitors.py` | `test_competitors.py` | | incremental alignment syndromes | `_alignment.py` | `test_alignment.py` | | stdlib-only BIP32 root validation and serialization | `_bip32.py`, `profiles/ms32.py` | BIP32 and wallet vectors | -| fixed wallet derivation and descriptors | `wallet.py` | `test_wallet.py` | -| Core target selection and subprocess state | `_bitcoin_core.py` | Core adapter and regtest | +| root xprv handoff | `wallet.py` | `test_wallet.py` | +| Core target selection, descriptor requests, and subprocess state | `_bitcoin_core.py` | `test_bitcoin_core.py`, regtest | | bounded stdin, fixed-prefix TTY entry, and whole-card confirmation | `_cli_input.py` | `test_cli.py` | | command grammar, dispatch, and presentation | `_cli_parser.py`, `cli.py` | `test_cli.py` | @@ -67,13 +67,13 @@ generic parse-length failure. `.text` attribute. - Sharing interpolates payload and checksum together, explicitly constructs the target header, and reparses the result. -- `generation.py` is the only entropy owner and generates only `ms` and `cl`. +- `generation.py` is the only entropy owner and generates only `ms`; it can + also share an existing `cl` secret. - Correction never edits the HRP or separator and reparses every candidate. - `_bip32.py` stops at HMAC-SHA512 root derivation, scalar validity, and root xprv/tprv Base58Check serialization. It performs no child derivation or - secp256k1 point arithmetic. `wallet.py` accepts only `MasterSeed`; EC-dependent - public derivation is supplied through an explicit wallet integration and the - CLI uses Bitcoin Core for that boundary. + secp256k1 point arithmetic. `wallet.py` accepts only `MasterSeed`; Bitcoin + Core performs all EC-dependent derivation. - `_cli_input.py` retains at most nine artifacts and delegates partial-set compatibility to `bip93.py`. Card confirmation clears the terminal and saved scrollback where supported, then displays only entered text after a mismatch. @@ -100,7 +100,7 @@ generic parse-length failure. hidden state. Private Python names are convention rather than access control. The supported -surface is the 25-name package `__all__`; direct use of private helpers is +surface is the 22-name package `__all__`; direct use of private helpers is unsupported but remains in the review scope. ### Size budget @@ -154,14 +154,14 @@ recovery, and share derivation. The `ms32` façade accepts only `ms` artifacts. ## Secret generation `generation.py` is the only module that draws entropy. It generates BIP93 -master seeds and Core Lightning HSM secrets, and splits either validated S type. +master seeds and splits a validated master seed or Core Lightning HSM secret. Core Lightning now defaults to mnemonic recovery, but retains a codex32 HSM secret import path for recovery on an unused node. Fresh unshared seeds default to 16 bytes and use the first 20 bits of their BIP32 fingerprint as public identifier metadata. Fresh shared sets use four -independent random u5 identifier symbols. Raw bytes, re-shared secrets, and CL -generation also use an independent random identifier unless one is supplied. +independent random u5 identifier symbols. Raw bytes and re-shared secrets also +use an independent random identifier unless one is supplied. Random re-sharing never repeats the source set header; an explicitly repeated source header is rejected. @@ -169,15 +169,13 @@ The Python API and CLI accept the six PR #2258 `ms` sizes: 16, 20, 24, 28, 32, and 64 bytes. Other byte lengths are rejected at every public construction boundary; there is no legacy decoder. -One-shot functions create only unshared secrets: +The one-shot function creates only unshared secrets: ```python generate_master_seed(seed_bytes=None, *, byte_length=None, identifier=None) -generate_core_lightning_secret(secret_bytes=None, *, identifier=None) ``` -Shared creation uses `CreationCeremony.master_seed(...)`, -`CreationCeremony.core_lightning(...)`, or +Shared creation uses `CreationCeremony.master_seed(...)` or `CreationCeremony.from_secret(...)`. Exactly one of `share_count` and `indices` is required. `next_share()` returns one pending share, `confirm(text)` must accept its independently re-entered string, and `finish()` returns the secret @@ -185,8 +183,8 @@ only after every requested share is confirmed. There is no public one-shot sharing or `split_secret` function. Fresh and existing Bitcoin CLI creation requires interactive input and output, preflights local Bitcoin Core before entropy or recovery input, and initializes a user-selected wallet after every -share is confirmed. CLI creation does not accept Core Lightning profiles; CL -generation and sharing remain API-only. +share is confirmed. CLI creation does not accept Core Lightning profiles; sharing +an existing CL secret remains API-only. Without `--existing`, omitting the Bitcoin header creates an unshared master seed. With `--existing` and no sharing threshold, a supplied codex32 secret is emitted and confirmed unchanged, and the original validated artifact initializes @@ -580,27 +578,17 @@ Public wallet operations accept only a validated `MasterSeed`. `wallet.py` is stateless and never accepts shares, Core Lightning secrets, BIP39 migration artifacts, or raw bytes. -The public adapter has two functions: - -- `master_xprv(secret, testnet=False)` returns the BIP32 root extended private - key. -- `core_descriptors(...)` returns fixed BIP44, BIP49, BIP84, and BIP86 Bitcoin - Core `importdescriptors` records. Private records use stdlib-only root xprv - serialization; public records require an explicit wallet integration and the - Core wallet whose imported root key will perform hardened derivation. +The public adapter has one function: `master_xprv(secret, testnet=False)` +returns the BIP32 root extended private key, using stdlib-only serialization. +It grants authority over every key derived from the seed, and the CLI warns +before printing it. No installed Python dependency performs secp256k1 operations. The private Bitcoin Core adapter gives Core the root xprv over stdin and asks Core to -create the four standard account-0 descriptor types. Public descriptor -derivation remains available through the explicit integration API. - -Public descriptors contain account xpubs. Private descriptors intentionally -follow Bitcoin Core's root-key form: they contain the root xprv followed by the -complete derivation path. They therefore grant authority over the entire root, -not only the selected account. The CLI warns before printing them. +create the four standard account-0 descriptor types. Core's own wallet +commands provide public descriptors and watch-only exports. -Account, private/public mode, network serialization, and timestamp are explicit -API inputs. The `ms32 wallet` CLI takes `--account 0` and `--timestamp`; the +The `ms32 wallet` CLI takes `--account 0` and `--timestamp`; the selected Bitcoin Core chain is authoritative and there is no wallet `--testnet` flag. `ms32 xprv --testnet` remains explicit because it directly selects xprv versus tprv serialization. The timestamp defaults to `0` so @@ -647,7 +635,7 @@ the BIP32 fingerprint. The Core calls are fixed: `getnetworkinfo`, `getblockchaininfo`, `listwallets`, `getwalletinfo`, `listdescriptors`, `getdescriptorinfo`, `deriveaddresses`, -`validateaddress`, `gethdkeys`, `derivehdkey`, `addhdkey`, +`validateaddress`, `addhdkey`, `createwalletdescriptor`, `importdescriptors`, and `walletlock`. Bitcoin Core alone creates wallets, selects encryption, handles passphrases, stores keys, and provides normal wallet behavior. @@ -692,7 +680,6 @@ These choices are not presented as BIP93 requirements. | BIP39 profiles have no construction or wallet CLI | migration artifacts may still be checked, corrected, recovered, and re-shared generically | | reject existing derivation targets | enforces BIP93's fresh-index wording | | bounded structural correction is deliberately finite | exact capture safety, complete global rank layers, the 48-character ten-second target, and the package audit budget exclude a general recovery engine; longer valid strings keep the same bounded classes | -| private descriptors contain root xprv | matches Bitcoin Core behavior and carries an explicit authority warning | | no caller-supplied partial-basis completion | unauthenticated points can create incompatible same-header polynomials | Unknown-HRP application interpretation, GUI, direct sockets, a general RPC diff --git a/src/codex32/__init__.py b/src/codex32/__init__.py index 78eda948..56ceb771 100644 --- a/src/codex32/__init__.py +++ b/src/codex32/__init__.py @@ -20,14 +20,13 @@ from .generation import ( ConfirmationResult, CreationCeremony, - generate_core_lightning_secret, generate_master_seed, ) from .profiles import Profile from .profiles.bip39 import Bip39Secret from .profiles.cl32 import CoreLightningSecret from .profiles.ms32 import MasterSeed -from .wallet import core_descriptors, master_xprv +from .wallet import master_xprv __all__ = [ "Bip39Secret", @@ -45,11 +44,9 @@ "Secret", "Share", "WorksheetCorrection", - "core_descriptors", "correct", "correct_worksheet_residue", "derive_share", - "generate_core_lightning_secret", "generate_master_seed", "master_xprv", "parse_codex32", diff --git a/src/codex32/_bitcoin_core.py b/src/codex32/_bitcoin_core.py index 695cb56a..606594f6 100644 --- a/src/codex32/_bitcoin_core.py +++ b/src/codex32/_bitcoin_core.py @@ -2,7 +2,6 @@ import hashlib import json -import re import shutil import string import subprocess @@ -15,7 +14,6 @@ from codex32.bech32 import _u5_to_chars, convertbits from codex32.generation import _fingerprint_identifier from codex32.profiles.ms32 import MasterSeed -from codex32.wallet import _descriptor_records class BitcoinCoreError(Exception): @@ -34,9 +32,7 @@ class FingerprintMismatch(BitcoinCoreError): ("regtest", "regtest"), ) -_ORIGIN = re.compile(r"\[(?P[0-9a-f]{8})(?P(?:/[0-9]+[h']?)*)\]") _PRIVATE_MARKERS = ("xprv", "tprv") -_PURPOSES = (44, 49, 84, 86) _OUTPUT_TYPES = ("legacy", "p2sh-segwit", "bech32", "bech32m") @@ -218,79 +214,6 @@ def verify_identity(self, secret: MasterSeed, expected_fingerprint: bytes | None "Bitcoin Core was not changed." ) - def _root_xpub(self, wallet: str) -> str: - result = self._rpc("gethdkeys", wallet=wallet) - if not isinstance(result, list) or len(result) != 1 or not isinstance(result[0], dict): - raise BitcoinCoreError("Bitcoin Core did not return the expected wallet HD key.") - xpub = result[0].get("xpub") - prefix = "xpub" if self.chain == "main" else "tpub" - if ( - result[0].get("has_private") is not True - or not isinstance(xpub, str) - or not xpub.startswith(prefix) - ): - raise BitcoinCoreError("Bitcoin Core did not return the expected private wallet HD key.") - return xpub - - def _derived_key(self, wallet: str, root_xpub: str, path: str) -> tuple[bytes, str]: - result = self._rpc( - "-named", - "derivehdkey", - f"path=m{path}", - f"hdkey={root_xpub}", - wallet=wallet, - ) - origin = result.get("origin") if isinstance(result, dict) else None - xpub = result.get("xpub") if isinstance(result, dict) else None - match = _ORIGIN.fullmatch(origin) if isinstance(origin, str) else None - prefix = "xpub" if self.chain == "main" else "tpub" - if match is None or not isinstance(xpub, str) or not xpub.startswith(prefix): - raise BitcoinCoreError("Bitcoin Core did not return the expected derived HD key.") - normalized_path = match.group("path").replace("'", "h") - if normalized_path != path: - raise BitcoinCoreError("Bitcoin Core returned an unexpected derivation path.") - return bytes.fromhex(match.group("fingerprint")), f"{origin}{xpub}/<0;1>/*" - - def public_descriptors( - self, - secret: MasterSeed, - *, - wallet: str, - account: int = 0, - timestamp: int | Literal["now"] = 0, - ) -> tuple[dict[str, object], ...]: - """Ask Core to derive account xpubs, then normalize their public descriptors.""" - if not isinstance(secret, MasterSeed): - raise TypeError("wallet operations accept only MasterSeed") - root_xpub = self._root_xpub(wallet) - keys: list[str] = [] - expected_fingerprint: bytes | None = None - for purpose in _PURPOSES: - path = f"/{purpose}h/{int(self.chain != 'main')}h/{account}h" - fingerprint, key = self._derived_key(wallet, root_xpub, path) - if expected_fingerprint is None: - expected_fingerprint = fingerprint - elif fingerprint != expected_fingerprint: - raise BitcoinCoreError("Bitcoin Core returned inconsistent master fingerprints.") - keys.append(key) - records = _descriptor_records(tuple(keys), timestamp) # type: ignore[arg-type] - for record in records: - detail = self._rpc("getdescriptorinfo", stdin=str(record["desc"]) + "\n") - expansion = detail.get("multipath_expansion") if isinstance(detail, dict) else None - if ( - not isinstance(detail, dict) - or detail.get("hasprivatekeys") is not False - or not isinstance(expansion, list) - or len(expansion) != 2 - or not all( - isinstance(descriptor, str) - and not any(marker in descriptor for marker in _PRIVATE_MARKERS) - for descriptor in expansion - ) - ): - raise BitcoinCoreError("Bitcoin Core did not validate the expected public descriptor.") - return records - def _target(self, name: str) -> tuple[bool, bool] | None: listing, info = self._rpc("listdescriptors", wallet=name), self._rpc("getwalletinfo", wallet=name) if not isinstance(info, dict) or not isinstance(listing, dict): diff --git a/src/codex32/checksums.py b/src/codex32/checksums.py index 19262d1a..95bf7428 100644 --- a/src/codex32/checksums.py +++ b/src/codex32/checksums.py @@ -1,4 +1,4 @@ -"""Immutable checksum specifications used by codex32 and descriptors.""" +"""Immutable checksum specifications used by codex32.""" from dataclasses import dataclass @@ -16,7 +16,6 @@ 0x0C577EAECCF1990D13C, 0x1887F74F8DC71B10651, ) -_DESCSUM_GEN = (0xF5DEE51989, 0xA9FDCA3312, 0x1BAB10E32D, 0x3706B1677A, 0x644D626FFD) @dataclass(frozen=True, slots=True) @@ -52,9 +51,6 @@ def create(self, values: list[int] | tuple[int, ...]) -> list[int]: _CODEX32 = _Checksum("codex32", _CODEX32_GEN, 13, 0x10CE0795C2FD1E62A, 93) _CODEX32_LONG = _Checksum("Long codex32", _CODEX32_LONG_GEN, 15, 0x43381E570BF4798AB26, 1023) -# Descriptor checksum remains an independently specified, non-codex32 helper. -DESCSUM = _Checksum("Descriptor", _DESCSUM_GEN, 8, 1) - _CRC = ( None, # ``_Checksum`` consumes input bits most-significant bit first. With its diff --git a/src/codex32/generation.py b/src/codex32/generation.py index f135d191..d20ae51b 100644 --- a/src/codex32/generation.py +++ b/src/codex32/generation.py @@ -29,14 +29,7 @@ InvalidThreshold, ) from codex32.profiles import Profile -from codex32.profiles.cl32 import PAYLOAD_LENGTH as CL_PAYLOAD_LENGTH -from codex32.profiles.cl32 import ( - CoreLightningSecret, - _secret_from_bytes, -) -from codex32.profiles.cl32 import ( - _has_generation_padding as _cl_padding, -) +from codex32.profiles.cl32 import CoreLightningSecret from codex32.profiles.ms32 import ( DEFAULT_SEED_BYTES, SEED_BYTE_LENGTHS, @@ -175,14 +168,6 @@ def generate_master_seed( return MasterSeed.from_seed(fresh, identifier=_fingerprint_identifier(fingerprint(fresh))) -def generate_core_lightning_secret( - secret_bytes: bytes | None = None, *, identifier: str | None = None -) -> CoreLightningSecret: - """Generate or encode one unshared Core Lightning HSM secret.""" - identifier = _random_identifier() if identifier is None else _identifier(identifier) - return _secret_from_bytes(secrets.token_bytes(32) if secret_bytes is None else secret_bytes, identifier) - - class CreationCeremony: """Generate and confirm one shared-backup card at a time.""" @@ -256,28 +241,6 @@ def master_seed( None, ) - @classmethod - def core_lightning( - cls, - *, - threshold: int, - share_count: int | None = None, - indices: Sequence[str] | str | None = None, - identifier: str | None = None, - ) -> CreationCeremony: - """Start a ceremony for a fresh shared Core Lightning secret.""" - threshold = _threshold(threshold, allow_zero=False) - identifier = _random_identifier() if identifier is None else _identifier(identifier) - return cls._start( - Profile.CL, - CL_PAYLOAD_LENGTH, - threshold, - share_count, - indices, - identifier, - None, - ) - @classmethod def from_secret( cls, @@ -312,9 +275,7 @@ def from_secret( secret, ) - def _candidate_is_accepted(self, secret: MasterSeed | CoreLightningSecret) -> bool: - if isinstance(secret, CoreLightningSecret): - return _cl_padding(secret) + def _candidate_is_accepted(self, secret: MasterSeed) -> bool: return _valid_root(secret.seed_bytes) and _ms_padding(secret) def next_share(self) -> Share: @@ -338,7 +299,7 @@ def next_share(self) -> Share: if self._position + 1 < self._direct_count or self._secret is not None: break candidate = recover_secret((*cast(list[Share], self._basis), pending)) - assert isinstance(candidate, (MasterSeed, CoreLightningSecret)) + assert isinstance(candidate, MasterSeed) if self._candidate_is_accepted(candidate): self._secret = candidate break diff --git a/src/codex32/profiles/cl32.py b/src/codex32/profiles/cl32.py index ca5b757f..cfc90d98 100644 --- a/src/codex32/profiles/cl32.py +++ b/src/codex32/profiles/cl32.py @@ -3,15 +3,11 @@ from __future__ import annotations from codex32.bech32 import convertbits -from codex32.bip93 import Header, Secret, _from_parts +from codex32.bip93 import Secret from codex32.errors import InvalidLength from codex32.profiles import Profile -SECRET_BYTES, PAYLOAD_LENGTH, TEXT_LENGTH = 32, 52, 74 - - -def _has_generation_padding(secret: CoreLightningSecret) -> bool: - return secret.payload_symbols[-1] & 15 == 0 +PAYLOAD_LENGTH, TEXT_LENGTH = 52, 74 class CoreLightningSecret(Secret): @@ -25,21 +21,6 @@ def secret_bytes(self) -> bytes: return bytes(convertbits(self.payload_symbols, 5, 8, pad=False, accept_any_padding=True)) -def _secret_from_bytes( - secret_bytes: bytes, - identifier: str, - threshold: int = 0, -) -> CoreLightningSecret: - if not isinstance(secret_bytes, bytes): - raise TypeError("secret_bytes must be bytes") - if len(secret_bytes) != SECRET_BYTES: - raise InvalidLength("Core Lightning secrets must contain exactly 32 bytes") - payload = tuple(convertbits(secret_bytes, 8, 5, pad=True, pad_value=0)) - artifact = _from_parts(Profile.CL, Header(threshold, identifier, "s"), payload) - assert isinstance(artifact, CoreLightningSecret) - return artifact - - class _Cl32Rules: profile, label = Profile.CL, "Core Lightning HSM secret" secret_type = CoreLightningSecret diff --git a/src/codex32/wallet.py b/src/codex32/wallet.py index 06b9817a..8ec4c239 100644 --- a/src/codex32/wallet.py +++ b/src/codex32/wallet.py @@ -1,131 +1,11 @@ """Bitcoin wallet interoperability for validated master seeds.""" -from typing import Literal, Protocol - from codex32._bip32 import _master_xprv_from_seed -from codex32.bech32 import _u5_to_chars -from codex32.checksums import DESCSUM from codex32.profiles.ms32 import MasterSeed -_DESCRIPTOR_CHARSET = ( - "0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVWXYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#\"\\ " -) -_TEMPLATES = ( - ("pkh({key})", 44), - ("sh(wpkh({key}))", 49), - ("wpkh({key})", 84), - ("tr({key})", 86), -) - - -class WalletPublicDeriver(Protocol): - """Out-of-process provider for EC-dependent BIP32 public derivation.""" - - def fingerprint(self, secret: MasterSeed) -> bytes: ... - - def public_descriptors( - self, - secret: MasterSeed, - *, - wallet: str, - account: int = 0, - timestamp: int | Literal["now"] = 0, - ) -> tuple[dict[str, object], ...]: ... - - -def _master(secret: MasterSeed) -> MasterSeed: - if not isinstance(secret, MasterSeed): - raise TypeError("wallet operations accept only MasterSeed") - return secret - - -def _account(value: int) -> int: - if isinstance(value, bool) or not isinstance(value, int) or not 0 <= value < 2**31: - raise ValueError("account must be an integer from 0 through 2^31-1") - return value - - -def _descriptor_symbols(text: str) -> list[int]: - groups: list[int] = [] - symbols: list[int] = [] - for character in text: - position = _DESCRIPTOR_CHARSET.find(character) - if position < 0: - raise ValueError(f"unsupported descriptor character {character!r}") - symbols.append(position & 31) - groups.append(position >> 5) - if len(groups) == 3: - symbols.append(groups[0] * 9 + groups[1] * 3 + groups[2]) - groups.clear() - if groups: - symbols.append(groups[0] if len(groups) == 1 else groups[0] * 3 + groups[1]) - return symbols - - -def _with_checksum(descriptor: str) -> str: - return descriptor + "#" + _u5_to_chars(DESCSUM.create(_descriptor_symbols(descriptor))) - - -def _descriptor_records( - keys: tuple[str, str, str, str], timestamp: int | Literal["now"] -) -> tuple[dict[str, object], ...]: - records = [] - for (template, _purpose), key in zip(_TEMPLATES, keys, strict=True): - records.append( - { - "desc": _with_checksum(template.format(key=key)), - "active": True, - "timestamp": timestamp, - } - ) - return tuple(records) - def master_xprv(secret: MasterSeed, *, testnet: bool = False) -> str: """Return the root BIP32 extended private key with authority over all children.""" - return _master_xprv_from_seed(_master(secret).seed_bytes, testnet=testnet) - - -def core_descriptors( - secret: MasterSeed, - *, - integration: WalletPublicDeriver | None = None, - wallet: str | None = None, - account: int = 0, - testnet: bool = False, - private: bool = False, - timestamp: int | Literal["now"] = 0, -) -> tuple[dict[str, object], ...]: - """Return fixed Bitcoin Core records. - - Private records are constructed with stdlib-only root xprv serialization. - Public records require an explicit out-of-process integration provider. - """ - _master(secret) - account = _account(account) - if not isinstance(testnet, bool): - raise TypeError("testnet must be bool") - if not isinstance(private, bool): - raise TypeError("private must be bool") - if timestamp != "now" and ( - isinstance(timestamp, bool) or not isinstance(timestamp, int) or timestamp < 0 - ): - raise ValueError("timestamp must be a nonnegative integer or 'now'") - if not private: - if integration is None: - raise TypeError("public descriptors require a wallet integration") - if wallet is None: - raise TypeError("public descriptors require a Bitcoin Core wallet name") - return integration.public_descriptors( - secret, - wallet=wallet, - account=account, - timestamp=timestamp, - ) - coin_type = int(testnet) - xprv = master_xprv(secret, testnet=testnet) - keys = [] - for _template, purpose in _TEMPLATES: - path = f"m/{purpose}h/{coin_type}h/{account}h" - keys.append(xprv + path[1:] + "/<0;1>/*") - return _descriptor_records(tuple(keys), timestamp) # type: ignore[arg-type] + if not isinstance(secret, MasterSeed): + raise TypeError("wallet operations accept only MasterSeed") + return _master_xprv_from_seed(secret.seed_bytes, testnet=testnet) diff --git a/tests/test_bitcoin_core.py b/tests/test_bitcoin_core.py index f6323c93..838c542a 100644 --- a/tests/test_bitcoin_core.py +++ b/tests/test_bitcoin_core.py @@ -21,7 +21,6 @@ from codex32.bip93 import parse_codex32 from codex32.generation import _fingerprint_identifier from codex32.profiles.ms32 import MasterSeed -from codex32.wallet import _with_checksum _parsed = parse_codex32("ms10testsxxxxxxxxxxxxxxxxxxxxxxxxxx4nzvca9cmczlw") assert isinstance(_parsed, MasterSeed) @@ -76,11 +75,9 @@ def _descriptor_info(descriptor: str) -> dict[str, object]: else: normalized = f"tr({key})" return { - "descriptor": _with_checksum(normalized), + "descriptor": f"{normalized}#00000000", "hasprivatekeys": False, - "multipath_expansion": [ - _with_checksum(normalized.replace("<0;1>", str(branch))) for branch in (0, 1) - ], + "multipath_expansion": [f"{normalized.replace('<0;1>', str(branch))}#00000000" for branch in (0, 1)], } diff --git a/tests/test_generation.py b/tests/test_generation.py index 878e795b..44ec1d9e 100644 --- a/tests/test_generation.py +++ b/tests/test_generation.py @@ -17,7 +17,6 @@ CreationCeremony, MasterSeed, Share, - generate_core_lightning_secret, generate_master_seed, parse_codex32, recover_secret, @@ -27,7 +26,6 @@ CeremonyStateError, CodexError, HeaderCollision, - InvalidIdentifier, InvalidLength, InvalidShareSelection, InvalidThreshold, @@ -100,7 +98,11 @@ def test_generated_subsets_recover_across_profiles_and_threshold_boundaries( threshold: int, kind: int | str ) -> None: ceremony = ( - CreationCeremony.core_lightning(threshold=threshold, share_count=threshold + 2) + CreationCeremony.from_secret( + parse_codex32(VECTOR_6["codex32_peev"]), # type: ignore[arg-type] + threshold=threshold, + share_count=threshold + 2, + ) if kind == "cl" else CreationCeremony.master_seed( byte_length=kind, @@ -197,7 +199,6 @@ def unexpected_normalization(_value: object) -> str: source = generate_master_seed(bytes(range(16)), identifier="test") operations = ( lambda: CreationCeremony.master_seed(threshold=2, indices="a" * 32, identifier="test"), - lambda: CreationCeremony.core_lightning(threshold=2, indices="a" * 32, identifier="test"), lambda: CreationCeremony.from_secret(source, threshold=2, indices="a" * 32, identifier="name"), ) for operation in operations: @@ -353,26 +354,6 @@ def test_resharing_preserves_padding_and_requires_a_new_header() -> None: assert randomized.next_share().header.identifier != secret.header.identifier -@pytest.mark.parametrize("threshold", range(2, 10)) -def test_core_lightning_generation_and_splitting_target_zero_padding(threshold: int) -> None: - fresh, shares = _complete( - CreationCeremony.core_lightning( - identifier="peev", threshold=threshold, indices=ORDINARY_INDICES[:threshold] - ) - ) - assert isinstance(fresh, CoreLightningSecret) - assert fresh.payload_symbols[-1] & 15 == 0 - assert recover_secret(shares) == fresh - - if threshold == 2: - raw = generate_core_lightning_secret(bytes(range(32)), identifier="name") - split, split_shares = _complete( - CreationCeremony.from_secret(raw, threshold=2, indices="ac", identifier="test") - ) - assert split.payload_symbols == raw.payload_symbols - assert recover_secret(split_shares).secret_bytes == bytes(range(32)) - - def test_resharing_preserves_nonzero_core_lightning_padding() -> None: source = parse_codex32(VECTOR_6["codex32_peev"]) assert isinstance(source, CoreLightningSecret) @@ -386,17 +367,6 @@ def test_resharing_preserves_nonzero_core_lightning_padding() -> None: assert recover_secret(shares).payload_symbols == nonzero.payload_symbols -def test_core_lightning_generation_validates_size_and_identifier() -> None: - for value in (b"x" * 31, b"x" * 33): - with pytest.raises(InvalidLength): - generate_core_lightning_secret(value, identifier="test") - with pytest.raises(TypeError): - generate_core_lightning_secret("x" * 32, identifier="test") # type: ignore[arg-type] - assert len(generate_core_lightning_secret().header.identifier) == 4 - with pytest.raises(InvalidIdentifier): - generate_core_lightning_secret(identifier="bad") - - def test_from_secret_rejects_non_secret_artifacts() -> None: artifacts = ( parse_codex32(SHARING_VECTORS["bip39_12w"]["S"]), diff --git a/tests/test_wallet.py b/tests/test_wallet.py index 7809862c..8050f024 100644 --- a/tests/test_wallet.py +++ b/tests/test_wallet.py @@ -4,63 +4,7 @@ from data.bip93_vectors import VECTOR_1, VECTOR_2, VECTOR_3, VECTOR_4, VECTOR_5 from data.sharing_vectors import SHARING_VECTORS -from codex32 import ( - MasterSeed, - core_descriptors, - master_xprv, - parse_codex32, -) -from codex32.wallet import _with_checksum - -_MAIN_DESCRIPTORS = ( - ( - "pkh([3f3521a6/44h/0h/0h]" - "xpub6CeZ5XxHp6rXSwi2GCi7UT25rswWQtoPvj36MbzRBr3QEoEmBFNGgnMy329ZMk" - "fjRKBZHtKKpYfpkrPWohTjHZZn7y1NR9EHnojaGLKdMAR/<0;1>/*)#smv8ra2a" - ), - ( - "sh(wpkh([3f3521a6/49h/0h/0h]" - "xpub6D9YUddFXuNKQvNrT9RQh8ueiTvHwF3RzdgU6uTEri73WTnBpKaDCGhTUiPBTy" - "VJxtR5u2atDmCHE7tw369ahXddCNqJBxFpseud3j7pjX8/<0;1>/*))#gylcnnd3" - ), - ( - "wpkh([3f3521a6/84h/0h/0h]" - "xpub6CNhWVRpA49Bz3LSaBibGqfBV4qa5NH1CStbQfsxWKScwrws5jioMunWKj2uM2" - "rrfdJSroNuJBNDUmmdYXQw5LwVro39pH5nqEgAqrzTPyc/<0;1>/*)#zy06y40v" - ), - ( - "tr([3f3521a6/86h/0h/0h]" - "xpub6C5pT77VWNhWvrB3TqSEbpm7NCpMYEzbJreYbB68RCUoAMkT7rdhafinmdKL4M5" - "275TyDqNAWCnssYnDNaPoXMiAg3sWvCgAiYqY8dHk1k4/<0;1>/*)#r8r04qrm" - ), -) - - -class _FakePublicDeriver: - def fingerprint(self, secret: MasterSeed) -> bytes: - del secret - return bytes.fromhex("3f3521a6") - - def public_descriptors( - self, - secret: MasterSeed, - *, - wallet: str, - account: int = 0, - timestamp: int | str = 0, - ) -> tuple[dict[str, object], ...]: - del secret - if wallet != "signer": - raise AssertionError("unexpected wallet") - if account != 0: - raise AssertionError("unexpected frozen descriptor request") - return tuple({"desc": desc, "active": True, "timestamp": timestamp} for desc in _MAIN_DESCRIPTORS) - - -def _master() -> MasterSeed: - artifact = parse_codex32(VECTOR_1["secret_s"]) - assert isinstance(artifact, MasterSeed) - return artifact +from codex32 import MasterSeed, master_xprv, parse_codex32 @pytest.mark.parametrize("vector", (VECTOR_1, VECTOR_2, VECTOR_3, VECTOR_4, VECTOR_5)) @@ -71,48 +15,11 @@ def test_master_xprv_matches_bip93_vectors(vector: dict[str, str]) -> None: assert master_xprv(secret) == vector["xprv"] -def test_public_core_descriptors_are_fixed_and_private_free() -> None: - records = core_descriptors(_master(), integration=_FakePublicDeriver(), wallet="signer") - - assert len(records) == 4 - assert [record["desc"].split("(", 1)[0] for record in records] == [ - "pkh", - "sh", - "wpkh", - "tr", - ] - assert all(record["active"] is True for record in records) - assert all(record["timestamp"] == 0 for record in records) - assert all("xpub" in str(record["desc"]) for record in records) - assert all("xprv" not in str(record["desc"]) for record in records) - assert records[0]["desc"] == ( - "pkh([3f3521a6/44h/0h/0h]" - "xpub6CeZ5XxHp6rXSwi2GCi7UT25rswWQtoPvj36MbzRBr3QEoEmBFNGgnMy329ZMk" - "fjRKBZHtKKpYfpkrPWohTjHZZn7y1NR9EHnojaGLKdMAR/<0;1>/*)#smv8ra2a" - ) - - -def test_private_core_descriptors_use_root_xprv_and_explicit_inputs() -> None: - records = core_descriptors(_master(), account=3, testnet=True, private=True, timestamp=123) - - assert all(record["timestamp"] == 123 for record in records) - for purpose, record in zip((44, 49, 84, 86), records, strict=True): - descriptor = str(record["desc"]) - assert "tprv" in descriptor and "tpub" not in descriptor - assert f"/{purpose}h/1h/3h/<0;1>/*" in descriptor - - -def test_core_descriptors_accept_bitcoin_core_now_timestamp() -> None: - assert all( - record["timestamp"] == "now" - for record in core_descriptors( - _master(), timestamp="now", integration=_FakePublicDeriver(), wallet="signer" - ) - ) - +def test_master_xprv_separates_test_network_serialization() -> None: + secret = parse_codex32(VECTOR_1["secret_s"]) + assert isinstance(secret, MasterSeed) -def test_descriptor_checksum_matches_published_example() -> None: - assert _with_checksum("raw(deadbeef)") == "raw(deadbeef)#89f8spxm" + assert master_xprv(secret, testnet=True).startswith("tprv") @pytest.mark.parametrize( @@ -125,18 +32,5 @@ def test_descriptor_checksum_matches_published_example() -> None: ), ) def test_wallet_boundary_rejects_every_non_master_seed(invalid: object) -> None: - for function in (master_xprv, core_descriptors): - with pytest.raises(TypeError, match="only MasterSeed"): - function(invalid) # type: ignore[arg-type] - - -@pytest.mark.parametrize("account", (-1, 2**31, True, "0")) -def test_account_is_explicitly_bounded(account: object) -> None: - with pytest.raises((TypeError, ValueError)): - core_descriptors(_master(), account=account, integration=_FakePublicDeriver(), wallet="signer") # type: ignore[arg-type] - - -@pytest.mark.parametrize("timestamp", (-1, True, "yesterday")) -def test_timestamp_is_a_supported_core_value(timestamp: object) -> None: - with pytest.raises((TypeError, ValueError)): - core_descriptors(_master(), timestamp=timestamp) # type: ignore[arg-type] + with pytest.raises(TypeError, match="only MasterSeed"): + master_xprv(invalid) # type: ignore[arg-type] diff --git a/tools/bitcoin_core_regtest.py b/tools/bitcoin_core_regtest.py index 56c9742a..9e125c87 100644 --- a/tools/bitcoin_core_regtest.py +++ b/tools/bitcoin_core_regtest.py @@ -18,7 +18,7 @@ from codex32._bitcoin_core import BitcoinCore from codex32.bip93 import parse_codex32 from codex32.profiles.ms32 import MasterSeed -from codex32.wallet import core_descriptors +from codex32.wallet import master_xprv # Frozen public BIP93 vector material; it has never controlled a funded wallet. _SEED = "ms10testsxxxxxxxxxxxxxxxxxxxxxxxxxx4nzvca9cmczlw" @@ -225,9 +225,8 @@ def rpc(*rpc_arguments: str, wallet: str | None = None, stdin: str | None = None if rpc("gettransaction", spend, wallet="restore")["confirmations"] < 1: raise RuntimeError("recovered wallet did not sign and broadcast") - main_private = core_descriptors(secret, private=True, timestamp=0) - test_private = core_descriptors(secret, testnet=True, private=True, timestamp=0) - if "xprv" not in json.dumps(main_private) or "tprv" not in json.dumps(test_private): + mainnet, test_network = master_xprv(secret), master_xprv(secret, testnet=True) + if not mainnet.startswith("xprv") or not test_network.startswith("tprv"): raise RuntimeError("mainnet/test-network root serialization was not separated") print(json.dumps({"bitcoin_core": network["subversion"], "status": "pass"})) diff --git a/tools/verify_installed_wheel.py b/tools/verify_installed_wheel.py index 3d276ed8..0a4fbef7 100644 --- a/tools/verify_installed_wheel.py +++ b/tools/verify_installed_wheel.py @@ -10,7 +10,6 @@ CreationCeremony, MasterSeed, Profile, - core_descriptors, correct, derive_share, master_xprv, @@ -45,9 +44,6 @@ def main() -> None: secret = parse_codex32(_SECRET) assert isinstance(secret, MasterSeed) assert master_xprv(secret) == _XPRV - private = core_descriptors(secret, private=True) - assert len(private) == 4 - assert all("xprv" in record["desc"] for record in private) assert "bip32" not in sys.modules assert "coincurve" not in sys.modules From bce191fc0f40fd44afedc3a122557513f76caf36 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Thu, 8 Oct 2026 01:51:01 +0000 Subject: [PATCH 03/13] docs: Remove stale CL generation claims Fresh Core Lightning generation was removed from the public API, but the architecture, capability table, identifier policy, and security model still described it as supported. Align those contracts with the remaining behavior: existing CL secrets may still be parsed, recovered, corrected, derived, and re-shared.\n\nRefs #128 --- docs/developer/api.md | 19 +++++++++---------- docs/security/model.md | 6 +++--- src/codex32/generation.py | 2 +- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/docs/developer/api.md b/docs/developer/api.md index a5891c1e..c0dd70c0 100644 --- a/docs/developer/api.md +++ b/docs/developer/api.md @@ -7,7 +7,7 @@ The package uses one narrow dependency direction: ```text text -> format/header/checksum -> optional profile module -> immutable artifact |-> BIP93 sharing - |-> ms/cl generation + |-> ms generation |-> bounded correction `-> MasterSeed wallet adapter @@ -121,7 +121,7 @@ base artifact types rather than falling back to a registered application. | semantic S bytes | no | 16, 20, 24, 28, 32, or 64 | exactly 32 | no | | recovery and API share derivation | yes | yes | yes | yes | | `codex32` recovery/share/correction | yes | yes | yes | yes | -| unshared generation / shared ceremony API | no | six supported sizes | exactly 32 bytes | no | +| unshared generation / shared ceremony API | no | six supported sizes | no | no | | fresh generation CLI (`ms32`) | no | six supported sizes | no | no | | existing-S splitting | no | yes | yes | no | | wallet API | no | S only | no | no | @@ -142,11 +142,10 @@ payload symbols; S requires zero outer padding and a valid embedded SHA-256 checksum. Ordinary BIP39 shares are random masks and receive structural validation only. -CL generation is explicit and uses a random identifier unless one is supplied. Current Core Lightning defaults to mnemonic recovery, but its recovery command -retains an import path for codex32 HSM secrets. Generated CL S strings use the -zero-padding convention emitted by CLN; parsed nonzero discarded bits remain -valid and are preserved when re-sharing. +retains an import path for codex32 HSM secrets. CLN-produced codex32 S strings +use its zero-padding convention; parsed nonzero discarded bits remain valid and +are preserved when re-sharing. The generic `codex32` façade supports CL and BIP39 inspection, correction, recovery, and share derivation. The `ms32` façade accepts only `ms` artifacts. @@ -676,7 +675,7 @@ These choices are not presented as BIP93 requirements. | `ms` accepts only six seed sizes | follows the frozen PR #2258 profile with no legacy decoder | | random electronic output indices | reduces canonical index disclosure; explicit indices preserve requested order | | generation-only CRC padding | small recovery hint; not validity or share semantics | -| fingerprint identifier only for fresh k=0 | shared sets, raw seeds, re-sharing, and CL generation use random IDs unless explicitly overridden | +| fingerprint identifier only for fresh k=0 | shared sets, raw seeds, and re-sharing use random IDs unless explicitly overridden | | BIP39 profiles have no construction or wallet CLI | migration artifacts may still be checked, corrected, recovered, and re-shared generically | | reject existing derivation targets | enforces BIP93's fresh-index wording | | bounded structural correction is deliberately finite | exact capture safety, complete global rank layers, the 48-character ten-second target, and the package audit budget exclude a general recovery engine; longer valid strings keep the same bounded classes | @@ -699,9 +698,9 @@ The four-character identifier is public metadata, not authentication. offline 20-bit predicate against candidate seeds. - A fresh shared set uses four independent random u5 symbols and leaks no seed-derived fingerprint bits. -- Raw seed bytes, re-sharing, and CL generation use an independent random - identifier unless the caller supplies all four symbols. A random identifier - does not make a weak supplied seed safe. +- Raw seed bytes and re-sharing use an independent random identifier unless the + caller supplies all four symbols. A random identifier does not make a weak + supplied seed safe. - Random re-sharing rejects the source set header and draws another identifier. An explicitly repeated source header remains an error. diff --git a/docs/security/model.md b/docs/security/model.md index 2d3e18bd..070bd857 100644 --- a/docs/security/model.md +++ b/docs/security/model.md @@ -120,9 +120,9 @@ full-payload OS-CSPRNG request. The current share string must be re-entered exactly, ignoring case and whitespace, before the next request. Confirmation text is never reparsed as the source secret and contributes no entropy. Existing complete Bitcoin master seeds are confirmed unchanged and initialize the wallet -without new entropy. The `ms32` façade rejects CL; CL generation remains -Python-API-only. Generic sharing, recovery, inspection, and correction are -available through `codex32`. +without new entropy. The `ms32` façade rejects CL. Existing CL secrets may still +be parsed, recovered, inspected, corrected, derived, and re-shared through the +generic API; fresh CL generation is not supported. Creation retries show only entered text in contiguous regions: bold red means review the card, with reverse video added for the active region. Original card formatting is display-only; editable prefills retain entered case and spacing. Complete matching canonical groups freeze; local alignment preserves entered group ownership before edit minimization and proceeds without crossing frozen boundaries (see the API alignment rules). diff --git a/src/codex32/generation.py b/src/codex32/generation.py index d20ae51b..b4e9eed0 100644 --- a/src/codex32/generation.py +++ b/src/codex32/generation.py @@ -1,4 +1,4 @@ -"""Electronic generation for ``ms`` and Core Lightning share sets.""" +"""Electronic master-seed generation and sharing of supported secrets.""" from __future__ import annotations From c6a658e38eb8c5dcfbaafe099f784a7b3fdbff87 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Thu, 8 Oct 2026 01:51:01 +0000 Subject: [PATCH 04/13] cl: Accept only unshared Core Lightning secrets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Core Lightning imports a codex32 HSM secret only when its threshold is 0 and its index is S; lightningd rejects anything else with "This is only one share of codex32!". The cl profile still parsed shares and shared S strings, CreationCeremony.from_secret split CL secrets, and the generic façade recovered and derived CL shares, so every CL share this library made or accepted was unusable in Core Lightning. Reject a nonzero threshold in the cl profile, which closes CL recovery, derivation and splitting at the parse boundary. The profile hook now receives the whole header instead of only the share index. Ceremonies accept only MasterSeed, so their profile plumbing goes away. Tests that only needed a valid CL secret use the BIP-93 cl10peev vector; the CL sharing fixtures and tests are removed, and new tests cover the rejections. The docs no longer promise CL sharing. Package size goes from 4,965 to 4,959 logical lines. Claude-Session: https://claude.ai/code/session_01T233rKgZqE5wzDm3EVTHL1 --- docs/developer/api.md | 51 +++++++++++++++----------------- docs/security/model.md | 16 +++++----- docs/user/guide.md | 8 +++-- src/codex32/bip93.py | 2 +- src/codex32/cli.py | 2 +- src/codex32/generation.py | 35 +++++++++------------- src/codex32/profiles/bip39.py | 6 ++-- src/codex32/profiles/cl32.py | 10 ++++--- src/codex32/profiles/ms32.py | 2 +- tests/data/README.md | 2 +- tests/data/malformed_inputs.json | 5 ++-- tests/data/sharing_vectors.py | 9 +----- tests/test_cli.py | 45 ++++++++-------------------- tests/test_correction_bch.py | 6 ++-- tests/test_correction_indel.py | 5 ++-- tests/test_generation.py | 41 +++++-------------------- tests/test_profiles.py | 10 +++++++ tests/test_sharing.py | 9 +++--- tests/test_wallet.py | 4 +-- 19 files changed, 111 insertions(+), 157 deletions(-) diff --git a/docs/developer/api.md b/docs/developer/api.md index c0dd70c0..a072d071 100644 --- a/docs/developer/api.md +++ b/docs/developer/api.md @@ -67,8 +67,7 @@ generic parse-length failure. `.text` attribute. - Sharing interpolates payload and checksum together, explicitly constructs the target header, and reparses the result. -- `generation.py` is the only entropy owner and generates only `ms`; it can - also share an existing `cl` secret. +- `generation.py` is the only entropy owner; it generates and shares only `ms`. - Correction never edits the HRP or separator and reparses every candidate. - `_bip32.py` stops at HMAC-SHA512 root derivation, scalar validity, and root xprv/tprv Base58Check serialization. It performs no child derivation or @@ -117,13 +116,13 @@ base artifact types rather than falling back to a registered application. | Capability | opaque HRP | `ms` | `cl` | `bip39_12w/24w` | |---|---:|---:|---:|---:| -| parse S/share | yes | yes | yes | yes | +| parse S/share | yes | yes | unshared S only | yes | | semantic S bytes | no | 16, 20, 24, 28, 32, or 64 | exactly 32 | no | -| recovery and API share derivation | yes | yes | yes | yes | -| `codex32` recovery/share/correction | yes | yes | yes | yes | +| recovery and API share derivation | yes | yes | no | yes | +| `codex32` recovery/share/correction | yes | yes | correction only | yes | | unshared generation / shared ceremony API | no | six supported sizes | no | no | | fresh generation CLI (`ms32`) | no | six supported sizes | no | no | -| existing-S splitting | no | yes | yes | no | +| existing-S splitting | no | yes | no | no | | wallet API | no | S only | no | no | Registered application semantics remain: @@ -136,26 +135,25 @@ Registered application semantics remain: `ms` payloads encode exactly 16, 20, 24, 28, 32, or 64 seed bytes and may have any legal parsed trailing bits. Parsing, generation, ceremonies, raw-seed -import, and CLI `--bytes` enforce the same six sizes. `cl` has 52 payload symbols; parsed -discarded bits remain application data. BIP39 profiles have exactly 27/53 -payload symbols; S requires zero outer padding and a valid embedded SHA-256 -checksum. Ordinary BIP39 shares are random masks and receive structural -validation only. +import, and CLI `--bytes` enforce the same six sizes. `cl` has 52 payload +symbols and threshold 0; parsed discarded bits remain application data. BIP39 +profiles have exactly 27/53 payload symbols; S requires zero outer padding and +a valid embedded SHA-256 checksum. Ordinary BIP39 shares are random masks and +receive structural validation only. Current Core Lightning defaults to mnemonic recovery, but its recovery command -retains an import path for codex32 HSM secrets. CLN-produced codex32 S strings -use its zero-padding convention; parsed nonzero discarded bits remain valid and -are preserved when re-sharing. +retains an import path for unshared codex32 HSM secrets. It rejects shares and +any S with a nonzero threshold, so the `cl` profile rejects them too and there +is no CL recovery, share derivation, or splitting. -The generic `codex32` façade supports CL and BIP39 inspection, correction, -recovery, and share derivation. The `ms32` façade accepts only `ms` artifacts. +The generic `codex32` façade supports CL inspection and correction, and BIP39 +inspection, correction, recovery, and share derivation. The `ms32` façade +accepts only `ms` artifacts. ## Secret generation -`generation.py` is the only module that draws entropy. It generates BIP93 -master seeds and splits a validated master seed or Core Lightning HSM secret. -Core Lightning now defaults to mnemonic recovery, but retains a codex32 HSM -secret import path for recovery on an unused node. +`generation.py` is the only module that draws entropy. It generates and +splits BIP93 master seeds only. Fresh unshared seeds default to 16 bytes and use the first 20 bits of their BIP32 fingerprint as public identifier metadata. Fresh shared sets use four @@ -182,8 +180,7 @@ only after every requested share is confirmed. There is no public one-shot sharing or `split_secret` function. Fresh and existing Bitcoin CLI creation requires interactive input and output, preflights local Bitcoin Core before entropy or recovery input, and initializes a user-selected wallet after every -share is confirmed. CLI creation does not accept Core Lightning profiles; sharing -an existing CL secret remains API-only. +share is confirmed. Without `--existing`, omitting the Bitcoin header creates an unshared master seed. With `--existing` and no sharing threshold, a supplied codex32 secret is emitted and confirmed unchanged, and the original validated artifact initializes @@ -251,10 +248,10 @@ string during setup. It cannot prove that the physical backup was corrected rather than reconstructed using confirmation feedback. For a fresh set, the final direct share is rejection-sampled until the recovered -S has the private CRC padding convention (`ms`) or zero discarded bits (CL). -The already confirmed `k-1` masks remain fixed. Neither padding rule is BIP93 -validity: parsed S strings may use any application-valid discarded bits, which -re-sharing preserves exactly. CRC never applies to shares. +S has the private CRC padding convention. The already confirmed `k-1` masks +remain fixed. That padding rule is not BIP93 validity: parsed S strings may use +any application-valid discarded bits, which re-sharing preserves exactly. CRC +never applies to shares. Explicit output indices preserve caller order. A share count uses `SystemRandom.sample` over the 31 ordinary indices and preserves sample order. @@ -313,7 +310,7 @@ applies registered S semantics when the HRP has a profile. `tests/test_sharing.py` proves that recovery and derivation still work after checksum creation is disabled. Official BIP93 vectors anchor the GF(32) -arithmetic. CL and BIP39 use compact frozen string/result fixtures rather than +arithmetic. BIP39 uses compact frozen string/result fixtures rather than a duplicate test implementation of interpolation or checksumming. ### BIP39 migration profiles diff --git a/docs/security/model.md b/docs/security/model.md index 070bd857..6eabc340 100644 --- a/docs/security/model.md +++ b/docs/security/model.md @@ -120,9 +120,10 @@ full-payload OS-CSPRNG request. The current share string must be re-entered exactly, ignoring case and whitespace, before the next request. Confirmation text is never reparsed as the source secret and contributes no entropy. Existing complete Bitcoin master seeds are confirmed unchanged and initialize the wallet -without new entropy. The `ms32` façade rejects CL. Existing CL secrets may still -be parsed, recovered, inspected, corrected, derived, and re-shared through the -generic API; fresh CL generation is not supported. +without new entropy. The `ms32` façade rejects CL. The generic API parses, +inspects, and corrects unshared CL secrets only: Core Lightning rejects shares +and nonzero thresholds, so CL shares are rejected and CL secrets are never +generated, derived, or re-shared. Creation retries show only entered text in contiguous regions: bold red means review the card, with reverse video added for the active region. Original card formatting is display-only; editable prefills retain entered case and spacing. Complete matching canonical groups freeze; local alignment preserves entered group ownership before edit minimization and proceeds without crossing frozen boundaries (see the API alignment rules). @@ -176,10 +177,11 @@ those explanations; unproven scoring work is retained. Repeated masks and cancelled operations are removed only with a coverage proof. Pruning does not reallocate the ledger's mass to additional hypotheses. -`codex32` checks, corrects, recovers, and derives shares for compatible CL, -BIP39, and opaque-HRP sets. `ms32` applies an `ms` input filter and alone owns -Bitcoin creation, xprv, and wallet commands. Both façades offer worksheet-residue -correction; only `ms32 correct` offers `--bytes`. +`codex32` checks and corrects unshared CL secrets, and checks, corrects, +recovers, and derives shares for compatible BIP39 and opaque-HRP sets. `ms32` +applies an `ms` input filter and alone owns Bitcoin creation, xprv, and wallet +commands. Both façades offer worksheet-residue correction; only `ms32 correct` +offers `--bytes`. ### Low-discrimination correction disclosure diff --git a/docs/user/guide.md b/docs/user/guide.md index 6004418d..b875ab04 100644 --- a/docs/user/guide.md +++ b/docs/user/guide.md @@ -298,9 +298,11 @@ enter the damaged string with trailing `?` characters when asked; do not place a secret or share in the command arguments. The strong warning and literal `YES` gate apply before the completed suggestion is shown. -The generic `codex32` façade can check, correct, recover, and derive shares for -compatible Core Lightning, BIP39 worksheet, and opaque-HRP artifacts. It does -not generate BIP39 words or Core Lightning secrets. Registered profiles retain +The generic `codex32` façade can check and correct unshared Core Lightning HSM +secrets, and check, correct, recover, and derive shares for compatible BIP39 +worksheet and opaque-HRP artifacts. Core Lightning HSM secrets cannot be split, +because Core Lightning accepts only threshold 0. The façade does not generate +BIP39 words or Core Lightning secrets. Registered profiles retain their application validation; unknown HRPs remain opaque codex32 symbols. Keep the matching application worksheet and original wallet instructions with the inheritance plan. Published BIP-93 still defines the `ms` application; the diff --git a/src/codex32/bip93.py b/src/codex32/bip93.py index 9e3757c3..238f7dd2 100644 --- a/src/codex32/bip93.py +++ b/src/codex32/bip93.py @@ -170,7 +170,7 @@ class Secret(_Artifact): def _validate_payload(profile: Profile, header: Header, payload: tuple[int, ...]) -> None: rules = _profile_rules(profile) rules.validate_payload_length(len(payload)) - rules.validate_payload(payload, header.index) + rules.validate_payload(payload, header) def _artifact( diff --git a/src/codex32/cli.py b/src/codex32/cli.py index 6e81e439..1ffd1f13 100644 --- a/src/codex32/cli.py +++ b/src/codex32/cli.py @@ -130,7 +130,7 @@ def _summary(artifact: Artifact, *, valid: bool = False) -> list[str]: else: name = _profile_rules(artifact.profile).label if isinstance(artifact, Share): - name = name.replace("master seed", "master-seed").replace("HSM secret", "HSM-secret") + name = name.replace("master seed", "master-seed") heading = f"{name} share {header.index.upper()}" else: heading = f"{'Unshared' if header.threshold == 0 else 'Shared'} {name}" diff --git a/src/codex32/generation.py b/src/codex32/generation.py index b4e9eed0..7ad8c2e3 100644 --- a/src/codex32/generation.py +++ b/src/codex32/generation.py @@ -1,4 +1,4 @@ -"""Electronic master-seed generation and sharing of supported secrets.""" +"""Electronic master-seed generation and sharing.""" from __future__ import annotations @@ -29,7 +29,6 @@ InvalidThreshold, ) from codex32.profiles import Profile -from codex32.profiles.cl32 import CoreLightningSecret from codex32.profiles.ms32 import ( DEFAULT_SEED_BYTES, SEED_BYTE_LENGTHS, @@ -117,9 +116,9 @@ def _fingerprint_identifier(fingerprint: bytes) -> str: return _u5_to_chars(tuple(convertbits(fingerprint, 8, 5, pad=True)[:4])) -def _random_share(profile: Profile, threshold: int, identifier: str, index: str, length: int) -> Share: +def _random_share(threshold: int, identifier: str, index: str, length: int) -> Share: symbols = tuple(value & 31 for value in secrets.token_bytes(length)) - artifact = _from_parts(profile, Header(threshold, identifier, index), symbols) + artifact = _from_parts(Profile.MS, Header(threshold, identifier, index), symbols) assert isinstance(artifact, Share) return artifact @@ -178,8 +177,7 @@ class CreationCeremony: _payload_length: int _pending: Share | None _position: int - _profile: Profile - _secret: MasterSeed | CoreLightningSecret | None + _secret: MasterSeed | None _set_identifier: str _threshold: int @@ -192,24 +190,23 @@ def __reduce_ex__(self, _protocol: SupportsIndex) -> NoReturn: @classmethod def _start( cls, - profile: Profile, payload_length: int, threshold: int, share_count: int | None, indices: Sequence[str] | str | None, identifier: str, - secret: MasterSeed | CoreLightningSecret | None, + secret: MasterSeed | None, ) -> CreationCeremony: self = object.__new__(cls) - self._profile, self._payload_length = profile, payload_length + self._payload_length = payload_length self._threshold, self._set_identifier = threshold, identifier self._indices = _selection(threshold, share_count, indices) self._position, self._pending, self._finished = 0, None, False if secret is None: self._secret, self._basis, self._direct_count = None, [], threshold else: - reheadered = _from_parts(profile, Header(threshold, identifier, "s"), secret.payload_symbols) - assert isinstance(reheadered, (MasterSeed, CoreLightningSecret)) + reheadered = _from_parts(Profile.MS, Header(threshold, identifier, "s"), secret.payload_symbols) + assert isinstance(reheadered, MasterSeed) self._secret, self._basis, self._direct_count = ( reheadered, [reheadered], @@ -232,7 +229,6 @@ def master_seed( _supplied, byte_length = _seed_input(None, byte_length) identifier = _random_identifier() if identifier is None else _identifier(identifier) return cls._start( - Profile.MS, _payload_length(byte_length), threshold, share_count, @@ -244,16 +240,16 @@ def master_seed( @classmethod def from_secret( cls, - secret: MasterSeed | CoreLightningSecret, + secret: MasterSeed, *, threshold: int, share_count: int | None = None, indices: Sequence[str] | str | None = None, identifier: str | None = None, ) -> CreationCeremony: - """Start a ceremony that shares an existing validated secret.""" - if not isinstance(secret, (MasterSeed, CoreLightningSecret)): - raise TypeError("from_secret accepts only MasterSeed or CoreLightningSecret") + """Start a ceremony that shares an existing validated master seed.""" + if not isinstance(secret, MasterSeed): + raise TypeError("from_secret accepts only MasterSeed") threshold = _threshold(threshold, allow_zero=False) random_identifier = identifier is None identifier = _random_identifier() if random_identifier else _identifier(identifier) @@ -264,9 +260,7 @@ def from_secret( if not random_identifier: raise HeaderCollision("new share set must use a different set header") identifier = _random_identifier() - assert secret.profile is not None return cls._start( - secret.profile, len(secret.payload_symbols), threshold, share_count, @@ -290,7 +284,6 @@ def next_share(self) -> Share: if self._position < self._direct_count: while True: pending = _random_share( - self._profile, self._threshold, self._set_identifier, index, @@ -331,14 +324,14 @@ def confirm(self, text: str) -> ConfirmationResult: self._pending = None return ConfirmationResult(True) - def finish(self) -> MasterSeed | CoreLightningSecret: + def finish(self) -> MasterSeed: """Return the secret after every requested card is confirmed.""" if self._finished: raise CeremonyStateError("this creation ceremony is finished") if self._pending is not None or self._position != len(self._indices): raise CeremonyStateError("confirm every card before finishing the ceremony") secret = self._secret - assert isinstance(secret, (MasterSeed, CoreLightningSecret)) + assert isinstance(secret, MasterSeed) self._finished = True self._basis.clear() self._indices = () diff --git a/src/codex32/profiles/bip39.py b/src/codex32/profiles/bip39.py index 5ebc5edb..d01d7604 100644 --- a/src/codex32/profiles/bip39.py +++ b/src/codex32/profiles/bip39.py @@ -3,7 +3,7 @@ import hashlib from dataclasses import dataclass -from codex32.bip93 import Secret +from codex32.bip93 import Header, Secret from codex32.errors import ( InvalidBip39Checksum, InvalidLength, @@ -46,8 +46,8 @@ def validate_payload_length(self, payload_length: int) -> None: f"{self.text_length}-character codex32 string." ) - def validate_payload(self, symbols: tuple[int, ...], index: str) -> None: - if index != "s": + def validate_payload(self, symbols: tuple[int, ...], header: Header) -> None: + if header.index != "s": return value = 0 for symbol in symbols: diff --git a/src/codex32/profiles/cl32.py b/src/codex32/profiles/cl32.py index cfc90d98..51cc8c35 100644 --- a/src/codex32/profiles/cl32.py +++ b/src/codex32/profiles/cl32.py @@ -3,8 +3,8 @@ from __future__ import annotations from codex32.bech32 import convertbits -from codex32.bip93 import Secret -from codex32.errors import InvalidLength +from codex32.bip93 import Header, Secret +from codex32.errors import InvalidLength, InvalidThreshold from codex32.profiles import Profile PAYLOAD_LENGTH, TEXT_LENGTH = 52, 74 @@ -41,8 +41,10 @@ def validate_payload_length(self, payload_length: int) -> None: f"expected a {TEXT_LENGTH}-character codex32 string." ) - def validate_payload(self, _payload: tuple[int, ...], _index: str) -> None: - pass + def validate_payload(self, _payload: tuple[int, ...], header: Header) -> None: + # Core Lightning rejects shares and shared S strings, so neither is a CL backup. + if header.threshold != 0: + raise InvalidThreshold("A Core Lightning HSM secret backup must be unshared, with threshold 0.") RULES = _Cl32Rules() diff --git a/src/codex32/profiles/ms32.py b/src/codex32/profiles/ms32.py index 1a64c7e7..ac662ee7 100644 --- a/src/codex32/profiles/ms32.py +++ b/src/codex32/profiles/ms32.py @@ -76,7 +76,7 @@ def validate_payload_length(self, payload_length: int) -> None: "16-, 20-, 24-, 28-, 32-, or 64-byte seed." ) - def validate_payload(self, _payload: tuple[int, ...], _index: str) -> None: + def validate_payload(self, _payload: tuple[int, ...], _header: Header) -> None: pass diff --git a/tests/data/README.md b/tests/data/README.md index fa57ecc4..64fdf038 100644 --- a/tests/data/README.md +++ b/tests/data/README.md @@ -3,7 +3,7 @@ - `bip93_vectors.py` contains BIP93 vectors plus the six-size and checksum boundary fixtures from PR #2258 commit `5117f5831bcbf0485949e5951d2954b792eded28`. -- `sharing_vectors.py` contains data-only CL and BIP39 interpolation fixtures. +- `sharing_vectors.py` contains data-only BIP39 interpolation fixtures. - `p70_correction_vectors.json` is the frozen PR #70 correction corpus. - `malformed_inputs.json` freezes independent rejection cases for parsing, interpolation, correction, and CLI tokenization. diff --git a/tests/data/malformed_inputs.json b/tests/data/malformed_inputs.json index b9048641..454b83b2 100644 --- a/tests/data/malformed_inputs.json +++ b/tests/data/malformed_inputs.json @@ -6,7 +6,8 @@ {"id": "mixed-case", "text": "Ms10testsxxxxxxxxxxxxxxxxxxxxxxxxxx4nzvca9cmczlw"}, {"id": "invalid-checksum", "text": "ms10testsxxxxxxxxxxxxxxxxxxxxxxxxxx4nzvca9cmczlq"}, {"id": "non-ascii", "text": "ms10testsxxxxxxxxxxxxxxxxxxxxxxxxxx4nzvca9cmczlé"}, - {"id": "embedded-newline", "text": "ms10testsxxxxxxxxxxxxxxxx\nxxxxxxxxxx4nzvca9cmczlw"} + {"id": "embedded-newline", "text": "ms10testsxxxxxxxxxxxxxxxx\nxxxxxxxxxx4nzvca9cmczlw"}, + {"id": "shared-core-lightning", "text": "cl12testapppppppppppppppppppppppppppppppppppppppppppppppppppprqasqgqsaeje2"} ], "interpolation": [ { @@ -27,7 +28,7 @@ "id": "mismatched-profile", "artifacts": [ "MS12NAMEA320ZYXWVUTSRQPNMLKJHGFEDCAXRPP870HKKQRM", - "cl12testapppppppppppppppppppppppppppppppppppppppppppppppppppprqasqgqsaeje2" + "bip39_12w12testapppppppppppppppppppppppppppnz8ygjskeu3nc" ] }, { diff --git a/tests/data/sharing_vectors.py b/tests/data/sharing_vectors.py index 29f11138..d3a536f9 100644 --- a/tests/data/sharing_vectors.py +++ b/tests/data/sharing_vectors.py @@ -1,6 +1,5 @@ -"""Frozen non-ms sharing fixtures. +"""Frozen BIP39 sharing fixtures. -The CL secret payload comes from Core Lightning's published ``peev`` example. The BIP39 secrets use the frozen zero-entropy validation fixtures in ``test_bip39.py``. Each table fixes a 2-point S/A basis and independently recorded C/D codewords. These are data only: production arithmetic is not @@ -9,12 +8,6 @@ """ SHARING_VECTORS = { - "cl": { - "S": "cl12testst6cqh0wu7p5ssjyf4z4ez42ks9jlt3zneju9uuypr2hddak6tlqs3zcw0ee6q2xuc", - "A": "cl12testapppppppppppppppppppppppppppppppppppppppppppppppppppprqasqgqsaeje2", - "C": "cl12testc6umke5r4jpf88qca737v37dw80q96s3hvq4044cpxdennzwu69k848y5zw6tfcdqu", - "D": "cl12testd2d8ya7mnepjxxvsqhwhzwh0cx4vu2rwfzvn4nnspt0a55kcd2uyxt2vd60xm05ygz", - }, "bip39_12w": { "S": "bip39_12w12testsqqqqqqqqqqqqqqqqqqqqqqqqqqc38e6s58qr9lnk", "A": "bip39_12w12testapppppppppppppppppppppppppppnz8ygjskeu3nc", diff --git a/tests/test_cli.py b/tests/test_cli.py index 889b1758..07124c18 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -21,7 +21,6 @@ from codex32 import ( ConfirmationResult, - CoreLightningSecret, CorrectionCandidate, CorrectionContext, MasterSeed, @@ -275,16 +274,12 @@ def test_check_supports_every_registered_application() -> None: assert forbidden not in result.stdout -@pytest.mark.parametrize( - "value", - (SHARING_VECTORS["cl"]["A"], SHARING_VECTORS["cl"]["S"]), -) -def test_check_accepts_shared_core_lightning_artifacts(value: str) -> None: - result = _invoke(["check"], value) +@pytest.mark.parametrize("index", ("a", "s")) +def test_check_rejects_shared_core_lightning_artifacts(index: str) -> None: + result = _invoke(["check"], bech32_encode("cl", _chars_to_u5(f"2test{index}" + "q" * 52), _CODEX32)) - assert result.exit_code == 0 - assert "Core Lightning HSM" in result.stdout - assert result.stderr == "" + assert result.exit_code == 2 + assert "A Core Lightning HSM secret backup must be unshared, with threshold 0." in result.stderr def test_check_does_not_derive_wallet_keys(monkeypatch: pytest.MonkeyPatch) -> None: @@ -1174,13 +1169,8 @@ def answer(_prompt: str) -> str: assert editor.hook is None -def test_share_supports_ms_cl_and_bip39() -> None: +def test_share_supports_ms_and_bip39() -> None: ms = _invoke(["share", "d"], VECTOR_2["share_A"], VECTOR_2["share_C"]) - cl = _invoke( - ["share", "d"], - SHARING_VECTORS["cl"]["A"], - SHARING_VECTORS["cl"]["C"], - ) bip39 = _invoke( ["share", "d"], SHARING_VECTORS["bip39_12w"]["A"], @@ -1189,8 +1179,7 @@ def test_share_supports_ms_cl_and_bip39() -> None: assert ms.exit_code == 0 assert ms.stdout.strip() == VECTOR_2["derived_D"] - assert cl.exit_code == bip39.exit_code == 0 - assert cl.stdout.strip() == SHARING_VECTORS["cl"]["D"] + assert bip39.exit_code == 0 assert bip39.stdout.strip() == SHARING_VECTORS["bip39_12w"]["D"] @@ -1860,14 +1849,6 @@ def test_fixed_correction_repairs_legacy_cl_header_and_residue_reverse_positions assert "Add x at position 38, counting backward from the end." in residue.stdout -def test_correct_accepts_valid_shared_core_lightning_artifacts() -> None: - for value in (SHARING_VECTORS["cl"]["A"], SHARING_VECTORS["cl"]["S"]): - result = _invoke(["correct"], value) - - assert result.exit_code == 0 - assert "already valid" in result.stdout - - def test_correct_accepts_a_valid_legacy_core_lightning_secret() -> None: result = _invoke(["correct"], VECTOR_6["codex32_cln2"]) @@ -2135,9 +2116,9 @@ def test_wallet_cli_rejects_non_ms_profiles() -> None: ("wallet",), ): result = ( - _invoke_initialized_wallet(list(command), SHARING_VECTORS["cl"]["S"])[0] + _invoke_initialized_wallet(list(command), VECTOR_6["codex32_peev"])[0] if command[0] == "wallet" - else _invoke(list(command), SHARING_VECTORS["cl"]["S"]) + else _invoke(list(command), VECTOR_6["codex32_peev"]) ) assert result.exit_code != 0 assert "only Bitcoin master seed input" in result.stderr @@ -2309,13 +2290,13 @@ def test_creation_region_retry_keeps_original_ceremony_wallet_source( cli_module = importlib.import_module("codex32.cli") core = _FakeBitcoinCore() stdout, stderr = _TTYOutput(), _TTYOutput() - finished: list[MasterSeed | CoreLightningSecret] = [] + finished: list[MasterSeed] = [] finish = cli_module.CreationCeremony.finish - def remember(ceremony: object) -> MasterSeed | CoreLightningSecret: + def remember(ceremony: object) -> MasterSeed: result = finish(ceremony) finished.append(result) - return cast(MasterSeed | CoreLightningSecret, result) + return cast(MasterSeed, result) def answer(prompt: str, **options: object) -> str: if prompt.startswith("Write this share"): @@ -2781,7 +2762,7 @@ def test_creation_source_unusable_candidates_retry(monkeypatch, capsys, kind): if kind == "share": artifact = parse_codex32(VECTOR_2["share_A"]) elif kind == "wrong_profile": - artifact = parse_codex32(SHARING_VECTORS["cl"]["S"]) + artifact = parse_codex32(VECTOR_6["codex32_peev"]) candidate = SimpleNamespace(artifact=artifact, search_complete=True, low_checksum_discrimination=False) candidates = () if kind == "none" else (candidate, candidate) if kind == "ambiguous" else (candidate,) monkeypatch.setattr(cli, "_suggestions", lambda *args, **kwargs: candidates) diff --git a/tests/test_correction_bch.py b/tests/test_correction_bch.py index a8edc801..4f7fa740 100644 --- a/tests/test_correction_bch.py +++ b/tests/test_correction_bch.py @@ -5,7 +5,7 @@ from pathlib import Path import pytest -from data.bip93_vectors import VECTOR_1, VECTOR_2, VECTOR_5 +from data.bip93_vectors import VECTOR_1, VECTOR_2, VECTOR_5, VECTOR_6 from data.sharing_vectors import SHARING_VECTORS from hypothesis import given, settings from hypothesis import strategies as st @@ -150,7 +150,7 @@ def test_every_consecutive_erasure_burst( ( (Profile.MS, VECTOR_1["secret_s"]), (Profile.MS, VECTOR_5["secret_s"]), - (Profile.CL, SHARING_VECTORS["cl"]["S"]), + (Profile.CL, VECTOR_6["codex32_peev"]), (Profile.BIP39_12W, SHARING_VECTORS["bip39_12w"]["S"]), (Profile.BIP39_24W, SHARING_VECTORS["bip39_24w"]["S"]), ), @@ -504,7 +504,7 @@ def test_fixed_input_is_bounded_before_algebra( def test_suspected_profile_is_not_inferred() -> None: result = _correct_fixed( - SHARING_VECTORS["cl"]["S"], + VECTOR_6["codex32_peev"], suspected_profile=Profile.MS, ) assert result is None diff --git a/tests/test_correction_indel.py b/tests/test_correction_indel.py index 646e8b5c..e9c88e4a 100644 --- a/tests/test_correction_indel.py +++ b/tests/test_correction_indel.py @@ -6,8 +6,7 @@ from unittest.mock import patch import pytest -from data.bip93_vectors import VECTOR_1, VECTOR_5 -from data.sharing_vectors import SHARING_VECTORS +from data.bip93_vectors import VECTOR_1, VECTOR_5, VECTOR_6 from test_bip39 import BIP39_12W_ZERO, BIP39_24W_ZERO from codex32 import CorrectionContext, MasterSeed, Profile, correct @@ -336,7 +335,7 @@ def test_unknown_target_search_recovers_reachable_valid_length() -> None: ("profile", "source"), ( (Profile.MS, VECTOR_5["secret_s"]), - (Profile.CL, SHARING_VECTORS["cl"]["S"]), + (Profile.CL, VECTOR_6["codex32_peev"]), (Profile.BIP39_12W, BIP39_12W_ZERO), (Profile.BIP39_24W, BIP39_24W_ZERO), ), diff --git a/tests/test_generation.py b/tests/test_generation.py index 44ec1d9e..9d20ff4d 100644 --- a/tests/test_generation.py +++ b/tests/test_generation.py @@ -1,11 +1,10 @@ -"""Security invariants for incremental ``ms`` and CL creation ceremonies.""" +"""Security invariants for incremental ``ms`` creation ceremonies.""" import copy import pickle from itertools import combinations import pytest -from _codex32_oracle import oracle_encode from data.bip93_vectors import VECTOR_2, VECTOR_4, VECTOR_6 from data.sharing_vectors import SHARING_VECTORS from hypothesis import given, settings @@ -13,7 +12,6 @@ import codex32.generation as generation_module from codex32 import ( - CoreLightningSecret, CreationCeremony, MasterSeed, Share, @@ -21,7 +19,6 @@ parse_codex32, recover_secret, ) -from codex32.bech32 import _u5_to_chars from codex32.errors import ( CeremonyStateError, CodexError, @@ -35,7 +32,7 @@ from tools._wallet_test_vectors import FIXTURE_SEED, core_fingerprint, stub_fingerprint -def _complete(ceremony: CreationCeremony) -> tuple[MasterSeed | CoreLightningSecret, tuple[Share, ...]]: +def _complete(ceremony: CreationCeremony) -> tuple[MasterSeed, tuple[Share, ...]]: shares = [] while True: try: @@ -93,22 +90,12 @@ def test_fresh_generation_recovers_at_every_threshold(threshold: int) -> None: assert recover_secret(shares) == secret -@pytest.mark.parametrize(("threshold", "kind"), ((2, 16), (3, "cl"), (9, 64))) -def test_generated_subsets_recover_across_profiles_and_threshold_boundaries( - threshold: int, kind: int | str +@pytest.mark.parametrize(("threshold", "byte_length"), ((2, 16), (3, 32), (9, 64))) +def test_generated_subsets_recover_across_sizes_and_threshold_boundaries( + threshold: int, byte_length: int ) -> None: - ceremony = ( - CreationCeremony.from_secret( - parse_codex32(VECTOR_6["codex32_peev"]), # type: ignore[arg-type] - threshold=threshold, - share_count=threshold + 2, - ) - if kind == "cl" - else CreationCeremony.master_seed( - byte_length=kind, - threshold=threshold, - share_count=threshold + 2, # type: ignore[arg-type] - ) + ceremony = CreationCeremony.master_seed( + byte_length=byte_length, threshold=threshold, share_count=threshold + 2 ) secret, shares = _complete(ceremony) @@ -354,21 +341,9 @@ def test_resharing_preserves_padding_and_requires_a_new_header() -> None: assert randomized.next_share().header.identifier != secret.header.identifier -def test_resharing_preserves_nonzero_core_lightning_padding() -> None: - source = parse_codex32(VECTOR_6["codex32_peev"]) - assert isinstance(source, CoreLightningSecret) - payload = (*source.payload_symbols[:-1], source.payload_symbols[-1] | 15) - nonzero = parse_codex32(oracle_encode("cl", "0peevs" + _u5_to_chars(payload))) - assert isinstance(nonzero, CoreLightningSecret) - secret, shares = _complete( - CreationCeremony.from_secret(nonzero, threshold=2, indices="ac", identifier="name") - ) - assert secret.payload_symbols == nonzero.payload_symbols - assert recover_secret(shares).payload_symbols == nonzero.payload_symbols - - def test_from_secret_rejects_non_secret_artifacts() -> None: artifacts = ( + parse_codex32(VECTOR_6["codex32_peev"]), parse_codex32(SHARING_VECTORS["bip39_12w"]["S"]), parse_codex32(VECTOR_2["share_A"]), VECTOR_2["secret_S"], diff --git a/tests/test_profiles.py b/tests/test_profiles.py index 3fbaca94..c70174d7 100644 --- a/tests/test_profiles.py +++ b/tests/test_profiles.py @@ -26,6 +26,7 @@ ) from codex32.bip93 import _checksum_for_encoded_length from codex32.checksums import _CODEX32, _CODEX32_LONG, _Checksum +from codex32.correction import _correct_fixed from codex32.errors import ( InvalidCase, InvalidCharacter, @@ -169,6 +170,15 @@ def test_core_lightning_constructor_and_parsed_padding() -> None: assert parsed.secret_bytes == original.secret_bytes +@pytest.mark.parametrize("index", ("a", "s")) +def test_core_lightning_rejects_shares_and_shared_secrets(index: str) -> None: + # Core Lightning imports only threshold-0 HSM secrets, so correction never suggests one. + shared = _oracle_encode("cl", f"2test{index}" + "q" * 52) + with pytest.raises(InvalidThreshold, match="must be unshared"): + parse_codex32(shared) + assert _correct_fixed(shared, suspected_profile="cl") is None + + @pytest.mark.parametrize( ("value", "checksum", "minimum", "maximum"), [ diff --git a/tests/test_sharing.py b/tests/test_sharing.py index 6d54c9ba..ab6e7742 100644 --- a/tests/test_sharing.py +++ b/tests/test_sharing.py @@ -10,7 +10,6 @@ from hypothesis import strategies as st from codex32 import ( - CoreLightningSecret, MasterSeed, Share, derive_share, @@ -36,7 +35,7 @@ from codex32.profiles.ms32 import SEED_BYTE_LENGTHS -def _payload_text(artifact: Share | MasterSeed | CoreLightningSecret) -> str: +def _payload_text(artifact: Share | MasterSeed) -> str: return _u5_to_chars(artifact.payload_symbols) @@ -112,9 +111,9 @@ def test_every_threshold_recovers_exactly_k_shares(threshold: int) -> None: def test_share_set_mismatches_have_distinct_errors() -> None: ms_secret, ms_masks = _ms_basis() - cl = parse_codex32(oracle_encode("cl", "2testa" + "q" * 52)) + opaque = parse_codex32(oracle_encode("xy", "2testa" + "q" * len(ms_secret.payload_symbols))) with pytest.raises(MismatchedProfile): - derive_share([ms_secret, cl], "c") # type: ignore[list-item] + derive_share([ms_secret, opaque], "c") # type: ignore[list-item] threshold_three = parse_codex32(oracle_encode("ms", "3testc" + "q" * len(ms_secret.payload_symbols))) with pytest.raises(MismatchedThreshold): @@ -186,7 +185,7 @@ def test_every_ordinary_index_can_be_a_fresh_target() -> None: assert derived.header.index == target -@pytest.mark.parametrize("profile", ("cl", "bip39_12w", "bip39_24w")) +@pytest.mark.parametrize("profile", ("bip39_12w", "bip39_24w")) def test_frozen_profile_sharing_vectors(profile: str) -> None: vector = SHARING_VECTORS[profile] secret = parse_codex32(vector["S"]) diff --git a/tests/test_wallet.py b/tests/test_wallet.py index 8050f024..3186dd38 100644 --- a/tests/test_wallet.py +++ b/tests/test_wallet.py @@ -1,7 +1,7 @@ """Wallet interoperability is stateless and accepts only validated ms secrets.""" import pytest -from data.bip93_vectors import VECTOR_1, VECTOR_2, VECTOR_3, VECTOR_4, VECTOR_5 +from data.bip93_vectors import VECTOR_1, VECTOR_2, VECTOR_3, VECTOR_4, VECTOR_5, VECTOR_6 from data.sharing_vectors import SHARING_VECTORS from codex32 import MasterSeed, master_xprv, parse_codex32 @@ -25,7 +25,7 @@ def test_master_xprv_separates_test_network_serialization() -> None: @pytest.mark.parametrize( "invalid", ( - parse_codex32(SHARING_VECTORS["cl"]["S"]), + parse_codex32(VECTOR_6["codex32_peev"]), parse_codex32(SHARING_VECTORS["bip39_12w"]["S"]), parse_codex32(VECTOR_2["share_A"]), b"not an artifact", From 02170f77b3af22be7105d634b5ed81e2f3dc6cfb Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Thu, 8 Oct 2026 01:51:02 +0000 Subject: [PATCH 05/13] docs: Drop the random-identifier remark The identifier policy said a random identifier does not make a weak supplied seed safe. Nothing suggests it would; the sentence only invites the question. Claude-Session: https://claude.ai/code/session_01T233rKgZqE5wzDm3EVTHL1 --- docs/developer/api.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/developer/api.md b/docs/developer/api.md index a072d071..f68ba676 100644 --- a/docs/developer/api.md +++ b/docs/developer/api.md @@ -696,8 +696,7 @@ The four-character identifier is public metadata, not authentication. - A fresh shared set uses four independent random u5 symbols and leaks no seed-derived fingerprint bits. - Raw seed bytes and re-sharing use an independent random identifier unless the - caller supplies all four symbols. A random identifier does not make a weak - supplied seed safe. + caller supplies all four symbols. - Random re-sharing rejects the source set header and draws another identifier. An explicitly repeated source header remains an error. From 6606a3659fdaf930b8293595a1f097295d4ede14 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Wed, 7 Oct 2026 09:05:09 +0000 Subject: [PATCH 06/13] licensing: Restore upstream copyright headers The v1 rewrite dropped the license headers that master carries in bech32.py and checksums.py. bech32.py still derives convertbits from Pieter Wuille's segwit_addr.py, and checksums.py keeps his polymod arithmetic and Leon Olsson Curr and Pearlwort Sneed's codex32 generators. MIT and BSD-3-Clause both require the notice to travel with the code, and CONTRIBUTING.md requires the original author's header on derived work. Restore master's headers, except that checksums.py now credits the polymod arithmetic, since it no longer holds Bech32/Bech32m constants. Each credit also names its upstream source, sipa/bech32's ref/python/segwit_addr.py or BIP-93, as CONTRIBUTING.md asks. Comments do not count toward the package line budget. Claude-Session: https://claude.ai/code/session_01T233rKgZqE5wzDm3EVTHL1 --- src/codex32/bech32.py | 25 +++++++++++++++++++++++++ src/codex32/checksums.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/codex32/bech32.py b/src/codex32/bech32.py index 59befc70..7704f012 100644 --- a/src/codex32/bech32.py +++ b/src/codex32/bech32.py @@ -1,3 +1,28 @@ +# Portions of this file are derived from work by: +# Copyright (c) 2017, 2020 Pieter Wuille +# Source: https://github.com/sipa/bech32/blob/master/ref/python/segwit_addr.py +# +# Additional code and modifications: +# Copyright (c) 2026 Ben Westgate +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + """Bech32 character, container, and bit-conversion helpers.""" from codex32.checksums import _Checksum diff --git a/src/codex32/checksums.py b/src/codex32/checksums.py index 95bf7428..6061d1e7 100644 --- a/src/codex32/checksums.py +++ b/src/codex32/checksums.py @@ -1,3 +1,32 @@ +# The polymod arithmetic in this file is derived from work by: +# Copyright (c) 2017, 2020 Pieter Wuille, MIT License +# Source: https://github.com/sipa/bech32/blob/master/ref/python/segwit_addr.py +# codex32 constants in this file are derived from work by: +# Author: Leon Olsson Curr and Pearlwort Sneed +# License: BSD-3-Clause +# Source: https://github.com/bitcoin/bips/blob/master/bip-0093.mediawiki +# +# Additional code: +# Copyright (c) 2026 Ben Westgate , MIT License +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + """Immutable checksum specifications used by codex32.""" from dataclasses import dataclass From 92dd96036ad9bfb37265f1197c1b1900b1105695 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Wed, 7 Oct 2026 09:05:21 +0000 Subject: [PATCH 07/13] docs: Document the fingerprint provider for fresh seeds The one-shot signature in api.md omitted generate_master_seed's fingerprint argument. A fresh call that leaves identifier unset raises ValueError unless that callable is supplied, so the documented defaults could not generate a seed. Show the argument and its contract. Claude-Session: https://claude.ai/code/session_01T233rKgZqE5wzDm3EVTHL1 --- docs/developer/api.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/developer/api.md b/docs/developer/api.md index f68ba676..51c9fb5c 100644 --- a/docs/developer/api.md +++ b/docs/developer/api.md @@ -169,9 +169,14 @@ boundary; there is no legacy decoder. The one-shot function creates only unshared secrets: ```python -generate_master_seed(seed_bytes=None, *, byte_length=None, identifier=None) +generate_master_seed(seed_bytes=None, *, byte_length=None, identifier=None, fingerprint=None) ``` +A fresh seed with no `identifier` needs `fingerprint`: a callable that takes +the seed bytes and returns their four-byte BIP32 master fingerprint. This +package has no secp256k1 arithmetic, so the CLI asks Bitcoin Core. Without +either argument, fresh generation raises `ValueError`. + Shared creation uses `CreationCeremony.master_seed(...)` or `CreationCeremony.from_secret(...)`. Exactly one of `share_count` and `indices` is required. `next_share()` returns one pending share, `confirm(text)` must From 753cf613e87035a064ea8b0c2349d98f5cae0aa7 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Wed, 7 Oct 2026 03:35:02 +0000 Subject: [PATCH 08/13] correct: Redact worksheet correction addends WorksheetCorrection had the same repr leak as CorrectionEdit: for an erasure the worksheet filled with q, the addend is the recovered character itself, and for any other position it is the true character XOR the written one. Leave addend out of the generated repr; field access, equality and the CLI's explicit display are unchanged. Tighten the regression to compare exact reprs and to check that the repaired payload text does not appear. Refs #129 Claude-Session: https://claude.ai/code/session_01T233rKgZqE5wzDm3EVTHL1 --- src/codex32/correction.py | 3 ++- tests/test_public_api.py | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/codex32/correction.py b/src/codex32/correction.py index 5df1a1cc..1d4999ef 100644 --- a/src/codex32/correction.py +++ b/src/codex32/correction.py @@ -55,7 +55,8 @@ @dataclass(frozen=True, slots=True) class WorksheetCorrection: reverse_index: int - addend: str + # An addend for a q-filled erasure is the recovered character itself. + addend: str = field(repr=False) @dataclass(frozen=True, slots=True, init=False) diff --git a/tests/test_public_api.py b/tests/test_public_api.py index 1901802c..70106c53 100644 --- a/tests/test_public_api.py +++ b/tests/test_public_api.py @@ -19,6 +19,7 @@ Profile, Share, correct, + correct_worksheet_residue, parse_codex32, ) from codex32.errors import InvalidIdentifier, InvalidShareIndex, InvalidThreshold @@ -110,8 +111,11 @@ def test_correction_edits_do_not_render_recovery_characters() -> None: rendered = repr(candidate) assert len(candidate.edits) == 8 + assert text[9:17].lower() not in rendered.lower() assert all(f"'{edit.replacement}'" not in rendered for edit in candidate.edits) - assert "observed" not in rendered and "replacement" not in rendered + first = candidate.edits[0] + assert repr(first) == f"CorrectionEdit(kind='erasure', reverse_index={first.reverse_index})" + assert repr(correct_worksheet_residue("2ppjkw73qdjvc")) == "(WorksheetCorrection(reverse_index=37),)" def test_master_seed_default_rendering_does_not_disclose_seed_material() -> None: From e4185484271f4aae7caeb4403b75fbe4f323e75b Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Tue, 20 Oct 2026 00:37:18 -0500 Subject: [PATCH 09/13] Simplify AI policy to tool-neutral expectations (#152) --- CONTRIBUTING.md | 2 +- docs/developer/AI_POLICY.md | 68 +++++++++++++++++-------------------- 2 files changed, 33 insertions(+), 37 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5e947759..a0ab1f96 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ Getting Started New contributors are very welcome and needed. If you use AI tools while contributing, please read and follow the [AI -policy](/doc/AI_POLICY.md). +policy](docs/developer/AI_POLICY.md). In-depth reviewing and testing are the bottleneck of the project, and are the most effective way anyone can start to contribute. It will teach you much more diff --git a/docs/developer/AI_POLICY.md b/docs/developer/AI_POLICY.md index fde44c48..ff24b0d0 100644 --- a/docs/developer/AI_POLICY.md +++ b/docs/developer/AI_POLICY.md @@ -1,38 +1,34 @@ # AI Policy -Using AI (i.e. LLMs) as tools for coding is welcome, provided that such use adheres to the following policy, adds value, and does not waste the community's time. - -A high bar is held for all contributions to this project. - -**AI should not be used to generate comments when communicating with maintainers and other contributors**. -Comments are expected to be written by humans. -Comments that are believed to be written by AI may be moderated. - -If you are opening an issue, you should be able to describe the problem in your own words. - -You should only open a pull request if you: - -- know the language the code is written in -- could have written the code yourself -- understand the existing surrounding code and the effect of the suggested changes - -You must also be able to explain the pull request changes in your own words. -This includes the pull request body and responses to questions. -**Do not copy responses from the AI when replying to questions from reviewers.** - -This project requires a human author in the loop who understands the work produced by AI. -**Pull requests should not be opened or driven by autonomous agents**. -A human author must choose the work, understand the change, and be responsible for the contribution. -Do not include agents as authors or co-authors of your commits for these reasons. -Pull requests that appear in violation of this can be closed without notice. - -If you wish to include context from an interaction with AI in your comments, it must be disclosed as such. -It must be accompanied by human commentary explaining the relevance and implications of the context. - -Questions or proposed changes to this policy can be discussed in [bitcoin-core/meta]. - -This policy was adapted from [ripgrep's AI policy], which was adapted from [uv's AI policy]. - -[bitcoin-core/meta]: https://github.com/bitcoin-core/meta -[ripgrep's ai policy]: https://github.com/BurntSushi/ripgrep/blob/f0cec341ab95c25c691ad3d5754d4bd9eedde21f/AI_POLICY.md -[uv's ai policy]: https://github.com/astral-sh/.github/blob/c5187e200db51bfe11d56e13053d29bd3793fdd8/AI_POLICY.md +Use whatever tools help you, AI included. This project has no rules about +which tools you may use for what. + +The expectations are the same for every contribution, however it was made: + +- Do your best. +- If you open an issue, you should be able to describe the problem in your + own words. +- If you open a pull request, you must be able to explain the changes in your + own words when asked. +- A human author must choose the work, understand the change, and be + responsible for the contribution. Understanding means knowing what the + change does, why, and what it affects well enough to defend it in review, + not memorizing every implementation detail. If you can't defend it, don't + submit it. +- Do not include agents as authors or co-authors of your commits. +- Respect reviewers' time. Review is the bottleneck. Unverified or low-effort + issues, pull requests and comments may be closed without detailed review. + +Saying which tools you used, and how, is welcome when it helps review. It is +not required. + +Changes to share generation, recovery or checksums get a security review +however they were written. + +Questions or proposed changes to this policy can be raised in an issue. + +This policy follows Linus Torvalds' [reply to Laurent Pinchart] on 13 October +2026 and the Linux kernel's [tool-generated content guidelines]. + +[reply to Laurent Pinchart]: https://www.theregister.com/ai-and-ml/2026/10/14/linux-kernel-devs-drop-obligatory-confession-of-ai-tool-usage/5303140 +[tool-generated content guidelines]: https://docs.kernel.org/process/generated-content.html From fad5b9d34070fa7a49e67c99e47dc7c2b722d56e Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Fri, 9 Oct 2026 06:35:10 +0000 Subject: [PATCH 10/13] docs: Drop raw alignment benchmark data The per-case CSV and kernel JSON (~9,900 lines) are generated records of an interrupted run that promoted no timing guarantee, and nothing in the package, tests or tools reads them. Keep the summary in alignment-benchmarks.md as informational guidance for setting correction limits on slower devices, drop its run-condition and source-hash details, point to the history for the raw JSON, and stop shipping docs *.csv/*.json in the sdist. Claude-Session: https://claude.ai/code/session_01MDsbGqZmvVThoJrs4vzc4K --- MANIFEST.in | 2 +- docs/developer/alignment-benchmarks.md | 57 +- .../alignment-kernel-benchmarks.json | 8736 ----------------- .../developer/alignment-public-benchmarks.csv | 1173 --- 4 files changed, 23 insertions(+), 9945 deletions(-) delete mode 100644 docs/developer/alignment-kernel-benchmarks.json delete mode 100644 docs/developer/alignment-public-benchmarks.csv diff --git a/MANIFEST.in b/MANIFEST.in index b4462da8..3d6eac8a 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,6 @@ include LICENSE README.md SECURITY.md recursive-include LICENSES * -recursive-include docs *.csv *.html *.json *.md +recursive-include docs *.html *.md prune docs/planning recursive-include requirements *.txt recursive-include tests *.py *.json *.md diff --git a/docs/developer/alignment-benchmarks.md b/docs/developer/alignment-benchmarks.md index 616b136f..d84cd82b 100644 --- a/docs/developer/alignment-benchmarks.md +++ b/docs/developer/alignment-benchmarks.md @@ -1,42 +1,38 @@ # Alignment correction benchmark evidence -Measured 2026-09-10 with one shared **inclusive capture-mass ceiling `<=1`**. - -Host: **AMD Ryzen 7 7735U with Radeon Graphics**, Python **3.13.12**, `Linux-7.0.10+deb14-amd64-x86_64-with-glibc2.42`. +Informational only: these timings help set correction limits on slower devices. They are not timing guarantees. -## Execution conditions and limits - -The host rebooted repeatedly during this task. Accessible user journals did not establish the cause; kernel journals and persistent crash records required administrator access. Remaining cases resumed under first a 50%, then a 25% single-core CPU quota, 1 GiB memory limit, low priority and pauses between cases. The final run also waits for a CPU sensor reading at or below 75°C before each case, stopping if cooling takes over one minute. Capped rows are marked and excluded from promotion evidence. These precautions are not a diagnosed hardware fix. **No public timing guarantee is promoted from this interrupted, mixed-condition run.** +Measured 2026-09-10 with one shared **inclusive capture-mass ceiling `<=1`**. -Only complete JSON records were preserved across restarts. Cached syndrome tables persist within each process; restarted processes rebuild them. Timed calls retain the ten-second deadline. Cooldown pauses occur outside the timed call. +Host: **AMD Ryzen 7 7735U with Radeon Graphics**, Python **3.13.12**, `Linux-7.0.10+deb14-amd64-x86_64-with-glibc2.42`. Cached syndrome tables persist within each process. Timed calls retain the ten-second deadline. ## Public required-depth measurements -All 1156 cases requested `A<=2` and `G<=2`: 1152 completed, 1156 returned no candidates, 284 were capped, and 872 uncapped cases completed without candidates below eight seconds. Maximum elapsed time was **10.001 seconds**; maximum admitted mass was **0.992777219241**. +All 1156 cases requested `A<=2` and `G<=2`: 1152 completed and none returned candidates. Maximum elapsed time was **10.001 seconds**; maximum admitted mass was **0.992777219241**. -The exhaustive sweep stopped after 1120 of 1980 planned cases because the temperature gate made it impractically slow. The additional 36 representative cases cover every existing public profile length, known/unknown targets, and frozen/unfrozen five-character headers at offset zero with no explicit erasures. The partial matrix additionally exercises offsets -8/-4/-3/-2/-1/0/1/2/3/4/8 and erasures 0/1/2/4/8. The tool retains the full matrix for a stable host. Inputs use valid header syntax and deterministic random remaining symbols. Some offsets have no reachable required layer. No-candidate status is recorded rather than assumed. +The exhaustive sweep stopped after 1120 of 1980 planned cases because it was impractically slow on this host. The additional 36 representative cases cover every existing public profile length, known/unknown targets, and frozen/unfrozen five-character headers at offset zero with no explicit erasures. The partial matrix additionally exercises offsets -8/-4/-3/-2/-1/0/1/2/3/4/8 and erasures 0/1/2/4/8. Inputs use valid header syntax and deterministic random remaining symbols. Some offsets have no reachable required layer. No-candidate status is recorded rather than assumed. -| Profile | Displayed D | Full body B | Mutable M (frozen / unfrozen) | Completed | Capped | Maximum seconds | -|---|---:|---:|---:|---:|---:|---:| -| ms | 48 | 45 | 40 / 45 | 224/224 | 4 | 2.288 | -| ms | 54 | 51 | 46 / 51 | 224/224 | 4 | 2.768 | -| ms | 61 | 58 | 53 / 58 | 224/224 | 4 | 3.860 | -| ms | 67 | 64 | 59 / 64 | 224/224 | 12 | 4.616 | -| ms | 74 | 71 | 66 / 71 | 224/224 | 224 | 6.005 | -| ms | 127 | 124 | 119 / 124 | 20/24 | 24 | 10.001 | -| cl | 74 | 71 | 66 / 71 | 4/4 | 4 | 5.589 | -| bip39_12w | 56 | 46 | 41 / 46 | 4/4 | 4 | 2.158 | -| bip39_24w | 82 | 72 | 67 / 72 | 4/4 | 4 | 5.821 | +| Profile | Displayed D | Full body B | Mutable M (frozen / unfrozen) | Completed | Maximum seconds | +|---|---:|---:|---:|---:|---:| +| ms | 48 | 45 | 40 / 45 | 224/224 | 2.288 | +| ms | 54 | 51 | 46 / 51 | 224/224 | 2.768 | +| ms | 61 | 58 | 53 / 58 | 224/224 | 3.860 | +| ms | 67 | 64 | 59 / 64 | 224/224 | 4.616 | +| ms | 74 | 71 | 66 / 71 | 224/224 | 6.005 | +| ms | 127 | 124 | 119 / 124 | 20/24 | 10.001 | +| cl | 74 | 71 | 66 / 71 | 4/4 | 5.589 | +| bip39_12w | 56 | 46 | 41 / 46 | 4/4 | 2.158 | +| bip39_24w | 82 | 72 | 67 / 72 | 4/4 | 5.821 | -The implementation requires `A<=2` / `G<=2` before surfacing suggestions. Required-phase interruption suppresses suggestions. Character depths 3/4 remain best effort. Runtime under a CPU quota must not be extrapolated into an uncapped guarantee. +The implementation requires `A<=2` / `G<=2` before surfacing suggestions. Required-phase interruption suppresses suggestions. Character depths 3/4 remain best effort. ## Deeper public search -0/16 depth-3/4 probes completed within the deadline at displayed ms lengths 48 and 127, with both target-knowledge and header-freezing states. No deeper cutoff is promoted. Under the CPU quota, long-profile probes may expire in the required phase before deeper work begins. +0/16 depth-3/4 probes completed within the deadline at displayed ms lengths 48 and 127, with both target-knowledge and header-freezing states. No deeper cutoff is promoted. Long-profile probes may expire in the required phase before deeper work begins. ## Coordinates and synthetic kernels -`B = D - len(hrp + "1")`; checksum selection uses `X = len(bech32_hrp_expand(hrp)) + B`. Mutable length excludes the frozen header, while reverse indices and the syndrome retain full-body coordinates. The CSV records all eligible target body lengths and the selected checksum size. Public profile validation is unchanged. +`B = D - len(hrp + "1")`; checksum selection uses `X = len(bech32_hrp_expand(hrp)) + B`. Mutable length excludes the frozen header, while reverse indices and the syndrome retain full-body coordinates. Public profile validation is unchanged. Synthetic kernels use **body lengths** 40/66/93/127/1015/1023 with explicit short/long period selection. They need not form valid public application strings and never promote public cutoffs. Character depths 2/3/4 sample 32 hypotheses per structural class. Group depth 2 completes the structural-generation and incremental-syndrome sphere; this is distinct from complete BCH decoding of that sphere. @@ -55,7 +51,7 @@ Synthetic kernels use **body lengths** 40/66/93/127/1015/1023 with explicit shor | 1023 | yes | 356,746 | 5.020 | | 1023 | no | 648,466 | 8.897 | -The JSON records generation/syndrome throughput, BCH throughput for E=0/1/2/4/8 and S=0..4 wherever E+2S<=8, root scans of degrees 1..4, sampled full-result dedup cost, retained allocation counts and traced peaks. BCH microcases exercise successful locators; public timings primarily exercise failed hypotheses. Allocations cover sampled batches, not a retained complete sphere. +The `--kernel` output records generation/syndrome throughput, BCH throughput for E=0/1/2/4/8 and S=0..4 wherever E+2S<=8, root scans of degrees 1..4, sampled full-result dedup cost, retained allocation counts and traced peaks. BCH microcases exercise successful locators; public timings primarily exercise failed hypotheses. Allocations cover sampled batches, not a retained complete sphere. Separate public tracemalloc runs had a maximum peak of 116,160 bytes. Tracing results are neither timing evidence nor process RSS. @@ -63,8 +59,7 @@ Separate public tracemalloc runs had a maximum peak of 116,160 bytes. Tracing re Incremental syndromes compose small piece-table segments from shifted prefixes. Full candidate bodies materialize only after BCH survival. Repeated two-erasure product-table construction was removed after profiling identified it as a dominant cost; changing erasure locations use direct field multiplication. Constant locators avoid unnecessary root scans. Search follows admitted capture-volume layers. No MITM is used. -- [Public and deeper per-case results](alignment-public-benchmarks.csv). -- [Kernel, memory and measured runtime source hashes](alignment-kernel-benchmarks.json). +The raw kernel JSON from these runs is in git history at commit `753cf61`. Reproduce with: ```sh .venv/bin/python -m tools.alignment_benchmark --public --depths 2 @@ -73,12 +68,4 @@ Incremental syndromes compose small piece-table segments from shifted prefixes. .venv/bin/python -m tools.alignment_benchmark --public --lengths 48 --depths 2 --deltas 0 --erasures 0 --memory ``` -Commands emit JSON Lines with a host header. Capped portions of these recorded runs used systemd `CPUQuota=50%` or `CPUQuota=25%` as recorded, `MemoryMax=1G`, `CPUWeight=10`, and `nice -n 10`; each case was followed by an untimed pause equal to its elapsed time, capped at ten seconds. These settings are execution precautions, not correction policy. Full 13/15 consecutive-erasure completion at mass exactly 1 is additionally covered by API tests. - -## Validation - -After failure cleanup, normal and optimized full pytest runs each pass **714 tests**. Both runs used a 25% single-core CPU quota, 1 GiB memory limit, cooling pauses, and the 75°C temperature gate. The CLI tests now observe prefills at the editable-input boundary and expect the current diagnostic text. The approved package size budget is **4,500** nonblank/noncomment lines, retaining recursive counting; the formatted package measures **4,088**. - -Ruff lint and formatting, mypy (19 source files), all 57 frozen PR #70 correction cases, all 768 wallet differential records, and staged whitespace checks pass. No public timing cutoff is promoted by this validation. - -The kernel artifact preserves the measured source hashes in `source_sha256` and records the subsequently formatted files in `post_cleanup_source_sha256`. The failure cleanup changed test expectations, formatting, and the approved package size budget; it did not change runtime semantics. +Commands emit JSON Lines with a host header. Full 13/15 consecutive-erasure completion at mass exactly 1 is additionally covered by API tests. diff --git a/docs/developer/alignment-kernel-benchmarks.json b/docs/developer/alignment-kernel-benchmarks.json deleted file mode 100644 index 6dae6db0..00000000 --- a/docs/developer/alignment-kernel-benchmarks.json +++ /dev/null @@ -1,8736 +0,0 @@ -{ - "host": { - "system": "Linux-7.0.10+deb14-amd64-x86_64-with-glibc2.42", - "python": "3.13.12", - "machine": "x86_64" - }, - "capture_mass_ceiling": 1, - "source_sha256": { - "_alignment.py": "a8e8a51cd3835a055dc433bba8873ebd8bb2bbdc95e7b7c66ee7ea9020d4ed4f", - "correction.py": "80cbbb30430c150e7939bac8680ed55cb0e136f9fdb8dc020df8445226f1a4f2", - "indel.py": "254784d95d56c5d667de35b861c23e5e2ad128ee7fefc6a3649d8a8f12ea7cee", - "_cli_input.py": "dcc22720843974b160992dca52cb8605f5c9e868b7c10838963e0395dc141946", - "cli.py": "f997c147aa5038847d1fa3228c75d2465b70bb124c4105c9ac7afcc65791290c" - }, - "synthetic_kernel": [ - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 40 - ], - "target_checksum_symbols": { - "40": 13 - }, - "unknown": false, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 3901, - "structural_only_mass": 1.4501475107536743e-15, - "complete_group_structural_seconds": null, - "generated_hypotheses": 128, - "sampling_only": true, - "generation_seconds": 0.0003894030000992643, - "generation_per_second": 328708.3046801668, - "syndrome_seconds": 9.87850003184576e-05, - "syndrome_updates_per_second": 1295743.2766853338, - "full_result_dedup_seconds": 0.0012567339999804972, - "traced_peak_bytes": 6112, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.00033970900017266104, - "calls_per_second": 94198.26964765617 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0004968050000115909, - "calls_per_second": 64411.59005898373 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007790859999659006, - "calls_per_second": 41073.77106173207 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0012474370000745694, - "calls_per_second": 25652.598085584363 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.00147388300001694, - "calls_per_second": 21711.35700705701 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.00040498199996363837, - "calls_per_second": 79015.8575019955 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006587289999515633, - "calls_per_second": 48578.39870774321 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0009332459999313869, - "calls_per_second": 34288.92275172105 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013686960000995896, - "calls_per_second": 23379.917817887686 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005468890001338877, - "calls_per_second": 58512.787772593445 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008296510000036506, - "calls_per_second": 38570.43503817773 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.04038560599997254, - "calls_per_second": 792.3615161308155 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0020237179999185173, - "calls_per_second": 15812.479802664424 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007442710000304942, - "calls_per_second": 42995.091839785375 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.001021911999941949, - "calls_per_second": 31313.850900877766 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.001234322000073007, - "calls_per_second": 25925.16377258712 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0012992449999273958, - "calls_per_second": 24629.688782168272 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0002333589998215757 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0003120869998838316 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0003903650001575443 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.00047968200010473083 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 40 - ], - "target_checksum_symbols": { - "40": 13 - }, - "unknown": false, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 947578, - "structural_only_mass": 3.7428984607859594e-13, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.0007058370001686853, - "generation_per_second": 317353.72323421284, - "syndrome_seconds": 0.00017439900034332823, - "syndrome_updates_per_second": 1284411.0319384024, - "full_result_dedup_seconds": 0.002225800000132949, - "traced_peak_bytes": 6080, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0003135289998681401, - "calls_per_second": 102063.92395426943 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0004862349999257276, - "calls_per_second": 65811.79883161023 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007543189999523747, - "calls_per_second": 42422.37037913718 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0011989459999313112, - "calls_per_second": 26690.109481021922 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.001663691000203471, - "calls_per_second": 19234.340990055465 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0003948230000787589, - "calls_per_second": 81048.9763605886 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.000644743000066228, - "calls_per_second": 49632.17901817152 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0008842330000788934, - "calls_per_second": 36189.556369356134 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013251430000309483, - "calls_per_second": 24148.337197761033 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005131249999976717, - "calls_per_second": 62362.97198566665 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008057260001805844, - "calls_per_second": 39715.7346204888 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011018630000307894, - "calls_per_second": 29041.722972008156 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0014501880000352685, - "calls_per_second": 22066.10453211705 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007757500000025175, - "calls_per_second": 41250.40283583133 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010761050000382966, - "calls_per_second": 29736.87511800538 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014232680000532127, - "calls_per_second": 22483.46762437123 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001403450999987399, - "calls_per_second": 22800.93854383752 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.000238668999827496 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.000323318000027939 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.00040628399983688723 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0005012130000068282 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 40 - ], - "target_checksum_symbols": { - "40": 13 - }, - "unknown": false, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 90042403, - "structural_only_mass": 5.4211708987996973e-11, - "complete_group_structural_seconds": null, - "generated_hypotheses": 416, - "sampling_only": true, - "generation_seconds": 0.0014072760000090057, - "generation_per_second": 295606.5476831395, - "syndrome_seconds": 0.0003512409998620569, - "syndrome_updates_per_second": 1184371.9843736235, - "full_result_dedup_seconds": 0.004256270000269069, - "traced_peak_bytes": 6048, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.00032568199981142243, - "calls_per_second": 98255.35343841156 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0005009520000385237, - "calls_per_second": 63878.375567996874 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007812599999397207, - "calls_per_second": 40959.47572187109 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0012008389999209612, - "calls_per_second": 26648.03525044259 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0014201920000687096, - "calls_per_second": 22532.164663969255 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004035389999899053, - "calls_per_second": 79298.40734303374 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006353659998694638, - "calls_per_second": 50364.67171138275 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0009052130001236947, - "calls_per_second": 35350.79588519751 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0014474429999609129, - "calls_per_second": 22107.951747228828 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005263200000626966, - "calls_per_second": 60799.51359664857 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0007972799999151903, - "calls_per_second": 40136.46398179305 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.05682084900013251, - "calls_per_second": 563.1735632800096 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0020755450000251585, - "calls_per_second": 15417.637295077733 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007549199999630218, - "calls_per_second": 42388.59746935762 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010264210000059393, - "calls_per_second": 31176.291209761723 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012376980000681215, - "calls_per_second": 25854.449145299383 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001272613999844907, - "calls_per_second": 25145.095059381576 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00023104499996406958 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.00031321000005846145 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0003925089999938791 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0004909940000743518 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 40 - ], - "target_checksum_symbols": { - "40": 13 - }, - "unknown": false, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 739, - "structural_only_mass": 2.491865274126194e-06, - "complete_group_structural_seconds": 0.0016425110000000132, - "generated_hypotheses": 415, - "sampling_only": false, - "generation_seconds": 0.0011389249998501327, - "generation_per_second": 364378.69047971413, - "syndrome_seconds": 0.0004909429999315762, - "syndrome_updates_per_second": 845311.9813457764, - "full_result_dedup_seconds": 0.001642770999978893, - "traced_peak_bytes": 3784, - "retained_allocation_count": 21, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.00032892900003389514, - "calls_per_second": 97285.43240852129 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0005030359998272615, - "calls_per_second": 63613.73740843307 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007984229998783121, - "calls_per_second": 40079.005746173556 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0012661020000450662, - "calls_per_second": 25274.424966441075 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0014839519999441109, - "calls_per_second": 21564.039808029636 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004098409999642172, - "calls_per_second": 78079.05993493547 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006600020001314988, - "calls_per_second": 48484.701551850325 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0009148110000296583, - "calls_per_second": 34979.902951497694 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013480259999596456, - "calls_per_second": 23738.41454167646 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005583409999871947, - "calls_per_second": 57312.6458575206 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008569419999275851, - "calls_per_second": 37342.083831465985 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010724179999215266, - "calls_per_second": 29839.11124425511 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0014977180001096713, - "calls_per_second": 21365.83789315264 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008099940000647621, - "calls_per_second": 39506.46547683252 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011103389999789215, - "calls_per_second": 28820.027037334978 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.001343308000059551, - "calls_per_second": 23821.789193975907 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0014035910000984586, - "calls_per_second": 22798.66428165703 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0002383379999173485 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.00032788699991215253 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.00041394899994884327 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0005037979999542586 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 38, - 39, - 40, - 41, - 42 - ], - "target_checksum_symbols": { - "38": 13, - "39": 13, - "40": 13, - "41": 13, - "42": 13 - }, - "unknown": true, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 12103, - "structural_only_mass": 2.840438930069855e-14, - "complete_group_structural_seconds": null, - "generated_hypotheses": 320, - "sampling_only": true, - "generation_seconds": 0.0008376169996608951, - "generation_per_second": 382036.1813687525, - "syndrome_seconds": 0.00022358100022756844, - "syndrome_updates_per_second": 1431248.6287935602, - "full_result_dedup_seconds": 0.002975097999751597, - "traced_peak_bytes": 4912, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005821349998313963, - "calls_per_second": 54970.06709658096 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006338030000279105, - "calls_per_second": 50488.87430099074 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007474760000150127, - "calls_per_second": 42810.73907303686 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0011734879999494296, - "calls_per_second": 27269.132706409448 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0014176879999467928, - "calls_per_second": 22571.962237954325 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004044209999847226, - "calls_per_second": 79125.46579235212 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006371289998696739, - "calls_per_second": 50225.307601044165 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0008896839999579242, - "calls_per_second": 35967.82678064726 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013122789998760709, - "calls_per_second": 24385.058362605832 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005233039998984168, - "calls_per_second": 61149.924338839 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008341000000200438, - "calls_per_second": 38364.704470963945 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010273230000166222, - "calls_per_second": 31148.918109963695 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0014308229999642208, - "calls_per_second": 22364.75091664042 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007801680001193745, - "calls_per_second": 41016.80663024328 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010771959998692182, - "calls_per_second": 29706.757176860203 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012924310001380945, - "calls_per_second": 24759.542286265838 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0013872100000753562, - "calls_per_second": 23067.88445748062 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00023898999984339753 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.00033267599997088837 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.000410382000154641 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0005017539999698784 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 37, - 38, - 39, - 40, - 41, - 42, - 43 - ], - "target_checksum_symbols": { - "37": 13, - "38": 13, - "39": 13, - "40": 13, - "41": 13, - "42": 13, - "43": 13 - }, - "unknown": true, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 1964768, - "structural_only_mass": 1.8854974818873632e-11, - "complete_group_structural_seconds": null, - "generated_hypotheses": 736, - "sampling_only": true, - "generation_seconds": 0.0025503470005787676, - "generation_per_second": 288588.18028800574, - "syndrome_seconds": 0.0006499599999187922, - "syndrome_updates_per_second": 1132377.3772108406, - "full_result_dedup_seconds": 0.00713734500004648, - "traced_peak_bytes": 4880, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.00032322800007023034, - "calls_per_second": 99001.32412119959 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.000500010999985534, - "calls_per_second": 63998.592032826884 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007781540000451059, - "calls_per_second": 41122.96537464963 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0012393819999942934, - "calls_per_second": 25819.31962877252 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.001499400000056994, - "calls_per_second": 21341.87008055465 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.00040331900004275667, - "calls_per_second": 79341.66254653913 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006537100000514329, - "calls_per_second": 48951.369869639886 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0009050920000390761, - "calls_per_second": 35355.52186807357 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013496080000550137, - "calls_per_second": 23710.588555117927 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005334439999842289, - "calls_per_second": 59987.552584612575 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008069279999745049, - "calls_per_second": 39656.57406981917 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010319010000330309, - "calls_per_second": 31010.726803225978 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.00150463100021625, - "calls_per_second": 21267.672934693535 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.07657012499998928, - "calls_per_second": 417.9175624958753 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010597840000627912, - "calls_per_second": 30194.832152687748 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.001273114000014175, - "calls_per_second": 25135.219626556387 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0013491180000073655, - "calls_per_second": 23719.20024773615 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00023817800001779688 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0003118870001799223 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0003920270000890014 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.00048421099995721306 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44 - ], - "target_checksum_symbols": { - "36": 13, - "37": 13, - "38": 13, - "39": 13, - "40": 13, - "41": 13, - "42": 13, - "43": 13, - "44": 13 - }, - "unknown": true, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 337006832, - "structural_only_mass": 1.8834935841587292e-08, - "complete_group_structural_seconds": null, - "generated_hypotheses": 1440, - "sampling_only": true, - "generation_seconds": 0.06442867900182137, - "generation_per_second": 22350.295277034813, - "syndrome_seconds": 0.0011902779997399193, - "syndrome_updates_per_second": 1209801.408002707, - "full_result_dedup_seconds": 0.01691188899962981, - "traced_peak_bytes": 4848, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.00033540100002937834, - "calls_per_second": 95408.1830322422 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0004956230000061623, - "calls_per_second": 64565.203793210014 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.000790187000120568, - "calls_per_second": 40496.74316980334 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013436879999062512, - "calls_per_second": 23815.05230547019 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002370467999980974, - "calls_per_second": 13499.443991758943 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.000670902000138085, - "calls_per_second": 47696.98106938683 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009486040000865614, - "calls_per_second": 33733.78142731841 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0009189279999191058, - "calls_per_second": 34823.185279822785 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.001376468999978897, - "calls_per_second": 23247.89007270821 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005326620000687399, - "calls_per_second": 60075.62017915753 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008060360000854416, - "calls_per_second": 39700.46002487225 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015281240000604157, - "calls_per_second": 20940.70899922706 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022298740000223916, - "calls_per_second": 14350.58662492978 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0012550410001495038, - "calls_per_second": 25497.17498965219 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.001190859999951499, - "calls_per_second": 26871.336682148434 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012937839999267453, - "calls_per_second": 24733.649513220025 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0014078480000989657, - "calls_per_second": 22729.72650296803 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00023018299998511793 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0003152330000375514 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0759015209998779 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.000499118999869097 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 40, - "expanded_length": 45, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 32, - 36, - 40, - 44, - 48 - ], - "target_checksum_symbols": { - "32": 13, - "36": 13, - "40": 13, - "44": 13, - "48": 13 - }, - "unknown": true, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 3101, - "structural_only_mass": 1.089901474603258e-05, - "complete_group_structural_seconds": 0.004478043000062826, - "generated_hypotheses": 1173, - "sampling_only": false, - "generation_seconds": 0.0033564130008016946, - "generation_per_second": 349480.233725654, - "syndrome_seconds": 0.0011107499999525317, - "syndrome_updates_per_second": 1056043.214089695, - "full_result_dedup_seconds": 0.07940165499985596, - "traced_peak_bytes": 4392, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.00034619100006239023, - "calls_per_second": 92434.5231223024 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0004986280000593979, - "calls_per_second": 64176.09920860456 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0007633860000169079, - "calls_per_second": 41918.505185176626 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.001252926999995907, - "calls_per_second": 25540.195079285975 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0014551070000834443, - "calls_per_second": 21991.509901447065 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.00040659499995854276, - "calls_per_second": 78702.39428242548 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006508240001039667, - "calls_per_second": 49168.43877129319 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0009208420001414197, - "calls_per_second": 34750.8041499905 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0013580049999291077, - "calls_per_second": 23563.97804254808 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005250369999885152, - "calls_per_second": 60948.08556482682 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.000810244000149396, - "calls_per_second": 39494.275791119355 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010728180000114662, - "calls_per_second": 29827.985734447022 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.002389603999972678, - "calls_per_second": 13391.34015525831 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007931319998988329, - "calls_per_second": 40346.37362265263 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.001083146999917517, - "calls_per_second": 29543.54303011211 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0013465530000758008, - "calls_per_second": 23764.382091309173 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0014253510000798997, - "calls_per_second": 22450.610409791134 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00023416999988512543 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.00033372800021425064 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.00040144500007954775 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0005427600001439714 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 66 - ], - "target_checksum_symbols": { - "66": 13 - }, - "unknown": false, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 10726, - "structural_only_mass": 3.9508869266458024e-15, - "complete_group_structural_seconds": null, - "generated_hypotheses": 128, - "sampling_only": true, - "generation_seconds": 0.0003853850000723469, - "generation_per_second": 332135.39700811147, - "syndrome_seconds": 9.120099980464147e-05, - "syndrome_updates_per_second": 1403493.385754371, - "full_result_dedup_seconds": 0.02171572399993238, - "traced_peak_bytes": 6032, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005908220000492292, - "calls_per_second": 54161.82876963561 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006501329999082373, - "calls_per_second": 49220.69792568078 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.001029656999889994, - "calls_per_second": 31078.310547511257 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015041290000681329, - "calls_per_second": 21274.770979450892 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0017773929998838867, - "calls_per_second": 18003.896719572145 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005152090000137832, - "calls_per_second": 62110.71623194454 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008326959998612438, - "calls_per_second": 38429.39080448605 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.001125688000001901, - "calls_per_second": 28427.0597180977 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.001719113000035577, - "calls_per_second": 18614.25048809343 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007269970001289039, - "calls_per_second": 44016.68781896772 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009683120001682255, - "calls_per_second": 33047.199657177254 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.001221618000045055, - "calls_per_second": 26194.76792157597 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018251730000429234, - "calls_per_second": 17532.58458198069 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0014717779999955383, - "calls_per_second": 21742.409521067042 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0014517709998926875, - "calls_per_second": 22042.043822590054 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017160269999294542, - "calls_per_second": 18647.725240520995 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0018354220001128851, - "calls_per_second": 17434.6825950827 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0003741939999599708 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005165219999980764 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0761462319999282 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0011476979998406023 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 66 - ], - "target_checksum_symbols": { - "66": 13 - }, - "unknown": false, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 4164103, - "structural_only_mass": 1.6324993386187397e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.0007360240003890794, - "generation_per_second": 304337.90186405386, - "syndrome_seconds": 0.0001789359996564599, - "syndrome_updates_per_second": 1251844.2372136333, - "full_result_dedup_seconds": 0.004171768000105658, - "traced_peak_bytes": 6000, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005813630000375269, - "calls_per_second": 55043.062592449816 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.001191951999999219, - "calls_per_second": 26846.718659829396 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011764630000925536, - "calls_per_second": 27200.17543899173 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0014723599999797443, - "calls_per_second": 21733.81509986704 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0017317170002115745, - "calls_per_second": 18478.769912226053 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008492670001487568, - "calls_per_second": 37679.55188932917 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.001286770000206161, - "calls_per_second": 24868.469108599897 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010972640000090905, - "calls_per_second": 29163.446535870025 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015503059998991375, - "calls_per_second": 20641.086341716997 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006155070000204432, - "calls_per_second": 51989.660554530106 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009082579999812879, - "calls_per_second": 35232.279815492155 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.001178677000098105, - "calls_per_second": 27149.08324955568 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0016867320000528707, - "calls_per_second": 18971.597147025703 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008443780000106926, - "calls_per_second": 37897.71879370942 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011827539999558212, - "calls_per_second": 27055.499284885344 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014735120000750612, - "calls_per_second": 21716.823479123283 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0014280760001383896, - "calls_per_second": 22407.77101281654 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00038933200016799674 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005230440001469105 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0006581279999409162 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.020261838999886095 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 66 - ], - "target_checksum_symbols": { - "66": 13 - }, - "unknown": false, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 650880057, - "structural_only_mass": 3.9611837670660427e-10, - "complete_group_structural_seconds": null, - "generated_hypotheses": 416, - "sampling_only": true, - "generation_seconds": 0.0018006079999395297, - "generation_per_second": 231033.07328078663, - "syndrome_seconds": 0.00045197099984761735, - "syndrome_updates_per_second": 920413.0356599317, - "full_result_dedup_seconds": 0.007572452999966117, - "traced_peak_bytes": 5968, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004509989998950914, - "calls_per_second": 70953.59414864256 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006706020001274737, - "calls_per_second": 47718.31875526343 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010511170000881975, - "calls_per_second": 30443.80406492801 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015748320001875982, - "calls_per_second": 20319.627741999193 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0018875200000820769, - "calls_per_second": 16953.462744028413 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005167619999610906, - "calls_per_second": 61924.05788817565 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009245590001683013, - "calls_per_second": 34611.09566201282 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012026919998788799, - "calls_per_second": 26606.97834792502 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.029523717000074612, - "calls_per_second": 1083.8743644615997 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006673750001482404, - "calls_per_second": 47949.05411933623 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009963540001081128, - "calls_per_second": 32117.09893926027 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012562730000809097, - "calls_per_second": 25472.170458124194 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018024000000878004, - "calls_per_second": 17754.105636063683 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009055529999386636, - "calls_per_second": 35337.523040802116 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0012688059998708923, - "calls_per_second": 25220.56169600094 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.001549775000057707, - "calls_per_second": 20648.158602899424 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015032379999411205, - "calls_per_second": 21287.380974438773 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00038063600004534237 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005311889999575214 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.000732055999833392 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0014126670000678132 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 66 - ], - "target_checksum_symbols": { - "66": 13 - }, - "unknown": false, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 2377, - "structural_only_mass": 7.875525170684597e-06, - "complete_group_structural_seconds": 0.0048291329999301524, - "generated_hypotheses": 1353, - "sampling_only": false, - "generation_seconds": 0.0033361059995513642, - "generation_per_second": 405562.6530397865, - "syndrome_seconds": 0.0014863870001136092, - "syndrome_updates_per_second": 910260.9212113575, - "full_result_dedup_seconds": 0.003091102000325918, - "traced_peak_bytes": 4272, - "retained_allocation_count": 28, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004754039998715598, - "calls_per_second": 67311.17114842421 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.012333466999962184, - "calls_per_second": 2594.5664751118334 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011839960000088467, - "calls_per_second": 27027.118334657294 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015904710000995692, - "calls_per_second": 20119.8261382928 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.00207158599982904, - "calls_per_second": 15447.1018836007 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008479339999212243, - "calls_per_second": 37738.78627696601 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0007832030000827217, - "calls_per_second": 40857.86187823612 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.001078136999922208, - "calls_per_second": 29680.82906189931 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0016654829998969944, - "calls_per_second": 19213.645532244467 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006513050000194198, - "calls_per_second": 49132.12703579101 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009818469998208457, - "calls_per_second": 32591.635973668945 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012740070001200365, - "calls_per_second": 25117.601392288245 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0017832930000167835, - "calls_per_second": 17944.33107722558 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009015860000545217, - "calls_per_second": 35493.00898423984 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013285679999626154, - "calls_per_second": 24086.083663689362 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015336450001086632, - "calls_per_second": 20865.32411198987 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015071349998834194, - "calls_per_second": 21232.338179708706 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00038522500017279526 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005609449999610661 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0006866409999020107 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0008157039999332483 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 64, - 65, - 66, - 67, - 68 - ], - "target_checksum_symbols": { - "64": 13, - "65": 13, - "66": 13, - "67": 13, - "68": 13 - }, - "unknown": true, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 32838, - "structural_only_mass": 7.531413101675988e-14, - "complete_group_structural_seconds": null, - "generated_hypotheses": 320, - "sampling_only": true, - "generation_seconds": 0.07702282199966248, - "generation_per_second": 4154.612771801613, - "syndrome_seconds": 0.00040816800037646317, - "syndrome_updates_per_second": 783990.9049824001, - "full_result_dedup_seconds": 0.005323923999867475, - "traced_peak_bytes": 5248, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.000639482999986285, - "calls_per_second": 50040.42328050363 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0007305139999971288, - "calls_per_second": 43804.77307775863 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.001015910999967673, - "calls_per_second": 31498.822240352023 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0016619959999388811, - "calls_per_second": 19253.957290617294 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002103766000118412, - "calls_per_second": 15210.817171776163 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005074749999494088, - "calls_per_second": 63057.29346901846 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008418739998887759, - "calls_per_second": 38010.43862172686 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011846679999507614, - "calls_per_second": 27011.78726979206 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018782929998906184, - "calls_per_second": 17036.745599256083 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0012511330000961607, - "calls_per_second": 25576.817170948663 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.001014027000110218, - "calls_per_second": 31557.34511657166 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012632560001293314, - "calls_per_second": 25331.365927985982 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.07724242600011166, - "calls_per_second": 414.28010041986175 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.00125748499999645, - "calls_per_second": 25447.619653586597 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.001205818000016734, - "calls_per_second": 26538.001588594558 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.001558941999974195, - "calls_per_second": 20526.741854751297 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001492177000045558, - "calls_per_second": 21445.17707954418 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00038531399991370563 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005425100000593375 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0008560699998270138 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0008338079999248293 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 63, - 64, - 65, - 66, - 67, - 68, - 69 - ], - "target_checksum_symbols": { - "63": 13, - "64": 13, - "65": 13, - "66": 13, - "67": 13, - "68": 13, - "69": 13 - }, - "unknown": true, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 8667555, - "structural_only_mass": 8.004944396147046e-11, - "complete_group_structural_seconds": null, - "generated_hypotheses": 736, - "sampling_only": true, - "generation_seconds": 0.07796640900028251, - "generation_per_second": 9439.962792147233, - "syndrome_seconds": 0.0005732779993650183, - "syndrome_updates_per_second": 1283844.8376097076, - "full_result_dedup_seconds": 0.013878124999791908, - "traced_peak_bytes": 5216, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004360199998245662, - "calls_per_second": 73391.1288768297 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006646299998465111, - "calls_per_second": 48147.08936910769 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010509460000776016, - "calls_per_second": 30448.757593289403 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0016251659999397816, - "calls_per_second": 19690.296253543158 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.001884754000002431, - "calls_per_second": 16978.343062255724 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005153890001565742, - "calls_per_second": 62089.02399988836 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.07643751199998405, - "calls_per_second": 418.6426162066431 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014850529998966522, - "calls_per_second": 21548.052495248954 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015439630001310434, - "calls_per_second": 20725.885268807615 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006070919998819591, - "calls_per_second": 52710.297625766725 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011724349999440165, - "calls_per_second": 27293.62395486999 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011971609999363864, - "calls_per_second": 26729.905168728674 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.001730704000010519, - "calls_per_second": 18489.5857407191 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008846839998568612, - "calls_per_second": 36171.10742952002 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0012028720000216708, - "calls_per_second": 26602.99682711335 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015140870000323048, - "calls_per_second": 21134.848921704794 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0014796519999435986, - "calls_per_second": 21626.706821076696 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0003849340000670054 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005392340001435514 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0006633069999679719 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0008216149999498157 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70 - ], - "target_checksum_symbols": { - "62": 13, - "63": 13, - "64": 13, - "65": 13, - "66": 13, - "67": 13, - "68": 13, - "69": 13, - "70": 13 - }, - "unknown": true, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 2394826531, - "structural_only_mass": 1.2456749404212938e-07, - "complete_group_structural_seconds": null, - "generated_hypotheses": 1440, - "sampling_only": true, - "generation_seconds": 0.004758348998166184, - "generation_per_second": 302625.9739575555, - "syndrome_seconds": 0.00108435800029838, - "syndrome_updates_per_second": 1327974.7090940068, - "full_result_dedup_seconds": 0.17160334599930138, - "traced_peak_bytes": 5192, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004257200000665762, - "calls_per_second": 75166.77627312714 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006506429999717511, - "calls_per_second": 49182.11676970219 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0010331519999908778, - "calls_per_second": 30973.17722879358 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015138060000481346, - "calls_per_second": 21138.77207448147 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.001828286999852935, - "calls_per_second": 17502.722495195798 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005021940000915492, - "calls_per_second": 63720.3948955313 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008098419998532336, - "calls_per_second": 39513.88049249028 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011763410000185104, - "calls_per_second": 27202.996409626514 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0016341020000254503, - "calls_per_second": 19582.6209131998 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006301850000909326, - "calls_per_second": 50778.739569146455 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009674489999724756, - "calls_per_second": 33076.678978334174 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.001285305999999764, - "calls_per_second": 24896.795004462652 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018017269999290875, - "calls_per_second": 17760.737337709576 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009292660001847253, - "calls_per_second": 34435.7804908808 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013129379999554658, - "calls_per_second": 24372.81882395469 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015840569999454601, - "calls_per_second": 20201.293262238527 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.07683421900014764, - "calls_per_second": 416.481099390605 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0003673300000173185 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.000514355999939653 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0006271690001540264 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0007749470000817382 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 66, - "expanded_length": 71, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 58, - 62, - 66, - 70, - 74 - ], - "target_checksum_symbols": { - "58": 13, - "62": 13, - "66": 13, - "70": 13, - "74": 13 - }, - "unknown": true, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 9359, - "structural_only_mass": 3.126268863744115e-05, - "complete_group_structural_seconds": 0.08376700199983134, - "generated_hypotheses": 3707, - "sampling_only": false, - "generation_seconds": 0.08009756599994944, - "generation_per_second": 46281.05678020653, - "syndrome_seconds": 0.0036491090004346916, - "syndrome_updates_per_second": 1015864.4204813866, - "full_result_dedup_seconds": 0.006561463000025469, - "traced_peak_bytes": 4368, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0004327839999405114, - "calls_per_second": 73939.88688213653 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0006688270000267948, - "calls_per_second": 47844.95841034827 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.001051787000051263, - "calls_per_second": 30424.411024704008 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0015629479999006435, - "calls_per_second": 20474.129658846126 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0018880489999446581, - "calls_per_second": 16948.712666322735 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005107899999075016, - "calls_per_second": 62648.05498501311 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008384560001104546, - "calls_per_second": 38165.389711307995 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0011775640000450949, - "calls_per_second": 27174.743792078018 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0016804589999992459, - "calls_per_second": 19042.416387436027 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006726749998051673, - "calls_per_second": 47571.26399712853 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010451750001720939, - "calls_per_second": 30616.882335236704 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0013440559998798562, - "calls_per_second": 23808.531789494224 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018544260001363, - "calls_per_second": 17256.013449794173 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.07678707000013674, - "calls_per_second": 416.7368282178629 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013918859999648703, - "calls_per_second": 22990.388581254247 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014576999999462714, - "calls_per_second": 21952.390753364525 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001446268999870881, - "calls_per_second": 22125.897742990324 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0003899130001627782 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0005080339999494754 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0006428389999655337 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0007954949999202654 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 93 - ], - "target_checksum_symbols": { - "93": 13 - }, - "unknown": false, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 21391, - "structural_only_mass": 7.84718427390696e-15, - "complete_group_structural_seconds": null, - "generated_hypotheses": 128, - "sampling_only": true, - "generation_seconds": 0.0005004909999115625, - "generation_per_second": 255748.85466994968, - "syndrome_seconds": 0.00010444700023981568, - "syndrome_updates_per_second": 1225501.9263942998, - "full_result_dedup_seconds": 0.003184685999940484, - "traced_peak_bytes": 6048, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005607639998288505, - "calls_per_second": 57065.00419029511 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.000835780999977942, - "calls_per_second": 38287.54183314116 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012476550000428688, - "calls_per_second": 25648.115864482166 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0019176050000169198, - "calls_per_second": 16687.48256273719 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0022872600000027887, - "calls_per_second": 13990.538898053122 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006219499998678657, - "calls_per_second": 51451.081287560824 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010069720001411042, - "calls_per_second": 31778.44070690737 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.00146077499994135, - "calls_per_second": 21906.179939610684 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.002086853000037081, - "calls_per_second": 15334.093968013749 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008073970000168629, - "calls_per_second": 39633.538394781826 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011951359999784472, - "calls_per_second": 26775.195459409708 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.07686498099997152, - "calls_per_second": 416.3144202170798 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0020708919998924102, - "calls_per_second": 15452.278535849531 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0010506749999876774, - "calls_per_second": 30456.611226473746 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0014377520001289668, - "calls_per_second": 22256.967819992315 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0016995640000914136, - "calls_per_second": 18828.35833088888 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015917119999357965, - "calls_per_second": 20104.139443122094 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.000535877999936929 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0008435049999206967 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009469100000387698 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0012197230000765558 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 93 - ], - "target_checksum_symbols": { - "93": 13 - }, - "unknown": false, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 11536183, - "structural_only_mass": 4.506904886184687e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.0008149219997903856, - "generation_per_second": 274872.9326949295, - "syndrome_seconds": 0.0002124489999459911, - "syndrome_updates_per_second": 1054370.6962939124, - "full_result_dedup_seconds": 0.005653529000028357, - "traced_peak_bytes": 6048, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006206269999893266, - "calls_per_second": 51560.760328748715 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009019950000492827, - "calls_per_second": 35476.9150585664 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0013101220001772163, - "calls_per_second": 24425.20619886656 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018767680001019471, - "calls_per_second": 17050.58909692713 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0022749260001546645, - "calls_per_second": 14066.391609144397 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.000678033999975014, - "calls_per_second": 47195.27339510883 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010116320001998247, - "calls_per_second": 31632.05591922669 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.001391706000049453, - "calls_per_second": 22993.36210296062 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.002117118999876766, - "calls_per_second": 15114.88017530553 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008323239999299403, - "calls_per_second": 38446.56648455836 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011824520001937344, - "calls_per_second": 27062.409294209894 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.001535476999833918, - "calls_per_second": 20840.42939325123 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022582849999253085, - "calls_per_second": 14170.044968220744 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.001091863000056037, - "calls_per_second": 29307.706185077877 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.07321231499986425, - "calls_per_second": 437.084935779716 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0019189969998478773, - "calls_per_second": 16675.37781587814 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.00158585100007258, - "calls_per_second": 20178.44047047008 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0005437120000806317 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0007555600000159757 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009308200001214573 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0011801480000031006 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 93 - ], - "target_checksum_symbols": { - "93": 13 - }, - "unknown": false, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 2537374431, - "structural_only_mass": 1.5518085867412094e-09, - "complete_group_structural_seconds": null, - "generated_hypotheses": 416, - "sampling_only": true, - "generation_seconds": 0.0013284679996559134, - "generation_per_second": 313142.65763853415, - "syndrome_seconds": 0.00032639499977449304, - "syndrome_updates_per_second": 1274529.328842094, - "full_result_dedup_seconds": 0.010575088999303262, - "traced_peak_bytes": 6048, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006022420000135753, - "calls_per_second": 53134.78634714729 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008403500000895292, - "calls_per_second": 38079.37168631021 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.001328186999899117, - "calls_per_second": 24092.992931289475 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018845820000024105, - "calls_per_second": 16979.892623382304 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0021958470001663954, - "calls_per_second": 14572.964326556052 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006231509998997353, - "calls_per_second": 51351.91952696663 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009777079999366833, - "calls_per_second": 32729.608433266712 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014488130000245292, - "calls_per_second": 22087.04643004875 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.001936300000124902, - "calls_per_second": 16526.36471514529 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.056186963000072865, - "calls_per_second": 569.5271339004121 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0017799660001855955, - "calls_per_second": 17977.871485558368 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014987570000357664, - "calls_per_second": 21351.026216549013 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0020772240000042075, - "calls_per_second": 15405.1753686339 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0010022940000453673, - "calls_per_second": 31926.76001108614 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0014484319999610307, - "calls_per_second": 22092.8562755179 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0018000039999606088, - "calls_per_second": 17777.738272081777 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015560950000690354, - "calls_per_second": 20564.297166034423 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0005609649999769317 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0007705890000124782 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009392450001541874 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0011572149999210524 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 93 - ], - "target_checksum_symbols": { - "93": 13 - }, - "unknown": false, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 4946, - "structural_only_mass": 1.6274034720729073e-05, - "complete_group_structural_seconds": 0.009666960999993535, - "generated_hypotheses": 2830, - "sampling_only": false, - "generation_seconds": 0.006557484000495606, - "generation_per_second": 431567.9610939367, - "syndrome_seconds": 0.003099918000089019, - "syndrome_updates_per_second": 912927.3741817467, - "full_result_dedup_seconds": 0.004786887999671308, - "traced_peak_bytes": 4848, - "retained_allocation_count": 35, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005524180000975321, - "calls_per_second": 57927.14935854778 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008493469999848458, - "calls_per_second": 37676.00285933894 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012836029998197773, - "calls_per_second": 24929.826437374268 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.001912926000159132, - "calls_per_second": 16728.299995576406 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0022391990000869555, - "calls_per_second": 14290.824530895796 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006398430000444932, - "calls_per_second": 50012.2686311717 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010257080000428687, - "calls_per_second": 31197.962771727027 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014159320000999287, - "calls_per_second": 22599.955363493173 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.061585539999896355, - "calls_per_second": 519.6024911051175 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.000765889999911451, - "calls_per_second": 41781.45687200473 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011760410000078991, - "calls_per_second": 27209.935707841025 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015790069999184198, - "calls_per_second": 20265.901292174953 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022084409999933996, - "calls_per_second": 14489.85958877581 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0010202680000475084, - "calls_per_second": 31364.308199914074 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.001505018999978347, - "calls_per_second": 21262.19004574719 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0019064129999151191, - "calls_per_second": 16785.44995309241 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0016164979999757634, - "calls_per_second": 19795.879735378443 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0005467280000175379 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0007474850001472078 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009439540001494606 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0012026109998259926 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 91, - 92, - 93, - 94, - 95 - ], - "target_checksum_symbols": { - "91": 13, - "92": 13, - "93": 13, - "94": 15, - "95": 15 - }, - "unknown": true, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 65103, - "structural_only_mass": 8.565552916473332e-15, - "complete_group_structural_seconds": null, - "generated_hypotheses": 320, - "sampling_only": true, - "generation_seconds": 0.0009117529996274243, - "generation_per_second": 350972.24810970045, - "syndrome_seconds": 0.0002173169998513913, - "syndrome_updates_per_second": 1472503.302635444, - "full_result_dedup_seconds": 0.0070972109997455846, - "traced_peak_bytes": 5840, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005341739999948913, - "calls_per_second": 59905.57383980882 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008623709998119011, - "calls_per_second": 37106.99919985689 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012180999999600317, - "calls_per_second": 26270.42114855101 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018832490000022517, - "calls_per_second": 16991.911319194507 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.07836101600014445, - "calls_per_second": 408.3663233761672 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006126609998773347, - "calls_per_second": 52231.16863388881 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009411590001491277, - "calls_per_second": 34000.63113132804 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015838270001040655, - "calls_per_second": 20204.22684920603 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0019075059999522637, - "calls_per_second": 16775.83189819629 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007281989999228244, - "calls_per_second": 43944.03178717824 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011187930001597124, - "calls_per_second": 28602.25260207372 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0013934190001236857, - "calls_per_second": 22965.095206222642 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.001963070000101652, - "calls_per_second": 16300.997925872725 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009608259999822621, - "calls_per_second": 33304.67743440618 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.001389180999922246, - "calls_per_second": 23035.155247437935 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017430059999696823, - "calls_per_second": 18359.08769135425 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001550323999936154, - "calls_per_second": 20640.84668838116 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.000524756000004345 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0007193419999111939 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009495250001236855 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0011589289999847097 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 90, - 91, - 92, - 93, - 94, - 95, - 96 - ], - "target_checksum_symbols": { - "90": 13, - "91": 13, - "92": 13, - "93": 13, - "94": 15, - "95": 15, - "96": 15 - }, - "unknown": true, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 24056493, - "structural_only_mass": 5.210494712186702e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 736, - "sampling_only": true, - "generation_seconds": 0.07805019600027663, - "generation_per_second": 9429.828978230771, - "syndrome_seconds": 0.0006016500001351233, - "syndrome_updates_per_second": 1223302.58428439, - "full_result_dedup_seconds": 0.01828282999986186, - "traced_peak_bytes": 5840, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006080729999666801, - "calls_per_second": 52625.26045680941 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008642640000289248, - "calls_per_second": 37025.72362024687 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0012685449999025877, - "calls_per_second": 25225.750763636526 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.001870084999836763, - "calls_per_second": 17111.52167029479 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.07363752199989904, - "calls_per_second": 434.56106521406133 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006046969999715657, - "calls_per_second": 52919.06525334956 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011861990001307277, - "calls_per_second": 26976.923767827633 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014199590000316675, - "calls_per_second": 22535.861950441067 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.001928454000108104, - "calls_per_second": 16593.602957709212 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007189719999587396, - "calls_per_second": 44507.99196886168 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010939759999928356, - "calls_per_second": 29251.09874458815 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015181329999904847, - "calls_per_second": 21078.522105902823 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.002108373000055508, - "calls_per_second": 15177.580057777976 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009903220000069268, - "calls_per_second": 32312.722528406088 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0023856129998875986, - "calls_per_second": 13413.743134996215 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017566520000400487, - "calls_per_second": 18216.470877140408 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015380610000192974, - "calls_per_second": 20805.416689974267 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0005362580000110029 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0007297919999018632 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009236759999566857 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.08090073299990763 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97 - ], - "target_checksum_symbols": { - "89": 13, - "90": 13, - "91": 13, - "92": 13, - "93": 13, - "94": 15, - "95": 15, - "96": 15, - "97": 15 - }, - "unknown": true, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 9266824987, - "structural_only_mass": 2.890036174124e-09, - "complete_group_structural_seconds": null, - "generated_hypotheses": 1440, - "sampling_only": true, - "generation_seconds": 0.08061535099977846, - "generation_per_second": 17862.6028683291, - "syndrome_seconds": 0.0011407340005007427, - "syndrome_updates_per_second": 1262345.1210956192, - "full_result_dedup_seconds": 0.11038685100083967, - "traced_peak_bytes": 5840, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005363989998841134, - "calls_per_second": 59657.0836390699 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0008257919998868601, - "calls_per_second": 38750.67814217653 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.001273984000135897, - "calls_per_second": 25118.054855152444 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018085789999986446, - "calls_per_second": 17693.44883470613 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0021806489999107725, - "calls_per_second": 14674.53038123484 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0762748519998695, - "calls_per_second": 419.53539287175215 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011206459998902574, - "calls_per_second": 28554.958482102018 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0013818169998103258, - "calls_per_second": 23157.914546131982 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0019013630001154525, - "calls_per_second": 16830.031928704266 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007529260001319926, - "calls_per_second": 42500.85665044135 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.001094617000035214, - "calls_per_second": 29233.96950620222 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0014366099999278958, - "calls_per_second": 22274.660486566358 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.001996882999947047, - "calls_per_second": 16024.974923843092 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.000971695999851363, - "calls_per_second": 32932.11045933598 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0014341549999699055, - "calls_per_second": 22312.790458961194 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017216949997873598, - "calls_per_second": 18586.3349803259 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015300960001241037, - "calls_per_second": 20913.720444602513 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0005708229998617753 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0007750670001769322 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0009440239998639299 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0011508630000207631 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 93, - "expanded_length": 98, - "checksum_symbols": 13, - "period": 93, - "target_body_lengths": [ - 85, - 89, - 93, - 97, - 101 - ], - "target_checksum_symbols": { - "85": 13, - "89": 13, - "93": 13, - "97": 15, - "101": 15 - }, - "unknown": true, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 18998, - "structural_only_mass": 1.631884813802146e-05, - "complete_group_structural_seconds": 0.09853850700005751, - "generated_hypotheses": 7662, - "sampling_only": false, - "generation_seconds": 0.091460784999299, - "generation_per_second": 83773.60854773689, - "syndrome_seconds": 0.007055812999851696, - "syndrome_updates_per_second": 1085913.1329247311, - "full_result_dedup_seconds": 0.085839778999798, - "traced_peak_bytes": 4808, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.000610006999977486, - "calls_per_second": 52458.41441357403 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009242869998615788, - "calls_per_second": 34621.281057498716 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015260279999438353, - "calls_per_second": 20969.471072075838 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018045709998659731, - "calls_per_second": 17732.746454629196 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002100346999895919, - "calls_per_second": 15235.577741004574 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0005946779999703722, - "calls_per_second": 53810.63365652385 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0009346770000320248, - "calls_per_second": 34236.42605831061 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0013540840000132448, - "calls_per_second": 23632.21188618062 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0018193089999840595, - "calls_per_second": 17589.095640311996 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.000722528000096645, - "calls_per_second": 44288.9410454954 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011069909999150696, - "calls_per_second": 28907.19075625285 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017748360000950925, - "calls_per_second": 18029.834868283884 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.002630423000027804, - "calls_per_second": 12165.34374876655 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009994290001031914, - "calls_per_second": 32018.28243596693 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0014534519998505857, - "calls_per_second": 22016.55094443407 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0018357700000706245, - "calls_per_second": 17431.377568414842 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0015503729998727067, - "calls_per_second": 20640.194329124253 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0005321799999364885 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.07213401399985742 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0011650890000964864 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0010943770000721997 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 127 - ], - "target_checksum_symbols": { - "127": 15 - }, - "unknown": false, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 40006, - "structural_only_mass": 1.4293813333814327e-17, - "complete_group_structural_seconds": null, - "generated_hypotheses": 128, - "sampling_only": true, - "generation_seconds": 0.07610708500010333, - "generation_per_second": 1681.84079051019, - "syndrome_seconds": 0.0001786870000159979, - "syndrome_updates_per_second": 716336.3870261413, - "full_result_dedup_seconds": 0.004148416999896654, - "traced_peak_bytes": 6320, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007657390001440945, - "calls_per_second": 41789.695959038705 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.001059801999872434, - "calls_per_second": 30194.319319884064 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015646699998796976, - "calls_per_second": 20451.596823905602 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.002229810000017096, - "calls_per_second": 14350.998515458561 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002734708999923896, - "calls_per_second": 11701.427830489652 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007644160000381817, - "calls_per_second": 41862.02277084943 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.001246081999852322, - "calls_per_second": 25680.49294010542 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017023590000917466, - "calls_per_second": 18797.445191217244 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.002352612000095178, - "calls_per_second": 13601.902905666298 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008929480000006151, - "calls_per_second": 35836.35329266425 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013992799999869021, - "calls_per_second": 22868.90400798949 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0018429229999128438, - "calls_per_second": 17363.720568636538 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.07832781799993427, - "calls_per_second": 408.5394029491139 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0011237220001021342, - "calls_per_second": 28476.794079933956 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0025160489999507263, - "calls_per_second": 12718.353259664927 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.002039713000158372, - "calls_per_second": 15688.481662623803 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001635653999983333, - "calls_per_second": 19564.039827693432 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007359530000030645 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0010320199999114266 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0013305600000421691 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0015836869999930059 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 127 - ], - "target_checksum_symbols": { - "127": 15 - }, - "unknown": false, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 29189170, - "structural_only_mass": 1.111030969648873e-14, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.0007303940001293086, - "generation_per_second": 306683.7897906379, - "syndrome_seconds": 0.00017524099962429318, - "syndrome_updates_per_second": 1278239.6840935817, - "full_result_dedup_seconds": 0.0074244139996153535, - "traced_peak_bytes": 6320, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006669439999313909, - "calls_per_second": 47980.040308169606 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010679970000637695, - "calls_per_second": 29962.630979384117 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015342730000611482, - "calls_per_second": 20856.783635457734 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022461910000401986, - "calls_per_second": 14246.339692139856 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002721944999848347, - "calls_per_second": 11756.299264600453 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007728620000762021, - "calls_per_second": 41404.54569747883 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.001253946999895561, - "calls_per_second": 25519.41988191305 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017243999998299842, - "calls_per_second": 18557.179310574702 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.002436018000025797, - "calls_per_second": 13136.191932761221 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009210910000092554, - "calls_per_second": 34741.40991463217 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.001500619999887931, - "calls_per_second": 21324.519200323743 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.001982927000199197, - "calls_per_second": 16137.759986517609 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0025506829999812908, - "calls_per_second": 12545.659339178846 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.001221125000029133, - "calls_per_second": 26205.343432684254 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0017434260000754875, - "calls_per_second": 18354.664894646776 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0021418759999960457, - "calls_per_second": 14940.17394100269 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.00173152399997889, - "calls_per_second": 18480.829604666254 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007742550001239579 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0011314769999444252 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0013787210000373307 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0016942940001172246 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 127 - ], - "target_checksum_symbols": { - "127": 15 - }, - "unknown": false, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 8759417968, - "structural_only_mass": 5.2485089642362194e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 416, - "sampling_only": true, - "generation_seconds": 0.0013510999995105522, - "generation_per_second": 307897.2690035524, - "syndrome_seconds": 0.0003205739994882606, - "syndrome_updates_per_second": 1297672.3023828198, - "full_result_dedup_seconds": 0.014281294000056732, - "traced_peak_bytes": 6320, - "retained_allocation_count": 44, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006722030000219092, - "calls_per_second": 47604.6670409936 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010569459998350794, - "calls_per_second": 30275.908140049843 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.00158950700006244, - "calls_per_second": 20132.028357687606 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.03397247299994888, - "calls_per_second": 941.9390810921582 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002853952999885223, - "calls_per_second": 11212.518216413142 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.000745171000062328, - "calls_per_second": 42943.16337769914 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0016726339999877382, - "calls_per_second": 19131.501571912675 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.001709852999965733, - "calls_per_second": 18715.059131189235 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022756570001547516, - "calls_per_second": 14061.87311964145 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008587639999859675, - "calls_per_second": 37262.85685068644 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013161740000668942, - "calls_per_second": 24312.89479838806 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017966469999919354, - "calls_per_second": 17810.95563020651 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0024330819999249798, - "calls_per_second": 13152.043375844574 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0011533879999205965, - "calls_per_second": 27744.349691693515 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0016283400000247639, - "calls_per_second": 19651.91544733492 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0020366169999306294, - "calls_per_second": 15712.330792235347 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.00168054799996753, - "calls_per_second": 19041.407922069633 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007509719998779474 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.07638446500004648 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0017669010001100105 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0015743690000817878 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 127 - ], - "target_checksum_symbols": { - "127": 15 - }, - "unknown": false, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 9022, - "structural_only_mass": 2.8871078111594777e-08, - "complete_group_structural_seconds": 0.016611938000096416, - "generated_hypotheses": 5178, - "sampling_only": false, - "generation_seconds": 0.011098247999598243, - "generation_per_second": 466560.1273450948, - "syndrome_seconds": 0.005502741000100286, - "syndrome_updates_per_second": 940985.5924357756, - "full_result_dedup_seconds": 0.006850321000456461, - "traced_peak_bytes": 5776, - "retained_allocation_count": 43, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0010837769998488511, - "calls_per_second": 29526.36935869914 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010471979999238101, - "calls_per_second": 30557.735979564695 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.009311397999908877, - "calls_per_second": 3436.6482885076075 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.002237334000028568, - "calls_per_second": 14302.737096737188 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002688622999812651, - "calls_per_second": 11902.003368352434 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007500199999412871, - "calls_per_second": 42665.52892256875 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.00116926800001238, - "calls_per_second": 27367.549611946266 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0016524659999959113, - "calls_per_second": 19364.99752495917 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0023148600000695296, - "calls_per_second": 13823.73016037205 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008617290000074718, - "calls_per_second": 37134.64441805085 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013403990001279453, - "calls_per_second": 23873.488414230014 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0018011350000506354, - "calls_per_second": 17766.574964730786 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0024677569999767, - "calls_per_second": 12967.241102062373 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0011359249999713938, - "calls_per_second": 28170.873958056967 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.002086401000042315, - "calls_per_second": 15337.415961433588 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0787743999999293, - "calls_per_second": 406.2233415935725 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0024127240001234895, - "calls_per_second": 13263.017236269941 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007232899999962683 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0010078840000460332 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.001327094000089346 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0016177699999389006 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 125, - 126, - 127, - 128, - 129 - ], - "target_checksum_symbols": { - "125": 15, - "126": 15, - "127": 15, - "128": 15, - "129": 15 - }, - "unknown": true, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 121288, - "structural_only_mass": 2.669977286967807e-16, - "complete_group_structural_seconds": null, - "generated_hypotheses": 320, - "sampling_only": true, - "generation_seconds": 0.0009687910003322031, - "generation_per_second": 330308.60101948766, - "syndrome_seconds": 0.0002488989998710167, - "syndrome_updates_per_second": 1285662.056359523, - "full_result_dedup_seconds": 0.08645697700012533, - "traced_peak_bytes": 6656, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006882529999074904, - "calls_per_second": 46494.53036063946 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.001054791999877125, - "calls_per_second": 30337.734836562802 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.00153660699993452, - "calls_per_second": 20825.103622047554 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.002291745999855266, - "calls_per_second": 13963.152985549421 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002729388000034305, - "calls_per_second": 11724.240012632063 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007638350000434002, - "calls_per_second": 41893.86451024344 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.001211706000049162, - "calls_per_second": 26409.046417779296 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0016880919999948674, - "calls_per_second": 18956.31280765343 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0023481519999677403, - "calls_per_second": 13627.737897904235 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008738520000406425, - "calls_per_second": 36619.473318721815 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.07681395000008706, - "calls_per_second": 416.59099681716316 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017812779999530903, - "calls_per_second": 17964.629889799748 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0024653529999341117, - "calls_per_second": 12979.885639441987 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.00112345100001221, - "calls_per_second": 28483.663283625378 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0016071699999429256, - "calls_per_second": 19910.774840954222 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0025409140000647312, - "calls_per_second": 12593.893378203584 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0018980770000780467, - "calls_per_second": 16859.168515652524 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0012283489998026198 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0013559679998706997 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0013063240000974474 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0016102560000490485 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 124, - 125, - 126, - 127, - 128, - 129, - 130 - ], - "target_checksum_symbols": { - "124": 15, - "125": 15, - "126": 15, - "127": 15, - "128": 15, - "129": 15, - "130": 15 - }, - "unknown": true, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 60943518, - "structural_only_mass": 5.338234490365339e-13, - "complete_group_structural_seconds": null, - "generated_hypotheses": 736, - "sampling_only": true, - "generation_seconds": 0.0023366909997548646, - "generation_per_second": 314975.32197334245, - "syndrome_seconds": 0.0005872120004823955, - "syndrome_updates_per_second": 1253380.3794802811, - "full_result_dedup_seconds": 0.09991099200033204, - "traced_peak_bytes": 6656, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006880529999762075, - "calls_per_second": 46508.04516673359 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010906899999554298, - "calls_per_second": 29339.22562901251 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0016422049998254806, - "calls_per_second": 19485.995964816015 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0023225939999065304, - "calls_per_second": 13777.698556565545 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.07828400600010355, - "calls_per_second": 408.76804388316145 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007408420001411287, - "calls_per_second": 43194.09535893494 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0011453619999883813, - "calls_per_second": 27938.765211631442 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0016868299999259762, - "calls_per_second": 18970.494952902347 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.002282578999938778, - "calls_per_second": 14019.230002930144 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0008466409999527968, - "calls_per_second": 37796.42138968478 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013258020001103432, - "calls_per_second": 24136.3340810594 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0020974909998585645, - "calls_per_second": 15256.32291254541 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0025778640001590247, - "calls_per_second": 12413.377896594222 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0011560719999579305, - "calls_per_second": 27679.936890751163 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0017390179998528765, - "calls_per_second": 18401.189638466793 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.002125965000004726, - "calls_per_second": 15051.98815593336 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0017211340000358177, - "calls_per_second": 18592.39315435873 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007897940001839743 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.001078345999985686 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0014326519999485754 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.07751704499992229 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131 - ], - "target_checksum_symbols": { - "123": 15, - "124": 15, - "125": 15, - "126": 15, - "127": 15, - "128": 15, - "129": 15, - "130": 15, - "131": 15 - }, - "unknown": true, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 31837599663, - "structural_only_mass": 1.5299627484079602e-09, - "complete_group_structural_seconds": null, - "generated_hypotheses": 1440, - "sampling_only": true, - "generation_seconds": 0.08072059700020873, - "generation_per_second": 17839.313056570634, - "syndrome_seconds": 0.001190273999782221, - "syndrome_updates_per_second": 1209805.4735829483, - "full_result_dedup_seconds": 0.19942913500017312, - "traced_peak_bytes": 6656, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006695479999052623, - "calls_per_second": 47793.4367730586 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010384610000073735, - "calls_per_second": 30814.830792656427 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0015760609999233566, - "calls_per_second": 20303.7826591459 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022385669999493985, - "calls_per_second": 14294.859166923903 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0027747139999974024, - "calls_per_second": 11532.72012900427 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0007661990000542573, - "calls_per_second": 41764.60684200053 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0012677219999659428, - "calls_per_second": 25242.127217844034 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017124470000453584, - "calls_per_second": 18686.709719572285 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0784833239999898, - "calls_per_second": 407.72992744298335 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0009260199999516772, - "calls_per_second": 34556.48906251471 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013010640000175044, - "calls_per_second": 24595.2543453431 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017680629998721997, - "calls_per_second": 18098.90258566185 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.003138196000008975, - "calls_per_second": 10196.941172542596 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0011474059999727615, - "calls_per_second": 27888.994828996583 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0016243620000295778, - "calls_per_second": 19700.042231606818 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0020825229998990835, - "calls_per_second": 15365.97675106142 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.001678613999956724, - "calls_per_second": 19063.346308814882 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007593970001380512 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0010527180002100067 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0013794719998259097 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0016948950001278718 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 127, - "expanded_length": 132, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 119, - 123, - 127, - 131, - 135 - ], - "target_checksum_symbols": { - "119": 15, - "123": 15, - "127": 15, - "131": 15, - "135": 15 - }, - "unknown": true, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 34154, - "structural_only_mass": 1.0768811717364017e-07, - "complete_group_structural_seconds": 0.11696215300003132, - "generated_hypotheses": 13922, - "sampling_only": false, - "generation_seconds": 0.10385077700038892, - "generation_per_second": 134057.73555211688, - "syndrome_seconds": 0.01308225000047969, - "syndrome_updates_per_second": 1064190.0284346745, - "full_result_dedup_seconds": 0.08963564900068377, - "traced_peak_bytes": 5144, - "retained_allocation_count": 38, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0006685360001483787, - "calls_per_second": 47865.78433008505 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0010559840000041731, - "calls_per_second": 30303.489446690044 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.001495660000045973, - "calls_per_second": 21395.23688473075 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.0022104140000465122, - "calls_per_second": 14476.926041604263 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.002714259999947899, - "calls_per_second": 11789.585375245648 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.000767080999821701, - "calls_per_second": 41716.58535074917 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0012034209999001177, - "calls_per_second": 26590.86055724136 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0016920289999688976, - "calls_per_second": 18912.20540581055 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.0024218809999183577, - "calls_per_second": 13212.870492430771 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.07656071499991413, - "calls_per_second": 417.9689283209528 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0013105220000397821, - "calls_per_second": 24417.751093860774 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0017341980001219781, - "calls_per_second": 18452.33358460177 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.002424044999997932, - "calls_per_second": 13201.07506256167 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0011557119998997223, - "calls_per_second": 27688.559089787548 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0016057870000167895, - "calls_per_second": 19927.923192593677 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0020260169999346545, - "calls_per_second": 15794.536768957074 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0017168249999031104, - "calls_per_second": 18639.05756370389 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0007480660001419892 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0010439309999128454 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.0013416010001492396 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0016568329999699927 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1015 - ], - "target_checksum_symbols": { - "1015": 15 - }, - "unknown": false, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 2573026, - "structural_only_mass": 9.134721205243391e-16, - "complete_group_structural_seconds": null, - "generated_hypotheses": 128, - "sampling_only": true, - "generation_seconds": 0.0007378859995696985, - "generation_per_second": 173468.53047034878, - "syndrome_seconds": 9.774299996934133e-05, - "syndrome_updates_per_second": 1309556.6950078192, - "full_result_dedup_seconds": 0.10697459200014237, - "traced_peak_bytes": 14600, - "retained_allocation_count": 77, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004554786999960925, - "calls_per_second": 7025.575509957881 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.08266798099998596, - "calls_per_second": 387.0906197649297 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.010502018999886786, - "calls_per_second": 3047.033146706835 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.09004449799999747, - "calls_per_second": 355.37984786145284 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.016096117999950366, - "calls_per_second": 1988.056996109166 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.07993192100002489, - "calls_per_second": 400.3406849184825 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007137628999998924, - "calls_per_second": 4483.281493056703 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.010136543000044185, - "calls_per_second": 3156.8948111659483 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.08851008399983584, - "calls_per_second": 361.5407256879267 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004638573999955042, - "calls_per_second": 6898.671876380575 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.00751195199995891, - "calls_per_second": 4259.8781249101485 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.08604052599980605, - "calls_per_second": 371.91776349754224 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.013007163999873228, - "calls_per_second": 2460.182711643513 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.08028666599989265, - "calls_per_second": 398.57178774919845 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.008259776999921087, - "calls_per_second": 3874.19660364992 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.010422870999946099, - "calls_per_second": 3070.171356833015 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0056417680000322434, - "calls_per_second": 5671.9808400163065 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.08207031599999937 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008262271000148758 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08672095699989768 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013050396000153341 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1015 - ], - "target_checksum_symbols": { - "1015": 15 - }, - "unknown": false, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 14671979278, - "structural_only_mass": 5.552706939782171e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.0016795129999991332, - "generation_per_second": 133371.99533443066, - "syndrome_seconds": 0.00025560900030541234, - "syndrome_updates_per_second": 876338.4690380832, - "full_result_dedup_seconds": 0.19715887600000315, - "traced_peak_bytes": 14600, - "retained_allocation_count": 77, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.08022789699998611, - "calls_per_second": 398.8637518443932 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.007271208000020124, - "calls_per_second": 4400.919352040463 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.009929842000019562, - "calls_per_second": 3222.609181489188 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08829799399995863, - "calls_per_second": 362.40913921572206 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09285081999996692, - "calls_per_second": 344.6388518702517 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0043936229999417264, - "calls_per_second": 7283.283067396639 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0071828410000307485, - "calls_per_second": 4455.061722772788 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.08611582999992606, - "calls_per_second": 371.592539954936 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.012933993000160626, - "calls_per_second": 2474.1006122086656 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004875017000131265, - "calls_per_second": 6564.079673801827 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.08410677599999872, - "calls_per_second": 380.4687508174191 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.01022881300013978, - "calls_per_second": 3128.4177352311267 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.08944569499999488, - "calls_per_second": 357.7589731959915 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.004827878000014607, - "calls_per_second": 6628.170802970411 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.008283158000040203, - "calls_per_second": 3863.2608480780746 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.08672042600005625, - "calls_per_second": 369.00187736599963 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005309441999997944, - "calls_per_second": 6026.998694027055 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.006099487000028603 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008557683999924848 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08655972399992606 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013455062000048201 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1015 - ], - "target_checksum_symbols": { - "1015": 15 - }, - "unknown": false, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 35113456410028, - "structural_only_mass": 2.120530788191825e-08, - "complete_group_structural_seconds": null, - "generated_hypotheses": 416, - "sampling_only": true, - "generation_seconds": 0.002155790999495366, - "generation_per_second": 192968.61342188483, - "syndrome_seconds": 0.0003306700000393903, - "syndrome_updates_per_second": 1258051.8340050352, - "full_result_dedup_seconds": 0.4725322920000963, - "traced_peak_bytes": 14600, - "retained_allocation_count": 77, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004767213999912201, - "calls_per_second": 6712.515947593154 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.08314979600004335, - "calls_per_second": 384.84760684179327 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.00936408699999447, - "calls_per_second": 3417.311265905464 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08891229799996836, - "calls_per_second": 359.90521806118863 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.01591140400000768, - "calls_per_second": 2011.1361637216023 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004721488000086538, - "calls_per_second": 6777.524373547807 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.08349672700001065, - "calls_per_second": 383.24855535949234 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.009852554000190139, - "calls_per_second": 3247.8888214550716 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.08920652200004042, - "calls_per_second": 358.7181663688839 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.0046831859999656444, - "calls_per_second": 6832.955172020661 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007663431999844761, - "calls_per_second": 4175.674815232683 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.08636666799998238, - "calls_per_second": 370.5133096023402 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.01363002899984167, - "calls_per_second": 2347.7572938672192 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.005406884999956674, - "calls_per_second": 5918.379991484269 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.08548631400003615, - "calls_per_second": 374.32892474445055 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.012948759999972026, - "calls_per_second": 2471.279103178152 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005837643999939246, - "calls_per_second": 5481.663493068956 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.07743123600016588 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008710529999916616 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.011842932000035944 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.08910843799981194 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1015 - ], - "target_checksum_symbols": { - "1015": 15 - }, - "unknown": false, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 607201, - "structural_only_mass": 1.9230061260891706e-06, - "complete_group_structural_seconds": 5.200178456999993, - "generated_hypotheses": 351165, - "sampling_only": false, - "generation_seconds": 3.6251529719975224, - "generation_per_second": 96869.01565604884, - "syndrome_seconds": 1.5744785510055408, - "syndrome_updates_per_second": 223035.74715306758, - "full_result_dedup_seconds": 0.2121105870005522, - "traced_peak_bytes": 13424, - "retained_allocation_count": 46, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.07969479400003365, - "calls_per_second": 401.5318742148513 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0077634560000205965, - "calls_per_second": 4121.875618270407 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.01154146099997888, - "calls_per_second": 2772.6125834552968 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08819613599985132, - "calls_per_second": 362.82768669201045 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09230746499997622, - "calls_per_second": 346.6675203355248 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004466856000135522, - "calls_per_second": 7163.875441480347 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007147230000100535, - "calls_per_second": 4477.259021963737 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0858449610000207, - "calls_per_second": 372.7650362610367 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.012832753000111552, - "calls_per_second": 2493.6192568906945 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.005567101999986335, - "calls_per_second": 5748.053475592606 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.08273021700006211, - "calls_per_second": 386.7994205790126 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.010337338999988788, - "calls_per_second": 3095.574209188139 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0893921849999515, - "calls_per_second": 357.97312706941176 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.004839526000068872, - "calls_per_second": 6612.217808013554 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.007723271000031673, - "calls_per_second": 4143.3221752634045 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.08595439100008662, - "calls_per_second": 372.29046274049864 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005473556000197277, - "calls_per_second": 5846.29078406189 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.005935724999972081 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008900010999923325 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08813948200008781 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.01330758600010995 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1013, - 1014, - 1015, - 1016, - 1017 - ], - "target_checksum_symbols": { - "1013": 15, - "1014": 15, - "1015": 15, - "1016": 15, - "1017": 15 - }, - "unknown": true, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 7729228, - "structural_only_mass": 1.6734621807026204e-14, - "complete_group_structural_seconds": null, - "generated_hypotheses": 320, - "sampling_only": true, - "generation_seconds": 0.0022006899998814333, - "generation_per_second": 145408.93993122186, - "syndrome_seconds": 0.00022255699991546862, - "syndrome_updates_per_second": 1437833.9037709085, - "full_result_dedup_seconds": 0.38461536200043156, - "traced_peak_bytes": 78648, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.07983015599984356, - "calls_per_second": 400.8510267731747 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0068766340000365744, - "calls_per_second": 4653.439458873309 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.009901020000143035, - "calls_per_second": 3231.990239342786 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08842877100005353, - "calls_per_second": 361.8731736074974 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09244474699994498, - "calls_per_second": 346.15271325280435 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004331609000018943, - "calls_per_second": 7387.555063224787 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007151699999894845, - "calls_per_second": 4474.46061782101 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.010456943000008323, - "calls_per_second": 3060.167775608467 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.08807850500011227, - "calls_per_second": 363.31225195022563 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004806680000001506, - "calls_per_second": 6657.4017825172405 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007586627000137014, - "calls_per_second": 4217.9482396356225 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0870388030000413, - "calls_per_second": 367.6521148847235 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.08850497399998858, - "calls_per_second": 361.56159991645364 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.004871701999945799, - "calls_per_second": 6568.54626993934 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.007950798999900144, - "calls_per_second": 4024.752732448889 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.010652269000047454, - "calls_per_second": 3004.054816852395 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.08083620799993696, - "calls_per_second": 395.86221065719656 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.0061072209998656035 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008459853999966072 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08631830500007709 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013274570000021413 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018 - ], - "target_checksum_symbols": { - "1012": 15, - "1013": 15, - "1014": 15, - "1015": 15, - "1016": 15, - "1017": 15, - "1018": 15 - }, - "unknown": true, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 30727405618, - "structural_only_mass": 2.616190100528255e-10, - "complete_group_structural_seconds": null, - "generated_hypotheses": 736, - "sampling_only": true, - "generation_seconds": 0.004473135000353068, - "generation_per_second": 164537.84648616842, - "syndrome_seconds": 0.0005324489998201898, - "syndrome_updates_per_second": 1382292.0134107685, - "full_result_dedup_seconds": 0.8859577650000574, - "traced_peak_bytes": 78616, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.006413800000018455, - "calls_per_second": 4989.241947037314 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0075001770001108525, - "calls_per_second": 4266.56597564658 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0814421970001149, - "calls_per_second": 392.91670876652375 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.012712444000044343, - "calls_per_second": 2517.21856158331 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09200169299992922, - "calls_per_second": 347.8196863184313 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004749058000015793, - "calls_per_second": 6738.178392408259 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007608371000060288, - "calls_per_second": 4205.893745158646 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.08606858400003148, - "calls_per_second": 371.7965198543094 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.013545407000037812, - "calls_per_second": 2362.4243996441505 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.08093200999996952, - "calls_per_second": 395.3936149616456 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007286155999963739, - "calls_per_second": 4391.890593635279 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.010277556999881199, - "calls_per_second": 3113.5803966224557 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.08873681900013253, - "calls_per_second": 360.61693849936415 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0049343949999638426, - "calls_per_second": 6485.090877449918 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.007820347999995647, - "calls_per_second": 4091.8895169393754 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.0859774529999413, - "calls_per_second": 372.1906021107865 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005456313999957274, - "calls_per_second": 5864.765114370357 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.006112885999982609 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.08456056599993644 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.010352266999916537 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.08900799699995332 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1018, - 1019 - ], - "target_checksum_symbols": { - "1011": 15, - "1012": 15, - "1013": 15, - "1014": 15, - "1015": 15, - "1016": 15, - "1017": 15, - "1018": 15, - "1019": 15 - }, - "unknown": true, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 126199758710707, - "structural_only_mass": 5.74306278328415e-06, - "complete_group_structural_seconds": null, - "generated_hypotheses": 1440, - "sampling_only": true, - "generation_seconds": 0.08464787800016893, - "generation_per_second": 17011.649128370664, - "syndrome_seconds": 0.001267368001435898, - "syndrome_updates_per_second": 1136213.0007768178, - "full_result_dedup_seconds": 1.691986670999313, - "traced_peak_bytes": 78584, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.07997312699990289, - "calls_per_second": 400.1344101505354 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.006696505000036268, - "calls_per_second": 4778.612126747712 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.00951778499984357, - "calls_per_second": 3362.1267974140974 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08786139299991191, - "calls_per_second": 364.2100233948269 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.015451039000026867, - "calls_per_second": 2071.0581340157355 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.08011005900016244, - "calls_per_second": 399.45046102057063 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007063162999884298, - "calls_per_second": 4530.548141183233 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.011306660000172997, - "calls_per_second": 2830.190347946289 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.09076611900013631, - "calls_per_second": 352.5544592245036 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.005531871999892246, - "calls_per_second": 5784.6602380936 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.08453591800002869, - "calls_per_second": 378.53732185163165 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.011045921000004455, - "calls_per_second": 2896.997000067907 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.0901782869998442, - "calls_per_second": 354.85260437532247 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.00553484700003537, - "calls_per_second": 5781.550962437716 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.009317108000004737, - "calls_per_second": 3434.542134746504 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.08735710700011623, - "calls_per_second": 366.3124970468336 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0062243099998795515, - "calls_per_second": 5141.132109522058 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.006215873999963151 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0838000280000415 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.010414375999971526 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.08903096599988203 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1015, - "expanded_length": 1020, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1007, - 1011, - 1015, - 1019, - 1023 - ], - "target_checksum_symbols": { - "1007": 15, - "1011": 15, - "1015": 15, - "1019": 15, - "1023": 15 - }, - "unknown": true, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 2216303, - "structural_only_mass": 6.757267470981825e-06, - "complete_group_structural_seconds": 12.486016445000132, - "generated_hypotheses": 928007, - "sampling_only": false, - "generation_seconds": 9.039954021006224, - "generation_per_second": 102656.16371981335, - "syndrome_seconds": 3.4447688970071795, - "syndrome_updates_per_second": 269396.0110956221, - "full_result_dedup_seconds": 0.5031322999998338, - "traced_peak_bytes": 17912, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004453423000086332, - "calls_per_second": 7185.484064590241 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.007031722999954582, - "calls_per_second": 4550.8049734334945 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.08471077400008653, - "calls_per_second": 377.75596289519575 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.012678450000066732, - "calls_per_second": 2523.9678351716157 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09132303100000172, - "calls_per_second": 350.4044888742184 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004548181000018303, - "calls_per_second": 7035.779798532913 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.08299694299989824, - "calls_per_second": 385.55636922722846 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.00973815299994385, - "calls_per_second": 3286.0440783980816 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.012915905999989263, - "calls_per_second": 2477.5652594581134 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.08000628000013421, - "calls_per_second": 399.9686024640356 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007418848000042999, - "calls_per_second": 4313.338135491458 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.01037754099979793, - "calls_per_second": 3083.582131896477 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.08911013399983858, - "calls_per_second": 359.1061820203072 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.00504971000009391, - "calls_per_second": 6336.997570039644 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.008152842000072269, - "calls_per_second": 3925.0116707420975 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.08626610200008145, - "calls_per_second": 370.94524103998333 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.00562783300006231, - "calls_per_second": 5686.025153846197 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.006264115000021775 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.0838058430001638 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.010619394000059401 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.08887306500014347 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1023 - ], - "target_checksum_symbols": { - "1023": 15 - }, - "unknown": false, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 2613766, - "structural_only_mass": 9.279289612307203e-16, - "complete_group_structural_seconds": null, - "generated_hypotheses": 128, - "sampling_only": true, - "generation_seconds": 0.0007304870002826647, - "generation_per_second": 175225.56862814797, - "syndrome_seconds": 0.000111698999944565, - "syndrome_updates_per_second": 1145936.8487052256, - "full_result_dedup_seconds": 0.10483408399977634, - "traced_peak_bytes": 14664, - "retained_allocation_count": 77, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004644827999982226, - "calls_per_second": 6889.383202160005 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.08234357700007422, - "calls_per_second": 388.61561722016467 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.009400694999840198, - "calls_per_second": 3404.0036402142573 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08844547400008196, - "calls_per_second": 361.80483356299663 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.01526419500009979, - "calls_per_second": 2096.40927672837 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004488185000127487, - "calls_per_second": 7129.830877980974 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.08446729399997821, - "calls_per_second": 378.8448579873798 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.009978536999824428, - "calls_per_second": 3206.882932895177 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.08836675599991395, - "calls_per_second": 362.1271329687735 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004617136999968352, - "calls_per_second": 6930.701861395783 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007468706000054226, - "calls_per_second": 4284.544069584164 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.0821612450001794, - "calls_per_second": 389.4780318863246 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.013100984999937282, - "calls_per_second": 2442.564433144011 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.004882553000015832, - "calls_per_second": 6553.948313494238 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.08480356199993366, - "calls_per_second": 377.3426403955182 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.010298986999941917, - "calls_per_second": 3107.1016984661183 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005509517000064079, - "calls_per_second": 5808.131638331966 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.08174024300001292 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008132488999990528 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.010549736000029952 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.08933090699997592 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1023 - ], - "target_checksum_symbols": { - "1023": 15 - }, - "unknown": false, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 15021384178, - "structural_only_mass": 5.6849043841704e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.0012158970000655245, - "generation_per_second": 184226.13098636534, - "syndrome_seconds": 0.00018901399994319945, - "syndrome_updates_per_second": 1185097.4005487117, - "full_result_dedup_seconds": 0.2019827639999221, - "traced_peak_bytes": 14664, - "retained_allocation_count": 77, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004919502999882752, - "calls_per_second": 6504.722123507733 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0067259649999869, - "calls_per_second": 4757.681611495499 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0097416119999707, - "calls_per_second": 3284.8772872596696 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08862800600013543, - "calls_per_second": 361.05968580576103 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09314871100013988, - "calls_per_second": 343.53669155928463 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004491451000149027, - "calls_per_second": 7124.646355696241 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007136864000131027, - "calls_per_second": 4483.762055632909 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.0857499960000041, - "calls_per_second": 373.1778599732934 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.013559833000044819, - "calls_per_second": 2359.911069693427 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004770682999833298, - "calls_per_second": 6707.634944748619 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.08355516599999646, - "calls_per_second": 382.980508949038 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.010177297999916846, - "calls_per_second": 3144.253022782811 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.013361922000058257, - "calls_per_second": 2394.8650500923804 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.07678254400002515, - "calls_per_second": 416.76139305816065 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.008578383999974903, - "calls_per_second": 3730.306314113896 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.010917163999920376, - "calls_per_second": 2931.164174160376 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0821787279999171, - "calls_per_second": 389.39517292154096 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.005945303000089552 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008885809000048539 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08666657699995994 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013249460999986695 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1023 - ], - "target_checksum_symbols": { - "1023": 15 - }, - "unknown": false, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 36232923898416, - "structural_only_mass": 2.1881557482253144e-08, - "complete_group_structural_seconds": null, - "generated_hypotheses": 416, - "sampling_only": true, - "generation_seconds": 0.0022191459995610785, - "generation_per_second": 187459.50022318496, - "syndrome_seconds": 0.00035538499992071593, - "syndrome_updates_per_second": 1170561.503982461, - "full_result_dedup_seconds": 0.47581028400031755, - "traced_peak_bytes": 14664, - "retained_allocation_count": 77, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004479358000025968, - "calls_per_second": 7143.8808864606235 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.007013302000132171, - "calls_per_second": 4562.758027445123 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.08153727900003105, - "calls_per_second": 392.4585219478297 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.013131688999919788, - "calls_per_second": 2436.853324823293 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0921389300001465, - "calls_per_second": 347.30162375392376 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004840704999878653, - "calls_per_second": 6610.6073393859315 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.08344601299995702, - "calls_per_second": 383.48147322528735 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.009625843999856443, - "calls_per_second": 3324.383815120756 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.013076375999844458, - "calls_per_second": 2447.1612012671276 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.08026036599994768, - "calls_per_second": 398.70239315904513 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007840580999982194, - "calls_per_second": 4081.3301973505118 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.01106019999997443, - "calls_per_second": 2893.256903136831 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.08960840700001427, - "calls_per_second": 357.10935024204707 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.005172294999965743, - "calls_per_second": 6186.808757082096 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.08394048299987844, - "calls_per_second": 381.2224907026844 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.010498747999918123, - "calls_per_second": 3047.982483268439 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005774712999937037, - "calls_per_second": 5541.400932020154 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.08194842300008531 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008391222000000198 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.01095715599990399 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.088986420999845 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1023 - ], - "target_checksum_symbols": { - "1023": 15 - }, - "unknown": false, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 616846, - "structural_only_mass": 1.9535295560394574e-06, - "complete_group_structural_seconds": 5.020128347999844, - "generated_hypotheses": 356746, - "sampling_only": false, - "generation_seconds": 3.0804468389985686, - "generation_per_second": 115809.82196595076, - "syndrome_seconds": 1.9391842839929723, - "syndrome_updates_per_second": 183967.0437434779, - "full_result_dedup_seconds": 0.2904452550001224, - "traced_peak_bytes": 13488, - "retained_allocation_count": 46, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004471942000009221, - "calls_per_second": 7155.727869443301 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.08331993000001603, - "calls_per_second": 384.0617724954143 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.010049283000171272, - "calls_per_second": 3184.3067808374603 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08937910300005569, - "calls_per_second": 358.0255219162365 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.015442979999988893, - "calls_per_second": 2072.1389265558214 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004554084999881525, - "calls_per_second": 7026.658483720107 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.0827683770000931, - "calls_per_second": 386.62108838939787 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.009911334999969768, - "calls_per_second": 3228.626617917527 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.08934288399996149, - "calls_per_second": 358.1706630380747 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004609539000057339, - "calls_per_second": 6942.125882783928 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007655001000102857, - "calls_per_second": 4180.273784362671 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.08632966400000441, - "calls_per_second": 370.6721249372448 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.013649281999960294, - "calls_per_second": 2344.445663888627 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.005165029000181676, - "calls_per_second": 6195.512164379798 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.0835171700000501, - "calls_per_second": 383.15474530543605 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.01046926899994105, - "calls_per_second": 3056.5648853019425 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.00567177800007812, - "calls_per_second": 5641.969766722049 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.08296850200008521 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008675250000123924 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08652492900000652 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013800285000115764 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1021, - 1022, - 1023 - ], - "target_checksum_symbols": { - "1021": 15, - "1022": 15, - "1023": 15 - }, - "unknown": true, - "character_depth": 2, - "group_depth": null, - "raw_stratified_upper_bound": 5228554, - "structural_only_mass": 9.97141823295882e-16, - "complete_group_structural_seconds": null, - "generated_hypotheses": 224, - "sampling_only": true, - "generation_seconds": 0.001856595999925048, - "generation_per_second": 120650.91167332204, - "syndrome_seconds": 0.00019756099959522544, - "syndrome_updates_per_second": 1133827.022838234, - "full_result_dedup_seconds": 0.21184726599994974, - "traced_peak_bytes": 79352, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.07990201800021168, - "calls_per_second": 400.49051076426156 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.006940138999880219, - "calls_per_second": 4610.858658674169 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.009705263000114428, - "calls_per_second": 3297.180096986832 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08927591199994822, - "calls_per_second": 358.43935147947366 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09175134499992055, - "calls_per_second": 348.7687292216557 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004636266999796135, - "calls_per_second": 6902.104646131705 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007111871000006431, - "calls_per_second": 4499.519184188108 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.010266283999953885, - "calls_per_second": 3116.9992959617853 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.08870266899998569, - "calls_per_second": 360.75577387649025 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004862941000055798, - "calls_per_second": 6580.3800621131995 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007681406000074276, - "calls_per_second": 4165.904002430098 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.08574632699992435, - "calls_per_second": 373.19382788289266 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.013229147999936686, - "calls_per_second": 2418.901050933375 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.08092538299979424, - "calls_per_second": 395.42599384523595 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.007839941999918665, - "calls_per_second": 4081.6628490787284 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.011383093000176814, - "calls_per_second": 2811.186731014404 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.08132908499987934, - "calls_per_second": 393.46317495207865 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.006020717999945191 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.00843670800009022 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08665609399986351 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.01318307199994706 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1020, - 1021, - 1022, - 1023 - ], - "target_checksum_symbols": { - "1020": 15, - "1021": 15, - "1022": 15, - "1023": 15 - }, - "unknown": true, - "character_depth": 3, - "group_depth": null, - "raw_stratified_upper_bound": 23217803739, - "structural_only_mass": 6.340250601919767e-12, - "complete_group_structural_seconds": null, - "generated_hypotheses": 480, - "sampling_only": true, - "generation_seconds": 0.003223780999860537, - "generation_per_second": 148893.48873908157, - "syndrome_seconds": 0.00035408300004746707, - "syndrome_updates_per_second": 1355614.361422754, - "full_result_dedup_seconds": 0.5847325229995022, - "traced_peak_bytes": 79320, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004719380000096862, - "calls_per_second": 6780.551682497112 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.0067707989999235, - "calls_per_second": 4726.177811564271 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.009819343999879493, - "calls_per_second": 3258.873505235453 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.08805678999988231, - "calls_per_second": 363.401845559471 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.0928174759999365, - "calls_per_second": 344.76266085949044 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0047603670000171405, - "calls_per_second": 6722.170790589208 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007885635000093316, - "calls_per_second": 4058.011815107004 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.08629437600006895, - "calls_per_second": 370.82370234619265 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.013099741999894832, - "calls_per_second": 2442.7962016547276 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004965059999904042, - "calls_per_second": 6445.0379251446 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.08386701499989613, - "calls_per_second": 381.55644385387546 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.01067378299990196, - "calls_per_second": 2997.9998656796683 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.09019103800005723, - "calls_per_second": 354.80243613539176 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.005017188000010719, - "calls_per_second": 6378.07473029347 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.008032670000147846, - "calls_per_second": 3983.7314366718692 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.08628823599997304, - "calls_per_second": 370.8500889971838 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005318793000014921, - "calls_per_second": 6016.402593579075 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.006127294999942023 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008680281999886574 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08642551200000526 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013307660000009491 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1019, - 1020, - 1021, - 1022, - 1023 - ], - "target_checksum_symbols": { - "1019": 15, - "1020": 15, - "1021": 15, - "1022": 15, - "1023": 15 - }, - "unknown": true, - "character_depth": 4, - "group_depth": null, - "raw_stratified_upper_bound": 83070408261514, - "structural_only_mass": 3.4097440698527345e-08, - "complete_group_structural_seconds": null, - "generated_hypotheses": 928, - "sampling_only": true, - "generation_seconds": 0.08409507099895563, - "generation_per_second": 11035.129514445915, - "syndrome_seconds": 0.001108354000507461, - "syndrome_updates_per_second": 837277.6203046268, - "full_result_dedup_seconds": 1.017238001999658, - "traced_peak_bytes": 79288, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.004419409000092855, - "calls_per_second": 7240.787172974407 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.007104661000084889, - "calls_per_second": 4504.085416548046 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.08609073399998124, - "calls_per_second": 371.70086155853863 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.012730787000009514, - "calls_per_second": 2513.5916577644484 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09147680999990371, - "calls_per_second": 349.8154340978187 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.004460254000150599, - "calls_per_second": 7174.479300712366 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.007156768999948326, - "calls_per_second": 4471.291444537479 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.08599462400002267, - "calls_per_second": 372.1162848504526 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.012879214999884425, - "calls_per_second": 2484.623480568277 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.004774743000098169, - "calls_per_second": 6701.931391771677 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.0834686690000126, - "calls_per_second": 383.37738439312085 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.010021068000014566, - "calls_per_second": 3193.27241367422 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.08915237200017145, - "calls_per_second": 358.9360471523793 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.005021034000037616, - "calls_per_second": 6373.189267342198 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.008184443000118335, - "calls_per_second": 3909.8567855549027 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.08643286500000613, - "calls_per_second": 370.22954173736724 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.005462450000095487, - "calls_per_second": 5858.177191450836 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.00622489600004883 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008579361000101926 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.08682040000007873 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.013572903000067527 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "synthetic_kernel", - "body_length": 1023, - "expanded_length": 1028, - "checksum_symbols": 15, - "period": 1023, - "target_body_lengths": [ - 1015, - 1019, - 1023 - ], - "target_checksum_symbols": { - "1015": 15, - "1019": 15, - "1023": 15 - }, - "unknown": true, - "character_depth": null, - "group_depth": 2, - "raw_stratified_upper_bound": 1429276, - "structural_only_mass": 1.9535332820953647e-06, - "complete_group_structural_seconds": 8.896931201999905, - "generated_hypotheses": 648466, - "sampling_only": false, - "generation_seconds": 6.15450996200093, - "generation_per_second": 105364.35947033114, - "syndrome_seconds": 2.741486882004665, - "syndrome_updates_per_second": 236538.06416386002, - "full_result_dedup_seconds": 0.3229511399999865, - "traced_peak_bytes": 18008, - "retained_allocation_count": 102, - "bch": [ - { - "erasures": 0, - "substitutions": 0, - "calls": 32, - "seconds": 0.0044782550000945776, - "calls_per_second": 7145.640433455483 - }, - { - "erasures": 0, - "substitutions": 1, - "calls": 32, - "seconds": 0.007081583999934082, - "calls_per_second": 4518.763033849188 - }, - { - "erasures": 0, - "substitutions": 2, - "calls": 32, - "seconds": 0.0854687930000182, - "calls_per_second": 374.40566172489633 - }, - { - "erasures": 0, - "substitutions": 3, - "calls": 32, - "seconds": 0.012816980000025069, - "calls_per_second": 2496.6879873369085 - }, - { - "erasures": 0, - "substitutions": 4, - "calls": 32, - "seconds": 0.09132158800002799, - "calls_per_second": 350.41002572130253 - }, - { - "erasures": 1, - "substitutions": 0, - "calls": 32, - "seconds": 0.0046483940000143775, - "calls_per_second": 6884.098034697795 - }, - { - "erasures": 1, - "substitutions": 1, - "calls": 32, - "seconds": 0.08337839000000713, - "calls_per_second": 383.79249107589226 - }, - { - "erasures": 1, - "substitutions": 2, - "calls": 32, - "seconds": 0.010902939999823502, - "calls_per_second": 2934.9881775482595 - }, - { - "erasures": 1, - "substitutions": 3, - "calls": 32, - "seconds": 0.012942284000018844, - "calls_per_second": 2472.5156703371217 - }, - { - "erasures": 2, - "substitutions": 0, - "calls": 32, - "seconds": 0.08024647299998833, - "calls_per_second": 398.77142014708426 - }, - { - "erasures": 2, - "substitutions": 1, - "calls": 32, - "seconds": 0.007546103000095172, - "calls_per_second": 4240.599419275938 - }, - { - "erasures": 2, - "substitutions": 2, - "calls": 32, - "seconds": 0.01128205899999557, - "calls_per_second": 2836.361696035499 - }, - { - "erasures": 2, - "substitutions": 3, - "calls": 32, - "seconds": 0.09012375399993289, - "calls_per_second": 355.0673222070158 - }, - { - "erasures": 4, - "substitutions": 0, - "calls": 32, - "seconds": 0.0050666659999478725, - "calls_per_second": 6315.790304774229 - }, - { - "erasures": 4, - "substitutions": 1, - "calls": 32, - "seconds": 0.08440597200001321, - "calls_per_second": 379.1200935402414 - }, - { - "erasures": 4, - "substitutions": 2, - "calls": 32, - "seconds": 0.011211718000140536, - "calls_per_second": 2854.156695664205 - }, - { - "erasures": 8, - "substitutions": 0, - "calls": 32, - "seconds": 0.0058743349998167105, - "calls_per_second": 5447.425112969971 - } - ], - "root_location": [ - { - "locator_degree": 1, - "scans": 32, - "seconds": 0.08206257899996672 - }, - { - "locator_degree": 2, - "scans": 32, - "seconds": 0.008138108999901306 - }, - { - "locator_degree": 3, - "scans": 32, - "seconds": 0.01076634500009277 - }, - { - "locator_degree": 4, - "scans": 32, - "seconds": 0.0886199609999494 - } - ], - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - } - ], - "public_memory": [ - { - "kind": "public", - "profile": "ms", - "displayed_length": 48, - "body_length": 45, - "mutable_body_length": 45, - "observed_body_length": 45, - "target_body_lengths": { - "48": 45 - }, - "expanded_length": 50, - "checksum_symbols": 13, - "unknown": false, - "delta": 0, - "explicit_erasures": 0, - "frozen_header": false, - "character_depth": 2, - "group_depth": 2, - "seconds": 10.00259977199994, - "complete": false, - "candidates": 0, - "no_candidate_workload": true, - "peak_traced_bytes": 116056, - "capture_mass_ceiling": 1, - "admitted_mass": 0.3180125291552435, - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "public", - "profile": "ms", - "displayed_length": 48, - "body_length": 45, - "mutable_body_length": 40, - "observed_body_length": 45, - "target_body_lengths": { - "48": 45 - }, - "expanded_length": 50, - "checksum_symbols": 13, - "unknown": false, - "delta": 0, - "explicit_erasures": 0, - "frozen_header": true, - "character_depth": 2, - "group_depth": 2, - "seconds": 9.693331976000081, - "complete": true, - "candidates": 0, - "no_candidate_workload": true, - "peak_traced_bytes": 116096, - "capture_mass_ceiling": 1, - "admitted_mass": 0.1240609106093454, - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "public", - "profile": "ms", - "displayed_length": 48, - "body_length": 45, - "mutable_body_length": 45, - "observed_body_length": 45, - "target_body_lengths": { - "48": 45 - }, - "expanded_length": 50, - "checksum_symbols": 13, - "unknown": true, - "delta": 0, - "explicit_erasures": 0, - "frozen_header": false, - "character_depth": 2, - "group_depth": 2, - "seconds": 10.002254569000115, - "complete": false, - "candidates": 0, - "no_candidate_workload": true, - "peak_traced_bytes": 116160, - "capture_mass_ceiling": 1, - "admitted_mass": 0.3180125291552435, - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - }, - { - "kind": "public", - "profile": "ms", - "displayed_length": 48, - "body_length": 45, - "mutable_body_length": 40, - "observed_body_length": 45, - "target_body_lengths": { - "48": 45 - }, - "expanded_length": 50, - "checksum_symbols": 13, - "unknown": true, - "delta": 0, - "explicit_erasures": 0, - "frozen_header": true, - "character_depth": 2, - "group_depth": 2, - "seconds": 9.49258031699992, - "complete": true, - "candidates": 0, - "no_candidate_workload": true, - "peak_traced_bytes": 116096, - "capture_mass_ceiling": 1, - "admitted_mass": 0.1240609106093454, - "guarantee_evidence": false, - "cpu_quota_percent": 25, - "memory_limit_bytes": 1073741824 - } - ], - "post_cleanup_source_sha256": { - "_alignment.py": "a8e8a51cd3835a055dc433bba8873ebd8bb2bbdc95e7b7c66ee7ea9020d4ed4f", - "correction.py": "80cbbb30430c150e7939bac8680ed55cb0e136f9fdb8dc020df8445226f1a4f2", - "indel.py": "254784d95d56c5d667de35b861c23e5e2ad128ee7fefc6a3649d8a8f12ea7cee", - "_cli_input.py": "f507a0aaee5bc4795857cee2e978335fe23d11d71ddb8e8a409d36011ee5ab24", - "cli.py": "9508f799b454aeff057badb17dfce62228fd6d599c066ba60116c87da682a05c" - } -} diff --git a/docs/developer/alignment-public-benchmarks.csv b/docs/developer/alignment-public-benchmarks.csv deleted file mode 100644 index f1f2f7ec..00000000 --- a/docs/developer/alignment-public-benchmarks.csv +++ /dev/null @@ -1,1173 +0,0 @@ -workload,profile,displayed_length,body_length,mutable_body_length,observed_body_length,expanded_length,checksum_symbols,target_body_lengths,unknown,frozen_header,delta,explicit_erasures,character_depth,seconds,complete,candidates,admitted_mass,cpu_quota_percent,memory_limit_bytes,guarantee_evidence -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",False,False,-8,0,2,0.019835038998280652,True,0,1.6391277313232422e-06,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",False,False,-8,1,2,3.5625002055894583e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",False,False,-8,2,2,2.6980000257026404e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",False,False,-8,4,2,2.5826997443800792e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",False,False,-8,8,2,2.532700091251172e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",False,False,-4,0,2,0.037669637000362854,True,0,0.003371670580463615,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",False,False,-4,1,2,0.015744542000902584,True,0,0.00018615999397297855,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",False,False,-4,2,2,0.01878768200185732,True,0,0.00527320324908942,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",False,False,-4,4,2,0.014216780997230671,True,0,0.004455745220184326,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",False,False,-4,8,2,4.9991998821496964e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",False,False,-3,0,2,4.268800330464728e-05,True,0,0.012619899031584225,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",False,False,-3,1,2,3.965299765695818e-05,True,0,0.3846215761652729,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",False,False,-3,2,2,3.6597000871552154e-05,True,0,0.019351636698047514,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",False,False,-3,4,2,3.12470001517795e-05,True,0,0.015967829152941704,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",False,False,-3,8,2,2.5507000827929005e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45}",False,False,-2,0,2,0.10865729299985105,True,0,0.31615082162161157,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45}",False,False,-2,1,2,0.06211087100018631,True,0,0.03609838610613281,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45}",False,False,-2,2,2,0.084044361999986,True,0,0.6936879485554073,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45}",False,False,-2,4,2,0.06719950800106744,True,0,0.22457782400306314,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45}",False,False,-2,8,2,6.423899685614742e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",False,False,-1,0,2,0.3046976719997474,True,0,0.5899594106242426,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",False,False,-1,1,2,0.404166203999921,True,0,0.8831742142967209,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",False,False,-1,2,2,0.22040580899920315,True,0,0.06356293757893994,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",False,False,-1,4,2,0.16587108400199213,True,0,0.09599034923030558,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",False,False,-1,8,2,6.539000241900794e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,0,2,0.5302544290025253,True,0,0.3180125291552435,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,1,2,0.46581931000037,True,0,0.702030765434909,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,2,2,0.47201827200115076,True,0,0.8488516826541805,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,4,2,0.38540012700104853,True,0,0.637741034385499,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,8,2,0.16165764499965007,True,0,0.7082028985023499,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",False,False,1,0,2,0.4703989459994773,True,0,0.3491897003238934,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",False,False,1,1,2,0.3595703070022864,True,0,0.9583967901943847,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",False,False,1,2,2,0.44709022999813897,True,0,0.9730969791103998,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",False,False,1,4,2,0.33715487600056804,True,0,0.7935121034406052,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",False,False,1,8,2,0.18718847700074548,True,0,0.959640758112073,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45}",False,False,2,0,2,0.12067206999927294,True,0,0.13197706105159052,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45}",False,False,2,1,2,0.09623924400148098,True,0,0.1508034002264775,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45}",False,False,2,2,2,0.145112957998208,True,0,0.5053291807498839,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45}",False,False,2,4,2,0.10543988700010232,True,0,0.5520763239830837,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45}",False,False,2,8,2,0.056668020002689445,True,0,0.5074901338084601,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45}",False,False,3,0,2,5.12549995619338e-05,True,0,0.07784785261664069,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45}",False,False,3,1,2,5.7285000366391614e-05,True,0,0.08492435398303014,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45}",False,False,3,2,2,7.378599912044592e-05,True,0,0.29773426422657384,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45}",False,False,3,4,2,7.310399814741686e-05,True,0,0.7018128133279913,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45}",False,False,3,8,2,5.075300214230083e-05,True,0,0.663403959821153,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45}",False,False,4,0,2,0.06342838199998369,True,0,0.0008044850331234137,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45}",False,False,4,1,2,0.05094137000196497,True,0,0.00014365157492336766,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45}",False,False,4,2,2,0.06971937200069078,True,0,0.0018647241673432375,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45}",False,False,4,4,2,0.07473553399904631,True,0,0.003485222578535804,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45}",False,False,4,8,2,0.03188814200257184,True,0,0.003959782719221039,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45}",False,False,8,0,2,0.009356821999972453,True,0,2.9180890778664767e-07,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45}",False,False,8,1,2,0.0059167399995203596,True,0,2.6754703530765256e-08,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45}",False,False,8,2,2,0.009157784999842988,True,0,6.791958216990912e-07,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45}",False,False,8,4,2,0.008804414999758592,True,0,1.062253339290109e-06,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45}",False,False,8,8,2,0.004968606001057196,True,0,1.2256787158548832e-06,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",False,True,-8,0,2,0.002591228996607242,True,0,1.341104507446289e-06,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",False,True,-8,1,2,2.6738998712971807e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",False,True,-8,2,2,2.5486999220447615e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",False,True,-8,4,2,2.478600072208792e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",False,True,-8,8,2,2.6689001970225945e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",False,True,-4,0,2,0.03122502199767041,True,0,0.001596593619012765,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",False,True,-4,1,2,0.014542966997396434,True,0,0.00010420607213745825,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",False,True,-4,2,2,0.01581145199816092,True,0,0.002825990959536284,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",False,True,-4,4,2,0.011789549000241095,True,0,0.002736389636993408,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",False,True,-4,8,2,5.603300087386742e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",False,True,-3,0,2,4.9941998440772295e-05,True,0,0.006128457658455488,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",False,True,-3,1,2,5.5032000091159716e-05,True,0,0.18551956791077373,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",False,True,-3,2,2,5.5030999646987766e-05,True,0,0.010629309887008276,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",False,True,-3,4,2,4.5193002733867615e-05,True,0,0.01002248004078865,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",False,True,-3,8,2,4.3228999857092276e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45}",False,True,-2,0,2,0.08861250500194728,True,0,0.13502843952346322,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45}",False,True,-2,1,2,0.052529706998029724,True,0,0.01728429197037329,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45}",False,True,-2,2,2,0.06914506899920525,True,0,0.3329778283501241,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45}",False,True,-2,4,2,0.05150846800097497,True,0,0.5933601924334653,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45}",False,True,-2,8,2,4.6406003093579784e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",False,True,-1,0,2,0.25037463500120793,True,0,0.25528651513097217,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",False,True,-1,1,2,0.3259899149998091,True,0,0.382121544309391,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",False,True,-1,2,2,0.1945040179998614,True,0,0.628464043047094,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",False,True,-1,4,2,0.1450818960001925,True,0,0.05301913573748607,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",False,True,-1,8,2,6.520000169984996e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,0,2,0.4515823559995624,True,0,0.1240609106093454,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,1,2,0.39931761199841276,True,0,0.30240790249855776,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,2,2,0.39681222299986985,True,0,0.36817507286038664,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,4,2,0.31906829999934416,True,0,0.8820498096230267,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,8,2,0.15156936299899826,True,0,0.4428011178970337,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",False,True,1,0,2,0.402209457999561,True,0,0.13683815215427664,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",False,True,1,1,2,0.33574018299987074,True,0,0.40243265035487724,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",False,True,1,2,2,0.40595223200216424,True,0,0.4244513607430343,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",False,True,1,4,2,0.29542751099870657,True,0,0.3877323473579182,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",False,True,1,8,2,0.16925618499953998,True,0,0.6016550660133362,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45}",False,True,2,0,2,0.10769351400085725,True,0,0.051414839213781066,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45}",False,True,2,1,2,0.08615867100161267,True,0,0.05958581923885756,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45}",False,True,2,2,2,0.11965340099777677,True,0,0.21357060796731095,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45}",False,True,2,4,2,0.09000700500109815,True,0,0.5565869375945746,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45}",False,True,2,8,2,0.04857240799901774,True,0,0.8327315971255302,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45}",False,True,3,0,2,5.219599916017614e-05,True,0,0.0306921426508496,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45}",False,True,3,1,2,5.894800051464699e-05,True,0,0.03383103894520528,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45}",False,True,3,2,2,7.476799873984419e-05,True,0,0.12732452589322482,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45}",False,True,3,4,2,7.483799709007144e-05,True,0,0.33461887771832016,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45}",False,True,3,8,2,5.189600051380694e-05,True,0,0.8340633327898104,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45}",False,True,4,0,2,0.058467031998588936,True,0,0.00031878638986626833,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45}",False,True,4,1,2,0.05026071499742102,True,0,6.496631695514352e-05,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45}",False,True,4,2,2,0.06422251099866116,True,0,0.0008067206815853447,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45}",False,True,4,4,2,0.06640271600190317,True,0,0.0016586193874834597,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45}",False,True,4,8,2,0.027628383999399375,True,0,0.002390431101844115,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45}",False,True,8,0,2,0.009038128999236505,True,0,1.515149286960833e-07,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45}",False,True,8,1,2,0.007537858000432607,True,0,3.8274648983001704e-08,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45}",False,True,8,2,2,0.009700017002614914,True,0,3.2177129329966753e-07,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45}",False,True,8,4,2,0.007935369001643267,True,0,5.428835044840596e-07,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45}",False,True,8,8,2,0.0046258959991973825,True,0,1.0683434084057808e-06,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",True,False,-8,0,2,0.003160547999868868,True,0,1.6391277313232422e-06,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",True,False,-8,1,2,2.9204002203186974e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",True,False,-8,2,2,2.7279998903395608e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",True,False,-8,4,2,3.3652002457529306e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,37,50,13,"{""48"":45}",True,False,-8,8,2,2.6920002710539848e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",True,False,-4,0,2,0.03783710700008669,True,0,0.003371670580463615,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",True,False,-4,1,2,0.015763691000756808,True,0,0.00018615999397297855,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",True,False,-4,2,2,0.018756168999971123,True,0,0.00527320324908942,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",True,False,-4,4,2,0.014391854998393683,True,0,0.004455745220184326,,,True -partial_matrix,ms,48,45,45,41,50,13,"{""48"":45}",True,False,-4,8,2,4.9892001698026434e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",True,False,-3,0,2,4.3921001633862033e-05,True,0,0.012619899031584225,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",True,False,-3,1,2,4.0133996662916616e-05,True,0,0.3846215761652729,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",True,False,-3,2,2,3.7139001506147906e-05,True,0,0.019351636698047514,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",True,False,-3,4,2,3.3020998671418056e-05,True,0,0.015967829152941704,,,True -partial_matrix,ms,48,45,45,42,50,13,"{""48"":45}",True,False,-3,8,2,2.6448000426171347e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45,""54"":51}",True,False,-2,0,2,0.12948297600087244,True,0,0.31615278857488915,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45,""54"":51}",True,False,-2,1,2,0.06599472599918954,True,0,0.03609838610613281,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45,""54"":51}",True,False,-2,2,2,0.08751772799951141,True,0,0.6936879485554073,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45,""54"":51}",True,False,-2,4,2,0.06674193099752301,True,0,0.22457782400306314,,,True -partial_matrix,ms,48,45,45,43,50,13,"{""48"":45,""54"":51}",True,False,-2,8,2,7.012000060058199e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",True,False,-1,0,2,0.3026551319999271,True,0,0.5899594106242426,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",True,False,-1,1,2,0.4056932160019642,True,0,0.8831742142967209,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",True,False,-1,2,2,0.23433907100115903,True,0,0.06356293757893994,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",True,False,-1,4,2,0.17314515899852267,True,0,0.09599034923030558,,,True -partial_matrix,ms,48,45,45,44,50,13,"{""48"":45}",True,False,-1,8,2,6.71640009386465e-05,True,0,0,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,0,2,0.5466716689988971,True,0,0.3180125291552435,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,1,2,0.46945668699845555,True,0,0.702030765434909,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,2,2,0.49852444999851286,True,0,0.8488516826541805,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,4,2,0.3898910630014143,True,0,0.637741034385499,,,True -partial_matrix,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,8,2,0.1705575289997796,True,0,0.7082028985023499,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",True,False,1,0,2,0.47500355200099875,True,0,0.3491897003238934,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",True,False,1,1,2,0.363817683999514,True,0,0.9583967901943847,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",True,False,1,2,2,0.4540962060018501,True,0,0.9730969791103998,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",True,False,1,4,2,0.3412704419970396,True,0,0.7935121034406052,,,True -partial_matrix,ms,48,45,45,46,50,13,"{""48"":45}",True,False,1,8,2,0.1901156460007769,True,0,0.959640758112073,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45,""54"":51}",True,False,2,0,2,0.16831246899891994,True,0,0.13940657929264427,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45,""54"":51}",True,False,2,1,2,0.12327245499909623,True,0,0.15115078949308544,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45,""54"":51}",True,False,2,2,2,0.17217107099713758,True,0,0.5155167272396441,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45,""54"":51}",True,False,2,4,2,0.13076855699910084,True,0,0.5595421037644253,,,True -partial_matrix,ms,48,45,45,47,50,13,"{""48"":45,""54"":51}",True,False,2,8,2,0.05880790899755084,True,0,0.5074901338084601,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45,""54"":51}",True,False,3,0,2,8.120900020003319e-05,True,0,0.1049803869783253,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45,""54"":51}",True,False,3,1,2,8.9565000962466e-05,True,0,0.9170135699326242,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45,""54"":51}",True,False,3,2,2,0.00010018499961006455,True,0,0.3342588806658113,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45,""54"":51}",True,False,3,4,2,0.00010059499982162379,True,0,0.7280224890349143,,,True -partial_matrix,ms,48,45,45,48,50,13,"{""48"":45,""54"":51}",True,False,3,8,2,7.247399844345637e-05,True,0,0.663403959821153,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45,""54"":51}",True,False,4,0,2,0.20649870700071915,True,0,0.7788693080224117,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45,""54"":51}",True,False,4,1,2,0.13251059500180418,True,0,0.0787963611185596,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45,""54"":51}",True,False,4,2,2,0.18529350999961025,True,0,0.3118913054527707,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45,""54"":51}",True,False,4,4,2,0.1620712280018779,True,0,0.42919170914545934,,,True -partial_matrix,ms,48,45,45,49,50,13,"{""48"":45,""54"":51}",True,False,4,8,2,0.03356913599782274,True,0,0.003959782719221039,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45,""54"":51}",True,False,8,0,2,0.16909440200106474,True,0,0.35930447905972424,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45,""54"":51}",True,False,8,1,2,0.13535694600068382,True,0,0.40495089275473056,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45,""54"":51}",True,False,8,2,2,0.19570645800195052,True,0,0.5694422057191978,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45,""54"":51}",True,False,8,4,2,0.15294281000024057,True,0,0.5874350776648496,,,True -partial_matrix,ms,48,45,45,53,50,13,"{""48"":45,""54"":51}",True,False,8,8,2,0.0813552340005117,True,0,0.8847069547628053,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",True,True,-8,0,2,0.0028844910011684988,True,0,1.341104507446289e-06,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",True,True,-8,1,2,3.101699985563755e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",True,True,-8,2,2,2.6589001208776608e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",True,True,-8,4,2,2.5367000489495695e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,37,50,13,"{""48"":45}",True,True,-8,8,2,2.5176002964144573e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",True,True,-4,0,2,0.03270515600161161,True,0,0.001596593619012765,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",True,True,-4,1,2,0.015510271998209646,True,0,0.00010420607213745825,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",True,True,-4,2,2,0.01645235599789885,True,0,0.002825990959536284,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",True,True,-4,4,2,0.012147559002187336,True,0,0.002736389636993408,,,True -partial_matrix,ms,48,45,40,41,50,13,"{""48"":45}",True,True,-4,8,2,4.856899977312423e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",True,True,-3,0,2,4.449200059752911e-05,True,0,0.006128457658455488,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",True,True,-3,1,2,4.1717001295182854e-05,True,0,0.18551956791077373,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",True,True,-3,2,2,5.748600233346224e-05,True,0,0.010629309887008276,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",True,True,-3,4,2,3.4091997804353014e-05,True,0,0.01002248004078865,,,True -partial_matrix,ms,48,45,40,42,50,13,"{""48"":45}",True,True,-3,8,2,2.694999784580432e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45,""54"":51}",True,True,-2,0,2,0.09359297899936792,True,0,0.13503007865119454,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45,""54"":51}",True,True,-2,1,2,0.06409954700211529,True,0,0.01728429197037329,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45,""54"":51}",True,True,-2,2,2,0.0803618780009856,True,0,0.3329778283501241,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45,""54"":51}",True,True,-2,4,2,0.05843169400031911,True,0,0.5933601924334653,,,True -partial_matrix,ms,48,45,40,43,50,13,"{""48"":45,""54"":51}",True,True,-2,8,2,7.151200043153949e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",True,True,-1,0,2,0.2573324379991391,True,0,0.25528651513097217,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",True,True,-1,1,2,0.3316614489995118,True,0,0.382121544309391,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",True,True,-1,2,2,0.19318328499866766,True,0,0.628464043047094,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",True,True,-1,4,2,0.14259935700101778,True,0,0.05301913573748607,,,True -partial_matrix,ms,48,45,40,44,50,13,"{""48"":45}",True,True,-1,8,2,7.445699884556234e-05,True,0,0,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,0,2,0.44441000100050587,True,0,0.1240609106093454,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,1,2,0.391550714000914,True,0,0.30240790249855776,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,2,2,0.39322405499842716,True,0,0.36817507286038664,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,4,2,0.3137553070009744,True,0,0.8820498096230267,,,True -partial_matrix,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,8,2,0.14562840099824825,True,0,0.4428011178970337,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",True,True,1,0,2,0.38686690399845247,True,0,0.13683815215427664,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",True,True,1,1,2,0.30060601200239034,True,0,0.40243265035487724,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",True,True,1,2,2,0.3692535830014094,True,0,0.4244513607430343,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",True,True,1,4,2,0.2763936929986812,True,0,0.3877323473579182,,,True -partial_matrix,ms,48,45,40,46,50,13,"{""48"":45}",True,True,1,8,2,0.17591113600065,True,0,0.6016550660133362,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45,""54"":51}",True,True,2,0,2,0.1413077830002294,True,0,0.055288542746244035,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45,""54"":51}",True,True,2,1,2,0.10186610900200321,True,0,0.059792848842046414,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45,""54"":51}",True,True,2,2,2,0.13527355900077964,True,0,0.21949121428337823,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45,""54"":51}",True,True,2,4,2,0.10403446199779864,True,0,0.5614655777694403,,,True -partial_matrix,ms,48,45,40,47,50,13,"{""48"":45,""54"":51}",True,True,2,8,2,0.04760701400300604,True,0,0.8327315971255302,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45,""54"":51}",True,True,3,0,2,8.527699901605956e-05,True,0,0.04512981448086614,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45,""54"":51}",True,True,3,1,2,9.50050016399473e-05,True,0,0.47436441338049545,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45,""54"":51}",True,True,3,2,2,0.000101506997452816,True,0,0.14896197149998178,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45,""54"":51}",True,True,3,4,2,0.00010021499838330783,True,0,0.35203770185457733,,,True -partial_matrix,ms,48,45,40,48,50,13,"{""48"":45,""54"":51}",True,True,3,8,2,7.244299922604114e-05,True,0,0.8340633327898104,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45,""54"":51}",True,True,4,0,2,0.17292981499849702,True,0,0.37072794716950047,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45,""54"":51}",True,True,4,1,2,0.11540585199691122,True,0,0.04146471706274264,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45,""54"":51}",True,True,4,2,2,0.14862868799900752,True,0,0.7960050771325955,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45,""54"":51}",True,True,4,4,2,0.1335029880028742,True,0,0.25296607573417784,,,True -partial_matrix,ms,48,45,40,49,50,13,"{""48"":45,""54"":51}",True,True,4,8,2,0.026152909998927498,True,0,0.002390431101844115,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45,""54"":51}",True,True,8,0,2,0.14184582400048384,True,0,0.1573569421516274,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45,""54"":51}",True,True,8,1,2,0.11640190999969491,True,0,0.1793531364265221,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45,""54"":51}",True,True,8,2,2,0.1633953050004493,True,0,0.5935083359045059,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45,""54"":51}",True,True,8,4,2,0.13030704099946888,True,0,0.639968055552036,,,True -partial_matrix,ms,48,45,40,53,50,13,"{""48"":45,""54"":51}",True,True,8,8,2,0.06645257900163415,True,0,0.5592733374796808,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""54"":51}",False,False,-8,0,2,0.003747932998521719,True,0,1.9669532775878906e-06,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""54"":51}",False,False,-8,1,2,2.8091999411117285e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""54"":51}",False,False,-8,2,2,2.580799991847016e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""54"":51}",False,False,-8,4,2,2.5536999601172283e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""54"":51}",False,False,-8,8,2,2.5506997189950198e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""54"":51}",False,False,-4,0,2,0.04381762100092601,True,0,0.007429518241053756,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""54"":51}",False,False,-4,1,2,0.018366238997259643,True,0,0.0003473892666079337,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""54"":51}",False,False,-4,2,2,0.021962504000839544,True,0,0.01018754648976028,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""54"":51}",False,False,-4,4,2,0.016736147001211066,True,0,0.007465779781341553,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""54"":51}",False,False,-4,8,2,5.20350004080683e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""54"":51}",False,False,-3,0,2,5.205600245972164e-05,True,0,0.027132534361684613,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""54"":51}",False,False,-3,1,2,4.9420999857829884e-05,True,0,0.8320892159495941,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""54"":51}",False,False,-3,2,2,4.653599899029359e-05,True,0,0.036524616439237434,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""54"":51}",False,False,-3,4,2,3.804999869316816e-05,True,0,0.026209675706923008,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""54"":51}",False,False,-3,8,2,2.6247998903272673e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""54"":51}",False,False,-2,0,2,0.13555021699721692,True,0,0.7780648229892884,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""54"":51}",False,False,-2,1,2,0.07906015499975183,True,0,0.07865270954363623,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""54"":51}",False,False,-2,2,2,0.10872968600233435,True,0,0.3100265812854275,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""54"":51}",False,False,-2,4,2,0.08206426899778307,True,0,0.42570648656692356,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""54"":51}",False,False,-2,8,2,5.044300269219093e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51}",False,False,-1,0,2,0.36886364100064384,True,0,0.07230388296890686,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51}",False,False,-1,1,2,0.5169442970000091,True,0,0.785682845738167,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51}",False,False,-1,2,2,0.29291914499845007,True,0,0.1356971831583076,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51}",False,False,-1,4,2,0.21341715000016848,True,0,0.18023490085488447,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51}",False,False,-1,8,2,6.872599988128059e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",False,False,0,0,2,0.6962516759995196,True,0,0.8645280706298716,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",False,False,0,1,2,0.5990747760006343,True,0,0.40347202397790977,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",False,False,0,2,2,0.6199713579990203,True,0,0.7484257864526813,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",False,False,0,4,2,0.49545933000263176,True,0,0.7343084709303298,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",False,False,0,8,2,0.20968691199959721,True,0,0.5385116338729858,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",False,False,1,0,2,0.6053855489990383,True,0,0.9454870693345545,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",False,False,1,1,2,0.4603783549973741,True,0,0.9739929642979801,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",False,False,1,2,2,0.5880898710020119,True,0,0.9061786558821713,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",False,False,1,4,2,0.440345849005098,True,0,0.8821416600249794,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",False,False,1,8,2,0.23487052800192032,True,0,0.75461246073246,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""54"":51}",False,False,2,0,2,0.1561813849984901,True,0,0.3593041872508165,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""54"":51}",False,False,2,1,2,0.12561618000472663,True,0,0.404950866000027,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""54"":51}",False,False,2,2,2,0.18740698599867756,True,0,0.5694415265233761,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""54"":51}",False,False,2,4,2,0.13923668400093447,True,0,0.5874340154115103,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""54"":51}",False,False,2,8,2,0.07147517900011735,True,0,0.8847057290840894,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51}",False,False,3,0,2,5.6333999964408576e-05,True,0,0.20954206563750388,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51}",False,False,3,1,2,6.270599988056347e-05,True,0,0.22634783690191587,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51}",False,False,3,2,2,7.551900489488617e-05,True,0,0.7362680722502981,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51}",False,False,3,4,2,7.519900100305676e-05,True,0,0.5606991344041459,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51}",False,False,3,8,2,5.1063994760625064e-05,True,0,0.07589909196394728,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51}",False,False,4,0,2,0.07807634000346297,True,0,0.002159031777228873,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51}",False,False,4,1,2,0.059734798000135925,True,0,0.0003364017374049915,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51}",False,False,4,2,2,0.08417142100370256,True,0,0.004541571705016642,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51}",False,False,4,4,2,0.08992000199941685,True,0,0.007645047253653258,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51}",False,False,4,8,2,0.03889887799596181,True,0,0.006738378227510111,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51}",False,False,8,0,2,0.011466806994576473,True,0,5.70785458075076e-07,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51}",False,False,8,1,2,0.006912946999364067,True,0,4.618050405275076e-08,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51}",False,False,8,2,2,0.010986232002323959,True,0,1.197313660307453e-06,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51}",False,False,8,4,2,0.01035072000377113,True,0,1.7038017561255003e-06,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51}",False,False,8,8,2,0.005847694003023207,True,0,1.5246914699673653e-06,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""54"":51}",False,True,-8,0,2,0.0033407449955120683,True,0,1.6391277313232422e-06,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""54"":51}",False,True,-8,1,2,2.75209968094714e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""54"":51}",False,True,-8,2,2,2.5838002329692245e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""54"":51}",False,True,-8,4,2,3.3170996175613254e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""54"":51}",False,True,-8,8,2,2.4845998268574476e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""54"":51}",False,True,-4,0,2,0.038809825004136655,True,0,0.0038737035324629687,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""54"":51}",False,True,-4,1,2,0.01802080200286582,True,0,0.00020702960318885744,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""54"":51}",False,True,-4,2,2,0.019705847997101955,True,0,0.005920606316067278,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""54"":51}",False,True,-4,4,2,0.014827268998487853,True,0,0.004878640174865723,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""54"":51}",False,True,-4,8,2,5.3649004257749766e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""54"":51}",False,True,-3,0,2,4.849899414693937e-05,True,0,0.01443767183001654,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""54"":51}",False,True,-3,1,2,4.743700264953077e-05,True,0,0.44053337443529017,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""54"":51}",False,True,-3,2,2,4.4612999772652984e-05,True,0,0.021637445606756955,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""54"":51}",False,True,-3,4,2,4.026399983558804e-05,True,0,0.01741882413625717,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""54"":51}",False,True,-3,8,2,2.5367000489495695e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""54"":51}",False,True,-2,0,2,0.11783568300597835,True,0,0.3704091607796342,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""54"":51}",False,True,-2,1,2,0.06981244999769842,True,0,0.0413997507457875,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""54"":51}",False,True,-2,2,2,0.0954965729979449,True,0,0.7951983564510101,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""54"":51}",False,True,-2,4,2,0.07182356499833986,True,0,0.2513074563466944,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""54"":51}",False,True,-2,8,2,4.6955996367614716e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51}",False,True,-1,0,2,0.32840491700335406,True,0,0.6896384783044678,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51}",False,True,-1,1,2,0.44530353500158526,True,0,0.37783811445011306,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51}",False,True,-1,2,2,0.2516319599963026,True,0,0.07262341175669373,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51}",False,True,-1,4,2,0.1874258949974319,True,0,0.10722537253604969,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51}",False,True,-1,8,2,7.047999679343775e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",False,True,0,0,2,0.614398178004194,True,0,0.37906970620985847,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",False,True,0,1,2,0.5194420339976205,True,0,0.821294688533013,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",False,True,0,2,2,0.5278834979981184,True,0,0.9918638185502732,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",False,True,0,4,2,0.42140090800239705,True,0,0.7281920874304433,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",False,True,0,8,2,0.1856286789989099,True,0,0.7730880975723267,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",False,True,1,0,2,0.5241749380002148,True,0,0.41591820536791885,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",False,True,1,1,2,0.3976405120047275,True,0,0.4298378582714863,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",False,True,1,2,2,0.49312109000311466,True,0,0.4386615934747488,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",False,True,1,4,2,0.3833556539975689,True,0,0.9068737881522164,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",False,True,1,8,2,0.20882948000507895,True,0,0.5016960110515356,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""54"":51}",False,True,2,0,2,0.13551879199803807,True,0,0.15735679063669872,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""54"":51}",False,True,2,1,2,0.10762136699486291,True,0,0.1793530981518731,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""54"":51}",False,True,2,2,2,0.15289601299446076,True,0,0.5935080141332126,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""54"":51}",False,True,2,4,2,0.12111308000021381,True,0,0.6399675126685314,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""54"":51}",False,True,2,8,2,0.06194832499750191,True,0,0.5592722691362724,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51}",False,True,3,0,2,6.393800140358508e-05,True,0,0.0926243048712642,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51}",False,True,3,1,2,6.811600178480148e-05,True,0,0.10086088336366507,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51}",False,True,3,2,2,7.713300146861002e-05,True,0,0.34896795438908007,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51}",False,True,3,4,2,7.980800000950694e-05,True,0,0.8060637505936807,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51}",False,True,3,8,2,6.181399658089504e-05,True,0,0.7213852507411502,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51}",False,True,4,0,2,0.0683084160045837,True,0,0.0009561562594430184,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51}",False,True,4,1,2,0.05680280200613197,True,0,0.00016632088271755556,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51}",False,True,4,2,2,0.07514606800395995,True,0,0.0021794748417655655,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51}",False,True,4,4,2,0.07960954299778678,True,0,0.004000454351987311,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51}",False,True,4,8,2,0.03335193400562275,True,0,0.00434707451745453,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51}",False,True,8,0,2,0.010556344001088291,True,0,3.195773677835555e-07,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51}",False,True,8,1,2,0.009659269999247044,True,0,7.342008615754837e-08,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51}",False,True,8,2,2,0.011517235994688235,True,0,6.158777993704159e-07,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51}",False,True,8,4,2,0.009286734995839652,True,0,9.415823445935168e-07,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51}",False,True,8,8,2,0.005774942001153249,True,0,1.346576027572155e-06,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""48"":45,""54"":51}",True,False,-8,0,2,0.11635946999740554,True,0,0.31615278857488915,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""48"":45,""54"":51}",True,False,-8,1,2,0.06963585499761393,True,0,0.03609838610613281,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""48"":45,""54"":51}",True,False,-8,2,2,0.0874973250029143,True,0,0.6936879485554073,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""48"":45,""54"":51}",True,False,-8,4,2,0.06406376799714053,True,0,0.22457782400306314,,,True -partial_matrix,ms,54,51,51,43,56,13,"{""48"":45,""54"":51}",True,False,-8,8,2,7.01890021446161e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""48"":45,""54"":51}",True,False,-4,0,2,0.16342209299909882,True,0,0.13940657929264427,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""48"":45,""54"":51}",True,False,-4,1,2,0.11772160799591802,True,0,0.15115078949308544,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""48"":45,""54"":51}",True,False,-4,2,2,0.16444002900243504,True,0,0.5155167272396441,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""48"":45,""54"":51}",True,False,-4,4,2,0.12515324400010286,True,0,0.5595421037644253,,,True -partial_matrix,ms,54,51,51,47,56,13,"{""48"":45,""54"":51}",True,False,-4,8,2,0.057280035005533136,True,0,0.5074901338084601,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""48"":45,""54"":51}",True,False,-3,0,2,7.759299478493631e-05,True,0,0.1049803869783253,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""48"":45,""54"":51}",True,False,-3,1,2,0.00010105600085807964,True,0,0.9170135699326242,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""48"":45,""54"":51}",True,False,-3,2,2,9.82510027824901e-05,True,0,0.3342588806658113,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""48"":45,""54"":51}",True,False,-3,4,2,9.601700003258884e-05,True,0,0.7280224890349143,,,True -partial_matrix,ms,54,51,51,48,56,13,"{""48"":45,""54"":51}",True,False,-3,8,2,7.11110042175278e-05,True,0,0.663403959821153,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""48"":45,""54"":51}",True,False,-2,0,2,0.20536940199963283,True,0,0.7788693080224117,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""48"":45,""54"":51}",True,False,-2,1,2,0.1312094849999994,True,0,0.0787963611185596,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""48"":45,""54"":51}",True,False,-2,2,2,0.17775773499306524,True,0,0.3118913054527707,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""48"":45,""54"":51}",True,False,-2,4,2,0.15550170600181445,True,0,0.42919170914545934,,,True -partial_matrix,ms,54,51,51,49,56,13,"{""48"":45,""54"":51}",True,False,-2,8,2,0.03200899399962509,True,0,0.003959782719221039,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51,""61"":58}",True,False,-1,0,2,0.403867683999124,True,0,0.07230659498024414,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51,""61"":58}",True,False,-1,1,2,0.5275905509988661,True,0,0.785682845738167,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51,""61"":58}",True,False,-1,2,2,0.2930764109987649,True,0,0.1356971831583076,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51,""61"":58}",True,False,-1,4,2,0.2114974930009339,True,0,0.18023490085488447,,,True -partial_matrix,ms,54,51,51,50,56,13,"{""54"":51,""61"":58}",True,False,-1,8,2,9.067700011655688e-05,True,0,0,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",True,False,0,0,2,0.6991138750017853,True,0,0.8645280706298716,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",True,False,0,1,2,0.5852677279981435,True,0,0.40347202397790977,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",True,False,0,2,2,0.5990126050019171,True,0,0.7484257864526813,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",True,False,0,4,2,0.4946687560004648,True,0,0.7343084709303298,,,True -partial_matrix,ms,54,51,51,51,56,13,"{""54"":51}",True,False,0,8,2,0.2059114479998243,True,0,0.5385116338729858,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",True,False,1,0,2,0.5949520899957861,True,0,0.9454870693345545,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",True,False,1,1,2,0.44864444899576483,True,0,0.9739929642979801,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",True,False,1,2,2,0.5732447150003281,True,0,0.9061786558821713,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",True,False,1,4,2,0.4270947929981048,True,0,0.8821416600249794,,,True -partial_matrix,ms,54,51,51,52,56,13,"{""54"":51}",True,False,1,8,2,0.2327021630044328,True,0,0.75461246073246,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""48"":45,""54"":51}",True,False,2,0,2,0.1650231099993107,True,0,0.35930447905972424,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""48"":45,""54"":51}",True,False,2,1,2,0.13215269400097895,True,0,0.40495089275473056,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""48"":45,""54"":51}",True,False,2,2,2,0.1900141119986074,True,0,0.5694422057191978,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""48"":45,""54"":51}",True,False,2,4,2,0.14771963199746097,True,0,0.5874350776648496,,,True -partial_matrix,ms,54,51,51,53,56,13,"{""48"":45,""54"":51}",True,False,2,8,2,0.07656124099594308,True,0,0.8847069547628053,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51,""61"":58}",True,False,3,0,2,0.06305593399883946,True,0,0.22621047321355248,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51,""61"":58}",True,False,3,1,2,0.02949728800012963,True,0,0.22701606621158324,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51,""61"":58}",True,False,3,2,2,0.03071800899488153,True,0,0.7562367965360162,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51,""61"":58}",True,False,3,4,2,0.022989019998931326,True,0,0.5733679228372208,,,True -partial_matrix,ms,54,51,51,54,56,13,"{""54"":51,""61"":58}",True,False,3,8,2,0.00010221899719908834,True,0,0.07589909196394728,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51,""61"":58}",True,False,4,0,2,0.07717651599523379,True,0,0.061621904450106735,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51,""61"":58}",True,False,4,1,2,0.05985007400158793,True,0,0.0037731212301021846,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51,""61"":58}",True,False,4,2,2,0.08497032400191529,True,0,0.0746029941092677,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51,""61"":58}",True,False,4,4,2,0.09092568200139794,True,0,0.051284278726860734,,,True -partial_matrix,ms,54,51,51,55,56,13,"{""54"":51,""61"":58}",True,False,4,8,2,0.03900886500196066,True,0,0.006738378227510111,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51,""61"":58}",True,False,8,0,2,0.811100131002604,True,0,0.9816773958090538,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51,""61"":58}",True,False,8,1,2,0.6010315340026864,True,0,0.5623542161146403,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51,""61"":58}",True,False,8,2,2,0.7666695740044815,True,0,0.4045094269817987,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51,""61"":58}",True,False,8,4,2,0.5845504769968102,True,0,0.5753328845040042,,,True -partial_matrix,ms,54,51,51,59,56,13,"{""54"":51,""61"":58}",True,False,8,8,2,0.3176935000010417,True,0,0.244506201823242,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""48"":45,""54"":51}",True,True,-8,0,2,0.09066351300134556,True,0,0.13503007865119454,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""48"":45,""54"":51}",True,True,-8,1,2,0.052899343994795345,True,0,0.01728429197037329,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""48"":45,""54"":51}",True,True,-8,2,2,0.07008554200001527,True,0,0.3329778283501241,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""48"":45,""54"":51}",True,True,-8,4,2,0.052158377002342604,True,0,0.5933601924334653,,,True -partial_matrix,ms,54,51,46,43,56,13,"{""48"":45,""54"":51}",True,True,-8,8,2,7.818399899406359e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""48"":45,""54"":51}",True,True,-4,0,2,0.14076599999680184,True,0,0.055288542746244035,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""48"":45,""54"":51}",True,True,-4,1,2,0.09643470299488399,True,0,0.059792848842046414,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""48"":45,""54"":51}",True,True,-4,2,2,0.13500284399924567,True,0,0.21949121428337823,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""48"":45,""54"":51}",True,True,-4,4,2,0.10045213999546831,True,0,0.5614655777694403,,,True -partial_matrix,ms,54,51,46,47,56,13,"{""48"":45,""54"":51}",True,True,-4,8,2,0.04679497000324773,True,0,0.8327315971255302,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""48"":45,""54"":51}",True,True,-3,0,2,7.967700366862118e-05,True,0,0.04512981448086614,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""48"":45,""54"":51}",True,True,-3,1,2,8.615799742983654e-05,True,0,0.47436441338049545,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""48"":45,""54"":51}",True,True,-3,2,2,9.585700172465295e-05,True,0,0.14896197149998178,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""48"":45,""54"":51}",True,True,-3,4,2,9.520499588688836e-05,True,0,0.35203770185457733,,,True -partial_matrix,ms,54,51,46,48,56,13,"{""48"":45,""54"":51}",True,True,-3,8,2,7.070100400596857e-05,True,0,0.8340633327898104,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""48"":45,""54"":51}",True,True,-2,0,2,0.17406710499926703,True,0,0.37072794716950047,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""48"":45,""54"":51}",True,True,-2,1,2,0.11683582599653164,True,0,0.04146471706274264,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""48"":45,""54"":51}",True,True,-2,2,2,0.15921867299766745,True,0,0.7960050771325955,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""48"":45,""54"":51}",True,True,-2,4,2,0.13739741800236516,True,0,0.25296607573417784,,,True -partial_matrix,ms,54,51,46,49,56,13,"{""48"":45,""54"":51}",True,True,-2,8,2,0.02672574699681718,True,0,0.002390431101844115,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51,""61"":58}",True,True,-1,0,2,0.3448392360005528,True,0,0.689640802885614,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51,""61"":58}",True,True,-1,1,2,0.4434575909981504,True,0,0.37783811445011306,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51,""61"":58}",True,True,-1,2,2,0.2578369550028583,True,0,0.07262341175669373,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51,""61"":58}",True,True,-1,4,2,0.18877627400070196,True,0,0.10722537253604969,,,True -partial_matrix,ms,54,51,46,50,56,13,"{""54"":51,""61"":58}",True,True,-1,8,2,9.992400009650737e-05,True,0,0,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",True,True,0,0,2,0.6138588570029242,True,0,0.37906970620985847,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",True,True,0,1,2,0.5223386130019207,True,0,0.821294688533013,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",True,True,0,2,2,0.5305452649990912,True,0,0.9918638185502732,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",True,True,0,4,2,0.43700488000467885,True,0,0.7281920874304433,,,True -partial_matrix,ms,54,51,46,51,56,13,"{""54"":51}",True,True,0,8,2,0.18884638299641665,True,0,0.7730880975723267,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",True,True,1,0,2,0.5356132309971144,True,0,0.41591820536791885,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",True,True,1,1,2,0.4054621520044748,True,0,0.4298378582714863,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",True,True,1,2,2,0.5054418940053438,True,0,0.4386615934747488,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",True,True,1,4,2,0.38033703100518323,True,0,0.9068737881522164,,,True -partial_matrix,ms,54,51,46,52,56,13,"{""54"":51}",True,True,1,8,2,0.20830979300080799,True,0,0.5016960110515356,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""48"":45,""54"":51}",True,True,2,0,2,0.14388998500362504,True,0,0.1573569421516274,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""48"":45,""54"":51}",True,True,2,1,2,0.1168467219977174,True,0,0.1793531364265221,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""48"":45,""54"":51}",True,True,2,2,2,0.1629340770014096,True,0,0.5935083359045059,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""48"":45,""54"":51}",True,True,2,4,2,0.13105702799657593,True,0,0.639968055552036,,,True -partial_matrix,ms,54,51,46,53,56,13,"{""48"":45,""54"":51}",True,True,2,8,2,0.0677152920034132,True,0,0.5592733374796808,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51,""61"":58}",True,True,3,0,2,0.05530886199994711,True,0,0.10209266884441985,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51,""61"":58}",True,True,3,1,2,0.024439841996354517,True,0,0.10128503636234078,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51,""61"":58}",True,True,3,2,2,0.02791954999702284,True,0,0.36143495234500583,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51,""61"":58}",True,True,3,4,2,0.020669288001954556,True,0,0.81481186470272,,,True -partial_matrix,ms,54,51,46,54,56,13,"{""54"":51,""61"":58}",True,True,3,8,2,0.00011687600635923445,True,0,0.7213852507411502,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51,""61"":58}",True,True,4,0,2,0.0687269970003399,True,0,0.035271363905417526,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51,""61"":58}",True,True,4,1,2,0.05786644799809437,True,0,0.0023347265459869237,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51,""61"":58}",True,True,4,2,2,0.07519920800405089,True,0,0.04656588281519953,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51,""61"":58}",True,True,4,4,2,0.07789114399929531,True,0,0.034525425315584606,,,True -partial_matrix,ms,54,51,46,55,56,13,"{""54"":51,""61"":58}",True,True,4,8,2,0.03244522900058655,True,0,0.00434707451745453,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51,""61"":58}",True,True,8,0,2,0.7248992520035245,True,0,0.47963427481360227,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51,""61"":58}",True,True,8,1,2,0.5487922499960405,True,0,0.5168770096420505,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51,""61"":58}",True,True,8,2,2,0.7020443150031497,True,0,0.6338122906559068,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51,""61"":58}",True,True,8,4,2,0.5247867849975592,True,0,0.3498555101543151,,,True -partial_matrix,ms,54,51,46,59,56,13,"{""54"":51,""61"":58}",True,True,8,8,2,0.2802551360000507,True,0,0.8787528573302552,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""61"":58}",False,False,-8,0,2,0.005318069001077674,True,0,2.7120113372802734e-06,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""61"":58}",False,False,-8,1,2,3.070600359933451e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""61"":58}",False,False,-8,2,2,2.8583002858795226e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""61"":58}",False,False,-8,4,2,2.7680995117407292e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""61"":58}",False,False,-8,8,2,2.7690999559126794e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""61"":58}",False,False,-4,0,2,0.06216402800055221,True,0,0.016668407576048594,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""61"":58}",False,False,-4,1,2,0.02502706200175453,True,0,0.0006682293096673675,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""61"":58}",False,False,-4,2,2,0.03060535099939443,True,0,0.019968724285718054,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""61"":58}",False,False,-4,4,2,0.023217784000735264,True,0,0.012668788433074951,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""61"":58}",False,False,-4,8,2,5.5491997045464814e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""61"":58}",False,False,-3,0,2,4.947100387653336e-05,True,0,0.059462872672877864,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""61"":58}",False,False,-3,1,2,4.3920997995883226e-05,True,0,0.0034367194926971933,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""61"":58}",False,False,-3,2,2,4.232799983583391e-05,True,0,0.07006142240425106,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""61"":58}",False,False,-3,4,2,3.7598998460453004e-05,True,0,0.043639231473207474,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""61"":58}",False,False,-3,8,2,3.286100400146097e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58}",False,False,-2,0,2,0.18415922800340923,True,0,0.40139545093293744,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58}",False,False,-2,1,2,0.1047203839989379,True,0,0.17447312078461685,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58}",False,False,-2,2,2,0.14628339699993376,True,0,0.683724296162211,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58}",False,False,-2,4,2,0.11241399600112345,True,0,0.8197096242220141,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58}",False,False,-2,8,2,5.5933000112418085e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",False,False,-1,0,2,0.4944194560011965,True,0,0.17828652693479366,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",False,False,-1,1,2,0.7102425229968503,True,0,0.9527828788620305,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",False,False,-1,2,2,0.38648164799815277,True,0,0.2955078891918257,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",False,False,-1,4,2,0.286179198003083,True,0,0.34411484411612037,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",False,False,-1,8,2,7.177200313890353e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",False,False,0,0,2,0.9469368969948846,True,0,0.8980359578406801,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",False,False,0,1,2,0.8008277820044896,True,0,0.19898194764725582,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",False,False,0,2,2,0.8205941350024659,True,0,0.6730974930129199,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",False,False,0,4,2,0.6412543040059973,True,0,0.9648201459060033,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",False,False,0,8,2,0.2716116099982173,True,0,0.9033373296260834,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""61"":58}",False,False,1,0,2,0.7926910540045355,True,0,0.9816768250235958,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""61"":58}",False,False,1,1,2,0.5952825390049838,True,0,0.5623541699341363,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""61"":58}",False,False,1,2,2,0.7720811530016363,True,0,0.40450822966813843,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""61"":58}",False,False,1,4,2,0.5738766450012918,True,0,0.5753311807022481,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""61"":58}",False,False,1,8,2,0.30378224800369935,True,0,0.24450467713177204,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58}",False,False,2,0,2,0.2040340230014408,True,0,0.20689472901107214,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58}",False,False,2,1,2,0.15967728199757403,True,0,0.32017166474179815,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58}",False,False,2,2,2,0.24274635899928398,True,0,0.725545155243762,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58}",False,False,2,4,2,0.18104896399745485,True,0,0.607577659034326,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58}",False,False,2,8,2,0.0962393459994928,True,0,0.7087778997374699,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58}",False,False,3,0,2,5.379899812396616e-05,True,0,0.580291747290327,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58}",False,False,3,1,2,6.234499596757814e-05,True,0,0.6212129596360568,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58}",False,False,3,2,2,7.623099372722208e-05,True,0,0.6241581777295244,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58}",False,False,3,4,2,7.545999687863514e-05,True,0,0.11638472727985807,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58}",False,False,3,8,2,5.454100028146058e-05,True,0,0.134550000395393,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58}",False,False,4,0,2,0.10819683299632743,True,0,0.005976715513285637,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58}",False,False,4,1,2,0.08006926700181793,True,0,0.0008174952368764641,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58}",False,False,4,2,2,0.1128079929985688,True,0,0.011337883303955725,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58}",False,False,4,4,2,0.12023317399871303,True,0,0.017088607302954528,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58}",False,False,4,8,2,0.05309698900236981,True,0,0.011601221986666133,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58}",False,False,8,0,2,0.015331076996517368,True,0,1.2774386890022742e-06,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58}",False,False,8,1,2,0.009128363002673723,True,0,9.088773317289522e-08,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58}",False,False,8,2,2,0.014623201997892465,True,0,2.422356277960447e-06,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58}",False,False,8,4,2,0.013869900998543017,True,0,3.1707424716642674e-06,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58}",False,False,8,8,2,0.007882284000515938,True,0,2.117390977218747e-06,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""61"":58}",False,True,-8,0,2,0.00469448199874023,True,0,2.3245811462402344e-06,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""61"":58}",False,True,-8,1,2,3.5766002838499844e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""61"":58}",False,True,-8,2,2,2.8121998184360564e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""61"":58}",False,True,-8,4,2,2.6569003239274025e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""61"":58}",False,True,-8,8,2,2.660899917827919e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""61"":58}",False,True,-4,0,2,0.05515098899923032,True,0,0.009468363973155647,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""61"":58}",False,True,-4,1,2,0.02435922500444576,True,0,0.00042415299867570866,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""61"":58}",False,True,-4,2,2,0.027572635000979062,True,0,0.012466997955925763,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""61"":58}",False,True,-4,4,2,0.02045638399431482,True,0,0.008748114109039307,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""61"":58}",False,True,-4,8,2,5.879899981664494e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""61"":58}",False,True,-3,0,2,5.4349999118130654e-05,True,0,0.03431520764597451,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""61"":58}",False,True,-3,1,2,4.4462001824285835e-05,True,0,0.0021684056632693682,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""61"":58}",False,True,-3,2,2,3.911200474249199e-05,True,0,0.04438640797343396,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""61"":58}",False,True,-3,4,2,3.403199661988765e-05,True,0,0.030524970963597298,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""61"":58}",False,True,-3,8,2,2.9773997084703296e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58}",False,True,-2,0,2,0.16052446499816142,True,0,0.21087264303219566,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58}",False,True,-2,1,2,0.0928165670047747,True,0,0.09985105141086592,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58}",False,True,-2,2,2,0.13066126500052633,True,0,0.39287348854986703,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58}",False,True,-2,4,2,0.09736094799882267,True,0,0.517960527096875,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58}",False,True,-2,8,2,5.0231996283400804e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",False,True,-1,0,2,0.44075112199789146,True,0,0.09471164090602925,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",False,True,-1,1,2,0.6149531860064599,True,0,0.5090173509540781,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",False,True,-1,2,2,0.347734663002484,True,0,0.1712785807539703,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",False,True,-1,4,2,0.2528324060040177,True,0,0.21870945622231375,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",False,True,-1,8,2,7.14819980203174e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",False,True,0,0,2,0.8327839910052717,True,0,0.44175036472124224,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",False,True,0,1,2,0.6959671660006279,True,0,0.5299848726916419,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",False,True,0,2,2,0.7228786630003015,True,0,0.9785836408337218,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",False,True,0,4,2,0.5656917410015012,True,0,0.9221207916368712,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",False,True,0,8,2,0.24387303899857216,True,0,0.6286258399486542,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""61"":58}",False,True,1,0,2,0.6961542540011578,True,0,0.4796339552362345,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""61"":58}",False,True,1,1,2,0.5165363229971263,True,0,0.5168769362219644,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""61"":58}",False,True,1,2,2,0.6693748939942452,True,0,0.6338116747781074,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""61"":58}",False,True,1,4,2,0.49686479099909775,True,0,0.3498545685719705,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""61"":58}",False,True,1,8,2,0.27171909799653804,True,0,0.8787515107542276,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58}",False,True,2,0,2,0.1851558449998265,True,0,0.4887913264699631,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58}",False,True,2,1,2,0.1472612060024403,True,0,0.5487036967048612,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58}",False,True,2,2,2,0.21470952199888416,True,0,0.7641403489787517,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58}",False,True,2,4,2,0.16831138700217707,True,0,0.7498233064233661,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58}",False,True,2,8,2,0.0841892349999398,True,0,0.5000658787612338,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58}",False,True,3,0,2,5.634400440612808e-05,True,0,0.28413510519861185,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58}",False,True,3,1,2,6.287600263021886e-05,True,0,0.3060630626180988,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58}",False,True,3,2,2,7.67719975556247e-05,True,0,0.9730667714752316,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58}",False,True,3,4,2,8.089900074992329e-05,True,0,0.7315462111405423,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58}",False,True,3,8,2,5.5002004955895245e-05,True,0,0.09000921941333218,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58}",False,True,4,0,2,0.09850267400179291,True,0,0.0029285827335089926,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58}",False,True,4,1,2,0.07749403799971333,True,0,0.0004401785875878263,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58}",False,True,4,2,2,0.1030706250021467,True,0,0.005974765480725051,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58}",False,True,4,4,2,0.10741937100101495,True,0,0.009732868595419742,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58}",False,True,4,8,2,0.04532653799833497,True,0,0.007935720352634235,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58}",False,True,8,0,2,0.013863287000276614,True,0,7.716421605083858e-07,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58}",False,True,8,1,2,0.011455293002654798,True,0,1.5495229434384387e-07,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58}",False,True,8,2,2,0.015468289006093983,True,0,1.368001591524646e-06,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58}",False,True,8,4,2,0.012267723002878483,True,0,1.9185855437697796e-06,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58}",False,True,8,8,2,0.007025386999885086,True,0,1.866137608885765e-06,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""54"":51,""61"":58}",True,False,-8,0,2,0.3873972479996155,True,0,0.07230659498024414,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""54"":51,""61"":58}",True,False,-8,1,2,0.5235859899985371,True,0,0.785682845738167,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""54"":51,""61"":58}",True,False,-8,2,2,0.29377757500333246,True,0,0.1356971831583076,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""54"":51,""61"":58}",True,False,-8,4,2,0.21557296300306916,True,0,0.18023490085488447,,,True -partial_matrix,ms,61,58,58,50,63,13,"{""54"":51,""61"":58}",True,False,-8,8,2,9.007599874166772e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""54"":51,""61"":58}",True,False,-4,0,2,0.061748304004140664,True,0,0.22621047321355248,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""54"":51,""61"":58}",True,False,-4,1,2,0.02504617100203177,True,0,0.22701606621158324,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""54"":51,""61"":58}",True,False,-4,2,2,0.03016910600126721,True,0,0.7562367965360162,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""54"":51,""61"":58}",True,False,-4,4,2,0.023095049000403378,True,0,0.5733679228372208,,,True -partial_matrix,ms,61,58,58,54,63,13,"{""54"":51,""61"":58}",True,False,-4,8,2,9.993500134442002e-05,True,0,0.07589909196394728,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""54"":51,""61"":58}",True,False,-3,0,2,0.07640151099622017,True,0,0.061621904450106735,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""54"":51,""61"":58}",True,False,-3,1,2,0.05992657200113172,True,0,0.0037731212301021846,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""54"":51,""61"":58}",True,False,-3,2,2,0.08488731499528512,True,0,0.0746029941092677,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""54"":51,""61"":58}",True,False,-3,4,2,0.09003577700059395,True,0,0.051284278726860734,,,True -partial_matrix,ms,61,58,58,55,63,13,"{""54"":51,""61"":58}",True,False,-3,8,2,0.038545667004655115,True,0,0.006738378227510111,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58,""67"":64}",True,False,-2,0,2,0.21138224799506133,True,0,0.40139858017678814,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58,""67"":64}",True,False,-2,1,2,0.10408384800393833,True,0,0.17447312078461685,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58,""67"":64}",True,False,-2,2,2,0.14702615900023375,True,0,0.683724296162211,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58,""67"":64}",True,False,-2,4,2,0.11166906500147888,True,0,0.8197096242220141,,,True -partial_matrix,ms,61,58,58,56,63,13,"{""61"":58,""67"":64}",True,False,-2,8,2,7.724199531367049e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",True,False,-1,0,2,0.49180683399754344,True,0,0.17828652693479366,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",True,False,-1,1,2,0.7071608059995924,True,0,0.9527828788620305,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",True,False,-1,2,2,0.37742792000062764,True,0,0.2955078891918257,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",True,False,-1,4,2,0.27778672899876256,True,0,0.34411484411612037,,,True -partial_matrix,ms,61,58,58,57,63,13,"{""61"":58}",True,False,-1,8,2,7.100099901435897e-05,True,0,0,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",True,False,0,0,2,0.9243572550039971,True,0,0.8980359578406801,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",True,False,0,1,2,0.7782183409944992,True,0,0.19898194764725582,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",True,False,0,2,2,0.8063964480024879,True,0,0.6730974930129199,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",True,False,0,4,2,0.6367905160004739,True,0,0.9648201459060033,,,True -partial_matrix,ms,61,58,58,58,63,13,"{""61"":58}",True,False,0,8,2,0.2681685520001338,True,0,0.9033373296260834,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""54"":51,""61"":58}",True,False,1,0,2,0.7909799449989805,True,0,0.9816773958090538,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""54"":51,""61"":58}",True,False,1,1,2,0.5850572560011642,True,0,0.5623542161146403,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""54"":51,""61"":58}",True,False,1,2,2,0.7724573390005389,True,0,0.4045094269817987,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""54"":51,""61"":58}",True,False,1,4,2,0.5824559329994372,True,0,0.5753328845040042,,,True -partial_matrix,ms,61,58,58,59,63,13,"{""54"":51,""61"":58}",True,False,1,8,2,0.3175445460001356,True,0,0.244506201823242,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58,""67"":64}",True,False,2,0,2,0.2860490339953685,True,0,0.23773157653956295,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58,""67"":64}",True,False,2,1,2,0.19046806400001515,True,0,0.3212706222602776,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58,""67"":64}",True,False,2,2,2,0.27229126800375525,True,0,0.7588761645993685,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58,""67"":64}",True,False,2,4,2,0.2057745620040805,True,0,0.6265414430137419,,,True -partial_matrix,ms,61,58,58,60,63,13,"{""61"":58,""67"":64}",True,False,2,8,2,0.0915170170046622,True,0,0.7087778997374699,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58,""67"":64}",True,False,3,0,2,8.732100104680285e-05,True,0,0.6885706048678936,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58,""67"":64}",True,False,3,1,2,9.494600089965388e-05,True,0,0.6268898603287766,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58,""67"":64}",True,False,3,2,2,0.00010349099466111511,True,0,0.7394114473800903,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58,""67"":64}",True,False,3,4,2,0.00010004499927163124,True,0,0.18087617434115835,,,True -partial_matrix,ms,61,58,58,61,63,13,"{""61"":58,""67"":64}",True,False,3,8,2,0.00010422299965284765,True,0,0.134550000395393,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58,""67"":64}",True,False,4,0,2,0.3280456229986157,True,0,0.8155388475851881,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58,""67"":64}",True,False,4,1,2,0.2059863540052902,True,0,0.3211698161556167,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58,""67"":64}",True,False,4,2,2,0.29665444099373417,True,0,0.06490657561159123,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58,""67"":64}",True,False,4,4,2,0.2592319819959812,True,0,0.07362815923997584,,,True -partial_matrix,ms,61,58,58,62,63,13,"{""61"":58,""67"":64}",True,False,4,8,2,0.05174456500390079,True,0,0.011601221986666133,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58,""67"":64}",True,False,8,0,2,0.27279545000055805,True,0,0.453535576691647,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58,""67"":64}",True,False,8,1,2,0.20634265699482057,True,0,0.6804900786863906,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58,""67"":64}",True,False,8,2,2,0.3114101459941594,True,0,0.6386633080816942,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58,""67"":64}",True,False,8,4,2,0.2369215510043432,True,0,0.3260371300420509,,,True -partial_matrix,ms,61,58,58,66,63,13,"{""61"":58,""67"":64}",True,False,8,8,2,0.1244336790041416,True,0,0.22830050720949657,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""54"":51,""61"":58}",True,True,-8,0,2,0.32421610800520284,True,0,0.689640802885614,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""54"":51,""61"":58}",True,True,-8,1,2,0.4389508690001094,True,0,0.37783811445011306,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""54"":51,""61"":58}",True,True,-8,2,2,0.24949247799668228,True,0,0.07262341175669373,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""54"":51,""61"":58}",True,True,-8,4,2,0.1864075249977759,True,0,0.10722537253604969,,,True -partial_matrix,ms,61,58,53,50,63,13,"{""54"":51,""61"":58}",True,True,-8,8,2,9.410300117451698e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""54"":51,""61"":58}",True,True,-4,0,2,0.05452422599773854,True,0,0.10209266884441985,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""54"":51,""61"":58}",True,True,-4,1,2,0.023752241999318358,True,0,0.10128503636234078,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""54"":51,""61"":58}",True,True,-4,2,2,0.026853859999391716,True,0,0.36143495234500583,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""54"":51,""61"":58}",True,True,-4,4,2,0.020319923998613376,True,0,0.81481186470272,,,True -partial_matrix,ms,61,58,53,54,63,13,"{""54"":51,""61"":58}",True,True,-4,8,2,0.00010383199696661904,True,0,0.7213852507411502,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""54"":51,""61"":58}",True,True,-3,0,2,0.0678039490012452,True,0,0.035271363905417526,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""54"":51,""61"":58}",True,True,-3,1,2,0.056303712000953965,True,0,0.0023347265459869237,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""54"":51,""61"":58}",True,True,-3,2,2,0.07309025199356256,True,0,0.04656588281519953,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""54"":51,""61"":58}",True,True,-3,4,2,0.0765625439962605,True,0,0.034525425315584606,,,True -partial_matrix,ms,61,58,53,55,63,13,"{""54"":51,""61"":58}",True,True,-3,8,2,0.03146505499898922,True,0,0.00434707451745453,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58,""67"":64}",True,True,-2,0,2,0.16293854900141014,True,0,0.21087535504353294,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58,""67"":64}",True,True,-2,1,2,0.09109650299797067,True,0,0.09985105141086592,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58,""67"":64}",True,True,-2,2,2,0.12705520500458078,True,0,0.39287348854986703,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58,""67"":64}",True,True,-2,4,2,0.09536976700474042,True,0,0.517960527096875,,,True -partial_matrix,ms,61,58,53,56,63,13,"{""61"":58,""67"":64}",True,True,-2,8,2,7.87050012149848e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",True,True,-1,0,2,0.42911835399718257,True,0,0.09471164090602925,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",True,True,-1,1,2,0.5989818460002425,True,0,0.5090173509540781,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",True,True,-1,2,2,0.33478697200189345,True,0,0.1712785807539703,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",True,True,-1,4,2,0.23818616299831774,True,0,0.21870945622231375,,,True -partial_matrix,ms,61,58,53,57,63,13,"{""61"":58}",True,True,-1,8,2,7.015900337137282e-05,True,0,0,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",True,True,0,0,2,0.8025858620021609,True,0,0.44175036472124224,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",True,True,0,1,2,0.6871469059988158,True,0,0.5299848726916419,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",True,True,0,2,2,0.7036524509967421,True,0,0.9785836408337218,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",True,True,0,4,2,0.55584994200035,True,0,0.9221207916368712,,,True -partial_matrix,ms,61,58,53,58,63,13,"{""61"":58}",True,True,0,8,2,0.23824609499570215,True,0,0.6286258399486542,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""54"":51,""61"":58}",True,True,1,0,2,0.7019682629979798,True,0,0.47963427481360227,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""54"":51,""61"":58}",True,True,1,1,2,0.525135345000308,True,0,0.5168770096420505,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""54"":51,""61"":58}",True,True,1,2,2,0.6689827619993594,True,0,0.6338122906559068,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""54"":51,""61"":58}",True,True,1,4,2,0.5265746469958685,True,0,0.3498555101543151,,,True -partial_matrix,ms,61,58,53,59,63,13,"{""54"":51,""61"":58}",True,True,1,8,2,0.2774676550034201,True,0,0.8787528573302552,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58,""67"":64}",True,True,2,0,2,0.2504185219950159,True,0,0.5073404988923739,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58,""67"":64}",True,True,2,1,2,0.17477121300180443,True,0,0.549431296331632,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58,""67"":64}",True,True,2,2,2,0.24057994899339974,True,0,0.7859689587302892,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58,""67"":64}",True,True,2,4,2,0.18370869199861772,True,0,0.7634116753160358,,,True -partial_matrix,ms,61,58,53,60,63,13,"{""61"":58,""67"":64}",True,True,2,8,2,0.0809877179999603,True,0,0.5000658787612338,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58,""67"":64}",True,True,3,0,2,8.711099508218467e-05,True,0,0.3501249549268597,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58,""67"":64}",True,True,3,1,2,9.222100197803229e-05,True,0,0.3098130126892805,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58,""67"":64}",True,True,3,2,2,0.00011391000589355826,True,0,0.3841730782742446,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58,""67"":64}",True,True,3,4,2,9.953400149242952e-05,True,0,0.7782469243652513,,,True -partial_matrix,ms,61,58,53,61,63,13,"{""61"":58,""67"":64}",True,True,3,8,2,7.314499816857278e-05,True,0,0.09000921941333218,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58,""67"":64}",True,True,4,0,2,0.3005972150058369,True,0,0.4563710943472658,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58,""67"":64}",True,True,4,1,2,0.19476855199900456,True,0,0.19435471116166814,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58,""67"":64}",True,True,4,2,2,0.26880823799729114,True,0,0.7653313185658231,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58,""67"":64}",True,True,4,4,2,0.2288845430011861,True,0,0.9039054784955441,,,True -partial_matrix,ms,61,58,53,62,63,13,"{""61"":58,""67"":64}",True,True,4,8,2,0.04530535000230884,True,0,0.007935720352634235,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58,""67"":64}",True,True,8,0,2,0.24593123300292064,True,0,0.23710268459040784,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58,""67"":64}",True,True,8,1,2,0.18914242999744602,True,0,0.3649131962192364,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58,""67"":64}",True,True,8,2,2,0.2724098960025003,True,0,0.8218976476623342,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58,""67"":64}",True,True,8,4,2,0.20935332700173603,True,0,0.681273930842643,,,True -partial_matrix,ms,61,58,53,66,63,13,"{""61"":58,""67"":64}",True,True,8,8,2,0.10754648999864003,True,0,0.7573187529924326,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""67"":64}",False,False,-8,0,2,0.005988992998027243,True,0,3.129243850708008e-06,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""67"":64}",False,False,-8,1,2,3.181899955961853e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""67"":64}",False,False,-8,2,2,3.35020013153553e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""67"":64}",False,False,-8,4,2,2.7870999474544078e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""67"":64}",False,False,-8,8,2,4.479299968807027e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""67"":64}",False,False,-4,0,2,0.07237300400447566,True,0,0.030836847528490807,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""67"":64}",False,False,-4,1,2,0.029613293998409063,True,0,0.0010989575184794376,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""67"":64}",False,False,-4,2,2,0.03634287599561503,True,0,0.03333100935560651,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""67"":64}",False,False,-4,4,2,0.027248967002378777,True,0,0.018963783979415894,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""67"":64}",False,False,-4,8,2,5.580300057772547e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""67"":64}",False,False,-3,0,2,4.614499630406499e-05,True,0,0.10827885757756661,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""67"":64}",False,False,-3,1,2,6.893800309626386e-05,True,0,0.005676900692719755,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""67"":64}",False,False,-3,2,2,4.6975997975096107e-05,True,0,0.11525326965056593,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""67"":64}",False,False,-3,4,2,4.2768995626829565e-05,True,0,0.06449144706130028,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""67"":64}",False,False,-3,8,2,4.320000152802095e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""67"":64}",False,False,-2,0,2,0.23321169999690028,True,0,0.8095621320719025,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""67"":64}",False,False,-2,1,2,0.12668192800629186,True,0,0.3203523209187402,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""67"":64}",False,False,-2,2,2,0.18168668200087268,True,0,0.0535686923076355,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""67"":64}",False,False,-2,4,2,0.13928507800301304,True,0,0.056539551937021315,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""67"":64}",False,False,-2,8,2,5.976000102236867e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64}",False,False,-1,0,2,0.5991486670027371,True,0,0.35563989436850496,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64}",False,False,-1,1,2,0.8981974560010713,True,0,0.38941671630202285,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64}",False,False,-1,2,2,0.4775971270064474,True,0,0.5357887714129053,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64}",False,False,-1,4,2,0.34846698000183096,True,0,0.5642852680666692,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64}",False,False,-1,8,2,7.507899863412604e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",False,False,0,0,2,1.1757551089976914,True,0,0.7548785069272099,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",False,False,0,1,2,0.9611388760022237,True,0,0.39144282240032685,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",False,False,0,2,2,1.017890555995109,True,0,0.800529875590861,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",False,False,0,4,2,0.7925744609965477,True,0,0.9329970683357658,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",False,False,0,8,2,0.3285582459939178,True,0,0.6489325165748596,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",False,False,1,0,2,0.9662281220007571,True,0,0.2628013326115332,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",False,False,1,1,2,0.7309122060032678,True,0,0.401066127100999,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",False,False,1,2,2,0.9664469509953051,True,0,0.7641955015923778,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",False,False,1,4,2,0.704944365999836,True,0,0.9927772192412831,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",False,False,1,8,2,0.3826412229973357,True,0,0.3560817167162895,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""67"":64}",False,False,2,0,2,0.256673473995761,True,0,0.453534299252958,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""67"":64}",False,False,2,1,2,0.19457270699786022,True,0,0.6804899877986573,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""67"":64}",False,False,2,2,2,0.2975095930014504,True,0,0.6386608857254162,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""67"":64}",False,False,2,4,2,0.2205997560013202,True,0,0.32603395929957923,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""67"":64}",False,False,2,8,2,0.11679860200092662,True,0,0.22829838981851935,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64}",False,False,3,0,2,5.937999958405271e-05,True,0,0.003439019159865961,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64}",False,False,3,1,2,7.518900383729488e-05,True,0,0.0843611199960604,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64}",False,False,3,2,2,6.994900468271226e-05,True,0,0.0896625386510737,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64}",False,False,3,4,2,7.228399772429839e-05,True,0,0.21591595867181734,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64}",False,False,3,8,2,5.587300256593153e-05,True,0,0.2094811943534296,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64}",False,False,4,0,2,0.1193464509997284,True,0,0.013038270809059185,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64}",False,False,4,1,2,0.08951090500340797,True,0,0.001610595236245778,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64}",False,False,4,2,2,0.13045009999768808,True,0,0.02280466821278126,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64}",False,False,4,4,2,0.14028438099921914,True,0,0.031531768555646995,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64}",False,False,4,8,2,0.06139838600211078,True,0,0.01752380927774766,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64}",False,False,8,0,2,0.017780950001906604,True,0,2.1676336763242713e-06,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64}",False,False,8,1,2,0.01028084900463,True,0,1.397733054020467e-07,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64}",False,False,8,2,2,0.01692063100199448,True,0,3.77515324206934e-06,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64}",False,False,8,4,2,0.0157296489996952,True,0,4.5638018323912455e-06,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64}",False,False,8,8,2,0.008875642997736577,True,0,2.505810698494315e-06,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""67"":64}",False,True,-8,0,2,0.005534127005375922,True,0,2.7120113372802734e-06,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""67"":64}",False,True,-8,1,2,3.143800131510943e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""67"":64}",False,True,-8,2,2,3.2900999940466136e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""67"":64}",False,True,-8,4,2,2.8121998184360564e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""67"":64}",False,True,-8,8,2,2.7892005164176226e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""67"":64}",False,True,-4,0,2,0.06646419900062028,True,0,0.01854917242241072,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""67"":64}",False,True,-4,1,2,0.028259555001568515,True,0,0.0007275996267708251,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""67"":64}",False,True,-4,2,2,0.032301324004947674,True,0,0.021828609751537442,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""67"":64}",False,True,-4,4,2,0.024241177998192143,True,0,0.013588368892669678,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""67"":64}",False,True,-4,8,2,5.299799522617832e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""67"":64}",False,True,-3,0,2,4.447199899004772e-05,True,0,0.06598984972824784,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""67"":64}",False,True,-3,1,2,4.0404003812000155e-05,True,0,0.003749950071181729,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""67"":64}",False,True,-3,2,2,3.805999585893005e-05,True,0,0.07639032680799573,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""67"":64}",False,True,-3,4,2,3.393199585843831e-05,True,0,0.046700713224709034,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""67"":64}",False,True,-3,8,2,2.7189998945686966e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""67"":64}",False,True,-2,0,2,0.20534554700134322,True,0,0.4534425116137568,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""67"":64}",False,True,-2,1,2,0.11476223499630578,True,0,0.1939145325740803,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""67"":64}",False,True,-2,2,2,0.1667522950010607,True,0,0.7593565530850981,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""67"":64}",False,True,-2,4,2,0.12467934499727562,True,0,0.8941726099001244,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""67"":64}",False,True,-2,8,2,5.2386996685527265e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64}",False,True,-1,0,2,0.5392386060048011,True,0,0.2010025388207813,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64}",False,True,-1,1,2,0.7697344460029854,True,0,0.23804340684731828,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64}",False,True,-1,2,2,0.4194133109995164,True,0,0.32768840481042805,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64}",False,True,-1,4,2,0.3092997280036798,True,0,0.3749843396117285,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64}",False,True,-1,8,2,7.301499863388017e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",False,True,0,0,2,1.044489435000287,True,0,0.5993551653059473,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",False,True,0,1,2,0.9271605579999971,True,0,0.22377923549753181,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",False,True,0,2,2,0.9157141350000018,True,0,0.7538469193202539,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",False,True,0,4,2,0.7077769560000036,True,0,0.6048615454185153,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",False,True,0,8,2,0.31100778800001194,True,0,0.9676149785518646,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",False,True,1,0,2,0.8921779180000158,True,0,0.5629812655552102,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",False,True,1,1,2,0.6889055880000114,True,0,0.6414895698923996,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",False,True,1,2,2,0.8656974189999858,True,0,0.451681950415761,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",False,True,1,4,2,0.645810130000001,True,0,0.6323892060120162,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",False,True,1,8,2,0.3478996919999986,True,0,0.26096879690885544,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""67"":64}",False,True,2,0,2,0.24223143500000788,True,0,0.23710191294824734,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""67"":64}",False,True,2,1,2,0.18675811400001407,True,0,0.3649130412669421,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""67"":64}",False,True,2,2,2,0.27043290299999967,True,0,0.8218962796607426,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""67"":64}",False,True,2,4,2,0.20524503800001526,True,0,0.6812720122570992,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""67"":64}",False,True,2,8,2,0.10252685999998334,True,0,0.7573168868548237,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64}",False,True,3,0,2,5.186100000287297e-05,True,0,0.664472757773339,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64}",False,True,3,1,2,6.225300001005962e-05,True,0,0.7105357025124974,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64}",False,True,3,2,2,7.429799998703857e-05,True,0,0.7137973562700571,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64}",False,True,3,4,2,7.458899997914159e-05,True,0,0.1295410751935298,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64}",False,True,3,8,2,5.1149000000805245e-05,True,0,0.1452620715208468,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64}",False,True,4,0,2,0.11415838700000336,True,0,0.006842165583005331,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64}",False,True,4,1,2,0.09060178800001495,True,0,0.0009185212043122438,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64}",False,True,4,2,2,0.12087126699998407,True,0,0.01279955906450402,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64}",False,True,4,4,2,0.12311631900001885,True,0,0.019006896493362693,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64}",False,True,4,8,2,0.05397334200000614,True,0,0.012461933286999738,,,True -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64}",False,True,8,0,2,0.016662603000014542,True,0,1.370285852124193e-06,,,True -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64}",False,True,8,1,2,0.013433816999992132,True,0,2.551476853030637e-07,,,True -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64}",False,True,8,2,2,0.018246229999988373,True,0,2.2393245614399696e-06,,,True -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64}",False,True,8,4,2,0.014403297999990627,True,0,2.888761116981442e-06,,,True -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64}",False,True,8,8,2,0.008221152000004395,True,0,2.2337771952152252e-06,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""61"":58,""67"":64}",True,False,-8,0,2,0.2089152479999825,True,0,0.40139858017678814,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""61"":58,""67"":64}",True,False,-8,1,2,0.10766511499997478,True,0,0.17447312078461685,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""61"":58,""67"":64}",True,False,-8,2,2,0.150649919999978,True,0,0.683724296162211,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""61"":58,""67"":64}",True,False,-8,4,2,0.11442909800001644,True,0,0.8197096242220141,,,True -partial_matrix,ms,67,64,64,56,69,13,"{""61"":58,""67"":64}",True,False,-8,8,2,7.777600001190876e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""61"":58,""67"":64}",True,False,-4,0,2,0.2866246540000077,True,0,0.23773157653956295,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""61"":58,""67"":64}",True,False,-4,1,2,0.19703038000000106,True,0,0.3212706222602776,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""61"":58,""67"":64}",True,False,-4,2,2,0.2786119220000103,True,0,0.7588761645993685,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""61"":58,""67"":64}",True,False,-4,4,2,0.20976089100000195,True,0,0.6265414430137419,,,True -partial_matrix,ms,67,64,64,60,69,13,"{""61"":58,""67"":64}",True,False,-4,8,2,0.09522909700001492,True,0,0.7087778997374699,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""61"":58,""67"":64}",True,False,-3,0,2,9.223600000041188e-05,True,0,0.6885706048678936,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""61"":58,""67"":64}",True,False,-3,1,2,9.557300001006297e-05,True,0,0.6268898603287766,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""61"":58,""67"":64}",True,False,-3,2,2,0.00010467199999197874,True,0,0.7394114473800903,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""61"":58,""67"":64}",True,False,-3,4,2,0.0001010350000001381,True,0,0.18087617434115835,,,True -partial_matrix,ms,67,64,64,61,69,13,"{""61"":58,""67"":64}",True,False,-3,8,2,7.370699998432428e-05,True,0,0.134550000395393,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""61"":58,""67"":64}",True,False,-2,0,2,0.33531597900000065,True,0,0.8155388475851881,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""61"":58,""67"":64}",True,False,-2,1,2,0.20649986800000875,True,0,0.3211698161556167,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""61"":58,""67"":64}",True,False,-2,2,2,0.29630551799999694,True,0,0.06490657561159123,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""61"":58,""67"":64}",True,False,-2,4,2,0.2602639030000091,True,0,0.07362815923997584,,,True -partial_matrix,ms,67,64,64,62,69,13,"{""61"":58,""67"":64}",True,False,-2,8,2,0.05347010300002353,True,0,0.011601221986666133,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64,""74"":71}",True,False,-1,0,2,0.6453790129999959,True,0,0.3556439474843497,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64,""74"":71}",True,False,-1,1,2,0.8877845490000027,True,0,0.38941671630202285,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64,""74"":71}",True,False,-1,2,2,0.4704354510000144,True,0,0.5357887714129053,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64,""74"":71}",True,False,-1,4,2,0.34559197199999403,True,0,0.5642852680666692,,,True -partial_matrix,ms,67,64,64,63,69,13,"{""67"":64,""74"":71}",True,False,-1,8,2,9.954999998740277e-05,True,0,0,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",True,False,0,0,2,1.189097118999996,True,0,0.7548785069272099,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",True,False,0,1,2,1.0061748440000144,True,0,0.39144282240032685,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",True,False,0,2,2,1.0090526029999864,True,0,0.800529875590861,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",True,False,0,4,2,0.7963558289999924,True,0,0.9329970683357658,,,True -partial_matrix,ms,67,64,64,64,69,13,"{""67"":64}",True,False,0,8,2,0.33976871799998776,True,0,0.6489325165748596,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",True,False,1,0,2,0.9943391470000051,True,0,0.2628013326115332,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",True,False,1,1,2,0.7434149149999882,True,0,0.401066127100999,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",True,False,1,2,2,0.965372857999995,True,0,0.7641955015923778,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",True,False,1,4,2,0.7281699870000011,True,0,0.9927772192412831,,,True -partial_matrix,ms,67,64,64,65,69,13,"{""67"":64}",True,False,1,8,2,0.39359512799998697,True,0,0.3560817167162895,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""61"":58,""67"":64}",True,False,2,0,2,0.2780862469999761,True,0,0.453535576691647,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""61"":58,""67"":64}",True,False,2,1,2,0.2110518549999938,True,0,0.6804900786863906,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""61"":58,""67"":64}",True,False,2,2,2,0.3225747439999793,True,0,0.6386633080816942,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""61"":58,""67"":64}",True,False,2,4,2,0.24383937599998262,True,0,0.3260371300420509,,,True -partial_matrix,ms,67,64,64,66,69,13,"{""61"":58,""67"":64}",True,False,2,8,2,0.1282639209999843,True,0,0.22830050720949657,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64,""74"":71}",True,False,3,0,2,0.09501987400000189,True,0,0.062301773621281496,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64,""74"":71}",True,False,3,1,2,0.03679894000001127,True,0,0.08622700797411638,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64,""74"":71}",True,False,3,2,2,0.04665756400001442,True,0,0.14676110241159274,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64,""74"":71}",True,False,3,4,2,0.03460138799999868,True,0,0.24490884998346285,,,True -partial_matrix,ms,67,64,64,67,69,13,"{""67"":64,""74"":71}",True,False,3,8,2,0.00010983900000383073,True,0,0.2094811943534296,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64,""74"":71}",True,False,4,0,2,0.12371552700000166,True,0,0.21654954879506297,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64,""74"":71}",True,False,4,1,2,0.0942878899999755,True,0,0.01123789994015771,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64,""74"":71}",True,False,4,2,2,0.13340821999997843,True,0,0.21748002639699437,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64,""74"":71}",True,False,4,4,2,0.13989342600001464,True,0,0.128916999029821,,,True -partial_matrix,ms,67,64,64,68,69,13,"{""67"":64,""74"":71}",True,False,4,8,2,0.06220568999998477,True,0,0.01752380927774766,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64,""74"":71}",True,False,8,0,2,1.2555380720000073,True,0,0.5424104471074054,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64,""74"":71}",True,False,8,1,2,0.9675925240000254,True,0,0.8271869970482967,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64,""74"":71}",True,False,8,2,2,1.1952521039999908,True,0,0.8358384830405604,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64,""74"":71}",True,False,8,4,2,0.8898710640000047,True,0,0.4729994494398077,,,True -partial_matrix,ms,67,64,64,72,69,13,"{""67"":64,""74"":71}",True,False,8,8,2,0.47485625199999504,True,0,0.5301661701814737,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""61"":58,""67"":64}",True,True,-8,0,2,0.16423438699999338,True,0,0.21087535504353294,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""61"":58,""67"":64}",True,True,-8,1,2,0.0920295789999841,True,0,0.09985105141086592,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""61"":58,""67"":64}",True,True,-8,2,2,0.12934855500000708,True,0,0.39287348854986703,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""61"":58,""67"":64}",True,True,-8,4,2,0.0964380849999884,True,0,0.517960527096875,,,True -partial_matrix,ms,67,64,59,56,69,13,"{""61"":58,""67"":64}",True,True,-8,8,2,7.755999999403684e-05,True,0,0,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""61"":58,""67"":64}",True,True,-4,0,2,0.25232641799999556,True,0,0.5073404988923739,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""61"":58,""67"":64}",True,True,-4,1,2,0.17631837900000846,True,0,0.549431296331632,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""61"":58,""67"":64}",True,True,-4,2,2,0.2417113290000259,True,0,0.7859689587302892,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""61"":58,""67"":64}",True,True,-4,4,2,0.18067467099999135,True,0,0.7634116753160358,,,True -partial_matrix,ms,67,64,59,60,69,13,"{""61"":58,""67"":64}",True,True,-4,8,2,0.08143986900000755,True,0,0.5000658787612338,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""61"":58,""67"":64}",True,True,-3,0,2,8.46460000047955e-05,True,0,0.3501249549268597,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""61"":58,""67"":64}",True,True,-3,1,2,9.12589999870761e-05,True,0,0.3098130126892805,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""61"":58,""67"":64}",True,True,-3,2,2,0.00010260199999834185,True,0,0.3841730782742446,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""61"":58,""67"":64}",True,True,-3,4,2,0.00010169000000814776,True,0,0.7782469243652513,,,True -partial_matrix,ms,67,64,59,61,69,13,"{""61"":58,""67"":64}",True,True,-3,8,2,7.30109999835804e-05,True,0,0.09000921941333218,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""61"":58,""67"":64}",True,True,-2,0,2,0.2980198180000002,True,0,0.4563710943472658,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""61"":58,""67"":64}",True,True,-2,1,2,0.20772511600000598,True,0,0.19435471116166814,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""61"":58,""67"":64}",True,True,-2,2,2,0.26812359599998103,True,0,0.7653313185658231,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""61"":58,""67"":64}",True,True,-2,4,2,0.22594491800001038,True,0,0.9039054784955441,,,True -partial_matrix,ms,67,64,59,62,69,13,"{""61"":58,""67"":64}",True,True,-2,8,2,0.045350428000006104,True,0,0.007935720352634235,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64,""74"":71}",True,True,-1,0,2,0.5478379120000056,True,0,0.20100611509946784,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64,""74"":71}",True,True,-1,1,2,0.7713641799999778,True,0,0.23804340684731828,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64,""74"":71}",True,True,-1,2,2,0.41414762599998767,True,0,0.32768840481042805,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64,""74"":71}",True,True,-1,4,2,0.3052572400000031,True,0,0.3749843396117285,,,True -partial_matrix,ms,67,64,59,63,69,13,"{""67"":64,""74"":71}",True,True,-1,8,2,0.00011029699999198783,True,0,0,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",True,True,0,0,2,1.040889289000006,True,0,0.5993551653059473,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",True,True,0,1,2,0.9040837080000017,True,0,0.22377923549753181,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",True,True,0,2,2,0.9039533079999842,True,0,0.7538469193202539,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",True,True,0,4,2,0.6926370340000005,True,0,0.6048615454185153,,,True -partial_matrix,ms,67,64,59,64,69,13,"{""67"":64}",True,True,0,8,2,0.32504590700000335,True,0,0.9676149785518646,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",True,True,1,0,2,0.8975043760000005,True,0,0.5629812655552102,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",True,True,1,1,2,0.6568882500000086,True,0,0.6414895698923996,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",True,True,1,2,2,0.8457361640000158,True,0,0.451681950415761,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",True,True,1,4,2,0.6378724520000105,True,0,0.6323892060120162,,,True -partial_matrix,ms,67,64,59,65,69,13,"{""67"":64}",True,True,1,8,2,0.34375756600002205,True,0,0.26096879690885544,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""61"":58,""67"":64}",True,True,2,0,2,0.2498168410000119,True,0,0.23710268459040784,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""61"":58,""67"":64}",True,True,2,1,2,0.19096812000000796,True,0,0.3649131962192364,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""61"":58,""67"":64}",True,True,2,2,2,0.28378721999999357,True,0,0.8218976476623342,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""61"":58,""67"":64}",True,True,2,4,2,0.22484371400000214,True,0,0.681273930842643,,,True -partial_matrix,ms,67,64,59,66,69,13,"{""61"":58,""67"":64}",True,True,2,8,2,0.10956122900000764,True,0,0.7573187529924326,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64,""74"":71}",True,True,3,0,2,0.08731164499999977,True,0,0.7018393325250115,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64,""74"":71}",True,True,3,1,2,0.03622523900000374,True,0,0.7118239160977098,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64,""74"":71}",True,True,3,2,2,0.04382388899998091,True,0,0.7529078302674824,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64,""74"":71}",True,True,3,4,2,0.031662578999998914,True,0,0.1510520934697444,,,True -partial_matrix,ms,67,64,59,67,69,13,"{""67"":64,""74"":71}",True,True,3,8,2,0.00010559599999737657,True,0,0.1452620715208468,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64,""74"":71}",True,True,4,0,2,0.11377526199999011,True,0,0.1374080108813014,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64,""74"":71}",True,True,4,1,2,0.08977586399998927,True,0,0.007558426170931058,,,True -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64,""74"":71}",True,True,4,2,2,0.29415526799999725,True,0,0.14743925649038636,50,1073741824,False -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64,""74"":71}",True,True,4,4,2,0.20394391600001427,True,0,0.09187743040673664,50,1073741824,False -partial_matrix,ms,67,64,59,68,69,13,"{""67"":64,""74"":71}",True,True,4,8,2,0.07517016499997453,True,0,0.012461933286999738,50,1073741824,False -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64,""74"":71}",True,True,8,0,2,2.2632916590000036,True,0,0.3257758171675037,50,1073741824,False -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64,""74"":71}",True,True,8,1,2,1.6340222259999564,True,0,0.4970605605987535,50,1073741824,False -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64,""74"":71}",True,True,8,2,2,2.235256798000023,True,0,0.9327655721106852,50,1073741824,False -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64,""74"":71}",True,True,8,4,2,1.5745348429999808,True,0,0.7368023997729254,50,1073741824,False -partial_matrix,ms,67,64,59,72,69,13,"{""67"":64,""74"":71}",True,True,8,8,2,0.8390772389999483,True,0,0.40061258571222425,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""74"":71}",False,False,-8,0,2,0.008418054999992819,True,0,4.0531158447265625e-06,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""74"":71}",False,False,-8,1,2,0.00012128299999858427,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""74"":71}",False,False,-8,2,2,3.354199998284457e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""74"":71}",False,False,-8,4,2,3.3562000055553654e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""74"":71}",False,False,-8,8,2,3.3081999958994857e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""74"":71}",False,False,-4,0,2,0.14365523399999347,True,0,0.058862754461415534,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""74"":71}",False,False,-4,1,2,0.04145625400002473,True,0,0.00186588797805598,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""74"":71}",False,False,-4,2,2,0.05089325300002656,True,0,0.05709856376051903,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""74"":71}",False,False,-4,4,2,0.03431075699995745,True,0,0.028992891311645508,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""74"":71}",False,False,-4,8,2,5.689599998959238e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""74"":71}",False,False,-3,0,2,8.425400000078298e-05,True,0,0.20351127798600377,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""74"":71}",False,False,-3,1,2,8.289600003763553e-05,True,0,0.009627304703911932,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""74"":71}",False,False,-3,2,2,4.071399996519176e-05,True,0,0.1946753581842131,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""74"":71}",False,False,-3,4,2,4.323100000647173e-05,True,0,0.09738523047417402,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""74"":71}",False,False,-3,8,2,3.5749000005580456e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",False,False,-2,0,2,0.5575465740000141,True,0,0.06691286491719184,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",False,False,-2,1,2,0.25937996900000826,True,0,0.6068930026259878,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",False,False,-2,2,2,0.4301307970000039,True,0,0.09121581281291924,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",False,False,-2,4,2,0.28266978400000653,True,0,0.08642254397273064,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",False,False,-2,8,2,0.00010661999999683758,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",False,False,-1,0,2,1.4203723299999638,True,0,0.7364459196921863,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",False,False,-1,1,2,2.1761513509999872,True,0,0.7293544639897731,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",False,False,-1,2,2,1.121533649000014,True,0,0.3672898784910812,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",False,False,-1,4,2,0.789899820999949,True,0,0.9502693610747883,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",False,False,-1,8,2,0.00014638999999760927,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",False,False,0,0,2,2.897788570999978,True,0,0.6173708382931338,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",False,False,0,1,2,2.3748310899999865,True,0,0.7995573715952298,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",False,False,0,2,2,2.550408180999966,True,0,0.9194107782842225,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",False,False,0,4,2,1.9415690920000088,True,0,0.6792857283835474,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",False,False,0,8,2,0.7623133779999876,True,0,0.9787427484989166,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""74"":71}",False,False,1,0,2,2.556999870000027,True,0,0.542408279473729,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""74"":71}",False,False,1,1,2,1.7170227889999978,True,0,0.8271868572749913,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""74"":71}",False,False,1,2,2,2.396512935999965,True,0,0.8358347078873183,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""74"":71}",False,False,1,4,2,1.7808052760000237,True,0,0.4729948856379753,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""74"":71}",False,False,1,8,2,0.9393713719999823,True,0,0.5301636643707752,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",False,False,2,0,2,0.624138701999982,True,0,0.04391760964697956,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",False,False,2,1,2,0.416145269000026,True,0,0.5158705902304748,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",False,False,2,2,2,0.6738700589999667,True,0,0.41809817799983195,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",False,False,2,4,2,0.5152752369999689,True,0,0.5964401114322748,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",False,False,2,8,2,0.19636790800001336,True,0,0.33697999420110136,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",False,False,3,0,2,0.00010763599999563667,True,0,0.0070482572911945655,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",False,False,3,1,2,0.00012191299998676186,True,0,0.1732255078159741,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",False,False,3,2,2,7.256800000732255e-05,True,0,0.18308112780949318,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",False,False,3,4,2,7.238899996764303e-05,True,0,0.41563951490441897,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",False,False,3,8,2,6.869099996720252e-05,True,0,0.33542174546892056,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",False,False,4,0,2,0.2787507710000341,True,0,0.029719018052624127,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",False,False,4,1,2,0.217105340000046,True,0,0.003311745805407866,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",False,False,4,2,2,0.28425034900004675,True,0,0.04762983714409983,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",False,False,4,4,2,0.316746003999981,True,0,0.0600521366014416,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",False,False,4,8,2,0.08475951000002624,True,0,0.02703486705064506,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",False,False,8,0,2,0.026560515000028317,True,0,4.166973897968808e-06,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",False,False,8,1,2,0.012797936999959347,True,0,2.422169042993333e-07,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",False,False,8,2,2,0.021226069000022108,True,0,6.663473459355557e-06,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",False,False,8,4,2,0.01941724199997452,True,0,7.477417855228374e-06,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",False,False,8,8,2,0.011567615999979353,True,0,3.277324140071869e-06,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""74"":71}",False,True,-8,0,2,0.007786956000018108,True,0,3.5762786865234375e-06,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""74"":71}",False,True,-8,1,2,5.8749999993779056e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""74"":71}",False,True,-8,2,2,4.82810000335121e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""74"":71}",False,True,-8,4,2,4.561800000146832e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""74"":71}",False,True,-8,8,2,4.365799998140574e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""74"":71}",False,True,-4,0,2,0.132978707999996,True,0,0.03736657475167249,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""74"":71}",False,True,-4,1,2,0.036471626999968976,True,0,0.001288213585212361,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""74"":71}",False,True,-4,2,2,0.05433629999998857,True,0,0.03911047399742529,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""74"":71}",False,True,-4,4,2,0.03171028799999931,True,0,0.0215110182762146,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""74"":71}",False,True,-4,8,2,8.79490000329497e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""74"":71}",False,True,-3,0,2,5.964499996480299e-05,True,0,0.13056584529829607,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""74"":71}",False,True,-3,1,2,4.388000002109038e-05,True,0,0.006639904966618815,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""74"":71}",False,True,-3,2,2,0.00012152900001183298,True,0,0.13463969742588233,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""74"":71}",False,True,-3,4,2,4.319600003555024e-05,True,0,0.07287053391337395,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""74"":71}",False,True,-3,8,2,3.866499997684514e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",False,True,-2,0,2,0.4844493919999877,True,0,0.04279784234085732,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",False,True,-2,1,2,0.2348632360000238,True,0,0.3872310881652563,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",False,True,-2,2,2,0.3579698070000177,True,0,0.06273473969969245,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",False,True,-2,4,2,0.25391211499999145,True,0,0.06412539078155532,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",False,True,-2,8,2,5.6972999971094396e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",False,True,-1,0,2,1.3447193110000057,True,0,0.4413049134694944,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",False,True,-1,1,2,2.1314733219999766,True,0,0.46906493658241816,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",False,True,-1,2,2,1.0529262229999858,True,0,0.645256351106096,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",False,True,-1,4,2,0.7413145769999687,True,0,0.658590679991903,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",False,True,-1,8,2,0.0001127489999817044,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",False,True,0,0,2,2.676469204,True,0,0.9518330475803677,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",False,True,0,1,2,2.140799340000001,True,0,0.48371922602662043,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",False,True,0,2,2,2.2512580289999846,True,0,0.9714126817412029,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",False,True,0,4,2,1.7498212259999946,True,0,0.6897634260484722,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",False,True,0,8,2,0.7258634230000212,True,0,0.7329667210578918,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""74"":71}",False,True,1,0,2,2.1878481859999965,True,0,0.3257744468816516,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""74"":71}",False,True,1,1,2,1.5813041049999583,True,0,0.49706030545106816,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""74"":71}",False,True,1,2,2,2.1511763310000447,True,0,0.9327633327861238,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""74"":71}",False,True,1,4,2,1.534487442999989,True,0,0.7367995110118084,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""74"":71}",False,True,1,8,2,0.7614115709999965,True,0,0.40061035193502903,50,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",False,True,2,0,2,0.5583221019999769,True,0,0.579665575898952,50,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",False,True,2,1,2,0.41386273199998413,True,0,0.8616531874154183,50,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",False,True,2,2,2,0.6134805980000237,True,0,0.8077034411632708,50,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",False,True,2,4,2,0.46263725199997907,True,0,0.3899243470786459,50,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",False,True,2,8,2,0.225978317000056,True,0,0.25618592265527695,50,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",False,True,3,0,2,0.00010618999999678636,True,0,0.004253882690332464,50,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",False,True,3,1,2,0.0001559019999604061,True,0,0.10441151990092232,50,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",False,True,3,2,2,0.0001534670000182814,True,0,0.11078260743677915,50,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",False,True,3,4,2,7.394300001806187e-05,True,0,0.2620918022876118,50,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",False,True,3,8,2,5.098600001929299e-05,True,0,0.24075511205592193,50,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",False,True,4,0,2,0.20714569199998323,True,0,0.016647786333492592,50,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",False,True,4,1,2,0.1606342130000371,True,0,0.0019978002899509804,50,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",False,True,4,2,2,0.2526683940000112,True,0,0.028378276462279705,50,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",False,True,4,4,2,0.254259745000013,True,0,0.03818485181048606,50,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",False,True,4,8,2,0.11412899399999787,True,0,0.019939704404805525,50,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",False,True,8,0,2,0.0211016189999782,True,0,2.7659542208928987e-06,50,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",False,True,8,1,2,0.015651071000036154,True,0,4.6106374465343034e-07,50,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",False,True,8,2,2,0.022778144000028533,True,0,4.194777728787954e-06,50,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",False,True,8,4,2,0.02049912500001483,True,0,5.00554058840974e-06,50,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",False,True,8,8,2,0.010418259000005037,True,0,2.932152710855007e-06,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""67"":64,""74"":71}",True,False,-8,0,2,1.1884021239999925,True,0,0.3556439474843497,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""67"":64,""74"":71}",True,False,-8,1,2,1.7242798649999713,True,0,0.38941671630202285,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""67"":64,""74"":71}",True,False,-8,2,2,0.8778289010000435,True,0,0.5357887714129053,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""67"":64,""74"":71}",True,False,-8,4,2,0.7320185069999638,True,0,0.5642852680666692,50,1073741824,False -partial_matrix,ms,74,71,71,63,76,13,"{""67"":64,""74"":71}",True,False,-8,8,2,0.0001936699999873781,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""67"":64,""74"":71}",True,False,-4,0,2,0.14645057200004885,True,0,0.062301773621281496,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""67"":64,""74"":71}",True,False,-4,1,2,0.03637509600002886,True,0,0.08622700797411638,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""67"":64,""74"":71}",True,False,-4,2,2,0.04601754599997321,True,0,0.14676110241159274,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""67"":64,""74"":71}",True,False,-4,4,2,0.03522095100004208,True,0,0.24490884998346285,50,1073741824,False -partial_matrix,ms,74,71,71,67,76,13,"{""67"":64,""74"":71}",True,False,-4,8,2,0.00027944700002535683,True,0,0.2094811943534296,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""67"":64,""74"":71}",True,False,-3,0,2,0.22304668800001082,True,0,0.21654954879506297,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""67"":64,""74"":71}",True,False,-3,1,2,0.09480326300001707,True,0,0.01123789994015771,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""67"":64,""74"":71}",True,False,-3,2,2,0.19096932799999422,True,0,0.21748002639699437,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""67"":64,""74"":71}",True,False,-3,4,2,0.21526554500002248,True,0,0.128916999029821,50,1073741824,False -partial_matrix,ms,74,71,71,68,76,13,"{""67"":64,""74"":71}",True,False,-3,8,2,0.059861157000000276,True,0,0.01752380927774766,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",True,False,-2,0,2,0.5380523009999933,True,0,0.06691286491719184,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",True,False,-2,1,2,0.2625608189999866,True,0,0.6068930026259878,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",True,False,-2,2,2,0.45408702800000356,True,0,0.09121581281291924,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",True,False,-2,4,2,0.33084827300001507,True,0,0.08642254397273064,50,1073741824,False -partial_matrix,ms,74,71,71,69,76,13,"{""74"":71}",True,False,-2,8,2,0.00011658900001521033,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",True,False,-1,0,2,1.3698912419999942,True,0,0.7364459196921863,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",True,False,-1,1,2,2.2355526690000147,True,0,0.7293544639897731,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",True,False,-1,2,2,1.0514167459999726,True,0,0.3672898784910812,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",True,False,-1,4,2,0.7759247179999988,True,0,0.9502693610747883,50,1073741824,False -partial_matrix,ms,74,71,71,70,76,13,"{""74"":71}",True,False,-1,8,2,0.00014676600000029794,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",True,False,0,0,2,2.7944837519999624,True,0,0.6173708382931338,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",True,False,0,1,2,2.318119115999991,True,0,0.7995573715952298,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",True,False,0,2,2,2.495403914999997,True,0,0.9194107782842225,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",True,False,0,4,2,1.9742990650000252,True,0,0.6792857283835474,50,1073741824,False -partial_matrix,ms,74,71,71,71,76,13,"{""74"":71}",True,False,0,8,2,0.8279619970000454,True,0,0.9787427484989166,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""67"":64,""74"":71}",True,False,1,0,2,2.5550934980000193,True,0,0.5424104471074054,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""67"":64,""74"":71}",True,False,1,1,2,1.7575621779999437,True,0,0.8271869970482967,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""67"":64,""74"":71}",True,False,1,2,2,2.42736594400003,True,0,0.8358384830405604,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""67"":64,""74"":71}",True,False,1,4,2,1.7860472930000242,True,0,0.4729994494398077,50,1073741824,False -partial_matrix,ms,74,71,71,72,76,13,"{""67"":64,""74"":71}",True,False,1,8,2,0.9388720120000471,True,0,0.5301661701814737,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",True,False,2,0,2,0.6234337540000752,True,0,0.04391760964697956,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",True,False,2,1,2,0.4028993020000371,True,0,0.5158705902304748,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",True,False,2,2,2,0.6865361410000332,True,0,0.41809817799983195,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",True,False,2,4,2,0.5259723169999688,True,0,0.5964401114322748,50,1073741824,False -partial_matrix,ms,74,71,71,73,76,13,"{""74"":71}",True,False,2,8,2,0.249691093000024,True,0,0.33697999420110136,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",True,False,3,0,2,6.15430000152628e-05,True,0,0.0070482572911945655,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",True,False,3,1,2,0.0001489300000230287,True,0,0.1732255078159741,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",True,False,3,2,2,7.565700002487574e-05,True,0,0.18308112780949318,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",True,False,3,4,2,7.751999999072723e-05,True,0,0.41563951490441897,50,1073741824,False -partial_matrix,ms,74,71,71,74,76,13,"{""74"":71}",True,False,3,8,2,5.6504999975004466e-05,True,0,0.33542174546892056,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",True,False,4,0,2,0.2523211259999698,True,0,0.029719018052624127,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",True,False,4,1,2,0.16530431400008183,True,0,0.003311745805407866,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",True,False,4,2,2,0.32143218399994566,True,0,0.04762983714409983,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",True,False,4,4,2,0.2940601489999608,True,0,0.0600521366014416,50,1073741824,False -partial_matrix,ms,74,71,71,75,76,13,"{""74"":71}",True,False,4,8,2,0.08122510700002294,True,0,0.02703486705064506,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",True,False,8,0,2,0.02210061499999938,True,0,4.166973897968808e-06,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",True,False,8,1,2,0.01396208900007423,True,0,2.422169042993333e-07,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",True,False,8,2,2,0.03015919799997846,True,0,6.663473459355557e-06,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",True,False,8,4,2,0.019189875999927608,True,0,7.477417855228374e-06,50,1073741824,False -partial_matrix,ms,74,71,71,79,76,13,"{""74"":71}",True,False,8,8,2,0.010939539999981207,True,0,3.277324140071869e-06,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""67"":64,""74"":71}",True,True,-8,0,2,1.1076723959999981,True,0,0.20100611509946784,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""67"":64,""74"":71}",True,True,-8,1,2,1.593407260000049,True,0,0.23804340684731828,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""67"":64,""74"":71}",True,True,-8,2,2,0.815197501000057,True,0,0.32768840481042805,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""67"":64,""74"":71}",True,True,-8,4,2,0.5752949779999881,True,0,0.3749843396117285,50,1073741824,False -partial_matrix,ms,74,71,66,63,76,13,"{""67"":64,""74"":71}",True,True,-8,8,2,0.00017530100001295068,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""67"":64,""74"":71}",True,True,-4,0,2,0.1320906879999484,True,0,0.7018393325250115,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""67"":64,""74"":71}",True,True,-4,1,2,0.03444652899997891,True,0,0.7118239160977098,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""67"":64,""74"":71}",True,True,-4,2,2,0.042869908999932704,True,0,0.7529078302674824,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""67"":64,""74"":71}",True,True,-4,4,2,0.030880667000019457,True,0,0.1510520934697444,50,1073741824,False -partial_matrix,ms,74,71,66,67,76,13,"{""67"":64,""74"":71}",True,True,-4,8,2,0.00020783799993751018,True,0,0.1452620715208468,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""67"":64,""74"":71}",True,True,-3,0,2,0.16264314599993668,True,0,0.1374080108813014,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""67"":64,""74"":71}",True,True,-3,1,2,0.13105041200003598,True,0,0.007558426170931058,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""67"":64,""74"":71}",True,True,-3,2,2,0.17308196199996928,True,0,0.14743925649038636,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""67"":64,""74"":71}",True,True,-3,4,2,0.2028434600000537,True,0,0.09187743040673664,50,1073741824,False -partial_matrix,ms,74,71,66,68,76,13,"{""67"":64,""74"":71}",True,True,-3,8,2,0.07262372300010611,True,0,0.012461933286999738,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",True,True,-2,0,2,0.4589403630000106,True,0,0.04279784234085732,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",True,True,-2,1,2,0.23998402900008386,True,0,0.3872310881652563,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",True,True,-2,2,2,0.35207608700000037,True,0,0.06273473969969245,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",True,True,-2,4,2,0.2582948210000495,True,0,0.06412539078155532,50,1073741824,False -partial_matrix,ms,74,71,66,69,76,13,"{""74"":71}",True,True,-2,8,2,6.0243999996600905e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",True,True,-1,0,2,1.3282177980000824,True,0,0.4413049134694944,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",True,True,-1,1,2,1.8899455920000037,True,0,0.46906493658241816,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",True,True,-1,2,2,0.9952454799999941,True,0,0.645256351106096,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",True,True,-1,4,2,0.7068029270000125,True,0,0.658590679991903,50,1073741824,False -partial_matrix,ms,74,71,66,70,76,13,"{""74"":71}",True,True,-1,8,2,7.50720000723959e-05,True,0,0,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",True,True,0,0,2,2.5977247929999976,True,0,0.9518330475803677,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",True,True,0,1,2,2.1860843860000614,True,0,0.48371922602662043,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",True,True,0,2,2,2.227411353000093,True,0,0.9714126817412029,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",True,True,0,4,2,1.7436766949999765,True,0,0.6897634260484722,50,1073741824,False -partial_matrix,ms,74,71,66,71,76,13,"{""74"":71}",True,True,0,8,2,0.7425614510000287,True,0,0.7329667210578918,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""67"":64,""74"":71}",True,True,1,0,2,2.301748828999962,True,0,0.3257758171675037,50,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""67"":64,""74"":71}",True,True,1,1,2,3.4102788320000172,True,0,0.4970605605987535,25,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""67"":64,""74"":71}",True,True,1,2,2,4.1730072870000186,True,0,0.9327655721106852,25,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""67"":64,""74"":71}",True,True,1,4,2,3.230810813000062,True,0,0.7368023997729254,25,1073741824,False -partial_matrix,ms,74,71,66,72,76,13,"{""67"":64,""74"":71}",True,True,1,8,2,1.6740023950000023,True,0,0.40061258571222425,25,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",True,True,2,0,2,1.1161117819999617,True,0,0.579665575898952,25,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",True,True,2,1,2,0.7901512039999261,True,0,0.8616531874154183,25,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",True,True,2,2,2,1.3031944179999755,True,0,0.8077034411632708,25,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",True,True,2,4,2,0.9775540010000441,True,0,0.3899243470786459,25,1073741824,False -partial_matrix,ms,74,71,66,73,76,13,"{""74"":71}",True,True,2,8,2,0.42157902799999647,True,0,0.25618592265527695,25,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",True,True,3,0,2,9.174000001621607e-05,True,0,0.004253882690332464,25,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",True,True,3,1,2,6.7796000053022e-05,True,0,0.10441151990092232,25,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",True,True,3,2,2,7.39679999242071e-05,True,0,0.11078260743677915,25,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",True,True,3,4,2,7.746400001451548e-05,True,0,0.2620918022876118,25,1073741824,False -partial_matrix,ms,74,71,66,74,76,13,"{""74"":71}",True,True,3,8,2,5.6504999975004466e-05,True,0,0.24075511205592193,25,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",True,True,4,0,2,0.482951240000034,True,0,0.016647786333492592,25,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",True,True,4,1,2,0.4150473590000274,True,0,0.0019978002899509804,25,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",True,True,4,2,2,0.572370052999986,True,0,0.028378276462279705,25,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",True,True,4,4,2,0.5256295089999412,True,0,0.03818485181048606,25,1073741824,False -partial_matrix,ms,74,71,66,75,76,13,"{""74"":71}",True,True,4,8,2,0.1879592909999701,True,0,0.019939704404805525,25,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",True,True,8,0,2,0.01973728999996638,True,0,2.7659542208928987e-06,25,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",True,True,8,1,2,0.05727890399998614,True,0,4.6106374465343034e-07,25,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",True,True,8,2,2,0.03965953400006583,True,0,4.194777728787954e-06,25,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",True,True,8,4,2,0.050602358999981334,True,0,5.00554058840974e-06,25,1073741824,False -partial_matrix,ms,74,71,66,79,76,13,"{""74"":71}",True,True,8,8,2,0.00951074600004631,True,0,2.932152710855007e-06,25,1073741824,False -partial_matrix,ms,127,124,124,116,129,15,"{""127"":124}",False,False,-8,0,2,0.24018571500005237,True,0,1.2660166248679161e-08,25,1073741824,False -partial_matrix,ms,127,124,124,116,129,15,"{""127"":124}",False,False,-8,1,2,7.492999998248706e-05,True,0,0,25,1073741824,False -partial_matrix,ms,127,124,124,116,129,15,"{""127"":124}",False,False,-8,2,2,4.0605999970466655e-05,True,0,0,25,1073741824,False -partial_matrix,ms,127,124,124,116,129,15,"{""127"":124}",False,False,-8,4,2,3.956299997298629e-05,True,0,0,25,1073741824,False -partial_matrix,ms,127,124,124,116,129,15,"{""127"":124}",False,False,-8,8,2,4.1427000041949213e-05,True,0,0,25,1073741824,False -partial_matrix,ms,127,124,124,120,129,15,"{""127"":124}",False,False,-4,0,2,1.1548154519999798,True,0,0.0017885486344870472,25,1073741824,False -partial_matrix,ms,127,124,124,120,129,15,"{""127"":124}",False,False,-4,1,2,0.33446100200001183,True,0,3.100725161964135e-05,25,1073741824,False -partial_matrix,ms,127,124,124,120,129,15,"{""127"":124}",False,False,-4,2,2,0.5645594409999148,True,0,0.0009760428827405576,25,1073741824,False -partial_matrix,ms,127,124,124,120,129,15,"{""127"":124}",False,False,-4,4,2,0.3330060680000315,True,0,0.00027313767350278795,25,1073741824,False -partial_matrix,ms,127,124,124,120,129,15,"{""127"":124}",False,False,-4,8,2,6.936899990250822e-05,True,0,0,25,1073741824,False -partial_matrix,ms,127,124,124,121,129,15,"{""127"":124}",False,False,-3,0,2,5.147599995325436e-05,True,0,0.005820081134972038,25,1073741824,False -partial_matrix,ms,127,124,124,121,129,15,"{""127"":124}",False,False,-3,1,2,5.081399990558566e-05,True,0,0.18316503381770777,25,1073741824,False -partial_matrix,ms,127,124,124,121,129,15,"{""127"":124}",False,False,-3,2,2,5.818800002543867e-05,True,0,0.0031503721698555864,25,1073741824,False -partial_matrix,ms,127,124,124,121,129,15,"{""127"":124}",False,False,-3,4,2,4.487300009259343e-05,True,0,0.0008742496211198159,25,1073741824,False -partial_matrix,ms,127,124,124,121,129,15,"{""127"":124}",False,False,-3,8,2,3.701899993302504e-05,True,0,0,25,1073741824,False -partial_matrix,ms,127,124,124,122,129,15,"{""127"":124}",False,False,-2,0,2,3.8805778309999823,True,0,0.4239304006205873,25,1073741824,False -partial_matrix,ms,127,124,124,122,129,15,"{""127"":124}",False,False,-2,1,2,1.8080009550000113,True,0,0.017904325959559188,25,1073741824,False -partial_matrix,ms,127,124,124,122,129,15,"{""127"":124}",False,False,-2,2,2,3.28860939599997,True,0,0.3386213851396817,25,1073741824,False -partial_matrix,ms,127,124,124,122,129,15,"{""127"":124}",False,False,-2,4,2,2.409095281000077,True,0,0.1848387638609097,25,1073741824,False -partial_matrix,ms,127,124,124,122,129,15,"{""127"":124}",False,False,-2,8,2,6.830600000284903e-05,True,0,0,25,1073741824,False -representative,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,0,2,2.2881892169999674,True,0,0.3180125291552435,25,1073741824,False -representative,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,0,2,1.716569814999957,True,0,0.1240609106093454,25,1073741824,False -representative,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,0,2,2.165673108999954,True,0,0.3180125291552435,25,1073741824,False -representative,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,0,2,1.7312227090000079,True,0,0.1240609106093454,25,1073741824,False -representative,ms,54,51,51,51,56,13,"{""54"":51}",False,False,0,0,2,2.768222369,True,0,0.8645280706298716,25,1073741824,False -representative,ms,54,51,46,51,56,13,"{""54"":51}",False,True,0,0,2,2.2462291339999183,True,0,0.37906970620985847,25,1073741824,False -representative,ms,54,51,51,51,56,13,"{""54"":51}",True,False,0,0,2,2.647899282000026,True,0,0.8645280706298716,25,1073741824,False -representative,ms,54,51,46,51,56,13,"{""54"":51}",True,True,0,0,2,2.343442286000027,True,0,0.37906970620985847,25,1073741824,False -representative,ms,61,58,58,58,63,13,"{""61"":58}",False,False,0,0,2,3.859688576000053,True,0,0.8980359578406801,25,1073741824,False -representative,ms,61,58,53,58,63,13,"{""61"":58}",False,True,0,0,2,3.323820264999995,True,0,0.44175036472124224,25,1073741824,False -representative,ms,61,58,58,58,63,13,"{""61"":58}",True,False,0,0,2,3.5936036460000196,True,0,0.8980359578406801,25,1073741824,False -representative,ms,61,58,53,58,63,13,"{""61"":58}",True,True,0,0,2,3.3926441009999735,True,0,0.44175036472124224,25,1073741824,False -representative,ms,67,64,64,64,69,13,"{""67"":64}",False,False,0,0,2,4.507072858000015,True,0,0.7548785069272099,25,1073741824,False -representative,ms,67,64,59,64,69,13,"{""67"":64}",False,True,0,0,2,4.181926713000053,True,0,0.5993551653059473,25,1073741824,False -representative,ms,67,64,64,64,69,13,"{""67"":64}",True,False,0,0,2,4.615740133000031,True,0,0.7548785069272099,25,1073741824,False -representative,ms,67,64,59,64,69,13,"{""67"":64}",True,True,0,0,2,4.079361617000018,True,0,0.5993551653059473,25,1073741824,False -representative,ms,74,71,71,71,76,13,"{""74"":71}",False,False,0,0,2,5.823408214999972,True,0,0.6173708382931338,25,1073741824,False -representative,ms,74,71,66,71,76,13,"{""74"":71}",False,True,0,0,2,5.282166069999903,True,0,0.9518330475803677,25,1073741824,False -representative,ms,74,71,71,71,76,13,"{""74"":71}",True,False,0,0,2,6.005233225999973,True,0,0.6173708382931338,25,1073741824,False -representative,ms,74,71,66,71,76,13,"{""74"":71}",True,True,0,0,2,5.596415825999998,True,0,0.9518330475803677,25,1073741824,False -representative,ms,127,124,124,124,129,15,"{""127"":124}",False,False,0,0,2,10.00081814300006,False,0,0.355033070606778,25,1073741824,False -representative,ms,127,124,119,124,129,15,"{""127"":124}",False,True,0,0,2,10.000852621000035,False,0,0.7351777988557597,25,1073741824,False -representative,ms,127,124,124,124,129,15,"{""127"":124}",True,False,0,0,2,10.000757327999963,False,0,0.355033070606778,25,1073741824,False -representative,ms,127,124,119,124,129,15,"{""127"":124}",True,True,0,0,2,10.000868932999992,False,0,0.7351777988557597,25,1073741824,False -representative,cl,74,71,71,71,76,13,"{""74"":71}",False,False,0,0,2,5.58898060599995,True,0,0.6173708382931338,25,1073741824,False -representative,cl,74,71,66,71,76,13,"{""74"":71}",False,True,0,0,2,4.823137258999964,True,0,0.9518330475803677,25,1073741824,False -representative,cl,74,71,71,71,76,13,"{""74"":71}",True,False,0,0,2,5.3615337510000245,True,0,0.6173708382931338,25,1073741824,False -representative,cl,74,71,66,71,76,13,"{""74"":71}",True,True,0,0,2,5.1357287119999455,True,0,0.9518330475803677,25,1073741824,False -representative,bip39_12w,56,46,46,46,65,13,"{""56"":46}",False,False,0,0,2,2.1578471499999523,True,0,0.37906970620985847,25,1073741824,False -representative,bip39_12w,56,46,41,46,65,13,"{""56"":46}",False,True,0,0,2,1.6527557569997953,True,0,0.15112864731065845,25,1073741824,False -representative,bip39_12w,56,46,46,46,65,13,"{""56"":46}",True,False,0,0,2,2.1299813649998214,True,0,0.37906970620985847,25,1073741824,False -representative,bip39_12w,56,46,41,46,65,13,"{""56"":46}",True,True,0,0,2,1.770795003000103,True,0,0.15112864731065845,25,1073741824,False -representative,bip39_24w,82,72,72,72,91,13,"{""82"":72}",False,False,0,0,2,5.732446683000035,True,0,0.68422576125261,25,1073741824,False -representative,bip39_24w,82,72,67,72,91,13,"{""82"":72}",False,True,0,0,2,5.071277052999903,True,0,0.7020112956439383,25,1073741824,False -representative,bip39_24w,82,72,72,72,91,13,"{""82"":72}",True,False,0,0,2,5.820538238999916,True,0,0.68422576125261,25,1073741824,False -representative,bip39_24w,82,72,67,72,91,13,"{""82"":72}",True,True,0,0,2,5.1801772419999,True,0,0.7020112956439383,25,1073741824,False -deeper,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,0,3,10.002627981999922,False,0,0.3180125291552435,25,1073741824,False -deeper,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,0,3,10.00014989300007,False,0,0.1240609106093454,25,1073741824,False -deeper,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,0,3,10.00013799699991,False,0,0.3180125291552435,25,1073741824,False -deeper,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,0,3,10.00009567699999,False,0,0.1240609106093454,25,1073741824,False -deeper,ms,48,45,45,45,50,13,"{""48"":45}",False,False,0,0,4,10.000166755999999,False,0,0.3180125291552435,25,1073741824,False -deeper,ms,48,45,40,45,50,13,"{""48"":45}",False,True,0,0,4,10.00009317099989,False,0,0.1240609106093454,25,1073741824,False -deeper,ms,48,45,45,45,50,13,"{""48"":45}",True,False,0,0,4,10.000193944000102,False,0,0.3180125291552435,25,1073741824,False -deeper,ms,48,45,40,45,50,13,"{""48"":45}",True,True,0,0,4,10.000187847999996,False,0,0.1240609106093454,25,1073741824,False -deeper,ms,127,124,124,124,129,15,"{""127"":124}",False,False,0,0,3,10.000752110999883,False,0,0.355033070606778,25,1073741824,False -deeper,ms,127,124,119,124,129,15,"{""127"":124}",False,True,0,0,3,10.00027246500008,False,0,0.7351777988557597,25,1073741824,False -deeper,ms,127,124,124,124,129,15,"{""127"":124}",True,False,0,0,3,10.000769142000081,False,0,0.355033070606778,25,1073741824,False -deeper,ms,127,124,119,124,129,15,"{""127"":124}",True,True,0,0,3,10.000285220000023,False,0,0.7351777988557597,25,1073741824,False -deeper,ms,127,124,124,124,129,15,"{""127"":124}",False,False,0,0,4,10.000789569000062,False,0,0.355033070606778,25,1073741824,False -deeper,ms,127,124,119,124,129,15,"{""127"":124}",False,True,0,0,4,10.076244137000003,False,0,0.7351777988557597,25,1073741824,False -deeper,ms,127,124,124,124,129,15,"{""127"":124}",True,False,0,0,4,10.00031720600009,False,0,0.355033070606778,25,1073741824,False -deeper,ms,127,124,119,124,129,15,"{""127"":124}",True,True,0,0,4,10.000573527000142,False,0,0.7351777988557597,25,1073741824,False From 32e4c4b80bc7074e01a63e5933827d8049f86116 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 12:04:12 +0000 Subject: [PATCH 11/13] correction: Drop redundant BCH decoding paths Remove code from the substitution and erasure decoder that cannot change a result. Every BCH correction was re-checked against the full residue. The check cannot fail. The generator is the product of the distinct minimal polynomials of the 8 consecutive roots. GF(32) values that clear those syndromes also clear the conjugate roots, so the generator divides the corrected word. The linear erasure solver already rejects inconsistent systems. Delete _corrections_reach_target. The linear solver ran after a failed BCH decode even with at most 8 erasures. In that case an erasure-only solution leaves the Forney syndromes zero, so BCH would already have found it. Call the solver only when the erasures exceed the BCH roots. The worksheet path now makes the same choice inline, so _error_corrections is gone. Its word-length and substitution-limit parameters were unused. The precomputed erasure-product tables were never built. Remove that plumbing from _locator_poly, _bch_syndrome_corrections, _repair_body and _FixedCorrector. Also drop the no-op "except TypeError: raise" clauses. Keep the direct small-locator solve. Replacing it with Berlekamp-Massey for every call returned identical results but made the bounded indel search about 15% slower, which could change truncation under the ten- second deadline. Validation: full pytest in normal and -O modes; differential_correction and differential_wallet --verify; verify_correction_constants; ruff check, ruff format --check and mypy. An offline comparison against the previous module found identical results for random BCH syndromes, damaged ms strings with up to 14 errors or erasures, and worksheet residues with up to 15 erasures. --- src/codex32/correction.py | 143 ++++++++++---------------------------- 1 file changed, 37 insertions(+), 106 deletions(-) diff --git a/src/codex32/correction.py b/src/codex32/correction.py index 1d4999ef..39fc2627 100644 --- a/src/codex32/correction.py +++ b/src/codex32/correction.py @@ -382,28 +382,15 @@ def _small_locator(sequence: list[int], maximum: int) -> list[int] | None: return [1, *coefficients] if len(coefficients) <= maximum else None -def _locator_poly( - syndromes: list[int], - erasure_poly: list[int], - maximum: int | None, - erasure_products: tuple[tuple[int, ...], ...] | None = None, -) -> list[int] | None: +def _locator_poly(syndromes: list[int], erasure_poly: list[int], maximum: int | None) -> list[int] | None: + """Locate substitutions from Forney syndromes, which hide the known erasures.""" degree = len(erasure_poly) - 1 - if degree == 2 and erasure_products is not None: - first, second = erasure_products - modified = [ - syndromes[index - 2] ^ first[syndromes[index]] ^ second[syndromes[index - 1]] - for index in range(2, len(syndromes)) - ] - else: - modified = [] - for output_index in range(degree, len(syndromes)): - value = syndromes[output_index - degree] - products = erasure_products - for index, coefficient in enumerate(erasure_poly[:-1]): - syndrome = syndromes[output_index - index] - value ^= _gf1024_mul(coefficient, syndrome) if products is None else products[index][syndrome] - modified.append(value) + modified = [] + for output_index in range(degree, len(syndromes)): + value = syndromes[output_index - degree] + for index, coefficient in enumerate(erasure_poly[:-1]): + value ^= _gf1024_mul(coefficient, syndromes[output_index - index]) + modified.append(value) if maximum is not None and maximum <= 2: return _small_locator(modified, maximum) coefficients, _adjustment = _synthesize_rec(list(reversed(modified))) @@ -431,13 +418,17 @@ def _bch_syndrome_corrections( word_length: int, max_substitutions: int | None, erasure_state: tuple[tuple[int, ...], list[int]] | None = None, - erasure_products: tuple[tuple[int, ...], ...] | None = None, ) -> list[tuple[int, int]] | None: + """Fill erasures and locate substitutions: locator, Chien search, then Forney. + + GF(32) values that clear these 8 syndromes also clear their conjugates, which are the + remaining roots of the generator, so every returned correction reaches the target. + """ word_roots = _word_roots(spec, word_length) erasure_roots, erasure_poly = ( _erasure_state(spec, word_length, tuple(erasure_indices)) if erasure_state is None else erasure_state ) - locator = _locator_poly(syndromes, erasure_poly, max_substitutions, erasure_products) + locator = _locator_poly(syndromes, erasure_poly, max_substitutions) if locator is None or max_substitutions is not None and len(locator) - 1 > max_substitutions: return None errors = [ @@ -471,45 +462,30 @@ def _repair_body( alignment: tuple[int, tuple[tuple[int, ...], ...]], erasure_indices: Sequence[int] | None, erasure_state: tuple[tuple[int, ...], list[int]] | None, - erasure_products: tuple[tuple[int, ...], ...] | None, packed_syndromes: int | None = None, ) -> tuple[list[int], list[tuple[int, int]]] | None: erasures = ( - tuple(index for index, value in enumerate(reversed(body)) if value < 0) + [index for index, value in enumerate(reversed(body)) if value < 0] if erasure_indices is None - else erasure_indices + else list(erasure_indices) ) - result = ( - _bch_syndrome_corrections( - spec, - list(erasures), - ( - _aligned_syndromes(alignment, body, len(spec.roots)) - if packed_syndromes is None - else [(packed_syndromes >> (10 * i)) & 1023 for i in range(len(spec.roots))] - ), - len(body), - max_substitutions, - erasure_state, - erasure_products, + if len(erasures) <= len(spec.roots): + syndromes = ( + _aligned_syndromes(alignment, body, len(spec.roots)) + if packed_syndromes is None + else [(packed_syndromes >> (10 * i)) & 1023 for i in range(len(spec.roots))] ) - if len(erasures) <= len(spec.roots) - else None - ) - if result is None and max_substitutions is not None: - return None - zeroed = [max(value, 0) for value in body] - residue: list[int] | None = None - if result is not None: - residue = _residue(spec, hrp, zeroed) - if not _corrections_reach_target(spec, residue, result): - result = None - if result is None and max_substitutions is None: - residue = _residue(spec, hrp, zeroed) if residue is None else residue - result = _linear_error_corrections(spec, list(erasures), residue) - if result is not None and not _corrections_reach_target(spec, residue, result): - result = None - return None if result is None else (zeroed, result) + result = _bch_syndrome_corrections( + spec, erasures, syndromes, len(body), max_substitutions, erasure_state + ) + elif max_substitutions is None: + # More erasures than BCH roots: solve the residue directly for erasures only. + result = _linear_error_corrections( + spec, erasures, _residue(spec, hrp, [max(value, 0) for value in body]) + ) + else: + result = None + return None if result is None else ([max(value, 0) for value in body], result) def _capture_volume(mutable_symbols: int, erasures: int, substitutions: int) -> int: @@ -526,7 +502,6 @@ class _FixedCorrector: __slots__ = ( "alignment", "erasure_indices", - "erasure_products", "erasure_state", "hrp", "max_substitutions", @@ -557,7 +532,6 @@ def __init__( self.max_substitutions = max_substitutions self.mutable_start = mutable_start self.erasure_indices: tuple[int, ...] | None = None - self.erasure_products: tuple[tuple[int, ...], ...] | None = None self.erasure_state: tuple[tuple[int, ...], list[int]] | None = None def correct( @@ -575,9 +549,6 @@ def correct( return None self.erasure_indices = tuple(erasure_indices) self.erasure_state = _erasure_state(self.spec, len(values), self.erasure_indices) - # Alignment locations change frequently. Building 2048 products per - # pair costs more than the handful of GF(1024) multiplies per call. - self.erasure_products = None repair = _repair_body( self.spec, self.hrp, @@ -586,7 +557,6 @@ def correct( self.alignment, erasure_indices, self.erasure_state if erasure_indices is not None else None, - self.erasure_products if erasure_indices is not None else None, packed_syndromes, ) if repair is None: @@ -680,45 +650,6 @@ def _linear_error_corrections( return None if solution is None else list(zip(erasure_indices, solution)) -def _error_corrections( - spec: _Spec, - erasure_indices: list[int], - residue: list[int], - word_length: int | None = None, - max_substitutions: int | None = None, -) -> list[tuple[int, int]] | None: - length = spec.period if word_length is None else word_length - bch = None - if len(erasure_indices) <= len(spec.roots): - bch = _bch_syndrome_corrections( - spec, - erasure_indices, - list(_syndromes(spec, residue, target=True)), - length, - max_substitutions, - ) - if bch is not None and _corrections_reach_target(spec, residue, bch): - return bch - if max_substitutions is not None and max_substitutions > 0: - return None - if len(erasure_indices) > len(spec.generator): - return None - linear = _linear_error_corrections(spec, erasure_indices, residue) - return linear if linear is not None and _corrections_reach_target(spec, residue, linear) else None - - -def _corrections_reach_target(spec: _Spec, residue: list[int], corrections: list[tuple[int, int]]) -> bool: - count = max((index for index, _addend in corrections), default=-1) + 1 - powers = _poly_powers(spec.generator, count) - corrected = list(residue) - for reverse_index, addend in corrections: - corrected = _poly_sum( - corrected, - [_gf32_multiply(addend, value) for value in powers[reverse_index]], - ) - return corrected == list(reversed(spec.target)) - - def _correct_fixed( damaged_text: str, *, @@ -731,8 +662,6 @@ def _correct_fixed( hrp = suspected_profile.value if isinstance(suspected_profile, Profile) else suspected_profile.lower() try: uppercase = _validate_single_case_ascii(damaged_text) - except TypeError: - raise except CodexError: return None prefix = f"{hrp}1" @@ -1007,8 +936,6 @@ def correct_worksheet_residue( try: _validate_single_case_ascii(residue) values = list(reversed(_chars_to_u5(residue))) - except TypeError: - raise except CodexError as error: raise InvalidCorrectionInput(str(error)) from error if len(values) == len(_SHORT_SPEC.generator): @@ -1028,7 +955,11 @@ def correct_worksheet_residue( raise InvalidCorrectionInput("erasure indices must be distinct") if any(index < 0 or index >= spec.period for index in indices): raise InvalidCorrectionInput(f"erasure indices must be between 0 and {spec.period - 1}") - result = _error_corrections(spec, indices, values) + if len(indices) <= len(spec.roots): + syndromes = list(_syndromes(spec, values, target=True)) + result = _bch_syndrome_corrections(spec, indices, syndromes, spec.period, None) + else: + result = _linear_error_corrections(spec, indices, values) if result is None: return None return tuple(WorksheetCorrection(index, CHARSET[addend]) for index, addend in sorted(result)) From 9b99862eb14d15d86977cec202a6d39abcac2a88 Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Tue, 20 Oct 2026 03:46:59 -0500 Subject: [PATCH 12/13] docs: Read policy from the current PR target Old topic branches can retain superseded contribution rules, as happened while addressing PR #144 after #152 merged. Require agents to consult the current target-branch contributor guide and AI policy before acting on a PR. State that the tool-neutral policy permits AI-written descriptions and review replies while keeping publication within the user-authorized scope. The maintainer explicitly approved this AGENTS.md patch. Validation: reviewed the exact approved patch, checked referenced local paths, and ran git diff --check. Documentation only; application tests are not applicable. Refs #144 and #152. --- AGENTS.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index fd47d954..d6b72f90 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -86,11 +86,16 @@ Resolve scope questions from the changed code and the invariants first. Ask only if a material security decision remains unclear; identify the decision rather than stopping on general uncertainty. Ask before running a recommended security review. -Follow `docs/developer/AI_POLICY.md` for contributions and `SECURITY.md` for -private vulnerability reporting. Local edits, checks, and atomic commits are -allowed; do not automatically push, open pull requests, write replies, contact -maintainers, or claim authorship. A human publishes contributions. Never commit -to master or push to an open pull request branch without explicit user direction. +Before acting on a pull request, read `CONTRIBUTING.md` and +`docs/developer/AI_POLICY.md` from its current target branch. Follow that merged +contribution policy when the topic branch contains an older version. AI may +write PR descriptions and review replies under the tool-neutral policy. + +Follow `SECURITY.md` for private vulnerability reporting. Local edits, checks, +and atomic commits are allowed. Publish only within the user's authorized scope; +permission to use AI does not itself authorize contacting others. Never claim +independent human authorship, commit to master, or push to an open pull request +branch without explicit user direction. When asked to commit, keep commits focused and independently passing unless the user explicitly requests a combined commit. Use an imperative subject of at From ec065a38f761617e8fbfcac7c8861fc65772ed2e Mon Sep 17 00:00:00 2001 From: Ben Westgate Date: Tue, 20 Oct 2026 11:46:53 +0000 Subject: [PATCH 13/13] correct: Say why the entry was invalid when suggesting a repair `correct` and the "Possible correction" prompt in secret, share, wallet and create --existing showed only the repair. After the YES gate, print one line to stderr first, "Invalid: ", using the first parse error the caller already caught, so nothing is parsed twice. The `reason` argument is keyword-only so it can't be swapped silently. A mixed-case string now says codex32 strings are all uppercase or all lowercase, and only that case alone doesn't change the encoded data: the same entry may also hold a wrong symbol, so the reason is not a full diagnosis. create --existing uses the same wording as the other commands. Closes #85 Claude-Session: https://claude.ai/code/session_015CuLXqAvAovfoVcUmmogwa Claude-Session: https://claude.ai/code/session_01Q1TNm1YeYW8K9W2eBvxmCD --- src/codex32/_cli_input.py | 14 +++-- src/codex32/cli.py | 14 +++-- tests/test_cli.py | 79 ++++++++++++++++++++++++++--- tests/test_correction_disclosure.py | 16 +++++- 4 files changed, 107 insertions(+), 16 deletions(-) diff --git a/src/codex32/_cli_input.py b/src/codex32/_cli_input.py index cf5d25df..d617001e 100644 --- a/src/codex32/_cli_input.py +++ b/src/codex32/_cli_input.py @@ -27,6 +27,7 @@ CodexError, DuplicateShareIndex, ExistingTargetIndex, + InvalidCase, InvalidChecksum, InvalidLength, InvalidThreshold, @@ -205,6 +206,8 @@ def _confirm_correction( accepted: list[Artifact], basis: bool, fingerprint: Callable[[MasterSeed], bytes] | None = None, + *, + reason: str, ) -> bool | None: _require_correction_confirmation(candidate.low_checksum_discrimination) artifact = candidate.artifact @@ -226,6 +229,7 @@ def _confirm_correction( except CodexError: _stderr("Rejected: Could not recover a valid Bitcoin master seed using this correction.") return None + _stderr(f"Invalid: {reason}") _stderr(f"Possible correction:\n\n{fingerprint_text}{_card_text(artifact.text, sys.stderr.isatty())}\n") return _confirmation_input( "Does this entire string exactly match your recovery card? [y/N]: " @@ -644,7 +648,7 @@ def _redirected( for token in tokens: try: artifact = _parse(token, profiles) - except InputError: + except InputError as error: if one: raise @@ -671,7 +675,7 @@ def allowed(candidate: CorrectionCandidate) -> bool: ) if len(candidates) != 1: raise - if not _confirm_correction(candidates[0], accepted, basis, fingerprint): + if not _confirm_correction(candidates[0], accepted, basis, fingerprint, reason=str(error)): raise CorrectionDeclined artifact = candidates[0].artifact _validate_operational_artifact( @@ -686,6 +690,10 @@ def allowed(candidate: CorrectionCandidate) -> bool: _FRIENDLY_SET_ERRORS: dict[type[Exception], str] = { + InvalidCase: ( + "A codex32 string must be all uppercase or all lowercase. Case alone doesn't change the " + "encoded data; check any other difference against your recovery card." + ), InvalidChecksum: "The checksum does not match.", MismatchedProfile: "These strings are for different applications.", MismatchedThreshold: "These strings require different numbers of shares.", @@ -786,7 +794,7 @@ def allowed(candidate: CorrectionCandidate) -> bool: ) ) confirmation = ( - _confirm_correction(candidates[0], accepted, basis, fingerprint) + _confirm_correction(candidates[0], accepted, basis, fingerprint, reason=str(error)) if len(candidates) == 1 else None ) diff --git a/src/codex32/cli.py b/src/codex32/cli.py index 1ffd1f13..f5296f35 100644 --- a/src/codex32/cli.py +++ b/src/codex32/cli.py @@ -18,6 +18,7 @@ parse_fingerprint, ) from codex32._cli_input import ( + _FRIENDLY_SET_ERRORS, CorrectionDeclined, InteractiveConfirmationRequired, _card_text, @@ -25,6 +26,7 @@ _confirm_correction, _entered_groups, _fingerprint_matcher, + _parse, _render_groups, _require_correction_confirmation, _scheduled_candidates, @@ -251,6 +253,7 @@ def _creation_source( except CodexError as error: if not sys.stdin.isatty(): raise _UsageError(str(error)) from error + reason = _FRIENDLY_SET_ERRORS.get(type(error), str(error)) candidates = _suggestions( value, "", @@ -264,7 +267,7 @@ def _creation_source( and isinstance(candidate := candidates[0].artifact, Secret) and candidate.profile is profile ): - confirmation = _confirm_correction(candidates[0], [], False, fingerprint) + confirmation = _confirm_correction(candidates[0], [], False, fingerprint, reason=reason) if confirmation is True: return candidate if confirmation is False: @@ -272,7 +275,7 @@ def _creation_source( prefill = value continue _print( - f"Rejected: {error} Re-enter the existing secret or hexadecimal seed.", + f"Rejected: {reason} Re-enter the existing secret or hexadecimal seed.", err=True, ) @@ -603,9 +606,9 @@ def _correct( if context.master_seed and hrp != Profile.MS.value: raise _UsageError("This command accepts only Bitcoin master-seed input beginning with ms1.") try: - parse_codex32(normalized) - except CodexError: - pass + _parse(normalized, None) + except _UsageError as error: + reason = str(error) else: if isinstance(byte_length, int) and len(normalized) != _ms_text_length(byte_length): raise _UsageError("--bytes does not match the valid master-seed backup length.") @@ -639,6 +642,7 @@ def _correct( raise _CommandError("Several corrections are possible. Check the original backup.") fixed = candidates[0] _require_correction_confirmation(fixed.low_checksum_discrimination) + _print(f"Invalid: {reason}", err=True) if context.master_seed: core = core or _connected_core("correct") warning = ( diff --git a/tests/test_cli.py b/tests/test_cli.py index 07124c18..a0d5285a 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -371,8 +371,10 @@ def answer(prompt: str) -> str: assert sys.stdout is not sys.stderr assert prompts == ["Enter a codex32 string:\n> "] * 2 assert rejected not in captured.out - assert "Rejected: Use either all uppercase or all lowercase letters." in captured.err - assert "Rejected: Use either all uppercase or all lowercase letters.\n\n" in captured.err + assert ( + "Rejected: A codex32 string must be all uppercase or all lowercase. Case alone doesn't change the " + "encoded data; check any other difference against your recovery card.\n\n" + ) in captured.err assert captured.err.endswith("\n\n") @@ -1749,6 +1751,48 @@ def test_cli_rejects_sixteen_consecutive_erasures_as_outside_regular_bound() -> assert "No valid correction found" in result.stderr +_UPPER_SECRET = VECTOR_1["secret_s"].upper() + + +@pytest.mark.parametrize( + ("damaged", "reason"), + ( + (_UPPER_SECRET[:-1] + "w", "A codex32 string must be all uppercase or all lowercase."), + ( + _UPPER_SECRET[:3] + "A" + _UPPER_SECRET[4:], + "The threshold must be 0 or a number from 2 through 9;", + ), + ( + _UPPER_SECRET[:8] + "A" + _UPPER_SECRET[9:], + "An unshared secret (threshold 0) must use S as its index.", + ), + (_UPPER_SECRET[:12] + "B" + _UPPER_SECRET[13:], "The character 'b' is not allowed"), + (_UPPER_SECRET[:20] + "Q" + _UPPER_SECRET[20:], "This input has 49 characters."), + ), +) +def test_correct_says_why_the_input_was_invalid(damaged: str, reason: str) -> None: + result = _invoke(["correct"], damaged) + + assert result.exit_code == 1 + assert result.stderr.startswith(f"Invalid: {reason}") + assert result.stderr.endswith(f"{_UPPER_SECRET}\n") + + +def test_correct_case_reason_does_not_claim_a_case_only_repair() -> None: + # One lowercase letter plus one wrong symbol: the repair changes data, not just case. + wrong = "Q" if _UPPER_SECRET[20] != "Q" else "P" + damaged = _UPPER_SECRET[:20] + wrong + _UPPER_SECRET[21:-1] + _UPPER_SECRET[-1].lower() + + result = _invoke(["correct"], damaged) + + assert result.exit_code == 1 + assert result.stderr.startswith( + "Invalid: A codex32 string must be all uppercase or all lowercase. Case alone doesn't change the " + "encoded data; check any other difference against your recovery card.\n" + ) + assert result.stderr.endswith(f"{_UPPER_SECRET}\n") + + def test_correct_rejects_malformed_immutable_hrp_as_usage() -> None: damaged = "é" + VECTOR_1["secret_s"][1:] @@ -2518,8 +2562,11 @@ def test_operational_candidate_whole_card_confirmation(monkeypatch, capsys, resp monkeypatch.setattr(module, "_editable_input", lambda prompt: prompts.append(prompt) or response) monkeypatch.setattr(module.sys.stderr, "isatty", lambda: True) candidate = CorrectionCandidate(artifact, (), 1, 0, 0, None, capture_space_bits=65) - assert module._confirm_correction(candidate, [], False, _FakeBitcoinCore().fingerprint) is accepted + reason = "The checksum does not match." + fingerprint = _FakeBitcoinCore().fingerprint + assert module._confirm_correction(candidate, [], False, fingerprint, reason=reason) is accepted output = capsys.readouterr().err + assert output.startswith(f"Invalid: {reason}\nPossible correction:\n\n") assert "Master fingerprint: 3F3521A6\n\n" in output assert module._card_text(artifact.text) in output assert "> " not in output @@ -2537,12 +2584,16 @@ def test_final_share_preview_is_isolated_and_basis_has_no_preview(monkeypatch, c accepted = [first] monkeypatch.setattr(module.sys, "stdin", _TTYInput()) monkeypatch.setattr(module, "_editable_input", lambda prompt: "n") - assert not module._confirm_correction(candidate, accepted, False, _FakeBitcoinCore().fingerprint) + assert not module._confirm_correction( + candidate, accepted, False, _FakeBitcoinCore().fingerprint, reason="" + ) assert accepted == [first] assert "Master fingerprint: FAB6868A\n\n" in capsys.readouterr().err - assert not module._confirm_correction(candidate, accepted, True, _FakeBitcoinCore().fingerprint) + assert not module._confirm_correction( + candidate, accepted, True, _FakeBitcoinCore().fingerprint, reason="" + ) assert "Master fingerprint" not in capsys.readouterr().err - assert not module._confirm_correction(candidate, [], False, _FakeBitcoinCore().fingerprint) + assert not module._confirm_correction(candidate, [], False, _FakeBitcoinCore().fingerprint, reason="") assert "Master fingerprint" not in capsys.readouterr().err @@ -2557,7 +2608,7 @@ def fail(seed): candidate = CorrectionCandidate( parse_codex32(VECTOR_1["secret_s"]), (), 1, 0, 0, None, capture_space_bits=65 ) - assert not module._confirm_correction(candidate, [], False, fail) + assert not module._confirm_correction(candidate, [], False, fail, reason="") assert "Could not recover a valid Bitcoin master seed using this correction." in capsys.readouterr().err @@ -2750,6 +2801,20 @@ def answer(prompt, prefill=""): assert "Rejected:" not in output +def test_creation_source_explains_mixed_case_like_other_commands(monkeypatch, capsys): + cli = importlib.import_module("codex32.cli") + module = importlib.import_module("codex32._cli_input") + upper = VECTOR_1["secret_s"].upper() + answers = iter((upper[:-1] + upper[-1].lower(), "n", "00" * 16)) + monkeypatch.setattr(sys, "stdin", _TTYInput()) + monkeypatch.setattr(module, "_editable_input", lambda prompt, prefill="": next(answers)) + + assert cli._creation_source(Profile.MS, _FakeBitcoinCore().fingerprint) == bytes(16) + output = capsys.readouterr().err + assert "Invalid: A codex32 string must be all uppercase or all lowercase. Case alone" in output + assert "check any other difference against your recovery card.\nPossible correction:" in output + + @pytest.mark.parametrize("kind", ["none", "ambiguous", "share", "wrong_profile", "fingerprint"]) def test_creation_source_unusable_candidates_retry(monkeypatch, capsys, kind): from types import SimpleNamespace diff --git a/tests/test_correction_disclosure.py b/tests/test_correction_disclosure.py index 08592eed..f0bb6428 100644 --- a/tests/test_correction_disclosure.py +++ b/tests/test_correction_disclosure.py @@ -203,13 +203,27 @@ def test_yes_still_requires_independent_whole_card_acceptance(monkeypatch): answers = iter(("YES", "n")) monkeypatch.setattr(_cli_input, "_editable_input", lambda prompt: prompts.append(prompt) or next(answers)) with patch.object(sys, "stdin", _TTYInput()), contextlib.redirect_stderr(_TTYOutput()): - assert _cli_input._confirm_correction(candidate, [], False) is False + assert _cli_input._confirm_correction(candidate, [], False, reason="") is False assert prompts == [ "If you understand this, type YES to attempt to correct the data: ", "Does this entire string exactly match your recovery card? [y/N]: ", ] +def test_declined_yes_gate_prints_no_invalid_reason(monkeypatch): + candidate = _candidate() + monkeypatch.setattr(_cli_input, "_editable_input", lambda prompt: "no") + stderr = _TTYOutput() + with ( + patch.object(sys, "stdin", _TTYInput()), + contextlib.redirect_stderr(stderr), + pytest.raises(_cli_input.CorrectionDeclined), + ): + _cli_input._confirm_correction(candidate, [], False, reason="The checksum does not match.") + assert "Invalid:" not in stderr.getvalue() + assert "Possible correction" not in stderr.getvalue() + + def test_redirected_correct_uses_terminal_gate_without_second_confirmation(monkeypatch): source = VECTOR_1["secret_s"] candidate = _candidate(source)