From 853cf5e8de5c65eeeec40f40c0bbe8ad8c9d99a8 Mon Sep 17 00:00:00 2001 From: log Date: Fri, 9 Oct 2026 21:21:39 +0000 Subject: size 103282 --- reveal/v5-000015/check.py | 319 ++++++++++++++++++++++++++++++++++ reveal/v5-000015/manifest.txt | 22 +++ reveal/v5-000015/manifest.txt.ots | Bin 0 -> 759 bytes reveal/v5-000015/r33533812.ct | Bin 0 -> 19372 bytes reveal/v5-000015/r33533812.nostr.json | 1 + reveal/v5-000015/r33533812.tlock | 11 ++ reveal/v5-000015/r33562612.ct | Bin 0 -> 1517 bytes reveal/v5-000015/r33562612.nostr.json | 1 + reveal/v5-000015/r33562612.tlock | 11 ++ reveal/v5-000015/r33649012.ct | Bin 0 -> 6601 bytes reveal/v5-000015/r33649012.nostr.json | 1 + reveal/v5-000015/r33649012.tlock | 11 ++ reveal/v5-000015/r33677812.ct | Bin 0 -> 1006 bytes reveal/v5-000015/r33677812.nostr.json | 1 + reveal/v5-000015/r33677812.tlock | 11 ++ reveal/v5-000015/r33793012.ct | Bin 0 -> 2403 bytes reveal/v5-000015/r33793012.nostr.json | 1 + reveal/v5-000015/r33793012.tlock | 11 ++ reveal/v5-000015/r34685812.ct | Bin 0 -> 19100 bytes reveal/v5-000015/r34685812.nostr.json | 1 + reveal/v5-000015/r34685812.tlock | 11 ++ reveal/v5-000015/r34714612.ct | Bin 0 -> 1371 bytes reveal/v5-000015/r34714612.nostr.json | 1 + reveal/v5-000015/r34714612.tlock | 11 ++ reveal/v5-000015/r34801012.ct | Bin 0 -> 6472 bytes reveal/v5-000015/r34801012.nostr.json | 1 + reveal/v5-000015/r34801012.tlock | 11 ++ reveal/v5-000015/r34829812.ct | Bin 0 -> 1016 bytes reveal/v5-000015/r34829812.nostr.json | 1 + reveal/v5-000015/r34829812.tlock | 11 ++ reveal/v5-000015/r34945012.ct | Bin 0 -> 2422 bytes reveal/v5-000015/r34945012.nostr.json | 1 + reveal/v5-000015/r34945012.tlock | 11 ++ reveal/v5-000015/r35578612.ct | Bin 0 -> 846 bytes reveal/v5-000015/r35578612.nostr.json | 1 + reveal/v5-000015/r35578612.tlock | 11 ++ reveal/v5-000015/r35693812.ct | Bin 0 -> 4839 bytes reveal/v5-000015/r35693812.nostr.json | 1 + reveal/v5-000015/r35693812.tlock | 11 ++ reveal/v5-000015/r36730612.ct | Bin 0 -> 854 bytes reveal/v5-000015/r36730612.nostr.json | 1 + reveal/v5-000015/r36730612.tlock | 11 ++ reveal/v5-000015/r36788212.ct | Bin 0 -> 1029 bytes reveal/v5-000015/r36788212.nostr.json | 1 + reveal/v5-000015/r36788212.tlock | 11 ++ reveal/v5-000015/r36845812.ct | Bin 0 -> 5214 bytes reveal/v5-000015/r36845812.nostr.json | 1 + reveal/v5-000015/r36845812.tlock | 11 ++ reveal/v5-000015/r37940212.ct | Bin 0 -> 1019 bytes reveal/v5-000015/r37940212.nostr.json | 1 + reveal/v5-000015/r37940212.tlock | 11 ++ reveal/v5-000015/seal.json | 43 +++++ 52 files changed, 576 insertions(+) create mode 100644 reveal/v5-000015/check.py create mode 100644 reveal/v5-000015/manifest.txt create mode 100644 reveal/v5-000015/manifest.txt.ots create mode 100644 reveal/v5-000015/r33533812.ct create mode 100644 reveal/v5-000015/r33533812.nostr.json create mode 100644 reveal/v5-000015/r33533812.tlock create mode 100644 reveal/v5-000015/r33562612.ct create mode 100644 reveal/v5-000015/r33562612.nostr.json create mode 100644 reveal/v5-000015/r33562612.tlock create mode 100644 reveal/v5-000015/r33649012.ct create mode 100644 reveal/v5-000015/r33649012.nostr.json create mode 100644 reveal/v5-000015/r33649012.tlock create mode 100644 reveal/v5-000015/r33677812.ct create mode 100644 reveal/v5-000015/r33677812.nostr.json create mode 100644 reveal/v5-000015/r33677812.tlock create mode 100644 reveal/v5-000015/r33793012.ct create mode 100644 reveal/v5-000015/r33793012.nostr.json create mode 100644 reveal/v5-000015/r33793012.tlock create mode 100644 reveal/v5-000015/r34685812.ct create mode 100644 reveal/v5-000015/r34685812.nostr.json create mode 100644 reveal/v5-000015/r34685812.tlock create mode 100644 reveal/v5-000015/r34714612.ct create mode 100644 reveal/v5-000015/r34714612.nostr.json create mode 100644 reveal/v5-000015/r34714612.tlock create mode 100644 reveal/v5-000015/r34801012.ct create mode 100644 reveal/v5-000015/r34801012.nostr.json create mode 100644 reveal/v5-000015/r34801012.tlock create mode 100644 reveal/v5-000015/r34829812.ct create mode 100644 reveal/v5-000015/r34829812.nostr.json create mode 100644 reveal/v5-000015/r34829812.tlock create mode 100644 reveal/v5-000015/r34945012.ct create mode 100644 reveal/v5-000015/r34945012.nostr.json create mode 100644 reveal/v5-000015/r34945012.tlock create mode 100644 reveal/v5-000015/r35578612.ct create mode 100644 reveal/v5-000015/r35578612.nostr.json create mode 100644 reveal/v5-000015/r35578612.tlock create mode 100644 reveal/v5-000015/r35693812.ct create mode 100644 reveal/v5-000015/r35693812.nostr.json create mode 100644 reveal/v5-000015/r35693812.tlock create mode 100644 reveal/v5-000015/r36730612.ct create mode 100644 reveal/v5-000015/r36730612.nostr.json create mode 100644 reveal/v5-000015/r36730612.tlock create mode 100644 reveal/v5-000015/r36788212.ct create mode 100644 reveal/v5-000015/r36788212.nostr.json create mode 100644 reveal/v5-000015/r36788212.tlock create mode 100644 reveal/v5-000015/r36845812.ct create mode 100644 reveal/v5-000015/r36845812.nostr.json create mode 100644 reveal/v5-000015/r36845812.tlock create mode 100644 reveal/v5-000015/r37940212.ct create mode 100644 reveal/v5-000015/r37940212.nostr.json create mode 100644 reveal/v5-000015/r37940212.tlock create mode 100644 reveal/v5-000015/seal.json diff --git a/reveal/v5-000015/check.py b/reveal/v5-000015/check.py new file mode 100644 index 0000000..7f86b8d --- /dev/null +++ b/reveal/v5-000015/check.py @@ -0,0 +1,319 @@ +#!/usr/bin/env python3 +""" +Check Echo's self-revealing ledger seals (`sha256-live-v5`) without trusting Echo. + + python3 check.py SEAL_DIR [SEAL_DIR ...] [--tle PATH] [--offline] + +Needs Python 3.11+, the `cryptography` package (ChaCha20-Poly1305) and drand's `tle` binary +(`go install github.com/drand/tlock/cmd/tle@v1.2.0`). It imports nothing of Echo's: a checker that needs the thing it +checks is not a checker, which is why it is copied, whole, into every seal directory. + +Each SEAL_DIR is one seal: `manifest.txt` (the exact text the seal's digest is the sha256 of), `seal.json`, and per +reveal group `r.tlock` (the group's key, time-locked to that drand round) and `r.ct` (the group, +encrypted under that key), and, once the group has been revealed, `r.held.json` (how many of its withheld +lines Echo publishes no salt for, and why) and any number of `r.salts..json`: each the salts of withheld +lines Echo decided to open and had not erased, each with its line. `manifest.txt.ots`, when present, is an +OpenTimestamps proof over the manifest: `ots verify manifest.txt.ots` checks it against Bitcoin. + +What it checks, from the files alone and the beacon: + 1. the manifest hashes to the seal's digest, and each seal names the one before it (when several are given); + 2. each group's ciphertext and locked key hash to what the manifest commits, and the key is locked to the + manifest's round of the manifest's chain; + 3. for every group whose round the beacon has signed: the round's signature as each relay serves it, the key + unlocked with it, the group decrypted, its bytes hashed to the committed digest, its lines and withheld lines + counted against the committed counts, its lines in id order, and every line's reveal day recomputed from its + own settling instant under the seal's named rule (`utc-day-after-close`: the first 00:00 UTC after + `settles_at`, else after the deadline); + 4. for every opened group with releases: each names this seal, round and group and its own number; each released + salt and line hash to the withheld line's committed hash; no line is settled twice; and a hold, where there is + one, names the group and counts no more lines than are withheld; + 5. once every group of every seal from the first is open and every withheld line released: the union of their v4 + lines, sorted by id, rehashes to the v4 digest the last seal follows, so no sealed forecast was left out of a + reveal. Where a withheld line has no released salt (held, erased, or not yet released) that digest cannot be + rebuilt, and this says so and why: what is checked then is only that every forecast the v4 seal covers is in a + group, counted. A withheld line is never called verified. + +A group whose round is not yet signed, or whose withheld lines have no release yet, is reported as pending or held, +not as a failure. Exit 0 when everything checkable passed, 1 when anything did not match. +""" +from __future__ import annotations + +import argparse +import base64 +import hashlib +import json +import re +import subprocess +import sys +import urllib.request +import zlib +from datetime import datetime, timedelta, timezone +from pathlib import Path + + +def sha(b: bytes) -> str: + return hashlib.sha256(b).hexdigest() + + +def parse_manifest(text: str) -> dict: + lines = text.split("\n") + if lines[0] != "sha256-live-v5": + raise ValueError(f"not a v5 manifest: {lines[0]!r}") + m = {"groups": []} + for ln in lines[1:]: + word, _, rest = ln.partition(" ") + if word == "prev": + m["prev"] = None if rest == "-" else rest + elif word == "follows": + seq, digest, n = rest.split(" ") + m["follows"] = {"seq": int(seq), "digest": digest, "n": int(n)} + elif word == "covers": + m["covers"] = rest.split(" ") + elif word == "variant": + m["variant"] = json.loads(rest) + elif word == "counts": + m["n"], m["n_withheld"], m["n_groups"] = map(int, rest.split(" ")) + elif word == "group": + r, at, n, w, digest, ct, key, late = rest.split(" ") + m["groups"].append({"round": int(r), "reveal_at": at, "n": int(n), "n_withheld": int(w), + "digest": digest, "ct": ct, "key": key, "late": late == "1"}) + else: + raise ValueError(f"unknown manifest line {ln!r}") + return m + + +def stanza(locked: str) -> tuple[int, str] | None: + body = "".join(ln for ln in locked.strip().splitlines() if not ln.startswith("-----")) + m = re.search(rb"-> tlock (\d+) ([0-9a-f]{64})", base64.b64decode(body)) + return (int(m.group(1)), m.group(2).decode()) if m else None + + +def round_at(beacon: dict, at: datetime) -> int: + t = at.timestamp() + whole = int(t) + (t != int(t)) + if whole <= beacon["genesis_time"]: + return 1 + return -(-(whole - beacon["genesis_time"]) // beacon["period"]) + 1 + + +def reveal_day(closes: datetime) -> datetime: + d = closes.astimezone(timezone.utc).date() + timedelta(days=1) + return datetime(d.year, d.month, d.day, tzinfo=timezone.utc) + + +def parse_line(ln: str) -> dict: + """One line: `id|issued_at|deadline|forecaster|p|settlement|anchoropen:` or `...withheld:`.""" + numeric, tab, text = ln.partition("\t") + if not tab: + raise ValueError("a line without its text layer") + fid, issued, deadline, forecaster, p, rest = numeric.split("|", 5) + dec = json.JSONDecoder() + settle, end = dec.raw_decode(rest) + if rest[end] != "|": + raise ValueError("settlement not followed by the anchor") + anchor, end2 = dec.raw_decode(rest, end + 1) + if end2 != len(rest): + raise ValueError("trailing bytes after the anchor") + out = {"id": int(fid), "issued_at": issued, "deadline": deadline, "forecaster": forecaster, "p": float(p), + "settlement": settle, "anchor": anchor} + if text.startswith("open:"): + out["v4"] = text[5:] + if not out["v4"].startswith(f"{fid}|"): + raise ValueError("the text layer is another forecast's line") + elif re.fullmatch(r"withheld:[0-9a-f]{64}", text): + out["withheld"] = text[9:] + else: + raise ValueError(f"unknown text layer {text[:20]!r}") + return out + + +def beacon_round(beacon: dict, rnd: int) -> dict: + """What each relay serves for the round: its signature, or why there is none.""" + out = {} + for relay in beacon["relays"]: + url = f"{relay.rstrip('/')}/{beacon['chain_hash']}/public/{rnd}" + try: + with urllib.request.urlopen(url, timeout=20) as r: # noqa: S310 — the seal's own relays + out[relay] = json.loads(r.read()).get("signature") + except Exception as exc: # noqa: BLE001 — report, go on + out[relay] = f"unavailable ({type(exc).__name__})" + return out + + +def unlock(tle: str, beacon: dict, locked: str) -> bytes | None: + """The key, or None while the round is unsigned. Each relay is tried in turn.""" + errors = [] + for relay in beacon["relays"]: + r = subprocess.run([tle, "-d", "-n", relay.rstrip("/") + "/", "-c", beacon["chain_hash"]], + input=locked.encode(), capture_output=True, timeout=120, check=False) + if r.returncode == 0: + return r.stdout + if b"too early" in r.stderr: + return None + errors.append(f"{relay}: {r.stderr.decode(errors='replace').strip()[-160:]}") + raise RuntimeError("; ".join(errors)) + + +def release(d: Path, seal_digest: str, g: dict, lines: list[dict], say) -> tuple[dict[int, str], int, str | None]: + """An opened group's releases and hold, checked against the group: (id -> the v4 line each released salt opens, + how many withheld lines were opened and found erased, and the hold's reason where Echo published one).""" + r = g["round"] + shut = {x["id"]: x["withheld"] for x in lines if "withheld" in x} + out, erased, seen, bad = {}, set(), set(), [] + files = sorted(d.glob(f"r{r}.salts.*.json"), key=lambda p: int(p.name.split(".")[-2])) + for k, path in enumerate(files): + rel = json.loads(path.read_text()) + say(rel.get("format") == "echo-reveal-salts/1" and rel.get("seal") == seal_digest + and rel.get("round") == r and rel.get("group") == g["digest"] and rel.get("n") == k + and path.name == f"r{r}.salts.{k}.json", + f"round {r}: release {k} names this seal, round and group, and follows the one before") + for x in rel.get("released", []): + i, line = x["id"], x["line"] + opens = (i in shut and i not in seen and line.startswith(f"{i}|") + and sha(bytes.fromhex(x["salt"]) + line.encode()) == shut[i]) + if opens: + out[i] = line + else: + bad.append(i) + seen.add(i) + for i in rel.get("erased", []): + if i not in shut or i in seen: + bad.append(i) + erased.add(i) + seen.add(i) + if files: + say(not bad, f"round {r}: {len(out)} released lines open their committed hashes, {len(erased)} opened lines " + f"found erased, none settled twice" + (f" ({len(bad)} do not, e.g. {bad[:3]})" if bad else "")) + why = None + hold = d / f"r{r}.held.json" + if hold.exists(): + h = json.loads(hold.read_text()) + say(h.get("format") == "echo-reveal-held/1" and h.get("seal") == seal_digest and h.get("round") == r + and h.get("group") == g["digest"] and 0 <= h.get("held", -1) <= len(shut), + f"round {r}: the hold names this seal, round and group, and counts at most its withheld lines") + why = str(h.get("why") or "no reason given") + left = len(shut) - len(out) - len(erased) + if left: + print(f" .... round {r}: {left} withheld lines have no released salt: counted, not rehashed" + + (f" (Echo publishes none: {why})" if why else " (no release or hold published yet)")) + return out, len(erased), why + + +def check(dirs: list[Path], tle: str = "tle", offline: bool = False) -> int: + from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 + + failed, pending, withheld, held, erased, union = 0, 0, 0, 0, 0, {} + reasons: set[str] = set() + first_prev = "unset" + + def say(ok: bool, what: str) -> None: + nonlocal failed + failed += not ok + print(f" {'PASS' if ok else 'FAIL'} {what}") + + prev_digest = None + seals = [] + for d in dirs: + text = (d / "manifest.txt").read_bytes() + row = json.loads((d / "seal.json").read_text()) + seals.append((d, text, row, parse_manifest(text.decode()))) + seals.sort(key=lambda s: s[2]["seq"]) + last = None + for i, (d, text, row, m) in enumerate(seals): + print(f"v5 seal {row['seq']}: {m['n']} forecasts in {m['n_groups']} reveal groups, {m['n_withheld']} withheld, " + f"follows v4 seal {m['follows']['seq']}") + say(sha(text) == row["digest"], f"sha256(manifest.txt) is the seal's digest {row['digest'][:16]}…") + say(len(m["groups"]) == m["n_groups"] and sum(g["n"] for g in m["groups"]) == m["n"] + and sum(g["n_withheld"] for g in m["groups"]) == m["n_withheld"], "the manifest's counts add up") + if i == 0: + first_prev = m["prev"] + else: + say(m["prev"] == prev_digest, "it names the seal before it") + prev_digest, last = row["digest"], m + b = m["variant"]["beacon"] + for g in m["groups"]: + r = g["round"] + ct, locked = (d / f"r{r}.ct").read_bytes(), (d / f"r{r}.tlock").read_text() + say(sha(ct) == g["ct"] and sha(locked.encode()) == g["key"], + f"round {r}: the ciphertext and the locked key are the committed ones") + say(stanza(locked) == (r, b["chain_hash"]), f"round {r}: the key is locked to that round of that chain") + say(round_at(b, datetime.fromisoformat(g["reveal_at"])) == r, f"round {r} is signed at {g['reveal_at']}") + if not offline: + sigs = beacon_round(b, r) + good = {s for s in sigs.values() if s and not s.startswith("unavailable")} + print(f" .... round {r} signature from {len(sigs)} relays: " + + ("not yet signed" if not good else f"{len(good)} distinct: {min(good)[:24]}…")) + if len(good) > 1: + say(False, f"round {r}: relays disagree on its signature") + key = unlock(tle, b, locked) + if key is None: + pending += 1 + print(f" .... round {r} ({g['reveal_at']}) not yet signed: {g['n']} forecasts stay locked") + continue + try: + plain = zlib.decompress(ChaCha20Poly1305(key).decrypt(b"\x00" * 12, ct, None)) + except Exception as exc: # noqa: BLE001 — a finding, not a crash + say(False, f"round {r}: the ciphertext does not open under its key ({type(exc).__name__})") + continue + say(sha(plain) == g["digest"], f"round {r}: the opened group hashes to its committed digest") + lines = [parse_line(ln) for ln in plain.decode().split("\n")] + ids = [x["id"] for x in lines] + say(len(lines) == g["n"] and sum("withheld" in x for x in lines) == g["n_withheld"], + f"round {r}: {len(lines)} lines, {g['n_withheld']} withheld, as committed") + say(ids == sorted(set(ids)), f"round {r}: lines in id order, none twice") + due = datetime.fromisoformat(g["reveal_at"]) + if m["variant"].get("reveal") == "utc-day-after-close": + wrong = [x["id"] for x in lines if reveal_day(datetime.fromisoformat( + (x["settlement"] or {}).get("settles_at") or x["deadline"])) != due] + say(not wrong, f"round {r}: every line belongs to this reveal day" + + (f" ({len(wrong)} do not, e.g. {wrong[:3]})" if wrong else "")) + else: + print(f" .... round {r}: reveal rule {m['variant'].get('reveal')!r} is not one this checker " + "recomputes; which lines belong to the day is unchecked") + opened, gone, why = release(d, row["digest"], g, lines, say) + for x in lines: + if x["id"] in union: + say(False, f"forecast {x['id']} is in two groups") + union[x["id"]] = x.get("v4") or opened.get(x["id"]) + shut = sum(1 for x in lines if "withheld" in x and x["id"] not in opened) - gone + erased += gone + if why is None: + withheld += shut + else: + held += shut + reasons.add(why) + if last is not None: + if first_prev is not None: + print(" .... completeness: the first seal given is not the chain's first; give every seal from it") + elif pending: + print(f" .... completeness: {pending} groups still locked; it is checkable once all have opened") + elif withheld or held or erased: + told = [f"{withheld} withheld lines not yet released"] if withheld else [] + told += ([f"{held} withheld lines held, for which Echo publishes no salt ({'; '.join(sorted(reasons))})"] + if held else []) + told += [f"{erased} erased stay hashes"] if erased else [] + print(f" .... completeness: {', '.join(told)}: those lines can be counted but not rehashed, so the v4 " + f"lines cannot all be rebuilt and the v4 digest is NOT checked; {len(union)} forecasts against " + f"the v4 seal's {last['follows']['n']}") + say(len(union) == last["follows"]["n"], "every forecast the v4 seal covers is in a group, counted") + else: + got = sha("\n".join(union[k] for k in sorted(union)).encode()) + say(got == last["follows"]["digest"] and len(union) == last["follows"]["n"], + f"the union of {len(union)} lines rehashes to v4 seal {last['follows']['seq']}'s digest") + print("\nNOT VERIFIED" if failed else f"\nVERIFIED{f' ({pending} groups not yet revealed)' if pending else ''}") + return 1 if failed else 0 + + +def main(argv: list[str]) -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("dirs", nargs="*", default=[str(Path(__file__).resolve().parent)], + help="seal directories, any order (default: the one this script sits in)") + ap.add_argument("--tle", default="tle", help="the tle binary that unlocks a key once its round is signed") + ap.add_argument("--offline", action="store_true", + help="do not fetch each round's signature from the relays for display; tle still asks them") + args = ap.parse_args(argv) + return check([Path(d) for d in args.dirs], tle=args.tle, offline=args.offline) + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/reveal/v5-000015/manifest.txt b/reveal/v5-000015/manifest.txt new file mode 100644 index 0000000..0bdf8a8 --- /dev/null +++ b/reveal/v5-000015/manifest.txt @@ -0,0 +1,22 @@ +sha256-live-v5 +prev 11293db524a9ce788df948c5347c7f627a7649e0718bce967ae5d32261fe19ba +follows 45 23679ed5882b641cb8781bedf229dd9bc81fc72cb2b4c63e713ea25c9e36c0c4 52597 +covers 2026-10-09T16:31:25.305817Z 2026-10-09T21:20:37.989880Z +variant {"beacon":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_time":1692803367,"period":3,"relays":["https://api.drand.sh","https://api2.drand.sh","https://api3.drand.sh","https://drand.cloudflare.com"],"scheme":"bls-unchained-g1-rfc9380"},"cipher":"chacha20poly1305-zlib6-nonce0","gate":{"default":"withheld: a kept salt can be released later; an opened text can never be withdrawn","opened":"none","why":"no decision by Echo yet"},"line":"numericopen: | numericwithheld:sha256(salt||v4 line)","reveal":"utc-day-after-close","salts":"key ring: one content a seal, one part a line","tool":{"name":"tle","sha256":"69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541","version":"tlock v1.2.0 -- github.com/drand/tlock"}} +counts 1227 1227 16 +group 33533812 2026-10-31T00:00:00.000000Z 339 339 092b9afff3d1ba86e82bab391354093ae618d5db7369d26d8d914545a01d7fe2 daca555cceae6f743042b3413eb06d435da3d936ce347aa0765970b394140bde 251678e2f09086843b0c29500affc26667e3e06437a4daa16c7f9469c47e6249 0 +group 33562612 2026-11-01T00:00:00.000000Z 21 21 eabd826dcee34249bbd53ef9f29e02a31134b0f367326be080c77fc5bef76e8a ca31c2ab4460fa756e615ac9814c93d77745724b66b968f7682d2444229e3e57 63c92b992d787aca96c554a08e48ddb453c6069248a9d78171b647dd4d9d3f06 0 +group 33649012 2026-11-04T00:00:00.000000Z 108 108 3dcfc84a3ab6a008816f7a91cb318727b583aad28957a466cf9a1370b1a2fb07 eb841103e021af867aad47e2272baafdfe13941dc8aa4de2724a545569afc824 2c391f67d8e8e8064a5a7177ed9710c6b573b9532476a10f566d2cb129b0e86c 0 +group 33677812 2026-11-05T00:00:00.000000Z 12 12 3f7534a5d0dd1221864706a1821f60745a9090cbedb7bde46ac96b75e42b59d9 6a8ec1381609ed979376e695492d32181b8a389ba911e15cdedac927bfc13501 3a81937b64f1863a3ce8ac031a464f774681bfad2e8a88e33bad0606dbb18191 0 +group 33793012 2026-11-09T00:00:00.000000Z 36 36 8e4c9cb608dd70d188b92fb2ae392804de6fbf50a8c7b36c20fba3900c997b8e e12a6c9f58c32c2eed6b65260d7dd8093a961ff59c90443990459f49257a9e7b 326b711c75793187cf03382eedb30958ee175c32121e72c2cd328368632ca188 0 +group 34685812 2026-12-10T00:00:00.000000Z 336 336 ea1eeed54b6a64c12c8ad140cb49859ef97eba4211d5408a188b2ac0a357bedd 6c744c35a82c3055a61a518b2844a2a2d8233e305cff6f50a86c9f9c10d51d82 0174108376f8f82ad8618be4c324ac0e12725ae1f371f801b706f2dbc0189cb0 0 +group 34714612 2026-12-11T00:00:00.000000Z 18 18 1f04ca5359925941f92251efe15de59fe87fc8e56cab8b1155ad2072422a9c93 db69f5689e8f5014eb99f557210108c7e2ac347172f0efe59ceda13c0f984bf9 0f412965f68f3b1a47434dc505d6f6e874d6cffd16f27f3a108d619e9bc6efcf 0 +group 34801012 2026-12-14T00:00:00.000000Z 105 105 e40f7ceb57652cf64b2547e3b328a4b35cd6aab94467cb0573545bc0968b5b55 b79a48d2552d5028daac85242ebac48449468e42167bbbd166e41212b7dfc033 b721225062333aec901d7382247eb38dcbf61870fab3689ba15f9a51c505d23d 0 +group 34829812 2026-12-15T00:00:00.000000Z 12 12 ac9dfa6db527551f00079b1c80d21271bd186e58350fb09b147ad5c24ec3265a 08d45335183d1ff228be045a1f1f70490869a8e9ae6f4bd73e1bcda6f7a76e42 5ae18479a66a5f09419a1069eb67f88b3f5293f1d6ae97b0ea4536e9dae8398b 0 +group 34945012 2026-12-19T00:00:00.000000Z 36 36 64b263716ccff5b2dc029602c3da67c956898604f155bf3ea83449384d64bdef c81586ca65094a1d14e7f0e112d6e54297051e630d6270313ff693040a3d5c42 d86a46eba860d06de2501a267367bfc23e03e2ceddfee04f2255539d3ceca817 0 +group 35578612 2027-01-10T00:00:00.000000Z 9 9 94b6250528065f08b85d7bbc158ebbf54f45aeb55cf9cdfee6908be50eb4638c b59293fbddc0f440032b280497d889d731127e8ff0d9d91180d48560c3dcabcc 7b0f1439aa5424800ce0e1380f3da5163d8f58174191320b6765ba08530b53a9 0 +group 35693812 2027-01-14T00:00:00.000000Z 78 78 4a021ae959af427b51d6e700fa8cc6f0fbc7f419b498fe6deff8da011b07dc18 40dcfd86892743e3d9eb5517b32342795c7669e9da42fe7a1c73309a28123e3a a65e9bbac48c889dffa8a3009ba3f54f73bbf6b9ee81f4f66c05c011a3df0e1f 0 +group 36730612 2027-02-19T00:00:00.000000Z 9 9 4f3399b9d34d0bed43af4eb49e57b165aa622c4fec5ba1d18ef7849995f457c2 0559ae1b751959f403772e7b11e221fb9f285616bcae5ce780a4d23ca74c6104 8566644621eb2dff672164db8f43b4e17bf4de3c77c8cb46fbda899a027eb426 0 +group 36788212 2027-02-21T00:00:00.000000Z 12 12 5d325e737f9c7eaf89a1e91961f6b05182489d8c8f8adb352287e44db80d0ceb 09e2645bdaea0695b0d46fcce19cdb530dee5153476add7377edc542ac44c826 e60d594f8cc1e956b17690e73e2f6c5b70c88ac1f7fe5cd8738ad29a43bcb366 0 +group 36845812 2027-02-23T00:00:00.000000Z 84 84 bb98419ca3bdaf94a26feac3d847176f2e8624f0c4c7722871ba1abb51893a0f 53ec7b623272057a70d54cc807613369b8952eb38a21e0c1f1198a075b738e39 6e94cf62615764351441df78bbcaa1275faaef8e515c7345726948923418f5ac 0 +group 37940212 2027-04-02T00:00:00.000000Z 12 12 170514d02dccd65fe1cc5ef497f4a1633f3bc7321e6d10f1174cbecefce3e1a9 f486c8f779359b30b552d1d57abf9929f4db38793105e4040bdb280885f520d8 295c470be828d8f818108cb8947ef262c562f177b2ab69312f5a6fd9bcd9d425 0 \ No newline at end of file diff --git a/reveal/v5-000015/manifest.txt.ots b/reveal/v5-000015/manifest.txt.ots new file mode 100644 index 0000000..b40c225 Binary files /dev/null and b/reveal/v5-000015/manifest.txt.ots differ diff --git a/reveal/v5-000015/r33533812.ct b/reveal/v5-000015/r33533812.ct new file mode 100644 index 0000000..5828552 Binary files /dev/null and b/reveal/v5-000015/r33533812.ct differ diff --git a/reveal/v5-000015/r33533812.nostr.json b/reveal/v5-000015/r33533812.nostr.json new file mode 100644 index 0000000..508cb3a --- /dev/null +++ b/reveal/v5-000015/r33533812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTMzODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaTA3WXZ5aEhwWUZpQ3lRMXZOaE11TiswV1laOFluMGZjM0FHWVN2\nOTJpOWRLU3RiN3ZKK2NhL1F4ZStWUlpGKwpFLzhsMGdaalZQbXFGVWsxLy91QzBo\nbkh5K05kb3BOV0VwUXdnTzNsOVdiaVFYMUpoRkpXcC9jb0VMM3FIaVRqCm52Qi9X\nMk9zOFVsMjluNjRkWEp0QzViaFIzcFYwOTRPUnA2WGk1M01tVGcKLS0tIGQ3dFVu\nOFhoM3NhdlpzeHpHS3B1ODE3Wi8xSHVUa1hHcEQyT3VUVWVCMU0K+0l2gj9T8y8B\nDgc5KqdRD1hVipcbENMLcCZGJkLBy9iHUOLCnC/Cs0Uhe35rGs+48ceCw9D4LJNG\nXsYG97lnHg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33533812"],["reveal_at","2026-10-31T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","092b9afff3d1ba86e82bab391354093ae618d5db7369d26d8d914545a01d7fe2"],["ct","daca555cceae6f743042b3413eb06d435da3d936ce347aa0765970b394140bde"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r33533812.tlock b/reveal/v5-000015/r33533812.tlock new file mode 100644 index 0000000..3256942 --- /dev/null +++ b/reveal/v5-000015/r33533812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTMzODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKaTA3WXZ5aEhwWUZpQ3lRMXZOaE11TiswV1laOFluMGZjM0FHWVN2 +OTJpOWRLU3RiN3ZKK2NhL1F4ZStWUlpGKwpFLzhsMGdaalZQbXFGVWsxLy91QzBo +bkh5K05kb3BOV0VwUXdnTzNsOVdiaVFYMUpoRkpXcC9jb0VMM3FIaVRqCm52Qi9X +Mk9zOFVsMjluNjRkWEp0QzViaFIzcFYwOTRPUnA2WGk1M01tVGcKLS0tIGQ3dFVu +OFhoM3NhdlpzeHpHS3B1ODE3Wi8xSHVUa1hHcEQyT3VUVWVCMU0K+0l2gj9T8y8B +Dgc5KqdRD1hVipcbENMLcCZGJkLBy9iHUOLCnC/Cs0Uhe35rGs+48ceCw9D4LJNG +XsYG97lnHg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r33562612.ct b/reveal/v5-000015/r33562612.ct new file mode 100644 index 0000000..c4c3486 Binary files /dev/null and b/reveal/v5-000015/r33562612.ct differ diff --git a/reveal/v5-000015/r33562612.nostr.json b/reveal/v5-000015/r33562612.nostr.json new file mode 100644 index 0000000..103dc6d --- /dev/null +++ b/reveal/v5-000015/r33562612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbFZUL3hkTUl5aktsR2xFVFBid3d2YXdKeFJaUUp0dWJIQlBweWNy\nN0ZMa0Q5RVJrM3IwUWwrQ0xYNWxxK2RVcApHY1ZZK1ZBcHpSTERpZjhQNzhCRTU5\nZUp3OEZvK3RqTy9NdWtzQ09BbnloSEgzYndRZlN1OXRpckhoMzB6dkYwCk5nWUdo\ndy8xZmM2SWQyQXI5VDA2QUp2MVozVTJXVXhUYVFlZUtUZ2lwdjgKLS0tIHJXRDBJ\ncWNtZGFzb0FOMjRrcmdtaGs4NDhleVNwelBpaGdFMytTM2E3UVEKIVcAUE+9wzXM\nv25zqLvHJzjEJin6FVvR4twYa+/HzGK34V9kFNXgmykNbt+tozDFvLzm1ElzRLg8\nCNdru4rHTQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33562612"],["reveal_at","2026-11-01T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","eabd826dcee34249bbd53ef9f29e02a31134b0f367326be080c77fc5bef76e8a"],["ct","ca31c2ab4460fa756e615ac9814c93d77745724b66b968f7682d2444229e3e57"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r33562612.tlock b/reveal/v5-000015/r33562612.tlock new file mode 100644 index 0000000..6dd8275 --- /dev/null +++ b/reveal/v5-000015/r33562612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKbFZUL3hkTUl5aktsR2xFVFBid3d2YXdKeFJaUUp0dWJIQlBweWNy +N0ZMa0Q5RVJrM3IwUWwrQ0xYNWxxK2RVcApHY1ZZK1ZBcHpSTERpZjhQNzhCRTU5 +ZUp3OEZvK3RqTy9NdWtzQ09BbnloSEgzYndRZlN1OXRpckhoMzB6dkYwCk5nWUdo +dy8xZmM2SWQyQXI5VDA2QUp2MVozVTJXVXhUYVFlZUtUZ2lwdjgKLS0tIHJXRDBJ +cWNtZGFzb0FOMjRrcmdtaGs4NDhleVNwelBpaGdFMytTM2E3UVEKIVcAUE+9wzXM +v25zqLvHJzjEJin6FVvR4twYa+/HzGK34V9kFNXgmykNbt+tozDFvLzm1ElzRLg8 +CNdru4rHTQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r33649012.ct b/reveal/v5-000015/r33649012.ct new file mode 100644 index 0000000..e76975c Binary files /dev/null and b/reveal/v5-000015/r33649012.ct differ diff --git a/reveal/v5-000015/r33649012.nostr.json b/reveal/v5-000015/r33649012.nostr.json new file mode 100644 index 0000000..56a3b34 --- /dev/null +++ b/reveal/v5-000015/r33649012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjQ5MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcWNOUEhtZ1hiR0RmeGx5SWtMMEg0Q3N6dUdVTTJuMUJWUjNmdFlD\nblYxcFJjbzRBSERXYlI3UUo5cm1ITnlNbApGZzAzbGtJOEhialJUZVJCQ1FZYVB2\nYXpNMmpnL0F1UTVESlA1RU1KS2lWRnFSNFI5TVFhdDA0akpqM1dWVjVHClVNSlQx\nbGNkdXo4TzVsR2czVUh2dHNoZjg5Nmp1YkRad1BkR0UzZkxURTQKLS0tIDJzTG13\nTXpTSWlmUGpxeVVlRm56Y0NjQ1JCQW5oMFlueVlVK1EySmhkaDgKzwugtgC7aPJk\nID84+BNR9PWq9hWste9CnOH7MFvTYrA4PMgVAPx20n5W5jMXjMpruiHlzpvxCMq5\n9ldnbZSW0w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33649012"],["reveal_at","2026-11-04T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3dcfc84a3ab6a008816f7a91cb318727b583aad28957a466cf9a1370b1a2fb07"],["ct","eb841103e021af867aad47e2272baafdfe13941dc8aa4de2724a545569afc824"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r33649012.tlock b/reveal/v5-000015/r33649012.tlock new file mode 100644 index 0000000..4bcb76e --- /dev/null +++ b/reveal/v5-000015/r33649012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjQ5MDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKcWNOUEhtZ1hiR0RmeGx5SWtMMEg0Q3N6dUdVTTJuMUJWUjNmdFlD +blYxcFJjbzRBSERXYlI3UUo5cm1ITnlNbApGZzAzbGtJOEhialJUZVJCQ1FZYVB2 +YXpNMmpnL0F1UTVESlA1RU1KS2lWRnFSNFI5TVFhdDA0akpqM1dWVjVHClVNSlQx +bGNkdXo4TzVsR2czVUh2dHNoZjg5Nmp1YkRad1BkR0UzZkxURTQKLS0tIDJzTG13 +TXpTSWlmUGpxeVVlRm56Y0NjQ1JCQW5oMFlueVlVK1EySmhkaDgKzwugtgC7aPJk +ID84+BNR9PWq9hWste9CnOH7MFvTYrA4PMgVAPx20n5W5jMXjMpruiHlzpvxCMq5 +9ldnbZSW0w== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r33677812.ct b/reveal/v5-000015/r33677812.ct new file mode 100644 index 0000000..00ee3eb Binary files /dev/null and b/reveal/v5-000015/r33677812.ct differ diff --git a/reveal/v5-000015/r33677812.nostr.json b/reveal/v5-000015/r33677812.nostr.json new file mode 100644 index 0000000..5a81b80 --- /dev/null +++ b/reveal/v5-000015/r33677812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjc3ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbUFDU2kyOHlYSWJGQ2FBUU1uN0tUQkZhbVJjMVVTVW0wanlQMjZt\nNjVVenlEd091dWFlM3lCZ3NqaUxad2o4WApFaSt2RHhQZTNScVNEeUdySWRWRFpR\nUlZlQS9DOWlyWS9hWGxPOFJta0RHWVFGQ2llcC9KZGVxTHd4bUl5SFRWCktlMS9Q\nYnVpVCtENVIzUm81Z1FtekFlcHpvUlo3RmZmN3gzZE5FdzZnN2cKLS0tIGxyNXBx\nRHloSy9leGxWaUtvZEUzUnFxcDU1YU5TbS9HZS8xMWNPbGxRWDgK8ggX+zhlwq+3\nz2QlYlzYbEKitOZmBHSy2e3vwF/xIKXCA6O+Jdxbe2yQycrQu544PlfABKCca+B2\nmljvfCvHBQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33677812"],["reveal_at","2026-11-05T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","3f7534a5d0dd1221864706a1821f60745a9090cbedb7bde46ac96b75e42b59d9"],["ct","6a8ec1381609ed979376e695492d32181b8a389ba911e15cdedac927bfc13501"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r33677812.tlock b/reveal/v5-000015/r33677812.tlock new file mode 100644 index 0000000..724e11a --- /dev/null +++ b/reveal/v5-000015/r33677812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjc3ODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKbUFDU2kyOHlYSWJGQ2FBUU1uN0tUQkZhbVJjMVVTVW0wanlQMjZt +NjVVenlEd091dWFlM3lCZ3NqaUxad2o4WApFaSt2RHhQZTNScVNEeUdySWRWRFpR +UlZlQS9DOWlyWS9hWGxPOFJta0RHWVFGQ2llcC9KZGVxTHd4bUl5SFRWCktlMS9Q +YnVpVCtENVIzUm81Z1FtekFlcHpvUlo3RmZmN3gzZE5FdzZnN2cKLS0tIGxyNXBx +RHloSy9leGxWaUtvZEUzUnFxcDU1YU5TbS9HZS8xMWNPbGxRWDgK8ggX+zhlwq+3 +z2QlYlzYbEKitOZmBHSy2e3vwF/xIKXCA6O+Jdxbe2yQycrQu544PlfABKCca+B2 +mljvfCvHBQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r33793012.ct b/reveal/v5-000015/r33793012.ct new file mode 100644 index 0000000..0fa8e7b Binary files /dev/null and b/reveal/v5-000015/r33793012.ct differ diff --git a/reveal/v5-000015/r33793012.nostr.json b/reveal/v5-000015/r33793012.nostr.json new file mode 100644 index 0000000..d5b6ff0 --- /dev/null +++ b/reveal/v5-000015/r33793012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzkzMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcnl3ditWMVVZeWtXQjU1UE83amdqR3hQK3d2bjU5R2FVY3lOaFZR\nTGd6Qms4TXgraFB2ZmJYWXI2ejZwSktGYwpHVHVkb2IvNklSTll3akN5V014VDZp\nTVVnTnBZMEpQaTFzSWFNc2M3RFFRRVRPV1VHMktXd2lvRHpIa0hJS1Y0CjFRcGpt\nN3pPL3FLVmFUWndqeEpXSzZ6M2FIZHN1ZDBFdGNwOUtTVXNETGcKLS0tIHVHWG9l\nYy9wakdhR3ZmY2YrUVhLdmVUbG5RVHRnS1RVZC9oa2trdlYvWFEKX0hQ34PlFLLw\nQ565SJiARdipZmWtB1RKQ1aNYQKRoYSR9XqpoctP6Eq738TnmaLJoz9FRovfuDtO\nVTMBIRAfZQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33793012"],["reveal_at","2026-11-09T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","8e4c9cb608dd70d188b92fb2ae392804de6fbf50a8c7b36c20fba3900c997b8e"],["ct","e12a6c9f58c32c2eed6b65260d7dd8093a961ff59c90443990459f49257a9e7b"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r33793012.tlock b/reveal/v5-000015/r33793012.tlock new file mode 100644 index 0000000..56be7f3 --- /dev/null +++ b/reveal/v5-000015/r33793012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNzkzMDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKcnl3ditWMVVZeWtXQjU1UE83amdqR3hQK3d2bjU5R2FVY3lOaFZR +TGd6Qms4TXgraFB2ZmJYWXI2ejZwSktGYwpHVHVkb2IvNklSTll3akN5V014VDZp +TVVnTnBZMEpQaTFzSWFNc2M3RFFRRVRPV1VHMktXd2lvRHpIa0hJS1Y0CjFRcGpt +N3pPL3FLVmFUWndqeEpXSzZ6M2FIZHN1ZDBFdGNwOUtTVXNETGcKLS0tIHVHWG9l +Yy9wakdhR3ZmY2YrUVhLdmVUbG5RVHRnS1RVZC9oa2trdlYvWFEKX0hQ34PlFLLw +Q565SJiARdipZmWtB1RKQ1aNYQKRoYSR9XqpoctP6Eq738TnmaLJoz9FRovfuDtO +VTMBIRAfZQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r34685812.ct b/reveal/v5-000015/r34685812.ct new file mode 100644 index 0000000..94b3899 Binary files /dev/null and b/reveal/v5-000015/r34685812.ct differ diff --git a/reveal/v5-000015/r34685812.nostr.json b/reveal/v5-000015/r34685812.nostr.json new file mode 100644 index 0000000..d7c6494 --- /dev/null +++ b/reveal/v5-000015/r34685812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0Njg1ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKbUdTdlpzOFdpMzhGL1VGYjFOdlpkeXhFb3hKT0kwL08yWjJMVm45\nUGxnMWVsbXllR0lwNitrYnpxVUQ4VVRzYwpDVUpMOTFaWFNGQkhnb3d5U0Vtd3Bw\nb2lPN3RFVjNVdzJESkJJb0JxY0RzRXM4M3k1akU3NjE3VnBQN0E1S3V1CmZKSVlW\nRmpGTVk5MTB4MG0yUkF6Vzd3ekg3UXkrbnM3WEozSmVHdXFDYkEKLS0tIDlTTzM0\ndUk3TklwSjVVUUgxOXZDRm1HM1lMZHdUNVZGT1hqa3JlelBCRjAKjrw0WHXXFUu/\nfwldCn+qJJtmbFA1IM/nLbxH777dqzmihyEcnwbXm2TEqN9J31qywr2ofdygW/2X\n5q9U739ffg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34685812"],["reveal_at","2026-12-10T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","ea1eeed54b6a64c12c8ad140cb49859ef97eba4211d5408a188b2ac0a357bedd"],["ct","6c744c35a82c3055a61a518b2844a2a2d8233e305cff6f50a86c9f9c10d51d82"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r34685812.tlock b/reveal/v5-000015/r34685812.tlock new file mode 100644 index 0000000..14171fe --- /dev/null +++ b/reveal/v5-000015/r34685812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0Njg1ODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKbUdTdlpzOFdpMzhGL1VGYjFOdlpkeXhFb3hKT0kwL08yWjJMVm45 +UGxnMWVsbXllR0lwNitrYnpxVUQ4VVRzYwpDVUpMOTFaWFNGQkhnb3d5U0Vtd3Bw +b2lPN3RFVjNVdzJESkJJb0JxY0RzRXM4M3k1akU3NjE3VnBQN0E1S3V1CmZKSVlW +RmpGTVk5MTB4MG0yUkF6Vzd3ekg3UXkrbnM3WEozSmVHdXFDYkEKLS0tIDlTTzM0 +dUk3TklwSjVVUUgxOXZDRm1HM1lMZHdUNVZGT1hqa3JlelBCRjAKjrw0WHXXFUu/ +fwldCn+qJJtmbFA1IM/nLbxH777dqzmihyEcnwbXm2TEqN9J31qywr2ofdygW/2X +5q9U739ffg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r34714612.ct b/reveal/v5-000015/r34714612.ct new file mode 100644 index 0000000..86cdaa9 Binary files /dev/null and b/reveal/v5-000015/r34714612.ct differ diff --git a/reveal/v5-000015/r34714612.nostr.json b/reveal/v5-000015/r34714612.nostr.json new file mode 100644 index 0000000..9afab7d --- /dev/null +++ b/reveal/v5-000015/r34714612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaFJvaFN0NWdmL2VwL0xnbEx0WkJsYmpxWkRqc0ZOTDgvSVdyQjZR\nbUYvcCszQnE1TEdlQlBZR0EzNXRBQ2NyQgpDU1IvMEdFZmRQNDY1MUZTM1hmTXBS\nNXluZjhVTzgwaGJUT3RJbmg4T1BTL1FYZkxMMzRmUU9tQlVMM1Ruc2N6CmgxK1ls\naldzdit4TmhjTVhRcFJjbGRxVVFDWi9yRitkY0N6aDc3VUVQeEEKLS0tIElpNzdJ\ndmZjVG56K2xoeUhkTEsxL2VDOE5yQzJoWUdIUm9xSUozWUtwd28KZJ/fr+jTJ6Od\nXh0BtDDaWn4OhWGZoz5wEfZm5hGZ+ZXZfWLmQWt2IS6NDlAFWFTa4JLuJJiP9jIG\nt/kOPuoKyg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34714612"],["reveal_at","2026-12-11T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","1f04ca5359925941f92251efe15de59fe87fc8e56cab8b1155ad2072422a9c93"],["ct","db69f5689e8f5014eb99f557210108c7e2ac347172f0efe59ceda13c0f984bf9"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r34714612.tlock b/reveal/v5-000015/r34714612.tlock new file mode 100644 index 0000000..c8f0e16 --- /dev/null +++ b/reveal/v5-000015/r34714612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKaFJvaFN0NWdmL2VwL0xnbEx0WkJsYmpxWkRqc0ZOTDgvSVdyQjZR +bUYvcCszQnE1TEdlQlBZR0EzNXRBQ2NyQgpDU1IvMEdFZmRQNDY1MUZTM1hmTXBS +NXluZjhVTzgwaGJUT3RJbmg4T1BTL1FYZkxMMzRmUU9tQlVMM1Ruc2N6CmgxK1ls +aldzdit4TmhjTVhRcFJjbGRxVVFDWi9yRitkY0N6aDc3VUVQeEEKLS0tIElpNzdJ +dmZjVG56K2xoeUhkTEsxL2VDOE5yQzJoWUdIUm9xSUozWUtwd28KZJ/fr+jTJ6Od +Xh0BtDDaWn4OhWGZoz5wEfZm5hGZ+ZXZfWLmQWt2IS6NDlAFWFTa4JLuJJiP9jIG +t/kOPuoKyg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r34801012.ct b/reveal/v5-000015/r34801012.ct new file mode 100644 index 0000000..12a3217 Binary files /dev/null and b/reveal/v5-000015/r34801012.ct differ diff --git a/reveal/v5-000015/r34801012.nostr.json b/reveal/v5-000015/r34801012.nostr.json new file mode 100644 index 0000000..5305846 --- /dev/null +++ b/reveal/v5-000015/r34801012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODAxMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcmIwbDAwbUZnVDlkamdIcW83TkVyZlJiRWE3akdiTzc2OW96bzk4\nejdPWFZOVEVaM0ttelNvbDRnUUhkTkd3dwpBRVBZamtrRG9WNWZtcXNpSjEyTDVL\nQ1ZLSjRWVFloblErT0hCWDdGUmhHSHVTYWIyZEJNbk13NFlzUWlubEdQCkV3ai9s\nWVVSSE8xMzRJVmN1eW1WVnBmeUFab2hzdjFJS3Y2cHFWRXd6QmsKLS0tIFVEVHI1\nZG1ZOE9NL1BIeE0rejd6dWt2d3dWWVJVekdoTDk1UEVJVytiSkEK8sAqZ2bpynaO\n6OJBNVZ28nHhE2kqrtknDo2FyZCxR5iIlDfFKTV1zfhBDCF89UYZEZy4sMb/Wk7b\nUFzxiwgLXQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34801012"],["reveal_at","2026-12-14T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","e40f7ceb57652cf64b2547e3b328a4b35cd6aab94467cb0573545bc0968b5b55"],["ct","b79a48d2552d5028daac85242ebac48449468e42167bbbd166e41212b7dfc033"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r34801012.tlock b/reveal/v5-000015/r34801012.tlock new file mode 100644 index 0000000..6fe4629 --- /dev/null +++ b/reveal/v5-000015/r34801012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODAxMDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKcmIwbDAwbUZnVDlkamdIcW83TkVyZlJiRWE3akdiTzc2OW96bzk4 +ejdPWFZOVEVaM0ttelNvbDRnUUhkTkd3dwpBRVBZamtrRG9WNWZtcXNpSjEyTDVL +Q1ZLSjRWVFloblErT0hCWDdGUmhHSHVTYWIyZEJNbk13NFlzUWlubEdQCkV3ai9s +WVVSSE8xMzRJVmN1eW1WVnBmeUFab2hzdjFJS3Y2cHFWRXd6QmsKLS0tIFVEVHI1 +ZG1ZOE9NL1BIeE0rejd6dWt2d3dWWVJVekdoTDk1UEVJVytiSkEK8sAqZ2bpynaO +6OJBNVZ28nHhE2kqrtknDo2FyZCxR5iIlDfFKTV1zfhBDCF89UYZEZy4sMb/Wk7b +UFzxiwgLXQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r34829812.ct b/reveal/v5-000015/r34829812.ct new file mode 100644 index 0000000..f4e537c Binary files /dev/null and b/reveal/v5-000015/r34829812.ct differ diff --git a/reveal/v5-000015/r34829812.nostr.json b/reveal/v5-000015/r34829812.nostr.json new file mode 100644 index 0000000..9e6d85d --- /dev/null +++ b/reveal/v5-000015/r34829812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODI5ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa1dTUGxWRFlZbEtFakxyMEdybkxRejhDV1Z0TVFrYlBMVTNkMDlq\nTkpYc2hKS1l1Vlo5VENidlJOMFVmQ3JHagpESzZVZXpVTWlnazRiM0pTZVlWRTV1\nMUlod21kU2VpRmN2RkFTMVdZVEhMRk0wRUcxVjEwSHh1YzVSNzU3M0RPCnJySEtY\nY3dBRXFBOTcycVJaL1R6c2Z4RGlmNTEyUVZkbldrMkpCS2docEkKLS0tIHZTMmN2\nK0pCQVM1VWlSOVhIQlJSOUNtT3R0VDdvejE0S3lubXV2VDlDZXMKgHW0PZmYwhKb\nzA5/CMhlyk/7MgSnayJaFMBHEzMJT9JHJhKg+UFF0iuTBQ2szs5E0JlVaIBZNHpi\ndcDAuXyCMg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34829812"],["reveal_at","2026-12-15T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","ac9dfa6db527551f00079b1c80d21271bd186e58350fb09b147ad5c24ec3265a"],["ct","08d45335183d1ff228be045a1f1f70490869a8e9ae6f4bd73e1bcda6f7a76e42"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r34829812.tlock b/reveal/v5-000015/r34829812.tlock new file mode 100644 index 0000000..4fa1b37 --- /dev/null +++ b/reveal/v5-000015/r34829812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0ODI5ODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKa1dTUGxWRFlZbEtFakxyMEdybkxRejhDV1Z0TVFrYlBMVTNkMDlq +TkpYc2hKS1l1Vlo5VENidlJOMFVmQ3JHagpESzZVZXpVTWlnazRiM0pTZVlWRTV1 +MUlod21kU2VpRmN2RkFTMVdZVEhMRk0wRUcxVjEwSHh1YzVSNzU3M0RPCnJySEtY +Y3dBRXFBOTcycVJaL1R6c2Z4RGlmNTEyUVZkbldrMkpCS2docEkKLS0tIHZTMmN2 +K0pCQVM1VWlSOVhIQlJSOUNtT3R0VDdvejE0S3lubXV2VDlDZXMKgHW0PZmYwhKb +zA5/CMhlyk/7MgSnayJaFMBHEzMJT9JHJhKg+UFF0iuTBQ2szs5E0JlVaIBZNHpi +dcDAuXyCMg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r34945012.ct b/reveal/v5-000015/r34945012.ct new file mode 100644 index 0000000..9409cde Binary files /dev/null and b/reveal/v5-000015/r34945012.ct differ diff --git a/reveal/v5-000015/r34945012.nostr.json b/reveal/v5-000015/r34945012.nostr.json new file mode 100644 index 0000000..a96899f --- /dev/null +++ b/reveal/v5-000015/r34945012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTQ1MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcy9GbXJmMThySDd3cllUbFJtZG5tSDB0ejQyOG1NM0l4d3pEeHRI\nWmw2NDBsVXJMckRRMFNHQXFkbEduLzIrWQpCNnhiQlI5Zlh2azVEelQydkNsVWtR\nbTZtME9JU2Y0b0VEUlRXM3psYmUyOEl5UWY1ZmhHSjVmRmFUL25ud0p3CjhYVWNP\nQ3Z5aTBxTTJXdDl0VGlveVRSSXZMaUVETHNSZGp4RmhLWnVzUlkKLS0tIGxEVFJw\nUHhTamlsUVA2Ukp3aTgrRDV1dEc2NEVVVXZnSXlkMGVRMVgzYzAKJaLTOVx3+1/9\nb3h3hZcsEu2+af74eoVHHUm1RcAeSuQVDy62lcWj0wDW1ZzVe8XjaPZ4PrZDuMOv\n3Me67CFSQQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34945012"],["reveal_at","2026-12-19T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","64b263716ccff5b2dc029602c3da67c956898604f155bf3ea83449384d64bdef"],["ct","c81586ca65094a1d14e7f0e112d6e54297051e630d6270313ff693040a3d5c42"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r34945012.tlock b/reveal/v5-000015/r34945012.tlock new file mode 100644 index 0000000..b50b53b --- /dev/null +++ b/reveal/v5-000015/r34945012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0OTQ1MDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKcy9GbXJmMThySDd3cllUbFJtZG5tSDB0ejQyOG1NM0l4d3pEeHRI +Wmw2NDBsVXJMckRRMFNHQXFkbEduLzIrWQpCNnhiQlI5Zlh2azVEelQydkNsVWtR +bTZtME9JU2Y0b0VEUlRXM3psYmUyOEl5UWY1ZmhHSjVmRmFUL25ud0p3CjhYVWNP +Q3Z5aTBxTTJXdDl0VGlveVRSSXZMaUVETHNSZGp4RmhLWnVzUlkKLS0tIGxEVFJw +UHhTamlsUVA2Ukp3aTgrRDV1dEc2NEVVVXZnSXlkMGVRMVgzYzAKJaLTOVx3+1/9 +b3h3hZcsEu2+af74eoVHHUm1RcAeSuQVDy62lcWj0wDW1ZzVe8XjaPZ4PrZDuMOv +3Me67CFSQQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r35578612.ct b/reveal/v5-000015/r35578612.ct new file mode 100644 index 0000000..38ca0bc Binary files /dev/null and b/reveal/v5-000015/r35578612.ct differ diff --git a/reveal/v5-000015/r35578612.nostr.json b/reveal/v5-000015/r35578612.nostr.json new file mode 100644 index 0000000..62becc0 --- /dev/null +++ b/reveal/v5-000015/r35578612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NTc4NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaytyOXVUYWs5aFdMdkFlc2c2OVFPNDZCWHhZQWZIMjNkZzBJR0ZU\nTFh1TEJnamI4bXhsVXR2azRuQTgxREIvUApFRnB1VXZhc3VaNmcvaXVzTFlrVU9t\nZThJblZUTVhKK1JmVmlNTGlwbFFiM1ZOOW5JUUlmc0crbFEzWkxKOVRiClZ2NWFQ\nSHlRT1VJa0d0WmhyeXB5dm4xRFByS21Ga3FrYXVhOXFnVUdRTUkKLS0tIG1oKzNK\ncHRvU3JtSkNjUVdqRjd6eU9mTzR6clJ2R3VWWHNZQm1WSExXc0kKibm6m6xAgtAc\nVlndR4cJmTBOELcNlABmm6Oy3DkVTvrKyOipuliz2tLx+D1RejzTpw/dC1MVSCoW\noIidFZk+3g==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35578612"],["reveal_at","2027-01-10T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","94b6250528065f08b85d7bbc158ebbf54f45aeb55cf9cdfee6908be50eb4638c"],["ct","b59293fbddc0f440032b280497d889d731127e8ff0d9d91180d48560c3dcabcc"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r35578612.tlock b/reveal/v5-000015/r35578612.tlock new file mode 100644 index 0000000..e5f04d0 --- /dev/null +++ b/reveal/v5-000015/r35578612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NTc4NjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKaytyOXVUYWs5aFdMdkFlc2c2OVFPNDZCWHhZQWZIMjNkZzBJR0ZU +TFh1TEJnamI4bXhsVXR2azRuQTgxREIvUApFRnB1VXZhc3VaNmcvaXVzTFlrVU9t +ZThJblZUTVhKK1JmVmlNTGlwbFFiM1ZOOW5JUUlmc0crbFEzWkxKOVRiClZ2NWFQ +SHlRT1VJa0d0WmhyeXB5dm4xRFByS21Ga3FrYXVhOXFnVUdRTUkKLS0tIG1oKzNK +cHRvU3JtSkNjUVdqRjd6eU9mTzR6clJ2R3VWWHNZQm1WSExXc0kKibm6m6xAgtAc +VlndR4cJmTBOELcNlABmm6Oy3DkVTvrKyOipuliz2tLx+D1RejzTpw/dC1MVSCoW +oIidFZk+3g== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r35693812.ct b/reveal/v5-000015/r35693812.ct new file mode 100644 index 0000000..b5d00da Binary files /dev/null and b/reveal/v5-000015/r35693812.ct differ diff --git a/reveal/v5-000015/r35693812.nostr.json b/reveal/v5-000015/r35693812.nostr.json new file mode 100644 index 0000000..e7e9f1a --- /dev/null +++ b/reveal/v5-000015/r35693812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NjkzODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa25rdFZFOVdqL2VIdXRVUjA2SVhoUFd0MnNGUnoxWVNRcjdYSGhZ\nUWl4Y1J6UlkxT0ZYWTlNZmN1L0FUbzVvNQpDcHNqTjVIQ0tjL3EwNnEvNlFtcmxp\nS3gyOTM4andIcW9iYU45YWFTZER2Nko5NXI4TUJrTmF6SktXZWNQUk1PCklQamRO\nRTFXbm1EV0hxMlRBS0hqeEdkMnVrWUl4N0doTmw1N2NIWFFsNUEKLS0tIG1OMG5G\nR1d1ZFo3TmRtREtaRXJuTUoxeXI5TDJ2V0M2cHhvV1p6eENTSjgKR2U+cbEEEn+I\ndHxZ3ehCDh1qe7CysHKNeSnbKOxL+76TqzRESOvCtXAvUjB7v6nMd1pzSYaKSepP\n7U7ZYAfuMA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","35693812"],["reveal_at","2027-01-14T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","4a021ae959af427b51d6e700fa8cc6f0fbc7f419b498fe6deff8da011b07dc18"],["ct","40dcfd86892743e3d9eb5517b32342795c7669e9da42fe7a1c73309a28123e3a"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r35693812.tlock b/reveal/v5-000015/r35693812.tlock new file mode 100644 index 0000000..03e2b4d --- /dev/null +++ b/reveal/v5-000015/r35693812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM1NjkzODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKa25rdFZFOVdqL2VIdXRVUjA2SVhoUFd0MnNGUnoxWVNRcjdYSGhZ +UWl4Y1J6UlkxT0ZYWTlNZmN1L0FUbzVvNQpDcHNqTjVIQ0tjL3EwNnEvNlFtcmxp +S3gyOTM4andIcW9iYU45YWFTZER2Nko5NXI4TUJrTmF6SktXZWNQUk1PCklQamRO +RTFXbm1EV0hxMlRBS0hqeEdkMnVrWUl4N0doTmw1N2NIWFFsNUEKLS0tIG1OMG5G +R1d1ZFo3TmRtREtaRXJuTUoxeXI5TDJ2V0M2cHhvV1p6eENTSjgKR2U+cbEEEn+I +dHxZ3ehCDh1qe7CysHKNeSnbKOxL+76TqzRESOvCtXAvUjB7v6nMd1pzSYaKSepP +7U7ZYAfuMA== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r36730612.ct b/reveal/v5-000015/r36730612.ct new file mode 100644 index 0000000..db7eafe Binary files /dev/null and b/reveal/v5-000015/r36730612.ct differ diff --git a/reveal/v5-000015/r36730612.nostr.json b/reveal/v5-000015/r36730612.nostr.json new file mode 100644 index 0000000..cde73cb --- /dev/null +++ b/reveal/v5-000015/r36730612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2NzMwNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKdG9ueWlSbG45NmVUcE9XcXJXRWd0a2NpeUQra2VRT1RwLzNrVjJt\nR1E0NFhpbkF5UVhxREhvRkREN3dnbGlibQpCVkE2SzNLbEVWNUp5cWtmSzU3U0h1\neE5Pa2lCcjE4M1ZnNDgwczNVOC9LdmRnLzNZMWVGVE5Oa094RVBldk5mCjRmeEhk\nSG9Ma1h3VENGaHZkUEI3YnhoWGlBdEV6OEFwZytGZmFCdXlTRDAKLS0tIGxVZG82\nNDJ4VlBMSWYrckd0WFFUM0FYcHp3Zlg5Qzl5M2tFam9SM0tTTTgK5yd3hskuhqpc\nRCvqUEGc7bJUJz1vJAENWVeNeCieSm+3fYr4SbNLaoAlZUSDBRkf0rRmjVGms+CP\npAwv6T2ZnQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36730612"],["reveal_at","2027-02-19T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","4f3399b9d34d0bed43af4eb49e57b165aa622c4fec5ba1d18ef7849995f457c2"],["ct","0559ae1b751959f403772e7b11e221fb9f285616bcae5ce780a4d23ca74c6104"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r36730612.tlock b/reveal/v5-000015/r36730612.tlock new file mode 100644 index 0000000..1ed58d6 --- /dev/null +++ b/reveal/v5-000015/r36730612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2NzMwNjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKdG9ueWlSbG45NmVUcE9XcXJXRWd0a2NpeUQra2VRT1RwLzNrVjJt +R1E0NFhpbkF5UVhxREhvRkREN3dnbGlibQpCVkE2SzNLbEVWNUp5cWtmSzU3U0h1 +eE5Pa2lCcjE4M1ZnNDgwczNVOC9LdmRnLzNZMWVGVE5Oa094RVBldk5mCjRmeEhk +SG9Ma1h3VENGaHZkUEI3YnhoWGlBdEV6OEFwZytGZmFCdXlTRDAKLS0tIGxVZG82 +NDJ4VlBMSWYrckd0WFFUM0FYcHp3Zlg5Qzl5M2tFam9SM0tTTTgK5yd3hskuhqpc +RCvqUEGc7bJUJz1vJAENWVeNeCieSm+3fYr4SbNLaoAlZUSDBRkf0rRmjVGms+CP +pAwv6T2ZnQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r36788212.ct b/reveal/v5-000015/r36788212.ct new file mode 100644 index 0000000..0612802 Binary files /dev/null and b/reveal/v5-000015/r36788212.ct differ diff --git a/reveal/v5-000015/r36788212.nostr.json b/reveal/v5-000015/r36788212.nostr.json new file mode 100644 index 0000000..d657ca5 --- /dev/null +++ b/reveal/v5-000015/r36788212.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2Nzg4MjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKZ3BIbXZ1YXhGL3JUNVZZWmtmK1ZNQUtENGpSU09MbndRZlU5cU1x\nNVQ1eVdIcUh1QlA3U2RvdnpNNmNBaG4ybApDelk1QlRleXRyRmd6VXZ6U3JFUjlH\ndnFZZ2o3dmREVkdHaDUxUHB1ZHIzUmpGd0NxU3c3NkVKS3drcGt3Y2h1Clo3TWVt\nM1RHMjJhRUFCWFlWUkl1SWtrNDdHQVhCQStCM2dsbWdINWltMmcKLS0tIEV5Z3Rx\nL09JVnZSRUdXQmFad2NOQ2R5L3lpalRzajg4alc3aFNSTnJXMjAKOSv89M/Ib20i\n3FLuKon6sYNz1XIw416JZ7GkZ9/Qs3nSGbluEKnMRN5CMOybbh8vqawV8ZesJV8L\nKnc8tETixQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36788212"],["reveal_at","2027-02-21T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","5d325e737f9c7eaf89a1e91961f6b05182489d8c8f8adb352287e44db80d0ceb"],["ct","09e2645bdaea0695b0d46fcce19cdb530dee5153476add7377edc542ac44c826"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r36788212.tlock b/reveal/v5-000015/r36788212.tlock new file mode 100644 index 0000000..7806c0e --- /dev/null +++ b/reveal/v5-000015/r36788212.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2Nzg4MjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKZ3BIbXZ1YXhGL3JUNVZZWmtmK1ZNQUtENGpSU09MbndRZlU5cU1x +NVQ1eVdIcUh1QlA3U2RvdnpNNmNBaG4ybApDelk1QlRleXRyRmd6VXZ6U3JFUjlH +dnFZZ2o3dmREVkdHaDUxUHB1ZHIzUmpGd0NxU3c3NkVKS3drcGt3Y2h1Clo3TWVt +M1RHMjJhRUFCWFlWUkl1SWtrNDdHQVhCQStCM2dsbWdINWltMmcKLS0tIEV5Z3Rx +L09JVnZSRUdXQmFad2NOQ2R5L3lpalRzajg4alc3aFNSTnJXMjAKOSv89M/Ib20i +3FLuKon6sYNz1XIw416JZ7GkZ9/Qs3nSGbluEKnMRN5CMOybbh8vqawV8ZesJV8L +Knc8tETixQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r36845812.ct b/reveal/v5-000015/r36845812.ct new file mode 100644 index 0000000..f92ef94 Binary files /dev/null and b/reveal/v5-000015/r36845812.ct differ diff --git a/reveal/v5-000015/r36845812.nostr.json b/reveal/v5-000015/r36845812.nostr.json new file mode 100644 index 0000000..babd1a6 --- /dev/null +++ b/reveal/v5-000015/r36845812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODQ1ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcmdwTWRnOFcwV3RaVXdxTGdjRWNaQTk1YlBCTFQydTY4Vm1LcW1V\nYUVuamlRSkZnRmxxQWZEanRXTXVES3RuZQpGNnEvVVAxbTcwU0U4SEJtQ1NCYWh0\nOFhMTFFxS2l2RkNoTys4VUtPZzRxTUg4OU1jcy9nRm5kczA5UEJzak1EClkyMFFj\na2JqcmIrYTV5MXI0OHExdC9oWDJxUW0vTC9vMXVNeEFtOXZ6M1kKLS0tIGxVQXRZ\nV0t0aW5RNFByd0RQUU11eUhCLzVScXBCaFRqcUhWd2xoazJhWm8KFpmlOcQ5dQxN\nFoXcIzL1qYrQMgldWinBE5GPYZvsa/xzPnpk926XjaerddUFpPvhYUTba4vuoxjO\nBfcH55pWQA==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","36845812"],["reveal_at","2027-02-23T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","bb98419ca3bdaf94a26feac3d847176f2e8624f0c4c7722871ba1abb51893a0f"],["ct","53ec7b623272057a70d54cc807613369b8952eb38a21e0c1f1198a075b738e39"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r36845812.tlock b/reveal/v5-000015/r36845812.tlock new file mode 100644 index 0000000..29fad50 --- /dev/null +++ b/reveal/v5-000015/r36845812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM2ODQ1ODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKcmdwTWRnOFcwV3RaVXdxTGdjRWNaQTk1YlBCTFQydTY4Vm1LcW1V +YUVuamlRSkZnRmxxQWZEanRXTXVES3RuZQpGNnEvVVAxbTcwU0U4SEJtQ1NCYWh0 +OFhMTFFxS2l2RkNoTys4VUtPZzRxTUg4OU1jcy9nRm5kczA5UEJzak1EClkyMFFj +a2JqcmIrYTV5MXI0OHExdC9oWDJxUW0vTC9vMXVNeEFtOXZ6M1kKLS0tIGxVQXRZ +V0t0aW5RNFByd0RQUU11eUhCLzVScXBCaFRqcUhWd2xoazJhWm8KFpmlOcQ5dQxN +FoXcIzL1qYrQMgldWinBE5GPYZvsa/xzPnpk926XjaerddUFpPvhYUTba4vuoxjO +BfcH55pWQA== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/r37940212.ct b/reveal/v5-000015/r37940212.ct new file mode 100644 index 0000000..1385688 Binary files /dev/null and b/reveal/v5-000015/r37940212.ct differ diff --git a/reveal/v5-000015/r37940212.nostr.json b/reveal/v5-000015/r37940212.nostr.json new file mode 100644 index 0000000..3add4e3 --- /dev/null +++ b/reveal/v5-000015/r37940212.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3OTQwMjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKckM4TytSTUV2MGNkNUxLclRUMEdTVnNnNFl4MEN0bXp5TVlvTmg5\nczVxVzd3cmNSTU1STFdBVDBJemgydi9WWQpBZEV3VldaUGJ3T2V4U2FPcnhES2o2\nZXhoc2VTVEEwSkp6NVpqb2N5aGI2SUwwUllNNlluRzllVFhnU2w5eEFVCjJYa053\nNFM1Mk1xN3NiRUJUWGN2R2xXL3ZUMlhUaS84VkRoWG0zQVV3RlkKLS0tIGhVcXZQ\nOEtDZ2Z4czJ0eXF2OFhZdktLVVhMaWc1WjhXeFJKK21IRjlyYVkKu27BLhG/kxBT\nALYKV8f+bufMZ56Nh5x4VPUDmGdCaZk0bHlxj2WlHhUIBweAVhBElFVLido65hlS\nKRLs5v/uBg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","37940212"],["reveal_at","2027-04-02T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","170514d02dccd65fe1cc5ef497f4a1633f3bc7321e6d10f1174cbecefce3e1a9"],["ct","f486c8f779359b30b552d1d57abf9929f4db38793105e4040bdb280885f520d8"],["seal","2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28"]]} diff --git a/reveal/v5-000015/r37940212.tlock b/reveal/v5-000015/r37940212.tlock new file mode 100644 index 0000000..c770dc9 --- /dev/null +++ b/reveal/v5-000015/r37940212.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM3OTQwMjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKckM4TytSTUV2MGNkNUxLclRUMEdTVnNnNFl4MEN0bXp5TVlvTmg5 +czVxVzd3cmNSTU1STFdBVDBJemgydi9WWQpBZEV3VldaUGJ3T2V4U2FPcnhES2o2 +ZXhoc2VTVEEwSkp6NVpqb2N5aGI2SUwwUllNNlluRzllVFhnU2w5eEFVCjJYa053 +NFM1Mk1xN3NiRUJUWGN2R2xXL3ZUMlhUaS84VkRoWG0zQVV3RlkKLS0tIGhVcXZQ +OEtDZ2Z4czJ0eXF2OFhZdktLVVhMaWc1WjhXeFJKK21IRjlyYVkKu27BLhG/kxBT +ALYKV8f+bufMZ56Nh5x4VPUDmGdCaZk0bHlxj2WlHhUIBweAVhBElFVLido65hlS +KRLs5v/uBg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000015/seal.json b/reveal/v5-000015/seal.json new file mode 100644 index 0000000..fc56c17 --- /dev/null +++ b/reveal/v5-000015/seal.json @@ -0,0 +1,43 @@ +{ + "algorithm": "sha256-live-v5", + "anchor_ref": "sha256:2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28", + "covers_after": "2026-10-09T16:31:25.305817Z", + "covers_through": "2026-10-09T21:20:37.989880Z", + "digest": "2aeea1fb056caadc5d3aeabb30c6d393fa4fa1b54edcfcb35c6e74bb9bf3fa28", + "follows_seq": 45, + "n_forecasts": 1227, + "n_groups": 16, + "n_withheld": 1227, + "prev_digest": "11293db524a9ce788df948c5347c7f627a7649e0718bce967ae5d32261fe19ba", + "prev_seq": 14, + "sealed_at": "2026-10-09T21:21:07.305632Z", + "seq": 15, + "variant": { + "beacon": { + "chain_hash": "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971", + "genesis_time": 1692803367, + "period": 3, + "relays": [ + "https://api.drand.sh", + "https://api2.drand.sh", + "https://api3.drand.sh", + "https://drand.cloudflare.com" + ], + "scheme": "bls-unchained-g1-rfc9380" + }, + "cipher": "chacha20poly1305-zlib6-nonce0", + "gate": { + "default": "withheld: a kept salt can be released later; an opened text can never be withdrawn", + "opened": "none", + "why": "no decision by Echo yet" + }, + "line": "numericopen: | numericwithheld:sha256(salt||v4 line)", + "reveal": "utc-day-after-close", + "salts": "key ring: one content a seal, one part a line", + "tool": { + "name": "tle", + "sha256": "69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541", + "version": "tlock v1.2.0 -- github.com/drand/tlock" + } + } +} -- cgit v1.2.3