# Gate Q, choose set: policy **net2** paired against Taylor's full plain policy, seeds 60000..61023 **Result: net2 minus full = +0.005367400 edge, se 0.016095032, n = 1024 (all 1,024 choose seeds completed).** The fixed-net 2-pass policy as shipped in net-1 is statistically indistinguishable from the full `pol_mid.json` tables on Taylor's replica: the difference is a third of its standard error, and net2 is ahead on 513 seeds and behind on 511. Mean edge: full 529.061693, net2 529.067061. Credit: Taylor (gtmcknight) for the solved policy, tables, filter and replica (amm-sim `4812a6382311624e1506aca131ca35c378f930d9`, `research/solved`). All numbers are replica measurements on the choose set; nothing here ran on the Rust engine, and no engine seed was consumed. Supplementary (same seeds, same full arm, not the item's named policy): the port-2 filter approximation alone (**agg**, `PortReal` with the full tables) minus full = -0.045195795, se 0.013343417, n = 1024. Details in its own section. ## Gate P (before any scoring) Unmodified `python3 -I gates.py` in `research/solved` at the pinned commit (`git status` clean, no tracked file changed), system `python3` 3.12.3, no third-party packages: ```text seed perfect-info gaussian+plain gaussian+qm lattice+qm 10000 448.261189 443.455598 443.522608 443.663520 10001 576.779199 571.463409 571.623551 571.977293 10002 531.886497 525.168028 525.865859 526.411631 ``` This equals the README's gate block digit for digit (gaussian+plain 443.455598 / 571.463409 / 525.168028). ## Policies - **FULL arm.** `real.RealPolicy(real.load('pol_mid.json'), {'soft': 1})` driven by `replica2.run(seed, policy)`, edge = `['edge']`. Taylor's files, unmodified, run with `python3 -I` and the standard library only. - **net2 arm (the item's policy).** net-1's `netref.Net2()`: `NetPolicy(mode=2)`, which subclasses port-3's `standalone.Coarse` (the Gaussian plain filter: per-silent-step truncation, cap 12, `soft=1` mixture) and replaces only `_fees`. For each callback it clamps w to [-800, 800] bps and R to [-30, 30] (phase 0) or [-800, 800] (phases 1, 2), rounds `16384*[w/100, R/100, phase]` to nearest-even integers, and evaluates the fixed-net 4-32-32-1 int16 MLP (shifts 12, 10, 12, floor via arithmetic shift, ReLU) once at (w, R, phase) for the ask offset and once at (-w, -R, phase) for the bid offset. Fees: `1-exp(-(a-w)e-4)` if `a>w` else 0, `1-exp(-(b+w)e-4)` if `b>-w` else 0, capped at 10 %. Weights come from `payload.bin` loaded by `netref.load_payload`. `netref.py`, `standalone.py` and the payload are used exactly as published; nothing in them was edited. - **agg arm (supplementary).** port-2's `reference.PortReal(real.load('pol_mid.json'), {'soft': 1})`: Taylor's `RealPolicy` with the full tables, where `reference.py`'s module-level hook on `real.trunc` makes the silent-step loop accumulate `min(dt-1, 12)` variance increments and truncate once at the end instead of once per step. `reference.py` is used verbatim; to let it import, port-2's `Strategy.sol` was placed where it expects it and Taylor's `research/solved` was copied to `taylor/research/solved` beside it. `CompressedReal` and the TABLE lookup in that file are not used. Each seed was run once per arm, each arm on its own trajectory (the policy's fees change the path), paired by seed. The full arm was computed inside each run; its 1,024 edges are byte-identical between the net2 run (where `reference.py` was never imported) and the agg run (where its `real.trunc` hook was installed), which confirms the hook is inert for `RealPolicy` and the replica is deterministic per seed. ## Checks before scoring - `payload.bin`: 2,730 bytes, sha256 `9727ecc8acf6d31732793d1836c60cd637133b800bbe61b19098bfee7d17e0f6`, equal to the hash fixed-net and net-1 state. - `pol_mid.json`: sha256 `efbb5ee102db4d312f64565d9bf7232b6becbe02b624164f744a402bbbf2983b`, equal to the hash fixed-net states. - fixed-net's `decode_fixed_net` (run under a scratch venv with numpy 2.5.4, used for this check only) decodes the payload to the canonical JSON sha256 `068ee67f3219df2aaf9ab9f8e93d29dc79ad313afa17771d818f062609a1cec6`, the value fixed-net publishes. Against it, `netref.net_grid(i, j, ph)` was compared on **every** cell of the six tables (35,631 A cells plus their B reflections): max difference 0.0. `netref.net_bps` at integer grid coordinates equals `net_grid` (max difference 0.0), and `net_bps(0,0,0)` = 28.74755859375 bps, as net-1 states. Output of the check: ```text payload bytes 2730 sha256 9727ecc8acf6d31732793d1836c60cd637133b800bbe61b19098bfee7d17e0f6 decoder canonical json bytes 1134669 sha256 068ee67f3219df2aaf9ab9f8e93d29dc79ad313afa17771d818f062609a1cec6 W2L equal to netref.RG: True ; H 32 ; shifts [12, 10, 12] all 35631 grid cells: max |netref.net_grid - decoder A| = 0.0; max |reflected net_grid - decoder B| = 0.0; 7s max |net_bps(grid coords) - net_grid| = 0.0 net_bps(0,0,0) = 28.74755859375 bps (net-1 states 28.74755859375) ``` - Probe pairs: seeds 60000 and 60001 give full-net2 = 0.2058 and 0.5312, equal to the two pairs net-1 reported (0.2058 and 0.5312). ## Paired result: net2 minus full, seeds 60000..61023 | statistic | value | |---|---:| | n completed | 1024 of 1,024 (none missing, no seed twice) | | mean_diff (net2 - full) | +0.005367400 | | sample sd of the differences | 0.515041009 | | se = sd / sqrt(n) | 0.016095032 | | mean edge, full arm | 529.061693433 | | mean edge, net2 arm | 529.067060833 | | net2 ahead / behind / tied | 513 / 511 / 0 | | worst5 (seed, diff) | (60750, -2.363654), (60809, -1.978941), (60304, -1.950315), (61012, -1.532004), (60365, -1.505508) | | best5 (seed, diff) | (60653, +5.160671), (60036, +1.897821), (60023, +1.461283), (61021, +1.461130), (60376, +1.456479) | Reading: on the choose set the continuous 2-pass evaluation loses nothing measurable against the full tables (95 % interval about -0.026 to +0.037). This is the figure net-1 left unmeasured. It is a choose-set number; the report set 10000..12047 is a separate item and was not run here. ## Supplementary: agg minus full, same seeds | statistic | value | |---|---:| | n completed | 1024 of 1,024 | | mean_diff (agg - full) | -0.045195795 | | sample sd / se | 0.426989359 / 0.013343417 | | mean edge, full / agg | 529.061693433 / 529.016497639 | | agg ahead / behind | 482 / 542 | | worst5 (seed, diff) | (60409, -1.587160), (60653, -1.518656), (60055, -1.430361), (60794, -1.332243), (60333, -1.274773) | | best5 (seed, diff) | (60680, +2.174120), (60066, +2.108840), (61021, +1.537892), (60671, +1.121858), (60082, +1.048141) | So the one-truncation filter change alone costs about 0.045 edge (about 3.4 se) on these seeds. Its per-seed CSV (sha256 in the table below) is not reproduced here because the result file would exceed 48,000 bytes with both; the net2 CSV, the item's policy, is reproduced in full. ## Timing | run | procs | chunks | total wall | wall per seed pair | cpu per seed pair (full + policy) | slowest pair | |---|---:|---:|---:|---:|---:|---:| | net2 vs full | 8 | 16 x 64 seeds | 459.2 s | 0.448 s | 3.449 s (0.146 + 3.303) | 6.76 s | | agg vs full | 2 | 16 x 64 seeds | 110.3 s | 0.108 s | 0.212 s (0.103 + 0.109) | 0.37 s | Longest single command: 33.4 s (one 64-seed chunk). The pure-Python MLP (two forward passes per callback, about 10,000 callbacks a run) is the whole cost of the net2 arm. 8 CPUs, system Python 3.12.3. ## Files used (sha256) | file | sha256 | |---|---| | `research/solved/gates.py` (Taylor, unmodified) | `603280c1f595ca163ffaf2ba1ebdc7945fdb08dabae67fc53c922d39e1cce604` | | `research/solved/replica2.py` (Taylor, unmodified) | `6e37b4e61e1ffa5ffb1e43912ddb8659105989aa986eb48fcd1d7608f8dca685` | | `research/solved/real.py` (Taylor, unmodified; FULL arm policy) | `1305b5333731c046c3e6736cc2578eff4635c88132a39c22f5780d78aef2c81e` | | `research/solved/evalpol.py` (Taylor, unmodified; `load`, `DPPolicy`) | `6e67667bfed7798bdd3384652a6efc6ba0b1fce653740d0f9af2bcbcb8e6a27c` | | `research/solved/pol_mid.json` (Taylor, full plain tables) | `efbb5ee102db4d312f64565d9bf7232b6becbe02b624164f744a402bbbf2983b` | | `netref.py` (net-1 artifact, verbatim; class `Net2`, mode 2) | `4925929cda219f729eb3f7baa7a42fee5cd89da02976f29845c18e9fcd9c111e` | | `payload.bin` (fixed-net Data block, base64-decoded; 2,730 bytes) | `9727ecc8acf6d31732793d1836c60cd637133b800bbe61b19098bfee7d17e0f6` | | `standalone.py` (port-3 artifact, verbatim; class `Coarse` filter) | `7d6d59855b4f2b88930d7e883be68999b424f5f48929ec867977968df04a30b7` | | `reference.py` (port-2 artifact, verbatim; class `PortReal`, supplementary agg arm) | `6e617a1700fac6214005277e21fc709fff1418b50f51b88a2caff3876311699c` | | port-2 `Strategy.sol` (port-2 artifact, verbatim; only read by `reference.py` at import) | `7e2d9c157a7725c2875eea31e5741938fb9eafef5a3442710573f1b1a87faf17` | | `decoder.py` (fixed-net artifact `decode_fixed_net`, verbatim; cross-check only) | `079a0a8d125113fa3def17889d64bed56c6b7db729b5bb72be391eb4db8d3be9` | | `pair.py` (my driver, below) | `ad60d7f12919df0c1cf014800835d055966b22899bd244705924c29dd8ee9838` | | `stats.py` (my statistics script) | `d18ca7c9b06d4d718526c32167c9830638e4955e3eb3e93fda56b2d5b9778c2c` | | `check_decoder.py` (my decoder cross-check) | `b48dfa6d3d717bab896d114b4cd384152357d6aa6bef88e12b4bef491a7496a7` | | `net2_choose.csv` (per-seed output, full precision; reproduced below rounded to 6 decimals) | `328c3fc026e3b38f995a44a9cbfbeab50c8c0c537310bcaecdc64bc8fdfdb58b` | | `agg_choose.csv` (per-seed output of the supplementary agg arm, full precision; not reproduced, size) | `cc848c8747a4c10a9938f7daaa4f1a4f51b08a88834e129b17fec15140b6f6bb` | Artifacts read, by sha256 id, all fetched from `https://api.imdnotdead.fun/artifacts/` and verified to hash to their id: net-1 `66ed32a0fd17a43295542d22510b004a5323688a74b4321629ae875bb4592e55` (netref.py; Gate Q note), fixed-net `cc8778a3d8f1f86ffbfc77e971b5ed598b27fee68d61c338e8f3cb2057a363d0` (payload base64, decoder), port-3 `0dbcc10af41b3c3467ff0d9b9cb64c81328fcf18295f9be06b2d81bb98874067` (standalone.py), port-2 `e8c967d6358da0fd53117891357f19a1d684225bd71a5e302b6e299c85f1286c` (reference.py, Strategy.sol). ## Procedure Layout under the scratch directory (deleted before submission, nothing in it is a deliverable): `repo/` = amm-sim clone at the pinned commit; `n1/netref.py`, `n1/payload.bin`; `p3/standalone.py` (netref imports it from `../p3`); `p2/reference.py` plus the two paths it needs; `fn/decoder.py`, `fn/check_decoder.py`; `gateq/pair.py`, `gateq/stats.py`. Commands, each under 8 minutes: ```sh python3 -I gates.py # in repo/research/solved: Gate P venv/bin/python -I fn/check_decoder.py # decoder cross-check (numpy only here) python3 -I gateq/pair.py net2 64 gateq/net2_choose.csv 8 # 16 chunks, start = 60000, 60064, ... 60960 python3 -I gateq/pair.py agg 64 gateq/agg_choose.csv 2 # same 16 chunks python3 -I gateq/stats.py gateq/net2_choose.csv 60000 1024 ``` `pair.py` (driver): a `multiprocessing.Pool` whose initializer loads `pol_mid.json` and imports the policy module; each task runs the FULL arm and then the policy arm for one seed and returns `(seed, full, policy, t_full, t_policy)`; rows are appended to the CSV sorted by seed, seeds already in the CSV are skipped (resume), per-seed times go to `.times`. `stats.py` computes the paired statistics above from the CSV. Both were written for this item; their hashes are in the table. ```python """Gate Q driver: per-seed paired edges, FULL arm vs POLICY arm, on Taylor's (gtmcknight) replica. usage: python3 -I pair.py [nproc] FULL arm: real.RealPolicy(real.load('pol_mid.json'), {'soft': 1}) through replica2.run(seed, policy) net2 arm: net-1's netref.Net2() (fixed-net 2-pass MLP over port-3's standalone.Coarse filter) agg arm: port-2's reference.PortReal(real.load('pol_mid.json'), {'soft': 1}) (aggregated silent-step truncation) Each seed is run once per arm, each arm on its own trajectory, paired by seed. Rows (seed, full, policy) are appended to the CSV; seeds already present are skipped (resume). Timing per seed is appended to .times (seed, t_full_s, t_policy_s). """ import sys, os, csv, time from multiprocessing import Pool B = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # scratch/ SOLVED = os.path.join(B, 'repo', 'research', 'solved') sys.path.insert(0, SOLVED) import replica2, real POL = os.path.join(SOLVED, 'pol_mid.json') KIND = None T = None def _init(kind): global KIND, T KIND = kind T = real.load(POL) if kind == 'net2': sys.path.insert(0, os.path.join(B, 'n1')) import netref # noqa: F401 (imports port-3's standalone.Coarse from ../p3) elif kind == 'agg': sys.path.insert(0, os.path.join(B, 'p2')) import reference # noqa: F401 (installs its real.trunc hook; inert unless PortReal is running) def _policy(): if KIND == 'net2': import netref return netref.Net2() if KIND == 'agg': import reference return reference.PortReal(T, {'soft': 1}) raise SystemExit('unknown policy ' + str(KIND)) def work(seed): t0 = time.time() full = replica2.run(seed, real.RealPolicy(T, {'soft': 1}))['edge'] t1 = time.time() pol = replica2.run(seed, _policy())['edge'] t2 = time.time() return seed, full, pol, t1 - t0, t2 - t1 def done_seeds(path): if not os.path.exists(path): return set() with open(path) as f: return {int(r['seed']) for r in csv.DictReader(f)} if __name__ == '__main__': kind, start, count, path = sys.argv[1], int(sys.argv[2]), int(sys.argv[3]), sys.argv[4] nproc = int(sys.argv[5]) if len(sys.argv) > 5 else 8 have = done_seeds(path) todo = [s for s in range(start, start + count) if s not in have] new = not os.path.exists(path) t0 = time.time() with open(path, 'a', newline='') as f, open(path + '.times', 'a', newline='') as ft, Pool(nproc, _init, (kind,)) as pool: w = csv.writer(f); wt = csv.writer(ft) if new: w.writerow(['seed', 'full', kind]); f.flush() rows = [] for seed, full, pol, tf, tp in pool.imap_unordered(work, todo, chunksize=1): rows.append((seed, full, pol, tf, tp)) rows.sort() for seed, full, pol, tf, tp in rows: w.writerow([seed, repr(full), repr(pol)]); wt.writerow([seed, '%.3f' % tf, '%.3f' % tp]) dt = time.time() - t0 print(f'{kind}: {len(todo)} seeds {start}..{start+count-1} (skipped {count-len(todo)} already done) in {dt:.1f}s wall ' f'= {dt/max(1,len(todo)):.2f}s/seed-pair wall with {nproc} procs; ' f'cpu per pair {sum(r[3]+r[4] for r in rows)/max(1,len(rows)):.2f}s (full {sum(r[3] for r in rows)/max(1,len(rows)):.2f}, {kind} {sum(r[4] for r in rows)/max(1,len(rows)):.2f})', flush=True) ``` ## Not done, and caveats - The report set 10000..12047 was not scored; this item is the choose set only. - Nothing ran on the Rust engine; no engine seed was used. - The agg arm is supplementary. The item names net2 as its policy; agg was scored because the brief defines it alongside net2 and it costs about two minutes. - The embedded CSV is rounded to 6 decimals; every statistic above was computed from the full-precision CSV (sha256 in the table). Recomputing from the rounded rows changes the mean by less than 1e-6. - Only one candidate was scored for the item's policy, so nothing was "chosen" among alternatives; the choose-set figure is the deliverable. ## Per-seed CSV: net2 vs full (seed, full, net2), edges rounded to 6 decimals ```csv seed,full,net2 60000,485.997849,485.792081 60001,489.639993,489.108791 60002,590.788660,590.480363 60003,589.328106,589.509943 60004,552.026454,553.387454 60005,622.074780,622.502941 60006,538.585011,537.963966 60007,447.561819,447.750733 60008,383.514185,383.928875 60009,467.754269,467.948509 60010,591.478434,591.390190 60011,448.402852,448.445738 60012,451.855763,452.360002 60013,483.946042,484.580165 60014,564.062673,563.834043 60015,491.348105,491.663185 60016,408.361946,408.333391 60017,592.114162,592.387170 60018,618.396030,617.451720 60019,512.729250,512.666003 60020,582.588794,582.976684 60021,367.385445,367.340880 60022,544.639100,544.522460 60023,706.281130,707.742414 60024,522.699975,522.964539 60025,705.045540,704.806943 60026,653.868483,653.844882 60027,608.409404,608.334603 60028,553.430717,552.786894 60029,623.253497,623.755252 60030,392.510156,392.363093 60031,668.576266,668.029389 60032,550.854749,550.885557 60033,670.569388,671.341397 60034,473.898130,474.431773 60035,617.127525,617.147303 60036,684.926411,686.824232 60037,549.332514,549.769088 60038,539.732764,539.503603 60039,538.008744,538.391989 60040,583.751737,583.591274 60041,531.467945,532.685482 60042,401.820117,401.437603 60043,541.794517,540.685307 60044,435.234851,435.192162 60045,598.562171,598.577743 60046,529.377009,528.776713 60047,487.372845,487.384594 60048,526.331825,526.162601 60049,446.961529,446.927850 60050,415.608561,415.384084 60051,411.981399,411.357103 60052,601.085709,600.951831 60053,463.117731,463.760639 60054,436.302818,436.986579 60055,538.817129,538.637563 60056,539.562679,539.220298 60057,578.019494,577.997862 60058,617.158756,617.780674 60059,417.974545,418.280350 60060,465.868324,465.249719 60061,372.383541,372.720860 60062,533.276668,533.301669 60063,393.670900,393.661806 60064,452.591409,452.573731 60065,559.244053,559.270305 60066,513.137719,513.610524 60067,579.825905,580.955026 60068,482.311901,483.442815 60069,522.734613,522.551780 60070,578.358370,578.900608 60071,488.399985,488.415820 60072,603.046674,603.474598 60073,570.280930,570.077567 60074,375.229345,374.822617 60075,497.598727,497.944405 60076,548.336389,548.832208 60077,426.684574,426.019056 60078,497.340413,496.829942 60079,481.320995,481.395194 60080,427.048410,426.780204 60081,599.935960,600.285833 60082,515.996295,516.098140 60083,570.177251,569.521460 60084,584.034371,583.052882 60085,533.459212,533.222999 60086,565.340042,565.767393 60087,706.353695,706.586525 60088,498.536546,499.345402 60089,503.673480,502.773867 60090,429.158546,429.494906 60091,591.459189,592.213376 60092,565.698699,565.989490 60093,452.616492,453.404678 60094,395.881136,396.451838 60095,603.170262,603.474906 60096,426.810589,427.506221 60097,473.938985,474.689085 60098,466.462871,466.339832 60099,433.031235,433.330153 60100,499.862323,499.109677 60101,580.986083,580.660344 60102,500.234794,500.249549 60103,591.650879,591.058511 60104,678.160125,677.844931 60105,625.318715,624.840634 60106,531.466553,530.966928 60107,481.807933,481.607892 60108,389.025529,388.978127 60109,408.346668,408.722911 60110,577.312926,577.560800 60111,601.789747,602.129271 60112,486.355156,486.676554 60113,650.282335,650.441513 60114,428.477349,428.250158 60115,594.765622,595.107217 60116,404.476355,404.015289 60117,600.079818,600.760319 60118,387.616318,387.436655 60119,421.265702,421.456578 60120,536.566199,536.406544 60121,597.186812,596.049243 60122,681.908593,681.005521 60123,499.378503,498.608274 60124,600.951016,600.535989 60125,525.774970,525.636297 60126,671.962542,671.943731 60127,453.412647,452.916503 60128,580.873972,580.637165 60129,403.452657,403.446794 60130,544.154228,543.878904 60131,579.767017,579.898829 60132,485.215293,485.442307 60133,446.038816,445.864691 60134,571.093941,570.283967 60135,500.029653,500.115293 60136,633.693072,633.823266 60137,528.900970,528.386382 60138,595.340641,595.822152 60139,516.384415,516.344034 60140,437.805538,438.327917 60141,505.439017,505.719395 60142,556.493087,557.376553 60143,779.602213,780.634787 60144,463.293589,463.740090 60145,632.128625,631.820312 60146,509.060408,509.292043 60147,670.451517,670.622789 60148,630.495281,630.517723 60149,736.825885,736.969526 60150,459.950531,459.777803 60151,432.409860,431.619729 60152,640.964663,641.384279 60153,509.553918,509.160169 60154,696.402492,696.056281 60155,540.307262,539.841005 60156,370.449695,370.492140 60157,497.058473,496.252457 60158,437.374917,437.938720 60159,358.967476,358.923871 60160,334.251660,334.470396 60161,447.649995,447.446089 60162,689.055348,688.923628 60163,522.496130,522.269078 60164,504.734695,505.133178 60165,464.586180,464.605123 60166,392.163182,392.139843 60167,483.650571,484.098994 60168,377.343052,377.884837 60169,640.756716,640.787573 60170,559.183017,559.169815 60171,406.514103,406.556360 60172,508.985411,509.017599 60173,650.902473,650.847214 60174,510.007500,509.670142 60175,394.929077,394.519589 60176,582.764926,583.013435 60177,484.486000,484.799089 60178,549.567378,549.641515 60179,362.186572,362.609967 60180,732.759055,732.218677 60181,566.456129,566.924296 60182,427.954552,428.290193 60183,394.048818,393.724551 60184,608.574920,608.929612 60185,419.084280,418.947778 60186,513.063854,513.136520 60187,406.785658,406.808318 60188,468.313838,468.086612 60189,395.469363,395.100808 60190,553.745987,553.277935 60191,639.707166,640.452339 60192,478.797662,478.294758 60193,504.343922,503.640607 60194,633.634129,633.528538 60195,524.463400,525.460580 60196,420.684637,421.026488 60197,567.154200,567.396493 60198,448.652607,448.424125 60199,502.731959,503.226935 60200,667.485933,667.462123 60201,452.819837,451.948452 60202,521.563823,521.500993 60203,667.368564,667.748122 60204,528.998664,528.255613 60205,707.244951,707.870353 60206,597.640208,597.834669 60207,637.177127,636.802444 60208,533.990922,534.608258 60209,489.308262,489.077141 60210,848.198578,849.125224 60211,535.776932,535.435461 60212,492.757378,492.260628 60213,451.905807,451.254541 60214,506.217966,506.261920 60215,561.967423,561.542895 60216,469.669740,469.781119 60217,691.608679,691.949042 60218,719.219405,719.323770 60219,578.050967,578.090696 60220,375.674503,375.803765 60221,415.929035,415.632243 60222,578.575035,577.866997 60223,520.802308,520.877528 60224,415.004691,414.809675 60225,450.603030,449.542246 60226,421.060330,421.415739 60227,418.046630,417.298754 60228,560.258671,559.855090 60229,702.513453,702.127623 60230,591.181558,590.918060 60231,506.974010,506.060692 60232,381.219765,381.617237 60233,474.988572,475.317435 60234,598.053585,598.455304 60235,598.307960,598.493876 60236,494.196309,494.419182 60237,491.004444,490.992156 60238,553.927380,554.028620 60239,527.376293,527.402927 60240,626.524132,627.313111 60241,472.670011,472.929530 60242,489.598871,489.803220 60243,444.468279,444.481171 60244,621.779279,620.959260 60245,371.561382,371.794593 60246,622.491022,622.354553 60247,586.490710,587.120685 60248,537.186961,536.860969 60249,492.253000,491.755708 60250,536.768418,536.366742 60251,600.329413,600.183084 60252,569.951638,569.479282 60253,359.577132,359.404979 60254,358.247296,358.237145 60255,512.192051,511.909263 60256,552.779768,551.863021 60257,475.475369,475.593048 60258,418.262102,418.275416 60259,514.646666,514.622550 60260,591.865886,591.939121 60261,413.215782,413.157712 60262,530.021071,529.776954 60263,593.185188,592.457929 60264,653.675306,653.490162 60265,467.232355,467.485046 60266,498.951926,498.743331 60267,536.941494,536.850407 60268,649.503629,650.357286 60269,476.549316,476.053754 60270,504.706642,504.165402 60271,500.993489,501.228415 60272,392.740048,392.615309 60273,505.242547,505.457870 60274,527.031069,526.547468 60275,588.933032,588.762954 60276,599.799497,599.394896 60277,659.500682,659.874354 60278,549.545981,549.212917 60279,502.356404,502.204596 60280,420.474257,420.994024 60281,600.386672,600.602854 60282,450.818846,450.708343 60283,445.488732,445.697523 60284,516.357415,516.841907 60285,649.879076,650.365990 60286,441.706180,441.703277 60287,621.239157,622.082348 60288,525.440670,525.141922 60289,435.495466,435.482922 60290,393.107792,393.228731 60291,528.511422,528.237351 60292,590.318080,590.114330 60293,370.144533,370.284326 60294,508.062561,508.104338 60295,602.679982,603.223498 60296,506.878905,506.828246 60297,410.640378,410.823141 60298,517.234890,517.015324 60299,436.829000,436.328508 60300,557.424767,557.691225 60301,604.850287,604.218027 60302,512.393173,513.062660 60303,458.779040,458.138993 60304,631.024611,629.074296 60305,411.383460,411.077242 60306,527.973625,528.027443 60307,435.418505,435.352516 60308,547.093219,547.080730 60309,406.401282,407.146104 60310,497.681968,497.340205 60311,496.367265,496.474462 60312,435.119366,434.988880 60313,520.879538,520.902369 60314,516.188313,516.774154 60315,432.318350,432.740410 60316,477.859711,477.520599 60317,327.904066,328.046937 60318,557.539362,556.873088 60319,520.523070,520.960754 60320,548.544087,547.872628 60321,787.367125,787.674096 60322,575.136496,576.226774 60323,514.933365,514.877715 60324,433.258729,433.722240 60325,561.609852,561.542663 60326,434.190588,434.110800 60327,609.859031,609.542226 60328,604.234840,604.847268 60329,411.065414,411.223729 60330,466.988078,466.290340 60331,396.543873,396.316320 60332,762.064250,762.589999 60333,680.901491,680.951900 60334,557.653833,557.635880 60335,726.783882,726.384768 60336,507.774549,507.654822 60337,644.729015,644.527111 60338,719.642363,719.952991 60339,345.413678,345.450709 60340,524.359034,523.952273 60341,585.583698,585.030705 60342,538.818089,538.107786 60343,614.833027,615.215156 60344,470.261186,470.404034 60345,576.733870,577.267804 60346,604.884357,605.488035 60347,557.445136,558.426190 60348,545.433357,546.136214 60349,484.245389,484.420049 60350,725.645527,724.401618 60351,379.321558,379.063402 60352,568.758828,568.890582 60353,524.856960,524.429429 60354,602.459323,602.033462 60355,438.276101,437.978468 60356,651.446755,651.359697 60357,525.332564,525.516947 60358,504.415165,504.181138 60359,494.336083,494.500131 60360,551.888536,551.692134 60361,695.790923,695.838360 60362,373.389378,373.339952 60363,556.899025,557.642091 60364,485.913800,486.433723 60365,667.045752,665.540244 60366,630.735017,631.720379 60367,535.227948,535.297515 60368,606.881131,607.534092 60369,574.945834,575.787604 60370,629.484344,629.762385 60371,428.774022,429.018024 60372,537.010773,537.239724 60373,468.049527,467.983266 60374,560.887122,561.003913 60375,668.775046,668.301471 60376,465.577168,467.033647 60377,503.685864,503.893196 60378,523.141702,523.088136 60379,454.421001,454.186322 60380,460.055743,460.951702 60381,474.760015,474.219694 60382,651.702460,652.073279 60383,478.437055,478.421724 60384,436.300774,436.094567 60385,602.139535,603.199609 60386,598.098534,598.030230 60387,686.367000,685.978839 60388,439.022165,439.299244 60389,627.551837,628.371733 60390,555.595526,555.309792 60391,551.498363,551.229258 60392,444.327625,444.429711 60393,613.927353,613.662534 60394,417.365733,417.098210 60395,634.622564,634.455835 60396,558.570285,558.989650 60397,542.835998,542.871847 60398,604.408018,604.695140 60399,421.019681,421.540439 60400,516.419321,515.524146 60401,478.903398,479.742391 60402,483.038204,483.006402 60403,571.513107,572.369934 60404,615.610707,615.016589 60405,653.796891,653.513923 60406,433.526917,433.484595 60407,592.128979,591.588887 60408,715.472898,715.202362 60409,557.466445,557.006731 60410,481.382414,481.972161 60411,672.990151,672.134674 60412,571.912738,572.102907 60413,536.797430,536.040858 60414,443.065591,442.747860 60415,468.474143,467.403586 60416,354.884063,354.151057 60417,682.183772,682.707350 60418,444.029719,444.187075 60419,383.229342,383.613578 60420,396.077784,396.522885 60421,426.153772,426.521329 60422,407.129958,407.101020 60423,466.171251,466.549120 60424,650.757324,649.975464 60425,489.082649,489.506823 60426,583.580191,583.844813 60427,511.580750,511.785751 60428,428.864862,429.106102 60429,463.500270,463.458093 60430,531.066593,531.050384 60431,600.771099,600.555428 60432,460.960476,460.410189 60433,671.847655,671.124547 60434,583.216080,582.794440 60435,492.813299,493.544528 60436,410.356215,409.992814 60437,541.607427,541.617098 60438,687.328148,686.890777 60439,509.111013,509.033951 60440,651.374967,651.195825 60441,467.306662,467.323079 60442,598.699107,598.605331 60443,471.099254,471.182487 60444,471.538101,471.373637 60445,537.189311,537.484178 60446,628.102940,627.739192 60447,457.974557,458.136858 60448,480.186773,480.458539 60449,424.040338,424.260852 60450,451.065327,452.183200 60451,415.669846,415.971085 60452,568.347611,568.236883 60453,816.689838,816.608597 60454,573.761213,573.699366 60455,494.545392,493.992563 60456,614.087941,614.679431 60457,518.904456,518.201000 60458,510.714642,510.012660 60459,606.587036,606.583577 60460,558.421333,558.883927 60461,536.535617,536.134288 60462,510.082609,510.886545 60463,656.470712,656.361038 60464,476.713663,476.465549 60465,366.223078,365.860373 60466,545.503428,545.975168 60467,799.507266,799.048472 60468,454.934477,455.471597 60469,638.457185,637.790860 60470,576.650882,576.622957 60471,446.334218,445.776550 60472,491.290747,490.680653 60473,482.027710,482.027590 60474,699.116918,698.597600 60475,588.213855,588.541545 60476,462.282282,462.443828 60477,533.790169,533.543944 60478,512.557824,512.697136 60479,480.026659,479.393413 60480,760.540283,761.513305 60481,427.092207,427.547753 60482,679.200258,680.329513 60483,565.439745,565.607908 60484,414.487076,414.275714 60485,626.223048,626.943054 60486,385.861902,385.519901 60487,553.563343,553.407882 60488,433.481344,433.882271 60489,449.542325,449.244093 60490,514.137057,513.595514 60491,350.363571,350.179662 60492,488.901680,488.964536 60493,585.805941,585.399706 60494,431.431921,431.018547 60495,680.121807,680.179287 60496,673.726784,673.353320 60497,659.608059,659.798914 60498,355.703287,355.667789 60499,498.431292,498.442294 60500,519.079716,518.568391 60501,547.091005,547.622860 60502,454.566027,453.899675 60503,661.514207,660.711129 60504,623.771522,623.357423 60505,430.840051,431.081644 60506,633.695039,634.010968 60507,381.012614,380.436206 60508,526.777803,527.762468 60509,569.018514,569.378481 60510,534.759235,535.166294 60511,570.264161,570.363145 60512,391.137673,391.129824 60513,491.757542,491.238068 60514,516.143815,516.235537 60515,443.512803,443.465852 60516,488.712404,488.558404 60517,405.149942,405.014485 60518,518.945683,519.018188 60519,506.576060,506.570368 60520,544.848901,544.427434 60521,545.977470,545.962181 60522,638.371239,638.306007 60523,531.397597,531.607302 60524,524.086598,523.880897 60525,569.615583,569.906439 60526,537.738340,537.980626 60527,748.051473,748.683362 60528,411.351209,410.606346 60529,395.320720,395.400886 60530,448.814173,449.014320 60531,444.568278,443.900105 60532,597.161956,597.569081 60533,425.989709,425.729132 60534,377.900617,378.742688 60535,407.430529,407.605184 60536,514.293956,514.399303 60537,507.436587,507.821960 60538,387.937184,388.011742 60539,558.101898,558.079535 60540,615.776643,614.710866 60541,553.781259,554.051890 60542,433.242018,433.471175 60543,716.128330,716.486013 60544,427.937026,427.846413 60545,598.552352,599.592595 60546,689.765732,689.784237 60547,585.683833,585.861948 60548,442.618678,443.010799 60549,523.277657,522.634187 60550,550.107975,549.650408 60551,637.537181,637.477879 60552,438.605049,438.321843 60553,403.326947,403.289719 60554,551.160215,551.015571 60555,548.686385,548.802260 60556,581.679968,581.834471 60557,423.895949,424.136527 60558,537.052649,536.903088 60559,549.066911,548.482857 60560,402.491143,402.152673 60561,447.947947,447.800596 60562,634.067262,633.996444 60563,584.960243,584.945362 60564,595.523869,596.734733 60565,636.018165,635.891418 60566,639.786229,639.625104 60567,631.396890,631.437173 60568,605.356301,605.726382 60569,682.674018,682.825021 60570,579.741243,579.241623 60571,573.091915,573.402970 60572,613.922639,614.011168 60573,517.668907,517.465566 60574,522.440795,522.784327 60575,509.933639,509.874120 60576,595.198444,595.089151 60577,691.048578,690.196303 60578,523.747237,523.318246 60579,540.202059,539.096263 60580,417.844741,417.509618 60581,638.735028,639.385000 60582,524.227197,523.776336 60583,563.922562,563.414030 60584,472.239044,472.114368 60585,490.323884,489.833947 60586,550.538375,550.639323 60587,547.735710,547.549341 60588,674.775690,674.438123 60589,621.229707,621.008103 60590,451.516003,451.576894 60591,499.061693,499.133849 60592,551.684157,552.077732 60593,431.254772,431.003397 60594,679.058418,679.457292 60595,606.313302,607.014161 60596,453.708444,452.704654 60597,530.334780,529.715921 60598,509.290046,510.413455 60599,432.103928,432.293906 60600,536.425774,536.423882 60601,475.425080,475.626516 60602,540.909187,541.185886 60603,617.514170,616.928586 60604,620.467636,619.882126 60605,376.396145,376.141135 60606,466.185234,465.901322 60607,388.820502,388.949055 60608,637.839545,638.149698 60609,585.597974,585.592397 60610,639.726578,639.505351 60611,515.397010,515.730863 60612,602.718335,601.788592 60613,527.074806,527.413752 60614,386.515136,385.840980 60615,452.399082,451.647783 60616,410.020951,410.890465 60617,358.362172,359.118098 60618,539.508162,539.995396 60619,413.665571,413.170315 60620,465.929470,466.606640 60621,575.245653,575.135748 60622,393.127077,392.491893 60623,646.426910,646.480170 60624,480.652880,481.218286 60625,541.680393,542.148199 60626,450.433624,450.373895 60627,606.628797,607.153241 60628,493.209716,494.292613 60629,611.928088,611.665300 60630,591.436599,591.431357 60631,530.825847,530.590761 60632,600.458086,600.462730 60633,577.033047,576.375942 60634,657.792780,657.809727 60635,687.117690,687.260236 60636,440.884613,440.401170 60637,555.589908,555.817992 60638,535.046019,535.010032 60639,394.980384,394.825731 60640,530.166604,531.054731 60641,654.012194,654.110896 60642,570.875413,571.100590 60643,392.548511,392.749343 60644,519.832744,518.935968 60645,393.450990,394.261585 60646,474.188855,474.421334 60647,586.767600,586.592090 60648,627.035416,627.355244 60649,441.458197,441.790135 60650,406.687633,406.445982 60651,433.158605,434.409445 60652,614.516195,615.107425 60653,658.210843,663.371514 60654,481.994797,482.218625 60655,502.435842,502.435857 60656,616.153066,615.919648 60657,416.093473,415.425765 60658,578.567273,578.847284 60659,647.682647,647.416554 60660,595.104631,595.103592 60661,578.308446,577.644548 60662,529.218569,529.412992 60663,606.381378,606.072849 60664,443.688253,443.955580 60665,451.646279,451.082232 60666,467.863772,467.569786 60667,592.078483,592.156040 60668,539.716835,539.890366 60669,470.437811,470.833686 60670,428.281310,429.438613 60671,489.596314,489.294374 60672,470.260616,470.631132 60673,430.460377,430.371261 60674,594.683847,595.588178 60675,409.185613,408.741255 60676,531.943167,531.324620 60677,748.231697,747.254892 60678,497.543530,497.730307 60679,701.903420,701.933599 60680,793.619451,792.929750 60681,523.474353,522.466225 60682,472.509110,471.989743 60683,376.728495,377.285664 60684,516.790024,516.721029 60685,382.262369,382.462838 60686,478.213197,478.431709 60687,523.614628,524.039765 60688,574.759284,574.761726 60689,639.294331,638.866160 60690,609.386734,609.875454 60691,433.308464,433.415137 60692,575.011252,574.589408 60693,333.670140,333.105620 60694,484.900768,485.006197 60695,597.727034,597.188365 60696,566.358953,566.291379 60697,529.321368,530.339308 60698,422.606813,422.686682 60699,430.369613,430.480117 60700,393.162847,393.479988 60701,390.803284,391.129205 60702,710.068014,709.850978 60703,696.251890,695.404936 60704,633.892278,634.053154 60705,552.312297,552.523483 60706,642.855582,643.150724 60707,466.554124,467.129567 60708,365.657065,365.083144 60709,569.517176,568.937990 60710,614.750010,614.221007 60711,551.375445,550.680502 60712,479.451826,480.312506 60713,579.774997,579.265176 60714,372.171345,372.236839 60715,443.146063,443.290540 60716,521.636175,521.982005 60717,546.997032,547.170149 60718,614.515068,614.759387 60719,390.547312,390.562646 60720,393.330529,393.633744 60721,531.837036,530.787010 60722,570.647604,570.918155 60723,626.358421,626.355314 60724,679.066867,678.743864 60725,641.788339,641.503387 60726,384.253219,384.813493 60727,451.501563,451.661473 60728,414.652690,414.296581 60729,547.998863,547.952448 60730,599.203377,598.534511 60731,535.462745,535.325320 60732,532.717161,532.906465 60733,576.909624,576.580915 60734,487.158770,487.077240 60735,609.258309,610.206548 60736,745.229582,744.093528 60737,467.141885,467.388348 60738,389.037508,389.501393 60739,462.583588,461.952450 60740,469.459355,469.049816 60741,481.751359,481.469816 60742,725.136602,724.327522 60743,545.922243,545.599605 60744,580.595830,581.152741 60745,618.880817,618.671333 60746,405.967016,406.131225 60747,599.103888,599.194788 60748,542.023601,542.172878 60749,452.470661,452.957733 60750,416.362913,413.999260 60751,428.103071,428.079889 60752,615.162652,615.035418 60753,512.806498,512.858396 60754,469.795886,469.783981 60755,531.480639,531.540489 60756,494.725931,495.072626 60757,528.017813,528.455302 60758,593.152048,593.844477 60759,740.000890,739.834110 60760,456.057941,455.883434 60761,574.058300,574.244800 60762,599.384598,599.277159 60763,622.504913,622.442073 60764,417.551805,417.828147 60765,597.432161,597.578791 60766,664.517550,664.699666 60767,384.620435,384.577444 60768,520.140000,519.689955 60769,418.872043,419.038478 60770,477.352195,476.976516 60771,475.038374,474.502605 60772,535.052768,534.933514 60773,545.446084,544.558633 60774,417.057446,417.152134 60775,515.630255,516.106547 60776,454.117916,454.016590 60777,448.170098,447.447863 60778,581.558120,581.747552 60779,442.457165,441.956479 60780,394.709173,395.467385 60781,468.163026,468.099616 60782,651.712960,650.959351 60783,642.508451,641.507451 60784,636.234628,636.639247 60785,404.141502,404.173880 60786,478.505234,479.594818 60787,539.248719,538.666975 60788,401.243851,401.653147 60789,486.924121,486.757000 60790,548.977928,548.089637 60791,393.300516,392.777361 60792,451.264382,451.590573 60793,513.399098,512.686725 60794,499.986616,500.233653 60795,515.834752,515.208902 60796,527.891576,526.890474 60797,381.681491,381.886329 60798,431.510408,431.316031 60799,530.196351,530.708111 60800,573.816923,573.565517 60801,550.890856,550.854464 60802,738.733136,738.992342 60803,649.404358,649.426337 60804,503.104742,503.154218 60805,555.454388,555.315018 60806,618.271854,617.928250 60807,484.702495,484.418987 60808,433.655446,433.958327 60809,692.550006,690.571065 60810,600.922718,600.693086 60811,599.499779,599.039178 60812,488.984302,489.464311 60813,622.925007,623.390723 60814,626.180001,626.248645 60815,491.470538,491.611417 60816,547.263373,546.265104 60817,629.856604,629.121107 60818,632.457122,632.440270 60819,678.315839,678.189472 60820,355.493068,355.907627 60821,666.501941,667.250048 60822,558.704081,558.226482 60823,432.130239,431.439129 60824,449.249388,449.245897 60825,605.688160,605.123839 60826,516.667369,516.431980 60827,525.582675,525.980500 60828,400.437377,400.672444 60829,383.562141,382.947075 60830,486.519218,486.422560 60831,478.682416,478.647221 60832,534.046985,533.741658 60833,390.624690,390.930824 60834,516.896629,516.960549 60835,579.325242,579.974056 60836,447.720719,448.053057 60837,402.863884,402.918245 60838,465.982913,466.177318 60839,716.413560,715.359937 60840,688.198075,688.116365 60841,538.816711,539.836584 60842,456.947289,457.483977 60843,555.274905,555.496643 60844,525.232080,525.136852 60845,571.271250,571.179521 60846,605.966594,605.759005 60847,678.122932,678.051082 60848,701.742215,702.640275 60849,429.200914,429.552326 60850,499.818191,499.792748 60851,449.475826,449.138376 60852,517.727049,517.089452 60853,613.612059,613.773505 60854,607.479810,607.368678 60855,621.246975,621.329723 60856,463.400282,462.943755 60857,506.796067,506.770798 60858,612.786967,613.250110 60859,553.815703,554.054708 60860,429.096241,429.079573 60861,416.007963,415.719815 60862,455.678044,456.505622 60863,455.925280,455.876439 60864,397.962736,398.172380 60865,460.404010,459.754896 60866,438.381350,438.146853 60867,408.658404,408.876781 60868,512.562299,512.338174 60869,682.347650,682.898377 60870,503.415192,504.112487 60871,608.936149,609.144502 60872,437.223352,437.648864 60873,567.364616,566.782778 60874,593.509634,593.449049 60875,441.558778,441.711803 60876,549.996099,550.133228 60877,642.135746,642.211604 60878,674.024272,673.795958 60879,540.618989,540.297529 60880,416.161142,417.243610 60881,581.136291,581.197471 60882,457.668970,457.772988 60883,529.369923,528.980394 60884,488.698056,489.312296 60885,612.049830,612.091461 60886,462.176487,462.319411 60887,565.158639,565.209601 60888,542.656591,543.078741 60889,530.064796,530.428792 60890,661.584008,663.003745 60891,622.422870,623.704970 60892,610.316440,609.877114 60893,480.730556,481.448647 60894,556.313272,556.088924 60895,551.353352,551.326608 60896,519.832412,519.985420 60897,439.645822,439.846231 60898,465.384828,465.288551 60899,564.254692,564.269713 60900,694.254231,694.893934 60901,462.850237,463.125951 60902,470.987570,470.752542 60903,546.939110,547.836365 60904,425.800930,425.609305 60905,506.534232,506.885846 60906,444.028380,443.507840 60907,386.666351,386.919241 60908,542.332907,541.888834 60909,517.294759,517.489162 60910,427.793630,428.501471 60911,558.050987,557.654020 60912,705.189496,705.565317 60913,517.412335,517.661669 60914,394.205930,394.410493 60915,617.313848,617.393528 60916,647.177293,646.582618 60917,624.138181,623.817321 60918,461.094527,461.046079 60919,638.299977,639.109172 60920,405.849769,405.916853 60921,434.241216,434.816716 60922,444.413018,444.379099 60923,622.151976,622.464417 60924,400.266033,400.176662 60925,396.005311,396.276102 60926,549.820113,551.236046 60927,497.575613,498.292518 60928,617.679834,616.917394 60929,676.050169,675.552189 60930,661.251313,661.368519 60931,624.908549,625.655936 60932,393.195330,393.458057 60933,608.943332,608.285428 60934,517.624499,517.475055 60935,509.946334,509.654499 60936,542.287362,542.402951 60937,528.560195,528.771956 60938,453.610545,454.564845 60939,513.249984,513.305478 60940,441.566857,441.769834 60941,546.344141,545.404831 60942,643.840955,644.222089 60943,685.247948,685.293691 60944,562.552947,562.829979 60945,565.242647,565.665697 60946,606.917755,606.276452 60947,391.417772,392.227450 60948,562.234566,561.790543 60949,589.840678,589.271739 60950,408.967994,408.567449 60951,515.353217,514.475955 60952,413.478359,414.415637 60953,570.010618,569.941647 60954,431.131311,431.326623 60955,530.242777,530.359706 60956,408.792539,408.973351 60957,579.049802,578.467118 60958,599.550032,599.818040 60959,388.189327,388.317876 60960,648.889754,649.105525 60961,607.247620,607.508014 60962,708.543082,708.545875 60963,667.408381,667.847558 60964,714.751780,714.841583 60965,689.382391,688.726734 60966,373.068738,373.317089 60967,395.265539,394.772583 60968,571.204701,571.391963 60969,506.849201,507.324101 60970,434.080871,432.958871 60971,420.576284,421.129798 60972,638.797789,637.876688 60973,559.939575,559.161026 60974,474.303481,474.613957 60975,699.075908,698.509409 60976,668.874119,669.400334 60977,601.422071,600.986056 60978,474.515818,474.635858 60979,426.544758,426.303651 60980,570.052808,569.674045 60981,561.371526,561.231444 60982,664.024706,664.401595 60983,600.748498,601.353828 60984,628.137219,628.822379 60985,509.632651,509.795256 60986,467.308250,466.864719 60987,606.433338,606.410078 60988,512.358122,512.800072 60989,677.928133,677.334412 60990,454.181620,454.509057 60991,604.598087,604.663095 60992,658.523376,658.320969 60993,583.973833,584.668925 60994,595.949967,595.419934 60995,451.987002,452.710955 60996,619.448780,618.770221 60997,436.526941,437.228097 60998,400.983913,400.689243 60999,501.082375,501.055881 61000,523.225578,523.161438 61001,470.208690,469.799153 61002,378.440125,378.293290 61003,488.129225,488.540227 61004,665.209532,664.748749 61005,502.970376,502.670305 61006,549.561477,549.983663 61007,462.909479,462.352864 61008,479.084226,479.196794 61009,463.494208,463.302868 61010,442.971623,442.986596 61011,525.743804,525.905042 61012,668.483696,666.951692 61013,717.909810,718.646699 61014,500.571094,499.974194 61015,419.140627,419.053901 61016,685.059486,685.599395 61017,547.940132,547.604703 61018,434.619340,435.198844 61019,594.284132,594.318172 61020,465.265542,464.823854 61021,466.261377,467.722507 61022,505.625015,504.987254 61023,602.103112,602.187474 ```